pidgin/quail/quail-redux

f50c05f040fb
Parents 45addfe34752
Children 86f5d2b3964f
Next attempt at the contact status icon display
--- a/TODO.txt Tue Aug 20 20:03:27 2013 +0100
+++ b/TODO.txt Tue Aug 20 20:41:45 2013 +0100
@@ -31,6 +31,7 @@
* Display the currently used icon on the buddy list window
* Enable the selection of a new buddy icon
* Conversation room list display status icons
+* Add "User is typing" notification
DONE
===========================================================
--- a/src/QuailBuddyList.cpp Tue Aug 20 20:03:27 2013 +0100
+++ b/src/QuailBuddyList.cpp Tue Aug 20 20:41:45 2013 +0100
@@ -438,7 +438,7 @@
* QQuailBuddyList static utility functions
**************************************************************************/
QPixmap
-QQuailBuddyList::getBuddyStatusIcon(PurpleBlistNode *node)
+QQuailBuddyList::getBuddyStatusIcon2(PurpleBlistNode *node)
{
qDebug() << "QQuailBuddyList::getBuddyStatusIcon";
QImage statusImage;
@@ -540,6 +540,100 @@
return statusPixmap;
}
+QPixmap
+QQuailBuddyList::getBuddyStatusIcon(PurpleBlistNode *node)
+{
+ qDebug() << "QQuailBuddyList::getBuddyStatusIcon";
+ QPixmap returnImage;
+ 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);
+ if (buddy != NULL)
+ 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;
+ } else {
+ qDebug() << "QQuailBuddyList::getBuddyStatusIcon.1";
+ return QPixmap();
+ }
+
+ if(buddy || chat) {
+ PurpleAccount *account;
+ PurplePlugin *prpl;
+
+ if(buddy)
+ account = buddy->account;
+ else
+ account = chat->account;
+
+ prpl = purple_find_prpl(purple_account_get_protocol_id(account));
+ if(!prpl) {
+ qDebug() << "QQuailBuddyList::getBuddyStatusIcon.2";
+ return QPixmap();
+ }
+ }
+
+ if(buddy) {
+ PurplePresence *p;
+ gboolean trans;
+
+ 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))
+ if (trans)
+ returnImage = QQuailImageUtils::greyPixmap(
+ QPixmap(":/data/images/status/busy.png"),
+ "busy.png");
+ else
+ returnImage = QPixmap(":/data/images/status/busy.png");
+ else if (purple_presence_is_status_primitive_active(p, PURPLE_STATUS_AWAY))
+ if (trans)
+ returnImage = QQuailImageUtils::greyPixmap(
+ QPixmap(":/data/images/status/away.png"),
+ "away.png");
+ else
+ returnImage = QPixmap(":/data/images/status/away.png");
+ else if (purple_presence_is_status_primitive_active(p, PURPLE_STATUS_EXTENDED_AWAY))
+ if (trans)
+ returnImage = QQuailImageUtils::greyPixmap(
+ QPixmap(":/data/images/status/extended-away.png"),
+ "extended-away.png");
+ else
+ 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");
+ else if (trans)
+ returnImage = QQuailImageUtils::greyPixmap(
+ QPixmap(":/data/images/status/available.png"),
+ "available.png");
+ else if (purple_presence_is_status_primitive_active(p, PURPLE_STATUS_INVISIBLE))
+ returnImage = QPixmap(":/data/images/status/invisible.png");
+ else
+ returnImage = QPixmap(":/data/images/status/available.png");
+ } else if (chat) {
+ returnImage = QPixmap(":/data/images/status/chat.png");
+ } else {
+ returnImage = QPixmap(":/data/images/status/person.png");
+ }
+
+ return returnImage;
+}
+
+
/**************************************************************************
* QQuailBuddyList
**************************************************************************/
--- a/src/QuailBuddyList.h Tue Aug 20 20:03:27 2013 +0100
+++ b/src/QuailBuddyList.h Tue Aug 20 20:41:45 2013 +0100
@@ -27,8 +27,6 @@
#include <QTreeWidget>
-#include "QuailImageUtils.h"
-
class QQuailBListItem : public QTreeWidgetItem
{
public:
@@ -41,6 +39,9 @@
void updateInfo();
void setExpanded(bool expanded);
bool isExpanded() const;
+ //TODO: Find out how to calculate this
+ bool recentSignedOnOff()
+ { return false; }
/*reimp*/QSize sizeHint ( int column ) const;
protected:
@@ -67,6 +68,7 @@
public:
static QPixmap getBuddyStatusIcon(PurpleBlistNode *node);
+ static QPixmap getBuddyStatusIcon2(PurpleBlistNode *node);
public:
QQuailBuddyList(QWidget *parent = NULL);
@@ -141,8 +143,6 @@
void updateContact(PurpleBlistNode *node);
void updateBuddy(PurpleBlistNode *node);
void updateChat(PurpleBlistNode *node);
-
- private:
PurpleBuddyList *quailBlist;
QTimer *saveTimer;