Fixes : NB#233744
[meego-sharing-framework:transfer-ui.git] / transfer-ui / src / tuiserviceprivate.h
1
2 /*
3  * This file is part of Handset UX Transfer user interface
4  *
5  * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). All rights reserved.
6  * Contact: Jukka Tiihonen <jukka.tiihonen@nokia.com>
7  *
8  * Permission is hereby granted, free of charge, to any person obtaining a copy
9  * of this software and associated documentation files (the "Software"), to 
10  * deal in the Software without restriction, including without limitation the
11  * rights to use, copy, modify, merge, publish, distribute, sublicense,     
12  * and/or sell copies of the Software, and to permit persons to whom the
13  * Software is furnished to do so, subject to the following conditions:
14  *
15  * The above copyright notice and this permission notice shall be included in
16  * all copies or substantial portions of the Software.
17  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,   
19  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER  
21  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
22  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS  
23  * IN THE SOFTWARE. 
24  */
25
26
27
28
29
30
31
32
33 #ifndef _TUI_SERVICE_PRIVATE_H_
34 #define _TUI_SERVICE_PRIVATE_H_
35
36 //local headers
37 #include "tuidatamodel.h"
38 #include "tuiclientdatamodel.h"
39 #include "tuidatamodelproxy.h"
40 #include "tuireadhistorythread.h"
41 #include "TransferUI/transferuiimplementationinterface.h"
42 #include "tuistructures.h"
43
44 //Qt headers
45 #include <QObject>
46 #include <QSettings>
47 #include <QDBusPendingCallWatcher>
48
49 class MLabel;
50 class MNotification;
51 class TUIController;
52 class TUIDataModel;
53
54 using namespace TransferUI;
55 /*!
56     \class TUIServicePrivate
57     \brief Private class for TUI Services
58     \author  Jukka Tiihonen <jukka.t.tiihonen@nokia.com>
59  */
60 class TUIServicePrivate : public QObject
61 {
62     Q_OBJECT
63
64 public:
65     bool isUIShown; //!< variable to track UI
66
67     TUIDataModelProxy *proxyModel; //!< proxy data model
68
69     QSettings *historySetting; //!< setting to write history data
70
71         QMap<QString,int> replaceHistoryList;
72
73         TUIReadHistoryThread *readThread;
74
75     TransferUIImplementationInterface *interface;
76
77     //! Data model to track list of clients
78     TUIClientDataModel *clientDataModel;
79
80     bool isInSwitcher; //!< variable to track if the application is switcher
81
82 public:
83     TUIServicePrivate();
84
85     virtual ~TUIServicePrivate();
86
87     /*!
88         \brief displays the info banner
89         \param image Image ID for the banner
90         \param body  Body text for the banner
91     */
92     void displayInfoBanner(BannerEvent event, const QString& message=QString());
93
94     /*!
95         \brief notify that the transfer is partially completed before cancel
96         and display the info banner
97     */
98     void notifyPartialDoneTransfers();
99
100     /*!
101         \brief generates a unique identifier for the transfer
102     */
103     const QString generateTransferId() const;
104
105     /*!
106         \brief registers transfers to datamodel and controller
107         \param id transfer identifier
108         \param clientServiceName service for which transfer was registered
109     */
110     void registerTransferData(const QString& id, TransferType type,
111         const QString& title, const QString& clientServiceName, const QString&
112         serviceName);
113
114
115     void writeToHistory(const QString& id, const TUIData *data, bool showInHistory,
116                 const QString& replaceId="");
117
118     void readHistory();
119
120     void writeHistoryData(const TUIData *data);
121 Q_SIGNALS:
122     /*
123         Signals
124     */
125     void cancel(const QString& transferId);
126     void pause(const QString& transferId);
127     void resume(const QString& transferId);
128     void repair(const QString& transferId);
129
130 public Q_SLOTS:
131     /*!
132         \brief Function which gets the list of transfers and
133         populates into the UI, this method is called from showUI
134     */
135     void visibilityChanged(bool value);
136
137     void histroyModelEmpty(bool value);
138     /*
139         handle transfer states
140     */
141     void cancelTransfer(const QModelIndex &index);
142     void pauseTransfer(const QModelIndex &index);
143     void resumeTransfer(const QModelIndex &index);
144     void repairTransfer(const QModelIndex &index);
145
146     /*!
147         \brief clear all the transfers from the completed list and database.
148     */
149
150     void clearCompletedList();
151
152     /*!
153         \brief history read thread completed
154     */
155         void threadCompleted();
156
157     /*!
158         \brief read completed data from the data base.
159     */
160         void dataReadFromDB(const QString& id, QSharedPointer<TUIData>);
161
162     /*!
163         \brief show custom dialog. This function checks if the transfer is
164         registered to display a custom transfer. If the transfer is registered
165         then , showDetails method from the interface registerd is invoked.
166         \param data transfer data
167         \param serviceName service interface name.
168     */
169
170         void showCustomDialog(const TUIData *data, const QString& serviceName);
171
172     /*!
173         \brief user clicked the transfer element
174         \param index index of the transfer
175     */
176     void elementClicked(const QModelIndex &index);
177
178     /*!
179         \brief custom dialog invocation status handler
180     */
181     void customDialogCallFinished(QDBusPendingCallWatcher *call);
182
183 private:
184     /*!
185         \brief write replace history transfers to the data base
186     */
187         void writeReplaceHistoryDB(const QString& id, const TUIData *data, 
188         const QString& replaceId);
189
190     /*!
191         \brief write history to the data base
192     */
193
194         void writeHistoryDB(const QString& id, const TUIData *data);
195
196     /*!
197         \brief read replace history ids from the data base
198     */
199         void readReplaceHistoryIds();
200
201     /*!
202         \brief write replace history ids to the data base
203     */
204         void writeReplaceHistoryIds(const QString& replaceId, int index);
205 };
206
207 Q_DECLARE_METATYPE(QSharedPointer<TUIData>)
208 #endif