Commit Graph

73 Commits

Author SHA1 Message Date
Chris Josten 17d4b2c24b WIP: extract loading logic from model
Loading logic should be extracted from the model, to make
loading the data from other sources, such as a local database for
synchronised items, possible.
2021-03-05 15:34:10 +01:00
Chris Josten 40d8793bd8 WIP: autogenerate models based on OpenAPI 2021-02-21 05:02:05 +01:00
Chris Josten 4ed6a8a42d Slight improvements to the OpenAPI generator 2021-02-21 00:26:18 +01:00
Chris Josten 0bd9042ef3 Initial OpenApi code generator 2021-02-20 23:33:07 +01:00
Chris Josten f7bca333c8 Moved playback logic to C++-side (and refractoring) 2021-02-20 23:20:39 +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 b345a1c650 Don't use the new Silica Background
Should improve backwards compatibility with older versions.
2021-02-17 02:31:26 +01:00
Chris Josten e4e35c03d4 Add (optional) firejail support 2021-02-17 02:28:37 +01:00
Chris Josten 8552e08a12 Snap NarrowHeader cover to either big or small 2021-02-16 17:53:31 +01:00
Chris Josten c1b0bddd10 Minor UI cleanup 2021-02-16 17:25:11 +01:00
Chris Josten 306693fa04 Add playbackBar -> playbackPage transition 2021-02-15 00:27:36 +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 7e77abc173 Added Direct Play and websocket improvements
* [backend]: Websocket now automatically tries to reconnect if connection was lost, up to 3 times.
* [backend]: Move more playback and resume logic to the backend, to avoid having it in multiple places within the QML. Regression: pausing playback sometimes halts the video player for an unknown reason.
* [playback]: Sailfin will try to play without the server transcoding, if possible.
* [ui]: added a debug page in the settings
2021-02-14 13:29:30 +01:00
Chris Josten a244c27b1a Move playback logic to C++ side 2021-02-14 00:21:49 +01:00
Chris Josten 5ddd5e8e2e Added debug page, fix RemoteImage on covers 2021-02-13 21:42:57 +01:00
Chris Josten eda4994aac Minor UI tweaks 2021-02-12 03:32:28 +01:00
Chris Josten 382af84846 Add rough Sailfish 4.0 page background implementation 2021-02-12 03:10:54 +01:00
Chris Josten 3389a11508 Better narrow cover 2021-01-17 21:11:55 +01:00
Chris Josten 5bdc8ee83d Make components less chatty in logs 2021-01-17 17:34:17 +01:00
Chris Josten 79d378c9ed Add BlurHash placeholders at several places
* [ui] Added: Blurry previews of images before they are loaded

Also fixes a bug where ApiModel would remove items that already started
with a lowecase letter or didn't start with a letter at all.
2021-01-14 20:35:24 +01:00
Chris Josten bb2f6f3a3e Add BlurHash library 2021-01-14 17:43:42 +01:00
Chris Josten 80cbf56225 Initial attempt to link blurhash library 2020-10-27 16:31:34 +01:00
Chris Josten a172b6d914 Album page landscape improvements 2020-10-27 02:35:50 +01:00
Chris Josten 040aeb1a40 Added MusicAlbumPage
- [UI]: Added specialized view for music albums

- Prepared RemoteImageView for fading in image when loaded
2020-10-26 22:29:07 +01:00
Chris Josten a29ab3dff4 Added monochrome sailfish icon 2020-10-26 00:18:26 +01:00
Chris Josten 727e50cae1 Updated build system to fix issues
- Application could not be launched by the invoker because of some
  missing compiler flags (-rdynamic -pie)
- Private libraries were not found due to incorrect rpath being set
- Moved the qml list of files for sailfish from qtquick to sailfish
  (Stupid mistake I made because my editor doesn't really differentiate
  between different files with the same name in different folders)
2020-10-26 00:14:46 +01:00
Chris Josten 228bcfb685 Switched to a sane build system (CMake) 2020-10-25 19:58:02 +01:00
Chris Josten 9cfd6d7ee2 Bump v0.3.0 2020-10-10 18:05:57 +02:00
Chris Josten e838fcc8a1 Added very simple photo viewer 2020-10-10 17:28:13 +02:00
Chris Josten d6a1f431b4 Implement nextUp endpoint and UI
* [UI] Added: The next up section now actually loads items
2020-10-10 16:26:08 +02:00
Chris Josten d3a7c17586 Added user details and somewhat imporved error handling
* [UI] Improved: error handling should be slightly better
* [UI] Improved: settings now show the user name and picture instead of the user id if network is available.
2020-10-10 15:56:04 +02:00
Chris Josten 8a683df2a2 Added more fields to Jellyfin::Item, update qml
* [UI] Improved: series season page now shows favourite and watched marks

