summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--inputmethods/multikey/configdlg.cpp54
-rw-r--r--inputmethods/multikey/configdlg.h7
-rw-r--r--inputmethods/multikey/keyboard.cpp63
-rw-r--r--inputmethods/multikey/keyboard.h10
4 files changed, 119 insertions, 15 deletions
diff --git a/inputmethods/multikey/configdlg.cpp b/inputmethods/multikey/configdlg.cpp
index ac132d3..1e104a6 100644
--- a/inputmethods/multikey/configdlg.cpp
+++ b/inputmethods/multikey/configdlg.cpp
@@ -1,6 +1,7 @@
/*
* TODO
* make a font selection thing (size too)
+ * make a cursor thing
*
*
*
@@ -24,11 +25,13 @@
#include <qlistbox.h>
#include <qstringlist.h>
#include <opie/ofiledialog.h>
+#include <opie/colordialog.h>
#include <qdir.h>
#include <qfileinfo.h>
#include "configdlg.h"
#include "keyboard.h"
+// ConfigDlg::ConfigDlg() {{{1
ConfigDlg::ConfigDlg () : QTabWidget ()
{
setCaption( tr("Multikey Configuration") );
@@ -104,6 +107,8 @@ ConfigDlg::ConfigDlg () : QTabWidget ()
remove_button = new QPushButton(tr("Remove"), add_remove_grid);
remove_button->setFlat((bool)1);
+ if ((int)map_dir.count() >= keymaps->currentItem())
+ remove_button->setDisabled(true);
connect(remove_button, SIGNAL(clicked()), SLOT(removeMap()));
pick_button = new QCheckBox(tr("Pickboard"), gen_box);
@@ -129,12 +134,25 @@ ConfigDlg::ConfigDlg () : QTabWidget ()
addTab(color_box, tr("Colors"));
QLabel *label;
+ QStringList color;
label = new QLabel(tr("Key Color"), color_box);
- QPushButton *button = new QPushButton(color_box);
- button->setFlat((bool)1);
+ key_color_button = new QPushButton(color_box);
+ connect(key_color_button, SIGNAL(clicked()), SLOT(keyColorButtonClicked()));
+ key_color_button->setFlat((bool)1);
+
+ config.setGroup("colors");
+ color = config.readListEntry("keycolor", QChar(','));
+ if (color.isEmpty()) {
+ color = QStringList::split(",", "240,240,240");
+ config.writeEntry("keycolor", color.join(","));
+
+ }
+ key_color_button->setBackgroundColor(QColor(color[0].toInt(), color[1].toInt(), color[2].toInt()));
+
+
label = new QLabel(tr("Key Pressed Color"), color_box);
- button = new QPushButton(color_box);
+ QPushButton *button = new QPushButton(color_box);
button->setFlat((bool)1);
label = new QLabel(tr("Line Color"), color_box);
button = new QPushButton(color_box);
@@ -164,28 +182,27 @@ void ConfigDlg::pickTog() {
*
*/
+// ConfigDlg::setMap {{{1
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));
} else {
remove_button->setEnabled(true);
-
emit setMapToFile(keymaps->text(index));
}
}
+// ConfigDlg::addMap() {{{1
void ConfigDlg::addMap() {
QString map = OFileDialog::getOpenFileName(1, QDir::home().absPath());
@@ -197,11 +214,12 @@ void ConfigDlg::addMap() {
keymaps->setSelected(keymaps->count() - 1, true);
- config.writeEntry("maps", maps.join("|"));
+ 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";
@@ -217,5 +235,25 @@ void ConfigDlg::removeMap() {
// write the changes
Config config ("multikey");
config.setGroup("keymaps");
- config.writeEntry("maps", custom_maps.join("|"));
+ config.writeEntry("maps", custom_maps, QChar('|'));
+}
+
+// ConfigDlg::color {{{1
+void ConfigDlg::keyColorButtonClicked() {
+
+ Config config ("multikey");
+ config.setGroup ("colors");
+
+ QStringList color = config.readListEntry("keycolor", QChar(','));
+
+ QColor newcolor = OColorDialog::getColor(QColor(color[0].toInt(), color[1].toInt(), color[2].toInt()));
+
+ color[0].setNum(newcolor.red());
+ color[1].setNum(newcolor.green());
+ color[2].setNum(newcolor.blue());
+
+ config.writeEntry("keycolor", color, QChar(','));
+
+ key_color_button->setBackgroundColor(newcolor);
+ emit reloadKeyboard();
}
diff --git a/inputmethods/multikey/configdlg.h b/inputmethods/multikey/configdlg.h
index 07d109c..ae7afe2 100644
--- a/inputmethods/multikey/configdlg.h
+++ b/inputmethods/multikey/configdlg.h
@@ -18,6 +18,7 @@ signals:
void pickboardToggled(bool on_off);
void setMapToDefault();
void setMapToFile(QString map);
+ void reloadKeyboard();
private slots:
void pickTog();
@@ -25,6 +26,9 @@ private slots:
void addMap();
void removeMap();
+ // all those required slots for the color push buttons
+ void keyColorButtonClicked();
+
private:
QCheckBox *pick_button;
QListBox *keymaps;
@@ -35,6 +39,9 @@ private:
QStringList default_maps; // the maps in your share/multikey/ dir
QStringList custom_maps; // maps you added with the 'add' button
+ /* color buttons */
+ QPushButton *key_color_button;
+
};
#endif
diff --git a/inputmethods/multikey/keyboard.cpp b/inputmethods/multikey/keyboard.cpp
index ac3d9be..68918a6 100644
--- a/inputmethods/multikey/keyboard.cpp
+++ b/inputmethods/multikey/keyboard.cpp
@@ -49,6 +49,7 @@ Keyboard::Keyboard(QWidget* parent, const char* _name, WFlags f) :
configdlg(0)
{
+
// get the default font
Config *config = new Config( "qpe" );
config->setGroup( "Appearance" );
@@ -72,12 +73,15 @@ Keyboard::Keyboard(QWidget* parent, const char* _name, WFlags f) :
} else picks->hide();
+ loadKeyboardColors();
+
keys = new Keys();
repeatTimer = new QTimer( this );
connect( repeatTimer, SIGNAL(timeout()), this, SLOT(repeat()) );
}
+
Keyboard::~Keyboard() {
if ( configdlg ) {
@@ -156,11 +160,6 @@ void Keyboard::paintEvent(QPaintEvent* e)
void Keyboard::drawKeyboard(QPainter &p, int row, int col)
{
- QColor keycolor =
- QColor(240,240,240);
- QColor keycolor_pressed = QColor(171,183,198);
- QColor keycolor_lines = QColor(138,148,160);
- QColor textcolor = QColor(43,54,68);
if (row != -1 && col != -1) { //just redraw one key
@@ -182,12 +181,11 @@ void Keyboard::drawKeyboard(QPainter &p, int row, int col)
ushort c = keys->uni(row, col);
- if (!pix) {
p.setPen(textcolor);
+ if (!pix)
p.drawText(x, y,
defaultKeyWidth * keyWidth, keyHeight,
AlignCenter, ((shift || lock) && keys->shift(c)) ? (QChar)keys->shift(c) : (QChar)c);
- }
else
// center the image in the middle of the key
p.drawPixmap( x + (defaultKeyWidth * keyWidth - pix->width())/2,
@@ -292,6 +290,8 @@ void Keyboard::mousePressEvent(QMouseEvent *e)
this, SLOT(setMapToDefault()));
connect(configdlg, SIGNAL(setMapToFile(QString)),
this, SLOT(setMapToFile(QString)));
+ connect(configdlg, SIGNAL(reloadKeyboard()),
+ this, SLOT(reloadKeyboard()));
configdlg->showMaximized();
configdlg->show();
configdlg->raise();
@@ -548,6 +548,55 @@ void Keyboard::setMapToFile(QString map) {
}
+/* Keybaord::setColor {{{1 */
+void Keyboard::reloadKeyboard() {
+
+ // reload colors and redraw
+ loadKeyboardColors();
+ repaint();
+
+}
+
+void Keyboard::loadKeyboardColors() {
+
+ Config config ("multikey");
+ config.setGroup("colors");
+
+ QStringList color;
+ color = config.readListEntry("keycolor", QChar(','));
+ if (color.isEmpty()) {
+ color = QStringList::split(",", "240,240,240");
+ config.writeEntry("keycolor", color.join(","));
+
+ }
+ keycolor = QColor(color[0].toInt(), color[1].toInt(), color[2].toInt());
+
+ color = config.readListEntry("keycolor_pressed", QChar(','));
+ if (color.isEmpty()) {
+ color = QStringList::split(",", "171,183,198");
+ config.writeEntry("keycolor_pressed", color.join(","));
+
+ }
+ keycolor_pressed = QColor(color[0].toInt(), color[1].toInt(), color[2].toInt());
+
+ color = config.readListEntry("keycolor_lines", QChar(','));
+ if (color.isEmpty()) {
+ color = QStringList::split(",", "138,148,160");
+ config.writeEntry("keycolor_lines", color.join(","));
+
+ }
+ keycolor_lines = QColor(color[0].toInt(), color[1].toInt(), color[2].toInt());
+
+ color = config.readListEntry("textcolor", QChar(','));
+ if (color.isEmpty()) {
+ color = QStringList::split(",", "43,54,68");
+ config.writeEntry("textcolor", color.join(","));
+
+ }
+ textcolor = QColor(color[0].toInt(), color[1].toInt(), color[2].toInt());
+
+}
+
/* korean input functions {{{1
*
* TODO
diff --git a/inputmethods/multikey/keyboard.h b/inputmethods/multikey/keyboard.h
index 8c4e666..6e577ab 100644
--- a/inputmethods/multikey/keyboard.h
+++ b/inputmethods/multikey/keyboard.h
@@ -115,6 +115,9 @@ private slots:
void setMapToDefault();
void setMapToFile(QString map);
+ // used to redraw keyboard after edited colors
+ void reloadKeyboard();
+
private:
int getKey( int &w, int j = -1 );
void clearHighlight();
@@ -152,6 +155,13 @@ private:
QTimer *repeatTimer;
+ /* colors */
+ void loadKeyboardColors();
+ QColor keycolor;
+ QColor keycolor_pressed;
+ QColor keycolor_lines;
+ QColor textcolor;
+
ConfigDlg *configdlg;
};