Commit Graph

185 Commits

Author SHA1 Message Date
Chris Josten 17400a97e4
Small user interface tweaks 2021-09-10 05:18:05 +02:00
Chris Josten af99b39722
Update UserData based when notified over websocket 2021-09-10 05:17:28 +02:00
Chris Josten 40d8a58a5a
Small UI modifications
* Fixed pulleyindicator staying busy in collectionpage
* PlaybackBar now correctly disables next/previous buttons
* AppWindow now handles the pushing for pages when an items needs to be
  visited.
* Clicking on an item of type audio now starts the audio player
2021-09-10 03:08:40 +02:00
Chris Josten 5d521ee189
Resume playback once again 2021-09-10 03:06:42 +02:00
Chris Josten 2a3bd51def
Add support for handling playstate commands 2021-09-10 01:36:30 +02:00
Chris Josten 7c21eb425d
Fix a few PlaybackManager bugs
The following bugs should have been fixed:

* The PlaybackManager no longer starts playing again after
  PlaybackManager.stop() has been called.
* The PlaybackManager will no longer get into an invalid state when
  next() is called many times fast.
* The PlaybackManager now exposes its error information when the
  PlaybackUrl could not be fetched.
* The PlaybackManager will keep a playbackState of Playing as long
  as it is not stopped and while in a playlist. Previously, it would
  stop and start everytime the next item got loaded.
2021-09-09 22:16:39 +02:00
Henk Kalkwater caf72af999
Fix a few bugs and unimplemented features
* Show the now playing cover when playing an item, otherwise show the
  collection cover.
* ItemModelLoaders now correctly expose list properties of non-built-in
  Qt objects
* toString is now implemented for lists, fixing some query
  construction code.
* PlaybackManager now clears the playlist when playing a single item to
  prevent weird behaviour.
* The covers are slightly updated.
2021-09-09 06:02:44 +02:00
Henk Kalkwater 60bc90c5fa
Add support for server-side notifications 2021-09-09 02:18:10 +02:00
Henk Kalkwater 357ac89330
Fix sending of DeviceProfileInfo
Due to some errors within DeviceProfile and how nullables were
serialized, an invalid request was made and the
/Sessions/Capabilities/Full would give an 400 response back.

Besides that, ApiClient would generate a DeviceProfile before all
properties from QML were read. This has been fixed by implementing
QQmlParserStatus and only generating the device profile after all
properties are set.
2021-09-08 23:20:12 +02:00
Chris Josten 8a9cb73686 SailfishOS: Small user interface improvements
* Pressing shuffle will now show a notification indicating it is not
  implemented.
* On the initial setup, the discovered settings are displayed somewhat
  more neatly.
* Disable reloading the main view each time the MainPage gets activated.
2021-09-08 22:01:00 +02:00
Chris Josten 14c9de0aac Merge branch 'master' of github.com:HenkKalkwater/harbour-sailfin 2021-09-08 21:52:44 +02:00
Chris Josten 6bfe783bec Add user-configurable playback settings
* PlaybackManager has been updated to workaround limitiations in
  QtMultimedia
* PlaybackManager now sends the DeviceProfile to the server when
  determining the playback url. This makes the Jellyfin server send
  information back about transcoding.
* The DeviceProfile type has been changed from an QJsonObject into the
  DTO generated by the OpenAPI descripton.
* A settings page has been added on SailfishOS that allows the user to
  configure the PlaybackManager to their whishes.
