[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: [Konversation] 10bae25: Add Kabc column to Nicks Online listview. Not
From: Gary Cramblitt <garycramblitt () comcast ! net>
Date: 2010-07-01 13:28:01
Message-ID: 20100701132801.44F6FBB5741 () projects ! kde ! org
[Download RAW message or body]
commit 10bae25f596259762163e4501aa7b81a93d76f80
Author: Gary Cramblitt <garycramblitt@comcast.net>
Date: Wed Aug 18 05:30:52 2004 +0000
Add Kabc column to Nicks Online listview. Not finished yet. User will be able \
to click this icon to edit addressbook entry for nick.
svn path=/trunk/kdeextragear-2/konversation/; revision=338761
diff --git a/konversation/nicksonline.cpp b/konversation/nicksonline.cpp
index 8963edd..249b90c 100644
--- a/konversation/nicksonline.cpp
+++ b/konversation/nicksonline.cpp
@@ -21,6 +21,7 @@
#include <klocale.h>
#include <kdialog.h>
#include <klistview.h>
+#include <kiconloader.h>
#include "nicksonline.h"
#include "server.h"
@@ -39,20 +40,22 @@ NicksOnline::NicksOnline(QWidget* parent): ChatWindow(parent)
setName(i18n("Watched Nicks Online"));
setType(ChatWindow::NicksOnline);
- nickListView=new KListView(this);
+ m_nickListView=new KListView(this);
// TODO: Need to derive from KListView and override sort() method in order to sort \
in // locale-aware order.
#ifdef USE_NICKINFO
- nickListView->addColumn(i18n("Server/Nickname/Channel"));
- nickListView->addColumn(i18n("Additional Information"));
- nickListView->setFullWidth(false);
- nickListView->setRootIsDecorated(true);
+ m_nickListView->addColumn(i18n("Server/Nickname/Channel"));
+ m_kabcIconSet = KGlobal::iconLoader()->loadIconSet("kaddressbook",KIcon::Small);
+ m_nickListView->addColumn(m_kabcIconSet, QString::null);
+ m_nickListView->addColumn(i18n("Additional Information"));
+ m_nickListView->setFullWidth(false);
+ m_nickListView->setRootIsDecorated(true);
#else
- nickListView->addColumn(i18n("Server/Nickname"));
- nickListView->setFullWidth(true);
- nickListView->setRootIsDecorated(false);
+ m_nickListView->addColumn(i18n("Server/Nickname"));
+ m_nickListView->setFullWidth(true);
+ m_nickListView->setRootIsDecorated(false);
#endif
#ifndef USE_MDI
@@ -67,26 +70,26 @@ NicksOnline::NicksOnline(QWidget* parent): ChatWindow(parent)
editButton->setSizePolicy(QSizePolicy(QSizePolicy::Fixed,QSizePolicy::Fixed));
connect(editButton,SIGNAL (clicked()),SIGNAL (editClicked()) );
- connect(nickListView,SIGNAL \
(doubleClicked(QListViewItem*)),this,SLOT(processDoubleClick(QListViewItem*))); + \
connect(m_nickListView,SIGNAL \
(doubleClicked(QListViewItem*)),this,SLOT(processDoubleClick(QListViewItem*)));
#ifdef USE_NICKINFO
// Display info for all currently-connected servers.
refreshAllServerOnlineLists();
// Connect and start refresh timer.
- timer = new QTimer(this, "nicksOnlineTimer");
- connect(timer, SIGNAL (timeout()), this, SLOT(timerFired()));
+ m_timer = new QTimer(this, "nicksOnlineTimer");
+ connect(m_timer, SIGNAL (timeout()), this, SLOT(timerFired()));
// TODO: User preference for refresh interval.
- timer->start(8000);
+ m_timer->start(8000);
#endif
}
NicksOnline::~NicksOnline()
{
#ifdef USE_NICKINFO
- timer->stop();
- delete timer;
+ m_timer->stop();
+ delete m_timer;
#endif
- delete nickListView;
+ delete m_nickListView;
}
// Returns the named child of parent item in KListView.
@@ -101,6 +104,35 @@ QListViewItem* NicksOnline::findItemChild(const QListViewItem* \
parent, const QSt return 0;
}
+// Return a string contained formatted additional information about a nick.
+#ifdef USE_NICKINFO
+QString NicksOnline::getNickAdditionalInfo(NickInfoPtr nickInfo)
+{
+ QString nickAdditionalInfo;
+ if (nickInfo->isAway())
+ {
+ nickAdditionalInfo = nickAdditionalInfo + i18n("Away");
+ if (!nickInfo->getAwayMessage().isEmpty())
+ nickAdditionalInfo = nickAdditionalInfo + "(" + nickInfo->getAwayMessage() + \
")"; + }
+ if (!nickInfo->getHostmask().isEmpty())
+ nickAdditionalInfo = nickAdditionalInfo + " " + nickInfo->getHostmask();
+ if (!nickInfo->getRealName().isEmpty())
+ nickAdditionalInfo = nickAdditionalInfo + " (" + nickInfo->getRealName() + ")";
+ if (!nickInfo->getNetServer().isEmpty())
+ {
+ nickAdditionalInfo = nickAdditionalInfo + " online via " + \
nickInfo->getNetServer(); + if (!nickInfo->getNetServerInfo().isEmpty())
+ nickAdditionalInfo = nickAdditionalInfo + " (" + nickInfo->getNetServerInfo() \
+ ")"; + }
+ if (!nickInfo->getOnlineSince().isNull())
+ nickAdditionalInfo = nickAdditionalInfo + " since " + \
nickInfo->getOnlineSince().toString(Qt::LocalDate); + return nickAdditionalInfo;
+}
+#else
+QString NicksOnline::getNickAdditionalInfo(NickInfoPtr /*nickInfo*/) { return \
QString::null; } +#endif
+
#ifdef USE_NICKINFO
void NicksOnline::updateServerOnlineList(Server* server, bool)
{
@@ -110,13 +142,13 @@ void NicksOnline::updateServerOnlineList(Server* server, bool)
QListViewItem* child;
QListViewItem* nextChild;
QString serverName = server->getServerName();
- QListViewItem* serverRoot = nickListView->findItem(serverName,0);
+ QListViewItem* serverRoot = \
m_nickListView->findItem(serverName,nlvcServerNickChannel); // If server is not in \
our list, or if the list changed, then display the new list. if ( true )
{
if (!serverRoot)
{
- serverRoot = new KListViewItem(nickListView,serverName);
+ serverRoot = new KListViewItem(m_nickListView,serverName);
newServerRoot = true;
}
// Get a green LED for flagging of joined channels.
@@ -127,30 +159,15 @@ void NicksOnline::updateServerOnlineList(Server* server, bool)
const NickInfoMap* nickInfoList = server->getNicksOnline();
NickInfoMap::ConstIterator itOnline;
NickInfoPtr nickInfo;
+ QListViewItem* nickRoot;
for ( itOnline = nickInfoList->begin(); itOnline != nickInfoList->end() ; \
++itOnline) {
QString lcNickName = itOnline.key();
nickInfo = itOnline.data();
nickname = nickInfo->getNickname();
// Construct additional information string for nick.
- QString nickAdditionalInfo;
- if (nickInfo->isAway())
- {
- nickAdditionalInfo = nickAdditionalInfo + i18n("Away");
- if (!nickInfo->getAwayMessage().isEmpty())
- nickAdditionalInfo = nickAdditionalInfo + "(" + nickInfo->getAwayMessage() \
+ ")";
- }
- if (!nickInfo->getHostmask().isEmpty())
- nickAdditionalInfo = nickAdditionalInfo + " " + nickInfo->getHostmask();
- if (!nickInfo->getRealName().isEmpty())
- nickAdditionalInfo = nickAdditionalInfo + " (" + nickInfo->getRealName() + \
")";
- if (!nickInfo->getNetServer().isEmpty())
- {
- nickAdditionalInfo = nickAdditionalInfo + " online via " + \
nickInfo->getNetServer();
- if (!nickInfo->getNetServerInfo().isEmpty())
- nickAdditionalInfo = nickAdditionalInfo + " (" + \
nickInfo->getNetServerInfo() + ")";
- }
- else
+ QString nickAdditionalInfo = getNickAdditionalInfo(nickInfo);
+ if (nickInfo->getNetServer().isEmpty())
{
// Request additional info on the nick, but only one at a time.
if (!whoisRequested)
@@ -159,12 +176,18 @@ void NicksOnline::updateServerOnlineList(Server* server, bool)
whoisRequested = true;
}
}
- if (!nickInfo->getOnlineSince().isNull())
- nickAdditionalInfo = nickAdditionalInfo + " since " + \
nickInfo->getOnlineSince().toString(Qt::LocalDate);
-
- QListViewItem* nickRoot = findItemChild(serverRoot, nickname);
+
+ nickRoot = findItemChild(serverRoot, nickname);
if (!nickRoot) nickRoot = new KListViewItem(serverRoot, nickname, \
nickAdditionalInfo);
- nickRoot->setText(1, nickAdditionalInfo);
+ nickRoot->setText(nlvcAdditionalInfo, nickAdditionalInfo);
+
+ // Set Kabc icon if the nick is associated with an addressbook entry.
+ if (!nickInfo->getAddressee().isEmpty())
+ nickRoot->setPixmap(nlvcKabc, m_kabcIconSet.pixmap(
+ QIconSet::Small, QIconSet::Normal, QIconSet::On));
+ else
+ nickRoot->setPixmap(nlvcKabc, m_kabcIconSet.pixmap(
+ QIconSet::Small, QIconSet::Disabled, QIconSet::Off));
QStringList channelList = server->getNickChannels(nickname);
for ( unsigned int index=0; index<channelList.count(); index++ )
@@ -180,15 +203,15 @@ void NicksOnline::updateServerOnlineList(Server* server, bool)
if (channelNick->isAdmin()) nickMode = nickMode + i18n(" Admin");
QListViewItem* channelItem = findItemChild(nickRoot, channelName);
if (!channelItem) channelItem = new KListViewItem(nickRoot, channelName, \
nickMode);
- channelItem->setText(1, nickMode);
+ channelItem->setText(nlvcAdditionalInfo, nickMode);
if (server->getJoinedChannelMembers(channelName) != 0)
{
- channelItem->setPixmap(0, joinedLed);
+ channelItem->setPixmap(nlvcServerNickChannel, joinedLed);
}
else
{
- channelItem->setPixmap(0, 0);
+ channelItem->setPixmap(nlvcServerNickChannel, 0);
}
}
// Remove channel if nick no longer in it.
@@ -196,7 +219,8 @@ void NicksOnline::updateServerOnlineList(Server* server, bool)
while (child)
{
nextChild = child->nextSibling();
- if (channelList.find(child->text(0)) == channelList.end()) delete child;
+ if (channelList.find(child->text(nlvcServerNickChannel)) == \
channelList.end()) + delete child;
child = nextChild;
}
}
@@ -206,8 +230,9 @@ void NicksOnline::updateServerOnlineList(Server* server, bool)
while (child)
{
nextChild = child->nextSibling();
- if (!nickInfoList->contains(child->text(0).lower()) && (child->text(0) != \
i18nOffline))
- delete child;
+ if (!nickInfoList->contains(child->text(nlvcServerNickChannel).lower()) &&
+ (child->text(nlvcServerNickChannel) != i18nOffline))
+ delete child;
child = nextChild;
}
// List offline nicknames.
@@ -219,23 +244,34 @@ void NicksOnline::updateServerOnlineList(Server* server, bool)
{
nickInfo = itOffline.data();
nickname = nickInfo->getNickname();
- if (!findItemChild(offlineRoot, nickname))
+ nickRoot = findItemChild(offlineRoot, nickname);
+ if (!nickRoot)
{
- new KListViewItem(offlineRoot, nickname);
+ nickRoot = new KListViewItem(offlineRoot, nickname);
}
+ QString nickAdditionalInfo = getNickAdditionalInfo(nickInfo);
+ nickRoot->setText(nlvcAdditionalInfo, nickAdditionalInfo);
+ // Set Kabc icon if the nick is associated with an addressbook entry.
+ if (!nickInfo->getAddressee().isEmpty())
+ nickRoot->setPixmap(nlvcKabc, m_kabcIconSet.pixmap(
+ QIconSet::Small, QIconSet::Normal, QIconSet::On));
+ else
+ nickRoot->setPixmap(nlvcKabc, m_kabcIconSet.pixmap(
+ QIconSet::Small, QIconSet::Disabled, QIconSet::Off));
}
// Remove nick from list if no longer in offline list.
child = offlineRoot->firstChild();
while (child)
{
nextChild = child->nextSibling();
- if (!nickInfoList->contains(child->text(0).lower())) delete child;
+ if (!nickInfoList->contains(child->text(nlvcServerNickChannel).lower())) \
delete child; child = nextChild;
}
// Expand server if newly added to list.
if (newServerRoot) serverRoot->setOpen(true);
- nickListView->adjustColumn(0);
- nickListView->adjustColumn(1);
+ m_nickListView->adjustColumn(nlvcServerNickChannel);
+ m_nickListView->adjustColumn(nlvcKabc);
+ m_nickListView->adjustColumn(nlvcAdditionalInfo);
}
}
#else
@@ -253,7 +289,7 @@ void NicksOnline::refreshAllServerOnlineLists()
updateServerOnlineList(server, true);
}
// Remove servers no longer connected.
- QListViewItem* child = nickListView->firstChild();
+ QListViewItem* child = m_nickListView->firstChild();
while (child)
{
QListViewItem* nextChild = child->nextSibling();
@@ -278,14 +314,14 @@ void NicksOnline::setOnlineList(const QString& serverName,const \
QStringList&,boo #else
void NicksOnline::setOnlineList(const QString& serverName,const QStringList& \
list,bool changed) {
- QListViewItem* serverRoot=nickListView->findItem(serverName,0);
+ QListViewItem* serverRoot=m_nickListView->findItem(serverName,0);
// If server is not in our list, or if the list changed, then display the new \
list. if ( (serverRoot == 0) || changed)
{
delete serverRoot;
if(list.count())
{
- KListViewItem* newServerRoot=new KListViewItem(nickListView,serverName);
+ KListViewItem* newServerRoot=new KListViewItem(m_nickListView,serverName);
for(unsigned int i=list.count();i!=0;i--)
{
new KListViewItem(newServerRoot,list[i-1]);
diff --git a/konversation/nicksonline.h b/konversation/nicksonline.h
index 1f1d811..1f76cfe 100644
--- a/konversation/nicksonline.h
+++ b/konversation/nicksonline.h
@@ -16,7 +16,9 @@
#define NICKSONLINE_H
#include <qvbox.h>
+#include <qiconset.h>
+#include "nickinfo.h"
#include "chatwindow.h"
/*
@@ -30,6 +32,13 @@ class NicksOnline : public ChatWindow
Q_OBJECT
public:
+ // Columns of the NickListView when using NickInfo.
+ enum NickListViewColumn {
+ nlvcServerNickChannel = 0,
+ nlvcKabc = 1,
+ nlvcAdditionalInfo = 2
+ };
+
#ifdef USE_MDI
NicksOnline(QString caption);
#else
@@ -52,14 +61,16 @@ class NicksOnline : public ChatWindow
protected:
void updateServerOnlineList(Server* server, bool changed);
void refreshAllServerOnlineLists();
+ QString getNickAdditionalInfo(NickInfoPtr nickInfo);
#ifdef USE_MDI
virtual void closeYourself(ChatWindow*);
#endif
// Returns the named child of parent item in KListView.
QListViewItem* findItemChild(const QListViewItem* parent, const QString& name);
- KListView* nickListView;
- QTimer* timer;
+ KListView* m_nickListView;
+ QTimer* m_timer;
+ QIconSet m_kabcIconSet;
};
#endif
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic