diff options
author | Camila <hello@camila.codes> | 2021-12-06 22:29:47 +0300 |
---|---|---|
committer | Matthieu Gallien (Rebase PR Action) <matthieu_gallien@yahoo.fr> | 2022-01-13 13:39:11 +0300 |
commit | fd8186ff0e7ef01f6fe8833da24fadbf34f7845a (patch) | |
tree | 9b4a003d0466f7eca841c45ed479c3ba8a43c92b /src/gui/sharedialog.cpp | |
parent | 82aed71d09adcae1bd965667863bcbca27bf96d3 (diff) |
ShareDialog: group links and users in one scrollbar.
- Remove the scrollbar used only for user shares
- Resize share dialog when removing share links
- Fix widget margins and max height of the share dialog
- slotAdjustScrollWidgetSize => adjustScrollWidgetSize
Signed-off-by: Camila <hello@camila.codes>
Diffstat (limited to 'src/gui/sharedialog.cpp')
-rw-r--r-- | src/gui/sharedialog.cpp | 70 |
1 files changed, 32 insertions, 38 deletions
diff --git a/src/gui/sharedialog.cpp b/src/gui/sharedialog.cpp index 1330729cd..b88bf5409 100644 --- a/src/gui/sharedialog.cpp +++ b/src/gui/sharedialog.cpp @@ -1,4 +1,4 @@ -/* +/* * Copyright (C) by Roeland Jago Douma <roeland@famdouma.nl> * * This program is free software; you can redistribute it and/or modify @@ -138,18 +138,17 @@ ShareDialog::ShareDialog(QPointer<AccountState> accountState, initShareManager(); - _scrollAreaLinksViewPort = new QWidget(_ui->scrollAreaLinks); - _scrollAreaLinksLayout = new QVBoxLayout(_scrollAreaLinksViewPort); - _scrollAreaLinksLayout->setContentsMargins(6, 6, 6, 6); - _ui->scrollAreaLinks->setWidget(_scrollAreaLinksViewPort); + _scrollAreaViewPort = new QWidget(_ui->scrollArea); + _scrollAreaLayout = new QVBoxLayout(_scrollAreaViewPort); + _scrollAreaLayout->setContentsMargins(0, 0, 0, 0); + _ui->scrollArea->setWidget(_scrollAreaViewPort); } ShareLinkWidget *ShareDialog::addLinkShareWidget(const QSharedPointer<LinkShare> &linkShare) { - _linkWidgetList.append(new ShareLinkWidget(_accountState->account(), _sharePath, _localPath, _maxSharingPermissions, _ui->scrollAreaLinks)); - - const auto index = _linkWidgetList.size() - 1; - const auto linkShareWidget = _linkWidgetList.at(index); + const auto linkShareWidget = new ShareLinkWidget(_accountState->account(), _sharePath, _localPath, _maxSharingPermissions, _ui->scrollArea); + _linkWidgetList.append(linkShareWidget); + linkShareWidget->setLinkShare(linkShare); connect(linkShare.data(), &Share::serverError, linkShareWidget, &ShareLinkWidget::slotServerError); @@ -169,28 +168,25 @@ ShareLinkWidget *ShareDialog::addLinkShareWidget(const QSharedPointer<LinkShare> connect(this, &ShareDialog::styleChanged, linkShareWidget, &ShareLinkWidget::slotStyleChanged); _ui->verticalLayout->insertWidget(_linkWidgetList.size() + 1, linkShareWidget); - _scrollAreaLinksLayout->addWidget(linkShareWidget); - - // TO DO - the count is right but the bkg does not change - //linkShareWidget->setBackgroundRole(_scrollAreaLinksLayout->count() % 2 == 0 ? QPalette::Base : QPalette::AlternateBase); + _scrollAreaLayout->addWidget(linkShareWidget); linkShareWidget->setupUiOptions(); - + return linkShareWidget; } void ShareDialog::initLinkShareWidget() { if(_linkWidgetList.size() == 0) { - _emptyShareLinkWidget = new ShareLinkWidget(_accountState->account(), _sharePath, _localPath, _maxSharingPermissions, _ui->scrollAreaLinks); + _emptyShareLinkWidget = new ShareLinkWidget(_accountState->account(), _sharePath, _localPath, _maxSharingPermissions, _ui->scrollArea); _linkWidgetList.append(_emptyShareLinkWidget); connect(this, &ShareDialog::toggleShareLinkAnimation, _emptyShareLinkWidget, &ShareLinkWidget::slotToggleShareLinkAnimation); connect(_emptyShareLinkWidget, &ShareLinkWidget::createLinkShare, this, &ShareDialog::slotCreateLinkShare); connect(_emptyShareLinkWidget, &ShareLinkWidget::createPassword, this, &ShareDialog::slotCreatePasswordForLinkShare); - + _ui->verticalLayout->insertWidget(_linkWidgetList.size()+1, _emptyShareLinkWidget); - _scrollAreaLinksLayout->addWidget(_emptyShareLinkWidget); + _scrollAreaLayout->addWidget(_emptyShareLinkWidget); _emptyShareLinkWidget->show(); } else if (_emptyShareLinkWidget) { _emptyShareLinkWidget->hide(); @@ -205,7 +201,7 @@ void ShareDialog::slotAddLinkShareWidget(const QSharedPointer<LinkShare> &linkSh emit toggleShareLinkAnimation(true); const auto addedLinkShareWidget = addLinkShareWidget(linkShare); initLinkShareWidget(); - slotAdjustScrollWidgetSize(); + adjustScrollWidgetSize(); if (linkShare->isPasswordSet()) { addedLinkShareWidget->focusPasswordLineEdit(); } @@ -227,21 +223,22 @@ void ShareDialog::slotSharesFetched(const QList<QSharedPointer<Share>> &shares) QSharedPointer<LinkShare> linkShare = qSharedPointerDynamicCast<LinkShare>(share); addLinkShareWidget(linkShare); } - + initLinkShareWidget(); - slotAdjustScrollWidgetSize(); + adjustScrollWidgetSize(); emit toggleShareLinkAnimation(false); } -void ShareDialog::slotAdjustScrollWidgetSize() +void ShareDialog::adjustScrollWidgetSize() { - auto count = this->findChildren<ShareLinkWidget *>().count(); - count = count >= 6 ? 6 : count; - auto height = _linkWidgetList.size() > 0 ? _linkWidgetList.at(_linkWidgetList.size() - 1)->sizeHint().height() : 0; - _ui->scrollAreaLinks->setFixedWidth(_ui->verticalLayout->sizeHint().width()); - _ui->scrollAreaLinks->setFixedHeight(height * count); - _ui->scrollAreaLinks->setVisible(height > 0); - _ui->scrollAreaLinks->setFrameShape(count > 6 ? QFrame::StyledPanel : QFrame::NoFrame); + const auto count = _scrollAreaLayout->count(); + const auto margin = 10; + const auto height = _linkWidgetList.empty() ? 0 : _linkWidgetList.last()->sizeHint().height() + margin; + const auto totalHeight = height * count; + _ui->scrollArea->setFixedWidth(_ui->verticalLayout->sizeHint().width()); + _ui->scrollArea->setFixedHeight(totalHeight > 400 ? 400 : totalHeight); + _ui->scrollArea->setVisible(height > 0); + _ui->scrollArea->setFrameShape(count > 6 ? QFrame::StyledPanel : QFrame::NoFrame); } ShareDialog::~ShareDialog() @@ -302,19 +299,15 @@ void ShareDialog::showSharingUi() return; } - // We only do user/group sharing from 8.2.0 - bool userGroupSharing = - theme->userGroupSharing() - && _accountState->account()->serverVersionInt() >= Account::makeServerVersion(8, 2, 0); - - if (userGroupSharing) { - _userGroupWidget = new ShareUserGroupWidget(_accountState->account(), _sharePath, _localPath, _maxSharingPermissions, _privateLinkUrl, this); - + if (theme->userGroupSharing()) { + _userGroupWidget = new ShareUserGroupWidget(_accountState->account(), _sharePath, _localPath, _maxSharingPermissions, _privateLinkUrl, _ui->scrollArea); + _userGroupWidget->getShares(); + // Connect styleChanged events to our widget, so it can adapt (Dark-/Light-Mode switching) connect(this, &ShareDialog::styleChanged, _userGroupWidget, &ShareUserGroupWidget::slotStyleChanged); _ui->verticalLayout->insertWidget(1, _userGroupWidget); - _userGroupWidget->getShares(); + _scrollAreaLayout->addLayout(_userGroupWidget->shareUserGroupLayout()); } initShareManager(); @@ -401,9 +394,10 @@ void ShareDialog::slotDeleteShare() auto sharelinkWidget = dynamic_cast<ShareLinkWidget*>(sender()); sharelinkWidget->hide(); _ui->verticalLayout->removeWidget(sharelinkWidget); + _scrollAreaLayout->removeWidget(sharelinkWidget); _linkWidgetList.removeAll(sharelinkWidget); initLinkShareWidget(); - slotAdjustScrollWidgetSize(); + adjustScrollWidgetSize(); } void ShareDialog::slotThumbnailFetched(const int &statusCode, const QByteArray &reply) |