]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/dolphinmainwindow.cpp
What is faster ? the eye or the brain ?
[dolphin.git] / src / dolphinmainwindow.cpp
index 0accdfcaaecc9c6fe012813a5e848e7ee58a2644..3e22ba1d34db0947241866dcb3a7bfa0c301b1f6 100644 (file)
@@ -21,7 +21,7 @@
 
 #include "dolphinmainwindow.h"
 
-#include "config-nepomuk.h"
+#include <config-nepomuk.h>
 
 #include "dolphinapplication.h"
 #include "dolphinnewmenu.h"
@@ -292,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;
     }
@@ -381,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)
@@ -722,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();
@@ -769,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);
@@ -975,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);
@@ -1000,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
@@ -1014,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;
@@ -1163,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);
@@ -1171,6 +1215,8 @@ 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"));