X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fclient%2Fnetworkmodel.cpp;h=840a10ae7eba9222044eeeeb6205ef49c325617d;hp=962c9f8fcd058f199cadc77ea67b6ff7f0353619;hb=997fd2faaf19b25128fa7516be89aa5b0c165ae7;hpb=b324a124e384bd8c9f54d97c5b5d6a5cc50fd91b diff --git a/src/client/networkmodel.cpp b/src/client/networkmodel.cpp index 962c9f8f..840a10ae 100644 --- a/src/client/networkmodel.cpp +++ b/src/client/networkmodel.cpp @@ -1041,3 +1041,35 @@ BufferId NetworkModel::bufferId(NetworkId networkId, const QString &bufferName, } return BufferId(); } + +void NetworkModel::sortBufferIds(QList &bufferIds) const { + QList bufferItems; + foreach(BufferId bufferId, bufferIds) { + if(_bufferItemCache.contains(bufferId)) + bufferItems << _bufferItemCache[bufferId]; + } + + qSort(bufferItems.begin(), bufferItems.end(), bufferItemLessThan); + + bufferIds.clear(); + foreach(BufferItem *bufferItem, bufferItems) { + bufferIds << bufferItem->bufferId(); + } +} + +QList NetworkModel::allBufferIdsSorted() const { + QList bufferIds = allBufferIds(); + sortBufferIds(bufferIds); + return bufferIds; +} + +bool NetworkModel::bufferItemLessThan(const BufferItem *left, const BufferItem *right) { + int leftType = left->bufferType(); + int rightType = right->bufferType(); + + if(leftType != rightType) + return leftType < rightType; + else + return QString::compare(left->bufferName(), right->bufferName(), Qt::CaseInsensitive) < 0; +} +