[SailfishDevel] best way to work with covers?

Gabriel Böhme m.gabrielboehme at googlemail.com
Sat Nov 16 14:02:14 UTC 2013


Thanks again,


I tried the createObject already, but was not working. But I guess the
mistake was on my side. ;) So I'll look into the Docs and play a bit around
tomorrow. By the way, where possible I use the model, so this could also be
a solution in my case: extend the model with the things I need. Many ways,
sure enough. :)


Thanks for the fast and nice help.


Gabriel.



--



Von meinem Nokia N9 gesendet



Artem Marchenko schrieb am 16.11.13 13:17:
Gabriel, there are a couple of solutions again :)

One way is that you can instantiate your pages via createObject and pass
variables during createObject call or set them later using reference
returned by createObject - see
http://qt-project.org/doc/qt-5.0/qtqml/qtqml-javascript-dynamicobjectcreation.htmlOnce
you get a full reference to the created page you can use standard
signals-slots / property binding to pass info the way you like.

Or your mainPage can manually make sure parent's sharedValue is updated
whenever mainPage updates what it thinks is important to share.

Or if a part of your app is logically common to both Cover and MainPage,
then it could make sense to make exactly this part (data model?) indeed
common, host it in main.qml and only pass reference to it to MainPage and
Cover.

I hope it helps.

Cheers,
Artem.



On Sat, Nov 16, 2013 at 9:39 AM, Gabriel Boehme <
m.gabrielboehme at googlemail.com> wrote:

> Hi Artem,
>
> thanks for the fast response.
>
> Your solution is a good idea, and could work for some values (main page
> and first cover) - thanks for that! :), but not all.
>
> Because I can pass them only in the moment I instantiate them. So I have
> to instantiate all of them in the ApplicationWindow. This is possible,
> but I guess due to the SailfishOS glass effect they appear stacked. So I
> see other files (pages/cover), even if they are not set as the PageStack
> first page or Cover. Maybe it's possible to workaround with opacity and
> checking for PageStatus, but seems not to be the cleanest solution. And
> the other side is, the console output/examples said, it's better to
> create them just in the moment you really need them.
>
> So I also tried, var page = Qt.createComponent("qml/file"), so I can
> store a page/cover in a variable and push that on the PageStack, but I
> can't reach the property aliases.
>
> Thanks.
>
> Gabriel.
>
>
> Am Samstag, den 16.11.2013, 01:55 +0200 schrieb Artem Marchenko:
> > Hi Gabriel
> >
> >
> > There are several ways of passing data between Cover and rest of app
> > (or any components). You can try using app global object ids or
> > javascript files with .pragma library and gloval [to them] variables
> > or inject global objects from C++ via setContextProperty().
> >
> >
> > The way I like doing it is to keep shared object in main.qml and pass
> > it to pages/covers at the moment of instantiation the following way:
> >
> >
> > ========
> > ApplicationWindow
> > {
> >     id: app
> >     property string sharedValue: "whatever you want to share to cover"
> >
> >
> >
> >
> >
> >     initialPage: Component {
> >         MainPage {
> >             torch: app.sharedValue
> >
> >         }
> >
> >     }
> >
> >
> >     cover: Component {
> >         CoverPage {
> >             torch: app.sharedValue
> >         }
> >     }
> >
> >
> > }
> >
> > ========
> >
> >
> > I hope if helps.
> >
> >
> > Cheers,
> > Artem.
> >
> >
> >
> >
> > On Sat, Nov 16, 2013 at 1:00 AM, Gabriel Boehme
> > <m.gabrielboehme at googlemail.com> wrote:
> >         Hi Sailfish sailors,
> >
> >         I want to ask, what is recommended/best practice to handle
> >         different
> >         covers/covers with dynamic information.
> >
> >         My case:
> >
> >         On the main page (MainPage.qml) you can select some options
> >         and search
> >         depending on the selected options. My main cover shows the
> >         selected
> >         options if minimized, so I can't just create it with
> >         Qt.resolvedUrl("path/to/maincover.qml"), because I'm "talking"
> >         to the
> >         cover with via property aliases. So I'm creating this cover
> >         directly as
> >         an instance in ApplicationWindow.
> >
> >         After the search a ListView shows the results from a model and
> >         I created
> >         another cover to switch between the results with CoverAction
> >         (show
> >         next/previous) - it takes the data from the model. But also
> >         shows some
> >         information from main page - via property alias.
> >
> >         So the point is: to fill the cover pages with the dynamic data
> >         I can't
> >         create them with Qt.resolvedUrl("path/to/cover.qml"), or
> >         push("mypage.qml") because I need property aliases to set the
> >         information on the covers. But in the most examples and also
> >         the console
> >         output tells me, that it is not clever to create instances in
> >         the
> >         ApplicationWindow part.
> >
> >         So what is best practice? Do I miss something?
> >
> >         Thank you very much in advance.
> >
> >         Gabriel
> >
> >         _______________________________________________
> >         SailfishOS.org Devel mailing list
> >
> >
> >
> >
> > --
> > Artem Marchenko
> > http://agilesoftwaredevelopment.com
> > http://twitter.com/AgileArtem
> > _______________________________________________
> > SailfishOS.org Devel mailing list
>
>
> _______________________________________________
> SailfishOS.org Devel mailing list
>



-- 
Artem Marchenko
http://agilesoftwaredevelopment.com
http://twitter.com/AgileArtem

_______________________________________________
SailfishOS.org Devel mailing list
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.sailfishos.org/pipermail/devel/attachments/20131116/18a1ed22/attachment.html>


More information about the Devel mailing list