-rw-r--r-- | libopie2/opiecore/device/odevice.h | 65 |
1 files changed, 35 insertions, 30 deletions
diff --git a/libopie2/opiecore/device/odevice.h b/libopie2/opiecore/device/odevice.h index 1eb5959..c6306e7 100644 --- a/libopie2/opiecore/device/odevice.h +++ b/libopie2/opiecore/device/odevice.h @@ -1,416 +1,421 @@ /* This file is part of the Opie Project (C) 2002-2006 The Opie Team <opie-devel@handhelds.org> =. .=l. .>+-= _;:, .> :=|. This program is free software; you can .> <`_, > . <= redistribute it and/or modify it under :`=1 )Y*s>-.-- : the terms of the GNU Library General Public .="- .-=="i, .._ License as published by the Free Software - . .-<_> .<> Foundation; version 2 of the License. ._= =} : .%`+i> _;_. .i_,=:_. -<s. This program 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 ODEVICE_H_ #define ODEVICE_H_ /* OPIE */ #include <opie2/odevicebutton.h> #include <qpe/qpeapplication.h> /* for Transformation enum.. */ /* QT */ #include <qnamespace.h> #include <qobject.h> #include <qstring.h> #include <qstrlist.h> #include <qwindowsystem_qws.h> class Sound; namespace Opie{ namespace Core{ class ODeviceData; /** * The available devices */ enum OModel { Model_Unknown, // = 0 Model_Series_Mask = 0xffff0000, Model_iPAQ = ( 1 << 16 ), Model_iPAQ_All = ( Model_iPAQ | 0xffff ), Model_iPAQ_H31xx = ( Model_iPAQ | 0x0001 ), Model_iPAQ_H36xx = ( Model_iPAQ | 0x0002 ), - Model_iPAQ_H37xx = ( Model_iPAQ | 0x0003 ), - Model_iPAQ_H38xx = ( Model_iPAQ | 0x0004 ), - Model_iPAQ_H39xx = ( Model_iPAQ | 0x0005 ), - Model_iPAQ_H5xxx = ( Model_iPAQ | 0x0006 ), - Model_iPAQ_H22xx = ( Model_iPAQ | 0x0007 ), - Model_iPAQ_H191x = ( Model_iPAQ | 0x0008 ), - Model_iPAQ_H1940 = ( Model_iPAQ | 0x0009 ), - Model_iPAQ_HX4700 = ( Model_iPAQ | 0x000A ), - Model_iPAQ_H4xxx = ( Model_iPAQ | 0x000b ), - Model_Jornada = ( 6 << 16 ), + Model_iPAQ_H37xx = ( Model_iPAQ | 0x0004 ), + Model_iPAQ_H38xx = ( Model_iPAQ | 0x0008 ), + Model_iPAQ_H39xx = ( Model_iPAQ | 0x0010 ), + Model_iPAQ_H5xxx = ( Model_iPAQ | 0x0020 ), + Model_iPAQ_H22xx = ( Model_iPAQ | 0x0040 ), + Model_iPAQ_H191x = ( Model_iPAQ | 0x0080 ), + Model_iPAQ_H1940 = ( Model_iPAQ | 0x0100 ), + Model_iPAQ_HX4700 = ( Model_iPAQ | 0x0200 ), + Model_iPAQ_H4xxx = ( Model_iPAQ | 0x0400 ), + + Model_Jornada = ( 3 << 17 ), + Model_Jornada_56x = ( Model_Jornada | 0x0001 ), Model_Jornada_720 = ( Model_Jornada | 0x0002 ), - Model_Jornada_820 = ( Model_Jornada | 0x0003 ), + Model_Jornada_820 = ( Model_Jornada | 0x0004 ), Model_Zaurus = ( 2 << 16 ), Model_Zaurus_SL5000 = ( Model_Zaurus | 0x0001 ), Model_Zaurus_SL5500 = ( Model_Zaurus | 0x0002 ), - Model_Zaurus_SLA300 = ( Model_Zaurus | 0x0003 ), - Model_Zaurus_SLB600 = ( Model_Zaurus | 0x0004 ), - Model_Zaurus_SLC7x0 = ( Model_Zaurus | 0x0005 ), - Model_Zaurus_SL6000 = ( Model_Zaurus | 0x0006 ), - Model_Zaurus_SLC3000 = ( Model_Zaurus | 0x0007 ), - Model_Zaurus_SLC1000 = ( Model_Zaurus | 0x0008 ), - Model_Zaurus_SLC3100 = ( Model_Zaurus | 0x0009 ), + Model_Zaurus_SLA300 = ( Model_Zaurus | 0x0004 ), + Model_Zaurus_SLB600 = ( Model_Zaurus | 0x0008 ), + Model_Zaurus_SLC7x0 = ( Model_Zaurus | 0x0010 ), + Model_Zaurus_SL6000 = ( Model_Zaurus | 0x0020 ), + Model_Zaurus_SLC3000 = ( Model_Zaurus | 0x0040 ), + Model_Zaurus_SLC1000 = ( Model_Zaurus | 0x0080 ), + Model_Zaurus_SLC3100 = ( Model_Zaurus | 0x0100 ), Model_SIMpad = ( 3 << 16 ), Model_SIMpad_All = ( Model_SIMpad | 0xffff ), Model_SIMpad_CL4 = ( Model_SIMpad | 0x0001 ), Model_SIMpad_SL4 = ( Model_SIMpad | 0x0002 ), - Model_SIMpad_SLC = ( Model_SIMpad | 0x0003 ), - Model_SIMpad_TSinus = ( Model_SIMpad | 0x0004 ), + Model_SIMpad_SLC = ( Model_SIMpad | 0x0004 ), + Model_SIMpad_TSinus = ( Model_SIMpad | 0x0008 ), Model_Ramses = ( 4 << 16 ), Model_Ramses_All = ( Model_Ramses | 0xffff ), Model_Ramses_MNCI = ( Model_Ramses | 0x0001 ), Model_Ramses_MNCIRX = ( Model_Ramses | 0x0002 ), Model_Yopy = ( 5 << 16 ), Model_Yopy_All = ( Model_Yopy | 0xffff ), Model_Yopy_3000 = ( Model_Yopy | 0x0001 ), Model_Yopy_3500 = ( Model_Yopy | 0x0002 ), - Model_Yopy_3700 = ( Model_Yopy | 0x0003 ), + Model_Yopy_3700 = ( Model_Yopy | 0x0004 ), Model_Beagle = ( 6 << 16 ), Model_Beagle_All = ( Model_Beagle | 0xffff ), Model_Beagle_PA100 = ( Model_Beagle | 0x0001 ), Model_GenuineIntel = ( 7 << 16 ), Model_MyPal = ( 8 << 16 ), Model_MyPal_All = ( Model_MyPal | 0xffff ), Model_MyPal_620 = ( Model_MyPal | 0x0001 ), Model_MyPal_716 = ( Model_MyPal | 0x0002 ), - Model_MyPal_730 = ( Model_MyPal | 0x0003 ), + Model_MyPal_730 = ( Model_MyPal | 0x0004 ), Model_HTC = ( 9 << 16 ), + Model_HTC_All = ( Model_HTC | 0xffff ), Model_HTC_Universal = ( Model_HTC | 0x0001 ), Model_HTC_Alpine = ( Model_HTC | 0x0002 ), - Model_HTC_Apache = ( Model_HTC | 0x0003 ), - Model_HTC_Beetles = ( Model_HTC | 0x0004 ), - Model_HTC_Blueangel = ( Model_HTC | 0x0005 ), - Model_HTC_Himalaya = ( Model_HTC | 0x0006 ), - Model_HTC_Magician = ( Model_HTC | 0x0007 ), + Model_HTC_Apache = ( Model_HTC | 0x0004 ), + Model_HTC_Beetles = ( Model_HTC | 0x0008 ), + Model_HTC_Blueangel = ( Model_HTC | 0x0010 ), + Model_HTC_Himalaya = ( Model_HTC | 0x0020 ), + Model_HTC_Magician = ( Model_HTC | 0x0040 ), + + Model_Motorola = ( 2 << 17 ), - Model_Motorola = ( 9 << 17 ), Model_Motorola_All = ( Model_Motorola | 0xffff ), Model_Motorola_EZX = ( Model_Motorola | 0x0001 ), - Model_Palm = ( 10 << 16), + Model_Palm = ( 1 << 17), + Model_Palm_All = ( Model_Palm | 0xffff ), Model_Palm_LD = ( Model_Palm | 0x0001 ), Model_Palm_TX = ( Model_Palm | 0x0002 ), - Model_Palm_Z72 = ( Model_Palm | 0x0003 ), + Model_Palm_Z72 = ( Model_Palm | 0x0004 ), }; /** * The vendor of the device */ enum OVendor { Vendor_Unknown, Vendor_HP, Vendor_Sharp, Vendor_SIEMENS, Vendor_MundN, Vendor_GMate, Vendor_MasterIA, Vendor_GenuineIntel, Vendor_Asus, Vendor_HTC, Vendor_Motorola, Vendor_Palm, }; /** * The System used */ enum OSystem { System_Unknown, System_Familiar, System_Zaurus, System_OpenZaurus, System_Linupy, System_OpenEmbedded, System_PC, System_OpenEZX, System_Angstrom, }; typedef struct { OSystem system; char* sysstr; char* sysvfile; } ODistribution; extern ODistribution distributions[]; 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, }; /* default button for qvfb or such * see odevice.cpp for details. * hint: manage a user defined button for qvfb? * alwin */ struct default_button { Qt::Key code; char *utext; char *pix; char *fpressedservice; char *fpressedaction; char *fheldservice; char *fheldaction; }; /** * 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 specific 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(const QString&); virtual void initButtons(); static void sendSuspendmsg(); 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; QString qteDriver() const; // system 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 overwrite // protected virtual int virtual_hook(int, void *) // which is defined below // input / output virtual void playAlarmSound(); virtual void playKeySound(); virtual void playTouchSound(); 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; 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 method const and take care of calling initButtons or make that const too * */ const QValueList<ODeviceButton> &buttons(); /** * 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 & ); void playingStopped(); protected: void addPreHandler(QWSServer::KeyboardFilter*aFilter); void remPreHandler(QWSServer::KeyboardFilter*aFilter); void reloadButtonMapping(); void changeMixerForAlarm( int mixer, const char* file, Sound *snd); /* ugly virtual hook */ virtual void virtual_hook( int id, void* data ); }; class ODeviceData { public: QString m_vendorstr; OVendor m_vendor; QString m_modelstr; OModel m_model; QString m_systemstr; OSystem m_system; QString m_sysverstr; Transformation m_rotation; ODirection m_direction; QString m_qteDriver; QValueList <ODeviceButton> *m_buttons; uint m_holdtime; QStrList *m_cpu_frequencies; bool m_initializedButtonQcop : 1; /* values for changeMixerForAlarm */ int m_sound, m_vol, m_mixer; }; extern bool isQWS(); extern QCString makeChannel ( const char *str ); } } #endif |