summaryrefslogtreecommitdiff
path: root/libopie2/opiecore/device/odevice.h
Unidiff
Diffstat (limited to 'libopie2/opiecore/device/odevice.h') (more/less context) (show whitespace changes)
-rw-r--r--libopie2/opiecore/device/odevice.h329
1 files changed, 329 insertions, 0 deletions
diff --git a/libopie2/opiecore/device/odevice.h b/libopie2/opiecore/device/odevice.h
new file mode 100644
index 0000000..bde6411
--- a/dev/null
+++ b/libopie2/opiecore/device/odevice.h
@@ -0,0 +1,329 @@
1/*
2                 This file is part of the Opie Project
3              Copyright (C) The Opie Team <opie-devel@handhelds.org>
4 =.
5 .=l.
6           .>+-=
7 _;:,     .>    :=|. This program is free software; you can
8.> <`_,   >  .   <= redistribute it and/or modify it under
9:`=1 )Y*s>-.--   : the terms of the GNU Library General Public
10.="- .-=="i,     .._ License as published by the Free Software
11 - .   .-<_>     .<> Foundation; either version 2 of the License,
12     ._= =}       : or (at your option) any later version.
13    .%`+i>       _;_.
14    .i_,=:_.      -<s. This program is distributed in the hope that
15     +  .  -:.       = it will be useful, but WITHOUT ANY WARRANTY;
16    : ..    .:,     . . . without even the implied warranty of
17    =_        +     =;=|` MERCHANTABILITY or FITNESS FOR A
18  _.=:.       :    :=>`: PARTICULAR PURPOSE. See the GNU
19..}^=.=       =       ; Library General Public License for more
20++=   -.     .`     .: details.
21 :     =  ...= . :.=-
22 -.   .:....=;==+<; You should have received a copy of the GNU
23  -_. . .   )=.  = Library General Public License along with
24    --        :-=` this library; see the file COPYING.LIB.
25 If not, write to the Free Software Foundation,
26 Inc., 59 Temple Place - Suite 330,
27 Boston, MA 02111-1307, USA.
28*/
29
30#ifndef ODEVICE_H_
31#define ODEVICE_H_
32
33#include <opie2/odevicebutton.h>
34
35/* QT */
36#include <qnamespace.h>
37#include <qobject.h>
38#include <qstring.h>
39#include <qstrlist.h>
40
41#include <qpe/qpeapplication.h> /* for Transformation enum.. */
42
43namespace Opie
44{
45 class ODeviceData;
46/**
47 * The available devices
48 */
49enum OModel {
50 Model_Unknown, // = 0
51
52 Model_Series_Mask = 0xff000000,
53
54 Model_iPAQ = ( 1 << 24 ),
55
56 Model_iPAQ_All = ( Model_iPAQ | 0xffffff ),
57 Model_iPAQ_H31xx = ( Model_iPAQ | 0x000001 ),
58 Model_iPAQ_H36xx = ( Model_iPAQ | 0x000002 ),
59 Model_iPAQ_H37xx = ( Model_iPAQ | 0x000004 ),
60 Model_iPAQ_H38xx = ( Model_iPAQ | 0x000008 ),
61 Model_iPAQ_H39xx = ( Model_iPAQ | 0x000010 ),
62 Model_iPAQ_H5xxx = ( Model_iPAQ | 0x000011 ),
63
64 Model_Jornada = ( 6 << 24 ),
65 Model_Jornada_56x = ( Model_Jornada | 0x000001 ),
66
67 Model_Zaurus = ( 2 << 24 ),
68
69 Model_Zaurus_SL5000 = ( Model_Zaurus | 0x000001 ),
70 Model_Zaurus_SL5500 = ( Model_Zaurus | 0x000002 ),
71 Model_Zaurus_SLA300 = ( Model_Zaurus | 0x000003 ),
72 Model_Zaurus_SLB600 = ( Model_Zaurus | 0x000004 ),
73 Model_Zaurus_SLC7x0 = ( Model_Zaurus | 0x000005 ),
74
75 Model_SIMpad = ( 3 << 24 ),
76
77 Model_SIMpad_All = ( Model_SIMpad | 0xffffff ),
78 Model_SIMpad_CL4 = ( Model_SIMpad | 0x000001 ),
79 Model_SIMpad_SL4 = ( Model_SIMpad | 0x000002 ),
80 Model_SIMpad_SLC = ( Model_SIMpad | 0x000004 ),
81 Model_SIMpad_TSinus = ( Model_SIMpad | 0x000008 ),
82
83 Model_Ramses = ( 4 << 24 ),
84
85 Model_Ramses_All = ( Model_Ramses | 0xffffff ),
86 Model_Ramses_MNCI = ( Model_Ramses | 0x000001 ),
87
88 Model_Yopy = ( 5 << 24 ),
89
90 Model_Yopy_All = ( Model_Yopy | 0xffffff ),
91 Model_Yopy_3000 = ( Model_Yopy | 0x000001 ),
92 Model_Yopy_3500 = ( Model_Yopy | 0x000002 ),
93 Model_Yopy_3700 = ( Model_Yopy | 0x000003 ),
94
95};
96
97/**
98 * The vendor of the device
99 */
100enum OVendor {
101 Vendor_Unknown,
102
103 Vendor_HP,
104 Vendor_Sharp,
105 Vendor_SIEMENS,
106 Vendor_MundN,
107 Vendor_GMate,
108};
109
110/**
111 * The System used
112 */
113enum OSystem {
114 System_Unknown,
115
116 System_Familiar,
117 System_Zaurus,
118 System_OpenZaurus,
119 System_Linupy,
120};
121
122enum OLedState {
123 Led_Off,
124 Led_On,
125 Led_BlinkSlow,
126 Led_BlinkFast
127};
128
129enum OLed {
130 Led_Mail,
131 Led_Power,
132 Led_BlueTooth
133};
134
135enum OHardKey {
136 HardKey_Datebook = Qt::Key_F9,
137 HardKey_Contacts = Qt::Key_F10,
138 HardKey_Menu = Qt::Key_F11,
139 HardKey_Home = Qt::Key_F12,
140 HardKey_Mail = Qt::Key_F13,
141 HardKey_Record = Qt::Key_F24,
142 HardKey_Suspend = Qt::Key_F34,
143 HardKey_Backlight = Qt::Key_F35,
144 HardKey_Action = Qt::Key_F10,
145 HardKey_OK = Qt::Key_F11,
146 HardKey_End = Qt::Key_F12,
147};
148
149enum ODirection {
150 CW = 0,
151 CCW = 1,
152 Flip = 2,
153};
154
155enum OHingeStatus {
156 CASE_CLOSED = 3,
157 CASE_PORTRAIT = 2,
158 CASE_LANDSCAPE = 0,
159 CASE_UNKNOWN = 1,
160};
161
162/**
163 * A singleton which gives informations about device specefic option
164 * like the Hardware used, LEDs, the Base Distribution and
165 * hardware key mappings.
166 *
167 * @short A small class for device specefic options
168 * @see QObject
169 * @author Robert Griebl
170 * @version 1.0
171 */
172class ODevice : public QObject
173{
174 Q_OBJECT
175
176private:
177 /* disable copy */
178 ODevice ( const ODevice & );
179
180protected:
181 ODevice();
182 virtual void init();
183 virtual void initButtons();
184
185 ODeviceData *d;
186
187public:
188 // sandman do we want to allow destructions? -zecke?
189 virtual ~ODevice();
190
191 static ODevice *inst();
192
193 // information
194
195 QString modelString() const;
196 OModel model() const;
197 inline OModel series() const { return (OModel) ( model() & Model_Series_Mask ); }
198
199 QString vendorString() const;
200 OVendor vendor() const;
201
202 QString systemString() const;
203 OSystem system() const;
204
205 QString systemVersionString() const;
206
207 virtual Transformation rotation() const;
208 virtual ODirection direction() const;
209
210 // system
211
212 virtual bool setSoftSuspend ( bool on );
213 virtual bool suspend();
214
215 virtual bool setDisplayStatus ( bool on );
216 virtual bool setDisplayBrightness ( int brightness );
217 virtual int displayBrightnessResolution() const;
218 virtual bool setDisplayContrast ( int contrast );
219 virtual int displayContrastResolution() const;
220
221 // don't add new virtual methods, use this:
222 ///*virtual */ void boo(int i ) { return virtual_hook(1,&i); };
223 // and in your subclass do do overwrite
224 //protected virtual int virtual_hook(int, void *)
225 // which is defined below
226
227 // input / output
228 //FIXME playAlarmSound and al might be better -zecke
229 virtual void alarmSound();
230 virtual void keySound();
231 virtual void touchSound();
232
233 virtual QValueList <OLed> ledList() const;
234 virtual QValueList <OLedState> ledStateList ( OLed led ) const;
235 virtual OLedState ledState ( OLed led ) const;
236 virtual bool setLedState ( OLed led, OLedState st );
237
238 virtual bool hasLightSensor() const;
239 virtual int readLightSensor();
240 virtual int lightSensorResolution() const;
241
242 virtual bool hasHingeSensor() const;
243 virtual OHingeStatus readHingeSensor();
244
245 const QStrList &allowedCpuFrequencies() const;
246 bool setCurrentCpuFrequency(uint index);
247
248 /**
249 * Returns the available buttons on this device. The number and location
250 * of buttons will vary depending on the device. Button numbers will be assigned
251 * by the device manufacturer and will be from most preferred button to least preffered
252 * button. Note that this list only contains "user mappable" buttons.
253 */
254 const QValueList<ODeviceButton> &buttons() /* ### make const */;
255
256 /**
257 * Returns the DeviceButton for the \a keyCode. If \a keyCode is not found, it
258 * returns 0L
259 */
260 const ODeviceButton *buttonForKeycode ( ushort keyCode );
261
262 /**
263 * Reassigns the pressed action for \a button. To return to the factory
264 * default pass an empty string as \a qcopMessage.
265 */
266 void remapPressedAction ( int button, const OQCopMessage &qcopMessage );
267
268 /**
269 * Reassigns the held action for \a button. To return to the factory
270 * default pass an empty string as \a qcopMessage.
271 */
272 void remapHeldAction ( int button, const OQCopMessage &qcopMessage );
273
274 /**
275 * How long (in ms) you have to press a button for a "hold" action
276 */
277 uint buttonHoldTime() const;
278
279signals:
280 void buttonMappingChanged();
281
282private slots:
283 void systemMessage ( const QCString &, const QByteArray & );
284
285protected:
286 void reloadButtonMapping();
287 /* ugly virtual hook */
288 virtual void virtual_hook( int id, void* data );
289};
290
291class ODeviceData {
292
293 public:
294 QString m_vendorstr;
295 OVendor m_vendor;
296
297 QString m_modelstr;
298 OModel m_model;
299
300 QString m_systemstr;
301 OSystem m_system;
302
303 QString m_sysverstr;
304
305 Transformation m_rotation;
306 ODirection m_direction;
307
308 QValueList <ODeviceButton> *m_buttons;
309 uint m_holdtime;
310 QStrList *m_cpu_frequencies;
311};
312
313}
314
315static inline bool isQWS()
316{
317 return qApp ? ( qApp->type() == QApplication::GuiServer ) : false;
318}
319
320static QCString makeChannel ( const char *str )
321{
322 if ( str && !::strchr ( str, '/' ))
323 return QCString ( "QPE/Application/" ) + str;
324 else
325 return str;
326}
327
328#endif
329