Commit Graph

41 Commits

Author SHA1 Message Date
Bart De Vries f861f4e802 Add podcast subscription and episode play state synchronization
This implements the gpodder API from scratch.  It turned out that
libmygpo-qt has several critical bugs, and there's no response to pull
requests upstream.  So using that library was not an option.

The implementation into kasts consists of the following:
- Can sync with gpodder.net or with a nextcloud server that has the
  nextcloud-gpodder app installed.  (This app is mostly API compatible
  with gpodder.)
- Passwords are stored using qtkeychain.  If the keychain is
  unavailable it will fallback to file.
- It syncs podcast subscriptions and episode play positions, including
  marking episodes as played. Episodes that have a non-zero play
  position will be added to the queue automatically.
- It will check for a metered connection before syncing.  This is
  coupled to the allowMeteredFeedUpdates setting.
- Full synchronization can be performed either manually (from the
  settings page) or through automatic triggers: on startup and/or on
  feed refresh.
- There is an additional possibility to trigger quick upload-only syncs
  to make sure that the local changes are immediately uploaded to the
  server (if the connection allows).  This will trigger when
  subscriptions are added or removed, when the pause/play button is
  toggled or an episode is marked as played.
- This implements a few safeguards to avoid having multiple feed URLS
  pointing to the same underlying feed (e.g. http vs https).  This
  solves part of #17

Solves #13
2021-10-29 18:47:55 +02:00
Tobias Fella 6ad1818734 Create better Settings
Use the settings components from Kirigami
2021-10-29 17:04:07 +02:00
Swapnil Tripathi a141cda44a Add chapter marks 2021-09-21 20:36:54 +00:00
Bart De Vries 4b2da3533c Enable multi-selection and context menus on all lists of entries
This commit adds keyboard navigation to entry lists.
Selection of items can be done through keyboard (shift+up/down), mouse
(left, left+shift, left+ctrl) or touch (long press).
When items are selected, contextual actions will show up on
the page (useful for touch screens), or, alternatively, a context menu
with the same actions can be opened through right mouse click (useful
for desktop).
If a single entry is selected, then only the relevant actions will be
shown (e.g. only "Mark as Played" if the entry has not been played yet).

Additionally, (database) transactions for the actions have been
optimized.  This was necessary to make sure that actions on large
selections of entries finish within an acceptable time.  E.g. actions on
a list of 1000 items should finish within a few seconds (on all but
underpowered hardware).

BUG: 441764
2021-09-19 21:37:10 +02:00
Bart De Vries 59c4894639 Remove EpisodeSwipePage; only showing all episodes for now
The "New Episodes" tab is to be replaced by a filter view button and
dialog to be able to filter several episode statuses.  I.e. new,
played / not played, etc.
2021-09-18 19:07:15 +02:00
Swapnil Tripathi 95ee97aefe Expanded the model with more roles and designed frontend. 2021-07-07 12:57:45 +02:00
Swapnil Tripathi 77715f94b9 Rename Playback.qml -> PlaybackRateDialog.qml 2021-07-06 20:52:18 +00:00
Swapnil Tripathi fa65447874 Added slowing of playback rate and using OverlaySheet(desktop) and OverlayDrawer(mobile). 2021-07-06 20:52:18 +00:00
Bart De Vries d0bc5b2b26 Add capability to check whether network connection is metered
For now this only works with NetworkManager.  The related settings are
greyed out on systems not using NetworkManager.

Some details of the implementation:
- Implement settings in the settings menu to enable/disable feed
  updates, episode downloads and/ or image downloads on metered
  connections.  If the option(s) is disabled, an overlay dialog is shown
  with options to "not allow", "allow once", or "allow always".
- If the network is down, no attempt is made to download images and the
  fallback image will be used until the network is up again.
  This also solves an issue where the application hangs when the network
  is down and feed images have not been cached yet.
- Next to this, part of the cachedImage implementation in Entry and Feed
  has been refactored to re-use code as part of the image() method in
  Fetcher.
