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

List:       kde-commits
Subject:    KDE/kdepim/kjots
From:       Stephen Kelly <steveire () gmail ! com>
Date:       2008-06-10 1:13:55
Message-ID: 1213060435.731146.4423.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 818921 by skelly:

Change pageOnlyActions, bookOnlyActions etc to QSets instead of KActionCollections \
and  handle the case of multiple selections.
Also, remove code which duplicated conditional action enabling in bookshelf.cpp. 
Also, make the copy action work when a book or multiple entries are selected.



 M  +2 -58     bookshelf.cpp  
 M  +0 -4      bookshelf.h  
 M  +64 -59    kjotscomponent.cpp  
 M  +2 -1      kjotscomponent.h  


--- trunk/KDE/kdepim/kjots/bookshelf.cpp #818920:818921
@@ -47,7 +47,6 @@
 
 Bookshelf::Bookshelf ( QWidget *parent ) : QTreeWidget(parent)
 {
-    bookActionCollection = pageActionCollection = 0;
     sortOrder = Qt::DescendingOrder;
 
     setObjectName( "bookshelf" );
@@ -79,26 +78,8 @@
     action->setText(i18n("Copy Link Address"));
     connect(action, SIGNAL(triggered()), SLOT(copyLinkAddress()));
 
-    pageActionCollection = new KActionCollection(this);
-    bookActionCollection = new KActionCollection(this);
-    multiActionCollection = new KActionCollection(this);
-
-    pageActionCollection->addAction("new_page", \
                actionCollection->action("new_page"));
-    pageActionCollection->addAction("rename_entry", \
                actionCollection->action("rename_entry"));
-    pageActionCollection->addAction("save_to", actionCollection->action("save_to"));
-    pageActionCollection->addAction("copy_link_address", \
                actionCollection->action("copy_link_address"));
-    bookActionCollection->addAction("del_folder", \
                actionCollection->action("del_folder"));
-    pageActionCollection->addAction("del_page", \
                actionCollection->action("del_page"));
-
-    bookActionCollection->addAction("new_page", \
                actionCollection->action("new_page"));
-    bookActionCollection->addAction("rename_entry", \
                actionCollection->action("rename_entry"));
-    bookActionCollection->addAction("save_to", actionCollection->action("save_to"));
-    bookActionCollection->addAction("copy_link_address", \
                actionCollection->action("copy_link_address"));
-    bookActionCollection->addAction("del_folder", \
                actionCollection->action("del_folder"));
-
-    multiActionCollection->addAction("save_to", \
                actionCollection->action("save_to"));
-    multiActionCollection->addAction("del_mult", \
                actionCollection->action("del_mult"));
-
+    // Set up the context menu on the bookshelf.
+    // TODO: Move this to the xml file.
     addAction(actionCollection->action("new_book"));
     addAction(actionCollection->action("new_page"));
     addAction(actionCollection->action("rename_entry"));
@@ -110,9 +91,6 @@
     addAction(actionCollection->action("del_page"));
     addAction(actionCollection->action("del_mult"));
 
-    // Do this now or else the slot will called before DelayedInitialization().
-    connect(this, SIGNAL(itemSelectionChanged()), SLOT(setContextMenuOptions()));
-
     //These need to be connected after books are loaded.
     connect(this, SIGNAL(itemExpanded(QTreeWidgetItem*)), \
                SLOT(itemWasExpanded(QTreeWidgetItem*)));
     connect(this, SIGNAL(itemCollapsed(QTreeWidgetItem*)), \
SLOT(itemWasCollapsed(QTreeWidgetItem*))); @@ -469,40 +447,6 @@
     }
 }
 
