fort/src/ui/fortmanager.h

251 lines
6.7 KiB
C
Raw Normal View History

2017-09-01 15:13:17 +00:00
#ifndef FORTMANAGER_H
#define FORTMANAGER_H
2017-09-01 13:13:12 +00:00
#include <QObject>
2017-09-07 10:44:15 +00:00
2019-05-03 14:32:50 +00:00
#include "util/classhelpers.h"
2017-09-01 13:13:12 +00:00
class AppInfoCache;
class AppListModel;
class AppStatModel;
class ConfManager;
2021-02-12 09:10:39 +00:00
class ConnListModel;
class ConnectionsWindow;
class DriverManager;
class EnvManager;
class FirewallConf;
class FortSettings;
class GraphWindow;
class HostInfoCache;
class HotKeyManager;
class LogManager;
class MainWindow;
class NativeEventFilter;
class OptionsWindow;
class ProgramsWindow;
class QuotaManager;
class StatManager;
class TaskManager;
2021-04-12 07:54:14 +00:00
class TrayIcon;
class WidgetWindowStateWatcher;
class ZoneListModel;
class ZonesWindow;
2017-09-01 13:13:12 +00:00
2017-09-01 15:13:17 +00:00
class FortManager : public QObject
2017-09-01 13:13:12 +00:00
{
Q_OBJECT
public:
2020-08-20 09:36:41 +00:00
enum TrayMessageType { MessageOptions, MessageZones };
Q_ENUM(TrayMessageType)
explicit FortManager(FortSettings *settings, EnvManager *envManager, QObject *parent = nullptr);
2019-02-08 08:19:20 +00:00
~FortManager() override;
2019-05-03 14:32:50 +00:00
CLASS_DELETE_COPY_MOVE(FortManager)
2017-09-01 13:13:12 +00:00
bool checkRunningInstance();
void initialize();
2021-04-12 07:54:14 +00:00
MainWindow *mainWindow() const { return m_mainWindow; }
HotKeyManager *hotKeyManager() const { return m_hotKeyManager; }
ProgramsWindow *progWindow() const { return m_progWindow; }
OptionsWindow *optWindow() const { return m_optWindow; }
ZonesWindow *zoneWindow() const { return m_zoneWindow; }
GraphWindow *graphWindow() const { return m_graphWindow; }
ConnectionsWindow *connWindow() const { return m_connWindow; }
2020-01-13 04:30:42 +00:00
FirewallConf *conf() const;
FirewallConf *confToEdit() const;
2017-09-01 13:13:12 +00:00
2020-01-13 04:30:42 +00:00
FortSettings *settings() const { return m_settings; }
EnvManager *envManager() const { return m_envManager; }
2019-10-29 18:58:10 +00:00
ConfManager *confManager() const { return m_confManager; }
2017-09-04 11:39:15 +00:00
DriverManager *driverManager() const { return m_driverManager; }
2017-11-10 13:36:29 +00:00
LogManager *logManager() const { return m_logManager; }
2017-09-19 08:35:43 +00:00
TaskManager *taskManager() const { return m_taskManager; }
2020-01-31 10:00:36 +00:00
AppListModel *appListModel() const { return m_appListModel; }
AppStatModel *appStatModel() const { return m_appStatModel; }
ZoneListModel *zoneListModel() const { return m_zoneListModel; }
ConnListModel *connListModel() const { return m_connListModel; }
2017-09-04 11:39:15 +00:00
2017-09-01 13:13:12 +00:00
signals:
2021-04-12 07:54:14 +00:00
void optWindowChanged(bool visible);
void graphWindowChanged(bool visible);
2020-02-01 11:09:45 +00:00
2020-01-02 09:40:26 +00:00
void afterSaveProgWindowState();
void afterRestoreProgWindowState();
void afterSaveOptWindowState();
void afterRestoreOptWindowState();
2020-01-31 10:00:36 +00:00
void afterSaveZoneWindowState();
void afterRestoreZoneWindowState();
2021-02-12 09:10:39 +00:00
void afterSaveConnWindowState();
void afterRestoreConnWindowState();
2017-09-01 13:13:12 +00:00
public slots:
void installDriver();
void removeDriver();
void show();
2017-09-03 05:57:35 +00:00
void showTrayIcon();
2021-04-15 10:09:41 +00:00
void closeTrayIcon();
2020-08-20 09:36:41 +00:00
void showTrayMessage(
const QString &message, FortManager::TrayMessageType type = MessageOptions);
2017-09-03 05:57:35 +00:00
2020-01-02 09:40:26 +00:00
void showProgramsWindow();
void closeProgramsWindow();
bool showProgramEditForm(const QString &appPath);
2019-12-16 10:41:44 +00:00
void showOptionsWindow();
void closeOptionsWindow();
void reloadOptionsWindow();
2017-09-01 13:13:12 +00:00
2020-01-31 10:00:36 +00:00
void showZonesWindow();
void closeZonesWindow();
2018-03-15 15:35:49 +00:00
void showGraphWindow();
2019-02-10 15:55:23 +00:00
void closeGraphWindow(bool storeVisibility = false);
2018-03-15 15:35:49 +00:00
void switchGraphWindow();
2019-02-10 15:55:23 +00:00
void updateGraphWindow();
2018-03-15 15:35:49 +00:00
2021-02-12 09:10:39 +00:00
void showConnectionsWindow();
void closeConnectionsWindow();
2021-04-03 09:21:42 +00:00
void processRestartRequired();
2021-04-06 10:46:07 +00:00
void quitByCheckPassword();
2017-09-06 08:39:20 +00:00
2018-01-12 08:29:08 +00:00
bool checkPassword();
2020-08-20 09:36:41 +00:00
void showErrorBox(const QString &text, const QString &title = QString());
void showInfoBox(const QString &text, const QString &title = QString());
bool showQuestionBox(const QString &text, const QString &title = QString());
bool showYesNoBox(const QString &text, const QString &yesText, const QString &noText,
const QString &title = QString());
2017-09-03 19:41:03 +00:00
bool saveOriginConf(const QString &message, bool onlyFlags = false);
2017-09-07 05:34:18 +00:00
bool saveConf(bool onlyFlags = false);
bool applyConf(bool onlyFlags = false);
bool applyConfImmediateFlags();
2017-09-04 11:39:15 +00:00
2017-09-01 13:13:12 +00:00
private:
void setupTranslationManager();
void setupThreadPool();
2017-09-04 13:53:45 +00:00
bool setupDriver();
2017-11-10 13:36:29 +00:00
void closeDriver();
2021-04-09 11:31:22 +00:00
void setupAppInfoCache();
void setupHostInfoCache();
2020-01-31 10:00:36 +00:00
void setupModels();
void setupLogManager();
void closeLogManager();
2021-04-09 11:31:22 +00:00
void setupEventFilter();
void setupEnvManager();
2019-10-09 08:56:41 +00:00
void setupStatManager();
2019-10-23 12:03:59 +00:00
void setupConfManager();
void setupLogger();
2019-10-29 18:58:10 +00:00
void setupTaskManager();
2018-12-25 07:36:11 +00:00
void setupMainWindow();
2021-04-09 14:20:05 +00:00
void closeMainWindow();
void setupHotKeyManager();
2021-04-09 11:31:22 +00:00
void setupTrayIcon();
2019-10-06 06:15:46 +00:00
void setupProgramsWindow();
void setupOptionsWindow();
void setupZonesWindow();
void setupGraphWindow();
void setupConnectionsWindow();
2017-09-01 13:13:12 +00:00
2019-10-08 15:32:34 +00:00
void closeUi();
2020-02-01 11:09:45 +00:00
bool loadConf();
bool saveConf(FirewallConf *newConf, bool onlyFlags = false);
2017-09-04 13:53:45 +00:00
bool updateDriverConf(bool onlyFlags = false);
2017-09-02 14:25:47 +00:00
2018-02-20 12:21:10 +00:00
void updateLogManager(bool active);
2019-10-09 08:56:41 +00:00
void updateStatManager(FirewallConf *conf);
2017-12-08 02:38:02 +00:00
2020-01-02 09:40:26 +00:00
void saveProgWindowState();
void restoreProgWindowState();
2019-12-16 10:41:44 +00:00
void saveOptWindowState();
void restoreOptWindowState();
2018-01-09 07:36:20 +00:00
2020-01-31 10:00:36 +00:00
void saveZoneWindowState();
void restoreZoneWindowState();
2019-02-10 15:55:23 +00:00
void saveGraphWindowState(bool visible);
2018-03-15 15:35:49 +00:00
void restoreGraphWindowState();
2021-02-12 09:10:39 +00:00
void saveConnWindowState();
void restoreConnWindowState();
void onTrayActivated(int reason);
void onTrayMessageClicked();
2021-04-12 07:54:14 +00:00
QWidget *focusWidget() const;
2017-09-03 05:57:35 +00:00
2017-09-01 13:13:12 +00:00
private:
bool m_initialized : 1;
bool m_trayTriggered : 1;
2017-09-03 05:57:35 +00:00
TrayMessageType m_lastMessageType = MessageOptions;
void *m_instanceMutex = nullptr;
MainWindow *m_mainWindow = nullptr; // dummy window for tray icon
2021-04-12 07:54:14 +00:00
NativeEventFilter *m_nativeEventFilter = nullptr;
HotKeyManager *m_hotKeyManager = nullptr;
TrayIcon *m_trayIcon = nullptr;
2020-01-02 09:40:26 +00:00
ProgramsWindow *m_progWindow = nullptr;
WidgetWindowStateWatcher *m_progWindowState = nullptr;
2018-01-10 02:41:42 +00:00
2020-01-01 11:28:59 +00:00
OptionsWindow *m_optWindow = nullptr;
WidgetWindowStateWatcher *m_optWindowState = nullptr;
2017-09-01 13:13:12 +00:00
2020-01-31 10:00:36 +00:00
ZonesWindow *m_zoneWindow = nullptr;
WidgetWindowStateWatcher *m_zoneWindowState = nullptr;
2020-01-01 11:28:59 +00:00
GraphWindow *m_graphWindow = nullptr;
WidgetWindowStateWatcher *m_graphWindowState = nullptr;
2018-03-15 15:35:49 +00:00
2021-02-12 09:10:39 +00:00
ConnectionsWindow *m_connWindow = nullptr;
WidgetWindowStateWatcher *m_connWindowState = nullptr;
2020-01-13 04:30:42 +00:00
FortSettings *m_settings = nullptr;
EnvManager *m_envManager = nullptr;
2020-01-01 11:28:59 +00:00
QuotaManager *m_quotaManager = nullptr;
StatManager *m_statManager = nullptr;
DriverManager *m_driverManager = nullptr;
2020-01-04 11:19:56 +00:00
ConfManager *m_confManager = nullptr;
2020-01-01 11:28:59 +00:00
LogManager *m_logManager = nullptr;
TaskManager *m_taskManager = nullptr;
2020-01-01 11:28:59 +00:00
AppInfoCache *m_appInfoCache = nullptr;
HostInfoCache *m_hostInfoCache = nullptr;
2020-01-31 10:00:36 +00:00
AppListModel *m_appListModel = nullptr;
AppStatModel *m_appStatModel = nullptr;
ZoneListModel *m_zoneListModel = nullptr;
ConnListModel *m_connListModel = nullptr;
2017-09-01 13:13:12 +00:00
};
2017-09-01 15:13:17 +00:00
#endif // FORTMANAGER_H