Commit Graph

884 Commits

Author SHA1 Message Date
Bart De Vries 319c579ba0 Fix mMedia nullptr dereference in VLC backend metadata call
CCBUG: 470263
2023-06-18 16:35:29 +02:00
Bart De Vries 8b3603eb56 More safeguards for getFeed and getEntry calls 2023-06-18 16:31:42 +02:00
Bart De Vries b529bfc3ca Fix segfault when trying to remove a non-subscribed podcast
BUG: 471107
2023-06-18 15:12:59 +02:00
Bart De Vries 21952c67e9 Make grace time configurable for marking episodes as played
BUG: 468687
2023-06-09 11:11:42 +00:00
Bart De Vries 0c54ab7edf Refactor to use QNetworkInformation instead of SolidExtras for Qt6
SolidExtras will still be used for the Qt5 version for the time being.
This refactoring makes it trivial to rip out SolidExtras once the jump
to Qt6-only will be made.
2023-06-02 19:11:10 +02:00
Bart De Vries eac74ecbbb [KMediaSession] Only send MRPIS2 positionChanged signal on seek
Stop spamming the DBus with positionChanged signals if playback is
progressing at the nominal playback rate.  This brings the
implementation in line with the MPRIS2 player spec.  The previous
implementation was causing android battery drain issues with KDEConnect
constantly updating the position (and player details) on the notification
widget.
This implementation will still send the current playback position every
10 seconds to ensure that clients that don't implement the standard
properly or did not receive previous messages, will still get regularly
updated.
This also fixes correct signaling of playback rate changes over DBus.
2023-06-01 10:42:58 +02:00
Bart De Vries caff8da25f Expand FeedListPage PlaceholderMessage with helpful actions 2023-05-25 18:47:46 +02:00
Bart De Vries cbf2888754 Also update fullscreen image if chapter image in HeaderBar changes
BUG: 470194
2023-05-25 18:37:39 +02:00
Harry Kaimenas 39f215c897 Add adjustable seek times
Make seek times adjustable. Expose seek time under Playback Settings.
Set min time allowed in seconds to 1 and max time in seconds to 300.

FEATURE: 468686
2023-05-11 07:26:31 +00:00
Bart De Vries f69366f6fd Load custom icons through fallbackSearchPaths
BUG: 469567
2023-05-10 14:30:43 +02:00
Bart De Vries 1115f2b686 Update i18n to add context to FeedListPage 2023-04-28 14:13:08 +02:00
Bart De Vries 6865c8c57e Add actionName for SettingsActions (preparation for kf6) 2023-04-26 16:26:46 +02:00
Bart De Vries e6052dbbba Also handle opening the settings dialog through pushPage() 2023-04-26 16:23:35 +02:00
Bart De Vries 188c1d08e4 Use MenuItem for search field selection in GlobalSearchField 2023-04-26 10:29:27 +02:00
Bart De Vries cee5ed71fa Small refactorings to prepare for qt6 2023-04-26 10:24:15 +02:00
Bart De Vries e20509f621 Fix kf6 globaldrawer loading issue 2023-04-25 22:10:06 +02:00
Bart De Vries ef627c047e Remove custom contextDrawer which is no longer used 2023-04-25 14:34:01 +02:00
Bart De Vries 27f4d6145b Prepare for KF6 change in Page actions 2023-04-25 12:58:31 +02:00
Bart De Vries ba1cefd5fc Use breeze style on android
The font issues should be solved in qqc2-breeze-style 5.27.4, which is
now used by binary factory.
2023-04-25 12:10:10 +02:00
Bart De Vries 5026b25352 Revert back to MenuItem
Up to now, RadioButton and CheckButton were added to Menus explicitly
because MenuItem would not use the correct delegate (i.e. CheckButton
instead of RadioButton for a selection group).  Since this has been
fixed in qqc2-desktop-style, we can use the proper component again.
2023-04-25 10:51:32 +02:00
Bart De Vries 8a9dc0f22f Also delete partially downloaded played episodes on startup
Previously only fully downloaded episodes that had been played
were deleted on startup.
2023-04-24 14:19:43 +02:00
Bart De Vries 8e04263469 Add missing icons for Android 2023-03-23 19:01:22 +01:00
Bart De Vries db234722cb Add implementation for favorites
BUG: 459886
2023-03-23 15:45:06 +00:00
Bart De Vries 4d41fc96a3 Fix member array of model not being cleared on refresh 2023-03-21 19:56:32 +01:00
Bart De Vries 97e66aa587 Replace i18n by i18nc in EntryPage 2023-03-21 16:18:25 +01:00
Bart De Vries 0bfd0b919e Make Kasts use the system proxy settings
BUG: 467490
2023-03-19 08:53:57 +00:00
Bart De Vries 3935987705 Re-enable Material style on Android
Breeze style seems to have significant font issues on some Android
devices.
2023-03-16 21:02:33 +01:00
Bart De Vries 02179c72be Add missing document-save icon to android build 2023-03-16 13:40:56 +01:00
Bart De Vries ffbc064908 Re-enable glyph cache workaround for android 2023-03-16 13:40:56 +01:00
Bart De Vries 45e50e40fb Fix bug with empty feed causing nullptr dereference
If an empty URL was entered (i.e. only whitespace) then that would be
accepted and added to the database as temporary entry to be loaded and
checked later.  However, sqlite will convert this to a NULL entry.  This
would lead to Kasts not being able to retrieve that feed from the DB,
and hence not being able to create a proper object.  This would then
lead to a nullptr dereference down the line.
Note that this is a corner case: other invalid URLs are spotted
correctly and do not cause the application to crash.

BUG: 467394
2023-03-15 15:10:47 +01:00
Bart De Vries 56b30203eb Remove "new" status when starting playback of an episode
Before the introduction of streaming, the "status" would be removed when
an episode was downloaded or marked as played, which made sense.  With
the introduction of streaming it makes sense to also remove the "new"
status when (streaming) playback starts.  At that point in time the
episode should indeed no longer considered to be "new".
2023-03-15 12:52:24 +01:00
Bart De Vries 03d090fd92 Add check for the existence of entry before using entry.title 2023-03-14 16:23:34 +01:00
Bart De Vries bc658bcbe2 Android style changes
- Remove qtquickcontrols2.conf
- Use glyph cache workaround only on non-Android
2023-03-14 12:08:30 +01:00
Bart De Vries e45dd71c83 Switch to breeze style on android 2023-03-13 14:10:55 +01:00
Bart De Vries 1d28cdfed5 Prepare for KF6 2023-03-01 10:28:23 +01:00
Bart De Vries 841c43fb09 Remove unneeded import of QtQuick.Dialogs 2023-02-28 16:13:41 +01:00
Bart De Vries 757b88a84d Scroll to item that's opened from GlobalSearchPopup 2023-02-28 16:00:37 +01:00
Bart De Vries 25a22d7bdc Fix filter message being shown for unsubscribed feeds 2023-02-28 15:41:47 +01:00
Bart De Vries c5f4fd23fc Set database to WAL mode on startup
Using WAL mode avoids having to lock the database for certain
transactions.  Therefore, deadlocks between read/writes from different
threads should not happen anymore.  These were rare, but happened
sometimes on slower hardware or slow storage devices.

BUG: 465110
2023-02-28 14:50:21 +01:00
Bart De Vries 6e998d608c Use FolderDialog for non-flatpak builds
Flatpaks have a problem with FolderDialog from labs: it never returns a
path.  Therefore Kasts was - up to now - using FileDialog from QtQuick1.
However, this was causing problems on Android and Windows.  Now we only
use QtQuick1 FileDialog for flatpak and FolderDialog everywhere else.

