aboutsummaryrefslogtreecommitdiff
path: root/examples/GuiClient/utils.cpp
blob: 0d19830e82b40c01c890b90ecb8ece9397601bef (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
108
109
110
111
112
113
114
115
116
117
118
119
120
#include "utils.h"
#include <QDir>
#include <QDesktopServices>

int comparisonWeightsPresenceStatusType(QXmppPresence::Status::Type statusType)
{
    switch(statusType)
    {
        case QXmppPresence::Status::Online:
        case QXmppPresence::Status::Chat:
            return 0;
        case QXmppPresence::Status::DND:
            return 1;
        case QXmppPresence::Status::Away:
        case QXmppPresence::Status::XA:
            return 2;
        case QXmppPresence::Status::Offline:
        case QXmppPresence::Status::Invisible:
            return 3;
    }
}

int comparisonWeightsPresenceType(QXmppPresence::Type type)
{
    switch(type)
    {
        case QXmppPresence::Available:
            return 0;
        case QXmppPresence::Unavailable:
            return 1;
        case QXmppPresence::Error:
        case QXmppPresence::Subscribe:
        case QXmppPresence::Subscribed:
        case QXmppPresence::Unsubscribe:
        case QXmppPresence::Unsubscribed:
        case QXmppPresence::Probe:
            return 3;
    }
}

QString presenceToStatusText(const QXmppPresence& presence)
{
    QString statusText = presence.getStatus().getStatusText();
    if(statusText.isEmpty())
    {
        if(presence.getType() == QXmppPresence::Available)
        {
            switch(presence.getStatus().getType())
            {
            case QXmppPresence::Status::Invisible:
            case QXmppPresence::Status::Offline:
                statusText = "Offline";
                break;
            case QXmppPresence::Status::Online:
            case QXmppPresence::Status::Chat:
                statusText = "Available";
                break;
            case QXmppPresence::Status::Away:
            case QXmppPresence::Status::XA:
                statusText = "Idle";
                break;
            case QXmppPresence::Status::DND:
                statusText = "Busy";
                break;
            }
        }
        else
            statusText = "Offline";
    }

    return statusText;
}

QString getSettingsDir()
{
    return "appCache/";
}

QString getImageHash(const QByteArray& image)
{
    if(image.isEmpty())
        return "";
    else
        return QString(QCryptographicHash::hash(image,
            QCryptographicHash::Sha1).toHex());
}

QImage getImageFromByteArray(const QByteArray& image)
{
    QBuffer buffer;
    buffer.setData(image);
    buffer.open(QIODevice::ReadOnly);
    QImageReader imageReader(&buffer);
    return imageReader.read();
}

QString getImageType1(const QByteArray& image)
{
    QBuffer buffer;
    buffer.setData(image);
    buffer.open(QIODevice::ReadOnly);
    QString format = QImageReader::imageFormat(&buffer);

    if(format.toUpper() == "PNG")
        return "image/png";
    else if(format.toUpper() == "MNG")
        return "video/x-mng";
    else if(format.toUpper() == "GIF")
        return "image/gif";
    else if(format.toUpper() == "BMP")
        return "image/bmp";
    else if(format.toUpper() == "XPM")
        return "image/x-xpm";
    else if(format.toUpper() == "SVG")
        return "image/svg+xml";
    else if(format.toUpper() == "JPEG")
        return "image/jpeg";

    return "image/unknown";
}