summaryrefslogtreecommitdiffstats
path: root/kxkb/kxkbconfig.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'kxkb/kxkbconfig.cpp')
-rw-r--r--kxkb/kxkbconfig.cpp162
1 files changed, 77 insertions, 85 deletions
diff --git a/kxkb/kxkbconfig.cpp b/kxkb/kxkbconfig.cpp
index 517f0ccdd..0c3dc9e0a 100644
--- a/kxkb/kxkbconfig.cpp
+++ b/kxkb/kxkbconfig.cpp
@@ -1,7 +1,7 @@
//
// C++ Implementation: kxkbconfig
//
-// Description:
+// Description:
//
//
// Author: Andriy Rysin <rysin@kde.org>, (C) 2006
@@ -30,29 +30,16 @@ static const char* switchModes[SWITCH_POLICY_COUNT] = {
const LayoutUnit DEFAULT_LAYOUT_UNIT = LayoutUnit("us", "");
const char* DEFAULT_MODEL = "pc104";
-LayoutUnit KxkbConfig::getDefaultLayout()
-{
- if( m_layouts.size() == 0 )
- return DEFAULT_LAYOUT_UNIT;
-
- return m_layouts[0];
-}
-
-bool KxkbConfig::load(int loadMode)
+bool KxkbConfig::load(int loadMode)
{
TDEConfig *config = new TDEConfig("kxkbrc", true, false);
config->setGroup("Layout");
-// Even if the layouts have been disabled we still want to set Xkb options
-// user can always switch them off now in the "Options" tab
- m_enableXkbOptions = config->readBoolEntry("EnableXkbOptions", false);
-
- if( m_enableXkbOptions == true || loadMode == LOAD_ALL ) {
- m_resetOldOptions = config->readBoolEntry("ResetOldOptions", false);
+ if( loadMode == LOAD_ALL ) {
+ m_resetOldOptions = config->readBoolEntry("ResetOldOptions", true);
m_options = config->readEntry("Options", "");
- kdDebug() << "Xkb options (enabled=" << m_enableXkbOptions << "): " << m_options << endl;
}
-
+
m_useKxkb = config->readBoolEntry("Use", false);
kdDebug() << "Use kxkb " << m_useKxkb << endl;
@@ -62,7 +49,7 @@ bool KxkbConfig::load(int loadMode)
m_model = config->readEntry("Model", DEFAULT_MODEL);
kdDebug() << "Model: " << m_model << endl;
-
+
TQStringList layoutList;
if( config->hasKey("LayoutList") ) {
layoutList = config->readListEntry("LayoutList");
@@ -74,15 +61,15 @@ bool KxkbConfig::load(int loadMode)
}
if( layoutList.count() == 0 )
layoutList.append("us");
-
+
m_layouts.clear();
for(TQStringList::ConstIterator it = layoutList.begin(); it != layoutList.end() ; ++it) {
m_layouts.append( LayoutUnit(*it) );
kdDebug() << " layout " << LayoutUnit(*it).toPair() << " in list: " << m_layouts.contains( LayoutUnit(*it) ) << endl;
}
- kdDebug() << "Found " << m_layouts.count() << " layouts, default is " << getDefaultLayout().toPair() << endl;
-
+ kdDebug() << "Found " << m_layouts.count() << " layouts" << endl;
+
TQStringList displayNamesList = config->readListEntry("DisplayNames", ',');
for(TQStringList::ConstIterator it = displayNamesList.begin(); it != displayNamesList.end() ; ++it) {
TQStringList displayNamePair = TQStringList::split(':', *it );
@@ -94,40 +81,18 @@ bool KxkbConfig::load(int loadMode)
}
}
-// m_includes.clear();
- if( X11Helper::areSingleGroupsSupported() ) {
- if( config->hasKey("IncludeGroups") ) {
- TQStringList includeList = config->readListEntry("IncludeGroups", ',');
- for(TQStringList::ConstIterator it = includeList.begin(); it != includeList.end() ; ++it) {
- TQStringList includePair = TQStringList::split(':', *it );
- if( includePair.count() == 2 ) {
- LayoutUnit layoutUnit( includePair[0] );
- if( m_layouts.contains( layoutUnit ) ) {
- m_layouts[m_layouts.findIndex(layoutUnit)].includeGroup = includePair[1];
- kdDebug() << "Got inc group: " << includePair[0] << ": " << includePair[1] << endl;
- }
- }
- }
- }
- else { //old includes format
- kdDebug() << "Old includes..." << endl;
- TQStringList includeList = config->readListEntry("Includes");
- for(TQStringList::ConstIterator it = includeList.begin(); it != includeList.end() ; ++it) {
- TQString layoutName = LayoutUnit::parseLayout( *it );
- LayoutUnit layoutUnit( layoutName, "" );
- kdDebug() << "old layout for inc: " << layoutUnit.toPair() << " included " << m_layouts.contains( layoutUnit ) << endl;
- if( m_layouts.contains( layoutUnit ) ) {
- TQString variantName = LayoutUnit::parseVariant(*it);
- m_layouts[m_layouts.findIndex(layoutUnit)].includeGroup = variantName;
- kdDebug() << "Got inc group: " << layoutUnit.toPair() << ": " << variantName << endl;
- }
- }
- }
- }
-
m_showSingle = config->readBoolEntry("ShowSingle", false);
m_showFlag = config->readBoolEntry("ShowFlag", true);
-
+ m_showLabel = config->readBoolEntry("ShowLabel", true);
+
+ m_useThemeColors = config->readBoolEntry("UseThemeColors", false);
+ m_colorBackground = config->readColorEntry("ColorBackground", new TQColor(TQt::gray));
+ m_bgTransparent = config->readBoolEntry("BgTransparent", false);
+ m_colorLabel = config->readColorEntry("ColorLabel", new TQColor(TQt::white));
+ m_labelFont = config->readFontEntry("LabelFont", new TQFont("sans", 10, TQFont::Bold));
+ m_labelShadow = config->readBoolEntry("LabelShadow", true);
+ m_colorShadow = config->readColorEntry("ColorShadow", new TQColor(TQt::black));
+
TQString layoutOwner = config->readEntry("SwitchMode", "Global");
if( layoutOwner == "WinClass" ) {
@@ -139,14 +104,14 @@ bool KxkbConfig::load(int loadMode)
else /*if( layoutOwner == "Global" )*/ {
m_switchingPolicy = SWITCH_POLICY_GLOBAL;
}
-
+
if( m_layouts.count() < 2 && m_switchingPolicy != SWITCH_POLICY_GLOBAL ) {
kdWarning() << "Layout count is less than 2, using Global switching policy" << endl;
m_switchingPolicy = SWITCH_POLICY_GLOBAL;
}
-
+
kdDebug() << "Layout owner mode " << layoutOwner << endl;
-
+
m_stickySwitching = config->readBoolEntry("StickySwitching", false);
m_stickySwitchingDepth = config->readEntry("StickySwitchingDepth", "2").toInt();
if( m_stickySwitchingDepth < 2 )
@@ -157,44 +122,41 @@ bool KxkbConfig::load(int loadMode)
kdWarning() << "Layout count is less than 3, sticky switching will be off" << endl;
m_stickySwitching = false;
}
- else
+ else
if( (int)m_layouts.count() - 1 < m_stickySwitchingDepth ) {
kdWarning() << "Sticky switching depth is more than layout count -1, adjusting..." << endl;
m_stickySwitchingDepth = m_layouts.count() - 1;
}
}
+ config->setGroup("Notifications");
+ m_enableNotify = config->readBoolEntry("Enable", false);
+ m_notifyUseKMilo = config->readBoolEntry("UseKMilo", true);
+
delete config;
return true;
}
-void KxkbConfig::save()
+void KxkbConfig::save()
{
TDEConfig *config = new TDEConfig("kxkbrc", false, false);
config->setGroup("Layout");
config->writeEntry("Model", m_model);
- config->writeEntry("EnableXkbOptions", m_enableXkbOptions );
config->writeEntry("ResetOldOptions", m_resetOldOptions);
config->writeEntry("Options", m_options );
TQStringList layoutList;
- TQStringList includeList;
TQStringList displayNamesList;
-
+
TQValueList<LayoutUnit>::ConstIterator it;
for(it = m_layouts.begin(); it != m_layouts.end(); ++it) {
const LayoutUnit& layoutUnit = *it;
-
+
layoutList.append( layoutUnit.toPair() );
-
- if( layoutUnit.includeGroup.isEmpty() == false ) {
- TQString incGroupUnit = TQString("%1:%2").arg(layoutUnit.toPair(), layoutUnit.includeGroup);
- includeList.append( incGroupUnit );
- }
-
+
TQString displayName( layoutUnit.displayName );
kdDebug() << " displayName " << layoutUnit.toPair() << " : " << displayName << endl;
if( displayName.isEmpty() == false && displayName != layoutUnit.layout ) {
@@ -202,13 +164,10 @@ void KxkbConfig::save()
displayNamesList.append( displayName );
}
}
-
+
config->writeEntry("LayoutList", layoutList);
kdDebug() << "Saving Layouts: " << layoutList << endl;
-
- config->writeEntry("IncludeGroups", includeList);
- kdDebug() << "Saving includeGroups: " << includeList << endl;
-
+
// if( displayNamesList.empty() == false )
config->writeEntry("DisplayNames", displayNamesList);
// else
@@ -216,21 +175,35 @@ void KxkbConfig::save()
config->writeEntry("Use", m_useKxkb);
config->writeEntry("ShowSingle", m_showSingle);
+
config->writeEntry("ShowFlag", m_showFlag);
+ config->writeEntry("ShowLabel", m_showLabel);
+
+ config->writeEntry("UseThemeColors", m_useThemeColors);
+ config->writeEntry("ColorBackground", m_colorBackground);
+ config->writeEntry("BgTransparent", m_bgTransparent);
+ config->writeEntry("ColorLabel", m_colorLabel);
+ config->writeEntry("LabelFont", m_labelFont);
+ config->writeEntry("LabelShadow", m_labelShadow);
+ config->writeEntry("ColorShadow", m_colorShadow);
config->writeEntry("SwitchMode", switchModes[m_switchingPolicy]);
-
+
config->writeEntry("StickySwitching", m_stickySwitching);
config->writeEntry("StickySwitchingDepth", m_stickySwitchingDepth);
- // remove old options
+ // remove old options
config->deleteEntry("Variants");
config->deleteEntry("Includes");
config->deleteEntry("Encoding");
config->deleteEntry("AdditionalEncodings");
config->deleteEntry("Additional");
config->deleteEntry("Layout");
-
+
+ config->setGroup("Notifications");
+ config->writeEntry("Enable", m_enableNotify);
+ config->writeEntry("UseKMilo", m_notifyUseKMilo);
+
config->sync();
delete config;
@@ -240,8 +213,7 @@ void KxkbConfig::setDefaults()
{
m_model = DEFAULT_MODEL;
- m_enableXkbOptions = false;
- m_resetOldOptions = false;
+ m_resetOldOptions = true;
m_options = "";
m_layouts.clear();
@@ -252,7 +224,7 @@ void KxkbConfig::setDefaults()
m_showFlag = true;
m_switchingPolicy = SWITCH_POLICY_GLOBAL;
-
+
m_stickySwitching = false;
m_stickySwitchingDepth = 2;
}
@@ -271,7 +243,7 @@ TQStringList KxkbConfig::getLayoutStringList(/*bool compact*/)
TQString KxkbConfig::getDefaultDisplayName(const TQString& code_)
{
TQString displayName;
-
+
if( code_.length() <= 2 ) {
displayName = code_;
}
@@ -281,13 +253,13 @@ TQString KxkbConfig::getDefaultDisplayName(const TQString& code_)
TQString rightCode;
if( sepPos != -1 )
rightCode = code_.mid(sepPos+1);
-
+
if( rightCode.length() > 0 )
displayName = leftCode.left(2) + rightCode.left(1).lower();
else
displayName = leftCode.left(3);
}
-
+
return displayName;
}
@@ -295,13 +267,33 @@ TQString KxkbConfig::getDefaultDisplayName(const LayoutUnit& layoutUnit, bool si
{
if( layoutUnit.variant == "" )
return getDefaultDisplayName( layoutUnit.layout );
-
+
TQString displayName = layoutUnit.layout.left(2);
if( single == false )
displayName += layoutUnit.variant.left(1);
return displayName;
}
+const XkbOptions KxkbConfig::getKXkbOptions() {
+ load(LOAD_ALL);
+
+ XkbOptions options;
+ TQStringList layouts;
+ TQStringList variants;
+ for(TQValueList<LayoutUnit>::ConstIterator it = m_layouts.begin(); it != m_layouts.end(); ++it) {
+ const LayoutUnit& layoutUnit = *it;
+ layouts << layoutUnit.layout;
+ variants << layoutUnit.variant;
+ }
+ options.layouts = layouts.join(",");
+ options.variants = variants.join(",");
+ options.model = m_model;
+ options.options = m_options;
+ kdDebug() << "[getKXkbOptions] options: " << m_options << endl;
+ options.resetOld = m_resetOldOptions;
+ return options;
+}
+
/**
* @brief Gets the single layout part of a layout(variant) string
* @param[in] layvar String in form layout(variant) to parse
@@ -337,4 +329,4 @@ const TQString LayoutUnit::parseVariant(const TQString &layvar)
if( pos < 2 || len < 2 )
return "";
return varLine.mid(pos+1, len-2);
-}
+} \ No newline at end of file