CCBUG: 458331
2023-02-28 14:09:10 +01:00
Tobias Fella 8207b6af08 Update Tobias' mail address 2023-02-27 19:18:46 +01:00
Bart De Vries 8f6de91577 Allow tray icon type to be set (dark, light, colorful) 2023-02-27 14:39:24 +00:00
Bart De Vries 7dcf3c52e2 Fix directly jumping to chapter on a non-playing track 2023-02-27 15:04:01 +01:00
Bart De Vries deaf7ebbb5 Add separators to ListViews and clean up ErrorList 2023-02-27 14:43:45 +01:00
Bart De Vries a95c32d447 Fix streaming icon loading 2023-02-27 14:12:12 +01:00
Bart De Vries eedfc28f8f Handle stream redirects through qt rather than libVLC/gstreamer
libVLC has a hardcoded maximum number of redirects. Several podcasts
need more than this number.  Therefore we resolve the final url through
QNetworkReply and send the final url to the audio player.
2023-02-23 18:37:52 +01:00
Bart De Vries 585378b86c Improve image and content parsing from feed 2023-02-21 10:20:45 +01:00
Bart De Vries e6fee85f4e Solve issues with playback signals firing while changing tracks 2023-02-20 11:34:49 +01:00
Bart De Vries cbf586d518 Safeguard against entry not being defined on delegates
This can happen when the episode delegates are being recycled
by ListView through reuseItems.
2023-02-20 10:45:39 +01:00
Bart De Vries 23395e683e Fix globaldrawer RTL behaviour 2023-02-19 19:36:00 +01:00
Bart De Vries e5e046e412 Implement episode search functionality
Add search capabilities to the main window toolbar and the episode lists.

BUG: 459983
2023-02-17 21:14:57 +00:00
Bart De Vries 780e63c2f2 [KMediaSession] Allow app and desktop entry name to be set in constructor 2023-02-16 13:32:52 +01:00
Bart De Vries 71eb79979a Fix user-agent
There was a semicolon in the user agent string which seems to cause
problems on certain servers.

Closes #37
2023-02-15 14:49:54 +01:00
Bart De Vries 0ecb7a3ec0 Add back separator in between episode delegates 2023-02-14 13:34:39 +01:00
Bart De Vries 49bec856b4 Add streaming action to entry context menus 2023-02-11 21:03:12 +01:00
Bart De Vries 40c3a5138c Ensure that currentPage is set on first run 2023-02-10 22:19:49 +01:00
Volker Krause c0410506d1 Replace QSystemTrayIcon with a empty stub on Android
Should hopefully fix the Android builds on binary factory.
2023-02-10 17:21:25 +00:00
Bart De Vries 3f1859e14b Rename main window id to kastsMainWindow instead of root 2023-02-10 15:28:53 +01:00
Bart De Vries 04f44bc078 Simplify saving the current Page 2023-02-10 15:17:36 +01:00
Bart De Vries 97062cad24 Port away from DelegateRecycler 2023-02-09 22:03:07 +01:00
Bart De Vries 082e3d4ce3 Implement systray icon, menu and settings.
BUG: 462470
2023-02-03 21:48:22 +01:00
Bart De Vries bbc8562100 Implement custom playback rate selection
Also refactor playbackrate dialog and store values in settings

