From 229a66f5a955ec71bd5973ac6961cd694692856a Mon Sep 17 00:00:00 2001
From: hash <hash>
Date: Sun, 18 Aug 2002 06:18:18 +0000
Subject: paths to maps are now saved in config dialog

---
diff --git a/inputmethods/multikey/configdlg.cpp b/inputmethods/multikey/configdlg.cpp
index 7bea589..c4f7413 100644
--- a/inputmethods/multikey/configdlg.cpp
+++ b/inputmethods/multikey/configdlg.cpp
@@ -20,12 +20,14 @@
 #include <qsizepolicy.h>
 #include <qpushbutton.h>
 #include <qlistbox.h>
+#include <qstringlist.h>
 #include "configdlg.h"
 #include "keyboard.h"
 
 ConfigDlg::ConfigDlg () : QTabWidget ()
 {
     setCaption( tr("Multikey Configuration") );
+    Config config ("multikey");
 
     /*
      * 'general config' tab
@@ -39,12 +41,24 @@ ConfigDlg::ConfigDlg () : QTabWidget ()
 
     keymaps = new QListBox (map_group);
     keymaps->setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding));
-    //keymaps->setMaximumHeight(150);
 
     QString cur(tr("Current Language"));
     keymaps->insertItem(cur);
+
+    config.setGroup ("keymaps");
+    QStringList maps = config.readListEntry("maps", QChar('|'));
+
+    for (unsigned int i = 0; i < maps.count(); i++) {
+
+        keymaps->insertItem(maps[i]);
+    }
+
+    // have to "+1" because the "current language" listItem... remember?
+    keymaps->setSelected(config.readNumEntry("current", 0) + 1, true);
+
     connect(keymaps, SIGNAL(highlighted(int)), SLOT(setMap(int)));
 
+    /*
     QString ko(QPEApplication::qpeDir() + "/share/multikey/ko.keymap");
     keymaps->insertItem(ko);
 
@@ -53,6 +67,7 @@ ConfigDlg::ConfigDlg () : QTabWidget ()
 
     QString de(QPEApplication::qpeDir() + "/share/multikey/de.keymap");
     keymaps->insertItem(de);
+    */
 
     QGrid *add_remove_grid = new QGrid(2, map_group);
     add_remove_grid->setMargin(3);
@@ -66,7 +81,6 @@ ConfigDlg::ConfigDlg () : QTabWidget ()
 
     pick_button = new QCheckBox(tr("Pickboard"), gen_box);
 
-    Config config ("multikey");
     config.setGroup ("pickboard");
     bool pick_open = config.readBoolEntry ("open", "0"); // default closed
     if (pick_open) {
@@ -116,6 +130,15 @@ void ConfigDlg::pickTog() {
     emit pickboardToggled(pick_button->isChecked());
 }
 
+/* 
+ * the index is kinda screwy, because in the config file, index 0 is just the
+ * first element in the QStringList, but here it's the "Current Language"
+ * listItem. therefor you have to minus one to the index before you access
+ * it from the config file. 
+ *
+ * and later on, the "current language" setting should be -1 in the config file
+ */
+
 void ConfigDlg::setMap(int index) {
 
     if (index == 0) {
@@ -130,7 +153,7 @@ void ConfigDlg::setMap(int index) {
         if (!remove_button->isEnabled()) 
             remove_button->setEnabled(true);
 
-        emit setMapToFile(keymaps->text(index));
+        emit setMapToFile(index - 1);
     }
 }
 
diff --git a/inputmethods/multikey/configdlg.h b/inputmethods/multikey/configdlg.h
index 1a64764..03a3547 100644
--- a/inputmethods/multikey/configdlg.h
+++ b/inputmethods/multikey/configdlg.h
@@ -17,7 +17,7 @@ public:
 signals:
     void pickboardToggled(bool on_off);
     void setMapToDefault();
-    void setMapToFile(QString file);
+    void setMapToFile(int index);
 
 private slots:
     void pickTog();
diff --git a/inputmethods/multikey/keyboard.cpp b/inputmethods/multikey/keyboard.cpp
index 671868c..c53ae6c 100644
--- a/inputmethods/multikey/keyboard.cpp
+++ b/inputmethods/multikey/keyboard.cpp
@@ -33,6 +33,8 @@
 #include <ctype.h>
 #include <qfile.h>
 #include <qtextstream.h>
+#include <qstringlist.h>
+#include <iostream.h>
 
 #include <sys/utsname.h>
 
@@ -288,8 +290,8 @@ void Keyboard::mousePressEvent(QMouseEvent *e)
                        this, SLOT(togglePickboard(bool)));
                connect(configdlg, SIGNAL(setMapToDefault()), 
                        this, SLOT(setMapToDefault()));
-               connect(configdlg, SIGNAL(setMapToFile(QString)), 
-                       this, SLOT(setMapToFile(QString)));
+               connect(configdlg, SIGNAL(setMapToFile(int)), 
+                       this, SLOT(setMapToFile(int)));
                configdlg->showMaximized();
                configdlg->show();
                configdlg->raise();
@@ -517,7 +519,7 @@ void Keyboard::setMapToDefault() {
     /* save change to multikey config file */
     config = new Config("multikey");
     config->setGroup ("keymaps");
-    config->writeEntry ("current", key_map); // default closed
+    config->writeEntry ("current", -1); // default closed
     delete config;
 
     delete keys;
@@ -527,16 +529,24 @@ void Keyboard::setMapToDefault() {
     repaint(FALSE);
 }
 
-void Keyboard::setMapToFile(QString file) {
+void Keyboard::setMapToFile(int index) {
 
     /* save change to multikey config file */
     Config *config = new Config("multikey");
     config->setGroup ("keymaps");
-    config->writeEntry ("current", file); // default closed
+    config->writeEntry ("current", index); // default closed
+
+
+    /* now you have to retrieve the map */
+    QStringList maps = config->readListEntry("maps", QChar('|'));
     delete config;
 
     delete keys;
-    keys = new Keys(file);
+    if (index < 0 || (int)maps.count() <= index) 
+        keys = new Keys();
+    else 
+        keys = new Keys(maps[index]);
+
     repaint(FALSE);
 
 }
@@ -849,10 +859,14 @@ Keys::Keys() {
 
     Config *config = new Config ("multikey");
     config->setGroup( "keymaps" );
-    QString key_map = config->readEntry( "current" );
+    QStringList maps = config->readListEntry ("maps", QChar('|'));
+
+    int index = config->readNumEntry( "current", -1 );
     delete config;
 
-    if (key_map.isNull()) {
+    QString key_map;
+
+    if (index < 0 || (int)maps.count() <= index) {
 
         Config *config = new Config("locale");
         config->setGroup( "Language" );
@@ -862,6 +876,9 @@ Keys::Keys() {
         key_map = QPEApplication::qpeDir() + "/share/multikey/" 
                 + l + ".keymap";
 
+    } else {
+
+        key_map = maps[index];
     }
 
 
diff --git a/inputmethods/multikey/keyboard.h b/inputmethods/multikey/keyboard.h
index 400edc0..7a8d4b4 100644
--- a/inputmethods/multikey/keyboard.h
+++ b/inputmethods/multikey/keyboard.h
@@ -113,7 +113,7 @@ private slots:
     void repeat();
     void togglePickboard(bool on_off);
     void setMapToDefault();
-    void setMapToFile(QString file);
+    void setMapToFile(int index);
     
 private:
     int getKey( int &w, int j = -1 );
--
cgit v0.9.0.2