[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    [Konversation] f2e95f6: Nicks Online is now a tabbed panel,
From:       Gary Cramblitt <garycramblitt () comcast ! net>
Date:       2010-07-01 13:27:17
Message-ID: 20100701132717.1D00DBB557A () projects ! kde ! org
[Download RAW message or body]

commit f2e95f6fba6214eed362ad993e80956ad789d865
Author: Gary Cramblitt <garycramblitt@comcast.net>
Date:   Tue Jan 13 20:47:46 2004 +0000

    Nicks Online is now a tabbed panel, rather than separate window.
    
    svn path=/trunk/kdeextragear-2/konversation/; revision=279467

diff --git a/ChangeLog b/ChangeLog
index 3ef970a..1fcbaab 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -18,6 +18,7 @@ Changes from 0.13 to 0.14
 - Added patch by Gary Cramblitt to select custom web browser command (thanks!)
 - When the server goes offline, now all associated tabs get crossed out
 - Added a multi line pasting editor
+- Nicks Online is now a tabbed panel, rather than separate window.
 
 Changes from 0.12 to 0.13
 - Added an option to hide hostmasks in channel nick lists
diff --git a/TODO b/TODO
index 25443eb..9ac1f72 100644
--- a/TODO
+++ b/TODO
@@ -70,5 +70,5 @@ Compute md5sum over DCCs and send / display the hash after transfer
 Import notify list from .ircrc
 Notify with more than 500 characters
 Stats for server lag, words per session per person / channel, quits etc.
-"Open Nicks online window on startup" option
-Make nicks online a panel, show stats like "last spoken" "last seen"
+"Open Nicks online panel on startup" option
+In Nicks Online panel, show stats like "last spoken" "last seen"
diff --git a/konversation/chatwindow.h b/konversation/chatwindow.h
index cd3f548..da502bf 100644
--- a/konversation/chatwindow.h
+++ b/konversation/chatwindow.h
@@ -51,7 +51,8 @@ class ChatWindow : public QVBox
       SNotice,
       ChannelList,
       Konsole,
-      UrlCatcher
+      UrlCatcher,
+      NicksOnline
     };
 
     void setServer(Server* newServer);
diff --git a/konversation/konversationapplication.cpp \
b/konversation/konversationapplication.cpp index 36700cf..c7bb321 100644
--- a/konversation/konversationapplication.cpp
+++ b/konversation/konversationapplication.cpp
@@ -191,8 +191,8 @@ void KonversationApplication::connectToAnotherServer(int id)
   connect(mainWindow,SIGNAL (startNotifyTimer(int)),newServer,SLOT \
(startNotifyTimer(int)) );  connect(mainWindow,SIGNAL (quitServer()),newServer,SLOT \
(quitServer()) );  
-  connect(newServer,SIGNAL (nicksNowOnline(Server*,const \
                QStringList&)),mainWindow,SLOT (setOnlineList(Server*,const \
                QStringList&)) );
