Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

okeyconfigmanager.h

Go to the documentation of this file.
00001 /*
00002  * Copyright (C) 2004
00003  * LGPL v2  zecke@handhelds.org
00004  */
00005 
00006 
00007 #ifndef ODP_KEY_MANAGER_WIDGET_H
00008 #define ODP_KEY_MANAGER_WIDGET_H
00009 
00010 #include <opie2/oconfig.h>
00011 #include <opie2/odevice.h>
00012 
00013 #include <qstring.h>
00014 #include <qpixmap.h>
00015 #include <qcstring.h>
00016 #include <qvaluelist.h>
00017 
00018 namespace Opie {
00019 namespace Core {
00020 
00031 class OKeyPair {
00032 public:
00033     typedef QValueList<OKeyPair> List;
00034     OKeyPair( int key = -1, int modifier = -1);
00035     ~OKeyPair();
00036 
00037     bool operator==( const OKeyPair& )const;
00038     bool operator!=( const OKeyPair& )const;
00039 
00040     bool isEmpty()const;
00041 
00042     int keycode()const;
00043     int modifier()const;
00044 
00045     void setKeycode( int );
00046     void setModifier( int );
00047 
00048     static OKeyPair returnKey();
00049     static OKeyPair leftArrowKey();
00050     static OKeyPair rightArrowKey();
00051     static OKeyPair upArrowKey();
00052     static OKeyPair downArrowKey();
00053     static OKeyPair emptyKey();
00054     static OKeyPair::List hardwareKeys();
00055 
00056 private:
00057     int m_key;
00058     int m_mod;
00059     class Private;
00060     Private* d;
00061 };
00062 
00071 class OKeyConfigItem {
00072     friend class OKeyConfigManager;
00073 public:
00074     typedef QValueList<OKeyConfigItem> List;
00075     OKeyConfigItem( const QString& text = QString::null , const QCString& config_key = QCString(),
00076                     const QPixmap& symbol  = QPixmap(),
00077                     int id = -1,
00078                     const OKeyPair& def = OKeyPair::emptyKey(),
00079                     QObject *caller = 0, const char* slot = 0);
00080     OKeyConfigItem( const Opie::Core::ODeviceButton& );
00081     ~OKeyConfigItem();
00082 
00083     bool operator==( const OKeyConfigItem& )const;
00084     bool operator!=( const OKeyConfigItem& )const;
00085 
00086     QString text()const;
00087     QPixmap pixmap()const;
00088     int id()const;
00089 
00090 
00091 
00092     OKeyPair keyPair()const;
00093     OKeyPair defaultKeyPair()const;
00094     QCString configKey()const;
00095 
00096 
00097     void setText( const QString& text );
00098     void setPixmap( const QPixmap& );
00099     void setKeyPair( const OKeyPair& );
00100     void setDefaultKeyPair( const OKeyPair& );
00101 
00102     bool isEmpty()const;
00103 
00104 protected:
00105     QObject *object()const;
00106     QCString slot()const;
00107     void setId( int id );
00108     void setConfigKey( const QCString& );
00109 
00110 private:
00111     QString  m_text;
00112     QCString m_config;
00113     QPixmap  m_pix;
00114     int m_id;
00115     OKeyPair m_key;
00116     OKeyPair m_def;
00117     QObject *m_obj;
00118     QCString m_str;
00119     class Private;
00120     Private *d;
00121 };
00122 
00123 
00124 
00143 class OKeyConfigManager : public QObject {
00144     Q_OBJECT
00145     typedef QMap<int, OKeyConfigItem::List> OKeyMapConfigPrivate;
00146 public:
00147     enum EventMask {
00148         MaskPressed = 0x1,
00149         MaskReleased = 0x2,
00150     };
00151 
00152     OKeyConfigManager(Opie::Core::OConfig *conf = 0,
00153                       const QString& group = QString::null,
00154                       const OKeyPair::List &block = OKeyPair::List(),
00155                       bool grabkeyboard = false, QObject * par = 0,
00156                       const char* name = 0      );
00157     virtual ~OKeyConfigManager();
00158 
00159 public slots:
00160     virtual void load();
00161     virtual void save();
00162     void handleWidget( QWidget* );
00163 
00164 public:
00165     virtual OKeyConfigItem handleKeyEvent( QKeyEvent* );
00166     int            handleKeyEventId( QKeyEvent* );
00167 
00168     void addKeyConfig( const OKeyConfigItem& );
00169     void removeKeyConfig( const OKeyConfigItem& );
00170     void clearKeyConfig();
00171 
00172     void addToBlackList( const OKeyPair& );
00173     void removeFromBlackList( const OKeyPair& );
00174     void clearBlackList();
00175     OKeyPair::List blackList()const;
00176 
00177     bool eventFilter( QObject*, QEvent* );
00178 
00186     void setEventMask(uint aMask);
00194     uint eventMask()const;
00202     bool testEventMask(uint aMask);
00210     void addEventMask(uint aMask);
00218     void clearEventMask(uint aMask);
00219 
00220     OKeyConfigItem::List keyConfigList()const;
00221 
00222 signals:
00228     void actionActivated( QWidget*, QKeyEvent*, const Opie::Core::OKeyConfigItem& );
00229 
00237     void actionActivated( QWidget* par, QKeyEvent* key);
00238 
00239 private:
00240     OKeyConfigItem::List keyList( int );
00241     OKeyConfigItem::List m_keys;
00242     QValueList<QWidget*> m_widgets;
00243     Opie::Core::OConfig *m_conf;
00244     QString m_group;
00245     OKeyPair::List m_blackKeys;
00246     bool m_grab : 1;
00247     OKeyMapConfigPrivate *m_map;
00248     class Private;
00249     Private *d;
00250     uint m_event_mask;
00251 };
00252 
00253 inline bool OKeyConfigManager::testEventMask(uint aMask)
00254 {
00255     return (m_event_mask&aMask)!=0;
00256 }
00257 
00258 inline void OKeyConfigManager::addEventMask(uint aMask)
00259 {
00260     m_event_mask |= aMask;
00261 }
00262 
00263 inline void OKeyConfigManager::clearEventMask(uint aMask)
00264 {
00265     m_event_mask &= ~aMask;
00266 }
00267 
00268 inline void OKeyConfigManager::setEventMask(uint aMask)
00269 {
00270     m_event_mask = aMask;
00271 }
00272 
00273 inline uint OKeyConfigManager::eventMask()const
00274 {
00275     return  m_event_mask;
00276 }
00277 
00278 }
00279 }
00280 
00281 #endif

Generated on Sat Nov 5 16:16:08 2005 for OPIE by  doxygen 1.4.2