Commit Graph

884 Commits

Author SHA1 Message Date
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
Bart De Vries 2ceca4101b Update copyright date to 2022 2022-05-16 12:44:39 +02:00
Nicolas Fella 6df9188cdc Use include instead of forward decl for property types 2022-05-02 10:24:12 +00:00
Nicolas Fella b6d5aa6470 Fix KAboutData include 2022-05-02 10:24:12 +00:00
Nicolas Fella 4369127934 Adapt build system to Qt6 2022-05-02 10:24:12 +00:00
Bart De Vries cb9000faa5 Do not process "other" fields before checking if entry already exists 2022-04-28 11:14:05 +02:00
Nicolas Fella 0ccf773542 Use undeprecated install dirs
Using kde-dev-scripts/kf5/cmakelists_install_vars.pl
2022-04-21 00:48:05 +02:00
Nicolas Fella d98bb3cc96 Enable highdpi scaling
Otherwise everything is tiny on Windows
2022-04-02 14:57:57 +02:00
Bart De Vries bbded05933 Keep unreadEntryCount cached instead of getting it from DB everytime 2022-03-10 08:03:00 +01:00
Devin Lin 529a1ca878 Set QT_ENABLE_GLYPH_CACHE_WORKAROUND=1 if it is not set 2022-03-09 19:47:39 -05:00
Devin Lin 36d9a84bff Port to Kirigami.Dialog
This should simplify logic, and also handles scrolling nicely.
Appearance and UX-wise, everything should be the same as before with OverlaySheet.
2022-03-04 09:11:22 +00:00
Bart De Vries 4483046904 Re-enable icons for gpodder and nextcloud
Only this time we use the icons that are already part of breeze-icons
instead of rolling our own.  This avoids reuse license issues in kasts.
2022-01-27 21:25:34 +01:00
Bart De Vries 080669c283 Avoid overflow on slider bar on very long podcasts 2022-01-25 14:46:45 +01:00
Bart De Vries bd46d33863 Optimize placement of mobile player image and title for landscape mode 2021-12-17 16:56:17 +01:00
Bart De Vries 8e0b346d5f Optimize placement of info messages (take into account sync message) 2021-12-17 16:55:18 +01:00
Bart De Vries 6c51086749 Optimize placement of info and error messages 2021-12-17 16:00:50 +01:00
Bart De Vries 3aa45e555a Don't attempt to change globaldrawer properties if it's not loaded yet 2021-12-17 11:11:17 +01:00
Bart De Vries 91aa415908 Keep fetching episode actions until we get the current timestamp
Solves #23
2021-12-15 13:54:51 +01:00
Alexey Andreev 5380a431e2 Apply Kirigami Theme color for TextEdit explicitly
Since TextEdit is not a QQC2 component, just general Qt Quick one
2021-12-10 03:12:31 +03:00
Bart De Vries 1fb0e0fc45 Fix bug in addFeeds
addFeeds would stop if it encountered a url that we already had in the
database instead of continuing with the next one.  This bug was
introduced due to refactoring for sync.
2021-11-19 10:32:00 +01:00
Bart De Vries 23001c552a [sync] Check for existence of percent decoded AND encoded version of enclosure url to sync 2021-11-19 10:30:45 +01:00
Bart De Vries 9c2d7adf55 Add support for images from MRSS thumbnail tag 2021-11-15 14:10:46 +01:00
Bart De Vries eb13598dd4 Small fix of minimized player getting covered by 1 pixel 2021-11-05 11:51:26 +01:00
Bart De Vries 8c8a3a91d6 Fix Overlays not being visible when virtual keyboard pops up simultaneously 2021-11-05 10:25:44 +01:00
Bart De Vries ff556fd632 Fix pedantic compiler warning 2021-11-05 09:03:07 +01:00
Devin Lin aa01c04869 Fix flicking not working in mobile footer 2021-11-04 21:18:21 -04:00
Bart De Vries 214394aae7 Fix kasts icon on android
Also fix a minor compiler warning (mentioned during android build)

BUG: 444892
2021-11-04 15:38:09 +01:00
Bart De Vries e6e0563498 Fix android craft packaging 2021-11-04 10:41:11 +01:00
Bart De Vries a27fed1dc5 Fix android build (SolidExtras rename to KastsSolidExtras) 2021-11-03 23:38:28 +01:00
Tobias Fella 53249607db Also rename solidextras library 2021-11-03 20:56:26 +01:00
Bart De Vries 6d3951dcd6 Fix very weird msvc compiler issue 2021-11-03 19:51:38 +01:00
Bart De Vries d0acc10c2b Fix kasts crashing on Android 2021-11-03 16:52:35 +01:00
Bart De Vries 76b242d150 Fix setting play position when syncing 2021-11-03 09:39:06 +01:00
Yuri Chornoivan 8f5b3c0aa6 Add i18n() 2021-10-30 22:49:32 +03:00
Bart De Vries 5882781a9f Reverse subscriptions and episodes in main menu
This is probably a more useful order.  It's also consistent with the new
mobile bottom toolbar.
2021-10-30 19:46:30 +02:00
Bart De Vries ad5213176e Fix bottom margin for notifications now that floating buttons are gone 2021-10-30 19:45:53 +02:00
Devin Lin e16c40d57c Add mobile bottom navbar, use Titles toolbar on mobile, and add blurred image background to mobile player 2021-10-30 17:10:19 +00:00
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
Bart De Vries 0d37ee9f82 Make Chapter Marks accessible on desktop 2021-10-29 14:45:01 +00:00
Bart De Vries d4b5103c2b Add copy buttons for feed and episode download URLs
BUG: 443282
2021-10-29 14:42:45 +00:00
Bart De Vries c28739efeb Fix bug when downloading enclosure on "unknown" metered connection
Trying to download an enclosure on a connection with unknown metered
status would trigger the overlay sheet with actions.
2021-10-28 23:38:15 +02:00
Bart De Vries 5b15f4c7b9 Solve issue with FolderDialog
FolderDialog has issues retrieving the selected folder if that folder
has been selected through xdg-desktop-portal (i.e. flatpaks).  Reverting
to FileDialog from QtQuick.Dialogs.

