Channel deletion did not work in CLI mode, because
we were only saving the OPML file, and did not
remove the channel from the database. This patch
fixes it by calling delete() on the channel object.
Thanks to Markus Golser (elmargol) for testing
the CLI mode and bringing this to my attention.
When downloading files, make sure that the server sends
the correct content-range response header for the request.
If not, truncate the file and start from the beginning.
"Auto download new episodes when gPodder is minimized" and "Start gPodder minimized"
options now work when gPodder is minimized to task list rather than tray icon.
When syncing to iPod if an epsode has been partially played making
the unplayed blue dot disappear, then the status is now maintained
by not marking as unplayed if the bookmark_time > 0.
When syncing to ipod, played episodes are marked as
played in gPodder and optionally deleted from new option
ipod_delete_played_from_db.
Checkbox added for this new option.
Allow users to install a menu item for running the
development version (Git checkout) and a simple
GUI updater for calling "git pull", so interested
users can easily set up the development version.
To install, run:
make install-git-menuitem
To remove the menu item again:
make remove-git-menuitem
A better approach to sizing the additional columns of
the gPodderEpisodeDialog, so that more of the data is
displayed while still leaving enough space for the
episode and podcast titles.
The episodes that are queued to sync are now ordered
by the pubDate attribute, so that MP3 Players (like
the Sansa Fuze) sort podcasts in the correct order.
Some podcasts such as NPR's Science Friday podcast do
break up a single episode in several parts, which has
led to parts playing in reverse order.
Thanks to Abraham D Smith for the bug report and an
initial patch to solve this issue.
Use the configured proxy server settings if available for
adding a ProxyHandler to the feedcache download request.
This makes feed updates work over HTTP and FTP proxy servers
configured in the preferences dialog.
Based on a patch by Carlo Mandelli.
The database was not committed after episodes have been
deleted or files transferred to a portable device.
This patch adds a db.commit() call after both scenarios.
Thanks to Peter Cherriman for the bug report.
Do not display a "no new episodes" dialog, but show
it in the update progress bar and/or tray icon tooltip.
This allows for a more pleasant user experience :)
Also fix a problem with the update progress bar not
going away after an update when the window is minimized.
Do not expand the progress column, so we have more
space for displaying the episode name.
Only allow the "Remove from list" context menu item
when the selection is finished, failed or cancelled.
Clean up the gPodder tray icon module and remove
unncessary stuff that has become obsolete.
Handle the displaying of download status from
within the gPodder main window and push all download
notifications to the tray icon object for display.
Cancelled and failed downloads should have their
partial download files removed when gPodder is
closed, while all other (non-finished) files should
be paused to be resumed in the next session.
For some running download tasks, some actions in the
context menu of the downloads list do not make sense
given a specific status. We disable these actions.
This allows our UI to directly monitor the status
of all running DownloadTask objects by checking the
truth value of the status_changed attribute and
updating the UI for all relevant episodes.
This lets us get rid of global state and also makes the
code more readable and less interdependent, and allows
us to more easily refactor code in the future.
Obviously, this still breaks some things that need
re-thinking - these parts have been marked with FIXMEs.
In the DownloadStatusManager, use symbolic names
from the DownloadTask class, so as to not duplicate
code and to always pick the right icon, even when
the status IDs in the DownloadTask change.
We want to get rid of gPodderLib in the end, so move
the utility function out of gPodderLib and correct
its uses accordingly. Also add a unittest for it.
This is still a work-in-progress, and many things
have been broken by introducing it, but the new
code is easier to understand and maintain, and
should also prove performance-enhancing on Maemo.
Last but not least, when it's done, it will fix
these bugs: 242, 361 (http://bugs.gpodder.org)
The previous wording was "Copy episodes to device",
but this does not really reflect what the menu item
really does (it may also delete episodes).
Thanks to Benjamin Elbers for reporting this bug.
Make sure to always decode non-unicode strings in
these functions, so to not get an UnicodeDecodeError
when trying to decode/encode strings to/from unicode.
Thanks to Andy Owen for reporting this bug.
Add doctests for the username/password from URL
function and raise a ValueError when the input
data is invalid (wrong type or format - see below).
Had a look at RFC1738 (Section 3.1) how username
and password are specified in URLs. According to
that RFC, "@", ":" and "/" have to be encoded in
the username and password field.
Add doctests for the find_mount_point() utility method
and make it more robust while finding shortcomings of
the current implementation by unexpected behaviour that
has been checked with the doctest and mock objects.
Note the unittest requirements (minimock + coverage) in
the README file and rm the ".coverage" file on "make clean".
On at least Mac OS X, this bug could happen as a result of
a race condition. We can avoid this by checking if the
tree model is already set, and if not, just ignore it.
Thanks to neric27 for reporting this bug in our bug tracker.