Bug 114277

Summary: When you run Konvi, in Server list dialog, after you click Edit and change things, Konvi does not connect and stays iddle and empty
Product: [Applications] konversation Reporter: Anne-Marie Mahfouf <annma>
Component: generalAssignee: Konversation Developers <konversation-devel>
Status: RESOLVED FIXED    
Severity: normal    
Priority: NOR    
Version: unspecified   
Target Milestone: ---   
Platform: unspecified   
OS: Linux   
Latest Commit: Version Fixed In:
Sentry Crash Report:

Description Anne-Marie Mahfouf 2005-10-12 15:36:52 UTC
Version:           0.19 #3031 (using KDE 3.4.92 (beta2, >= 20051010), compiled sources)
Compiler:          Target: i586-mandriva-linux-gnu
OS:                Linux (i686) release 2.6.11-9.mm.6mdk

When I start Konversation, I get the Server List dialog. If I click on Edit to get the Edit Network dialog then here on OK, back to Server List dialog -> Connect button: no connection, Konversation stays iddle and does not display anything.

Konversation svn HEAD 11 October 2005 on kde 3.5
Comment 1 Anne-Marie Mahfouf 2005-10-12 17:27:29 UTC
Ok, I investigated further and found that it is because the server is not highlighted when I come back from the dialog.
So in the code in serverlistdialog.cpp line 260 and more
        while(server)
        {
            emit connectToServer(server->serverId());

            server = static_cast<ServerListItem*>(selected.next());
        }
the while is not entered.

Fix might be to highlight the server back after quitting the Edit Network dialog.

Comment 2 Eike Hein 2006-01-07 12:35:17 UTC
SVN commit 495164 by hein:

Select respective entry in Server List dialog after adding 
or editing a network, enabling a smooth Add/Edit->Connect 
interface flow.
BUG:114277


 M  +2 -0      ChangeLog  
 M  +1 -1      src/commit.h  
 M  +1 -1      src/konversationmainwindow.cpp  
 M  +18 -2     src/serverlistdialog.cpp  
 M  +3 -0      src/serverlistdialog.h  


--- trunk/extragear/network/konversation/ChangeLog #495163:495164
@@ -22,6 +22,7 @@
 - Pressing arrow down in the input line now preserves input by adding it to the history and clears the input line
 - Fix infinite loop when nickname is in use
 - Make /server syntax parsing more flexible by allowing both 'address:port' and 'address port'
+- Vastly improve /server IPv6 handling
 - Have the /list command open the channel list panel
 - Handle CABAB command correctly
 - Handle IDENTIFY-MSG correctly
@@ -53,6 +54,7 @@
 - Prevent addition of nameless channels and hostless servers in Edit Network
 - Implemented '/topic <channel>' for retrieving the topic of arbitrary channels, provided the IRC server allows us to
 - Show local file name in DCC GET status tab and DCC messages
+- Properly select relevant entry in Server List dialog after adding or editing a network
 
 Changes from 0.17 to 0.18
 - All nicks were blue when colored nicks are disabled with some setups
--- trunk/extragear/network/konversation/src/commit.h #495163:495164
@@ -1,4 +1,4 @@
 // This COMMIT number is added to version string to be used as "patch level"
 #ifndef COMMIT
-#define COMMIT 3046
+#define COMMIT 3047
 #endif
--- trunk/extragear/network/konversation/src/konversationmainwindow.cpp #495163:495164
@@ -1758,7 +1758,7 @@
     }
 }
 
-void KonversationMainWindow::openURL(const QString& url, const QString& title)
+void KonversationMainWindow::openURL(const QString& url, const QString& /*title*/)
 {
     QString urlN = url;
     urlN.remove("irc://");
--- trunk/extragear/network/konversation/src/serverlistdialog.cpp #495163:495164
@@ -332,6 +332,8 @@
                                                   // TODO [SERVER] Make this work!
                     *serverGroup = *(dlg.serverGroupSettings());
 
+                    m_lastEditedItemId = serverGroup->id();
+
                     updateServerGroupList();
                 }
             }
@@ -384,7 +386,8 @@
         Preferences::addServerGroup(serverGroup);
         QListViewItem* item = addListItem(serverGroup);
         m_serverList->clearSelection();
-        m_serverList->setSelected(item, true);
+        m_serverList->setSelected(item,true);
+        m_serverList->setCurrentItem(item);
         m_serverList->ensureItemVisible(item);
     }
 
@@ -414,8 +417,21 @@
 
         for(it = serverGroups.begin(); it != serverGroups.end(); ++it)
         {
-            addListItem((*it));
+            if (m_lastEditedItemId && (*it)->id()==m_lastEditedItemId)
+            {
+                m_lastEditedItemPtr = addListItem((*it));
+            }
+            else
+            {
+               addListItem((*it));
+            }
         }
+
+        if (m_lastEditedItemPtr)
+        {
+            m_serverList->setSelected(m_lastEditedItemPtr,true);
+            m_serverList->setCurrentItem(m_lastEditedItemPtr);
+        }
     }
 
     QListViewItem* ServerListDialog::addListItem(ServerGroupSettingsPtr serverGroup)
--- trunk/extragear/network/konversation/src/serverlistdialog.h #495163:495164
@@ -83,6 +83,9 @@
             QPushButton* m_addButton;
             QPushButton* m_editButton;
             QPushButton* m_delButton;
+
+            int m_lastEditedItemId;
+            QListViewItem* m_lastEditedItemPtr;
     };
 }
 #endif