Hello Matthew,
Thanks a lot for your quick reply!
The acceptDestinationAction property is exactly what I'm looking for. :)
The dialog on the pageStack should indeed be replaced with the
questionPage. I already had the acceptDestination set to questionPage,
but wasn't aware of the existence of the acceptDestinationAction property.
Thanks for all your help,
Superpelican
On 08/12/2013 12:58 AM, Matthew Vogt wrote:
Hi Superpelican, thanks for the explanation.
What you want is for the dialog which selects the multiplier to be
transitory, right? So the page sequence will be: initial-page
->dialog -> question-page -> base-page.
In this case, you need to use the 'acceptDestination' property of the
dialog:
https://sailfishos.org/sailfish-silica/qml-sailfishsilica-dialog.html#acceptDestination-prop
If you set the question-page as the 'acceptDestination' and set the
'acceptDestinationAction' property to 'PageStackAction.Replace', then
the effect of accepting the dialog will be to replace the dialog on
the stack top with question-page. The pageStack state will transition
directly from [ initial-page, dialog] to [ initial-page, question-page
], and returning from question-page will then go directly back to
initial-page.
Note that you must provide the instance or component for the
'acceptDestination' page before the user has accepted the dialog
(because we need to be able to show that page when the user starts to
drag right-to-left). This means you may need to communicate the
dialog state at acceptance to the already instantiated question-page,
by some means.
Hope that helps,
Matt
------------------------------------------------------------------------
*From:* Superpelican [superpeli...@zoho.com]
*Sent:* Monday, August 12, 2013 4:45 AM
*To:* Matthew Vogt
*Cc:* devel@lists.sailfishos.org
*Subject:* Re: [SailfishDevel] Bug in the Silica Reference docs and
possible bug in the Dialog component
Hello Matthew,
Sorry for my late reply.
I believe you misunderstood me. I'm not developing a custom Sailfish
Dialog component, but creating a Sailfish app.
The sources can be found here
<https://bitbucket.org/Superpelican/quick_clamshell/src>.
My intent is also not to explicitly pop the dialog of the pageStack,
but I was forced to do this, because the dialog doesn't do it itself!
BTW I have already removed the code that should explicitly pop the
dialog of the pageStack because it didn't work.
>Also, as the implementor of the Dialog, you should use the onDone()
handler to react to the user's actions, leaving the accepted() signal
to be handled by users of >your dialog.
Because I'm not creating a custom dialog component, I am actually the
user of the dialog, so that's why I'm handling the onAccepted() signal. ;)
I've demonstrated what I'm experiencing in this video:
http://ubuntuone.com/71UqvktzqGWMvukeVTW8Qy
<http://ubuntuone.com/71UqvktzqGWMvukeVTW8Qy> (should be viewable in
any HTML5 video supporting browser, that supports WebM, like Firefox
and Chromium).
Kind Regards,
Superpelican
On 08/05/2013 01:38 PM, Matthew Vogt wrote:
Hi Superpelican.
Thanks for catching the errors in the Dialog documentation, I will
correct them.
In your Clamshell dialog, you do not need to explicitly pop() the
dialog page in response to the accept action; it is popped by the
user's interaction (either a drag or an 'Accept' click), and the
accepted signal is generated in response to this event.
Also, as the implementor of the Dialog, you should use the onDone()
handler to react to the user's actions, leaving the accepted() signal
to be handled by users of your dialog.
Thanks,
Matt
------------------------------------------------------------------------
*From:* devel-boun...@lists.sailfishos.org
[devel-boun...@lists.sailfishos.org] on behalf of Superpelican
[superpeli...@zoho.com]
*Sent:* Sunday, August 04, 2013 8:42 PM
*To:* devel@lists.sailfishos.org
*Subject:* [SailfishDevel] Bug in the Silica Reference docs and
possible bug in the Dialog component
Hello,
Sfiet_Konstantin and I have had another debugging session on IRC
recently with my app.
(http://merproject.org/logs/%23sailfishos/%23sailfishos.2013-08-03.log)
I had defined a handler that would be called when the user accepted a
dialog. However
we saw that the handler was never called. Then I noticed that the
documentation page
on the Silica Reference about the Dialog component has an error in
it. The description part
of the page described that an user can accept a dialog by pushing it
*from right
to left*.
But the onAccepted() signal hander description described that the
user could accept a dialog
by pushing it *from left to right*. Well I tested it in the emulator
and the description of the
Dialog component at the top of the page is correct. However the
description of the onAccepted()
signal handler is incorrect. Instead when you push the dialog *from
left to right* you *reject it*!
So every time I thought I was accepting the dialog, I actually
rejected it! ;) I had only read the wrong part
of the documentation page.
The onRejected() signal handler description is incorrect too. It says
you can reject a dialog by pushing it
*from right to left*. Which actually accepts the dialog.
I hope someone can edit the Silica Reference, so that not more
developers read the wrong part and wonder
why their defined action doesn't occur! ;)
Also we noticed that when a dialog is accepted, it isn't popped from
the pageStack. While according to Sfiet_Konstantin
this should happen. This is especially a problem in my app, where the
app has a homescreen where a mode is chosen.
Then when a particular mode is chosen the user is first prompted for
a dialog, to enter information that is required for
that mode to operate. After the user has accepted the dialog, the
mode begins. The user can quit the mode and return
to the homescreen by simply pushing away the "mode page".
However when the user does that, the dialog is still there and he/she
will have to reject the dialog too and will then finally return to
the homescreen. Not only does this require another action from the user,
it can also be confusing to see a dialog with the previously entered
value still in it. Some users will think they need to accept the dialog.
But if they do, they'll return to the "mode page", not the
homescreen. This can be very confusing.
This can all be seen in this video:
http://ubuntuone.com/7MIfo6vKsdqg9PmgSQ9iH4
<http://ubuntuone.com/7MIfo6vKsdqg9PmgSQ9iH4> (note: this requires a
browser that supports HTML5, otherwise
you'll need to download the video and play it in your local video
player). Unfortunately the video has a very low framerate.
Sfiet_Konstantin and I
don't know whether this is due to my laptop not being particulary
highly spec'd or Wayland causing the low framerate. I can remember
recording
applications and games with another recordmydesktop frontend on a
much lower spec'd computer, so I doubt that computer is too slow.
The source code of my app can be found at
http://bitbucket.org/Superpelican/quick_clamshell/src/
I hope this is helpful for the sailors/Jollaians,
Superpelican
_______________________________________________
SailfishOS.org Devel mailing list