BUG: 443956
2021-10-28 13:12:04 +02:00
Bart De Vries 2455e543fe Fix fetch-on-startup logic
The fetch-on-startup would only happen if the metered state was
explicitly set to "No".  Hence, when the state is "Unknown" (which will
happen in most cases) no fetching would be done on startup.

The new logic will check for the metered state not being equal to "Yes".
2021-10-27 10:20:44 +02:00
Bart De Vries 3ff1333195 Fix uninitialized member variable m_sizeOnDisk 2021-10-26 23:14:44 +02:00
Bart De Vries 4f83ac8701 Solve memory leak when fetching feeds 2021-10-26 22:32:58 +02:00
Bart De Vries 710f44d2ef Fix parsing chapter marks containing a decimal point 2021-10-25 11:50:40 +02:00
Tobias Fella 3d5a00d2d7 Rename solidextras plugin to prevent name clashes when also using
itinerary
2021-10-24 16:11:47 +02:00
Nicolas Fella dd5b79faea Fix taglib includes
FindTaglib reports <prefix>/include/taglib/ as include path, so we must
not prefix the headers with taglib/
2021-10-15 00:36:03 +02:00
Bart De Vries ca595c985c Make parsing of chapter timestamps more robust
Solves #19
2021-10-13 20:42:24 +02:00
Bart De Vries 9f9bcb639e Remove leftover canCheckNetworkStatus calls 2021-10-11 12:26:17 +02:00
Tobias Fella fc6969e018 Implement network status checking on android
Replaces the whole thing with the solidextras implementation found in
itinerary
2021-10-09 19:32:28 +00:00
Bart De Vries 52f90157ca Make sure chapter marks show up in the correct order 2021-10-07 13:28:47 +02:00
Bart De Vries b77c3b46af Don't make text selectable on mobile since it messes up scrolling 2021-10-07 12:07:14 +02:00
Bart De Vries 0afdb0d50c Add ZLIB optional dependency for Android CI 2021-10-07 11:42:56 +02:00
Tobias Fella f6a8f40d9a Try fixing CI 2021-10-07 11:42:56 +02:00
Bart De Vries de954f644a Fix issues with cached images being accessed while the download is still running 2021-10-06 19:16:06 +00:00
Tobias Fella 044dbf5f23 Implement loading chapters from mpeg files 2021-10-06 21:08:12 +02:00
Nicolas Fella 4c73f1c71c Remove broken windows header
It's not needed and breaks the build
2021-10-04 22:41:49 +02:00
Tobias Fella 67d10d32bf Link against sqlite on android
Tricks androiddeployqt into including the libraries
2021-10-04 19:12:31 +00:00
Bart De Vries 748c9e3116 Fix compiler warnings 2021-10-03 20:49:42 +02:00
Bart De Vries fdbe348f12 Make Entry and Feed details text selectable 2021-10-02 20:39:15 +02:00
Bart De Vries 157e1219bb Fix 'Allow Once' feed update after it was broken by refactoring 2021-10-02 20:32:36 +02:00
Bart De Vries c061a01c59 Wrap feed update routine in KJob and make it more efficient
The feed update routine which is now spread over several methods
in Fetcher, is now put into a self-contained KJob.  This will allow
to re-use this job later on in e.g. gpodder sync, where it's
required to update feeds before syncing episode statuses.

This also makes the feed update abortable.

Lastly, but most importantly, the feed update procedure has been
optimized to minimize database transactions, resulting in a dramatic
speed-up.  This is especially true for importing new feeds, which
will now be at least 5x faster on slow hardware.
2021-10-01 22:36:42 +02:00
Bart De Vries e4ee0f19fd Do not create feed object if it's not in the database
Also clear errors related to a feed that's being removed from the database.
2021-10-01 15:46:17 +02:00
Albert Astals Cid c0dc8cee6a Add "dummy" contexts to two i18np
gettext complained that there's another string with the same text but
not plural and that is bad, so add a dummy context to make gettext happy

xgettext: warning: msgid 'Remove Podcast' is used without plural and with plural.
             ./qml/FeedListDelegate.qml:279: Here is the occurrence without plural.
             ./qml/FeedListPage.qml:249: Here is the occurrence with plural.
          Workaround: If the msgid is a sentence, change the wording of the sentence; otherwise, use contexts for disambiguation.
xgettext: warning: msgid 'Delete Download' is used without plural and with plural.
             ./qml/GenericEntryDelegate.qml:294: Here is the occurrence without plural.
             ./qml/GenericEntryListView.qml:207: Here is the occurrence with plural.
          Workaround: If the msgid is a sentence, change the wording of the sentence; otherwise, use contexts for disambiguation.
