1/* 2 * Copyright (C) 2019 3 * Jean-Luc Barriere <jlbarriere68@gmail.com> 4 * 5 * This program is free software; you can redistribute it and/or modify 6 * it under the terms of the GNU General Public License as published by 7 * the Free Software Foundation; version 3. 8 * 9 * This program is distributed in the hope that it will be useful, 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 * GNU General Public License for more details. 13 * 14 * You should have received a copy of the GNU General Public License 15 * along with this program. If not, see <http://www.gnu.org/licenses/>. 16 */ 17 18import QtQuick 2.9 19import QtQuick.Controls 2.2 20import QtQuick.Layouts 1.3 21import NosonApp 1.0 22import NosonMediaScanner 1.0 23import "../components" 24import "../components/Delegates" 25import "../components/Flickables" 26 27 28MusicPage { 29 id: genresPage 30 objectName: "genresPage" 31 pageFlickable: genreGridView 32 searchable: true 33 34 GenreList { 35 id: genres 36 Component.onCompleted: init() 37 } 38 39 onSearchClicked: filter.visible = true 40 41 header: MusicFilter { 42 id: filter 43 visible: false 44 } 45 46 MusicGridView { 47 id: genreGridView 48 itemWidth: units.gu(12) 49 heightOffset: units.gu(7) 50 51 model: SortFilterModel { 52 model: genres 53 sort.property: "genre" 54 sort.order: Qt.AscendingOrder 55 sortCaseSensitivity: Qt.CaseInsensitive 56 filter.property: "normalized" 57 filter.pattern: new RegExp(normalizedInput(filter.displayText), "i") 58 filterCaseSensitivity: Qt.CaseInsensitive 59 } 60 61 property int delayed: 0 62 63 delegate: Card { 64 id: genreCard 65 height: genreGridView.cellHeight 66 width: genreGridView.cellWidth 67 coversGridVisible: true 68 coverSources: [] 69 coverFlow: 4 70 objectName: "genresPageGridItem" + index 71 primaryText: (model.genre !== "<Undefined>" ? model.genre : tr_undefined) 72 secondaryTextVisible: false 73 74 onClicked: { 75 stackView.push("qrc:/controls2/ThisDevice/SongsView.qml", 76 { 77 "coverFlow": 4, 78 "covers": coverSources, 79 "album": undefined, 80 "genre": model.genre, 81 "pageTitle": pageTitle, 82 "line1": "", 83 "line2": (model.genre !== "<Undefined>" ? model.genre : tr_undefined) 84 }) 85 } 86 onPressAndHold: { 87 } 88 } 89 } 90} 91