From b6cf9776b5a1b56a33f631895910bc2afd4e4d7b Mon Sep 17 00:00:00 2001 From: Victor Tran Date: Mon, 29 Jul 2024 20:12:48 +1000 Subject: [PATCH] Implement Search --- application/ControlStrip.qml | 9 +++++-- application/TracksPane.qml | 35 +++++++++++++++++++++------- application/library/librarymanager.h | 12 +++++----- application/translations/ar_SA.ts | 6 +++++ application/translations/cs.ts | 6 +++++ application/translations/da_DK.ts | 6 +++++ application/translations/de_DE.ts | 6 +++++ application/translations/en_GB.ts | 6 +++++ application/translations/en_US.ts | 6 +++++ application/translations/fr_CA.ts | 6 +++++ application/translations/id_ID.ts | 6 +++++ application/translations/nl_NL.ts | 6 +++++ application/translations/tr_TR.ts | 6 +++++ application/translations/ur_PK.ts | 6 +++++ application/translations/vi_VN.ts | 6 +++++ 15 files changed, 111 insertions(+), 17 deletions(-) diff --git a/application/ControlStrip.qml b/application/ControlStrip.qml index 087620b..2fb34e7 100644 --- a/application/ControlStrip.qml +++ b/application/ControlStrip.qml @@ -57,6 +57,7 @@ Layer { } Button { + Layout.alignment: Qt.AlignCenter id: shuffleButton flat: true icon.name: "media-playlist-shuffle" @@ -68,6 +69,7 @@ Layer { } } Button { + Layout.alignment: Qt.AlignCenter id: repeatOneButton flat: true icon.name: "media-repeat-single" @@ -79,6 +81,7 @@ Layer { } } Button { + Layout.alignment: Qt.AlignCenter flat: true icon.name: "media-skip-backward" implicitWidth: height @@ -87,17 +90,19 @@ Layer { } } Button { + Layout.alignment: Qt.AlignCenter id: playPauseButton flat: true icon.name: PlaylistManager.state === PlaylistManager.Playing ? "media-playback-pause" : "media-playback-start" - icon.height: 32 - icon.width: 32 + icon.height: 40 + icon.width: 40 implicitWidth: height onClicked: () => { PlaylistManager.playPause(); } } Button { + Layout.alignment: Qt.AlignCenter flat: true icon.name: "media-skip-forward" implicitWidth: height diff --git a/application/TracksPane.qml b/application/TracksPane.qml index 8cb54bc..be7afbc 100644 --- a/application/TracksPane.qml +++ b/application/TracksPane.qml @@ -26,27 +26,44 @@ Item { color: layer1.color } - LibraryModel { - id: model - } - Pager { anchors.top: grandstand.bottom - anchors.topMargin: 6 anchors.left: parent.left anchors.right: parent.right anchors.bottom: parent.bottom - anchors.bottomMargin: SafeZone.bottom currentAnimation: Pager.Fade - LibraryListing { + ColumnLayout { anchors.fill: parent - id: trackList + + TextField { + id: searchBox + Layout.fillWidth: true + placeholderText: qsTr("Search") + + background: Rectangle { + implicitHeight: 40 + color: Contemporary.background + } + + z: 1 + } + + LibraryListing { + id: trackList + Layout.fillHeight: true + Layout.fillWidth: true + } } } Component.onCompleted: () => { - trackList.model = LibraryManager.allTracks() + trackList.model = Qt.binding(() => { + if (searchBox.text !== "") { + return LibraryManager.searchTracks(searchBox.text); + } + return LibraryManager.allTracks(); + }); } } diff --git a/application/library/librarymanager.h b/application/library/librarymanager.h index bcce00e..7f42409 100644 --- a/application/library/librarymanager.h +++ b/application/library/librarymanager.h @@ -58,14 +58,14 @@ class LibraryManager : public QObject { int trackPlayCount(QString path); Q_SCRIPTABLE LibraryModel* allTracks(); - LibraryModel* searchTracks(QString query); - int countTracks(); + Q_SCRIPTABLE LibraryModel* searchTracks(QString query); + Q_SCRIPTABLE int countTracks(); - QStringList artists(); - QStringList albums(); + Q_SCRIPTABLE QStringList artists(); + Q_SCRIPTABLE QStringList albums(); - LibraryModel* tracksByArtist(QString artist); - LibraryModel* tracksByAlbum(QString album); + Q_SCRIPTABLE LibraryModel* tracksByArtist(QString artist); + Q_SCRIPTABLE LibraryModel* tracksByAlbum(QString album); int createPlaylist(QString playlistName); QList> playlists(); diff --git a/application/translations/ar_SA.ts b/application/translations/ar_SA.ts index a1f1215..37b1653 100644 --- a/application/translations/ar_SA.ts +++ b/application/translations/ar_SA.ts @@ -1088,6 +1088,12 @@ theBeat ستتم إعادة التشغيل بمجرد اكتمال إعادة ا Tracks in Library المسارات في المكتبة + + + + Search + بحث + TracksWidget diff --git a/application/translations/cs.ts b/application/translations/cs.ts index cb8ce4c..3ed9339 100644 --- a/application/translations/cs.ts +++ b/application/translations/cs.ts @@ -954,6 +954,12 @@ theBeat will restart once the reset is complete. This action is irreversible.Tracks in Library Stopy v knihovně + + + + Search + + TracksWidget diff --git a/application/translations/da_DK.ts b/application/translations/da_DK.ts index 64840c1..140c2a4 100644 --- a/application/translations/da_DK.ts +++ b/application/translations/da_DK.ts @@ -1060,6 +1060,12 @@ theBeat vil genstarte når nulstillingen er færdig. Dette kan ikke fortrydes.Tracks in Library Sange i bibliotek + + + + Search + Søg + TracksWidget diff --git a/application/translations/de_DE.ts b/application/translations/de_DE.ts index f9cdc84..8091de4 100644 --- a/application/translations/de_DE.ts +++ b/application/translations/de_DE.ts @@ -1064,6 +1064,12 @@ theBeat wird nach dem beenden des Vorganges neustarten. Dieser Vorgang ist irrev Tracks in Library Titel in der Bibliothek + + + + Search + Suchen + TracksWidget diff --git a/application/translations/en_GB.ts b/application/translations/en_GB.ts index 33c3e1a..01ecec7 100644 --- a/application/translations/en_GB.ts +++ b/application/translations/en_GB.ts @@ -1060,6 +1060,12 @@ theBeat will restart once the reset is complete. This action is irreversible.Tracks in Library Tracks in Library + + + + Search + Search + TracksWidget diff --git a/application/translations/en_US.ts b/application/translations/en_US.ts index 81699af..ae6f555 100644 --- a/application/translations/en_US.ts +++ b/application/translations/en_US.ts @@ -922,6 +922,12 @@ theBeat will restart once the reset is complete. This action is irreversible.Tracks in Library + + + + Search + + TracksWidget diff --git a/application/translations/fr_CA.ts b/application/translations/fr_CA.ts index 419ee17..a148294 100644 --- a/application/translations/fr_CA.ts +++ b/application/translations/fr_CA.ts @@ -955,6 +955,12 @@ theBeat will restart once the reset is complete. This action is irreversible.Tracks in Library Pistes dans la Biblio + + + + Search + + TracksWidget diff --git a/application/translations/id_ID.ts b/application/translations/id_ID.ts index b560a29..ddbd992 100644 --- a/application/translations/id_ID.ts +++ b/application/translations/id_ID.ts @@ -1054,6 +1054,12 @@ theBeat akan restart seusai penyetelan ulang. Aksi ini tidak dapat dikembalikan. Tracks in Library Trek dalam Pustaka + + + + Search + Cari + TracksWidget diff --git a/application/translations/nl_NL.ts b/application/translations/nl_NL.ts index d9ba5c5..218d993 100644 --- a/application/translations/nl_NL.ts +++ b/application/translations/nl_NL.ts @@ -1056,6 +1056,12 @@ theBeat zal opnieuw starten zodra de reset klaar is. Deze actie is niet terug te Tracks in Library Nummers in Bibliotheek + + + + Search + Zoeken + TracksWidget diff --git a/application/translations/tr_TR.ts b/application/translations/tr_TR.ts index 77bb640..58ac1e6 100644 --- a/application/translations/tr_TR.ts +++ b/application/translations/tr_TR.ts @@ -1058,6 +1058,12 @@ Sıfırlama tamamlandığında theBeat yeniden başlayacaktır. Bu eylem geri al Tracks in Library Kitaplıktaki Şarkılar + + + + Search + Ara + TracksWidget diff --git a/application/translations/ur_PK.ts b/application/translations/ur_PK.ts index 5fc3b53..4b41956 100644 --- a/application/translations/ur_PK.ts +++ b/application/translations/ur_PK.ts @@ -945,6 +945,12 @@ theBeat will restart once the reset is complete. This action is irreversible.Tracks in Library لائبریری میں پٹریوں + + + + Search + + TracksWidget diff --git a/application/translations/vi_VN.ts b/application/translations/vi_VN.ts index c9d4974..4099717 100644 --- a/application/translations/vi_VN.ts +++ b/application/translations/vi_VN.ts @@ -1064,6 +1064,12 @@ theBeat sẽ khởi chạy lại sau khi việc đặt lại hoàn tất. Hoạt Tracks in Library Bài hát trong thư viện + + + + Search + Tìm kiếm + TracksWidget