summaryrefslogtreecommitdiffhomepage
path: root/variant/default/main-window.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'variant/default/main-window.hpp')
-rw-r--r--variant/default/main-window.hpp95
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();