diff --git a/src/gui/elidedlabel.cpp b/src/gui/elidedlabel.cpp index a5ce9bb227..f397e7edd6 100644 --- a/src/gui/elidedlabel.cpp +++ b/src/gui/elidedlabel.cpp @@ -18,6 +18,12 @@ namespace OCC { +ElidedLabel::ElidedLabel(QWidget *parent) + : QLabel(parent) + , _elideMode(Qt::ElideNone) +{ +} + ElidedLabel::ElidedLabel(const QString &text, QWidget *parent) : QLabel(text, parent) , _text(text) diff --git a/src/gui/elidedlabel.h b/src/gui/elidedlabel.h index 1101dc16bb..968628c8f1 100644 --- a/src/gui/elidedlabel.h +++ b/src/gui/elidedlabel.h @@ -24,6 +24,7 @@ class ElidedLabel : public QLabel { Q_OBJECT public: + explicit ElidedLabel(QWidget *parent = nullptr); explicit ElidedLabel(const QString &text, QWidget *parent = nullptr); void setText(const QString &text); diff --git a/src/gui/sharedialog.ui b/src/gui/sharedialog.ui index 4191615d96..033c419a08 100644 --- a/src/gui/sharedialog.ui +++ b/src/gui/sharedialog.ui @@ -6,31 +6,10 @@ 0 0 - 360 - 120 + 372 + 150 - - - 0 - 0 - - - - - 360 - 120 - - - - - 360 - 16777215 - - - - Dialog - 10 @@ -39,7 +18,7 @@ QLayout::SetFixedSize - 15 + 10 10 @@ -52,9 +31,6 @@ - - QLayout::SetFixedSize - 0 @@ -77,7 +53,7 @@ - 210 + 315 0 @@ -93,15 +69,9 @@ Qt::PlainText - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter - true - - 0 - @@ -114,28 +84,19 @@ - 210 + 315 0 - - 0 - share label Qt::PlainText - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter - true - - 0 - @@ -161,12 +122,6 @@ Icon - - 0 - - - 0 - @@ -174,32 +129,14 @@ - + 0 0 - - - 350 - 45 - - - - - 16777215 - 16777215 - - QFrame::NoFrame - - QFrame::Plain - - - 0 - Qt::ScrollBarAlwaysOff @@ -207,58 +144,18 @@ QAbstractScrollArea::AdjustToContentsOnFirstShow - false - - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop + true 0 0 - 340 - 45 + 352 + 68 - - - 0 - 0 - - - - - 340 - 45 - - - - - 16777215 - 16777215 - - - - - 0 - - - QLayout::SetFixedSize - - - 0 - - - 0 - - - 0 - - - 0 - - + diff --git a/src/gui/sharelinkwidget.cpp b/src/gui/sharelinkwidget.cpp index 6eb4c25926..34ac9a84c1 100644 --- a/src/gui/sharelinkwidget.cpp +++ b/src/gui/sharelinkwidget.cpp @@ -58,18 +58,16 @@ ShareLinkWidget::ShareLinkWidget(AccountPtr account, , _unshareLinkAction(nullptr) { _ui->setupUi(this); + + QSizePolicy sp = _ui->shareLinkToolButton->sizePolicy(); + sp.setRetainSizeWhenHidden(true); + _ui->shareLinkToolButton->setSizePolicy(sp); _ui->shareLinkToolButton->hide(); //Is this a file or folder? QFileInfo fi(localPath); _isFile = fi.isFile(); - // the following progress indicator widgets are added to layouts which makes them - // automatically deleted once the dialog dies. - _pi_indicator = new QProgressIndicator(); - _ui->horizontalLayout->insertWidget(1, _pi_indicator, Qt::AlignCenter); - _ui->indicatorWidget->hide(); - connect(_ui->enableShareLink, &QCheckBox::toggled, this, &ShareLinkWidget::slotCreateOrDeleteShareLink); connect(_ui->lineEdit_password, &QLineEdit::returnPressed, this, &ShareLinkWidget::slotCreatePassword); connect(_ui->confirmPassword, &QAbstractButton::clicked, this, &ShareLinkWidget::slotCreatePassword); @@ -87,18 +85,17 @@ ShareLinkWidget::ShareLinkWidget(AccountPtr account, sharingPossible = false; } - if (!sharingPossible) - _ui->shareLinkWidget->hide(); - else - _ui->shareLinkWidget->show(); + _ui->createShareButton->setVisible(sharingPossible); + _ui->enableShareLink->setVisible(sharingPossible); + _ui->shareLinkToolButton->setVisible(sharingPossible); // Older servers don't support multiple public link shares if (!_account->capabilities().sharePublicLinkMultiple()) { _namesSupported = false; } - _ui->passwordShareProperty->hide(); - _ui->expirationShareProperty->hide(); + togglePasswordOptions(false); + toggleExpireDateOptions(false); _ui->calendar->setMinimumDate(QDate::currentDate().addDays(1)); // check if the file is already inside of a synced folder @@ -139,12 +136,12 @@ ShareLinkWidget::~ShareLinkWidget() } void ShareLinkWidget::toggleAnimation(bool start){ - if(start && !_pi_indicator->isAnimated()) - _pi_indicator->startAnimation(); - else - _pi_indicator->stopAnimation(); - - _ui->indicatorWidget->setVisible(start); + if (start) { + if (!_ui->progressIndicator->isAnimated()) + _ui->progressIndicator->startAnimation(); + } else { + _ui->progressIndicator->stopAnimation(); + } } void ShareLinkWidget::getShares() @@ -231,7 +228,7 @@ void ShareLinkWidget::slotSharesFetched(const QList> &shar if(_linkShare->isPasswordSet()){ _passwordProtectLinkAction->setChecked(true); _ui->lineEdit_password->setPlaceholderText("********"); - _ui->passwordShareProperty->show(); + showPasswordOptions(true); } // If password is enforced then don't allow users to disable it @@ -247,7 +244,7 @@ void ShareLinkWidget::slotSharesFetched(const QList> &shar if(_linkShare->getExpireDate().isValid()){ _ui->calendar->setDate(_linkShare->getExpireDate()); _expirationDateLinkAction->setChecked(true); - _ui->expirationShareProperty->show(); + showExpireDateOptions(true); } @@ -401,7 +398,7 @@ void ShareLinkWidget::slotCreateShareRequiresPassword(const QString &message) { toggleAnimation(true); - _ui->passwordShareProperty->show(); + showPasswordOptions(true); if (!message.isEmpty()) { _ui->errorLabel->setText(message); _ui->errorLabel->show(); @@ -412,9 +409,16 @@ void ShareLinkWidget::slotCreateShareRequiresPassword(const QString &message) togglePasswordOptions(true); } +void ShareLinkWidget::showPasswordOptions(bool show) +{ + _ui->passwordLabel->setVisible(show); + _ui->lineEdit_password->setVisible(show); + _ui->confirmPassword->setVisible(show); +} + void ShareLinkWidget::togglePasswordOptions(bool enable) { - _ui->passwordShareProperty->setVisible(enable); + showPasswordOptions(enable); if(enable) { _ui->lineEdit_password->setFocus(); @@ -425,9 +429,17 @@ void ShareLinkWidget::togglePasswordOptions(bool enable) } } +void ShareLinkWidget::showExpireDateOptions(bool show) +{ + _ui->expirationLabel->setVisible(show); + _ui->calendar->setVisible(show); + _ui->confirmExpirationDate->setVisible(show); +} + void ShareLinkWidget::toggleExpireDateOptions(bool enable) { - _ui->expirationShareProperty->setVisible(enable); + showExpireDateOptions(enable); + if (enable) { const QDate date = QDate::currentDate().addDays(1); _ui->calendar->setDate(date); diff --git a/src/gui/sharelinkwidget.h b/src/gui/sharelinkwidget.h index 6f860c4aad..8094a9789c 100644 --- a/src/gui/sharelinkwidget.h +++ b/src/gui/sharelinkwidget.h @@ -83,9 +83,11 @@ private slots: private: void displayError(const QString &errMsg); + void showPasswordOptions(bool show); void togglePasswordOptions(bool enable); void setPassword(const QString &password); + void showExpireDateOptions(bool show); void toggleExpireDateOptions(bool enable); void setExpireDate(const QDate &date); @@ -105,8 +107,6 @@ private: QString _localPath; QString _shareUrl; - QProgressIndicator *_pi_indicator; - ShareManager *_manager; QSharedPointer _linkShare; diff --git a/src/gui/sharelinkwidget.ui b/src/gui/sharelinkwidget.ui index 174ba1537f..8affe169ae 100644 --- a/src/gui/sharelinkwidget.ui +++ b/src/gui/sharelinkwidget.ui @@ -11,33 +11,12 @@ - + 0 0 - - - 350 - 110 - - - - - 16777215 - 16777215 - - - - Share NewDocument.odt - - - - 10 - - - QLayout::SetFixedSize - + 0 @@ -50,423 +29,162 @@ 0 - - + + + + + + + 0 + 0 + + + + text-align: left + + + &Share link + + + + :/client/resources/public.svg:/client/resources/public.svg + + + true + + + + + + + Qt::Horizontal + + + + 40 + 25 + + + + + + + + + + + Qt::Horizontal + + + + 40 + 25 + + + + + + + + Enable + + + + + + + + false + + + + :/client/resources/more.svg:/client/resources/more.svg + + + QToolButton::InstantPopup + + + + + + + + 1 + 0 + + + + Password: + + + 20 + + + + + + + + 1 + 0 + + + + QLineEdit::Password + + + + + + + + :/client/resources/confirm.svg:/client/resources/confirm.svg + + true + + + + - - 0 + + 1 0 - - - 350 - 0 - + + Expiration date: + + + 20 - - - 3 - - - QLayout::SetFixedSize - - - 0 - - - 0 - - - 0 - - - 0 - - - - - true - - - - 0 - 0 - - - - - 242 - 26 - - - - - 350 - 26 - - - - Qt::LeftToRight - - - false - - - text-align: left - - - &Share link - - - - :/client/resources/public.svg:/client/resources/public.svg - - - false - - - true - - - - - - - - 82 - 26 - - - - Enable - - - - - - - false - - - - 26 - 26 - - - - Qt::ActionsContextMenu - - - - - - - - - - :/client/resources/more.svg:/client/resources/more.svg - - - QToolButton::InstantPopup - - - Qt::ToolButtonIconOnly - - - - - - - - - 0 - - - 0 - - - 0 - - - 0 - - - 0 - - - - - - - - - 0 - 0 - - - - - 300 - 0 - - - - - 16777215 - 16777215 - - - - - 0 - - - QLayout::SetFixedSize - - - 18 - - - 0 - - - 0 - - - 0 - - - - - - 0 - 0 - - - - - 162 - 0 - - - - Password: - - - 0 - - - - - - - - 0 - 0 - - - - - 120 - 26 - - - - - 100 - 16777215 - - - - QLineEdit::Password - - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter - - - - - - - - 0 - 0 - - - - - 18 - 26 - - - - - 16777215 - 16777215 - - - - false - - - background-color: rgba(255, 255, 255, 0); - - - - - - - :/client/resources/confirm.svg:/client/resources/confirm.svg - - - true - - - - - - - - - - - 0 - 0 - - - - - 300 - 0 - - - - - 0 - - - QLayout::SetFixedSize - - - 18 - - - 0 - - - 0 - - - 0 - - - - - - 0 - 0 - - - - - 162 - 26 - - - - Expiration date: - - - 0 - - - - - - - - 0 - 0 - - - - - 120 - 26 - - - - - 16777215 - 16777215 - - - - true - - - - - - - - 0 - 0 - - - - - 18 - 26 - - - - - 18 - 16777215 - - - - - - - - :/client/resources/confirm.svg:/client/resources/confirm.svg - - - true - - - - - - - - + + - 0 + 1 0 - - - 0 - 0 - + + + + + + + :/client/resources/confirm.svg:/client/resources/confirm.svg - - - 16777215 - 16777215 - + + true + + + + @@ -510,23 +228,22 @@ Qt::PlainText - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter - true - - 0 - - - 0 - + + + QProgressIndicator + QWidget +
QProgressIndicator.h
+ 1 +
+
diff --git a/src/gui/shareusergroupwidget.cpp b/src/gui/shareusergroupwidget.cpp index 14fa90a3e1..6f85809d91 100644 --- a/src/gui/shareusergroupwidget.cpp +++ b/src/gui/shareusergroupwidget.cpp @@ -87,7 +87,7 @@ ShareUserGroupWidget::ShareUserGroupWidget(AccountPtr account, connect(_manager, &ShareManager::shareCreated, this, &ShareUserGroupWidget::getShares); connect(_manager, &ShareManager::serverError, this, &ShareUserGroupWidget::displayError); connect(_ui->shareeLineEdit, &QLineEdit::returnPressed, this, &ShareUserGroupWidget::slotLineEditReturn); - connect(_ui->confirmShare, &QPushButton::clicked, this, &ShareUserGroupWidget::slotLineEditReturn); + connect(_ui->confirmShare, &QAbstractButton::clicked, this, &ShareUserGroupWidget::slotLineEditReturn); //TODO connect(_ui->privateLinkText, &QLabel::linkActivated, this, &ShareUserGroupWidget::slotPrivateLinkShare); // By making the next two QueuedConnections we can override @@ -187,8 +187,9 @@ void ShareUserGroupWidget::slotSharesFetched(const QList> auto newViewPort = new QWidget(scrollArea); auto layout = new QVBoxLayout(newViewPort); - QSize minimumSize = newViewPort->sizeHint(); + layout->setContentsMargins(0, 0, 0, 0); int x = 0; + int height = 0; foreach (const auto &share, shares) { // We don't handle link shares, only TypeUser or TypeGroup @@ -204,22 +205,13 @@ void ShareUserGroupWidget::slotSharesFetched(const QList> x++; if (x <= 3) { - minimumSize = newViewPort->sizeHint(); - } else { - minimumSize.rwidth() = qMax(newViewPort->sizeHint().width(), minimumSize.width()); + height = newViewPort->sizeHint().height(); } } - if (!layout->isEmpty()) { - _parentScrollArea->setVisible(true); - layout->addStretch(1); - } else { - _parentScrollArea->setVisible(false); - } - - minimumSize.rwidth() += layout->spacing(); - minimumSize.rheight() += layout->spacing(); - scrollArea->setMinimumSize(minimumSize); + scrollArea->setFrameShape(x > 3 ? QFrame::StyledPanel : QFrame::NoFrame); + scrollArea->setVisible(!shares.isEmpty()); + scrollArea->setFixedHeight(height); scrollArea->setWidget(newViewPort); _disableCompleterActivated = false; @@ -229,14 +221,12 @@ void ShareUserGroupWidget::slotSharesFetched(const QList> void ShareUserGroupWidget::slotAdjustScrollWidgetSize() { QScrollArea *scrollArea = _parentScrollArea; - if (scrollArea->findChildren().count() <= 3 && - scrollArea->findChildren().count() > 0) { - auto minimumSize = scrollArea->widget()->sizeHint(); - auto spacing = scrollArea->widget()->layout()->spacing(); - minimumSize.rwidth() += spacing; - minimumSize.rheight() += spacing; - scrollArea->setMinimumSize(minimumSize); + int count = scrollArea->findChildren().count(); + scrollArea->setVisible(count > 0); + if (count > 0 && count <= 3) { + scrollArea->setFixedHeight(scrollArea->widget()->sizeHint().height()); } + scrollArea->setFrameShape(count > 3 ? QFrame::StyledPanel : QFrame::NoFrame); } void ShareUserGroupWidget::slotPrivateLinkShare() @@ -269,16 +259,9 @@ void ShareUserGroupWidget::slotCompleterActivated(const QModelIndex &index) // model proxying the _completerModel auto sharee = qvariant_cast>(index.data(Qt::UserRole)); if (sharee.isNull()) { - _parentScrollArea->setVisible(false); return; } - /* - * Add spinner to the bottom of the widget list - */ - auto viewPort = _parentScrollArea->widget(); - auto layout = qobject_cast(viewPort->layout()); - // TODO Progress Indicator where should it go? // auto indicator = new QProgressIndicator(viewPort); // indicator->startAnimation(); @@ -312,11 +295,6 @@ void ShareUserGroupWidget::slotCompleterActivated(const QModelIndex &index) _ui->shareeLineEdit->setEnabled(false); _ui->shareeLineEdit->setText(QString()); - - if(layout->isEmpty()) - _parentScrollArea->setVisible(false); - else - _parentScrollArea->setVisible(true); } void ShareUserGroupWidget::slotCompleterHighlighted(const QModelIndex &index) @@ -370,10 +348,8 @@ ShareUserLine::ShareUserLine(QSharedPointer share, { _ui->setupUi(this); - QString sharedWithText(share->getShareWith()->format()); - QFontMetrics metrics(_ui->sharedWith->font()); - QString elidedText = metrics.elidedText(sharedWithText, Qt::ElideRight, _ui->sharedWith->width()); - _ui->sharedWith->setText(elidedText); + _ui->sharedWith->setElideMode(Qt::ElideRight); + _ui->sharedWith->setText(share->getShareWith()->format()); // adds permissions // can edit permission diff --git a/src/gui/shareusergroupwidget.ui b/src/gui/shareusergroupwidget.ui index 8d01fa9663..51682bb056 100644 --- a/src/gui/shareusergroupwidget.ui +++ b/src/gui/shareusergroupwidget.ui @@ -11,33 +11,15 @@ - + 0 0 - - - 350 - 55 - - - - - 350 - 16777215 - - - - Share NewDocument.odt - - + 0 - - QLayout::SetFixedSize - 0 @@ -51,13 +33,7 @@ 0 - - - 0 - - - QLayout::SetFixedSize - + 0 @@ -72,57 +48,18 @@ - - - 0 - 0 - - - - - 332 - 26 - - - - - 16777215 - 16777215 - - - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter - Share with users or groups ... - - - - 0 - 0 - - - - - 18 - 0 - - - - background-color: rgb(255, 255, 255); - - - - + :/client/resources/confirm.svg:/client/resources/confirm.svg - + true @@ -132,23 +69,11 @@ - + 0 0 - - - 350 - 26 - - - - - 16777215 - 16777215 - - @@ -186,9 +111,6 @@ - - 0 - Placeholder for Error text @@ -198,12 +120,6 @@ true - - 0 - - - 0 - diff --git a/src/gui/shareuserline.ui b/src/gui/shareuserline.ui index 4cab568394..0de3009300 100644 --- a/src/gui/shareuserline.ui +++ b/src/gui/shareuserline.ui @@ -2,9 +2,6 @@ OCC::ShareUserLine - - true - 0 @@ -14,36 +11,18 @@ - + 0 0 - - - 350 - 45 - - - - - 16777215 - 46 - - - - Form - true - + 5 - - QLayout::SetFixedSize - 5 @@ -70,73 +49,27 @@ 40 - - - 0 - 0 - - - - false - - - - - - false - Qt::AlignCenter - - true - - - 0 - - + - + 0 0 - - - 100 - 26 - - User name Qt::PlainText - - true - - - - - Qt::Horizontal - - - QSizePolicy::Expanding - - - - 50 - 15 - - - - @@ -145,12 +78,6 @@ 0 - - - 0 - 0 - - can edit @@ -158,21 +85,6 @@ - - - 0 - 0 - - - - - 26 - 26 - - - - - :/client/resources/more.svg:/client/resources/more.svg @@ -181,21 +93,6 @@ - - - 0 - 0 - - - - - 26 - 26 - - - - - .. @@ -204,6 +101,13 @@ + + + OCC::ElidedLabel + QLabel +
elidedlabel.h
+
+