]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/dolphinmainwindow.cpp
Draw dragged items. Better conditions (more accurate to our behavior, hey ! we have...
[dolphin.git] / src / dolphinmainwindow.cpp
index 35c50e88d783c4e776d8ee6af89a363716c3c84b..bfde4da66c922872c3c3f4c888261e9afc3da08f 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;
     }
@@ -480,6 +491,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 +731,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 +792,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 +996,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 +1019,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,13 +1038,6 @@ 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 == m_viewContainer[PrimaryView]) || (view == m_viewContainer[SecondaryView]));
@@ -1153,6 +1180,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 +1208,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"));