681 Commits

Author SHA1 Message Date
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
Bart De Vries
b884ac69bf Use embedded image in id3v2tag as fallback 2022-05-23 22:14:48 +02:00
Bart De Vries
c42f0f3a00 Show refresh actions also on mobile
This used to be covered by the bottom action buttons, but those have
been removed some time ago.  That only left a pull-down as trigger to
update the feeds, which is non-ideal since it's not explained anywhere.
2022-05-23 20:10:46 +02:00
Bart De Vries
c5e286c17a Decrease minimum window height
This is needed to ensure that the app fits the pinephone in landscape
mode
2022-05-16 12:46:33 +02:00