[Pkg-owncloud-commits] [owncloud-client] 107/159: Sort folder sizes SelectiveSyncTreeView numerically

Sandro Knauß hefee-guest at moszumanska.debian.org
Fri May 1 13:05:31 UTC 2015


This is an automated email from the git hooks/post-receive script.

hefee-guest pushed a commit to branch master
in repository owncloud-client.

commit ed80a712abe1de27d0719bc53c07d3fd6648491a
Author: Daniel Molkentin <danimo at owncloud.com>
Date:   Tue Apr 14 20:00:42 2015 +0200

    Sort folder sizes SelectiveSyncTreeView numerically
    
    Fixes #3112
---
 src/gui/selectivesyncdialog.cpp | 31 +++++++++++++++++++++++++++----
 1 file changed, 27 insertions(+), 4 deletions(-)

diff --git a/src/gui/selectivesyncdialog.cpp b/src/gui/selectivesyncdialog.cpp
index 7034847..429fe98 100644
--- a/src/gui/selectivesyncdialog.cpp
+++ b/src/gui/selectivesyncdialog.cpp
@@ -26,10 +26,33 @@
 #include <QDebug>
 #include <QSettings>
 #include <QScopedValueRollback>
+#include <QTreeWidgetItem>
 #include <QLabel>
 
 namespace OCC {
 
+
+class SelectiveSyncTreeViewItem : public QTreeWidgetItem {
+public:
+    SelectiveSyncTreeViewItem(int type = QTreeWidgetItem::Type)
+        : QTreeWidgetItem(type) { }
+    SelectiveSyncTreeViewItem(const QStringList &strings, int type = QTreeWidgetItem::Type)
+        : QTreeWidgetItem(strings, type) { }
+    SelectiveSyncTreeViewItem(QTreeWidget *view, int type = QTreeWidgetItem::Type)
+        : QTreeWidgetItem(view, type) { }
+    SelectiveSyncTreeViewItem(QTreeWidgetItem *parent, int type = QTreeWidgetItem::Type)
+        : QTreeWidgetItem(parent, type) { }
+
+private:
+    bool operator<(const QTreeWidgetItem &other)const {
+        int column = treeWidget()->sortColumn();
+        if (column == 1) {
+            return data(1, Qt::UserRole).toLongLong() < other.data(1, Qt::UserRole).toLongLong();
+        }
+        return QTreeWidgetItem::operator <(other);
+    }
+};
+
 SelectiveSyncTreeView::SelectiveSyncTreeView(AccountPtr account, QWidget* parent)
     : QTreeWidget(parent), _inserting(false), _account(account)
 {
@@ -101,9 +124,9 @@ void SelectiveSyncTreeView::recursiveInsert(QTreeWidgetItem* parent, QStringList
         parent->setToolTip(0, path);
         parent->setData(0, Qt::UserRole, path);
     } else {
-        QTreeWidgetItem *item = findFirstChild(parent, pathTrail.first());
+        SelectiveSyncTreeViewItem *item = static_cast<SelectiveSyncTreeViewItem*>(findFirstChild(parent, pathTrail.first()));
         if (!item) {
-            item = new QTreeWidgetItem(parent);
+            item = new SelectiveSyncTreeViewItem(parent);
             if (parent->checkState(0) == Qt::Checked
                     || parent->checkState(0) == Qt::PartiallyChecked) {
                 item->setCheckState(0, Qt::Checked);
@@ -138,7 +161,7 @@ void SelectiveSyncTreeView::slotUpdateDirectories(const QStringList&list)
     QScopedValueRollback<bool> isInserting(_inserting);
     _inserting = true;
 
-    QTreeWidgetItem *root = topLevelItem(0);
+    SelectiveSyncTreeViewItem *root = static_cast<SelectiveSyncTreeViewItem*>(topLevelItem(0));
 
     if (!root && list.size() <= 1) {
         _loading->setText(tr("No subfolders currently on the server."));
@@ -149,7 +172,7 @@ void SelectiveSyncTreeView::slotUpdateDirectories(const QStringList&list)
     }
 
     if (!root) {
-        root = new QTreeWidgetItem(this);
+        root = new SelectiveSyncTreeViewItem(this);
         root->setText(0, _rootName);
         root->setIcon(0, Theme::instance()->applicationIcon());
         root->setData(0, Qt::UserRole, QString());

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-owncloud/owncloud-client.git



More information about the Pkg-owncloud-commits mailing list