SlideShare a Scribd company logo
1 of 36
Download to read offline
static void




Adapting GNOME
                                                 _f_do_barnacle_install_properties(GObjectClass
                                                                                 *gobject_class)
                                                                                                {
                                                                           GParamSpec *pspec;




Applications to
                                                                      /* Party code attribute */
                                      pspec = g_param_spec_uint64 (F_DO_BARNACLE_CODE,
                                                                             "Barnacle code.",
                                                                              "Barnacle code",
                                                                                             0,
                                                                              G_MAXUINT64,




Maemo Fremantle
                                                               G_MAXUINT64 /* default value
                                                                                             */,
                                                                     G_PARAM_READABLE |
                                                                     G_PARAM_WRITABLE |
                                                                       G_PARAM_PRIVATE);

                                                  g_object_class_install_property (gobject_class,

                                                             F_DO_BARNACLE_PROP_CODE,




Joaquim Rocha       (jrocha on IRC)
jrocha@igalia.com
whoami

●   GTK+ && Hildon && Python developer

●   Igalian since 2008

●   Part of Hildon Input Methods project


Adapting GNOME Applications to Maemo Fremantle · Joaquim Rocha <jrocha@igalia.com>
What porting means?
What porting means
●   Before Fremantle:
    ●   Make an application RUN in Maemo


●   After Fremantle:
    ●   ADAPT an application to Maemo


Adapting GNOME Applications to Maemo Fremantle · Joaquim Rocha <jrocha@igalia.com>
Why bothering?

●   Your application gets better
●   Your users get happier
●   Your fingers too!




Adapting GNOME Applications to Maemo Fremantle · Joaquim Rocha <jrocha@igalia.com>
GNOME Applications

●   Coding will be easier – it is GTK+!
●   Lots of interesting applications waiting to be ported!
●   If you're a GNOME user, you may have your common
    applications available to you.



Adapting GNOME Applications to Maemo Fremantle · Joaquim Rocha <jrocha@igalia.com>
Root view / Sub view
Root view / sub view philosophy
●   Applications are stacks of windows

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

●   Actions that break the usage flow, will be sub views:
    ●   E.g.: Reading an email

Adapting GNOME Applications to Maemo Fremantle · Joaquim Rocha <jrocha@igalia.com>
Root View                                       Sub View




              This means: no GTKPaned!


Adapting GNOME Applications to Maemo Fremantle · Joaquim Rocha <jrocha@igalia.com>
Black Chapter
I L !
FA
What to do with this!?
Divide and Conquer
When a box is tapped,
                          a dialog appears...



Adapting GNOME Applications to Maemo Fremantle · Joaquim Rocha <jrocha@igalia.com>
Use a GtkToggle button or a
HildonPickerButton
Replaced the GtkSpinButtons by
HildonEntries and not by
HildonPickerButtons because the
changes are shown immediately in
the image.




                                   Assign the numeric GtkInputMode
Text is the focus here, so, instead of a
GtkNotebook, the style properties are in a
GtkDialog launched from the text properties
HildonAppMenu
GtkSpinButtons are replaced by
HildonPickerButtons with a
TouchSelectorEntry assigned
HildonAppMenu
HildonAppMenu
●   Really different from a GtkMenu!!

●   Do not stuff it: Keep a low number of items

●   Use filters to display HOW contents are shown, not
    WHICH contents are shown


Adapting GNOME Applications to Maemo Fremantle · Joaquim Rocha <jrocha@igalia.com>
How to keep a low number of menu items?




                 DRY: Don't Repeat Yourself



Adapting GNOME Applications to Maemo Fremantle · Joaquim Rocha <jrocha@igalia.com>
Choose the most used/important menus and sub-
menus from the menu bar.

Pages can be chosen using gestures, so, no need for
Next/Previous menus.
The status bar and toolbar are not used in EOG
for Maemo, so, no menus are needed.

The Zoom In / Zoom Out functionalities are
accomplished by using the Increase / Decrease
hard-keys.
Following the Hildon Interface
                     Guidelines
●   HIG says: don't show menu items that are insensitive
●   Here's a helpful tip:
    ●   Connect a callback to the “show” signal of each
        HildonAppMenu item
    ●   The callback shows/hides the item according to its
        “sensitive” property



Adapting GNOME Applications to Maemo Fremantle · Joaquim Rocha <jrocha@igalia.com>
EOG with no images loaded




EOG with an image loaded
Migrating Preferences Dialogs
Preferences Dialogs
●   Dialogs with a GtkNotebook to group different kinds of
    preferences

●   Tabs' labels define groups' names




                   Adapting GNOME Applications to Maemo Fremantle · Joaquim Rocha <jrocha@igalia.com>
How to migrate it to Fremantle?
●   Use a HildonPannableArea

●   Add a GtkVBox with ALL the preferences groups and
    use a GtkLabel above each one, identifying it




                  Adapting GNOME Applications to Maemo Fremantle · Joaquim Rocha <jrocha@igalia.com>
Where to go from here?
●   Maemo 5 Developer Guide:

    http://wiki.maemo.org/Documentation/Maemo_5_Developer_Guide


●   Maemo 5 API Reference:

    http://maemo.org/api_refs/5.0/5.0-final/hildon/


                          Adapting GNOME Applications to Maemo Fremantle · Joaquim Rocha <jrocha@igalia.com>
Questions?
Thank you!

More Related Content

Viewers also liked

Brochure & order form central europe b2 c e-commerce report 2011_by ystats.com
Brochure & order form central europe b2 c e-commerce report 2011_by ystats.comBrochure & order form central europe b2 c e-commerce report 2011_by ystats.com
Brochure & order form central europe b2 c e-commerce report 2011_by ystats.comyStats.com
 
Dfcs docs important 04112015
Dfcs docs important 04112015Dfcs docs important 04112015
Dfcs docs important 04112015screaminc
 
Commercial Properties
Commercial PropertiesCommercial Properties
Commercial Propertiesmarktaglieber
 
Campaña Miguel Ángel Mancera. ESCOMI
Campaña Miguel Ángel Mancera. ESCOMI Campaña Miguel Ángel Mancera. ESCOMI
Campaña Miguel Ángel Mancera. ESCOMI Melissa Jiménez
 
Dream Hotels Of The World Part 1
Dream Hotels Of The World Part 1Dream Hotels Of The World Part 1
Dream Hotels Of The World Part 1OH TEIK BIN
 
STATE WISE LIST OF ASSOCIATIONS WHO HAVE NOT FURNISHED MANDATORY ANNUAL RETUR...
STATE WISE LIST OF ASSOCIATIONS WHO HAVE NOT FURNISHED MANDATORY ANNUAL RETUR...STATE WISE LIST OF ASSOCIATIONS WHO HAVE NOT FURNISHED MANDATORY ANNUAL RETUR...
STATE WISE LIST OF ASSOCIATIONS WHO HAVE NOT FURNISHED MANDATORY ANNUAL RETUR...GK Dutta
 
Mexico presentation3
Mexico presentation3Mexico presentation3
Mexico presentation3Tami Binger
 
Rust, el nuevo lenguaje de Mozilla
Rust, el nuevo lenguaje de MozillaRust, el nuevo lenguaje de Mozilla
Rust, el nuevo lenguaje de MozillaWilly Aguirre
 
Lodos de la empresa comestibles la rosa
Lodos de la empresa comestibles la rosaLodos de la empresa comestibles la rosa
Lodos de la empresa comestibles la rosakaren Hernandez
 
Bf2dohijo2012
Bf2dohijo2012Bf2dohijo2012
Bf2dohijo2012otepsn
 
The scrum events athens agile meetup
The scrum events athens agile meetupThe scrum events athens agile meetup
The scrum events athens agile meetupymavra
 
Nivelacion, topografia
Nivelacion, topografiaNivelacion, topografia
Nivelacion, topografiaUdC
 

Viewers also liked (14)

Brochure & order form central europe b2 c e-commerce report 2011_by ystats.com
Brochure & order form central europe b2 c e-commerce report 2011_by ystats.comBrochure & order form central europe b2 c e-commerce report 2011_by ystats.com
Brochure & order form central europe b2 c e-commerce report 2011_by ystats.com
 
Dfcs docs important 04112015
Dfcs docs important 04112015Dfcs docs important 04112015
Dfcs docs important 04112015
 
Commercial Properties
Commercial PropertiesCommercial Properties
Commercial Properties
 
Periódico Cámara en Acción Agosto 2015
Periódico Cámara en Acción Agosto 2015Periódico Cámara en Acción Agosto 2015
Periódico Cámara en Acción Agosto 2015
 
Campaña Miguel Ángel Mancera. ESCOMI
Campaña Miguel Ángel Mancera. ESCOMI Campaña Miguel Ángel Mancera. ESCOMI
Campaña Miguel Ángel Mancera. ESCOMI
 
Dream Hotels Of The World Part 1
Dream Hotels Of The World Part 1Dream Hotels Of The World Part 1
Dream Hotels Of The World Part 1
 
STATE WISE LIST OF ASSOCIATIONS WHO HAVE NOT FURNISHED MANDATORY ANNUAL RETUR...
STATE WISE LIST OF ASSOCIATIONS WHO HAVE NOT FURNISHED MANDATORY ANNUAL RETUR...STATE WISE LIST OF ASSOCIATIONS WHO HAVE NOT FURNISHED MANDATORY ANNUAL RETUR...
STATE WISE LIST OF ASSOCIATIONS WHO HAVE NOT FURNISHED MANDATORY ANNUAL RETUR...
 
Mexico presentation3
Mexico presentation3Mexico presentation3
Mexico presentation3
 
Rust, el nuevo lenguaje de Mozilla
Rust, el nuevo lenguaje de MozillaRust, el nuevo lenguaje de Mozilla
Rust, el nuevo lenguaje de Mozilla
 
Business organization as a inforamtion system
Business organization as a inforamtion systemBusiness organization as a inforamtion system
Business organization as a inforamtion system
 
Lodos de la empresa comestibles la rosa
Lodos de la empresa comestibles la rosaLodos de la empresa comestibles la rosa
Lodos de la empresa comestibles la rosa
 
Bf2dohijo2012
Bf2dohijo2012Bf2dohijo2012
Bf2dohijo2012
 
The scrum events athens agile meetup
The scrum events athens agile meetupThe scrum events athens agile meetup
The scrum events athens agile meetup
 
Nivelacion, topografia
Nivelacion, topografiaNivelacion, topografia
Nivelacion, topografia
 

Similar to Adapting GNOME Applications to Maemo Fremantle

Making the GNOME 3.0 desktop accessible: building accessibility into GNOME Sh...
Making the GNOME 3.0 desktop accessible: building accessibility into GNOME Sh...Making the GNOME 3.0 desktop accessible: building accessibility into GNOME Sh...
Making the GNOME 3.0 desktop accessible: building accessibility into GNOME Sh...AEGIS-ACCESSIBLE Projects
 
Grilo: Feeding applications with multimedia content (GUADEC 2010)
Grilo: Feeding applications with multimedia content (GUADEC 2010)Grilo: Feeding applications with multimedia content (GUADEC 2010)
Grilo: Feeding applications with multimedia content (GUADEC 2010)Igalia
 
Grilo: Integrating Multimedia Content in Applications (ELCE 2010)
Grilo: Integrating Multimedia Content in Applications (ELCE 2010)Grilo: Integrating Multimedia Content in Applications (ELCE 2010)
Grilo: Integrating Multimedia Content in Applications (ELCE 2010)Igalia
 
Grilo: Easing integration of multimedia content in applications (LinuxTag 2010)
Grilo: Easing integration of multimedia content in applications (LinuxTag 2010)Grilo: Easing integration of multimedia content in applications (LinuxTag 2010)
Grilo: Easing integration of multimedia content in applications (LinuxTag 2010)Igalia
 
OCRFeeder LinuxTag 2011
OCRFeeder LinuxTag 2011OCRFeeder LinuxTag 2011
OCRFeeder LinuxTag 2011Joaquim Rocha
 
Building Chromium on an Embedded Platform using Ozone-Wayland Layer (GENIVI 1...
Building Chromium on an Embedded Platform using Ozone-Wayland Layer (GENIVI 1...Building Chromium on an Embedded Platform using Ozone-Wayland Layer (GENIVI 1...
Building Chromium on an Embedded Platform using Ozone-Wayland Layer (GENIVI 1...Igalia
 
Servo and GStreamer (GStreamer Conference 2018)
Servo and GStreamer (GStreamer Conference 2018)Servo and GStreamer (GStreamer Conference 2018)
Servo and GStreamer (GStreamer Conference 2018)Igalia
 
Hildon 2.2: the Hildon toolkit for Fremantle
Hildon 2.2: the Hildon toolkit for FremantleHildon 2.2: the Hildon toolkit for Fremantle
Hildon 2.2: the Hildon toolkit for FremantleAlberto Garcia
 
State of WebKit/Safari (This.JavaScript - State of Browsers 2018)
State of WebKit/Safari (This.JavaScript - State of Browsers 2018)State of WebKit/Safari (This.JavaScript - State of Browsers 2018)
State of WebKit/Safari (This.JavaScript - State of Browsers 2018)Igalia
 
WPE: Current Status and Future (Web Engines Hackfest 2018)
WPE: Current Status and Future (Web Engines Hackfest 2018)WPE: Current Status and Future (Web Engines Hackfest 2018)
WPE: Current Status and Future (Web Engines Hackfest 2018)Igalia
 
Writing multimedia applications with Grilo
Writing multimedia applications with GriloWriting multimedia applications with Grilo
Writing multimedia applications with GriloJuan A. Suárez Romero
 
Writing multimedia applications with Grilo (GUADEC 2013)
Writing multimedia applications with Grilo (GUADEC 2013)Writing multimedia applications with Grilo (GUADEC 2013)
Writing multimedia applications with Grilo (GUADEC 2013)Igalia
 
BSidesROC 2016 - Jaime Geiger - Android Application Function Hooking With Xposed
BSidesROC 2016 - Jaime Geiger - Android Application Function Hooking With XposedBSidesROC 2016 - Jaime Geiger - Android Application Function Hooking With Xposed
BSidesROC 2016 - Jaime Geiger - Android Application Function Hooking With XposedBSidesROC
 
Develop Android app using Golang
Develop Android app using GolangDevelop Android app using Golang
Develop Android app using GolangSeongJae Park
 

Similar to Adapting GNOME Applications to Maemo Fremantle (20)

Modest Maemo Summit 09
Modest Maemo Summit 09Modest Maemo Summit 09
Modest Maemo Summit 09
 
Making the GNOME 3.0 desktop accessible: building accessibility into GNOME Sh...
Making the GNOME 3.0 desktop accessible: building accessibility into GNOME Sh...Making the GNOME 3.0 desktop accessible: building accessibility into GNOME Sh...
Making the GNOME 3.0 desktop accessible: building accessibility into GNOME Sh...
 
Grilo: Feeding applications with multimedia content (GUADEC 2010)
Grilo: Feeding applications with multimedia content (GUADEC 2010)Grilo: Feeding applications with multimedia content (GUADEC 2010)
Grilo: Feeding applications with multimedia content (GUADEC 2010)
 
Grilo: Integrating Multimedia Content in Applications (ELCE 2010)
Grilo: Integrating Multimedia Content in Applications (ELCE 2010)Grilo: Integrating Multimedia Content in Applications (ELCE 2010)
Grilo: Integrating Multimedia Content in Applications (ELCE 2010)
 
Grilo: Easing integration of multimedia content in applications (LinuxTag 2010)
Grilo: Easing integration of multimedia content in applications (LinuxTag 2010)Grilo: Easing integration of multimedia content in applications (LinuxTag 2010)
Grilo: Easing integration of multimedia content in applications (LinuxTag 2010)
 
OCRFeeder LinuxTag 2011
OCRFeeder LinuxTag 2011OCRFeeder LinuxTag 2011
OCRFeeder LinuxTag 2011
 
Building Chromium on an Embedded Platform using Ozone-Wayland Layer (GENIVI 1...
Building Chromium on an Embedded Platform using Ozone-Wayland Layer (GENIVI 1...Building Chromium on an Embedded Platform using Ozone-Wayland Layer (GENIVI 1...
Building Chromium on an Embedded Platform using Ozone-Wayland Layer (GENIVI 1...
 
Grilo
GriloGrilo
Grilo
 
Servo and GStreamer (GStreamer Conference 2018)
Servo and GStreamer (GStreamer Conference 2018)Servo and GStreamer (GStreamer Conference 2018)
Servo and GStreamer (GStreamer Conference 2018)
 
Hildon 2.2: the Hildon toolkit for Fremantle
Hildon 2.2: the Hildon toolkit for FremantleHildon 2.2: the Hildon toolkit for Fremantle
Hildon 2.2: the Hildon toolkit for Fremantle
 
State of WebKit/Safari (This.JavaScript - State of Browsers 2018)
State of WebKit/Safari (This.JavaScript - State of Browsers 2018)State of WebKit/Safari (This.JavaScript - State of Browsers 2018)
State of WebKit/Safari (This.JavaScript - State of Browsers 2018)
 
WPE: Current Status and Future (Web Engines Hackfest 2018)
WPE: Current Status and Future (Web Engines Hackfest 2018)WPE: Current Status and Future (Web Engines Hackfest 2018)
WPE: Current Status and Future (Web Engines Hackfest 2018)
 
Writing multimedia applications with Grilo
Writing multimedia applications with GriloWriting multimedia applications with Grilo
Writing multimedia applications with Grilo
 
Writing multimedia applications with Grilo (GUADEC 2013)
Writing multimedia applications with Grilo (GUADEC 2013)Writing multimedia applications with Grilo (GUADEC 2013)
Writing multimedia applications with Grilo (GUADEC 2013)
 
Day4
Day4Day4
Day4
 
Day4
Day4Day4
Day4
 
Eugenia
EugeniaEugenia
Eugenia
 
BSidesROC 2016 - Jaime Geiger - Android Application Function Hooking With Xposed
BSidesROC 2016 - Jaime Geiger - Android Application Function Hooking With XposedBSidesROC 2016 - Jaime Geiger - Android Application Function Hooking With Xposed
BSidesROC 2016 - Jaime Geiger - Android Application Function Hooking With Xposed
 
Develop Android app using Golang
Develop Android app using GolangDevelop Android app using Golang
Develop Android app using Golang
 
Golang workshop
Golang workshopGolang workshop
Golang workshop
 

More from Joaquim Rocha

More from Joaquim Rocha (7)

Introduction to Django
Introduction to DjangoIntroduction to Django
Introduction to Django
 
Introducción a Django
Introducción a DjangoIntroducción a Django
Introducción a Django
 
Ocrfeeder
OcrfeederOcrfeeder
Ocrfeeder
 
Django introduction
Django introductionDjango introduction
Django introduction
 
Python introduction
Python introductionPython introduction
Python introduction
 
Hands On The New Hildon
Hands On The New HildonHands On The New Hildon
Hands On The New Hildon
 
Django Intro
Django IntroDjango Intro
Django Intro
 

Recently uploaded

TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
What is Artificial Intelligence?????????
What is Artificial Intelligence?????????What is Artificial Intelligence?????????
What is Artificial Intelligence?????????blackmambaettijean
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embeddingZilliz
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersNicole Novielli
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demoHarshalMandlekar2
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 

Recently uploaded (20)

TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
What is Artificial Intelligence?????????
What is Artificial Intelligence?????????What is Artificial Intelligence?????????
What is Artificial Intelligence?????????
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embedding
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demo
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 

Adapting GNOME Applications to Maemo Fremantle

  • 1. static void Adapting GNOME _f_do_barnacle_install_properties(GObjectClass *gobject_class) { GParamSpec *pspec; Applications to /* Party code attribute */ pspec = g_param_spec_uint64 (F_DO_BARNACLE_CODE, "Barnacle code.", "Barnacle code", 0, G_MAXUINT64, Maemo Fremantle G_MAXUINT64 /* default value */, G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_PRIVATE); g_object_class_install_property (gobject_class, F_DO_BARNACLE_PROP_CODE, Joaquim Rocha (jrocha on IRC) jrocha@igalia.com
  • 2. whoami ● GTK+ && Hildon && Python developer ● Igalian since 2008 ● Part of Hildon Input Methods project Adapting GNOME Applications to Maemo Fremantle · Joaquim Rocha <jrocha@igalia.com>
  • 4. What porting means ● Before Fremantle: ● Make an application RUN in Maemo ● After Fremantle: ● ADAPT an application to Maemo Adapting GNOME Applications to Maemo Fremantle · Joaquim Rocha <jrocha@igalia.com>
  • 5. Why bothering? ● Your application gets better ● Your users get happier ● Your fingers too! Adapting GNOME Applications to Maemo Fremantle · Joaquim Rocha <jrocha@igalia.com>
  • 6. GNOME Applications ● Coding will be easier – it is GTK+! ● Lots of interesting applications waiting to be ported! ● If you're a GNOME user, you may have your common applications available to you. Adapting GNOME Applications to Maemo Fremantle · Joaquim Rocha <jrocha@igalia.com>
  • 7. Root view / Sub view
  • 8. Root view / sub view philosophy ● Applications are stacks of windows ● The root window is the base ● E.g.: List of emails ● Actions that break the usage flow, will be sub views: ● E.g.: Reading an email Adapting GNOME Applications to Maemo Fremantle · Joaquim Rocha <jrocha@igalia.com>
  • 9. Root View Sub View This means: no GTKPaned! Adapting GNOME Applications to Maemo Fremantle · Joaquim Rocha <jrocha@igalia.com>
  • 11.
  • 13.
  • 14.
  • 15. What to do with this!?
  • 17. When a box is tapped, a dialog appears... Adapting GNOME Applications to Maemo Fremantle · Joaquim Rocha <jrocha@igalia.com>
  • 18.
  • 19. Use a GtkToggle button or a HildonPickerButton
  • 20. Replaced the GtkSpinButtons by HildonEntries and not by HildonPickerButtons because the changes are shown immediately in the image. Assign the numeric GtkInputMode
  • 21. Text is the focus here, so, instead of a GtkNotebook, the style properties are in a GtkDialog launched from the text properties HildonAppMenu
  • 22. GtkSpinButtons are replaced by HildonPickerButtons with a TouchSelectorEntry assigned
  • 24. HildonAppMenu ● Really different from a GtkMenu!! ● Do not stuff it: Keep a low number of items ● Use filters to display HOW contents are shown, not WHICH contents are shown Adapting GNOME Applications to Maemo Fremantle · Joaquim Rocha <jrocha@igalia.com>
  • 25. How to keep a low number of menu items? DRY: Don't Repeat Yourself Adapting GNOME Applications to Maemo Fremantle · Joaquim Rocha <jrocha@igalia.com>
  • 26. Choose the most used/important menus and sub- menus from the menu bar. Pages can be chosen using gestures, so, no need for Next/Previous menus.
  • 27. The status bar and toolbar are not used in EOG for Maemo, so, no menus are needed. The Zoom In / Zoom Out functionalities are accomplished by using the Increase / Decrease hard-keys.
  • 28. Following the Hildon Interface Guidelines ● HIG says: don't show menu items that are insensitive ● Here's a helpful tip: ● Connect a callback to the “show” signal of each HildonAppMenu item ● The callback shows/hides the item according to its “sensitive” property Adapting GNOME Applications to Maemo Fremantle · Joaquim Rocha <jrocha@igalia.com>
  • 29. EOG with no images loaded EOG with an image loaded
  • 31. Preferences Dialogs ● Dialogs with a GtkNotebook to group different kinds of preferences ● Tabs' labels define groups' names Adapting GNOME Applications to Maemo Fremantle · Joaquim Rocha <jrocha@igalia.com>
  • 32. How to migrate it to Fremantle? ● Use a HildonPannableArea ● Add a GtkVBox with ALL the preferences groups and use a GtkLabel above each one, identifying it Adapting GNOME Applications to Maemo Fremantle · Joaquim Rocha <jrocha@igalia.com>
  • 33.
  • 34. Where to go from here? ● Maemo 5 Developer Guide: http://wiki.maemo.org/Documentation/Maemo_5_Developer_Guide ● Maemo 5 API Reference: http://maemo.org/api_refs/5.0/5.0-final/hildon/ Adapting GNOME Applications to Maemo Fremantle · Joaquim Rocha <jrocha@igalia.com>