diff options
Diffstat (limited to 'variant/default/main-window.hpp')
-rw-r--r-- | variant/default/main-window.hpp | 95 |
1 files changed, 48 insertions, 47 deletions
diff --git a/variant/default/main-window.hpp b/variant/default/main-window.hpp index 55fca177..9ffb7019 100644 --- a/variant/default/main-window.hpp +++ b/variant/default/main-window.hpp @@ -18,6 +18,7 @@ #include "logic/work.hpp" #include "logic/state.hpp" #include "options/options.hpp" +#include "compat/qt-signal.hpp" #include <QApplication> #include <QMainWindow> @@ -31,6 +32,7 @@ #include <QAction> #include <QEvent> #include <QCloseEvent> +#include <QList> #include <tuple> #include <memory> @@ -39,20 +41,23 @@ class main_window final : public QMainWindow, private State { - Q_OBJECT + Q_DECLARE_TR_FUNCTIONS(main_window) Ui::main_window ui; - Shortcuts global_shortcuts; - module_settings m; std::unique_ptr<QSystemTrayIcon> tray; - QMenu tray_menu; + QMenu tray_menu { this }; + QTimer pose_update_timer { this }; QTimer det_timer; - QTimer config_list_timer; + QTimer profile_list_timer; + + Shortcuts global_shortcuts; + QShortcut kbd_quit { QKeySequence("Ctrl+Q"), this }; + std::unique_ptr<options_dialog> options_widget; std::unique_ptr<mapping_dialog> mapping_widget; - QShortcut kbd_quit { QKeySequence("Ctrl+Q"), this }; + std::unique_ptr<IFilterDialog> pFilterDialog; std::unique_ptr<IProtocolDialog> pProtocolDialog; std::unique_ptr<ITrackerDialog> pTrackerDialog; @@ -60,6 +65,8 @@ class main_window final : public QMainWindow, private State process_detector_worker det; QMenu profile_menu; + QList<QString> profile_list; + QAction menu_action_header { &tray_menu }, menu_action_show { &tray_menu }, menu_action_exit { &tray_menu }, @@ -71,72 +78,66 @@ class main_window final : public QMainWindow, private State bool exiting_already { false }; - using dylib_ptr = Modules::dylib_ptr; - using dylib_list = Modules::dylib_list; - - dylib_ptr current_tracker(); - dylib_ptr current_protocol(); - dylib_ptr current_filter(); + qt_sig::nullary start_tracker { this, &main_window::start_tracker_, Qt::QueuedConnection }; + qt_sig::nullary stop_tracker { this, &main_window::stop_tracker_, Qt::QueuedConnection }; + qt_sig::nullary toggle_tracker { this, &main_window::toggle_tracker_, Qt::QueuedConnection }; + qt_sig::nullary restart_tracker { this, &main_window::restart_tracker_, Qt::QueuedConnection }; - static std::tuple<dylib_ptr, int> module_by_name(const QString& name, Modules::dylib_list& list); + void init_dylibs(); + void init_tray_menu(); + void init_profiles(); + void init_buttons(); - void update_button_state(bool running, bool inertialp); - void display_pose(const double* mapped, const double* raw); - void set_title(const QString& game_title = QString()); - static bool get_new_config_name_from_dialog(QString &ret); - void set_profile_in_registry(const QString& profile); + void init_shortcuts(); void register_shortcuts(); void set_keys_enabled(bool flag); - bool is_config_listed(const QString& name); - void init_tray(); + void update_button_state(bool running, bool inertialp); - void changeEvent(QEvent* e) override; - bool event(QEvent *event) override; - bool maybe_hide_to_tray(QEvent* e); #if !defined _WIN32 void annoy_if_root(); #endif + void changeEvent(QEvent* e) override; + bool maybe_hide_to_tray(QEvent* e); void closeEvent(QCloseEvent *event) override; - - bool maybe_die_on_config_not_writable(const QString& current, QStringList* ini_list); - void die_on_config_not_writable(); - bool is_tray_enabled(); - bool start_in_tray(); - -private slots: - void save_modules(); - void exit(int status = EXIT_SUCCESS); - bool set_profile(const QString& new_name); + bool event(QEvent *event) override; void show_tracker_settings(); void show_proto_settings(); void show_filter_settings(); + void show_options_dialog(); void show_mapping_window(); - void show_pose(); - void maybe_start_profile_from_executable(); - - void make_empty_config(); - void make_copied_config(); - void open_config_directory(); - bool refresh_config_list(); + void show_pose(); + void show_pose_(const double* mapped, const double* raw); + void set_title(const QString& game_title = QString()); void start_tracker_(); void stop_tracker_(); + void restart_tracker_(); + void toggle_tracker_(); - void ensure_tray(); + void set_profile(const QString& new_name, bool migrate = true); + void set_profile_in_registry(const QString& profile); + void refresh_profile_list(); + void die_on_profile_not_writable(); + void maybe_start_profile_from_executable(); + [[nodiscard]] static bool profile_name_from_dialog(QString& ret); + + void create_empty_profile(); + void create_copied_profile(); + void open_profile_directory(); + void ensure_tray(); void toggle_restore_from_tray(QSystemTrayIcon::ActivationReason e); - static void set_working_directory(); + bool tray_enabled(); + bool start_in_tray(); -signals: - void start_tracker(); - void stop_tracker(); - void toggle_tracker(); - void restart_tracker(); + void save_modules(); + + void exit(int status = EXIT_SUCCESS); public: main_window(); |