38 } |
36 } |
39 |
37 |
40 ActivityClientPrivate::~ActivityClientPrivate() |
38 ActivityClientPrivate::~ActivityClientPrivate() |
41 { |
39 { |
42 delete mServerClient; |
40 delete mServerClient; |
43 delete mDataStorage; |
|
44 } |
41 } |
45 |
42 |
46 bool ActivityClientPrivate::addActivity(const QString &activityId, const QVariant &data, const QVariantHash ¶meters) |
43 bool ActivityClientPrivate::addActivity(const QString &activityId, const QVariant &data, const QVariantHash ¶meters) |
47 { |
44 { |
48 bool result(false); |
45 bool result(false); |
49 if (mIsconnected) { |
46 if (mIsconnected) { |
50 result = mDataStorage->addActivity(activityId, data); |
47 QVariantHash privateData; |
51 if ( result ) { |
48 privateData.insert(ActivityDataKeyword, data); |
52 QVariantHash activity(parameters); |
49 QVariantHash publicData(parameters); |
53 RProcess process; |
50 RProcess process; |
54 registerThumbnail(activityId, activity); |
51 publicData.insert(ActivityApplicationKeyword, static_cast<int>(process.SecureId().iId)); |
55 activity.insert(ActivityApplicationKeyword, static_cast<int>(process.SecureId().iId)); |
52 publicData.insert(ActivityActivityKeyword, activityId); |
56 activity.insert(ActivityActivityKeyword, activityId); |
53 result = (KErrNone == mServerClient->addActivity(privateData, publicData)); |
57 int error = mServerClient->addActivity(activity); |
|
58 result = error == KErrNone ? true : false; |
|
59 } |
|
60 } |
54 } |
61 // @todo make those operations atomic |
|
62 return result; |
55 return result; |
63 } |
56 } |
64 |
57 |
65 bool ActivityClientPrivate::removeActivity(const QString &activityId) |
58 bool ActivityClientPrivate::removeActivity(const QString &activityId) |
66 { |
59 { |
67 bool result(false); |
60 bool result(false); |
68 if (mIsconnected) { |
61 if (mIsconnected) { |
69 result = mDataStorage->removeActivity(activityId); |
62 QVariantHash activity; |
70 if ( result ) { |
63 RProcess process; |
71 QVariantHash activity; |
64 activity.insert(ActivityApplicationKeyword, static_cast<int>(process.SecureId().iId)); |
72 RProcess process; |
65 activity.insert(ActivityActivityKeyword, activityId); |
73 activity.insert(ActivityApplicationKeyword, static_cast<int>(process.SecureId().iId)); |
66 result = (KErrNone == mServerClient->removeActivity(activity)); |
74 activity.insert(ActivityActivityKeyword, activityId); |
|
75 int error = mServerClient->removeActivity(activity); |
|
76 result = error == KErrNone ? true : false; |
|
77 if (result) { |
|
78 result = QFile::remove(thumbnailName(activityId)); |
|
79 } |
|
80 } |
|
81 } |
67 } |
82 // @todo make those operations atomic |
|
83 return result; |
68 return result; |
84 } |
69 } |
85 |
70 |
86 bool ActivityClientPrivate::updateActivity(const QString &activityId, const QVariant &data, const QVariantHash ¶meters) |
71 bool ActivityClientPrivate::updateActivity(const QString &activityId, const QVariant &data, const QVariantHash ¶meters) |
87 { |
72 { |
88 bool result(false); |
73 bool result(false); |
89 if (mIsconnected) { |
74 if (mIsconnected) { |
90 result = mDataStorage->updateActivity(activityId, data); |
75 QVariantHash privateData; |
91 if ( result ) { |
76 privateData.insert(ActivityDataKeyword, data); |
92 QVariantHash activity(parameters); |
77 QVariantHash publicData(parameters); |
93 RProcess process; |
78 RProcess process; |
94 registerThumbnail(activityId, activity); |
79 publicData.insert(ActivityApplicationKeyword, static_cast<int>(process.SecureId().iId)); |
95 activity.insert(ActivityApplicationKeyword, static_cast<int>(process.SecureId().iId)); |
80 publicData.insert(ActivityActivityKeyword, activityId); |
96 activity.insert(ActivityActivityKeyword, activityId); |
81 result = (KErrNone == mServerClient->updateActivity(privateData, publicData)); |
97 int error = mServerClient->updateActivity(activity); |
|
98 result = error == KErrNone ? true : false; |
|
99 } |
|
100 } |
82 } |
101 // @todo make those operations atomic |
|
102 return result; |
83 return result; |
103 } |
84 } |
104 |
85 |
105 QList<QVariantHash> ActivityClientPrivate::activities() const |
86 QList<QVariantHash> ActivityClientPrivate::activities() const |
106 { |
87 { |
136 } |
125 } |
137 } |
126 } |
138 } |
127 } |
139 return QVariantHash(); |
128 return QVariantHash(); |
140 } |
129 } |
141 |
|
142 void ActivityClientPrivate::registerThumbnail(const QString &name, QVariantHash &activity) |
|
143 { |
|
144 QVariantHash::const_iterator findIterator(activity.constFind(ActivityScreenshotKeyword)); |
|
145 if (activity.constEnd() != findIterator && |
|
146 findIterator.value().canConvert<QPixmap>()) { |
|
147 const QString thumbnailManagerName = thumbnailName(name); |
|
148 if (findIterator.value().value<QPixmap>().save(thumbnailManagerName)) { |
|
149 activity.insert(ActivityScreenshotKeyword, thumbnailManagerName); |
|
150 } else { |
|
151 activity.remove(ActivityScreenshotKeyword); |
|
152 } |
|
153 } |
|
154 } |
|
155 |
|
156 QString ActivityClientPrivate::thumbnailName(const QString &activityId) const |
|
157 { |
|
158 return QDir::toNativeSeparators(qApp->applicationDirPath() + |
|
159 "/" + |
|
160 QString::number(qHash(activityId), 16) + |
|
161 ".png"); |
|
162 } |
|
163 |
|