┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/dolphinmainwindow.cpp50
-rw-r--r--src/dolphinmainwindow.h10
-rw-r--r--src/dolphinpart.cpp35
-rw-r--r--src/dolphinpart.h8
-rw-r--r--src/dolphinpart.rc59
-rw-r--r--src/dolphinui.rc2
-rw-r--r--src/dolphinview.cpp45
-rw-r--r--src/dolphinview.h27
8 files changed, 183 insertions, 53 deletions
diff --git a/src/dolphinmainwindow.cpp b/src/dolphinmainwindow.cpp
index a7cbc527a..74869e967 100644
--- a/src/dolphinmainwindow.cpp
+++ b/src/dolphinmainwindow.cpp
@@ -698,19 +698,11 @@ void DolphinMainWindow::invertSelection()
clearStatusBar();
m_activeViewContainer->view()->invertSelection();
}
-void DolphinMainWindow::setIconsView()
-{
- m_activeViewContainer->view()->setMode(DolphinView::IconsView);
-}
-void DolphinMainWindow::setDetailsView()
+void DolphinMainWindow::setViewMode(QAction* action)
{
- m_activeViewContainer->view()->setMode(DolphinView::DetailsView);
-}
-
-void DolphinMainWindow::setColumnView()
-{
- m_activeViewContainer->view()->setMode(DolphinView::ColumnView);
+ const DolphinView::Mode mode = action->data().value<DolphinView::Mode>();
+ m_activeViewContainer->view()->setMode(mode);
}
void DolphinMainWindow::sortByName()
@@ -1149,28 +1141,16 @@ void DolphinMainWindow::setupActions()
SLOT(zoomOut()),
actionCollection());
- KToggleAction* iconsView = actionCollection()->add<KToggleAction>("icons");
- iconsView->setText(i18nc("@action:inmenu View Mode", "Icons"));
- iconsView->setShortcut(Qt::CTRL | Qt::Key_1);
- iconsView->setIcon(KIcon("fileview-icon"));
- connect(iconsView, SIGNAL(triggered()), this, SLOT(setIconsView()));
-
- KToggleAction* detailsView = actionCollection()->add<KToggleAction>("details");
- detailsView->setText(i18nc("@action:inmenu View Mode", "Details"));
- detailsView->setShortcut(Qt::CTRL | Qt::Key_2);
- detailsView->setIcon(KIcon("fileview-detailed"));
- connect(detailsView, SIGNAL(triggered()), this, SLOT(setDetailsView()));
- KToggleAction* columnView = actionCollection()->add<KToggleAction>("columns");
- columnView->setText(i18nc("@action:inmenu View Mode", "Columns"));
- columnView->setShortcut(Qt::CTRL | Qt::Key_3);
- columnView->setIcon(KIcon("fileview-column"));
- connect(columnView, SIGNAL(triggered()), this, SLOT(setColumnView()));
+ KToggleAction* iconsView = DolphinView::iconsModeAction(actionCollection());
+ KToggleAction* detailsView = DolphinView::detailsModeAction(actionCollection());
+ KToggleAction* columnView = DolphinView::columnsModeAction(actionCollection());
QActionGroup* viewModeGroup = new QActionGroup(this);
viewModeGroup->addAction(iconsView);
viewModeGroup->addAction(detailsView);
viewModeGroup->addAction(columnView);
+ connect(viewModeGroup, SIGNAL(triggered(QAction*)), this, SLOT(setViewMode(QAction*)));
KToggleAction* sortByName = actionCollection()->add<KToggleAction>("sort_by_name");
sortByName->setText(i18nc("@action:inmenu Sort By", "Name"));
@@ -1469,21 +1449,7 @@ void DolphinMainWindow::updateViewActions()
zoomOutAction->setEnabled(view->isZoomOutPossible());
}
- QAction* action = 0;
- switch (view->mode()) {
- case DolphinView::IconsView:
- action = actionCollection()->action("icons");
- break;
- case DolphinView::DetailsView:
- action = actionCollection()->action("details");
- break;
- case DolphinView::ColumnView:
- action = actionCollection()->action("columns");
- break;
- default:
- break;
- }
-
+ QAction* action = actionCollection()->action(view->currentViewModeActionName());
if (action != 0) {
KToggleAction* toggleAction = static_cast<KToggleAction*>(action);
toggleAction->setChecked(true);
diff --git a/src/dolphinmainwindow.h b/src/dolphinmainwindow.h
index 991312c0c..dac0c0be8 100644
--- a/src/dolphinmainwindow.h
+++ b/src/dolphinmainwindow.h
@@ -251,14 +251,8 @@ private slots:
*/
void invertSelection();
- /** The current active view is switched to the icons mode. */
- void setIconsView();
-
- /** The current active view is switched to the details mode. */
- void setDetailsView();
-
- /** The current active view is switched to the column mode. */
- void setColumnView();
+ /** The current active view is switched to a new view mode. */
+ void setViewMode(QAction *);
/** The sorting of the current view should be done by the name. */
void sortByName();
diff --git a/src/dolphinpart.cpp b/src/dolphinpart.cpp
index 092d2e14a..31cde2931 100644
--- a/src/dolphinpart.cpp
+++ b/src/dolphinpart.cpp
@@ -18,6 +18,9 @@
*/
#include "dolphinpart.h"
+#include <kactioncollection.h>
+#include <ktoggleaction.h>
+#include <QActionGroup>
#include "dolphinsortfilterproxymodel.h"
#include "dolphinview.h"
#include "dolphinmodel.h"
@@ -67,6 +70,8 @@ DolphinPart::DolphinPart(QWidget* parentWidget, QObject* parent, const QStringLi
m_proxyModel);
setWidget(m_view);
+ setXMLFile("dolphinpart.rc");
+
connect(m_view, SIGNAL(infoMessage(QString)),
this, SLOT(slotInfoMessage(QString)));
connect(m_view, SIGNAL(errorMessage(QString)),
@@ -81,7 +86,11 @@ DolphinPart::DolphinPart(QWidget* parentWidget, QObject* parent, const QStringLi
connect(m_view, SIGNAL(requestItemInfo(KFileItem)),
this, SLOT(slotRequestItemInfo(KFileItem)));
- // TODO provide a way to switch from iconview to listview (and others)
+ createActions();
+ updateViewActions();
+
+ // TODO provide these actions in the menu, merged with the existing view-mode-actions somehow
+ // [Q_PROPERTY introspection?]
// TODO connect to urlsDropped
@@ -102,6 +111,24 @@ DolphinPart::~DolphinPart()
delete m_dirLister;
}
+void DolphinPart::createActions()
+{
+ QActionGroup* viewModeActions = new QActionGroup(this);
+ viewModeActions->addAction(DolphinView::iconsModeAction(actionCollection()));
+ viewModeActions->addAction(DolphinView::detailsModeAction(actionCollection()));
+ viewModeActions->addAction(DolphinView::columnsModeAction(actionCollection()));
+ connect(viewModeActions, SIGNAL(triggered(QAction*)), this, SLOT(slotViewModeActionTriggered(QAction*)));
+}
+
+void DolphinPart::updateViewActions()
+{
+ QAction* action = actionCollection()->action(m_view->currentViewModeActionName());
+ if (action != 0) {
+ KToggleAction* toggleAction = static_cast<KToggleAction*>(action);
+ toggleAction->setChecked(true);
+ }
+}
+
KAboutData* DolphinPart::createAboutData()
{
return new KAboutData("dolphinpart", 0, ki18nc("@title", "Dolphin Part"), "0.1");
@@ -191,4 +218,10 @@ void DolphinPart::slotOpenContextMenu(const KFileItem& _item, const KUrl&)
emit m_extension->popupMenu( QCursor::pos(), items, KParts::OpenUrlArguments(), KParts::BrowserArguments(), popupFlags );
}
+void DolphinPart::slotViewModeActionTriggered(QAction* action)
+{
+ const DolphinView::Mode mode = action->data().value<DolphinView::Mode>();
+ m_view->setMode(mode);
+}
+
#include "dolphinpart.moc"
diff --git a/src/dolphinpart.h b/src/dolphinpart.h
index b0def14f4..e4a0ffc9b 100644
--- a/src/dolphinpart.h
+++ b/src/dolphinpart.h
@@ -67,6 +67,14 @@ private Q_SLOTS:
* @url URL which contains \a item.
*/
void slotOpenContextMenu(const KFileItem& item, const KUrl& url);
+ /**
+ * Emitted when the user requested a change of view mode
+ */
+ void slotViewModeActionTriggered(QAction*);
+
+private:
+ void createActions();
+ void updateViewActions();
private:
DolphinView* m_view;
diff --git a/src/dolphinpart.rc b/src/dolphinpart.rc
index 8d1c8b69c..2247c57b8 100644
--- a/src/dolphinpart.rc
+++ b/src/dolphinpart.rc
@@ -1 +1,58 @@
-
+<!DOCTYPE kpartgui SYSTEM "kpartgui.dtd">
+<kpartgui version="2" name="dolphinpart" >
+ <MenuBar>
+ <Menu name="edit">
+ <Action name="select_all" />
+ <Action name="invert_selection" />
+ </Menu>
+ <Menu name="view">
+ <Menu name="sort">
+ <text context="@title:menu">Sort by</text>
+ <Action name="sort_by_name" />
+ <Action name="sort_by_size" />
+ <Action name="sort_by_date" />
+ <Action name="sort_by_permissions" />
+ <Action name="sort_by_owner" />
+ <Action name="sort_by_group" />
+ <Action name="sort_by_type" />
+ <Action name="sort_by_rating" />
+ <Action name="sort_by_tags" />
+ <Separator/>
+ <Action name="descending" />
+ </Menu>
+ <Menu name="additional_info">
+ <text context="@title:menu">Additional Information</text>
+ <Action name="show_mime_info" />
+ <Action name="show_size_info" />
+ <Action name="show_date_info" />
+ </Menu>
+ <Action name="show_preview" />
+ <Action name="show_in_groups" />
+ <Action name="show_hidden_files" />
+ <Menu name="panels">
+ <text context="@title:menu">Panels</text>
+ <Action name="show_places_panel" />
+ <Action name="show_info_panel" />
+ <Action name="show_folders_panel" />
+ <Action name="show_terminal_panel" />
+ </Menu>
+ <Menu name="navigation_bar">
+ <text context="@title:menu">Navigation Bar</text>
+ <Action name="editable_location" />
+ <Action name="edit_location" />
+ </Menu>
+ <Separator/>
+ <Action name="view_properties" />
+ </Menu>
+ <Menu name="tools">
+ <Action name="find_file" />
+ <Action name="show_filter_bar" />
+ <Action name="compare_files" />
+ </Menu>
+</MenuBar>
+<ToolBar name="mainToolBar"><text context="@title:menu">Dolphin Toolbar</text>
+ <Action name="icons" />
+ <Action name="details" />
+ <Action name="columns" />
+</ToolBar>
+</kpartgui>
diff --git a/src/dolphinui.rc b/src/dolphinui.rc
index 21d10c5f7..f43b8761f 100644
--- a/src/dolphinui.rc
+++ b/src/dolphinui.rc
@@ -121,6 +121,6 @@
<Action name="split_view" />
</ToolBar>
<ActionProperties>
- <Action shortcut="Backspace;XF86Back" name="go_back" />
+ <Action shortcut="Backspace; XF86Back" name="go_back" />
</ActionProperties>
</kpartgui>
diff --git a/src/dolphinview.cpp b/src/dolphinview.cpp
index 59341b65b..ecc4dc341 100644
--- a/src/dolphinview.cpp
+++ b/src/dolphinview.cpp
@@ -19,6 +19,8 @@
***************************************************************************/
#include "dolphinview.h"
+#include <ktoggleaction.h>
+#include <kactioncollection.h>
#include <QApplication>
#include <QClipboard>
@@ -960,4 +962,47 @@ void DolphinView::applyCutItemEffect()
}
}
+KToggleAction* DolphinView::iconsModeAction(KActionCollection* actionCollection)
+{
+ KToggleAction* iconsView = actionCollection->add<KToggleAction>("icons");
+ iconsView->setText(i18nc("@action:inmenu View Mode", "Icons"));
+ iconsView->setShortcut(Qt::CTRL | Qt::Key_1);
+ iconsView->setIcon(KIcon("fileview-icon"));
+ iconsView->setData(QVariant::fromValue(IconsView));
+ return iconsView;
+}
+
+KToggleAction* DolphinView::detailsModeAction(KActionCollection* actionCollection)
+{
+ KToggleAction* detailsView = actionCollection->add<KToggleAction>("details");
+ detailsView->setText(i18nc("@action:inmenu View Mode", "Details"));
+ detailsView->setShortcut(Qt::CTRL | Qt::Key_2);
+ detailsView->setIcon(KIcon("fileview-detailed"));
+ detailsView->setData(QVariant::fromValue(DetailsView));
+ return detailsView;
+}
+
+KToggleAction* DolphinView::columnsModeAction(KActionCollection* actionCollection)
+{
+ KToggleAction* columnView = actionCollection->add<KToggleAction>("columns");
+ columnView->setText(i18nc("@action:inmenu View Mode", "Columns"));
+ columnView->setShortcut(Qt::CTRL | Qt::Key_3);
+ columnView->setIcon(KIcon("fileview-column"));
+ columnView->setData(QVariant::fromValue(ColumnView));
+ return columnView;
+}
+
+QString DolphinView::currentViewModeActionName() const
+{
+ switch (m_mode) {
+ case DolphinView::IconsView:
+ return "icons";
+ case DolphinView::DetailsView:
+ return "details";
+ case DolphinView::ColumnView:
+ return "columns";
+ }
+ return QString(); // can't happen
+}
+
#include "dolphinview.moc"
diff --git a/src/dolphinview.h b/src/dolphinview.h
index 4e76c87c2..aef541a89 100644
--- a/src/dolphinview.h
+++ b/src/dolphinview.h
@@ -37,6 +37,7 @@
#include <QListView>
#include <QWidget>
+class KToggleAction;
class DolphinController;
class KDirLister;
class KFileItemDelegate;
@@ -319,6 +320,29 @@ public:
*/
void calculateItemCount(int& fileCount, int& folderCount);
+ /**
+ * Returns the "switch to icons mode" action.
+ * This code is here to share it between the mainwindow and the part
+ */
+ static KToggleAction* iconsModeAction(KActionCollection* collection);
+
+ /**
+ * Returns the "switch to details mode" action.
+ * This code is here to share it between the mainwindow and the part
+ */
+ static KToggleAction* detailsModeAction(KActionCollection* collection);
+
+ /**
+ * Returns the "switch to columns mode" action.
+ * This code is here to share it between the mainwindow and the part
+ */
+ static KToggleAction* columnsModeAction(KActionCollection* collection);
+
+ /**
+ * Returns the action name corresponding to the current view mode
+ */
+ QString currentViewModeActionName() const;
+
public slots:
/**
* Changes the directory to \a url. If the current directory is equal to
@@ -603,4 +627,7 @@ private:
KUrl m_rootUrl;
};
+/// Allow using DolphinView::Mode in QVariant
+Q_DECLARE_METATYPE(DolphinView::Mode)
+
#endif // DOLPHINVIEW_H