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>
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();
}
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();
}
}
}
}
+
+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);
+}
+
}
signals:
void toggleAnimation(bool);
+ void styleChanged();
+
+protected:
+ void changeEvent(QEvent *) override;
private:
void showSharingUi();
#include "capabilities.h"
#include "guiutility.h"
#include "sharemanager.h"
+#include "theme.h"
#include "QProgressIndicator.h"
#include <QBuffer>
//TO DO
//startAnimation(0, height());
+
+ customizeStyle();
}
void ShareLinkWidget::setNote(const QString ¬e)
_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"));
+}
+
}
void slotToggleAnimation(bool start);
void slotServerError(int code, const QString &message);
void slotCreateShareRequiresPassword(const QString &message);
+ void slotStyleChanged();
private slots:
void slotCreateShareLink(bool clicked);
void startAnimation(const int start, const int end);
+ void customizeStyle();
+
Ui::ShareLinkWidget *_ui;
AccountPtr _account;
QString _sharePath;
#include "thumbnailjob.h"
#include "sharee.h"
#include "sharemanager.h"
+#include "theme.h"
#include "QProgressIndicator.h"
#include <QBuffer>
//_ui->shareeHorizontalLayout->addWidget(&_pi_sharee);
_parentScrollArea = parentWidget()->findChild<QScrollArea*>("scrollArea");
+
+ customizeStyle();
}
ShareUserGroupWidget::~ShareUserGroupWidget()
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++;
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()));
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,
_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();
}
loadAvatar();
+
+ customizeStyle();
}
void ShareUserLine::loadAvatar()
_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);
+}
+
}
signals:
void togglePublicLinkShare(bool);
+ void styleChanged();
public slots:
void getShares();
+ void slotStyleChanged();
private slots:
void slotSharesFetched(const QList<QSharedPointer<Share>> &shares);
void slotPrivateLinkEmail();
private:
+ void customizeStyle();
+
Ui::ShareUserGroupWidget *_ui;
QScrollArea *_parentScrollArea;
AccountPtr _account;
void visualDeletionDone();
void resizeRequested();
+public slots:
+ void slotStyleChanged();
+
private slots:
void on_deleteShareButton_clicked();
void slotPermissionsChanged();
private:
void displayPermissions();
void loadAvatar();
+ void customizeStyle();
Ui::ShareUserLine *_ui;
QSharedPointer<Share> _share;