2021-09-30 22:43:49 +02:00
Bart De Vries f0f4da8aa7 Improve contextual actions for the FeedList and EntryLists
This adds "select all", "deselect all" to the page contextual actions
and adds "show podcast info" to the OverlayPage opened by clicking on
the overflow menu button on the cards.
This also adds correct use of plurals for the actions if more than one
item has been selected.
2021-09-29 08:50:00 +02:00
Felipe Kinoshita e1c80bff3d
Don't use contextProperty to make KAboutData available on QML
Context properties always takes in a QVariant, which means that
whenever you access the property it is re-evaluated because in
between each access the property may be changed as
setContextProperty() can be used at any moment in time.
2021-09-28 17:46:01 -03:00
Bart De Vries b4d67ffeb4 Solve width binding loop and messed up height for UpdateNotification 2021-09-28 14:42:45 +02:00
Bart De Vries 4a20959522 Switch from DelegateRecycler to reuseItems (except for queue) 2021-09-27 16:48:12 +02:00
Bart De Vries 78986c5da7 Make FeedList sorting update when the feed details (e.g. title) have been updated 2021-09-25 09:58:36 +02:00
Bart De Vries 074dad647b Fix deleting multiple feeds 2021-09-24 16:10:19 +02:00
Bart De Vries 8900186990 Fix crash on multi-selection download/delete action
Solves #16
2021-09-23 13:17:53 +02:00
Bart De Vries bd1cf2c5f0 Add FeedListPage sorting
The feeds will be sorted by (1) descending number of unread/unplayed
entries and (2) alphabetically by name.  The current item and current
selection are maintained after re-sorting when the number of unread
entries has changed.
2021-09-21 22:44:12 +02:00
Bart De Vries c84d8ed47f Add selection, navigation and context menus to FeedListPage 2021-09-21 22:44:12 +02:00
Swapnil Tripathi a141cda44a Add chapter marks 2021-09-21 20:36:54 +00:00
Bart De Vries 4c2aa9e3ab Port away from deprecated Kirigami.Units.fontMetrics 2021-09-21 14:09:05 +02:00
Bart De Vries 3f0dadd901 Fix minor bugs related to selection/context menus 2021-09-20 09:53:17 +02: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 6121f6622f Remove deprecated usages of devicePixelRatio 2021-09-18 21:35:52 +02:00
Bart De Vries 91e43c4013 Add tools-report-bug icon for android
This icon is automatically added to the AboutPage, but is missing on
android if not added explicitly.
2021-09-18 19:46:21 +02:00
Bart De Vries 86d1476687 Implement Filter actions in GUI 2021-09-18 19:07:15 +02:00
Bart De Vries 531c6a2483 Implement EpisodeProxyModel to filter based on status 2021-09-18 19:07:15 +02:00
Bart De Vries 6d5831a715 Add roles to EpisodeModel in preparation for filtering 2021-09-18 19:07:15 +02:00
Bart De Vries bb8cd2807c Refactor EpisodeModel and DownloadModel to make them more performant 2021-09-18 19:07:15 +02:00
Bart De Vries 117f314d0d Move models to dedicated directory 2021-09-18 19:07:15 +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
Bart De Vries c7676d51a4 Revert "Fix overflow-menu icon color on FeedListDelegate"
This reverts commit 5c8a6ea6a4.
It turns out that the issue is caused by qqc2-desktop-style and
qqc2-breeze-style.  The problem should be solved upstream.  And, anyway,
this workaround didn't completely solve the issue either.
2021-09-18 19:05:12 +02:00
Bart De Vries 5c8a6ea6a4 Fix overflow-menu icon color on FeedListDelegate 2021-09-16 12:01:54 +02:00
Devin Lin a567be01be Move mobile handles to header 2021-09-11 16:19:31 +00:00
Bart De Vries 938a517f09 Fix subtle problem with pushing EntryPages and EntryListPages to pageStack 2021-09-09 11:25:49 +02:00
Bart De Vries 2e6bd7bdcc Change titles of Kirigami pages such that toolbar icons don't move around
CCBUG: 441764
2021-09-09 11:11:40 +02:00
Bart De Vries 6413085c12 Small fix: start custom roles from Qt::UserRole in podcastsearchmodel.h 2021-09-08 20:31:17 +02:00
Bart De Vries 0b33c62a10 Select first enclosure if entry has multiple enclosure entries
Kasts can currently only handle one enclosure per entry.  In case an
entry/item has multiple enclosures, it's probably safe to assume that the
first one is the one that's preferred by the author.

CCBUG: 440389
2021-07-30 14:20:51 +02:00
Bart De Vries 6eb13167f2 Fix bug with feeds with multiple enclosures per entry
BUG: 440389
2021-07-30 08:44:43 +02:00
Yuri Chornoivan 9384f3c073 Fix minor typo 2021-07-27 12:53:21 +03:00
Bart De Vries a15e2dbe5d Make storage path configurable
This adds a new setting to the Settings page.
Existing enclosures and images will be moved to the new location
(first copied, then deleted in the original location).  If any of
the copy actions fail, the operation is aborted and the original
path is restored.
The StorageMoveJob is set up in such a way that it's easy to add other
files or subfolders in the future.