-void Bookshelf::setContextMenuOptions()
-{
-    QList<QTreeWidgetItem*> selection = selectedItems();
-    int selectionSize = selection.size();
-
-    // Reset all menu entries
-    foreach ( QAction* action, multiActionCollection->actions() )
-        action->setEnabled(false);
-    foreach ( QAction* action, pageActionCollection->actions() )
-        action->setEnabled(false);
-    foreach ( QAction* action, bookActionCollection->actions() )
-        action->setEnabled(false);
-
-    if ( !selectionSize  ) {
-        // No item is selected
-    } else if ( selectionSize == 1 ) {
-        KJotsEntry *entry = static_cast<KJotsEntry*>(selection.at(0));
-        if ( entry->isBook() ) {
-        foreach ( QAction* action, bookActionCollection->actions() )
-            action->setEnabled(true);
-        } else {
-        foreach ( QAction* action, pageActionCollection->actions() )
-            action->setEnabled(true);
-        }
-    }
-    else if ( selectionSize > 1 ) {
-        foreach ( QAction* action, multiActionCollection->actions() )
-            action->setEnabled(true);
-    }
-
-
-    return;
-}
-
 /*!
     Returns a pointer to the currently selected page.
 */
--- trunk/KDE/kdepim/kjots/bookshelf.h #818920:818921
@@ -77,14 +77,10 @@
     virtual void dragEnterEvent ( QDragEnterEvent * );
     virtual void dragMoveEvent ( QDragMoveEvent * );
 
-    KActionCollection *pageActionCollection;
-    KActionCollection *bookActionCollection;
-    KActionCollection *multiActionCollection;
     Qt::SortOrder sortOrder;
 
 protected slots:
     void entryRenamed(QTreeWidgetItem*, int);
-    void setContextMenuOptions();
     void itemWasExpanded(QTreeWidgetItem*);
     void itemWasCollapsed(QTreeWidgetItem*);
     void copyLinkAddress();
--- trunk/KDE/kdepim/kjots/kjotscomponent.cpp #818920:818921
@@ -84,7 +84,6 @@
 KJotsComponent::KJotsComponent(QWidget* parent, KActionCollection *collection) : \
