Fix icons in DBusStatusNotifier
This commit is contained in:
parent
96ed888e20
commit
25ece5b401
|
@ -248,6 +248,7 @@ StatusIcons::StatusIcons(const StatusIconSettings &settings)
|
|||
, error(QIcon(renderSvgImage(makeSyncthingIcon(settings.errorColor, StatusEmblem::Alert))))
|
||||
, errorSync(QIcon(renderSvgImage(makeSyncthingIcon(settings.errorColor, StatusEmblem::Synchronizing))))
|
||||
, newItem(QIcon(renderSvgImage(makeSyncthingIcon(settings.defaultColor, StatusEmblem::Add))))
|
||||
, isValid(true)
|
||||
{
|
||||
}
|
||||
|
||||
|
|
|
@ -97,9 +97,11 @@ struct StatusIcons {
|
|||
QIcon error;
|
||||
QIcon errorSync;
|
||||
QIcon newItem;
|
||||
bool isValid;
|
||||
};
|
||||
|
||||
inline StatusIcons::StatusIcons()
|
||||
: isValid(false)
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -137,7 +139,7 @@ public:
|
|||
const FontAwesomeIcons &fontAwesomeIconsForDarkTheme() const;
|
||||
|
||||
Q_SIGNALS:
|
||||
void statusIconsChanged();
|
||||
void statusIconsChanged(const StatusIcons &newStatusIcons);
|
||||
|
||||
private:
|
||||
IconManager();
|
||||
|
@ -149,8 +151,7 @@ private:
|
|||
|
||||
inline void IconManager::applySettings(const StatusIconSettings &settings)
|
||||
{
|
||||
m_statusIcons = StatusIcons(settings);
|
||||
emit statusIconsChanged();
|
||||
emit statusIconsChanged(m_statusIcons = StatusIcons(settings));
|
||||
}
|
||||
|
||||
inline const StatusIcons &IconManager::statusIcons() const
|
||||
|
|
|
@ -28,29 +28,37 @@ DBusStatusNotifier::DBusStatusNotifier(QObject *parent)
|
|||
, m_newDevNotification(QStringLiteral(APP_NAME) + tr(" - new device"), NotificationIcon::Information, 5000)
|
||||
, m_newDirNotification(QStringLiteral(APP_NAME) + tr(" - new directory"), NotificationIcon::Information, 5000)
|
||||
{
|
||||
const auto icons(statusIcons());
|
||||
|
||||
m_disconnectedNotification.setMessage(tr("Disconnected from Syncthing"));
|
||||
m_disconnectedNotification.setActions(QStringList({ QStringLiteral("reconnect"), tr("Try to reconnect") }));
|
||||
connect(&m_disconnectedNotification, &DBusNotification::actionInvoked, this, &DBusStatusNotifier::connectRequested);
|
||||
|
||||
m_syncthingNotification.setImage(makeImage(icons.error));
|
||||
|
||||
m_internalErrorNotification.setActions(QStringList({ QStringLiteral("details"), tr("View details") }));
|
||||
connect(&m_internalErrorNotification, &DBusNotification::actionInvoked, this, &DBusStatusNotifier::errorDetailsRequested);
|
||||
|
||||
m_syncthingNotification.setActions(QStringList({ QStringLiteral("show"), tr("Show"), QStringLiteral("dismiss"), tr("Dismiss") }));
|
||||
m_syncthingNotification.setImage(makeImage(icons.notify));
|
||||
m_syncCompleteNotification.setImage(makeImage(icons.syncComplete));
|
||||
connect(&m_syncthingNotification, &DBusNotification::actionInvoked, this, &DBusStatusNotifier::handleSyncthingNotificationAction);
|
||||
|
||||
m_newDevNotification.setImage(makeImage(icons.newItem));
|
||||
m_newDevNotification.setActions(QStringList({ QStringLiteral("webui"), tr("Open web UI") }));
|
||||
connect(&m_newDevNotification, &DBusNotification::actionInvoked, this, &DBusStatusNotifier::webUiRequested);
|
||||
|
||||
m_newDirNotification.setImage(m_newDevNotification.image());
|
||||
m_newDirNotification.setActions(m_newDevNotification.actions());
|
||||
connect(&m_newDirNotification, &DBusNotification::actionInvoked, this, &DBusStatusNotifier::webUiRequested);
|
||||
|
||||
const auto &iconManager = IconManager::instance();
|
||||
connect(&iconManager, &Data::IconManager::statusIconsChanged, this, &DBusStatusNotifier::setIcons);
|
||||
setIcons(iconManager.statusIcons());
|
||||
}
|
||||
|
||||
void DBusStatusNotifier::setIcons(const StatusIcons &icons)
|
||||
{
|
||||
if (!icons.isValid) {
|
||||
return;
|
||||
}
|
||||
m_syncthingNotification.setImage(makeImage(icons.error));
|
||||
m_syncthingNotification.setImage(makeImage(icons.notify));
|
||||
m_syncCompleteNotification.setImage(makeImage(icons.syncComplete));
|
||||
m_newDevNotification.setImage(makeImage(icons.newItem));
|
||||
m_newDirNotification.setImage(m_newDevNotification.image());
|
||||
}
|
||||
|
||||
void DBusStatusNotifier::handleSyncthingNotificationAction(const QString &action)
|
||||
|
|
|
@ -11,7 +11,8 @@
|
|||
|
||||
namespace Data {
|
||||
enum class SyncthingErrorCategory;
|
||||
}
|
||||
struct StatusIcons;
|
||||
} // namespace Data
|
||||
|
||||
namespace QtGui {
|
||||
|
||||
|
@ -29,6 +30,7 @@ public Q_SLOTS:
|
|||
void showSyncComplete(const QString &message);
|
||||
void showNewDev(const QString &devId, const QString &message);
|
||||
void showNewDir(const QString &devId, const QString &dirId, const QString &message);
|
||||
void setIcons(const Data::StatusIcons &icons);
|
||||
|
||||
Q_SIGNALS:
|
||||
void connectRequested();
|
||||
|
|
Loading…
Reference in New Issue