~mzanetti/+junk/ubtd

« back to all changes in this revision

Viewing changes to app/transfer.cpp

  • Committer: Michael Zanetti
  • Date: 2016-04-14 23:34:10 UTC
  • Revision ID: michael.zanetti@canonical.com-20160414233410-17jg7ez3w1qc5e16
make it work, polish a bit, 0.2

Show diffs side-by-side

added added

removed removed

Lines of Context:
4
4
#include <QDebug>
5
5
#include <QFile>
6
6
#include <QStandardPaths>
 
7
#include <QDBusReply>
7
8
 
8
 
Transfer::Transfer(const QString &path, const QString &filePath, const QString &filename, QObject *parent) :
 
9
Transfer::Transfer(const QString &path, const QString &filePath, QObject *parent) :
9
10
    QObject(parent),
10
11
    m_path(path),
11
12
    m_filePath(filePath),
12
 
    m_filename(filename),
13
13
    m_total(0),
14
14
    m_transferred(0),
15
 
    m_completed(false),
16
 
    m_success(false)
 
15
    m_status(Status::StatusQueued)
17
16
{
18
 
    QDBusConnection::sessionBus().connect("org.openobex", path, "org.openobex.Transfer", "Progress", "ii", this, SLOT(progress(qint32, qint32)));
 
17
 
 
18
    m_iface = new QDBusInterface("org.bluez.obex", path, "org.bluez.obex.Transfer", QDBusConnection::sessionBus(), this);
 
19
 
 
20
    qDebug() << "name" << fetchProperty("Name");
 
21
 
 
22
    m_filename = fetchProperty("Name").toString();
 
23
    m_total = fetchProperty("Size").toULongLong();
 
24
    m_status = statusStringToStatus(fetchProperty("Status").toString());
 
25
    m_transferred = fetchProperty("Transferred").toULongLong();
 
26
    qDebug() << "filename" << m_filename;
 
27
 
 
28
    qDebug() << "connected signal" << QDBusConnection::sessionBus().connect("org.bluez.obex", path, "org.freedesktop.DBus.Properties", "PropertiesChanged", "sa{sv}as", this, SLOT(propertiesChanged(QString, QVariantMap, QStringList)));
 
29
 
19
30
}
20
31
 
21
32
QString Transfer::path() const
47
58
    return m_filePath;
48
59
}
49
60
 
50
 
void Transfer::setStarted()
51
 
{
52
 
    qDebug() << "transfer started";
53
 
    // TODO...
54
 
}
55
 
 
56
 
void Transfer::setCompleted(bool success)
57
 
{
58
 
    qDebug() << "transfer completed";
59
 
    m_completed = true;
60
 
    m_success = success;
61
 
 
62
 
    emit completedChanged();
63
 
}
64
 
 
65
 
qint32 Transfer::total() const
 
61
quint64 Transfer::total() const
66
62
{
67
63
    return m_total;
68
64
}
69
65
 
70
 
qint32 Transfer::transferred() const
 
66
quint64 Transfer::transferred() const
71
67
{
72
68
    return m_transferred;
73
69
}
74
70
 
75
 
bool Transfer::completed() const
76
 
{
77
 
    return m_completed;
78
 
}
79
 
 
80
 
bool Transfer::success() const
81
 
{
82
 
    return m_success;
83
 
}
84
 
 
85
 
void Transfer::progress(qint32 total, qint32 transferred)
86
 
{
87
 
    qDebug() << "transfer progress" << transferred << "/" << total;
88
 
    if (m_total != total) {
89
 
        m_total = total;
90
 
        emit totalChanged();
91
 
    }
92
 
    m_transferred = transferred;
93
 
    emit transferredChanged();
 
71
Transfer::Status Transfer::status() const
 
72
{
 
73
    return m_status;
 
74
}
 
75
 
 
76
QVariant Transfer::fetchProperty(const QString &propertyName) const
 
77
{
 
78
 
 
79
    QDBusInterface ff("org.bluez.obex", m_path, "org.freedesktop.DBus.Properties");
 
80
    QDBusMessage m = ff.call("Get", "org.bluez.obex.Transfer1", propertyName);
 
81
    if (m.type() != QDBusMessage::ErrorMessage && m.arguments().count() == 1) {
 
82
        QDBusVariant dbv = qdbus_cast<QDBusVariant>(m.arguments().first());
 
83
        qDebug() << "property" << propertyName << dbv.variant();
 
84
 
 
85
        return dbv.variant();
 
86
 
 
87
    }
 
88
    qDebug() << "error getting property:" << propertyName << m.errorMessage();
 
89
    return QVariant();
 
90
}
 
91
 
 
92
Transfer::Status Transfer::statusStringToStatus(const QString &statusString)
 
93
{
 
94
    if (statusString == "queued") {
 
95
        return StatusQueued;
 
96
    }
 
97
    if (statusString == "active") {
 
98
        return StatusActive;
 
99
    }
 
100
    if (statusString == "suspended") {
 
101
        return StatusSuspended;
 
102
    }
 
103
    if (statusString == "complete") {
 
104
        return StatusComplete;
 
105
    }
 
106
    if (statusString == "error") {
 
107
        return StatusError;
 
108
    }
 
109
    return StatusError;
 
110
}
 
111
 
 
112
void Transfer::propertiesChanged(const QString &interface, const QVariantMap &changedProperties, const QStringList &invalidatedProperties)
 
113
{
 
114
    qDebug() << "properties changed" << interface << changedProperties << invalidatedProperties;
 
115
    if (interface != "org.bluez.obex.Transfer1") {
 
116
        return;
 
117
    }
 
118
    if (changedProperties.contains("Transferred")) {
 
119
        m_transferred = changedProperties.value("Transferred").toULongLong();
 
120
        emit transferredChanged();
 
121
    }
 
122
    if (changedProperties.contains("Status")) {
 
123
        m_status = statusStringToStatus(changedProperties.value("Status").toString());
 
124
        emit statusChanged();
 
125
    }
94
126
}