Fix icons in DBusStatusNotifier

This commit is contained in:
Martchus 2019-05-26 23:13:43 +02:00
parent 96ed888e20
commit 25ece5b401
4 changed files with 24 additions and 12 deletions

View File

@ -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)
{
}

View File

@ -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

View File

@ -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)

View File

@ -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();