|
|
/* This file is part of the KDE libraries Copyright (C) 2001,2002 Ellis WhiteheadThis 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 __KSHORTCUT_H #define __KSHORTCUT_H #include #include class QKeyEvent; class KKeyNative; /********************************************************************** * A KKey object represents a single key with possible modifiers * (Shift, Ctrl, Alt, Win). It can represent both keys which are * understood by Qt as well as those which are additionally supported * by the underlying system (e.g. X11). **********************************************************************/ class KKey { public: enum { MOD_FLAG_COUNT = 4 }; enum { QtWIN = (Qt::ALT << 1) }; enum ModFlag { SHIFT = 0x01, CTRL = 0x02, ALT = 0x04, WIN = 0x08 }; KKey(); KKey( int keyQt ); KKey( const QKeySequence& ); KKey( const QKeyEvent* ); KKey( const KKey& ); KKey( const QString& ); /** * @internal */ KKey( uint key, uint mod ); ~KKey(); // Initialization methods void clear(); bool init( int keyQt ); bool init( const QKeySequence& ); bool init( const QKeyEvent* ); bool init( const KKey& ); bool init( const QString& ); /** * @internal */ bool init( uint key, uint mod ); KKey& operator =( const KKey& key ) { init( key ); return *this; } // Query methods. bool isNull() const; bool isValidQt() const; bool isValidNative() const; /** * @internal */ uint sym() const; /** * @internal */ uint modFlags() const; // Comparison Methods int compare( const KKey& ) const; bool operator == ( const KKey& key ) const { return compare( key ) == 0; } bool operator != ( const KKey& key ) const { return compare( key ) != 0; } bool operator < ( const KKey& key ) const { return compare( key ) < 0; } // Conversion methods. int keyCodeQt() const; QString toString() const; QString toStringInternal() const; // Operation methods void simplify(); static KKey& null(); static QString modFlagLabel( ModFlag ); private: /** * Under X11, m_key will hold an X11 key symbol. * For Qt/Embedded, it will hold the Qt key code. */ /** * Returns the native key symbol value key. Under X11, this is the X * keycode. Under Qt/Embedded, this is the Qt keycode. * @see /usr/include/X11/keysymdef.h * @see qnamespace.h */ uint m_sym; /** * m_mod holds the */ uint m_mod; private: friend class KKeyNative; }; /********************************************************************** * class KKeySequence * A KKeySequence object holds a sequence of up to 4 keys. * Ex: Ctrl+X,I **********************************************************************/ class KKeySequence { public: enum { MAX_KEYS = 4 }; KKeySequence(); KKeySequence( const QKeySequence& ); KKeySequence( const KKey& ); KKeySequence( const KKeyNative& ); KKeySequence( const KKeySequence& ); KKeySequence( const QString& ); ~KKeySequence(); void clear(); bool init( const QKeySequence& ); bool init( const KKey& ); bool init( const KKeyNative& ); bool init( const KKeySequence& ); bool init( const QString& ); KKeySequence& operator =( const KKeySequence& seq ) { init( seq ); return *this; } uint count() const; const KKey& key( uint i ) const; bool isTriggerOnRelease() const; bool setKey( uint i, const KKey& ); void setTriggerOnRelease( bool ); bool isNull() const; bool startsWith( const KKeySequence& ) const; int compare( const KKeySequence& ) const; bool operator == ( const KKeySequence& seq ) const { return compare( seq ) == 0; } bool operator != ( const KKeySequence& seq ) const { return compare( seq ) != 0; } bool operator < ( const KKeySequence& seq ) const { return compare( seq ) < 0; } QKeySequence qt() const; int keyCodeQt() const; QString toString() const; QString toStringInternal() const; static KKeySequence& null(); protected: uchar m_nKeys; uchar m_bTriggerOnRelease; KKey m_rgvar[MAX_KEYS]; private: class KKeySequencePrivate* d; friend class KKeyNative; }; /********************************************************************** * The KShortcut class is used to represent a keyboard shortcut to an action. * A shortcut is normally a single key with modifiers, such as Ctrl+V. * A KShortcut object may also contain an alternate key which will also * activate the action it's associated to, as long as no other actions have * defined that key as their primary key. Ex: Ctrl+V;Shift+Insert. **********************************************************************/ class KShortcut { public: enum { MAX_SEQUENCES = 2 }; KShortcut(); KShortcut( int keyQt ); KShortcut( const QKeySequence& ); KShortcut( const KKey& ); KShortcut( const KKeySequence& ); KShortcut( const KShortcut& ); KShortcut( const char* ); KShortcut( const QString& ); ~KShortcut(); void clear(); bool init( int keyQt ); bool init( const QKeySequence& ); bool init( const KKey& ); bool init( const KKeySequence& ); bool init( const KShortcut& ); bool init( const QString& ); KShortcut& operator =( const KShortcut& cut ) { init( cut ); return *this; } uint count() const; const KKeySequence& seq( uint i ) const; int keyCodeQt() const; bool isNull() const; int compare( const KShortcut& ) const; bool operator == ( const KShortcut& cut ) const { return compare( cut ) == 0; } bool operator != ( const KShortcut& cut ) const { return compare( cut ) != 0; } bool operator < ( const KShortcut& cut ) const { return compare( cut ) < 0; } bool contains( const KKey& ) const; bool contains( const KKeyNative& ) const; bool contains( const KKeySequence& ) const; bool setSeq( uint i, const KKeySequence& ); bool append( const KKeySequence& ); operator QKeySequence () const; QString toString() const; QString toStringInternal( const KShortcut* pcutDefault = 0 ) const; static KShortcut& null(); protected: uint m_nSeqs; KKeySequence m_rgseq[MAX_SEQUENCES]; private: class KShortcutPrivate* d; friend class KKeyNative; #ifndef KDE_NO_COMPAT public: operator int () const { return keyCodeQt(); } #endif }; #endif // __KSHORTCUT_H
Generated by: dfaure on faure on Tue Apr 16 08:49:00 2002, using kdoc 2.0a53. |