summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--inputmethods/multikey/configdlg.cpp18
-rw-r--r--inputmethods/multikey/configdlg.h2
2 files changed, 13 insertions, 7 deletions
diff --git a/inputmethods/multikey/configdlg.cpp b/inputmethods/multikey/configdlg.cpp
index 52c498b..24fdb7f 100644
--- a/inputmethods/multikey/configdlg.cpp
+++ b/inputmethods/multikey/configdlg.cpp
@@ -38,165 +38,167 @@ using namespace Opie;
using namespace Opie::Ui;
// ConfigDlg::ConfigDlg() {{{1
ConfigDlg::ConfigDlg () : QDialog ()
{
setCaption( tr("Multikey Configuration") );
Config config ("multikey");
config.setGroup("keymaps");
QString current_map = config.readEntry("current", 0);
/*
* 'general config' tab
*/
QVBoxLayout *base_lay = new QVBoxLayout(this);
QTabWidget *tabs = new QTabWidget(this, "tabs");
QWidget *gen_box = new QWidget(tabs, "gen_tab");
QVBoxLayout *gen_lay = new QVBoxLayout(gen_box);
gen_lay->setMargin(3);
QGroupBox *map_group = new QGroupBox (2, Qt::Vertical, tr("Keymap File"), gen_box);
QHBox *hbox1 = new QHBox(map_group);
keymaps = new QListBox(hbox1);
keymaps->setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding));
QVBox *vbox1 = new QVBox(hbox1);
QToolButton *tb1 = new QToolButton(vbox1, tr("Move Up"));
tb1->setUsesBigPixmap( qApp->desktop()->size().width() > 330 );
tb1->setPixmap(Opie::Core::OResource::loadPixmap("up", Opie::Core::OResource::SmallIcon));
tb1->setAutoRaise(TRUE);
tb1->setFocusPolicy(QWidget::NoFocus);
tb1->setToggleButton(FALSE);
connect(tb1, SIGNAL(clicked()), this, SLOT(moveSelectedUp()));
QToolButton *tb2 = new QToolButton(vbox1, tr("Move Down"));
tb2->setUsesBigPixmap( qApp->desktop()->size().width() > 330 );
tb2->setPixmap(Opie::Core::OResource::loadPixmap("down", Opie::Core::OResource::SmallIcon));
tb2->setAutoRaise(TRUE);
tb2->setFocusPolicy(QWidget::NoFocus);
tb2->setToggleButton(FALSE);
connect(tb2, SIGNAL(clicked()), this, SLOT(moveSelectedDown()));
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
+ default_maps = map_dir.entryList(); // so the object can access keymaps in other places
custom_maps = config.readListEntry("maps", QChar('|'));
sw_maps = ConfigDlg::loadSw();
QStringList sw_copy(sw_maps);
for (uint i = 0; i < sw_copy.count(); i++) {
QString keymap_map;
if (sw_copy[i][0] != '/') { /* share/multikey */
keymap_map = map_dir.absPath() + "/" + sw_copy[i];
} else {
if (map_dir.exists(QFileInfo(sw_copy[i]).fileName(), false)
|| !QFile::exists(sw_copy[i])) {
custom_maps.remove(sw_copy[i]);
sw_maps.remove(sw_copy[i]);
// remove it from the list too
config.writeEntry("maps", custom_maps.join("|"));
continue;
}
keymap_map = sw_copy[i];
}
QFile map(keymap_map);
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(keymap_map);
map.close();
}
if (keymap_map == current_map) {
keymaps->setSelected(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);
- add_button = new QPushButton(tr("Add"), add_remove_grid);
+ add_button = new QPushButton(tr("Add keymap..."), add_remove_grid);
add_button->setFlat(TRUE);
connect(add_button, SIGNAL(clicked()), SLOT(addMap()));
- remove_button = new QPushButton(tr("Remove"), add_remove_grid);
+ remove_button = new QPushButton(tr("Remove keymap"), add_remove_grid);
remove_button->setFlat(TRUE);
- if (keymaps->currentItem() == 0 || default_maps.find(QFileInfo(current_map).fileName()) != default_maps.end())
- remove_button->setDisabled(true);
+ if (keymaps->currentItem() == 0 || default_maps.find(QFileInfo(current_map).fileName()) != default_maps.end()) {
+ remove_button->setDisabled(true);
+ remove_button->hide();
+ }
connect(remove_button, SIGNAL(clicked()), SLOT(removeMap()));
gen_lay->addWidget(map_group);
// make a box that will contain the buttons on the bottom
QGrid *other_grid = new QGrid(2, gen_box);
pick_button = new QCheckBox(tr("Pickboard"), other_grid);
config.setGroup ("general");
bool pick_open = config.readBoolEntry ("usePickboard", FALSE); // default closed
if (pick_open) {
pick_button->setChecked(true);
}
repeat_button = new QCheckBox(tr("Key Repeat"), other_grid);
bool repeat_on = config.readBoolEntry ("useRepeat", TRUE);
if (repeat_on) {
repeat_button->setChecked(true);
}
gen_lay->addWidget(other_grid);
tabs->addTab(gen_box, tr("General Settings"));
/*
* 'color' tab
*/
QWidget *color_box = new QWidget(tabs, "color_tab");
QGridLayout *color_lay = new QGridLayout(color_box);
QGrid *color_grid = new QGrid(2, color_box);
color_lay->setAlignment(Qt::AlignTop);
color_grid->setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed));
color_grid->layout()->setAlignment(Qt::AlignTop);
color_grid->setMargin(3);
color_grid->setSpacing(3);
QLabel *label;
QStringList color;
config.setGroup("colors");
label = new QLabel(tr("Key Color"), color_grid);
keycolor_button = new QPushButton(color_grid);
connect(keycolor_button, SIGNAL(clicked()), SLOT(keyColorClicked()));
keycolor_button->setFlat(TRUE);
@@ -260,160 +262,164 @@ QStringList ConfigDlg::loadSw()
if (!s_maps.count())
{
s_maps = d_maps+c_maps;
}
else
{
/* Clear non existents entries */
QStringList s_copy(s_maps);
for (uint i = 0; i < s_copy.count(); ++i) {
if (d_maps.find(s_copy[i]) == d_maps.end()
&& c_maps.find(s_copy[i]) == c_maps.end()) {
s_maps.remove(s_copy[i]);
}
}
/* Update sw_maps from default_maps */
for (uint i = 0; i < d_maps.count(); ++i) {
if (s_maps.find(d_maps[i]) == s_maps.end()) {
s_maps.append(d_maps[i]);
}
}
/* Update sw_maps from custom_maps */
for (uint i = 0; i < c_maps.count(); ++i) {
if (s_maps.find(c_maps[i]) == s_maps.end()) {
s_maps.append(c_maps[i]);
}
}
}
return s_maps;
}
void ConfigDlg::accept()
{
/* Writing all stuffs to config */
Config *config = new Config("multikey");
config->setGroup("general");
config->writeEntry("usePickboard", pick_button->isChecked()); // default closed
config->writeEntry("useRepeat", repeat_button->isChecked()); // default closed
config->setGroup("keymaps");
config->writeEntry("sw", sw_maps, QChar('|'));
config->writeEntry("maps", custom_maps, QChar('|'));
delete config;
int index = keymaps->currentItem();
if (index == 0) {
remove_button->setDisabled(true);
+ remove_button->hide();
emit setMapToDefault();
}
else if (default_maps.find(sw_maps[index-1]) != default_maps.end()) {
remove_button->setDisabled(true);
+ remove_button->hide();
emit setMapToFile(QPEApplication::qpeDir() + "share/multikey/" + sw_maps[index - 1]);
} else {
-
+ remove_button->show();
remove_button->setEnabled(true);
emit setMapToFile(sw_maps[index - 1]);
}
emit pickboardToggled(pick_button->isChecked());
emit repeatToggled(repeat_button->isChecked());
emit reloadSw();
QDialog::accept();
emit configDlgClosed();
}
void ConfigDlg::moveSelectedUp()
{
int i = keymaps->currentItem();
/* Ignore Current Language */
if (i > 1) {
QString t = sw_maps[i-1];
sw_maps[i-1] = sw_maps[i-2];
sw_maps[i-2] = t;
QString item = keymaps->currentText();
keymaps->removeItem(i);
keymaps->insertItem(item, i-1);
keymaps->setCurrentItem(i-1);
}
}
void ConfigDlg::moveSelectedDown()
{
int i = keymaps->currentItem();
/* Ignore Current Language */
if (i > 0 && i < (int)keymaps->count() - 1) {
QString t = sw_maps[i-1];
sw_maps[i-1] = sw_maps[i];
sw_maps[i] = t;
QString item = keymaps->currentText();
keymaps->removeItem(i);
keymaps->insertItem(item, i+1);
keymaps->setCurrentItem(i+1);
}
}
void ConfigDlg::closeEvent(QCloseEvent *) {
// tell the parent it was closed, so delete me
emit configDlgClosed();
}
void ConfigDlg::setMap(int index) {
if (index == 0 || default_maps.find(sw_maps[index-1]) != default_maps.end()) {
remove_button->setDisabled(true);
+ remove_button->hide();
} else {
+ remove_button->show();
remove_button->setEnabled(true);
}
}
// 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);
if (sw_maps.find(map) == sw_maps.end())
sw_maps.append(map);
QFile map_file (map);
if (map_file.open(IO_ReadOnly)) {
QString line; bool found = 0;
map_file.readLine(line, 1024);
while (!map_file.atEnd()) {
if (line.find(QRegExp("^title\\s*=\\s*")) != -1) {
keymaps->insertItem(line.right(line.length() - line.find(QChar('=')) - 1).stripWhiteSpace());
found = 1;
break;
}
map_file.readLine(line, 1024);
}
if (!found) keymaps->insertItem(map);
map_file.close();
}
keymaps->setSelected(keymaps->count() - 1, true);
}
// ConfigDlg::removeMap() {{{1
void ConfigDlg::removeMap() {
// move selection up one
keymaps->setSelected(keymaps->currentItem() - 1, true);
diff --git a/inputmethods/multikey/configdlg.h b/inputmethods/multikey/configdlg.h
index 8e96e9b..f900a14 100644
--- a/inputmethods/multikey/configdlg.h
+++ b/inputmethods/multikey/configdlg.h
@@ -7,59 +7,59 @@
#ifndef CONFIGDLG_H
#define CONFIGDLG_H
class ConfigDlg : public QDialog
{
Q_OBJECT
public:
ConfigDlg ();
static QStringList loadSw();
signals:
void pickboardToggled(bool on_off);
void repeatToggled(bool on_off);
void setMapToDefault();
void setMapToFile(QString map);
void reloadKeyboard();
void configDlgClosed();
void reloadSw();
protected:
virtual void accept();
protected slots:
void moveSelectedUp();
void moveSelectedDown();
private slots:
void setMap(int index);
void addMap();
void removeMap();
virtual void closeEvent ( QCloseEvent * );
// all those required slots for the color push buttons
void keyColorClicked();
void keyColorPressedClicked();
void keyColorLinesClicked();
void textColorClicked();
private:
QCheckBox *pick_button;
QCheckBox *repeat_button;
QListBox *keymaps;
QPushButton *add_button;
QPushButton *remove_button;
QStringList default_maps; // the maps in your share/multikey/ dir
QStringList custom_maps; // maps you added with the 'add' button
- QStringList sw_maps; // maps, which used in keyboard switch rotation ring
+ QStringList sw_maps; // maps used in keyboard switch rotation ring
/* color buttons */
QPushButton *keycolor_button;
QPushButton *keycolor_pressed_button;
QPushButton *keycolor_lines_button;
QPushButton *textcolor_button;
};
#endif