-
+  connect(newServer,SIGNAL (nicksNowOnline(Server*,const \
QStringList&,bool)),mainWindow,SLOT (setOnlineList(Server*,const QStringList&,bool)) \
); +  
   connect(newServer,SIGNAL (deleted(Server*)),this,SLOT (removeServer(Server*)) );
   
   connect(newServer, SIGNAL(multiServerCommand(const QString&, const QString&)),
diff --git a/konversation/konversationmainwindow.cpp \
b/konversation/konversationmainwindow.cpp index c81f4e4..8de2d8f 100644
--- a/konversation/konversationmainwindow.cpp
+++ b/konversation/konversationmainwindow.cpp
@@ -71,7 +71,7 @@ KonversationMainWindow::KonversationMainWindow() : KMainWindow()
 
   dccTransferHandler=new DccTransferHandler(this);
 
-  nicksOnlineWindow=0;
+  nicksOnlinePanel=0;
 
   viewContainer=new LedTabWidget(this,"main_window_tab_widget");
   updateTabPlacement();
@@ -101,7 +101,7 @@ KonversationMainWindow::KonversationMainWindow() : KMainWindow()
 
   new KAction(i18n("Server List"), 0, 0, this, SLOT(openServerList()), \
actionCollection(), "open_server_list");  
-  new KAction(i18n("Watched Nicks Online"), 0, 0, this, \
SLOT(openNicksOnlineWindow()), actionCollection(), "open_nicksonline_window"); +  new \
KAction(i18n("Watched Nicks Online"), 0, 0, this, SLOT(openNicksOnlinePanel()), \
actionCollection(), "open_nicksonline_window");  new KAction(i18n("Open Logfile"), 0, \
0, this, SLOT(openLogfile()), actionCollection(), "open_logfile");  
   new KAction(i18n("Channel List"), 0, 0, this, SLOT(openChannelList()), \
actionCollection(), "open_channel_list"); @@ -170,8 +170,6 @@ \
KonversationMainWindow::KonversationMainWindow() : KMainWindow()  
 KonversationMainWindow::~KonversationMainWindow()
 {
-  if(nicksOnlineWindow) nicksOnlineWindow->closeButton();
-
   deleteDccPanel();
   if(dccTransferHandler) delete dccTransferHandler;
 }
@@ -303,6 +301,7 @@ void KonversationMainWindow::closeView(QWidget* viewToClose)
     else if(viewType==ChatWindow::DccPanel)     closeDccPanel();
     else if(viewType==ChatWindow::Konsole)      closeKonsolePanel(view);
     else if(viewType==ChatWindow::UrlCatcher)   closeUrlCatcher();
+    else if(viewType==ChatWindow::NicksOnline)  closeNicksOnlinePanel();
 
 /*
     else if(viewType==ChatWindow::Notice);
@@ -600,30 +599,30 @@ void KonversationMainWindow::quitProgram()
   close();
 }
 
-void KonversationMainWindow::openNicksOnlineWindow()
+void KonversationMainWindow::openNicksOnlinePanel()
 {
-  if(!nicksOnlineWindow)
+  if(!nicksOnlinePanel)
   {
-    nicksOnlineWindow=new \
                NicksOnline(KonversationApplication::preferences.getNicksOnlineSize());
                
-
-    connect(nicksOnlineWindow,SIGNAL (editClicked()),this,SLOT (openNotify()) );
-    connect(nicksOnlineWindow,SIGNAL (closeClicked(QSize)),this,SLOT \
(closeNicksOnlineWindow(QSize)) ); +    
+    nicksOnlinePanel=new NicksOnline(getViewContainer());
+    addView(nicksOnlinePanel, 2, i18n("Nicks Online"), true);
 
-    connect(nicksOnlineWindow,SIGNAL (doubleClicked(const QString&,const \
QString&)),this,SLOT (notifyAction(const QString&,const QString&)) ); +    \
connect(nicksOnlinePanel,SIGNAL (editClicked()),this,SLOT (openNotify()) ); +    \
connect(nicksOnlinePanel,SIGNAL (closeClicked(QSize)),this,SLOT \
(closeNicksOnlinePanel()) );  
-    connect(this,SIGNAL (nicksNowOnline(const QString&,const \
QStringList&)),nicksOnlineWindow,SLOT (setOnlineList(const QString&,const \
QStringList&)) ); +    connect(nicksOnlinePanel,SIGNAL (doubleClicked(const \
QString&,const QString&)),this,SLOT (notifyAction(const QString&,const QString&)) );  \
                
-    nicksOnlineWindow->show();
+    connect(this,SIGNAL (nicksNowOnline(const QString&,const \
QStringList&,bool)),nicksOnlinePanel,SLOT (setOnlineList(const QString&,const \
QStringList&,bool)) );  }
 }
 
-void KonversationMainWindow::closeNicksOnlineWindow(QSize newSize)
+void KonversationMainWindow::closeNicksOnlinePanel()
 {
-  KonversationApplication::preferences.setNicksOnlineSize(newSize);
-  emit prefsChanged();
-
-  delete nicksOnlineWindow;
-  nicksOnlineWindow=0;
+  if ( nicksOnlinePanel )
+  {
+    delete nicksOnlinePanel;
+    nicksOnlinePanel=0;
+  }
 }
 
 void KonversationMainWindow::openServerList()
@@ -637,9 +636,10 @@ void KonversationMainWindow::openNotify()
 }
 
 // TODO: Let an own class handle notify things
-void KonversationMainWindow::setOnlineList(Server* notifyServer,const QStringList& \
list) +void KonversationMainWindow::setOnlineList(Server* notifyServer,const \
QStringList& list, bool changed)  {
-  emit nicksNowOnline(notifyServer->getServerName(),list);
+  emit nicksNowOnline(notifyServer->getServerName(),list,changed);
+  if (changed && nicksOnlinePanel) newText(nicksOnlinePanel, QString::null, true);
 }
 
 void KonversationMainWindow::notifyAction(const QString& serverName,const QString& \
                nick)
diff --git a/konversation/konversationmainwindow.h \
b/konversation/konversationmainwindow.h index d4ce636..ff67087 100644
--- a/konversation/konversationmainwindow.h
+++ b/konversation/konversationmainwindow.h
@@ -72,7 +72,7 @@ class KonversationMainWindow : public KMainWindow
     void openPrefsDialog();
     void openPrefsDialog(Preferences::Pages page);
     void quitServer();
-    void nicksNowOnline(const QString& serverName,const QStringList& list);
+    void nicksNowOnline(const QString& serverName,const QStringList& list,bool \
changed);  void closeTab(int id);
     void startNotification(QWidget*);
     void endNotification(QWidget*);
@@ -87,7 +87,7 @@ class KonversationMainWindow : public KMainWindow
     void updateLag(Server* lagServer,int msec);
     void tooLongLag(Server* lagServer,int msec);
     void channelPrefsChanged();
-    void setOnlineList(Server* notifyServer,const QStringList& list);
+    void setOnlineList(Server* notifyServer,const QStringList& list, bool changed);
     void updateTrayIcon();
     void serverQuit(Server* server);
     void setShowTabBarCloseButton(bool s);
@@ -99,8 +99,8 @@ class KonversationMainWindow : public KMainWindow
     void openChannelList();
     void openNotify();
     void openLogfile();
-    void openNicksOnlineWindow();
-    void closeNicksOnlineWindow(QSize newSize);
+    void openNicksOnlinePanel();
+    void closeNicksOnlinePanel();
     // it seems that moc does not honor #ifs in compile so we create an
     // empty slot in our .cpp file rather than #if this slot out
     void openNotifications();
@@ -163,7 +163,7 @@ class KonversationMainWindow : public KMainWindow
     KToggleAction* showStatusBarAction;
     KToggleAction* showMenuBarAction;
 
-    NicksOnline* nicksOnlineWindow;
+    NicksOnline* nicksOnlinePanel;
     QStringList nicksOnlineList;
 
     DccTransferHandler* dccTransferHandler;
diff --git a/konversation/nicksonline.cpp b/konversation/nicksonline.cpp
index 435de94..662a33a 100644
--- a/konversation/nicksonline.cpp
+++ b/konversation/nicksonline.cpp
@@ -24,10 +24,11 @@
 
 #include "nicksonline.h"
 
-NicksOnline::NicksOnline(const QSize& newSize)
+NicksOnline::NicksOnline(QWidget* parent): ChatWindow(parent)
 {  
-  setCaption(i18n("Watched Nicks Online"));
-  
+  setName(i18n("Watched Nicks Online"));
+  setType(ChatWindow::NicksOnline);
+
   nickListView=new KListView(this);
   
   nickListView->addColumn(i18n("Nickname"));
@@ -46,8 +47,6 @@ NicksOnline::NicksOnline(const QSize& newSize)
   connect(editButton,SIGNAL (clicked()),SIGNAL (editClicked()) );
   connect(closeButton,SIGNAL (clicked()),this,SLOT (closeButton()) );
   connect(nickListView,SIGNAL \
                (doubleClicked(QListViewItem*)),this,SLOT(processDoubleClick(QListViewItem*)));
                
-
-  resize(newSize);
 }
 
 NicksOnline::~NicksOnline()
@@ -55,19 +54,22 @@ NicksOnline::~NicksOnline()
   delete nickListView;
 }
 
-void NicksOnline::setOnlineList(const QString& serverName,const QStringList& list)
+void NicksOnline::setOnlineList(const QString& serverName,const QStringList& \
list,bool changed)  {
   QListViewItem* serverRoot=nickListView->findItem(serverName,0);
-  delete serverRoot;  
-
-  if(list.count())
+  // If server is not in our list, or if the list changed, then display the new \
list. +  if ( (serverRoot == 0) || changed)
   {
-    KListViewItem* newServerRoot=new KListViewItem(nickListView,serverName);
-    for(unsigned int i=list.count();i!=0;i--)
+    delete serverRoot;  
+    if(list.count())
     {
-      new KListViewItem(newServerRoot,list[i-1]);
+      KListViewItem* newServerRoot=new KListViewItem(nickListView,serverName);
+      for(unsigned int i=list.count();i!=0;i--)
+      {
+        new KListViewItem(newServerRoot,list[i-1]);
+      }
+      newServerRoot->setOpen(true);
     }
-    newServerRoot->setOpen(true);
   }
 }
 
@@ -89,4 +91,8 @@ void NicksOnline::processDoubleClick(QListViewItem* item)
     emit doubleClicked(item->parent()->text(0),item->text(0));
 }
 
+void NicksOnline::adjustFocus()
+{
+}
+
 #include "nicksonline.moc"
diff --git a/konversation/nicksonline.h b/konversation/nicksonline.h
index b1e024e..809feca 100644
--- a/konversation/nicksonline.h
+++ b/konversation/nicksonline.h
@@ -17,18 +17,20 @@
 
 #include <qvbox.h>
 
+#include "chatwindow.h"
+
 /*
   @author Dario Abatianni
 */
 
 class KListView;
 
-class NicksOnline : public QVBox
+class NicksOnline : public ChatWindow
 {
   Q_OBJECT
 
   public: 
-    NicksOnline(const QSize& newSize);
+    NicksOnline(QWidget* parent);
     ~NicksOnline();
 
   signals:
@@ -37,8 +39,9 @@ class NicksOnline : public QVBox
     void closeClicked(QSize size);
 
   public slots:
-    void setOnlineList(const QString& serverName,const QStringList& list);
+    void setOnlineList(const QString& serverName,const QStringList& list,bool \
changed);  void closeButton();
+    virtual void adjustFocus();
     
   protected slots:
     void processDoubleClick(QListViewItem* item);
diff --git a/konversation/server.cpp b/konversation/server.cpp
index 7b8b06e..9ea8171 100644
--- a/konversation/server.cpp
+++ b/konversation/server.cpp
@@ -184,7 +184,7 @@ Server::~Server()
 {
 
   // clear nicks online
-  emit nicksNowOnline(this,QStringList());
+  emit nicksNowOnline(this,QStringList(),true);
   // Make sure no signals get sent to a soon to be dying Server Window
   serverSocket.blockSignals(true);
   // Send out the last messages (usually the /QUIT)
@@ -399,7 +399,7 @@ void Server::broken(int state)
   kdDebug() << "Connection broken (Socket fd " << serverSocket.fd() << ") " << state \
<< "!" << endl;  
   // clear nicks online
-  emit nicksNowOnline(this,QStringList());
+  emit nicksNowOnline(this,QStringList(),true);
 
   // TODO: Close all queries and channels!
   //       Or at least make sure that all gets reconnected properly
@@ -504,12 +504,14 @@ void Server::notifyResponse(const QString& nicksOnline)
     QStringList nickList=QStringList::split(' ',nicksOnline);
     // Create a lower case nick list from the notification reply
     QStringList nickLowerList=QStringList::split(' ',nicksOnline.lower());
+    bool nicksOnlineChanged = false;
 
     // Did some new nicks appear in our notify?
     for(unsigned int index=0;index<nickLowerList.count();index++)
     {
       if(notifyLowerCache.find(nickLowerList[index])==notifyLowerCache.end())
       {
+        nicksOnlineChanged = true;
         getMainWindow()->appendToFrontmost(i18n("Notify"),i18n("%1 is online \
(%2).").arg(nickList[index]).arg(getServerName()),statusView);  
 #ifdef USE_KNOTIFY
@@ -524,6 +526,7 @@ void Server::notifyResponse(const QString& nicksOnline)
     {
       if(nickLowerList.find(notifyLowerCache[index])==nickLowerList.end())
       {
+        nicksOnlineChanged = true;
         getMainWindow()->appendToFrontmost(i18n("Notify"),i18n("%1 went offline. \
(%2)").arg(notifyCache[index]).arg(getServerName()),statusView);  
 #ifdef USE_KNOTIFY
@@ -535,7 +538,7 @@ void Server::notifyResponse(const QString& nicksOnline)
 
     // Finally copy the new ISON list with correct case to our notify cache
     notifyCache=nickList;
-    emit nicksNowOnline(this,nickList);
+    emit nicksNowOnline(this,nickList,nicksOnlineChanged);
   }
   // Next round
   startNotifyTimer();
diff --git a/konversation/server.h b/konversation/server.h
index 93ad169..357b750 100644
--- a/konversation/server.h
+++ b/konversation/server.h
@@ -137,7 +137,7 @@ class Server : public QObject
     void serverLag(Server* server,int msec); // will be connected to \
                KonversationMainWindow::updateLag()
     void tooLongLag(Server* server, int msec); // will be connected to \
KonversationMainWindow::updateLag()  void resetLag();
-    void nicksNowOnline(Server* server,const QStringList& list); // Will be emitted \
when new 303 came in +    void nicksNowOnline(Server* server,const QStringList& \
list,bool changed); // Will be emitted when new 303 came in  void addDccPanel(); // \
                will be connected to MainWindow::addDccPanel()
     void addKonsolePanel(); // will be connected to MainWindow::addKonsolePanel()
     void closeDccPanel(); // will be connected to MainWindow::closeDccPanel()


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic