ubuntu-phone team mailing list archive
-
ubuntu-phone team
-
Mailing list archive
-
Message #09159
Re: Positioning the screen to an element in Expandable
OK, there's no delegate, it's all hardcoded elements. To clarify, the
expandable doesn't come into view if it's expanded as I display the
page, it does however work when I later click an item to expand a
section.
I'll put some of the code here as an example. The page is created and
displayed with these two lines:
pagestack.push(Qt.resolvedUrl("qml/" + file))
pagestack.currentPage.openSection(link.split("."))
Then, the beginning of the page being loaded, looks like this:
Page {
id: resultsPage
anchors.fill: parent
visible: false
title: "a"
function openSection(refLink) {
if (refLink.length > 1) {
var expandable = eval(refLink[0] + "_" + refLink[1])
// This doesn't move the screen to the element.
expandable.expanded = true
// This always prints 76 for any element.
print(root.mapFromItem(expandable.parent, expandable.x, expandable.y).y)
}
}
ListItem.ExpandablesColumn { // ART
id: colu
anchors.fill: parent
ListItem.Expandable { // DRV
id: a1_0
onClicked: expanded = true
collapsedHeight: units.gu(6)
collapseOnClick: true
expandedHeight: drv_idm247665072.height + units.gu(1)
... and so on
On mer, 2014-07-23 at 19:26 +0200, Michael Zanetti wrote:
> On Wednesday 23 July 2014 17:57:13 Sam Bull wrote:
> > I would like to position the screen so that it scrolls to a specific
> > element after opening a page.
> >
> > First, I'd like to be able to make sure an Expandable is in view upon
> > expanding it (though this could be considered a bug of ExpandablesColumn
> > that it doesn't do this automatically).
>
> Hmm, that should work. I just tried the example from the doc and it expands
> fine.
>
> >
> > But, then I'd also like to be able to bring certain sub-items to the top
> > of the display.
> >
> > Unfortunately, reading the .y attribute always gives 0 for all these
> > elements. Likewise, trying to get the global position with something
> > like:
> > root.mapFromItem(elem.parent, elem.x, elem.y).y
> > always returns 76.
>
> delegate.mapToItem(ListView.view)
>
> >
> > I don't know if maybe the elements haven't finished loading or
> > something. If that is the case, is there any way to connect to the
> > elements positions when they are changed? I've tried things like
> > elem.onYChanged = function() ... but it's not working.
>
> I think the item's y should also work. Maybe its a problem with your delegate
> items?
>
> Br,
> Michael
>
Attachment:
signature.asc
Description: This is a digitally signed message part
Follow ups
References