Solves #15
2021-07-24 20:43:11 +02:00
Bart De Vries 85798ebd8c Run clang-format 2021-07-21 21:25:13 +02:00
Swapnil Tripathi d0dbdad7fa Error handling for PodcastSearchModel 2021-07-21 07:14:06 +00:00
Bart De Vries df07359c07 Change subscription page icon to bookmarks 2021-07-15 13:46:46 +02:00
Bart De Vries b9b82d783f Also add title argument to Error elsewhere 2021-07-14 22:32:14 +02:00
Bart De Vries a5b021cffd Add extra optional title argument to Error constructor 2021-07-14 20:31:02 +02:00
Bart De Vries 35cfb14e1f Also show left duration on EntryDelegates if it's been set in the player 2021-07-14 20:31:02 +02:00
Bart De Vries 9621919310 Use correct version number in user agent header 2021-07-13 16:27:27 +02:00
Bart De Vries 041b1edd11 Switch to ImageWithFallback to fix android not showing image as icon
Also fix one minor whitespace issue.
2021-07-12 19:09:42 +02:00
Swapnil Tripathi 17f235f535 Keyboard Navigation 2021-07-11 11:01:46 +00:00
Bart De Vries 7358960ac7 Fix i18n() and inconsistent buttons 2021-07-11 10:27:31 +02:00
Swapnil Tripathi 77b1656bf7 Added ToolTips. 2021-07-11 08:25:49 +00:00
Bart De Vries bdfa9f0733 Small adaptation to make FeedDetailsPage more generic 2021-07-08 15:30:44 +02:00
Bart De Vries 4b2f4afd37 Remove setting to remove items from queue after being marked as played
This action will be done by default.
2021-07-07 13:39:56 +02:00
Swapnil Tripathi 5f25a8607b Reusing FeedDetailsPage to show metadata for podcasts discovery 2021-07-07 12:57:45 +02:00
Swapnil Tripathi 95ee97aefe Expanded the model with more roles and designed frontend. 2021-07-07 12:57:45 +02:00
Tobias Fella fa1c308c2d Add model for searching for podcasts 2021-07-07 12:57:45 +02:00
Swapnil Tripathi 653f41c94e Remove icon from the PlaybackRateDialog. 2021-07-06 20:52:18 +00:00
Swapnil Tripathi 02523e2feb Remove bold text tags. 2021-07-06 20:52:18 +00:00
Swapnil Tripathi 09df795e05 License fix. 2021-07-06 20:52:18 +00:00
Swapnil Tripathi 15e46de814 Minor typo 2021-07-06 20:52:18 +00:00
Swapnil Tripathi 74879a0a58 Fix highlighting of the playbackRate corresponding to the current rate. 2021-07-06 20:52:18 +00:00
Swapnil Tripathi 77715f94b9 Rename Playback.qml -> PlaybackRateDialog.qml 2021-07-06 20:52:18 +00:00
Tobias Fella 2aeb06b5c4 Apply 1 suggestion(s) to 1 file(s) 2021-07-06 20:52:18 +00:00
Swapnil Tripathi 37a7ec6992 Enable clipping 2021-07-06 20:52:18 +00:00
Swapnil Tripathi 32260be05e Remove ScrollView 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 8cd1237540 Mark another TODO as solved: make a setting for removing played episodes from queue 2021-07-06 22:36:51 +02:00
Bart De Vries 30f694ba09 Add some more settings regarding marking episodes as played 2021-07-06 22:34:26 +02:00
Bart De Vries fe2a977a6b Add setting to automatically delete episodes when they're marked as played
The 3 possibilities are:
0 = Disabled      = Do not delete episodes
1 = Immediately   = Delete immediately
2 = OnNextStartup = Delete on next startup (default)

Fixes #14
2021-07-06 22:34:26 +02:00
Bart De Vries 143ff3a2ed Fix AddFeedSheet battling for focus on startup 2021-07-06 20:33:25 +02:00
Bart De Vries 73b2cf565c Fix recursive loop when last track finishes playing 2021-07-06 19:21:57 +02:00
Bart De Vries f9287e94f8 Fix Accessible onPressed actions 2021-07-06 18:29:26 +02:00
Bart De Vries a5a24fb08c Use transactions to do database migration
This was already implemented for 2 -> 3.
Now also for 1 -> 2.

Additionally, remove unnecessary whitespace in debug statement
2021-07-06 18:29:22 +02:00
Bart De Vries 104cafbd41 Focus text field when adding new podcast + make return key work 2021-07-06 18:29:05 +02:00
Bart De Vries 374a7ef116 Set default page in case lastOpenedPage/getPage cannot be found 2021-07-06 17:04:03 +02:00
Bart De Vries 9731795e62 Solve deadlock in startup between ErrorLogModel and AudioManager 2021-07-06 17:03:25 +02:00
Bart De Vries d2cee8a066 Add error overlay for Invalid Media
This implements a TODO mentioned in the sources.
2021-07-04 16:52:05 +02:00
Bart De Vries 1b3df48ce8 Solve TODO: unload entry from audio player when it's removed from the queue 2021-07-04 16:51:47 +02: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 acef37fa58 Fix database migration by avoiding DROP COLUMN AND ADD COLUMN 2021-06-29 20:52:40 +02:00
Bart De Vries 3a24ea6f65 Avoid RENAME COLUMN to make db migration more robust
RENAME COLUMN was only introduced in sqlite 3.25.  So it's probably
better to avoid it for the time being to increase compatibility with
older versions.
2021-06-28 08:04:41 +02:00
Bart De Vries e0154355aa Fix drawer handle positioning for settings and about Pages 2021-06-27 10:44:43 +02:00
Swapnil Tripathi 17e8e75993 Highlighting the current menu item in the GlobalDrawer. 2021-06-27 03:57:49 +05:30
Bart De Vries 265b3109cb Make EntryPage close when that entry is deleted from the DownloadListPage 2021-06-24 17:13:04 +02:00
Bart De Vries bcafb26c8c Add filesize units to download progress
This adds the currently downloaded size and the total enclosure size to
the entry delegate.
2021-06-24 17:12:07 +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 f197e6ab02 Implement Enclosure::PartiallyDownloaded status
Still to be done:
- Update Download Page to show partial downloads.
- Connect signals to Download Page to update whenever an enclosure
  changes status.  This is broken by this commit because
  downloadCountChanged has been removed.
2021-06-23 23:04:18 +02:00
Bart De Vries 03081edc66 Improve estimate of enclosure download size, also when resuming 2021-06-23 22:29:15 +02:00
Bart De Vries 69a87b1afc Add icons needed for OverlaySheet on android 2021-06-23 17:17:28 +02:00
Bart De Vries e86111ed55 Move error list to settings page (as overlaysheet) 2021-06-22 16:26:43 +02:00
Bart De Vries a331366d41 Replace Audio prepare hack by nicer, asynchronous solution
The main bits of this implementation are:
- Start a new track in paused state.  We don't care about the actual
  media state or player state that QMediaPlayer is reporting.  We will
  deal with that when the audio actually starts playing.
- If a player position needs to be restored, we set d->m_pendingSeek to
  the position that needs to be seeked.  We don't actually seek because
  we have no idea what state the player is in yet.
- On the positionChanged signal of QMP, and if the media is buffered, we
  check if there is pendingSeek value set which is set to a different
  value than the current player position.  If so, we call
  d->m_player.setPosition().  If we have arrived at the correct
  position, then we reset d->m_pendingSeek to -1.
