[SailfishDevel] pageStack.pop() - send paramater to prev page

Christopher Lamb christopher.lamb at thurweb.ch
Thu Jun 5 14:40:36 UTC 2014


Hi Markus

In my app I chose to instantiate all my Pages in the same place. Each of 
the pages has a declaration in a separate qml file (e.g. MainPage.qml, 
AreaSelectionPage.qml).

With this architecture none of the declarations need to know about the 
previous or next page. It is not their concern. Instead they emit 
signals NextPage, BackPageWithInfo, and Cancelled. In the signal handler 
in the page instantation I do the actual pushing and popping, and 
because all pages are instantiated in the same scope, they are all 
available to be pushed / popped to. (see code example below).

The downside is that all the pages are created on startup (regardless of 
if they are ever visited). For lightweight pages this is not a problem, 
but for some pages this might be a problem. For these I dynamically 
create the page content when the page is visible.

Grüsse

Chris


ApplicationWindow  {

     id:  appWindow

     .......

     initialPage:  mainPage

     MainPage  {

         id:  mainPage

             ....

         onNextPage:  {

              if  (pageType  =="SMS")  {

                 console.log("smsType  is:  "  +  smsType)

                 if  (smsType  =="Default")  pageStack.push(smsPage,  {lati:  mainPage.getLati(),  longi:  mainPage.getLongi(),  alti:  mainPage.getAlti(),  area_id:  area_id,  template_id:  template_id,  msg_status:  msg_status,  lastPage:  "mainPage"})

             }

             else  {

                 pageStack.push(areaSelectionPage)

             }

         }

     }

     AreaSelectionPage  {

         id:  areaSelectionPage

         ....

         onBackPageWithInfo:  {

             mainPage.areaSet  =  true;

             mainPage.area_id  =  area_id;

             pageStack.pop(mainPage);

         }

         onCancelled:  pageStack.pop(mainPage);

      }

     SMSPage  {

         id:  smsPage

         ....

         onNextPage:  {

             pageStack.push(contactSelectionPage,  {area_id:  area_id,  template_id:  template_id})

         }

      }

     ContactSelectionPage  {

         id:  contactSelectionPage

         ....

         onBackPageWithInfo:  {

             console.log("About  to  pop  smsPage;  contactName:  "  +  contactName  +  ",  contactPhone:  "  +  contactPhone);

             smsPage.contactName  =  contactName;

             smsPage.contactPhone  =  contactPhone;

             smsPage.lastPage  =  "contactSelectionPage";

             pageStack.pop(smsPage);

         }

         onCancelled:  pageStack.pop(smsPage);

      }

}







On 05.06.14 14:43, info at flyingfischer.ch wrote:
> Thanks for your inputs!
>
> Calling
>
> PreviousPage.topic = "MyTopic";
> pageStack.pop();
>
> gives me a ReferenceError: PreviousPage is not defined.
>
> PreviousPage.qml and property string topic do exist.
>
> Thanks for your patience!
>
> Markus
>
> _______________________________________________
> SailfishOS.org Devel mailing list
> To unsubscribe, please send a mail to 
> devel-unsubscribe at lists.sailfishos.org

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.sailfishos.org/pipermail/devel/attachments/20140605/119bdf80/attachment-0001.html>


More information about the Devel mailing list