summaryrefslogtreecommitdiffstats
path: root/ksirc/usercontrolmenu.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'ksirc/usercontrolmenu.cpp')
-rw-r--r--ksirc/usercontrolmenu.cpp167
1 files changed, 167 insertions, 0 deletions
diff --git a/ksirc/usercontrolmenu.cpp b/ksirc/usercontrolmenu.cpp
new file mode 100644
index 00000000..ca35e094
--- /dev/null
+++ b/ksirc/usercontrolmenu.cpp
@@ -0,0 +1,167 @@
+#include "usercontrolmenu.h"
+
+#include <kapplication.h>
+#include <kconfig.h>
+#include <klocale.h>
+
+QPtrList<UserControlMenu> UserControlMenu::UserMenu;
+
+UserControlMenu::UserControlMenu(const QString& _title,
+ const QString& _action,
+ int _accel,
+ int _type,
+ bool _op_only)
+{
+ title = _title;
+ action = _action;
+ accel = _accel;
+ type = (itype) _type;
+ op_only = _op_only;
+}
+
+UserControlMenu::~UserControlMenu()
+{
+}
+
+QPtrList<UserControlMenu> *UserControlMenu::parseKConfig()
+{
+
+ // Reset the UserMenu to nothing before we start.
+
+ UserMenu.clear();
+
+ KConfig *kConfig = kapp->config();
+ kConfig->setGroup("UserMenu");
+ int items = kConfig->readNumEntry("Number");
+ if(items == 0){
+
+ // We found nothing, so let's use some defaults.
+
+ UserMenu.setAutoDelete(TRUE);
+ UserMenu.append(new UserControlMenu(i18n("&Refresh Nicks"),
+ "refresh",
+ 0, UserControlMenu::Text));
+ UserMenu.append(new UserControlMenu);
+ UserMenu.append(new UserControlMenu(i18n("&Follow"),
+ "follow $$dest_nick",
+ 0, UserControlMenu::Text));
+ UserMenu.append(new UserControlMenu(i18n("&UnFollow"),
+ "unfollow $$dest_nick",
+ 0, UserControlMenu::Text));
+ UserMenu.append(new UserControlMenu); // Defaults to a separator
+ UserMenu.append(new UserControlMenu(i18n("&Whois"),
+ "/whois $$dest_nick",
+ 0, UserControlMenu::Text));
+ UserMenu.append(new UserControlMenu(i18n("&Ping"),
+ "/ping $$dest_nick",
+ 0, UserControlMenu::Text));
+ UserMenu.append(new UserControlMenu(i18n("V&ersion"),
+ "/ctcp $$dest_nick VERSION",
+ 0, UserControlMenu::Text));
+ UserMenu.append(new UserControlMenu); // Defaults to a separator
+ UserMenu.append(new UserControlMenu(i18n("&Abuse"),
+ "/me slaps $$dest_nick around with a small 50lb Unix Manual",
+ 0, UserControlMenu::Text));
+ UserMenu.append(new UserControlMenu); // Defaults to a separator
+ UserMenu.append(new UserControlMenu(i18n("&Kick"),
+ "/kick $$dest_nick",
+ 0,
+ UserControlMenu::Text,
+ TRUE));
+ UserMenu.append(new UserControlMenu(i18n("&Ban"),
+ "/ban $$dest_nick",
+ 0,
+ UserControlMenu::Text,
+ TRUE));
+ UserMenu.append(new UserControlMenu(i18n("U&nBan"),
+ "/unban $$dest_nick",
+ 0,
+ UserControlMenu::Text,
+ TRUE));
+ UserMenu.append(new UserControlMenu());
+ UserMenu.append(new UserControlMenu(i18n("&Op"),
+ "/op $$dest_nick",
+ 0,
+ UserControlMenu::Text,
+ TRUE));
+ UserMenu.append(new UserControlMenu(i18n("&Deop"),
+ "/deop $$dest_nick",
+ 0,
+ UserControlMenu::Text,
+ TRUE));
+ UserMenu.append(new UserControlMenu());
+ UserMenu.append(new UserControlMenu(i18n("&Voice"),
+ "/mode $$dest_chan +v $$dest_nick",
+ 0,
+ UserControlMenu::Text,
+ TRUE));
+ UserMenu.append(new UserControlMenu(i18n("Devo&ice"),
+ "/mode $$dest_chan -v $$dest_nick",
+ 0,
+ UserControlMenu::Text,
+ TRUE));
+ }
+ else{
+ QString key, cindex, title, action;
+ int accel, type, oponly;
+ for(int i = 0; i < items; i++){
+ cindex.sprintf("%d", i);
+ key = "MenuType-" + cindex;
+ type = kConfig->readNumEntry(key);
+ if(type == UserControlMenu::Seperator)
+ UserMenu.append(new UserControlMenu());
+ else if(type == UserControlMenu::Text){
+ key = "MenuTitle-" + cindex;
+ title = kConfig->readEntry(key);
+ key = "MenuAction-" + cindex;
+ action = kConfig->readEntry(key);
+ key = "MenuAccel-" + cindex;
+ accel = kConfig->readNumEntry(key);
+ key = "MenuOpOnly-" + cindex;
+ oponly = kConfig->readNumEntry(key);
+
+ UserMenu.append(new UserControlMenu(title, action, accel, type, (bool) oponly));
+ }
+ }
+ }
+
+ return &UserMenu;
+
+}
+
+void UserControlMenu::writeKConfig()
+{
+ KConfig *kConfig = kapp->config();
+ kConfig->setGroup("UserMenu");
+
+ int items = (int) UserMenu.count();
+
+ kConfig->writeEntry("Number", items);
+
+ QString key;
+ QString cindex;
+ UserControlMenu *ucm;
+ int type;
+
+ for(int i = 0; i < items; i++){
+ ucm = UserMenu.at(i);
+ cindex.sprintf("%d", i);
+ key = "MenuType-" + cindex;
+ type = ucm->type;
+ kConfig->writeEntry(key, (int) type);
+ // Do nothing for a seperator since it defaults across
+ if(type == UserControlMenu::Text){
+ key = "MenuTitle-" + cindex;
+ kConfig->writeEntry(key, ucm->title);
+ key = "MenuAction-" + cindex;
+ kConfig->writeEntry(key, ucm->action);
+ key = "MenuAccel-" + cindex;
+ kConfig->writeEntry(key, (int) ucm->accel);
+ key = "MenuOpOnly-" + cindex;
+ kConfig->writeEntry(key, (int) ucm->op_only);
+ }
+ }
+ kConfig->sync();
+
+}
+