[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:       2008-02-29 23:45:12
Message-ID: 1204328712.856059.20978.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 780779 by mjansen:

- Copyrights
- Add the possibility for KShortcutEditor to import / export configurations. In \
contrast to saving it's settings these take into account global shortcuts.

 M  +1 -0      kshortcutsdialog.cpp  
 M  +2 -0      kshortcutsdialog.h  
 M  +2 -0      kshortcutsdialog_p.h  
 M  +60 -5     kshortcutseditor.cpp  
 M  +53 -0     kshortcutseditor.h  
 M  +1 -0      kshortcutseditordelegate.cpp  
 M  +8 -0      kshortcutseditoritem.cpp  


--- trunk/KDE/kdelibs/kdeui/dialogs/kshortcutsdialog.cpp #780778:780779
@@ -5,6 +5,7 @@
     Copyright (C) 2006 Hamish Rodda <rodda@kde.org>
     Copyright (C) 2007 Roberto Raggi <roberto@kdevelop.org>
     Copyright (C) 2007 Andreas Hartmetz <ahartmetz@gmail.com>
+    Copyright (C) 2008 Michael Jansen <kde@michael-jansen.biz>
 
     This library is free software; you can redistribute it and/or
     modify it under the terms of the GNU Library General Public
--- trunk/KDE/kdelibs/kdeui/dialogs/kshortcutsdialog.h #780778:780779
@@ -4,6 +4,7 @@
     Copyright (C) 2006 Hamish Rodda <rodda@kde.org>
     Copyright (C) 2007 Roberto Raggi <roberto@kdevelop.org>
     Copyright (C) 2007 Andreas Hartmetz <ahartmetz@gmail.com>
+    Copyright (C) 2008 Michael Jansen <kde@michael-jansen.biz>
 
     This library is free software; you can redistribute it and/or
     modify it under the terms of the GNU Library General Public
@@ -45,6 +46,7 @@
  *
  * @author Nicolas Hadacek <hadacek@via.ecp.fr>
  * @author Hamish Rodda <rodda@kde.org> (KDE 4 porting)
+ * @author Michael Jansen <kde@michael-jansen.biz>
  */
 class KDEUI_EXPORT KShortcutsDialog : public KDialog
 {
--- trunk/KDE/kdelibs/kdeui/dialogs/kshortcutsdialog_p.h #780778:780779
@@ -1,5 +1,6 @@
 /* This file is part of the KDE libraries
     Copyright (C) 2006,2007 Andreas Hartmetz (ahartmetz@gmail.com)
+    Copyright (C) 2008 Michael Jansen <kde@michael-jansen.biz>
 
     This library is free software; you can redistribute it and/or
     modify it under the terms of the GNU Library General Public
@@ -194,6 +195,7 @@
     void setRockerGesture(const KRockerGesture &gst);
 
     bool isModified(uint column) const;
+    bool isModified() const;
 
     void setNameBold(bool flag) { m_isNameBold = flag; }
 
--- trunk/KDE/kdelibs/kdeui/dialogs/kshortcutseditor.cpp #780778:780779
@@ -5,6 +5,7 @@
     Copyright (C) 2006 Hamish Rodda <rodda@kde.org>
     Copyright (C) 2007 Roberto Raggi <roberto@kdevelop.org>
     Copyright (C) 2007 Andreas Hartmetz <ahartmetz@gmail.com>
+    Copyright (C) 2008 Michael Jansen <kde@michael-jansen.biz>
 
     This library is free software; you can redistribute it and/or
     modify it under the terms of the GNU Library General Public
@@ -63,6 +64,20 @@
     delete d;
 }
 
+
+bool KShortcutsEditor::isModified() const
+{
+    for (QTreeWidgetItemIterator it(d->ui.list); (*it); ++it) {
+        if ((*it)->childCount())
+            continue;
+
+        if (static_cast<KShortcutsEditorItem *>(*it)->isModified()) {
+            return true;
+        }
+    }
+    return false;
+}
+
 void KShortcutsEditor::clearCollections()
 {
     d->delegate->clear();
@@ -84,7 +99,6 @@
 
     foreach (QAction *action, collection->actions()) {
         QString name = action->text().remove('&');
-        // kDebug(125) << "Adding Key: " << name;
 
         if (name.startsWith(QLatin1String("Program:")))
             l = Program;
@@ -95,7 +109,6 @@
             if ((kact = qobject_cast<KAction *>(action)) && \
kact->isShortcutConfigurable()) {  // If the shortcut is not configurable skip it
                 if (!kact->isShortcutConfigurable()) {
-                    kDebug(125) << "Not configurable " << kact->text();
                     continue;
                 }
                 // Create the editor
@@ -118,7 +131,51 @@
     QTimer::singleShot(0, this, SLOT(resizeColumns()));
 }
 
+void KShortcutsEditor::importConfiguration( KConfig *config)
+{
+    if (d->actionTypes & KShortcutsEditor::GlobalAction) {
+        QString groupName = "Global Shortcuts";
+        KConfigGroup group( config, groupName );
+        foreach (KActionCollection* collection, d->actionCollections) {
+            collection->readGlobalSettings( &group );
+        }
+    }
+    if (d->actionTypes & !KShortcutsEditor::GlobalAction) {
+        QString groupName = "Local Shortcuts";
+        KConfigGroup group( config, groupName );
+        foreach (KActionCollection* collection, d->actionCollections) {
+            collection->readSettings( &group );
+        }
+    }
+}
 
+void KShortcutsEditor::exportConfiguration( KConfig *config) const
+{
+    if (d->actionTypes & KShortcutsEditor::GlobalAction) {
+        QString groupName = "Global Shortcuts";
+        KConfigGroup group( config, groupName );
+        foreach (KActionCollection* collection, d->actionCollections) {
+            collection->writeGlobalSettings( &group, true );
+        }
+    }
+    if (d->actionTypes & !KShortcutsEditor::GlobalAction) {
+        QString groupName = "Local Shortcuts";
+        KConfigGroup group( config, groupName );
+        foreach (KActionCollection* collection, d->actionCollections) {
+            collection->writeSettings( &group, true );
+        }
+    }
+}
+
+
+void KShortcutsEditor::writeConfiguration( KConfigGroup *config) const
+{
+    foreach (KActionCollection* collection, d->actionCollections) {
+        collection->writeSettings(config);
+    }
+}
+
+
 //slot
 void KShortcutsEditor::resizeColumns()
 {
@@ -139,9 +196,7 @@
         static_cast<KShortcutsEditorItem *>(*it)->commit();
     }
 
-    // Now write the ActionCollection to the file
-    foreach (KActionCollection* collection, d->actionCollections)
-        collection->writeSettings();
+    writeConfiguration();
 }
 
 // KDE5 : rename to undo()
--- trunk/KDE/kdelibs/kdeui/dialogs/kshortcutseditor.h #780778:780779
@@ -4,6 +4,7 @@
     Copyright (C) 2006 Hamish Rodda <rodda@kde.org>
     Copyright (C) 2007 Roberto Raggi <roberto@kdevelop.org>
     Copyright (C) 2007 Andreas Hartmetz <ahartmetz@gmail.com>
+    Copyright (C) 2008 Michael Jansen <kde@michael-jansen.biz>
 
     This library is free software; you can redistribute it and/or
     modify it under the terms of the GNU Library General Public
@@ -28,6 +29,8 @@
 #include "kgesture.h"
 
 class KActionCollection;
+class KConfig;
+class KConfigGroup;
 class KGlobalAccel;
 class KShortcut;
 class KShortcutsEditorPrivate;
@@ -51,6 +54,7 @@
  * @see KShortcutsDialog
  * @author Nicolas Hadacek <hadacek@via.ecp.fr>
  * @author Hamish Rodda <rodda@kde.org> (KDE 4 porting)
+ * @author Michael Jansen <kde@michael-jansen.biz>
  */
 class KDEUI_EXPORT KShortcutsEditor : public QWidget
 {
@@ -107,6 +111,11 @@
 	/// Destructor
 	virtual ~KShortcutsEditor();
 
+    /**
+     * Are the unsaved changes?
+     */
+    bool isModified() const;
+
 	/**
 	 * Removes all action collections from the editor
 	 */
@@ -119,6 +128,14 @@
 	 */
 	void addCollection(KActionCollection *, const QString &title = QString());
 
+
+    /**
+     * Load the shortcuts from  the \p config object.
+     *
+     * The current active shortcuts are deleted.
+     */
+    void readConfig( KConfig* );
+
 	/**
      * Undo all change made since the last save().
 	 */
@@ -137,6 +154,42 @@
 	 */
 	void save();
 
+    /**
+     * Write the current settings to the \p config object.
+     *
+     * This does not initialize the \p config object. It adds the
+     * configuration. 
+     *
+     * @note this will not save the global configuration! globalaccel holds
+     * that part of the configuration.
+     * @see writeGlobalConfig()
+     *
+     * @param config Config object to save to or, or null to use the
+     *               applications config object
+     *
+     */
+    void writeConfiguration( KConfigGroup* config = 0 ) const;
+
+    /**
+     * Export the current setting to configuration @p config.
+     *
+     * This initializes the configuration object. This will export the global
+     * configuration too.
+     *
+     * @param config Config object
+     */
+    void exportConfiguration( KConfig *config) const;
+
+    /**
+     * Import the settings from configuration @p config.
+     *
+     * This will remove all current setting before importing. All shortcuts
+     * are set to KShortcut() prior to importing from @p config!
+     *
+     * @param config Config object
+     */
+    void importConfiguration( KConfig *config);
+
 	/**
 	 * Checks whether the given shortcut conflicts with global keyboard shortcuts.
 	 * If yes, and the warnUser argument is true, warns the user and gives them a \
                chance
--- trunk/KDE/kdelibs/kdeui/dialogs/kshortcutseditordelegate.cpp #780778:780779
@@ -5,6 +5,7 @@
     Copyright (C) 2006 Hamish Rodda <rodda@kde.org>
     Copyright (C) 2007 Roberto Raggi <roberto@kdevelop.org>
     Copyright (C) 2007 Andreas Hartmetz <ahartmetz@gmail.com>
+    Copyright (C) 2008 Michael Jansen <kde@michael-jansen.biz>
 
     This library is free software; you can redistribute it and/or
     modify it under the terms of the GNU Library General Public
--- trunk/KDE/kdelibs/kdeui/dialogs/kshortcutseditoritem.cpp #780778:780779
@@ -5,6 +5,7 @@
     Copyright (C) 2006 Hamish Rodda <rodda@kde.org>
     Copyright (C) 2007 Roberto Raggi <roberto@kdevelop.org>
     Copyright (C) 2007 Andreas Hartmetz <ahartmetz@gmail.com>
+    Copyright (C) 2008 Michael Jansen <kde@michael-jansen.biz>
 
     This library is free software; you can redistribute it and/or
     modify it under the terms of the GNU Library General Public
@@ -48,6 +49,12 @@
 }
 
 
+bool KShortcutsEditorItem::isModified() const
+{
+    return m_oldLocalShortcut || m_oldGlobalShortcut || m_oldShapeGesture || \
m_oldRockerGesture; +}
+
+
 QVariant KShortcutsEditorItem::data(int column, int role) const
 {
     switch (role) {
@@ -268,6 +275,7 @@
 }
 
 
+
 void KShortcutsEditorItem::undo()
 {
 #ifndef NDEBUG


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

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