Solves #12
2023-02-03 21:30:46 +01:00
Bart De Vries 8ad0365a4a Use vertical volume slider on mobile
This is possible by removing the hack that was causing trouble with the
vertical orientation.
2023-02-02 16:09:04 +01:00
Bart De Vries bc4dc313b7 Display high DPI art when using scaling 2023-02-02 11:30:22 +01:00
Bart De Vries fa8e2da414 Port from deprecated iconName to icon.name 2023-02-01 22:53:44 +01:00
Bart De Vries 72646f5075 Put fullscreen image viewer in Loader 2023-02-01 11:30:36 +01:00
Heiko Becker a973ce547d cmake: Add an option for the gstreamer audio backend
Otherwise it'll become a so-called automagic dependency with no control
over including support for it or not, other than having it installed on
the system or not.
For LIBVLC CMAKE_DISABLE_FIND_PACKAGE can be used, but for
pkg_check_modules no such things exits and we need an explicit option.
2023-01-30 22:26:55 +01:00
Bart De Vries a753b6918a Fix showing chapters on mobile playercontrols 2023-01-25 18:16:04 +01:00
Bart De Vries a014f28ead Also add clickable timestamps to mobile player controls 2023-01-25 10:52:17 +01:00
Bart De Vries cdec053375 Make timestamps in entry contents clickable, like chapter marks
BUG: 446358
2023-01-24 15:22:40 +01:00
Bart De Vries 5678fc0490 Make things clickable (showing a PointingHandCursor) 2023-01-24 10:56:38 +01:00
Bart De Vries 9963132d60 Only set QT_ENABLE_GLYPH_CACHE_WORKAROUND on arm
BUG: 463383
2023-01-24 10:16:20 +01:00
Bart De Vries 48c1cffd4e [KMediaSession] Put compilation of example player behind switch 2023-01-23 20:55:57 +01:00
Bart De Vries d869358ff5 Header bar redesign
New scalable header bar design which should scale nicely with height
and width changes by collapsing several elements (putting them into
popups and overflow menus).  The height scaling of the header is
similar to Elisa, where it will use the regular background color when
fully collapsed.
Titles are clickable and will open the relevant pages.  Images are also
clickable and that will open a fullscreen view.
This new design also exposes volume controls both for desktop and mobile
layout.

BUG: 457846
CCBUG: 458331
2023-01-23 13:29:21 +01:00
Bart De Vries db41655c5f Solve issue of filter InlineMessages not showing up 2023-01-20 16:56:28 +01:00
Bart De Vries 9ead23ff59 Port c++ to qt6 2023-01-20 14:23:30 +00:00
Bart De Vries acd1a55aae Fix minor issue with network connect check in AudioManager
AudioManager was reporting no connectivity in case the networkstatus was
reported as being "Unknown".  We might as well attempt to stream in that
case.  If there is no connectivity, it will fail anyway with another
useful error message.
2023-01-19 20:43:27 +01:00
Bart De Vries b7c68996eb Revert disabling video on gstreamer
This was causing audio-only tracks to make gstreamer hang indefinitely.
2023-01-18 21:23:41 +01:00
Bart De Vries 50e88a11c2 Limit feed description to two lines until the "show more" button is pressed
BUG: 461216
2023-01-17 14:08:33 +01:00
Bart De Vries 285d3e2c62 Fix playback speed mobile dialog 2023-01-17 11:50:09 +01:00
Bart De Vries e06a90743e [KMediaSession] disable video output for now 2023-01-16 16:29:09 +01:00
Bart De Vries eb07e67f70 [KMediaSession] Implement dynamic audio backend framework
KMediaSession is an audio player library that has an API which is close
to QMediaPlayer and which allows to use --- and dynamically switch
between --- different audio backends. At this moment there is
implementation for libVLC, gstreamer and QtMultimedia. Only QtMultimedia
is a hard dependency in order to at least have one functional backend on
all platforms; all other dependencies are optional.

KMediaSession has out-of-the-box, built-in MPRIS2 support, sleep inhibit,
and basic metadata support.

BUG: 462358

Closes #35
2023-01-16 15:36:54 +01:00
Bart De Vries 09bae67fbd [Android] Fix gradle plugin version issue with qt >= 5.15.8 2023-01-16 14:13:58 +01:00
Bart De Vries 787b373339 Use pragma once everywhere 2023-01-04 10:27:22 +01:00
Bart De Vries 402f8b565e Workaround for exact slider handle positioning 2023-01-01 15:10:19 +01:00
Bart De Vries b0b0550ce2 Add missing icon to CMakeLists.txt for inclusion in android 2022-12-27 19:00:29 +01:00
Devin Lin 93cdffd68c Use drawer height 2022-12-18 20:37:30 +01:00
Devin Lin d08dddd163 Use higher sidebar listview threshold 2022-12-18 20:37:30 +01:00
Devin Lin 2131186cb6 Fix footer and use list view for small heights 2022-12-18 20:37:30 +01:00
Devin Lin c035bcad92 Use display property 2022-12-18 20:37:30 +01:00
Devin Lin 7afc43f833 NavigationTabButton based sidebar 2022-12-18 20:37:30 +01:00
Devin Lin c30bfbb5a5 Use pageStack.popHiddenPages
This uses a new property in Kirigami to simplify the code.
2022-12-18 10:24:15 +00:00
Bart De Vries 44c54b664a Pass null as entry to chaptermodel if there is no current track
It previously passed undefined, but that will not be interpreted as
nullptr by the underlying C++ model.
2022-12-14 16:51:55 +01:00
Bart De Vries 906730c516 Fix missing checkbox state
The checkbox state for alwaysShowFeedTitles was not set based on the
current settings.
2022-12-14 14:55:32 +01:00
Bart De Vries 624e0b147f Prefer portrait orientation when using square window
BUG: 460859
2022-12-13 16:48:49 +01:00
Bart De Vries 19a6e382db Disable subscribe button when feed has been added
This disables the subscribe button once a feed has been added, i.e. when
the button has been clicked.
Additionally, when clicking on an already subscribed feed on the
discover page will now open the full details including the episode list.

