]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/dolphinmainwindow.cpp
Add needed method for keyboard navigation
[dolphin.git] / src / dolphinmainwindow.cpp
index 35c50e88d783c4e776d8ee6af89a363716c3c84b..3e22ba1d34db0947241866dcb3a7bfa0c301b1f6 100644 (file)
@@ -21,7 +21,7 @@
 
 #include "dolphinmainwindow.h"
 
-#include "config-nepomuk.h"
+#include <config-nepomuk.h>
 
 #include "dolphinapplication.h"
 #include "dolphinnewmenu.h"
@@ -98,6 +98,8 @@ DolphinMainWindow::DolphinMainWindow(int id) :
             this, SLOT(slotUndoAvailable(bool)));
     connect(undoManager, SIGNAL(undoTextChanged(const QString&)),
             this, SLOT(slotUndoTextChanged(const QString&)));
+    connect(DolphinSettings::instance().placesModel(), SIGNAL(errorMessage(const QString&)),
+            this, SLOT(slotHandlePlacesError(const QString&)));
 }
 
 DolphinMainWindow::~DolphinMainWindow()
@@ -259,11 +261,11 @@ void DolphinMainWindow::slotShowHiddenFilesChanged()
 
 void DolphinMainWindow::slotCategorizedSortingChanged()
 {
-    KToggleAction* categorizedSortingAction =
-        static_cast<KToggleAction*>(actionCollection()->action("categorized"));
+    KToggleAction* showInGroupsAction =
+        static_cast<KToggleAction*>(actionCollection()->action("show_in_groups"));
     const DolphinView* view = m_activeViewContainer->view();
-    categorizedSortingAction->setChecked(view->categorizedSorting());
-    categorizedSortingAction->setEnabled(view->supportsCategorizedSorting());
+    showInGroupsAction->setChecked(view->categorizedSorting());
+    showInGroupsAction->setEnabled(view->supportsCategorizedSorting());
 }
 
 void DolphinMainWindow::slotSortingChanged(DolphinView::Sorting sorting)
@@ -290,6 +292,15 @@ void DolphinMainWindow::slotSortingChanged(DolphinView::Sorting sorting)
         break;
     case DolphinView::SortByType:
         action = actionCollection()->action("by_type");
+        break;
+#ifdef HAVE_NEPOMUK
+    case DolphinView::SortByRating:
+        action = actionCollection()->action("by_rating");
+        break;
+    case DolphinView::SortByTags:
+        action = actionCollection()->action("by_tags");
+        break;
+#endif
     default:
         break;
     }
@@ -379,11 +390,17 @@ void DolphinMainWindow::openNewMainWindow()
 
 void DolphinMainWindow::toggleActiveView()
 {
-    if (m_activeViewContainer == m_viewContainer[PrimaryView]) {
-        setActiveViewContainer(m_viewContainer[SecondaryView]);
-    } else {
-        setActiveViewContainer(m_viewContainer[PrimaryView]);
+    if (m_viewContainer[SecondaryView] == 0) {
+        // only one view is available
+        return;
     }
+
+    Q_ASSERT(m_activeViewContainer != 0);
+    Q_ASSERT(m_viewContainer[PrimaryView] != 0);
+
+    DolphinViewContainer* left  = m_viewContainer[PrimaryView];
+    DolphinViewContainer* right = m_viewContainer[SecondaryView];
+    setActiveViewContainer(m_activeViewContainer == right ? left : right);
 }
 
 void DolphinMainWindow::closeEvent(QCloseEvent* event)
@@ -480,6 +497,14 @@ void DolphinMainWindow::quit()
     close();
 }
 
