Merge lp:~zeller-benjamin/qtcreator-plugin-ubuntu/reviewtasks into lp:qtcreator-plugin-ubuntu
- reviewtasks
- Merge into trunk
Status: | Merged | ||||
---|---|---|---|---|---|
Approved by: | Zoltan Balogh | ||||
Approved revision: | 277 | ||||
Merged at revision: | 281 | ||||
Proposed branch: | lp:~zeller-benjamin/qtcreator-plugin-ubuntu/reviewtasks | ||||
Merge into: | lp:qtcreator-plugin-ubuntu | ||||
Diff against target: |
1016 lines (+469/-384) 14 files modified
share/qtcreator/templates/wizards/ubuntu/scope/CMakeLists.txt (+11/-2) share/qtcreator/templates/wizards/ubuntu/scope/manifest.json.in (+1/-0) share/qtcreator/templates/wizards/ubuntu/scope/wizard.xml (+1/-1) share/qtcreator/ubuntu/devicespage/DeviceAdvancedTab.qml (+0/-92) share/qtcreator/ubuntu/devicespage/DeviceBuilderTab.qml (+0/-42) share/qtcreator/ubuntu/devicespage/DeviceEmulatorTab.qml (+0/-71) share/qtcreator/ubuntu/devicespage/DeviceKitManager.qml (+0/-62) share/qtcreator/ubuntu/devicespage/DeviceLogTab.qml (+0/-12) share/qtcreator/ubuntu/devicespage/DevicePage.qml (+314/-92) share/qtcreator/ubuntu/devicespage/ScrollableView.qml (+55/-0) share/qtcreator/ubuntu/devicespage/SectionItem.qml (+58/-0) share/qtcreator/ubuntu/scripts/qtc_device_applaunch.py (+4/-1) src/ubuntu/ubuntu.pro (+3/-6) src/ubuntu/ubuntupackageoutputparser.cpp (+22/-3) |
||||
To merge this branch: | bzr merge lp:~zeller-benjamin/qtcreator-plugin-ubuntu/reviewtasks | ||||
Related bugs: |
|
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Zoltan Balogh | Approve | ||
PS Jenkins bot | continuous-integration | Approve | |
Review via email:
|
Commit message
- Add a TaskHandler, so we can open the links directly from the Issues tab
- Removed unused Settings
- Review click packages before uploading them to the phone
- Show review errors in Issues output view
Description of the change
- Add a TaskHandler, so we can open the links directly from the Issues tab
- Removed unused Settings
- Review click packages before uploading them to the phone
- Show review errors in Issues output view
![](/+icing/build/overlay/assets/skins/sam/images/close.gif)
PS Jenkins bot (ps-jenkins) wrote : | # |
- 276. By Benjamin Zeller
-
- Automatically unlock phone and disable greeter
- Use regexp to match policy groups - 277. By Benjamin Zeller
-
Remove unwanted output
![](/+icing/build/overlay/assets/skins/sam/images/close.gif)
PS Jenkins bot (ps-jenkins) wrote : | # |
PASSED: Continuous integration, rev:277
http://
Executed test runs:
SUCCESS: http://
SUCCESS: http://
Click here to trigger a rebuild:
http://
- 278. By Benjamin Zeller
-
Merge trunk
- 279. By Benjamin Zeller
-
- Fix Bug 1377090: "Overiding an app doesn't work"
- Fix Bug 1377094: "Click review errors prevent applications from being
deployed to the device" - 280. By Benjamin Zeller
-
Merge
- 281. By Benjamin Zeller
-
- Refactor UI of devicespage
- Fix Bug #1372633 "Device tab content page needs to allow vertical
scrolling" - 282. By Benjamin Zeller
-
- Scope templates should figure out the architecture automatically
- 283. By Benjamin Zeller
-
- Do not choke on debug policy errors
- 284. By Benjamin Zeller
-
- Do not choke on i386 error
Preview Diff
1 | === modified file 'share/qtcreator/templates/wizards/ubuntu/scope/CMakeLists.txt' | |||
2 | --- share/qtcreator/templates/wizards/ubuntu/scope/CMakeLists.txt 2014-09-25 14:36:41 +0000 | |||
3 | +++ share/qtcreator/templates/wizards/ubuntu/scope/CMakeLists.txt 2014-10-09 08:07:05 +0000 | |||
4 | @@ -55,15 +55,24 @@ | |||
5 | 55 | add_definitions(-DPACKAGE_NAME="%ClickDomain:l%.%ProjectName:l%") | 55 | add_definitions(-DPACKAGE_NAME="%ClickDomain:l%.%ProjectName:l%") |
6 | 56 | add_definitions(-DSCOPE_NAME="%ClickDomain:l%.%ProjectName:l%_%ClickHookName:l%") | 56 | add_definitions(-DSCOPE_NAME="%ClickDomain:l%.%ProjectName:l%_%ClickHookName:l%") |
7 | 57 | 57 | ||
8 | 58 | #This command figures out the target architecture and puts it into the manifest file | ||
9 | 59 | execute_process( | ||
10 | 60 | COMMAND dpkg-architecture -qDEB_HOST_ARCH | ||
11 | 61 | OUTPUT_VARIABLE CLICK_ARCH | ||
12 | 62 | OUTPUT_STRIP_TRAILING_WHITESPACE | ||
13 | 63 | ) | ||
14 | 64 | |||
15 | 65 | configure_file(manifest.json.in ${CMAKE_CURRENT_BINARY_DIR}/manifest.json) | ||
16 | 66 | |||
17 | 58 | # Install the click manifest | 67 | # Install the click manifest |
19 | 59 | install(FILES manifest.json DESTINATION "/") | 68 | install(FILES ${CMAKE_CURRENT_BINARY_DIR}/manifest.json DESTINATION "/") |
20 | 60 | install(FILES "%ClickHookName:l%.apparmor" DESTINATION "/") | 69 | install(FILES "%ClickHookName:l%.apparmor" DESTINATION "/") |
21 | 61 | 70 | ||
22 | 62 | # Make this file show up in QtCreator | 71 | # Make this file show up in QtCreator |
23 | 63 | add_custom_target(hidden_files | 72 | add_custom_target(hidden_files |
24 | 64 | ALL | 73 | ALL |
25 | 65 | SOURCES | 74 | SOURCES |
27 | 66 | manifest.json | 75 | manifest.json.in |
28 | 67 | "%ClickHookName:l%.apparmor" | 76 | "%ClickHookName:l%.apparmor" |
29 | 68 | ) | 77 | ) |
30 | 69 | 78 | ||
31 | 70 | 79 | ||
32 | === renamed file 'share/qtcreator/templates/wizards/ubuntu/scope/manifest.json' => 'share/qtcreator/templates/wizards/ubuntu/scope/manifest.json.in' | |||
33 | --- share/qtcreator/templates/wizards/ubuntu/scope/manifest.json 2014-08-18 15:29:28 +0000 | |||
34 | +++ share/qtcreator/templates/wizards/ubuntu/scope/manifest.json.in 2014-10-09 08:07:05 +0000 | |||
35 | @@ -5,6 +5,7 @@ | |||
36 | 5 | "description": "A simple Unity scope that accesses local content", | 5 | "description": "A simple Unity scope that accesses local content", |
37 | 6 | @endif | 6 | @endif |
38 | 7 | "maintainer": "%ClickMaintainer%", | 7 | "maintainer": "%ClickMaintainer%", |
39 | 8 | "architecture": "@CLICK_ARCH@", | ||
40 | 8 | "name": "%ClickDomain:l%.%ProjectName:l%", | 9 | "name": "%ClickDomain:l%.%ProjectName:l%", |
41 | 9 | "title": "%ProjectName:l%", | 10 | "title": "%ProjectName:l%", |
42 | 10 | "hooks": { | 11 | "hooks": { |
43 | 11 | 12 | ||
44 | === modified file 'share/qtcreator/templates/wizards/ubuntu/scope/wizard.xml' | |||
45 | --- share/qtcreator/templates/wizards/ubuntu/scope/wizard.xml 2014-09-23 12:28:39 +0000 | |||
46 | +++ share/qtcreator/templates/wizards/ubuntu/scope/wizard.xml 2014-10-09 08:07:05 +0000 | |||
47 | @@ -40,7 +40,7 @@ | |||
48 | 40 | 40 | ||
49 | 41 | <file source="CMakeLists.txt" openproject="true"/> | 41 | <file source="CMakeLists.txt" openproject="true"/> |
50 | 42 | <file source="displayName.apparmor" target="%ClickHookName:l%.apparmor"/> | 42 | <file source="displayName.apparmor" target="%ClickHookName:l%.apparmor"/> |
52 | 43 | <file source="manifest.json" openeditor="true"/> | 43 | <file source="manifest.json.in" openeditor="true"/> |
53 | 44 | <file source="readme.txt"/> | 44 | <file source="readme.txt"/> |
54 | 45 | </files> | 45 | </files> |
55 | 46 | 46 | ||
56 | 47 | 47 | ||
57 | === removed file 'share/qtcreator/ubuntu/devicespage/DeviceAdvancedTab.qml' | |||
58 | --- share/qtcreator/ubuntu/devicespage/DeviceAdvancedTab.qml 2014-04-25 10:03:59 +0000 | |||
59 | +++ share/qtcreator/ubuntu/devicespage/DeviceAdvancedTab.qml 1970-01-01 00:00:00 +0000 | |||
60 | @@ -1,92 +0,0 @@ | |||
61 | 1 | import QtQuick 2.0 | ||
62 | 2 | import QtQuick.Controls 1.0 as Controls | ||
63 | 3 | import QtQuick.Layouts 1.0 | ||
64 | 4 | import Ubuntu.Components 0.1 | ||
65 | 5 | import Ubuntu.Components.ListItems 0.1 as ListItem | ||
66 | 6 | |||
67 | 7 | |||
68 | 8 | RowLayout { | ||
69 | 9 | Controls.ScrollView { | ||
70 | 10 | Layout.fillHeight: true | ||
71 | 11 | Layout.minimumWidth: units.gu(78) | ||
72 | 12 | UbuntuListView { | ||
73 | 13 | model: VisualItemModel{ | ||
74 | 14 | Label { | ||
75 | 15 | text: "Device Control" | ||
76 | 16 | fontSize: "large" | ||
77 | 17 | anchors.left: parent.left | ||
78 | 18 | } | ||
79 | 19 | ListItem.Standard { | ||
80 | 20 | text:"Clone time config from Host to Device" | ||
81 | 21 | control: Button{ | ||
82 | 22 | text: "Execute" | ||
83 | 23 | enabled: !deviceItemView.deviceBusy | ||
84 | 24 | onClicked: devicesModel.triggerCloneTimeConfig(deviceId) | ||
85 | 25 | } | ||
86 | 26 | } | ||
87 | 27 | ListItem.Standard { | ||
88 | 28 | text:"Enable port forwarding" | ||
89 | 29 | control: Button{ | ||
90 | 30 | text: "Execute" | ||
91 | 31 | enabled: !deviceItemView.deviceBusy | ||
92 | 32 | onClicked: devicesModel.triggerPortForwarding(deviceId) | ||
93 | 33 | } | ||
94 | 34 | } | ||
95 | 35 | ListItem.Standard { | ||
96 | 36 | text:"Setup public key authentication" | ||
97 | 37 | control: Button{ | ||
98 | 38 | text: "Execute" | ||
99 | 39 | enabled: !deviceItemView.deviceBusy | ||
100 | 40 | onClicked: devicesModel.triggerSSHSetup(deviceId) | ||
101 | 41 | } | ||
102 | 42 | } | ||
103 | 43 | ListItem.Standard { | ||
104 | 44 | text:"Open SSH connection to the device" | ||
105 | 45 | control: Button{ | ||
106 | 46 | text: "Execute" | ||
107 | 47 | enabled: !deviceItemView.deviceBusy | ||
108 | 48 | onClicked: devicesModel.triggerSSHConnection(deviceId) | ||
109 | 49 | } | ||
110 | 50 | } | ||
111 | 51 | ListItem.Divider{} | ||
112 | 52 | Label { | ||
113 | 53 | text: "Device Mode" | ||
114 | 54 | fontSize: "large" | ||
115 | 55 | } | ||
116 | 56 | ListItem.Standard { | ||
117 | 57 | text:"Reboot" | ||
118 | 58 | control: Button{ | ||
119 | 59 | text: "Execute" | ||
120 | 60 | enabled: !deviceItemView.deviceBusy | ||
121 | 61 | onClicked: devicesModel.triggerReboot(deviceId) | ||
122 | 62 | } | ||
123 | 63 | } | ||
124 | 64 | ListItem.Standard { | ||
125 | 65 | text:"Reboot to bootloader" | ||
126 | 66 | control: Button{ | ||
127 | 67 | text: "Execute" | ||
128 | 68 | enabled: !deviceItemView.deviceBusy | ||
129 | 69 | onClicked: devicesModel.triggerRebootBootloader(deviceId) | ||
130 | 70 | } | ||
131 | 71 | } | ||
132 | 72 | ListItem.Standard { | ||
133 | 73 | text:"Reboot to recovery" | ||
134 | 74 | control: Button{ | ||
135 | 75 | text: "Execute" | ||
136 | 76 | enabled: !deviceItemView.deviceBusy | ||
137 | 77 | onClicked: devicesModel.triggerRebootRecovery(deviceId) | ||
138 | 78 | } | ||
139 | 79 | } | ||
140 | 80 | ListItem.Standard { | ||
141 | 81 | text:"Shutdown" | ||
142 | 82 | control: Button{ | ||
143 | 83 | text: "Execute" | ||
144 | 84 | enabled: !deviceItemView.deviceBusy | ||
145 | 85 | onClicked: devicesModel.triggerShutdown(deviceId) | ||
146 | 86 | } | ||
147 | 87 | } | ||
148 | 88 | } | ||
149 | 89 | } | ||
150 | 90 | } | ||
151 | 91 | } | ||
152 | 92 | |||
153 | 93 | 0 | ||
154 | === removed file 'share/qtcreator/ubuntu/devicespage/DeviceBuilderTab.qml' | |||
155 | --- share/qtcreator/ubuntu/devicespage/DeviceBuilderTab.qml 2014-04-25 10:03:59 +0000 | |||
156 | +++ share/qtcreator/ubuntu/devicespage/DeviceBuilderTab.qml 1970-01-01 00:00:00 +0000 | |||
157 | @@ -1,42 +0,0 @@ | |||
158 | 1 | import QtQuick 2.0 | ||
159 | 2 | import QtQuick.Controls 1.0 as Controls | ||
160 | 3 | import QtQuick.Layouts 1.0 | ||
161 | 4 | import Ubuntu.Components 0.1 | ||
162 | 5 | import Ubuntu.Components.ListItems 0.1 as ListItem | ||
163 | 6 | |||
164 | 7 | RowLayout { | ||
165 | 8 | spacing: units.gu(1) | ||
166 | 9 | Controls.ScrollView { | ||
167 | 10 | Layout.fillHeight: true | ||
168 | 11 | Layout.minimumWidth: units.gu(78) | ||
169 | 12 | |||
170 | 13 | ColumnLayout { | ||
171 | 14 | Layout.fillWidth: true | ||
172 | 15 | Label { | ||
173 | 16 | text: "Platform development" | ||
174 | 17 | fontSize: "large" | ||
175 | 18 | anchors.left: parent.left | ||
176 | 19 | Layout.fillWidth: true | ||
177 | 20 | } | ||
178 | 21 | Label { | ||
179 | 22 | text: "The connected device can be turned to be a native development environment.\n Use this feature with care and only if you know what are you doing." | ||
180 | 23 | } | ||
181 | 24 | FeatureStateItem { | ||
182 | 25 | text: "Has writeable image" | ||
183 | 26 | input: hasWriteableImage | ||
184 | 27 | inputRole: "hasWriteableImage" | ||
185 | 28 | height: 24 | ||
186 | 29 | width: 300 | ||
187 | 30 | checkable: !deviceItemView.deviceBusy | ||
188 | 31 | } | ||
189 | 32 | FeatureStateItem { | ||
190 | 33 | text: "Has device developer tools" | ||
191 | 34 | input: hasDeveloperTools | ||
192 | 35 | inputRole: "hasDeveloperTools" | ||
193 | 36 | height: 24 | ||
194 | 37 | width: 300 | ||
195 | 38 | checkable: !deviceItemView.deviceBusy | ||
196 | 39 | } | ||
197 | 40 | } | ||
198 | 41 | } | ||
199 | 42 | } | ||
200 | 43 | 0 | ||
201 | === removed file 'share/qtcreator/ubuntu/devicespage/DeviceEmulatorTab.qml' | |||
202 | --- share/qtcreator/ubuntu/devicespage/DeviceEmulatorTab.qml 2014-08-11 10:46:51 +0000 | |||
203 | +++ share/qtcreator/ubuntu/devicespage/DeviceEmulatorTab.qml 1970-01-01 00:00:00 +0000 | |||
204 | @@ -1,71 +0,0 @@ | |||
205 | 1 | import QtQuick 2.0 | ||
206 | 2 | import QtQuick.Layouts 1.0 | ||
207 | 3 | import QtQuick.Controls 1.0 as Controls | ||
208 | 4 | |||
209 | 5 | import Ubuntu.Components 0.1 | ||
210 | 6 | import Ubuntu.Components.ListItems 0.1 as ListItem | ||
211 | 7 | import Ubuntu.Components.Popups 0.1 | ||
212 | 8 | |||
213 | 9 | import Ubuntu.DevicesModel 0.1 | ||
214 | 10 | |||
215 | 11 | ColumnLayout { | ||
216 | 12 | UbuntuListView { | ||
217 | 13 | Layout.alignment: Qt.AlignLeft | Qt.AlignTop | ||
218 | 14 | width: units.gu(50) | ||
219 | 15 | height: childrenRect.height | ||
220 | 16 | model: VisualItemModel { | ||
221 | 17 | ListItem.SingleValue { | ||
222 | 18 | text: i18n.tr("Ubuntu version") | ||
223 | 19 | value: emuUbuntuVersion | ||
224 | 20 | } | ||
225 | 21 | ListItem.SingleValue { | ||
226 | 22 | text: i18n.tr("Device version") | ||
227 | 23 | value: emuDeviceVersion | ||
228 | 24 | } | ||
229 | 25 | ListItem.SingleValue { | ||
230 | 26 | text: i18n.tr("Image version") | ||
231 | 27 | value: emuImageVersion | ||
232 | 28 | } | ||
233 | 29 | ListItem.Standard { | ||
234 | 30 | //show this listitem only when device is not connected | ||
235 | 31 | visible: connectionState !== DeviceConnectionState.ReadyToUse && connectionState !== DeviceConnectionState.Connected | ||
236 | 32 | text: "Scale" | ||
237 | 33 | control: Controls.ComboBox { | ||
238 | 34 | id: emulatorScaleComboBox | ||
239 | 35 | model: ["1.0", "0.9", "0.8", "0.7", "0.6","0.5", "0.4", "0.3", "0.2","0.1"] | ||
240 | 36 | currentIndex: { | ||
241 | 37 | var idx = find(emulatorScaleFactor); | ||
242 | 38 | return idx >= 0 ? idx : 0; | ||
243 | 39 | } | ||
244 | 40 | onActivated: { | ||
245 | 41 | emulatorScaleFactor = textAt(index); | ||
246 | 42 | } | ||
247 | 43 | } | ||
248 | 44 | } | ||
249 | 45 | |||
250 | 46 | ListItem.Standard { | ||
251 | 47 | //show this listitem only when device is not connected | ||
252 | 48 | visible: connectionState !== DeviceConnectionState.ReadyToUse && connectionState !== DeviceConnectionState.Connected | ||
253 | 49 | text: "Memory" | ||
254 | 50 | control: Controls.ComboBox { | ||
255 | 51 | id: emulatorMemoryComboBox | ||
256 | 52 | model: ["512", "768", "1024"] | ||
257 | 53 | |||
258 | 54 | currentIndex: { | ||
259 | 55 | var idx = find(emulatorMemorySetting); | ||
260 | 56 | return idx >= 0 ? idx : 0; | ||
261 | 57 | } | ||
262 | 58 | onActivated: { | ||
263 | 59 | emulatorMemorySetting = textAt(index); | ||
264 | 60 | } | ||
265 | 61 | } | ||
266 | 62 | } | ||
267 | 63 | } | ||
268 | 64 | } | ||
269 | 65 | ListItem.Divider{} | ||
270 | 66 | DeviceKitManager{ | ||
271 | 67 | Layout.alignment: Qt.AlignLeft | Qt.AlignTop | ||
272 | 68 | Layout.fillHeight: true | ||
273 | 69 | width: units.gu(50) | ||
274 | 70 | } | ||
275 | 71 | } | ||
276 | 72 | 0 | ||
277 | === removed file 'share/qtcreator/ubuntu/devicespage/DeviceKitManager.qml' | |||
278 | --- share/qtcreator/ubuntu/devicespage/DeviceKitManager.qml 2014-08-11 10:46:51 +0000 | |||
279 | +++ share/qtcreator/ubuntu/devicespage/DeviceKitManager.qml 1970-01-01 00:00:00 +0000 | |||
280 | @@ -1,62 +0,0 @@ | |||
281 | 1 | import QtQuick 2.0 | ||
282 | 2 | import QtQuick.Controls 1.0 as Controls | ||
283 | 3 | import QtQuick.Layouts 1.0 | ||
284 | 4 | import Ubuntu.Components 0.1 | ||
285 | 5 | import Ubuntu.Components.ListItems 0.1 as ListItem | ||
286 | 6 | import Ubuntu.DevicesModel 0.1 | ||
287 | 7 | |||
288 | 8 | Item { | ||
289 | 9 | ColumnLayout { | ||
290 | 10 | anchors.fill: parent | ||
291 | 11 | Label { | ||
292 | 12 | text: "Device Kits" | ||
293 | 13 | fontSize: "large" | ||
294 | 14 | } | ||
295 | 15 | |||
296 | 16 | Column { | ||
297 | 17 | Layout.fillWidth: true | ||
298 | 18 | Repeater { | ||
299 | 19 | model: kits | ||
300 | 20 | delegate: ListItem.Standard { | ||
301 | 21 | text: modelData.displayName | ||
302 | 22 | Layout.fillWidth: true | ||
303 | 23 | control: Button{ | ||
304 | 24 | text: "Remove" | ||
305 | 25 | enabled: !deviceItemView.deviceBusy | ||
306 | 26 | onClicked: devicesModel.triggerKitRemove(deviceId,modelData.id) | ||
307 | 27 | } | ||
308 | 28 | } | ||
309 | 29 | } | ||
310 | 30 | } | ||
311 | 31 | |||
312 | 32 | Item { | ||
313 | 33 | clip: true | ||
314 | 34 | visible: kits.length === 0 | ||
315 | 35 | Layout.minimumHeight: units.gu(25) | ||
316 | 36 | Layout.fillWidth: true | ||
317 | 37 | Label { | ||
318 | 38 | id:label | ||
319 | 39 | anchors.centerIn: parent | ||
320 | 40 | anchors.bottom: button.top | ||
321 | 41 | fontSize: "large" | ||
322 | 42 | text: "There is currently no Kit defined for your device.\n In order to use the device in your Projects,\n you can either add a existing Kit " | ||
323 | 43 | +"\nor let Qt Creator autocreate one for you." | ||
324 | 44 | } | ||
325 | 45 | Button { | ||
326 | 46 | id: button | ||
327 | 47 | anchors.left: label.left | ||
328 | 48 | anchors.right: label.right | ||
329 | 49 | anchors.top: label.bottom | ||
330 | 50 | anchors.topMargin: units.gu(2) | ||
331 | 51 | text: "Autocreate" | ||
332 | 52 | enabled: !deviceItemView.deviceBusy | ||
333 | 53 | onClicked: devicesModel.triggerKitAutocreate(deviceId) | ||
334 | 54 | } | ||
335 | 55 | } | ||
336 | 56 | |||
337 | 57 | //Spacer Item | ||
338 | 58 | Item { | ||
339 | 59 | Layout.fillHeight: true | ||
340 | 60 | } | ||
341 | 61 | } | ||
342 | 62 | } | ||
343 | 63 | 0 | ||
344 | === removed file 'share/qtcreator/ubuntu/devicespage/DeviceLogTab.qml' | |||
345 | --- share/qtcreator/ubuntu/devicespage/DeviceLogTab.qml 2014-04-22 14:10:22 +0000 | |||
346 | +++ share/qtcreator/ubuntu/devicespage/DeviceLogTab.qml 1970-01-01 00:00:00 +0000 | |||
347 | @@ -1,12 +0,0 @@ | |||
348 | 1 | import QtQuick 2.0 | ||
349 | 2 | import QtQuick.Controls 1.0 as Controls | ||
350 | 3 | import QtQuick.Layouts 1.0 | ||
351 | 4 | import Ubuntu.Components 0.1 | ||
352 | 5 | import Ubuntu.Components.ListItems 0.1 as ListItem | ||
353 | 6 | |||
354 | 7 | |||
355 | 8 | Controls.TextArea { | ||
356 | 9 | readOnly: true | ||
357 | 10 | text: deviceLog | ||
358 | 11 | textFormat: TextEdit.AutoText | ||
359 | 12 | } | ||
360 | 13 | 0 | ||
361 | === modified file 'share/qtcreator/ubuntu/devicespage/DevicePage.qml' | |||
362 | --- share/qtcreator/ubuntu/devicespage/DevicePage.qml 2014-08-11 11:58:08 +0000 | |||
363 | +++ share/qtcreator/ubuntu/devicespage/DevicePage.qml 2014-10-09 08:07:05 +0000 | |||
364 | @@ -153,15 +153,17 @@ | |||
365 | 153 | } | 153 | } |
366 | 154 | } | 154 | } |
367 | 155 | } | 155 | } |
368 | 156 | |||
369 | 156 | Item { | 157 | Item { |
370 | 157 | id: centerItem | 158 | id: centerItem |
371 | 158 | Layout.minimumWidth: 400 | 159 | Layout.minimumWidth: 400 |
372 | 159 | Layout.fillWidth: true | 160 | Layout.fillWidth: true |
374 | 160 | property int currentIndex: devicesList.currentIndex | 161 | |
375 | 161 | Repeater { | 162 | Repeater { |
376 | 163 | property int currentIndex: devicesList.currentIndex | ||
377 | 162 | model: devicesModel | 164 | model: devicesModel |
380 | 163 | anchors.fill: parent | 165 | |
381 | 164 | Rectangle{ | 166 | Rectangle { |
382 | 165 | id: deviceItemView | 167 | id: deviceItemView |
383 | 166 | property bool deviceConnected: connectionState === DeviceConnectionState.ReadyToUse || connectionState === DeviceConnectionState.Connected | 168 | property bool deviceConnected: connectionState === DeviceConnectionState.ReadyToUse || connectionState === DeviceConnectionState.Connected |
384 | 167 | property bool deviceBusy: (detectionState != DeviceDetectionState.Done && detectionState != DeviceDetectionState.NotStarted) | 169 | property bool deviceBusy: (detectionState != DeviceDetectionState.Done && detectionState != DeviceDetectionState.NotStarted) |
385 | @@ -172,6 +174,7 @@ | |||
386 | 172 | color: Qt.rgba(0.0, 0.0, 0.0, 0.01) | 174 | color: Qt.rgba(0.0, 0.0, 0.0, 0.01) |
387 | 173 | visible: index == devicesList.currentIndex | 175 | visible: index == devicesList.currentIndex |
388 | 174 | 176 | ||
389 | 177 | |||
390 | 175 | Controls.ToolBar { | 178 | Controls.ToolBar { |
391 | 176 | id: emulatorToolBar | 179 | id: emulatorToolBar |
392 | 177 | height: visible ? units.gu(5) : 0 | 180 | height: visible ? units.gu(5) : 0 |
393 | @@ -205,95 +208,314 @@ | |||
394 | 205 | } | 208 | } |
395 | 206 | } | 209 | } |
396 | 207 | 210 | ||
486 | 208 | Controls.TabView { | 211 | ScrollableView { |
487 | 209 | id: pagesTabView | 212 | id: deviceView |
488 | 210 | anchors.left: parent.left | 213 | anchors.left: parent.left |
489 | 211 | anchors.right: parent.right | 214 | anchors.right: parent.right |
490 | 212 | anchors.top: emulatorToolBar.bottom | 215 | anchors.top: emulatorToolBar.bottom |
491 | 213 | anchors.bottom: parent.bottom | 216 | anchors.bottom: parent.bottom |
492 | 214 | anchors.margins: 12 | 217 | clip: true |
493 | 215 | visible: deviceConnected && !deviceBooting && !detectionError | 218 | |
494 | 216 | 219 | ListItem.Empty { | |
495 | 217 | Component.onCompleted: { | 220 | divider.visible: false |
496 | 218 | addTab("Device", Qt.createComponent("DeviceStatusTab.qml")) | 221 | visible: detectionError |
497 | 219 | if(machineType === DeviceMachineType.Emulator) | 222 | RowLayout { |
498 | 220 | addTab("Emulator", Qt.createComponent("DeviceEmulatorTab.qml")) | 223 | anchors.fill: parent |
499 | 221 | addTab("Advanced", Qt.createComponent("DeviceAdvancedTab.qml")) | 224 | anchors.leftMargin: units.gu(2) |
500 | 222 | addTab("Builder", Qt.createComponent("DeviceBuilderTab.qml")) | 225 | anchors.rightMargin: units.gu(4) |
501 | 223 | addTab("Log", Qt.createComponent("DeviceLogTab.qml")) | 226 | Icon { |
502 | 224 | } | 227 | id: errorIcon |
503 | 225 | } | 228 | anchors.left: parent.left |
504 | 226 | 229 | name: "security-alert" | |
505 | 227 | ColumnLayout { | 230 | height:parent.height - units.gu(2) |
506 | 228 | visible: !deviceConnected && !deviceBooting && !detectionError && (machineType !== DeviceMachineType.Emulator) | 231 | width: height |
507 | 229 | anchors.left: parent.left | 232 | } |
508 | 230 | anchors.top: emulatorToolBar.bottom | 233 | Label { |
509 | 231 | anchors.bottom: parent.bottom | 234 | id: errorText |
510 | 232 | anchors.margins: 10 | 235 | text: i18n.tr("There was a error in the device detection, check the log for details.") |
511 | 233 | width: units.gu(75) | 236 | fontSize: "large" |
512 | 234 | spacing: units.gu(1) | 237 | wrapMode: Text.Wrap |
513 | 235 | 238 | Layout.fillWidth: true | |
514 | 236 | Label { | 239 | } |
515 | 237 | text:"Device Status: Disconnected" | 240 | Button { |
516 | 238 | fontSize: "large" | 241 | id: deviceRedetectButton |
517 | 239 | Layout.alignment: Qt.AlignLeft | Qt.AlignTop | 242 | text: "Redetect" |
518 | 240 | Layout.fillWidth: true | 243 | onClicked: devicesModel.triggerRedetect(deviceId) |
519 | 241 | } | 244 | } |
520 | 242 | ListItem.SingleValue { | 245 | } |
521 | 243 | Layout.alignment: Qt.AlignLeft | Qt.AlignTop | 246 | } |
522 | 244 | text:i18n.tr("Serial ID") | 247 | |
523 | 245 | Layout.fillWidth: true | 248 | ListItem.Empty { |
524 | 246 | value: serial | 249 | divider.visible: false |
525 | 247 | } | 250 | visible: deviceItemView.deviceBooting |
526 | 248 | ListItem.Divider{} | 251 | RowLayout { |
527 | 249 | DeviceKitManager { | 252 | anchors.fill: parent |
528 | 250 | Layout.alignment: Qt.AlignLeft | Qt.AlignTop | 253 | anchors.leftMargin: units.gu(2) |
529 | 251 | Layout.fillHeight: true | 254 | anchors.rightMargin: units.gu(4) |
530 | 252 | Layout.fillWidth: true | 255 | ActivityIndicator { |
531 | 253 | } | 256 | running: deviceItemView.deviceBooting |
532 | 254 | } | 257 | height:parent.height - units.gu(2) |
533 | 255 | 258 | width: height | |
534 | 256 | DeviceEmulatorTab { | 259 | } |
535 | 257 | id: emuSettings | 260 | Label { |
536 | 258 | visible: !deviceConnected && !deviceBooting && !detectionError && (machineType === DeviceMachineType.Emulator) | 261 | text: i18n.tr("The device is currently booting, if this text is still shown after the device has booted, press the refresh button.") |
537 | 259 | anchors.left: parent.left | 262 | fontSize: "large" |
538 | 260 | anchors.right: parent.right | 263 | wrapMode: Text.Wrap |
539 | 261 | anchors.top: emulatorToolBar.bottom | 264 | Layout.fillWidth: true |
540 | 262 | anchors.bottom: parent.bottom | 265 | } |
541 | 263 | anchors.margins: 10 | 266 | Button { |
542 | 264 | } | 267 | text: "Redetect" |
543 | 265 | 268 | onClicked: devicesModel.triggerRedetect(deviceId) | |
544 | 266 | Column { | 269 | } |
545 | 267 | visible: deviceBooting && !detectionError | 270 | } |
546 | 268 | anchors.centerIn: parent | 271 | } |
547 | 269 | spacing: units.gu(1) | 272 | |
548 | 270 | Label { | 273 | SectionItem { |
549 | 271 | text: i18n.tr("The device is currently booting.") | 274 | title: deviceItemView.deviceConnected ? "Device Status: "+detectionStateString : "Device Status: Disconnected" |
550 | 272 | fontSize: "large" | 275 | expanded: true |
551 | 273 | anchors.horizontalCenter: parent.horizontalCenter | 276 | |
552 | 274 | } | 277 | Column { |
553 | 275 | Label { | 278 | anchors.left: parent.left |
554 | 276 | text: i18n.tr("If this text is still shown after the device has booted, press the refresh button.") | 279 | anchors.right: parent.right |
555 | 277 | anchors.horizontalCenter: parent.horizontalCenter | 280 | |
556 | 278 | } | 281 | ListItem.SingleValue { |
557 | 279 | ActivityIndicator { | 282 | visible: deviceItemView.deviceConnected || machineType !== DeviceMachineType.Emulator |
558 | 280 | running: deviceBooting | 283 | text:i18n.tr("Serial ID") |
559 | 281 | anchors.horizontalCenter: parent.horizontalCenter | 284 | value: serial |
560 | 282 | } | 285 | } |
561 | 283 | } | 286 | ListItem.SingleValue { |
562 | 284 | Column { | 287 | text: i18n.tr("Ubuntu version") |
563 | 285 | visible: detectionError | 288 | value: emuUbuntuVersion |
564 | 286 | anchors.centerIn: parent | 289 | visible: machineType === DeviceMachineType.Emulator |
565 | 287 | spacing: units.gu(1) | 290 | } |
566 | 288 | Label { | 291 | ListItem.SingleValue { |
567 | 289 | text: i18n.tr("There was a error in the device detection, please press the redetect button to try again.") | 292 | text: i18n.tr("Device version") |
568 | 290 | fontSize: "large" | 293 | value: emuDeviceVersion |
569 | 291 | anchors.horizontalCenter: parent.horizontalCenter | 294 | visible: machineType === DeviceMachineType.Emulator |
570 | 292 | } | 295 | } |
571 | 293 | Button { | 296 | ListItem.SingleValue { |
572 | 294 | text: "Redetect" | 297 | text: i18n.tr("Image version") |
573 | 295 | onClicked: devicesModel.triggerRedetect(deviceId) | 298 | value: emuImageVersion |
574 | 296 | anchors.horizontalCenter: parent.horizontalCenter | 299 | visible: machineType === DeviceMachineType.Emulator |
575 | 300 | } | ||
576 | 301 | ListItem.Standard { | ||
577 | 302 | //show this listitem only when device is not connected | ||
578 | 303 | visible: machineType === DeviceMachineType.Emulator && !deviceItemView.deviceConnected | ||
579 | 304 | text: "Scale" | ||
580 | 305 | control: Controls.ComboBox { | ||
581 | 306 | id: emulatorScaleComboBox | ||
582 | 307 | model: ["1.0", "0.9", "0.8", "0.7", "0.6","0.5", "0.4", "0.3", "0.2","0.1"] | ||
583 | 308 | currentIndex: { | ||
584 | 309 | var idx = find(emulatorScaleFactor); | ||
585 | 310 | return idx >= 0 ? idx : 0; | ||
586 | 311 | } | ||
587 | 312 | onActivated: { | ||
588 | 313 | emulatorScaleFactor = textAt(index); | ||
589 | 314 | } | ||
590 | 315 | } | ||
591 | 316 | } | ||
592 | 317 | |||
593 | 318 | ListItem.Standard { | ||
594 | 319 | //show this listitem only when device is not connected | ||
595 | 320 | visible: machineType === DeviceMachineType.Emulator && !deviceItemView.deviceConnected | ||
596 | 321 | text: "Memory" | ||
597 | 322 | control: Controls.ComboBox { | ||
598 | 323 | id: emulatorMemoryComboBox | ||
599 | 324 | model: ["512", "768", "1024"] | ||
600 | 325 | |||
601 | 326 | currentIndex: { | ||
602 | 327 | var idx = find(emulatorMemorySetting); | ||
603 | 328 | return idx >= 0 ? idx : 0; | ||
604 | 329 | } | ||
605 | 330 | onActivated: { | ||
606 | 331 | emulatorMemorySetting = textAt(index); | ||
607 | 332 | } | ||
608 | 333 | } | ||
609 | 334 | } | ||
610 | 335 | ListItem.SingleValue { | ||
611 | 336 | text:i18n.tr("Device") | ||
612 | 337 | value: deviceInfo | ||
613 | 338 | visible: deviceItemView.deviceConnected | ||
614 | 339 | } | ||
615 | 340 | ListItem.SingleValue { | ||
616 | 341 | text:i18n.tr("Model") | ||
617 | 342 | value: modelInfo | ||
618 | 343 | visible: deviceItemView.deviceConnected | ||
619 | 344 | } | ||
620 | 345 | ListItem.SingleValue { | ||
621 | 346 | text:i18n.tr("Product") | ||
622 | 347 | value: productInfo | ||
623 | 348 | visible: deviceItemView.deviceConnected | ||
624 | 349 | } | ||
625 | 350 | |||
626 | 351 | FeatureStateItem { | ||
627 | 352 | text: "Has network connection" | ||
628 | 353 | input: hasNetworkConnection | ||
629 | 354 | inputRole: "hasNetworkConnection" | ||
630 | 355 | checkable: hasNetworkConnection == FeatureState.NotAvailable && !deviceItemView.deviceBusy && !deviceItemView.detectionError | ||
631 | 356 | visible: deviceItemView.deviceConnected | ||
632 | 357 | } | ||
633 | 358 | FeatureStateItem { | ||
634 | 359 | text: "Has devloper mode enabled" | ||
635 | 360 | input: developerModeEnabled | ||
636 | 361 | inputRole: "developerModeEnabled" | ||
637 | 362 | checkable: !deviceItemView.deviceBusy && !deviceItemView.detectionError | ||
638 | 363 | visible: deviceItemView.deviceConnected | ||
639 | 364 | } | ||
640 | 365 | /* | ||
641 | 366 | FeatureStateItem { | ||
642 | 367 | text: "Has writeable image" | ||
643 | 368 | input: hasWriteableImage | ||
644 | 369 | inputRole: "hasWriteableImage" | ||
645 | 370 | checkable: false | ||
646 | 371 | visible: deviceItemView.deviceConnected | ||
647 | 372 | } | ||
648 | 373 | */ | ||
649 | 374 | } | ||
650 | 375 | } | ||
651 | 376 | |||
652 | 377 | SectionItem { | ||
653 | 378 | title: "Kits" | ||
654 | 379 | expanded: true | ||
655 | 380 | |||
656 | 381 | Column { | ||
657 | 382 | anchors.left: parent.left | ||
658 | 383 | anchors.right: parent.right | ||
659 | 384 | |||
660 | 385 | Repeater { | ||
661 | 386 | model: kits | ||
662 | 387 | delegate: ListItem.Standard { | ||
663 | 388 | text: modelData.displayName | ||
664 | 389 | Layout.fillWidth: true | ||
665 | 390 | control: Button{ | ||
666 | 391 | text: "Remove" | ||
667 | 392 | enabled: !deviceItemView.deviceBusy | ||
668 | 393 | onClicked: devicesModel.triggerKitRemove(deviceId,modelData.id) | ||
669 | 394 | } | ||
670 | 395 | } | ||
671 | 396 | } | ||
672 | 397 | |||
673 | 398 | Item { | ||
674 | 399 | clip: true | ||
675 | 400 | visible: kits.length === 0 | ||
676 | 401 | height: label.contentHeight + units.gu(15) | ||
677 | 402 | width: parent.width | ||
678 | 403 | Label { | ||
679 | 404 | id:label | ||
680 | 405 | anchors.centerIn: parent | ||
681 | 406 | anchors.bottom: button.top | ||
682 | 407 | fontSize: "large" | ||
683 | 408 | text: "There is currently no Kit defined for your device.\n In order to use the device in your Projects,\n you can either add a existing Kit " | ||
684 | 409 | +"\nor let Qt Creator autocreate one for you." | ||
685 | 410 | } | ||
686 | 411 | Button { | ||
687 | 412 | id: button | ||
688 | 413 | anchors.left: label.left | ||
689 | 414 | anchors.right: label.right | ||
690 | 415 | anchors.top: label.bottom | ||
691 | 416 | anchors.bottom: parent.bottom | ||
692 | 417 | anchors.topMargin: units.gu(2) | ||
693 | 418 | text: "Autocreate" | ||
694 | 419 | enabled: !deviceItemView.deviceBusy | ||
695 | 420 | onClicked: devicesModel.triggerKitAutocreate(deviceId) | ||
696 | 421 | } | ||
697 | 422 | } | ||
698 | 423 | |||
699 | 424 | |||
700 | 425 | } | ||
701 | 426 | } | ||
702 | 427 | |||
703 | 428 | SectionItem { | ||
704 | 429 | title: "Control" | ||
705 | 430 | visible: deviceItemView.deviceConnected | ||
706 | 431 | |||
707 | 432 | Column { | ||
708 | 433 | anchors.left: parent.left | ||
709 | 434 | anchors.right: parent.right | ||
710 | 435 | |||
711 | 436 | ListItem.Standard { | ||
712 | 437 | text:"Clone time config from Host to Device" | ||
713 | 438 | control: Button{ | ||
714 | 439 | text: "Execute" | ||
715 | 440 | enabled: !deviceItemView.deviceBusy && !deviceItemView.detectionError | ||
716 | 441 | onClicked: devicesModel.triggerCloneTimeConfig(deviceId) | ||
717 | 442 | } | ||
718 | 443 | } | ||
719 | 444 | ListItem.Standard { | ||
720 | 445 | text:"Enable port forwarding" | ||
721 | 446 | control: Button{ | ||
722 | 447 | text: "Execute" | ||
723 | 448 | enabled: !deviceItemView.deviceBusy && !deviceItemView.detectionError | ||
724 | 449 | onClicked: devicesModel.triggerPortForwarding(deviceId) | ||
725 | 450 | } | ||
726 | 451 | } | ||
727 | 452 | ListItem.Standard { | ||
728 | 453 | text:"Setup public key authentication" | ||
729 | 454 | control: Button{ | ||
730 | 455 | text: "Execute" | ||
731 | 456 | enabled: !deviceItemView.deviceBusy && !deviceItemView.detectionError | ||
732 | 457 | onClicked: devicesModel.triggerSSHSetup(deviceId) | ||
733 | 458 | } | ||
734 | 459 | } | ||
735 | 460 | ListItem.Standard { | ||
736 | 461 | text:"Open SSH connection to the device" | ||
737 | 462 | control: Button{ | ||
738 | 463 | text: "Execute" | ||
739 | 464 | enabled: !deviceItemView.deviceBusy && !deviceItemView.detectionError | ||
740 | 465 | onClicked: devicesModel.triggerSSHConnection(deviceId) | ||
741 | 466 | } | ||
742 | 467 | } | ||
743 | 468 | ListItem.Standard { | ||
744 | 469 | text:"Reboot" | ||
745 | 470 | control: Button{ | ||
746 | 471 | text: "Execute" | ||
747 | 472 | enabled: !deviceItemView.deviceBusy && !deviceItemView.detectionError | ||
748 | 473 | onClicked: devicesModel.triggerReboot(deviceId) | ||
749 | 474 | } | ||
750 | 475 | } | ||
751 | 476 | ListItem.Standard { | ||
752 | 477 | text:"Reboot to bootloader" | ||
753 | 478 | control: Button{ | ||
754 | 479 | text: "Execute" | ||
755 | 480 | enabled: !deviceItemView.deviceBusy && !deviceItemView.detectionError | ||
756 | 481 | onClicked: devicesModel.triggerRebootBootloader(deviceId) | ||
757 | 482 | } | ||
758 | 483 | } | ||
759 | 484 | ListItem.Standard { | ||
760 | 485 | text:"Reboot to recovery" | ||
761 | 486 | control: Button{ | ||
762 | 487 | text: "Execute" | ||
763 | 488 | enabled: !deviceItemView.deviceBusy && !deviceItemView.detectionError | ||
764 | 489 | onClicked: devicesModel.triggerRebootRecovery(deviceId) | ||
765 | 490 | } | ||
766 | 491 | } | ||
767 | 492 | ListItem.Standard { | ||
768 | 493 | text:"Shutdown" | ||
769 | 494 | control: Button{ | ||
770 | 495 | text: "Execute" | ||
771 | 496 | enabled: !deviceItemView.deviceBusy && !deviceItemView.detectionError | ||
772 | 497 | onClicked: devicesModel.triggerShutdown(deviceId) | ||
773 | 498 | } | ||
774 | 499 | } | ||
775 | 500 | } | ||
776 | 501 | } | ||
777 | 502 | |||
778 | 503 | SectionItem { | ||
779 | 504 | title: "Log" | ||
780 | 505 | Column { | ||
781 | 506 | anchors.left: parent.left | ||
782 | 507 | anchors.right: parent.right | ||
783 | 508 | TextArea { | ||
784 | 509 | anchors.left: parent.left | ||
785 | 510 | anchors.right: parent.right | ||
786 | 511 | height: units.gu(60) | ||
787 | 512 | highlighted: true | ||
788 | 513 | |||
789 | 514 | readOnly: true | ||
790 | 515 | text: deviceLog | ||
791 | 516 | textFormat: TextEdit.AutoText | ||
792 | 517 | } | ||
793 | 518 | } | ||
794 | 297 | } | 519 | } |
795 | 298 | } | 520 | } |
796 | 299 | } | 521 | } |
797 | 300 | 522 | ||
798 | === added file 'share/qtcreator/ubuntu/devicespage/ScrollableView.qml' | |||
799 | --- share/qtcreator/ubuntu/devicespage/ScrollableView.qml 1970-01-01 00:00:00 +0000 | |||
800 | +++ share/qtcreator/ubuntu/devicespage/ScrollableView.qml 2014-10-09 08:07:05 +0000 | |||
801 | @@ -0,0 +1,55 @@ | |||
802 | 1 | /* | ||
803 | 2 | * Copyright 2013 Canonical Ltd. | ||
804 | 3 | * | ||
805 | 4 | * This program is free software; you can redistribute it and/or modify | ||
806 | 5 | * it under the terms of the GNU Lesser General Public License as published by | ||
807 | 6 | * the Free Software Foundation; version 3. | ||
808 | 7 | * | ||
809 | 8 | * This program is distributed in the hope that it will be useful, | ||
810 | 9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
811 | 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
812 | 11 | * GNU Lesser General Public License for more details. | ||
813 | 12 | * | ||
814 | 13 | * You should have received a copy of the GNU Lesser General Public License | ||
815 | 14 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
816 | 15 | */ | ||
817 | 16 | |||
818 | 17 | import QtQuick 2.0 | ||
819 | 18 | import Ubuntu.Components 0.1 | ||
820 | 19 | |||
821 | 20 | Item { | ||
822 | 21 | id: template | ||
823 | 22 | |||
824 | 23 | width: units.gu(40) | ||
825 | 24 | height: units.gu(75) | ||
826 | 25 | |||
827 | 26 | default property alias content: layout.children | ||
828 | 27 | property alias spacing: layout.spacing | ||
829 | 28 | property Item tools: null | ||
830 | 29 | property Flickable flickable: flickable | ||
831 | 30 | |||
832 | 31 | Flickable { | ||
833 | 32 | id: flickable | ||
834 | 33 | objectName: "TemplateFlickable" | ||
835 | 34 | anchors.fill: parent | ||
836 | 35 | anchors.topMargin: units.gu(2) | ||
837 | 36 | anchors.bottomMargin: units.gu(2) | ||
838 | 37 | contentHeight: layout.height | ||
839 | 38 | interactive: contentHeight > height | ||
840 | 39 | |||
841 | 40 | Column { | ||
842 | 41 | id: layout | ||
843 | 42 | spacing: units.gu(6) | ||
844 | 43 | anchors.left: parent.left | ||
845 | 44 | anchors.right: parent.right | ||
846 | 45 | anchors.margins: units.gu(2) | ||
847 | 46 | } | ||
848 | 47 | } | ||
849 | 48 | |||
850 | 49 | Scrollbar { | ||
851 | 50 | id: sb | ||
852 | 51 | objectName: "TemplateScrollbar" | ||
853 | 52 | flickableItem: flickable | ||
854 | 53 | property alias interactive: sb.__interactive | ||
855 | 54 | } | ||
856 | 55 | } | ||
857 | 0 | 56 | ||
858 | === added file 'share/qtcreator/ubuntu/devicespage/SectionItem.qml' | |||
859 | --- share/qtcreator/ubuntu/devicespage/SectionItem.qml 1970-01-01 00:00:00 +0000 | |||
860 | +++ share/qtcreator/ubuntu/devicespage/SectionItem.qml 2014-10-09 08:07:05 +0000 | |||
861 | @@ -0,0 +1,58 @@ | |||
862 | 1 | /* | ||
863 | 2 | * Copyright 2013 Canonical Ltd. | ||
864 | 3 | * | ||
865 | 4 | * This program is free software; you can redistribute it and/or modify | ||
866 | 5 | * it under the terms of the GNU Lesser General Public License as published by | ||
867 | 6 | * the Free Software Foundation; version 3. | ||
868 | 7 | * | ||
869 | 8 | * This program is distributed in the hope that it will be useful, | ||
870 | 9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
871 | 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
872 | 11 | * GNU Lesser General Public License for more details. | ||
873 | 12 | * | ||
874 | 13 | * You should have received a copy of the GNU Lesser General Public License | ||
875 | 14 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
876 | 15 | */ | ||
877 | 16 | |||
878 | 17 | import QtQuick 2.0 | ||
879 | 18 | import Ubuntu.Components 0.1 | ||
880 | 19 | import Ubuntu.Components.ListItems 0.1 as ListItem | ||
881 | 20 | |||
882 | 21 | ListItem.Expandable { | ||
883 | 22 | id: expandingColumnItem | ||
884 | 23 | expandedHeight: contentColumn.height + units.gu(1) | ||
885 | 24 | collapsedHeight: headerRow.childrenRect.height | ||
886 | 25 | divider.visible: false | ||
887 | 26 | |||
888 | 27 | property string title | ||
889 | 28 | default property alias data: contentColumn.data | ||
890 | 29 | |||
891 | 30 | onClicked: { | ||
892 | 31 | expanded = !expanded; | ||
893 | 32 | } | ||
894 | 33 | |||
895 | 34 | Column { | ||
896 | 35 | id: contentColumn | ||
897 | 36 | anchors { left: parent.left; right: parent.right } | ||
898 | 37 | Row{ | ||
899 | 38 | id: headerRow | ||
900 | 39 | anchors { left: parent.left; right: parent.right} | ||
901 | 40 | height: childrenRect.height | ||
902 | 41 | Icon { | ||
903 | 42 | name: expandingColumnItem.expanded ? "view-collapse" : "view-expand" | ||
904 | 43 | color: UbuntuColors.orange | ||
905 | 44 | width: 24 | ||
906 | 45 | height: 24 | ||
907 | 46 | } | ||
908 | 47 | Item{ | ||
909 | 48 | width: units.gu(1) | ||
910 | 49 | height: parent.height | ||
911 | 50 | } | ||
912 | 51 | Label { | ||
913 | 52 | id: label | ||
914 | 53 | text: expandingColumnItem.title | ||
915 | 54 | fontSize: "large" | ||
916 | 55 | } | ||
917 | 56 | } | ||
918 | 57 | } | ||
919 | 58 | } | ||
920 | 0 | 59 | ||
921 | === modified file 'share/qtcreator/ubuntu/scripts/qtc_device_applaunch.py' | |||
922 | --- share/qtcreator/ubuntu/scripts/qtc_device_applaunch.py 2014-10-02 08:11:21 +0000 | |||
923 | +++ share/qtcreator/ubuntu/scripts/qtc_device_applaunch.py 2014-10-09 08:07:05 +0000 | |||
924 | @@ -344,7 +344,10 @@ | |||
925 | 344 | success = subprocess.call(["pkcon","remove",package_name+";"+package_version+";"+package_arch+";local:click","-p"],stdout=subprocess.DEVNULL) | 344 | success = subprocess.call(["pkcon","remove",package_name+";"+package_version+";"+package_arch+";local:click","-p"],stdout=subprocess.DEVNULL) |
926 | 345 | if success != 0: | 345 | if success != 0: |
927 | 346 | print("Sdk-Launcher> Uninstalling the application failed",flush=True) | 346 | print("Sdk-Launcher> Uninstalling the application failed",flush=True) |
929 | 347 | sys.exit(1) | 347 | # Continue even though we could not uninstall the app, the user wanted to override it anyway |
930 | 348 | # but for scopes we need to stop, because the scope may still be running and we need a clean state | ||
931 | 349 | if "scope" in manifest['hooks'][hook_name]: | ||
932 | 350 | sys.exit(1) | ||
933 | 348 | 351 | ||
934 | 349 | #build the appid | 352 | #build the appid |
935 | 350 | app_id = None | 353 | app_id = None |
936 | 351 | 354 | ||
937 | === modified file 'src/ubuntu/ubuntu.pro' | |||
938 | --- src/ubuntu/ubuntu.pro 2014-09-30 15:44:15 +0000 | |||
939 | +++ src/ubuntu/ubuntu.pro 2014-10-09 08:07:05 +0000 | |||
940 | @@ -38,16 +38,13 @@ | |||
941 | 38 | $$QML_ROOT/welcome/Link.qml \ | 38 | $$QML_ROOT/welcome/Link.qml \ |
942 | 39 | $$QML_ROOT/welcome/NewsBox.qml\ | 39 | $$QML_ROOT/welcome/NewsBox.qml\ |
943 | 40 | $$QML_ROOT/devicespage/main.qml \ | 40 | $$QML_ROOT/devicespage/main.qml \ |
944 | 41 | $$QML_ROOT/devicespage/DeviceAdvancedTab.qml \ | ||
945 | 42 | $$QML_ROOT/devicespage/DeviceBuilderTab.qml \ | ||
946 | 43 | $$QML_ROOT/devicespage/DeviceLogTab.qml \ | ||
947 | 44 | $$QML_ROOT/devicespage/DevicePage.qml \ | 41 | $$QML_ROOT/devicespage/DevicePage.qml \ |
948 | 45 | $$QML_ROOT/devicespage/DeviceStatusTab.qml \ | 42 | $$QML_ROOT/devicespage/DeviceStatusTab.qml \ |
949 | 46 | $$QML_ROOT/devicespage/FeatureStateItem.qml \ | 43 | $$QML_ROOT/devicespage/FeatureStateItem.qml \ |
950 | 47 | $$QML_ROOT/devicespage/NewEmulatorDialog.qml \ | 44 | $$QML_ROOT/devicespage/NewEmulatorDialog.qml \ |
954 | 48 | $$QML_ROOT/devicespage/LogPage.qml \ | 45 | $$QML_ROOT/devicespage/DeleteEmulatorDialog.qml \ |
955 | 49 | $$QML_ROOT/devicespage/DeviceEmulatorTab.qml \ | 46 | $$QML_ROOT/devicespage/ScrollableView.qml \ |
956 | 50 | $$QML_ROOT/devicespage/DeleteEmulatorDialog.qml | 47 | $$QML_ROOT/devicespage/SectionItem.qml |
957 | 51 | 48 | ||
958 | 52 | OTHER_FILES += \ | 49 | OTHER_FILES += \ |
959 | 53 | UbuntuProject.mimetypes.xml \ | 50 | UbuntuProject.mimetypes.xml \ |
960 | 54 | 51 | ||
961 | === modified file 'src/ubuntu/ubuntupackageoutputparser.cpp' | |||
962 | --- src/ubuntu/ubuntupackageoutputparser.cpp 2014-10-02 08:07:54 +0000 | |||
963 | +++ src/ubuntu/ubuntupackageoutputparser.cpp 2014-10-09 08:07:05 +0000 | |||
964 | @@ -9,6 +9,10 @@ | |||
965 | 9 | namespace Internal { | 9 | namespace Internal { |
966 | 10 | 10 | ||
967 | 11 | const QRegularExpression DEBUG_POLICY_REGEX(QStringLiteral("security_policy_groups_safe_\\S+\\s+\\((\\S+)\\)")); | 11 | const QRegularExpression DEBUG_POLICY_REGEX(QStringLiteral("security_policy_groups_safe_\\S+\\s+\\((\\S+)\\)")); |
968 | 12 | const QRegularExpression DEBUG_SCOPE_POLICY_REGEX(QStringLiteral("security_policy_groups_scopes")); | ||
969 | 13 | const QRegularExpression DEBUG_SCOPE_TEXT_REGEX(QStringLiteral("found inappropriate policy groups:\\s+(.*)")); | ||
970 | 14 | const QRegularExpression ARCHITECTURE_ERROR_REGEX(QStringLiteral("lint_(control|manifest)_architecture_valid")); | ||
971 | 15 | const QString DEBUG_POLICY_NAME(QStringLiteral("debug")); | ||
972 | 12 | 16 | ||
973 | 13 | UbuntuPackageOutputParser::UbuntuPackageOutputParser() : | 17 | UbuntuPackageOutputParser::UbuntuPackageOutputParser() : |
974 | 14 | ProjectExplorer::IOutputParser(), | 18 | ProjectExplorer::IOutputParser(), |
975 | @@ -33,7 +37,9 @@ | |||
976 | 33 | 37 | ||
977 | 34 | bool UbuntuPackageOutputParser::hasFatalErrors() const | 38 | bool UbuntuPackageOutputParser::hasFatalErrors() const |
978 | 35 | { | 39 | { |
980 | 36 | return IOutputParser::hasFatalErrors() || m_fatalError; | 40 | //commented out due to bug lp:1377094 "Click review errors prevent applications from being deployed to the device" |
981 | 41 | //return IOutputParser::hasFatalErrors() || m_fatalError; | ||
982 | 42 | return IOutputParser::hasFatalErrors(); | ||
983 | 37 | } | 43 | } |
984 | 38 | 44 | ||
985 | 39 | /*! | 45 | /*! |
986 | @@ -89,7 +95,7 @@ | |||
987 | 89 | desc.append(QStringLiteral("\n")).append(item->link.toString()); | 95 | desc.append(QStringLiteral("\n")).append(item->link.toString()); |
988 | 90 | 96 | ||
989 | 91 | QRegularExpressionMatch match = DEBUG_POLICY_REGEX.match(item->type); | 97 | QRegularExpressionMatch match = DEBUG_POLICY_REGEX.match(item->type); |
991 | 92 | if(match.captured(1) == QStringLiteral("debug")) | 98 | if(match.captured(1) == DEBUG_POLICY_NAME) |
992 | 93 | desc.append(QStringLiteral("\n")).append(tr("The debug policy group is automatically injected and should only be used for development.\nTo create a package for the store use the publish tab!")); | 99 | desc.append(QStringLiteral("\n")).append(tr("The debug policy group is automatically injected and should only be used for development.\nTo create a package for the store use the publish tab!")); |
993 | 94 | 100 | ||
994 | 95 | task.description = desc; | 101 | task.description = desc; |
995 | @@ -103,7 +109,20 @@ | |||
996 | 103 | //add other error item types here if we just want them treated as warnings | 109 | //add other error item types here if we just want them treated as warnings |
997 | 104 | QRegularExpressionMatch match = DEBUG_POLICY_REGEX.match(item->type); | 110 | QRegularExpressionMatch match = DEBUG_POLICY_REGEX.match(item->type); |
998 | 105 | if(match.hasMatch()) { | 111 | if(match.hasMatch()) { |
1000 | 106 | if(match.captured(1) == QStringLiteral("debug")) | 112 | if(match.captured(1) == DEBUG_POLICY_NAME) |
1001 | 113 | return false; | ||
1002 | 114 | } | ||
1003 | 115 | match = DEBUG_SCOPE_POLICY_REGEX.match(item->type); | ||
1004 | 116 | if(match.hasMatch()) { | ||
1005 | 117 | match = DEBUG_SCOPE_TEXT_REGEX.match(item->text); | ||
1006 | 118 | if(match.hasMatch()) { | ||
1007 | 119 | if(match.captured(1).contains(DEBUG_POLICY_NAME)) | ||
1008 | 120 | return false; | ||
1009 | 121 | } | ||
1010 | 122 | } | ||
1011 | 123 | match = ARCHITECTURE_ERROR_REGEX.match(item->type); | ||
1012 | 124 | if(match.hasMatch()) { | ||
1013 | 125 | if(item->text.contains(QStringLiteral("i386"))) | ||
1014 | 107 | return false; | 126 | return false; |
1015 | 108 | } | 127 | } |
1016 | 109 | } | 128 | } |
PASSED: Continuous integration, rev:275 jenkins. qa.ubuntu. com/job/ qtcreator- plugin- ubuntu- ci/442/ jenkins. qa.ubuntu. com/job/ qtcreator- plugin- ubuntu- utopic- amd64-ci/ 210 jenkins. qa.ubuntu. com/job/ qtcreator- plugin- ubuntu- utopic- armhf-ci/ 210
http://
Executed test runs:
SUCCESS: http://
SUCCESS: http://
Click here to trigger a rebuild: s-jenkins. ubuntu- ci:8080/ job/qtcreator- plugin- ubuntu- ci/442/ rebuild
http://