732 Commits

Author SHA1 Message Date
Fabio Bas
354f6a23e0 snake_case for variable names; reworked url resolution signals 2021-04-07 14:22:15 +01:00
Fabio Bas
91e1e5880d Fix compilation on older Qt, use Player::SongChangeRequestProcessed() signal to handle station play count 2021-04-07 14:22:15 +01:00
Fabio Bas
cd561af516 radiobrowser url handler: emit metadata for radio stations 2021-04-07 14:22:15 +01:00
Jim Broadus
3b8519fda3 internet: Move page creation to internet category class
This consolidates most of the knowledge of internet settings pages in
the internet subdirectory. The exception is the master page enumeration
in the settings dialog.
2021-04-06 14:05:00 +01:00
Jim Broadus
1de6a46e86 internet: Add InternetSettingsCategory class 2021-04-06 14:05:00 +01:00
Jim Broadus
c394d7d2dd settings: Don't connect service-specific signals to every page
Wii and notifications signals are currently connected for every settings
page. Move the signals from the base SettingsPage class into the derived
classes and connect the signals for only those objects.
2021-03-24 10:31:52 +00:00
Jim Broadus
05e450c3c3 internet/core: Move core ShowContextMenu to base class
Move CloudFileService::ShowContextMenu to the base class so that all
services can utilize the pattern established in CloudFileService.
ShowContextMenu creates the menu if it doesn't exist then calls an
overridable method to populate the content. It then calls an update
method before showing the menu.
2021-03-18 11:16:14 +00:00
Jim Broadus
5ebd6d1e6b internet/core: Move context_menu_ to base class
Every internet service class has a context_menu_ member. Moving this to
the base class will allow the consolidation of common menu functionality.
2021-03-18 11:16:14 +00:00
Fabio Bas
89e9b20df1 Use smart pointers for menus; move static vars and most private methods to an anonymous namespace 2021-03-16 11:03:00 +00:00
Fabio Bas
3ba2c811f4 Different context menu for service and stations; "add to your radio streams" action for stations; reworked server error handling 2021-03-16 11:03:00 +00:00
Fabio Bas
6a45edaa34 Removed dirty hack in InternetModel; added "radiobrowser:" url handler; rework station play callback 2021-03-16 11:03:00 +00:00
Fabio Bas
cd062f1d8b Added settings page 2021-03-16 11:03:00 +00:00
Fabio Bas
cc0cedc5bd added station art 2021-03-16 11:03:00 +00:00
Fabio Bas
3e31094227 Initial RadioBrowser support: implemented search, groups by category, top 100 2021-03-16 11:03:00 +00:00
Fabio Bas
e7768948e0 Initial radio-browser.info support 2021-03-16 11:03:00 +00:00
Jim Broadus
10bf5dc171 internet/core: Remove unused ItemDoubleClicked
ItemDoubleClicked became noop in 70429217c.
Usage of PlayBehaviour_DoubleClickAction was removed in b08172138.
2021-03-13 18:27:10 +00:00
Jim Broadus
05f513ab6f skydrive: Add rescan option
Add menu option to drop all items from the database and rescan the cloud
drive.
2021-02-27 13:14:23 +00:00
Jim Broadus
c87409c896 cloudfileservices: Refactor context menu code
Add PopulateContextMenu, called once to populate the menu items, and
UpdateContextMenu, called ever time a menu is shown, to allow
service-specific behavior.
2021-02-27 13:14:23 +00:00
Jim Broadus
b57e66dd51 cloudfileservices: Common rescan confirmation dialog
Move Google Drive's rescan confirmation dialog to CloudFileService for
reuse.
2021-02-27 13:14:23 +00:00
Jim Broadus
5767317678 onedrive: Update to use graph api
The live API was deprecated in 2018. This change implements basic
onedrive access using the MS graph API.

The URL scheme was also changed from skydrive to onedrive. This is based
on the assumption that existing playlists won't have compatible item
ids.

Known issues:
- Directories with over 200 items will be truncated.
- No mechanism for discovering changes at runtime.
- No mechanism for removing deleted items or rescanning.

Reference: https://docs.microsoft.com/en-us/onedrive/developer/rest-api/concepts/migrating-from-live-sdk?view=odsp-graph-online
2021-02-26 11:18:49 +00:00
Jim Broadus
7b5d2fd79f onedrive: Fix authentication
Discontinue use of obsolete auth endpoints. Update the name of the
settings group as well since the existing skydrive settings are no
longer useful.

Reference: https://docs.microsoft.com/en-us/onedrive/developer/rest-api/concepts/migrating-from-live-sdk
2021-02-26 11:18:49 +00:00
Jim Broadus
565110e223 onedrive: Fix json response parsing
Discontinue use of incorrect and obsolete QJsonDocument::fromBinaryData
method. Utilize common InternetService::ParseJsonReply instead.
2021-02-26 11:18:49 +00:00
Joe Robinson
bce55d0efc Fix cover art query for Subsonic-based Funkwhale servers 2021-02-26 11:16:55 +00:00
Jim Broadus
b40d9ed44b oauth: Fix redirect
Query params were not added to redirect url prior to inclusion in oauth
request. This change fixes OneDrive authentication.

Regression introduced in 8b226c2171
2021-02-21 14:18:17 +00:00
Jim Broadus
1a3828e2c1 protobuf: Fix namespace conflict
Protobuf 3.15 adds a namespace alias for "pb" that conflicts with
Clementine's. Modify Clementine to use "cpb".

