summaryrefslogtreecommitdiffstats
path: root/kcontrol/kicker/extensionInfo.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'kcontrol/kicker/extensionInfo.cpp')
-rw-r--r--kcontrol/kicker/extensionInfo.cpp259
1 files changed, 259 insertions, 0 deletions
diff --git a/kcontrol/kicker/extensionInfo.cpp b/kcontrol/kicker/extensionInfo.cpp
new file mode 100644
index 000000000..54ce23937
--- /dev/null
+++ b/kcontrol/kicker/extensionInfo.cpp
@@ -0,0 +1,259 @@
+/*
+ * Copyright (c) 2001 John Firebaugh <jfirebaugh@kde.org>
+ * Copyright (c) 2002 Aaron J. Seigo <aseigo@olympusproject.org>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ */
+
+#include <qapplication.h>
+
+#include <kdebug.h>
+#include <kdesktopfile.h>
+#include <klocale.h>
+
+#include "extensionInfo.h"
+
+
+ExtensionInfo::ExtensionInfo(const QString& desktopFile,
+ const QString& configFile,
+ const QString& configPath)
+ : _configFile(configFile),
+ _configPath(configPath),
+ _desktopFile(desktopFile)
+{
+ load();
+}
+
+void ExtensionInfo::load()
+{
+ setDefaults();
+
+ kdDebug() << "loading defaults for " << _desktopFile << endl;
+ if (_desktopFile.isNull())
+ {
+ _name = i18n("Main Panel");
+ _resizeable = true;
+ _useStdSizes = true;
+ _customSizeMin = 24;
+ _customSizeMax = 256;
+ _customSize = 56;
+ _showLeftHB = false;
+ _showRightHB = true;
+ for (int i=0;i<4;i++) _allowedPosition[i]=true;
+ }
+ else
+ {
+ KDesktopFile df(_desktopFile);
+ _name = df.readName();
+ _resizeable = df.readBoolEntry("X-KDE-PanelExt-Resizeable", _resizeable);
+
+ if (_resizeable)
+ {
+ _useStdSizes = df.readBoolEntry("X-KDE-PanelExt-StdSizes", _useStdSizes);
+ _size = df.readNumEntry("X-KDE-PanelExt-StdSizeDefault", _size);
+ _customSizeMin = df.readNumEntry("X-KDE-PanelExt-CustomSizeMin", _customSizeMin);
+ _customSizeMax = df.readNumEntry("X-KDE-PanelExt-CustomSizeMax", _customSizeMax);
+ _customSize = df.readNumEntry("X-KDE-PanelExt-CustomSizeDefault", _customSize);
+ }
+
+ for (int i = 0; i < 4; i++)
+ {
+ _allowedPosition[i]=false;
+ }
+
+ kdDebug()<<"BEFORE X-KDE-PanelExt-Positions parsing"<<endl;
+ QStringList allowedPos;
+ allowedPos << "BOTTOM" << "TOP" << "LEFT" << "RIGHT" << "BOTTOM";
+ allowedPos= df.readListEntry("X-KDE-PanelExt-Positions", allowedPos);
+
+ for (unsigned int i=0;i<allowedPos.count();i++)
+ {
+ QString pos = allowedPos[i].upper();
+ kdDebug() << pos << endl;
+ if (pos == "LEFT")
+ {
+ if (i == 0)
+ {
+ _position = KPanelExtension::Left;
+ }
+ _allowedPosition[KPanelExtension::Left] = true;
+ }
+ else if (pos == "RIGHT")
+ {
+ if (i == 0)
+ {
+ _position = KPanelExtension::Right;
+ }
+ _allowedPosition[KPanelExtension::Right]=true;
+ }
+ else if (pos =="TOP")
+ {
+ if (i == 0)
+ {
+ _position = KPanelExtension::Top;
+ }
+ _allowedPosition[KPanelExtension::Top]=true;
+ }
+ else if (pos == "BOTTOM")
+ {
+ if (i == 0)
+ {
+ _position = KPanelExtension::Bottom;
+ }
+ _allowedPosition[KPanelExtension::Bottom]=true;
+ }
+ }
+ }
+
+ // sanitize
+ if (_customSizeMin < 0) _customSizeMin = 0;
+ if (_customSizeMax < _customSizeMin) _customSizeMax = _customSizeMin;
+ if (_customSize < _customSizeMin) _customSize = _customSizeMin;
+
+ KConfig c(_configFile);
+ c.setGroup("General");
+
+ _position = c.readNumEntry ("Position", _position);
+ _alignment = c.readNumEntry ("Alignment", _alignment);
+ _xineramaScreen = c.readNumEntry ("XineramaScreen", _xineramaScreen);
+ _showLeftHB = c.readBoolEntry("ShowLeftHideButton", _showLeftHB);
+ _showRightHB = c.readBoolEntry("ShowRightHideButton", _showRightHB);
+ _hideButtonSize = c.readNumEntry ("HideButtonSize", _hideButtonSize);
+ _autohidePanel = c.readBoolEntry("AutoHidePanel", _autohidePanel);
+ _backgroundHide = c.readBoolEntry("BackgroundHide", _backgroundHide);
+ _autoHideSwitch = c.readBoolEntry("AutoHideSwitch", _autoHideSwitch);
+ _autoHideDelay = c.readNumEntry ("AutoHideDelay", _autoHideDelay);
+ _hideAnim = c.readBoolEntry("HideAnimation", _hideAnim);
+ _hideAnimSpeed = c.readNumEntry ("HideAnimationSpeed", _hideAnimSpeed);
+ _unhideLocation = c.readNumEntry ("UnhideLocation", _unhideLocation);
+ _sizePercentage = c.readNumEntry ("SizePercentage", _sizePercentage);
+ _expandSize = c.readBoolEntry("ExpandSize", _expandSize);
+
+ if (_resizeable)
+ {
+ _size = c.readNumEntry ("Size", _size);
+ _customSize = c.readNumEntry ("CustomSize", _customSize);
+ }
+
+ _orig_position = _position;
+ _orig_alignment = _alignment;
+ _orig_size = _size;
+ _orig_customSize = _customSize;
+
+ // sanitize
+ if (_sizePercentage < 1) _sizePercentage = 1;
+ if (_sizePercentage > 100) _sizePercentage = 100;
+}
+
+void ExtensionInfo::configChanged()
+{
+ KConfig c(_configFile);
+ c.setGroup("General");
+
+ // check to see if the new value is different from both
+ // the original value and the currently set value, then it
+ // must be a newly set value, external to the panel!
+ int position = c.readNumEntry ("Position", 3);
+ if (position != _position && position != _orig_position)
+ {
+ _orig_position = _position = position;
+ }
+
+ int alignment = c.readNumEntry ("Alignment", QApplication::reverseLayout() ? 2 : 0);
+ if (alignment != _alignment && alignment != _orig_alignment)
+ {
+ _orig_alignment = _alignment = alignment;
+ }
+
+ if (_resizeable)
+ {
+ int size = c.readNumEntry ("Size", 2);
+ if (size != _size && size != _orig_size)
+ {
+ _orig_size = _size = size;
+ }
+
+ int customSize = c.readNumEntry ("CustomSize", 0);
+ if (customSize != _customSize && customSize != _orig_customSize)
+ {
+ _orig_customSize = _customSize = customSize;
+ }
+
+ }
+}
+
+void ExtensionInfo::setDefaults()
+{
+ // defaults
+ _position = 3;
+ _alignment = QApplication::reverseLayout() ? 2 : 0;
+ _xineramaScreen = QApplication::desktop()->primaryScreen();
+ _size = 2;
+ _showLeftHB = false;
+ _showRightHB = true;
+ _hideButtonSize = 14;
+ _autohidePanel = false;
+ _backgroundHide = false;
+ _autoHideSwitch = false;
+ _autoHideDelay = 3;
+ _hideAnim = true;
+ _hideAnimSpeed = 40;
+ _unhideLocation = 0;
+ _sizePercentage = 100;
+ _expandSize = true;
+ _customSize = 0;
+ _resizeable = false;
+ _useStdSizes = false;
+ _customSizeMin = 0;
+ _customSizeMax = 0;
+}
+
+void ExtensionInfo::save()
+{
+ KConfig c(_configFile);
+ c.setGroup("General");
+
+ c.writeEntry("Position", _position);
+ c.writeEntry("Alignment", _alignment);
+ c.writeEntry("XineramaScreen", _xineramaScreen);
+ c.writeEntry("ShowLeftHideButton", _showLeftHB);
+ c.writeEntry("ShowRightHideButton", _showRightHB);
+ c.writeEntry("AutoHidePanel", _autohidePanel);
+ c.writeEntry("BackgroundHide", _backgroundHide);
+ c.writeEntry("AutoHideSwitch", _autoHideSwitch);
+ c.writeEntry("AutoHideDelay", _autoHideDelay);
+ c.writeEntry("HideAnimation", _hideAnim);
+ c.writeEntry("HideAnimationSpeed", _hideAnimSpeed);
+ c.writeEntry("UnhideLocation", _unhideLocation);
+ c.writeEntry("SizePercentage", _sizePercentage );
+ c.writeEntry("ExpandSize", _expandSize );
+
+ // FIXME: this is set only for the main panel and only in the
+ // look 'n feel (aka appearance) tab. so we can't save it here
+ // this should be implemented properly. - AJS
+ //c.writeEntry("HideButtonSize", _hideButtonSize);
+
+ if (_resizeable)
+ {
+ c.writeEntry("Size", _size);
+ c.writeEntry("CustomSize", _customSize);
+ }
+
+ _orig_position = _position;
+ _orig_alignment = _alignment;
+ _orig_size = _size;
+ _orig_customSize = _customSize;
+
+ c.sync();
+}