Feature #1149
open
Rewrite UI using pigtk-icontable and friends
Added by Hammel over 1 year ago.
Updated 10 days ago.
Description
This will allow better movement through the list of videos.
This would probably be best handled like the launcher, with an array of choices on the left and a banner/description on the right. Basically replace the list with the pigtk-icontable. This would prevent requiring a second display area (like a Netflix or Plex choice) while still providing details of the current selection.
This needs to support search option by keyboard - simply typing a name moves to the first match, or doesn't move if no match. The typed name needs to be displayed somewhere, perhaps in a status bar area at the top.
- Description updated (diff)
- Related to Feature #522: Switch UI to something like Plex added
- Status changed from New to In Progress
- % Done changed from 0 to 10
pigtk-icontable doesn't really work. It needs a list of icons in a special structure which doesn't map easily to my GSLists. It could work, maybe, but I'm not sure how yet.
Alternatively, I can use the launcher's mechanism to drawing, which doesn't use a special widget. This is being implemented in a branch for videofe.
Currently I've just written draw_icon(), which needs a dbGetEntry(page,idx). This requires a paging variable to be kept as we move through the list of videos. I could just keep a global offset and then map that to the idx that defines the icon on the display table.
I keep going back to pigtk-icontable. It really should work for this. But it's a complete rewrite of how the db is handled.
How should we use pigtk-icontable for this.
- dbLoad() builds array of GtkIconCell entries
- The JSON data is stored in entry->data
- GSList iconWindow is a sliding window on the larger GSList.
- Used to tell GtkIconTable widget what to display.
- Initialize to first entry of primary list.
- Length must never be less than 1 page of data.
- videofe manages display with calls to gtk_icontable_set() with new head for iconWindow.
- Initialize: gtk_icontable_set(iconWindow)
- videofe manages
- Current page
- Current row
- Current offset
- Never use gtk_icontable_page() functions - manage this in videofe directly.
- Use _next_cell, _prev_cell, _next_row, _prev_row
- Moving out of page with _next_cell resets iconWindow, manually sets display to first col/last row (moves window by 1 row)
- Moving out of page with _prev_cell resets iconWindow, manually sets display to last col/last row (moves window by 1 row)
- Page request moves to start of next or prev page boundary in iconWindow and activates row 1/col 1 in display.
- Movies
- cell title is movie title
- TV
- cell title is episode title
- Keyboard navigation
- Search
- "/" enables search
- Text is entered in pigtk-textline below pigtk-icontable.
- Navigation doesn't change till search disabled.
- ENTER disables search and moves to first match, by row boundary.
This is a start. It's going to take a complete rewrite of db.c, I think, but it will be worth it.
Also available in: Atom
PDF