Feature #1149
openRewrite UI using pigtk-icontable and friends
10%
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.
Related issues
Updated by Hammel 12 days ago
- Related to Feature #522: Switch UI to something like Plex added
Updated by Hammel 10 days ago
- 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.
Updated by Hammel 10 days ago
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.
- "/" enables search
- Search
This is a start. It's going to take a complete rewrite of db.c, I think, but it will be worth it.