mirror of
https://github.com/nextcloud/desktop.git
synced 2024-10-24 13:25:52 +03:00
Make the ShareDialog background-aware (Dark-/Light-Mode switching)
Use customizeStyle() to change link colours, icons and pixmaps in the ShareDialog and notify it's widgets via slots. TODO - known issue (macOS): - The background and font colours in the ShareUserLine widget still stay the same. Signed-off-by: Michael Schuster <michael@schuster.ms>
This commit is contained in:
parent
789a2a7ae3
commit
7ce8a6a201
6 changed files with 106 additions and 3 deletions
|
@ -156,6 +156,9 @@ void ShareDialog::addLinkShareWidget(const QSharedPointer<LinkShare> &linkShare)
|
|||
connect(_linkWidgetList.at(index), &ShareLinkWidget::deleteLinkShare, this, &ShareDialog::slotDeleteShare);
|
||||
//connect(_linkWidgetList.at(index), &ShareLinkWidget::resizeRequested, this, &ShareDialog::slotAdjustScrollWidgetSize);
|
||||
|
||||
// Connect styleChanged events to our widget, so it can adapt (Dark-/Light-Mode switching)
|
||||
connect(this, &ShareDialog::styleChanged, _linkWidgetList.at(index), &ShareLinkWidget::slotStyleChanged);
|
||||
|
||||
_ui->verticalLayout->insertWidget(_linkWidgetList.size()+1, _linkWidgetList.at(index));
|
||||
_linkWidgetList.at(index)->setupUiOptions();
|
||||
}
|
||||
|
@ -281,6 +284,10 @@ void ShareDialog::showSharingUi()
|
|||
|
||||
if (userGroupSharing) {
|
||||
_userGroupWidget = new ShareUserGroupWidget(_accountState->account(), _sharePath, _localPath, _maxSharingPermissions, _privateLinkUrl, this);
|
||||
|
||||
// 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();
|
||||
}
|
||||
|
@ -334,4 +341,21 @@ void ShareDialog::slotAccountStateChanged(int state)
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
void ShareDialog::changeEvent(QEvent *e)
|
||||
{
|
||||
switch (e->type()) {
|
||||
case QEvent::StyleChange:
|
||||
case QEvent::PaletteChange:
|
||||
case QEvent::ThemeChange:
|
||||
// Notify the other widgets (Dark-/Light-Mode switching)
|
||||
emit styleChanged();
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
QDialog::changeEvent(e);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -68,6 +68,10 @@ private slots:
|
|||
|
||||
signals:
|
||||
void toggleAnimation(bool);
|
||||
void styleChanged();
|
||||
|
||||
protected:
|
||||
void changeEvent(QEvent *) override;
|
||||
|
||||
private:
|
||||
void showSharingUi();
|
||||
|
|
|
@ -19,6 +19,7 @@
|
|||
#include "capabilities.h"
|
||||
#include "guiutility.h"
|
||||
#include "sharemanager.h"
|
||||
#include "theme.h"
|
||||
|
||||
#include "QProgressIndicator.h"
|
||||
#include <QBuffer>
|
||||
|
@ -256,6 +257,8 @@ void ShareLinkWidget::setupUiOptions()
|
|||
|
||||
//TO DO
|
||||
//startAnimation(0, height());
|
||||
|
||||
customizeStyle();
|
||||
}
|
||||
|
||||
void ShareLinkWidget::setNote(const QString ¬e)
|
||||
|
@ -549,4 +552,27 @@ void ShareLinkWidget::displayError(const QString &errMsg)
|
|||
_ui->errorLabel->setText(errMsg);
|
||||
_ui->errorLabel->show();
|
||||
}
|
||||
|
||||
void ShareLinkWidget::slotStyleChanged()
|
||||
{
|
||||
customizeStyle();
|
||||
}
|
||||
|
||||
void ShareLinkWidget::customizeStyle()
|
||||
{
|
||||
_unshareLinkAction->setIcon(Theme::createColorAwareIcon(":/client/resources/delete.png"));
|
||||
|
||||
_addAnotherLinkAction->setIcon(Theme::createColorAwareIcon(":/client/resources/add.png"));
|
||||
|
||||
_ui->enableShareLink->setIcon(Theme::createColorAwareIcon(":/client/resources/copy.svg"));
|
||||
|
||||
_ui->shareLinkIconLabel->setPixmap(Theme::createColorAwarePixmap(":/client/resources/public.svg"));
|
||||
|
||||
_ui->shareLinkToolButton->setIcon(Theme::createColorAwareIcon(":/client/resources/more.svg"));
|
||||
|
||||
_ui->confirmNote->setIcon(Theme::createColorAwareIcon(":/client/resources/confirm.svg"));
|
||||
_ui->confirmPassword->setIcon(Theme::createColorAwareIcon(":/client/resources/confirm.svg"));
|
||||
_ui->confirmExpirationDate->setIcon(Theme::createColorAwareIcon(":/client/resources/confirm.svg"));
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -65,6 +65,7 @@ public slots:
|
|||
void slotToggleAnimation(bool start);
|
||||
void slotServerError(int code, const QString &message);
|
||||
void slotCreateShareRequiresPassword(const QString &message);
|
||||
void slotStyleChanged();
|
||||
|
||||
private slots:
|
||||
void slotCreateShareLink(bool clicked);
|
||||
|
@ -114,6 +115,8 @@ private:
|
|||
|
||||
void startAnimation(const int start, const int end);
|
||||
|
||||
void customizeStyle();
|
||||
|
||||
Ui::ShareLinkWidget *_ui;
|
||||
AccountPtr _account;
|
||||
QString _sharePath;
|
||||
|
|
|
@ -26,6 +26,7 @@
|
|||
#include "thumbnailjob.h"
|
||||
#include "sharee.h"
|
||||
#include "sharemanager.h"
|
||||
#include "theme.h"
|
||||
|
||||
#include "QProgressIndicator.h"
|
||||
#include <QBuffer>
|
||||
|
@ -114,6 +115,8 @@ ShareUserGroupWidget::ShareUserGroupWidget(AccountPtr account,
|
|||
//_ui->shareeHorizontalLayout->addWidget(&_pi_sharee);
|
||||
|
||||
_parentScrollArea = parentWidget()->findChild<QScrollArea*>("scrollArea");
|
||||
|
||||
customizeStyle();
|
||||
}
|
||||
|
||||
ShareUserGroupWidget::~ShareUserGroupWidget()
|
||||
|
@ -214,6 +217,10 @@ void ShareUserGroupWidget::slotSharesFetched(const QList<QSharedPointer<Share>>
|
|||
connect(s, &ShareUserLine::resizeRequested, this, &ShareUserGroupWidget::slotAdjustScrollWidgetSize);
|
||||
connect(s, &ShareUserLine::visualDeletionDone, this, &ShareUserGroupWidget::getShares);
|
||||
s->setBackgroundRole(layout->count() % 2 == 0 ? QPalette::Base : QPalette::AlternateBase);
|
||||
|
||||
// Connect styleChanged events to our widget, so it can adapt (Dark-/Light-Mode switching)
|
||||
connect(this, &ShareUserGroupWidget::styleChanged, s, &ShareUserLine::slotStyleChanged);
|
||||
|
||||
layout->addWidget(s);
|
||||
|
||||
x++;
|
||||
|
@ -258,7 +265,8 @@ void ShareUserGroupWidget::slotPrivateLinkShare()
|
|||
auto menu = new QMenu(this);
|
||||
menu->setAttribute(Qt::WA_DeleteOnClose);
|
||||
|
||||
menu->addAction(QIcon(":/client/resources/copy.svg"),
|
||||
// this icon is not handled by slotStyleChanged() -> customizeStyle but we can live with that
|
||||
menu->addAction(Theme::createColorAwareIcon(":/client/resources/copy.svg"),
|
||||
tr("Copy link"),
|
||||
this, SLOT(slotPrivateLinkCopy()));
|
||||
|
||||
|
@ -361,6 +369,19 @@ void ShareUserGroupWidget::slotPrivateLinkEmail()
|
|||
this);
|
||||
}
|
||||
|
||||
void ShareUserGroupWidget::slotStyleChanged()
|
||||
{
|
||||
customizeStyle();
|
||||
|
||||
// Notify the other widgets (ShareUserLine in this case, Dark-/Light-Mode switching)
|
||||
emit styleChanged();
|
||||
}
|
||||
|
||||
void ShareUserGroupWidget::customizeStyle()
|
||||
{
|
||||
_ui->confirmShare->setIcon(Theme::createColorAwareIcon(":/client/resources/confirm.svg"));
|
||||
}
|
||||
|
||||
ShareUserLine::ShareUserLine(QSharedPointer<Share> share,
|
||||
SharePermissions maxSharingPermissions,
|
||||
bool isFile,
|
||||
|
@ -426,8 +447,9 @@ ShareUserLine::ShareUserLine(QSharedPointer<Share> share,
|
|||
_ui->permissionToolButton->setMenu(menu);
|
||||
_ui->permissionToolButton->setPopupMode(QToolButton::InstantPopup);
|
||||
|
||||
QIcon icon(QLatin1String(":/client/resources/more.svg"));
|
||||
_ui->permissionToolButton->setIcon(icon);
|
||||
// icon now set in: customizeStyle
|
||||
/*QIcon icon(QLatin1String(":/client/resources/more.svg"));
|
||||
_ui->permissionToolButton->setIcon(icon);*/
|
||||
|
||||
// Set the permissions checkboxes
|
||||
displayPermissions();
|
||||
|
@ -454,6 +476,8 @@ ShareUserLine::ShareUserLine(QSharedPointer<Share> share,
|
|||
}
|
||||
|
||||
loadAvatar();
|
||||
|
||||
customizeStyle();
|
||||
}
|
||||
|
||||
void ShareUserLine::loadAvatar()
|
||||
|
@ -648,4 +672,18 @@ void ShareUserLine::displayPermissions()
|
|||
_permissionDelete->setChecked(perm & SharePermissionDelete);
|
||||
}
|
||||
}
|
||||
|
||||
void ShareUserLine::slotStyleChanged()
|
||||
{
|
||||
customizeStyle();
|
||||
}
|
||||
|
||||
void ShareUserLine::customizeStyle()
|
||||
{
|
||||
_ui->permissionToolButton->setIcon(Theme::createColorAwareIcon(":/client/resources/more.svg"));
|
||||
|
||||
QIcon deleteicon = QIcon::fromTheme(QLatin1String("user-trash"),Theme::createColorAwareIcon(QLatin1String(":/client/resources/delete.png")));
|
||||
_deleteShareButton->setIcon(deleteicon);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -64,9 +64,11 @@ public:
|
|||
|
||||
signals:
|
||||
void togglePublicLinkShare(bool);
|
||||
void styleChanged();
|
||||
|
||||
public slots:
|
||||
void getShares();
|
||||
void slotStyleChanged();
|
||||
|
||||
private slots:
|
||||
void slotSharesFetched(const QList<QSharedPointer<Share>> &shares);
|
||||
|
@ -88,6 +90,8 @@ private slots:
|
|||
void slotPrivateLinkEmail();
|
||||
|
||||
private:
|
||||
void customizeStyle();
|
||||
|
||||
Ui::ShareUserGroupWidget *_ui;
|
||||
QScrollArea *_parentScrollArea;
|
||||
AccountPtr _account;
|
||||
|
@ -127,6 +131,9 @@ signals:
|
|||
void visualDeletionDone();
|
||||
void resizeRequested();
|
||||
|
||||
public slots:
|
||||
void slotStyleChanged();
|
||||
|
||||
private slots:
|
||||
void on_deleteShareButton_clicked();
|
||||
void slotPermissionsChanged();
|
||||
|
@ -141,6 +148,7 @@ private slots:
|
|||
private:
|
||||
void displayPermissions();
|
||||
void loadAvatar();
|
||||
void customizeStyle();
|
||||
|
||||
Ui::ShareUserLine *_ui;
|
||||
QSharedPointer<Share> _share;
|
||||
|
|
Loading…
Reference in a new issue