Adapt chatview and nickview to join-and-switch
authorSebastian Goth <seezer@roath.org>
Sat, 30 Jan 2010 23:45:33 +0000 (00:45 +0100)
committerManuel Nickschas <sputnick@quassel-irc.org>
Sun, 31 Jan 2010 19:26:05 +0000 (20:26 +0100)
src/qtui/chatitem.cpp
src/uisupport/networkmodelcontroller.cpp
src/uisupport/nickview.cpp

index 03a5ddc..2ca66aa 100644 (file)
@@ -392,15 +392,8 @@ void SenderChatItem::handleClick(const QPointF &pos, ChatScene::ClickMode clickM
     BufferInfo curBufInfo = Client::networkModel()->bufferInfo(data(MessageModel::BufferIdRole).value<BufferId>());
     QString nick = data(MessageModel::EditRole).toString();
     // check if the nick is a valid ircUser
     BufferInfo curBufInfo = Client::networkModel()->bufferInfo(data(MessageModel::BufferIdRole).value<BufferId>());
     QString nick = data(MessageModel::EditRole).toString();
     // check if the nick is a valid ircUser
-    if(!nick.isEmpty() && Client::network(curBufInfo.networkId())->ircUser(nick)) {
-      BufferId targetBufId = Client::networkModel()->bufferId(curBufInfo.networkId(), nick);
-      if(targetBufId.isValid()) { // querybuffer exists
-        Client::bufferModel()->switchToBuffer(targetBufId);
-      }
-      else { // we create it
-        Client::userInput(curBufInfo, QString("/QUERY %1").arg(nick));
-      }
-    }
+    if(!nick.isEmpty() && Client::network(curBufInfo.networkId())->ircUser(nick))
+      Client::bufferModel()->switchToOrStartQuery(curBufInfo.networkId(), nick);
   }
   else
     ChatItem::handleClick(pos, clickMode);
   }
   else
     ChatItem::handleClick(pos, clickMode);
index 1f37123..be1db92 100644 (file)
@@ -405,10 +405,8 @@ void NetworkModelController::handleNickAction(ActionType type, QAction *action)
         Client::userInput(bufferInfo, QString("/KICK %1").arg(nick));
         break;
       case NickSwitchTo:
         Client::userInput(bufferInfo, QString("/KICK %1").arg(nick));
         break;
       case NickSwitchTo:
-        Client::bufferModel()->switchToBuffer(findQueryBuffer(networkId, nick));
-        break;
       case NickQuery:
       case NickQuery:
-        Client::userInput(bufferInfo, QString("/QUERY %1").arg(nick));
+        Client::bufferModel()->switchToOrStartQuery(networkId, nick);
         break;
       case NickIgnoreUser:
       {
         break;
       case NickIgnoreUser:
       {
index 11b40c7..bdba62f 100644 (file)
@@ -124,11 +124,7 @@ void NickView::startQuery(const QModelIndex &index) {
   if(!ircUser || !networkId.isValid())
     return;
 
   if(!ircUser || !networkId.isValid())
     return;
 
-  BufferId bufId = Client::networkModel()->bufferId(networkId, ircUser->nick());
-  if(bufId.isValid())
-    Client::bufferModel()->switchToBuffer(bufId);
-  else
-    Client::userInput(index.data(NetworkModel::BufferInfoRole).value<BufferInfo>(), QString("/QUERY %1").arg(ircUser->nick()));
+  Client::bufferModel()->switchToOrStartQuery(networkId, ircUser->nick());
 }
 
 void NickView::customEvent(QEvent *event) {
 }
 
 void NickView::customEvent(QEvent *event) {