-rw-r--r-- | inputmethods/multikey/configdlg.cpp | 54 | ||||
-rw-r--r-- | inputmethods/multikey/configdlg.h | 7 | ||||
-rw-r--r-- | inputmethods/multikey/keyboard.cpp | 65 | ||||
-rw-r--r-- | inputmethods/multikey/keyboard.h | 10 |
4 files changed, 120 insertions, 16 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 @@ | |||
1 | /* | 1 | /* |
2 | * TODO | 2 | * TODO |
3 | * make a font selection thing (size too) | 3 | * make a font selection thing (size too) |
4 | * make a cursor thing | ||
4 | * | 5 | * |
5 | * | 6 | * |
6 | * | 7 | * |
@@ -24,11 +25,13 @@ | |||
24 | #include <qlistbox.h> | 25 | #include <qlistbox.h> |
25 | #include <qstringlist.h> | 26 | #include <qstringlist.h> |
26 | #include <opie/ofiledialog.h> | 27 | #include <opie/ofiledialog.h> |
28 | #include <opie/colordialog.h> | ||
27 | #include <qdir.h> | 29 | #include <qdir.h> |
28 | #include <qfileinfo.h> | 30 | #include <qfileinfo.h> |
29 | #include "configdlg.h" | 31 | #include "configdlg.h" |
30 | #include "keyboard.h" | 32 | #include "keyboard.h" |
31 | 33 | ||
34 | // ConfigDlg::ConfigDlg() {{{1 | ||
32 | ConfigDlg::ConfigDlg () : QTabWidget () | 35 | ConfigDlg::ConfigDlg () : QTabWidget () |
33 | { | 36 | { |
34 | setCaption( tr("Multikey Configuration") ); | 37 | setCaption( tr("Multikey Configuration") ); |
@@ -104,6 +107,8 @@ ConfigDlg::ConfigDlg () : QTabWidget () | |||
104 | 107 | ||
105 | remove_button = new QPushButton(tr("Remove"), add_remove_grid); | 108 | remove_button = new QPushButton(tr("Remove"), add_remove_grid); |
106 | remove_button->setFlat((bool)1); | 109 | remove_button->setFlat((bool)1); |
110 | if ((int)map_dir.count() >= keymaps->currentItem()) | ||
111 | remove_button->setDisabled(true); | ||
107 | connect(remove_button, SIGNAL(clicked()), SLOT(removeMap())); | 112 | connect(remove_button, SIGNAL(clicked()), SLOT(removeMap())); |
108 | 113 | ||
109 | pick_button = new QCheckBox(tr("Pickboard"), gen_box); | 114 | pick_button = new QCheckBox(tr("Pickboard"), gen_box); |
@@ -129,12 +134,25 @@ ConfigDlg::ConfigDlg () : QTabWidget () | |||
129 | addTab(color_box, tr("Colors")); | 134 | addTab(color_box, tr("Colors")); |
130 | 135 | ||
131 | QLabel *label; | 136 | QLabel *label; |
137 | QStringList color; | ||
132 | 138 | ||
133 | label = new QLabel(tr("Key Color"), color_box); | 139 | label = new QLabel(tr("Key Color"), color_box); |
134 | QPushButton *button = new QPushButton(color_box); | 140 | key_color_button = new QPushButton(color_box); |
135 | button->setFlat((bool)1); | 141 | connect(key_color_button, SIGNAL(clicked()), SLOT(keyColorButtonClicked())); |
142 | key_color_button->setFlat((bool)1); | ||
143 | |||
144 | config.setGroup("colors"); | ||
145 | color = config.readListEntry("keycolor", QChar(',')); | ||
146 | if (color.isEmpty()) { | ||
147 | color = QStringList::split(",", "240,240,240"); | ||
148 | config.writeEntry("keycolor", color.join(",")); | ||
149 | |||
150 | } | ||
151 | key_color_button->setBackgroundColor(QColor(color[0].toInt(), color[1].toInt(), color[2].toInt())); | ||
152 | |||
153 | |||
136 | label = new QLabel(tr("Key Pressed Color"), color_box); | 154 | label = new QLabel(tr("Key Pressed Color"), color_box); |
137 | button = new QPushButton(color_box); | 155 | QPushButton *button = new QPushButton(color_box); |
138 | button->setFlat((bool)1); | 156 | button->setFlat((bool)1); |
139 | label = new QLabel(tr("Line Color"), color_box); | 157 | label = new QLabel(tr("Line Color"), color_box); |
140 | button = new QPushButton(color_box); | 158 | button = new QPushButton(color_box); |
@@ -164,28 +182,27 @@ void ConfigDlg::pickTog() { | |||
164 | * | 182 | * |
165 | */ | 183 | */ |
166 | 184 | ||
185 | // ConfigDlg::setMap {{{1 | ||
167 | void ConfigDlg::setMap(int index) { | 186 | void ConfigDlg::setMap(int index) { |
168 | 187 | ||
169 | if (index == 0) { | 188 | if (index == 0) { |
170 | 189 | ||
171 | remove_button->setDisabled(true); | 190 | remove_button->setDisabled(true); |
172 | |||
173 | emit setMapToDefault(); | 191 | emit setMapToDefault(); |
174 | } | 192 | } |
175 | else if ((uint)index <= default_maps.count()) { | 193 | else if ((uint)index <= default_maps.count()) { |
176 | 194 | ||
177 | remove_button->setDisabled(true); | 195 | remove_button->setDisabled(true); |
178 | |||
179 | emit setMapToFile(keymaps->text(index)); | 196 | emit setMapToFile(keymaps->text(index)); |
180 | 197 | ||
181 | } else { | 198 | } else { |
182 | 199 | ||
183 | remove_button->setEnabled(true); | 200 | remove_button->setEnabled(true); |
184 | |||
185 | emit setMapToFile(keymaps->text(index)); | 201 | emit setMapToFile(keymaps->text(index)); |
186 | } | 202 | } |
187 | } | 203 | } |
188 | 204 | ||
205 | // ConfigDlg::addMap() {{{1 | ||
189 | void ConfigDlg::addMap() { | 206 | void ConfigDlg::addMap() { |
190 | 207 | ||
191 | QString map = OFileDialog::getOpenFileName(1, QDir::home().absPath()); | 208 | QString map = OFileDialog::getOpenFileName(1, QDir::home().absPath()); |
@@ -197,11 +214,12 @@ void ConfigDlg::addMap() { | |||
197 | keymaps->setSelected(keymaps->count() - 1, true); | 214 | keymaps->setSelected(keymaps->count() - 1, true); |
198 | 215 | ||
199 | 216 | ||
200 | config.writeEntry("maps", maps.join("|")); | 217 | config.writeEntry("maps", maps, QChar('|')); |
201 | config.writeEntry("current", map); | 218 | config.writeEntry("current", map); |
202 | 219 | ||
203 | } | 220 | } |
204 | 221 | ||
222 | // ConfigDlg::removeMap() {{{1 | ||
205 | void ConfigDlg::removeMap() { | 223 | void ConfigDlg::removeMap() { |
206 | 224 | ||
207 | cout << "removing : " << custom_maps[keymaps->currentItem() - default_maps.count() - 1] << "\n"; | 225 | cout << "removing : " << custom_maps[keymaps->currentItem() - default_maps.count() - 1] << "\n"; |
@@ -217,5 +235,25 @@ void ConfigDlg::removeMap() { | |||
217 | // write the changes | 235 | // write the changes |
218 | Config config ("multikey"); | 236 | Config config ("multikey"); |
219 | config.setGroup("keymaps"); | 237 | config.setGroup("keymaps"); |
220 | config.writeEntry("maps", custom_maps.join("|")); | 238 | config.writeEntry("maps", custom_maps, QChar('|')); |
239 | } | ||
240 | |||
241 | // ConfigDlg::color {{{1 | ||
242 | void ConfigDlg::keyColorButtonClicked() { | ||
243 | |||
244 | Config config ("multikey"); | ||
245 | config.setGroup ("colors"); | ||
246 | |||
247 | QStringList color = config.readListEntry("keycolor", QChar(',')); | ||
248 | |||
249 | QColor newcolor = OColorDialog::getColor(QColor(color[0].toInt(), color[1].toInt(), color[2].toInt())); | ||
250 | |||
251 | color[0].setNum(newcolor.red()); | ||
252 | color[1].setNum(newcolor.green()); | ||
253 | color[2].setNum(newcolor.blue()); | ||
254 | |||
255 | config.writeEntry("keycolor", color, QChar(',')); | ||
256 | |||
257 | key_color_button->setBackgroundColor(newcolor); | ||
258 | emit reloadKeyboard(); | ||
221 | } | 259 | } |
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: | |||
18 | void pickboardToggled(bool on_off); | 18 | void pickboardToggled(bool on_off); |
19 | void setMapToDefault(); | 19 | void setMapToDefault(); |
20 | void setMapToFile(QString map); | 20 | void setMapToFile(QString map); |
21 | void reloadKeyboard(); | ||
21 | 22 | ||
22 | private slots: | 23 | private slots: |
23 | void pickTog(); | 24 | void pickTog(); |
@@ -25,6 +26,9 @@ private slots: | |||
25 | void addMap(); | 26 | void addMap(); |
26 | void removeMap(); | 27 | void removeMap(); |
27 | 28 | ||
29 | // all those required slots for the color push buttons | ||
30 | void keyColorButtonClicked(); | ||
31 | |||
28 | private: | 32 | private: |
29 | QCheckBox *pick_button; | 33 | QCheckBox *pick_button; |
30 | QListBox *keymaps; | 34 | QListBox *keymaps; |
@@ -35,6 +39,9 @@ private: | |||
35 | QStringList default_maps; // the maps in your share/multikey/ dir | 39 | QStringList default_maps; // the maps in your share/multikey/ dir |
36 | QStringList custom_maps; // maps you added with the 'add' button | 40 | QStringList custom_maps; // maps you added with the 'add' button |
37 | 41 | ||
42 | /* color buttons */ | ||
43 | QPushButton *key_color_button; | ||
44 | |||
38 | }; | 45 | }; |
39 | 46 | ||
40 | #endif | 47 | #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) : | |||
49 | configdlg(0) | 49 | configdlg(0) |
50 | 50 | ||
51 | { | 51 | { |
52 | |||
52 | // get the default font | 53 | // get the default font |
53 | Config *config = new Config( "qpe" ); | 54 | Config *config = new Config( "qpe" ); |
54 | config->setGroup( "Appearance" ); | 55 | config->setGroup( "Appearance" ); |
@@ -72,12 +73,15 @@ Keyboard::Keyboard(QWidget* parent, const char* _name, WFlags f) : | |||
72 | 73 | ||
73 | } else picks->hide(); | 74 | } else picks->hide(); |
74 | 75 | ||
76 | loadKeyboardColors(); | ||
77 | |||
75 | keys = new Keys(); | 78 | keys = new Keys(); |
76 | 79 | ||
77 | repeatTimer = new QTimer( this ); | 80 | repeatTimer = new QTimer( this ); |
78 | connect( repeatTimer, SIGNAL(timeout()), this, SLOT(repeat()) ); | 81 | connect( repeatTimer, SIGNAL(timeout()), this, SLOT(repeat()) ); |
79 | 82 | ||
80 | } | 83 | } |
84 | |||
81 | Keyboard::~Keyboard() { | 85 | Keyboard::~Keyboard() { |
82 | 86 | ||
83 | if ( configdlg ) { | 87 | if ( configdlg ) { |
@@ -156,11 +160,6 @@ void Keyboard::paintEvent(QPaintEvent* e) | |||
156 | 160 | ||
157 | void Keyboard::drawKeyboard(QPainter &p, int row, int col) | 161 | void Keyboard::drawKeyboard(QPainter &p, int row, int col) |
158 | { | 162 | { |
159 | QColor keycolor = | ||
160 | QColor(240,240,240); | ||
161 | QColor keycolor_pressed = QColor(171,183,198); | ||
162 | QColor keycolor_lines = QColor(138,148,160); | ||
163 | QColor textcolor = QColor(43,54,68); | ||
164 | 163 | ||
165 | 164 | ||
166 | if (row != -1 && col != -1) { //just redraw one key | 165 | if (row != -1 && col != -1) { //just redraw one key |
@@ -182,12 +181,11 @@ void Keyboard::drawKeyboard(QPainter &p, int row, int col) | |||
182 | 181 | ||
183 | ushort c = keys->uni(row, col); | 182 | ushort c = keys->uni(row, col); |
184 | 183 | ||
185 | if (!pix) { | 184 | p.setPen(textcolor); |
186 | p.setPen(textcolor); | 185 | if (!pix) |
187 | p.drawText(x, y, | 186 | p.drawText(x, y, |
188 | defaultKeyWidth * keyWidth, keyHeight, | 187 | defaultKeyWidth * keyWidth, keyHeight, |
189 | AlignCenter, ((shift || lock) && keys->shift(c)) ? (QChar)keys->shift(c) : (QChar)c); | 188 | AlignCenter, ((shift || lock) && keys->shift(c)) ? (QChar)keys->shift(c) : (QChar)c); |
190 | } | ||
191 | else | 189 | else |
192 | // center the image in the middle of the key | 190 | // center the image in the middle of the key |
193 | p.drawPixmap( x + (defaultKeyWidth * keyWidth - pix->width())/2, | 191 | p.drawPixmap( x + (defaultKeyWidth * keyWidth - pix->width())/2, |
@@ -292,6 +290,8 @@ void Keyboard::mousePressEvent(QMouseEvent *e) | |||
292 | this, SLOT(setMapToDefault())); | 290 | this, SLOT(setMapToDefault())); |
293 | connect(configdlg, SIGNAL(setMapToFile(QString)), | 291 | connect(configdlg, SIGNAL(setMapToFile(QString)), |
294 | this, SLOT(setMapToFile(QString))); | 292 | this, SLOT(setMapToFile(QString))); |
293 | connect(configdlg, SIGNAL(reloadKeyboard()), | ||
294 | this, SLOT(reloadKeyboard())); | ||
295 | configdlg->showMaximized(); | 295 | configdlg->showMaximized(); |
296 | configdlg->show(); | 296 | configdlg->show(); |
297 | configdlg->raise(); | 297 | configdlg->raise(); |
@@ -548,6 +548,55 @@ void Keyboard::setMapToFile(QString map) { | |||
548 | 548 | ||
549 | } | 549 | } |
550 | 550 | ||
551 | /* Keybaord::setColor {{{1 */ | ||
552 | void Keyboard::reloadKeyboard() { | ||
553 | |||
554 | // reload colors and redraw | ||
555 | loadKeyboardColors(); | ||
556 | repaint(); | ||
557 | |||
558 | } | ||
559 | |||
560 | void Keyboard::loadKeyboardColors() { | ||
561 | |||
562 | Config config ("multikey"); | ||
563 | config.setGroup("colors"); | ||
564 | |||
565 | QStringList color; | ||
566 | color = config.readListEntry("keycolor", QChar(',')); | ||
567 | if (color.isEmpty()) { | ||
568 | color = QStringList::split(",", "240,240,240"); | ||
569 | config.writeEntry("keycolor", color.join(",")); | ||
570 | |||
571 | } | ||
572 | keycolor = QColor(color[0].toInt(), color[1].toInt(), color[2].toInt()); | ||
573 | |||
574 | color = config.readListEntry("keycolor_pressed", QChar(',')); | ||
575 | if (color.isEmpty()) { | ||
576 | color = QStringList::split(",", "171,183,198"); | ||
577 | config.writeEntry("keycolor_pressed", color.join(",")); | ||
578 | |||
579 | } | ||
580 | keycolor_pressed = QColor(color[0].toInt(), color[1].toInt(), color[2].toInt()); | ||
581 | |||
582 | color = config.readListEntry("keycolor_lines", QChar(',')); | ||
583 | if (color.isEmpty()) { | ||
584 | color = QStringList::split(",", "138,148,160"); | ||
585 | config.writeEntry("keycolor_lines", color.join(",")); | ||
586 | |||
587 | } | ||
588 | keycolor_lines = QColor(color[0].toInt(), color[1].toInt(), color[2].toInt()); | ||
589 | |||
590 | color = config.readListEntry("textcolor", QChar(',')); | ||
591 | if (color.isEmpty()) { | ||
592 | color = QStringList::split(",", "43,54,68"); | ||
593 | config.writeEntry("textcolor", color.join(",")); | ||
594 | |||
595 | } | ||
596 | textcolor = QColor(color[0].toInt(), color[1].toInt(), color[2].toInt()); | ||
597 | |||
598 | } | ||
599 | |||
551 | /* korean input functions {{{1 | 600 | /* korean input functions {{{1 |
552 | * | 601 | * |
553 | * TODO | 602 | * 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 | |||
@@ -114,6 +114,9 @@ private slots: | |||
114 | void togglePickboard(bool on_off); | 114 | void togglePickboard(bool on_off); |
115 | void setMapToDefault(); | 115 | void setMapToDefault(); |
116 | void setMapToFile(QString map); | 116 | void setMapToFile(QString map); |
117 | |||
118 | // used to redraw keyboard after edited colors | ||
119 | void reloadKeyboard(); | ||
117 | 120 | ||
118 | private: | 121 | private: |
119 | int getKey( int &w, int j = -1 ); | 122 | int getKey( int &w, int j = -1 ); |
@@ -152,6 +155,13 @@ private: | |||
152 | 155 | ||
153 | QTimer *repeatTimer; | 156 | QTimer *repeatTimer; |
154 | 157 | ||
158 | /* colors */ | ||
159 | void loadKeyboardColors(); | ||
160 | QColor keycolor; | ||
161 | QColor keycolor_pressed; | ||
162 | QColor keycolor_lines; | ||
163 | QColor textcolor; | ||
164 | |||
155 | ConfigDlg *configdlg; | 165 | ConfigDlg *configdlg; |
156 | }; | 166 | }; |
157 | 167 | ||