Public bug reported:

== The Design ==

The edge tutorial that is shown during the first-boot is getting a
redesign [1].

As part of it, the bottom edge tutorial screen is intended to only
appear after a certain amount of time and only if a user is opening or
switching to an app with a bottom edge to drag up.

When that happens, a page appears covering the whole screen, pointing to
the bottom and saying "Swipe from the bottom edge to manage the app".
Then when the user does swipe up, it fades out as the bottom is swiped.
I've attached a screenshot of an early mockup for this (back when it was
designed for the App scope, not an actual app).

Since it must cover the entire screen (and turn off the launcher and
panel during it), it should probably be rendered by the shell (which is
rendering the rest of the tutorial anyway).  So we have to coordinate
between the app and the shell.

There are two main technical difficulties in implementing this, the way
I see it.  Detecting if the current page has a valid BottomEdge and
synchronizing the fade-out with the bottom-edge drag.

[1] https://docs.google.com/document/d/1pZ-Ro--
2eaRzjZKNRoYAeDvQHMkCuyvVuPFWFQfPW4s

== Detecting BottomEdge ==

We need:
1) A BottomEdge SDK component
2) That is enabled
3) That is attached to the bottom edge of the app
4) That is currently being rendered (might be in a Page that isn't on top right 
now)
5) That isn't obscured by some other widget or MouseArea

#5 is going to be hard to detect in the wild west of apps from the
store.  But one thing we could do restrict this to known-well-behaved
apps that are shipped by default anyway.  The user is most likely to be
in one of those early on in their phone experience anyway.

Once the SDK can detect this situation, it needs to signal it somehow.
Maybe the "valid-bottom-edge" state can bubble up to qtmir's
ApplicationManager and then the shell.  Any ideas on the best way to do
that?

== Synchronizing fade transition ==

I'm thinking there are two ways:

1) Communicate from the app to the shell how far the bottom edge has
been dragged, as it is being dragged.  Presumably via the same channel
as we communicate that there is a valid bottom edge in the first place.

2) Fake it and have the shell track the drag itself.  It then needs to
mirror the input to the app so that it also receives the drag.

#2 is probably easier.  Slightly brittle in case for whatever reason the
app interferes with the drag or does something on its own that would
desynchronize the animation.  But again, if we limit this to well-known
apps, we can avoid that.

== Open tasks ==

1) Get general feedback on these ideas
2) Determine how feasible it is for the SDK to detect a valid BottomEdge
3) Determine the best way to signal that state from the SDK up to the shell
4) Implement it

** Affects: ubuntu-ui-toolkit (Ubuntu)
     Importance: Undecided
         Status: New

** Attachment added: "1.Edge education bottom swipe.jpg"
   
https://bugs.launchpad.net/bugs/1499845/+attachment/4474737/+files/1.Edge%20education%20bottom%20swipe.jpg

-- 
You received this bug notification because you are a member of Ubuntu
Touch seeded packages, which is subscribed to ubuntu-ui-toolkit in
Ubuntu.
https://bugs.launchpad.net/bugs/1499845

Title:
  Expose whether an app has a visible BottomEdge

Status in ubuntu-ui-toolkit package in Ubuntu:
  New

Bug description:
  == The Design ==

  The edge tutorial that is shown during the first-boot is getting a
  redesign [1].

  As part of it, the bottom edge tutorial screen is intended to only
  appear after a certain amount of time and only if a user is opening or
  switching to an app with a bottom edge to drag up.

  When that happens, a page appears covering the whole screen, pointing
  to the bottom and saying "Swipe from the bottom edge to manage the
  app".  Then when the user does swipe up, it fades out as the bottom is
  swiped.   I've attached a screenshot of an early mockup for this (back
  when it was designed for the App scope, not an actual app).

  Since it must cover the entire screen (and turn off the launcher and
  panel during it), it should probably be rendered by the shell (which
  is rendering the rest of the tutorial anyway).  So we have to
  coordinate between the app and the shell.

  There are two main technical difficulties in implementing this, the
  way I see it.  Detecting if the current page has a valid BottomEdge
  and synchronizing the fade-out with the bottom-edge drag.

  [1] https://docs.google.com/document/d/1pZ-Ro--
  2eaRzjZKNRoYAeDvQHMkCuyvVuPFWFQfPW4s

  == Detecting BottomEdge ==

  We need:
  1) A BottomEdge SDK component
  2) That is enabled
  3) That is attached to the bottom edge of the app
  4) That is currently being rendered (might be in a Page that isn't on top 
right now)
  5) That isn't obscured by some other widget or MouseArea

  #5 is going to be hard to detect in the wild west of apps from the
  store.  But one thing we could do restrict this to known-well-behaved
  apps that are shipped by default anyway.  The user is most likely to
  be in one of those early on in their phone experience anyway.

  Once the SDK can detect this situation, it needs to signal it somehow.
  Maybe the "valid-bottom-edge" state can bubble up to qtmir's
  ApplicationManager and then the shell.  Any ideas on the best way to
  do that?

  == Synchronizing fade transition ==

  I'm thinking there are two ways:

  1) Communicate from the app to the shell how far the bottom edge has
  been dragged, as it is being dragged.  Presumably via the same channel
  as we communicate that there is a valid bottom edge in the first
  place.

  2) Fake it and have the shell track the drag itself.  It then needs to
  mirror the input to the app so that it also receives the drag.

  #2 is probably easier.  Slightly brittle in case for whatever reason
  the app interferes with the drag or does something on its own that
  would desynchronize the animation.  But again, if we limit this to
  well-known apps, we can avoid that.

  == Open tasks ==

  1) Get general feedback on these ideas
  2) Determine how feasible it is for the SDK to detect a valid BottomEdge
  3) Determine the best way to signal that state from the SDK up to the shell
  4) Implement it

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/ubuntu-ui-toolkit/+bug/1499845/+subscriptions

-- 
Mailing list: https://launchpad.net/~touch-packages
Post to     : touch-packages@lists.launchpad.net
Unsubscribe : https://launchpad.net/~touch-packages
More help   : https://help.launchpad.net/ListHelp

Reply via email to