From 9e70db952ed30ecd186457f2b5b59f996b06d131 Mon Sep 17 00:00:00 2001 From: mjbudd77 Date: Thu, 12 Aug 2021 21:05:43 -0400 Subject: [PATCH] Changed Qt hotkey window to sort the hot keys into logical groups. --- src/drivers/Qt/HotKeyConf.cpp | 200 ++++++++++++++++++++++++++++------ src/drivers/Qt/HotKeyConf.h | 36 +++++- src/drivers/Qt/config.cpp | 143 ++++++++++++------------ src/drivers/Qt/config.h | 2 +- src/drivers/Qt/input.cpp | 1 + 5 files changed, 273 insertions(+), 109 deletions(-) diff --git a/src/drivers/Qt/HotKeyConf.cpp b/src/drivers/Qt/HotKeyConf.cpp index 7a1ff50d..23048dce 100644 --- a/src/drivers/Qt/HotKeyConf.cpp +++ b/src/drivers/Qt/HotKeyConf.cpp @@ -27,6 +27,7 @@ #include #include #include +#include #include "Qt/main.h" #include "Qt/dface.h" @@ -45,6 +46,7 @@ HotKeyConfDialog_t::HotKeyConfDialog_t(QWidget *parent) QPushButton *closeButton, *resetDefaults; QTreeWidgetItem *item; std::string prefix = "SDL.Hotkeys."; + const char *hkName, *hkKeySeq, *hkTitle, *hkGroup; setWindowTitle("Hotkey Configuration"); @@ -69,26 +71,13 @@ HotKeyConfDialog_t::HotKeyConfDialog_t(QWidget *parent) for (int i = 0; i < HK_MAX; i++) { - char keyName[128]; - std::string optionName = prefix + Hotkeys[i].getConfigName(); + getHotKeyConfig( i, &hkName, &hkKeySeq, &hkTitle, &hkGroup ); - //g_config->getOption (optionName.c_str (), &keycode); - Hotkeys[i].getString(keyName); - - item = new QTreeWidgetItem(); - - tree->addTopLevelItem(item); - - //item->setFlags( Qt::ItemIsEnabled | Qt::ItemIsSelectable | Qt::ItemIsUserCheckable | Qt::ItemNeverHasChildren ); - //item->setCheckState( 0, Qt::Checked ); - - item->setText(0, QString::fromStdString(optionName)); - item->setText(1, QString::fromStdString(keyName)); - - item->setTextAlignment(0, Qt::AlignLeft); - item->setTextAlignment(1, Qt::AlignCenter); + tree->addGroup( hkGroup ); + tree->addItem( hkGroup, i ); } + tree->finalize(); //connect( tree, SIGNAL(itemDoubleClicked(QTreeWidgetItem*,int)), this, SLOT(hotKeyDoubleClicked(QTreeWidgetItem*,int) ) ); connect( tree, SIGNAL(itemActivated(QTreeWidgetItem*,int)), this, SLOT(hotKeyActivated(QTreeWidgetItem*,int) ) ); @@ -132,25 +121,124 @@ void HotKeyConfDialog_t::closeWindow(void) deleteLater(); } //---------------------------------------------------------------------------- -void HotKeyConfDialog_t::resetDefaultsCB(void) +void HotKeyConfTree_t::finalize(void) { QTreeWidgetItem *item; + std::map ::iterator it; + + for (it=groupMap.begin(); it!=groupMap.end(); it++) + { + item = it->second; + + addTopLevelItem(item); + + item->setExpanded(true); + } +} +//---------------------------------------------------------------------------- +QTreeWidgetItem *HotKeyConfTree_t::addItem( const char *group, int hkIdx ) +{ + QTreeWidgetItem *itemGroup; + HotKeyConfTreeItem_t *item; + const char *hkName, *hkKeySeq, *hkTitle, *hkGroup; + + itemGroup = findGroup(group); + + if ( itemGroup == NULL ) + { + return NULL; + } + getHotKeyConfig( hkIdx, &hkName, &hkKeySeq, &hkTitle, &hkGroup ); + + item = new HotKeyConfTreeItem_t(hkIdx); + + item->setText(0, tr(hkTitle)); + item->setText(1, Hotkeys[hkIdx].getKeySeq().toString()); + + item->setTextAlignment(0, Qt::AlignLeft); + item->setTextAlignment(1, Qt::AlignCenter); + + itemGroup->addChild(item); + return NULL; +} +//---------------------------------------------------------------------------- +QTreeWidgetItem *HotKeyConfTree_t::addGroup( const char *group) +{ + std::string s = group; + + return addGroup(s); +} +//---------------------------------------------------------------------------- +QTreeWidgetItem *HotKeyConfTree_t::addGroup(std::string group) +{ + QTreeWidgetItem *item; + + item = findGroup(group); + + if ( item == NULL ) + { + item = new QTreeWidgetItem( this, 0); + + item->setText(0, QString::fromStdString(group)); + + groupMap[group] = item; + } + return item; +} +//---------------------------------------------------------------------------- +QTreeWidgetItem *HotKeyConfTree_t::findGroup( const char *group) +{ + std::string s = group; + + return findGroup(s); +} +//---------------------------------------------------------------------------- +QTreeWidgetItem *HotKeyConfTree_t::findGroup( std::string group) +{ + std::map ::iterator it; + + it = groupMap.find(group); + + if ( it != groupMap.end() ) + { + return it->second; + } + return NULL; +} +//---------------------------------------------------------------------------- +HotKeyConfTreeItem_t::HotKeyConfTreeItem_t(int idx, QTreeWidgetItem *parent) + : QTreeWidgetItem(parent,1) +{ + hkIdx = idx; +} +//---------------------------------------------------------------------------- +HotKeyConfTreeItem_t::~HotKeyConfTreeItem_t(void) +{ + +} +//---------------------------------------------------------------------------- +void HotKeyConfDialog_t::resetDefaultsCB(void) +{ + QTreeWidgetItem *groupItem; + HotKeyConfTreeItem_t *item; std::string confName; std::string prefix = "SDL.Hotkeys."; const char *name, *keySeq; - for (int i=0; itopLevelItemCount(); i++) { - getHotKeyConfig( i, &name, &keySeq ); + groupItem = tree->topLevelItem(i); - confName = prefix + name; - - g_config->setOption( confName, keySeq ); - - item = tree->topLevelItem(i); - - if ( item ) + for (int j=0; jchildCount(); j++) { + item = static_cast(groupItem->child(j)); + + getHotKeyConfig( item->hkIdx, &name, &keySeq ); + + confName = prefix + name; + + g_config->setOption( confName, keySeq ); + item->setText(1, tr(keySeq)); } } @@ -172,18 +260,26 @@ void HotKeyConfDialog_t::keyReleaseEvent(QKeyEvent *event) //---------------------------------------------------------------------------- void HotKeyConfDialog_t::hotKeyActivated(QTreeWidgetItem *item, int column) { - int row = tree->indexOfTopLevelItem( item ); + HotKeyConfTreeItem_t *hkItem = static_cast(item); - HotKeyConfSetDialog_t *win = new HotKeyConfSetDialog_t( row, 1, item, this ); + if ( hkItem->type() == 0 ) + { + return; + } + HotKeyConfSetDialog_t *win = new HotKeyConfSetDialog_t( 1, hkItem, this ); win->exec(); } //---------------------------------------------------------------------------- void HotKeyConfDialog_t::hotKeyDoubleClicked(QTreeWidgetItem *item, int column) { - int row = tree->indexOfTopLevelItem( item ); + HotKeyConfTreeItem_t *hkItem = static_cast(item); - HotKeyConfSetDialog_t *win = new HotKeyConfSetDialog_t( row, 0, item, this ); + if ( hkItem->type() == 0 ) + { + return; + } + HotKeyConfSetDialog_t *win = new HotKeyConfSetDialog_t( 0, hkItem, this ); win->exec(); } @@ -211,14 +307,13 @@ void HotKeyConfTree_t::keyReleaseEvent(QKeyEvent *event) //---------------------------------------------------------------------------- //---------------------------------------------------------------------------- //---------------------------------------------------------------------------- -HotKeyConfSetDialog_t::HotKeyConfSetDialog_t( int hkIndex, int discardNum, QTreeWidgetItem *itemIn, QWidget *parent ) +HotKeyConfSetDialog_t::HotKeyConfSetDialog_t( int discardNum, HotKeyConfTreeItem_t *itemIn, QWidget *parent ) : QDialog(parent) { QVBoxLayout *mainLayout; QHBoxLayout *hbox; QPushButton *clearButton, *okButton; - idx = hkIndex; item = itemIn; discardCount = discardNum; @@ -299,6 +394,39 @@ void HotKeyConfSetDialog_t::keyReleaseEvent(QKeyEvent *event) event->accept(); } //---------------------------------------------------------------------------- +void HotKeyConfSetDialog_t::checkForConflicts(int hkIdx) +{ + for (int i=0; ihkIdx].getConfigName(); keyText = ks.toString().toStdString(); @@ -329,6 +457,8 @@ void HotKeyConfSetDialog_t::assignHotkey(QKeyEvent *event) setHotKeys(); + checkForConflicts(item->hkIdx); + if ( item ) { item->setText(1, QString::fromStdString(keyText)); @@ -344,7 +474,7 @@ void HotKeyConfSetDialog_t::cleanButtonCB(void) std::string prefix = "SDL.Hotkeys."; std::string confName; - confName = prefix + Hotkeys[idx].getConfigName(); + confName = prefix + Hotkeys[item->hkIdx].getConfigName(); g_config->setOption( confName, ""); diff --git a/src/drivers/Qt/HotKeyConf.h b/src/drivers/Qt/HotKeyConf.h index 31af6128..13037206 100644 --- a/src/drivers/Qt/HotKeyConf.h +++ b/src/drivers/Qt/HotKeyConf.h @@ -3,6 +3,10 @@ #pragma once +#include +#include +#include + #include #include #include @@ -16,15 +20,27 @@ #include #include #include +#include #include "Qt/main.h" +class HotKeyConfTreeItem_t : public QTreeWidgetItem +{ + //Q_OBJECT + + public: + HotKeyConfTreeItem_t(int idx, QTreeWidgetItem *parent = nullptr); + ~HotKeyConfTreeItem_t(void); + + int hkIdx; +}; + class HotKeyConfSetDialog_t : public QDialog { - Q_OBJECT + Q_OBJECT public: - HotKeyConfSetDialog_t( int hkIndex, int discardNum, QTreeWidgetItem *itemIn = 0, QWidget *parent = 0); + HotKeyConfSetDialog_t( int discardNum, HotKeyConfTreeItem_t *itemIn = 0, QWidget *parent = 0); ~HotKeyConfSetDialog_t(void); protected: @@ -32,11 +48,11 @@ protected: void keyPressEvent(QKeyEvent *event); void keyReleaseEvent(QKeyEvent *event); void assignHotkey(QKeyEvent *event); + void checkForConflicts(int hkIdx); QLineEdit *keySeqText; - QTreeWidgetItem *item; + HotKeyConfTreeItem_t *item; - int idx; int discardCount; public slots: @@ -53,6 +69,18 @@ public: HotKeyConfTree_t(QWidget *parent = 0); ~HotKeyConfTree_t(void); + void finalize(void); + + QTreeWidgetItem *addGroup( const char *group); + QTreeWidgetItem *addGroup( std::string group); + QTreeWidgetItem *findGroup( const char *group); + QTreeWidgetItem *findGroup( std::string group); + + QTreeWidgetItem *addItem(const char *group, int i ); + +protected: + std::map groupMap; + protected: void keyPressEvent(QKeyEvent *event); void keyReleaseEvent(QKeyEvent *event); diff --git a/src/drivers/Qt/config.cpp b/src/drivers/Qt/config.cpp index 61fc3c21..bbb882f3 100644 --- a/src/drivers/Qt/config.cpp +++ b/src/drivers/Qt/config.cpp @@ -63,183 +63,184 @@ extern int palsharpness; extern int palcontrast; extern int palbrightness; -int getHotKeyConfig( int i, const char **nameOut, const char **keySeqOut, const char **titleOut ) +int getHotKeyConfig( int i, const char **nameOut, const char **keySeqOut, const char **titleOut, const char **groupOut ) { const char *name = ""; const char *keySeq = ""; const char *title = NULL; + const char *group = "Misc"; switch ( i ) { case HK_OPEN_ROM: - name = "OpenROM"; keySeq = "Ctrl+O"; title = "Open ROM"; + name = "OpenROM"; keySeq = "Ctrl+O"; title = "Open ROM"; group = "Tools"; break; case HK_CLOSE_ROM: - name = "CloseROM"; keySeq = "Ctrl+C"; title = "Close ROM"; + name = "CloseROM"; keySeq = "Ctrl+C"; title = "Close ROM"; group = "Tools"; break; case HK_CHEAT_MENU: - name = "CheatMenu"; keySeq = ""; title = "Open Cheat Window"; + name = "CheatMenu"; keySeq = ""; title = "Open Cheat Window"; group = "Tools"; break; case HK_BIND_STATE: - name = "BindState"; keySeq = ""; title = "Bind Save State to Movie"; + name = "BindState"; keySeq = ""; title = "Bind Save State to Movie"; group = "Movie"; break; case HK_LOAD_LUA: - name = "LoadLua"; keySeq = "Ctrl+L"; + name = "LoadLua"; keySeq = "Ctrl+L"; group = "Tools"; break; case HK_TOGGLE_BG: - name = "ToggleBG"; keySeq = ""; title = "Toggle Background Display"; + name = "ToggleBG"; keySeq = ""; title = "Toggle Background Display"; group = "Misc"; break; case HK_TOGGLE_FG: - name = "ToggleFG"; keySeq = ""; title = "Toggle Object Display"; + name = "ToggleFG"; keySeq = ""; title = "Toggle Object Display"; group = "Misc"; break; // Save States case HK_SAVE_STATE: - name = "SaveState"; keySeq = "I"; title = "Save State"; + name = "SaveState"; keySeq = "I"; title = "Save State"; group = "State"; break; case HK_SAVE_STATE_0: - name = "SaveState0"; keySeq = "Shift+F10"; title = "Save State to Slot 0"; + name = "SaveState0"; keySeq = "Shift+F10"; title = "Save State to Slot 0"; group = "State"; break; case HK_SAVE_STATE_1: - name = "SaveState1"; keySeq = "Shift+F1"; title = "Save State to Slot 1"; + name = "SaveState1"; keySeq = "Shift+F1"; title = "Save State to Slot 1"; group = "State"; break; case HK_SAVE_STATE_2: - name = "SaveState2"; keySeq = "Shift+F2"; title = "Save State to Slot 2"; + name = "SaveState2"; keySeq = "Shift+F2"; title = "Save State to Slot 2"; group = "State"; break; case HK_SAVE_STATE_3: - name = "SaveState3"; keySeq = "Shift+F3"; title = "Save State to Slot 3"; + name = "SaveState3"; keySeq = "Shift+F3"; title = "Save State to Slot 3"; group = "State"; break; case HK_SAVE_STATE_4: - name = "SaveState4"; keySeq = "Shift+F4"; title = "Save State to Slot 4"; + name = "SaveState4"; keySeq = "Shift+F4"; title = "Save State to Slot 4"; group = "State"; break; case HK_SAVE_STATE_5: - name = "SaveState5"; keySeq = "Shift+F5"; title = "Save State to Slot 5"; + name = "SaveState5"; keySeq = "Shift+F5"; title = "Save State to Slot 5"; group = "State"; break; case HK_SAVE_STATE_6: - name = "SaveState6"; keySeq = "Shift+F6"; title = "Save State to Slot 6"; + name = "SaveState6"; keySeq = "Shift+F6"; title = "Save State to Slot 6"; group = "State"; break; case HK_SAVE_STATE_7: - name = "SaveState7"; keySeq = "Shift+F7"; title = "Save State to Slot 7"; + name = "SaveState7"; keySeq = "Shift+F7"; title = "Save State to Slot 7"; group = "State"; break; case HK_SAVE_STATE_8: - name = "SaveState8"; keySeq = "Shift+F8"; title = "Save State to Slot 8"; + name = "SaveState8"; keySeq = "Shift+F8"; title = "Save State to Slot 8"; group = "State"; break; case HK_SAVE_STATE_9: - name = "SaveState9"; keySeq = "Shift+F9"; title = "Save State to Slot 9"; + name = "SaveState9"; keySeq = "Shift+F9"; title = "Save State to Slot 9"; group = "State"; break; // Load States case HK_LOAD_STATE: - name = "LoadState"; keySeq = "P"; title = "Load State"; + name = "LoadState"; keySeq = "P"; title = "Load State"; group = "State"; break; case HK_LOAD_STATE_0: - name = "LoadState0"; keySeq = "F10"; title = "Load State From Slot 0"; + name = "LoadState0"; keySeq = "F10"; title = "Load State From Slot 0"; group = "State"; break; case HK_LOAD_STATE_1: - name = "LoadState1"; keySeq = "F1"; title = "Load State From Slot 1"; + name = "LoadState1"; keySeq = "F1"; title = "Load State From Slot 1"; group = "State"; break; case HK_LOAD_STATE_2: - name = "LoadState2"; keySeq = "F2"; title = "Load State From Slot 2"; + name = "LoadState2"; keySeq = "F2"; title = "Load State From Slot 2"; group = "State"; break; case HK_LOAD_STATE_3: - name = "LoadState3"; keySeq = "F3"; title = "Load State From Slot 3"; + name = "LoadState3"; keySeq = "F3"; title = "Load State From Slot 3"; group = "State"; break; case HK_LOAD_STATE_4: - name = "LoadState4"; keySeq = "F4"; title = "Load State From Slot 4"; + name = "LoadState4"; keySeq = "F4"; title = "Load State From Slot 4"; group = "State"; break; case HK_LOAD_STATE_5: - name = "LoadState5"; keySeq = "F5"; title = "Load State From Slot 5"; + name = "LoadState5"; keySeq = "F5"; title = "Load State From Slot 5"; group = "State"; break; case HK_LOAD_STATE_6: - name = "LoadState6"; keySeq = "F6"; title = "Load State From Slot 6"; + name = "LoadState6"; keySeq = "F6"; title = "Load State From Slot 6"; group = "State"; break; case HK_LOAD_STATE_7: - name = "LoadState7"; keySeq = "F7"; title = "Load State From Slot 7"; + name = "LoadState7"; keySeq = "F7"; title = "Load State From Slot 7"; group = "State"; break; case HK_LOAD_STATE_8: - name = "LoadState8"; keySeq = "F8"; title = "Load State From Slot 8"; + name = "LoadState8"; keySeq = "F8"; title = "Load State From Slot 8"; group = "State"; break; case HK_LOAD_STATE_9: - name = "LoadState9"; keySeq = "F9"; title = "Load State From Slot 9"; + name = "LoadState9"; keySeq = "F9"; title = "Load State From Slot 9"; group = "State"; break; case HK_FDS_SELECT: - name = "FDSSelect"; keySeq = ""; title = "Switch FDS Disk Side"; + name = "FDSSelect"; keySeq = ""; title = "Switch FDS Disk Side"; group = "FDS"; break; case HK_FDS_EJECT: - name = "FDSEject"; keySeq = ""; title = "Eject FDS Disk"; + name = "FDSEject"; keySeq = ""; title = "Eject FDS Disk"; group = "FDS"; break; case HK_VS_INSERT_COIN: - name = "VSInsertCoin"; keySeq = ""; title = "VS Insert Coin"; + name = "VSInsertCoin"; keySeq = ""; title = "VS Insert Coin"; group = "VS"; break; case HK_VS_TOGGLE_DIPSWITCH: - name = "VSToggleDip"; keySeq = ""; title = "VS Toggle Dipswitch"; + name = "VSToggleDip"; keySeq = ""; title = "VS Toggle Dipswitch"; group = "VS"; break; case HK_TOGGLE_FRAME_DISPLAY: - name = "MovieToggleFrameDisplay"; keySeq = "."; title = "Toggle Frame Display"; + name = "MovieToggleFrameDisplay"; keySeq = "."; title = "Toggle Frame Display"; group = "Movie"; break; case HK_TOGGLE_SUBTITLE: - name = "SubtitleDisplay"; keySeq = ""; title = "Toggle Movie Subtitles"; + name = "SubtitleDisplay"; keySeq = ""; title = "Toggle Movie Subtitles"; group = "Movie"; break; case HK_POWER: - name = "Power"; keySeq = ""; title = "Power"; + name = "Power"; keySeq = ""; title = "Power"; group = "Emulation"; break; case HK_RESET: - name = "Reset"; keySeq = "Ctrl+R"; title = "Reset"; + name = "Reset"; keySeq = "Ctrl+R"; title = "Reset"; group = "Emulation"; break; case HK_PAUSE: - name = "Pause"; keySeq = "Pause"; title = "Pause"; + name = "Pause"; keySeq = "Pause"; title = "Pause"; group = "Emulation"; break; case HK_QUIT: - name = "Quit"; keySeq = "Ctrl+Q"; title = "Exit Application"; + name = "Quit"; keySeq = "Ctrl+Q"; title = "Exit Application"; group = "Misc"; break; case HK_SCREENSHOT: - name = "Screenshot"; keySeq = "F12"; + name = "Screenshot"; keySeq = "F12"; group = "Tools"; break; case HK_DECREASE_SPEED: - name = "DecreaseSpeed"; keySeq = "-"; + name = "DecreaseSpeed"; keySeq = "-"; group = "Speed"; break; case HK_INCREASE_SPEED: - name = "IncreaseSpeed"; keySeq = "="; + name = "IncreaseSpeed"; keySeq = "="; group = "Speed"; break; case HK_FRAME_ADVANCE: - name = "FrameAdvance"; keySeq = "\\"; + name = "FrameAdvance"; keySeq = "\\"; group = "Speed"; break; case HK_TURBO: - name = "Turbo"; keySeq = "Tab"; + name = "Turbo"; keySeq = "Tab"; group = "Speed"; break; case HK_TOGGLE_INPUT_DISPLAY: - name = "ToggleInputDisplay"; keySeq = ","; + name = "ToggleInputDisplay"; keySeq = ","; group = "Misc"; break; case HK_MOVIE_TOGGLE_RW: - name = "ToggleMovieRW"; keySeq = "Q"; + name = "ToggleMovieRW"; keySeq = "Q"; group = "Movie"; break; case HK_PLAY_MOVIE_FROM: - name = "PlayMovieFrom"; keySeq = ""; + name = "PlayMovieFrom"; keySeq = ""; group = "Movie"; break; case HK_MOVIE_PLAY_RESTART: - name = "PlayMovieFromBeginning"; keySeq = ""; + name = "PlayMovieFromBeginning"; keySeq = ""; group = "Movie"; break; case HK_RECORD_MOVIE_TO: - name = "RecordMovieTo"; keySeq = ""; + name = "RecordMovieTo"; keySeq = ""; group = "Movie"; break; case HK_STOP_MOVIE: - name = "StopMovie"; keySeq = ""; + name = "StopMovie"; keySeq = ""; group = "Movie"; break; case HK_RECORD_AVI: - name = "RecordAvi"; keySeq = ""; + name = "RecordAvi"; keySeq = ""; group = "AVI"; break; case HK_RECORD_AVI_TO: - name = "RecordAviTo"; keySeq = ""; + name = "RecordAviTo"; keySeq = ""; group = "AVI"; break; case HK_STOP_AVI: - name = "StopAvi"; keySeq = ""; + name = "StopAvi"; keySeq = ""; group = "AVI"; break; case HK_RECORD_WAV: - name = "RecordWav"; keySeq = ""; + name = "RecordWav"; keySeq = ""; group = "WAV"; break; case HK_RECORD_WAV_TO: - name = "RecordWavTo"; keySeq = ""; + name = "RecordWavTo"; keySeq = ""; group = "WAV"; break; case HK_STOP_WAV: - name = "StopWav"; keySeq = ""; + name = "StopWav"; keySeq = ""; group = "WAV"; break; case HK_MUTE_CAPTURE: name = "MuteCapture"; keySeq = "'"; @@ -251,40 +252,40 @@ int getHotKeyConfig( int i, const char **nameOut, const char **keySeqOut, const name = "LagCounterDisplay"; keySeq = "/"; break; case HK_SELECT_STATE_0: - name = "SelectState0"; keySeq = "0"; title = "Select State Slot 0"; + name = "SelectState0"; keySeq = "0"; title = "Select State Slot 0"; group = "State"; break; case HK_SELECT_STATE_1: - name = "SelectState1"; keySeq = "1"; title = "Select State Slot 1"; + name = "SelectState1"; keySeq = "1"; title = "Select State Slot 1"; group = "State"; break; case HK_SELECT_STATE_2: - name = "SelectState2"; keySeq = "2"; title = "Select State Slot 2"; + name = "SelectState2"; keySeq = "2"; title = "Select State Slot 2"; group = "State"; break; case HK_SELECT_STATE_3: - name = "SelectState3"; keySeq = "3"; title = "Select State Slot 3"; + name = "SelectState3"; keySeq = "3"; title = "Select State Slot 3"; group = "State"; break; case HK_SELECT_STATE_4: - name = "SelectState4"; keySeq = "4"; title = "Select State Slot 4"; + name = "SelectState4"; keySeq = "4"; title = "Select State Slot 4"; group = "State"; break; case HK_SELECT_STATE_5: - name = "SelectState5"; keySeq = "5"; title = "Select State Slot 5"; + name = "SelectState5"; keySeq = "5"; title = "Select State Slot 5"; group = "State"; break; case HK_SELECT_STATE_6: - name = "SelectState6"; keySeq = "6"; title = "Select State Slot 6"; + name = "SelectState6"; keySeq = "6"; title = "Select State Slot 6"; group = "State"; break; case HK_SELECT_STATE_7: - name = "SelectState7"; keySeq = "7"; title = "Select State Slot 7"; + name = "SelectState7"; keySeq = "7"; title = "Select State Slot 7"; group = "State"; break; case HK_SELECT_STATE_8: - name = "SelectState8"; keySeq = "8"; title = "Select State Slot 8"; + name = "SelectState8"; keySeq = "8"; title = "Select State Slot 8"; group = "State"; break; case HK_SELECT_STATE_9: - name = "SelectState9"; keySeq = "9"; title = "Select State Slot 9"; + name = "SelectState9"; keySeq = "9"; title = "Select State Slot 9"; group = "State"; break; case HK_SELECT_STATE_NEXT: - name = "SelectStateNext"; keySeq = ""; title = "Select Next State Slot"; + name = "SelectStateNext"; keySeq = ""; title = "Select Next State Slot"; group = "State"; break; case HK_SELECT_STATE_PREV: - name = "SelectStatePrev"; keySeq = ""; title = "Select Previous State Slot"; + name = "SelectStatePrev"; keySeq = ""; title = "Select Previous State Slot"; group = "State"; break; case HK_VOLUME_DOWN: name = "VolumeDown"; keySeq = ""; @@ -324,6 +325,10 @@ int getHotKeyConfig( int i, const char **nameOut, const char **keySeqOut, const } *titleOut = title; } + if ( groupOut ) + { + *groupOut = group; + } return 0; } diff --git a/src/drivers/Qt/config.h b/src/drivers/Qt/config.h index 1faab00b..0bb68e78 100644 --- a/src/drivers/Qt/config.h +++ b/src/drivers/Qt/config.h @@ -60,7 +60,7 @@ enum HOTKEY { HK_FKB_ENABLE, HK_MAX}; -int getHotKeyConfig( int i, const char **nameOut, const char **keySeqOut, const char **titleOut = NULL ); +int getHotKeyConfig( int i, const char **nameOut, const char **keySeqOut, const char **titleOut = NULL, const char **groupOut = NULL ); int getHotKeyIndexByName( const char *name ); diff --git a/src/drivers/Qt/input.cpp b/src/drivers/Qt/input.cpp index 33cd0cd4..2ee910a6 100644 --- a/src/drivers/Qt/input.cpp +++ b/src/drivers/Qt/input.cpp @@ -234,6 +234,7 @@ int hotkey_t::readConfig(void) g_config->getOption(prefix + configName, &keyText); //printf("Config: '%s' = '%s'\n", configName, keyText.c_str() ); + keySeq = QKeySequence( QString::fromStdString(keyText) ); if (shortcut) {