Merge lp:~ibelieve/ubuntu-filemanager-app/sidebar into lp:ubuntu-filemanager-app

Proposed by Michael Spencer
Status: Merged
Approved by: Nicholas Skaggs
Approved revision: 65
Merged at revision: 57
Proposed branch: lp:~ibelieve/ubuntu-filemanager-app/sidebar
Merge into: lp:ubuntu-filemanager-app
Prerequisite: lp:~ibelieve/ubuntu-filemanager-app/advanced-options
Diff against target: 1290 lines (+708/-207)
13 files modified
FileDetailsPopover.qml (+11/-0)
FolderListDelegate.qml (+1/-0)
FolderListPage.qml (+213/-103)
FolderListView.qml (+74/-76)
GoToDialog.qml (+89/-0)
OptionsPopover.qml (+38/-4)
PlacesPopover.qml (+10/-1)
PlacesSidebar.qml (+105/-0)
SettingsSheet.qml (+5/-1)
Sidebar.qml (+75/-0)
tests/autopilot/ubuntu_filemanager_app/emulators.py (+35/-6)
tests/autopilot/ubuntu_filemanager_app/tests/test_filemanager.py (+47/-15)
ubuntu-filemanager-app.qml (+5/-1)
To merge this branch: bzr merge lp:~ibelieve/ubuntu-filemanager-app/sidebar
Reviewer Review Type Date Requested Status
Nicholas Skaggs (community) Approve
Ubuntu Phone Apps Jenkins Bot continuous-integration Approve
Review via email: mp+178783@code.launchpad.net

This proposal supersedes a proposal from 2013-08-06.

Commit message

Added sidebar for desktop/tablet mode and Suru theme

Description of the change

Added a sidebar for desktop/tablet mode that makes going to bookmarked places easy (like in Nautilus), and the initial dark-gray gradient Suru theme by Victor Thompson.

To post a comment you must log in.
Revision history for this message
Ubuntu Phone Apps Jenkins Bot (ubuntu-phone-apps-jenkins-bot) wrote : Posted in a previous version of this proposal
review: Approve (continuous-integration)
Revision history for this message
Ubuntu Phone Apps Jenkins Bot (ubuntu-phone-apps-jenkins-bot) wrote :

FAILED: Continuous integration, rev:57
No commit message was specified in the merge proposal. Click on the following link and set the commit message (if you want a jenkins rebuild you need to trigger it yourself):
https://code.launchpad.net/~mdspencer/ubuntu-filemanager-app/sidebar/+merge/178783/+edit-commit-message

http://91.189.93.70:8080/job/ubuntu-filemanager-app-ci/21/
Executed test runs:
    SUCCESS: http://91.189.93.70:8080/job/ubuntu-filemanager-app-precise-amd64-ci/19
    SUCCESS: http://91.189.93.70:8080/job/ubuntu-filemanager-app-quantal-amd64-ci/22
    SUCCESS: http://91.189.93.70:8080/job/ubuntu-filemanager-app-raring-amd64-ci/22
    SUCCESS: http://91.189.93.70:8080/job/ubuntu-filemanager-app-saucy-amd64-ci/19

Click here to trigger a rebuild:
http://91.189.93.70:8080/job/ubuntu-filemanager-app-ci/21/rebuild

review: Needs Fixing (continuous-integration)
58. By Michael Spencer

Fixed visibility of actions in the folder actions popover

Revision history for this message
Ubuntu Phone Apps Jenkins Bot (ubuntu-phone-apps-jenkins-bot) wrote :
review: Approve (continuous-integration)
59. By Michael Spencer

Added initial Suru theme and some hacks to make it work by Victor Thompson

Revision history for this message
Ubuntu Phone Apps Jenkins Bot (ubuntu-phone-apps-jenkins-bot) wrote :
review: Approve (continuous-integration)
60. By Michael Spencer

Improved file action selection popover

Revision history for this message
Ubuntu Phone Apps Jenkins Bot (ubuntu-phone-apps-jenkins-bot) wrote :
review: Approve (continuous-integration)
61. By Michael Spencer

Fixed how the action selection popover worked

Revision history for this message
Ubuntu Phone Apps Jenkins Bot (ubuntu-phone-apps-jenkins-bot) wrote :
review: Approve (continuous-integration)
62. By Michael Spencer

Fixed action popovers

Revision history for this message
Ubuntu Phone Apps Jenkins Bot (ubuntu-phone-apps-jenkins-bot) wrote :
review: Approve (continuous-integration)
63. By Michael Spencer

Improved autopilot tests to work with the sidebar

Revision history for this message
Ubuntu Phone Apps Jenkins Bot (ubuntu-phone-apps-jenkins-bot) wrote :
review: Needs Fixing (continuous-integration)
Revision history for this message
Victor Thompson (vthompson) wrote :

This is really great looking. I love the added responsive layout! Awesome work!

As an improvement for the future, I think it'd be cool if the current path at the top of the app could "clip" or anchor to the top of the MainView as you scroll down. As an added bonus, then maybe the current path could be editable so it could replace the "Go To" toolbar icon and the text box in the "Places" toolbar popover.

64. By Michael Spencer

Fixed pep8 and pyflakes errors and worked on fixing autopilot tests

Revision history for this message
Ubuntu Phone Apps Jenkins Bot (ubuntu-phone-apps-jenkins-bot) wrote :
review: Approve (continuous-integration)
65. By Michael Spencer

Completely fixed all autopilot tests

Revision history for this message
Ubuntu Phone Apps Jenkins Bot (ubuntu-phone-apps-jenkins-bot) wrote :
review: Approve (continuous-integration)
Revision history for this message
Nicholas Skaggs (nskaggs) wrote :

All good from my perspective. Thanks for getting the tests in shape again :-) I want to run on my device before approving

