┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPeter Penz <[email protected]>2007-03-16 00:24:56 +0000
committerPeter Penz <[email protected]>2007-03-16 00:24:56 +0000
commit9ed13b31b458bc4d41c7b1c5bbc472fce3554d8d (patch)
treecb55c8b71961d33aee65d96a00ccfb80fd00bf08 /src
parent1cdb64a12bf5e6f3b97d38992799ba6bfbb06ef5 (diff)
Let's keep it simple: only offer a basic context menu for the treeview sidebar.
svn path=/trunk/KDE/kdebase/apps/; revision=642982
Diffstat (limited to 'src')
-rw-r--r--src/dolphincontextmenu.cpp61
-rw-r--r--src/dolphincontextmenu.h12
-rw-r--r--src/dolphinview.cpp5
-rw-r--r--src/treeviewsidebarpage.cpp32
4 files changed, 43 insertions, 67 deletions
diff --git a/src/dolphincontextmenu.cpp b/src/dolphincontextmenu.cpp
index 915f7e3e1..2475c68bc 100644
--- a/src/dolphincontextmenu.cpp
+++ b/src/dolphincontextmenu.cpp
@@ -48,21 +48,23 @@
DolphinContextMenu::DolphinContextMenu(DolphinMainWindow* parent,
KFileItem* fileInfo,
const KUrl& baseUrl,
- KFileItemList selectedItems) :
+ ViewType viewType) :
m_mainWindow(parent),
m_fileInfo(fileInfo),
m_baseUrl(baseUrl),
- m_selectedItems(selectedItems),
+ m_viewType(viewType),
m_context(NoContext)
{
- // The context menu either accesses the URLs of the selected items
- // or the items itself. To increase the performance the URLs are cached.
- KFileItemList::const_iterator it = selectedItems.begin();
- const KFileItemList::const_iterator end = selectedItems.end();
- while (it != end) {
- KFileItem* item = *it;
- m_selectedUrls.append(item->url());
- ++it;
+ if (viewType == ItemsView) {
+ // The context menu either accesses the URLs of the selected items
+ // or the items itself. To increase the performance both lists are cached.
+ DolphinView* view = m_mainWindow->activeView();
+ m_selectedUrls = view->selectedUrls();
+ m_selectedItems = view->selectedItems();
+ }
+ else if (fileInfo != 0) {
+ m_selectedUrls.append(fileInfo->url());
+ m_selectedItems.append(fileInfo);
}
}
@@ -157,12 +159,16 @@ void DolphinContextMenu::openItemContextMenu()
Q_ASSERT(m_fileInfo != 0);
KMenu* popup = new KMenu(m_mainWindow);
- insertDefaultItemActions(popup);
+ if (m_viewType == ItemsView) {
+ insertDefaultItemActions(popup);
+ }
+
+ popup->addSeparator();
// insert 'Bookmark this folder' entry if exactly one item is selected
QAction* bookmarkAction = 0;
if (m_fileInfo->isDir() && (m_selectedUrls.count() == 1)) {
- bookmarkAction = popup->addAction(KIcon("bookmark-folder"), i18n("Bookmark this folder"));
+ bookmarkAction = popup->addAction(KIcon("bookmark-folder"), i18n("Bookmark folder"));
}
// Insert 'Open With...' sub menu
@@ -174,9 +180,11 @@ void DolphinContextMenu::openItemContextMenu()
const QList<QAction*> serviceActions = insertActionItems(popup, actionsVector);
popup->addSeparator();
- // insert 'Properties...' entry
- QAction* propertiesAction = m_mainWindow->actionCollection()->action("properties");
- popup->addAction(propertiesAction);
+ if (m_viewType == ItemsView) {
+ // insert 'Properties...' entry
+ QAction* propertiesAction = m_mainWindow->actionCollection()->action("properties");
+ popup->addAction(propertiesAction);
+ }
QAction* activatedAction = popup->exec(QCursor::pos());
@@ -277,19 +285,12 @@ void DolphinContextMenu::insertDefaultItemActions(KMenu* popup)
Q_ASSERT(popup != 0);
// insert 'Cut', 'Copy' and 'Paste'
- const KStandardAction::StandardAction actionNames[] = {
- KStandardAction::Cut,
- KStandardAction::Copy,
- KStandardAction::Paste
- };
-
- const int count = sizeof(actionNames) / sizeof(KStandardAction::StandardAction);
- for (int i = 0; i < count; ++i) {
- QAction* action = m_mainWindow->actionCollection()->action(KStandardAction::stdName(actionNames[i]));
- if (action != 0) {
- popup->addAction(action);
- }
- }
+ QAction* cutAction = m_mainWindow->actionCollection()->action(KStandardAction::stdName(KStandardAction::Cut));
+ QAction* copyAction = m_mainWindow->actionCollection()->action(KStandardAction::stdName(KStandardAction::Copy));
+ QAction* pasteAction = m_mainWindow->actionCollection()->action(KStandardAction::stdName(KStandardAction::Paste));
+ popup->addAction(cutAction);
+ popup->addAction(copyAction);
+ popup->addAction(pasteAction);
popup->addSeparator();
// insert 'Rename'
@@ -354,7 +355,7 @@ QList<QAction*> DolphinContextMenu::insertOpenWithItems(KMenu* popup,
const QString appName((*it)->name());
if (!containsEntry(openWithMenu, appName)) {
const KIcon icon((*it)->icon());
- QAction *action = openWithMenu->addAction(icon, appName);
+ QAction* action = openWithMenu->addAction(icon, appName);
openWithVector.append(*it);
openWithActions << action;
}
@@ -364,7 +365,6 @@ QList<QAction*> DolphinContextMenu::insertOpenWithItems(KMenu* popup,
QAction* action = openWithMenu->addAction(i18n("&Other..."));
openWithActions << action;
- popup->addSeparator();
popup->addMenu(openWithMenu);
}
else {
@@ -378,7 +378,6 @@ QList<QAction*> DolphinContextMenu::insertOpenWithItems(KMenu* popup,
else {
// At least one of the selected items has a different MIME type. In this case
// just show a disabled "Open With..." entry.
- popup->addSeparator();
QAction* action = popup->addAction(i18n("Open With..."));
action->setEnabled(false);
}
diff --git a/src/dolphincontextmenu.h b/src/dolphincontextmenu.h
index 7e3476a4c..09288c602 100644
--- a/src/dolphincontextmenu.h
+++ b/src/dolphincontextmenu.h
@@ -48,6 +48,12 @@ class DolphinMainWindow;
class DolphinContextMenu
{
public:
+ enum ViewType
+ {
+ ItemsView,
+ SidebarView
+ };
+
/**
* @parent Pointer to the main window the context menu
* belongs to.
@@ -56,13 +62,12 @@ public:
* is above the viewport.
* @baseUrl Base URL of the viewport where the context menu
* should be opened.
- * @selectedItems Selected items where the actions of the context menu
- * are applied.
+ * @viewType On which view type is the context menu shown.
*/
DolphinContextMenu(DolphinMainWindow* parent,
KFileItem* fileInfo,
const KUrl& baseUrl,
- KFileItemList selectedItems);
+ ViewType viewType = ItemsView);
virtual ~DolphinContextMenu();
@@ -128,6 +133,7 @@ private:
KUrl m_baseUrl;
KFileItemList m_selectedItems;
KUrl::List m_selectedUrls;
+ ViewType m_viewType;
int m_context;
};
diff --git a/src/dolphinview.cpp b/src/dolphinview.cpp
index 8f06d3dc8..994f03b6e 100644
--- a/src/dolphinview.cpp
+++ b/src/dolphinview.cpp
@@ -973,10 +973,7 @@ void DolphinView::openContextMenu(const QPoint& pos)
item = fileItem(index);
}
- DolphinContextMenu contextMenu(m_mainWindow,
- item,
- url(),
- selectedItems());
+ DolphinContextMenu contextMenu(m_mainWindow, item, url());
contextMenu.open();
}
diff --git a/src/treeviewsidebarpage.cpp b/src/treeviewsidebarpage.cpp
index 65b0687e8..b7c1f1f53 100644
--- a/src/treeviewsidebarpage.cpp
+++ b/src/treeviewsidebarpage.cpp
@@ -108,12 +108,6 @@ void TreeViewSidebarPage::contextMenuEvent(QContextMenuEvent* event)
{
SidebarPage::contextMenuEvent(event);
- // TODO: temporary deactivate the following code, as the wrong
- // selection of cut/copy/paste actions is very confusing:
- return;
-
- KFileItem* item = 0;
-
const QModelIndex index = m_treeView->indexAt(event->pos());
if (!index.isValid()) {
// only open a context menu above a directory item
@@ -122,35 +116,15 @@ void TreeViewSidebarPage::contextMenuEvent(QContextMenuEvent* event)
#if defined(USE_PROXY_MODEL)
const QModelIndex dirModelIndex = m_proxyModel->mapToSource(index);
- item = m_dirModel->itemForIndex(dirModelIndex);
-#else
- item = m_dirModel->itemForIndex(index);
-#endif
-
-#if defined(USE_PROXY_MODEL)
- const QItemSelection selection = m_proxyModel->mapSelectionToSource(
- m_treeView->selectionModel()->selection());
+ KFileItem* item = m_dirModel->itemForIndex(dirModelIndex);
#else
- const QItemSelection selection = m_treeView->selectionModel()->selection();
+ KFileItem* item = m_dirModel->itemForIndex(index);
#endif
- KFileItemList selectedItems;
-
- const QModelIndexList indexList = selection.indexes();
- QModelIndexList::const_iterator end = indexList.end();
- for (QModelIndexList::const_iterator it = indexList.begin(); it != end; ++it) {
- Q_ASSERT((*it).isValid());
-
- KFileItem* item = m_dirModel->itemForIndex(*it);
- if (item != 0) {
- selectedItems.append(item);
- }
- }
-
DolphinContextMenu contextMenu(mainWindow(),
item,
m_dirLister->url(),
- selectedItems);
+ DolphinContextMenu::SidebarView);
contextMenu.open();
}