~renatofilho/address-book-app/new-designer-contact-list

« back to all changes in this revision

Viewing changes to src/app/contentcommunicator.cpp

  • Committer: Renato Araujo Oliveira Filho
  • Date: 2014-06-17 00:41:33 UTC
  • mfrom: (169.9.9 staging)
  • Revision ID: renato.filho@canonical.com-20140617004133-m4lm6hbiiyd1zx0w
Staging merged.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/*
2
 
 * Copyright (C) 2013 Canonical, Ltd.
3
 
 *
4
 
 * This program is free software; you can redistribute it and/or modify
5
 
 * it under the terms of the GNU General Public License as published by
6
 
 * the Free Software Foundation; version 3.
7
 
 *
8
 
 * This program is distributed in the hope that it will be useful,
9
 
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10
 
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11
 
 * GNU General Public License for more details.
12
 
 *
13
 
 * You should have received a copy of the GNU General Public License
14
 
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
15
 
 *
16
 
 */
17
 
 
18
 
#include <contentcommunicator.h>
19
 
 
20
 
#include <QDebug>
21
 
#include <QTemporaryFile>
22
 
#include <QDir>
23
 
 
24
 
#include <com/ubuntu/content/hub.h>
25
 
#include <com/ubuntu/content/item.h>
26
 
#include <com/ubuntu/content/transfer.h>
27
 
 
28
 
using namespace com::ubuntu::content;
29
 
 
30
 
/*!
31
 
 * \brief ContentCommunicator::ContentCommunicator
32
 
 * \param parent
33
 
 */
34
 
ContentCommunicator::ContentCommunicator(QObject *parent)
35
 
    : ImportExportHandler(parent),
36
 
      m_transfer(0)
37
 
{
38
 
    Hub *hub = Hub::Client::instance();
39
 
    if (hub) {
40
 
        hub->register_import_export_handler(this);
41
 
    } else {
42
 
        qWarning() << "Fail to get Hub client instance";
43
 
    }
44
 
}
45
 
 
46
 
/*!
47
 
 * \brief \reimp
48
 
 */
49
 
void ContentCommunicator::handle_import(content::Transfer *)
50
 
{
51
 
    qDebug() << Q_FUNC_INFO << "address book app does not import content";
52
 
}
53
 
 
54
 
/*!
55
 
 * \brief \reimp
56
 
 */
57
 
void ContentCommunicator::handle_export(content::Transfer *transfer)
58
 
{
59
 
    if (m_transfer != 0) {
60
 
        qWarning() << "address book app does only one content export at a time";
61
 
        transfer->abort();
62
 
        m_transfer = 0;
63
 
        return;
64
 
    }
65
 
 
66
 
    if (transfer) {
67
 
        m_transfer = transfer;
68
 
        connect(m_transfer, SIGNAL(selectionTypeChanged()), SIGNAL(multipleItemsChanged()));
69
 
    } else {
70
 
        qWarning() << "Transfer pointer is null in handle_export";
71
 
    }
72
 
    Q_EMIT contactRequested();
73
 
    Q_EMIT activeChanged();
74
 
    Q_EMIT multipleItemsChanged();
75
 
}
76
 
 
77
 
/*!
78
 
 * \brief \reimp
79
 
 */
80
 
void ContentCommunicator::handle_share(content::Transfer *)
81
 
{
82
 
    qDebug() << Q_FUNC_INFO << "address book app does not share content";
83
 
}
84
 
 
85
 
/*!
86
 
 * \brief ContentCommunicator::cancelTransfer aborts the current transfer
87
 
 */
88
 
void ContentCommunicator::cancelTransfer()
89
 
{
90
 
    if (!m_transfer) {
91
 
        qWarning() << "No ongoing transfer to cancel";
92
 
        return;
93
 
    }
94
 
 
95
 
    m_transfer->abort();
96
 
    m_transfer = 0;
97
 
    Q_EMIT activeChanged();
98
 
}
99
 
 
100
 
/*!
101
 
 * \brief ContentCommunicator::returnContacts returns the given contacts
102
 
 * via content hub to the requester
103
 
 * \param urls
104
 
 */
105
 
void ContentCommunicator::returnContacts(const QUrl &contactsFile)
106
 
{
107
 
    if (!m_transfer) {
108
 
        qWarning() << "No ongoing transfer to return a contact";
109
 
        return;
110
 
    }
111
 
 
112
 
    QVector<Item> items;
113
 
    items << contactsFile;
114
 
    m_transfer->charge(items);
115
 
    m_transfer = 0;
116
 
    Q_EMIT activeChanged();
117
 
}
118
 
 
119
 
bool ContentCommunicator::isActive() const
120
 
{
121
 
    return (m_transfer != 0);
122
 
}
123
 
 
124
 
bool ContentCommunicator::isMultipleItems() const
125
 
{
126
 
    return (m_transfer && m_transfer->selectionType() == Transfer::multiple);
127
 
}
128
 
 
129
 
QUrl ContentCommunicator::createTemporaryFile() const
130
 
{
131
 
    QTemporaryFile tmp(QDir::tempPath() + "/vcard_XXXXXX.vcf");
132
 
    tmp.setAutoRemove(false);
133
 
    if (!tmp.open()) {
134
 
        qWarning() << "Fail to create temporary file for vcard.";
135
 
        return QUrl();
136
 
    }
137
 
    QString tmpFileName = tmp.fileName();
138
 
    tmp.close();
139
 
    return QUrl::fromLocalFile(tmpFileName);
140
 
}