https://bugs.gpodder.org/show_bug.cgi?id=60



--- Comment #37 from Janne Makela <[email protected]> 2009-08-28 13:59:37 BST 
---
(In reply to comment #35)
> (In reply to comment #34)
> > Does Thomas have any suggestions about how I should go about this? Perhaps
> > break the feature addition into stages, and make small incremental patches 
> > that
> > actually get committed into the repository before continuing to the next 
> > stage?
> 
> Yep, it would be helpful if you could create small patches to implement this
> feature. This would probably also involve some refactoring in order to be
> easily implementable without too much code duplication.
> 
> We should have a short summary of what needs to be done and what the
> requirements are, and then how to best implement it (I'm not sure if a new tab
> is the best way to go, maybe a new window would be OK, too? This way, we could
> re-use the window in UIs that don't use the tabbed interface - currently only
> Fremantle, but maybe more in the future).

I didn't have quite as much free time as I originally thought, so I got a bit
delayed with this. Sorry about that.

I finally got to take a look at the code, and it seems that podcast episodes
now carry the is_played attribute. DB side should therefore be ok. So, we only
need to decide on how to filter unplayed episodes from all the other episodes,
and then how to present the results.

A new window is a good solution and is easier to handle if we later want to add
more functionality into it. The other option is of course taking the "aggregate
channel" back on the table. This latter option wouldn't require a new window,
and I would actually like it quite a lot. But if most people really have
difficulties with that concept, then new window is probably the winner here.
The downside with the new window is that menus and pop-up menus may have to be
re-implemented in that dialog as well, which results to code duplication.

I would suggest the following...

Requirements:
- "Unplayed episodes" are all episodes that don't have is_played attribute set,
and whose episode.state <> db.STATE_DELETED
- Unplayed episodes are listed grouped by channel (may change in later
versions)
- Unplayed episodes list should allow normal episode operations (Play,
Download, Delete, Save to disk, Send via bluetooth, Transfer to MP3 player,
Prohibit deletion, Episode details, Visit website)
- Any changes to the status of the episodes should be reflected on the list
immediately (if episode starts playing, it's not unplayed anymore and is
therefore removed from the list)
- This feature should work on all currently supported platforms

Implementation:
- New "Unplayed episodes" dialog is created
- "Show unplayed episodes" menu option is added in Episodes menu right after
Episode details option
- Show Unplayed episodes button is added to the tool bar before Preferences
button (anyone willing to work on the artistic side of the icon?)
- Size and look of the dialog would be something like "Find new podcasts"
dialog is now
- Channel names are not listed with the unplayed episodes
- Combo-box would allow filtering based on channel. The default is "all
channels"
(- Alternative would be a list box, where you can select invidual channels or
all of them (but that would be confusing because then the dialog would look
almost like the main window with the difference that in the main window you
can't select multiple channels from the channel tree))

Tasks:
- Create Unplayed episodes dialog (probably takes a few iterations)
- Create icon for the toolbar (are there any fitting stock icons available?)
- Add get_unplayed_episodes method into PodcastChannel object
- Write the code for the dialog
- Add button and menu to the GUI (possibly enabled only by advanced preferences
for starters?)
- Add the feature to the CLI (Is this necessary? I haven't even looked into
this yet)

Each task is separate and could be committed into the repository without
causing any difficulties for anyone.

Well, this is just my suggestion. I would like to hear more opinions on this.

-- 
Configure bugmail: https://bugs.gpodder.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are watching all bug changes.
_______________________________________________
gPodder-Bugs mailing list
[email protected]
https://lists.berlios.de/mailman/listinfo/gpodder-bugs

Reply via email to