1 /* 2 SPDX-FileCopyrightText: 1997 Patrick Dowler <dowler@morgul.fsh.uvic.ca> 3 4 SPDX-License-Identifier: GPL-2.0-or-later 5 */ 6 7 #ifndef __KCMMISC_H__ 8 #define __KCMMISC_H__ 9 10 #include <QMap> 11 #include <QString> 12 #include <QWidget> 13 14 class QButtonGroup; 15 class Ui_KeyboardConfigWidget; 16 17 const int DEFAULT_REPEAT_DELAY = 600; 18 const double DEFAULT_REPEAT_RATE = 25.0; 19 20 enum KeyBehaviour { 21 AccentMenu = 0, 22 RepeatKey = 1, 23 DoNothing = 2, 24 }; 25 26 const QMap<KeyBehaviour, QString> keybehaviourNames = { 27 {AccentMenu, QStringLiteral("accent")}, 28 {RepeatKey, QStringLiteral("repeat")}, 29 {DoNothing, QStringLiteral("nothing")}, 30 }; 31 32 enum TriState { 33 STATE_ON = 0, 34 STATE_OFF = 1, 35 STATE_UNCHANGED = 2, 36 }; 37 38 class TriStateHelper 39 { 40 public: 41 static void setTriState(QButtonGroup *group, TriState state); 42 static TriState getTriState(const QButtonGroup *group); 43 getTriState(int state)44 static TriState getTriState(int state) 45 { 46 return static_cast<TriState>(state); 47 } getInt(TriState state)48 static int getInt(TriState state) 49 { 50 return static_cast<int>(state); 51 } getString(TriState state)52 static const char *getString(TriState state) 53 { 54 return state == STATE_ON ? "0" : state == STATE_OFF ? "1" : "2"; 55 } 56 }; 57 58 class KCMiscKeyboardWidget : public QWidget 59 { 60 Q_OBJECT 61 public: 62 KCMiscKeyboardWidget(QWidget *parent); 63 ~KCMiscKeyboardWidget() override; 64 65 void save(); 66 void load(); 67 void defaults(); 68 69 QString quickHelp() const; 70 71 private Q_SLOTS: 72 void changed(); 73 74 void delaySliderChanged(int value); 75 void delaySpinboxChanged(int value); 76 void rateSliderChanged(int value); 77 void rateSpinboxChanged(double value); 78 void keyboardRepeatStateChanged(int selection); 79 80 Q_SIGNALS: 81 void changed(bool state); 82 83 private: 84 void setRepeat(KeyBehaviour flag, int delay, double rate); 85 86 int sliderMax; 87 int clickVolume; 88 KeyBehaviour keyboardRepeat; 89 enum TriState numlockState; 90 91 QButtonGroup *_numlockButtonGroup; 92 QButtonGroup *_keyboardRepeatButtonGroup; 93 Ui_KeyboardConfigWidget &ui; 94 }; 95 96 #endif 97