From 16821dd8529c564bcfe75876084c38477be9d40b Mon Sep 17 00:00:00 2001
From: con <qtc-committer@nokia.com>
Date: Wed, 16 Dec 2009 14:56:16 +0100
Subject: [PATCH] Move the "Move Up/Down" items from bookmarks menu to
 bookmarks view.

Better would be to support drag and drop in the view, but this might be
better than nothing.

Task-number: QTCREATORBUG-466
---
 src/plugins/bookmarks/bookmarkmanager.cpp | 34 ++++++++++++++---------
 src/plugins/bookmarks/bookmarkmanager.h   |  1 +
 src/plugins/bookmarks/bookmarksplugin.cpp | 19 -------------
 src/plugins/bookmarks/bookmarksplugin.h   |  2 --
 4 files changed, 22 insertions(+), 34 deletions(-)

diff --git a/src/plugins/bookmarks/bookmarkmanager.cpp b/src/plugins/bookmarks/bookmarkmanager.cpp
index ce08ec8202b..326638fc1bf 100644
--- a/src/plugins/bookmarks/bookmarkmanager.cpp
+++ b/src/plugins/bookmarks/bookmarkmanager.cpp
@@ -35,6 +35,7 @@
 
 #include <coreplugin/editormanager/editormanager.h>
 #include <coreplugin/icore.h>
+#include <coreplugin/actionmanager/actionmanager.h>
 #include <coreplugin/uniqueidmanager.h>
 #include <projectexplorer/projectexplorer.h>
 #include <projectexplorer/session.h>
