aboutsummaryrefslogtreecommitdiff
path: root/examples/GuiClient/rosterItem.cpp
blob: 4075f4fbf731a83c4b2bb00b888eb2a85489adf2 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
#include "rosterItem.h"
#include <QImage>

rosterItem::rosterItem(const QString& bareJid) //: QStandardItem(bareJid)
{
    setStatusType(QXmppPresence::Status::Offline);
    setStatusText("Offline");
}

void rosterItem::setName(const QString& name)
{
    setText(name);
}

QString rosterItem::getName()
{
    return text();
}

void rosterItem::setBareJid(const QString& bareJid)
{
    setData(bareJid, rosterItem::BareJid);
}

void rosterItem::setStatusText(const QString& text)
{
    setData(text, rosterItem::StatusText);
}

QString rosterItem::getBareJid()
{
    return data(rosterItem::BareJid).toString();
}

QString rosterItem::getStatusText()
{
    return data(rosterItem::StatusText).toString();
}

void rosterItem::setStatusType(QXmppPresence::Status::Type type)
{
    setData(static_cast<int>(type), StatusType);
    QString icon;
    switch(type)
    {
    case QXmppPresence::Status::Online:
    case QXmppPresence::Status::Chat:
        icon = "green";
        break;
    case QXmppPresence::Status::Away:
    case QXmppPresence::Status::XA:
        icon = "orange";
        break;
    case QXmppPresence::Status::DND:
        icon = "red";
        break;
    case QXmppPresence::Status::Invisible:
    case QXmppPresence::Status::Offline:
        icon = "gray";
        break;
    }
    if(!icon.isEmpty())
        setIcon(QIcon(":/icons/resource/"+icon+".png"));
}

QXmppPresence::Status::Type rosterItem::getStatusType()
{
    return static_cast<QXmppPresence::Status::Type>(data(StatusType).toInt());
}

void rosterItem::setPresenceType(QXmppPresence::Type type)
{
    setData(static_cast<int>(type), PresenceType);
    QString icon;
    switch(type)
    {
    case QXmppPresence::Available:
        break;
    case QXmppPresence::Unavailable:
        icon = "gray";
        break;
    case QXmppPresence::Error:
    case QXmppPresence::Subscribe:
    case QXmppPresence::Subscribed:
    case QXmppPresence::Unsubscribe:
    case QXmppPresence::Unsubscribed:
    case QXmppPresence::Probe:
        break;
    }
    if(!icon.isEmpty())
        setIcon(QIcon(":/icons/resource/"+icon+".png"));
}

QXmppPresence::Type rosterItem::getPresenceType()
{
    return static_cast<QXmppPresence::Type>(data(PresenceType).toInt());
}

void rosterItem::setAvatar(const QImage& image)
{
    setData(QVariant(image), rosterItem::Avatar);
}

QImage rosterItem::getAvatar()
{
    return qvariant_cast<QImage>(data(rosterItem::Avatar));
}