Refractored some more QML to support camelCase items
2020-10-10 14:30:49 +02:00
Chris Josten d81fa50715 Models get updated when userData changes at server
The websocket now notifies the ApiClient, on which several models and
items are listening, when the userData for an user has changed. The UI
on the qml side may automatically updates without any extra effort.

This also resolves a bug where videos didn't resume after +/- 3:40 due
to an integer overflow.
2020-10-09 02:33:08 +02: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
Chris Josten 4e3395c4e5 Initial step towards the QObject rewrite 2020-10-04 23:03:58 +02:00
Chris Josten 7c7d2ba195 Fill in more desktop fields 2020-10-03 23:59:35 +02:00
Chris Josten 97429ff6ec Added basis for WebSocket connection 2020-10-02 12:20:54 +02:00
Chris Josten 5576e53656 Remove leftover directory 2020-10-02 01:09:00 +02:00
Chris Josten e9d36a690c Minor UI improvements
* EpisodePage and FilmPage are now based off VideoPage, since they share a
lot of components in common.
* The overlay over the thumbnail in PlayToolbar is less obtrusive
* Cover shows now the title of the item, and total play time, if
  applicable
* The resume playing section forces all delegates to be square.
* The Season page now uses a ListView instead of a ColumnView.
2020-10-02 00:13:05 +02:00
Chris Josten dc395e9b3c VideoPlayer no longer jumps back after resuming 2020-10-01 22:15:17 +02:00
Chris Josten c01fcdcb54 Report playback progress and resume items
[Playback]: New: playback progress is reported to the Jellyfin server.
[Playback]: New: resume partly played items or start playing from the beginning if desired.

I also had to make some changes to the VideoPlayer, because the VideoHUD
got locked up when the player changed status from Buffering to Buffered
too quickly in succession, which occurs when trying to seek directly
after the application is able to.
2020-10-01 21:45:34 +02:00
Chris Josten 7221fda1d5 Give fallback images random background colours
[UI] Added: if an image cannot be loaded, it will have a random background colour.
2020-10-01 12:55:11 +02:00
Chris Josten 5057867ade Added SortOrder and fallback pages.
Once again I couldn't stop myself from being sidetracked.
[Collections]: Added: allow specifying sort order (Ascending, Descending)
[General]: Improved: Added video fallback page to allow unknown video types to be played, although without extra metadata.
[General]: Improved: Added folder fallback, so unknown collection types are at least displayed without metadata.
2020-10-01 11:57:55 +02:00
Chris Josten b68da318f2 Restructured the way item "details" are loaded
Previously, Items were displayed in one page, named DetailPage.qml.
This page then would load a qml component, based on the page type. It
also contained some components common for each detail page, like
displaying the name of the item. This construction had as downside that
modifying the page properties, adding a pulley menu or basing the page
around a SilicaListview was not possible. So I already had created some
other pages.

The new construction uses a base page, named BaseDetailPage which does
set some common properties and handle the loading of the items, so that
that part does not have to be duplicated. Displaying the name of an item
was a very trivial thing to do, so duplicating that part across files
was not a problem. Anyway, the rest of the pages are now seperate, but
all have BaseDetailsPage as the root, so they can use the common
functionality by that page. Those subpages now can be based around
GridViews, Carrousels, have pully menus and so on. To determine to which
page to go to, based on the content type, a function named getPageUrl
has been added to Utils.js, which takes a content type as argument and
gives the page url back.
2020-09-29 02:25:18 +02:00
Chris Josten fedae0b912 Make the icon more look like a Sailfin (fish species)
[Icon] Improved: icon now looks more like a Sailfin fish
2020-09-28 17:14:16 +02:00
Chris Josten b217e11817 Bump version 0.2.1 2020-09-28 14:48:29 +02:00
Chris Josten 26ccf22118 Auto-generate changelog 2020-09-28 14:44:23 +02:00
Chris Josten 7eb9dba6d0 Convert tabs to spaces 2020-09-28 14:40:29 +02:00
Chris Josten 7bb1fdddba (Hopefully) fixed #1
[Setup] Fixed: Sailfin would get into an infinite loop while trying to resolve certain urls.
2020-09-28 14:23:10 +02:00
Chris Josten d6f0881e5e Bump version to v0.2.0-1 2020-09-27 23:05:23 +02:00