]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/views/dolphinviewactionhandler.cpp
Fix issue that the enabled state of the "Create New..." menu is not updated correctly...
[dolphin.git] / src / views / dolphinviewactionhandler.cpp
index d2eaa4d5125a74d5861c223eff6474ab800aca6d..9c0d33f9e2fe26fdf94bfa9beb92e5be1066de07 100644 (file)
@@ -215,8 +215,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 +240,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));
@@ -358,12 +358,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 +385,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 +470,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);