tdecore
tdeaccelbase.h
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef _TDEACCELBASE_H
00021 #define _TDEACCELBASE_H
00022
00023 #include <tqmap.h>
00024 #include <tqptrvector.h>
00025 #include <tqstring.h>
00026 #include <tqvaluevector.h>
00027 #include <tqvaluelist.h>
00028
00029 #include "tdeaccelaction.h"
00030 #include "kkeyserver.h"
00031
00032 class TQPopupMenu;
00033 class TQWidget;
00034
00035
00036
00121 class TDECORE_EXPORT TDEAccelBase
00122 {
00123 public:
00125 enum Init { QT_KEYS = 0x00, NATIVE_KEYS = 0x01 };
00126
00128 enum Signal { KEYCODE_CHANGED };
00129
00133 TDEAccelBase( int fInitCode );
00134 virtual ~TDEAccelBase();
00135
00137 uint actionCount() const;
00139 TDEAccelActions& actions();
00141 bool isEnabled() const;
00142
00144 TDEAccelAction* actionPtr( const TQString& sAction );
00146 const TDEAccelAction* actionPtr( const TQString& sAction ) const;
00154 TDEAccelAction* actionPtr( const KKey& key );
00158 TDEAccelAction* actionPtr( const KKeyServer::Key& key );
00159
00163 const TQString& configGroup() const { return m_sConfigGroup; }
00167 void setConfigGroup( const TQString& group );
00168 void setConfigGlobal( bool global );
00173 virtual void setEnabled( bool bEnabled ) = 0;
00175 bool getAutoUpdate() { return m_bAutoUpdate; }
00179 bool setAutoUpdate( bool bAuto );
00180
00181
00182
00183
00184 TDEAccelAction* insert( const TQString& sName, const TQString& sDesc );
00185 TDEAccelAction* insert(
00186 const TQString& sAction, const TQString& sDesc, const TQString& sHelp,
00187 const TDEShortcut& rgCutDefaults3, const TDEShortcut& rgCutDefaults4,
00188 const TQObject* pObjSlot, const char* psMethodSlot,
00189 bool bConfigurable = true, bool bEnabled = true );
00190 bool remove( const TQString& sAction );
00191 bool setActionSlot( const TQString& sAction, const TQObject* pObjSlot, const char* psMethodSlot );
00192
00193 bool updateConnections();
00194
00195 bool setShortcut( const TQString& sAction, const TDEShortcut& cut );
00196
00197
00198 bool setActionEnabled( const TQString& sAction, bool bEnable );
00199
00208 void readSettings( TDEConfigBase* pConfig = 0 );
00209
00215 void writeSettings( TDEConfigBase* pConfig = 0 ) const;
00216
00217 TQPopupMenu* createPopupMenu( TQWidget* pParent, const KKeySequence& );
00218
00219
00220 protected:
00221 void slotRemoveAction( TDEAccelAction* );
00222
00223 struct X;
00224
00228 void createKeyList( TQValueVector<struct X>& rgKeys );
00229 bool insertConnection( TDEAccelAction* );
00230 bool removeConnection( TDEAccelAction* );
00231
00235 virtual bool emitSignal( Signal signal ) = 0;
00240 virtual bool connectKey( TDEAccelAction& action, const KKeyServer::Key& key ) = 0;
00244 virtual bool connectKey( const KKeyServer::Key& key) = 0;
00247 virtual bool disconnectKey( TDEAccelAction&, const KKeyServer::Key& ) = 0;
00250 virtual bool disconnectKey( const KKeyServer::Key& ) = 0;
00251
00252 protected:
00253 virtual bool isEnabledInternal() const;
00254 struct ActionInfo
00255 {
00256 TDEAccelAction* pAction;
00257 uint iSeq, iVariation;
00258
00259
00260 ActionInfo() { pAction = 0; iSeq = 0xffff; iVariation = 0xffff; }
00261 ActionInfo( TDEAccelAction* _pAction, uint _iSeq, uint _iVariation )
00262 { pAction = _pAction; iSeq = _iSeq; iVariation = _iVariation; }
00263 };
00264 typedef TQMap<KKeyServer::Key, ActionInfo> KKeyToActionMap;
00265
00266 TDEAccelActions m_rgActions;
00267 KKeyToActionMap m_mapKeyToAction;
00268 TQValueList<TDEAccelAction*> m_rgActionsNonUnique;
00269 bool m_bNativeKeys;
00270 bool m_bEnabled;
00271 bool m_bConfigIsGlobal;
00272 TQString m_sConfigGroup;
00273 bool m_bAutoUpdate;
00274 TDEAccelAction* mtemp_pActionRemoving;
00275
00276 private:
00277 TDEAccelBase& operator =( const TDEAccelBase& );
00278
00279 friend class TDEAccelActions;
00280 };
00281
00282 #endif // _TDEACCELBASE_H