* The DebugInfo page on SailfishOS now persists its settings (closes #8)
2021-09-08 21:44:42 +02:00
Chris Josten 64ad37707c Make libJellyfinQt a proper qml plugin 2021-09-08 21:36:26 +02:00
Chris Josten f5fc33c002
CI: Remove unrecognized -U option in qmllint
Apparently older versions do not support this flag
2021-09-07 12:18:47 +02:00
Chris Josten 7ae46b6013
CI: Add qmllint 2021-09-07 11:59:36 +02:00
Chris Josten 1283c4ca66
CI: copy to correct user 2021-09-06 23:02:33 +02:00
Chris Josten a9f5cce3c5
CI: Fix project path 2021-09-06 19:40:17 +02:00
Chris Josten 5e91a3b5b1
CI: copy project to writeable directory before build 2021-09-06 19:33:11 +02:00
Chris Josten 47903797b0
Add experimental CI support 2021-09-06 19:20:00 +02:00
Chris Josten 96ecd8e7d8 Refractor ApiClient and add support for body params
ApiClient was refractored to use PIMPL. This is mainly done to reduce
compile times whenever the implementation of ApiClient itself changes,
since a lot of files include it.

The loaders have gained support for body parameters, this was somehow
omitted before.
2021-09-03 03:47:25 +02:00
Chris Josten 1453cbbc63 Add basic settings framework
This settingsframework uses mlite5 on SailfishOS and other platforms
with the mlite library present, because I believe DConf is neat. For
platforms that do not have DConf and mlite present, it falls back to a
quickly put together implementation that uses QSettings as a backend.

Implementing an settings item is simply done by subclassing the
Jellyfin::QObjectSettingsWrapper.
2021-09-02 15:34:32 +02:00
Chris Josten a89834044c MPRIS: set several musicbrainz ids in metadata 2021-09-01 22:10:54 +02:00
Chris Josten 03bc3f795a openapi: group endpoints by tag in file
This reduces the amount of files generated by arround 300 and makes for
quicker compilation times.
2021-09-01 14:50:02 +02:00
Chris Josten 54235f298e Add MPRIS support
Besides MPRIS support, this also adds support for hasPrevious() and
hasNext() in several parts to determine whether the
player/playlist/shuffler has a previous or next item.
2021-08-31 01:29:51 +02:00
Chris Josten 757327ceac AN attempt to get covers to work again
Covers should now work when at least the playbackManager is playing.
Covers based on the currently displayed item on the page does not work
yet.

The CoverPage has been revamped to use 1 model and 1 PathView to animate
the items for cleaner code.
2021-08-23 01:53:20 +02:00
Chris Josten 5ee2869db9 Fix a few bugs regarding loaders and models
* Properly keep track of the current offset and total recourd count in
  models.
* Catch exceptions and store them in errorString properties wherever
  applicable in loaders.
2021-08-23 01:48:35 +02:00
Chris Josten 1aae311b9b Add track selection back 2021-08-23 01:48:19 +02:00
Chris Josten 5a24bdee59 Loader: catch exceptions and reemit them as errors
This reduces application crashes when an invalid JSON response has been
returned.
2021-08-22 14:50:15 +02:00
Chris Josten 7f39da0b95 Make sandboxing the default, remove the cli-option
SailfishOS 4.0.1 has been out for over half a year now, sandboxing
should have wide support by now.
2021-08-22 14:48:22 +02:00
Chris Josten 2bd9d66841 Actually make the shim visible 2021-08-22 14:47:21 +02:00
Chris Josten 4bbc86d31c Convert Loader-related thread-code to async code
Closes #10
2021-08-22 02:33:04 +02:00
Chris Josten f028e38b7a Polish UI elements 2021-08-22 00:29:44 +02:00
Chris Josten 75474e1793 Skip to song when clicking in the queue 2021-08-21 22:33:23 +02:00
Chris Josten f09593c245 Implement playlist model and UI 2021-08-21 22:01:13 +02:00
Chris Josten e04ec364c1 Add UserLoader back + misc regression fixes 2021-08-18 00:04:27 +02:00
Chris Josten bb1e3ea21d Repair broken userdata.
The UserData of an item was not displaying, this should re-add it.
2021-08-17 16:43:17 +02:00
Chris Josten 7b6c272aa9 Rewire more of Sailfish frontend into new backend
This should encompass most simple things, besides some larger, trickier
things, like the video streams and the now-broken userdata
2021-08-11 23:35:33 +02:00
Chris Josten df1e134821 Allow manual entry of IP address in setup
Also fixed a small bug in the main page
2021-08-02 00:57:14 +02:00
Chris Josten 242ccc90c1 Remove complicated QMediaPlayer switching
THe idea behind the switching was to provide gapless playback, but it
made the code too complicated and to intertwined with QtMultiMedia.

I might attempt to implement it later, but I probably will put the code
in a separate class to make it easier to swap the QtMultiMedia
implementation with a multimedia implementation for a player with better
support for gappless playback.
2021-08-02 00:52:21 +02:00
Chris Josten 86672be051 WIP: Add playlists/queues and add support for Sailfish back 2021-07-31 15:06:17 +02:00
Chris Josten fbc154fb56 WIP: Playlist support 2021-05-21 15:46:30 +02:00
Chris Josten 228f81984b WIP: Slowly bringing back viewmodels 2021-03-29 23:48:16 +02:00
Chris Josten 9abee12658 Resolved remaining issues with ApiModel 2021-03-29 17:10:25 +02:00
Chris Josten 89fef6d7f4 WIP: Code cleanup, trying to debug Q_ENUM not visible from QML 2021-03-29 14:27:37 +02:00
Chris Josten 729e343661 WIP: HttpLoader seems to work, Model still borked 2021-03-28 04:00:00 +02:00
Chris Josten e421adf733 WIP: Reimplementation of ListModels. 2021-03-26 21:27:35 +01:00
Chris Josten 76a49868b9 Make image sizes relative 2021-03-25 18:30:57 +01:00
Chris Josten d9bb22f367 Move images on 1 line 2021-03-25 18:28:30 +01:00
Chris Josten f670ea22ab FIx image links 2021-03-25 18:27:55 +01:00
Chris Josten 2fbafdf450 Update readme with new graphics 2021-03-25 18:21:51 +01:00