1 #ifndef OPTIONS_H 2 #define OPTIONS_H 3 4 #include <QWidget> 5 #include <QMap> 6 #include <QLabel> 7 #include <QProgressBar> 8 #include <QCheckBox> 9 #include <QSpinBox> 10 #include <QScrollArea> 11 12 #include "settings.h" 13 #include "ui_options.h" 14 #include "macros.h" 15 16 #if QMC2_JOYSTICK == 1 17 #include "joystick.h" 18 19 class JoystickCalibrationWidget : public QWidget 20 { 21 Q_OBJECT 22 23 public: 24 Joystick *myJoystick; 25 QMap<int, QCheckBox *> axesEnablers; 26 QMap<int, QProgressBar *> axesRanges; 27 QMap<int, QSpinBox *> axesDeadzones; 28 QMap<int, QSpinBox *> axesSensitivities; 29 QMap<int, QToolButton *> axesButtons; 30 QMap<int, QLabel *> sensitivityLabels; 31 QMap<int, QLabel *> deadzoneLabels; 32 QMap<int, int> axesMinimums; 33 QMap<int, int> axesMaximums; 34 QGridLayout *myLayout; 35 36 JoystickCalibrationWidget(Joystick *joystick, QWidget *parent = 0); 37 ~JoystickCalibrationWidget(); 38 39 public slots: 40 void on_joystickAxisValueChanged(int, int); 41 void on_joystickButtonValueChanged(int, bool); 42 void on_joystickHatValueChanged(int, int); 43 void on_joystickTrackballValueChanged(int, int, int); 44 void on_resetAxisCalibration(); 45 void on_deadzoneValueChanged(int); 46 void on_sensitivityValueChanged(int); 47 void on_axisEnablerStateChanged(int); 48 }; 49 50 class JoystickTestWidget : public QWidget 51 { 52 Q_OBJECT 53 54 public: 55 Joystick *myJoystick; 56 QMap<int, QProgressBar *> axesRanges; 57 QMap<int, QLabel *> buttonLabels; 58 QMap<int, QLabel *> hatValueLabels; 59 QMap<int, QLabel *> trackballDeltaXLabels; 60 QMap<int, QLabel *> trackballDeltaYLabels; 61 QGridLayout *myLayout; 62 63 JoystickTestWidget(Joystick *joystick, QWidget *parent = 0); 64 ~JoystickTestWidget(); 65 66 public slots: 67 void on_joystickAxisValueChanged(int, int); 68 void on_joystickButtonValueChanged(int, bool); 69 void on_joystickHatValueChanged(int, int); 70 void on_joystickTrackballValueChanged(int, int, int); 71 void cleanupPalette(); 72 }; 73 #endif 74 75 class Options : public QDialog, public Ui::Options 76 { 77 Q_OBJECT 78 79 public: 80 Settings *config; 81 bool applied; 82 bool cancelClicked; 83 #if QMC2_JOYSTICK == 1 84 Joystick *joystick; 85 JoystickCalibrationWidget *joystickCalibrationWidget; 86 JoystickTestWidget *joystickTestWidget; 87 QScrollArea *scrollArea; 88 #endif 89 QStringList registeredEmulatorsToBeRemoved; 90 static QBrush redBrush; 91 static QBrush greenBrush; 92 static QBrush lightgreyBrush; 93 static QBrush greyBrush; 94 static QBrush yellowBrush; 95 static QBrush blueBrush; 96 97 QCheckBox *checkBoxEnableOutputNotifiers; 98 99 Options(QWidget *parent = 0); 100 ~Options(); 101 102 void apply(); 103 void restoreCurrentConfig(bool useDefaultSettings = false); 104 105 #if defined(QMC2_OS_MAC) useNativeFileDialogs()106 bool useNativeFileDialogs() { return config->value(QMC2_FRONTEND_PREFIX + "GUI/NativeFileDialogs", true).toBool(); } 107 #else useNativeFileDialogs()108 bool useNativeFileDialogs() { return config->value(QMC2_FRONTEND_PREFIX + "GUI/NativeFileDialogs", false).toBool(); } 109 #endif 110 int iconFileType(); setStandardWorkDir(const QString & d)111 void setStandardWorkDir(const QString &d) { m_standardWorkDir = d; } standardWorkDir()112 QString &standardWorkDir() { return m_standardWorkDir; } setCurrentStyleName(const QString & s)113 void setCurrentStyleName(const QString &s) { m_currentStyleName = s; } currentStyleName()114 QString ¤tStyleName() { return m_currentStyleName; } outputNotifiersEnabled()115 bool outputNotifiersEnabled() { return m_enableOutputNotifiers; } setEnableOutputNotifiers(bool enable)116 void setEnableOutputNotifiers(bool enable) { m_enableOutputNotifiers = enable; } 117 118 static QString configPath(); 119 120 public slots: 121 // callback functions 122 void on_pushButtonOk_clicked(); 123 void on_pushButtonCancel_clicked(); 124 void on_pushButtonRestore_clicked(); 125 void on_pushButtonApply_clicked(); 126 void on_pushButtonDefault_clicked(); 127 void on_toolButtonBrowseStyleSheet_clicked(); 128 void on_toolButtonBrowseFrontendLogFile_clicked(); 129 void on_toolButtonBrowseEmulatorLogFile_clicked(); 130 void on_toolButtonBrowseFavoritesFile_clicked(); 131 void on_toolButtonBrowseHistoryFile_clicked(); 132 void on_toolButtonBrowseMachineListCacheFile_clicked(); 133 void on_toolButtonBrowseMachineListDatabase_clicked(); 134 void on_toolButtonBrowseROMStateCacheFile_clicked(); 135 void on_toolButtonBrowseSoftwareListCacheDb_clicked(); 136 void on_toolButtonBrowseSoftwareStateCache_clicked(); 137 void on_toolButtonBrowseGeneralSoftwareFolder_clicked(); 138 void on_toolButtonBrowsePreviewDirectory_clicked(); 139 void on_toolButtonBrowsePreviewFile_clicked(); 140 void on_toolButtonBrowseFlyerDirectory_clicked(); 141 void on_toolButtonBrowseFlyerFile_clicked(); 142 void on_toolButtonBrowseIconDirectory_clicked(); 143 void on_toolButtonBrowseIconFile_clicked(); 144 void on_toolButtonBrowseCabinetDirectory_clicked(); 145 void on_toolButtonBrowseCabinetFile_clicked(); 146 void on_toolButtonBrowseControllerDirectory_clicked(); 147 void on_toolButtonBrowseControllerFile_clicked(); 148 void on_toolButtonBrowseMarqueeDirectory_clicked(); 149 void on_toolButtonBrowseMarqueeFile_clicked(); 150 void on_toolButtonBrowseTitleDirectory_clicked(); 151 void on_toolButtonBrowseTitleFile_clicked(); 152 void on_toolButtonBrowsePCBDirectory_clicked(); 153 void on_toolButtonBrowsePCBFile_clicked(); 154 void on_toolButtonBrowseSoftwareSnapDirectory_clicked(); 155 void on_toolButtonBrowseSoftwareSnapFile_clicked(); 156 void on_toolButtonBrowseSoftwareNotesFolder_clicked(); 157 void on_toolButtonBrowseSoftwareNotesTemplate_clicked(); 158 void on_toolButtonBrowseSystemNotesFolder_clicked(); 159 void on_toolButtonBrowseSystemNotesTemplate_clicked(); 160 void on_toolButtonBrowseVideoSnapFolder_clicked(); 161 void on_toolButtonScanSystemManuals_clicked(); 162 void on_toolButtonBrowseSystemManualFolder_clicked(); 163 void on_toolButtonScanSoftwareManuals_clicked(); 164 void on_toolButtonBrowseSoftwareManualFolder_clicked(); 165 void on_toolButtonBrowseExecutableFile_clicked(); 166 void on_toolButtonBrowseCookieDatabase_clicked(); 167 void on_toolButtonBrowseDataDirectory_clicked(); 168 void on_toolButtonBrowseDatInfoDatabase_clicked(); 169 void on_toolButtonBrowseMameHistoryDat_clicked(); 170 void on_toolButtonBrowseMessSysinfoDat_clicked(); 171 void on_toolButtonBrowseMameInfoDat_clicked(); 172 void on_toolButtonBrowseMessInfoDat_clicked(); 173 void on_toolButtonBrowseSoftwareInfoDB_clicked(); 174 void on_toolButtonBrowseCatverIniFile_clicked(); 175 void on_toolButtonBrowseCategoryIniFile_clicked(); 176 void on_toolButtonBrowseWorkingDirectory_clicked(); 177 void on_toolButtonBrowseOptionsTemplateFile_clicked(); 178 void on_toolButtonBrowseXmlCacheDatabase_clicked(); 179 void on_toolButtonClearUserDataDatabase_clicked(); 180 void on_toolButtonCleanupUserDataDatabase_clicked(); 181 void on_toolButtonBrowseUserDataDatabase_clicked(); 182 void on_toolButtonBrowseFont_clicked(); 183 void on_toolButtonBrowseLogFont_clicked(); 184 void on_toolButtonBrowseZipTool_clicked(); 185 void on_toolButtonBrowseSevenZipTool_clicked(); 186 void on_toolButtonBrowseRomTool_clicked(); 187 void on_toolButtonBrowseRomToolWorkingDirectory_clicked(); 188 void on_radioButtonPreviewSelect_clicked(); 189 void on_radioButtonFlyerSelect_clicked(); 190 void on_radioButtonIconSelect_clicked(); 191 void on_radioButtonCabinetSelect_clicked(); 192 void on_radioButtonControllerSelect_clicked(); 193 void on_radioButtonMarqueeSelect_clicked(); 194 void on_radioButtonTitleSelect_clicked(); 195 void on_radioButtonPCBSelect_clicked(); 196 void on_radioButtonSoftwareSnapSelect_clicked(); 197 void on_treeWidgetShortcuts_itemActivated(QTreeWidgetItem *item); 198 void on_treeWidgetShortcuts_itemSelectionChanged(); 199 void on_pushButtonRedefineKeySequence_clicked(); 200 void on_pushButtonResetShortcut_clicked(); 201 void on_pushButtonComponentSetup_clicked(); 202 void on_pushButtonCustomizeToolBar_clicked(); 203 void on_pushButtonIndividualFallbackSettings_clicked(); 204 void on_pushButtonEditPalette_clicked(); 205 void on_toolButtonBrowseAdditionalEmulatorExecutable_clicked(); 206 void on_toolButtonBrowseAdditionalEmulatorWorkingDirectory_clicked(); 207 void on_toolButtonAddEmulator_clicked(); 208 void on_toolButtonSaveEmulator_clicked(); 209 void on_toolButtonRemoveEmulator_clicked(); 210 void on_toolButtonCustomIDs_clicked(); 211 void on_tableWidgetRegisteredEmulators_itemSelectionChanged(); on_tableWidgetRegisteredEmulators_itemClicked(QTableWidgetItem *)212 void on_tableWidgetRegisteredEmulators_itemClicked(QTableWidgetItem *) { on_tableWidgetRegisteredEmulators_itemSelectionChanged(); } 213 void on_lineEditAdditionalEmulatorName_textChanged(const QString &); 214 void on_lineEditAdditionalEmulatorArguments_textChanged(const QString &); 215 void on_pushButtonClearCookieDatabase_clicked(); 216 void on_pushButtonManageCookies_clicked(); 217 void on_pushButtonAdditionalArtworkSetup_clicked(); 218 void on_pushButtonImageFormats_clicked(); 219 void on_toolButtonImportGameInfo_clicked(); 220 void on_toolButtonImportMachineInfo_clicked(); 221 void on_toolButtonImportMameInfo_clicked(); 222 void on_toolButtonImportMessInfo_clicked(); 223 void on_toolButtonImportSoftwareInfo_clicked(); 224 void on_toolButtonOptimizeCatverIni_clicked(); 225 void on_toolButtonSetupIconDatabase_clicked(); 226 227 // joystick setup callbacks 228 #if QMC2_JOYSTICK == 1 229 void on_pushButtonRescanJoysticks_clicked(); 230 void on_toolButtonCalibrateAxes_clicked(); 231 void on_toolButtonTestJoystick_clicked(); 232 void on_toolButtonMapJoystick_clicked(); 233 void on_comboBoxSelectJoysticks_currentIndexChanged(int); 234 void on_checkBoxEnableJoystickControl_toggled(bool); 235 void on_checkBoxJoystickAutoRepeat_toggled(bool); 236 void on_spinBoxJoystickAutoRepeatTimeout_valueChanged(int); 237 void on_spinBoxJoystickEventTimeout_valueChanged(int); 238 void on_treeWidgetJoystickMappings_itemActivated(QTreeWidgetItem *item); 239 void on_treeWidgetJoystickMappings_itemSelectionChanged(); 240 void on_pushButtonRemapJoystickFunction_clicked(); 241 void on_pushButtonRemoveJoystickMapping_clicked(); 242 void checkJoystickMappings(); 243 #endif 244 245 // other slots 246 void checkShortcuts(); 247 void setupShortcutActions(); 248 void applyDelayed(); 249 void setupCustomIDsClicked(); 250 void chooseEmuIconClicked(); 251 void actionDefaultEmuIconTriggered(); 252 void actionNoEmuIconTriggered(); 253 void checkPlaceholderStatus(); 254 void loadCustomPalette(QString); 255 void saveCustomPalette(); 256 void enableWidgets(bool enable = true); 257 258 protected: 259 void moveEvent(QMoveEvent *); 260 void resizeEvent(QResizeEvent *); 261 262 private: 263 QString m_standardWorkDir; 264 QString m_currentStyleName; 265 bool m_enableOutputNotifiers; 266 }; 267 268 #endif 269