Revision history for this message
Nicholas Skaggs (nskaggs) :
review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'FileDetailsPopover.qml'
--- FileDetailsPopover.qml 2013-07-26 03:44:12 +0000
+++ FileDetailsPopover.qml 2013-08-09 18:43:12 +0000
@@ -78,6 +78,7 @@
78 anchors.verticalCenter: parent.verticalCenter78 anchors.verticalCenter: parent.verticalCenter
7979
80 text: folderName(root.path)80 text: folderName(root.path)
81 color: Theme.palette.normal.overlayText
81 font.bold: true82 font.bold: true
82 }83 }
83 }84 }
@@ -88,40 +89,50 @@
8889
89 Label {90 Label {
90 text: i18n.tr("Path:")91 text: i18n.tr("Path:")
92 color: Theme.palette.normal.overlayText
91 }93 }
9294
93 Label {95 Label {
94 objectName: "pathLabel"96 objectName: "pathLabel"
95 text: root.path97 text: root.path
98 color: Theme.palette.normal.overlayText
96 }99 }
97100
98 Label {101 Label {
99 text: model.isDir ? i18n.tr("Contents:")102 text: model.isDir ? i18n.tr("Contents:")
100 : i18n.tr("Size:")103 : i18n.tr("Size:")
104 color: Theme.palette.normal.overlayText
101 }105 }
102 Label {106 Label {
103 text: model.fileSize107 text: model.fileSize
108 color: Theme.palette.normal.overlayText
104 }109 }
105110
106 Label {111 Label {
107 text: i18n.tr("Accessed:")112 text: i18n.tr("Accessed:")
113 color: Theme.palette.normal.overlayText
108 }114 }
109 Label {115 Label {
110 text: dateTimeFormat(model.accessedDate)116 text: dateTimeFormat(model.accessedDate)
117 color: Theme.palette.normal.overlayText
111 }118 }
112119
113 Label {120 Label {
114 text: i18n.tr("Modified:")121 text: i18n.tr("Modified:")
122 color: Theme.palette.normal.overlayText
115 }123 }
116 Label {124 Label {
117 text: dateTimeFormat(model.modifiedDate)125 text: dateTimeFormat(model.modifiedDate)
126 color: Theme.palette.normal.overlayText
118 }127 }
119128
120 Label {129 Label {
121 text: i18n.tr("Permissions:")130 text: i18n.tr("Permissions:")
131 color: Theme.palette.normal.overlayText
122 }132 }
123 Label {133 Label {
124 text: permissionsToString(model)134 text: permissionsToString(model)
135 color: Theme.palette.normal.overlayText
125 }136 }
126137
127 }138 }
128139
=== modified file 'FolderListDelegate.qml'
--- FolderListDelegate.qml 2013-07-01 13:51:05 +0000
+++ FolderListDelegate.qml 2013-08-09 18:43:12 +0000
@@ -24,6 +24,7 @@
24 objectName: "folder" + index24 objectName: "folder" + index
2525
26 property string fileName: model.fileName26 property string fileName: model.fileName
27 property string filePath: path
2728
28 text: model.fileName29 text: model.fileName
29 subText: Qt.formatDateTime(model.modifiedDate, Qt.DefaultLocaleShortDate) + (!model.isDir ? ", " + fileSize : "")30 subText: Qt.formatDateTime(model.modifiedDate, Qt.DefaultLocaleShortDate) + (!model.isDir ? ", " + fileSize : "")
3031
=== modified file 'FolderListPage.qml'
--- FolderListPage.qml 2013-08-09 18:43:12 +0000
+++ FolderListPage.qml 2013-08-09 18:43:12 +0000
@@ -18,6 +18,7 @@
18import QtQuick 2.018import QtQuick 2.0
19import Ubuntu.Components 0.119import Ubuntu.Components 0.1
20import Ubuntu.Components.Popups 0.120import Ubuntu.Components.Popups 0.1
21import Ubuntu.Components.ListItems 0.1
21import org.nemomobile.folderlistmodel 1.022import org.nemomobile.folderlistmodel 1.0
2223
23Page {24Page {
@@ -198,72 +199,104 @@
198 }199 }
199 }200 }
200201
201 ActionSelectionPopover {202 Component {
202 id: folderActionsPopover203 id: folderActionsPopoverComponent
203 objectName: "folderActionsPopover"204 ActionSelectionPopover {
204205 id: folderActionsPopover
205 actions: ActionList {206 objectName: "folderActionsPopover"
206 Action {207
207 text: i18n.tr("Create New Folder")208 grabDismissAreaEvents: true
208 onTriggered: {209
209 print(text)210 actions: ActionList {
210211 Action {
211 PopupUtils.open(createFolderDialog, root)212 text: i18n.tr("Create New Folder")
212 }213 onTriggered: {
213 }214 print(text)
214215
215 // TODO: Disabled until backend supports creating files216 PopupUtils.open(createFolderDialog, root)
216// Action {217 }
217// text: i18n.tr("Create New File")218 }
218// onTriggered: {219
219// print(text)220 // TODO: Disabled until backend supports creating files
220221 // Action {
221// PopupUtils.open(createFileDialog, root)222 // text: i18n.tr("Create New File")
222// }223 // onTriggered: {
223// }224 // print(text)
224225
225 Action {226 // PopupUtils.open(createFileDialog, root)
226 text: pageModel.clipboardUrlsCounter === 0227 // }
227 ? i18n.tr("Paste")228 // }
228 : pageModel.clipboardUrlsCounter === 1229
229 ? i18n.tr("Paste %1 File").arg(pageModel.clipboardUrlsCounter)230 Action {
230 : i18n.tr("Paste %1 Files").arg(pageModel.clipboardUrlsCounter)231 text: pageModel.clipboardUrlsCounter === 0
231 onTriggered: {232 ? i18n.tr("Paste")
232 console.log("Pasting to current folder items of count " + pageModel.clipboardUrlsCounter)233 : pageModel.clipboardUrlsCounter === 1
233 PopupUtils.open(Qt.resolvedUrl("FileOperationProgressDialog.qml"),234 ? i18n.tr("Paste %1 File").arg(pageModel.clipboardUrlsCounter)
234 root,235 : i18n.tr("Paste %1 Files").arg(pageModel.clipboardUrlsCounter)
235 {236 onTriggered: {
236 title: i18n.tr("Paste files"),237 console.log("Pasting to current folder items of count " + pageModel.clipboardUrlsCounter)
237 folderListModel: pageModel238 PopupUtils.open(Qt.resolvedUrl("FileOperationProgressDialog.qml"),
238 }239 root,
239 )240 {
240241 title: i18n.tr("Paste files"),
241242 folderListModel: pageModel
242 pageModel.paste()243 }
243 }244 )
244245
245 // FIXME: This property is depreciated and doesn't seem to work!246
246 //visible: pageModel.clipboardUrlsCounter > 0247 pageModel.paste()
247248 }
248 enabled: pageModel.clipboardUrlsCounter > 0249
249 }250 // FIXME: This property is depreciated and doesn't seem to work!
250251 //visible: pageModel.clipboardUrlsCounter > 0
251 Action {252
252 text: i18n.tr("Properties")253 enabled: pageModel.clipboardUrlsCounter > 0
253 onTriggered: {254 }
254 print(text)255
255 PopupUtils.open(Qt.resolvedUrl("FileDetailsPopover.qml"),256 // TODO: Disabled until support for opening apps is added
256 root,257 Action {
257 { "model": pageModel258 text: i18n.tr("Open in Terminal")
258 }259 onTriggered: {
259 )260 print(text)
260 }261
262 // Is this the way it will work??
263 Qt.openUrlExternally("app://terminal")
264 }
265
266 enabled: showAdvancedFeatures && false
267 }
268
269 Action {
270 text: i18n.tr("Properties")
271 onTriggered: {
272 print(text)
273 PopupUtils.open(Qt.resolvedUrl("FileDetailsPopover.qml"),
274 root,
275 { "model": pageModel
276 }
277 )
278 }
279 }
280 }
281
282 delegate: Empty {
283 id: listItem
284 Label {
285 text: listItem.text
286 anchors {
287 verticalCenter: parent.verticalCenter
288 horizontalCenter: parent.horizontalCenter
289 }
290 wrapMode: Text.Wrap
291 color: Theme.palette.normal.overlayText
292 }
293
294 /*! \internal */
295 onTriggered: folderActionsPopover.hide()
296 visible: listItem.enabled
297 height: visible ? implicitHeight : 0
261 }298 }
262 }299 }
263
264 // Without this the popover jumps up at the start of the application. SDK bug?
265 // Bug report has been made of these https://bugs.launchpad.net/ubuntu-ui-toolkit/+bug/1152270
266 visible: false
267 }300 }
268301
269 Component {302 Component {
@@ -324,8 +357,7 @@
324357
325 onTriggered: {358 onTriggered: {
326 print(text)359 print(text)
327 folderActionsPopover.caller = caller360 PopupUtils.open(folderActionsPopoverComponent, caller)
328 folderActionsPopover.show();
329 }361 }
330 }362 }
331363
@@ -341,6 +373,19 @@
341 }373 }
342374
343 ToolbarButton {375 ToolbarButton {
376 visible: wideAspect
377 objectName: "goTo"
378 text: i18n.tr("Go To")
379 iconSource: "icons/location.png"
380 onTriggered: {
381 print(text)
382
383 PopupUtils.open(Qt.resolvedUrl("GoToDialog.qml"), caller)
384 }
385 }
386
387 ToolbarButton {
388 visible: !wideAspect
344 objectName: "places"389 objectName: "places"
345 text: i18n.tr("Places")390 text: i18n.tr("Places")
346 iconSource: "icons/location.png"391 iconSource: "icons/location.png"
@@ -362,43 +407,108 @@
362 }407 }
363 }408 }
364409
365 Column {410 flickable: !wideAspect ? folderListView : null
366 anchors.centerIn: parent411
367 Label {412 PlacesSidebar {
368 text: i18n.tr("No files")413 id: sidebar
369 fontSize: "large"414 objectName: "placesSidebar"
370 visible: folderListView.count == 0 && !pageModel.awaitingResults415
371 }416 anchors {
372 ActivityIndicator {417 top: parent.top
373 running: pageModel.awaitingResults418 topMargin: units.gu(9.5)
374 width: units.gu(8)419 bottom: parent.bottom
375 height: units.gu(8)420 bottomMargin: units.gu(-2)
376 }421 }
377 }422
378423 expanded: wideAspect
379 FolderListView {424 }
380 id: folderListView425
381426 Item {
382 clip: true427 id: contents
383428 anchors {
384 folderListModel: pageModel429 top: parent.top
385 anchors.fill: parent430 bottom: parent.bottom
386 // IMPROVE: this should work (?), but it doesn't. Height is undefined. Anyway in previous431 left: sidebar.right
387 // SDK version the parent size was properly initialized. Now the size of toolbar is not taken into432 right: parent.right
388 // account and apparently you can't even query toolbar's height.433
389 // anchors.bottomMargin: toolbar.height434 // IMPROVE: this should work (?), but it doesn't. Height is undefined. Anyway in previous
390 // Now in newer SDK (raring 19.07.2013) locked&opened toolbar is taken into435 // SDK version the parent size was properly initialized. Now the size of toolbar is not taken into
391 // account in some fashion, but the extra space left to the bottom without this436 // account and apparently you can't even query toolbar's height.
392 // bottomMargin definition seems to be exactly what is the height of Header's gray437 // anchors.bottomMargin: toolbar.height
393 // separator bar. This ugly workaround seems to give correct height for view at least on desktop.438 // Now in newer SDK (raring 19.07.2013) locked&opened toolbar is taken into
394 // Bug report on this:439 // account in some fashion, but the extra space left to the bottom without this
395 // https://bugs.launchpad.net/ubuntu-ui-toolkit/+bug/1202881440 // bottomMargin definition seems to be exactly what is the height of Header's gray
396 // This bug report also affects this, as if the toolbar is hidden by default441 // separator bar. This ugly workaround seems to give correct height for view at least on desktop.
397 // then there is no problem:442 // Bug report on this:
398 // https://bugs.launchpad.net/ubuntu-filemanager-app/+bug/1198861443 // https://bugs.launchpad.net/ubuntu-ui-toolkit/+bug/1202881
399 // Hard-code it for now. Not nice at all:444 // This bug report also affects this, as if the toolbar is hidden by default
400 anchors.bottomMargin: units.gu(-2)445 // then there is no problem:
401 }446 // https://bugs.launchpad.net/ubuntu-filemanager-app/+bug/1198861
447 // Hard-code it for now. Not nice at all:
448 bottomMargin: units.gu(-2)
449 }
450
451 Column {
452 anchors.centerIn: parent
453 Label {
454 text: i18n.tr("No files")
455 fontSize: "large"
456 visible: folderListView.count == 0 && !pageModel.awaitingResults
457 }
458 ActivityIndicator {
459 running: pageModel.awaitingResults
460 width: units.gu(8)
461 height: units.gu(8)
462 }
463 }
464
465 FolderListView {
466 id: folderListView
467
468 clip: true
469
470 folderListModel: pageModel
471 anchors.fill: parent
472 }
473 }
474
475 states: [
476 State {
477 name: "wide"
478 when: wideAspect
479 PropertyChanges {
480 target: tools
481 locked: true
482 opened: true
483 }
484
485 PropertyChanges {
486 target: folderListView
487
488 anchors.top: contents.top
489 anchors.topMargin: units.gu(9.5)
490 topMargin: 0
491 }
492
493 PropertyChanges {
494 target: contents
495 anchors.top: root.top
496 anchors.topMargin: 0
497 }
498 },
499
500 //FIXME: This should automatically be calculated - is there a way to remove it?
501 State {
502 name: ""
503
504 PropertyChanges {
505 target: folderListView
506
507 topMargin: units.gu(9.5)
508 }
509 }
510
511 ]
402512
403 // Errors from model513 // Errors from model
404 Connections {514 Connections {
405515
=== modified file 'FolderListView.qml'
--- FolderListView.qml 2013-07-11 22:40:40 +0000
+++ FolderListView.qml 2013-08-09 18:43:12 +0000
@@ -94,82 +94,79 @@
94 }94 }
95 }95 }
9696
97 ActionSelectionPopover {97 Component {
98 id: actionSelectionPopover98 id: actionSelectionPopoverComponent
99 objectName: "fileActionsPopover"99
100100 ActionSelectionPopover {
101 property var model101 id: actionSelectionPopover
102 actions: ActionList {102 objectName: "fileActionsPopover"
103 Action {103
104 text: i18n.tr("Cut")104 grabDismissAreaEvents: true
105 // TODO: temporary105
106 iconSource: "/usr/share/icons/Humanity/actions/48/edit-cut.svg"106 property var model
107 onTriggered: {107 actions: ActionList {
108 console.log("Cut on row called for", actionSelectionPopover.model.fileName, actionSelectionPopover.model.index)108 Action {
109 model.cutIndex(actionSelectionPopover.model.index)109 text: i18n.tr("Cut")
110 console.log("CliboardUrlsCounter after copy", folderListModel.clipboardUrlsCounter)110 // TODO: temporary
111 }111 iconSource: "/usr/share/icons/Humanity/actions/48/edit-cut.svg"
112 }112 onTriggered: {
113113 console.log("Cut on row called for", actionSelectionPopover.model.fileName, actionSelectionPopover.model.index)
114 Action {114 pageModel.cutIndex(actionSelectionPopover.model.index)
115 text: i18n.tr("Copy")115 console.log("CliboardUrlsCounter after copy", folderListModel.clipboardUrlsCounter)
116 // TODO: temporary.116 }
117 iconSource: "/usr/share/icons/Humanity/actions/48/edit-copy.svg"117 }
118118
119 onTriggered: {119 Action {
120 console.log("Copy on row called for", actionSelectionPopover.model.fileName, actionSelectionPopover.model.index)120 text: i18n.tr("Copy")
121 model.copyIndex(actionSelectionPopover.model.index)121 // TODO: temporary.
122 console.log("CliboardUrlsCounter after copy", folderListModel.clipboardUrlsCounter)122 iconSource: "/usr/share/icons/Humanity/actions/48/edit-copy.svg"
123 }123
124 }124 onTriggered: {
125125 console.log("Copy on row called for", actionSelectionPopover.model.fileName, actionSelectionPopover.model.index)
126 Action {126 pageModel.copyIndex(actionSelectionPopover.model.index)
127 text: i18n.tr("Delete")127 console.log("CliboardUrlsCounter after copy", folderListModel.clipboardUrlsCounter)
128 // TODO: temporary128 }
129 iconSource: "/usr/share/icons/Humanity/actions/48/edit-delete.svg"129 }
130 onTriggered: {130
131 print(text)131 Action {
132 PopupUtils.open(confirmSingleDeleteDialog, actionSelectionPopover.caller,132 text: i18n.tr("Delete")
133 { "filePath" : actionSelectionPopover.model.filePath,133 // TODO: temporary
134 "fileName" : actionSelectionPopover.model.fileName }134 iconSource: "/usr/share/icons/Humanity/actions/48/edit-delete.svg"
135 )135 onTriggered: {
136 }136 print(text)
137 }137 PopupUtils.open(confirmSingleDeleteDialog, actionSelectionPopover.caller,
138138 { "filePath" : actionSelectionPopover.model.filePath,
139 Action {139 "fileName" : actionSelectionPopover.model.fileName }
140 text: i18n.tr("Rename")140 )
141 // TODO: temporary141 }
142 iconSource: "/usr/share/icons/Humanity/actions/48/rotate.svg"142 }
143 onTriggered: {143
144 print(text)144 Action {
145 PopupUtils.open(confirmRenameDialog, actionSelectionPopover.caller,145 text: i18n.tr("Rename")
146 { "modelRow" : actionSelectionPopover.model.index,146 // TODO: temporary
147 "inputText" : actionSelectionPopover.model.fileName147 iconSource: "/usr/share/icons/Humanity/actions/48/rotate.svg"
148 })148 onTriggered: {
149 }149 print(text)
150 }150 PopupUtils.open(confirmRenameDialog, actionSelectionPopover.caller,
151151 { "modelRow" : actionSelectionPopover.model.index,
152 Action {152 "inputText" : actionSelectionPopover.model.fileName
153 text: i18n.tr("Properties")153 })
154 onTriggered: {154 }
155 print(text)155 }
156 PopupUtils.open(Qt.resolvedUrl("FileDetailsPopover.qml"),156
157 actionSelectionPopover.caller,157 Action {
158 { "model": actionSelectionPopover.model158 text: i18n.tr("Properties")
159 }159 onTriggered: {
160 )160 print(text)
161 PopupUtils.open(Qt.resolvedUrl("FileDetailsPopover.qml"),
162 actionSelectionPopover.caller,
163 { "model": actionSelectionPopover.model
164 }
165 )
166 }
161 }167 }
162 }168 }
163 }169 }
164 // TODO: problem: clicking outside popup makes the click go through to the
165 // folder listview, so for example you'd change directory while only trying
166 // to dismiss the popup. Maybe SDK bug, if not have to do workarounds.
167 // grabDismissAreaEvents seemed promising, but at least with onPressAndHold
168 // makes background view scroll when moving mouse as if mouse button was still down.
169 // grabDismissAreaEvents: false
170 // Without this the popover jumps up at the start of the application. SDK bug?
171 // Bug report has been made of these https://bugs.launchpad.net/ubuntu-ui-toolkit/+bug/1152270
172 visible: false
173 }170 }
174171
175 delegate: FolderListDelegate {172 delegate: FolderListDelegate {
@@ -201,9 +198,10 @@
201198
202 onPressAndHold: {199 onPressAndHold: {
203 console.log("FolderListDelegate onPressAndHold")200 console.log("FolderListDelegate onPressAndHold")
204 actionSelectionPopover.caller = delegate201 PopupUtils.open(actionSelectionPopoverComponent, delegate,
205 actionSelectionPopover.model = model202 {
206 actionSelectionPopover.show();203 model: model
204 })
207 }205 }
208 }206 }
209207
210208
=== added file 'GoToDialog.qml'
--- GoToDialog.qml 1970-01-01 00:00:00 +0000
+++ GoToDialog.qml 2013-08-09 18:43:12 +0000
@@ -0,0 +1,89 @@
1/*
2 * Copyright (C) 2013 Canonical Ltd
3 *
4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License version 3 as
6 * published by the Free Software Foundation.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 *
16 * Authored by: Michael Spencer <spencers1993@gmail.com>
17 */
18import QtQuick 2.0
19import Ubuntu.Components 0.1
20import Ubuntu.Components.Popups 0.1
21
22Dialog {
23 id: root
24
25 title: i18n.tr("Go To Location")
26
27 text: i18n.tr("Enter a location to go to:")
28
29 TextField {
30 id: locationField
31
32 inputMethodHints: Qt.ImhNoAutoUppercase
33
34 property bool valid: pathExists(text)
35
36 text: fileView.path
37
38 placeholderText: i18n.tr("Location...")
39
40 onAccepted: goButton.clicked()
41 }
42
43 Button {
44 id: goButton
45 objectName: "goButton"
46
47 gradient: Gradient {
48 GradientStop {
49 position: 0
50 color: "green"//Qt.rgba(0,0.7,0,1)
51 }
52
53 GradientStop {
54 position: 1
55 color: Qt.rgba(0.3,0.7,0.3,1)
56 }
57 }
58
59 text: i18n.tr("Go")
60 enabled: locationField.acceptableInput && locationField.valid
61
62 onClicked: {
63 print("User switched to:", locationField.text)
64 goTo(locationField.text)
65 PopupUtils.close(root)
66 }
67 }
68
69 Button {
70 objectName: "cancelButton"
71 text: i18n.tr("Cancel")
72
73 gradient: Gradient {
74 GradientStop {
75 position: 0
76 color: "gray"
77 }
78
79 GradientStop {
80 position: 1
81 color: "lightgray"
82 }
83 }
84
85 onClicked: {
86 PopupUtils.close(root)
87 }
88 }
89}
090
=== modified file 'OptionsPopover.qml'
--- OptionsPopover.qml 2013-08-09 18:43:12 +0000
+++ OptionsPopover.qml 2013-08-09 18:43:12 +0000
@@ -35,7 +35,15 @@
35 id: showHiddenFileCheckBox35 id: showHiddenFileCheckBox
36 objectName: "showHiddenFileCheckBox"36 objectName: "showHiddenFileCheckBox"
3737
38 text: i18n.tr("Show Hidden Files")38 Label {
39 text: i18n.tr("Show Hidden Files")
40 fontSize: "medium"
41 color: Theme.palette.normal.overlayText
42 anchors.left: parent.left
43 anchors.leftMargin: units.gu(2)
44 anchors.verticalCenter: parent.verticalCenter
45 }
46
39 control: CheckBox {47 control: CheckBox {
40 anchors.verticalCenter: parent.verticalCenter48 anchors.verticalCenter: parent.verticalCenter
4149
@@ -47,7 +55,16 @@
47 }55 }
4856
49 ValueSelector {57 ValueSelector {
50 text: i18n.tr("Sort By")58 Label {
59 text: i18n.tr("Sort By")
60 fontSize: "medium"
61 color: Theme.palette.normal.overlayText
62 anchors.left: parent.left
63 anchors.leftMargin: units.gu(2)
64 anchors.top: parent.top
65 anchors.topMargin: units.gu(1.6)
66 }
67
51 selectedIndex: values.indexOf(fileView.sortingMethod)68 selectedIndex: values.indexOf(fileView.sortingMethod)
52 values: [69 values: [
53 i18n.tr("Name"),70 i18n.tr("Name"),
@@ -60,7 +77,16 @@
60 }77 }
6178
62 ValueSelector {79 ValueSelector {
63 text: i18n.tr("Sort Order")80 Label {
81 text: i18n.tr("Sort Order")
82 fontSize: "medium"
83 color: Theme.palette.normal.overlayText
84 anchors.left: parent.left
85 anchors.leftMargin: units.gu(2)
86 anchors.top: parent.top
87 anchors.topMargin: units.gu(1.7)
88 }
89
64 selectedIndex: sortAccending ? 0 : 190 selectedIndex: sortAccending ? 0 : 1
65 values: [91 values: [
66 i18n.tr("Ascending"),92 i18n.tr("Ascending"),
@@ -74,7 +100,15 @@
74100
75 Standard {101 Standard {
76 visible: showAdvancedFeatures102 visible: showAdvancedFeatures
77 text: i18n.tr("Filter")103
104 Label {
105 text: i18n.tr("Filter")
106 fontSize: "medium"
107 color: Theme.palette.normal.overlayText
108 anchors.left: parent.left
109 anchors.leftMargin: units.gu(2)
110 anchors.verticalCenter: parent.verticalCenter
111 }
78112
79 TextField {113 TextField {
80 id: filterField114 id: filterField
81115
=== modified file 'PlacesPopover.qml'
--- PlacesPopover.qml 2013-07-08 22:23:29 +0000
+++ PlacesPopover.qml 2013-08-09 18:43:12 +0000
@@ -124,13 +124,22 @@
124 model: places124 model: places
125125
126 delegate: Standard {126 delegate: Standard {
127 text: folderName(path)127 Label {
128 anchors.left: parent.left
129 anchors.leftMargin: units.gu(8)
130 anchors.verticalCenter: parent.verticalCenter
131 text: folderName(path)
132 color: selected ? UbuntuColors.orange : Theme.palette.normal.overlayText
133 }
134
128 icon: model.icon || fileIcon(model.path, true)135 icon: model.icon || fileIcon(model.path, true)
129136
130 onClicked: {137 onClicked: {
131 PopupUtils.close(root)138 PopupUtils.close(root)
132 goTo(model.path)139 goTo(model.path)
133 }140 }
141
142 selected: folder === path
134 }143 }
135 }144 }
136 }145 }
137146
=== added file 'PlacesSidebar.qml'
--- PlacesSidebar.qml 1970-01-01 00:00:00 +0000
+++ PlacesSidebar.qml 2013-08-09 18:43:12 +0000
@@ -0,0 +1,105 @@
1/*
2 * Copyright (C) 2013 Canonical Ltd
3 *
4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License version 3 as
6 * published by the Free Software Foundation.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 *
16 * Authored by: Michael Spencer <spencers1993@gmail.com>
17 */
18import QtQuick 2.0
19import Ubuntu.Components 0.1
20import Ubuntu.Components.ListItems 0.1
21import Ubuntu.Components.Popups 0.1
22
23Sidebar {
24 id: root
25
26 color: "gray"
27
28 width: units.gu(25)
29
30 ListModel {
31 id: places
32
33 ListElement {
34 path: "~"
35 }
36
37 ListElement {
38 path: "~/Documents"
39 }
40
41 ListElement {
42 path: "~/Downloads"
43 }
44
45 ListElement {
46 path: "~/Music"
47 }
48
49 ListElement {
50 path: "~/Pictures"
51 }
52
53 ListElement {
54 path: "~/Videos"
55 }
56
57 ListElement {
58 path: "/"
59 }
60 }
61
62 Column {
63 anchors {
64 left: parent.left
65 right: parent.right
66 top: parent.top
67 }
68
69 Header {
70// Label {
71// anchors.left: parent.left
72// anchors.leftMargin: units.gu(1)
73// anchors.verticalCenter: parent.verticalCenter
74 text: i18n.tr("Places")
75// color: Theme.palette.normal.overlayText
76// }
77 }
78
79 Repeater {
80 id: placesList
81 objectName: "placesList"
82
83 model: places
84
85 delegate: Standard {
86// Label {
87// anchors.left: parent.left
88// anchors.leftMargin: units.gu(8)
89// anchors.verticalCenter: parent.verticalCenter
90 text: folderName(path)
91// color: Theme.palette.normal.overlayText
92// }
93 icon: model.icon || fileIcon(model.path, true)
94
95 onClicked: {
96 goTo(model.path)
97 }
98
99 height: units.gu(5)
100
101 selected: folder === path
102 }
103 }
104 }
105}
0106
=== modified file 'SettingsSheet.qml'
--- SettingsSheet.qml 2013-08-09 18:43:12 +0000
+++ SettingsSheet.qml 2013-08-09 18:43:12 +0000
@@ -14,7 +14,11 @@
1414
15 title: i18n.tr("Settings")15 title: i18n.tr("Settings")
1616
17 contentsHeight: parent.height17 Binding {
18 target: root.__foreground
19 property: "minHeight"
20 value: Math.max(units.gu(75), root.contentsHeight)
21 }
1822
19 Column {23 Column {
20 anchors.fill: parent24 anchors.fill: parent
2125
=== added file 'Sidebar.qml'
--- Sidebar.qml 1970-01-01 00:00:00 +0000
+++ Sidebar.qml 2013-08-09 18:43:12 +0000
@@ -0,0 +1,75 @@
1/*
2 * Copyright (C) 2013 Canonical Ltd
3 *
4 * This program is free software: you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License version 3 as
6 * published by the Free Software Foundation.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License
14 * along with this program. If not, see <http://www.gnu.org/licenses/>.
15 *
16 * Authored by: Michael Spencer <spencers1993@gmail.com>
17 */
18
19import QtQuick 2.0
20import Ubuntu.Components 0.1
21import Ubuntu.Components.ListItems 0.1
22
23Rectangle {
24 //color: "lightgray"
25
26 property bool expanded: true
27
28 Item {
29 ThinDivider {
30 rotation: 90
31
32 //Rectangle {
33 //color: "lightgray"
34
35 //width: 1
36 width: parent.height
37 height: 2
38 anchors {
39 left: undefined
40 right: undefined
41 centerIn: parent
42 }
43 }
44 width: 2
45
46 anchors {
47 top: parent.top
48 bottom: parent.bottom
49 right: parent.right
50 rightMargin: 0
51 }
52 }
53
54 width: units.gu(35)
55
56
57 x: expanded ? 0 : -width
58
59 Behavior on x {
60 PropertyAnimation {
61 duration: 250
62 }
63 }
64
65 default property alias contents: contents.data
66
67 Item {
68 id: contents
69
70 anchors {
71 fill: parent
72 rightMargin: 1
73 }
74 }
75}
076
=== modified file 'tests/autopilot/ubuntu_filemanager_app/emulators.py'
--- tests/autopilot/ubuntu_filemanager_app/emulators.py 2013-07-26 17:12:14 +0000
+++ tests/autopilot/ubuntu_filemanager_app/emulators.py 2013-08-09 18:43:12 +0000
@@ -29,7 +29,9 @@
2929
30 def get_folder_list_page(self):30 def get_folder_list_page(self):
31 """Return the FolderListPage emulator of the MainView."""31 """Return the FolderListPage emulator of the MainView."""
32 return self.select_single(FolderListPage)32 page = self.select_single(FolderListPage)
33 page.main_view = self
34 return page
3335
34 def get_file_actions_popover(self):36 def get_file_actions_popover(self):
35 """Return the ActionSelectionPopover emulator of the file actions."""37 """Return the ActionSelectionPopover emulator of the file actions."""
@@ -43,10 +45,15 @@
4345
44 def get_places_popover(self):46 def get_places_popover(self):
45 """Return the Places popover."""47 """Return the Places popover."""
46 # XXX It would be easier if the places popover was an object that48 if not(self.wideAspect):
47 # inherits from Popover, like the ActionSelectionPopover does.49 # XXX It would be easier if the places popover was an object
48 # --elopio - 2013-07-2550 # that inherits from Popover, like the
49 return self.select_single('Popover', objectName='placesPopover')51 # ActionSelectionPopover does.
52 # --elopio - 2013-07-25
53 return self.select_single('Popover', objectName='placesPopover')
54 else:
55 raise ValueError(
56 'Places sidebar is hidden in wide mode.')
5057
51 def get_file_details_popover(self):58 def get_file_details_popover(self):
52 """Return the FileDetailsPopover emulator."""59 """Return the FileDetailsPopover emulator."""
@@ -63,6 +70,18 @@
63 return dialog70 return dialog
6471
6572
73class Sidebar(toolkit_emulators.UbuntuUIToolkitEmulatorBase):
74 """PlacesSidebar Autopilot emulator."""
75
76 def get_place(self, text):
77 places = self.select_many('Standard')
78 for place in places:
79 if place.text == text:
80 return place
81 raise ValueError(
82 'Place "{0}" not found.'.format(text))
83
84
66class FolderListPage(toolkit_emulators.UbuntuUIToolkitEmulatorBase):85class FolderListPage(toolkit_emulators.UbuntuUIToolkitEmulatorBase):
67 """FolderListPage Autopilot emulator."""86 """FolderListPage Autopilot emulator."""
6887
@@ -76,7 +95,9 @@
76 :parameter index: The index of file or folder.95 :parameter index: The index of file or folder.
7796
78 """97 """
79 return self.select_many(FolderListDelegate)[index]98 file_ = self.select_many(FolderListDelegate)[index]
99 file_.list_view = self.select_single(FolderListView)
100 return file_
80101
81 def get_file_by_name(self, name):102 def get_file_by_name(self, name):
82 """Return the FolderListDelegate emulator of the file or folder.103 """Return the FolderListDelegate emulator of the file or folder.
@@ -87,6 +108,7 @@
87 files = self.select_many(FolderListDelegate)108 files = self.select_many(FolderListDelegate)
88 for file_ in files:109 for file_ in files:
89 if file_.fileName == name:110 if file_.fileName == name:
111 file_.list_view = self.select_single(FolderListView)
90 return file_112 return file_
91 raise ValueError(113 raise ValueError(
92 'File with name "{0}" not found.'.format(name))114 'File with name "{0}" not found.'.format(name))
@@ -97,6 +119,13 @@
97 def get_number_of_files_from_header(self):119 def get_number_of_files_from_header(self):
98 return self.select_single(FolderListView).get_number_of_files()120 return self.select_single(FolderListView).get_number_of_files()
99121
122 def get_sidebar(self):
123 if self.main_view.wideAspect:
124 return self.select_single(Sidebar)
125 else:
126 raise ValueError(
127 'Places sidebar is hidden in wide mode.')
128
100129
101class FolderListView(toolkit_emulators.UbuntuUIToolkitEmulatorBase):130class FolderListView(toolkit_emulators.UbuntuUIToolkitEmulatorBase):
102 """FolderListView Autopilot emulator."""131 """FolderListView Autopilot emulator."""
103132
=== modified file 'tests/autopilot/ubuntu_filemanager_app/tests/test_filemanager.py'
--- tests/autopilot/ubuntu_filemanager_app/tests/test_filemanager.py 2013-07-26 18:40:15 +0000
+++ tests/autopilot/ubuntu_filemanager_app/tests/test_filemanager.py 2013-08-09 18:43:12 +0000
@@ -27,6 +27,7 @@
27from autopilot import process27from autopilot import process
28from autopilot.matchers import Eventually28from autopilot.matchers import Eventually
29from testtools.matchers import Equals29from testtools.matchers import Equals
30from testtools.matchers import NotEquals
3031
31from ubuntu_filemanager_app.tests import FileManagerTestCase32from ubuntu_filemanager_app.tests import FileManagerTestCase
3233
@@ -127,6 +128,15 @@
127 self.assertThat(128 self.assertThat(
128 self.main_view.get_file_action_dialog, Eventually(Equals(None)))129 self.main_view.get_file_action_dialog, Eventually(Equals(None)))
129130
131 def _open_directory(self, item):
132 expected_path = item.filePath
133 list_view = item.list_view
134
135 #item.open_directory()
136 self.pointing_device.click_object(item)
137 self.assertThat(
138 list_view.get_current_path, Eventually(Equals(expected_path)))
139
130 def test_open_file(self):140 def test_open_file(self):
131 self._make_file_in_home()141 self._make_file_in_home()
132142
@@ -163,7 +173,7 @@
163 dir_path = self._make_directory_in_home()173 dir_path = self._make_directory_in_home()
164 first_dir = self._get_file_by_index(0)174 first_dir = self._get_file_by_index(0)
165175
166 first_dir.open_directory()176 self._open_directory(first_dir)
167177
168 folder_list_page = self.main_view.get_folder_list_page()178 folder_list_page = self.main_view.get_folder_list_page()
169 self.assertThat(179 self.assertThat(
@@ -187,8 +197,14 @@
187197
188 def _do_action_on_file(self, file_, action):198 def _do_action_on_file(self, file_, action):
189 file_.open_actions_popover()199 file_.open_actions_popover()
200 self.assertThat(
201 self.main_view.get_file_actions_popover,
202 Eventually(NotEquals(None)))
190 file_actions_popover = self.main_view.get_file_actions_popover()203 file_actions_popover = self.main_view.get_file_actions_popover()
191 file_actions_popover.click_button(action)204 file_actions_popover.click_button(action)
205 self.assertThat(
206 self.main_view.get_file_actions_popover,
207 Eventually(Equals(None)))
192208
193 def _cancel_confirm_dialog(self):209 def _cancel_confirm_dialog(self):
194 confirm_dialog = self.main_view.get_confirm_dialog()210 confirm_dialog = self.main_view.get_confirm_dialog()
@@ -222,9 +238,11 @@
222 self._cancel_confirm_dialog()238 self._cancel_confirm_dialog()
223239
224 self.assertThat(240 self.assertThat(
225 self.main_view.get_confirm_dialog, Eventually(Equals(None)))241 self.main_view.get_confirm_dialog,
242 Eventually(Equals(None)))
226 self.assertThat(243 self.assertThat(
227 lambda: first_file.fileName, Eventually(Equals(file_name)))244 lambda: first_file.fileName,
245 Eventually(Equals(file_name)))
228246
229 def test_rename_file(self):247 def test_rename_file(self):
230 self._make_file_in_home()248 self._make_file_in_home()
@@ -334,7 +352,7 @@
334 # Go to the destination directory.352 # Go to the destination directory.
335 destination_dir = folder_list_page.get_file_by_name(353 destination_dir = folder_list_page.get_file_by_name(
336 destination_dir_name)354 destination_dir_name)
337 destination_dir.open_directory()355 self._open_directory(destination_dir)
338356
339 # Paste the directory.357 # Paste the directory.
340 toolbar = self.main_view.open_toolbar()358 toolbar = self.main_view.open_toolbar()
@@ -342,7 +360,9 @@
342360
343 folder_actions_popover = self.main_view.get_folder_actions_popover()361 folder_actions_popover = self.main_view.get_folder_actions_popover()
344 folder_actions_popover.click_button('Paste 1 File')362 folder_actions_popover.click_button('Paste 1 File')
345 self.main_view.get_folder_actions_popover().visible.wait_for(False)363 self.assertThat(
364 self.main_view.get_folder_actions_popover,
365 Eventually(Equals(None)))
346366
347 # Check that the directory is there.367 # Check that the directory is there.
348 self._assert_number_of_files(1)368 self._assert_number_of_files(1)
@@ -376,7 +396,7 @@
376 # Go to the destination directory.396 # Go to the destination directory.
377 destination_dir = folder_list_page.get_file_by_name(397 destination_dir = folder_list_page.get_file_by_name(
378 destination_dir_name)398 destination_dir_name)
379 destination_dir.open_directory()399 self._open_directory(destination_dir)
380400
381 # Paste the directory.401 # Paste the directory.
382 toolbar = self.main_view.open_toolbar()402 toolbar = self.main_view.open_toolbar()
@@ -384,7 +404,9 @@
384404
385 folder_actions_popover = self.main_view.get_folder_actions_popover()405 folder_actions_popover = self.main_view.get_folder_actions_popover()
386 folder_actions_popover.click_button('Paste 1 File')406 folder_actions_popover.click_button('Paste 1 File')
387 self.main_view.get_folder_actions_popover().visible.wait_for(False)407 self.assertThat(
408 self.main_view.get_folder_actions_popover,
409 Eventually(Equals(None)))
388410
389 # Check that the directory is there.411 # Check that the directory is there.
390 self._assert_number_of_files(1)412 self._assert_number_of_files(1)
@@ -419,7 +441,7 @@
419 # Go to the destination directory.441 # Go to the destination directory.
420 destination_dir = folder_list_page.get_file_by_name(442 destination_dir = folder_list_page.get_file_by_name(
421 destination_dir_name)443 destination_dir_name)
422 destination_dir.open_directory()444 self._open_directory(destination_dir)
423445
424 # Paste the file.446 # Paste the file.
425 toolbar = self.main_view.open_toolbar()447 toolbar = self.main_view.open_toolbar()
@@ -427,7 +449,10 @@
427449
428 folder_actions_popover = self.main_view.get_folder_actions_popover()450 folder_actions_popover = self.main_view.get_folder_actions_popover()
429 folder_actions_popover.click_button('Paste 1 File')451 folder_actions_popover.click_button('Paste 1 File')
430 self.main_view.get_folder_actions_popover().visible.wait_for(False)452
453 self.assertThat(
454 self.main_view.get_folder_actions_popover,
455 Eventually(Equals(None)))
431456
432 # Check that the file is there.457 # Check that the file is there.
433 self._assert_number_of_files(1)458 self._assert_number_of_files(1)
@@ -459,7 +484,7 @@
459 # Go to the destination directory.484 # Go to the destination directory.
460 destination_dir = folder_list_page.get_file_by_name(485 destination_dir = folder_list_page.get_file_by_name(
461 destination_dir_name)486 destination_dir_name)
462 destination_dir.open_directory()487 self._open_directory(destination_dir)
463488
464 # Paste the file.489 # Paste the file.
465 toolbar = self.main_view.open_toolbar()490 toolbar = self.main_view.open_toolbar()
@@ -467,7 +492,9 @@
467492
468 folder_actions_popover = self.main_view.get_folder_actions_popover()493 folder_actions_popover = self.main_view.get_folder_actions_popover()
469 folder_actions_popover.click_button('Paste 1 File')494 folder_actions_popover.click_button('Paste 1 File')
470 self.main_view.get_folder_actions_popover().visible.wait_for(False)495 self.assertThat(
496 self.main_view.get_folder_actions_popover,
497 Eventually(Equals(None)))
471498
472 # Check that the file is there.499 # Check that the file is there.
473 self._assert_number_of_files(1)500 self._assert_number_of_files(1)
@@ -488,7 +515,7 @@
488 def test_go_up(self):515 def test_go_up(self):
489 self._make_directory_in_home()516 self._make_directory_in_home()
490 first_dir = self._get_file_by_index(0)517 first_dir = self._get_file_by_index(0)
491 first_dir.open_directory()518 self._open_directory(first_dir)
492519
493 toolbar = self.main_view.open_toolbar()520 toolbar = self.main_view.open_toolbar()
494 toolbar.click_button('up')521 toolbar.click_button('up')
@@ -519,9 +546,14 @@
519 # objectName on the ListElement. This is reported at546 # objectName on the ListElement. This is reported at
520 # https://bugs.launchpad.net/ubuntu-ui-toolkit/+bug/1205201547 # https://bugs.launchpad.net/ubuntu-ui-toolkit/+bug/1205201
521 # --elopio - 2013-07-25548 # --elopio - 2013-07-25
522 self.main_view.open_toolbar()549 place = None
523 self.main_view.get_toolbar().click_button('places')550 if self.main_view.wideAspect:
524 place = self._get_place(text)551 place = (self.main_view.get_folder_list_page().get_sidebar()
552 .get_place(text))
553 else:
554 self.main_view.open_toolbar()
555 self.main_view.get_toolbar().click_button('places')
556 place = self._get_place(text)
525 self.pointing_device.click_object(place)557 self.pointing_device.click_object(place)
526558
527 def _get_place(self, text):559 def _get_place(self, text):
528560
=== modified file 'ubuntu-filemanager-app.qml'
--- ubuntu-filemanager-app.qml 2013-08-09 18:43:12 +0000
+++ ubuntu-filemanager-app.qml 2013-08-09 18:43:12 +0000
@@ -32,7 +32,7 @@
32 objectName: "filemanager"32 objectName: "filemanager"
33 applicationName: "ubuntu-filemanager-app"33 applicationName: "ubuntu-filemanager-app"
3434
35 width: units.gu(50)35 width: units.gu(100)
36 height: units.gu(75)36 height: units.gu(75)
3737
38 property alias filemanager: root38 property alias filemanager: root
@@ -47,6 +47,10 @@
47 // Individual settings, used for bindings47 // Individual settings, used for bindings
48 property bool showAdvancedFeatures: false48 property bool showAdvancedFeatures: false
4949
50 headerColor: "#303030"
51 backgroundColor: "#505050"
52 footerColor: "#707070"
53
50 FolderListPage {54 FolderListPage {
51 id: folderPage55 id: folderPage
52 objectName: "folderPage"56 objectName: "folderPage"

Subscribers

People subscribed via source and target branches