]> cloud.milkyroute.net Git - dolphin.git/commitdiff
Fix temporary regression of sorting introduced by SVN commit 1126410
authorPeter Penz <peter.penz19@gmail.com>
Fri, 14 May 2010 06:08:08 +0000 (06:08 +0000)
committerPeter Penz <peter.penz19@gmail.com>
Fri, 14 May 2010 06:08:08 +0000 (06:08 +0000)
svn path=/trunk/KDE/kdebase/apps/; revision=1126487

src/additionalinfoaccessor.cpp
src/additionalinfoaccessor.h
src/dolphinview.cpp
src/dolphinview.h
src/dolphinviewactionhandler.cpp
src/settings/dolphin_directoryviewpropertysettings.kcfg

index 505da3f4c98b6fe0c2377d0df830da67f7865599..3d417e8e1b9d64bf26927fb0c23ba90ec006ae5c 100644 (file)
@@ -59,9 +59,21 @@ KFileItemDelegate::Information AdditionalInfoAccessor::keyForColumn(int columnIn
     return info;
 }
 
-QString AdditionalInfoAccessor::actionCollectionName(KFileItemDelegate::Information info) const
+QString AdditionalInfoAccessor::actionCollectionName(KFileItemDelegate::Information info,
+                                                     ActionCollectionType type) const
 {
-    return QLatin1String(m_map[info]->actionCollectionName);
+    QString name;
+    switch (type) {
+    case SortByType:
+        name = QLatin1String("sort_by_") + QLatin1String(m_map[info]->actionCollectionName);
+        break;
+
+    case AdditionalInfoType:
+        name = QLatin1String("show_") + QLatin1String(m_map[info]->actionCollectionName);
+        break;
+    }
+
+    return name;
 }
 
 QString AdditionalInfoAccessor::translation(KFileItemDelegate::Information info) const
@@ -69,6 +81,11 @@ QString AdditionalInfoAccessor::translation(KFileItemDelegate::Information info)
     return i18n(m_map[info]->translation);
 }
 
