Hello all,
Follows an idea of elementary widget and the proposed use cases. It is
very similar to elm_pager, but adds more meat so it can be used easily
for walk through wizards and configuration dialogs, avoiding messy
"all-in-one" dialogs that we often create. This will be very useful
for mobile systems such as phones, but could be used for set-top boxes
and even desktop it would make more sense.
I have no time to implement it now, and I was discussing it with
people at #edevelop... so if someone find time to do it, feel free to
help :-)
Use cases:
== Contacts ==
page #0:
.---------------------------.
|[Close] Contacts [New]|
}---------------------------{
| name1 |
| name2 |
| name3 |
`---------------------------'
Notes:
1. "close" is a custom button with
elm_walkthrough_page_custom_previous_object_set()
2. "new" is also a custom button.
page #1:
.---------------------------.
|[Cancel] New Contact [Save]|
}---------------------------{
| First: [ ]|
| Last: [ ]|
| ... |
`---------------------------'
Notes:
1. "Cancel" and "Save" are custom buttons,
both go back to page #0, but one adds the entry
and the other does not.
page #2:
.---------------------------.
|[Back] Info [Edit]|
}---------------------------{
| .---. |
| |\o/| Some Person Bla |
| | # | <<nickname>> |
| `---' |
| Mobile: +55 12 1234-5678 |
| Home: +55 12 1234-5679 |
| ... |
`---------------------------'
Notes:
1. "Edit" is a custom buttons.
page #3:
.---------------------------.
|[Cancel] Edit Info [Save]|
}---------------------------{
| First: [ ]|
| Last: [ ]|
| ... |
`---------------------------'
Notes:
1. "Cancel" and "Save" are custom buttons,
both go back to page #0, but one saves the
entry and the other does not.
== e17 keybinding dialog ==
Current (a mess which I dislike):
.------------------------------.
| [key bindings] [action] |
| | key1 | | act1 | |
| | key2 | | act2 | |
| [add][del] [act params] |
| [mod][del all] |
| [restore] |
| [ok][apply][close] |
`------------------------------'
Proposed walkthrough:
page #0:
.------------------------------.
|[Close] Mode |
}------------------------------{
| [ Add key binding ] |
| [ Modify binding by key ] |
| [ Modify binding by action ] |
| [ Delete key binding ] |
`------------------------------'
Notes:
1. "close" is a custom button with
elm_walkthrough_page_custom_previous_object_set()
2. no next action in this dialog. It will
go to page #1, #3, #5 or #7 based on button that
is choosen.
page #1:
.------------------------------.
|[Back] Add Key |
}------------------------------{
| Click "add key" and type the |
| key or "Escape" to cancel. |
}------------------------------{
| [ add key ] |
`------------------------------'
Notes:
1. instruction text is "subtitle"
2. no next action, it is handled automatically after key is
captured, going to page #2.
page #2:
.------------------------------.
|[Back] Select Action [Set]|
}------------------------------{
| Select the action to be |
| associated key key <C-M-1> |
}------------------------------{
| act1 |
| act2 |
| act3 |
`------------------------------'
Notes:
1. instruction text is "subtitle", it assumes
Control-Alt-1 (C-M-1) was choosen from previous
step.
2. "set" is a custom next action that finishes the
walkthrough (or goes back to first)
page #3:
.------------------------------.
|[Back] Select Key [Next]|
}------------------------------{
| Select the key to change the |
| action |
}------------------------------{
| key1 act1 |
| key2 act2 |
| key3 act3 |
`------------------------------'
Notes:
1. instruction text is "subtitle".
2. I opted to show action name on right, but it could
be hidden or shown just for the selected item.
page #4:
.------------------------------.
|[Back] Select Action [Change]|
}------------------------------{
| Select new action for key |
| <C-M-1> |
}------------------------------{
| act1 |
| act2 |
| act3 |
`------------------------------'
Notes:
1. instruction text is "subtitle", it assumes
Control-Alt-1 (C-M-1) was choosen from previous
step.
2. "change" is a custom next action that finishes the
walkthrough (or goes back to first)
page #5:
.------------------------------.
|[Back] Select Action [Next]|
}------------------------------{
| Select the action to change |
| the key |
}------------------------------{
| act1 key1 |
| act2 key2 |
| act3 key3 |
`------------------------------'
Notes:
1. instruction text is "subtitle".
2. I opted to show key name on right, but it could
be hidden or shown just for the selected item.
page #6:
.------------------------------.
|[Back] Select Key [Change]|
}------------------------------{
| Select new key for action |
| <Desktop/Flip Desktop Left> |
}------------------------------{
| [ select key ] |
`------------------------------'
Notes:
1. instruction text is "subtitle", it assumes
Control-Alt-1 (C-M-1) was choosen from previous
step.
2. "change" is a custom next action that finishes the
walkthrough (or goes back to first)
3. Dialog would check if key already exists and in that case
ask for another key.
page #7:
.------------------------------.
|[Back] Select Key [Delete]|
}------------------------------{
| Select the key to delete the |
| action |
}------------------------------{
| key1 act1 |
| key2 act2 |
| key3 act3 |
`------------------------------'
Notes:
1. instruction text is "subtitle".
2. I opted to show action name on right, but it could
be hidden or shown just for the selected item.
/* elm_walkthrough:
*
* Similar to elm_pager, but provides more helpers such as title
* and subtitle (with nice transitions as pages change), as well
* as navigation buttons that can be easily changed.
*
* This can be used to streamline some configuration dialogs,
* presenting things that matter within that context.
*
* smart callbacks called:
* "page,changed" [int new_idx, int old_idx] (array of int[2])
*/
Evas_Object *elm_walkthrough_add(Evas_Object *parent)
Eina_Bool elm_walkthrough_page_go(Evas_Object *o, int idx);
Eina_Bool elm_walkthrough_page_previous(Evas_Object *o);
Eina_Bool elm_walkthrough_page_next(Evas_Object *o);
Elm_Page *elm_walkthrough_page_add(Evas_Object *o, const char
*title, const char *subtitle, Evas_Object *contents);
/* If page is using standard navigation controls, toggle
* visibility of objects with Previous and Next actions. by
* default:
* - if object is first, there is no back.
* - if object is last, there is no next.
* - else: "<<Back" and "Next>>" are buttons with custom style.
*
* Buttons can be disabled or enabled until required fields in
* pages are set.
*/
void elm_walkthrough_page_standard_previous_visibile_set(Elm_Page
*page, Eina_Bool visible);
void elm_walkthrough_page_standard_next_visibile_set(Elm_Page
*page, Eina_Bool visible);
void elm_walkthrough_page_standard_previous_disabled_set(Elm_Page
*page, Eina_Bool disabled);
void elm_walkthrough_page_standard_next_disabled_set(Elm_Page
*page, Eina_Bool disabled);
/* set custom object instead of styled buttons with "<<Back" And "Next>>".
* These will force object being show, even if setting the nav_previous
* object of the first object. One may use this for "Cancel" and nav_next
* of last for "Done" or "Create"...
*
* In this scenario you are also responsible for calling desired
* action. Either elm_walkthrough_page_go() or something
* else. One can use this to implement non-sequential walkthroughs
* (skip some steps based on current page information).
*/
void elm_walkthrough_page_custom_previous_object_set(Elm_Page
*page, Evas_Object *obj);
void elm_walkthrough_page_custom_next_object_set(Elm_Page *page,
Evas_Object *obj);
--
Gustavo Sverzut Barbieri
http://profusion.mobi embedded systems
--------------------------------------
MSN: [email protected]
Skype: gsbarbieri
Mobile: +55 (19) 9225-2202
------------------------------------------------------------------------------
The Planet: dedicated and managed hosting, cloud storage, colocation
Stay online with enterprise data centers and the best network in the business
Choose flexible plans and management services without long-term contracts
Personal 24x7 support from experience hosting pros just a phone call away.
http://p.sf.net/sfu/theplanet-com
_______________________________________________
enlightenment-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel