Commit Graph

871 Commits

Author SHA1 Message Date
Bart De Vries 1afb62c314 Fix tooltips 2023-10-17 14:16:02 +02:00
Tammes Burghard cae5571a90 Move VolumeSlider into dedicated file and also use it on mobile 2023-10-03 19:31:29 +00:00
Tobias Fella f975d0f1ba Make ToolTips more consistent 2023-10-03 15:53:03 +02:00
Bart De Vries 38475c64fe More formal signal handler argument declarations
CCBUG: 475117
2023-10-02 21:42:22 +02:00
Bart De Vries 19dc371084 More formal declaration of arguments in signal handlers 2023-09-28 14:33:14 +02:00
Bart De Vries fa40d2b4c6 Fix chapter dialog and list highlighting 2023-09-28 14:26:08 +02:00
Bart De Vries 9525bf075a Use formal argument declaration on qml signal handlers 2023-09-28 13:26:31 +02:00
Bart De Vries 184b84f8fd Try to solve issue with image mipmap not applying properly 2023-09-28 13:26:12 +02:00
Bart De Vries 5efc201bd8 Use Settings module from QtCore 2023-09-28 13:25:18 +02:00
Bart De Vries a46ab103af Rework delegates to use latest kirigami(-addons) features 2023-09-28 09:27:31 +02:00
Tammes Burghard c5536938be Volume slider: add tooltip and improve wheel action
BUG: 472762
2023-09-27 16:51:16 +02:00
Tobias Fella 53f94dbae0 Port search away from BasicListItem 2023-09-27 14:00:33 +02:00
Alexey Andreyev 735a879cce Port away from BasicListItem
For ChapterListDelegate
2023-09-27 02:08:44 +03:00
Alexey Andreyev ad96d5a80f Port away from BasicListItem
For ConnectionCheckAction
2023-09-27 02:08:44 +03:00
Alexey Andreyev adc7339da7 Port away from BasicListItem
For SynchronizationSettingsPage
2023-09-27 02:08:44 +03:00
Alexey Andreyev 51fdaeaddd Port away from BasicListItem
For GlobalSearchField
2023-09-27 02:08:38 +03:00
Jack Hill d865d3b27d KF6: Port away from manually closing Kirigami.MenuDialog
This is now handled automatically by the dialog itself
2023-09-14 14:36:43 +00:00
Bart De Vries 2a58b3002e Remove all qt5-only code 2023-09-14 16:26:37 +02:00
Tobias Fella b33222cc68 Remove all QML import versions 2023-09-14 13:04:37 +00:00
Bart De Vries fbb7cda6f1 More qml/kiragami changes and fixes 2023-09-13 13:09:29 +02:00
Bart De Vries 8c06247e16 Migrate to KF6 Page actions 2023-09-13 13:09:29 +02:00
Tobias Fella b1414a18f2 Port QML to Qt6 2023-09-13 13:09:29 +02:00
Tobias Fella a0abb5019b Use AboutPage from KirigamiAddons.FormCard 2023-09-06 10:21:33 +00:00
Carl Schwan 19d0129d01
Adapt to MobileForm -> FormCard renaming
This also simplify some code
2023-08-09 17:07:19 +02:00
Carl Schwan 507e502ebe
settings: Port to new KirigamiAddons.CategorizedSettings 2023-08-09 16:32:59 +02:00
Bart De Vries 376bb6db29 Revert to non-proxied QueueModel
The proxy model was causing issues with item dragging.
The model would reset after each swapped item.  This meant that items
could only be swapped one position at a time.
2023-07-27 16:50:59 +02:00
Bart De Vries af6e581bee Fix and prevent nullptr dereferences in AudioManager
This would happen when the current track is changed to "no track".
Signals from the backend KMediaSession would still trigger duration()
calls which would try to dereference the pointer to the current track
entry.
2023-07-27 13:33:41 +02:00
Bart De Vries c3ca038af7 Implement backend to allow Feed list sort and search
The current list of things to sort on (ascending and descending), includes:
- unplayed episodes
- new episodes
- favorite episodes
- title (alphabetical)
For the first three categories, the value of the sort quantity will be shown
in the upper right corner of the delegate.

BUG: 471012
CCBUG: 459885
2023-07-27 09:24:03 +00:00
Bart De Vries 5c8502718a Implement sorting for queue and episode lists
Also move filter action (menu) from the search bar back into the main toolbar.

BUG: 466855
2023-07-26 08:17:23 +00:00
Emir SARI 5a69783ffb Adopt string casings according to HIG 2023-07-25 17:06:52 +00:00
Bart De Vries cad8af469e Add missing icons for android build 2023-07-23 16:01:35 +02:00
Bart De Vries dea35cc271 Port to AlbumMaximizeComponent from kirigami-addons
Replace the custom FullScreenImage component (which was a copy of a
component used in other apps) with the new AlbumMaximizeComponent from
kirigami-addons.
2023-07-22 16:12:32 +02:00
Bart De Vries a77a312533 Give priority to image embedded in audio file if it exists 2023-07-22 14:09:03 +00:00
Emir SARI 24b8271f8b Adopt string casings according to HIG 2023-07-20 09:35:57 +00:00
Emir SARI c4cb10b7aa Adopt string casings according to HIG
This commit also improve formatting and style in some places.
2023-07-19 12:30:03 +00:00
Bart De Vries 46fc8904ec Restrict filenames to alphanumeric characters 2023-07-17 14:52:02 +02:00
Eamonn Rea dc311cac7b Use Entry title to set downloaded file name
Instead of using the MD5 hash of the enclosure download URL, we
create a filename which follows `feedname/entry_title.hash.ext`, where
feedname is a uniquefied feed title (stored in the DB), a truncated version
of the entry title, a shortened hash based on the download URL, and the
original file extension extracted from the download URL.

BUG: 457848
2023-07-17 14:52:02 +02:00
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