- In case something unexpected happens, an error will be logged.
2021-07-03 20:20:27 +02:00
Bart De Vries d7debaaf30 Rework Download list page
This page now has section headers, and show Downloading, Partially
Downloaded and Downloaded enclosures with relevant actions for each.
2021-06-24 11:49:24 +02:00
Bart De Vries e86111ed55 Move error list to settings page (as overlaysheet) 2021-06-22 16:26:43 +02:00
Tobias Fella 6a95dfe4ed Try fixing logo not visible in AboutPage on android 2021-06-08 00:48:34 +02:00
Swapnil Tripathi 44bb387b54 Added Header Bar 2021-06-02 20:00:18 +00:00
Tobias Fella 9cbfde6d7c Add more license information 2021-05-12 13:43:49 +02:00
Bart De Vries f2efa50b82 Fix build after logo.png was removed 2021-05-05 13:50:35 +02:00
Bart De Vries f0106aceef Introduce ImageWithFallback 2021-04-29 22:48:43 +02:00
Bart De Vries 76c30dff87 Fix issues identified in review by Tobias Fella 2021-04-27 09:43:58 +02:00
Bart De Vries 5a0972372b Add ErrorModel, just a placholder GUI for now 2021-04-24 23:32:10 +02:00
Bart De Vries 28e8051500 Implement update status progress indicator 2021-04-21 14:53:03 +02:00
Bart De Vries e9d20ec569 Implement Downloads page
This change includes an update to the database, adding a downloaded
column in Enclosures.
2021-04-21 14:53:03 +02:00
Bart De Vries 29d625e810 First attempt at Swipeable episode list (all, new, unread) 2021-04-21 14:53:03 +02:00
Bart De Vries 130b10aefb Add first version of EpisodeListPage 2021-04-21 14:53:03 +02:00
Bart De Vries 952dbdea5e Refactor Queue and EntryList to use a GenericEntryDelegate
Still to be done is putting the actions into the GenericEntryDelegate
itself.
2021-04-21 14:53:02 +02:00
Bart De Vries 8abbae4772 Refactor to re-usable header for list and details pages 2021-04-21 14:53:02 +02:00
Bart De Vries 48e0e509f7 Switch to using PagePool 2021-04-21 14:53:02 +02:00
Bart De Vries b9433a348a Minor adjustments 2021-04-21 14:53:02 +02:00
Bart De Vries 030bc07bb5 Remove unneeded PodcastPlayerPage and debug lines in main.cpp 2021-04-21 14:53:00 +02:00
Bart De Vries 4f11060a41 Queue is functional again 2021-04-21 14:52:33 +02:00
Bart De Vries 61d443f0e3 Finished player and beginning of queue 2021-04-21 14:52:31 +02:00
Bart De Vries 5abbd56c88 More work on playercontrols 2021-04-21 14:51:40 +02:00
Bart De Vries c9307d529d Some work 2021-04-21 14:50:22 +02:00
Tobias Fella e5837425d3
Support podcasts 2021-03-22 23:33:44 +01:00
Tobias Fella a35ccfc7d8 Improve feed refreshing 2020-07-30 19:53:28 +02:00
Tobias Fella 88eab5b96f Refactor the feed images 2020-07-20 17:20:08 +02:00
Tobias Fella 7a2a677049 Refactor qml 2020-06-03 00:11:09 +02:00
Nicolas Fella df76d92c60 Set material colors to blue
Reviewed by: tfella
2020-04-28 22:28:09 +02:00
Tobias Fella df297dd898 add FeedDetailsPage 2020-04-20 01:47:06 +02:00
Tobias Fella 08d4a56e9a move qml files 2020-03-30 22:03:05 +02:00
Tobias Fella 195b6d63ee
add timestamp, aboutpage, settingspage 2020-03-26 14:16:19 +01:00
Tobias Fella 73b986933f
add EntryPage 2020-03-04 14:00:27 +01:00
Tobias Fella 5ae34b56f7
Initial Commit 2020-02-28 23:25:08 +01:00