+void DolphinMainWindow::slotHandlePlacesError(const QString &message)
+{
+    if (!message.isEmpty()) {
+        DolphinStatusBar* statusBar = m_activeViewContainer->statusBar();
+        statusBar->setMessage(message, DolphinStatusBar::Error);
+    }
+}
+
 void DolphinMainWindow::slotHandleJobError(KJob* job)
 {
     if (job->error() != 0) {
@@ -712,6 +737,20 @@ 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::toggleSortOrder()
 {
     DolphinView* view = m_activeViewContainer->view();
@@ -759,9 +798,7 @@ void DolphinMainWindow::toggleSplitView()
         const DolphinView* view = m_viewContainer[PrimaryView]->view();
         m_viewContainer[SecondaryView] = new DolphinViewContainer(this,
                                                                  0,
-                                                                 view->rootUrl(),
-                                                                 view->mode(),
-                                                                 view->showHiddenFiles());
+                                                                 view->rootUrl());
         connectViewSignals(SecondaryView);
         m_splitter->addWidget(m_viewContainer[SecondaryView]);
         m_splitter->setSizes(QList<int>() << newWidth << newWidth);
@@ -965,10 +1002,8 @@ void DolphinMainWindow::init()
     setCaption(homeUrl.fileName());
     ViewProperties props(homeUrl);
     m_viewContainer[PrimaryView] = new DolphinViewContainer(this,
-                                                           m_splitter,
-                                                           homeUrl,
-                                                           props.viewMode(),
-                                                           props.showHiddenFiles());
+                                                            m_splitter,
+                                                            homeUrl);
 
     m_activeViewContainer = m_viewContainer[PrimaryView];
     connectViewSignals(PrimaryView);
@@ -990,7 +1025,12 @@ void DolphinMainWindow::init()
     updatePasteAction();
     updateGoActions();
 
-    loadSettings();
+    const bool split = generalSettings->splitView();
+    if (split) {
+        toggleSplitView();
+    }
+    updateSplitAction(split);
+    updateViewActions();
 
     if (firstRun) {
         // assure a proper default size if Dolphin runs the first time
@@ -1004,15 +1044,9 @@ void DolphinMainWindow::init()
     emit urlChanged(homeUrl);
 }
 
-void DolphinMainWindow::loadSettings()
-{
-    GeneralSettings* settings = DolphinSettings::instance().generalSettings();
-    updateSplitAction(settings->splitView());
-    updateViewActions();
-}
-
 void DolphinMainWindow::setActiveViewContainer(DolphinViewContainer* view)
 {
+    Q_ASSERT(view != 0);
     Q_ASSERT((view == m_viewContainer[PrimaryView]) || (view == m_viewContainer[SecondaryView]));
     if (m_activeViewContainer == view) {
         return;
@@ -1153,6 +1187,26 @@ void DolphinMainWindow::setupActions()
     sortByType->setText(i18n("By Type"));
     connect(sortByType, SIGNAL(triggered()), this, SLOT(sortByType()));
 
+    KToggleAction* sortByRating = actionCollection()->add<KToggleAction>("by_rating");
+    sortByRating->setText(i18n("By Rating"));
+
+    KToggleAction* sortByTags = actionCollection()->add<KToggleAction>("by_tags");
+    sortByTags->setText(i18n("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);
@@ -1161,14 +1215,16 @@ void DolphinMainWindow::setupActions()
     sortGroup->addAction(sortByOwner);
     sortGroup->addAction(sortByGroup);
     sortGroup->addAction(sortByType);
+    sortGroup->addAction(sortByRating);
+    sortGroup->addAction(sortByTags);
 
     KToggleAction* sortDescending = actionCollection()->add<KToggleAction>("descending");
     sortDescending->setText(i18n("Descending"));
     connect(sortDescending, SIGNAL(triggered()), this, SLOT(toggleSortOrder()));
 
-    KToggleAction* sortCategorized = actionCollection()->add<KToggleAction>("categorized");
-    sortCategorized->setText(i18n("Show in Groups"));
-    connect(sortCategorized, SIGNAL(triggered()), this, SLOT(toggleSortCategorization()));
+    KToggleAction* showInGroups = actionCollection()->add<KToggleAction>("show_in_groups");
+    showInGroups->setText(i18n("Show in Groups"));
+    connect(showInGroups, SIGNAL(triggered()), this, SLOT(toggleSortCategorization()));
 
     KToggleAction* clearInfo = actionCollection()->add<KToggleAction>("clear_info");
     clearInfo->setText(i18n("No Information"));