- In the position(), duration() and seek() methods, we return sensible
  values, even QMP is not.  So, we report the duration from the
  enclosure, the position from d->m_pendingSeek, and let seek() change
  the value of d->m_PendingSeek (if it's not -1) to the new seek
  position.
- When there's a pending seek, we set the notifyInterval to shorter
  interval to reduce the startup audio glitch as much as possible.  We
  then reset it to the default of 1000 msec.

This was tested on linux and android.
2021-06-20 19:14:07 +02:00
Bart De Vries 49977adc38 Refactor Error implementation and add Error::Type
- This refactoring also includes a cleanup of a lot of header includes to
  avoid circular dependencies.
- The error message will now be shown below the info message.
- Add database migration (for Errors)
2021-06-19 17:09:44 +02:00
Bart De Vries bd738610bc Small fixes in androidlogging.h 2021-06-19 15:35:56 +02:00
Bart De Vries 14868bf04e Apply clang-format 2021-06-19 13:29:47 +02:00
Bart De Vries 4d6d8ae940 Add basic logging capabilities on android.
This implements debug logging which can be checked through logcat.
2021-06-19 00:26:24 +02:00
Bart De Vries 0c7e5ca63b Do not try to read enclosure length on entries that don't have an enclosure 2021-06-16 09:25:52 +02:00
Bart De Vries 048f294b2b Fix inhibit suspend on Gnome
The inhibit dbus call to gnome sessionmanager expects flags as input.
Currently the flags are set to 4, which will "Inhibit the session being
marked as idle". This is insufficient to prevent the device from
suspending while playing.
We should also add 8 = "Inhibit suspending the session or computer".
Hence, the updated flags to 12.

This change was tested on phosh/phoc and it properly prevents the
system from suspending.  The flags = 12 settings is also what gnome
music players like Lollypop are using (as checked through the gnome
sessionmanager dbus interface).
2021-06-15 13:03:41 +02:00
Bart De Vries 26d3755922 Use debug categories in fetcher.cpp for partial downloads 2021-06-11 20:30:15 +02:00
Bart De Vries 1f35c0a25c Don't clean up partial downloads, such that they can be resumed 2021-06-11 16:59:03 +02:00
Bart De Vries a24fb7d731 Get correct enclosure file size as soon as possible when download starts 2021-06-11 16:59:03 +02:00
Bart De Vries d24b7ed7d0 Write downloads to disk and enable download resume
This enables the download method in Fetcher to resume in case a partial
download is already saved to disk.
For full implementation of download resumes, more changes are required,
because the current application will automatically clean up files that
don't match the expected size at startup.
2021-06-11 16:59:03 +02:00
Bart De Vries 6d57a0586b Explicitly set logo for about page to logo.sv resource file 2021-06-08 15:44:44 +02:00
Bart De Vries 0b8c1856c9 Mark episode as unread when adding to queue 2021-06-08 14:19:50 +02:00
Bart De Vries 4187e05310 Remove filter for <li> and <ul> tags in entry content 2021-06-08 13:33:09 +02:00
Tobias Fella 6a95dfe4ed Try fixing logo not visible in AboutPage on android 2021-06-08 00:48:34 +02:00
Swapnil Tripathi 20c10d9380 Small Fix. 2021-06-08 02:52:11 +05:30
Bart De Vries 2ed33aa750 Add debugging logging categories 2021-06-05 22:03:22 +02:00
Bart De Vries 8437a44a7b Remove obsolete timeString method 2021-06-05 11:59:57 +02:00
Bart De Vries e311a1d1d4 Avoid resizing or re-coloring globaldrawer on mobile 2021-06-04 14:02:28 +02:00
Bart De Vries 05859cdca0 Add missing icon for android build 2021-06-04 09:05:44 +02:00
Swapnil Tripathi 0fd2fca1f1 Updated minimum height and width 2021-06-04 01:30:28 +05:30
Tobias Fella 3f1f3045ec Port away from KDeclarative 2021-06-03 16:23:06 +02:00
Swapnil Tripathi 2145c58333 Added minimum width and height 2021-06-03 15:13:38 +05:30
Swapnil Tripathi 5dc33049de Fix heading text elide. 2021-06-02 21:28:59 +00:00
Bart De Vries a565f6eec1 Disable text wrapping in HeaderBar to avoid nasty binding loops 2021-06-02 22:21:39 +02:00
Mathis Brüchert f49ace47e3 change the sidebar to the normal page background color for contrast reasons 2021-06-02 22:13:54 +02:00
Bart De Vries 974a078e5f Set separate bottom spacing for update and error overlay messages 2021-06-02 22:05:24 +02:00
Bart De Vries 121b4b4d08 Make HeaderBar fixed height instead of a fraction of the window height 2021-06-02 22:05:24 +02:00
Swapnil Tripathi 46568fa131 Set title to a max of 2 lines. 2021-06-02 20:00:18 +00:00
Swapnil Tripathi 617a85925c Added duration labels, fixed header background color and other small fixes. 2021-06-02 20:00:18 +00:00
Swapnil Tripathi 4f02d8676f Desktop mode updated 2021-06-02 20:00:18 +00:00
Swapnil Tripathi 44bb387b54 Added Header Bar 2021-06-02 20:00:18 +00:00
Bart De Vries 7a19e8f288 Fix fallback image if dark theme is used
When using a dark theme, the RSS icon will appear in (nearly) white on a
white background.  Let's fix the icon colour to black to always get the
same fallback image.
2021-06-02 20:49:15 +02:00
Bart De Vries b48270a637 Replace grayed out episode colours by "played" label on delegate 2021-06-01 20:27:43 +02:00
Bart De Vries 9c2d6ecdc0 Align copyright headers with other files in Kasts 2021-06-01 16:47:21 +02:00
Bart De Vries e81b62839a Fix app-crashing binding loop in FeedListPage
The binding loop occured whenever the vertical scrollbar appears or
disappears.  The GUI then gets stuck between solutions: one with a
certain amount of columns and another with one column less or more.  It
then keeps alternating between these two until the app freezes the
machine and eventually crashes.
The fix is to calculate the number of columns based on the total width
of the Page itself, rather than the width of the content.  By
subtracting enough space for the scrollbar, the cards on the page will
now rescale smoothly and properly.
2021-06-01 16:22:03 +02:00
Bart De Vries 4ecbc0597a Switch to introspection dbus interface and add licenses 2021-05-31 20:50:00 +02:00
Bart De Vries 8c620e63ac Remove unnecessary QtMultimedia imports 2021-05-31 11:42:11 +02:00
Bart De Vries eec54d3095 Move feed update action to header on desktop
The refresh buttons currently show up as main action buttons at the
bottom on desktop since they are placed inside SwipeViews/tabs.  Move
these actions to the hierarchical parent ScrollablePages so they end up
in the header bar.
2021-05-31 11:32:46 +02:00
Swapnil Tripathi ea9074ac22 Update EpisodeListPage.qml 2021-05-30 18:25:21 +00:00
Bart De Vries 9d78b5b488 Run clang-format 2021-05-28 23:16:35 +02:00
Bart De Vries 3983e09634 Use qCDebug in AudioManager 2021-05-28 22:55:18 +02:00
Bart De Vries 28b461da07 Consistently capitalize i18n strings 2021-05-28 22:16:14 +02:00
Bart De Vries 9ae93dd064 Properly implement MPRIS Raise() method 2021-05-28 21:51:51 +02:00
Bart De Vries b776dd22cb Contextualize singleShots 2021-05-28 16:54:00 +02:00
Bart De Vries 858601aec3 Change from old style connects to function pointers 2021-05-28 16:49:55 +02:00
Bart De Vries 4d4859a698 Replace AudioManager::timeString by KFormat::formatDuration 2021-05-28 16:42:12 +02:00
Bart De Vries 13b59adb29 Move author into i18nc call 2021-05-28 16:21:47 +02:00
Bart De Vries d45eebf43a Do not push Settings and About to layers stack 2021-05-27 23:29:14 +02:00
Bart De Vries df6a15b160 Remove unused m_audio private member in queuemodel.h 2021-05-27 22:57:08 +02:00
Bart De Vries 370b023a3b Change CMake targets from Qt5::x to Qt::x 2021-05-27 22:46:24 +02:00
Yuri Chornoivan 46916ac2d9 Add i18n() 2021-05-27 18:42:52 +03:00
Mathis Brüchert afce79ce87 make the sidebar less wide 2021-05-27 17:00:56 +02:00
Bart De Vries e78965051c Revert the dependence on wideScreen to avoid app-crashing binding loops 2021-05-27 16:56:15 +02:00
Bart De Vries 04833efa7f Make sure that globaldrawer doesn't disappear on resize 2021-05-25 21:57:01 +02:00
Mathis Brüchert 76fbfa35a4 add header in sidebar 2021-05-25 21:25:14 +02:00
Bart De Vries 99c1424327 Add setting to continue playback after end of current track 2021-05-23 21:35:38 +02:00
Bart De Vries 086e0ef664 Make sure that globalDrawer is not open on mobile on startup 2021-05-23 21:34:37 +02:00
Mathis Brüchert 4342794ac4 Make GlobalDrawer be a sidebar on desktop 2021-05-23 14:07:34 +00:00
Swapnil Tripathi 21e9d0b9a7 Fix segfault when removing feeds with currently playing entries 2021-05-22 09:05:33 +00:00
Bart De Vries 2eb1092f46 Make AudioManager owned and instantiated by c++ 2021-05-20 21:42:13 +02:00
Bart De Vries eab5d08acd Fix database storage bug in ErrorLogModel 2021-05-15 20:31:32 +02:00
Bart De Vries 4e34e76ee0 Replace "feed" by "podcast" 2021-05-12 20:57:56 +02:00
Bart De Vries f1961abe4c Add Accessibility information to ListDelegates 2021-05-12 20:48:54 +02:00
Bart De Vries cce0afd3a0 Add setting to show title overlay on FeedListDelegate images 2021-05-12 20:46:48 +02:00
Bart De Vries 0fc8cca3ef Add missing brackets to if statement body 2021-05-12 13:53:22 +02:00
Tobias Fella 9cbfde6d7c Add more license information 2021-05-12 13:43:49 +02:00
Anubhav Choudhary 79659c99f0 [cli] Added functionality to add feed through command line 2021-05-12 13:25:25 +02:00
Tobias Fella 4b32d7699a Set style for windows 2021-05-12 13:02:55 +02:00
Tobias Fella 55e13ab059 Fix height on resized images 2021-05-12 01:28:41 +02:00
Tobias Fella 6cf133d1d6 Replace "Feed" with "Podcast" in user-visible strings
Should be more understandable
2021-05-11 13:12:38 +02:00
Tobias Fella 3d2d935307 Update description 2021-05-11 12:58:19 +02:00
Bart De Vries dbd108ac44 Make PlayerControls buttons scale properly
Also reworked some of the spacings and alignments of items on
PlayerControls to better make use of the available space and look
consistent across themes/styles (e.g. Material).
2021-05-10 15:32:58 +02:00
Bart De Vries 687c4ec7d0 Solve anchor issue with InlineMessage 2021-05-08 21:09:21 +02:00
Bart De Vries 33b3685413 Visual alignment of elements and whitespace corrections 2021-05-08 19:09:28 +02:00
Bart De Vries a7bac204ad Implement InlineMessage displaying download/update errors 2021-05-08 18:54:29 +02:00
Bart De Vries 506a419aff Update text on FeedDetailsPage to apply to podcasts rather than RSS feeds 2021-05-08 16:24:15 +02:00
Bart De Vries 53cba484fb Only show subtitle in header if it's not empty 2021-05-08 16:20:06 +02:00
Bart De Vries 9c83ee08e8 Show BusyIndicator on newly added feeds until they have finished updating 2021-05-08 16:13:28 +02:00
Bart De Vries 3f4eedb8df Enable setting for automatic feed refreshing on startup 2021-05-07 22:19:14 +02:00
Bart De Vries 236c579bef Enable setting for automatic download of new episodes 2021-05-07 22:19:02 +02:00
Bart De Vries d224eb1b24 Add header to QueuePage with remaining episodes and time 2021-05-07 15:33:39 +02:00
Bart De Vries 1461c7e86c Remove instance() method from AudioManager
AudioManager is currently owned by qml, so it's highly confusing to have
this routine, since it would give a pointer to another instance than the
one owned by qml.
2021-05-07 15:28:14 +02:00
Bart De Vries cfae4a9fa9 Defer resetting the new flag on feeds until everything's been processed
Resetting the flag immediately can lead to situations where all entries
of a new feed are marked as new if the initial feed import gets
interrupted somehow.  E.g. when the user quits the application while
doing an initial import.
2021-05-07 10:26:58 +02:00
Bart De Vries 372f91f4fb Fix mistake: loadPageWithProperties should have been loadPage 2021-05-05 21:56:48 +02:00
Bart De Vries d4d8daa73d Make sure that initialPage is not triggered on every globaldrawer action 2021-05-05 16:58:43 +02:00
Bart De Vries ce360f5ff8 Correct fillMode setting in PlayerControls 2021-05-05 16:57:35 +02:00
Bart De Vries 7e29417db7 Add property to ImageWithFallback to handle image fillMode 2021-05-05 15:56:55 +02:00
Bart De Vries 51b007ce95 Remove settings from Alligator which are not used anymore in Kasts 2021-05-05 15:06:38 +02:00
Bart De Vries 97c3fc6e4d Use ImageWithFallback also in MinimizedPlayerControls and PlayerControls
This leverages re-use of code and simplifies having to define fallbacks
everywhere images are displayed.  It also gets rid of the dependency of
logo.png (which became problematic after the alligator logo was removed
from this repo).
2021-05-05 14:06:33 +02:00
Bart De Vries 8e3a688ddf Don't mark any episodes as new when adding new feeds
Tobias was right; marking one (or more) episodes as "new" on a new feed
doesn't make a lot of sense.  The latest episode from some podcast feeds
can be very old.  Besides, it's quite annoying having a lot of episodes
queued automatically...
2021-05-05 14:04:47 +02:00
Bart De Vries f2efa50b82 Fix build after logo.png was removed 2021-05-05 13:50:35 +02:00
Bart De Vries 1c44e717ae Renaming alligator to kasts everywhere 2021-05-03 22:31:45 +02:00
Bart De Vries dd5e10f973 Fix whitespace and inconsistencies in action text 2021-05-03 16:00:05 +02:00
Bart De Vries 0846dd9d9b Disable DBus as dependency for Android 2021-05-03 12:59:06 +02:00
Bart De Vries fb1516281e Avoid double "Add to queue" actions on EntryPage
Instead of showing "add to queue" as main action and left action, the main
action will show "delete download", leaving "add to queue" as left
action.
This does mean that "delete download" can be main action or right
action, but this is nevertheless an improvement for now...
2021-05-02 15:03:44 +02:00
Bart De Vries 34c5e5309c Implement timeString method to create HH:mm:ss strings from qint64
This method is now used in all places where a HH:mm:ss string is
required.
2021-05-02 09:42:49 +02:00
Bart De Vries 173b86b85d Get rid of downloadStatusChanged in Enclosure
Instead change the signature on statusChanged so it can pass on all
required information instead of needing two signals with separate
signatures.
2021-05-02 09:05:26 +02:00
Bart De Vries c9af45f2ce Change from qmlRegisterSingletonType to qmlRegisterSingletonInstance 2021-05-02 09:04:19 +02:00
Bart De Vries 1b1654d1f4 Apply clang-format 2021-05-01 21:35:37 +02:00
Bart De Vries e774e09f48 Fix missing pre-compiler directives for android in powermanagementinterface 2021-05-01 21:21:09 +02:00
Bart De Vries d1618943f5 Update based on review by Tobias Fella 2021-05-01 21:09:07 +02:00
Bart De Vries 4aa2f14eb7 Apply 50 suggestion(s) to 19 file(s) 2021-05-01 18:59:08 +00:00
Bart De Vries 5a9aa35748 Generate dbus sleep inhbit interfaces from XML 2021-04-30 23:12:22 +02:00
Bart De Vries 6edbd91f18 Set setPreventSleep in play() and pause()
Making it toggle based on the playerState did not work properly because
the stream is toggling between pause and play several times in the
prepareAudioStream method.
2021-04-30 21:45:11 +02:00
Bart De Vries cbf0d9c622 Comment out some qDebug() statements 2021-04-30 19:13:43 +02:00
Bart De Vries 2e777630bc Remove asynchronous loading of Loader in ImageWithFallback 2021-04-30 14:47:13 +02:00
Bart De Vries 8ce5ee0e88 Add dialog-close to icons for Android 2021-04-30 14:46:48 +02:00
Bart De Vries ead73ac2fe Safeguard against QMediaPlayer::InvalidMedia
In case of the InvalidMedia status, skip to next track and delete the
invalid enclosure.
2021-04-30 11:57:39 +02:00
Bart De Vries 3439d1c34b Add progress loader symbols to loading images and refreshing feeds 2021-04-29 22:48:43 +02:00
Bart De Vries b2568e390b Finish ImageWithFallback and use cachedImage everywhere 2021-04-29 22:48:43 +02:00
Bart De Vries c35f057a19 Add cachedImage properties to Entry and Feed
This property returns the path to the cached image if it's been
downloaded, or return "" if it's not been downloaded yet, or "no-image"
in case the image property does not contain a URL to an image.
2021-04-29 22:48:43 +02:00
Bart De Vries 7e5206a61c Make ImageWithFallback load images dynamically 2021-04-29 22:48:43 +02:00
Bart De Vries f0106aceef Introduce ImageWithFallback 2021-04-29 22:48:43 +02:00
Bart De Vries f91dfda504 Use native onClicked in FeedListDelegate 2021-04-29 22:48:43 +02:00
Bart De Vries 16a5cfbcf9 Add OverlaySheet with actions on FeedList 2021-04-29 22:48:43 +02:00
Bart De Vries 1ebbafc87f Work on getting feedList to look like CardsGridView
Next up, add actions somehow.
2021-04-29 22:48:43 +02:00
Bart De Vries cfea2e9ad1 Add close button to AddFeed OverlaySheet 2021-04-29 22:48:43 +02:00
Bart De Vries 184ba72208 Safeguard against downloaded enclosures of 0 size 2021-04-29 22:19:34 +02:00
Bart De Vries 9b7d943a89 Add actions to be able to remove non-podcast entries from queue 2021-04-29 11:32:16 +02:00
Bart De Vries 36ad248e55 Do some additional checks on entry before loading in AudioManager 2021-04-29 11:28:59 +02:00
Bart De Vries 943b66207b Fix automatic resizing of articles; re-instate custom font sizes 2021-04-27 22:08:19 +02:00
Bart De Vries 9ebc6ecb7e Fix wonky behaviour of FooterBar when resizing and PlayerControls are open 2021-04-27 21:46:43 +02:00
Bart De Vries 02e92f9a8f Remove numberNewEpisodes from settings
Also clean up the unused allowStreaming setting
2021-04-27 20:58:01 +02:00
Bart De Vries 6938b331c3 Move toggleRemainingTime to general settings group 2021-04-27 20:48:51 +02:00
Bart De Vries 4d526e89c3 Fix incorrect text on actions on EntryPage 2021-04-27 11:21:23 +02:00
Bart De Vries 64ba96fa32 Remove irrelevant commented out line 2021-04-27 10:54:18 +02:00
Bart De Vries 49d7897e97 Rename showRemainingTime to toggleRemainingTime 2021-04-27 10:16:38 +02:00
Bart De Vries f26c1d5854 Add Bart De Vries as author in AboutData 2021-04-27 10:00:17 +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 c37ee7c7dd Apply 17 suggestion(s) to 7 file(s) 2021-04-27 07:31:26 +00:00
Bart De Vries f2c6c3fae2 Avoid race condition when adding feed
When adding a feed and simultaneously starting a feed update, a race
condition could happen where the feed update would catch up with the
feed adding, and start adding and marking old episodes as new before
the original addFeed method would reach them.
2021-04-26 16:58:22 +02:00
Bart De Vries 0d275b8400 Don't show clear error button when there are no errors
Also add the icon to the icons to be packed for android.
2021-04-26 10:57:55 +02:00
Bart De Vries aa5dd6bdbf Minor fixes for the "Refresh all feeds" actions 2021-04-26 08:05:06 +02:00
Bart De Vries 7d21f5fbe7 Finish basic ErrorListPage implementation 2021-04-25 14:34:14 +02:00
Bart De Vries 3653aa4687 More work on the ErrorListPage delegate 2021-04-25 09:54:15 +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 51db7ea1cf Only use custom gst-pipeline on linux
GStreamer is not used as QMediaPlayer backend on other platforms, so
audio will not start with a custom gst-pipeline on Android and Windows.
Still needs a solution to get rid of the horrible pitch change on
Android and Windows, though.
2021-04-23 10:55:59 +02:00
Bart De Vries e2d59a69b0 Move audio positioning hack into a separate method
This allows the hack to be re-used in the play() method.  Apparently on
some systems the stream becomes unresponsive again after pausing.  So
probably it's required to ensure that the stream is fully seekable and
buffered before restarting playback.
2021-04-22 16:48:13 +02:00
Bart De Vries 28d6f7f525 Fix compiler warnings 2021-04-22 11:00:17 +02:00
Bart De Vries a50c8bf001 Add capability to monitor ongoing downloads 2021-04-21 23:09:19 +02:00
Bart De Vries 8c32389b65 Add rounded corners to image on PlayerControls 2021-04-21 22:20:58 +02:00
Bart De Vries fe66490c8f Remove settings from SettingsPage which are not yet fully implemented 2021-04-21 20:43:18 +02:00
Bart De Vries 6c7a271970 Use custom gst-pipeline to avoid pitch changes when audio is sped up 2021-04-21 20:25:01 +02:00
Bart De Vries cbc9f11999 Remove redundant mousearea 2021-04-21 15:41:06 +02:00
Bart De Vries 5a28e48be0 Solve problem with padding in PlayerControls
Kirigami.Page is always adding padding around the content items.  This
gives visual artifacts with the swipepage on the player controls.  Part
of the previous page was still visible because the width of the
swipepage entries is less than the width of the full Kirigami.Page that
they are part of.
2021-04-21 15:27:42 +02:00
Bart De Vries 73c333cf61 Add possibility to delete feed from entrylistpage 2021-04-21 14:53:03 +02:00
Bart De Vries 20b767711a Add rounding to images in genericentrydelegate
Also remove the unused rounding in the feedlistdelegate
2021-04-21 14:53:03 +02:00
Bart De Vries 2b5597cbd6 Redesign feedlistpage and feedlistdelegate 2021-04-21 14:53:03 +02:00
Bart De Vries 3870338e65 Add sourceSize to images 2021-04-21 14:53:03 +02:00
Bart De Vries d949a357ef Center countlabel in update notification 2021-04-21 14:53:03 +02:00