summaryrefslogtreecommitdiff
path: root/inputmethods
Unidiff
Diffstat (limited to 'inputmethods') (more/less context) (ignore whitespace changes)
-rw-r--r--inputmethods/multikey/configdlg.cpp60
-rw-r--r--inputmethods/multikey/configdlg.h9
-rw-r--r--inputmethods/multikey/keyboard.cpp10
-rw-r--r--inputmethods/multikey/keyboard.h1
4 files changed, 56 insertions, 24 deletions
diff --git a/inputmethods/multikey/configdlg.cpp b/inputmethods/multikey/configdlg.cpp
index f23bf1c..7bea589 100644
--- a/inputmethods/multikey/configdlg.cpp
+++ b/inputmethods/multikey/configdlg.cpp
@@ -1,123 +1,143 @@
1/* 1/*
2 * TODO 2 * TODO
3 * make a font selection thing 3 * make a font selection thing (size too)
4 * 4 *
5 * FIXME
6 * if you open the config dialog and close it from the little (x) button on the title bar,
7 * you have to hit the button on the keyboard twice for it to open the next time
8 * 5 *
9 * 6 *
10 */ 7 */
11 8
12#include <qpe/qpeapplication.h> 9#include <qpe/qpeapplication.h>
13#include <qpe/config.h> 10#include <qpe/config.h>
14 11
15#include <qwidget.h> 12#include <qwidget.h>
16#include <qdialog.h> 13#include <qdialog.h>
17#include <qtabwidget.h> 14#include <qtabwidget.h>
18#include <qvbox.h> 15#include <qvbox.h>
19#include <qgrid.h> 16#include <qgrid.h>
20#include <qgroupbox.h> 17#include <qgroupbox.h>
21#include <qlabel.h> 18#include <qlabel.h>
22#include <qcheckbox.h> 19#include <qcheckbox.h>
23#include <qsizepolicy.h> 20#include <qsizepolicy.h>
24#include <qpushbutton.h> 21#include <qpushbutton.h>
25#include <qcombobox.h> 22#include <qlistbox.h>
26#include "configdlg.h" 23#include "configdlg.h"
27#include "keyboard.h" 24#include "keyboard.h"
28 25
29ConfigDlg::ConfigDlg () : QTabWidget () 26ConfigDlg::ConfigDlg () : QTabWidget ()
30{ 27{
31 setCaption( tr("Multikey Configuration") ); 28 setCaption( tr("Multikey Configuration") );
32 29
33 /* 30 /*
34 * 'general config' tab 31 * 'general config' tab
35 */ 32 */
36 33
37 QVBox *gen_box = new QVBox (this); 34 QVBox *gen_box = new QVBox (this);
38 gen_box->setMargin(3); 35 gen_box->setMargin(3);
39 addTab(gen_box, tr("General Settings")); 36 addTab(gen_box, tr("General Settings"));
40 37
41 QGroupBox *map_group = new QGroupBox (2, Qt::Horizontal, tr("Keymap File"), gen_box); 38 QGroupBox *map_group = new QGroupBox (2, Qt::Vertical, tr("Keymap File"), gen_box);
42 39
43 map_combo = new QComboBox ((bool)0, map_group); 40 keymaps = new QListBox (map_group);
44 map_combo->setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed)); 41 keymaps->setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding));
42 //keymaps->setMaximumHeight(150);
45 43
46 QString cur(tr("Current Language")); 44 QString cur(tr("Current Language"));
47 map_combo->insertItem(cur); 45 keymaps->insertItem(cur);
48 connect(map_combo, SIGNAL(activated(int)), SLOT(setMap(int))); 46 connect(keymaps, SIGNAL(highlighted(int)), SLOT(setMap(int)));
49 47
50 QString ko(tr(QPEApplication::qpeDir() + "/share/multikey/ko.keymap")); 48 QString ko(QPEApplication::qpeDir() + "/share/multikey/ko.keymap");
51 map_combo->insertItem(ko); 49 keymaps->insertItem(ko);
52 50
53 QString en(tr(QPEApplication::qpeDir() + "/share/multikey/en.keymap")); 51 QString en(QPEApplication::qpeDir() + "/share/multikey/en.keymap");
54 map_combo->insertItem(en); 52 keymaps->insertItem(en);
55 53
56 QString de(tr(QPEApplication::qpeDir() + "/share/multikey/de.keymap")); 54 QString de(QPEApplication::qpeDir() + "/share/multikey/de.keymap");
57 map_combo->insertItem(de); 55 keymaps->insertItem(de);
58 56
59 QPushButton *button = new QPushButton(tr("Browse..."), map_group); 57 QGrid *add_remove_grid = new QGrid(2, map_group);
60 button->setFlat((bool)1); 58 add_remove_grid->setMargin(3);
59 add_remove_grid->setSpacing(3);
60
61 add_button = new QPushButton(tr("Add"), add_remove_grid);
62 add_button->setFlat((bool)1);
63
64 remove_button = new QPushButton(tr("Remove"), add_remove_grid);
65 remove_button->setFlat((bool)1);
61 66
62 pick_button = new QCheckBox(tr("Pickboard"), gen_box); 67 pick_button = new QCheckBox(tr("Pickboard"), gen_box);
63 68
64 Config config ("multikey"); 69 Config config ("multikey");
65 config.setGroup ("pickboard"); 70 config.setGroup ("pickboard");
66 bool pick_open = config.readBoolEntry ("open", "0"); // default closed 71 bool pick_open = config.readBoolEntry ("open", "0"); // default closed
67 if (pick_open) { 72 if (pick_open) {
68 73
69 pick_button->setChecked(true); 74 pick_button->setChecked(true);
70 } 75 }
71 76
72 // by connecting it after checking it, the signal isn't emmited 77 // by connecting it after checking it, the signal isn't emmited
73 connect (pick_button, SIGNAL(clicked()), this, SLOT(pickTog())); 78 connect (pick_button, SIGNAL(clicked()), this, SLOT(pickTog()));
74 79
75 /* 80 /*
76 * 'color' tab 81 * 'color' tab
77 */ 82 */
78 83
79 QGrid *color_box = new QGrid(2, this); 84 QGrid *color_box = new QGrid(2, this);
80 color_box->setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed)); 85 color_box->setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed));
81 color_box->setMargin(3); 86 color_box->setMargin(3);
87 color_box->setSpacing(3);
82 addTab(color_box, tr("Colors")); 88 addTab(color_box, tr("Colors"));
83 89
84 QLabel *label; 90 QLabel *label;
85 91
86 label = new QLabel(tr("Key Color"), color_box); 92 label = new QLabel(tr("Key Color"), color_box);
87 button = new QPushButton(color_box); 93 QPushButton *button = new QPushButton(color_box);
88 button->setFlat((bool)1); 94 button->setFlat((bool)1);
89 label = new QLabel(tr("Key Pressed Color"), color_box); 95 label = new QLabel(tr("Key Pressed Color"), color_box);
90 button = new QPushButton(color_box); 96 button = new QPushButton(color_box);
91 button->setFlat((bool)1); 97 button->setFlat((bool)1);
92 label = new QLabel(tr("Line Color"), color_box); 98 label = new QLabel(tr("Line Color"), color_box);
93 button = new QPushButton(color_box); 99 button = new QPushButton(color_box);
94 button->setFlat((bool)1); 100 button->setFlat((bool)1);
95 label = new QLabel(tr("Text Color"), color_box); 101 label = new QLabel(tr("Text Color"), color_box);
96 button = new QPushButton(color_box); 102 button = new QPushButton(color_box);
97 button->setFlat((bool)1); 103 button->setFlat((bool)1);
98 104
99 label = new QLabel("", color_box); // a spacer so the above buttons dont expand 105 label = new QLabel("", color_box); // a spacer so the above buttons dont expand
100 label->setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding)); 106 label->setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding));
101 107
102} 108}
103 109
104void ConfigDlg::pickTog() { 110void ConfigDlg::pickTog() {
105 111
106 Config config ("multikey"); 112 Config config ("multikey");
107 config.setGroup ("pickboard"); 113 config.setGroup ("pickboard");
108 config.writeEntry ("open", pick_button->isChecked()); // default closed 114 config.writeEntry ("open", pick_button->isChecked()); // default closed
109 115
110 emit pickboardToggled(pick_button->isChecked()); 116 emit pickboardToggled(pick_button->isChecked());
111} 117}
112 118
113void ConfigDlg::setMap(int index) { 119void ConfigDlg::setMap(int index) {
114 120
115 if (index == 0) { 121 if (index == 0) {
116 122
123 if (remove_button->isEnabled())
124 remove_button->setDisabled(true);
125
117 emit setMapToDefault(); 126 emit setMapToDefault();
118 } 127 }
119 else { 128 else {
120 129
121 emit setMapToFile(map_combo->text(index)); 130 if (!remove_button->isEnabled())
131 remove_button->setEnabled(true);
132
133 emit setMapToFile(keymaps->text(index));
122 } 134 }
123} 135}
136
137void ConfigDlg::addMap() {
138
139}
140
141void ConfigDlg::removeMap(int index) {
142
143}
diff --git a/inputmethods/multikey/configdlg.h b/inputmethods/multikey/configdlg.h
index 54127a0..1a64764 100644
--- a/inputmethods/multikey/configdlg.h
+++ b/inputmethods/multikey/configdlg.h
@@ -1,31 +1,36 @@
1#include <qpe/qpeapplication.h> 1#include <qpe/qpeapplication.h>
2#include <qtabwidget.h> 2#include <qtabwidget.h>
3#include <qcheckbox.h> 3#include <qcheckbox.h>
4#include <qcombobox.h> 4#include <qlistbox.h>
5#include <qpushbutton.h>
5 6
6#ifndef CONFIGDLG_H 7#ifndef CONFIGDLG_H
7#define CONFIGDLG_H 8#define CONFIGDLG_H
8 9
9class ConfigDlg : public QTabWidget 10class ConfigDlg : public QTabWidget
10{ 11{
11 Q_OBJECT 12 Q_OBJECT
12 13
13public: 14public:
14 ConfigDlg (); 15 ConfigDlg ();
15 16
16signals: 17signals:
17 void pickboardToggled(bool on_off); 18 void pickboardToggled(bool on_off);
18 void setMapToDefault(); 19 void setMapToDefault();
19 void setMapToFile(QString file); 20 void setMapToFile(QString file);
20 21
21private slots: 22private slots:
22 void pickTog(); 23 void pickTog();
23 void setMap(int index); 24 void setMap(int index);
25 void addMap();
26 void removeMap(int index);
24 27
25private: 28private:
26 QCheckBox *pick_button; 29 QCheckBox *pick_button;
27 QComboBox *map_combo; 30 QListBox *keymaps;
31 QPushButton *add_button;
32 QPushButton *remove_button;
28 33
29}; 34};
30 35
31#endif 36#endif
diff --git a/inputmethods/multikey/keyboard.cpp b/inputmethods/multikey/keyboard.cpp
index 2a80f1e..b71f929 100644
--- a/inputmethods/multikey/keyboard.cpp
+++ b/inputmethods/multikey/keyboard.cpp
@@ -20,33 +20,32 @@
20 20
21#include "keyboard.h" 21#include "keyboard.h"
22#include "configdlg.h" 22#include "configdlg.h"
23 23
24#include <qpe/global.h> 24#include <qpe/global.h>
25#include <qpe/qcopenvelope_qws.h> 25#include <qpe/qcopenvelope_qws.h>
26 26
27#include <qwindowsystem_qws.h> 27#include <qwindowsystem_qws.h>
28#include <qpainter.h> 28#include <qpainter.h>
29#include <qfontmetrics.h> 29#include <qfontmetrics.h>
30#include <qtimer.h> 30#include <qtimer.h>
31#include <qpe/qpeapplication.h> 31#include <qpe/qpeapplication.h>
32#include <qpe/config.h> 32#include <qpe/config.h>
33#include <ctype.h> 33#include <ctype.h>
34#include <qfile.h> 34#include <qfile.h>
35#include <qtextstream.h> 35#include <qtextstream.h>
36#include <iostream.h>
37 36
38#include <sys/utsname.h> 37#include <sys/utsname.h>
39 38
40 39
41#define USE_SMALL_BACKSPACE 40#define USE_SMALL_BACKSPACE
42 41
43/* Keyboard::Keyboard {{{1 */ 42/* Keyboard::Keyboard {{{1 */
44Keyboard::Keyboard(QWidget* parent, const char* _name, WFlags f) : 43Keyboard::Keyboard(QWidget* parent, const char* _name, WFlags f) :
45 QFrame(parent, _name, f), shift(0), lock(0), ctrl(0), 44 QFrame(parent, _name, f), shift(0), lock(0), ctrl(0),
46 alt(0), useLargeKeys(TRUE), usePicks(0), pressedKeyRow(-1), pressedKeyCol(-1), 45 alt(0), useLargeKeys(TRUE), usePicks(0), pressedKeyRow(-1), pressedKeyCol(-1),
47 unicode(-1), qkeycode(0), modifiers(0), schar(0), mchar(0), echar(0), 46 unicode(-1), qkeycode(0), modifiers(0), schar(0), mchar(0), echar(0),
48 configdlg(0) 47 configdlg(0)
49 48
50{ 49{
51 // get the default font 50 // get the default font
52 Config *config = new Config( "qpe" ); 51 Config *config = new Config( "qpe" );
@@ -64,32 +63,40 @@ Keyboard::Keyboard(QWidget* parent, const char* _name, WFlags f) :
64 picks = new KeyboardPicks( this ); 63 picks = new KeyboardPicks( this );
65 picks->setFont( QFont( familyStr, 10 ) ); 64 picks->setFont( QFont( familyStr, 10 ) );
66 picks->initialise(); 65 picks->initialise();
67 if (usePicks) { 66 if (usePicks) {
68 67
69 QObject::connect( picks, SIGNAL(key(ushort,ushort,ushort,bool,bool) ), 68 QObject::connect( picks, SIGNAL(key(ushort,ushort,ushort,bool,bool) ),
70 this, SIGNAL(key(ushort,ushort,ushort,bool,bool)) ); 69 this, SIGNAL(key(ushort,ushort,ushort,bool,bool)) );
71 70
72 } else picks->hide(); 71 } else picks->hide();
73 72
74 keys = new Keys(); 73 keys = new Keys();
75 74
76 repeatTimer = new QTimer( this ); 75 repeatTimer = new QTimer( this );
77 connect( repeatTimer, SIGNAL(timeout()), this, SLOT(repeat()) ); 76 connect( repeatTimer, SIGNAL(timeout()), this, SLOT(repeat()) );
78 77
79} 78}
79Keyboard::~Keyboard() {
80
81 if ( configdlg ) {
82 delete (ConfigDlg *) configdlg;
83 configdlg = 0;
84 }
85
86}
80 87
81/* Keyboard::resizeEvent {{{1 */ 88/* Keyboard::resizeEvent {{{1 */
82void Keyboard::resizeEvent(QResizeEvent*) 89void Keyboard::resizeEvent(QResizeEvent*)
83{ 90{
84 int ph = picks->sizeHint().height(); 91 int ph = picks->sizeHint().height();
85 picks->setGeometry( 0, 0, width(), ph ); 92 picks->setGeometry( 0, 0, width(), ph );
86 keyHeight = (height()-(usePicks ? ph : 0))/5; 93 keyHeight = (height()-(usePicks ? ph : 0))/5;
87 94
88 int nk; // number of keys? 95 int nk; // number of keys?
89 if ( useLargeKeys ) { 96 if ( useLargeKeys ) {
90 nk = 15; 97 nk = 15;
91 } else { 98 } else {
92 nk = 19; 99 nk = 19;
93 } 100 }
94 defaultKeyWidth = (width()/nk)/2; 101 defaultKeyWidth = (width()/nk)/2;
95 xoffs = (width()-defaultKeyWidth*nk)/2; // empty key spaces? 102 xoffs = (width()-defaultKeyWidth*nk)/2; // empty key spaces?
@@ -946,33 +953,32 @@ void Keys::setKeysFromFile(const char * filename) {
946 } 953 }
947 954
948 // other variables like lang & title 955 // other variables like lang & title
949 else if (buf.contains(QRegExp("^\\s*[a-zA-Z]+\\s*=\\s*[a-zA-Z0-9/]+\\s*$", FALSE, FALSE))) { 956 else if (buf.contains(QRegExp("^\\s*[a-zA-Z]+\\s*=\\s*[a-zA-Z0-9/]+\\s*$", FALSE, FALSE))) {
950 957
951 QTextStream tmp (buf, IO_ReadOnly); 958 QTextStream tmp (buf, IO_ReadOnly);
952 QString name, equals, value; 959 QString name, equals, value;
953 960
954 tmp >> name >> equals >> value; 961 tmp >> name >> equals >> value;
955 962
956 if (name == "lang") { 963 if (name == "lang") {
957 964
958 lang = value; 965 lang = value;
959 966
960 } 967 }
961 968
962 cout << name << " = " << value << "\n";
963 buf = t.readLine(); 969 buf = t.readLine();
964 } 970 }
965 // comments 971 // comments
966 else if (buf.contains(QRegExp("^\\s*#"))) { 972 else if (buf.contains(QRegExp("^\\s*#"))) {
967 973
968 buf = t.readLine(); 974 buf = t.readLine();
969 975
970 } else { // blank line, or garbage 976 } else { // blank line, or garbage
971 977
972 buf = t.readLine(); 978 buf = t.readLine();
973 979
974 } 980 }
975 981
976 } 982 }
977 f.close(); 983 f.close();
978 } 984 }
diff --git a/inputmethods/multikey/keyboard.h b/inputmethods/multikey/keyboard.h
index c2efe10..8ca50ea 100644
--- a/inputmethods/multikey/keyboard.h
+++ b/inputmethods/multikey/keyboard.h
@@ -79,32 +79,33 @@ private:
79 79
80 // only needed for keys like ctrl that can have multiple keys pressed at once 80 // only needed for keys like ctrl that can have multiple keys pressed at once
81 bool *pressed; 81 bool *pressed;
82 QPixmap *pix; 82 QPixmap *pix;
83 }; 83 };
84 84
85 QList<Key> keys[6]; 85 QList<Key> keys[6];
86 QMap<ushort,ushort> shiftMap; 86 QMap<ushort,ushort> shiftMap;
87 87
88}; 88};
89 89
90class Keyboard : public QFrame 90class Keyboard : public QFrame
91{ 91{
92 Q_OBJECT 92 Q_OBJECT
93public: 93public:
94 Keyboard( QWidget* parent=0, const char* name=0, WFlags f=0 ); 94 Keyboard( QWidget* parent=0, const char* name=0, WFlags f=0 );
95 ~Keyboard();
95 96
96 void resetState(); 97 void resetState();
97 98
98 void mousePressEvent(QMouseEvent*); 99 void mousePressEvent(QMouseEvent*);
99 void mouseReleaseEvent(QMouseEvent*); 100 void mouseReleaseEvent(QMouseEvent*);
100 void resizeEvent(QResizeEvent*); 101 void resizeEvent(QResizeEvent*);
101 void paintEvent(QPaintEvent* e); 102 void paintEvent(QPaintEvent* e);
102 //void timerEvent(QTimerEvent* e); 103 //void timerEvent(QTimerEvent* e);
103 void drawKeyboard( QPainter &p, int row = -1, int col = -1); 104 void drawKeyboard( QPainter &p, int row = -1, int col = -1);
104 105
105 QSize sizeHint() const; 106 QSize sizeHint() const;
106 107
107signals: 108signals:
108 void key( ushort scancode, ushort unicode, ushort modifiers, bool, bool ); 109 void key( ushort scancode, ushort unicode, ushort modifiers, bool, bool );
109 110
110private slots: 111private slots: