Sort folder list alphabetically #5299
authorChristian Kamm <mail@ckamm.de>
Tue, 8 Nov 2016 12:30:18 +0000 (13:30 +0100)
committerChristian Kamm <mail@ckamm.de>
Tue, 8 Nov 2016 13:01:07 +0000 (14:01 +0100)
src/gui/folderstatusmodel.cpp

index 4c74d0e2fb7eb76b6ae44715c92bf6752aa15183..51c18d51c2c5a9e3afc16566225ce4b1510e667b 100644 (file)
@@ -38,6 +38,12 @@ FolderStatusModel::FolderStatusModel(QObject *parent)
 FolderStatusModel::~FolderStatusModel()
 { }
 
+static bool sortByFolderHeader(const FolderStatusModel::SubFolderInfo& lhs, const FolderStatusModel::SubFolderInfo& rhs)
+{
+    return QString::compare(lhs._folder->shortGuiRemotePathOrAppName(),
+                            rhs._folder->shortGuiRemotePathOrAppName(),
+                            Qt::CaseInsensitive) < 0;
+}
 
 void FolderStatusModel::setAccountState(const AccountState* accountState)
 {
@@ -58,7 +64,6 @@ void FolderStatusModel::setAccountState(const AccountState* accountState)
         if (f->accountState() != accountState)
             continue;
         SubFolderInfo info;
-        info._pathIdx << _folders.size();
         info._name = f->alias();
         info._path = "/";
         info._folder = f;
@@ -69,6 +74,14 @@ void FolderStatusModel::setAccountState(const AccountState* accountState)
         connect(f, SIGNAL(newBigFolderDiscovered(QString)), this, SLOT(slotNewBigFolder()), Qt::UniqueConnection);
     }
 
+    // Sort by header text
+    qSort(_folders.begin(), _folders.end(), sortByFolderHeader);
+
+    // Set the root _pathIdx after the sorting
+    for (int i = 0; i < _folders.size(); ++i) {
+        _folders[i]._pathIdx << i;
+    }
+
     endResetModel();
     emit dirtyChanged();
 }