]> cloud.milkyroute.net Git - dolphin.git/commitdiff
Interface cleanups to prepare the return of "grouped sorting"
authorPeter Penz <peter.penz19@gmail.com>
Sat, 15 Oct 2011 20:55:01 +0000 (22:55 +0200)
committerPeter Penz <peter.penz19@gmail.com>
Sat, 15 Oct 2011 20:55:01 +0000 (22:55 +0200)
- Rename setCategorizedSorting() to setGroupedSorting()
- Change the model interface to allow enabling/disabling grouping
  without the need to declare a role (the sort role will be taken).
- Add dummy group role implementation in KFileItemModel

The grouping code itself requires some cleanups and might crash
at the moment or lead to weird layouts.

16 files changed:
src/kitemviews/kfileitemmodel.cpp
src/kitemviews/kfileitemmodel.h
src/kitemviews/kitemlistview.cpp
src/kitemviews/kitemlistview.h
src/kitemviews/kitemlistviewlayouter.cpp
src/kitemviews/kitemmodelbase.cpp
src/kitemviews/kitemmodelbase.h
src/settings/dolphin_directoryviewpropertysettings.kcfg
src/settings/viewpropertiesdialog.cpp
src/tests/kfileitemmodeltest.cpp
src/views/dolphinview.cpp
src/views/dolphinview.h
src/views/dolphinviewactionhandler.cpp
src/views/dolphinviewactionhandler.h
src/views/viewproperties.cpp
src/views/viewproperties.h

index ddb89533c3b7cd6aa21aebb5895b4a57d900ce30..3a49135f903755dea13b5baeb07f6e1b10394d9f 100644 (file)
 #define KFILEITEMMODEL_DEBUG
 
 KFileItemModel::KFileItemModel(KDirLister* dirLister, QObject* parent) :
-    KItemModelBase(QByteArray(), "name", parent),
+    KItemModelBase("name", parent),
     m_dirLister(dirLister),
     m_naturalSorting(true),
     m_sortFoldersFirst(true),
-    m_groupRole(NoRole),
     m_sortRole(NameRole),
     m_caseSensitivity(Qt::CaseInsensitive),
     m_sortedItems(),
@@ -127,16 +126,6 @@ bool KFileItemModel::setData(int index, const QHash<QByteArray, QVariant>& value
     return false;
 }
 
