summaryrefslogtreecommitdiffstats
path: root/konversation/src/nicklistbehavior_preferences.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'konversation/src/nicklistbehavior_preferences.cpp')
-rw-r--r--konversation/src/nicklistbehavior_preferences.cpp108
1 files changed, 108 insertions, 0 deletions
diff --git a/konversation/src/nicklistbehavior_preferences.cpp b/konversation/src/nicklistbehavior_preferences.cpp
new file mode 100644
index 0000000..8bb3bde
--- /dev/null
+++ b/konversation/src/nicklistbehavior_preferences.cpp
@@ -0,0 +1,108 @@
+/*
+ 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.
+*/
+
+/*
+ Copyright (C) 2006 Dario Abatianni <eisfuchs@tigress.com>
+ Copyright (C) 2006 John Tapsell <johnflux@gmail.com>
+ Copyright (C) 2006 Eike Hein <hein@kde.org>
+*/
+
+#include "nicklistbehavior_preferences.h"
+#include "valuelistviewitem.h"
+#include "config/preferences.h"
+
+#include <qheader.h>
+
+#include <kapplication.h>
+#include <klocale.h>
+
+
+NicklistBehavior_Config::NicklistBehavior_Config(QWidget *parent, const char *name)
+ : NicklistBehavior_ConfigUI(parent, name)
+{
+ // get page widget and populate listview
+ loadSettings();
+
+ // make items react to drag & drop
+ sortOrder->setSorting(-1,false);
+ sortOrder->header()->setMovingEnabled(false);
+
+ connect(sortOrder,SIGNAL (moved()),this,SIGNAL (modified()) );
+}
+
+NicklistBehavior_Config::~NicklistBehavior_Config()
+{
+}
+
+void NicklistBehavior_Config::restorePageToDefaults()
+{
+ setNickList(Preferences::defaultNicknameSortingOrder());
+}
+
+void NicklistBehavior_Config::loadSettings()
+{
+ // get sorting order string from preferences
+ setNickList(Preferences::sortOrder());
+ m_oldSortingOrder=currentSortingOrder();
+}
+
+void NicklistBehavior_Config::setNickList(const QString &sortingOrder)
+{
+ sortOrder->clear();
+ // loop through the sorting order string, insert the matching descriptions in reverse order
+ // to keep the correct sorting
+ for(unsigned int index=sortingOrder.length();index!=0;index--)
+ {
+ // get next mode char
+ QChar mode=sortingOrder[index-1];
+ // find appropriate description
+ if(mode=='-') new KListViewItem(sortOrder,mode,i18n("Normal Users"));
+ if(mode=='v') new KListViewItem(sortOrder,mode,i18n("Voice (+v)"));
+ if(mode=='h') new KListViewItem(sortOrder,mode,i18n("Halfops (+h)"));
+ if(mode=='o') new KListViewItem(sortOrder,mode,i18n("Operators (+o)"));
+ if(mode=='p') new KListViewItem(sortOrder,mode,i18n("Channel Admins (+p)"));
+ if(mode=='q') new KListViewItem(sortOrder,mode,i18n("Channel Owners (+q)"));
+ }
+}
+
+QString NicklistBehavior_Config::currentSortingOrder()
+{
+ // get the uppermost entry of the sorting list
+ QListViewItem* item=sortOrder->firstChild();
+ // prepare the new sorting order string
+ QString currentSortingOrder;
+ // iterate through all items of the listview
+ while(item)
+ {
+ // add mode char to the sorting order string
+ currentSortingOrder+=item->text(0);
+ // go to next item in the listview
+ item=item->itemBelow();
+ } // while
+
+ return currentSortingOrder;
+}
+
+// save settings permanently
+void NicklistBehavior_Config::saveSettings()
+{
+ // get the current sorting order
+ QString newSortingOrder=currentSortingOrder();
+
+ // update sorting order on in-memory preferences
+ Preferences::setSortOrder(newSortingOrder);
+
+ // save current sorting order as a reference to hasChanged()
+ m_oldSortingOrder=currentSortingOrder();
+}
+
+bool NicklistBehavior_Config::hasChanged()
+{
+ return(m_oldSortingOrder!=currentSortingOrder());
+}
+
+#include "nicklistbehavior_preferences.moc"