summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--inputmethods/multikey/configdlg.cpp54
-rw-r--r--inputmethods/multikey/configdlg.h7
-rw-r--r--inputmethods/multikey/keyboard.cpp65
-rw-r--r--inputmethods/multikey/keyboard.h10
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,9 +1,10 @@
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 *
7 */ 8 */
8 9
9#include <iostream.h> 10#include <iostream.h>
@@ -21,17 +22,19 @@
21#include <qcheckbox.h> 22#include <qcheckbox.h>
22#include <qsizepolicy.h> 23#include <qsizepolicy.h>
23#include <qpushbutton.h> 24#include <qpushbutton.h>
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
32ConfigDlg::ConfigDlg () : QTabWidget () 35ConfigDlg::ConfigDlg () : QTabWidget ()
33{ 36{
34 setCaption( tr("Multikey Configuration") ); 37 setCaption( tr("Multikey Configuration") );
35 Config config ("multikey"); 38 Config config ("multikey");
36 config.setGroup("keymaps"); 39 config.setGroup("keymaps");
37 QString current_map = config.readEntry("current", 0); 40 QString current_map = config.readEntry("current", 0);
@@ -101,12 +104,14 @@ ConfigDlg::ConfigDlg () : QTabWidget ()
101 add_button = new QPushButton(tr("Add"), add_remove_grid); 104 add_button = new QPushButton(tr("Add"), add_remove_grid);
102 add_button->setFlat((bool)1); 105 add_button->setFlat((bool)1);
103 connect(add_button, SIGNAL(clicked()), SLOT(addMap())); 106 connect(add_button, SIGNAL(clicked()), SLOT(addMap()));
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);
110 115
111 config.setGroup ("pickboard"); 116 config.setGroup ("pickboard");
112 bool pick_open = config.readBoolEntry ("open", "0"); // default closed 117 bool pick_open = config.readBoolEntry ("open", "0"); // default closed
@@ -126,18 +131,31 @@ ConfigDlg::ConfigDlg () : QTabWidget ()
126 color_box->setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed)); 131 color_box->setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed));
127 color_box->setMargin(3); 132 color_box->setMargin(3);
128 color_box->setSpacing(3); 133 color_box->setSpacing(3);
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);
141 button->setFlat((bool)1); 159 button->setFlat((bool)1);
142 label = new QLabel(tr("Text Color"), color_box); 160 label = new QLabel(tr("Text Color"), color_box);
143 button = new QPushButton(color_box); 161 button = new QPushButton(color_box);
@@ -161,50 +179,50 @@ void ConfigDlg::pickTog() {
161 * the index is kinda screwy, because in the config file, index 0 is just the 179 * the index is kinda screwy, because in the config file, index 0 is just the
162 * first element in the QStringList, but here it's the "Current Language" 180 * first element in the QStringList, but here it's the "Current Language"
163 * listItem. therefor you have to minus one to the index before you access it. 181 * listItem. therefor you have to minus one to the index before you access it.
164 * 182 *
165 */ 183 */
166 184
185// ConfigDlg::setMap {{{1
167void ConfigDlg::setMap(int index) { 186void 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
189void ConfigDlg::addMap() { 206void ConfigDlg::addMap() {
190 207
191 QString map = OFileDialog::getOpenFileName(1, QDir::home().absPath()); 208 QString map = OFileDialog::getOpenFileName(1, QDir::home().absPath());
192 Config config ("multikey"); 209 Config config ("multikey");
193 config.setGroup("keymaps"); 210 config.setGroup("keymaps");
194 QStringList maps = config.readListEntry("maps", QChar('|')); 211 QStringList maps = config.readListEntry("maps", QChar('|'));
195 maps.append(map); 212 maps.append(map);
196 keymaps->insertItem(map); 213 keymaps->insertItem(map);
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
205void ConfigDlg::removeMap() { 223void 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";
208 cout << "currentItem : " << keymaps->currentItem() << "\n"; 226 cout << "currentItem : " << keymaps->currentItem() << "\n";
209 227
210 // move selection up one 228 // move selection up one
@@ -214,8 +232,28 @@ void ConfigDlg::removeMap() {
214 232
215 custom_maps.remove(custom_maps[keymaps->currentItem() - default_maps.count()]); 233 custom_maps.remove(custom_maps[keymaps->currentItem() - default_maps.count()]);
216 234
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
242void 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
@@ -15,26 +15,33 @@ public:
15 ConfigDlg (); 15 ConfigDlg ();
16 16
17signals: 17signals:
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
22private slots: 23private slots:
23 void pickTog(); 24 void pickTog();
24 void setMap(int index); 25 void setMap(int index);
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
28private: 32private:
29 QCheckBox *pick_button; 33 QCheckBox *pick_button;
30 QListBox *keymaps; 34 QListBox *keymaps;
31 QPushButton *add_button; 35 QPushButton *add_button;
32 QPushButton *remove_button; 36 QPushButton *remove_button;
33 37
34 38
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
@@ -46,12 +46,13 @@ Keyboard::Keyboard(QWidget* parent, const char* _name, WFlags f) :
46 QFrame(parent, _name, f), shift(0), lock(0), ctrl(0), 46 QFrame(parent, _name, f), shift(0), lock(0), ctrl(0),
47 alt(0), useLargeKeys(TRUE), usePicks(0), pressedKeyRow(-1), pressedKeyCol(-1), 47 alt(0), useLargeKeys(TRUE), usePicks(0), pressedKeyRow(-1), pressedKeyCol(-1),
48 unicode(-1), qkeycode(0), modifiers(0), schar(0), mchar(0), echar(0), 48 unicode(-1), qkeycode(0), modifiers(0), schar(0), mchar(0), echar(0),
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" );
55 QString familyStr = config->readEntry( "FontFamily", "fixed" ); 56 QString familyStr = config->readEntry( "FontFamily", "fixed" );
56 delete config; 57 delete config;
57 58
@@ -69,18 +70,21 @@ Keyboard::Keyboard(QWidget* parent, const char* _name, WFlags f) :
69 70
70 QObject::connect( picks, SIGNAL(key(ushort,ushort,ushort,bool,bool) ), 71 QObject::connect( picks, SIGNAL(key(ushort,ushort,ushort,bool,bool) ),
71 this, SIGNAL(key(ushort,ushort,ushort,bool,bool)) ); 72 this, SIGNAL(key(ushort,ushort,ushort,bool,bool)) );
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
81Keyboard::~Keyboard() { 85Keyboard::~Keyboard() {
82 86
83 if ( configdlg ) { 87 if ( configdlg ) {
84 delete (ConfigDlg *) configdlg; 88 delete (ConfigDlg *) configdlg;
85 configdlg = 0; 89 configdlg = 0;
86 } 90 }
@@ -153,17 +157,12 @@ void Keyboard::paintEvent(QPaintEvent* e)
153 157
154 158
155/* Keyboard::drawKeyboard {{{1 */ 159/* Keyboard::drawKeyboard {{{1 */
156 160
157void Keyboard::drawKeyboard(QPainter &p, int row, int col) 161void 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
167 166
168 int x = 0; 167 int x = 0;
169 for (int i = 0; i < col; i++) { 168 for (int i = 0; i < col; i++) {
@@ -179,18 +178,17 @@ void Keyboard::drawKeyboard(QPainter &p, int row, int col)
179 pressed || keys->pressed(row, col) ? keycolor_pressed : keycolor); 178 pressed || keys->pressed(row, col) ? keycolor_pressed : keycolor);
180 179
181 QPixmap *pix = keys->pix(row,col); 180 QPixmap *pix = keys->pix(row,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,
194 y + (keyHeight - pix->height())/2 + 1, 192 y + (keyHeight - pix->height())/2 + 1,
195 *pix ); 193 *pix );
196 194
@@ -289,12 +287,14 @@ void Keyboard::mousePressEvent(QMouseEvent *e)
289 connect(configdlg, SIGNAL(pickboardToggled(bool)), 287 connect(configdlg, SIGNAL(pickboardToggled(bool)),
290 this, SLOT(togglePickboard(bool))); 288 this, SLOT(togglePickboard(bool)));
291 connect(configdlg, SIGNAL(setMapToDefault()), 289 connect(configdlg, SIGNAL(setMapToDefault()),
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();
298 } 298 }
299 299
300 } else if (qkeycode == Qt::Key_Control) { 300 } else if (qkeycode == Qt::Key_Control) {
@@ -545,12 +545,61 @@ void Keyboard::setMapToFile(QString map) {
545 keys = new Keys(); 545 keys = new Keys();
546 546
547 repaint(FALSE); 547 repaint(FALSE);
548 548
549} 549}
550 550
551/* Keybaord::setColor {{{1 */
552void Keyboard::reloadKeyboard() {
553
554 // reload colors and redraw
555 loadKeyboardColors();
556 repaint();
557
558}
559
560void 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
554 * one major problem with this implementation is that you can't move the 603 * one major problem with this implementation is that you can't move the
555 * cursor after inputing korean chars, otherwise it will eat up and replace 604 * cursor after inputing korean chars, otherwise it will eat up and replace
556 * the char before the cursor you move to. fix that 605 * the char before the cursor you move to. fix that
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
@@ -111,12 +111,15 @@ signals:
111 111
112private slots: 112private slots:
113 void repeat(); 113 void repeat();
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
118private: 121private:
119 int getKey( int &w, int j = -1 ); 122 int getKey( int &w, int j = -1 );
120 void clearHighlight(); 123 void clearHighlight();
121 124
122 bool *shift; 125 bool *shift;
@@ -149,10 +152,17 @@ private:
149 ushort parseKoreanInput(ushort c); 152 ushort parseKoreanInput(ushort c);
150 ushort combineKoreanChars(const ushort s, const ushort m, const ushort e); 153 ushort combineKoreanChars(const ushort s, const ushort m, const ushort e);
151 ushort constoe(const ushort c); 154 ushort constoe(const ushort c);
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
158 168