00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #ifndef KXKBCONFIG_H
00013 #define KXKBCONFIG_H
00014
00015 #include <tqstring.h>
00016 #include <tqstringlist.h>
00017 #include <tqptrqueue.h>
00018 #include <tqmap.h>
00019
00020
00021
00022
00023 enum SwitchingPolicy {
00024 SWITCH_POLICY_GLOBAL = 0,
00025 SWITCH_POLICY_WIN_CLASS = 1,
00026 SWITCH_POLICY_WINDOW = 2,
00027 SWITCH_POLICY_COUNT = 3
00028 };
00029
00030
00031
00032 inline TQString createPair(TQString key, TQString value)
00033 {
00034 if( value.isEmpty() )
00035 return key;
00036 return TQString("%1(%2)").arg(key, value);
00037 }
00038
00039 struct LayoutUnit {
00040 TQString layout;
00041 TQString variant;
00042 TQString includeGroup;
00043 TQString displayName;
00044 int defaultGroup;
00045
00046 LayoutUnit() {}
00047
00048 LayoutUnit(TQString layout_, TQString variant_):
00049 layout(layout_),
00050 variant(variant_)
00051 {}
00052
00053 LayoutUnit(TQString pair) {
00054 setFromPair( pair );
00055 }
00056
00057 void setFromPair(const TQString& pair) {
00058 layout = parseLayout(pair);
00059 variant = parseVariant(pair);
00060 }
00061
00062 TQString toPair() const {
00063 return createPair(layout, variant);
00064 }
00065
00066 bool operator<(const LayoutUnit& lu) const {
00067 return layout<lu.layout ||
00068 (layout==lu.layout && variant<lu.variant);
00069 }
00070
00071 bool operator!=(const LayoutUnit& lu) const {
00072 return layout!=lu.layout || variant!=lu.variant;
00073 }
00074
00075 bool operator==(const LayoutUnit& lu) const {
00076
00077 return layout==lu.layout && variant==lu.variant;
00078 }
00079
00080
00081 static const TQString parseLayout(const TQString &layvar);
00082 static const TQString parseVariant(const TQString &layvar);
00083 };
00084
00085 extern const LayoutUnit DEFAULT_LAYOUT_UNIT;
00086 extern const char* DEFAULT_MODEL;
00087
00088
00089 class KxkbConfig
00090 {
00091 public:
00092 enum { LOAD_INIT_OPTIONS, LOAD_ACTIVE_OPTIONS, LOAD_ALL };
00093
00094 bool m_useKxkb;
00095 bool m_showSingle;
00096 bool m_showFlag;
00097 bool m_enableXkbOptions;
00098 bool m_resetOldOptions;
00099 SwitchingPolicy m_switchingPolicy;
00100 bool m_stickySwitching;
00101 int m_stickySwitchingDepth;
00102
00103 TQString m_model;
00104 TQString m_options;
00105 TQValueList<LayoutUnit> m_layouts;
00106
00107 LayoutUnit getDefaultLayout();
00108
00109 bool load(int loadMode);
00110 void save();
00111 void setDefaults();
00112
00113 TQStringList getLayoutStringList();
00114 static TQString getDefaultDisplayName(const TQString& code_);
00115 static TQString getDefaultDisplayName(const LayoutUnit& layoutUnit, bool single=false);
00116
00117 private:
00118 static const TQMap<TQString, TQString> parseIncludesMap(const TQStringList& pairList);
00119 };
00120
00121
00122 #endif