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