--- a/Quail-redux.pro Thu Aug 29 14:23:23 2013 +0100
+++ b/Quail-redux.pro Thu Aug 29 15:12:20 2013 +0100
@@ -56,7 +56,8 @@
- src/QuailStatusSelector.h
+ src/QuailStatusSelector.h \ @@ -84,7 +85,8 @@
src/QuailConvDisplay.cpp \
- src/QuailStatusSelector.cpp
+ src/QuailStatusSelector.cpp \ --- a/TODO.txt Thu Aug 29 14:23:23 2013 +0100
+++ b/TODO.txt Thu Aug 29 15:12:20 2013 +0100
@@ -3,7 +3,6 @@
* Use Aduim's Message Styles for the conversation window
-* Buddy status icons showing
* Formatting toolbar on the conversation window
@@ -50,3 +49,4 @@
* Conversation text entry
* Remember group expanded state
* Enable double click to open a chat
+* Buddy status icons showing --- a/src/QuailBListWindow.cpp Thu Aug 29 14:23:23 2013 +0100
+++ b/src/QuailBListWindow.cpp Thu Aug 29 15:12:20 2013 +0100
@@ -21,6 +21,7 @@
#include "QuailAccountsWindow.h"
#include "QuailBListWindow.h"
+#include "QuailBlistItem.h" #include "QuailBuddyList.h"
#include "QuailConvButton.h"
#include "QuailConvWindow.h"
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/QuailBlistItem.cpp Thu Aug 29 15:12:20 2013 +0100
@@ -0,0 +1,488 @@
+#include "QuailBlistItem.h" +#include "QuailImageUtils.h" +#include "QuailProtocolUtils.h" +QQuailBListItem::QQuailBListItem(QTreeWidget *parent, PurpleBlistNode *node) + : QTreeWidgetItem(parent), node(node), dirty(true) + qDebug() << "QQuailBListItem::QQuailBListItem::Added to TreeWidget"; +QQuailBListItem::QQuailBListItem(QTreeWidgetItem *parent, PurpleBlistNode *node) + : QTreeWidgetItem(parent), node(node), dirty(true) + qDebug() << "QQuailBListItem::QQuailBListItem::Added to TreeWidgetItem"; +QQuailBListItem::~QQuailBListItem() +QQuailBListItem::getBlistNode() const +QQuailBListItem::updateInfo() + qDebug() << "QQuailBListItem::updateInfo"; + if (PURPLE_BLIST_NODE_IS_CONTACT(node)) + qDebug() << "QQuailBListItem::updateInfo.Contact"; + PurpleContact *contact = (PurpleContact *)node; + PurpleBuddy *buddy = purple_contact_get_priority_buddy(contact); + PurplePresence *presence = purple_buddy_get_presence(buddy); + qDebug() << "QQuailBListItem::updateInfo.Contact.1"; + setIcon(0, QIcon(QPixmap(":/data/images/logo.png"))); + qDebug() << "QQuailBListItem::updateInfo.Contact.2"; +// text += QString("%1%").arg(buddy->evil); + if (purple_prefs_get_bool("/quail/blist/show_idle_times")) + if (purple_presence_is_idle(presence)) + idle_secs = purple_presence_get_idle_time(presence); + tmp = purple_str_seconds_to_string(time(NULL) - idle_secs); + //purple_notify_user_info_add_pair(user_info, tr("Idle"), tmp); + ihrs = (t - idle_secs) / 3600; + imin = ((t - idle_secs) / 60) % 60; + idle = QString("(%1:%2)").arg(ihrs).arg(imin, 2); + idle = QString("(%1)").arg(imin); + qDebug() << "QQuailBListItem::updateInfo.Contact.3"; + QPixmap statusIcon = QQuailBListItem::getBuddyStatusIcon( + (PurpleBlistNode *)buddy); + if (statusIcon.size().width() > 0) { + setIcon(1, statusIcon); + qDebug() << "QQuailBListItem::updateInfo.Contact.3a" << statusIcon.size().width(); + qDebug() << "QQuailBListItem::updateInfo.Contact.3b"; + //setIcon(2, QImage::fromData(((PurpleBuddyIcon*)purple_buddy_get_icon(buddy)))); + //qDebug() << "QQuailBListItem::updateInfo.Contact.1:" << buddy->server_alias; + setText(1, getAlias(buddy)); + //setText(1, purple_get_buddy_alias(buddy)); + else if (PURPLE_BLIST_NODE_IS_BUDDY(node)) + qDebug() << "QQuailBListItem::updateInfo.Buddy"; + PurpleBuddy *buddy = (PurpleBuddy *)node; + PurplePresence *presence = purple_buddy_get_presence(buddy); + //text += QString("%1%").arg(buddy->evil); + if (purple_prefs_get_bool("/quail/blist/show_idle_times")) + if (purple_presence_is_idle(presence)) + idle_secs = purple_presence_get_idle_time(presence); + //tmp = purple_str_seconds_to_string(time(NULL) - idle_secs); + //purple_notify_user_info_add_pair(user_info, tr("Idle"), tmp); + ihrs = (t - idle_secs) / 3600; + imin = ((t - idle_secs) / 60) % 60; + idle = QString("(%1:%2)").arg(ihrs).arg(imin, 2); + idle = QString("(%1)").arg(imin); + qDebug() << "QQuailBListItem::updateInfo.Buddy.1" << buddy->server_alias; + setIcon(1, QIcon(QQuailBListItem::getBuddyStatusIcon(node))); + setText(1, getAlias(buddy)); + //setIcon(2, purple_buddy_get_icon(buddy)); + else if (PURPLE_BLIST_NODE_IS_CHAT(node)) + qDebug() << "QQuailBListItem::updateInfo.Chat"; + PurpleChat *chat = (PurpleChat *)node; + setIcon(1, QIcon(QQuailProtocolUtils::getProtocolIcon(chat->account))); + setText(1, chat->alias); + else if (PURPLE_BLIST_NODE_IS_GROUP(node)) + qDebug() << "QQuailBListItem::updateInfo.Group"; + PurpleGroup *group = (PurpleGroup *)node; + setText(1, group->name); +QQuailBListItem::getAlias(PurpleBuddy *buddy) + if(!QString(buddy->alias).isEmpty()) + return QString(buddy->alias); + else if(!QString(buddy->server_alias).isEmpty()) + return QString(buddy->server_alias); + return QString(buddy->name); +QQuailBListItem::sizeHint ( int column ) const + qDebug() << "QQuailBListItem::sizeHint"; + if (column == 0 || column == 2) +//QQuailBListItem::paintBuddyInfo(QPainter *p, const QPalette &cg, int column, +// int width, int align, int lmarg, int itMarg) +// qDebug() << "QQuailBListItem::paintBuddyInfo"; +// PurpleContact *contact = NULL; +// if (PURPLE_BLIST_NODE_IS_BUDDY(node)) +// buddy = (PurpleBuddy *)node; +// contact = (PurpleContact *)node; +// buddy = purple_contact_get_priority_buddy(contact); +// if (purple_prefs_get_bool("/quail/blist/show_large_icons")) +// PurplePlugin *prpl = NULL; +// PurplePluginProtocolInfo *prplInfo = NULL; +// QRect topRect, bottomRect; +// prpl = purple_plugins_find_with_id( +// purple_account_get_protocol_id(buddy->account)); +// prplInfo = PURPLE_PLUGIN_PROTOCOL_INFO(prpl); +// if (prpl != NULL && prplInfo->status_text != NULL && +// purple_account_get_connection(buddy->account) != NULL) +// char *tmp = prplInfo->status_text(buddy); +// g_strdelimit(tmp, "\n", ' '); +// statusText = QString(tmp) + " "; +// purple_prefs_get_bool("/quail/blist/show_idle_times")) +//// ihrs = (t - buddy->idle) / 3600; +//// imin = ((t - buddy->idle) / 60) % 60; +//// idleTime = tr("Idle (%1h%2m) ").args( ihrs, imin); +//// idleTime = tr("Idle (%1m) ").arg(imin); +//// if (!isExpanded() && buddy->evil > 0 && +//// purple_prefs_get_bool("/quail/blist/show_warning_levels")) +//// warning = tr("Warned (%1%) ").arg(buddy->evil); +// if (!PURPLE_BUDDY_IS_ONLINE(buddy) && statusText.isEmpty()) +// statusText = QObject::tr("Offline "); +// if (contact != NULL && !isExpanded() && contact->alias != NULL) +// topText = contact->alias; +// topText = purple_contact_get_alias(contact); +// bottomText = statusText + idleTime + warning; +// /* Get the top rect info. */ +//// topRect = p->boundingRect(lmarg, 0, width - lmarg - itMarg, +//// height(), align | AlignVCenter, +//// if (!bottomText.isEmpty()) +//// bottomRect = p->boundingRect(lmarg, 0, +//// width - lmarg - itMarg, +//// align | AlignVCenter, +//// textY1 = (height() - topRect.height() - +//// bottomRect.height() - 2) / 2; +//// textY2 = textY1 + topRect.height() + 2; +//// if (buddy->idle > 0 && +//// purple_prefs_get_bool("/quail/blist/dim_idle_buddies")) +//// p->setPen(cg.dark()); +//// p->drawText(lmarg, textY1, width - lmarg - itMarg, height(), +//// p->setPen(cg.dark()); +//// p->drawText(lmarg, textY2, width - lmarg - itMarg, height(), +//// align, bottomText); +//// if (buddy->idle > 0 && +//// purple_prefs_get_bool("/quail/blist/dim_idle_buddies")) +//// _cg.setColor(QPalette::Text, cg.dark()); +//// QTreeWidgetItem::paintCell(p, _cg, column, width, align); +//// if (buddy->idle > 0 && +//// purple_prefs_get_bool("/quail/blist/dim_idle_buddies")) +//// _cg.setColor(QPalette::Text, cg.dark()); +//// QTreeWidgetItem::paintCell(p, _cg, column, width, align); +//QQuailBListItem::paintGroupInfo(QPainter *p, const QPalette &, int column, +// int width, int align, int lmarg, int itMarg) +// qDebug() << "QQuailBListItem::paintGroupInfo"; +// PurpleGroup *group = (PurpleGroup *)getBlistNode(); +// QString groupName, detail; +//// QFont f = p->font(); +// groupName = group->name; +// if (purple_prefs_get_bool("/quail/blist/show_group_count")) +// detail = QString("(%1/%2)").arg( +// purple_blist_get_group_online_count(group)).arg( +// purple_blist_get_group_size(group, FALSE)); +//// p->drawText(lmarg, 0, width - lmarg - itMarg, height(), +//// align | AlignVCenter, groupName); +//// QRect r = p->boundingRect(lmarg, 0, width - lmarg - itMarg, +//// align | AlignVCenter, groupName); +//// p->drawText(lmarg + r.right(), 0, width - lmarg - itMarg, height(), +//// align | AlignVCenter, detail); +QQuailBListItem::getBuddyStatusIcon(PurpleBlistNode *node) + qDebug() << "QQuailBListItem::getBuddyStatusIcon"; + QQuailBListItem *qnode = (QQuailBListItem*)node->ui_data; + QQuailBListItem *qbuddynode = NULL; + PurpleBuddy *buddy = NULL; + PurpleChat *chat = NULL; + if(PURPLE_BLIST_NODE_IS_CONTACT(node)) { + if(!qnode->isExpanded()) { + buddy = purple_contact_get_priority_buddy((PurpleContact*)node); + qbuddynode = (QQuailBListItem*)((PurpleBlistNode*)buddy)->ui_data; + } else if(PURPLE_BLIST_NODE_IS_BUDDY(node)) { + buddy = (PurpleBuddy*)node; + qbuddynode = (QQuailBListItem*)node->ui_data; + } else if(PURPLE_BLIST_NODE_IS_CHAT(node)) { + chat = (PurpleChat*)node; + qDebug() << "QQuailBListItem::getBuddyStatusIcon.1"; + PurpleAccount *account; + account = buddy->account; + account = chat->account; + prpl = purple_find_prpl(purple_account_get_protocol_id(account)); + qDebug() << "QQuailBListItem::getBuddyStatusIcon.2"; + p = purple_buddy_get_presence(buddy); + trans = purple_presence_is_idle(p); + if (PURPLE_BUDDY_IS_ONLINE(buddy) && qbuddynode && qbuddynode->recentSignedOnOff()) + returnImage = QPixmap(":/data/images/status/log-in.png"); + else if (qbuddynode && qbuddynode->recentSignedOnOff()) + returnImage = QPixmap(":/data/images/status/log-out.png"); + else if (purple_presence_is_status_primitive_active(p, PURPLE_STATUS_UNAVAILABLE)) + returnImage = QQuailImageUtils::greyPixmap( + QPixmap(":/data/images/status/busy.png"), + returnImage = QPixmap(":/data/images/status/busy.png"); + else if (purple_presence_is_status_primitive_active(p, PURPLE_STATUS_AWAY)) + returnImage = QQuailImageUtils::greyPixmap( + QPixmap(":/data/images/status/away.png"), + returnImage = QPixmap(":/data/images/status/away.png"); + else if (purple_presence_is_status_primitive_active(p, PURPLE_STATUS_EXTENDED_AWAY)) + returnImage = QQuailImageUtils::greyPixmap( + QPixmap(":/data/images/status/extended-away.png"), + returnImage = QPixmap(":/data/images/status/extended-away.png"); + else if (purple_presence_is_status_primitive_active(p, PURPLE_STATUS_OFFLINE)) + returnImage = QPixmap(":/data/images/status/offline.png"); + returnImage = QQuailImageUtils::greyPixmap( + QPixmap(":/data/images/status/available.png"), + else if (purple_presence_is_status_primitive_active(p, PURPLE_STATUS_INVISIBLE)) + returnImage = QPixmap(":/data/images/status/invisible.png"); + returnImage = QPixmap(":/data/images/status/available.png"); + returnImage = QPixmap(":/data/images/status/chat.png"); + returnImage = QPixmap(":/data/images/status/person.png"); --- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/QuailBlistItem.h Thu Aug 29 15:12:20 2013 +0100
@@ -0,0 +1,45 @@
+#ifndef QUAILBLISTITEM_H +#define QUAILBLISTITEM_H +#include <QTreeWidgetItem> +#include <libpurple/blist.h> +class QQuailBListItem : public QTreeWidgetItem + QQuailBListItem(QTreeWidget *parent, PurpleBlistNode *node); + QQuailBListItem(QTreeWidgetItem *parent, PurpleBlistNode *node); + static QPixmap getBuddyStatusIcon(PurpleBlistNode *node); +// static QPixmap getBuddyStatusIcon2(PurpleBlistNode *node); + PurpleBlistNode *getBlistNode() const; + //TODO: Find out how to calculate this + bool recentSignedOnOff() + /*reimp*/QSize sizeHint ( int column ) const; +// void paintBuddyInfo(QPainter *p, const QPalette &cg, int column, +// int width, int align, int lmarg, int itMarg); +// void paintGroupInfo(QPainter *p, const QPalette &cg, int column, +// int width, int align, int lmarg, int itMarg); + QString topText, bottomText; + QString getAlias(PurpleBuddy *buddy); +#endif // QUAILBLISTITEM_H --- a/src/QuailBuddyList.cpp Thu Aug 29 14:23:23 2013 +0100
+++ b/src/QuailBuddyList.cpp Thu Aug 29 15:12:20 2013 +0100
@@ -23,6 +23,7 @@
#include "QuailBuddyList.h"
#include "QuailProtocolUtils.h"
#include "QuailImageUtils.h"
+#include "QuailBlistItem.h" #include <libpurple/debug.h>
#include <libpurple/prefs.h>
@@ -37,589 +38,112 @@
#define BUDDY_ICON_SIZE 20
-/**************************************************************************
- **************************************************************************/
-QQuailBListItem::QQuailBListItem(QTreeWidget *parent, PurpleBlistNode *node)
- : QTreeWidgetItem(parent), node(node), dirty(true)
- qDebug() << "QQuailBListItem::QQuailBListItem::Added to TreeWidget";
-QQuailBListItem::QQuailBListItem(QTreeWidgetItem *parent, PurpleBlistNode *node)
- : QTreeWidgetItem(parent), node(node), dirty(true)
- qDebug() << "QQuailBListItem::QQuailBListItem::Added to TreeWidgetItem";
-QQuailBListItem::~QQuailBListItem()
-QQuailBListItem::getBlistNode() const
-QQuailBListItem::updateInfo()
- qDebug() << "QQuailBListItem::updateInfo";
- if (PURPLE_BLIST_NODE_IS_CONTACT(node))
- qDebug() << "QQuailBListItem::updateInfo.Contact";
- PurpleContact *contact = (PurpleContact *)node;
- PurpleBuddy *buddy = purple_contact_get_priority_buddy(contact);
- PurplePresence *presence = purple_buddy_get_presence(buddy);
- qDebug() << "QQuailBListItem::updateInfo.Contact.1";
- setIcon(0, QIcon(QPixmap(":/data/images/logo.png")));
- qDebug() << "QQuailBListItem::updateInfo.Contact.2";
-// text += QString("%1%").arg(buddy->evil);
- if (purple_prefs_get_bool("/quail/blist/show_idle_times"))
- if (purple_presence_is_idle(presence))
- idle_secs = purple_presence_get_idle_time(presence);
- tmp = purple_str_seconds_to_string(time(NULL) - idle_secs);
- //purple_notify_user_info_add_pair(user_info, tr("Idle"), tmp);
- ihrs = (t - idle_secs) / 3600;
- imin = ((t - idle_secs) / 60) % 60;
- idle = QString("(%1:%2)").arg(ihrs).arg(imin, 2);
- idle = QString("(%1)").arg(imin);
- qDebug() << "QQuailBListItem::updateInfo.Contact.3";
- setIcon(0, QQuailBuddyList::getBuddyStatusIcon((PurpleBlistNode *)buddy));
- //setIcon(2, QImage::fromData(((PurpleBuddyIcon*)purple_buddy_get_icon(buddy))));
- //qDebug() << "QQuailBListItem::updateInfo.Contact.1:" << buddy->server_alias;
- setText(1, getAlias(buddy));
- //setText(1, purple_get_buddy_alias(buddy));
- else if (PURPLE_BLIST_NODE_IS_BUDDY(node))
- qDebug() << "QQuailBListItem::updateInfo.Buddy";
- PurpleBuddy *buddy = (PurpleBuddy *)node;
- PurplePresence *presence = purple_buddy_get_presence(buddy);
- //text += QString("%1%").arg(buddy->evil);
- if (purple_prefs_get_bool("/quail/blist/show_idle_times"))
- if (purple_presence_is_idle(presence))
- idle_secs = purple_presence_get_idle_time(presence);
- //tmp = purple_str_seconds_to_string(time(NULL) - idle_secs);
- //purple_notify_user_info_add_pair(user_info, tr("Idle"), tmp);
- ihrs = (t - idle_secs) / 3600;
- imin = ((t - idle_secs) / 60) % 60;
- idle = QString("(%1:%2)").arg(ihrs).arg(imin, 2);
- idle = QString("(%1)").arg(imin);
- qDebug() << "QQuailBListItem::updateInfo.Buddy.1" << buddy->server_alias;
- setIcon(0, QIcon(QQuailBuddyList::getBuddyStatusIcon(node)));
- setText(1, getAlias(buddy));
- //setIcon(2, purple_buddy_get_icon(buddy));
- else if (PURPLE_BLIST_NODE_IS_CHAT(node))
- qDebug() << "QQuailBListItem::updateInfo.Chat";
- PurpleChat *chat = (PurpleChat *)node;
- setIcon(0, QIcon(QQuailProtocolUtils::getProtocolIcon(chat->account)));
- setText(1, chat->alias);
- else if (PURPLE_BLIST_NODE_IS_GROUP(node))
- qDebug() << "QQuailBListItem::updateInfo.Group";
- PurpleGroup *group = (PurpleGroup *)node;
- setText(1, group->name);
-QQuailBListItem::getAlias(PurpleBuddy *buddy)
- if(!QString(buddy->alias).isEmpty())
- return QString(buddy->alias);
- else if(!QString(buddy->server_alias).isEmpty())
- return QString(buddy->server_alias);
- return QString(buddy->name);
-QQuailBListItem::sizeHint ( int column ) const
- qDebug() << "QQuailBListItem::sizeHint";
- if (column == 0 || column == 2)
-//QQuailBListItem::paintBuddyInfo(QPainter *p, const QPalette &cg, int column,
-// int width, int align, int lmarg, int itMarg)
-// qDebug() << "QQuailBListItem::paintBuddyInfo";
-// PurpleContact *contact = NULL;
-// if (PURPLE_BLIST_NODE_IS_BUDDY(node))
-// buddy = (PurpleBuddy *)node;
-// contact = (PurpleContact *)node;
-// buddy = purple_contact_get_priority_buddy(contact);
-// if (purple_prefs_get_bool("/quail/blist/show_large_icons"))
-// PurplePlugin *prpl = NULL;
-// PurplePluginProtocolInfo *prplInfo = NULL;
-// QRect topRect, bottomRect;
-// prpl = purple_plugins_find_with_id(
-// purple_account_get_protocol_id(buddy->account));
-// prplInfo = PURPLE_PLUGIN_PROTOCOL_INFO(prpl);
-// if (prpl != NULL && prplInfo->status_text != NULL &&
-// purple_account_get_connection(buddy->account) != NULL)
-// char *tmp = prplInfo->status_text(buddy);
-// g_strdelimit(tmp, "\n", ' ');
-// statusText = QString(tmp) + " ";
-// purple_prefs_get_bool("/quail/blist/show_idle_times"))
-//// ihrs = (t - buddy->idle) / 3600;
-//// imin = ((t - buddy->idle) / 60) % 60;
-//// idleTime = tr("Idle (%1h%2m) ").args( ihrs, imin);
-//// idleTime = tr("Idle (%1m) ").arg(imin);
-//// if (!isExpanded() && buddy->evil > 0 &&
-//// purple_prefs_get_bool("/quail/blist/show_warning_levels"))
-//// warning = tr("Warned (%1%) ").arg(buddy->evil);
-// if (!PURPLE_BUDDY_IS_ONLINE(buddy) && statusText.isEmpty())
-// statusText = QObject::tr("Offline ");
-// if (contact != NULL && !isExpanded() && contact->alias != NULL)
-// topText = contact->alias;
-// topText = purple_contact_get_alias(contact);
-// bottomText = statusText + idleTime + warning;
-// /* Get the top rect info. */
-//// topRect = p->boundingRect(lmarg, 0, width - lmarg - itMarg,
-//// height(), align | AlignVCenter,
-//// if (!bottomText.isEmpty())
-//// bottomRect = p->boundingRect(lmarg, 0,
-//// width - lmarg - itMarg,
-//// align | AlignVCenter,
-//// textY1 = (height() - topRect.height() -
-//// bottomRect.height() - 2) / 2;
-//// textY2 = textY1 + topRect.height() + 2;
-//// if (buddy->idle > 0 &&
-//// purple_prefs_get_bool("/quail/blist/dim_idle_buddies"))
-//// p->setPen(cg.dark());
-//// p->drawText(lmarg, textY1, width - lmarg - itMarg, height(),
-//// p->setPen(cg.dark());
-//// p->drawText(lmarg, textY2, width - lmarg - itMarg, height(),
-//// align, bottomText);
-//// if (buddy->idle > 0 &&
-//// purple_prefs_get_bool("/quail/blist/dim_idle_buddies"))
-//// _cg.setColor(QPalette::Text, cg.dark());
-//// QTreeWidgetItem::paintCell(p, _cg, column, width, align);
-//// if (buddy->idle > 0 &&
-//// purple_prefs_get_bool("/quail/blist/dim_idle_buddies"))
-//// _cg.setColor(QPalette::Text, cg.dark());
-//// QTreeWidgetItem::paintCell(p, _cg, column, width, align);
-//QQuailBListItem::paintGroupInfo(QPainter *p, const QPalette &, int column,
-// int width, int align, int lmarg, int itMarg)
-// qDebug() << "QQuailBListItem::paintGroupInfo";
-// PurpleGroup *group = (PurpleGroup *)getBlistNode();
-// QString groupName, detail;
-//// QFont f = p->font();
-// groupName = group->name;
-// if (purple_prefs_get_bool("/quail/blist/show_group_count"))
-// detail = QString("(%1/%2)").arg(
-// purple_blist_get_group_online_count(group)).arg(
-// purple_blist_get_group_size(group, FALSE));
-//// p->drawText(lmarg, 0, width - lmarg - itMarg, height(),
-//// align | AlignVCenter, groupName);
-//// QRect r = p->boundingRect(lmarg, 0, width - lmarg - itMarg,
-//// align | AlignVCenter, groupName);
-//// p->drawText(lmarg + r.right(), 0, width - lmarg - itMarg, height(),
-//// align | AlignVCenter, detail);
/**************************************************************************
* QQuailBuddyList static utility functions
**************************************************************************/
-QQuailBuddyList::getBuddyStatusIcon2(PurpleBlistNode *node)
- qDebug() << "QQuailBuddyList::getBuddyStatusIcon";
- const char *protoName = NULL;
- PurplePlugin *prpl = NULL;
- PurplePluginProtocolInfo *prplInfo = NULL;
- PurpleAccount *account;
- char *se = NULL, *sw = NULL, *nw = NULL, *ne = NULL;
+//QQuailBuddyList::getBuddyStatusIcon2(PurpleBlistNode *node) +// qDebug() << "QQuailBuddyList::getBuddyStatusIcon"; +// QPixmap statusPixmap; +// const char *protoName = NULL; +// PurplePlugin *prpl = NULL; +// PurplePluginProtocolInfo *prplInfo = NULL; +// PurpleAccount *account; +// char *se = NULL, *sw = NULL, *nw = NULL, *ne = NULL;
- qDebug() << "QQuailBuddyList::getBuddyStatusIcon.1";
- if (PURPLE_BLIST_NODE_IS_BUDDY(node))
- account = ((PurpleBuddy *)node)->account;
- else if (PURPLE_BLIST_NODE_IS_CHAT(node))
- account = ((PurpleChat *)node)->account;
- qDebug() << "QQuailBuddyList::getBuddyStatusIcon.2";
- prpl = purple_plugins_find_with_id(purple_account_get_protocol_id(account));
+// qDebug() << "QQuailBuddyList::getBuddyStatusIcon.1"; +// if (PURPLE_BLIST_NODE_IS_BUDDY(node)) +// account = ((PurpleBuddy *)node)->account; +// else if (PURPLE_BLIST_NODE_IS_CHAT(node)) +// account = ((PurpleChat *)node)->account; +// qDebug() << "QQuailBuddyList::getBuddyStatusIcon.2"; +// prpl = purple_plugins_find_with_id(purple_account_get_protocol_id(account));
- qDebug() << "QQuailBuddyList::getBuddyStatusIcon.3";
- prplInfo = PURPLE_PLUGIN_PROTOCOL_INFO(prpl);
+// qDebug() << "QQuailBuddyList::getBuddyStatusIcon.3"; +// prplInfo = PURPLE_PLUGIN_PROTOCOL_INFO(prpl); - if (prplInfo->list_icon != NULL)
- if (PURPLE_BLIST_NODE_IS_BUDDY(node))
- protoName = prplInfo->list_icon(account, (PurpleBuddy *)node);
- else if (PURPLE_BLIST_NODE_IS_CHAT(node))
- protoName = prplInfo->list_icon(account, NULL);
- qDebug() << "QQuailBuddyList::getBuddyStatusIcon.4";
-// if (PURPLE_BLIST_NODE_IS_BUDDY(node) &&
-// ((PurpleBuddy *)node)->present != GAIM_BUDDY_SIGNING_OFF &&
-// prplInfo->list_emblems != NULL)
+// if (prplInfo->list_icon != NULL) -// prplInfo->list_emblems((PurpleBuddy *)node, &se, &sw, &nw, &ne);
+// if (PURPLE_BLIST_NODE_IS_BUDDY(node)) +// protoName = prplInfo->list_icon(account, (PurpleBuddy *)node); +// else if (PURPLE_BLIST_NODE_IS_CHAT(node)) +// protoName = prplInfo->list_icon(account, NULL);
- if (sw != NULL) se = sw;
- else if (ne != NULL) se = ne;
- else if (nw != NULL) se = nw;
- sw = nw = ne = NULL; /* So that only the se icon will composite. */
+// qDebug() << "QQuailBuddyList::getBuddyStatusIcon.4"; +//// if (PURPLE_BLIST_NODE_IS_BUDDY(node) && +//// ((PurpleBuddy *)node)->present != GAIM_BUDDY_SIGNING_OFF && +//// prplInfo->list_emblems != NULL) +//// prplInfo->list_emblems((PurpleBuddy *)node, &se, &sw, &nw, &ne); -// if (PURPLE_BLIST_NODE_IS_BUDDY(node) &&
-// ((PurpleBuddy *)node)->present == PURPLE_BUDDY_SIGNING_ON)
-// statusImage = QPixmap(":/data/images/status/login.png");
-// else if (PURPLE_BLIST_NODE_IS_BUDDY(node) &&
-// ((PurpleBuddy *)node)->present == PURPLE_BUDDY_SIGNING_OFF)
-// statusImage = QPixmap(":/data/images/status/logout.png");
- statusImage = QPixmap(":/data/images/protocols/" +
- QString(protoName) + ".svg").toImage();
- qDebug() << "QQuailBuddyList::getBuddyStatusIcon.5:" << protoName;
- if (statusImage.isNull())
- qDebug() << "QQuailBuddyList::getBuddyStatusIcon.6";
-// emblemImage = QPixmap(":/data/images/status/" + QString(se) + ".png").toImage();
-// if (!emblemImage.isNull())
-// QQuailImageUtils::blendOnLower(
-// statusImage.width() - emblemImage.width(),
-// statusImage.height() - emblemImage.height(),
-// emblemImage, statusImage);
+// if (sw != NULL) se = sw; +// else if (ne != NULL) se = ne; +// else if (nw != NULL) se = nw; - /* Grey idle buddies. */
- if (PURPLE_BLIST_NODE_IS_BUDDY(node) &&
- !PURPLE_BUDDY_IS_ONLINE((PurpleBuddy *)node))
- QQuailImageUtils::greyImage(statusImage);
- else if (PURPLE_BLIST_NODE_IS_BUDDY(node) &&
- (purple_presence_is_idle(purple_buddy_get_presence((PurpleBuddy *)node))))
- QQuailImageUtils::saturate(statusImage, 0.25);
- statusPixmap.convertFromImage(statusImage);
- qDebug() << "QQuailBuddyList::getBuddyStatusIcon.end";
+// sw = nw = ne = NULL; /* So that only the se icon will composite. */
-QQuailBuddyList::getBuddyStatusIcon(PurpleBlistNode *node)
- qDebug() << "QQuailBuddyList::getBuddyStatusIcon";
- QQuailBListItem *qnode = (QQuailBListItem*)node->ui_data;
- QQuailBListItem *qbuddynode = NULL;
- PurpleBuddy *buddy = NULL;
- PurpleChat *chat = NULL;
- if(PURPLE_BLIST_NODE_IS_CONTACT(node)) {
- if(!qnode->isExpanded()) {
- buddy = purple_contact_get_priority_buddy((PurpleContact*)node);
- qbuddynode = (QQuailBListItem*)((PurpleBlistNode*)buddy)->ui_data;
- } else if(PURPLE_BLIST_NODE_IS_BUDDY(node)) {
- buddy = (PurpleBuddy*)node;
- qbuddynode = (QQuailBListItem*)node->ui_data;
- } else if(PURPLE_BLIST_NODE_IS_CHAT(node)) {
- chat = (PurpleChat*)node;
- qDebug() << "QQuailBuddyList::getBuddyStatusIcon.1";
- PurpleAccount *account;
- account = buddy->account;
- account = chat->account;
+//// if (PURPLE_BLIST_NODE_IS_BUDDY(node) && +//// ((PurpleBuddy *)node)->present == PURPLE_BUDDY_SIGNING_ON) +//// statusImage = QPixmap(":/data/images/status/login.png"); +//// else if (PURPLE_BLIST_NODE_IS_BUDDY(node) && +//// ((PurpleBuddy *)node)->present == PURPLE_BUDDY_SIGNING_OFF) +//// statusImage = QPixmap(":/data/images/status/logout.png"); +// statusImage = QPixmap(":/data/images/protocols/" + +// QString(protoName) + ".svg").toImage(); +// qDebug() << "QQuailBuddyList::getBuddyStatusIcon.5:" << protoName; +// if (statusImage.isNull()) +// qDebug() << "QQuailBuddyList::getBuddyStatusIcon.6"; +//// emblemImage = QPixmap(":/data/images/status/" + QString(se) + ".png").toImage(); - prpl = purple_find_prpl(purple_account_get_protocol_id(account));
- qDebug() << "QQuailBuddyList::getBuddyStatusIcon.2";
- p = purple_buddy_get_presence(buddy);
- trans = purple_presence_is_idle(p);
+//// if (!emblemImage.isNull()) +//// QQuailImageUtils::blendOnLower( +//// statusImage.width() - emblemImage.width(), +//// statusImage.height() - emblemImage.height(), +//// emblemImage, statusImage); - if (PURPLE_BUDDY_IS_ONLINE(buddy) && qbuddynode && qbuddynode->recentSignedOnOff())
- returnImage = QPixmap(":/data/images/status/log-in.png");
- else if (qbuddynode && qbuddynode->recentSignedOnOff())
- returnImage = QPixmap(":/data/images/status/log-out.png");
- else if (purple_presence_is_status_primitive_active(p, PURPLE_STATUS_UNAVAILABLE))
- returnImage = QQuailImageUtils::greyPixmap(
- QPixmap(":/data/images/status/busy.png"),
- returnImage = QPixmap(":/data/images/status/busy.png");
- else if (purple_presence_is_status_primitive_active(p, PURPLE_STATUS_AWAY))
- returnImage = QQuailImageUtils::greyPixmap(
- QPixmap(":/data/images/status/away.png"),
- returnImage = QPixmap(":/data/images/status/away.png");
- else if (purple_presence_is_status_primitive_active(p, PURPLE_STATUS_EXTENDED_AWAY))
- returnImage = QQuailImageUtils::greyPixmap(
- QPixmap(":/data/images/status/extended-away.png"),
- returnImage = QPixmap(":/data/images/status/extended-away.png");
- else if (purple_presence_is_status_primitive_active(p, PURPLE_STATUS_OFFLINE))
- returnImage = QPixmap(":/data/images/status/offline.png");
- returnImage = QQuailImageUtils::greyPixmap(
- QPixmap(":/data/images/status/available.png"),
- else if (purple_presence_is_status_primitive_active(p, PURPLE_STATUS_INVISIBLE))
- returnImage = QPixmap(":/data/images/status/invisible.png");
- returnImage = QPixmap(":/data/images/status/available.png");
- returnImage = QPixmap(":/data/images/status/chat.png");
- returnImage = QPixmap(":/data/images/status/person.png");
+// /* Grey idle buddies. */ +// if (PURPLE_BLIST_NODE_IS_BUDDY(node) && +// !PURPLE_BUDDY_IS_ONLINE((PurpleBuddy *)node)) +// QQuailImageUtils::greyImage(statusImage); +// else if (PURPLE_BLIST_NODE_IS_BUDDY(node) && +// (purple_presence_is_idle(purple_buddy_get_presence((PurpleBuddy *)node)))) +// QQuailImageUtils::saturate(statusImage, 0.25);
+// statusPixmap.convertFromImage(statusImage); +// qDebug() << "QQuailBuddyList::getBuddyStatusIcon.end"; /**************************************************************************
@@ -876,7 +400,7 @@
QMenu *subMenu = new QMenu(this);
populateBuddyMenu(buddy2, subMenu, false);
- subMenu->setIcon(QQuailBuddyList::getBuddyStatusIcon(bnode));
+ //subMenu->setIcon(QQuailBuddyList::getBuddyStatusIcon(bnode)); subMenu->setTitle(buddy2->name);
@@ -1118,6 +642,7 @@
for (child = node->child; child != NULL; child = child->next)
+ qDebug() << "QQuailBuddyList::expandContactSlot.1<<<<< set ui_data NULL"; @@ -1503,23 +1028,24 @@
(PURPLE_BUDDY_IS_ONLINE(buddy) ||
(purple_prefs_get_bool("/quail/blist/show_offline_buddies"))))
-// qDebug() << "QQuailBuddyList::updateContact.1";
+ qDebug() << "QQuailBuddyList::updateContact.1"; -// qDebug() << "QQuailBuddyList::updateContact.2";
+ qDebug() << "QQuailBuddyList::updateContact.2"; node->ui_data = item = new QQuailBListItem(
(QQuailBListItem *)(node->parent->ui_data), node);
item->setSizeHint(0, QSize(this->width(), 50));
+ //item->setIcon(0, QIcon(QQuailBuddyList::getBuddyStatusIcon(node))); -// qDebug() << "QQuailBuddyList::updateContact.2";
+ qDebug() << "QQuailBuddyList::updateContact.2"; -// qDebug() << "QQuailBuddyList::updateContact.3";
+ qDebug() << "QQuailBuddyList::updateContact.3"; // qDebug() << "QQuailBuddyList::updateContact.end";
@@ -1557,6 +1083,7 @@
node->ui_data = item = new QQuailBListItem(
(QQuailBListItem *)(node->parent->ui_data), node);
+ //item->setIcon(0, QIcon(QQuailBuddyList::getBuddyStatusIcon(node))); --- a/src/QuailBuddyList.h Thu Aug 29 14:23:23 2013 +0100
+++ b/src/QuailBuddyList.h Thu Aug 29 15:12:20 2013 +0100
@@ -27,47 +27,13 @@
-class QQuailBListItem : public QTreeWidgetItem
- QQuailBListItem(QTreeWidget *parent, PurpleBlistNode *node);
- QQuailBListItem(QTreeWidgetItem *parent, PurpleBlistNode *node);
- PurpleBlistNode *getBlistNode() const;
- //TODO: Find out how to calculate this
- bool recentSignedOnOff()
- /*reimp*/QSize sizeHint ( int column ) const;
-// void paintBuddyInfo(QPainter *p, const QPalette &cg, int column,
-// int width, int align, int lmarg, int itMarg);
-// void paintGroupInfo(QPainter *p, const QPalette &cg, int column,
-// int width, int align, int lmarg, int itMarg);
- QString topText, bottomText;
- QString getAlias(PurpleBuddy *buddy);
class QQuailBuddyList : public QTreeWidget
- static QPixmap getBuddyStatusIcon(PurpleBlistNode *node);
- static QPixmap getBuddyStatusIcon2(PurpleBlistNode *node);
QQuailBuddyList(QWidget *parent = NULL);
virtual ~QQuailBuddyList();
--- a/src/QuailConvButton.cpp Thu Aug 29 14:23:23 2013 +0100
+++ b/src/QuailConvButton.cpp Thu Aug 29 15:12:20 2013 +0100
@@ -129,7 +129,8 @@
- a->setIcon(QQuailBuddyList::getBuddyStatusIcon((PurpleBlistNode *)buddy));
+ //a->setIcon(QQuailBuddyList::getBuddyStatusIcon((PurpleBlistNode *)buddy)); a->setText(purple_conversation_get_title(conv));
--- a/src/QuailConvWindow.cpp Thu Aug 29 14:23:23 2013 +0100
+++ b/src/QuailConvWindow.cpp Thu Aug 29 15:12:20 2013 +0100
@@ -19,7 +19,8 @@
* Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
-#include "QuailBuddyList.h"
+//#include "QuailBuddyList.h" +#include "QuailBlistItem.h" #include "QuailConvWindow.h"
#include "QuailConvButton.h"
#include "QuailConvDisplay.h"
@@ -318,7 +319,7 @@
qwin->getTabs()->setTabIcon(this->getTabId(),
- QQuailBuddyList::getBuddyStatusIcon((PurpleBlistNode *)b));
+ QQuailBListItem::getBuddyStatusIcon((PurpleBlistNode *)b)); qwin->getTabs()->setTabText(this->getTabId(),
purple_conversation_get_title(conv));
@@ -801,7 +802,7 @@
qDebug() << "QQuailConvWindow::addConversation().4";
- QQuailBuddyList::getBuddyStatusIcon((PurpleBlistNode *)b),
+ QQuailBListItem::getBuddyStatusIcon((PurpleBlistNode *)b), purple_conversation_get_title(conv));