+DolphinView::Sorting AdditionalInfoAccessor::sorting(KFileItemDelegate::Information info) const
+{
+    return m_map[info]->sorting;
+}
+
 int AdditionalInfoAccessor::bitValue(KFileItemDelegate::Information info) const
 {
     return m_map[info]->bitValue;
@@ -79,14 +96,14 @@ AdditionalInfoAccessor::AdditionalInfoAccessor() :
     m_map()
 {
     static const AdditionalInfoAccessor::AdditionalInfo additionalInfos[] = {
-        { "size",        I18N_NOOP2("@label", "Size"),          1 },
-        { "date",        I18N_NOOP2("@label", "Date"),          2 },
-        { "permissions", I18N_NOOP2("@label", "Permissions"),   4 },
-        { "owner",       I18N_NOOP2("@label", "Owner"),         8 },
-        { "group",       I18N_NOOP2("@label", "Group"),        16 },
-        { "type",        I18N_NOOP2("@label", "Type"),         32 },
-        { "destination", I18N_NOOP2("@label", "Destination"),  64 },
-        { "path",        I18N_NOOP2("@label", "Path"),        128 }
+        { "size",        I18N_NOOP2("@label", "Size"),        DolphinView::SortBySize,          1 },
+        { "date",        I18N_NOOP2("@label", "Date"),        DolphinView::SortByDate,          2 },
+        { "permissions", I18N_NOOP2("@label", "Permissions"), DolphinView::SortByPermissions,   4 },
+        { "owner",       I18N_NOOP2("@label", "Owner"),       DolphinView::SortByOwner,         8 },
+        { "group",       I18N_NOOP2("@label", "Group"),       DolphinView::SortByGroup,        16 },
+        { "type",        I18N_NOOP2("@label", "Type"),        DolphinView::SortByType,         32 },
+        { "destination", I18N_NOOP2("@label", "Destination"), DolphinView::SortByDestination,  64 },
+        { "path",        I18N_NOOP2("@label", "Path"),        DolphinView::SortByPath,        128 }
     };
 
     m_map.insert(KFileItemDelegate::Size, &additionalInfos[0]);
@@ -98,7 +115,16 @@ AdditionalInfoAccessor::AdditionalInfoAccessor() :
     m_map.insert(KFileItemDelegate::LinkDest, &additionalInfos[6]);
     m_map.insert(KFileItemDelegate::LocalPathOrUrl, &additionalInfos[7]);
 
-    m_informations = m_map.keys();
+    // The m_informations list defines all available keys and the sort order
+    // (don't use m_informations = m_map.keys(), as the order is undefined).
+    m_informations.append(KFileItemDelegate::Size);
+    m_informations.append(KFileItemDelegate::ModificationTime);
+    m_informations.append(KFileItemDelegate::Permissions);
+    m_informations.append(KFileItemDelegate::Owner);
+    m_informations.append(KFileItemDelegate::OwnerAndGroup);
+    m_informations.append(KFileItemDelegate::FriendlyMimeType);
+    m_informations.append(KFileItemDelegate::LinkDest);
+    m_informations.append(KFileItemDelegate::LocalPathOrUrl);
 }
 
 AdditionalInfoAccessor::~AdditionalInfoAccessor()
index 4e8df46a8856961196b3907f6df3ba986a052906..ca43e35e7ff8d8fa4fcad20c86cabe8d51f8fb56 100644 (file)
@@ -20,6 +20,7 @@
 #ifndef ADDITIONALINFOACCESSOR_H
 #define ADDITIONALINFOACCESSOR_H
 
+#include <dolphinview.h>
 #include <libdolphin_export.h>
 #include <kfileitemdelegate.h>
 
 class LIBDOLPHINPRIVATE_EXPORT AdditionalInfoAccessor
 {
 public:
+    enum ActionCollectionType {
+        /// Action collection from "View -> Sort By"
+        SortByType,
+        /// Action collection from "View -> Additional Information"
+        AdditionalInfoType
+    };
+
     static AdditionalInfoAccessor& instance();
 
     /**
@@ -59,10 +67,12 @@ public:
      */
     KFileItemDelegate::Information keyForColumn(int columnIndex) const;
 
-    QString actionCollectionName(KFileItemDelegate::Information info) const;
+    QString actionCollectionName(KFileItemDelegate::Information info, ActionCollectionType type) const;
 
     QString translation(KFileItemDelegate::Information info) const;
 
+    DolphinView::Sorting sorting(KFileItemDelegate::Information info) const;
+
     /**
      * @return Bitvalue for \p info that is stored in a ViewProperties instance.
      */
@@ -77,6 +87,7 @@ private:
     struct AdditionalInfo {
         const char* const actionCollectionName;
         const char* const translation;
+        const DolphinView::Sorting sorting;
         const int bitValue;
     };
 
index 83f700374835ab745647c42aeaa47076324c32da..1c06f560c5fe6e4e080c8c424af40d7bba574e85 100644 (file)
@@ -981,7 +981,8 @@ void DolphinView::updateAdditionalInfoActions(KActionCollection* collection)
                         (m_mode == DolphinView::IconsView);
 
     foreach (const KFileItemDelegate::Information& info, infos) {
-        QAction* action = collection->action(infoAccessor.actionCollectionName(info));
+        const QString name = infoAccessor.actionCollectionName(info, AdditionalInfoAccessor::AdditionalInfoType);
+        QAction* action = collection->action(name);
         Q_ASSERT(action != 0);
         action->setEnabled(enable);
         action->setChecked(checkedInfos.contains(info));
index 07c6e32c4ea25b701a1cb2f8ef919ed0339aa5e0..352841f4a0a28746bf8e36dee3153e1f40790405 100644 (file)
@@ -113,7 +113,9 @@ public:
         SortByOwner,
         SortByGroup,
         SortByType,
-        MaxSortEnum = SortByType
+        SortByDestination,
+        SortByPath,
+        MaxSortingEnum = SortByPath
     };
 
     /**
index 2f98d842691be0ae8306e7c882bb1bdbd744a95b..aa4ce621461106b252f23340e2c6df546655edac 100644 (file)
@@ -204,7 +204,6 @@ void DolphinViewActionHandler::createActions()
     connect(adjustViewProps, SIGNAL(triggered()), this, SLOT(slotAdjustViewProperties()));
 
     // Tools menu
-
     KAction* findFile = m_actionCollection->addAction("find_file");
     findFile->setText(i18nc("@action:inmenu Tools", "Find File..."));
     findFile->setShortcut(Qt::CTRL | Qt::Key_F);
@@ -225,7 +224,7 @@ QActionGroup* DolphinViewActionHandler::createAdditionalInformationActionGroup()
 
     const KFileItemDelegate::InformationList infos = infoAccessor.keys();
     foreach (KFileItemDelegate::Information info, infos) {
-        const QString name = infoAccessor.actionCollectionName(info);
+        const QString name = infoAccessor.actionCollectionName(info, AdditionalInfoAccessor::AdditionalInfoType);
         KToggleAction* action = m_actionCollection->add<KToggleAction>(name);
         action->setText(infoAccessor.translation(info));
         action->setData(info);
@@ -242,7 +241,7 @@ QActionGroup* DolphinViewActionHandler::createSortByActionGroup()
     QActionGroup* sortByActionGroup = new QActionGroup(m_actionCollection);
     sortByActionGroup->setExclusive(true);
 
-    KToggleAction* sortByName = m_actionCollection->add<KToggleAction>("name");
+    KToggleAction* sortByName = m_actionCollection->add<KToggleAction>("sort_by_name");
     sortByName->setText(i18nc("@action:inmenu Sort By", "Name"));
     sortByName->setData(QVariant::fromValue(DolphinView::SortByName));
     sortByActionGroup->addAction(sortByName);
@@ -250,11 +249,11 @@ QActionGroup* DolphinViewActionHandler::createSortByActionGroup()
     const AdditionalInfoAccessor& infoAccessor = AdditionalInfoAccessor::instance();
     const KFileItemDelegate::InformationList infos = infoAccessor.keys();
     foreach (KFileItemDelegate::Information info, infos) {
-        const QString name = infoAccessor.actionCollectionName(info);
+        const QString name = infoAccessor.actionCollectionName(info, AdditionalInfoAccessor::SortByType);
         KToggleAction* action = m_actionCollection->add<KToggleAction>(name);
         action->setText(infoAccessor.translation(info));
-        // TODO: replace DolphinView::Sorting by KFileItemDelegate::Information!
-        action->setData(QVariant::fromValue(DolphinView::SortByName));
+        const DolphinView::Sorting sorting = infoAccessor.sorting(info);
+        action->setData(QVariant::fromValue(sorting));
         sortByActionGroup->addAction(action);
     }
 
@@ -282,10 +281,11 @@ void DolphinViewActionHandler::slotTrashActivated(Qt::MouseButtons, Qt::Keyboard
     // Note: kde3's konq_mainwindow.cpp used to check
     // reason == KAction::PopupMenuActivation && ...
     // but this isn't supported anymore
-    if (modifiers & Qt::ShiftModifier)
+    if (modifiers & Qt::ShiftModifier) {
         m_currentView->deleteSelectedItems();
-    else
+    } else {
         m_currentView->trashSelectedItems();
+    }
 }
 
 void DolphinViewActionHandler::slotDeleteItems()
@@ -456,31 +456,20 @@ KToggleAction* DolphinViewActionHandler::columnsModeAction()
 
 void DolphinViewActionHandler::slotSortingChanged(DolphinView::Sorting sorting)
 {
+    const AdditionalInfoAccessor& infoAccessor = AdditionalInfoAccessor::instance();
+    const KFileItemDelegate::InformationList infos = infoAccessor.keys();
+
     QAction* action = 0;
-    switch (sorting) {
-    case DolphinView::SortByName:
+    if (sorting == DolphinView::SortByName) {
         action = m_actionCollection->action("sort_by_name");
-        break;
-    case DolphinView::SortBySize:
-        action = m_actionCollection->action("sort_by_size");
-        break;
-    case DolphinView::SortByDate:
-        action = m_actionCollection->action("sort_by_date");
-        break;
-    case DolphinView::SortByPermissions:
-        action = m_actionCollection->action("sort_by_permissions");
-        break;
-    case DolphinView::SortByOwner:
-        action = m_actionCollection->action("sort_by_owner");
-        break;
-    case DolphinView::SortByGroup:
-        action = m_actionCollection->action("sort_by_group");
-        break;
-    case DolphinView::SortByType:
-        action = m_actionCollection->action("sort_by_type");
-        break;
-    default:
-        break;
+    } else {
+        foreach (const KFileItemDelegate::Information info, infos) {
+            if (sorting == infoAccessor.sorting(info)) {
+                const QString name = infoAccessor.actionCollectionName(info, AdditionalInfoAccessor::SortByType);
+                action = m_actionCollection->action(name);
+                break;
+            }
+        }
     }
 
     if (action != 0) {
index 415b872b3a8469604082473b2d42bc4102f155be..ff9b60a453c06fc20a65d85199a05ff563c7b335 100644 (file)
@@ -40,7 +40,7 @@
             <whatsthis context="@info:whatsthis">This option defines which attribute (name, size, date, etc.) sorting is performed on.</whatsthis>
             <default code="true">DolphinView::SortByName</default>
             <min>0</min>
-            <max code="true">DolphinView::MaxSortEnum</max>
+            <max code="true">DolphinView::MaxSortingEnum</max>
         </entry>
 
         <entry name="SortOrder" type="Int" >