Diffstat (limited to 'inputmethods/multikey/keyboard.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r-- | inputmethods/multikey/keyboard.cpp | 37 |
1 files changed, 13 insertions, 24 deletions
diff --git a/inputmethods/multikey/keyboard.cpp b/inputmethods/multikey/keyboard.cpp index c53ae6c..ac3d9be 100644 --- a/inputmethods/multikey/keyboard.cpp +++ b/inputmethods/multikey/keyboard.cpp @@ -269,50 +269,50 @@ void Keyboard::mousePressEvent(QMouseEvent *e) col --; // rewind one... qkeycode = keys->qcode(row, col); unicode = keys->uni(row, col); // might need to repaint if two or more of the same keys. // should be faster if just paint one key even though multiple keys exist. bool need_repaint = FALSE; if (unicode == 0) { // either Qt char, or nothing if (qkeycode == Qt::Key_F1) { // toggle the pickboard if ( configdlg ) { delete (ConfigDlg *) configdlg; configdlg = 0; } else { configdlg = new ConfigDlg (); connect(configdlg, SIGNAL(pickboardToggled(bool)), this, SLOT(togglePickboard(bool))); connect(configdlg, SIGNAL(setMapToDefault()), this, SLOT(setMapToDefault())); - connect(configdlg, SIGNAL(setMapToFile(int)), - this, SLOT(setMapToFile(int))); + connect(configdlg, SIGNAL(setMapToFile(QString)), + this, SLOT(setMapToFile(QString))); configdlg->showMaximized(); configdlg->show(); configdlg->raise(); } } else if (qkeycode == Qt::Key_Control) { ctrl = keys->pressedPtr(row, col); need_repaint = TRUE; *ctrl = !keys->pressed(row, col); } else if (qkeycode == Qt::Key_Alt) { alt = keys->pressedPtr(row, col); need_repaint = TRUE; *alt = !keys->pressed(row, col); } else if (qkeycode == Qt::Key_Shift) { need_repaint = TRUE; if (shift) { *shift = 0; shift = 0; } else { shift = keys->pressedPtr(row, col); @@ -498,75 +498,72 @@ void Keyboard::togglePickboard(bool on_off) } /* * this closes && opens the input method */ QCopChannel::send ("QPE/TaskBar", "hideInputMethod()"); QCopChannel::send ("QPE/TaskBar", "showInputMethod()"); } /* Keyboard::setMapTo ... {{{1 */ void Keyboard::setMapToDefault() { /* load current locale language map */ Config *config = new Config("locale"); config->setGroup( "Language" ); QString l = config->readEntry( "Language" , "en" ); delete config; QString key_map = QPEApplication::qpeDir() + "/share/multikey/" + l + ".keymap"; /* save change to multikey config file */ config = new Config("multikey"); config->setGroup ("keymaps"); - config->writeEntry ("current", -1); // default closed + config->writeEntry ("current", key_map); // default closed delete config; delete keys; keys = new Keys(key_map); // have to repaint the keyboard repaint(FALSE); } -void Keyboard::setMapToFile(int index) { +void Keyboard::setMapToFile(QString map) { /* save change to multikey config file */ Config *config = new Config("multikey"); config->setGroup ("keymaps"); - config->writeEntry ("current", index); // default closed + config->writeEntry ("current", map); // default closed - - /* now you have to retrieve the map */ - QStringList maps = config->readListEntry("maps", QChar('|')); delete config; delete keys; - if (index < 0 || (int)maps.count() <= index) - keys = new Keys(); + if (QFile(map).exists()) + keys = new Keys(map); else - keys = new Keys(maps[index]); + keys = new Keys(); repaint(FALSE); } /* korean input functions {{{1 * * TODO * one major problem with this implementation is that you can't move the * cursor after inputing korean chars, otherwise it will eat up and replace * the char before the cursor you move to. fix that * * make backspace delete one single char, not the whole thing if still * editing. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * how korean input works * * all following chars means unicode char value and are in hex * * ÃÊÀ½ = schar (start char) * ÁßÀ½ = mchar (middle char) * ³¡À½ = echar (end char) @@ -838,72 +835,64 @@ ushort Keyboard::constoe(const ushort c) { case 0x11b8: return 0x1107; case 0x11ba: return 0x1109; case 0x11bb: return 0x110a; case 0x11bc: return 0x110b; case 0x11bd: return 0x110c; case 0x11be: return 0x110e; case 0x11bf: return 0x110f; case 0x11c0: return 0x1110; case 0x11c1: return 0x1111; case 0x11c2: return 0x1112; default: return 0; } } } // Keys::Keys {{{1 Keys::Keys() { Config *config = new Config ("multikey"); config->setGroup( "keymaps" ); - QStringList maps = config->readListEntry ("maps", QChar('|')); - - int index = config->readNumEntry( "current", -1 ); + QString map = config->readEntry( "current" ); delete config; - QString key_map; - - if (index < 0 || (int)maps.count() <= index) { + if (map.isNull() || !(QFile(map).exists())) { Config *config = new Config("locale"); config->setGroup( "Language" ); QString l = config->readEntry( "Language" , "en" ); delete config; - key_map = QPEApplication::qpeDir() + "/share/multikey/" + map = QPEApplication::qpeDir() + "/share/multikey/" + l + ".keymap"; - } else { - - key_map = maps[index]; - } - + } - setKeysFromFile(key_map); + setKeysFromFile(map); } Keys::Keys(const char * filename) { setKeysFromFile(filename); } // Keys::setKeysFromFile {{{2 void Keys::setKeysFromFile(const char * filename) { QFile f(filename); if (f.open(IO_ReadOnly)) { QTextStream t(&f); int row; int qcode; ushort unicode; int width; QString buf; QString comment; char * xpm[256]; //couldnt be larger than that... could it? QPixmap *xpm2pix = 0; |