BUG: 458560
2022-12-13 14:21:30 +01:00
Bart De Vries 16178b6441 Make chapter dialog larger 2022-12-13 13:04:51 +01:00
Bart De Vries 6217dbcc86 Add and use Chapter class 2022-12-12 20:16:12 +00:00
Tobias Fella 6a6962e2d3 Load chapter images from tags and show in user interface 2022-12-12 20:16:12 +00:00
Tobias Fella b273d5ffa9 Improve ChapterModel's gammarayability 2022-12-12 20:16:12 +00:00
Bart De Vries a07deae71d Fix RTL layout bugs
BUG: 461230
2022-12-12 19:54:09 +00:00
Bart De Vries 3898471f08 Move Error log from dialog overlay to dedicated settings page 2022-12-12 20:50:21 +01:00
Devin Lin 8e1b278539 Use more appropriate info icon 2022-12-12 10:31:12 +01:00
Devin Lin eda19fa0f8 Fix bracket 2022-11-30 10:38:17 -05:00
Bart De Vries 67040530fd Save settings to file whenever any setting changes 2022-11-30 15:49:50 +01:00
Bart De Vries 06ea1b36ea Fix typo in sync settings form 2022-11-30 14:34:08 +01:00
Devin Lin e98c6dfdef Fix separator behaviour 2022-11-30 14:34:08 +01:00
Devin Lin ee10727f6a Port synchronization settings page 2022-11-30 14:34:08 +01:00
Devin Lin 4db4664db3 Use trailing components in form 2022-11-30 14:34:08 +01:00
Devin Lin 6c8d0fa404 Port settings to MobileForm components 2022-11-30 14:34:08 +01:00
Bart De Vries 0e6cac16c9 Enable chapters also when streaming 2022-11-29 22:09:37 +01:00
Tobias Fella 5ec65d1b72 Cleanup aboutdata registration 2022-11-27 00:44:08 +01:00
Devin Lin cbd203272e Fix text in sleep dialog disregarding theming 2022-11-26 01:14:17 -05:00
Bart De Vries eb8856e45d Improve i18n messages on Queue page
BUG: 461024
2022-11-16 10:40:22 +01:00
Bart De Vries 8660ef46ea Fix appearance of streaming button on delegates and pages 2022-11-15 22:50:49 +01:00
Bart De Vries d192784e12 Improve check for existing podcasts
The feedExists method will now also take query parameters into account.

BUG: 461877
2022-11-15 19:13:24 +01:00
Bart De Vries 562c76c799 Implement streaming support
This implements support for streaming episodes rather than downloading them
first.
This introduces a new setting: prioritizeStreaming. If it's set to false
(default) then a streaming play button is only added to the EntryPage.  If
it is set to true, then the streaming play button will also appear on the
Entry delegates instead of the download button.
There is a separate setting to decide if streaming is also allowed on
metered connections.

