Hands On The New Hildon

40
Hands on the New Hildon Gran Canaria Desktop Summit (GUADEC @ Paradise) Joaquim Rocha [email protected]

description

An introduction to the new widgets of Hildon 2.2 and some advices on how to port desktop applications to Maemo Fremantle.

Transcript of Hands On The New Hildon

Page 1: Hands On The New Hildon

Hands on the New Hildon

Gran Canaria Desktop Summit (GUADEC @ Paradise)

Joaquim [email protected]

Page 2: Hands On The New Hildon

GCDS · Joaquim Rocha · [email protected] 2

whoami

● GTK+ && Hildon && Python developer

● Igalian since late 2008

● Portuguese since 1985

.. and lots of other interesting things :)

Page 3: Hands On The New Hildon

GCDS · Joaquim Rocha · [email protected] 3

Hildon 2.2

● New finger-friendly widgets

● New UI philosophy– Deprecated widgets– Porting means “adapting”, not “recompiling”

Page 4: Hands On The New Hildon

GCDS · Joaquim Rocha · [email protected] 4

Root view / Sub view philosophy

● Applications are stacks of windows

● The root window is the base– E.g.: List of emails

● Actions that break with what the user is doing should be done in a sub view– E.g.: Writing an email

Page 5: Hands On The New Hildon

GCDS · Joaquim Rocha · [email protected] 5

Root view / Sub view philosophy: Example

List of emails Reading email (Root View) (Sub View)

Page 6: Hands On The New Hildon

GCDS · Joaquim Rocha · [email protected] 6

Stacks of Windows

● Use HildonStackableWindow

● All you (normally) need to worry about is to show the windows, yes, with gtk_widget_show

Page 7: Hands On The New Hildon

GCDS · Joaquim Rocha · [email protected] 7

Stacks of Windows: Code

rootview = hildon_stackable_window_new ();...gtk_widget_show_all (rootview);

subview = hildon_stackable_window_new ();...gtk_widget_show_all (subview);

Page 8: Hands On The New Hildon

GCDS · Joaquim Rocha · [email protected] 8

Root View/Sub View Demo

Stock items

Page 9: Hands On The New Hildon

GCDS · Joaquim Rocha · [email protected] 9

Root View/Sub View : How can it be done

● Initialize a GtkTreeView using hildon_gtk_tree_view_new

● Use it the GTK+ way you're used to

tree_view = hildon_gtk_tree_view_new (HILDON_UI_NORMAL_MODE);

Page 10: Hands On The New Hildon

GCDS · Joaquim Rocha · [email protected] 10

Tree Views Code: UI Mode

Defines the way the user interacts with the items in a list

– Normal Mode: Tapping on a widget will behave as it would normally do, for example, triggering an action

– Edit Mode: Special mode where a range of items can be selected

Page 11: Hands On The New Hildon

Pannable Area

Page 12: Hands On The New Hildon

GCDS · Joaquim Rocha · [email protected] 12

Pannable Area

● A magical finger-friendly scrolling widget

● Use it to display widgets that don't fit in the visible area

● It's a container! Just add your contents

Page 13: Hands On The New Hildon

GCDS · Joaquim Rocha · [email protected] 13

Pannable Area: Demo

Eye of GNOME:

Desktop properties VS Maemo Properties

Page 14: Hands On The New Hildon

GCDS · Joaquim Rocha · [email protected] 14

Pannable Area: Code

contents = hildon_pannable_area_new ();

hildon_pannable_area_add_with_viewport (HILDON_PANNABLE_AREA (contents),main_contents);

Page 15: Hands On The New Hildon

Application Menu

Page 16: Hands On The New Hildon

GCDS · Joaquim Rocha · [email protected] 16

Application Menu

One level! No more submenus, subsubsubsubmenus, …

– Small number of items– Allows filters

Page 17: Hands On The New Hildon

GCDS · Joaquim Rocha · [email protected] 17

Application Menu: Filter

Should NOT change contents but how contents are presented

Page 18: Hands On The New Hildon

GCDS · Joaquim Rocha · [email protected] 18

Application Menu: Don't stuff it

● How to reduce the number of items● DRY● Put only what matters

Eye of GNOME Demo:

Desktop menu VS Maemo App. Menu

Page 19: Hands On The New Hildon

GCDS · Joaquim Rocha · [email protected] 19

Application Menu: Code

menu = hildon_app_menu_new ();

filter = hildon_gtk_radio_button_new (HILDON_SIZE_FINGER_HEIGHT, NULL);

gtk_button_set_label (GTK_BUTTON (filter), "a-Z");

gtk_toggle_button_set_mode (GTK_TOGGLE_BUTTON (filter), FALSE);

hildon_app_menu_add_filter (HILDON_APP_MENU (menu),GTK_BUTTON (filter));

Page 20: Hands On The New Hildon

GCDS · Joaquim Rocha · [email protected] 20

Application Menu: Code (cont.)

filter = hildon_gtk_radio_button_new_from_widget (HILDON_SIZE_FINGER_HEIGHT,

GTK_RADIO_BUTTON (other_filter));

gtk_button_set_label (GTK_BUTTON (filter1), "z-A");gtk_toggle_button_set_mode (GTK_TOGGLE_BUTTON (filter1), FALSE);

hildon_app_menu_add_filter (HILDON_APP_MENU (menu), GTK_BUTTON (filter));

Page 21: Hands On The New Hildon

