]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/views/dolphinviewactionhandler.cpp
Show icon overlays in the Informationen Panel.
[dolphin.git] / src / views / dolphinviewactionhandler.cpp
index d2eaa4d5125a74d5861c223eff6474ab800aca6d..6046abc8c0a43c7bbd76bbc86bcc91a4ab34557c 100644 (file)
 #include "views/zoomlevelinfo.h"
 #include <konq_operations.h>
 
-#include <kaction.h>
-#include <kactioncollection.h>
-#include <kactionmenu.h>
-#include <kfileitemdelegate.h>
-#include <klocale.h>
-#include <knewmenu.h>
-#include <kselectaction.h>
-#include <ktoggleaction.h>
-#include <krun.h>
-#include <kpropertiesdialog.h>
-
+#include <KAction>
+#include <KActionCollection>
+#include <KActionMenu>
+#include <KFileItemDelegate>
+#include <KLocale>
+#include <KNewFileMenu>
+#include <KSelectAction>
+#include <KToggleAction>
+#include <KRun>
+#include <KPropertiesDialog>
 
 DolphinViewActionHandler::DolphinViewActionHandler(KActionCollection* collection, QObject* parent)
     : QObject(parent),
@@ -215,8 +214,8 @@ QActionGroup* DolphinViewActionHandler::createAdditionalInformationActionGroup()
 
     const AdditionalInfoAccessor& infoAccessor = AdditionalInfoAccessor::instance();
 
-    const KFileItemDelegate::InformationList infos = infoAccessor.keys();
-    foreach (KFileItemDelegate::Information info, infos) {
+    const KFileItemDelegate::InformationList infoKeys = infoAccessor.keys();
+    foreach (KFileItemDelegate::Information info, infoKeys) {
         const QString name = infoAccessor.actionCollectionName(info, AdditionalInfoAccessor::AdditionalInfoType);
         KToggleAction* action = m_actionCollection->add<KToggleAction>(name);
         action->setText(infoAccessor.translation(info));
@@ -240,8 +239,8 @@ QActionGroup* DolphinViewActionHandler::createSortByActionGroup()
     sortByActionGroup->addAction(sortByName);
 
     const AdditionalInfoAccessor& infoAccessor = AdditionalInfoAccessor::instance();
-    const KFileItemDelegate::InformationList infos = infoAccessor.keys();
-    foreach (KFileItemDelegate::Information info, infos) {
+    const KFileItemDelegate::InformationList infoKeys = infoAccessor.keys();
+    foreach (KFileItemDelegate::Information info, infoKeys) {
         const QString name = infoAccessor.actionCollectionName(info, AdditionalInfoAccessor::SortByType);
         KToggleAction* action = m_actionCollection->add<KToggleAction>(name);
         action->setText(infoAccessor.translation(info));
@@ -321,7 +320,7 @@ KActionCollection* DolphinViewActionHandler::actionCollection()
 void DolphinViewActionHandler::updateViewActions()
 {
     QAction* viewModeAction = m_actionCollection->action(currentViewModeActionName());
-    if (viewModeAction != 0) {
+    if (viewModeAction) {
         viewModeAction->setChecked(true);
 
         QAction* viewModeMenu = m_actionCollection->action("view_mode");
@@ -358,12 +357,16 @@ void DolphinViewActionHandler::zoomOut()
 
 void DolphinViewActionHandler::toggleSortOrder()
 {
-    m_currentView->toggleSortOrder();
+    const Qt::SortOrder order = (m_currentView->sortOrder() == Qt::AscendingOrder) ?
+                                Qt::DescendingOrder :
+                                Qt::AscendingOrder;
+    m_currentView->setSortOrder(order);
 }
 
 void DolphinViewActionHandler::toggleSortFoldersFirst()
 {
-    m_currentView->toggleSortFoldersFirst();
+    const bool sortFirst = m_currentView->sortFoldersFirst();
+    m_currentView->setSortFoldersFirst(!sortFirst);
 }
 
 void DolphinViewActionHandler::slotSortOrderChanged(Qt::SortOrder order)
@@ -381,7 +384,24 @@ void DolphinViewActionHandler::slotSortFoldersFirstChanged(bool foldersFirst)
 void DolphinViewActionHandler::toggleAdditionalInfo(QAction* action)
 {
     emit actionBeingHandled();
-    m_currentView->toggleAdditionalInfo(action);
+
+    const KFileItemDelegate::Information info =
+        static_cast<KFileItemDelegate::Information>(action->data().toInt());
+
+    KFileItemDelegate::InformationList list = m_currentView->additionalInfo();
+
+    const bool show = action->isChecked();
+
+    const int index = list.indexOf(info);
+    const bool containsInfo = (index >= 0);
+    if (show && !containsInfo) {
+        list.append(info);
+        m_currentView->setAdditionalInfo(list);
+    } else if (!show && containsInfo) {
+        list.removeAt(index);
+        m_currentView->setAdditionalInfo(list);
+        Q_ASSERT(list.indexOf(info) < 0);
+    }
 }
 
 void DolphinViewActionHandler::slotAdditionalInfoChanged()
@@ -449,14 +469,13 @@ KToggleAction* DolphinViewActionHandler::columnsModeAction()
 
 void DolphinViewActionHandler::slotSortingChanged(DolphinView::Sorting sorting)
 {
-    const AdditionalInfoAccessor& infoAccessor = AdditionalInfoAccessor::instance();
-    const KFileItemDelegate::InformationList infos = infoAccessor.keys();
-
     QAction* action = 0;
     if (sorting == DolphinView::SortByName) {
         action = m_actionCollection->action("sort_by_name");
     } else {
-        foreach (const KFileItemDelegate::Information info, infos) {
+        const AdditionalInfoAccessor& infoAccessor = AdditionalInfoAccessor::instance();
+        const KFileItemDelegate::InformationList infoKeys = infoAccessor.keys();
+        foreach (const KFileItemDelegate::Information info, infoKeys) {
             if (sorting == infoAccessor.sorting(info)) {
                 const QString name = infoAccessor.actionCollectionName(info, AdditionalInfoAccessor::SortByType);
                 action = m_actionCollection->action(name);
@@ -465,7 +484,7 @@ void DolphinViewActionHandler::slotSortingChanged(DolphinView::Sorting sorting)
         }
     }
 
-    if (action != 0) {
+    if (action) {
         action->setChecked(true);
 
         QAction* sortByMenu =  m_actionCollection->action("sort");
@@ -476,12 +495,12 @@ void DolphinViewActionHandler::slotSortingChanged(DolphinView::Sorting sorting)
 void DolphinViewActionHandler::slotZoomLevelChanged(int level)
 {
     QAction* zoomInAction = m_actionCollection->action(KStandardAction::name(KStandardAction::ZoomIn));
-    if (zoomInAction != 0) {
+    if (zoomInAction) {
         zoomInAction->setEnabled(level < ZoomLevelInfo::maximumLevel());
     }
 
     QAction* zoomOutAction = m_actionCollection->action(KStandardAction::name(KStandardAction::ZoomOut));
-    if (zoomOutAction != 0) {
+    if (zoomOutAction) {
         zoomOutAction->setEnabled(level > ZoomLevelInfo::minimumLevel());
     }
 }