FEATURE: 438864
2022-10-19 14:49:56 +02:00
Bart De Vries db802b6b17 Look for, and link to, Kirigami and QtSvg on all platforms
I don't know why they were historically only included for Android.  But
this fixes qt6 porting.
2022-10-06 19:07:55 +02:00
Ahmad Samir de42473d4e Use KDE_INSTALL_TARGETS_DEFAULT_ARGS
The KF_* variant is for KF repos

GIT_SILENT
2022-09-17 00:50:42 +02:00
Bart De Vries d6f60e037e Add missing icon to CMakeLists.txt 2022-09-09 10:34:58 +02:00
Devin Lin 3a6446dea5 Move page actions to bar, and consolidate podcast list and info pages 2022-09-07 19:03:07 +00:00
Devin Lin 9860c8b9e5 Only show single page at any time, and pop pages that aren't visible 2022-09-07 20:44:40 +02:00
Bart De Vries fdeb4c501a Set smaller default window size and save geometry on exit 2022-09-07 20:35:42 +02:00
Bart De Vries 5405a9d3d8 Fix for pages overlapping scrollbars in desktop view 2022-09-07 20:33:54 +02:00
Bart De Vries cbd57a6ef8 Fix pages overlapping miniplayer in mobile view with qqc2-breeze-style 2022-09-06 21:48:19 +02:00
Bart De Vries 64afd7b544 Remove collapse button from globaldrawer 2022-08-16 20:58:37 +02:00
Bart De Vries 9b97613898 Fix fallback when no image is available in id3 tag 2022-08-09 10:58:16 +02:00
Jose Flores 58032dd560 Doesn't add width to an html img without a width defined
This attempts to fix the issue described here: https://invent.kde.org/plasma-mobile/kasts/-/issues/20

There seemed to be a loop that occurs when setting an img width which causes the view to re-render which causes the window to grow which goes back to setting an img width causing an loop that keeps growing the img width and eventually crashing.

There are a few ways to fix this but I believe not setting a width on an img without a width both fixes it and behaves as expected (see context section). I'm not sure if this is a solution Kasts wants to go with but at the very least it adds more details to the issue. 

## Reproducing
The gist of that issue is that a crash occurs when you visit https://feed.zugfunk-podcast.de/podcastrss.xml, episode 53 and this is reproducible. 

I was able to get to the bottom of why that particular podcast episode crashes and can be reproduced with the following content

```html
<table style=\"width:30rem;\"><tbody><tr><td style=\"width:14rem;\">Some Text On Left </td><td><img src=\"https://invent.kde.org/plasma-mobile/kasts/-/raw/master/icons/128-apps-kasts.png\"></td></tr></tbody></table>
```

*(can repro by setting this string as a QStringLiteral in Entry.cpp, line 64 when the content is first set and then clicking on any episode)

## Context
The problem seems to be with `<img`s that don't have a width set. In those cases the code tries to set the image to the width of the component. The problem with this seems to be that this assumes that these images are on their own horizontal line and that they should take the whole width. So to repro (see content I used to repro above as an example):
* put an image tag next to some element that takes some width (like a table where there's a left column with some text and a right column in the right)
* img tag without a width

What ends up happening is that the `img width` gets updated to the size of the component width but because there's another element to the left of it, it will mean that the resulting view is bigger than the component width which causes `onWidthChanged`(`EntryPage.qml::88`) to be triggered and the `adjustedContent` function to be called again where this whole process happens again (img width is updated to component width -> rendered but it's larger than width -> causing onWidthChanged -> adjustedContent runs again -> rinse/repeat).

