92 { |
92 { |
93 qDebug("CaClientProxy::updateWidgets start"); |
93 qDebug("CaClientProxy::updateWidgets start"); |
94 |
94 |
95 HsWidgetRegistryService *rs = |
95 HsWidgetRegistryService *rs = |
96 new HsWidgetRegistryService(mWidgetRegistryPath); |
96 new HsWidgetRegistryService(mWidgetRegistryPath); |
97 QList<HsWidgetToken> widgets = rs->widgets(); |
97 QList<HsWidgetComponentDescriptor> widgets = rs->widgets(); |
98 |
98 |
99 // Read widgets in order to add synchronize the content of the widgets |
99 // Read widgets in order to add synchronize the content of the widgets |
100 // registry with Content Storage database. |
100 // registry with Content Storage database. |
101 foreach(const HsWidgetToken &widgetToken, widgets) { |
101 foreach(const HsWidgetComponentDescriptor &widgetToken, widgets) { |
102 int uid = widgetToken.mUid; |
102 int uid = widgetToken.uid; |
103 |
103 addWidgetEntry(widgetToken, hsWidgetId(uid)); |
104 if (!hsWidgetExists(uid)) { |
|
105 // The given widget does not have a corresonding entry |
|
106 // in the databse, so such an entry needs do be created. |
|
107 addWidgetEntry(widgetToken); |
|
108 } |
|
109 } |
104 } |
110 |
105 |
111 delete rs; |
106 delete rs; |
112 qDebug("CaClientProxy::updateWidgets end"); |
107 qDebug("CaClientProxy::updateWidgets end"); |
113 } |
108 } |
114 |
109 |
115 /*! |
110 /*! |
116 Returns true if a widget with the given uid exists in the database. |
111 Returns true if a widget with the given uid exists in the database. |
117 */ |
112 */ |
118 void CaClientProxy::addWidgetEntry(const HsWidgetToken &widgetToken) |
113 void CaClientProxy::addWidgetEntry(const HsWidgetComponentDescriptor &widgetToken, |
119 { |
114 int widgetId) |
120 QString description = widgetToken.mDescription; |
115 { |
121 QString iconUri = widgetToken.mIconUri; |
116 QString description = widgetToken.description; |
122 QString library = widgetToken.mLibrary; |
117 QString iconUri = widgetToken.iconUri; |
123 QString title = widgetToken.mTitle; |
118 QString library = widgetToken.library; |
124 int uid = widgetToken.mUid; |
119 QString title = widgetToken.title; |
125 QString uri = widgetToken.mUri; |
120 int uid = widgetToken.uid; |
|
121 QString uri = widgetToken.uri; |
|
122 QString previewImage = widgetToken.previewImage; |
|
123 QString translationFileName = widgetToken.translationFilename; |
126 QSqlDatabase db = dbConnection(); |
124 QSqlDatabase db = dbConnection(); |
127 QSqlQuery query(db); |
125 QSqlQuery query(db); |
128 QString hexUid; |
126 QString hexUid; |
129 hexUid.setNum(uid,16); |
127 hexUid.setNum(uid,16); |
130 QDir currentDir = QDir::current(); |
128 QDir currentDir = QDir::current(); |
131 |
129 if (widgetId == -1) { |
132 // Add icon. |
130 // Add icon. |
133 QString queryAddIcon = |
131 QString queryAddIcon = |
134 "INSERT INTO CA_ICON " \ |
132 "INSERT INTO CA_ICON " \ |
135 "(IC_FILENAME) " \ |
133 "(IC_FILENAME) " \ |
136 "VALUES " \ |
134 "VALUES " \ |
137 "(?)"; |
135 "(?)"; |
138 |
136 |
139 query.prepare(queryAddIcon); |
137 query.prepare(queryAddIcon); |
140 query.addBindValue(iconUri); |
138 query.addBindValue(iconUri); |
141 query.exec(); |
139 query.exec(); |
142 qDebug() << query.executedQuery(); |
140 qDebug() << query.executedQuery(); |
143 |
141 |
144 // Add entry. |
142 // Add entry. |
145 QString queryAddEntry = |
143 QString queryAddEntry = |
146 "INSERT INTO CA_ENTRY " \ |
144 "INSERT INTO CA_ENTRY " \ |
147 "(EN_TEXT, EN_DESCRIPTION, EN_ROLE, EN_TYPE_NAME, EN_ICON_ID) " \ |
145 "(EN_TEXT, EN_DESCRIPTION, EN_ROLE, EN_TYPE_NAME, EN_ICON_ID) " \ |
148 "VALUES " \ |
146 "VALUES " \ |
149 "(?, ?, 1, 'widget', last_insert_rowid())"; |
147 "(?, ?, 1, 'widget', last_insert_rowid())"; |
150 |
148 |
151 query.prepare(queryAddEntry); |
149 query.prepare(queryAddEntry); |
152 query.addBindValue(title); |
150 query.addBindValue(title); |
153 query.addBindValue(description); |
151 query.addBindValue(description); |
154 query.exec(); |
152 query.exec(); |
155 qDebug() << query.executedQuery(); |
153 qDebug() << query.executedQuery(); |
156 |
154 |
157 // Get last id |
155 // Get last id |
158 QString queryLastId = "SELECT last_insert_rowid() AS LAST_ID"; |
156 QString queryLastId = "SELECT last_insert_rowid() AS LAST_ID"; |
159 query.prepare(queryLastId); |
157 query.prepare(queryLastId); |
160 query.exec(); |
158 query.exec(); |
161 query.next(); |
159 query.next(); |
162 int lastId = query.value(query.record().indexOf("LAST_ID")).toInt(); |
160 widgetId = query.value(query.record().indexOf("LAST_ID")).toInt(); |
|
161 } else { |
|
162 // update entry. |
|
163 QString queryUpdateEntry = |
|
164 "UPDATE CA_ENTRY SET EN_TEXT = ?, EN_DESCRIPTION = ? WHERE ENTRY_ID = ?"; |
|
165 |
|
166 query.prepare(queryUpdateEntry); |
|
167 query.addBindValue(title); |
|
168 query.addBindValue(description); |
|
169 query.addBindValue(widgetId); |
|
170 query.exec(); |
|
171 qDebug() << query.executedQuery(); |
|
172 |
|
173 QString queryUpdateIcon = |
|
174 "UPDATE CA_ICON SET IC_FILENAME = ? WHERE" \ |
|
175 " ICON_ID = (SELECT EN_ICON_ID FROM CA_ENTRY WHERE ENTRY_ID = ?)"; |
|
176 |
|
177 query.prepare(queryUpdateIcon); |
|
178 query.addBindValue(iconUri); |
|
179 query.addBindValue(widgetId); |
|
180 query.exec(); |
|
181 qDebug() << query.executedQuery(); |
|
182 |
|
183 // delete old attribute |
|
184 query.prepare("DELETE FROM CA_ATTRIBUTE WHERE AT_ENTRY_ID = ?"); |
|
185 query.addBindValue(widgetId); |
|
186 query.exec(); |
|
187 qDebug() << query.executedQuery(); |
|
188 } |
163 |
189 |
164 // Add attribute packageuid |
190 // Add attribute packageuid |
165 QString queryAddAttribute1 = |
191 QString queryAddAttribute1 = |
166 "INSERT INTO CA_ATTRIBUTE " \ |
192 "INSERT INTO CA_ATTRIBUTE " \ |
167 "(AT_ENTRY_ID, AT_NAME, AT_VALUE) " \ |
193 "(AT_ENTRY_ID, AT_NAME, AT_VALUE) " \ |
168 "VALUES " \ |
194 "VALUES " \ |
169 "(?, 'packageuid', ?)"; |
195 "(?, 'packageuid', ?)"; |
170 |
196 |
171 query.prepare(queryAddAttribute1); |
197 query.prepare(queryAddAttribute1); |
172 query.addBindValue(lastId); |
198 query.addBindValue(widgetId); |
173 query.addBindValue(hexUid); |
199 query.addBindValue(hexUid); |
174 query.exec(); |
200 query.exec(); |
175 qDebug() << query.executedQuery(); |
201 qDebug() << query.executedQuery(); |
176 |
202 |
177 // Add attribute widget uri |
203 // Add attribute widget uri |
193 "(AT_ENTRY_ID, AT_NAME, AT_VALUE) " \ |
219 "(AT_ENTRY_ID, AT_NAME, AT_VALUE) " \ |
194 "VALUES " \ |
220 "VALUES " \ |
195 "(?, 'widget:library', ?)"; |
221 "(?, 'widget:library', ?)"; |
196 |
222 |
197 query.prepare(queryAddAttribute3); |
223 query.prepare(queryAddAttribute3); |
198 query.addBindValue(lastId); |
224 query.addBindValue(widgetId); |
199 query.addBindValue(library); |
225 query.addBindValue(library); |
200 query.exec(); |
226 query.exec(); |
201 qDebug() << query.executedQuery(); |
227 qDebug() << query.executedQuery(); |
|
228 |
|
229 // Add attribute preview image |
|
230 if (!previewImage.isEmpty()) { |
|
231 QString queryAddPreviewImage = |
|
232 "INSERT INTO CA_ATTRIBUTE " \ |
|
233 "(AT_ENTRY_ID, AT_NAME, AT_VALUE) " \ |
|
234 "VALUES " \ |
|
235 "(?, 'preview_image_name', ?)"; |
|
236 |
|
237 query.prepare(queryAddPreviewImage); |
|
238 query.addBindValue(widgetId); |
|
239 query.addBindValue(previewImage); |
|
240 query.exec(); |
|
241 qDebug() << query.executedQuery(); |
|
242 } |
|
243 |
|
244 // Add attribute widget:traslation_file |
|
245 if (!translationFileName.isEmpty()) { |
|
246 QString queryAddWidgetTranslationFile = |
|
247 "INSERT INTO CA_ATTRIBUTE " \ |
|
248 "(AT_ENTRY_ID, AT_NAME, AT_VALUE) " \ |
|
249 "VALUES " \ |
|
250 "(?, 'widget:traslation_file', ?)"; |
|
251 |
|
252 query.prepare(queryAddWidgetTranslationFile); |
|
253 query.addBindValue(widgetId); |
|
254 query.addBindValue(translationFileName); |
|
255 query.exec(); |
|
256 qDebug() << query.executedQuery(); |
|
257 } |
202 } |
258 } |
203 |
259 |
204 /*! |
260 /*! |
205 Returns true if a widget with the given uid exists in the database. |
261 Returns true if a widget with the given uid exists in the database. |
206 */ |
262 */ |
207 bool CaClientProxy::hsWidgetExists(int uid) |
263 int CaClientProxy::hsWidgetId(int uid) |
208 { |
264 { |
209 bool exists(false); |
265 int result(-1); |
210 QSqlDatabase db = dbConnection(); |
266 QSqlDatabase db = dbConnection(); |
211 QSqlQuery query(db); |
267 QSqlQuery query(db); |
212 QString hexUid; |
268 QString hexUid; |
213 hexUid.setNum(uid,16); |
269 hexUid.setNum(uid,16); |
214 |
270 |