X-Git-Url: https://git.quassel-irc.org/?a=blobdiff_plain;f=src%2Fuisupport%2Fnetworkmodelcontroller.cpp;h=58db5617ae594edd0e82cb6e64dcbd83cdbe665c;hb=57d23cf77236e4ba25eb2bddb0eb343fe7f5b5df;hp=626d495f868819ee03e5b7e405f42dfbf3acb3c3;hpb=84d12083744a7cbe23de09d5110b9d426c58ef19;p=quassel.git diff --git a/src/uisupport/networkmodelcontroller.cpp b/src/uisupport/networkmodelcontroller.cpp index 626d495f..58db5617 100644 --- a/src/uisupport/networkmodelcontroller.cpp +++ b/src/uisupport/networkmodelcontroller.cpp @@ -115,7 +115,7 @@ QString NetworkModelController::nickName(const QModelIndex &index) const { BufferInfo bufferInfo = index.data(NetworkModel::BufferInfoRole).value(); if(!bufferInfo.isValid()) return QString(); - if(!bufferInfo.type() == BufferInfo::QueryBuffer) + if(bufferInfo.type() != BufferInfo::QueryBuffer) return QString(); return bufferInfo.bufferName(); // FIXME this might break with merged queries maybe @@ -232,11 +232,14 @@ void NetworkModelController::handleBufferAction(ActionType type, QAction *) { removeBuffers(indexList()); } else { + QList bufferList; // create temp list because model indexes might change foreach(QModelIndex index, indexList()) { BufferInfo bufferInfo = index.data(NetworkModel::BufferInfoRole).value(); - if(!bufferInfo.isValid()) - continue; + if(bufferInfo.isValid()) + bufferList << bufferInfo; + } + foreach(BufferInfo bufferInfo, bufferList) { switch(type) { case BufferJoin: Client::userInput(bufferInfo, QString("/JOIN %1").arg(bufferInfo.bufferName())); @@ -273,6 +276,8 @@ void NetworkModelController::handleHideAction(ActionType type, QAction *action) filter |= Message::Mode; if(NetworkModelController::action(HideDayChange)->isChecked()) filter |= Message::DayChange; + if(NetworkModelController::action(HideTopic)->isChecked()) + filter |= Message::Topic; switch(type) { case HideJoin: @@ -281,6 +286,7 @@ void NetworkModelController::handleHideAction(ActionType type, QAction *action) case HideNick: case HideMode: case HideDayChange: + case HideTopic: if(_messageFilter) BufferSettings(_messageFilter->idString()).setMessageFilter(filter); else { @@ -317,14 +323,12 @@ void NetworkModelController::handleGeneralAction(ActionType type, QAction *actio if(!indexList().count()) return; NetworkId networkId = indexList().at(0).data(NetworkModel::NetworkIdRole).value(); - if(!networkId.isValid()) - return; switch(type) { case JoinChannel: { QString channelName = contextItem(); if(channelName.isEmpty()) { - JoinDlg dlg(networkId); + JoinDlg dlg(indexList().first()); if(dlg.exec() == QDialog::Accepted) { channelName = dlg.channelName(); networkId = dlg.networkId(); @@ -336,10 +340,12 @@ void NetworkModelController::handleGeneralAction(ActionType type, QAction *actio break; } case ShowChannelList: - emit showChannelList(networkId); + if(networkId.isValid()) + emit showChannelList(networkId); break; case ShowIgnoreList: - emit showIgnoreList(networkId); + if(networkId.isValid()) + emit showIgnoreList(networkId); break; default: break; @@ -412,7 +418,7 @@ void NetworkModelController::handleNickAction(ActionType type, QAction *) { * JoinDlg ***************************************************************************************************************/ -NetworkModelController::JoinDlg::JoinDlg(NetworkId defaultId, QWidget *parent) : QDialog(parent) { +NetworkModelController::JoinDlg::JoinDlg(const QModelIndex &index, QWidget *parent) : QDialog(parent) { setWindowIcon(SmallIcon("irc-join-channel")); setWindowTitle(tr("Join Channel")); @@ -432,20 +438,22 @@ NetworkModelController::JoinDlg::JoinDlg(NetworkId defaultId, QWidget *parent) : connect(buttonBox, SIGNAL(rejected()), SLOT(reject())); connect(channel, SIGNAL(textChanged(QString)), SLOT(on_channel_textChanged(QString))); - - QString defaultName; foreach(NetworkId id, Client::networkIds()) { const Network *net = Client::network(id); if(net->isConnected()) { networks->addItem(net->networkName(), QVariant::fromValue(id)); - if(id == defaultId) - defaultName = net->networkName(); } } - if(!defaultName.isEmpty()) - networks->setCurrentIndex(networks->findText(defaultName)); - + if(index.isValid()) { + NetworkId networkId = index.data(NetworkModel::NetworkIdRole).value(); + if(networkId.isValid()) { + networks->setCurrentIndex(networks->findText(Client::network(networkId)->networkName())); + if(index.data(NetworkModel::BufferTypeRole) == BufferInfo::ChannelBuffer + && !index.data(NetworkModel::ItemActiveRole).toBool()) + channel->setText(index.data(Qt::DisplayRole).toString()); + } + } } NetworkId NetworkModelController::JoinDlg::networkId() const {