Merge lp:~renatofilho/telephony-service/sip-account into lp:telephony-service
- sip-account
- Merge into trunk
Status: | Superseded |
---|---|
Proposed branch: | lp:~renatofilho/telephony-service/sip-account |
Merge into: | lp:telephony-service |
Prerequisite: | lp:~boiko/telephony-service/voip_support |
Diff against target: |
725 lines (+619/-1) 14 files modified
CMakeLists.txt (+2/-1) accounts/CMakeLists.txt (+2/-0) accounts/common/DynamicField.qml (+150/-0) accounts/common/Main.qml (+84/-0) accounts/common/NewAccountInterface.qml (+264/-0) accounts/irc/CMakeLists.txt (+4/-0) accounts/irc/qml/CMakeLists.txt (+13/-0) accounts/irc/qml/NewAccount.qml (+40/-0) accounts/sip/CMakeLists.txt (+1/-0) accounts/sip/qml/CMakeLists.txt (+13/-0) accounts/sip/qml/NewAccount.qml (+26/-0) debian/account-plugin-irc-unity8.install (+1/-0) debian/account-plugin-sip-unity8.install (+1/-0) debian/control (+18/-0) |
To merge this branch: | bzr merge lp:~renatofilho/telephony-service/sip-account |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
system-apps-ci-bot | continuous-integration | Needs Fixing | |
Ubuntu Phablet Team | Pending | ||
Review via email: mp+313390@code.launchpad.net |
This proposal has been superseded by a proposal from 2016-12-21.
Commit message
Create unity8 sip account package.
Description of the change
- 969. By Renato Araujo Oliveira Filho
-
Fix arch for online-account package.
system-apps-ci-bot (system-apps-ci-bot) wrote : | # |
system-apps-ci-bot (system-apps-ci-bot) wrote : | # |
FAILED: Continuous integration, rev:969
https:/
Executed test runs:
FAILURE: https:/
SUCCESS: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
FAILURE: https:/
FAILURE: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
FAILURE: https:/
SUCCESS: https:/
deb: https:/
FAILURE: https:/
Click here to trigger a rebuild:
https:/
- 970. By Renato Araujo Oliveira Filho
-
Refactory account plugin to allow extend it to new protocols.
system-apps-ci-bot (system-apps-ci-bot) wrote : | # |
FAILED: Continuous integration, rev:970
https:/
Executed test runs:
FAILURE: https:/
SUCCESS: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
FAILURE: https:/
SUCCESS: https:/
deb: https:/
FAILURE: https:/
SUCCESS: https:/
deb: https:/
FAILURE: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
Click here to trigger a rebuild:
https:/
- 971. By Renato Araujo Oliveira Filho
-
Created 'irc' account plugin.
- 972. By Renato Araujo Oliveira Filho
-
Moved 'messaging-
app.application ' to messaging app package.
system-apps-ci-bot (system-apps-ci-bot) wrote : | # |
FAILED: Continuous integration, rev:972
https:/
Executed test runs:
FAILURE: https:/
SUCCESS: https:/
FAILURE: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
FAILURE: https:/
SUCCESS: https:/
deb: https:/
FAILURE: https:/
FAILURE: https:/
Click here to trigger a rebuild:
https:/
- 973. By Renato Araujo Oliveira Filho
-
Update accounts view layout.
system-apps-ci-bot (system-apps-ci-bot) wrote : | # |
FAILED: Continuous integration, rev:973
https:/
Executed test runs:
FAILURE: https:/
SUCCESS: https:/
SUCCESS: https:/
deb: https:/
FAILURE: https:/
SUCCESS: https:/
deb: https:/
FAILURE: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
FAILURE: https:/
Click here to trigger a rebuild:
https:/
- 974. By Renato Araujo Oliveira Filho
-
Implemented support fo advaced fields on sip and irc accounts.
system-apps-ci-bot (system-apps-ci-bot) wrote : | # |
FAILED: Continuous integration, rev:974
https:/
Executed test runs:
FAILURE: https:/
SUCCESS: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
FAILURE: https:/
SUCCESS: https:/
deb: https:/
FAILURE: https:/
SUCCESS: https:/
deb: https:/
FAILURE: https:/
SUCCESS: https:/
deb: https:/
Click here to trigger a rebuild:
https:/
- 975. By Renato Araujo Oliveira Filho
-
Do not store empty parameters.
system-apps-ci-bot (system-apps-ci-bot) wrote : | # |
FAILED: Continuous integration, rev:975
https:/
Executed test runs:
FAILURE: https:/
SUCCESS: https:/
SUCCESS: https:/
deb: https:/
SUCCESS: https:/
deb: https:/
FAILURE: https:/
SUCCESS: https:/
deb: https:/
FAILURE: https:/
SUCCESS: https:/
deb: https:/
FAILURE: https:/
FAILURE: https:/
SUCCESS: https:/
deb: https:/
Click here to trigger a rebuild:
https:/
- 976. By Renato Araujo Oliveira Filho
-
Parent merged.
- 977. By Renato Araujo Oliveira Filho
-
Fix irc account params.
- 978. By Renato Araujo Oliveira Filho
-
Implement support for password on IRC account.
- 979. By Renato Araujo Oliveira Filho
-
Fixed irc account creation.
Unmerged revisions
- 979. By Renato Araujo Oliveira Filho
-
Fixed irc account creation.
- 978. By Renato Araujo Oliveira Filho
-
Implement support for password on IRC account.
- 977. By Renato Araujo Oliveira Filho
-
Fix irc account params.
- 976. By Renato Araujo Oliveira Filho
-
Parent merged.
- 975. By Renato Araujo Oliveira Filho
-
Do not store empty parameters.
- 974. By Renato Araujo Oliveira Filho
-
Implemented support fo advaced fields on sip and irc accounts.
- 973. By Renato Araujo Oliveira Filho
-
Update accounts view layout.
- 972. By Renato Araujo Oliveira Filho
-
Moved 'messaging-
app.application ' to messaging app package. - 971. By Renato Araujo Oliveira Filho
-
Created 'irc' account plugin.
- 970. By Renato Araujo Oliveira Filho
-
Refactory account plugin to allow extend it to new protocols.
Preview Diff
1 | === modified file 'CMakeLists.txt' |
2 | --- CMakeLists.txt 2016-12-20 16:33:54 +0000 |
3 | +++ CMakeLists.txt 2016-12-20 16:33:55 +0000 |
4 | @@ -46,7 +46,7 @@ |
5 | |
6 | option(SKIP_QML_TESTS "Skip QML tests" OFF) |
7 | |
8 | -if(NOT CMAKE_CROSSCOMPILING) |
9 | +if(CMAKE_CROSSCOMPILING) |
10 | find_program(QMAKE_EXECUTABLE qmake) |
11 | if(QMAKE_EXECUTABLE STREQUAL "QMAKE_EXECUTABLE-NOTFOUND") |
12 | message(FATAL_ERROR "qmake not found") |
13 | @@ -112,6 +112,7 @@ |
14 | add_subdirectory(po) |
15 | add_subdirectory(tests) |
16 | add_subdirectory(protocols) |
17 | +add_subdirectory(accounts) |
18 | |
19 | include(EnableCoverageReport) |
20 | ##################################################################### |
21 | |
22 | === added directory 'accounts' |
23 | === added file 'accounts/CMakeLists.txt' |
24 | --- accounts/CMakeLists.txt 1970-01-01 00:00:00 +0000 |
25 | +++ accounts/CMakeLists.txt 2016-12-20 16:33:55 +0000 |
26 | @@ -0,0 +1,2 @@ |
27 | +add_subdirectory(sip) |
28 | +add_subdirectory(irc) |
29 | |
30 | === added directory 'accounts/common' |
31 | === added file 'accounts/common/DynamicField.qml' |
32 | --- accounts/common/DynamicField.qml 1970-01-01 00:00:00 +0000 |
33 | +++ accounts/common/DynamicField.qml 2016-12-20 16:33:55 +0000 |
34 | @@ -0,0 +1,150 @@ |
35 | +import QtQuick 2.0 |
36 | +import Ubuntu.Components 1.3 |
37 | + |
38 | +Loader { |
39 | + id: root |
40 | + |
41 | + property var model |
42 | + readonly property string value: status === Loader.Ready ? item.value : "" |
43 | + readonly property bool isEmpty: status === Loader.Ready ? item.isEmpty : true |
44 | + |
45 | + Component { |
46 | + id: stringField |
47 | + |
48 | + TextField { |
49 | + id: field |
50 | + |
51 | + property alias label: field.placeholderText |
52 | + property string defaultValue |
53 | + |
54 | + readonly property alias value: field.text |
55 | + readonly property bool isEmpty: value === "" || (defaultValue && value === model.defaultValue) |
56 | + |
57 | + text: defaultValue ? defaultValue : "" |
58 | + } |
59 | + } |
60 | + |
61 | + Component { |
62 | + id: booleanField |
63 | + |
64 | + Item { |
65 | + property alias label: fieldLabel.text |
66 | + property string defaultValue |
67 | + |
68 | + readonly property string value: fieldValue.checked ? "true" : "false" |
69 | + readonly property bool isEmpty: (defaultValue && value === model.defaultValue) |
70 | + |
71 | + height: fieldValue.height |
72 | + |
73 | + Label { |
74 | + id: fieldLabel |
75 | + |
76 | + anchors { |
77 | + left: parent.left |
78 | + right: fieldValue.left |
79 | + verticalCenter: parent.verticalCenter |
80 | + } |
81 | + } |
82 | + Switch { |
83 | + id: fieldValue |
84 | + |
85 | + anchors { |
86 | + right: parent.right |
87 | + verticalCenter: parent.verticalCenter |
88 | + } |
89 | + checked: (defaultValue && (defaultValue === 'true')) |
90 | + } |
91 | + } |
92 | + } |
93 | + |
94 | + Component { |
95 | + id: numericField |
96 | + |
97 | + TextField { |
98 | + id: field |
99 | + |
100 | + property alias label: field.placeholderText |
101 | + property string defaultValue |
102 | + |
103 | + readonly property alias value: field.text |
104 | + readonly property bool isEmpty: value === "" || (defaultValue && (value === defaultValue)) |
105 | + |
106 | + inputMethodHints: Qt.ImhDigitsOnly |
107 | + validator: IntValidator {} |
108 | + } |
109 | + } |
110 | + |
111 | + Component{ |
112 | + id: passwordField |
113 | + |
114 | + Item { |
115 | + property alias label: field.placeholderText |
116 | + readonly property alias value: field.text |
117 | + readonly property bool isEmpty: value === "" |
118 | + |
119 | + height: field.height + showPasswordCheck.height |
120 | + TextField { |
121 | + id: field |
122 | + |
123 | + echoMode: showPasswordCheck.checked ? TextInput.Normal : TextInput.Password |
124 | + anchors { |
125 | + left: parent.left |
126 | + right: parent.right |
127 | + } |
128 | + } |
129 | + CheckBox { |
130 | + id: showPasswordCheck |
131 | + anchors { |
132 | + left: field.left |
133 | + top: field.bottom |
134 | + topMargin: units.gu(1) |
135 | + } |
136 | + } |
137 | + Label { |
138 | + text: i18n.tr("Show Password") |
139 | + anchors { |
140 | + top: showPasswordCheck.top |
141 | + left: showPasswordCheck.right |
142 | + leftMargin: units.gu(1) |
143 | + right: field.right |
144 | + } |
145 | + } |
146 | + } |
147 | + } |
148 | + |
149 | + |
150 | + sourceComponent: { |
151 | + if (!model) |
152 | + return null |
153 | + |
154 | + if (!model.inputType) { |
155 | + console.warn("Model does not contain 'inputType'") |
156 | + return null |
157 | + } |
158 | + |
159 | + switch (model.inputType) { |
160 | + case 'string': |
161 | + return stringField |
162 | + case 'boolean': |
163 | + return booleanField |
164 | + case 'numeric': |
165 | + return numericField |
166 | + case 'password': |
167 | + return passwordField |
168 | + } |
169 | + } |
170 | + |
171 | + Binding { |
172 | + target: root.item |
173 | + property: "label" |
174 | + value: model.label |
175 | + when: status == Loader.Ready |
176 | + } |
177 | + |
178 | + Binding { |
179 | + target: root.item |
180 | + property: "defaultValue" |
181 | + value: model.hasOwnProperty('defaultValue') ? model.defaultValue : undefined |
182 | + when: status == Loader.Ready |
183 | + } |
184 | +} |
185 | |
186 | === added file 'accounts/common/Main.qml' |
187 | --- accounts/common/Main.qml 1970-01-01 00:00:00 +0000 |
188 | +++ accounts/common/Main.qml 2016-12-20 16:33:55 +0000 |
189 | @@ -0,0 +1,84 @@ |
190 | +import QtQuick 2.0 |
191 | +import Ubuntu.Components 1.3 |
192 | +import Ubuntu.OnlineAccounts.Plugin 1.0 |
193 | + |
194 | +Item { |
195 | + id: rootFlickable |
196 | + |
197 | + property int keyboardSize: Qt.inputMethod.visible ? Qt.inputMethod.keyboardRectangle.height : 0 |
198 | + |
199 | + signal finished |
200 | + |
201 | + anchors.fill: parent |
202 | + |
203 | + Flickable { |
204 | + anchors { |
205 | + left: parent.left |
206 | + right: parent.right |
207 | + top: parent.top |
208 | + bottom: btnConfirm.top |
209 | + } |
210 | + contentWidth: parent.width |
211 | + contentHeight: editPageLoader.item.height + keyboardSize |
212 | + clip: true |
213 | + |
214 | + Loader { |
215 | + id: editPageLoader |
216 | + sourceComponent: account.accountId != 0 ? existingAccountComponent : newAccountComponent |
217 | + anchors { |
218 | + left: parent.left |
219 | + right: parent.right |
220 | + } |
221 | + |
222 | + Connections { |
223 | + target: editPageLoader.item |
224 | + onFinished: rootFlickable.finished() |
225 | + } |
226 | + } |
227 | + |
228 | + Component { |
229 | + id: newAccountComponent |
230 | + NewAccount {} |
231 | + } |
232 | + |
233 | + Component { |
234 | + id: existingAccountComponent |
235 | + Options {} |
236 | + } |
237 | + } |
238 | + |
239 | + Button { |
240 | + id: btnConfirm |
241 | + text: i18n.tr("Continue") |
242 | + color: UbuntuColors.orange |
243 | + anchors { |
244 | + left: parent.left |
245 | + right: parent.right |
246 | + bottom: btnCancel.top |
247 | + margins: units.gu(2) |
248 | + bottomMargin: units.gu(1) |
249 | + } |
250 | + onClicked: { |
251 | + if (editPageLoader.item) |
252 | + editPageLoader.item.confirm() |
253 | + } |
254 | + |
255 | + } |
256 | + |
257 | + Button { |
258 | + id: btnCancel |
259 | + |
260 | + text: i18n.tr("Cancel") |
261 | + anchors { |
262 | + left: parent.left |
263 | + right: parent.right |
264 | + bottom: parent.bottom |
265 | + margins: units.gu(2) |
266 | + bottomMargin: units.gu(1) |
267 | + } |
268 | + onClicked: { |
269 | + if (editPageLoader.item) |
270 | + editPageLoader.item.cancel() |
271 | + } |
272 | + } |
273 | +} |
274 | |
275 | === added file 'accounts/common/NewAccountInterface.qml' |
276 | --- accounts/common/NewAccountInterface.qml 1970-01-01 00:00:00 +0000 |
277 | +++ accounts/common/NewAccountInterface.qml 2016-12-20 16:33:55 +0000 |
278 | @@ -0,0 +1,264 @@ |
279 | +import QtQuick 2.0 |
280 | +import Ubuntu.Components 1.3 |
281 | +import Ubuntu.OnlineAccounts 0.1 |
282 | + |
283 | +Item { |
284 | + id: root |
285 | + |
286 | + readonly property string keyPrefix: "telepathy/" |
287 | + readonly property var accountObjectHandle: account ? account.objectHandle : undefined |
288 | + |
289 | + property string manager |
290 | + property string protocol |
291 | + property string icon |
292 | + property var params |
293 | + property var advancedParams |
294 | + property bool hasCrendentials: true |
295 | + |
296 | + signal finished |
297 | + height: fields.childrenRect.height + |
298 | + units.gu(10) |
299 | + |
300 | + function getAccountService() { |
301 | + var service = serviceModel.get(0, "accountServiceHandle") |
302 | + if (!service) { |
303 | + console.warn("No service handle from model") |
304 | + return null |
305 | + } |
306 | + |
307 | + return accountServiceComponent.createObject(null, |
308 | + {"objectHandle": service}) |
309 | + } |
310 | + |
311 | + function extendedSettings(inputFields) |
312 | + { |
313 | + return {} |
314 | + //Helper class to be extended by derived class |
315 | + } |
316 | + |
317 | + function saveServiceSettings(serviceIM, creds) { |
318 | + var settingsIM = serviceIM.settings |
319 | + var inputFields = {} |
320 | + |
321 | + settingsIM[root.keyPrefix + 'manager'] = root.manager |
322 | + settingsIM[root.keyPrefix + 'protocol'] = root.protocol |
323 | + settingsIM[root.keyPrefix + 'Icon'] = root.icon |
324 | + |
325 | + // basic fields |
326 | + for (var i=0; i < paramsRepeater.count; i++) { |
327 | + var fieldData = root.params[i] |
328 | + var field = paramsRepeater.itemAt(i) |
329 | + var fieldParamName = root.keyPrefix + 'param-' + fieldData.name |
330 | + |
331 | + if (field.isEmpty) { |
332 | + delete settingsIM[fieldParamName] |
333 | + } else { |
334 | + inputFields[fieldData.name] = field.value |
335 | + if (fieldData.store) { |
336 | + settingsIM[fieldParamName] = field.value |
337 | + } |
338 | + } |
339 | + } |
340 | + |
341 | + // advanced fields |
342 | + for (var i=0; i < advancedParamsRepeater.count; i++) { |
343 | + var xFieldData = root.advancedParams[i] |
344 | + var xField = advancedParamsRepeater.itemAt(i) |
345 | + var xFieldParamName = root.keyPrefix + 'param-' + xFieldData.name |
346 | + |
347 | + if (xField.isEmpty) { |
348 | + delete settingsIM[xFieldParamName] |
349 | + } else { |
350 | + inputFields[xFieldData.name] = xField.value |
351 | + |
352 | + if (xFieldData.store) { |
353 | + settingsIM[xFieldParamName] = xField.value |
354 | + } |
355 | + } |
356 | + } |
357 | + |
358 | + |
359 | + var xSettings = extendedSettings(inputFields) |
360 | + for (var key in xSettings) { |
361 | + settingsIM[root.keyPrefix + key] = xSettings[key] |
362 | + } |
363 | + |
364 | + serviceIM.updateSettings(settingsIM) |
365 | + //serviceIM.credentials = creds |
366 | + //serviceIM.updateServiceEnabled(true) |
367 | + } |
368 | + |
369 | + function continueAccountSave(creds) { |
370 | + var imService = root.getAccountService() |
371 | + if (!imService) { |
372 | + console.warn("Fail to retrieve account service") |
373 | + return |
374 | + } |
375 | + |
376 | + root.saveServiceSettings(imService, creds) |
377 | + if (creds) |
378 | + globalAccountService.credentials = creds |
379 | + globalAccountService.updateServiceEnabled(true) |
380 | + |
381 | + account.synced.connect(root.finished) |
382 | + account.sync() |
383 | + } |
384 | + |
385 | + function credentialsStored() { |
386 | + if (creds.credentialsId === 0) { |
387 | + console.warn("Credentials not stored correct") |
388 | + return |
389 | + } |
390 | + |
391 | + var imService = root.getAccountService() |
392 | + if (!imService) { |
393 | + console.warn("Fail to retrieve account service") |
394 | + return |
395 | + } |
396 | + |
397 | + continueAccountSave(creds) |
398 | + } |
399 | + |
400 | + function parseCrendentials() { |
401 | + var credentials = {'userName': '', 'password': ''} |
402 | + |
403 | + for (var i=0; i < paramsRepeater.count; i++) { |
404 | + var fieldData = root.params[i] |
405 | + var field = paramsRepeater.itemAt(i) |
406 | + |
407 | + if (fieldData.name === 'account') |
408 | + credentials['userName'] = field.value |
409 | + |
410 | + if (fieldData.name === 'password') |
411 | + credentials['password'] = field.value |
412 | + } |
413 | + |
414 | + return credentials |
415 | + } |
416 | + |
417 | + function cancel() { |
418 | + account.removed.connect(root.finished) |
419 | + account.remove(Account.RemoveCredentials) |
420 | + } |
421 | + |
422 | + function confirm() { |
423 | + var info = root.parseCrendentials() |
424 | + // save account |
425 | + account.updateDisplayName(info.userName) |
426 | + if (root.hasCrendentials) { |
427 | + creds.userName = info.userName |
428 | + creds.secret = info.password |
429 | + creds.sync() |
430 | + } else { |
431 | + continueAccountSave(null) |
432 | + } |
433 | + } |
434 | + |
435 | + Column { |
436 | + id: fields |
437 | + |
438 | + anchors { |
439 | + top: parent.top |
440 | + topMargin: units.gu(5) |
441 | + left: parent.left |
442 | + right: parent.right |
443 | + } |
444 | + height: childrenRect.height |
445 | + spacing: units.gu(2) |
446 | + |
447 | + Icon { |
448 | + anchors.horizontalCenter: fields.horizontalCenter |
449 | + name: root.icon |
450 | + } |
451 | + |
452 | + Repeater { |
453 | + id: paramsRepeater |
454 | + |
455 | + width: parent.width |
456 | + model: root.params |
457 | + DynamicField { |
458 | + model: modelData |
459 | + anchors{ |
460 | + left: parent.left |
461 | + right: parent.right |
462 | + margins: units.gu(4) |
463 | + } |
464 | + } |
465 | + } |
466 | + |
467 | + Item { |
468 | + id: div |
469 | + |
470 | + anchors{ |
471 | + left: parent.left |
472 | + right: parent.right |
473 | + } |
474 | + height: units.gu(3) |
475 | + visible: root.advancedParams.length > 0 |
476 | + } |
477 | + |
478 | + Label { |
479 | + id: advancedParamsTitle |
480 | + |
481 | + anchors{ |
482 | + left: parent.left |
483 | + right: parent.right |
484 | + margins: units.gu(4) |
485 | + } |
486 | + visible: root.advancedParams.length > 0 |
487 | + text: i18n.tr("Advanced Options") |
488 | + textSize: Label.Medium |
489 | + } |
490 | + |
491 | + Repeater { |
492 | + id: advancedParamsRepeater |
493 | + |
494 | + width: parent.width |
495 | + model: root.advancedParams |
496 | + DynamicField { |
497 | + model: modelData |
498 | + anchors{ |
499 | + left: parent.left |
500 | + right: parent.right |
501 | + margins: units.gu(4) |
502 | + } |
503 | + } |
504 | + } |
505 | + } |
506 | + |
507 | + AccountService { |
508 | + id: globalAccountService |
509 | + |
510 | + objectHandle: account.accountServiceHandle |
511 | + autoSync: false |
512 | + } |
513 | + |
514 | + Credentials { |
515 | + id: creds |
516 | + |
517 | + caption: account.provider.id |
518 | + acl: "*" // untill later |
519 | + storeSecret: true |
520 | + onCredentialsIdChanged: { |
521 | + console.debug("Credetials id changed") |
522 | + root.credentialsStored() |
523 | + } |
524 | + } |
525 | + |
526 | + // necessary to store settings on the "IM" service |
527 | + AccountServiceModel { |
528 | + id: serviceModel |
529 | + |
530 | + includeDisabled: true |
531 | + account: root.accountObjectHandle |
532 | + serviceType: "IM" |
533 | + } |
534 | + |
535 | + Component { |
536 | + id: accountServiceComponent |
537 | + |
538 | + AccountService { |
539 | + autoSync: false |
540 | + } |
541 | + } |
542 | +} |
543 | |
544 | === added directory 'accounts/irc' |
545 | === added file 'accounts/irc/CMakeLists.txt' |
546 | --- accounts/irc/CMakeLists.txt 1970-01-01 00:00:00 +0000 |
547 | +++ accounts/irc/CMakeLists.txt 2016-12-20 16:33:55 +0000 |
548 | @@ -0,0 +1,4 @@ |
549 | +file(GLOB APPLICATION_FILES *.application) |
550 | + |
551 | +install(FILES ${APPLICATION_FILES} DESTINATION share/accounts/applications/) |
552 | +add_subdirectory(qml) |
553 | |
554 | === added directory 'accounts/irc/qml' |
555 | === added file 'accounts/irc/qml/AccountInfo.qml' |
556 | === added file 'accounts/irc/qml/CMakeLists.txt' |
557 | --- accounts/irc/qml/CMakeLists.txt 1970-01-01 00:00:00 +0000 |
558 | +++ accounts/irc/qml/CMakeLists.txt 2016-12-20 16:33:55 +0000 |
559 | @@ -0,0 +1,13 @@ |
560 | +file(GLOB QML_PLUGIN_FILES *.qml) |
561 | + |
562 | +# The path (including plug-in name) where the QML files are installed |
563 | +set(QML_PLUGIN_INSTALL_DIR share/accounts/qml-plugins/irc/) |
564 | + |
565 | +# Do not install symbolic links |
566 | +set (QML_PLUGIN_RESOLVED_FILES "") |
567 | +foreach (QML_PLUGIN_FILE ${QML_PLUGIN_FILES}) |
568 | + get_filename_component(resolvedFile "${QML_PLUGIN_FILE}" REALPATH) |
569 | + list (APPEND QML_PLUGIN_RESOLVED_FILES "${resolvedFile}") |
570 | +endforeach() |
571 | + |
572 | +install(FILES ${QML_PLUGIN_RESOLVED_FILES} DESTINATION ${QML_PLUGIN_INSTALL_DIR}) |
573 | |
574 | === added symlink 'accounts/irc/qml/DynamicField.qml' |
575 | === target is u'../../common/DynamicField.qml' |
576 | === added symlink 'accounts/irc/qml/Main.qml' |
577 | === target is u'../../common/Main.qml' |
578 | === added file 'accounts/irc/qml/NewAccount.qml' |
579 | --- accounts/irc/qml/NewAccount.qml 1970-01-01 00:00:00 +0000 |
580 | +++ accounts/irc/qml/NewAccount.qml 2016-12-20 16:33:55 +0000 |
581 | @@ -0,0 +1,40 @@ |
582 | +import QtQuick 2.0 |
583 | + |
584 | +NewAccountInterface { |
585 | + id: root |
586 | + |
587 | + anchors { |
588 | + left: parent.left |
589 | + right: parent.right |
590 | + verticalCenter: parent.verticalCenter |
591 | + } |
592 | + |
593 | + manager: 'idle' |
594 | + protocol: 'irc' |
595 | + icon: 'irc' |
596 | + hasCrendentials: false |
597 | + params: [ |
598 | + {'name': 'server', 'inputType': 'string', 'label': i18n.tr('Network. (Eg: chat.freenode.net)'), 'store': true}, |
599 | + {'name': 'account', 'inputType': 'string', 'label': i18n.tr('Nickname'), 'store': true}, |
600 | + {'name': 'password', 'inputType': 'password', 'label': i18n.tr('Password'), 'store': false} |
601 | + ] |
602 | + advancedParams: [ |
603 | + {'name': 'username', 'inputType': 'string', 'label': i18n.tr('Username'), 'store': true}, |
604 | + {'name': 'fullname', 'inputType': 'string', 'label': i18n.tr('Real name'), 'store': true}, |
605 | + {'name': 'quit-message', 'inputType': 'string', 'label': i18n.tr('Quit message'), 'store': true}, |
606 | + ] |
607 | + |
608 | + function extendedSettings(inputFields) |
609 | + { |
610 | + var settings = {} |
611 | + settings['Service'] = inputFields['server'] |
612 | + settings['NickName'] = inputFields['account'] |
613 | + settings['NormalizedName'] = encodeURI(inputFields['account']) |
614 | + //FIXME: maybe move the following params to advancedParams |
615 | + settings['param-charset'] = 'UTF-8' |
616 | + settings['param-port'] = '6697' |
617 | + settings['use-ssl'] = 'true' |
618 | + return settings |
619 | + } |
620 | + |
621 | +} |
622 | |
623 | === added symlink 'accounts/irc/qml/NewAccountInterface.qml' |
624 | === target is u'../../common/NewAccountInterface.qml' |
625 | === added directory 'accounts/sip' |
626 | === added file 'accounts/sip/CMakeLists.txt' |
627 | --- accounts/sip/CMakeLists.txt 1970-01-01 00:00:00 +0000 |
628 | +++ accounts/sip/CMakeLists.txt 2016-12-20 16:33:55 +0000 |
629 | @@ -0,0 +1,1 @@ |
630 | +add_subdirectory(qml) |
631 | |
632 | === added directory 'accounts/sip/qml' |
633 | === added file 'accounts/sip/qml/AccountInfo.qml' |
634 | === added file 'accounts/sip/qml/CMakeLists.txt' |
635 | --- accounts/sip/qml/CMakeLists.txt 1970-01-01 00:00:00 +0000 |
636 | +++ accounts/sip/qml/CMakeLists.txt 2016-12-20 16:33:55 +0000 |
637 | @@ -0,0 +1,13 @@ |
638 | +file(GLOB QML_PLUGIN_FILES *.qml) |
639 | + |
640 | +# The path (including plug-in name) where the QML files are installed |
641 | +set(QML_PLUGIN_INSTALL_DIR share/accounts/qml-plugins/sip/) |
642 | + |
643 | +# Do not install symbolic links |
644 | +set (QML_PLUGIN_RESOLVED_FILES "") |
645 | +foreach (QML_PLUGIN_FILE ${QML_PLUGIN_FILES}) |
646 | + get_filename_component(resolvedFile "${QML_PLUGIN_FILE}" REALPATH) |
647 | + list (APPEND QML_PLUGIN_RESOLVED_FILES "${resolvedFile}") |
648 | +endforeach() |
649 | + |
650 | +install(FILES ${QML_PLUGIN_RESOLVED_FILES} DESTINATION ${QML_PLUGIN_INSTALL_DIR}) |
651 | |
652 | === added symlink 'accounts/sip/qml/DynamicField.qml' |
653 | === target is u'../../common/DynamicField.qml' |
654 | === added symlink 'accounts/sip/qml/Main.qml' |
655 | === target is u'../../common/Main.qml' |
656 | === added file 'accounts/sip/qml/NewAccount.qml' |
657 | --- accounts/sip/qml/NewAccount.qml 1970-01-01 00:00:00 +0000 |
658 | +++ accounts/sip/qml/NewAccount.qml 2016-12-20 16:33:55 +0000 |
659 | @@ -0,0 +1,26 @@ |
660 | +import QtQuick 2.0 |
661 | + |
662 | +NewAccountInterface { |
663 | + id: root |
664 | + |
665 | + manager: 'sofiasip' |
666 | + protocol: 'sip' |
667 | + icon: 'sip' |
668 | + params: [ |
669 | + {'name': 'account', 'inputType': 'string', 'label': i18n.tr('Sip Id. (Eg: user@my.sip.net)'), 'store': true}, |
670 | + {'name': 'password', 'inputType': 'password', 'label': i18n.tr('Password'), 'store': false} |
671 | + ] |
672 | + advancedParams: [ |
673 | + {'name': 'discover-stun', 'inputType': 'boolean', 'label': i18n.tr('Discover the STUN server automatically'), 'store': true, 'defaultValue' : 'false' }, |
674 | + {'name': 'stun-server', 'inputType': 'string', 'label': i18n.tr('STUN server'), 'store': true}, |
675 | + {'name': 'stun-port', 'inputType': 'numeric', 'label': i18n.tr('STUN port'), 'store': true}, |
676 | + {'name': 'discover-binding', 'inputType': 'boolean', 'label': i18n.tr('Divscover Binding'), 'store': true, 'defaultValue': 'true'}, |
677 | + {'name': 'proxy-host', 'inputType': 'string', 'label': i18n.tr('Proxy server'), 'store': true}, |
678 | + {'name': 'port', 'inputType': 'numeric', 'label': i18n.tr('Proxy port'), 'store': true}, |
679 | + {'name': 'keepalive-mechanism', 'inputType': 'string', 'label': i18n.tr('Keep alive mechanism'), 'store': true, 'defaultValue': 'auto'}, |
680 | + {'name': 'keepalive-interval', 'inputType': 'numeric', 'label': i18n.tr('Keep alive interval'), 'store': true}, |
681 | + {'name': 'auth-user', 'inputType': 'string', 'label': i18n.tr('Authentication username'), 'store': true}, |
682 | + {'name': 'transport', 'inputType': 'string', 'label': i18n.tr('Transport'), 'store': true, 'defaultValue': 'auto'}, |
683 | + {'name': 'loose-routing', 'inputType': 'boolean', 'label': i18n.tr('Loose Routing'), 'store': true, 'defaultValue': 'false'} |
684 | + ] |
685 | +} |
686 | |
687 | === added symlink 'accounts/sip/qml/NewAccountInterface.qml' |
688 | === target is u'../../common/NewAccountInterface.qml' |
689 | === added file 'debian/account-plugin-irc-unity8.install' |
690 | --- debian/account-plugin-irc-unity8.install 1970-01-01 00:00:00 +0000 |
691 | +++ debian/account-plugin-irc-unity8.install 2016-12-20 16:33:55 +0000 |
692 | @@ -0,0 +1,1 @@ |
693 | +usr/share/accounts/qml-plugins/irc/* |
694 | |
695 | === added file 'debian/account-plugin-sip-unity8.install' |
696 | --- debian/account-plugin-sip-unity8.install 1970-01-01 00:00:00 +0000 |
697 | +++ debian/account-plugin-sip-unity8.install 2016-12-20 16:33:55 +0000 |
698 | @@ -0,0 +1,1 @@ |
699 | +usr/share/accounts/qml-plugins/sip/* |
700 | |
701 | === modified file 'debian/control' |
702 | --- debian/control 2016-11-29 01:04:13 +0000 |
703 | +++ debian/control 2016-12-20 16:33:55 +0000 |
704 | @@ -92,3 +92,21 @@ |
705 | This package contains the QML plugin providing the features from the telephony |
706 | PhoneNumber to applications. |
707 | |
708 | +Package: account-plugin-sip-unity8 |
709 | +Architecture: all |
710 | +Pre-Depends: dpkg (>= 1.15.6~) |
711 | +Depends: account-plugin-sip |
712 | +Description: Online account plugin for unity8 |
713 | + Online account plugin for unity8. |
714 | + . |
715 | + This package contains the online account plugin providing sip account. |
716 | + |
717 | +Package: account-plugin-irc-unity8 |
718 | +Architecture: all |
719 | +Pre-Depends: dpkg (>= 1.15.6~) |
720 | +Depends: account-plugin-irc |
721 | +Description: Online account plugin for unity8 |
722 | + Online account plugin for unity8. |
723 | + . |
724 | + This package contains the online account plugin providing irc account. |
725 | + |
FAILED: Continuous integration, rev:968 /jenkins. canonical. com/system- apps/job/ lp-telephony- service- ci/99/ /jenkins. canonical. com/system- apps/job/ build/2197/ console /jenkins. canonical. com/system- apps/job/ build-0- fetch/2200 /jenkins. canonical. com/system- apps/job/ build-2- binpkg/ arch=amd64, release= vivid+overlay/ 2027/console /jenkins. canonical. com/system- apps/job/ build-2- binpkg/ arch=amd64, release= xenial+ overlay/ 2027/console /jenkins. canonical. com/system- apps/job/ build-2- binpkg/ arch=amd64, release= zesty/2027/ console /jenkins. canonical. com/system- apps/job/ build-2- binpkg/ arch=armhf, release= vivid+overlay/ 2027/console /jenkins. canonical. com/system- apps/job/ build-2- binpkg/ arch=armhf, release= xenial+ overlay/ 2027/console /jenkins. canonical. com/system- apps/job/ build-2- binpkg/ arch=armhf, release= zesty/2027/ console /jenkins. canonical. com/system- apps/job/ build-2- binpkg/ arch=i386, release= vivid+overlay/ 2027/console /jenkins. canonical. com/system- apps/job/ build-2- binpkg/ arch=i386, release= xenial+ overlay/ 2027/console /jenkins. canonical. com/system- apps/job/ build-2- binpkg/ arch=i386, release= zesty/2027/ console
https:/
Executed test runs:
FAILURE: https:/
SUCCESS: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
FAILURE: https:/
Click here to trigger a rebuild: /jenkins. canonical. com/system- apps/job/ lp-telephony- service- ci/99/rebuild
https:/