if(bufferViewManager()->bufferViewConfigs().isEmpty()) {
BufferViewConfig config(-1);
config.setBufferViewName(tr("All Buffers"));
+ config.initSetBufferList(networkModel()->allBufferIdsSorted());
bufferViewManager()->requestCreateBufferView(config.toVariantMap());
}
}
}
return BufferId();
}
+
+void NetworkModel::sortBufferIds(QList<BufferId> &bufferIds) const {
+ QList<BufferItem *> 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<BufferId> NetworkModel::allBufferIdsSorted() const {
+ QList<BufferId> 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;
+}
+
QString networkName(BufferId bufferId) const;
inline QList<BufferId> allBufferIds() const { return _bufferItemCache.keys(); }
+ QList<BufferId> allBufferIdsSorted() const;
+ void sortBufferIds(QList<BufferId> &bufferIds) const;
public slots:
void bufferUpdated(BufferInfo bufferInfo);
BufferItem *findBufferItem(BufferId bufferId) const;
BufferItem *bufferItem(const BufferInfo &bufferInfo);
+ static bool bufferItemLessThan(const BufferItem *left, const BufferItem *right);
+
QHash<BufferId, BufferItem *> _bufferItemCache;
};
Q_DECLARE_OPERATORS_FOR_FLAGS(NetworkModel::ItemTypes)
BufferViewConfig::BufferViewConfig(int bufferViewId, const QVariantMap &properties, QObject *parent)
: SyncableObject(parent),
- _bufferViewId(bufferViewId),
- _disableDecoration(false) // FIXME remove as soon as we have bumped the protocol version to v8
+ _bufferViewId(bufferViewId)
{
fromVariantMap(properties);
setObjectName(QString::number(bufferViewId));
config->setInitialized();
QList<BufferId> bufferIds;
if(config->addNewBuffersAutomatically()) {
- bufferIds = Client::networkModel()->allBufferIds();
if(config->sortAlphabetically())
- qSort(bufferIds.begin(), bufferIds.end(), bufferIdLessThan);
+ bufferIds = Client::networkModel()->allBufferIdsSorted();
+ else
+ bufferIds = Client::networkModel()->allBufferIds();
}
config->initSetBufferList(bufferIds);
if(_newBufferViews.contains(config)) {
QList<BufferId> bufferIds;
if(config->addNewBuffersAutomatically()) {
- bufferIds = Client::networkModel()->allBufferIds();
if(config->sortAlphabetically())
- qSort(bufferIds.begin(), bufferIds.end(), bufferIdLessThan);
+ bufferIds = Client::networkModel()->allBufferIdsSorted();
+ else
+ bufferIds = Client::networkModel()->allBufferIds();
}
config->initSetBufferList(bufferIds);
}
bufferIdsFromConfig << v.value<BufferId>();
allBufferIds.removeAll(v.value<BufferId>());
}
- qSort(bufferIdsFromConfig.begin(), bufferIdsFromConfig.end(), bufferIdLessThan);
+ Client::networkModel()->sortBufferIds(bufferIdsFromConfig);
_configActive->initSetBufferList(bufferIdsFromConfig);
}
ui.activeBuffers->setFilteredModel(Client::bufferModel(), _configActive);
- qSort(allBufferIds.begin(), allBufferIds.end(), bufferIdLessThan);
+ Client::networkModel()->sortBufferIds(allBufferIds);
_configAvailable->initSetBufferList(allBufferIds);
ui.availableBuffers->setFilteredModel(Client::bufferModel(), _configAvailable);
emit _dataChanged(source_topLeft, source_bottomRight);
}
-// ******************************
-// Helper
-// ******************************
-bool bufferIdLessThan(const BufferId &left, const BufferId &right) {
+bool BufferViewFilter::bufferIdLessThan(const BufferId &left, const BufferId &right) {
Q_CHECK_PTR(Client::networkModel());
if(!Client::networkModel())
return true;
bool filterAcceptBuffer(const QModelIndex &) const;
bool filterAcceptNetwork(const QModelIndex &) const;
void addBuffer(const BufferId &) const;
+ static bool bufferIdLessThan(const BufferId &, const BufferId &);
};
Q_DECLARE_OPERATORS_FOR_FLAGS(BufferViewFilter::Modes)
-bool bufferIdLessThan(const BufferId &, const BufferId &);
-
#endif // BUFFERVIEWFILTER_H_