-bool KFileItemModel::supportsGrouping() const
-{
-    return true;
-}
-
-bool KFileItemModel::supportsSorting() const
-{
-    return true;
-}
-
 void KFileItemModel::setSortFoldersFirst(bool foldersFirst)
 {
     if (foldersFirst != m_sortFoldersFirst) {
@@ -234,6 +223,20 @@ QString KFileItemModel::roleDescription(const QByteArray& role) const
     return descr;
 }
 
+QList<QPair<int, QVariant> > KFileItemModel::groups() const
+{
+    // TODO:
+    QPair<int, QVariant> group1(0, "Group 1");
+    QPair<int, QVariant> group2(5, "Group 2");
+    QPair<int, QVariant> group3(10, "Group 3");
+
+    QList<QPair<int, QVariant> > groups;
+    groups.append(group1);
+    groups.append(group2);
+    groups.append(group3);
+    return groups;
+}
+
 KFileItem KFileItemModel::fileItem(int index) const
 {
     if (index >= 0 && index < count()) {
@@ -403,10 +406,9 @@ void KFileItemModel::restoreExpandedUrls(const QSet<KUrl>& urls)
     m_restoredExpandedUrls = urls;
 }
 
-void KFileItemModel::onGroupRoleChanged(const QByteArray& current, const QByteArray& previous)
+void KFileItemModel::onGroupedSortingChanged(bool current)
 {
-    Q_UNUSED(previous);
-    m_groupRole = roleIndex(current);
+    Q_UNUSED(current);
 }
 
 void KFileItemModel::onSortRoleChanged(const QByteArray& current, const QByteArray& previous)
index 4c36a2c215ea82a129fd57988f473da9122b3b87..7d10aad8e78a39d88776ec9a6ee4307a6c9d86a0 100644 (file)
@@ -54,18 +54,6 @@ public:
     virtual QHash<QByteArray, QVariant> data(int index) const;
     virtual bool setData(int index, const QHash<QByteArray, QVariant>& values);
 
-    /**
-     * @return True
-     * @reimp
-     */
-    virtual bool supportsGrouping() const;
-
-    /**
-     * @return True
-     * @reimp
-     */
-    virtual bool supportsSorting() const;
-
     /**
      * Sets a separate sorting with folders first (true) or a mixed sorting of files and folders (false).
      */
@@ -84,6 +72,9 @@ public:
     /** @reimp */
     virtual QString roleDescription(const QByteArray& role) const;
 
+    /** @reimp */
+    virtual QList<QPair<int, QVariant> > groups() const;
+
     /**
      * @return The file-item for the index \a index. If the index is in a valid
      *         range it is assured that the file-item is not null. The runtime
@@ -135,7 +126,7 @@ signals:
     void loadingCompleted();
 
 protected:
-    virtual void onGroupRoleChanged(const QByteArray& current, const QByteArray& previous);
+    virtual void onGroupedSortingChanged(bool current);
     virtual void onSortRoleChanged(const QByteArray& current, const QByteArray& previous);
     virtual void onSortOrderChanged(Qt::SortOrder current, Qt::SortOrder previous);
 
@@ -209,7 +200,6 @@ private:
     bool m_naturalSorting;
     bool m_sortFoldersFirst;
 
-    Role m_groupRole;
     Role m_sortRole;
     Qt::CaseSensitivity m_caseSensitivity;
 
index 6d1aeca24e060c2f38472c2cd06040d0cb9534d3..a4cb4b04133692dd3331f9cb8fbfef282a6b09cb 100644 (file)
@@ -845,6 +845,11 @@ void KItemListView::slotItemsChanged(const KItemRangeList& itemRanges,
     }
 }
 
+void KItemListView::slotGroupedSortingChanged(bool current)
+{
+    m_grouped = current;
+}
+
 void KItemListView::slotCurrentChanged(int current, int previous)
 {
     Q_UNUSED(previous);
@@ -1101,11 +1106,13 @@ void KItemListView::setModel(KItemModelBase* model)
                    this,    SLOT(slotItemsRemoved(KItemRangeList)));
         disconnect(m_model, SIGNAL(itemsMoved(KItemRange,QList<int>)),
                    this,    SLOT(slotItemsMoved(KItemRange,QList<int>)));
+        disconnect(m_model, SIGNAL(groupedSortingChanged(bool)),
+                   this,    SLOT(slotGroupedSortingChanged(bool)));
     }
 
     m_model = model;
     m_layouter->setModel(model);
-    m_grouped = !model->groupRole().isEmpty();
+    m_grouped = model->groupedSorting();
 
     if (m_model) {
         connect(m_model, SIGNAL(itemsChanged(KItemRangeList,QSet<QByteArray>)),
@@ -1116,6 +1123,8 @@ void KItemListView::setModel(KItemModelBase* model)
                 this,    SLOT(slotItemsRemoved(KItemRangeList)));
         connect(m_model, SIGNAL(itemsMoved(KItemRange,QList<int>)),
                 this,    SLOT(slotItemsMoved(KItemRange,QList<int>)));
+        connect(m_model, SIGNAL(groupedSortingChanged(bool)),
+                this,    SLOT(slotGroupedSortingChanged(bool)));
     }
 
     onModelChanged(model, previous);
index e1678145d5052d62025d40d67b1d4421e86e9f9e..c18f8cb8466a1d7b239c032c65330f1b574b1c5f 100644 (file)
@@ -253,6 +253,7 @@ protected slots:
                                   const QSet<QByteArray>& roles);
 
 private slots:
+    void slotGroupedSortingChanged(bool current);
     void slotCurrentChanged(int current, int previous);
     void slotSelectionChanged(const QSet<int>& current, const QSet<int>& previous);
     void slotAnimationFinished(QGraphicsWidget* widget,
index f829824f08a8609e2499d9549777911a3ca5d836..30881abfdaf53d013566b47d0e9703e4b5f541f0 100644 (file)
@@ -332,18 +332,16 @@ void KItemListViewLayouter::doLayout()
             m_maximumItemOffset = 0;
         }
 
-        m_grouped = !m_model->groupRole().isEmpty();
-        /*if (m_grouped) {
+        m_grouped = m_model->groupedSorting();
+        if (m_grouped) {
             createGroupHeaders();
 
             const int lastGroupItemCount = m_model->count() - m_groups.last().firstItemIndex;
-            m_maximumOffset = m_groups.last().y + (lastGroupItemCount / m_columnCount) * m_rowHeight;
+            m_maximumScrollOffset = m_groups.last().y + (lastGroupItemCount / m_columnCount) * itemSize.height();
             if (lastGroupItemCount % m_columnCount != 0) {
-                m_maximumOffset += m_rowHeight;
+                m_maximumScrollOffset += itemSize.height();
             }
-        } else {*/
-         //   m_maximumOffset = m_minimumRowHeight * rowCount;
-        //}
+        }
 
 #ifdef KITEMLISTVIEWLAYOUTER_DEBUG
         kDebug() << "[TIME] doLayout() for " << m_model->count() << "items:" << timer.elapsed();
@@ -480,7 +478,6 @@ void KItemListViewLayouter::updateGroupedVisibleIndexes()
             m_lastVisibleIndex = nextGroupIndex - 1;
         }
     }
