activeViewContainer()->view()->changeSelection(selection);
}
-void DolphinMainWindow::slotSortingChanged(DolphinView::Sorting sorting)
-{
- QAction* action = 0;
- switch (sorting) {
- case DolphinView::SortByName:
- action = actionCollection()->action("sort_by_name");
- break;
- case DolphinView::SortBySize:
- action = actionCollection()->action("sort_by_size");
- break;
- case DolphinView::SortByDate:
- action = actionCollection()->action("sort_by_date");
- break;
- case DolphinView::SortByPermissions:
- action = actionCollection()->action("sort_by_permissions");
- break;
- case DolphinView::SortByOwner:
- action = actionCollection()->action("sort_by_owner");
- break;
- case DolphinView::SortByGroup:
- action = actionCollection()->action("sort_by_group");
- break;
- case DolphinView::SortByType:
- action = actionCollection()->action("sort_by_type");
- break;
-#ifdef HAVE_NEPOMUK
- case DolphinView::SortByRating:
- action = actionCollection()->action("sort_by_rating");
- break;
- case DolphinView::SortByTags:
- action = actionCollection()->action("sort_by_tags");
- break;
-#endif
- default:
- break;
- }
-
- if (action != 0) {
- action->setChecked(true);
- }
-}
-
void DolphinMainWindow::slotEditableStateChanged(bool editable)
{
KToggleAction* editableLocationAction =
m_activeViewContainer->view()->invertSelection();
}
-void DolphinMainWindow::sortByName()
-{
- m_activeViewContainer->view()->setSorting(DolphinView::SortByName);
-}
-
-void DolphinMainWindow::sortBySize()
-{
- m_activeViewContainer->view()->setSorting(DolphinView::SortBySize);
-}
-
-void DolphinMainWindow::sortByDate()
-{
- m_activeViewContainer->view()->setSorting(DolphinView::SortByDate);
-}
-
-void DolphinMainWindow::sortByPermissions()
-{
- m_activeViewContainer->view()->setSorting(DolphinView::SortByPermissions);
-}
-
-void DolphinMainWindow::sortByOwner()
-{
- m_activeViewContainer->view()->setSorting(DolphinView::SortByOwner);
-}
-
-void DolphinMainWindow::sortByGroup()
-{
- m_activeViewContainer->view()->setSorting(DolphinView::SortByGroup);
-}
-
-void DolphinMainWindow::sortByType()
-{
- m_activeViewContainer->view()->setSorting(DolphinView::SortByType);
-}
-
-void DolphinMainWindow::sortByRating()
-{
-#ifdef HAVE_NEPOMUK
- m_activeViewContainer->view()->setSorting(DolphinView::SortByRating);
-#endif
-}
-
-void DolphinMainWindow::sortByTags()
-{
-#ifdef HAVE_NEPOMUK
- m_activeViewContainer->view()->setSorting(DolphinView::SortByTags);
-#endif
-}
-
void DolphinMainWindow::toggleSplitView()
{
if (m_viewContainer[SecondaryView] == 0) {
connect(invertSelection, SIGNAL(triggered()), this, SLOT(invertSelection()));
// setup 'View' menu
-
- //TODO
- //QActionGroup* sortActionGroup = DolphinView::createSortActionGroup(actionCollection());
- //connect(sortActionGroup, SIGNAL(triggered(QAction*)), this, SLOT(sortActionGroupTriggered(QAction*)));
-
- KToggleAction* sortByName = actionCollection()->add<KToggleAction>("sort_by_name");
- sortByName->setText(i18nc("@action:inmenu Sort By", "Name"));
- connect(sortByName, SIGNAL(triggered()), this, SLOT(sortByName()));
-
- KToggleAction* sortBySize = actionCollection()->add<KToggleAction>("sort_by_size");
- sortBySize->setText(i18nc("@action:inmenu Sort By", "Size"));
- connect(sortBySize, SIGNAL(triggered()), this, SLOT(sortBySize()));
-
- KToggleAction* sortByDate = actionCollection()->add<KToggleAction>("sort_by_date");
- sortByDate->setText(i18nc("@action:inmenu Sort By", "Date"));
- connect(sortByDate, SIGNAL(triggered()), this, SLOT(sortByDate()));
-
- KToggleAction* sortByPermissions = actionCollection()->add<KToggleAction>("sort_by_permissions");
- sortByPermissions->setText(i18nc("@action:inmenu Sort By", "Permissions"));
- connect(sortByPermissions, SIGNAL(triggered()), this, SLOT(sortByPermissions()));
-
- KToggleAction* sortByOwner = actionCollection()->add<KToggleAction>("sort_by_owner");
- sortByOwner->setText(i18nc("@action:inmenu Sort By", "Owner"));
- connect(sortByOwner, SIGNAL(triggered()), this, SLOT(sortByOwner()));
-
- KToggleAction* sortByGroup = actionCollection()->add<KToggleAction>("sort_by_group");
- sortByGroup->setText(i18nc("@action:inmenu Sort By", "Group"));
- connect(sortByGroup, SIGNAL(triggered()), this, SLOT(sortByGroup()));
-
- KToggleAction* sortByType = actionCollection()->add<KToggleAction>("sort_by_type");
- sortByType->setText(i18nc("@action:inmenu Sort By", "Type"));
- connect(sortByType, SIGNAL(triggered()), this, SLOT(sortByType()));
-
- // TODO: Hided "sort by rating" and "sort by tags" as without caching the performance
- // is too slow currently (Nepomuk will support caching in future releases).
- //
- // KToggleAction* sortByRating = actionCollection()->add<KToggleAction>("sort_by_rating");
- // sortByRating->setText(i18nc("@action:inmenu Sort By", "Rating"));
- //
- // KToggleAction* sortByTags = actionCollection()->add<KToggleAction>("sort_by_tags");
- // sortByTags->setText(i18nc("@action:inmenu Sort By", "Tags"));
- //
-#ifdef HAVE_NEPOMUK
- // if (MetaDataWidget::metaDataAvailable()) {
- // connect(sortByRating, SIGNAL(triggered()), this, SLOT(sortByRating()));
- // connect(sortByTags, SIGNAL(triggered()), this, SLOT(sortByTags()));
- // }
- // else {
- // sortByRating->setEnabled(false);
- // sortByTags->setEnabled(false);
- // }
-#else
- // sortByRating->setEnabled(false);
- // sortByTags->setEnabled(false);
-#endif
-
- QActionGroup* sortGroup = new QActionGroup(this);
- sortGroup->addAction(sortByName);
- sortGroup->addAction(sortBySize);
- sortGroup->addAction(sortByDate);
- sortGroup->addAction(sortByPermissions);
- sortGroup->addAction(sortByOwner);
- sortGroup->addAction(sortByGroup);
- sortGroup->addAction(sortByType);
-
- // TODO: Hided "sort by rating" and "sort by tags" as without caching the performance
- // is too slow currently (Nepomuk will support caching in future releases).
- //sortGroup->addAction(sortByRating);
- //sortGroup->addAction(sortByTags);
+ // (note that most of it is set up in DolphinViewActionHandler)
KAction* split = actionCollection()->addAction("split_view");
split->setShortcut(Qt::Key_F3);
{
m_actionHandler->updateViewActions();
- const DolphinView* view = m_activeViewContainer->view();
- slotSortingChanged(view->sorting());
-
QAction* showFilterBarAction = actionCollection()->action("show_filter_bar");
showFilterBarAction->setChecked(m_activeViewContainer->isFilterBarVisible());
this, SLOT(updateFilterBarAction(bool)));
DolphinView* view = container->view();
- connect(view, SIGNAL(sortingChanged(DolphinView::Sorting)),
- this, SLOT(slotSortingChanged(DolphinView::Sorting)));
connect(view, SIGNAL(selectionChanged(KFileItemList)),
this, SLOT(slotSelectionChanged(KFileItemList)));
connect(view, SIGNAL(requestItemInfo(KFileItem)),
*/
void invertSelection();
- /** The sorting of the current view should be done by the name. */
- void sortByName();
-
- /** The sorting of the current view should be done by the size. */
- void sortBySize();
-
- /** The sorting of the current view should be done by the date. */
- void sortByDate();
-
- /** The sorting of the current view should be done by the permissions. */
- void sortByPermissions();
-
- /** The sorting of the current view should be done by the owner. */
- void sortByOwner();
-
- /** The sorting of the current view should be done by the group. */
- void sortByGroup();
-
- /** The sorting of the current view should be done by the type. */
- void sortByType();
-
- /** The sorting of the current view should be done by the rating. */
- void sortByRating();
-
- /** The sorting of the current view should be done by tags. */
- void sortByTags();
-
/**
* Switches between one and two views:
* If one view is visible, it will get split into two views.
/** Opens the settings dialog for Dolphin. */
void editSettings();
- /** Updates the state of the 'Sort by' actions. */
- void slotSortingChanged(DolphinView::Sorting sorting);
-
/** Updates the state of the 'Show Full Location' action. */
void slotEditableStateChanged(bool editable);
this, SLOT(slotUrlChanged(KUrl)));
connect(m_view, SIGNAL(modeChanged()),
this, SIGNAL(viewModeChanged())); // relay signal
- // TODO slotSortingChanged
m_actionHandler = new DolphinViewActionHandler(actionCollection(), this);
m_actionHandler->setCurrentView(m_view);
this, SLOT(slotCategorizedSortingChanged()));
connect(view, SIGNAL(showHiddenFilesChanged()),
this, SLOT(slotShowHiddenFilesChanged()));
+ connect(view, SIGNAL(sortingChanged(DolphinView::Sorting)),
+ this, SLOT(slotSortingChanged(DolphinView::Sorting)));
}
void DolphinViewActionHandler::createActions()
sortDescending->setText(i18nc("@action:inmenu Sort", "Descending"));
connect(sortDescending, SIGNAL(triggered()), this, SLOT(toggleSortOrder()));
+ QActionGroup* sortByActionGroup = createSortByActionGroup();
+ connect(sortByActionGroup, SIGNAL(triggered(QAction*)), this, SLOT(slotSortTriggered(QAction*)));
+
QActionGroup* showInformationActionGroup = createAdditionalInformationActionGroup();
connect(showInformationActionGroup, SIGNAL(triggered(QAction*)), this, SLOT(toggleAdditionalInfo(QAction*)));
return showInformationGroup;
}
+Q_DECLARE_METATYPE(DolphinView::Sorting)
+
+QActionGroup* DolphinViewActionHandler::createSortByActionGroup()
+{
+ QActionGroup* sortByActionGroup = new QActionGroup(m_actionCollection);
+ sortByActionGroup->setExclusive(true);
+
+ KToggleAction* sortByName = m_actionCollection->add<KToggleAction>("sort_by_name");
+ sortByName->setText(i18nc("@action:inmenu Sort By", "Name"));
+ sortByName->setData(QVariant::fromValue(DolphinView::SortByName));
+ sortByActionGroup->addAction(sortByName);
+
+ KToggleAction* sortBySize = m_actionCollection->add<KToggleAction>("sort_by_size");
+ sortBySize->setText(i18nc("@action:inmenu Sort By", "Size"));
+ sortBySize->setData(QVariant::fromValue(DolphinView::SortBySize));
+ sortByActionGroup->addAction(sortBySize);
+
+ KToggleAction* sortByDate = m_actionCollection->add<KToggleAction>("sort_by_date");
+ sortByDate->setText(i18nc("@action:inmenu Sort By", "Date"));
+ sortByDate->setData(QVariant::fromValue(DolphinView::SortByDate));
+ sortByActionGroup->addAction(sortByDate);
+
+ KToggleAction* sortByPermissions = m_actionCollection->add<KToggleAction>("sort_by_permissions");
+ sortByPermissions->setText(i18nc("@action:inmenu Sort By", "Permissions"));
+ sortByPermissions->setData(QVariant::fromValue(DolphinView::SortByPermissions));
+ sortByActionGroup->addAction(sortByPermissions);
+
+ KToggleAction* sortByOwner = m_actionCollection->add<KToggleAction>("sort_by_owner");
+ sortByOwner->setText(i18nc("@action:inmenu Sort By", "Owner"));
+ sortByOwner->setData(QVariant::fromValue(DolphinView::SortByOwner));
+ sortByActionGroup->addAction(sortByOwner);
+
+ KToggleAction* sortByGroup = m_actionCollection->add<KToggleAction>("sort_by_group");
+ sortByGroup->setText(i18nc("@action:inmenu Sort By", "Group"));
+ sortByGroup->setData(QVariant::fromValue(DolphinView::SortByGroup));
+ sortByActionGroup->addAction(sortByGroup);
+
+ KToggleAction* sortByType = m_actionCollection->add<KToggleAction>("sort_by_type");
+ sortByType->setText(i18nc("@action:inmenu Sort By", "Type"));
+ sortByType->setData(QVariant::fromValue(DolphinView::SortByType));
+ sortByActionGroup->addAction(sortByType);
+
+ // TODO: Hid "sort by rating" and "sort by tags" as without caching the performance
+ // is too slow currently (Nepomuk will support caching in future releases).
+ //
+ // KToggleAction* sortByRating = m_actionCollection->add<KToggleAction>("sort_by_rating");
+ // sortByRating->setData(QVariant::fromValue(DolphinView::SortByRating));
+ // sortByRating->setText(i18nc("@action:inmenu Sort By", "Rating"));
+ // sortByActionGroup->addAction(sortByRating);
+ //
+ // KToggleAction* sortByTags = m_actionCollection->add<KToggleAction>("sort_by_tags");
+ // sortByTags->setData(QVariant::fromValue(DolphinView::SortByTags));
+ // sortByTags->setText(i18nc("@action:inmenu Sort By", "Tags"));
+ // sortByActionGroup->addAction(sortByTags);
+ //
+#ifdef HAVE_NEPOMUK
+ // if (!MetaDataWidget::metaDataAvailable()) {
+ // sortByRating->setEnabled(false);
+ // sortByTags->setEnabled(false);
+ // }
+#else
+ // sortByRating->setEnabled(false);
+ // sortByTags->setEnabled(false);
+#endif
+
+
+
+ return sortByActionGroup;
+}
+
void DolphinViewActionHandler::slotCreateDir()
{
Q_ASSERT(m_currentView);
slotSortOrderChanged(m_currentView->sortOrder());
slotAdditionalInfoChanged();
slotCategorizedSortingChanged();
+ slotSortingChanged(m_currentView->sorting());
QAction* showHiddenFilesAction = m_actionCollection->action("show_hidden_files");
showHiddenFilesAction->setChecked(m_currentView->showHiddenFiles());
columnView->setData(QVariant::fromValue(DolphinView::ColumnView));
return columnView;
}
+
+void DolphinViewActionHandler::slotSortingChanged(DolphinView::Sorting sorting)
+{
+ QAction* action = 0;
+ switch (sorting) {
+ case DolphinView::SortByName:
+ action = m_actionCollection->action("sort_by_name");
+ break;
+ case DolphinView::SortBySize:
+ action = m_actionCollection->action("sort_by_size");
+ break;
+ case DolphinView::SortByDate:
+ action = m_actionCollection->action("sort_by_date");
+ break;
+ case DolphinView::SortByPermissions:
+ action = m_actionCollection->action("sort_by_permissions");
+ break;
+ case DolphinView::SortByOwner:
+ action = m_actionCollection->action("sort_by_owner");
+ break;
+ case DolphinView::SortByGroup:
+ action = m_actionCollection->action("sort_by_group");
+ break;
+ case DolphinView::SortByType:
+ action = m_actionCollection->action("sort_by_type");
+ break;
+#ifdef HAVE_NEPOMUK
+ case DolphinView::SortByRating:
+ action = m_actionCollection->action("sort_by_rating");
+ break;
+ case DolphinView::SortByTags:
+ action = m_actionCollection->action("sort_by_tags");
+ break;
+#endif
+ default:
+ break;
+ }
+
+ if (action != 0) {
+ action->setChecked(true);
+ }
+}
+
+void DolphinViewActionHandler::slotSortTriggered(QAction* action)
+{
+ const DolphinView::Sorting sorting = action->data().value<DolphinView::Sorting>();
+ m_currentView->setSorting(sorting);
+}
#ifndef DOLPHINVIEWACTIONHANDLER_H
#define DOLPHINVIEWACTIONHANDLER_H
+#include "dolphinview.h"
#include "libdolphin_export.h"
#include <QtCore/QObject>
class KToggleAction;
*/
void slotSortOrderChanged(Qt::SortOrder order);
+ /**
+ * Updates the state of the 'Sort by' actions.
+ */
+ void slotSortingChanged(DolphinView::Sorting sorting);
+
/**
* Switches on or off the displaying of additional information
* as specified by \a action.
*/
void toggleAdditionalInfo(QAction* action);
+ /**
+ * Changes the sorting of the current view.
+ */
+ void slotSortTriggered(QAction*);
+
/**
* Updates the state of the 'Additional Information' actions.
*/
*/
QActionGroup* createAdditionalInformationActionGroup();
+ /**
+ * Creates an action group with all the "sort by" actions in it.
+ * Helper method for createActions();
+ */
+ QActionGroup* createSortByActionGroup();
+
/**
* Returns the "switch to icons mode" action.
* Helper method for createActions();