maemo.org Bugzilla – Bug 3103
Improving category view
Last modified: 2009-10-22 07:57:12 UTC
You need to log in before you can comment on or make changes to this bug.
I was having a discussion with X-Fade today on the repository category mess, and the possibility of having usable categories besides "All" (sadly, I haven't even looked at anything but "All" since at least OS2005 :\) made me consider some of the issues with the current category setup in Application manager. The current category view has an awful lot of wasted whitespace. My initial reaction here was that a grid view in place of a the current list-view would make better use of space and improve the thumb-ability (ordering is badly messed-up in my mock-up—it should be left-to-right rather than top-to-bottom). The number of packages in each category should be noted parenthetically for each category (shown in the tree-view mock-up).* The grid-view is probably the most straightforward and immediate solution, but some extra options wouldn't hurt. Some sort of tree view (while mildly ungainly) could give a nice overview alternative to "All" while reducing the number of screens the user needs to click through. Show all the categories as collapsible branches, and indicate the number of packages in each category parenthetically.† Finally a column view could be another useful alternative for reducing the number of screens to click through and providing a better overview. Put a column of categories on the left (again, with the number of packages in each category indicated parenthetically) and display the packages in that category in the right column.†† User-Agent: Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en-US) AppleWebKit/522+ (KHTML, like Gecko, Safari/522) OmniWeb/v613.0.93354
Created an attachment (id=751) [details] Mock-up of the category grid view
Created an attachment (id=752) [details] Mock-up of the category column view
Created an attachment (id=753) [details] Mock-up of the category tree view
There was talk many moons ago of having the category list be a tag cloud; which could be cool. However, something hierarchical will probably be necessary to support things like Multimedia/Canola or Communications/Pidgin - where I don't want all their plugins filling up my limited screen estate when I don't care about them.
One really nice (relatively easy?) fix would be to have the app manager remember the category you were just in and set the scroll back to the same area like it now does with the package lists. As of now, you go into a category and when you go back, it puts you back at the top of the list of categories, even if you were way down in the middle of the list. I just submitted this in a separate bug #3104.
(Removing deprecated "Future" Target Milestone.)
Created an attachment (id=997) [details] Patch against branches/2.1.x to give category grid The attached patch (h-a-m-grid.patch) against branches/2.1.x (the current diablo branch) gives a grid view: http://bleb.org/software/maemo/h-a-m-grid.png However, with the talk of sub-categories[1], I think the category list should be the same GtkTreeView as the package list. This will give consistency, then, with the user selecting subcategories. The "version" column should be hidden/empty, but "Size" for a category should contain the number of packages it contains. Given we're talking about the Application Manager forcing everything[2] to be in one of the i18n'ed categories, there can also be i18n descriptions for them, and maybe even section-specific icons. [1] http://wiki.maemo.org/Task:Package_categories [2] http://wiki.maemo.org/Task:Package_categories#Defined_top-level_categories_.26_application-specific_subcategories
How relevant to the average user is version and size in the category column view (comment 2) - these extra columns make the screen look very "busy" and crowded and this information is in the details section if the user wants to view it. I think the mock-up in comment 2 might be more usable than the mock up in comment 3. I like the grid view (comment 7) for categories, but would icons/glyphs be possible in place of plain buttons? Good to see the App Manager getting a makeover, it's about time - nice one Ryan!
This is what I ultimately applied to the Diablo branch. The columns are now homogenous and there is no empty row at the bottom when the categories exactly fill the last row. Will be in hildon-application-manager 2.1.20. Index: src/util.cc =================================================================== --- src/util.cc (revision 1431) +++ src/util.cc (working copy) @@ -2036,6 +2036,8 @@ unref_section_info (gpointer data, GClos si->unref(); } +#define GRID_COLUMNS 3 + GtkWidget * make_global_section_list (GList *sections, section_activated *act) { @@ -2048,24 +2050,33 @@ make_global_section_list (GList *section return label; } - GtkWidget *hbox = gtk_hbox_new (FALSE, 0); - GtkWidget *vbox = gtk_vbox_new (FALSE, 5); + GtkWidget *table = gtk_table_new (1, GRID_COLUMNS, TRUE); GtkWidget *scroller; - gtk_box_pack_start (GTK_BOX (hbox), vbox, FALSE, FALSE, 10); - bool first_button = true; scroller = gtk_scrolled_window_new (NULL, NULL); + int row = 0; + int col = 0; for (GList *s = sections; s; s = s ->next) { section_info *si = (section_info *)s->data; GtkWidget *label = gtk_label_new (si->name); - gtk_misc_set_padding (GTK_MISC (label), 15, 15); + gtk_misc_set_padding (GTK_MISC (label), 0, 14); + gtk_label_set_ellipsize (GTK_LABEL (label), PANGO_ELLIPSIZE_END); GtkWidget *btn = gtk_button_new (); gtk_container_add (GTK_CONTAINER (btn), label); - gtk_box_pack_start (GTK_BOX (vbox), btn, FALSE, FALSE, 0); + gtk_table_attach_defaults (GTK_TABLE (table), btn, + col, col+1, + row, row+1); + + col += 1; + if (col >= GRID_COLUMNS) + { + col = 0; + row++; + } si->ref(); g_signal_connect_data (btn, "clicked", @@ -2084,7 +2095,7 @@ make_global_section_list (GList *section GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (scroller), - hbox); + table); global_section_list = scroller; g_object_ref (scroller);
Does it remember the scroll position now? and any word on what we might expect for Fremantle? Hopefully a slightly improved grid up giant buttons isn't it. ;)
(Fix not included in today's 5.2008.43-7 SSU update)
Marking patches of interest to Diablo (Maemo4) community updates, please excuse the noise.