summaryrefslogtreecommitdiff
authormickeyl <mickeyl>2004-04-08 23:01:52 (UTC)
committer mickeyl <mickeyl>2004-04-08 23:01:52 (UTC)
commit502281033b395bb5f089a2bbaa86f9ba423dec84 (patch) (unidiff)
tree2739929fd7dcae3a43383ca8afc1ab5758efe7a3
parent5b27c256120f78bc922e62f1d7ba9c91a585749c (diff)
downloadopie-502281033b395bb5f089a2bbaa86f9ba423dec84.zip
opie-502281033b395bb5f089a2bbaa86f9ba423dec84.tar.gz
opie-502281033b395bb5f089a2bbaa86f9ba423dec84.tar.bz2
#include <qpe/global.h>
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--core/launcher/inputmethods.cpp5
1 files changed, 3 insertions, 2 deletions
diff --git a/core/launcher/inputmethods.cpp b/core/launcher/inputmethods.cpp
index cef16bf..a0e8939 100644
--- a/core/launcher/inputmethods.cpp
+++ b/core/launcher/inputmethods.cpp
@@ -1,219 +1,220 @@
1/********************************************************************** 1/**********************************************************************
2** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. 2** Copyright (C) 2000-2002 Trolltech AS. All rights reserved.
3** 3**
4** This file is part of the Qtopia Environment. 4** This file is part of the Qtopia Environment.
5** 5**
6** This file may be distributed and/or modified under the terms of the 6** This file may be distributed and/or modified under the terms of the
7** GNU General Public License version 2 as published by the Free Software 7** GNU General Public License version 2 as published by the Free Software
8** Foundation and appearing in the file LICENSE.GPL included in the 8** Foundation and appearing in the file LICENSE.GPL included in the
9** packaging of this file. 9** packaging of this file.
10** 10**
11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 11** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 12** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
13** 13**
14** See http://www.trolltech.com/gpl/ for GPL licensing information. 14** See http://www.trolltech.com/gpl/ for GPL licensing information.
15** 15**
16** Contact info@trolltech.com if any conditions of this licensing are 16** Contact info@trolltech.com if any conditions of this licensing are
17** not clear to you. 17** not clear to you.
18** 18**
19**********************************************************************/ 19**********************************************************************/
20 20
21#define QTOPIA_INTERNAL_LANGLIST 21#define QTOPIA_INTERNAL_LANGLIST
22#include "inputmethods.h" 22#include "inputmethods.h"
23 23
24/* OPIE */ 24/* OPIE */
25#include <opie2/odebug.h> 25#include <opie2/odebug.h>
26#include <qtopia/config.h> 26#include <qpe/config.h>
27#include <qtopia/qpeapplication.h> 27#include <qpe/global.h>
28#include <qpe/qpeapplication.h>
28using namespace Opie::Core; 29using namespace Opie::Core;
29 30
30/* QT */ 31/* QT */
31#include <qpopupmenu.h> 32#include <qpopupmenu.h>
32#include <qtoolbutton.h> 33#include <qtoolbutton.h>
33#include <qwidgetstack.h> 34#include <qwidgetstack.h>
34#include <qlayout.h> 35#include <qlayout.h>
35#include <qdir.h> 36#include <qdir.h>
36#include <qtl.h> 37#include <qtl.h>
37#ifdef Q_WS_QWS 38#ifdef Q_WS_QWS
38#include <qwindowsystem_qws.h> 39#include <qwindowsystem_qws.h>
39#include <qwsevent_qws.h> 40#include <qwsevent_qws.h>
40#include <qcopchannel_qws.h> 41#include <qcopchannel_qws.h>
41#endif 42#endif
42 43
43/* STD */ 44/* STD */
44#include <stdlib.h> 45#include <stdlib.h>
45 46
46/* XPM */ 47/* XPM */
47static const char * tri_xpm[]={ 48static const char * tri_xpm[]={
48"9 9 2 1", 49"9 9 2 1",
49"a c #000000", 50"a c #000000",
50". c None", 51". c None",
51".........", 52".........",
52".........", 53".........",
53".........", 54".........",
54"....a....", 55"....a....",
55"...aaa...", 56"...aaa...",
56"..aaaaa..", 57"..aaaaa..",
57".aaaaaaa.", 58".aaaaaaa.",
58".........", 59".........",
59"........."}; 60"........."};
60 61
61int InputMethod::operator <(const InputMethod& o) const 62int InputMethod::operator <(const InputMethod& o) const
62{ 63{
63 return name() < o.name(); 64 return name() < o.name();
64} 65}
65int InputMethod::operator >(const InputMethod& o) const 66int InputMethod::operator >(const InputMethod& o) const
66{ 67{
67 return name() > o.name(); 68 return name() > o.name();
68} 69}
69int InputMethod::operator <=(const InputMethod& o) const 70int InputMethod::operator <=(const InputMethod& o) const
70{ 71{
71 return name() <= o.name(); 72 return name() <= o.name();
72} 73}
73 74
74 75
75/* 76/*
76 Slightly hacky: We use WStyle_Tool as a flag to say "this widget 77 Slightly hacky: We use WStyle_Tool as a flag to say "this widget
77 belongs to the IM system, so clicking it should not cause a reset". 78 belongs to the IM system, so clicking it should not cause a reset".
78 */ 79 */
79class IMToolButton : public QToolButton 80class IMToolButton : public QToolButton
80{ 81{
81public: 82public:
82 IMToolButton::IMToolButton( QWidget *parent ) : QToolButton( parent ) 83 IMToolButton::IMToolButton( QWidget *parent ) : QToolButton( parent )
83 { setWFlags( WStyle_Tool ); } 84 { setWFlags( WStyle_Tool ); }
84}; 85};
85 86
86 87
87InputMethods::InputMethods( QWidget *parent ) : 88InputMethods::InputMethods( QWidget *parent ) :
88 QWidget( parent, "InputMethods", WStyle_Tool | WStyle_Customize ), 89 QWidget( parent, "InputMethods", WStyle_Tool | WStyle_Customize ),
89 mkeyboard(0), imethod(0) 90 mkeyboard(0), imethod(0)
90{ 91{
91 Config cfg( "Launcher" ); 92 Config cfg( "Launcher" );
92 cfg.setGroup( "InputMethods" ); 93 cfg.setGroup( "InputMethods" );
93 inputWidgetStyle = QWidget::WStyle_Customize | QWidget::WStyle_StaysOnTop | QWidget::WGroupLeader | QWidget::WStyle_Tool; 94 inputWidgetStyle = QWidget::WStyle_Customize | QWidget::WStyle_StaysOnTop | QWidget::WGroupLeader | QWidget::WStyle_Tool;
94 inputWidgetStyle |= cfg.readBoolEntry( "Float", false ) ? QWidget::WStyle_DialogBorder : 0; 95 inputWidgetStyle |= cfg.readBoolEntry( "Float", false ) ? QWidget::WStyle_DialogBorder : 0;
95 inputWidgetWidth = cfg.readNumEntry( "Width", 100 ); 96 inputWidgetWidth = cfg.readNumEntry( "Width", 100 );
96 97
97 setBackgroundMode( PaletteBackground ); 98 setBackgroundMode( PaletteBackground );
98 QHBoxLayout *hbox = new QHBoxLayout( this ); 99 QHBoxLayout *hbox = new QHBoxLayout( this );
99 100
100 kbdButton = new IMToolButton( this); 101 kbdButton = new IMToolButton( this);
101 kbdButton->setFocusPolicy(NoFocus); 102 kbdButton->setFocusPolicy(NoFocus);
102 kbdButton->setToggleButton( TRUE ); 103 kbdButton->setToggleButton( TRUE );
103 if (parent->sizeHint().height() > 0) 104 if (parent->sizeHint().height() > 0)
104 kbdButton->setFixedHeight( parent->sizeHint().height() ); 105 kbdButton->setFixedHeight( parent->sizeHint().height() );
105 kbdButton->setFixedWidth( 32 ); 106 kbdButton->setFixedWidth( 32 );
106 kbdButton->setAutoRaise( TRUE ); 107 kbdButton->setAutoRaise( TRUE );
107 kbdButton->setUsesBigPixmap( TRUE ); 108 kbdButton->setUsesBigPixmap( TRUE );
108 hbox->addWidget( kbdButton ); 109 hbox->addWidget( kbdButton );
109 connect( kbdButton, SIGNAL(toggled(bool)), this, SLOT(showKbd(bool)) ); 110 connect( kbdButton, SIGNAL(toggled(bool)), this, SLOT(showKbd(bool)) );
110 111
111 kbdChoice = new IMToolButton( this ); 112 kbdChoice = new IMToolButton( this );
112 kbdChoice->setFocusPolicy(NoFocus); 113 kbdChoice->setFocusPolicy(NoFocus);
113 kbdChoice->setPixmap( QPixmap( (const char **)tri_xpm ) ); 114 kbdChoice->setPixmap( QPixmap( (const char **)tri_xpm ) );
114 if (parent->sizeHint().height() > 0) 115 if (parent->sizeHint().height() > 0)
115 kbdChoice->setFixedHeight( parent->sizeHint().height() ); 116 kbdChoice->setFixedHeight( parent->sizeHint().height() );
116 kbdChoice->setFixedWidth( 13 ); 117 kbdChoice->setFixedWidth( 13 );
117 kbdChoice->setAutoRaise( TRUE ); 118 kbdChoice->setAutoRaise( TRUE );
118 hbox->addWidget( kbdChoice ); 119 hbox->addWidget( kbdChoice );
119 connect( kbdChoice, SIGNAL(clicked()), this, SLOT(chooseKbd()) ); 120 connect( kbdChoice, SIGNAL(clicked()), this, SLOT(chooseKbd()) );
120 121
121 connect( (QPEApplication*)qApp, SIGNAL(clientMoused()), 122 connect( (QPEApplication*)qApp, SIGNAL(clientMoused()),
122 this, SLOT(resetStates()) ); 123 this, SLOT(resetStates()) );
123 124
124 125
125 imButton = new QWidgetStack( this ); // later a widget stack 126 imButton = new QWidgetStack( this ); // later a widget stack
126 imButton->setFocusPolicy(NoFocus); 127 imButton->setFocusPolicy(NoFocus);
127 if (parent->sizeHint().height() > 0) 128 if (parent->sizeHint().height() > 0)
128 imButton->setFixedHeight( parent->sizeHint().height() ); 129 imButton->setFixedHeight( parent->sizeHint().height() );
129 hbox->addWidget(imButton); 130 hbox->addWidget(imButton);
130 131
131 imChoice = new QToolButton( this ); 132 imChoice = new QToolButton( this );
132 imChoice->setFocusPolicy(NoFocus); 133 imChoice->setFocusPolicy(NoFocus);
133 imChoice->setPixmap( QPixmap( (const char **)tri_xpm ) ); 134 imChoice->setPixmap( QPixmap( (const char **)tri_xpm ) );
134 if (parent->sizeHint().height() > 0) 135 if (parent->sizeHint().height() > 0)
135 imChoice->setFixedHeight( parent->sizeHint().height() ); 136 imChoice->setFixedHeight( parent->sizeHint().height() );
136 imChoice->setFixedWidth( 13 ); 137 imChoice->setFixedWidth( 13 );
137 imChoice->setAutoRaise( TRUE ); 138 imChoice->setAutoRaise( TRUE );
138 hbox->addWidget( imChoice ); 139 hbox->addWidget( imChoice );
139 connect( imChoice, SIGNAL(clicked()), this, SLOT(chooseIm()) ); 140 connect( imChoice, SIGNAL(clicked()), this, SLOT(chooseIm()) );
140 141
141 loadInputMethods(); 142 loadInputMethods();
142 143
143 QCopChannel *channel = new QCopChannel( "QPE/IME", this ); 144 QCopChannel *channel = new QCopChannel( "QPE/IME", this );
144 connect( channel, SIGNAL(received(const QCString&,const QByteArray&)), 145 connect( channel, SIGNAL(received(const QCString&,const QByteArray&)),
145 this, SLOT(qcopReceive(const QCString&,const QByteArray&)) ); 146 this, SLOT(qcopReceive(const QCString&,const QByteArray&)) );
146} 147}
147 148
148InputMethods::~InputMethods() 149InputMethods::~InputMethods()
149{ 150{
150 Config cfg("qpe"); 151 Config cfg("qpe");
151 cfg.setGroup("InputMethod"); 152 cfg.setGroup("InputMethod");
152 if (imethod) 153 if (imethod)
153 cfg.writeEntry("im", imethod->name() ); 154 cfg.writeEntry("im", imethod->name() );
154 if (mkeyboard) 155 if (mkeyboard)
155 cfg.writeEntry("current", mkeyboard->name() ); 156 cfg.writeEntry("current", mkeyboard->name() );
156 157
157 unloadInputMethods(); 158 unloadInputMethods();
158} 159}
159 160
160void InputMethods::hideInputMethod() 161void InputMethods::hideInputMethod()
161{ 162{
162 kbdButton->setOn( FALSE ); 163 kbdButton->setOn( FALSE );
163} 164}
164 165
165void InputMethods::showInputMethod() 166void InputMethods::showInputMethod()
166{ 167{
167 kbdButton->setOn( TRUE ); 168 kbdButton->setOn( TRUE );
168} 169}
169 170
170void InputMethods::showInputMethod(const QString& name) 171void InputMethods::showInputMethod(const QString& name)
171{ 172{
172 int i = 0; 173 int i = 0;
173 QValueList<InputMethod>::Iterator it; 174 QValueList<InputMethod>::Iterator it;
174 InputMethod *im = 0; 175 InputMethod *im = 0;
175 for ( it = inputMethodList.begin(); it != inputMethodList.end(); ++it, i++ ) { 176 for ( it = inputMethodList.begin(); it != inputMethodList.end(); ++it, i++ ) {
176 QString lname = (*it).libName.mid((*it).libName.findRev('/') + 1); 177 QString lname = (*it).libName.mid((*it).libName.findRev('/') + 1);
177 if ( (*it).name() == name || lname == name ) { 178 if ( (*it).name() == name || lname == name ) {
178 im = &(*it); 179 im = &(*it);
179 break; 180 break;
180 } 181 }
181 } 182 }
182 if ( im ) 183 if ( im )
183 chooseKeyboard(im); 184 chooseKeyboard(im);
184} 185}
185 186
186void InputMethods::resetStates() 187void InputMethods::resetStates()
187{ 188{
188 if ( mkeyboard && !mkeyboard->newIM ) 189 if ( mkeyboard && !mkeyboard->newIM )
189 mkeyboard->interface->resetState(); 190 mkeyboard->interface->resetState();
190} 191}
191 192
192QRect InputMethods::inputRect() const 193QRect InputMethods::inputRect() const
193{ 194{
194 if ( !mkeyboard || !mkeyboard->widget || !mkeyboard->widget->isVisible() ) 195 if ( !mkeyboard || !mkeyboard->widget || !mkeyboard->widget->isVisible() )
195 return QRect(); 196 return QRect();
196 else 197 else
197 return mkeyboard->widget->geometry(); 198 return mkeyboard->widget->geometry();
198} 199}
199 200
200void InputMethods::unloadInputMethods() 201void InputMethods::unloadInputMethods()
201{ 202{
202 unloadMethod( inputMethodList ); 203 unloadMethod( inputMethodList );
203 unloadMethod( inputModifierList ); 204 unloadMethod( inputModifierList );
204 inputMethodList.clear(); 205 inputMethodList.clear();
205 inputModifierList.clear(); 206 inputModifierList.clear();
206 207
207} 208}
208 209
209void InputMethods::unloadMethod( QValueList<InputMethod>& list ) { 210void InputMethods::unloadMethod( QValueList<InputMethod>& list ) {
210 QValueList<InputMethod>::Iterator it; 211 QValueList<InputMethod>::Iterator it;
211 212
212 for (it = list.begin(); it != list.end(); ++it ) 213 for (it = list.begin(); it != list.end(); ++it )
213 (*it).releaseInterface(); 214 (*it).releaseInterface();
214 215
215} 216}
216 217
217 218
218QStringList InputMethods::plugins()const { 219QStringList InputMethods::plugins()const {
219 QString path = QPEApplication::qpeDir() + "/plugins/inputmethods"; 220 QString path = QPEApplication::qpeDir() + "/plugins/inputmethods";