[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    KDE/kdelibs/kdeui/dialogs
From:       Michael Jansen <kde () michael-jansen ! biz>
Date:       2009-02-28 20:33:33
Message-ID: 1235853213.164035.18903.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 933398 by mjansen:

Provide a clearConfiguration method. It sets all shortcuts to 'None'

Implement importing of shortcuts in the editor class instead of using KActionCollections
methods. Now it's possible to undo scheme importing.

Still to solve is the problem how to handle conflicts during import. Currently
the shortcuts get not assigned in case of conflict.

 M  +7 -1      kshortcutsdialog_p.h  
 M  +69 -18    kshortcutseditor.cpp  
 M  +6 -0      kshortcutseditor.h  


--- trunk/KDE/kdelibs/kdeui/dialogs/kshortcutsdialog_p.h #933397:933398
@@ -280,7 +280,7 @@
     //! Commit the changes.
     void commit();
 
-    virtual QVariant data(int column, int role) const;
+    virtual QVariant data(int column, int role = Qt::DisplayRole) const;
     virtual bool operator<(const QTreeWidgetItem &other) const;
 
     QKeySequence keySequence(uint column) const;
@@ -356,6 +356,12 @@
     // Set all shortcuts to their default values (bindings).
     void allDefault();
 
+    // clear all shortcuts
+    void clearConfiguration();
+
+    // Import shortcuts from file
+    void importConfiguration(KConfigBase *config);
+
     //helper functions for conflict resolution
     bool stealShapeGesture(KShortcutsEditorItem *item, const KShapeGesture &gest);
     bool stealRockerGesture(KShortcutsEditorItem *item, const KRockerGesture &gest);
--- trunk/KDE/kdelibs/kdeui/dialogs/kshortcutseditor.cpp #933397:933398
@@ -46,6 +46,7 @@
 #include "kdeprintdialog.h"
 #include "kglobalaccel.h"
 #include "kmessagebox.h"
+#include "kshortcut.h"
 #include "kaboutdata.h"
 
 //---------------------------------------------------------------------
@@ -166,31 +167,21 @@
 }
 
 
+void KShortcutsEditor::clearConfiguration()
+{
+    d->clearConfiguration();
+}
+
+
 void KShortcutsEditor::importConfiguration( KConfig *config)
 {
-    importConfiguration(static_cast<KConfigBase*>(config));
+    d->importConfiguration(config);
 }
 
 
 void KShortcutsEditor::importConfiguration( KConfigBase *config)
 {
-    Q_ASSERT(config);
-    if (!config) return;
-
-    if (d->actionTypes & KShortcutsEditor::GlobalAction) {
-        QString groupName = "Global Shortcuts";
-        KConfigGroup group( config, groupName );
-        foreach (KActionCollection* collection, d->actionCollections) {
-            collection->importGlobalShortcuts( &group );
-        }
-    }
-    if (d->actionTypes & ~KShortcutsEditor::GlobalAction) {
-        QString groupName = "Shortcuts";
-        KConfigGroup group( config, groupName );
-        foreach (KActionCollection* collection, d->actionCollections) {
-            collection->readSettings( &group );
-        }
-    }
+    d->importConfiguration(config);
 }
 
 
@@ -510,6 +501,66 @@
 }
 
 
+void KShortcutsEditorPrivate::clearConfiguration()
+{
+    for (QTreeWidgetItemIterator it(ui.list); (*it); ++it) {
+        if (!(*it)->parent())
+            continue;
+
+        KShortcutsEditorItem *item = static_cast<KShortcutsEditorItem *>(*it);
+
+        changeKeyShortcut(item, LocalPrimary,   QKeySequence());
+        changeKeyShortcut(item, LocalAlternate, QKeySequence());
+
+        changeKeyShortcut(item, GlobalPrimary,   QKeySequence());
+        changeKeyShortcut(item, GlobalAlternate, QKeySequence());
+
+        changeShapeGesture(item, KShapeGesture() );
+
+    }
+}
+
+
+void KShortcutsEditorPrivate::importConfiguration(KConfigBase *config)
+{
+    Q_ASSERT(config);
+    if (!config) return;
+
+    KConfigGroup globalShortcutsGroup(config, QLatin1String("Global Shortcuts"));
+    if ((actionTypes & KShortcutsEditor::GlobalAction) && globalShortcutsGroup.exists()) {
+
+        for (QTreeWidgetItemIterator it(ui.list); (*it); ++it) {
+
+            if (!(*it)->parent())
+                continue;
+
+            KShortcutsEditorItem *item = static_cast<KShortcutsEditorItem *>(*it);
+
+            QString actionName = item->data(Name).toString();
+            KShortcut sc(globalShortcutsGroup.readEntry(actionName, QString()));
+            changeKeyShortcut(item, GlobalPrimary, sc.primary());
+        }
+    }
+
+    KConfigGroup localShortcutsGroup(config, QLatin1String("Shortcuts"));
+    if (actionTypes & ~KShortcutsEditor::GlobalAction) {
+
+        for (QTreeWidgetItemIterator it(ui.list); (*it); ++it) {
+
+            if (!(*it)->parent())
+                continue;
+
+            KShortcutsEditorItem *item = static_cast<KShortcutsEditorItem *>(*it);
+
+            QString actionName = item->data(Name).toString();
+            KShortcut sc(localShortcutsGroup.readEntry(actionName, QString()));
+            changeKeyShortcut(item, LocalPrimary, sc.primary());
+            changeKeyShortcut(item, LocalAlternate, sc.alternate());
+        }
+    }
+}
+
+
 bool KShortcutsEditorPrivate::stealShapeGesture(KShortcutsEditorItem *item, const KShapeGesture &gst)
 {
     QString title = i18n("Key Conflict");
--- trunk/KDE/kdelibs/kdeui/dialogs/kshortcutseditor.h #933397:933398
@@ -154,7 +154,13 @@
      */
     void commit();
 
+
     /**
+     * Removes all configured shortcuts.
+     */
+    void clearConfiguration();
+
+    /**
      * Write the current settings to the \p config object.
      *
      * This does not initialize the \p config object. It adds the
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic