1
0
Fork 0
mirror of https://github.com/HenkKalkwater/harbour-sailfin.git synced 2024-05-11 08:32:43 +00:00
Commit graph

28 commits

Author SHA1 Message Date
Chris Josten b257fe60aa Discover remote sessions
Adds a way of discovering remote sessions and in Jellyfin the UI.
2023-01-02 20:05:41 +01:00
Chris Josten c72c10bad4
core: Split PlaybackManager up into smaller parts
The PlaybackManager was a giant class that handled UI bindings, fetching
stream URLS, playback logic.

It now has been split up into:

- ViewModel::PlaybackManager, which handles UI interfacing and allowing
  to swap out the Model::Playback implementation on the fly.
- Model::PlaybackManager, which is an interface for what a
  PlaybackManager must do, handling queues/playlists, and controlling a
  player.
- Model::LocalPlaybackManager, which is an Model::PlaybackManager
  implementation for playing back Jellyfin media within the application.
- Model::PlaybackReporter, which reports the current playback state to
  the Jellyfin server, for keeping track of played items.
- Model::Player, which handles playing back media from an URL and
  the usual play/pause et cetera.

In a future commit, this would allow for introducing a
Model::RemoteJellyfinPlaybackManager, to control other Jellyfin
instances.
2022-11-05 18:20:23 +01:00
Chris Josten 0fafb19c7d Add navigation to artists from tracks
I'm not to happy about the C++ sides. If anyone from the future finds
this commit with "git blame" while debugging this code: I apologise
2022-07-30 01:24:31 +02:00
Chris Josten dc9c3ea1b8 Add music library page 2022-07-29 14:26:25 +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
Chris Josten 64ad37707c Make libJellyfinQt a proper qml plugin 2021-09-08 21:36:26 +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 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 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 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 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 9643482ae1 WIP: Refractor C++-side. Loader should be working again 2021-03-25 17:45:53 +01:00
Chris Josten 2360b261f7 WIP: logic rewrite
WIP: adding loaders
2021-03-24 20:04:03 +01:00
Chris Josten 40d8793bd8 WIP: autogenerate models based on OpenAPI 2021-02-21 05:02:05 +01:00
Chris Josten 895731ae38 Big C++ refractor
- Removed "jellyfin" prefix from files, as they are already in a
  directory named Jellyfin
- Split the former "jellyfinitem.{h,cpp}" into multiple files in the DTO
  directory, one for each class. The jellyfinitem files started to
  become enormous.
- Use forward declarations in headers instead of including files
  wherever possible.
- Updated copyright headers
2021-02-17 19:42:10 +01:00
Chris Josten b699f6e74d Improve PlaybackManager stability, added PlaybackBar
- PlaybackManager now takes ownership of set items
- PlaybackManager can play items just by their itemId, avoids useless
  item creation on the QML side of things.
- Allow calling Jellyfin::registerTypes with a different URI
- Minor code cleanup
2021-02-14 18:40:46 +01:00
Chris Josten 228bcfb685 Switched to a sane build system (CMake) 2020-10-25 19:58:02 +01:00
Chris Josten 1e80ceb697 Deserialized a list! Restructured project!
I finally got deserializing lists working. Exposing them to QML was not
a trivial task either. Note that I didn't do it the clean way. Nested
lists are not supported. But it works!

Because I got so frustarted at one point trying to implement things the
right way, I restructured the project to seperate the Sailfish code from
the Qt code and created a new, empty desktop project. The Qt code has
been transformed into a happy little library, to which the Sailfish OS
application links.

Note that QMake doesn't seem to strip the library for some reason.
2020-10-08 03:00:08 +02:00