1 #pragma once 2 3 #include <QMainWindow> 4 #include <QTimer> 5 #include <QIcon> 6 #include <QString> 7 #include <QObject> 8 #include <QEvent> 9 #include <QSettings> 10 #include <QAudioOutput> 11 #include <QIODevice> 12 #include <QKeyEvent> 13 14 #include "emuwrapper.h" 15 #include "settingsmanager.h" 16 #include "statemanager.h" 17 #include "debugviewer.h" 18 19 namespace Ui{ 20 class MainWindow; 21 } 22 23 class MainWindow : public QMainWindow{ 24 Q_OBJECT 25 26 public: 27 EmuWrapper emu; 28 QSettings* settings; 29 30 explicit MainWindow(QWidget* parent = nullptr); 31 ~MainWindow(); 32 33 protected: 34 void keyPressEvent(QKeyEvent* event); 35 void keyReleaseEvent(QKeyEvent* event); 36 37 public: 38 void createHomeDirectoryTree(const QString& path); 39 40 private: 41 void popupErrorDialog(const QString& error); 42 void popupInformationDialog(const QString& info); 43 void redraw(); 44 45 private slots: 46 bool eventFilter(QObject* object, QEvent* event); 47 48 //display 49 void updateDisplay(); 50 51 //palm buttons 52 void on_power_pressed(); 53 void on_power_released(); 54 void on_calendar_pressed(); 55 void on_calendar_released(); 56 void on_addressBook_pressed(); 57 void on_addressBook_released(); 58 void on_todo_pressed(); 59 void on_todo_released(); 60 void on_notes_pressed(); 61 void on_notes_released(); 62 void on_voiceMemo_pressed(); 63 void on_voiceMemo_released(); 64 void on_up_pressed(); 65 void on_up_released(); 66 void on_down_pressed(); 67 void on_down_released(); 68 void on_left_pressed(); 69 void on_left_released(); 70 void on_right_pressed(); 71 void on_right_released(); 72 void on_center_pressed(); 73 void on_center_released(); 74 75 //frontend buttons 76 void on_ctrlBtn_clicked(); 77 void on_install_clicked(); 78 void on_debugger_clicked(); 79 void on_screenshot_clicked(); 80 void on_stateManager_clicked(); 81 void on_reset_clicked(); 82 void on_settings_clicked(); 83 void on_bootApp_clicked(); 84 85 private: 86 SettingsManager* settingsManager; 87 StateManager* stateManager; 88 DebugViewer* emuDebugger; 89 QTimer* refreshDisplay; 90 QAudioOutput* audioDevice; 91 QIODevice* audioOut; 92 Ui::MainWindow* ui; 93 int keyForButton[EmuWrapper::BUTTON_TOTAL_COUNT]; 94 }; 95