syncthingtray/tray/gui/traywidget.h

116 lines
2.7 KiB
C
Raw Normal View History

2016-08-30 20:01:07 +02:00
#ifndef TRAY_WIDGET_H
#define TRAY_WIDGET_H
2016-08-25 00:45:32 +02:00
#include "./webviewprovider.h"
2016-08-30 20:01:07 +02:00
2016-09-03 20:14:52 +02:00
#include "../application/settings.h"
2016-08-25 00:45:32 +02:00
#include "../../connector/syncthingconnection.h"
#include "../../connector/syncthingprocess.h"
#include "../../model/syncthingdirectorymodel.h"
#include "../../model/syncthingdevicemodel.h"
#include "../../model/syncthingdownloadmodel.h"
2016-08-25 00:45:32 +02:00
#include <QWidget>
#include <memory>
2016-09-03 19:39:43 +02:00
QT_FORWARD_DECLARE_CLASS(QFrame)
2016-09-03 20:14:52 +02:00
QT_FORWARD_DECLARE_CLASS(QMenu)
QT_FORWARD_DECLARE_CLASS(QActionGroup)
2016-09-03 19:39:43 +02:00
2016-08-25 00:45:32 +02:00
namespace ApplicationUtilities {
class QtConfigArguments;
}
2016-08-30 20:01:07 +02:00
2016-08-25 00:45:32 +02:00
namespace Dialogs {
class AboutDialog;
}
namespace QtGui {
class WebViewDialog;
class SettingsDialog;
class TrayMenu;
2016-08-30 20:01:07 +02:00
2016-08-25 00:45:32 +02:00
namespace Ui {
class TrayWidget;
}
class TrayWidget : public QWidget
{
Q_OBJECT
public:
TrayWidget(TrayMenu *parent = nullptr);
~TrayWidget();
Data::SyncthingConnection &connection();
2016-09-03 20:14:52 +02:00
QMenu *connectionsMenu();
static const std::vector<TrayWidget *> &instances();
2016-08-25 00:45:32 +02:00
public slots:
void showSettingsDialog();
void showAboutDialog();
void showWebUi();
void showOwnDeviceId();
void showLog();
void showNotifications();
void quitTray();
2016-08-25 00:45:32 +02:00
private slots:
void handleStatusChanged(Data::SyncthingStatus status);
2016-09-25 20:54:09 +02:00
static void applySettings();
2016-09-21 21:09:12 +02:00
void openDir(const Data::SyncthingDir &dir);
void openItemDir(const Data::SyncthingItemDownloadProgress &item);
void scanDir(const Data::SyncthingDir &dir);
void pauseResumeDev(const Data::SyncthingDev &dev);
2016-08-29 20:51:30 +02:00
void changeStatus();
2016-08-30 20:01:07 +02:00
void updateTraffic();
2016-09-03 20:14:52 +02:00
#ifndef SYNCTHINGTRAY_NO_WEBVIEW
2016-08-25 00:45:32 +02:00
void handleWebViewDeleted();
2016-09-03 20:14:52 +02:00
#endif
void handleNewNotification(ChronoUtilities::DateTime when, const QString &msg);
2016-09-03 20:14:52 +02:00
void handleConnectionSelected(QAction *connectionAction);
void showDialog(QWidget *dlg);
2016-08-25 00:45:32 +02:00
private:
TrayMenu *m_menu;
std::unique_ptr<Ui::TrayWidget> m_ui;
2016-09-25 20:54:09 +02:00
static SettingsDialog *m_settingsDlg;
static Dialogs::AboutDialog *m_aboutDlg;
2016-08-25 00:45:32 +02:00
#ifndef SYNCTHINGTRAY_NO_WEBVIEW
WebViewDialog *m_webViewDlg;
#endif
2016-09-03 19:39:43 +02:00
QFrame *m_cornerFrame;
2016-08-25 00:45:32 +02:00
Data::SyncthingConnection m_connection;
Data::SyncthingDirectoryModel m_dirModel;
Data::SyncthingDeviceModel m_devModel;
2016-09-21 21:09:12 +02:00
Data::SyncthingDownloadModel m_dlModel;
2016-09-03 20:14:52 +02:00
QMenu *m_connectionsMenu;
QActionGroup *m_connectionsActionGroup;
Data::SyncthingConnectionSettings *m_selectedConnection;
std::vector<Data::SyncthingLogEntry> m_notifications;
static std::vector<TrayWidget *> m_instances;
2016-08-25 00:45:32 +02:00
};
inline Data::SyncthingConnection &TrayWidget::connection()
{
return m_connection;
}
2016-09-03 20:14:52 +02:00
inline QMenu *TrayWidget::connectionsMenu()
{
return m_connectionsMenu;
}
inline const std::vector<TrayWidget *> &TrayWidget::instances()
{
return m_instances;
}
2016-08-25 00:45:32 +02:00
}
2016-08-30 20:01:07 +02:00
#endif // TRAY_WIDGET_H