There are other ways to try to solve this but the three I looked at are: 
1. After `adjustedContent` is run, it should update the actual `m_content` so that the following runs can work off the last text update (this will mean that the problematic `else` wouldn't be run constantly).
    * You can do this by setting the content at the end of the function (`setContent(ret);`)
2. Checking for some reasonable width limit (if width > 10000 then width = 10000)
3. Not resizing an image without a width because we're not sure about the intention of the author 
    * in this case these were small icons for social media that shouldn't be scaled up
    * I think we shouldn't scale any images because of the same reason but the PR is conservative and just stops it in the case of a img without a width

For the PR I went with # 3 because the others led to the icons being scaled but it messed up the look of the page.

Closes #20
2022-08-08 11:10:51 +00:00
Bart De Vries ce45074c79 Fix minor typos 2022-07-14 16:46:52 +02:00
Bart De Vries c3df8d8714 Fix "database is locked" errors caused by concurrent writes 2022-07-14 15:32:58 +02:00
Bart De Vries 01cb685d54 Add option to mark custom amount of episodes as unplayed when adding new feed
FEATURE: 454553
2022-07-01 20:03:27 +00:00
Bart De Vries 67c96fdfbc [Sync] Enable pushing all local episode states to server
CCBUG: 454553
2022-07-01 20:03:27 +00:00
Bart De Vries 1043f4a63e Add app icons for windows build
Closes #26
2022-06-30 20:23:34 +00:00
Bart De Vries 5f94b4a357 Add sleep timer
FEATURE: 443400
2022-06-30 08:21:09 +00:00
Bart De Vries c5dab8131d Fix padding and icon of sync password dialog 2022-06-20 20:59:58 +02:00
Bart De Vries a239bc922f Re-enable images in sync password dialog 2022-06-20 09:56:09 +02:00
Bart De Vries 5d8c81c6e1 Make width of error list a bit wider to better see contents 2022-06-19 21:36:24 +02:00
Bart De Vries e5cf95c8d7 Change default new podcast URL into placeholderText 2022-06-18 16:27:37 +02:00
Bart De Vries 3383b6dfad [Sync] Handle multiple entries having the same enclosure url 2022-06-13 21:37:18 +02:00
Bart De Vries 6930ff71d0 Re-arrange mobile player and add extra row for toolbuttons 2022-06-12 17:22:09 +02:00
Bart De Vries c4f12227a2 Add capability to define custom gpodder server
FEATURE: 454674
2022-06-10 21:29:42 +02:00
Bart De Vries c44abc66ba Continue update of episodes even if gpodder server is unavailable 2022-06-09 12:38:00 +02:00
Bart De Vries 8ff1992d22 Port away from deprecated mainItem on ScrollablePage 2022-06-05 18:19:46 +02:00
Tobias Fella 3ae5306e56 Improve gammarayability of EntriesModel & FeedsModel
This makes both models return a reasonable value for Qt::DisplayRole,
allowing gammaray to show something in the model explorer
2022-06-04 01:37:58 +02:00
Bart De Vries 27af0d907e Add missing icons to src/CMakeLists.txt 2022-06-02 11:22:53 +02:00
Bart De Vries e62d17f9b0 Adjust time left on episodes according to current playback rate
This new feature is implemented behind a switch in the settings (default
is off).

FEATURE: 452135
2022-06-01 21:08:27 +02:00
Bart De Vries aac899a7f0 Refactor feed update routine to allow for entry, enclosure, authors and chapter updates
This commit adds a bunch of API extensions (public and private) to the
entry, enclosure, etc classes to allow runtime updates of internal data.
Additionally, the feed update routine has been adapted to find updates
in entries, enclosures, etc and pass them on to the relevant objects.

All of this functionality is put behind a new toggle exposed in the
settings (default is on).  This is useful since a full update takes
quite a bit longer on underpowered hardware, so users should be able to
switch off this potentially non-essential overhead.

BUG: 446158
2022-05-31 16:11:50 +02:00
Bart De Vries 6fb7118e34 Add action to episode details page to go to the episode list for that subscription
Solves #28
2022-05-31 11:44:50 +02:00
Bart De Vries 633f4fd0f0 Use multithreading for feed updates (using ThreadWeaver)
This contains the following changes:
- Use separate db connections for feed updates (required for
  multithreading.
- Add ThreadWeaver dependency.
- Port update job from KJob to ThreadWeaver::Job
- This should also solve the bug where the update process would hang
  on the "processEvents" call, which was intended to keep the UI
  responsive during updates.

BUG: 452585
2022-05-29 15:22:23 +02:00
Bart De Vries 2b363b6cec Add new episodes to queue in ascending chronological order
Fixes #32
2022-05-24 22:27:20 +02:00