Pimp JoinDlg
authorManuel Nickschas <sputnick@quassel-irc.org>
Fri, 6 Feb 2009 00:22:33 +0000 (01:22 +0100)
committerManuel Nickschas <sputnick@quassel-irc.org>
Fri, 6 Feb 2009 00:26:32 +0000 (01:26 +0100)
We now pre-select a currently selected channel if it's not joined. This way, pressing
the Join toolbutton while a non-joined channel is selected provides a direct way
to join that channel.

src/uisupport/networkmodelcontroller.cpp
src/uisupport/networkmodelcontroller.h

index 626d495..8a1d90a 100644 (file)
@@ -317,14 +317,12 @@ void NetworkModelController::handleGeneralAction(ActionType type, QAction *actio
   if(!indexList().count())
     return;
   NetworkId networkId = indexList().at(0).data(NetworkModel::NetworkIdRole).value<NetworkId>();
   if(!indexList().count())
     return;
   NetworkId networkId = indexList().at(0).data(NetworkModel::NetworkIdRole).value<NetworkId>();
-  if(!networkId.isValid())
-    return;
 
   switch(type) {
     case JoinChannel: {
       QString channelName = contextItem();
       if(channelName.isEmpty()) {
 
   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();
         if(dlg.exec() == QDialog::Accepted) {
           channelName = dlg.channelName();
           networkId = dlg.networkId();
@@ -336,10 +334,12 @@ void NetworkModelController::handleGeneralAction(ActionType type, QAction *actio
       break;
     }
     case ShowChannelList:
       break;
     }
     case ShowChannelList:
-      emit showChannelList(networkId);
+      if(networkId.isValid())
+        emit showChannelList(networkId);
       break;
     case ShowIgnoreList:
       break;
     case ShowIgnoreList:
-      emit showIgnoreList(networkId);
+      if(networkId.isValid())
+        emit showIgnoreList(networkId);
       break;
     default:
       break;
       break;
     default:
       break;
@@ -412,7 +412,7 @@ void NetworkModelController::handleNickAction(ActionType type, QAction *) {
  * JoinDlg
  ***************************************************************************************************************/
 
  * 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"));
 
   setWindowIcon(SmallIcon("irc-join-channel"));
   setWindowTitle(tr("Join Channel"));
 
@@ -432,20 +432,22 @@ NetworkModelController::JoinDlg::JoinDlg(NetworkId defaultId, QWidget *parent) :
   connect(buttonBox, SIGNAL(rejected()), SLOT(reject()));
   connect(channel, SIGNAL(textChanged(QString)), SLOT(on_channel_textChanged(QString)));
 
   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<NetworkId>(id));
   foreach(NetworkId id, Client::networkIds()) {
     const Network *net = Client::network(id);
     if(net->isConnected()) {
       networks->addItem(net->networkName(), QVariant::fromValue<NetworkId>(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<NetworkId>();
+    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 {
 }
 
 NetworkId NetworkModelController::JoinDlg::networkId() const {
index 4333a0c..0aa5860 100644 (file)
@@ -162,7 +162,7 @@ class NetworkModelController::JoinDlg : public QDialog {
   Q_OBJECT
 
 public:
   Q_OBJECT
 
 public:
-  JoinDlg(NetworkId id, QWidget *parent = 0);
+  JoinDlg(const QModelIndex &index, QWidget *parent = 0);
 
   QString channelName() const;
   NetworkId networkId() const;
 
   QString channelName() const;
   NetworkId networkId() const;