Files
komplex-hub/KomplexHubContent/pages/HomePage.qml
T
2026-06-17 14:52:15 -04:00

212 lines
7.1 KiB
QML

import QtQuick
import QtQuick.Controls
import QtQuick.Layouts
import KomplexHub
import KomplexHub.Controls
import KomplexHub.Kero
import KomplexHubPlugin
Item {
readonly property bool searchable: false
property int resultsPerRow: (homePageRoot.width - (64 + Constants.largeMargin)) / (256 + Constants.largeMargin)
id: homePageRoot
NewestPacksModel
{
id: newestPacksModel
resultsPerPage: homePageRoot.resultsPerRow
}
FeaturedImagesModel
{
id: featuredImagesModel
resultsPerPage: homePageRoot.resultsPerRow
}
FeaturedVideosModel
{
id: featuredVideosModel
resultsPerPage: homePageRoot.resultsPerRow
}
Rectangle {
anchors.fill: parent
color: palette.base
ScrollView {
anchors.fill: parent
anchors.margins: Constants.largeMargin
ColumnLayout {
width: homePageRoot.width
// Featured Results
ColumnLayout {
width: parent.width
height: 420
Text {
color: palette.text
font.pixelSize: Constants.largeFont.pixelSize
text: "Newest Wallpaper Packs"
}
RowLayout {
Layout.fillWidth: true
Layout.preferredHeight: 256
Layout.alignment: Qt.AlignHCenter
Repeater {
model: newestPacksModel
delegate: Item {
width: 256
height: 256
required property string name
required property string author
required property string description
required property string uuid
required property string thumbnail
required property string authorId
SearchResultItem
{
anchors.fill: parent
title: parent.name
author: parent.author
description: parent.description
thumbnail: parent.thumbnail
uuid: parent.uuid
}
}
}
SquareButton {
Layout.fillHeight: true
Layout.preferredWidth: 64
icon.source: "qrc:/images/icons/icons8-forward.svg"
icon.height: 24
icon.width: 24
}
}
}
Item {
height: Constants.largeMargin
}
ColumnLayout {
width: parent.width
height: 420
Text {
color: palette.text
font.pixelSize: Constants.largeFont.pixelSize
text: "Featured Images"
}
RowLayout {
Layout.fillWidth: true
Layout.preferredHeight: 256
Layout.alignment: Qt.AlignHCenter
Repeater {
model: featuredImagesModel
delegate: Item {
width: 256
height: 256
required property string author
required property string description
required property string uuid
required property string thumbnail
required property string authorId
SearchResultItem
{
anchors.fill: parent
title: parent.author
author: qsTr("Pexels Images")
description: parent.description
thumbnail: parent.thumbnail
uuid: parent.uuid
}
}
}
SquareButton {
Layout.fillHeight: true
Layout.preferredWidth: 64
icon.source: "qrc:/images/icons/icons8-forward.svg"
icon.height: 24
icon.width: 24
}
}
}
Item {
height: Constants.largeMargin
}
ColumnLayout {
width: parent.width
height: 420
Text {
color: palette.text
font.pixelSize: Constants.largeFont.pixelSize
text: "Featured Videos"
}
RowLayout {
Layout.fillWidth: true
Layout.preferredHeight: 256
Layout.alignment: Qt.AlignHCenter
Repeater {
model: featuredVideosModel
delegate: Item {
width: 256
height: 256
required property string uuid
required property string author
required property string authorId
required property string authorUrl
required property string description
required property string thumbnail
required property string original
SearchResultItem
{
anchors.fill: parent
title: "Pexels Photo"
author: parent.author
description: parent.description
thumbnail: parent.thumbnail
uuid: parent.uuid
}
}
}
SquareButton {
Layout.fillHeight: true
Layout.preferredWidth: 64
icon.source: "qrc:/images/icons/icons8-forward.svg"
icon.height: 24
icon.width: 24
}
}
}
}
}
}
}