From: Marcus Eggenberger Date: Wed, 18 Jun 2008 17:01:15 +0000 (+0200) Subject: Merge branch 'master' of git@git.quassel-irc.org:quassel X-Git-Tag: 0.3.0~363 X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=commitdiff_plain;h=0f206dd896485276cf25025e562c812b8c7fc5da;hp=78ebc9ede7f1f96d7549c07a8f5ce55515146061 Merge branch 'master' of git@git.quassel-irc.org:quassel --- diff --git a/src/core/ircserverhandler.cpp b/src/core/ircserverhandler.cpp index 5034a714..3d7596df 100644 --- a/src/core/ircserverhandler.cpp +++ b/src/core/ircserverhandler.cpp @@ -433,7 +433,6 @@ void IrcServerHandler::handle005(const QString &prefix, const QList const int numParams = params.size(); if(numParams < 1) { qWarning() << "IrcServerHandler::handle005(): received RPL_ISUPPORT (005) with too few parameters:" << serverDecode(params); - return; } QString rpl_isupport_suffix = serverDecode(params.last()); diff --git a/src/core/userinputhandler.cpp b/src/core/userinputhandler.cpp index ee335e6c..c42c475f 100644 --- a/src/core/userinputhandler.cpp +++ b/src/core/userinputhandler.cpp @@ -193,7 +193,6 @@ void UserInputHandler::handleList(const BufferInfo &bufferInfo, const QString &m emit putCmd("LIST", serverEncode(msg.split(' ', QString::SkipEmptyParts))); } - void UserInputHandler::handleMe(const BufferInfo &bufferInfo, const QString &msg) { if(bufferInfo.bufferName().isEmpty()) return; // server buffer networkConnection()->ctcpHandler()->query(bufferInfo.bufferName(), "ACTION", msg); @@ -202,8 +201,14 @@ void UserInputHandler::handleMe(const BufferInfo &bufferInfo, const QString &msg void UserInputHandler::handleMode(const BufferInfo &bufferInfo, const QString &msg) { Q_UNUSED(bufferInfo) + + QStringList params = msg.split(' ', QString::SkipEmptyParts); + // if the first argument is neither a channel nor us (user modes are only to oneself) the current buffer is assumed to be the target + if(!params.isEmpty() && !network()->isChannelName(params[0]) && !network()->isMyNick(params[0])) + params.prepend(bufferInfo.bufferName()); + // TODO handle correct encoding for buffer modes (channelEncode()) - emit putCmd("MODE", serverEncode(msg.split(' ', QString::SkipEmptyParts))); + emit putCmd("MODE", serverEncode(params)); } // TODO: show privmsgs diff --git a/src/uisupport/bufferviewfilter.cpp b/src/uisupport/bufferviewfilter.cpp index 0adf8ebb..04e31567 100644 --- a/src/uisupport/bufferviewfilter.cpp +++ b/src/uisupport/bufferviewfilter.cpp @@ -39,7 +39,8 @@ public: *****************************************/ BufferViewFilter::BufferViewFilter(QAbstractItemModel *model, BufferViewConfig *config) : QSortFilterProxyModel(model), - _config(0) + _config(0), + _sortOrder(Qt::AscendingOrder) { setConfig(config); setSourceModel(model); @@ -125,11 +126,17 @@ bool BufferViewFilter::dropMimeData(const QMimeData *data, Qt::DropAction action if(droppedNetworkId == networkId) { if(row < 0) row = 0; + if(row < rowCount(parent)) { BufferId beforeBufferId = parent.child(row, 0).data(NetworkModel::BufferIdRole).value(); pos = config()->bufferList().indexOf(beforeBufferId); + if(_sortOrder == Qt::DescendingOrder) + pos++; } else { - pos = config()->bufferList().count(); + if(_sortOrder == Qt::AscendingOrder) + pos = config()->bufferList().count(); + else + pos = 0; } if(config()->bufferList().contains(bufferId)) { @@ -147,6 +154,11 @@ bool BufferViewFilter::dropMimeData(const QMimeData *data, Qt::DropAction action return true; } +void BufferViewFilter::sort(int column, Qt::SortOrder order) { + _sortOrder = order; + QSortFilterProxyModel::sort(column, order); +} + void BufferViewFilter::addBuffer(const BufferId &bufferId) const { if(!config() || config()->bufferList().contains(bufferId)) return; diff --git a/src/uisupport/bufferviewfilter.h b/src/uisupport/bufferviewfilter.h index 128b3e83..56fa974a 100644 --- a/src/uisupport/bufferviewfilter.h +++ b/src/uisupport/bufferviewfilter.h @@ -61,6 +61,8 @@ public: void setConfig(BufferViewConfig *config); inline BufferViewConfig *config() const { return _config; } + virtual void sort(int column, Qt::SortOrder order = Qt::AscendingOrder); + public slots: void checkPreviousCurrentForRemoval(const QModelIndex ¤t, const QModelIndex &previous); void checkItemForRemoval(const QModelIndex &index) { checkItemsForRemoval(index, index); } @@ -81,6 +83,7 @@ private slots: private: QPointer _config; + Qt::SortOrder _sortOrder; QColor _FgColorInactiveActivity; QColor _FgColorNoActivity;