QWidget(parent)  {
     actionCollection = collection;
-    selectionOnlyActions = pageOnlyActions = 0;
     searchDialog = 0;
 
     QDBusConnection dbus = QDBusConnection::sessionBus();
@@ -226,8 +225,10 @@
     action = KStandardAction::cut(editor, SLOT(cut()), actionCollection);
     connect(editor, SIGNAL(copyAvailable(bool)), action, SLOT(setEnabled(bool)));
     action->setEnabled(false);
-    action = KStandardAction::copy(editor, SLOT(copy()), actionCollection);
+
+    action = KStandardAction::copy(this, SLOT(copy()), actionCollection);
     connect(editor, SIGNAL(copyAvailable(bool)), action, SLOT(setEnabled(bool)));
+    connect(browser, SIGNAL(copyAvailable(bool)), action, SLOT(setEnabled(bool)));
     action->setEnabled(false);
 
     action = actionCollection->addAction("copyIntoTitle");
@@ -317,52 +318,32 @@
     connect(replaceDialog, SIGNAL(optionsChanged()), SLOT(onUpdateReplace()) );
     connect(replaceAllPages, SIGNAL(stateChanged(int)), SLOT(onUpdateReplace()) );
 
-    // Actions that are used only when an entry is selected.
-    selectionOnlyActions = new KActionCollection((QObject*)this);
-    selectionOnlyActions->addAction( "del_folder", \
                actionCollection->action("del_folder") );
-    selectionOnlyActions->addAction( "del_page", \
                actionCollection->action("del_page") );
-    selectionOnlyActions->addAction( "del_mult", \
                actionCollection->action("del_mult") );
-    selectionOnlyActions->addAction( "save_to", actionCollection->action("save_to") \
                );
-    selectionOnlyActions->addAction( "save_to_ascii", \
                actionCollection->action("save_to_ascii") );
-    selectionOnlyActions->addAction( "save_to_html", \
                actionCollection->action("save_to_html") );
-    selectionOnlyActions->addAction( "insert_date", \
                actionCollection->action("insert_date") );
-    selectionOnlyActions->addAction( "rename_entry", \
                actionCollection->action("rename_entry") );
-    selectionOnlyActions->addAction( "manual_save", \
                actionCollection->action("manual_save") );
-    selectionOnlyActions->addAction( "go_next_book", \
                actionCollection->action("go_next_book") );
-    selectionOnlyActions->addAction( "go_next_page", \
                actionCollection->action("go_next_page") );
-    selectionOnlyActions->addAction( "go_prev_book", \
                actionCollection->action("go_prev_book") );
-    selectionOnlyActions->addAction( "go_prev_page", \
                actionCollection->action("go_prev_page") );
-    selectionOnlyActions->addAction( "new_page", \
                actionCollection->action("new_page") );
-    selectionOnlyActions->addAction( KStandardAction::name(KStandardAction::Cut),
-                                     \
                actionCollection->action(KStandardAction::name(KStandardAction::Cut)) \
                );
-    selectionOnlyActions->addAction( KStandardAction::name(KStandardAction::Paste),
-                                     \
                actionCollection->action(KStandardAction::name(KStandardAction::Paste)) \
                );
-    selectionOnlyActions->addAction( \
                KStandardAction::name(KStandardAction::Replace),
-                                     \
                actionCollection->action(KStandardAction::name(KStandardAction::Replace)) \
                );
-    selectionOnlyActions->addAction( KStandardAction::name(KStandardAction::Find),
-                                     \
                actionCollection->action(KStandardAction::name(KStandardAction::Find)) \
                );
-    selectionOnlyActions->addAction( KStandardAction::name(KStandardAction::Print),
-                                     \
                actionCollection->action(KStandardAction::name(KStandardAction::Print)) \
                );
-    selectionOnlyActions->addAction( "change_color", \
actionCollection->action("change_color") ); +    // Actions for a single item \
selection. +    entryActions.insert( \
actionCollection->action(KStandardAction::name(KStandardAction::Find)) ); +    \
entryActions.insert( actionCollection->action("go_next_book") ); +    \
entryActions.insert( actionCollection->action("go_prev_book") ); +    \
entryActions.insert( actionCollection->action("del_folder") ); +    \
entryActions.insert( actionCollection->action("rename_entry") ); +    \
entryActions.insert( actionCollection->action("change_color") );  
     // Actions that are used only when a page is selected.
-    pageOnlyActions = new KActionCollection((QObject*)this);
-    pageOnlyActions->addAction( KStandardAction::name(KStandardAction::Cut),
-                                \
                actionCollection->action(KStandardAction::name(KStandardAction::Cut)) \
                );
-    pageOnlyActions->addAction( KStandardAction::name(KStandardAction::Paste),
-                                \
                actionCollection->action(KStandardAction::name(KStandardAction::Paste)) \
                );
-    pageOnlyActions->addAction( KStandardAction::name(KStandardAction::Replace),
-                                \
                actionCollection->action(KStandardAction::name(KStandardAction::Replace)) \
                );
-    pageOnlyActions->addAction( "del_page", actionCollection->action("del_page") );
-    pageOnlyActions->addAction( "insert_date", \
                actionCollection->action("insert_date") );
-    pageOnlyActions->addAction( "auto_bullet", \
                actionCollection->action("auto_bullet") );
-    pageOnlyActions->addAction( "manage_link", \
                actionCollection->action("manage_link") );
-    pageOnlyActions->addAction( "insert_checkmark", \
actionCollection->action("insert_checkmark") ); +    pageActions.insert( \
actionCollection->action(KStandardAction::name(KStandardAction::Cut)) ); +    \
pageActions.insert( actionCollection->action(KStandardAction::name(KStandardAction::Paste)) \
); +    pageActions.insert( \
actionCollection->action(KStandardAction::name(KStandardAction::Replace)) ); +    \
pageActions.insert( actionCollection->action("go_next_page") ); +    \
pageActions.insert( actionCollection->action("go_prev_page") ); +    \
pageActions.insert( actionCollection->action("del_page") ); +    pageActions.insert( \
actionCollection->action("insert_date") ); +    pageActions.insert( \
actionCollection->action("auto_bullet") ); +    pageActions.insert( \
actionCollection->action("manage_link") ); +    pageActions.insert( \
actionCollection->action("insert_checkmark") );  
     // Actions that are used only when a page is selected.
-    bookOnlyActions = new KActionCollection((QObject*)this);
-    bookOnlyActions->addAction( "save_to_book", \
actionCollection->action("save_to_book") ); +    bookActions.insert( \
actionCollection->action("save_to_book") );  
+    // Actions that are used only when multiple items are selected.
+    multiselectionActions.insert( actionCollection->action("del_mult") );
+
     bookshelf->DelayedInitialization(actionCollection);
     editor->DelayedInitialization(actionCollection, bookshelf);
     browser->DelayedInitialization(bookshelf);
@@ -385,6 +366,10 @@
     }
 }
 
