Martchus
353f1e2463
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.
104 lines
3.2 KiB
C++
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)
|