-    //Q_ASSERT(m_lastVisibleIndex < m_model->count());
     m_lastVisibleIndex = qBound(0, m_lastVisibleIndex, maxIndex);
 
     m_visibleIndexesDirty = false;
@@ -491,14 +488,13 @@ void KItemListViewLayouter::createGroupHeaders()
     m_groups.clear();
     m_groupIndexes.clear();
 
-    // TODO:
-    QList<int> numbers;
-    numbers << 0 << 5 << 6 << 13 << 20 << 25 << 30 << 35 << 50;
+    const QList<QPair<int, QVariant> > groups = m_model->groups();
 
     qreal y = 0;
-    for (int i = 0; i < numbers.count(); ++i) {
+    for (int i = 0; i < groups.count(); ++i) {
+        const int firstItemIndex = groups.at(i).first;
         if (i > 0) {
-            const int previousGroupItemCount = numbers[i] - m_groups.last().firstItemIndex;
+            const int previousGroupItemCount = firstItemIndex - m_groups.last().firstItemIndex;
             int previousGroupRowCount = previousGroupItemCount / m_columnCount;
             if (previousGroupItemCount % m_columnCount != 0) {
                 ++previousGroupRowCount;
@@ -509,11 +505,11 @@ void KItemListViewLayouter::createGroupHeaders()
         y += HeaderHeight;
 
         ItemGroup itemGroup;
-        itemGroup.firstItemIndex = numbers[i];
+        itemGroup.firstItemIndex = firstItemIndex;
         itemGroup.y = y;
 
         m_groups.append(itemGroup);
-        m_groupIndexes.insert(itemGroup.firstItemIndex);
+        m_groupIndexes.insert(firstItemIndex);
     }
 }
 
index 7bfe607a46f8a28fbc1f39376666acdcaee1adbe..3e611402797fa22b3a235c404b374bdadde5f86e 100644 (file)
@@ -35,15 +35,15 @@ bool KItemRange::operator == (const KItemRange& other) const
 
 KItemModelBase::KItemModelBase(QObject* parent) :
     QObject(parent),
-    m_groupRole(),
+    m_groupedSorting(false),
     m_sortRole(),
     m_sortOrder(Qt::AscendingOrder)
 {
 }
 
-KItemModelBase::KItemModelBase(const QByteArray& groupRole, const QByteArray& sortRole, QObject* parent) :
+KItemModelBase::KItemModelBase(const QByteArray& sortRole, QObject* parent) :
     QObject(parent),
-    m_groupRole(groupRole),
+    m_groupedSorting(false),
     m_sortRole(sortRole),
     m_sortOrder(Qt::AscendingOrder)
 {
@@ -60,34 +60,23 @@ bool KItemModelBase::setData(int index, const QHash<QByteArray, QVariant> &value
     return false;
 }
 
-bool KItemModelBase::supportsGrouping() const
+void KItemModelBase::setGroupedSorting(bool grouped)
 {
-    return false;
-}
-
-void KItemModelBase::setGroupRole(const QByteArray& role)
-{
-    if (supportsGrouping() && role != m_groupRole) {
-        const QByteArray previous = m_groupRole;
-        m_groupRole = role;
-        onGroupRoleChanged(role, previous);
-        emit groupRoleChanged(role, previous);
+    if (m_groupedSorting != grouped) {
+        m_groupedSorting = grouped;
+        onGroupedSortingChanged(grouped);
+        emit groupedSortingChanged(grouped);
     }
 }
 
-QByteArray KItemModelBase::groupRole() const
-{
-    return m_groupRole;
-}
-
-bool KItemModelBase::supportsSorting() const
+bool KItemModelBase::groupedSorting() const
 {
-    return false;
+    return m_groupedSorting;
 }
 
 void KItemModelBase::setSortRole(const QByteArray& role)
 {
-    if (supportsSorting() && role != m_sortRole) {
+    if (role != m_sortRole) {
         const QByteArray previous = m_sortRole;
         m_sortRole = role;
         onSortRoleChanged(role, previous);
@@ -102,7 +91,7 @@ QByteArray KItemModelBase::sortRole() const
 
 void KItemModelBase::setSortOrder(Qt::SortOrder order)
 {
-    if (supportsSorting() && order != m_sortOrder) {
+    if (order != m_sortOrder) {
         const Qt::SortOrder previous = m_sortOrder;
         m_sortOrder = order;
         onSortOrderChanged(order, previous);
@@ -115,6 +104,11 @@ QString KItemModelBase::roleDescription(const QByteArray& role) const
     return role;
 }
 
+QList<QPair<int, QVariant> > KItemModelBase::groups() const
+{
+    return QList<QPair<int, QVariant> >();
+}
+
 QMimeData* KItemModelBase::createMimeData(const QSet<int>& indexes) const
 {
     Q_UNUSED(indexes);
@@ -134,10 +128,9 @@ bool KItemModelBase::supportsDropping(int index) const
     return false;
 }
 
-void KItemModelBase::onGroupRoleChanged(const QByteArray& current, const QByteArray& previous)
+void KItemModelBase::onGroupedSortingChanged(bool current)
 {
     Q_UNUSED(current);
-    Q_UNUSED(previous);
 }
 
 void KItemModelBase::onSortRoleChanged(const QByteArray& current, const QByteArray& previous)
index 763a02efd6c456d864b5f35489cefd630cea2c07..693ffb763ab403b2f84d874a3fdc9804aa2b4685 100644 (file)
@@ -52,7 +52,7 @@ typedef QList<KItemRange> KItemRangeList;
  *
  * One item consists of a variable number of role/value-pairs.
  *
- * A model can optionally provide sorting- and/or grouping-capabilities.
+ * A model can optionally provide sorting- and grouping-capabilities.
  */
 class LIBDOLPHINPRIVATE_EXPORT KItemModelBase : public QObject
 {
@@ -60,7 +60,7 @@ class LIBDOLPHINPRIVATE_EXPORT KItemModelBase : public QObject
 
 public:
     KItemModelBase(QObject* parent = 0);
-    KItemModelBase(const QByteArray& groupRole, const QByteArray& sortRole, QObject* parent = 0);
+    KItemModelBase(const QByteArray& sortRole, QObject* parent = 0);
     virtual ~KItemModelBase();
 
     /** @return The number of items. */
@@ -78,26 +78,13 @@ public:
     virtual bool setData(int index, const QHash<QByteArray, QVariant>& values);
 
     /**
-     * @return True if the model supports grouping of data. Per default false is returned.
-     *         If the model should support grouping it is necessary to overwrite
-     *         this method to return true and to implement KItemModelBase::onGroupRoleChanged().
+     * Enables/disables the grouped sorting. The method KItemModelBase::onGroupedSortingChanged() will be
+     * called so that model-implementations can react on the grouped-sorting change. Afterwards the
+     * signal groupedSortingChanged() will be emitted. If the grouped sorting is enabled, the method
+     * KItemModelBase::groups() must be implemented.
      */
-    virtual bool supportsGrouping() const;
-
-    /**
-     * Sets the group-role to \a role. The method KItemModelBase::onGroupRoleChanged() will be
-     * called so that model-implementations can react on the group-role change. Afterwards the
-     * signal groupRoleChanged() will be emitted.
-     */
-    void setGroupRole(const QByteArray& role);
-    QByteArray groupRole() const;
-
-    /**
-     * @return True if the model supports sorting of data. Per default false is returned.
-     *         If the model should support sorting it is necessary to overwrite
-     *         this method to return true and to implement KItemModelBase::onSortRoleChanged().
-     */
-    virtual bool supportsSorting() const;
+    void setGroupedSorting(bool grouped);
+    bool groupedSorting() const;
 
     /**
      * Sets the sort-role to \a role. The method KItemModelBase::onSortRoleChanged() will be
@@ -121,6 +108,8 @@ public:
      */
     virtual QString roleDescription(const QByteArray& role) const;
 
+    virtual QList<QPair<int, QVariant> > groups() const;
+
     /**
      * @return MIME-data for the items given by \a indexes. The default implementation
      *         returns 0. The ownership of the returned instance is in the hand of the
@@ -192,20 +181,16 @@ signals:
 
     void itemsChanged(const KItemRangeList& itemRanges, const QSet<QByteArray>& roles);
 
-    void groupRoleChanged(const QByteArray& current, const QByteArray& previous);
+    void groupedSortingChanged(bool current);
     void sortRoleChanged(const QByteArray& current, const QByteArray& previous);
     void sortOrderChanged(Qt::SortOrder current, Qt::SortOrder previous);
 
 protected:
     /**
-     * Is invoked if the group role has been changed by KItemModelBase::setGroupRole(). Allows
-     * to react on the changed group role before the signal groupRoleChanged() will be emitted.
-     * The implementation must assure that the items are sorted in a way that they are grouped
-     * by the role given by \a current. Usually the most efficient way is to emit a
-     * itemsRemoved() signal for all items, reorder the items internally and to emit a
-     * itemsInserted() signal afterwards.
+     * Is invoked if the grouped sorting has been changed by KItemModelBase::setGroupedSorting(). Allows
+     * to react on the changed grouped sorting  before the signal groupedSortingChanged() will be emitted.
      */
-    virtual void onGroupRoleChanged(const QByteArray& current, const QByteArray& previous);
+    virtual void onGroupedSortingChanged(bool current);
 
     /**
      * Is invoked if the sort role has been changed by KItemModelBase::setSortRole(). Allows
@@ -228,7 +213,7 @@ protected:
     virtual void onSortOrderChanged(Qt::SortOrder current, Qt::SortOrder previous);
 
 private:
-    QByteArray m_groupRole;
+    bool m_groupedSorting;
     QByteArray m_sortRole;
     Qt::SortOrder m_sortOrder;
 };
index 7e62267a9186045126b0ef389e84c426f005bfec..64242f8a35ee0575de97a2cc7c22e0a2eafafb71 100644 (file)
@@ -34,9 +34,9 @@
             <default>false</default>
         </entry>
 
-        <entry name="CategorizedSorting" type="Bool" >
-            <label context="@label">Categorized Sorting</label>
-            <whatsthis context="@info:whatsthis">When this option is enabled, the sorted items are summarized by their category.</whatsthis>
+        <entry name="GroupedSorting" type="Bool" >
+            <label context="@label">Grouped Sorting</label>
+            <whatsthis context="@info:whatsthis">When this option is enabled, the sorted items are categorized into groups.</whatsthis>
             <default>false</default>
         </entry>
 
index bc8599ad99f3c88ce88b367c22da250ce47c204c..7c4414ea24d8f3cc826a6f192d2fef6bf5fc8fce 100644 (file)
@@ -268,7 +268,7 @@ void ViewPropertiesDialog::slotSortOrderChanged(int index)
 
 void ViewPropertiesDialog::slotCategorizedSortingChanged()
 {
-    m_viewProps->setCategorizedSorting(m_showInGroups->isChecked());
+    m_viewProps->setGroupedSorting(m_showInGroups->isChecked());
     markAsDirty(true);
 }
 
@@ -379,7 +379,7 @@ void ViewPropertiesDialog::applyViewProperties()
     m_dolphinView->setSorting(m_viewProps->sorting());
     m_dolphinView->setSortOrder(m_viewProps->sortOrder());
     m_dolphinView->setSortFoldersFirst(m_viewProps->sortFoldersFirst());
-    m_dolphinView->setCategorizedSorting(m_viewProps->categorizedSorting());
+    m_dolphinView->setGroupedSorting(m_viewProps->groupedSorting());
     m_dolphinView->setAdditionalInfoList(m_viewProps->additionalInfoList());
     m_dolphinView->setPreviewsShown(m_viewProps->previewsShown());
     m_dolphinView->setHiddenFilesShown(m_viewProps->hiddenFilesShown());
@@ -408,7 +408,7 @@ void ViewPropertiesDialog::loadSettings()
     // load show preview, show in groups and show hidden files settings
     m_previewsShown->setChecked(m_viewProps->previewsShown());
 
-    m_showInGroups->setChecked(m_viewProps->categorizedSorting());
+    m_showInGroups->setChecked(m_viewProps->groupedSorting());
     m_showInGroups->setEnabled(index == DolphinView::IconsView); // only the icons view supports categorized sorting
 
     m_showHiddenFiles->setChecked(m_viewProps->hiddenFilesShown());
index f56ef90336829232307dae06ed5c8caa21405dca..4f2f2f8ec8efb4895f4a8cbca787fd622ddb971e 100644 (file)
@@ -41,7 +41,7 @@ private slots:
 
     void testDefaultRoles();
     void testDefaultSortRole();
-    void testDefaultGroupRole();
+    void testDefaultGroupedSorting();
     void testNewItems();
     void testRemoveItems();
     void testModelConsistencyWhenInsertingItems();
@@ -113,9 +113,9 @@ void KFileItemModelTest::testDefaultSortRole()
     QCOMPARE(m_model->data(2)["name"].toString(), QString("c.txt"));
 }
 
-void KFileItemModelTest::testDefaultGroupRole()
+void KFileItemModelTest::testDefaultGroupedSorting()
 {
-    QVERIFY(m_model->groupRole().isEmpty());
+    QCOMPARE(m_model->groupedSorting(), false);
 }
 
 void KFileItemModelTest::testNewItems()
index 2bd95767a8c5775b010513ec579d5d7dbe1751c8..871de946b95581ef004d00e9de582d557ed7cb10 100644 (file)
@@ -267,19 +267,65 @@ DolphinView::Mode DolphinView::mode() const
     return m_mode;
 }
 
+void DolphinView::setPreviewsShown(bool show)
+{
+    if (previewsShown() == show) {
+        return;
+    }
+
+    ViewProperties props(url());
+    props.setPreviewsShown(show);
+
+    m_container->setPreviewsShown(show);
+    emit previewsShownChanged(show);
+}
+
 bool DolphinView::previewsShown() const
 {
     return m_container->previewsShown();
 }
 
+void DolphinView::setHiddenFilesShown(bool show)
+{
+    if (m_dirLister->showingDotFiles() == show) {
+        return;
+    }
+
+    const KFileItemList itemList = selectedItems();
+    m_selectedUrls.clear();
+    m_selectedUrls = itemList.urlList();
+
+    ViewProperties props(url());
+    props.setHiddenFilesShown(show);
+
+    m_dirLister->setShowingDotFiles(show);
+    m_dirLister->emitChanges();
+    emit hiddenFilesShownChanged(show);
+}
+
 bool DolphinView::hiddenFilesShown() const
 {
     return m_dirLister->showingDotFiles();
 }
 
-bool DolphinView::categorizedSorting() const
+void DolphinView::setGroupedSorting(bool grouped)
+{
+    if (grouped == groupedSorting()) {
+        return;
+    }
+
+    ViewProperties props(url());
+    props.setGroupedSorting(grouped);
+    props.save();
+
+    m_container->controller()->model()->setGroupedSorting(grouped);
+
+    emit groupedSortingChanged(grouped);
+}
+
+bool DolphinView::groupedSorting() const
 {
-    return false; //m_storedCategorizedSorting;
+    return fileItemModel()->groupedSorting();
 }
 
 KFileItemList DolphinView::items() const
@@ -650,52 +696,6 @@ void DolphinView::pasteIntoFolder()
     }
 }
 
-void DolphinView::setPreviewsShown(bool show)
-{
-    if (previewsShown() == show) {
-        return;
-    }
-
-    ViewProperties props(url());
-    props.setPreviewsShown(show);
-
-    m_container->setPreviewsShown(show);
-    emit previewsShownChanged(show);
-}
-
-void DolphinView::setHiddenFilesShown(bool show)
-{
-    if (m_dirLister->showingDotFiles() == show) {
-        return;
-    }
-
-    const KFileItemList itemList = selectedItems();
-    m_selectedUrls.clear();
-    m_selectedUrls = itemList.urlList();
-
-    ViewProperties props(url());
-    props.setHiddenFilesShown(show);
-
-    m_dirLister->setShowingDotFiles(show);
-    m_dirLister->emitChanges();
-    emit hiddenFilesShownChanged(show);
-}
-
-void DolphinView::setCategorizedSorting(bool categorized)
-{
-    if (categorized == categorizedSorting()) {
-        return;
-    }
-
-    ViewProperties props(url());
-    props.setCategorizedSorting(categorized);
-    props.save();
-
-    //m_viewAccessor.proxyModel()->setCategorizedModel(categorized);
-
-    emit categorizedSortingChanged(categorized);
-}
-
 bool DolphinView::eventFilter(QObject* watched, QEvent* event)
 {
     switch (event->type()) {
@@ -1198,15 +1198,15 @@ void DolphinView::applyViewProperties()
         emit hiddenFilesShownChanged(hiddenFilesShown);
     }
 
-/*    m_storedCategorizedSorting = props.categorizedSorting();
-    const bool categorized = m_storedCategorizedSorting && supportsCategorizedSorting();
-    if (categorized != m_viewAccessor.proxyModel()->isCategorizedModel()) {
-        m_viewAccessor.proxyModel()->setCategorizedModel(categorized);
-        emit categorizedSortingChanged();
-    }*/
+    KFileItemModel* model = fileItemModel();
+
+    const bool groupedSorting = props.groupedSorting();
+    if (groupedSorting != model->groupedSorting()) {
+        model->setGroupedSorting(groupedSorting);
+        emit groupedSortingChanged(groupedSorting);
+    }
 
     const DolphinView::Sorting sorting = props.sorting();
-    KFileItemModel* model = fileItemModel();
     const QByteArray newSortRole = sortRoleForSorting(sorting);
     if (newSortRole != model->sortRole()) {
         model->setSortRole(newSortRole);
index 770bbde72811c6ec9b1f19471ab14c803374591c..c681737c6bf81c5791334e02e67f9f336e1bd161 100644 (file)
@@ -152,14 +152,31 @@ public:
     void setMode(Mode mode);
     Mode mode() const;
 
-    /** See setPreviewsShown */
+    /**
+     * Turns on the file preview for the all files of the current directory,
+     * if \a show is true.
+     * If the view properties should be remembered for each directory
+     * (GeneralSettings::globalViewProps() returns false), then the
+     * preview setting will be stored automatically.
+     */
+    void setPreviewsShown(bool show);
     bool previewsShown() const;
 
-    /** See setShowHiddenFiles */
+    /**
+     * Shows all hidden files of the current directory,
+     * if \a show is true.
+     * If the view properties should be remembered for each directory
+     * (GeneralSettings::globalViewProps() returns false), then the
+     * show hidden file setting will be stored automatically.
+     */
+    void setHiddenFilesShown(bool show);
     bool hiddenFilesShown() const;
 
-    /** See setCategorizedSorting */
-    bool categorizedSorting() const;
+    /**
+     * Turns on sorting by groups if \a enable is true.
+     */
+    void setGroupedSorting(bool grouped);
+    bool groupedSorting() const;
 
     /**
      * Returns the items of the view.
@@ -382,33 +399,6 @@ public slots:
      */
     void pasteIntoFolder();
 
-    /**
-     * Turns on the file preview for the all files of the current directory,
-     * if \a show is true.
-     * If the view properties should be remembered for each directory
-     * (GeneralSettings::globalViewProps() returns false), then the
-     * preview setting will be stored automatically.
-     */
-    void setPreviewsShown(bool show);
-
-    /**
-     * Shows all hidden files of the current directory,
-     * if \a show is true.
-     * If the view properties should be remembered for each directory
-     * (GeneralSettings::globalViewProps() returns false), then the
-     * show hidden file setting will be stored automatically.
-     */
-    void setHiddenFilesShown(bool show);
-
-    /**
-     * Summarizes all sorted items by their category \a categorized
-     * is true.
-     * If the view properties should be remembered for each directory
-     * (GeneralSettings::globalViewProps() returns false), then the
-     * categorized sorting setting will be stored automatically.
-     */
-    void setCategorizedSorting(bool categorized);
-
     /** Activates the view if the item list container gets focus. */
     virtual bool eventFilter(QObject* watched, QEvent* event);
 
@@ -455,8 +445,8 @@ signals:
     /** Is emitted if the 'show hidden files' property has been changed. */
     void hiddenFilesShownChanged(bool shown);
 
-    /** Is emitted if the 'categorized sorting' property has been changed. */
-    void categorizedSortingChanged(bool sortCategorized);
+    /** Is emitted if the 'grouped sorting' property has been changed. */
+    void groupedSortingChanged(bool groupedSorting);
 
     /** Is emitted if the sorting by name, size or date has been changed. */
     void sortingChanged(DolphinView::Sorting sorting);
index cdc9646c62a6ca099742e6f14443c9659e5a6412..f765b4a09edcba0f9dbf696dedf00df787931938 100644 (file)
@@ -70,7 +70,7 @@ void DolphinViewActionHandler::setCurrentView(DolphinView* view)
             this, SLOT(slotAdditionalInfoListChanged(QList<DolphinView::AdditionalInfo>,
                                                      QList<DolphinView::AdditionalInfo>)));
     connect(view, SIGNAL(categorizedSortingChanged(bool)),
-            this, SLOT(slotCategorizedSortingChanged(bool)));
+            this, SLOT(slotGroupedSortingChanged(bool)));
     connect(view, SIGNAL(hiddenFilesShownChanged(bool)),
             this, SLOT(slotHiddenFilesShownChanged(bool)));
     connect(view, SIGNAL(sortingChanged(DolphinView::Sorting)),
@@ -196,7 +196,7 @@ void DolphinViewActionHandler::createActions()
 
     KToggleAction* showInGroups = m_actionCollection->add<KToggleAction>("show_in_groups");
     showInGroups->setText(i18nc("@action:inmenu View", "Show in Groups"));
-    connect(showInGroups, SIGNAL(triggered(bool)), this, SLOT(toggleSortCategorization(bool)));
+    connect(showInGroups, SIGNAL(triggered(bool)), this, SLOT(toggleGroupedSorting(bool)));
 
     KToggleAction* showHiddenFiles = m_actionCollection->add<KToggleAction>("show_hidden_files");
     showHiddenFiles->setText(i18nc("@action:inmenu View", "Show Hidden Files"));
@@ -339,7 +339,7 @@ void DolphinViewActionHandler::updateViewActions()
     slotSortOrderChanged(m_currentView->sortOrder());
     slotSortFoldersFirstChanged(m_currentView->sortFoldersFirst());
     slotAdditionalInfoListChanged(m_currentView->additionalInfoList(), QList<DolphinView::AdditionalInfo>());
-    slotCategorizedSortingChanged(m_currentView->categorizedSorting());
+    slotGroupedSortingChanged(m_currentView->groupedSorting());
     slotSortingChanged(m_currentView->sorting());
     slotZoomLevelChanged(m_currentView->zoomLevel(), -1);
 
@@ -428,15 +428,15 @@ void DolphinViewActionHandler::slotAdditionalInfoListChanged(const QList<Dolphin
     }
 }
 
-void DolphinViewActionHandler::toggleSortCategorization(bool categorizedSorting)
+void DolphinViewActionHandler::toggleGroupedSorting(bool grouped)
 {
-    m_currentView->setCategorizedSorting(categorizedSorting);
+    m_currentView->setGroupedSorting(grouped);
 }
 
-void DolphinViewActionHandler::slotCategorizedSortingChanged(bool sortCategorized)
+void DolphinViewActionHandler::slotGroupedSortingChanged(bool groupedSorting)
 {
     QAction* showInGroupsAction = m_actionCollection->action("show_in_groups");
-    showInGroupsAction->setChecked(sortCategorized);
+    showInGroupsAction->setChecked(groupedSorting);
 }
 
 void DolphinViewActionHandler::toggleShowHiddenFiles(bool show)
@@ -451,7 +451,6 @@ void DolphinViewActionHandler::slotHiddenFilesShownChanged(bool shown)
     showHiddenFilesAction->setChecked(shown);
 }
 
-
 KToggleAction* DolphinViewActionHandler::iconsModeAction()
 {
     KToggleAction* iconsView = m_actionCollection->add<KToggleAction>("icons");
index 4e5a0d32f09046198e789679ae0fa34716a8944d..647c6390c93d4d98498a9f8bb8f610748443c500 100644 (file)
@@ -176,14 +176,14 @@ private Q_SLOTS:
                                        const QList<DolphinView::AdditionalInfo>& previous);
 
     /**
-     * Switches between sorting by categories or not.
+     * Switches between sorting by groups or not.
      */
-    void toggleSortCategorization(bool);
+    void toggleGroupedSorting(bool);
 
     /**
      * Updates the state of the 'Categorized sorting' menu action.
      */
-    void slotCategorizedSortingChanged(bool sortCategorized);
+    void slotGroupedSortingChanged(bool sortCategorized);
 
     /**
      * Switches between showing and hiding of hidden marked files
index e67cbd87a3f66555651cc2d980522dc816af8fd4..bb747139f93412c6f60649e7d610d45f0799dfd5 100644 (file)
@@ -143,17 +143,17 @@ void ViewProperties::setHiddenFilesShown(bool show)
     }
 }
 
-void ViewProperties::setCategorizedSorting(bool categorized)
+void ViewProperties::setGroupedSorting(bool grouped)
 {
-    if (m_node->categorizedSorting() != categorized) {
-        m_node->setCategorizedSorting(categorized);
+    if (m_node->groupedSorting() != grouped) {
+        m_node->setGroupedSorting(grouped);
         update();
     }
 }
 
-bool ViewProperties::categorizedSorting() const
+bool ViewProperties::groupedSorting() const
 {
-    return m_node->categorizedSorting();
+    return m_node->groupedSorting();
 }
 
 bool ViewProperties::hiddenFilesShown() const
@@ -312,7 +312,7 @@ void ViewProperties::setDirProperties(const ViewProperties& props)
     setViewMode(props.viewMode());
     setPreviewsShown(props.previewsShown());
     setHiddenFilesShown(props.hiddenFilesShown());
-    setCategorizedSorting(props.categorizedSorting());
+    setGroupedSorting(props.groupedSorting());
     setSorting(props.sorting());
     setSortOrder(props.sortOrder());
     setSortFoldersFirst(props.sortFoldersFirst());
index c95134a156ac6a8158096d67182dd5f8168219ad..50b3b3f1e4a014010d087271c5e0f4f0de6373dd 100644 (file)
@@ -62,8 +62,8 @@ public:
     void setHiddenFilesShown(bool show);
     bool hiddenFilesShown() const;
 
-    void setCategorizedSorting(bool categorized);
-    bool categorizedSorting() const;
+    void setGroupedSorting(bool grouped);
+    bool groupedSorting() const;
 
     void setSorting(DolphinView::Sorting sorting);
     DolphinView::Sorting sorting() const;