Add search, and lay the window out in three resizable columns #10
No reviewers
Labels
No labels
Kind/Bug
Kind/Chore
Kind/Docs
Kind/Feature
Kind/Security
Priority
High
Priority
Low
Reviewed
Duplicate
Reviewed
Invalid
Status
Blocked
Status
Needs-Decision
Status
Wontfix
No milestone
No assignees
1 participant
Notifications
Due date
No due date set.
Reference
Strawly-Music/desktop!10
Loading…
Reference in a new issue
No description provided.
Delete branch "search"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Three columns and one top bar
The Kirigami page stack is replaced by a
SplitViewwith three columns:One bar runs across the top (
src/qml/TopBar.qml). The playlists button at the left end and the Now Playing button at the right end show or hide the column on their side. Next to the playlists button, the search button shows or hides the search fields. Refresh, Settings and the menu sit on the right.Removed: the Hide sidebar button, the All Music button, the Now Playing button in the player bar, and Play and Shuffle in the middle column. Play and Shuffle stay on each playlist in the left column.
LibraryPage.qmlandColumnTitle.qmlare gone. The playlist and queue pages are now plain views (PlaylistView.qml,QueueView.qml).All Music and the playlist now share the middle column, so the old drag from All Music into the open playlist cannot happen anymore. Songs can be dropped on a playlist's tab or on the playlist in the left column instead (
SongDropArea.qml). Files dragged from the file manager still drop into the open playlist at the line under the pointer.Search
The search button or Ctrl+F shows a field above the playlists, which filters by name, and one above the middle column, which filters what it shows. Hiding them clears both searches.
3:07). Each word must match somewhere, in any order, ignoring case and accents.title:,artist:(orauthor:, which also looks at the album artist),albumartist:,album:,genre:,composer:,comment:,year:/date:,length:andfile:. A value can have spaces and runs to the next field:lifehouse album:you give what you get.<,<=,>and>=:length:>2:00,year:<2000. A length without a colon is in minutes.How it works:
src/songsearch.cppreads the tags with libavformat, the same opener as the cover code (src/audiofile.cpp). It skips encoder, ReplayGain, MusicBrainz and lyrics tags. Tag names are unified across formats, for examplealbum_artistandALBUMARTIST. Results are cached per file until it changes on disk.SongModelscans the folder as before, then reads the tags on a thread pool thread. Until that finishes, All Music searches file names only.TrackModelreads through the same cache, so a playlist search is usually instant.SearchFilterModelis aQSortFilterProxyModelbetween each list and its model. While a search filters a playlist, reordering is off, removing maps back to the playlist row, and dropped songs go at the end.Add to playlist menu
src/qml/PlaylistMenu.qmlshows a set number of playlists at a time: 15 by default, from 3 to 100 in Settings. With more playlists, arrows above and below scroll through them, on hover, click or mouse wheel, and a search field at the top narrows the list. Enter adds the song to the first playlist left. The arrows and the field are notMenuItems, so clicking them leaves the menu open.Docs
README.mdhas new Window layout, Editing playlists and Search sections.CHANGELOG.mdlists the changes under Unreleased.ROADMAP.mdticks Search and the button rearrangement, and adds "Create and delete playlists" under Later.Checked
qmllintis clean inorg.kde.Sdk//6.11. The three test suites pass. The newtst_songsearchcovers folding, query parsing, fields, comparisons, and reading tags from tagged MP3, FLAC and Opus files.