Patch provided by @ahesford

Reference: 5c028d6cf4/src/google/protobuf/port.h (L44)
2021-02-21 14:17:26 +00:00
Jim Broadus
57a6fe4f20 utilities: Add common method for bug report URL generation
Move code from PodcastParser::ParseItem for reuse.

Example:
Calling Utilities::MakeBugReportUrl("New bug") returns:
https://github.com/clementine-player/Clementine/issues/new?title=New%20bug
2021-02-03 00:32:00 +00:00
Benjamin Valentin
3efa68f07d internet/soma.fm: use high quality AAC stream
Prefer the high quality 130 kbit/s AAC stream over the 'fast' 128 kbit/s
mp3 stream.
2021-01-01 18:00:59 +00:00
Matthieu Bruel
9714b0632d All changes for ClemRemote v1.0 (in one go) 2020-12-17 12:23:30 +00:00
Jim Broadus
ccba649f62 Clear cached indexes in InternetModel when rows are removed
When opening a context menu on an internet item, the selected items are stored
in the InternetModel instance. In cases when the items are removed, certain menu
options can cause a crash. A specific case is downloading a podcast when the
user has chosen to limit the number of visible episodes. The subtree for the
podcast is rebuilt after the download completes, so if a context menu was opened
during the download time, selecting the append to playlist option will attempt
to operate on bad indexes.

This fix uses the rowsAboutToBeRemoved signal to remove these stored indexes.

There are likely another rare cases where the indexes can become invalid. For
example, sibling items within a subtree may be removed, causing the stored
indexes to become incorrect or out of range.
2020-12-15 22:36:30 +00:00
Jim Broadus
fc4cb6fc7a Fix opml import crash
The opml parsing code handles cases where there are extra levels in the xml file
by copying the child to the main container. This corrupts the source instance
during the copy, which leads to corruption in the destination, and ultimately a
crash when it is later used.

To fix, do the copy in two steps, copying the child container to a temporary
location before copying to the destination.
2020-10-17 09:12:22 +01:00
John Maguire
341dc7326f Reformat all C++ 2020-09-22 14:56:06 +01:00
Jim Broadus
ad882cc999 Add static IsTypeSupported methods to playlist item classes 2020-06-23 11:06:06 +01:00
Jim Broadus
76a24a0a28 Use DbPlaylistItem base class for Jamendo and Magnatune
Moving these from LibraryPlaylistItem removes local file specific
implementations of IsLocalLibraryItem and Reload. Returning true for
IsLocalLibraryItem caused ratings to be set on unrelated library songs.
2020-06-19 11:18:32 +01:00
Jim Broadus
84099f2491 Name all threads created by Application
In Application::MoveToNewThread, name the new thread after the object being
moved. Give those objects names as well.

The thread names display in gdb with "info threads".
2020-05-27 10:22:00 +01:00
dmdmdm
7caf200efa Added CBC Podcasts 2020-05-21 02:04:08 +01:00
Jim Broadus
879dfa3d79 icecast: free backend on exit
Use a shared pointer since the model and search provider both hold pointers to
the backend object. Also removed unused accessor method.
2020-05-20 21:33:47 +01:00
Jim Broadus
83fc376b08 subsonic: Consolidate read song code 2020-05-14 11:01:22 +01:00
Jim Broadus
ddba21a46f subsonic: Move ReadSong method to SubsonicService. 2020-05-14 11:01:22 +01:00
Jim Broadus
5efcae398e subsonic: Use correct URL query params to fetch cover 2020-05-13 22:23:40 +01:00
Sophie Tauchert
ef3021dff2 Add tasks back in using ScopedTask 2020-04-12 21:03:18 +01:00
Sophie Tauchert
38a5d183c2 Cache SubsonicService in SubsonicDynamicPlaylist 2020-04-12 21:03:18 +01:00
Sophie Tauchert
69801a9e2a Print error on default dynamic playlist type 2020-04-12 21:03:18 +01:00
Sophie Tauchert
af28ad31f1 Remove boost references 2020-04-12 21:03:18 +01:00
Sophie Tauchert
665f7af929 Be more forgiving when fetching albums/songs 2020-04-12 21:03:18 +01:00
Sophie Tauchert
8964c8131f Add dynamic playlist for random songs 2020-04-12 21:03:18 +01:00
Sophie Tauchert
1d582ba158 Fix songs in dynamic subsonic playlist 2020-04-09 13:49:21 +01:00
Jim Broadus
a22af31e6e Add a common LibraryBackend::Init method.
Most users of LibraryBackend pass empty strings for directory and subdirectory
tables, so add a second Init method that omits those.
2020-03-24 14:10:43 +00:00
Jim Broadus
52337bf7a4 Use legacy RedirectPolicyAttribute instead of FollowRedirectsAttribute.
RedirectPolicyAttribute was introduced in Qt 5.9, but Debian Stretch is at 5.7.
This change can be reverted when the base support version moves to 5.9.
2020-03-23 18:45:25 +00:00
Jim Broadus
a85b3531c3 Handle redirects when downloading Spotify blob.
Use the NoLessSafeRedirectPolicy policy which will redirect as long as it isn't
from https to http.
2020-03-23 09:58:15 +00:00
Jim Broadus
8e6d09d445 Handle google drive token.
Use LoadResult auth header mechanism to pass auth token to pipeline as a header
instead of obsolete query string method.
2020-03-12 18:08:14 +00:00