GCDS · Joaquim Rocha · [email protected] 21

Application Menu: Code (cont. 2)

item = hildon_gtk_button_new (HILDON_SIZE_FINGER_HEIGHT);gtk_button_set_label (GTK_BUTTON (item), "Foo Bar");

hildon_app_menu_append (HILDON_APP_MENU (menu), GTK_BUTTON(item));

...

hildon_window_set_app_menu (HILDON_WINDOW (main_window), HILDON_APP_MENU (menu));

Page 22: Hands On The New Hildon

Buttons Differences

Page 23: Hands On The New Hildon

GCDS · Joaquim Rocha · [email protected] 23

Buttons Differences

● You have GTK+ buttons and Hildon buttons● Hildon buttons have a title and a value● GTK+ buttons are the same, just chubbier

[1]

Page 24: Hands On The New Hildon

GCDS · Joaquim Rocha · [email protected] 24

GTK+ Button

Hildon provides convenience functions to create hildonized GTK+ buttons

button = hildon_gtk_button_new (HILDON_SIZE_THUMB_HEIGHT);

Page 25: Hands On The New Hildon

GCDS · Joaquim Rocha · [email protected] 25

Hildon Button

● Title: E.g. a property's title

● Value: E.g. a property's state

● The arrangement can be vertical or horizontal

Page 26: Hands On The New Hildon

GCDS · Joaquim Rocha · [email protected] 26

Hildon Button: Code

button = hildon_button_new_with_text (HILDON_SIZE_FINGER_HEIGHT, HILDON_BUTTON_ARRANGEMENT_VERTICAL,

"My size is", "Finger!");

Page 27: Hands On The New Hildon

GCDS · Joaquim Rocha · [email protected] 27

Picker Button

● A Hildon button that will show a picker dialog:– Allows the user to choose an item from a

TouchSelector

● Use it instead a combo box or a set of radio buttons

Page 28: Hands On The New Hildon

GCDS · Joaquim Rocha · [email protected] 28

Picker Button

button = hildon_picker_button_new (HILDON_SIZE_FINGER_HEIGHT, HILDON_BUTTON_ARRANGEMENT_VERTICAL);

hildon_button_set_title (HILDON_BUTTON (button), "I think GCDS is:");

Page 29: Hands On The New Hildon

GCDS · Joaquim Rocha · [email protected] 29

Picker Button: Creating the TouchSelector

selector = hildon_touch_selector_new_text ();

hildon_touch_selector_append_text ( HILDON_TOUCH_SELECTOR (selector),

"Awesome");hildon_touch_selector_append_text (

HILDON_TOUCH_SELECTOR (selector), "Great");

...

Page 30: Hands On The New Hildon

GCDS · Joaquim Rocha · [email protected] 30

Picker Button: Creating the TouchSelector

hildon_picker_button_set_selector (HILDON_PICKER_BUTTON (button), HILDON_TOUCH_SELECTOR (selector));

Page 31: Hands On The New Hildon

GCDS · Joaquim Rocha · [email protected] 31

...so much code itmakes my eyes hurt!

[2]

Page 32: Hands On The New Hildon

GCDS · Joaquim Rocha · [email protected] 32

Specialized Picker Buttons

Just to make your life easier:

HildonDateButton

HildonTimeButton

Page 33: Hands On The New Hildon

GCDS · Joaquim Rocha · [email protected] 33

Date and Time Button: Code

date_button = hildon_date_button_new (HILDON_SIZE_FINGER_HEIGHT, HILDON_BUTTON_ARRANGEMENT_VERTICAL);

time_button = hildon_time_button_new (HILDON_SIZE_FINGER_HEIGHT,HILDON_BUTTON_ARRANGEMENT_HORIZONTAL);

Page 34: Hands On The New Hildon

GCDS · Joaquim Rocha · [email protected] 34

Checkbutton: Code

Use it like a check box

check_button = hildon_check_button_new(HILDON_SIZE_FINGER_HEIGHT);

Page 35: Hands On The New Hildon

Text Input Differences

Page 36: Hands On The New Hildon

GCDS · Joaquim Rocha · [email protected] 36

Text Input Differences

● HildonEntry and HildonTextView allow to set a placeholder text

● HildonTextView expands according to its contents

● Use placeholders as if they were tooltips

Page 37: Hands On The New Hildon

GCDS · Joaquim Rocha · [email protected] 37

Text Input Differences: Code

name = hildon_entry_new (HILDON_SIZE_FINGER_HEIGHT);hildon_entry_set_placeholder (HILDON_ENTRY (name),

"Your full name");

info = hildon_text_view_new ();hildon_text_view_set_placeholder (HILDON_TEXT_VIEW (info),

"Some info about you");

Page 38: Hands On The New Hildon

GCDS · Joaquim Rocha · [email protected] 38

Where to go from here?

● Hildon Tutorial:● http://maemo.org/api_refs/5.0/beta/tutorial/html/

● Hildon HIG:● http://maemo.org/api_refs/5.0/beta/hig/html/

● Hildon API reference:● http://maemo.org/api_refs/5.0/beta/hildon/

Page 39: Hands On The New Hildon

GCDS · Joaquim Rocha · [email protected] 39

And That's All Folks

Questions?

Page 40: Hands On The New Hildon

Thank you!

[1] http://www.flickr.com/photos/lilcrabbygal/484635049/[2] http://farm4.static.flickr.com/3061/2924390962_61dc14d42c.jpg?v=0