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

Andrey Kozhevnikov coderusinbox at gmail.com
Fri Jun 6 06:47:35 UTC 2014


i have an another idea for you:

...
var newPage = pageStack.push(Qt.resolvedUrl("newPage.qml"), {...})
newPage.done.connect(thisPage.pageDone)
...

//thisPage
...
function pageDone(var1, var2, var3, ...) {
//do something with var
}
...

//newPage
...
signal done(string var1, int var2, string var3, ...)
...

//Button
...
onClicked: {
page.done("something", 123, "test", ...)
}
...

05.06.2014 22:49, info at flyingfischer.ch пишет:
> Hi Chris
>
> thanks for this idea and your code example!
>
> I am working on app in a very early stage that will partially talk to 
> a remote server and get dynamic content. In some cases it even will 
> create a little bit of traffic...
>
> ...so I will stick for the moment with the solution provided by 
> Konstantin.
>
> Regarding the use of Dialog:
>
> I come from the Java world and am an absolute newbie on QT. I couldn't 
> figure out how this would work. The documentation from Sailfish OS || 
> QT is not very clear about this, at least not for me.
>
> ...but I intend to learn and will certainly restudy the docu and try 
> to check out other use cases from other apps, untill I get it ;-)
>
> Thanks to anybody!
>
> Markus
>
> Am 05.06.2014 16:40, schrieb Christopher Lamb:
>> 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.getAlt
>> i(), 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
>>
>>
>>
>> _______________________________________________
>> SailfishOS.org Devel mailing list
>> To unsubscribe, please send a mail to 
>> devel-unsubscribe at lists.sailfishos.org
>>
> _______________________________________________
> SailfishOS.org Devel mailing list
> To unsubscribe, please send a mail to 
> devel-unsubscribe at lists.sailfishos.org



More information about the Devel mailing list