kdeui Library API Documentation

kkeydialog.h

00001 /* This file is part of the KDE libraries
00002     Copyright (C) 1997 Nicolas Hadacek <hadacek@kde.org>
00003     Copyright (C) 2001,2001 Ellis Whitehead <ellis@kde.org>
00004 
00005     This library is free software; you can redistribute it and/or
00006     modify it under the terms of the GNU Library General Public
00007     License as published by the Free Software Foundation; either
00008     version 2 of the License, or (at your option) any later version.
00009 
00010     This library is distributed in the hope that it will be useful,
00011     but WITHOUT ANY WARRANTY; without even the implied warranty of
00012     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00013     Library General Public License for more details.
00014 
00015     You should have received a copy of the GNU Library General Public License
00016     along with this library; see the file COPYING.LIB.  If not, write to
00017     the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
00018     Boston, MA 02111-1307, USA.
00019 */
00020 
00021 #ifndef __KKEYDIALOG_H__
00022 #define __KKEYDIALOG_H__
00023 
00024 #include <qdict.h>
00025 #include <kdialogbase.h>
00026 #include <klistview.h>
00027 
00028 class QButtonGroup;
00029 class QCheckBox;
00030 class QGroupBox;
00031 class QLabel;
00032 class QLineEdit;
00033 class QRadioButton;
00034 class KAccel;
00035 class KAccelActions;
00036 class KActionCollection;
00037 class KConfigBase;
00038 class KGlobalAccel;
00039 class KKeySequence;
00040 class KShortcut;
00041 class KShortcutList;
00042 class KKeyChooserItem;
00043 
00058 class KKeyChooser : public QWidget
00059 {
00060     Q_OBJECT
00061  public:
00062     enum ActionType { Application, ApplicationGlobal, Standard, Global };
00063 
00072     KKeyChooser( QWidget* parent, ActionType type = Application, bool bAllowLetterShortcuts = true );
00078     KKeyChooser( KActionCollection* coll, QWidget* parent, bool bAllowLetterShortcuts = true );
00079     KKeyChooser( KAccel* actions, QWidget* parent, bool bAllowLetterShortcuts = true );
00080     KKeyChooser( KGlobalAccel* actions, QWidget* parent );
00081     KKeyChooser( KShortcutList*, QWidget* parent, ActionType type = Application, bool bAllowLetterShortcuts = true );
00082 
00083     virtual ~KKeyChooser();
00084 
00089     bool insert( KActionCollection* ); // #### KDE4 : remove me
00096     bool insert( KActionCollection *, const QString &title);
00097 
00098     void syncToConfig( const QString& sConfigGroup, KConfigBase* pConfig, bool bClearUnset );
00099 
00104     void commitChanges();
00105 
00112     void save();
00113 
00127         static bool checkGlobalShortcutsConflict( const KShortcut& cut, bool warnUser, QWidget* parent );
00128 
00142         static bool checkStandardShortcutsConflict( const KShortcut& cut, bool warnUser, QWidget* parent );
00143 
00144  signals:
00148     void keyChange();
00149 
00150  public slots:
00154     void allDefault();
00155 
00161     void setPreferFourModifierKeys( bool preferFourModifierKeys );
00162 
00163  // KDE4 a lot of stuff in this class should be probably private:
00164  protected:
00165     enum { NoKey = 1, DefaultKey, CustomKey };
00166 
00167     void initGUI( ActionType type, bool bAllowLetterShortcuts );
00168     bool insert( KAccel* );
00169     bool insert( KGlobalAccel* );
00170     bool insert( KShortcutList* );
00172     void buildListView( uint iList, const QString &title = QString::null );
00173 
00174     void readGlobalKeys();
00175 
00176     void updateButtons();
00177     void fontChange( const QFont& _font );
00178     void setShortcut( const KShortcut& cut );
00179     bool isKeyPresent( const KShortcut& cut, bool warnuser = true );
00180         bool isKeyPresentLocally( const KShortcut& cut, KKeyChooserItem* ignoreItem, const QString& warnText );
00181     void _warning( const KKeySequence& seq, QString sAction, QString sTitle );
00182 
00183  protected slots:
00184     void slotNoKey();
00185     void slotDefaultKey();
00186     void slotCustomKey();
00187     void slotListItemSelected( QListViewItem *item );
00188     void capturedShortcut( const KShortcut& cut );
00189         void slotSettingsChanged( int );
00190         void slotListItemDoubleClicked ( QListViewItem * ipoQListViewItem, const QPoint & ipoQPoint, int c );
00191 
00192  protected:
00193     ActionType m_type;
00194     bool m_bAllowLetterShortcuts;
00195     bool m_bAllowWinKey; // unused KDE4 remove
00196     // When set, pressing the 'Default' button will select the aDefaultKeycode4,
00197     //  otherwise aDefaultKeycode.
00198     bool m_bPreferFourModifierKeys;
00199 
00200     QRadioButton* m_prbNone;
00201     QRadioButton* m_prbDef;
00202     QRadioButton* m_prbCustom;
00203 
00204  private:
00205         bool isKeyPresentLocally( const KShortcut& cut, KKeyChooserItem* ignoreItem, bool bWarnUser );
00206         static bool promptForReassign( const KKeySequence& cut, const QString& sAction, ActionType action, QWidget* parent );
00207         // Remove the key sequences contained in cut from the standard shortcut @p name
00208         // which currently has @p origCut as shortcut.
00209         static void removeStandardShortcut( const QString& name, KKeyChooser* chooser, const KShortcut &origCut, const KShortcut &cut );
00210         // Remove the key sequences contained in cut from the global shortcut @p name
00211         // which currently has @p origCut as shortcut.
00212         static void removeGlobalShortcut( const QString& name, KKeyChooser* chooser, const KShortcut &origCut, const KShortcut &cut );
00213         static void readGlobalKeys( QMap< QString, KShortcut >& map );
00214         static bool checkGlobalShortcutsConflict( const KShortcut& cut, bool bWarnUser, QWidget* parent,
00215             const QMap< QString, KShortcut >& map, const QString& ignoreAction );
00216         // Remove the key sequences contained in cut from this item
00217         bool removeShortcut( const QString& name, const KShortcut &cut );
00218         
00219  private slots:
00220         void captureCurrentItem();
00221 
00222 #ifndef KDE_NO_COMPAT
00223  public:
00227     KKeyChooser( KAccel* actions, QWidget* parent,
00228             bool bCheckAgainstStdKeys,
00229             bool bAllowLetterShortcuts,
00230             bool bAllowWinKey = false );
00234     KKeyChooser( KGlobalAccel* actions, QWidget* parent,
00235             bool bCheckAgainstStdKeys,
00236             bool bAllowLetterShortcuts,
00237             bool bAllowWinKey = false );
00238 
00239  public slots:
00244     void listSync();
00245 
00246 #endif
00247  protected:
00248     virtual void virtual_hook( int id, void* data );
00249  private:
00250     class KKeyChooserPrivate *d;
00251     friend class KKeyDialog;
00252 };
00253 typedef KKeyChooser KKeyChooser;
00254 
00271 class KKeyDialog : public KDialogBase
00272 {
00273     Q_OBJECT
00274 
00275 public:
00281     KKeyDialog( bool bAllowLetterShortcuts = true, QWidget* parent = 0, const char* name = 0 );
00282 
00286     virtual ~KKeyDialog();
00287 
00296     bool insert( KActionCollection* ); // #### KDE4: remove me
00297 
00310         bool insert(KActionCollection *, const QString &title);
00311 
00312     bool configure( bool bSaveSettings = true );
00313 
00319     void commitChanges();
00320 
00328     static int configure( KActionCollection* coll, QWidget* parent = 0, bool bSaveSettings = true );
00329 
00335     static int configure( KAccel* keys, QWidget* parent = 0, bool bSaveSettings = true );
00336 
00341     static int configure( KGlobalAccel* keys, QWidget* parent = 0, bool bSaveSettings = true );
00342 
00343 
00355     static int configure( KActionCollection* coll, bool bAllowLetterShortcuts, QWidget* parent = 0, bool bSaveSettings = true ); // BCI: merge with bAllowLetterShortcuts = true
00356 
00361     static int configure( KAccel* keys, bool bAllowLetterShortcuts, QWidget* parent = 0, bool bSaveSettings = true ); // BCI: merge with bAllowLetterShortcuts = true
00362 
00367     static int configure( KGlobalAccel* keys, bool bAllowLetterShortcuts, QWidget* parent = 0, bool bSaveSettings = true ); // BCI: merge with bAllowLetterShortcuts = true
00368 
00373     static KDE_DEPRECATED int configureKeys( KAccel* keys, bool save_settings = true, QWidget* parent = 0 )
00374         { return configure( keys, parent, save_settings ); }
00379     static KDE_DEPRECATED int configureKeys( KGlobalAccel* keys, bool save_settings = true, QWidget* parent = 0 )
00380         { return configure( keys, parent, save_settings ); }
00385     static KDE_DEPRECATED int configureKeys( KActionCollection* coll, const QString& /*xmlfile*/,
00386         bool save_settings = true, QWidget* parent = 0 )
00387         { return configure( coll, parent, save_settings ); }
00388 
00389 private:
00390     KKeyDialog( KKeyChooser::ActionType, bool bAllowLetterShortcuts = true, QWidget* parent = 0, const char* name = 0 );
00391 
00392  protected:
00393     virtual void virtual_hook( int id, void* data );
00394 
00395  private:
00396     class KKeyDialogPrivate* d;
00397     KKeyChooser* m_pKeyChooser;
00398 };
00399 
00400 #endif // __KKEYDIALOG_H__
KDE Logo
This file is part of the documentation for kdeui Library Version 3.3.0.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Thu Sep 23 17:11:54 2004 by doxygen 1.3.8-20040913 written by Dimitri van Heesch, © 1997-2003