ScalabilityBrainStorming
About MaemoScalability,
Here is a raw list of technical items related to scalability. Feel free to test, comment and extend!
1 . Widgets scalability (theme/font issue) * pixel mesurment borders hardcoded * general scaling issues (need UI design) * complex widget (file selector) assumes screen size * Problematic Hildon widgets: * HildonAppView: hardcoded min size to 770 res, hardcoded borders. Would require min size change to contained + borders and border size (and which edges has a border) should be up to theming, not hardcoded.
1 . Command abstraction (actions/keys manager)
- GtkAction, needs extension ?
GtkAction/GtkUIManager natively support binding actions to menuitems and toolbar items
- (the items are created automatically).
- The proxying mechanism however is quite generic so basically any widget could be used to trigger an action, but at least currently buttons etc.
- need to be manually hooked up to do so, in code.
Toolbar with priority on buttons to display depending on space available
- supported by latest GTK ? (define an item as 'important')
- scaling down (reduce display (icon+text / icon only))
- Application defines an action. Graphical layer defines a control, and places it
- Softkeys
1 . TreeView scalability
- columns with priorities to display
- renderers with priorities to display (ex: string string P1, icon P2)
content changes
- single/multiple line
- more condensed/extended form
- "Ellipsising"
- alternate representation (date/time for example)
- probably a set of functions on top of TreeView
1 . Scalability on display migration/rotation/resize
- static UI layout variations
- dynamic UI layout variations
- how to design GUI to support display migr/rot/resize
- ex: toolbar, items droped, or moved to a drop down menu
how much can be done without to touch the application (how much we can hide in the framework.)
1 . UI layout on multiple screens (gtk_window_set_screen ?)
- gtk_window_set_screen() should "just work" but I think the bigger problem is how (or if) you abstract away the multi-display setup so that applications wouldn't need to handle exact configurations as special cases.
- display same set of data on two displays (communicator pb: display switch "restarts") needs MVC model
- display migration vs. display same set of data on two displays
(application should not need to care (again))
1 . spacial constraints in UI description (different layout manager than existing box based)
1 . missing from GTK+: multiple columns container (for example out of a long list).
(icon views works relatively like that.)
-> use case: contact list (single column on small display; several columns on large display.)
1 . finger use: physical size constraints on widgets
- UI developers needs to specify physical size
fonts/icons size needs to be synchronized
- -> may require lot of calculations
- -> current implementation spread into GTK+
1 . use of SVG, SDL, OpenGL ?
- SDL: should be able to do the same with gdk
- SVG:
- performance study needed.
- caching?
needs test performance for SVG icons
1 . language orientation (ltr/rtl -> layout change)
- pango supports ltr/rlt
- basic support in GTK+
- stock icons supports it (named icons not :(
- how well hildon widgets supports it?
- what's about maemo-af-desktop
needs input from native people. Anyone?
1 . maemo-af-desktop scalability
similar situation than hildon widgets, a bit more complicated to scale.
1 . Keyboard shortcut hints displayed only when keyboard available
enable/disable hints (similar thing with icons)
- dynamic change supported into GTK+
- probably needs to modify GTK+ to modify
1 . Switch between virtual/real keyboard
currently if VKB already open, does not close.
1 . Switch between stylus/mouse modes (check mouse use in current platform)
Study mouse usage
- mouse cursor
- altering stylus specific behaviour (long press, tap and hold, list interactions)
- stylus mode for GTK+
1 . Window manager themeing
related matter:
- button size defined in pixels (wont scale), not theme mechanism?
- define something in points (font) something in pixels (icon) which are supposed to be the same height.
- scalable skin?
1 . Menus
hildonmenu -> menu bar on large screen
1 . statusbar plugins (currently only 2 free slots)
1 . DPI/physical size -> fonts/fingers