@@ -227,15 +228,24 @@ BookmarkView::~BookmarkView()
 void BookmarkView::contextMenuEvent(QContextMenuEvent *event)
 {
     QMenu menu;
-    QAction *remove = menu.addAction(tr("&Remove Bookmark"));
-    QAction *removeAll = menu.addAction(tr("Remove all Bookmarks"));
+    QAction *moveUp = menu.addAction(tr("Move Up"));
+    QAction *moveDown = menu.addAction(tr("Move Down"));
+    QAction *remove = menu.addAction(tr("&Remove"));
+    QAction *removeAll = menu.addAction(tr("Remove All"));
     m_contextMenuIndex = indexAt(event->pos());
-    if (!m_contextMenuIndex.isValid())
+    if (!m_contextMenuIndex.isValid()) {
+        moveUp->setEnabled(false);
+        moveDown->setEnabled(false);
         remove->setEnabled(false);
+    }
 
     if (model()->rowCount() == 0)
         removeAll->setEnabled(false);
 
+    connect(moveUp, SIGNAL(triggered()),
+            m_manager, SLOT(moveUp()));
+    connect(moveDown, SIGNAL(triggered()),
+            m_manager, SLOT(moveDown()));
     connect(remove, SIGNAL(triggered()),
             this, SLOT(removeFromContextMenu()));
     connect(removeAll, SIGNAL(triggered()),
@@ -251,18 +261,16 @@ void BookmarkView::removeFromContextMenu()
 
 void BookmarkView::removeBookmark(const QModelIndex& index)
 {
-    BookmarkManager *manager = static_cast<BookmarkManager *>(model());
-    Bookmark *bm = manager->bookmarkForIndex(index);
-    manager->removeBookmark(bm);
+    Bookmark *bm = m_manager->bookmarkForIndex(index);
+    m_manager->removeBookmark(bm);
 }
 
 // The perforcemance of this function could be greatly improved.
 //
 void BookmarkView::removeAll()
 {
-    BookmarkManager *manager = static_cast<BookmarkManager *>(model());
-    while (manager->rowCount()) {
-        QModelIndex index = manager->index(0, 0);
+    while (m_manager->rowCount()) {
+        QModelIndex index = m_manager->index(0, 0);
         removeBookmark(index);
     }
 }
@@ -271,6 +279,7 @@ void BookmarkView::setModel(QAbstractItemModel *model)
 {
     BookmarkManager *manager = qobject_cast<BookmarkManager *>(model);
     QTC_ASSERT(manager, return);
+    m_manager = manager;
     QListView::setModel(model);
     setSelectionModel(manager->selectionModel());
     setSelectionMode(QAbstractItemView::SingleSelection);
@@ -279,10 +288,9 @@ void BookmarkView::setModel(QAbstractItemModel *model)
 
 void BookmarkView::gotoBookmark(const QModelIndex &index)
 {
-    BookmarkManager *bm = static_cast<BookmarkManager *>(model());
-    Bookmark *bk = bm->bookmarkForIndex(index);
-    if (!bm->gotoBookmark(bk))
-        bm->removeBookmark(bk);
+    Bookmark *bk = m_manager->bookmarkForIndex(index);
+    if (!m_manager->gotoBookmark(bk))
+        m_manager->removeBookmark(bk);
 }
 
 ////
diff --git a/src/plugins/bookmarks/bookmarkmanager.h b/src/plugins/bookmarks/bookmarkmanager.h
index d916759fe82..02c30368334 100644
--- a/src/plugins/bookmarks/bookmarkmanager.h
+++ b/src/plugins/bookmarks/bookmarkmanager.h
@@ -151,6 +151,7 @@ protected:
 private:
     BookmarkContext *m_bookmarkContext;
     QModelIndex m_contextMenuIndex;
+    BookmarkManager *m_manager;
 };
 
 class BookmarkContext : public Core::IContext
diff --git a/src/plugins/bookmarks/bookmarksplugin.cpp b/src/plugins/bookmarks/bookmarksplugin.cpp
index ca6f406d111..dc91a36cc2f 100644
--- a/src/plugins/bookmarks/bookmarksplugin.cpp
+++ b/src/plugins/bookmarks/bookmarksplugin.cpp
@@ -98,21 +98,6 @@ bool BookmarksPlugin::initialize(const QStringList & /*arguments*/, QString *)
     cmd = am->registerAction(sep, QLatin1String("Bookmarks.Sep.Toggle"), textcontext);
     mbm->addAction(cmd);
 
-    // Move Up
-    m_moveUpAction = new QAction(tr("Move Up"), this);
-    cmd = am->registerAction(m_moveUpAction, BOOKMARKS_MOVEUP_ACTION, context);
-    mbm->addAction(cmd);
-
-    // Move Down
-    m_moveDownAction = new QAction(tr("Move Down"), this);
-    cmd = am->registerAction(m_moveDownAction, BOOKMARKS_MOVEDOWN_ACTION, context);
-    mbm->addAction(cmd);
-
-    sep = new QAction(this);
-    sep->setSeparator(true);
-    cmd = am->registerAction(sep, QLatin1String("Bookmarks.Sep.Navigation"), context);
-    mbm->addAction(cmd);
-
     //Previous
     m_prevAction = new QAction(tr("Previous Bookmark"), this);
     cmd = am->registerAction(m_prevAction, BOOKMARKS_PREV_ACTION, globalcontext);
@@ -155,8 +140,6 @@ bool BookmarksPlugin::initialize(const QStringList & /*arguments*/, QString *)
     connect(m_nextAction, SIGNAL(triggered()), m_bookmarkManager, SLOT(next()));
     connect(m_docPrevAction, SIGNAL(triggered()), m_bookmarkManager, SLOT(prevInDocument()));
     connect(m_docNextAction, SIGNAL(triggered()), m_bookmarkManager, SLOT(nextInDocument()));
-    connect(m_moveUpAction, SIGNAL(triggered()), m_bookmarkManager, SLOT(moveUp()));
-    connect(m_moveDownAction, SIGNAL(triggered()), m_bookmarkManager, SLOT(moveDown()));
     connect(m_bookmarkManager, SIGNAL(updateActions(int)), this, SLOT(updateActions(int)));
     updateActions(m_bookmarkManager->state());
     addAutoReleasedObject(new BookmarkViewFactory(m_bookmarkManager));
@@ -192,8 +175,6 @@ void BookmarksPlugin::updateActions(int state)
     m_nextAction->setEnabled(hasbm);
     m_docPrevAction->setEnabled(hasdocbm);
     m_docNextAction->setEnabled(hasdocbm);
-    m_moveUpAction->setEnabled(hasbm);
-    m_moveDownAction->setEnabled(hasbm);
 }
 
 void BookmarksPlugin::editorOpened(Core::IEditor *editor)
diff --git a/src/plugins/bookmarks/bookmarksplugin.h b/src/plugins/bookmarks/bookmarksplugin.h
index 3686dbec914..5a55e864333 100644
--- a/src/plugins/bookmarks/bookmarksplugin.h
+++ b/src/plugins/bookmarks/bookmarksplugin.h
@@ -85,8 +85,6 @@ private:
     QAction *m_nextAction;
     QAction *m_docPrevAction;
     QAction *m_docNextAction;
-    QAction *m_moveUpAction;
-    QAction *m_moveDownAction;
 
     QAction *m_bookmarkMarginAction;
     int m_bookmarkMarginActionLineNumber;
-- 
GitLab