+void KJotsComponent::copy() {
+    activeEditor()->copy();
+}
+
 bool KJotsComponent::createNewBook()
 {
     KJotsBook* book = KJotsBook::createNewBook();
@@ -1229,43 +1214,63 @@
 
 void KJotsComponent::updateMenu()
 {
-    // Sanity check. Too many things call updateMenu().
-    if ( !selectionOnlyActions || !pageOnlyActions ) {
-        return;
-    }
 
     QList<QTreeWidgetItem*> selection = bookshelf->selectedItems();
     int selectionSize = selection.size();
 
     if ( !selectionSize ) {
         // no (meaningful?) selection
-        foreach ( QAction* action, selectionOnlyActions->actions() )
+        foreach ( QAction* action, multiselectionActions )
             action->setEnabled(false);
-        foreach ( QAction* action, pageOnlyActions->actions() )
+        foreach ( QAction* action, entryActions )
             action->setEnabled(false);
-        foreach ( QAction* action, bookOnlyActions->actions() )
+        foreach ( QAction* action, bookActions )
             action->setEnabled(false);
+        foreach ( QAction* action, pageActions )
+            action->setEnabled(false);
         editor->setActionsEnabled( false );
     } else if ( selectionSize > 1 ) {
-        // soon...
-    } else { //selectionSize == 1
-        foreach ( QAction* action, selectionOnlyActions->actions() )
+        foreach ( QAction* action, entryActions )
+            action->setEnabled(false);
+        foreach ( QAction* action, bookActions )
+            action->setEnabled(false);
+        foreach ( QAction* action, pageActions )
+            action->setEnabled(false);
+        foreach ( QAction* action, multiselectionActions )
             action->setEnabled(true);
+    
+        editor->setActionsEnabled( false );
+    } else {
 
+        foreach ( QAction* action, multiselectionActions )
+            action->setEnabled(false);
+        foreach ( QAction* action, entryActions )
+            action->setEnabled(true);
+
         KJotsEntry* entry = static_cast<KJotsEntry*>(selection.at(0));
+
         if ( entry && entry->isBook() ) {
-            foreach ( QAction* action, pageOnlyActions->actions() )
+
+            foreach ( QAction* action, pageActions )
                 action->setEnabled(false);
-            foreach ( QAction* action, bookOnlyActions->actions() )
+            foreach ( QAction* action, bookActions ) {
                 action->setEnabled(true);
+            }
             editor->setActionsEnabled( false );
+
         } else {
-            foreach ( QAction* action, pageOnlyActions->actions() )
-                action->setEnabled(true);
-            foreach ( QAction* action, bookOnlyActions->actions() )
+
+            foreach ( QAction* action, pageActions ) {
+                if (action->objectName() == name(KStandardAction::Cut) ) {
+                    action->setEnabled(activeEditor()->textCursor().hasSelection());
+                } else {
+                    action->setEnabled(true);
+                }
+            }
+            foreach ( QAction* action, bookActions )
                 action->setEnabled(false);
             editor->setActionsEnabled( true );
-            
+
         }
     }
 }
--- trunk/KDE/kdepim/kjots/kjotscomponent.h #818920:818921
@@ -94,6 +94,7 @@
         void configure();
         void updateConfiguration();
 
+        void copy();
         void copySelection();
         void insertDate();
         void onPrint();
@@ -135,7 +136,7 @@
         QTimer         *m_autosaveTimer;
 
         KActionMenu *exportMenu, *bookmarkMenu;
-        KActionCollection *selectionOnlyActions, *pageOnlyActions, *bookOnlyActions;
+        QSet<QAction*> entryActions, pageActions, bookActions, \
multiselectionActions;  KActionCollection *actionCollection;
 
         


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

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