diff options
author | Daniel Molkentin <danimo@owncloud.com> | 2015-04-14 21:00:42 +0300 |
---|---|---|
committer | Daniel Molkentin <danimo@owncloud.com> | 2015-04-14 21:00:42 +0300 |
commit | ed80a712abe1de27d0719bc53c07d3fd6648491a (patch) | |
tree | 1b187e76fcdf7bb57a91c5114ce72b15abeec234 /src | |
parent | 2866e56c5186c19ff0d373cc624d70fb87651514 (diff) |
Sort folder sizes SelectiveSyncTreeView numerically
Fixes #3112
Diffstat (limited to 'src')
-rw-r--r-- | src/gui/selectivesyncdialog.cpp | 31 |
1 files changed, 27 insertions, 4 deletions
diff --git a/src/gui/selectivesyncdialog.cpp b/src/gui/selectivesyncdialog.cpp index 70348472b..429fe9804 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()); |