Changeset View
Changeset View
Standalone View
Standalone View
discover/qml/ApplicationsListPage.qml
Show All 19 Lines | |||||
20 | import QtQuick 2.5 | 20 | import QtQuick 2.5 | ||
21 | import QtQuick.Controls 1.1 | 21 | import QtQuick.Controls 1.1 | ||
22 | import QtQuick.Controls 2.1 as QQC2 | 22 | import QtQuick.Controls 2.1 as QQC2 | ||
23 | import QtQuick.Layouts 1.1 | 23 | import QtQuick.Layouts 1.1 | ||
24 | import QtQuick.Window 2.2 | 24 | import QtQuick.Window 2.2 | ||
25 | import "navigation.js" as Navigation | 25 | import "navigation.js" as Navigation | ||
26 | import org.kde.discover.app 1.0 | 26 | import org.kde.discover.app 1.0 | ||
27 | import org.kde.discover 2.0 | 27 | import org.kde.discover 2.0 | ||
28 | import org.kde.kirigami 2.0 as Kirigami | 28 | import org.kde.kirigami 2.2 as Kirigami | ||
29 | 29 | | |||
30 | DiscoverPage { | 30 | DiscoverPage { | ||
31 | id: page | 31 | id: page | ||
32 | readonly property var model: appsModel | 32 | readonly property var model: appsModel | ||
33 | property alias category: appsModel.filteredCategory | 33 | property alias category: appsModel.filteredCategory | ||
34 | property alias sortRole: appsModel.sortRole | 34 | property alias sortRole: appsModel.sortRole | ||
35 | property alias sortOrder: appsModel.sortOrder | 35 | property alias sortOrder: appsModel.sortOrder | ||
36 | property alias originFilter: appsModel.originFilter | 36 | property alias originFilter: appsModel.originFilter | ||
37 | property alias mimeTypeFilter: appsModel.mimeTypeFilter | 37 | property alias mimeTypeFilter: appsModel.mimeTypeFilter | ||
38 | property alias stateFilter: appsModel.stateFilter | 38 | property alias stateFilter: appsModel.stateFilter | ||
39 | property alias extending: appsModel.extending | 39 | property alias extending: appsModel.extending | ||
40 | property alias search: appsModel.search | 40 | property alias search: appsModel.search | ||
41 | property alias resourcesUrl: appsModel.resourcesUrl | 41 | property alias resourcesUrl: appsModel.resourcesUrl | ||
42 | property alias isBusy: appsModel.isBusy | 42 | property alias isBusy: appsModel.isBusy | ||
43 | property alias allBackends: appsModel.allBackends | 43 | property alias allBackends: appsModel.allBackends | ||
44 | property alias count: apps.count | 44 | property alias count: apps.count | ||
45 | property alias listHeader: apps.header | | |||
46 | property Component listHeaderExtra | | |||
47 | property bool compact: page.width < 500 || !applicationWindow().wideScreen | 45 | property bool compact: page.width < 500 || !applicationWindow().wideScreen | ||
48 | 46 | | |||
49 | property bool canNavigate: true | 47 | property bool canNavigate: true | ||
50 | readonly property alias subcategories: appsModel.subcategories | | |||
51 | title: category ? category.name : "" | 48 | title: category ? category.name : "" | ||
52 | 49 | | |||
53 | onSearchChanged: { | 50 | onSearchChanged: { | ||
54 | appsModel.sortOrder = Qt.AscendingOrder | 51 | appsModel.sortOrder = Qt.AscendingOrder | ||
55 | } | 52 | } | ||
56 | signal clearSearch() | 53 | signal clearSearch() | ||
57 | 54 | | |||
58 | supportsRefreshing: true | 55 | supportsRefreshing: true | ||
59 | onRefreshingChanged: if (refreshing) { | 56 | onRefreshingChanged: if (refreshing) { | ||
60 | appsModel.invalidateFilter() | 57 | appsModel.invalidateFilter() | ||
61 | refreshing = false | 58 | refreshing = false | ||
62 | } | 59 | } | ||
60 | | ||||
61 | header: QQC2.ToolBar { | ||||
62 | bottomPadding: Kirigami.Units.largeSpacing | ||||
63 | height: Kirigami.Units.gridUnit * 2.3 | ||||
64 | Kirigami.Theme.inherit: false | ||||
65 | Kirigami.Theme.colorSet: Kirigami.Theme.Window | ||||
66 | contentItem: RowLayout { | ||||
67 | spacing: Kirigami.Units.smallSpacing | ||||
68 | | ||||
69 | // Category name | ||||
70 | Kirigami.Heading { | ||||
71 | level: 1 | ||||
72 | text: title | ||||
73 | maximumLineCount: 1 | ||||
74 | elide: Text.ElideRight | ||||
75 | horizontalAlignment: Text.AlignHCenter | ||||
76 | Layout.fillWidth: true | ||||
77 | } | ||||
78 | } | ||||
79 | } | ||||
80 | | ||||
63 | ListView { | 81 | ListView { | ||
64 | id: apps | 82 | id: apps | ||
65 | section.delegate: QQC2.Label { | 83 | section.delegate: QQC2.Label { | ||
66 | text: section | 84 | text: section | ||
67 | anchors { | 85 | anchors { | ||
68 | right: parent.right | 86 | right: parent.right | ||
69 | } | 87 | } | ||
70 | } | 88 | } | ||
71 | 89 | | |||
72 | headerPositioning: ListView.OverlayHeader | | |||
73 | header: CategoryDisplay { | | |||
74 | id: header | | |||
75 | category: appsModel.filteredCategory | | |||
76 | search: appsModel.search | | |||
77 | extra: page.listHeaderExtra | | |||
78 | } | | |||
79 | model: ResourcesProxyModel { | 90 | model: ResourcesProxyModel { | ||
80 | id: appsModel | 91 | id: appsModel | ||
81 | sortRole: ResourcesProxyModel.RatingCountRole | 92 | sortRole: ResourcesProxyModel.RatingCountRole | ||
82 | sortOrder: Qt.DescendingOrder | 93 | sortOrder: Qt.DescendingOrder | ||
83 | onBusyChanged: if (isBusy) { | 94 | onBusyChanged: if (isBusy) { | ||
84 | apps.currentIndex = -1 | 95 | apps.currentIndex = -1 | ||
85 | } | 96 | } | ||
86 | } | 97 | } | ||
▲ Show 20 Lines • Show All 81 Lines • Show Last 20 Lines |