X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fuisupport%2Fbufferviewfilter.cpp;h=5b58ee5618709f80731053724e00ca481da40547;hp=ae296ad8bf089fcf20566770790371aff55eb1bc;hb=bbff8b7b37e35f61279b1e8b06a97969fe87f2a6;hpb=32f0f3f5b0ebb46dc09fa291af3a6755a8bb7a54 diff --git a/src/uisupport/bufferviewfilter.cpp b/src/uisupport/bufferviewfilter.cpp index ae296ad8..5b58ee56 100644 --- a/src/uisupport/bufferviewfilter.cpp +++ b/src/uisupport/bufferviewfilter.cpp @@ -45,8 +45,8 @@ BufferViewFilter::BufferViewFilter(QAbstractItemModel *model, BufferViewConfig * : QSortFilterProxyModel(model), _config(0), _sortOrder(Qt::AscendingOrder), - _channelJoinedIcon(SmallIcon("user-online")), - _channelPartedIcon(SmallIcon("user-offline")), + _channelJoinedIcon(SmallIcon("irc-channel-active")), + _channelPartedIcon(SmallIcon("irc-channel-inactive")), _userOfflineIcon(SmallIcon("im-user-offline")), _userAwayIcon(SmallIcon("im-user-away")), _userOnlineIcon(SmallIcon("im-user")), @@ -141,13 +141,8 @@ void BufferViewFilter::enableEditMode(bool enable) { return; if(enable == false) { - int numBuffers = config()->bufferList().count(); + addBuffers(QList::fromSet(_toAdd)); QSet::const_iterator iter; - for(iter = _toAdd.constBegin(); iter != _toAdd.constEnd(); iter++) { - if(config()->bufferList().contains(*iter)) - continue; - config()->requestAddBuffer(*iter, numBuffers); - } for(iter = _toTempRemove.constBegin(); iter != _toTempRemove.constEnd(); iter++) { if(config()->temporarilyRemovedBuffers().contains(*iter)) continue; @@ -224,10 +219,12 @@ bool BufferViewFilter::dropMimeData(const QMimeData *data, Qt::DropAction action pos = 0; } - if(config()->bufferList().contains(bufferId)) { + if(config()->bufferList().contains(bufferId) && !config()->sortAlphabetically()) { if(config()->bufferList().indexOf(bufferId) < pos) pos--; - config()->requestMoveBuffer(bufferId, pos); + ClientBufferViewConfig *clientConf = qobject_cast(config()); + if(!clientConf || !clientConf->isLocked()) + config()->requestMoveBuffer(bufferId, pos); } else { config()->requestAddBuffer(bufferId, pos); } @@ -264,6 +261,33 @@ void BufferViewFilter::addBuffer(const BufferId &bufferId) const { config()->requestAddBuffer(bufferId, pos); } +void BufferViewFilter::addBuffers(const QList &bufferIds) const { + if(!config()) + return; + + QList bufferList = config()->bufferList(); + foreach(BufferId bufferId, bufferIds) { + if(bufferList.contains(bufferId)) + continue; + + int pos = bufferList.count(); + bool lt; + for(int i = 0; i < bufferList.count(); i++) { + if(config() && config()->sortAlphabetically()) + lt = bufferIdLessThan(bufferId, bufferList[i]); + else + lt = bufferId < config()->bufferList()[i]; + + if(lt) { + pos = i; + bufferList.insert(pos, bufferId); + break; + } + } + config()->requestAddBuffer(bufferId, pos); + } +} + bool BufferViewFilter::filterAcceptBuffer(const QModelIndex &source_bufferIndex) const { // no config -> "all buffers" -> accept everything if(!config())