Diffstat (limited to 'noncore/unsupported/libopie/odevice.h') (more/less context) (ignore whitespace changes)
-rw-r--r-- | noncore/unsupported/libopie/odevice.h | 302 |
1 files changed, 302 insertions, 0 deletions
diff --git a/noncore/unsupported/libopie/odevice.h b/noncore/unsupported/libopie/odevice.h new file mode 100644 index 0000000..fc41079 --- a/dev/null +++ b/noncore/unsupported/libopie/odevice.h @@ -0,0 +1,302 @@ +/* This file is part of the OPIE libraries + Copyright (C) 2002 Robert Griebl (sandman@handhelds.org) + Copyright (C) 2003 Holger 'zecke' Freyther (zecke@handhelds.org) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public License + along with this library; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. +*/ + +#ifndef _LIBOPIE_ODEVICE_H_ +#define _LIBOPIE_ODEVICE_H_ + +#include <qobject.h> +#include <qstring.h> +#include <qnamespace.h> +#include <qstrlist.h> + +#include <opie/odevicebutton.h> + +#include <qpe/qpeapplication.h> /* for Transformation enum.. */ + +class ODeviceData; + +namespace Opie { + +/** + * The available devices + */ +enum OModel { + Model_Unknown, // = 0 + + Model_Series_Mask = 0xff000000, + + Model_iPAQ = ( 1 << 24 ), + + Model_iPAQ_All = ( Model_iPAQ | 0xffffff ), + Model_iPAQ_H31xx = ( Model_iPAQ | 0x000001 ), + Model_iPAQ_H36xx = ( Model_iPAQ | 0x000002 ), + Model_iPAQ_H37xx = ( Model_iPAQ | 0x000004 ), + Model_iPAQ_H38xx = ( Model_iPAQ | 0x000008 ), + Model_iPAQ_H39xx = ( Model_iPAQ | 0x000010 ), + Model_iPAQ_H5xxx = ( Model_iPAQ | 0x000011 ), + + Model_Jornada = ( 6 << 24 ), + Model_Jornada_56x = ( Model_Jornada | 0x000001 ), + + Model_Zaurus = ( 2 << 24 ), + + Model_Zaurus_SL5000 = ( Model_Zaurus | 0x000001 ), + Model_Zaurus_SL5500 = ( Model_Zaurus | 0x000002 ), + Model_Zaurus_SLA300 = ( Model_Zaurus | 0x000003 ), + Model_Zaurus_SLB600 = ( Model_Zaurus | 0x000004 ), + Model_Zaurus_SLC7x0 = ( Model_Zaurus | 0x000005 ), + + Model_SIMpad = ( 3 << 24 ), + + Model_SIMpad_All = ( Model_SIMpad | 0xffffff ), + Model_SIMpad_CL4 = ( Model_SIMpad | 0x000001 ), + Model_SIMpad_SL4 = ( Model_SIMpad | 0x000002 ), + Model_SIMpad_SLC = ( Model_SIMpad | 0x000004 ), + Model_SIMpad_TSinus = ( Model_SIMpad | 0x000008 ), + + Model_Ramses = ( 4 << 24 ), + + Model_Ramses_All = ( Model_Ramses | 0xffffff ), + Model_Ramses_MNCI = ( Model_Ramses | 0x000001 ), + + Model_Yopy = ( 5 << 24 ), + + Model_Yopy_All = ( Model_Yopy | 0xffffff ), + Model_Yopy_3000 = ( Model_Yopy | 0x000001 ), + Model_Yopy_3500 = ( Model_Yopy | 0x000002 ), + Model_Yopy_3700 = ( Model_Yopy | 0x000003 ), + +}; + +/** + * The vendor of the device + */ +enum OVendor { + Vendor_Unknown, + + Vendor_HP, + Vendor_Sharp, + Vendor_SIEMENS, + Vendor_MundN, + Vendor_GMate, +}; + +/** + * The System used + */ +enum OSystem { + System_Unknown, + + System_Familiar, + System_Zaurus, + System_OpenZaurus, + System_Linupy, +}; + +enum OLedState { + Led_Off, + Led_On, + Led_BlinkSlow, + Led_BlinkFast +}; + +enum OLed { + Led_Mail, + Led_Power, + Led_BlueTooth +}; + +enum OHardKey { + HardKey_Datebook = Qt::Key_F9, + HardKey_Contacts = Qt::Key_F10, + HardKey_Menu = Qt::Key_F11, + HardKey_Home = Qt::Key_F12, + HardKey_Mail = Qt::Key_F13, + HardKey_Record = Qt::Key_F24, + HardKey_Suspend = Qt::Key_F34, + HardKey_Backlight = Qt::Key_F35, + HardKey_Action = Qt::Key_F10, + HardKey_OK = Qt::Key_F11, + HardKey_End = Qt::Key_F12, +}; + +enum ODirection { + CW = 0, + CCW = 1, + Flip = 2, +}; + +enum OHingeStatus { + CASE_CLOSED = 3, + CASE_PORTRAIT = 2, + CASE_LANDSCAPE = 0, + CASE_UNKNOWN = 1, +}; + +/** + * A singleton which gives informations about device specefic option + * like the Hardware used, LEDs, the Base Distribution and + * hardware key mappings. + * + * @short A small class for device specefic options + * @see QObject + * @author Robert Griebl + * @version 1.0 + */ +class ODevice : public QObject { + Q_OBJECT + +private: + /* disable copy */ + ODevice ( const ODevice & ); + +protected: + ODevice ( ); + virtual void init ( ); + virtual void initButtons ( ); + + ODeviceData *d; + +public: + // sandman do we want to allow destructions? -zecke? + virtual ~ODevice ( ); + + static ODevice *inst ( ); + + // information + + QString modelString ( ) const; + OModel model ( ) const; + inline OModel series ( ) const { return (OModel) ( model ( ) & Model_Series_Mask ); } + + QString vendorString ( ) const; + OVendor vendor ( ) const; + + QString systemString ( ) const; + OSystem system ( ) const; + + QString systemVersionString ( ) const; + + /*virtual*/ Transformation rotation ( ) const; + /*virtual*/ ODirection direction ( ) const; + +// system + + virtual bool setSoftSuspend ( bool on ); + virtual bool suspend ( ); + + virtual bool setDisplayStatus ( bool on ); + virtual bool setDisplayBrightness ( int brightness ); + virtual int displayBrightnessResolution ( ) const; + virtual bool setDisplayContrast ( int contrast ); + virtual int displayContrastResolution ( ) const; + + // don't add new virtual methods, use this: + // /*virtual */ void boo(int i ) { return virtual_hook(1,&i); }; + // and in your subclass do do overwrite + // protected virtual int virtual_hook(int, void *) + // which is defined below + + // input / output + //FIXME playAlarmSound and al might be better -zecke + virtual void alarmSound ( ); + virtual void keySound ( ); + virtual void touchSound ( ); + + virtual QValueList <OLed> ledList ( ) const; + virtual QValueList <OLedState> ledStateList ( OLed led ) const; + virtual OLedState ledState ( OLed led ) const; + virtual bool setLedState ( OLed led, OLedState st ); + + virtual bool hasLightSensor ( ) const; + virtual int readLightSensor ( ); + virtual int lightSensorResolution ( ) const; + + /*virtual*/ bool hasHingeSensor ( ) const; + /*virtual*/ OHingeStatus readHingeSensor ( ); + + const QStrList &allowedCpuFrequencies() const; + bool setCurrentCpuFrequency(uint index); + + /** + * Returns the available buttons on this device. The number and location + * of buttons will vary depending on the device. Button numbers will be assigned + * by the device manufacturer and will be from most preferred button to least preffered + * button. Note that this list only contains "user mappable" buttons. + * + * @todo ### make const + */ + const QValueList<ODeviceButton> &buttons ( ) /** /todo ### make const */; + + /** + * Returns the DeviceButton for the \a keyCode. If \a keyCode is not found, it + * returns 0L + */ + const ODeviceButton *buttonForKeycode ( ushort keyCode ); + + /** + * Reassigns the pressed action for \a button. To return to the factory + * default pass an empty string as \a qcopMessage. + */ + void remapPressedAction ( int button, const OQCopMessage &qcopMessage ); + + /** + * Reassigns the held action for \a button. To return to the factory + * default pass an empty string as \a qcopMessage. + */ + void remapHeldAction ( int button, const OQCopMessage &qcopMessage ); + + /** + * How long (in ms) you have to press a button for a "hold" action + */ + uint buttonHoldTime ( ) const; + +signals: + void buttonMappingChanged ( ); + +private slots: + void systemMessage ( const QCString &, const QByteArray & ); + +protected: + void reloadButtonMapping ( ); + /* ugly virtual hook */ + virtual void virtual_hook( int id, void* data ); + +protected: + enum { VIRTUAL_ROTATION = 0x200, VIRTUAL_DIRECTION, + VIRTUAL_HAS_HINGE, VIRTUAL_HINGE }; + struct VirtRotation { + Transformation trans; + }; + struct VirtDirection { + ODirection direct; + }; + struct VirtHasHinge { + bool hasHinge; + }; + struct VirtHingeStatus { + OHingeStatus hingeStat; + }; +}; + +} + +#endif + |