Merge lp:~nik90/component-store/fix-debian-packaging into lp:~sil/component-store/community-components
- fix-debian-packaging
- Merge into community-components
Proposed by
Nekhelesh Ramananthan
on 2015-01-06
| Status: | Merged |
|---|---|
| Merged at revision: | 66 |
| Proposed branch: | lp:~nik90/component-store/fix-debian-packaging |
| Merge into: | lp:~sil/component-store/community-components |
| Diff against target: |
1167 lines (+749/-53) 24 files modified
curated-store/ComponentStore/CircleImage/ubuntu_component_store.json (+6/-0) curated-store/ComponentStore/EmptyState/ubuntu_component_store.json (+6/-0) curated-store/ComponentStore/FastScroll/ubuntu_component_store.json (+6/-0) curated-store/ComponentStore/ListItemWithActions/ListItemWithActions.qml (+100/-47) curated-store/ComponentStore/ListItemWithActions/ubuntu_component_store.json (+6/-0) curated-store/ComponentStore/PageWithBottomEdge/ubuntu_component_store.json (+6/-0) curated-store/ComponentStore/RadialBottomEdge/RadialAction.qml (+1/-0) curated-store/ComponentStore/RadialBottomEdge/RadialBottomEdge.qml (+35/-3) curated-store/ComponentStore/RadialBottomEdge/ubuntu_component_store.json (+6/-0) curated-store/ComponentStore/WelcomeWizard/Walkthrough.qml (+116/-0) curated-store/ComponentStore/WelcomeWizard/ubuntu_component_store.json (+6/-0) curated-store/GallerySRC/ListItemWithActionsWidget.qml (+6/-0) curated-store/GallerySRC/RadialBottomEdgeWidget.qml (+2/-0) curated-store/GallerySRC/Slide1.qml (+54/-0) curated-store/GallerySRC/Slide2.qml (+42/-0) curated-store/GallerySRC/WelcomeWizardWidget.qml (+41/-0) curated-store/GallerySRC/WidgetsModel.qml (+5/-0) docs/_components/listitemwithactions.rst (+25/-1) docs/_components/radialbottomedge.rst (+15/-1) docs/_components/welcomewizard.rst (+218/-0) docs/index.rst (+1/-0) docs/release.rst (+32/-0) script/debian/changelog (+12/-0) script/debian/control (+2/-1) |
| To merge this branch: | bzr merge lp:~nik90/component-store/fix-debian-packaging |
| Related bugs: |
| Reviewer | Review Type | Date Requested | Status |
|---|---|---|---|
| Stuart Langridge | 2015-01-06 | Approve on 2015-04-13 | |
|
Review via email:
|
|||
Commit Message
Fixed debian packaging.
Description of the Change
Fixed debian packaging. I tested the deb install and works as expected.
To post a comment you must log in.
lp:~nik90/component-store/fix-debian-packaging
updated
on 2015-04-13
- 66. By Nekhelesh Ramananthan on 2015-04-13
-
merged lp:component-store
review:
Approve
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
| 1 | === added file 'curated-store/ComponentStore/CircleImage/ubuntu_component_store.json' |
| 2 | --- curated-store/ComponentStore/CircleImage/ubuntu_component_store.json 1970-01-01 00:00:00 +0000 |
| 3 | +++ curated-store/ComponentStore/CircleImage/ubuntu_component_store.json 2015-04-13 17:45:57 +0000 |
| 4 | @@ -0,0 +1,6 @@ |
| 5 | +{ |
| 6 | + "name": "CircleImage", |
| 7 | + "description": "This widget converts any image into a circular sized image which can be useful for showing user profile pictures.", |
| 8 | + "version": "1.0", |
| 9 | + "documentation_url": "http://ubuntu-component-store.readthedocs.org/en/latest/_components/circleimage.html" |
| 10 | +} |
| 11 | |
| 12 | === added file 'curated-store/ComponentStore/EmptyState/ubuntu_component_store.json' |
| 13 | --- curated-store/ComponentStore/EmptyState/ubuntu_component_store.json 1970-01-01 00:00:00 +0000 |
| 14 | +++ curated-store/ComponentStore/EmptyState/ubuntu_component_store.json 2015-04-13 17:45:57 +0000 |
| 15 | @@ -0,0 +1,6 @@ |
| 16 | +{ |
| 17 | + "name": "EmptyState", |
| 18 | + "description": "This widget provides a standardized way to show an empty state (approved by Canonical designers) to improve the user experience and avoid showing a blank page.", |
| 19 | + "version": "1.0", |
| 20 | + "documentation_url": "http://ubuntu-component-store.readthedocs.org/en/latest/_components/emptystate.html" |
| 21 | +} |
| 22 | |
| 23 | === added file 'curated-store/ComponentStore/FastScroll/ubuntu_component_store.json' |
| 24 | --- curated-store/ComponentStore/FastScroll/ubuntu_component_store.json 1970-01-01 00:00:00 +0000 |
| 25 | +++ curated-store/ComponentStore/FastScroll/ubuntu_component_store.json 2015-04-13 17:45:57 +0000 |
| 26 | @@ -0,0 +1,6 @@ |
| 27 | +{ |
| 28 | + "name": "FastScroll", |
| 29 | + "description": "This widget provides a quick way to navigate long list views by providing a fast scroll.", |
| 30 | + "version": "1.0", |
| 31 | + "documentation_url": "http://ubuntu-component-store.readthedocs.org/en/latest/_components/fastscroll.html" |
| 32 | +} |
| 33 | |
| 34 | === modified file 'curated-store/ComponentStore/ListItemWithActions/ListItemWithActions.qml' |
| 35 | --- curated-store/ComponentStore/ListItemWithActions/ListItemWithActions.qml 2014-11-11 16:33:41 +0000 |
| 36 | +++ curated-store/ComponentStore/ListItemWithActions/ListItemWithActions.qml 2015-04-13 17:45:57 +0000 |
| 37 | @@ -15,7 +15,9 @@ |
| 38 | */ |
| 39 | |
| 40 | import QtQuick 2.2 |
| 41 | +import QtFeedback 5.0 |
| 42 | import Ubuntu.Components 1.1 |
| 43 | +import Ubuntu.Components.ListItems 1.0 as ListItem |
| 44 | |
| 45 | Item { |
| 46 | id: root |
| 47 | @@ -31,6 +33,9 @@ |
| 48 | property color selectedColor: "#E6E6E6" |
| 49 | property bool selected: false |
| 50 | property bool selectionMode: false |
| 51 | + property bool showUnderscore: false |
| 52 | + property bool showDivider: false |
| 53 | + property bool enableHaptics: false |
| 54 | property alias internalAnchors: mainContents.anchors |
| 55 | default property alias contents: mainContents.children |
| 56 | |
| 57 | @@ -64,7 +69,7 @@ |
| 58 | var xOffset = Math.abs(main.x) |
| 59 | var index = Math.min(Math.floor(xOffset / actionFullWidth), _visibleRightSideActions.length) |
| 60 | var newX = 0 |
| 61 | - if (index === _visibleRightSideActions.length) { |
| 62 | + if (index === _visibleRightSideActions.length) { |
| 63 | newX = -(rightActionsView.width - units.gu(2)) |
| 64 | } else if (index >= 1) { |
| 65 | newX = -(actionFullWidth * index) |
| 66 | @@ -96,7 +101,7 @@ |
| 67 | var itemStartX = item.x - marginX |
| 68 | var itemEndX = item.x + item.width + marginX |
| 69 | return (point.x >= itemStartX) && (point.x <= itemEndX) && |
| 70 | - (point.y >= item.y) && (point.y <= (item.y + item.height)); |
| 71 | + (point.y >= item.y) && (point.y <= (item.y + item.height)); |
| 72 | } |
| 73 | |
| 74 | function getActionAt(point) |
| 75 | @@ -118,8 +123,8 @@ |
| 76 | function updateActiveAction() |
| 77 | { |
| 78 | if (triggerActionOnMouseRelease && |
| 79 | - (main.x <= -(root.actionWidth + units.gu(2))) && |
| 80 | - (main.x > -(rightActionsView.width - units.gu(2)))) { |
| 81 | + (main.x <= -(root.actionWidth + units.gu(2))) && |
| 82 | + (main.x > -(rightActionsView.width - units.gu(2)))) { |
| 83 | var actionFullWidth = actionWidth + units.gu(2) |
| 84 | var xOffset = Math.abs(main.x) |
| 85 | var index = Math.min(Math.floor(xOffset / actionFullWidth), _visibleRightSideActions.length) |
| 86 | @@ -183,6 +188,16 @@ |
| 87 | height: defaultHeight |
| 88 | clip: height !== defaultHeight |
| 89 | |
| 90 | + HapticsEffect { |
| 91 | + id: clickEffect |
| 92 | + attackIntensity: 0.0 |
| 93 | + attackTime: 50 |
| 94 | + intensity: 1.0 |
| 95 | + duration: 10 |
| 96 | + fadeTime: 50 |
| 97 | + fadeIntensity: 0.0 |
| 98 | + } |
| 99 | + |
| 100 | Rectangle { |
| 101 | id: leftActionView |
| 102 | |
| 103 | @@ -201,6 +216,7 @@ |
| 104 | horizontalCenterOffset: actionThreshold / 2 |
| 105 | } |
| 106 | name: leftSideAction && _showActions ? leftSideAction.iconName : "" |
| 107 | + source: leftSideAction && _showActions ? leftSideAction.iconSource : "" |
| 108 | color: Theme.palette.selected.field |
| 109 | height: units.gu(3) |
| 110 | width: units.gu(3) |
| 111 | @@ -208,48 +224,66 @@ |
| 112 | } |
| 113 | |
| 114 | Rectangle { |
| 115 | - id: rightActionsView |
| 116 | - |
| 117 | - anchors { |
| 118 | - top: main.top |
| 119 | - left: main.right |
| 120 | - bottom: main.bottom |
| 121 | - } |
| 122 | - visible: _visibleRightSideActions.length > 0 |
| 123 | - width: rightActionsRepeater.count > 0 ? rightActionsRepeater.count * (root.actionWidth + units.gu(2)) + root.actionThreshold + units.gu(2) : 0 |
| 124 | - color: "white" |
| 125 | - Row { |
| 126 | - anchors{ |
| 127 | - top: parent.top |
| 128 | - left: parent.left |
| 129 | - leftMargin: units.gu(2) |
| 130 | - right: parent.right |
| 131 | - rightMargin: units.gu(2) |
| 132 | - bottom: parent.bottom |
| 133 | - } |
| 134 | - spacing: units.gu(2) |
| 135 | - Repeater { |
| 136 | - id: rightActionsRepeater |
| 137 | - |
| 138 | - model: _showActions ? _visibleRightSideActions : [] |
| 139 | - Item { |
| 140 | - property alias image: img |
| 141 | - |
| 142 | - height: rightActionsView.height |
| 143 | - width: root.actionWidth |
| 144 | - |
| 145 | - Icon { |
| 146 | - id: img |
| 147 | - |
| 148 | - anchors.centerIn: parent |
| 149 | - width: units.gu(3) |
| 150 | - height: units.gu(3) |
| 151 | - name: modelData.iconName |
| 152 | - color: root.activeAction === modelData ? UbuntuColors.lightAubergine : UbuntuColors.lightGrey |
| 153 | - } |
| 154 | - } |
| 155 | - } |
| 156 | - } |
| 157 | + id: rightActionsView |
| 158 | + |
| 159 | + anchors { |
| 160 | + top: main.top |
| 161 | + left: main.right |
| 162 | + bottom: main.bottom |
| 163 | + } |
| 164 | + visible: _visibleRightSideActions.length > 0 |
| 165 | + width: rightActionsRepeater.count > 0 ? rightActionsRepeater.count * (root.actionWidth + units.gu(2)) + root.actionThreshold + units.gu(2) : 0 |
| 166 | + color: "white" |
| 167 | + Row { |
| 168 | + anchors{ |
| 169 | + top: parent.top |
| 170 | + left: parent.left |
| 171 | + leftMargin: units.gu(2) |
| 172 | + right: parent.right |
| 173 | + rightMargin: units.gu(2) |
| 174 | + bottom: parent.bottom |
| 175 | + } |
| 176 | + spacing: units.gu(2) |
| 177 | + Repeater { |
| 178 | + id: rightActionsRepeater |
| 179 | + |
| 180 | + model: _showActions ? _visibleRightSideActions : [] |
| 181 | + Item { |
| 182 | + property alias image: img |
| 183 | + |
| 184 | + height: rightActionsView.height |
| 185 | + width: root.actionWidth |
| 186 | + |
| 187 | + Icon { |
| 188 | + id: img |
| 189 | + anchors.centerIn: parent |
| 190 | + width: units.gu(3) |
| 191 | + height: units.gu(3) |
| 192 | + name: modelData.iconName |
| 193 | + source: modelData.iconSource |
| 194 | + color: root.activeAction === modelData ? UbuntuColors.lightAubergine : UbuntuColors.lightGrey |
| 195 | + } |
| 196 | + Rectangle { |
| 197 | + id: underscore |
| 198 | + height: units.gu(0.2) |
| 199 | + anchors { |
| 200 | + left: parent.left |
| 201 | + right: parent.right |
| 202 | + bottom: parent.bottom |
| 203 | + bottomMargin: units.gu(1.5) |
| 204 | + |
| 205 | + } |
| 206 | + color: UbuntuColors.lightAubergine |
| 207 | + visible: root.activeAction === modelData && showUnderscore |
| 208 | + onVisibleChanged: { |
| 209 | + if (visible && enableHaptics) { |
| 210 | + clickEffect.start() |
| 211 | + } |
| 212 | + } |
| 213 | + } |
| 214 | + } |
| 215 | + } |
| 216 | + } |
| 217 | } |
| 218 | |
| 219 | |
| 220 | @@ -306,7 +340,7 @@ |
| 221 | } |
| 222 | } |
| 223 | Behavior on color { |
| 224 | - ColorAnimation {} |
| 225 | + ColorAnimation {} |
| 226 | } |
| 227 | } |
| 228 | |
| 229 | @@ -347,6 +381,7 @@ |
| 230 | ScriptAction { |
| 231 | script: { |
| 232 | root.activeAction.triggered(root) |
| 233 | + root.activeAction = null |
| 234 | mouseArea.state = "" |
| 235 | } |
| 236 | } |
| 237 | @@ -410,6 +445,9 @@ |
| 238 | |
| 239 | onReleased: { |
| 240 | if (root.triggerActionOnMouseRelease && root.activeAction) { |
| 241 | + if (enableHaptics) { |
| 242 | + clickEffect.start() |
| 243 | + } |
| 244 | triggerAction.start() |
| 245 | } else { |
| 246 | root.returnToBounds(direction) |
| 247 | @@ -435,6 +473,10 @@ |
| 248 | return |
| 249 | } |
| 250 | } |
| 251 | + if (enableHaptics) { |
| 252 | + clickEffect.start() |
| 253 | + } |
| 254 | + |
| 255 | root.resetSwipe() |
| 256 | } |
| 257 | |
| 258 | @@ -450,5 +492,16 @@ |
| 259 | } |
| 260 | z: -1 |
| 261 | } |
| 262 | + ListItem.ThinDivider { |
| 263 | + id: divider |
| 264 | + visible: showDivider |
| 265 | + width: parent.width + units.gu(4) |
| 266 | + anchors { |
| 267 | + left: parent.left |
| 268 | + right: parent.right |
| 269 | + bottom: parent.bottom |
| 270 | + bottomMargin: units.gu(-0.15) |
| 271 | + } |
| 272 | + } |
| 273 | } |
| 274 | |
| 275 | |
| 276 | === added file 'curated-store/ComponentStore/ListItemWithActions/ubuntu_component_store.json' |
| 277 | --- curated-store/ComponentStore/ListItemWithActions/ubuntu_component_store.json 1970-01-01 00:00:00 +0000 |
| 278 | +++ curated-store/ComponentStore/ListItemWithActions/ubuntu_component_store.json 2015-04-13 17:45:57 +0000 |
| 279 | @@ -0,0 +1,6 @@ |
| 280 | +{ |
| 281 | + "name": "ListItemWithActions", |
| 282 | + "description": "This widget provides an updated listitem which is what the core apps currently use.", |
| 283 | + "version": "1.0", |
| 284 | + "documentation_url": "http://ubuntu-component-store.readthedocs.org/en/latest/_components/listitemwithactions.html" |
| 285 | +} |
| 286 | |
| 287 | === added file 'curated-store/ComponentStore/PageWithBottomEdge/ubuntu_component_store.json' |
| 288 | --- curated-store/ComponentStore/PageWithBottomEdge/ubuntu_component_store.json 1970-01-01 00:00:00 +0000 |
| 289 | +++ curated-store/ComponentStore/PageWithBottomEdge/ubuntu_component_store.json 2015-04-13 17:45:57 +0000 |
| 290 | @@ -0,0 +1,6 @@ |
| 291 | +{ |
| 292 | + "name": "PageWithBottomEdge", |
| 293 | + "description": "This component provides a bottom edge which can be used to house common actions.", |
| 294 | + "version": "1.0", |
| 295 | + "documentation_url": "http://ubuntu-component-store.readthedocs.org/en/latest/_components/pagewithbottomedge.html" |
| 296 | +} |
| 297 | |
| 298 | === modified file 'curated-store/ComponentStore/RadialBottomEdge/RadialAction.qml' |
| 299 | --- curated-store/ComponentStore/RadialBottomEdge/RadialAction.qml 2014-11-15 13:52:44 +0000 |
| 300 | +++ curated-store/ComponentStore/RadialBottomEdge/RadialAction.qml 2015-04-13 17:45:57 +0000 |
| 301 | @@ -5,4 +5,5 @@ |
| 302 | property string iconName: "add" |
| 303 | property color iconColor: "Black" |
| 304 | property color backgroundColor: "White" |
| 305 | + property bool enabled: true |
| 306 | } |
| 307 | |
| 308 | === modified file 'curated-store/ComponentStore/RadialBottomEdge/RadialBottomEdge.qml' |
| 309 | --- curated-store/ComponentStore/RadialBottomEdge/RadialBottomEdge.qml 2014-11-15 14:50:47 +0000 |
| 310 | +++ curated-store/ComponentStore/RadialBottomEdge/RadialBottomEdge.qml 2015-04-13 17:45:57 +0000 |
| 311 | @@ -1,4 +1,5 @@ |
| 312 | -import QtQuick 2.0 |
| 313 | +import QtQuick 2.2 |
| 314 | +import QtFeedback 5.0 |
| 315 | import Ubuntu.Components 1.1 |
| 316 | |
| 317 | Item { |
| 318 | @@ -11,7 +12,8 @@ |
| 319 | property color hintIconColor: UbuntuColors.coolGrey |
| 320 | property bool bottomEdgeEnabled: true |
| 321 | |
| 322 | - property real expandedPosition: 0.6 * height |
| 323 | + property int expandAngle: 360 |
| 324 | + property real expandedPosition: (0.85 - 0.25 * expandAngle/360) * height |
| 325 | property real collapsedPosition: height - hintSize/2 |
| 326 | |
| 327 | property list<RadialAction> actions |
| 328 | @@ -20,6 +22,16 @@ |
| 329 | |
| 330 | anchors.fill: parent |
| 331 | |
| 332 | + HapticsEffect { |
| 333 | + id: clickEffect |
| 334 | + attackIntensity: 0.0 |
| 335 | + attackTime: 50 |
| 336 | + intensity: 1.0 |
| 337 | + duration: 10 |
| 338 | + fadeTime: 50 |
| 339 | + fadeIntensity: 0.0 |
| 340 | + } |
| 341 | + |
| 342 | Rectangle { |
| 343 | id: bgVisual |
| 344 | |
| 345 | @@ -41,6 +53,20 @@ |
| 346 | anchors.horizontalCenter: parent.horizontalCenter |
| 347 | y: collapsedPosition |
| 348 | z: parent.z + 1 |
| 349 | + |
| 350 | + Rectangle { |
| 351 | + id: dropShadow |
| 352 | + width: parent.width |
| 353 | + height: parent.height |
| 354 | + border.color: "#B3B3B3" |
| 355 | + color: "Transparent" |
| 356 | + radius: parent.radius |
| 357 | + z: -1 |
| 358 | + anchors { |
| 359 | + centerIn: parent |
| 360 | + verticalCenterOffset: units.gu(-0.3) |
| 361 | + } |
| 362 | + } |
| 363 | |
| 364 | Icon { |
| 365 | id: hintIcon |
| 366 | @@ -60,10 +86,13 @@ |
| 367 | |
| 368 | Repeater { |
| 369 | id: actionList |
| 370 | + readonly property real itemSpace: bottomEdge.expandAngle/actionList.count; |
| 371 | + readonly property real substractAngle: (bottomEdge.expandAngle == 360 || !actionList.count) ? |
| 372 | + 0 : (actionList.count-1)/2 * itemSpace |
| 373 | model: actions |
| 374 | delegate: Rectangle { |
| 375 | id: actionDelegate |
| 376 | - readonly property real radAngle: (index % actionList.count * (360/actionList.count)) * Math.PI / 180 |
| 377 | + readonly property real radAngle: (index % actionList.count * actionList.itemSpace - actionList.substractAngle) * Math.PI / 180 |
| 378 | property real distance: bottomEdgeHint.actionListDistance |
| 379 | z: -1 |
| 380 | width: actionButtonSize |
| 381 | @@ -71,6 +100,7 @@ |
| 382 | radius: width/2 |
| 383 | anchors.centerIn: parent |
| 384 | color: modelData.backgroundColor |
| 385 | + opacity: modelData.enabled ? 1.0 : 0.7 |
| 386 | transform: Translate { |
| 387 | x: distance * Math.sin(radAngle) |
| 388 | y: -distance * Math.cos(radAngle) |
| 389 | @@ -85,8 +115,10 @@ |
| 390 | } |
| 391 | |
| 392 | MouseArea { |
| 393 | + enabled: modelData.enabled |
| 394 | anchors.fill: parent |
| 395 | onClicked: { |
| 396 | + clickEffect.start() |
| 397 | bottomEdgeHint.state = "collapsed" |
| 398 | modelData.triggered(null) |
| 399 | } |
| 400 | |
| 401 | === added file 'curated-store/ComponentStore/RadialBottomEdge/ubuntu_component_store.json' |
| 402 | --- curated-store/ComponentStore/RadialBottomEdge/ubuntu_component_store.json 1970-01-01 00:00:00 +0000 |
| 403 | +++ curated-store/ComponentStore/RadialBottomEdge/ubuntu_component_store.json 2015-04-13 17:45:57 +0000 |
| 404 | @@ -0,0 +1,6 @@ |
| 405 | +{ |
| 406 | + "name": "RadialBottomEdge", |
| 407 | + "description": "This component provides a unique way to show actions buttons using the bottom edge. It allows app developers to decide how many actions they want to show and customize it to their liking.", |
| 408 | + "version": "1.1", |
| 409 | + "documentation_url": "http://ubuntu-component-store.readthedocs.org/en/latest/_components/radialbottomedge.html" |
| 410 | +} |
| 411 | |
| 412 | === added directory 'curated-store/ComponentStore/WelcomeWizard' |
| 413 | === added file 'curated-store/ComponentStore/WelcomeWizard/Walkthrough.qml' |
| 414 | --- curated-store/ComponentStore/WelcomeWizard/Walkthrough.qml 1970-01-01 00:00:00 +0000 |
| 415 | +++ curated-store/ComponentStore/WelcomeWizard/Walkthrough.qml 2015-04-13 17:45:57 +0000 |
| 416 | @@ -0,0 +1,116 @@ |
| 417 | +import QtQuick 2.3 |
| 418 | +import Ubuntu.Components 1.1 |
| 419 | +import Ubuntu.Components.ListItems 1.0 as ListItem |
| 420 | + |
| 421 | +Page { |
| 422 | + id: walkthrough |
| 423 | + |
| 424 | + // Property to set the app name used in the walkthrough |
| 425 | + property string appName |
| 426 | + |
| 427 | + // Property to check if this is the first run or not |
| 428 | + property bool isFirstRun: true |
| 429 | + |
| 430 | + // Property to store the slides shown in the walkthrough (Each slide is a component defined in a separate file for simplicity) |
| 431 | + property list<Component> model |
| 432 | + |
| 433 | + // Property to set the color of bottom cirle to indicate the user's progress |
| 434 | + property color completeColor: "green" |
| 435 | + |
| 436 | + // Property to set the color of the bottom circle to indicate the slide still left to cover |
| 437 | + property color inCompleteColor: "grey" |
| 438 | + |
| 439 | + // Property to set the color of the skip welcome wizard text |
| 440 | + property color skipTextColor: "grey" |
| 441 | + |
| 442 | + // Property to signal walkthrough completion |
| 443 | + signal finished |
| 444 | + |
| 445 | + // ListView to show the slides |
| 446 | + ListView { |
| 447 | + id: listView |
| 448 | + anchors { |
| 449 | + left: parent.left |
| 450 | + right: parent.right |
| 451 | + top: skipLabel.bottom |
| 452 | + bottom: separator.top |
| 453 | + } |
| 454 | + |
| 455 | + model: walkthrough.model |
| 456 | + snapMode: ListView.SnapOneItem |
| 457 | + orientation: Qt.Horizontal |
| 458 | + highlightMoveDuration: UbuntuAnimation.FastDuration |
| 459 | + highlightRangeMode: ListView.StrictlyEnforceRange |
| 460 | + highlightFollowsCurrentItem: true |
| 461 | + |
| 462 | + delegate: Item { |
| 463 | + width: listView.width |
| 464 | + height: listView.height |
| 465 | + clip: true |
| 466 | + |
| 467 | + Loader { |
| 468 | + anchors { |
| 469 | + fill: parent |
| 470 | + margins: units.gu(2) |
| 471 | + } |
| 472 | + |
| 473 | + sourceComponent: modelData |
| 474 | + } |
| 475 | + } |
| 476 | + } |
| 477 | + |
| 478 | + // Label to skip the walkthrough. Only visible on the first slide |
| 479 | + Label { |
| 480 | + id: skipLabel |
| 481 | + |
| 482 | + color: skipTextColor |
| 483 | + fontSize: "small" |
| 484 | + width: contentWidth |
| 485 | + text: listView.currentIndex === 0 ? i18n.tr("Already used %1? <b>Skip the tutorial</b>").arg(appName) : i18n.tr("Skip") |
| 486 | + |
| 487 | + anchors { |
| 488 | + top: parent.top |
| 489 | + left: parent.left |
| 490 | + margins: units.gu(2) |
| 491 | + } |
| 492 | + |
| 493 | + MouseArea { |
| 494 | + anchors.fill: parent |
| 495 | + onClicked: walkthrough.finished() |
| 496 | + } |
| 497 | + } |
| 498 | + |
| 499 | + // Separator between walkthrough slides and slide indicator |
| 500 | + ListItem.ThinDivider { |
| 501 | + id: separator |
| 502 | + anchors.bottom: slideIndicator.top |
| 503 | + } |
| 504 | + |
| 505 | + // Indicator element to represent the current slide of the walkthrough |
| 506 | + Row { |
| 507 | + id: slideIndicator |
| 508 | + height: units.gu(6) |
| 509 | + spacing: units.gu(2) |
| 510 | + anchors { |
| 511 | + bottom: parent.bottom |
| 512 | + horizontalCenter: parent.horizontalCenter |
| 513 | + } |
| 514 | + |
| 515 | + Repeater { |
| 516 | + model: walkthrough.model.length |
| 517 | + delegate: Rectangle { |
| 518 | + height: width |
| 519 | + radius: width/2 |
| 520 | + width: units.gu(2) |
| 521 | + antialiasing: true |
| 522 | + anchors.verticalCenter: parent.verticalCenter |
| 523 | + color: listView.currentIndex >= index ? completeColor : inCompleteColor |
| 524 | + Behavior on color { |
| 525 | + ColorAnimation { |
| 526 | + duration: UbuntuAnimation.FastDuration |
| 527 | + } |
| 528 | + } |
| 529 | + } |
| 530 | + } |
| 531 | + } |
| 532 | +} |
| 533 | |
| 534 | === added file 'curated-store/ComponentStore/WelcomeWizard/ubuntu_component_store.json' |
| 535 | --- curated-store/ComponentStore/WelcomeWizard/ubuntu_component_store.json 1970-01-01 00:00:00 +0000 |
| 536 | +++ curated-store/ComponentStore/WelcomeWizard/ubuntu_component_store.json 2015-04-13 17:45:57 +0000 |
| 537 | @@ -0,0 +1,6 @@ |
| 538 | +{ |
| 539 | + "name": "WelcomeWizard", |
| 540 | + "description": "This widget adds a welcome wizard to help introduce the app to users.", |
| 541 | + "version": "1.0", |
| 542 | + "documentation_url": "http://ubuntu-component-store.readthedocs.org/en/latest/_components/welcomewizard.html" |
| 543 | +} |
| 544 | |
| 545 | === modified file 'curated-store/GallerySRC/ListItemWithActionsWidget.qml' |
| 546 | --- curated-store/GallerySRC/ListItemWithActionsWidget.qml 2014-11-12 15:54:22 +0000 |
| 547 | +++ curated-store/GallerySRC/ListItemWithActionsWidget.qml 2015-04-13 17:45:57 +0000 |
| 548 | @@ -18,6 +18,9 @@ |
| 549 | id: testModel |
| 550 | ListElement { title: "Slide me right to delete" } |
| 551 | ListElement { title: "Slide me left to show more options" } |
| 552 | + // TODO: not sure what the best wording for these additional properties should be [dpniel] |
| 553 | + ListElement { title: "With thin divider" } |
| 554 | + ListElement { title: "With haptic feedback and actions underscored" } |
| 555 | } |
| 556 | |
| 557 | content: ListView { |
| 558 | @@ -32,6 +35,9 @@ |
| 559 | width: parent.width |
| 560 | color: "White" |
| 561 | triggerActionOnMouseRelease: true |
| 562 | + showDivider: index === 2 |
| 563 | + enableHaptics: index === 3 |
| 564 | + showUnderscore: index === 3 |
| 565 | |
| 566 | leftSideAction: Action { |
| 567 | iconName: "delete" |
| 568 | |
| 569 | === modified file 'curated-store/GallerySRC/RadialBottomEdgeWidget.qml' |
| 570 | --- curated-store/GallerySRC/RadialBottomEdgeWidget.qml 2014-11-15 14:50:47 +0000 |
| 571 | +++ curated-store/GallerySRC/RadialBottomEdgeWidget.qml 2015-04-13 17:45:57 +0000 |
| 572 | @@ -22,12 +22,14 @@ |
| 573 | RadialAction { |
| 574 | iconName: "settings" |
| 575 | iconColor: UbuntuColors.coolGrey |
| 576 | + enabled: false |
| 577 | }, |
| 578 | |
| 579 | RadialAction { |
| 580 | iconName: "save" |
| 581 | iconColor: "white" |
| 582 | backgroundColor: UbuntuColors.green |
| 583 | + enabled: false |
| 584 | onTriggered: console.log("save") |
| 585 | }, |
| 586 | |
| 587 | |
| 588 | === added file 'curated-store/GallerySRC/Slide1.qml' |
| 589 | --- curated-store/GallerySRC/Slide1.qml 1970-01-01 00:00:00 +0000 |
| 590 | +++ curated-store/GallerySRC/Slide1.qml 2015-04-13 17:45:57 +0000 |
| 591 | @@ -0,0 +1,54 @@ |
| 592 | +import QtQuick 2.3 |
| 593 | +import Ubuntu.Components 1.1 |
| 594 | + |
| 595 | +// Slide 1 |
| 596 | +Component { |
| 597 | + id: slide1 |
| 598 | + Item { |
| 599 | + id: slide1Container |
| 600 | + |
| 601 | + UbuntuShape { |
| 602 | + anchors { |
| 603 | + bottom: textColumn.top |
| 604 | + bottomMargin: units.gu(4) |
| 605 | + horizontalCenter: parent.horizontalCenter |
| 606 | + } |
| 607 | + |
| 608 | + image: Image { |
| 609 | + smooth: true |
| 610 | + antialiasing: true |
| 611 | + fillMode: Image.PreserveAspectFit |
| 612 | + source: Qt.resolvedUrl("assets/flashback.png") |
| 613 | + } |
| 614 | + } |
| 615 | + |
| 616 | + Column { |
| 617 | + id: textColumn |
| 618 | + |
| 619 | + anchors.centerIn: parent |
| 620 | + |
| 621 | + Label { |
| 622 | + text: "Welcome to" |
| 623 | + fontSize: "x-large" |
| 624 | + height: contentHeight |
| 625 | + anchors.horizontalCenter: parent.horizontalCenter |
| 626 | + } |
| 627 | + Label { |
| 628 | + text: "Component Store Gallery" |
| 629 | + font.bold: true |
| 630 | + height: contentHeight |
| 631 | + font.pixelSize: units.dp(50) |
| 632 | + anchors.horizontalCenter: parent.horizontalCenter |
| 633 | + } |
| 634 | + } |
| 635 | + |
| 636 | + Label { |
| 637 | + id: swipeText |
| 638 | + text: "Swipe left to continue" |
| 639 | + horizontalAlignment: Text.AlignHCenter |
| 640 | + anchors.bottom: parent.bottom |
| 641 | + anchors.bottomMargin: units.gu(2) |
| 642 | + anchors.horizontalCenter: parent.horizontalCenter |
| 643 | + } |
| 644 | + } |
| 645 | +} |
| 646 | |
| 647 | === added file 'curated-store/GallerySRC/Slide2.qml' |
| 648 | --- curated-store/GallerySRC/Slide2.qml 1970-01-01 00:00:00 +0000 |
| 649 | +++ curated-store/GallerySRC/Slide2.qml 2015-04-13 17:45:57 +0000 |
| 650 | @@ -0,0 +1,42 @@ |
| 651 | +import QtQuick 2.3 |
| 652 | +import Ubuntu.Components 1.1 |
| 653 | + |
| 654 | +// Slide 2 |
| 655 | +Component { |
| 656 | + id: slide2 |
| 657 | + Item { |
| 658 | + id: slide2Container |
| 659 | + |
| 660 | + Column { |
| 661 | + id: mainColumn |
| 662 | + spacing: units.gu(4) |
| 663 | + anchors.fill: parent |
| 664 | + |
| 665 | + Label { |
| 666 | + id: introductionText |
| 667 | + text: "Component Store Gallery" |
| 668 | + font.bold: true |
| 669 | + fontSize: "x-large" |
| 670 | + anchors.horizontalCenter: parent.horizontalCenter |
| 671 | + } |
| 672 | + |
| 673 | + Image { |
| 674 | + id: centerImage |
| 675 | + height: parent.height - bodyText.contentHeight - introductionText.height - 4*mainColumn.spacing |
| 676 | + fillMode: Image.PreserveAspectFit |
| 677 | + anchors.horizontalCenter: parent.horizontalCenter |
| 678 | + source: Qt.resolvedUrl("assets/flashback.png") |
| 679 | + } |
| 680 | + |
| 681 | + Label { |
| 682 | + id: bodyText |
| 683 | + anchors.left: parent.left |
| 684 | + anchors.right: parent.right |
| 685 | + wrapMode: Text.WordWrap |
| 686 | + font.pixelSize: units.dp(17) |
| 687 | + horizontalAlignment: Text.AlignHCenter |
| 688 | + text: "Component Store Gallery is a frontend app to the component store and provides a demo of all the components in the store. \n\nUbuntu Touch's first component store!" |
| 689 | + } |
| 690 | + } |
| 691 | + } |
| 692 | +} |
| 693 | |
| 694 | === added file 'curated-store/GallerySRC/WelcomeWizardWidget.qml' |
| 695 | --- curated-store/GallerySRC/WelcomeWizardWidget.qml 1970-01-01 00:00:00 +0000 |
| 696 | +++ curated-store/GallerySRC/WelcomeWizardWidget.qml 2015-04-13 17:45:57 +0000 |
| 697 | @@ -0,0 +1,41 @@ |
| 698 | +import QtQuick 2.0 |
| 699 | +import Ubuntu.Components 1.1 |
| 700 | +import "../ComponentStore/WelcomeWizard" |
| 701 | + |
| 702 | +TemplateWidgetPage { |
| 703 | + id: welcomeWizardWidget |
| 704 | + |
| 705 | + title: "Welcome Wizard" |
| 706 | + author: "Nekhelesh Ramananthan, Michael Spencer" |
| 707 | + email: "nik90@ubuntu.com" |
| 708 | + license: "GNU General Public License v3.0" |
| 709 | + description: "This widget adds a welcome wizard which helps showcase the \ |
| 710 | +app features to the user." |
| 711 | + |
| 712 | + Component { |
| 713 | + id: pageComponent |
| 714 | + Walkthrough { |
| 715 | + id: walkthrough |
| 716 | + |
| 717 | + appName: "Component Store Gallery" |
| 718 | + |
| 719 | + onFinished: { |
| 720 | + console.log("Welcome Wizard Complete!") |
| 721 | + stack.pop() |
| 722 | + } |
| 723 | + |
| 724 | + model: [ |
| 725 | + Slide1{}, |
| 726 | + Slide2{} |
| 727 | + ] |
| 728 | + } |
| 729 | + } |
| 730 | + |
| 731 | + content: Button { |
| 732 | + text: "Preview Welcome Wizard Component" |
| 733 | + color: "Green" |
| 734 | + height: units.gu(6) |
| 735 | + onClicked: stack.push(pageComponent) |
| 736 | + anchors.centerIn: parent |
| 737 | + } |
| 738 | +} |
| 739 | |
| 740 | === modified file 'curated-store/GallerySRC/WidgetsModel.qml' |
| 741 | --- curated-store/GallerySRC/WidgetsModel.qml 2014-11-15 13:52:44 +0000 |
| 742 | +++ curated-store/GallerySRC/WidgetsModel.qml 2015-04-13 17:45:57 +0000 |
| 743 | @@ -32,4 +32,9 @@ |
| 744 | label: "Radial Bottom Edge" |
| 745 | source: "GallerySRC/RadialBottomEdgeWidget.qml" |
| 746 | } |
| 747 | + |
| 748 | + ListElement { |
| 749 | + label: "Welcome Wizard" |
| 750 | + source: "GallerySRC/WelcomeWizardWidget.qml" |
| 751 | + } |
| 752 | } |
| 753 | |
| 754 | === modified file 'docs/_components/listitemwithactions.rst' |
| 755 | --- docs/_components/listitemwithactions.rst 2014-11-15 14:59:11 +0000 |
| 756 | +++ docs/_components/listitemwithactions.rst 2015-04-13 17:45:57 +0000 |
| 757 | @@ -83,6 +83,9 @@ |
| 758 | - :ref:`rightSideActions`: Action <List> |
| 759 | - :ref:`locked`: boolean (false by default) |
| 760 | - :ref:`triggerActionOnMouseRelease`: boolean (false by default) |
| 761 | +- :ref:`showDivider`: boolean (false by default) |
| 762 | +- :ref:`showUnderscore`: boolean (false by default) |
| 763 | +- :ref:`enableHaptics`: boolean (false by default) |
| 764 | |
| 765 | Property Documentation |
| 766 | ---------------------- |
| 767 | @@ -116,7 +119,7 @@ |
| 768 | |
| 769 | Label { |
| 770 | id: subTitle |
| 771 | - text: "SubTitle |
| 772 | + text: "SubTitle" |
| 773 | } |
| 774 | } |
| 775 | |
| 776 | @@ -184,3 +187,24 @@ |
| 777 | This property affects the right side actions behavior. If set to true, the user can swipe left to |
| 778 | reveal the right side actions and execute an action by just hovering over it. By default, this is |
| 779 | set to false meaning that the user needs to press on the action to trigger it. |
| 780 | + |
| 781 | +.. _showDivider: |
| 782 | + |
| 783 | +showDivider |
| 784 | +^^^^^^^^^^^ |
| 785 | + |
| 786 | +This property can be used to display a thin divider along the bottom of the list item. |
| 787 | + |
| 788 | +.. _showUnderscore: |
| 789 | + |
| 790 | +showUnderscore |
| 791 | +^^^^^^^^^^^^^^ |
| 792 | + |
| 793 | +This property when enabled displays an underscore underneath the active action in the rightSideActions. |
| 794 | + |
| 795 | +.. _enableHaptics: |
| 796 | + |
| 797 | +enableHaptics |
| 798 | +^^^^^^^^^^^^^ |
| 799 | + |
| 800 | +This property enables haptic feedback when triggering actions in the list item. |
| 801 | |
| 802 | === modified file 'docs/_components/radialbottomedge.rst' |
| 803 | --- docs/_components/radialbottomedge.rst 2014-11-15 14:59:11 +0000 |
| 804 | +++ docs/_components/radialbottomedge.rst 2015-04-13 17:45:57 +0000 |
| 805 | @@ -35,6 +35,7 @@ |
| 806 | RadialAction { |
| 807 | iconName: "save" |
| 808 | iconColor: "white" |
| 809 | + enabled: false |
| 810 | backgroundColor: UbuntuColors.green |
| 811 | onTriggered: console.log("save") |
| 812 | }, |
| 813 | @@ -42,6 +43,7 @@ |
| 814 | RadialAction { |
| 815 | iconName: "delete" |
| 816 | iconColor: "white" |
| 817 | + enabled: false |
| 818 | backgroundColor: UbuntuColors.red |
| 819 | onTriggered: console.log("delete") |
| 820 | }, |
| 821 | @@ -74,6 +76,7 @@ |
| 822 | - :ref:`actions`: RadialAction <list> |
| 823 | - :ref:`actionButtonSize`: int |
| 824 | - :ref:`actionButtonDistance`: int |
| 825 | +- :ref:`expandAngle`: int (defaults to 360 deg) |
| 826 | |
| 827 | .. note:: All properties except for *hintIconSource* have well defined defaults. As a developer, you could choose to go with the defaults or change them to your liking. |
| 828 | |
| 829 | @@ -132,11 +135,12 @@ |
| 830 | |
| 831 | This property is used to define a list of actions to be shown in the radial menu. The list takes |
| 832 | a **RadialAction** which inherits **Action**. A RadialAction adds 3 properties on top of what Action |
| 833 | -provides which are iconName, iconColor and backgroundColor. :: |
| 834 | +provides which are iconName, iconColor, enabled and backgroundColor. :: |
| 835 | |
| 836 | RadialAction { |
| 837 | iconName: "add" |
| 838 | iconColor: "white" |
| 839 | + enabled: false |
| 840 | backgroundColor: "green" |
| 841 | } |
| 842 | |
| 843 | @@ -156,3 +160,13 @@ |
| 844 | ^^^^^^^^^^^^^^^^^^^^ |
| 845 | |
| 846 | The distance (separation) between the action buttons and the center of the radial menu. |
| 847 | + |
| 848 | +.. _expandAngle: |
| 849 | + |
| 850 | +expandAngle |
| 851 | +^^^^^^^^^^^ |
| 852 | + |
| 853 | +The expand angle defines the spread angle. By default, it is set to 360 degrees which places the buttons |
| 854 | +in a full circle pattern. If it was set to 180 degrees, then the buttons would follow a semi-circle |
| 855 | +pattern. |
| 856 | + |
| 857 | |
| 858 | === added file 'docs/_components/welcomewizard.rst' |
| 859 | --- docs/_components/welcomewizard.rst 1970-01-01 00:00:00 +0000 |
| 860 | +++ docs/_components/welcomewizard.rst 2015-04-13 17:45:57 +0000 |
| 861 | @@ -0,0 +1,218 @@ |
| 862 | +Welcome Wizard |
| 863 | +============== |
| 864 | + |
| 865 | ++----------+----------------------------------------+ |
| 866 | +| Author | Nekhelesh Ramananthan, Michael Spencer | |
| 867 | ++----------+-------------+--------------------------+ |
| 868 | +| License | BSD License | |
| 869 | ++----------+----------------------------------------+ |
| 870 | +| Contact | nik90@ubuntu.com | |
| 871 | ++----------+----------------------------------------+ |
| 872 | +| Framework| ubuntu-sdk-14.10 | |
| 873 | ++----------+----------------------------------------+ |
| 874 | + |
| 875 | +This component shows users a welcome wizard which can be used to introduce |
| 876 | +and showcase the features of the app to guide the user. The API of this |
| 877 | +component is rather simple and provides a lot of freedom to the developer |
| 878 | +to present his content. |
| 879 | + |
| 880 | +It is recommended to put the Walkthrough{} component inside a qml Component{} |
| 881 | +since it is not run frequently. Walkthrough derives from a Page. So push it |
| 882 | +into a pagestack to show the welcome wizard as shown below in the example. |
| 883 | + |
| 884 | +Example: |
| 885 | + |
| 886 | +MainView.qml |
| 887 | + |
| 888 | +.. code-block:: qml |
| 889 | + |
| 890 | + MainView |
| 891 | + { |
| 892 | + Component { |
| 893 | + id: pageComponent |
| 894 | + Walkthrough { |
| 895 | + id: walkthrough |
| 896 | + |
| 897 | + appName: "Component Store Gallery" |
| 898 | + |
| 899 | + onFinished: { |
| 900 | + console.log("Welcome Wizard Complete!") |
| 901 | + // Here perhaps save isFirstRun variable to the disk |
| 902 | + stack.pop() |
| 903 | + } |
| 904 | + |
| 905 | + model: [ |
| 906 | + Slide1{}, |
| 907 | + Slide2{} |
| 908 | + ] |
| 909 | + } |
| 910 | + } |
| 911 | + |
| 912 | + component.onCompleted: pagestack.push(pageComponent) |
| 913 | + } |
| 914 | + |
| 915 | +Slide1.qml |
| 916 | + |
| 917 | +.. code-block:: qml |
| 918 | + |
| 919 | + import QtQuick 2.3 |
| 920 | + import Ubuntu.Components 1.1 |
| 921 | + |
| 922 | + // Slide 1 |
| 923 | + Component { |
| 924 | + id: slide1 |
| 925 | + Item { |
| 926 | + id: slide1Container |
| 927 | + |
| 928 | + UbuntuShape { |
| 929 | + anchors { |
| 930 | + bottom: textColumn.top |
| 931 | + bottomMargin: units.gu(4) |
| 932 | + horizontalCenter: parent.horizontalCenter |
| 933 | + } |
| 934 | + |
| 935 | + image: Image { |
| 936 | + smooth: true |
| 937 | + antialiasing: true |
| 938 | + fillMode: Image.PreserveAspectFit |
| 939 | + source: Qt.resolvedUrl("assets/flashback.png") |
| 940 | + } |
| 941 | + } |
| 942 | + |
| 943 | + Column { |
| 944 | + id: textColumn |
| 945 | + |
| 946 | + anchors.centerIn: parent |
| 947 | + |
| 948 | + Label { |
| 949 | + text: "Welcome to" |
| 950 | + fontSize: "x-large" |
| 951 | + height: contentHeight |
| 952 | + anchors.horizontalCenter: parent.horizontalCenter |
| 953 | + } |
| 954 | + Label { |
| 955 | + text: "Component Store Gallery" |
| 956 | + font.bold: true |
| 957 | + height: contentHeight |
| 958 | + font.pixelSize: units.dp(50) |
| 959 | + anchors.horizontalCenter: parent.horizontalCenter |
| 960 | + } |
| 961 | + } |
| 962 | + |
| 963 | + Label { |
| 964 | + id: swipeText |
| 965 | + text: "Swipe left to continue" |
| 966 | + horizontalAlignment: Text.AlignHCenter |
| 967 | + anchors.bottom: parent.bottom |
| 968 | + anchors.bottomMargin: units.gu(2) |
| 969 | + anchors.horizontalCenter: parent.horizontalCenter |
| 970 | + } |
| 971 | + } |
| 972 | + } |
| 973 | + |
| 974 | +.. image:: ../_images/welcomewizard.png |
| 975 | + :align: center |
| 976 | + |
| 977 | +Properties |
| 978 | +---------- |
| 979 | + |
| 980 | +- :ref:`appName`: string |
| 981 | +- :ref:`isFirstRun`: boolean |
| 982 | +- :ref:`model`: Item<list> |
| 983 | +- :ref:`completeColor`: color |
| 984 | +- :ref:`inCompleteColor`: color |
| 985 | +- :ref:`skipTextColor`: color |
| 986 | + |
| 987 | +Signals |
| 988 | +------- |
| 989 | + |
| 990 | +- :ref:`finished()` |
| 991 | + |
| 992 | +Property Documentation |
| 993 | +---------------------- |
| 994 | + |
| 995 | +.. _appName: |
| 996 | + |
| 997 | +appName |
| 998 | +^^^^^^^ |
| 999 | + |
| 1000 | +Name of the application that is shown in some parts of the welcome wizard. |
| 1001 | + |
| 1002 | +.. _isFirstRun: |
| 1003 | + |
| 1004 | +isFirstRun |
| 1005 | +^^^^^^^^^^ |
| 1006 | + |
| 1007 | +Boolean property to determine if the welcome wizard was run for the first time |
| 1008 | +or not. It is recommended to store this variable to the disk using U1dB or Qt.labs.settings |
| 1009 | +to remember the welcome wizard run state. |
| 1010 | + |
| 1011 | +.. _model: |
| 1012 | + |
| 1013 | +model |
| 1014 | +^^^^^ |
| 1015 | + |
| 1016 | +This property stores the welcome wizards slides that are shown to the user. |
| 1017 | +Create your content and store them in separate files per slide. So if you |
| 1018 | +have 3 slides in your welcome wizard, you could define them as Slide1.qml, |
| 1019 | +Slide2.qml and Slide3.qml and then reference them as, |
| 1020 | + |
| 1021 | +.. code-block:: qml |
| 1022 | + |
| 1023 | + model: [ |
| 1024 | + Slide1{}, |
| 1025 | + Slide2{}, |
| 1026 | + Slide3{} |
| 1027 | + ] |
| 1028 | + |
| 1029 | +The slides should only contain the content you want to show. Everything else like the |
| 1030 | +dots, divider, title etc are handled by the welcome wizard component itself. Think of these |
| 1031 | +slides as delegates in a listview which only house the content itself. |
| 1032 | + |
| 1033 | +.. _completeColor: |
| 1034 | + |
| 1035 | +completeColor |
| 1036 | +^^^^^^^^^^^^^ |
| 1037 | + |
| 1038 | +This property sets the color of the bottom circle to indicate the progress of the user. By |
| 1039 | +default it is green. |
| 1040 | + |
| 1041 | +.. _inCompleteColor: |
| 1042 | + |
| 1043 | +inCompleteColor |
| 1044 | +^^^^^^^^^^^^^^^ |
| 1045 | + |
| 1046 | +This property sets the color of the bottom circle to indicate the slides left in the wizard. |
| 1047 | +By default it is grey. |
| 1048 | + |
| 1049 | +.. _skipTextColor: |
| 1050 | + |
| 1051 | +skipTextColor |
| 1052 | +^^^^^^^^^^^^^ |
| 1053 | + |
| 1054 | +This property sets the color of the skip text shown at the top of the welcome wizard. |
| 1055 | + |
| 1056 | +Signal Documentation |
| 1057 | +-------------------- |
| 1058 | + |
| 1059 | +.. _finished(): |
| 1060 | + |
| 1061 | +finished() |
| 1062 | +^^^^^^^^^^ |
| 1063 | + |
| 1064 | +This signal is fired automatically when the user press the skip button. It can also be made |
| 1065 | +to fire manually to exit the welcome wizard. You can perform exit tasks when this signal is fired |
| 1066 | +like updating the :ref:`isFirstRun` variable and storing to disk etc. |
| 1067 | + |
| 1068 | +.. code-block:: qml |
| 1069 | + |
| 1070 | + Button { |
| 1071 | + id: continueButton |
| 1072 | + color: "Green" |
| 1073 | + height: units.gu(5) |
| 1074 | + width: units.gu(25) |
| 1075 | + text: "Exit Welcome Wizard" |
| 1076 | + anchors.horizontalCenter: parent.horizontalCenter |
| 1077 | + onClicked: finished() |
| 1078 | + } |
| 1079 | + |
| 1080 | |
| 1081 | === added file 'docs/_images/welcomewizard.png' |
| 1082 | Binary files docs/_images/welcomewizard.png 1970-01-01 00:00:00 +0000 and docs/_images/welcomewizard.png 2015-04-13 17:45:57 +0000 differ |
| 1083 | === modified file 'docs/index.rst' |
| 1084 | --- docs/index.rst 2015-01-04 12:05:08 +0000 |
| 1085 | +++ docs/index.rst 2015-04-13 17:45:57 +0000 |
| 1086 | @@ -56,3 +56,4 @@ |
| 1087 | _components/listitemwithactions |
| 1088 | _components/pagewithbottomedge |
| 1089 | _components/radialbottomedge |
| 1090 | + _components/welcomewizard |
| 1091 | |
| 1092 | === modified file 'docs/release.rst' |
| 1093 | --- docs/release.rst 2014-11-15 14:50:47 +0000 |
| 1094 | +++ docs/release.rst 2015-04-13 17:45:57 +0000 |
| 1095 | @@ -1,6 +1,38 @@ |
| 1096 | Release Notes |
| 1097 | ============= |
| 1098 | |
| 1099 | +**23rd March 2015** |
| 1100 | + |
| 1101 | +* Added haptic feedback to radial action buttons |
| 1102 | +* Added drop shadow to radial bottom edge hint |
| 1103 | + |
| 1104 | +**13th March 2015** |
| 1105 | + |
| 1106 | +* Improved ListItemWithActions components by adding the following new properties, |
| 1107 | + |
| 1108 | + * showDivider - mimics SDK ListItem property |
| 1109 | + * showUnderscore - Shows an underscore under the active right side action |
| 1110 | + * enableHaptics - enables haptic effects on actions triggered |
| 1111 | + |
| 1112 | +**11th March 2015** |
| 1113 | + |
| 1114 | +* Added expandAngle property to radial bottom edge component to allow developers to specify the spread angle. |
| 1115 | + |
| 1116 | +**3rd March 2015** |
| 1117 | + |
| 1118 | +* Added WelcomeWizard component |
| 1119 | +* Fixed a typo in listitemwithactions documentation |
| 1120 | + |
| 1121 | +**23rd February 2015** |
| 1122 | + |
| 1123 | +* ListItemWithActions: Reset active action after executing it. |
| 1124 | +* ListItemWithActions has been fixed to use actions's iconSource property |
| 1125 | + to allow using icons that are not in the theme |
| 1126 | + |
| 1127 | +**4th January 2015** |
| 1128 | + |
| 1129 | +* Add ubuntu_component_store.json metadata files for curated components |
| 1130 | + |
| 1131 | **15th November 2014** |
| 1132 | |
| 1133 | * Added radial bottom edge component |
| 1134 | |
| 1135 | === modified file 'script/debian/changelog' |
| 1136 | --- script/debian/changelog 2014-11-09 15:37:52 +0000 |
| 1137 | +++ script/debian/changelog 2015-04-13 17:45:57 +0000 |
| 1138 | @@ -1,3 +1,15 @@ |
| 1139 | +ucs (0.2) trusty; urgency=medium |
| 1140 | + |
| 1141 | + [Stuart Langridge] |
| 1142 | + * Added community channel which allows developers to submit components |
| 1143 | + easily to ucs. |
| 1144 | + * Converted ucs script to python |
| 1145 | + |
| 1146 | + [Nekhelesh Ramananthan] |
| 1147 | + * Fixed UCS Gallery app and debian packaging |
| 1148 | + |
| 1149 | + -- Nekhelesh Ramananthan <krnekhelesh@gmail.com> Tue, 06 Jan 2015 15:57:14 +0100 |
| 1150 | + |
| 1151 | ucs (0.1.2) trusty; urgency=medium |
| 1152 | |
| 1153 | * Improved install and update command to use less network bandwidth by only |
| 1154 | |
| 1155 | === modified file 'script/debian/control' |
| 1156 | --- script/debian/control 2014-11-08 22:37:17 +0000 |
| 1157 | +++ script/debian/control 2015-04-13 17:45:57 +0000 |
| 1158 | @@ -10,7 +10,8 @@ |
| 1159 | Package: ucs |
| 1160 | Architecture: all |
| 1161 | Depends: ${misc:Depends}, |
| 1162 | - bzr |
| 1163 | + bzr, |
| 1164 | + python-bzrlib |
| 1165 | Description: Ubuntu Component Store |
| 1166 | Ubuntu Component Store is a library hosting a collection of component and |
| 1167 | modules that app developers can use as plug-and-play components instead of |
