diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/dolphinmainwindow.cpp | 50 | ||||
| -rw-r--r-- | src/dolphinmainwindow.h | 10 | ||||
| -rw-r--r-- | src/dolphinpart.cpp | 35 | ||||
| -rw-r--r-- | src/dolphinpart.h | 8 | ||||
| -rw-r--r-- | src/dolphinpart.rc | 59 | ||||
| -rw-r--r-- | src/dolphinui.rc | 2 | ||||
| -rw-r--r-- | src/dolphinview.cpp | 45 | ||||
| -rw-r--r-- | src/dolphinview.h | 27 |
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 |
