[SailfishDevel] best way to work with covers?

Andrey Kozhevnikov coderusinbox at gmail.com
Sat Nov 16 07:48:05 UTC 2013


If you declare all your pages in ApplicationWindow like:

ApplicationWindow {
   id: appWindow
   cover: Qt.resolvedUrl("CoverPage.qml")

   MainPage {
     id: mainPage
   }

   SecondPage {
     id: secondPage
   }
}

then you can use pages global properties and functions from CoverPage:

CoverBackground {
   id: cover
   ...

   Label {
     anchors.centerIn: cover
     ...
     text: mainPage.processStatus
     color: secondPage.getCoverColor()
   }
}

On 16.11.2013 13:39, Gabriel Boehme 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



More information about the Devel mailing list