author | hash <hash> | 2002-08-27 01:47:36 (UTC) |
---|---|---|
committer | hash <hash> | 2002-08-27 01:47:36 (UTC) |
commit | 6aa0fb1ced890c21cd1ad4a3bab17b843c40164b (patch) (side-by-side diff) | |
tree | fafb48427af1b54fc55cc4a064cfc0f6eb95e454 | |
parent | f7d9d8697c2971b7f512ade7625dfff30d0043d0 (diff) | |
download | opie-6aa0fb1ced890c21cd1ad4a3bab17b843c40164b.zip opie-6aa0fb1ced890c21cd1ad4a3bab17b843c40164b.tar.gz opie-6aa0fb1ced890c21cd1ad4a3bab17b843c40164b.tar.bz2 |
now shows whatever you wrote in the keymap 'title' var as the listItem
-rw-r--r-- | inputmethods/multikey/configdlg.cpp | 56 | ||||
-rw-r--r-- | inputmethods/multikey/keyboard.cpp | 3 |
2 files changed, 46 insertions, 13 deletions
diff --git a/inputmethods/multikey/configdlg.cpp b/inputmethods/multikey/configdlg.cpp index 10bc611..c5ebe3c 100644 --- a/inputmethods/multikey/configdlg.cpp +++ b/inputmethods/multikey/configdlg.cpp @@ -1,28 +1,26 @@ /* * TODO * make a font selection thing (size too) * make a cursor thing * add meta key support for german, etc * * * */ -#include <iostream.h> - #include <qpe/qpeapplication.h> #include <qpe/config.h> #include <qwidget.h> #include <qdialog.h> #include <qtabwidget.h> #include <qvbox.h> #include <qgrid.h> #include <qgroupbox.h> #include <qlabel.h> #include <qcheckbox.h> #include <qsizepolicy.h> #include <qpushbutton.h> #include <qlistbox.h> #include <qstringlist.h> #include <opie/ofiledialog.h> @@ -47,58 +45,96 @@ ConfigDlg::ConfigDlg () : QTabWidget () QVBox *gen_box = new QVBox (this); gen_box->setMargin(3); addTab(gen_box, tr("General Settings")); QGroupBox *map_group = new QGroupBox (2, Qt::Vertical, tr("Keymap File"), gen_box); keymaps = new QListBox (map_group); keymaps->setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding)); QString cur(tr("Current Language")); keymaps->insertItem(cur); keymaps->setSelected(0, true); QDir map_dir(QPEApplication::qpeDir() + "/share/multikey", "*.keymap"); default_maps = map_dir.entryList(); // so i can access it in other places - for (uint i = 0; i <map_dir.count(); i++) { + for (uint i = 0; i < map_dir.count(); i++) { + + QFile map (map_dir.absPath() + "/" + map_dir[i]); + if (map.open(IO_ReadOnly)) { + + QString line; bool found = 0; + + map.readLine(line, 1024); + while (!map.atEnd()) { - keymaps->insertItem(map_dir.absPath() + "/" + map_dir[i]); + if (line.find(QRegExp("^title\\s*=\\s*")) != -1) { + + keymaps->insertItem(line.right(line.length() - line.find(QChar('=')) - 1).stripWhiteSpace()); + found = 1; + break; + } + map.readLine(line, 1024); + } + if (!found) keymaps->insertItem(map_dir.absPath() + "/" + map_dir[i]); + + map.close(); + } if (map_dir.absPath() + "/" + map_dir[i] == current_map) { keymaps->setSelected(i + 1, true); } } custom_maps = config.readListEntry("maps", QChar('|')); for (uint i = 0; i < custom_maps.count(); i++) { if (map_dir.exists(QFileInfo(custom_maps[i]).fileName(), false) || !QFile::exists(custom_maps[i])) { custom_maps.remove(custom_maps.at(i)); // remove it from the list too config.writeEntry("maps", custom_maps.join("|")); } else { - keymaps->insertItem(custom_maps[i]); + QFile map (custom_maps[i]); + if (map.open(IO_ReadOnly)) { + + QString line; bool found = 0; + + map.readLine(line, 1024); + while (!map.atEnd()) { + + if (line.find(QRegExp("^title\\s*=\\s*")) != -1) { + + keymaps->insertItem(line.right(line.length() - line.find(QChar('=')) - 1).stripWhiteSpace()); + found = 1; + break; + } + map.readLine(line, 1024); + } + if (!found) keymaps->insertItem(custom_maps[i]); + + map.close(); + } if (custom_maps[i] == current_map) { keymaps->setSelected(map_dir.count() + i + 1, true); } } } // have to "+1" because the "current language" listItem... remember? connect(keymaps, SIGNAL(highlighted(int)), SLOT(setMap(int))); QGrid *add_remove_grid = new QGrid(2, map_group); add_remove_grid->setMargin(3); add_remove_grid->setSpacing(3); @@ -219,73 +255,71 @@ void ConfigDlg::repeatTog() { * 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. * */ void ConfigDlg::setMap(int index) { if (index == 0) { remove_button->setDisabled(true); emit setMapToDefault(); } else if ((uint)index <= default_maps.count()) { remove_button->setDisabled(true); - emit setMapToFile(keymaps->text(index)); + emit setMapToFile(QPEApplication::qpeDir() + "/share/multikey/" + default_maps[index - 1]); } else { remove_button->setEnabled(true); - emit setMapToFile(keymaps->text(index)); + emit setMapToFile(custom_maps[index - default_maps.count() - 1]); } } // ConfigDlg::addMap() {{{1 void ConfigDlg::addMap() { QString map = OFileDialog::getOpenFileName(1, QDir::home().absPath()); if (map.isNull()) return; Config config ("multikey"); config.setGroup("keymaps"); QStringList maps = config.readListEntry("maps", QChar('|')); maps.append(map); + custom_maps.append(map); keymaps->insertItem(map); keymaps->setSelected(keymaps->count() - 1, true); config.writeEntry("maps", maps, QChar('|')); config.writeEntry("current", map); } // ConfigDlg::removeMap() {{{1 void ConfigDlg::removeMap() { - cout << "removing : " << custom_maps[keymaps->currentItem() - default_maps.count() - 1] << "\n"; - cout << "currentItem : " << keymaps->currentItem() << "\n"; - // move selection up one keymaps->setSelected(keymaps->currentItem() - 1, true); // delete the next selected item cus you just moved it up keymaps->removeItem(keymaps->currentItem() + 1); - custom_maps.remove(custom_maps[keymaps->currentItem() - default_maps.count()]); + custom_maps.remove(custom_maps.at(keymaps->currentItem() - default_maps.count())); // write the changes Config config ("multikey"); config.setGroup("keymaps"); config.writeEntry("maps", custom_maps, QChar('|')); } /* ConfigDlg::slots for the color buttons {{{1 * * these four slots are almost the same, except for the names. i was thinking * of making a map with pointers to the buttons and names of the configEntry * so it could be one slot, but then there would be no way of telling which * of the buttons was clicked if they all connect to the same slot. * */ diff --git a/inputmethods/multikey/keyboard.cpp b/inputmethods/multikey/keyboard.cpp index 3f6f73b..c3ee8f3 100644 --- a/inputmethods/multikey/keyboard.cpp +++ b/inputmethods/multikey/keyboard.cpp @@ -21,33 +21,32 @@ #include "keyboard.h" #include "configdlg.h" #include <qpe/global.h> #include <qpe/qcopenvelope_qws.h> #include <qwindowsystem_qws.h> #include <qpainter.h> #include <qfontmetrics.h> #include <qtimer.h> #include <qpe/qpeapplication.h> #include <qpe/config.h> #include <ctype.h> #include <qfile.h> #include <qtextstream.h> #include <qstringlist.h> -#include <iostream.h> #include <sys/utsname.h> /* Keyboard::Keyboard {{{1 */ Keyboard::Keyboard(QWidget* parent, const char* _name, WFlags f) : QFrame(parent, _name, f), shift(0), lock(0), ctrl(0), alt(0), meta(0), useLargeKeys(TRUE), usePicks(0), useRepeat(0), pressedKeyRow(-1), pressedKeyCol(-1), unicode(-1), qkeycode(0), modifiers(0), schar(0), mchar(0), echar(0), configdlg(0) { // get the default font Config *config = new Config( "qpe" ); config->setGroup( "Appearance" ); @@ -589,33 +588,33 @@ void Keyboard::togglePickboard(bool on_off) //move(x(), y() + picks->height()); //adjustSize(); QObject::disconnect( picks, SIGNAL(key(ushort,ushort,ushort,bool,bool) ), this, SIGNAL(key(ushort,ushort,ushort,bool,bool)) ); } /* * this closes && opens the input method */ QCopChannel::send ("QPE/TaskBar", "hideInputMethod()"); QCopChannel::send ("QPE/TaskBar", "showInputMethod()"); } void Keyboard::toggleRepeat(bool on) { useRepeat = on; - cout << "setting useRepeat to: " << useRepeat << "\n"; + //cout << "setting useRepeat to: " << useRepeat << "\n"; } /* 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 */ |