1
0
Fork 0
mirror of https://github.com/HenkKalkwater/harbour-sailfin.git synced 2024-11-23 01:35:18 +00:00
Commit graph

95 commits

Author SHA1 Message Date
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
Chris Josten 4a9be69c07 Propagate version number from yaml to QML
* The application now will use the version number from the Spectacle
  yaml in HTTP-requests and display it in the about page as well.
2020-09-27 22:41:35 +02:00
Chris Josten 419e97a882 Improved episode and film UI
* Show track selection as disabled if there is only 1 option
* Series: show episode numbers
2020-09-27 21:11:50 +02:00
Chris Josten 6429ee5332 Prevent device from sleeping while media is playing
I was testing the entire time on net power, so I forgot that the device
goes to sleep after a while.
2020-09-27 20:52:13 +02:00
Chris Josten 9b16d91b3e Added license headers
And a translation file I forgot to commit previous commit
2020-09-27 20:38:33 +02:00
Chris Josten fa1118a7f3 Added video playback error screen 2020-09-27 17:59:11 +02:00
Chris Josten 25760bfab9 Fix enter key behaviour in setup address field 2020-09-27 17:28:40 +02:00
Chris Josten 9e9d075cd4 Fix models acting weird when changing sort
Apparently the Jellyfin server may include different fields in the
resposne depending on which SortOrder you use. This causes the model to
generate new roleNames when changing its sortOrder, but the QML part
does not know of this happening and there's no way of notifying the QML
part as far as I'm aware of (if so, let me know). So whenever new
generateFields() is called, it shouldn't reset its roleNames map and
recreate it anew, rather, just append the new roleNames to the current
map. If a model in QML wants to use information used in fields which are
added by changing SortOrder, please add those fields explicitly in
Fields.
2020-09-27 17:05:49 +02:00
Chris Josten 5d395ad7b6 Implemented collections + misc UI improvements
* There is a basic collection page, allowing the user to browse through
  collections. It has a sort function, that sort of works
* Item cards now show a bar indicating play time
* Item cards now have a black/white (depending on theme) shim, improving
  readability.
* The resume watching section now actually loads items
2020-09-27 16:54:45 +02:00
Chris Josten 5ea17070fe Ready model for infinite lists 2020-09-27 03:14:05 +02:00
Chris Josten 1ba7f6f8ef Reindent with spaces 2020-09-27 00:48:13 +02:00
Chris Josten a358caf13e Fixed few bugs related to login/logout
* Pressing the logout button now brings the setup page up again
* Removing a server and readding one of which the hash of the address
  has a higher value than the previous one does no longer cause the
  application to request a login each time you open it.
* The method for deciding if the user is in setup has been changed. It
  now checks if a page in the pageStack has the property _isSetupPage,
  which works better than manually keeping track of state.
2020-09-27 00:42:20 +02:00
Chris Josten 0357227134 Login dialog UX improvements
* Show an error when credentials are incorrect
* Fix enter key not logging in
* Hide login message when none is set
2020-09-27 00:00:42 +02:00
Chris Josten 67c8621d6f Added settings, logout and improved error states 2020-09-26 23:29:45 +02:00
Chris Josten edb514bf2d BUMP VERSION 0.1.0 2020-09-26 04:13:21 +02:00
Chris Josten 02f73fe11d Fix user icons displaying outside their delegate 2020-09-26 03:22:55 +02:00
Chris Josten c700f9c374 Fix MainPage being empty after first login 2020-09-26 03:21:58 +02:00
Chris Josten 6442bda9b8 Added svg icon
* If you are able to design a better icon than me, your help is welcome
  :)
2020-09-26 03:12:41 +02:00
Chris Josten c13593de1e Add license and readme 2020-09-26 03:01:46 +02:00
Chris Josten 14a99c3342 Implemented series and final for touches alpha release 2020-09-26 02:51:37 +02:00
Chris Josten 020c968f9c Added track selection and minor UI improvements 2020-09-25 17:14:44 +02:00
Chris Josten 1eb6a8fb5d Added comments and general cleanup on qml files 2020-09-25 15:21:08 +02:00
Chris Josten 92a18c4fa5 Added videoplayer and many unrelated things 2020-09-25 14:46:39 +02:00
Chris Josten 53b3eac213 Initial commit
Features so far:
- Login is working, both on back-end and GUI-wise
- Saving and reusing login tokens is working
- The home page is mostly functional
- Show details can be received and displayed in a basic manner

Following features are taken into account, but have not been fully
implemented:
- Support for multiple accounts/servers
- Securely saving login tokens
2020-09-20 12:14:51 +02:00