syncthingtray/widgets/misc/dbusstatusnotifier.h
Martchus 353f1e2463 Allow to distinguish icon colors within UI and system tray
This is useful because sometimes the background color of the system
tray is dark but the overall system UI still uses a light theme.

For the Plasmoid this should never be the case, though. Hence the
extra settings are not available there.
2019-07-31 20:16:43 +02:00

104 lines
3.2 KiB
C++

#if !defined(SYNCTHINGWIDGETS_DBUSSTATUSNOTIFIER_H) && defined(QT_UTILITIES_SUPPORT_DBUS_NOTIFICATIONS)
#define SYNCTHINGWIDGETS_DBUSSTATUSNOTIFIER_H
#include "./internalerror.h"
#include <qtutilities/misc/dbusnotification.h>
#include <c++utilities/chrono/datetime.h>
#include <QObject>
#include <QStringList>
namespace Data {
enum class SyncthingErrorCategory;
struct StatusIcons;
} // namespace Data
namespace QtGui {
class SYNCTHINGWIDGETS_EXPORT DBusStatusNotifier : public QObject {
Q_OBJECT
public:
explicit DBusStatusNotifier(QObject *parent = nullptr);
public Q_SLOTS:
void showDisconnect();
void hideDisconnect();
void showInternalError(const InternalError &error);
void showLauncherError(const QString &errorMessage, const QString &additionalInfo);
void showSyncthingNotification(CppUtilities::DateTime when, const QString &message);
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 &statusIcons, const Data::StatusIcons &icons);
Q_SIGNALS:
void connectRequested();
void dismissNotificationsRequested();
void showNotificationsRequested();
void errorDetailsRequested();
void webUiRequested();
private Q_SLOTS:
void handleSyncthingNotificationAction(const QString &action);
private:
QtUtilities::DBusNotification m_disconnectedNotification;
QtUtilities::DBusNotification m_internalErrorNotification;
QtUtilities::DBusNotification m_launcherErrorNotification;
QtUtilities::DBusNotification m_syncthingNotification;
QtUtilities::DBusNotification m_syncCompleteNotification;
QtUtilities::DBusNotification m_newDevNotification;
QtUtilities::DBusNotification m_newDirNotification;
};
inline void DBusStatusNotifier::showDisconnect()
{
m_disconnectedNotification.show();
}
inline void DBusStatusNotifier::hideDisconnect()
{
m_disconnectedNotification.hide();
}
inline void DBusStatusNotifier::showInternalError(const InternalError &error)
{
m_internalErrorNotification.update(error.message);
}
inline void QtGui::DBusStatusNotifier::showLauncherError(const QString &errorMessage, const QString &additionalInfo)
{
m_launcherErrorNotification.update(QStringList({ errorMessage, additionalInfo }).join(QStringLiteral("\n ")));
}
inline void DBusStatusNotifier::showSyncthingNotification(CppUtilities::DateTime when, const QString &message)
{
Q_UNUSED(when)
m_syncthingNotification.update(message);
}
inline void DBusStatusNotifier::showSyncComplete(const QString &message)
{
m_syncCompleteNotification.update(message);
}
inline void DBusStatusNotifier::showNewDev(const QString &devId, const QString &message)
{
Q_UNUSED(devId)
m_newDevNotification.update(message);
}
inline void DBusStatusNotifier::showNewDir(const QString &devId, const QString &dirId, const QString &message)
{
Q_UNUSED(devId)
Q_UNUSED(dirId)
m_newDirNotification.update(message);
}
} // namespace QtGui
#endif // !defined(SYNCTHINGWIDGETS_DBUSSTATUSNOTIFIER_H) && defined(QT_UTILITIES_SUPPORT_DBUS_NOTIFICATIONS)