Implement initial audiobook UX (some of which is a bit of a WIP).
- Renamed various components and moved them to src/components. - Renamed KOTO_PREFERRED_MODEL* to KOTO_PREFERRED_PLAYLIST* - Renamed koto string utility functions to always be prefixed with koto_utils_string_ for consistency. - Added configuration options for show / hiding various album information, as well as preferred sort type. - Changed db schema to reflect various metadata changes (sorry). - Implemented genre, narrator, year aggregation from KotoTrack to KotoAlbum for use in KotoAlbumInfo and audiobooks. - Rearchitected our playlist functionality for KotoAlbums to always have an inner KotoPlaylist that is used. - Added various getters / setters for new koto_album functionality. - Implement aggregation of KotoAlbum pointer aggregation in the KotoArtist as a GQueue and GListStore instead of GList so we can get all the albums associated with an artist and use the GListStore for the audiobook view. - Implement some initial album sorting in Artists (more work to do on this front). - Many improvements to file indexing logic for CD and position detection, various new koto_track_helpers. - Add new logic for knowing when to hide playlists given we generate them for each Album now. - Fix missing updates of KotoPlaylist in KotoNav. - Added playback position to KotoPlayerbar, renamed bar refs to self. - New Playlist state saving. - Updated track ticking logic for track in KotoPlaybackEngine. - Fixed playback position detection in our KotoPlaybackEngine by swapping from GST_FORMAT_DEFAULT to GST_FORMAT_TIME. - Changed our get_progress to divide by GST_SECOND. - Fixed missing type checks in various KotoPlaybackEngine functions. Fixes #13. Fixes #14. Fixes #15.
This commit is contained in:
parent
93f3f45adf
commit
77b4e900e6
86 changed files with 4926 additions and 824 deletions
|
@ -10,21 +10,5 @@
|
|||
color: $text-color-faded;
|
||||
margin: 10px 0;
|
||||
}
|
||||
|
||||
& .track-list {
|
||||
& > row {
|
||||
&:not(:active):not(:selected) { // Neither active nor selected, see gtk overrides
|
||||
color: $text-color-bright;
|
||||
|
||||
&:nth-child(odd):not(:hover) {
|
||||
background-color: $bg-primary;
|
||||
}
|
||||
|
||||
&:nth-child(even), &:hover {
|
||||
background-color: $bg-secondary;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,6 +1,12 @@
|
|||
@import 'components/album-info';
|
||||
@import 'components/audiobook-view';
|
||||
@import 'components/badge';
|
||||
@import 'components/cover-art-button';
|
||||
@import 'components/gtk-overrides';
|
||||
@import 'components/track-list';
|
||||
@import 'components/track-table';
|
||||
@import 'components/writer-page';
|
||||
@import 'pages/audiobook-library';
|
||||
@import 'pages/artist-view';
|
||||
@import 'pages/music-local';
|
||||
@import 'pages/playlist-page';
|
||||
|
@ -39,7 +45,8 @@ window {
|
|||
|
||||
// All the classes we want consistent padding applied to for its primary content
|
||||
.artist-view-content, // Has the albums
|
||||
.playlist-page { // Individual playlists
|
||||
.playlist-page, // Individual playlists
|
||||
.writer-page { // Writer page in Audiobook
|
||||
padding: $itempadding;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -46,4 +46,11 @@
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
.playerbar-secondary-controls { // Secondary controls
|
||||
label { // Inner playback position label
|
||||
font-size: large;
|
||||
margin-right: $halvedpadding;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -5,4 +5,5 @@ $palewhite: #cccccc;
|
|||
$red : #FF4652;
|
||||
|
||||
$itempadding: 40px;
|
||||
$halvedpadding: $itempadding / 2;
|
||||
$halvedpadding: $itempadding / 2;
|
||||
$quarterpadding: $itempadding / 4;
|
30
theme/components/_album-info.scss
Normal file
30
theme/components/_album-info.scss
Normal file
|
@ -0,0 +1,30 @@
|
|||
// This file contain the styling for the Album Info section
|
||||
|
||||
.album-info {
|
||||
.album-description,
|
||||
.album-narrator,
|
||||
.album-title-year-combo,
|
||||
.genres-tag-list {
|
||||
margin-bottom: $quarterpadding
|
||||
}
|
||||
|
||||
.album-title-year-combo {
|
||||
padding-top: $halvedpadding;
|
||||
}
|
||||
|
||||
.album-title { // Title of album
|
||||
color: $text-color-faded;
|
||||
font-size: 2.5em;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.album-year {
|
||||
margin-left: $halvedpadding;
|
||||
}
|
||||
|
||||
.genres-tag-list { // Genres Tag List
|
||||
& .label-badge:not(:last-child) {
|
||||
margin-right: $halvedpadding;
|
||||
}
|
||||
}
|
||||
}
|
34
theme/components/_audiobook-view.scss
Normal file
34
theme/components/_audiobook-view.scss
Normal file
|
@ -0,0 +1,34 @@
|
|||
// This is the styling for the Audiobook VIew
|
||||
|
||||
@import '../vars';
|
||||
|
||||
.audiobook-view {
|
||||
.side-info { // Side Info
|
||||
margin-right: $halvedpadding;
|
||||
|
||||
button,
|
||||
image {
|
||||
margin-bottom: $halvedpadding;
|
||||
}
|
||||
|
||||
button { // Play / Continue Playback button
|
||||
font-size: large;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
& > label {
|
||||
font-size: large;
|
||||
|
||||
&:last-child {
|
||||
margin-bottom: $halvedpadding;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.chapters-label { // Chapters label after album info
|
||||
color: $text-color-faded;
|
||||
font-size: x-large;
|
||||
font-weight: bold;
|
||||
padding: $halvedpadding 0; // Top / bottom padding
|
||||
}
|
||||
}
|
12
theme/components/_badge.scss
Normal file
12
theme/components/_badge.scss
Normal file
|
@ -0,0 +1,12 @@
|
|||
// This file contains the styling for our label badge
|
||||
|
||||
@import '../vars';
|
||||
|
||||
.label-badge {
|
||||
color: $text-color-faded;
|
||||
font-size: large;
|
||||
font-weight: 900;
|
||||
background-color: $bg-secondary;
|
||||
border-radius: 10px;
|
||||
padding: 5px 20px;
|
||||
}
|
19
theme/components/_track-list.scss
Normal file
19
theme/components/_track-list.scss
Normal file
|
@ -0,0 +1,19 @@
|
|||
// Track List styling
|
||||
|
||||
@import '../vars';
|
||||
|
||||
.track-list {
|
||||
& > row {
|
||||
&:not(:active):not(:selected) { // Neither active nor selected, see gtk overrides
|
||||
color: $text-color-bright;
|
||||
|
||||
&:nth-child(odd):not(:hover) {
|
||||
background-color: $bg-primary;
|
||||
}
|
||||
|
||||
&:nth-child(even), &:hover {
|
||||
background-color: $bg-secondary;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
12
theme/components/_writer-page.scss
Normal file
12
theme/components/_writer-page.scss
Normal file
|
@ -0,0 +1,12 @@
|
|||
// This is the styling for the writer page
|
||||
|
||||
@import '../vars';
|
||||
|
||||
.writer-page {
|
||||
.writer-header { // Our writer / artist header label
|
||||
color: $text-color-faded;
|
||||
font-size: 4em;
|
||||
font-weight: bold;
|
||||
padding-bottom: $itempadding;
|
||||
}
|
||||
}
|
36
theme/pages/_audiobook-library.scss
Normal file
36
theme/pages/_audiobook-library.scss
Normal file
|
@ -0,0 +1,36 @@
|
|||
// This file contains the styling for our Audiobook Library
|
||||
|
||||
@import '../vars';
|
||||
|
||||
.audiobook-library { // Library page
|
||||
.genres-banner { // Banner for genres list
|
||||
.large-banner { // Large banner with art for each genre
|
||||
padding: $itempadding;
|
||||
|
||||
.audiobook-genre-button { // Genre buttons
|
||||
.koto-button {
|
||||
font-size: 2em;
|
||||
margin: 0.5em;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.writers-button-flow { // Flowbox of buttons for writers
|
||||
padding: 0 $itempadding; // Horizontal padding of our standard item padding
|
||||
|
||||
flowboxchild {
|
||||
padding: 0;
|
||||
|
||||
&:nth-child(even) {
|
||||
margin: 0 0.5em;
|
||||
}
|
||||
|
||||
.writer-button { // Writer button
|
||||
color: $text-color-bright;
|
||||
font-size: 1.4em;
|
||||
background-color: $bg-secondary;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -21,14 +21,6 @@
|
|||
& > overlay {
|
||||
margin-right: $itempadding;
|
||||
}
|
||||
|
||||
& > box {
|
||||
& > label {
|
||||
font-size: xx-large;
|
||||
font-weight: 900;
|
||||
padding: $halvedpadding 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue