summaryrefslogtreecommitdiffstats
path: root/kget/settings.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'kget/settings.cpp')
-rw-r--r--kget/settings.cpp287
1 files changed, 287 insertions, 0 deletions
diff --git a/kget/settings.cpp b/kget/settings.cpp
new file mode 100644
index 00000000..da066a6a
--- /dev/null
+++ b/kget/settings.cpp
@@ -0,0 +1,287 @@
+/***************************************************************************
+* settings.cpp
+* -------------------
+*
+* begin : Tue Jan 29 2002
+* copyright : (C) 2002 by Patrick Charbonnier
+*
+*
+****************************************************************************/
+
+/***************************************************************************
+ *
+ * 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.
+ *
+ ***************************************************************************/
+
+#include <kapplication.h>
+#include <kstandarddirs.h>
+#include <kglobal.h>
+#include <kconfig.h>
+#include <klocale.h>
+#include <kwin.h>
+#include <kmessagebox.h>
+#include <kglobalsettings.h>
+#include <netwm_def.h>
+
+#include <qdir.h>
+
+#include "kmainwidget.h"
+#include "transferlist.h"
+#include "droptarget.h"
+#include "settings.h"
+#include "common.h"
+#include "version.h"
+
+static const unsigned long DEFAULT_DOCK_STATE = (NET::SkipTaskbar | NET::StaysOnTop);
+
+QString ConnectionDevices[6] = {
+ "",
+ "eth",
+ "plip",
+ "slip",
+ "ppp",
+ "isdn"
+ };
+
+
+void
+Settings::load()
+{
+ sDebug << "Loading settings" << endl;
+
+ KConfig *config = kapp->config();
+
+ // read system options
+ config->setGroup("System");
+
+ // read connection options
+ config->setGroup("Connection");
+
+ b_reconnectOnError = config->readBoolEntry("ReconnectOnError", DEF_ReconnectOnError);
+ reconnectTime = config->readNumEntry("ReconnectTime", DEF_ReconnectTime);
+ reconnectRetries = config->readNumEntry("ReconnectRetries", DEF_ReconnectRetries);
+ b_reconnectOnBroken = config->readBoolEntry("ReconnectOnBroken", DEF_ReconnectOnBroken);
+
+ timeoutData = config->readNumEntry("TimeoutData", DEF_TimeoutData);
+ timeoutDataNoResume = config->readNumEntry("TimeoutDataNoResume", DEF_TimeoutDataNoResume);
+
+ connectionType = config->readNumEntry("ConnectionType", DEF_ConnectionType);
+ linkNumber = config->readNumEntry("LinkNumber", DEF_LinkNumber);
+ b_offlineMode = config->readBoolEntry("OfflineMode", DEF_OfflineMode);
+
+ // read automation options
+ config->setGroup("Automation");
+
+ b_autoSave = config->readBoolEntry("AutoSave", DEF_AutoSave);
+ autoSaveInterval = config->readNumEntry("AutoSaveInterval", DEF_AutoSaveInterval);
+
+ b_autoDisconnect = config->readBoolEntry("AutoDisconnect", DEF_AutoDisconnect);
+ disconnectCommand = config->readPathEntry("DisconnectCommand", DEF_DisconnectCommand);
+
+ b_timedDisconnect = config->readBoolEntry("TimedDisconnect", DEF_TimedDisconnect);
+ disconnectTime.setHMS(config->readNumEntry("DisconnectTimeHour"), config->readNumEntry("DisconnectTimeMinute"), 0);
+
+ disconnectDate = QDate::currentDate(); // doesn't make sense to save it
+
+ b_autoShutdown = config->readBoolEntry("AutoShutdown", DEF_AutoShutdown);
+ b_autoPaste = config->readBoolEntry("AutoPaste", DEF_AutoPaste);
+
+ // read limits options
+ config->setGroup("Limits");
+
+ maxSimultaneousConnections = config->readNumEntry("MaxSimConnections", DEF_MaxSimConnections);
+ minimumBandwidth = config->readNumEntry("MinimumBandwidth", DEF_MinimumBandwidth);
+ maximumBandwidth = config->readNumEntry("MaximumBandwidth", DEF_MaximumBandwidth);
+
+ // read advanced options
+ config->setGroup("Advanced");
+
+ b_addQueued = config->readBoolEntry("AddQueued", DEF_AddQueued);
+ b_showMain = config->readBoolEntry("ShowMain", DEF_ShowMain);
+ b_showIndividual = config->readBoolEntry("ShowIndividual", DEF_ShowIndividual);
+ b_iconifyIndividual = config->readBoolEntry("IconifyIndividual", DEF_IconifyIndividual);
+ b_advancedIndividual = config->readBoolEntry("AdvancedIndividual", DEF_AdvancedIndividual);
+
+ b_removeOnSuccess = config->readBoolEntry("RemoveOnSuccess", DEF_RemoveOnSuccess);
+ b_getSizes = config->readBoolEntry("GetSizes", DEF_GetSizes);
+ b_expertMode = config->readBoolEntry("ExpertMode", DEF_ExpertMode);
+
+ // read if the integration whith konqueror is enabled
+
+ KConfig *cfg = new KConfig("konquerorrc", false, false);
+ cfg->setGroup("HTML Settings");
+ QString downloadManager=cfg->readPathEntry("DownloadManager");
+
+ b_KonquerorIntegration=(downloadManager==KGET_APP_NAME)?true:false;
+
+ // check if we already asked about konqueror integration
+ if(config->readBoolEntry("FirstRun",true))
+ {
+ config->writeEntry("FirstRun",false);
+ bool bAnswerYes = KMessageBox::questionYesNo(0L,i18n("This is the first time that you have run KGet.\nDo you want to use KGet as Download Manager for Konqueror?"), i18n("Konqueror Integration"), i18n("Enable"), i18n("Do Not Enable")) == KMessageBox::Yes;
+ if (bAnswerYes)
+ {
+ cfg->writePathEntry("DownloadManager", QString(KGET_APP_NAME));
+ cfg->sync();
+ b_KonquerorIntegration=true;
+ }
+ }
+ delete cfg;
+
+
+ // read search options
+ config->setGroup("Search");
+ b_searchFastest = config->readBoolEntry("SearchFastest", DEF_SearchFastest);
+ searchItems = config->readNumEntry("SearchItems", DEF_SearchItems);
+ timeoutSearch = config->readNumEntry("TimeoutSearch", DEF_TimeoutSearch);
+ b_switchHosts = config->readBoolEntry("SwitchHosts", DEF_SwitchHosts);
+
+ // read directory options
+ config->setGroup("Directories");
+
+ b_useLastDir = config->readBoolEntry("UseLastDirectory", DEF_UseLastDir);
+ lastDirectory = config->readPathEntry("LastDirectory",
+ QString("file:") + QDir::currentDirPath() );
+
+ QStringList strList;
+
+ strList = config->readPathListEntry("Items");
+
+ defaultDirList.clear();
+ QStringList::Iterator it = strList.begin();
+ for (; it != strList.end(); ++it) {
+ DirItem item;
+
+ item.extRegexp = *it;
+ ++it;
+ item.defaultDir = *it;
+ defaultDirList.append(item);
+ }
+
+ // read misc settings
+ config->setGroup("Misc");
+
+ QFont font = KGlobalSettings::generalFont();
+
+ listViewFont = config->readFontEntry("Font", &font);
+
+ // read main window geometry settings
+ config->setGroup("MainGeometry");
+ const QPoint point(-1,-1);
+ mainPosition = config->readPointEntry("Position", &point);
+ mainSize = config->readSizeEntry("Size");
+ mainState = config->readUnsignedLongNumEntry("State", 0);
+
+ // read drop target geometry settings
+ config->setGroup("DropGeometry");
+ dropPosition = config->readPointEntry("Position", &point);
+ dropState = config->readUnsignedLongNumEntry("State", DEFAULT_DOCK_STATE );
+
+ // flushing pending changes
+ config->sync();
+}
+
+
+void Settings::save()
+{
+ sDebug << "Saving settings" << endl;
+
+ KConfig *config = kapp->config();
+
+ // write connection options
+ config->setGroup("Connection");
+ config->writeEntry("ReconnectOnError", b_reconnectOnError);
+ config->writeEntry("ReconnectTime", reconnectTime);
+ config->writeEntry("ReconnectRetries", reconnectRetries);
+ config->writeEntry("ReconnectOnBroken", b_reconnectOnBroken);
+ config->writeEntry("TimeoutData", timeoutData);
+ config->writeEntry("TimeoutDataNoResume", timeoutDataNoResume);
+ config->writeEntry("ConnectionType", connectionType);
+ config->writeEntry("LinkNumber", linkNumber);
+ config->writeEntry("OfflineMode", b_offlineMode);
+
+ // write automation options
+ config->setGroup("Automation");
+ config->writeEntry("AutoSave", b_autoSave);
+ config->writeEntry("AutoSaveInterval", autoSaveInterval);
+ config->writeEntry("AutoDisconnect", b_autoDisconnect);
+ config->writePathEntry("DisconnectCommand", disconnectCommand);
+ config->writeEntry("TimedDisconnect", b_timedDisconnect);
+ config->writeEntry("DisconnectTimeHour", disconnectTime.hour());
+ config->writeEntry("DisconnectTimeMinute", disconnectTime.minute());
+ config->writeEntry("AutoShutdown", b_autoShutdown);
+ config->writeEntry("AutoPaste", b_autoPaste);
+
+ // write limits options
+ config->setGroup("Limits");
+ config->writeEntry("MaxSimConnections", maxSimultaneousConnections);
+ config->writeEntry("MinimumBandwidth", minimumBandwidth);
+ config->writeEntry("MaximumBandwidth", maximumBandwidth);
+
+ // write advanced options
+ config->setGroup("Advanced");
+ config->writeEntry("ShowMain", b_showMain);
+ config->writeEntry("AddQueued", b_addQueued);
+ config->writeEntry("ShowIndividual", b_showIndividual);
+ config->writeEntry("IconifyIndividual", b_iconifyIndividual);
+ config->writeEntry("AdvancedIndividual", b_advancedIndividual);
+ config->writeEntry("RemoveOnSuccess", b_removeOnSuccess);
+ config->writeEntry("GetSizes", b_getSizes);
+ config->writeEntry("ExpertMode", b_expertMode);
+ config->writeEntry("KonquerorIntegration",b_KonquerorIntegration);
+
+
+ // write search options
+ config->setGroup("Search");
+ config->writeEntry("SearchFastest", b_searchFastest);
+ config->writeEntry("SearchItems", searchItems);
+ config->writeEntry("TimeoutSearch", timeoutSearch);
+ config->writeEntry("SwitchHosts", b_switchHosts);
+
+ // write directory options
+ config->setGroup("Directories");
+ config->writeEntry("UseLastDirectory", b_useLastDir);
+ config->writePathEntry("LastDirectory", lastDirectory );
+ DirList::Iterator it;
+ QStringList lst;
+
+ for (it = defaultDirList.begin(); it != defaultDirList.end(); ++it) {
+ lst.append((*it).extRegexp);
+ lst.append((*it).defaultDir);
+ }
+ config->writePathEntry("Items", lst);
+
+ // write system options
+ config->setGroup("System");
+ config->writeEntry("UseAnimation", b_useAnimation);
+
+ // write misc options
+ config->setGroup("Misc");
+ config->writeEntry("Font", listViewFont);
+
+ // write main window geometry properties
+ config->setGroup("MainGeometry");
+ config->writeEntry("Position", kmain->pos());
+ config->writeEntry("Size", kmain->size());
+ config->writeEntry("State", KWin::windowInfo(kmain->winId()).state());
+
+ // write drop target geometry properties
+ config->setGroup("DropGeometry");
+ config->writeEntry("Position", kdrop->pos());
+ unsigned long state = KWin::windowInfo(kdrop->winId()).state();
+ // state will be 0L if droptarget is hidden. Sigh.
+ config->writeEntry("State", state ? state : DEFAULT_DOCK_STATE );
+
+
+ config->sync();
+}