UI update

This commit is contained in:
Digital Artifex
2026-08-16 23:10:29 -04:00
parent a776997119
commit 294a38f26a
10 changed files with 514 additions and 239 deletions
+85 -73
View File
@@ -3,77 +3,89 @@
;Kero ;Kero
{ {
images/kero/kero_build_1.png, {
placeholders, images/kero/kero_build_1.png,
chatgpt5 placeholders,
} chatgpt5
{ },
images/kero/kero_build_2.png, {
placeholders, images/kero/kero_build_2.png,
chatgpt5 placeholders,
} chatgpt5
{ },
images/kero/kero_build_3.png, {
placeholders, images/kero/kero_build_3.png,
chatgpt5 placeholders,
} chatgpt5
{ },
images/kero/kero_build_4.png, {
placeholders, images/kero/kero_build_4.png,
chatgpt5 placeholders,
} chatgpt5
{ },
images/kero/kero_build_error.png, {
placeholders, images/kero/kero_build_error.png,
chatgpt5 placeholders,
} chatgpt5
{ },
images/kero/kero_choice.png, {
placeholders, images/kero/kero_choice.png,
chatgpt5 placeholders,
} chatgpt5
{ },
images/kero/kero_hello.png, {
placeholders, images/kero/kero_hello.png,
chatgpt5 placeholders,
} chatgpt5
{ },
images/kero/kero_login.png, {
placeholders, images/kero/kero_login.png,
chatgpt5 placeholders,
} chatgpt5
{ },
images/kero/kero_no_results.png, {
placeholders, images/kero/kero_no_results.png,
chatgpt5 placeholders,
} chatgpt5
{ },
images/kero/kero_run_1.png, {
placeholders, images/kero/kero_run_1.png,
chatgpt5 placeholders,
} chatgpt5
{ },
images/kero/kero_run_2.png, {
placeholders, images/kero/kero_run_2.png,
chatgpt5 placeholders,
} chatgpt5
{ },
images/kero/kero_run_3.png, {
placeholders, images/kero/kero_run_3.png,
chatgpt5 placeholders,
} chatgpt5
{ },
images/kero/kero_run_4.png, {
placeholders, images/kero/kero_run_4.png,
chatgpt5 placeholders,
} chatgpt5
{ },
images/kero/kero_warning.png, {
placeholders, images/kero/kero_warning.png,
chatgpt5 placeholders,
} chatgpt5
{ },
images/kero/kero_success.png, {
placeholders, images/kero/kero_success.png,
chatgpt5 placeholders,
chatgpt5
},
{
images/kero/kero_spotlight.png,
placeholders,
chatgpt5
},
{
images/kero/kero_star.png,
placeholders,
chatgpt5
}
} }
+2
View File
@@ -97,6 +97,8 @@ qt_add_resources(${CMAKE_PROJECT_NAME} "app_images"
"images/kero/kero_run_3.png" "images/kero/kero_run_3.png"
"images/kero/kero_run_4.png" "images/kero/kero_run_4.png"
"images/kero/kero_success.png" "images/kero/kero_success.png"
"images/kero/kero_spotlight.png"
"images/kero/kero_star.png"
"images/kero/kero_warning.png" "images/kero/kero_warning.png"
) )
+331 -165
View File
@@ -1,5 +1,5 @@
import QtQuick import QtQuick
import QtQuick.Controls import QtQuick.Controls 2.0
import QtQuick.Layouts import QtQuick.Layouts
import QtQuick.Effects import QtQuick.Effects
@@ -47,193 +47,359 @@ Item
resultsPerPage: 0 resultsPerPage: 0
} }
Rectangle ScrollView
{ {
anchors.fill: parent id: resultsLayout
color: palette.base visible: opacity > 0.01
anchors.right: parent.right
anchors.left: parent.left
anchors.top: parent.top
anchors.bottom: parent.bottom
ColumnLayout ScrollBar.horizontal.interactive: false
ScrollBar.vertical.interactive: true
onWidthChanged: content.width = width
Column
{ {
id: resultsLayout id: content
visible: opacity > 0.01 anchors.right: parent.right
anchors.fill: parent anchors.top: parent.top
anchors.margins: Constants.mediumMargin
Text VerticalSpacer{ height: Constants.largeMargin }
Rectangle
{ {
Layout.alignment: Qt.AlignTop anchors.left: parent.left
Layout.preferredHeight: 50 anchors.right: parent.right
height: childrenRect.height
anchors.margins: Constants.largeMargin
color: palette.text color: palette.base
font.pixelSize: Constants.h2Font.pixelSize border.color: palette.midlight
font.bold: true
text: qsTr("Newest Wallpaper Packs") Column
verticalAlignment: Qt.AlignVCenter {
anchors.left: parent.left
anchors.right: parent.right
KeroHeader
{
height: 180
anchors.left: parent.left
anchors.right: parent.right
}
Rectangle
{
anchors.left: parent.left
anchors.right: parent.right
height: childrenRect.height
color: palette.window
Column
{
anchors.left: parent.left
anchors.right: parent.right
anchors.margins: Constants.largeMargin
Text
{
anchors.left: parent.left
anchors.right: parent.right
height: 36
color: palette.text
font.pixelSize: Constants.h2Font.pixelSize
font.bold: true
text: qsTr("Featured Live Wallpapers")
verticalAlignment: Qt.AlignVCenter
}
HorizontalPaginator
{
anchors.left: parent.left
anchors.right: parent.right
height: 245
id: packsPaginator
model: packsModel
delegate: ItemDelegate
{
width: resultWidth
height: resultHeight
required property string name
required property string author
required property string description
required property string uuid
required property string thumbnail
required property string authorId
required property int index
SearchResultItem
{
anchors.fill: parent
title: parent.name
author: parent.author
description: parent.description
thumbnail: parent.thumbnail
uuid: parent.uuid
selected: packsPaginator.currentIndex === parent.index
onTriggered: () => packsPaginator.currentIndex = parent.index
onViewMoreTriggered: () =>
{
showWallpaperPopup(parent.index)
}
onThumbnailChanged: () =>
{
console.log(index + " " + thumbnail + " " + parent.thumbnail)
}
}
}
onViewMoreTriggered: () =>
{
showFeaturedPacksPage()
}
}
Text
{
anchors.left: parent.left
anchors.right: parent.right
height: 36
color: palette.text
font.pixelSize: Constants.h2Font.pixelSize
font.bold: true
text: qsTr("Featured Images")
verticalAlignment: Qt.AlignVCenter
}
HorizontalPaginator
{
id: imagesPaginator
anchors.left: parent.left
anchors.right: parent.right
height: 245
model: imagesModel
delegate: ItemDelegate
{
width: resultWidth
height: resultHeight
required property string author
required property string description
required property string uuid
required property string thumbnail
required property string authorId
required property int index
SearchResultItem
{
anchors.fill: parent
title: parent.author
description: parent.description
thumbnail: parent.thumbnail
uuid: parent.uuid
pexels: true
selected: imagesPaginator.currentIndex === parent.index
onTriggered: () => imagesPaginator.currentIndex = parent.index
onViewMoreTriggered: () =>
{
showImagePopup(parent.index)
}
}
}
onViewMoreTriggered: () =>
{
showFeaturedImagesPage()
}
}
VerticalSpacer{ height: Constants.largeMargin }
}
}
}
} }
HorizontalPaginator VerticalSpacer{ height: Constants.largeMargin }
Rectangle
{ {
id: packsPaginator anchors.left: parent.left
Layout.fillWidth: true anchors.right: parent.right
Layout.preferredHeight: 245 height: childrenRect.height
Layout.alignment: Qt.AlignTop anchors.margins: Constants.largeMargin
model: packsModel color: palette.base
delegate: ItemDelegate border.color: palette.midlight
Column
{ {
width: resultWidth anchors.left: parent.left
height: resultHeight anchors.right: parent.right
required property string name KeroHeader
required property string author
required property string description
required property string uuid
required property string thumbnail
required property string authorId
required property int index
SearchResultItem
{ {
anchors.fill: parent height: 180
title: parent.name anchors.left: parent.left
author: parent.author anchors.right: parent.right
description: parent.description title: qsTr("New & Popular Wallpapers")
thumbnail: parent.thumbnail image: "qrc:/images/kero/kero_star.png"
uuid: parent.uuid }
selected: packsPaginator.currentIndex === parent.index Rectangle
{
anchors.left: parent.left
anchors.right: parent.right
anchors.margins: Constants.largeMargin
height: childrenRect.height
onTriggered: () => packsPaginator.currentIndex = parent.index color: palette.window
onViewMoreTriggered: () => Column
{ {
showWallpaperPopup(parent.index) anchors.left: parent.left
} anchors.right: parent.right
onThumbnailChanged: () => Text
{ {
console.log(index + " " + thumbnail + " " + parent.thumbnail) anchors.left: parent.left
anchors.right: parent.right
height: 36
color: palette.text
font.pixelSize: Constants.h2Font.pixelSize
font.bold: true
text: qsTr("Newest Wallpaper Packs")
verticalAlignment: Qt.AlignVCenter
}
HorizontalPaginator
{
anchors.left: parent.left
anchors.right: parent.right
height: 245
id: packsPaginator2
model: packsModel
delegate: ItemDelegate
{
width: resultWidth
height: resultHeight
required property string name
required property string author
required property string description
required property string uuid
required property string thumbnail
required property string authorId
required property int index
SearchResultItem
{
anchors.fill: parent
title: parent.name
author: parent.author
description: parent.description
thumbnail: parent.thumbnail
uuid: parent.uuid
selected: packsPaginator2.currentIndex === parent.index
onTriggered: () => packsPaginator2.currentIndex = parent.index
onViewMoreTriggered: () =>
{
showWallpaperPopup(parent.index)
}
onThumbnailChanged: () =>
{
console.log(index + " " + thumbnail + " " + parent.thumbnail)
}
}
}
onViewMoreTriggered: () =>
{
showFeaturedPacksPage()
}
}
Text
{
anchors.left: parent.left
anchors.right: parent.right
height: 36
color: palette.text
font.pixelSize: Constants.h2Font.pixelSize
font.bold: true
text: qsTr("Popular Videos")
verticalAlignment: Qt.AlignVCenter
}
HorizontalPaginator
{
id: videosPaginator
anchors.left: parent.left
anchors.right: parent.right
height: 245
model: videosModel
delegate: ItemDelegate
{
width: resultWidth
height: resultHeight
required property string uuid
required property string author
required property string authorId
required property string authorUrl
required property string thumbnail
required property int index
SearchResultItem
{
anchors.fill: parent
title: parent.author
thumbnail: parent.thumbnail
uuid: parent.uuid
pexels: true
selected: videosPaginator.currentIndex === parent.index
onTriggered: () => videosPaginator.currentIndex = parent.index
onViewMoreTriggered:() => showVideoPopup(parent.index)
}
}
onViewMoreTriggered: () =>
{
showFeaturedVideosPage()
}
}
VerticalSpacer{ height: Constants.largeMargin }
} }
} }
} }
onViewMoreTriggered: () => VerticalSpacer{}
{
showFeaturedPacksPage()
}
} }
Text
{
Layout.alignment: Qt.AlignTop
Layout.preferredHeight: 50
color: palette.text
font.pixelSize: Constants.h2Font.pixelSize
font.bold: true
text: qsTr("Featured Images")
verticalAlignment: Qt.AlignVCenter
}
HorizontalPaginator
{
id: imagesPaginator
Layout.fillWidth: true
Layout.preferredHeight: 245
Layout.alignment: Qt.AlignTop
model: imagesModel
delegate: ItemDelegate
{
width: resultWidth
height: resultHeight
required property string author
required property string description
required property string uuid
required property string thumbnail
required property string authorId
required property int index
SearchResultItem
{
anchors.fill: parent
title: parent.author
description: parent.description
thumbnail: parent.thumbnail
uuid: parent.uuid
pexels: true
selected: imagesPaginator.currentIndex === parent.index
onTriggered: () => imagesPaginator.currentIndex = parent.index
onViewMoreTriggered: () =>
{
showImagePopup(parent.index)
}
}
}
onViewMoreTriggered: () =>
{
showFeaturedImagesPage()
}
}
Text
{
Layout.alignment: Qt.AlignTop
Layout.preferredHeight: 50
color: palette.text
font.pixelSize: Constants.h2Font.pixelSize
font.bold: true
text: qsTr("Popular Videos")
verticalAlignment: Qt.AlignVCenter
}
HorizontalPaginator
{
id: videosPaginator
Layout.fillWidth: true
Layout.preferredHeight: 245
Layout.alignment: Qt.AlignTop
model: videosModel
delegate: ItemDelegate
{
width: resultWidth
height: resultHeight
required property string uuid
required property string author
required property string authorId
required property string authorUrl
required property string thumbnail
required property int index
SearchResultItem
{
anchors.fill: parent
title: parent.author
thumbnail: parent.thumbnail
uuid: parent.uuid
pexels: true
selected: videosPaginator.currentIndex === parent.index
onTriggered: () => videosPaginator.currentIndex = parent.index
onViewMoreTriggered:() => showVideoPopup(parent.index)
}
}
onViewMoreTriggered: () =>
{
showFeaturedVideosPage()
}
}
/* spacer */
Item { Layout.fillHeight: true }
} }
} }
+1
View File
@@ -21,5 +21,6 @@ qt6_add_qml_module(KomplexHubModule_Controls
QML_FILES QML_FILES
QML_FILES VideoView.qml QML_FILES VideoView.qml
QML_FILES PackView.qml QML_FILES PackView.qml
QML_FILES VerticalSpacer.qml
) )
@@ -28,6 +28,7 @@ Item
signal viewMoreTriggered() signal viewMoreTriggered()
id: rootItem id: rootItem
clip: true
Item Item
{ {
@@ -57,6 +58,7 @@ Item
id: resultsView id: resultsView
Layout.fillHeight: true Layout.fillHeight: true
Layout.fillWidth: true Layout.fillWidth: true
clip: true
spacing: Constants.mediumMargin spacing: Constants.mediumMargin
@@ -132,7 +134,7 @@ Item
Item Item
{ {
Layout.fillHeight: true Layout.fillHeight: true
Layout.preferredWidth: 128 Layout.preferredWidth: 64
Rectangle Rectangle
{ {
id: gradientMap id: gradientMap
@@ -0,0 +1,9 @@
import QtQuick
Rectangle
{
height: 36
color: "transparent"
anchors.left: parent.left
anchors.right: parent.right
}
+1
View File
@@ -11,4 +11,5 @@ qt6_add_qml_module(KomplexHubModule_Kero
"KeroLoadingAnimation.qml" "KeroLoadingAnimation.qml"
"KeroNoResultsAvatar.qml" "KeroNoResultsAvatar.qml"
"KeroWarningAvatar.qml" "KeroWarningAvatar.qml"
QML_FILES KeroHeader.qml
) )
+82
View File
@@ -0,0 +1,82 @@
import QtQuick
import QtQuick.Controls 2.0
import QtQuick.Layouts
import KomplexHub
Item
{
property string title: qsTr("Wallpaper Spotlight")
property string description: qsTr("Featured Images and Live Wallpaper Packs")
property color color: palette.alternateBase
property string image: "qrc:/images/kero/kero_spotlight.png"
id: rootItem
Rectangle
{
anchors.fill: parent
color: rootItem.color
border.color: palette.midlight
RowLayout
{
anchors.fill: parent
Item
{
Layout.fillHeight: true
Layout.fillWidth: true
}
Rectangle
{
Layout.fillHeight: true
Layout.preferredWidth: height
Layout.alignment: Qt.AlignLeft
color: "transparent"
Image
{
anchors.fill: parent
source: image
antialiasing: true
fillMode: Image.PreserveAspectFit
}
}
ColumnLayout
{
Layout.fillHeight: true
Layout.fillWidth: true
Layout.alignment: Qt.AlignLeft
Text
{
color: palette.text
text: rootItem.title
font: Constants.h1Font
Layout.alignment: Qt.AlignHCenter | Qt.AlignBottom
}
Text
{
id: errorText
text: rootItem.description
color: palette.text.darker()
Layout.alignment: Qt.AlignHCenter | Qt.AlignBottom
Layout.bottomMargin: Constants.largeMargin
}
}
Item
{
Layout.fillHeight: true
Layout.fillWidth: true
}
}
}
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB