Inital commit of the Komplex Hub
@@ -0,0 +1,18 @@
|
||||
import QtQuick
|
||||
import KomplexHub
|
||||
|
||||
Window {
|
||||
|
||||
visible: true
|
||||
flags: Qt.Window
|
||||
title: "KomplexHub"
|
||||
|
||||
MainScreen {
|
||||
antialiasing: true
|
||||
id: mainScreen
|
||||
|
||||
anchors.fill: parent
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
import QtQuick.tooling 1.2
|
||||
|
||||
// This file describes the plugin-supplied types contained in the library.
|
||||
// It is used for QML tooling purposes only.
|
||||
//
|
||||
// This file was auto-generated by qmltyperegistrar.
|
||||
|
||||
Module {}
|
||||
@@ -0,0 +1,6 @@
|
||||
<RCC>
|
||||
<qresource prefix="/">
|
||||
<file alias="/qt/qml/KomplexHubContent">/home/parametheus/Projects/QtDesigner/KomplexHub/build/qml/KomplexHubContent</file>
|
||||
|
||||
</qresource>
|
||||
</RCC>
|
||||
@@ -0,0 +1,285 @@
|
||||
/*
|
||||
This is a UI file (.ui.qml) that is intended to be edited in Qt Design Studio only.
|
||||
It is supposed to be strictly declarative and only uses a subset of QML. If you edit
|
||||
this file manually, you might introduce QML code that is not supported by Qt Design Studio.
|
||||
Check out https://doc.qt.io/qtcreator/creator-quick-ui-forms.html for details on .ui.qml files.
|
||||
*/
|
||||
import QtQuick
|
||||
import QtQuick.Controls
|
||||
import QtQuick.Layouts
|
||||
import KomplexHub
|
||||
import KomplexHub.Controls
|
||||
import KomplexHub.Kero
|
||||
|
||||
Rectangle {
|
||||
property MenuButton currentMenuButton
|
||||
|
||||
id: windowRoot
|
||||
|
||||
color: palette.window
|
||||
RowLayout {
|
||||
id: windowRootLayout
|
||||
anchors.fill: parent
|
||||
|
||||
Rectangle {
|
||||
id: windowMenu
|
||||
|
||||
Layout.fillWidth: false
|
||||
Layout.fillHeight: true
|
||||
Layout.preferredWidth: 100
|
||||
Layout.minimumWidth: 100
|
||||
Layout.maximumWidth: 100
|
||||
|
||||
color: palette.base
|
||||
|
||||
ColumnLayout {
|
||||
id: windowMenuLayout
|
||||
anchors.fill: parent
|
||||
|
||||
MenuButton {
|
||||
id: homeMenubutton
|
||||
Layout.alignment: Qt.AlignTop
|
||||
|
||||
height: 64
|
||||
width: 100
|
||||
text: "Home"
|
||||
|
||||
icon.height: 32
|
||||
icon.width: 32
|
||||
icon.url: Qt.resolvedUrl("images/icons/icons8-famous.svg")
|
||||
|
||||
onTriggered: () => {
|
||||
pageLoader.page = "pages/HomePage.qml"
|
||||
|
||||
currentMenuButton.selected = false
|
||||
currentMenuButton = this
|
||||
|
||||
searchContainer.preferredHeight = 0
|
||||
}
|
||||
}
|
||||
|
||||
MenuButton {
|
||||
Layout.alignment: Qt.AlignTop
|
||||
|
||||
height: 64
|
||||
width: 100
|
||||
text: "Images"
|
||||
|
||||
icon.height: 32
|
||||
icon.width: 32
|
||||
icon.url: Qt.resolvedUrl("images/icons/icons8-image.svg")
|
||||
|
||||
onTriggered: () => {
|
||||
pageLoader.page = "pages/ImageSearchPage.qml"
|
||||
|
||||
currentMenuButton.selected = false
|
||||
currentMenuButton = this
|
||||
|
||||
searchContainer.preferredHeight = 36
|
||||
}
|
||||
}
|
||||
|
||||
MenuButton {
|
||||
Layout.alignment: Qt.AlignTop
|
||||
|
||||
height: 64
|
||||
width: 100
|
||||
text: "Live"
|
||||
|
||||
icon.height: 32
|
||||
icon.width: 32
|
||||
icon.url: Qt.resolvedUrl("images/icons/icons8-biotech.svg")
|
||||
|
||||
onTriggered: () => {
|
||||
pageLoader.page = "pages/LiveSearchPage.qml"
|
||||
|
||||
currentMenuButton.selected = false
|
||||
currentMenuButton = this
|
||||
|
||||
searchContainer.preferredHeight = 36
|
||||
}
|
||||
}
|
||||
|
||||
MenuButton {
|
||||
Layout.alignment: Qt.AlignTop
|
||||
|
||||
height: 64
|
||||
width: 100
|
||||
text: "Installed"
|
||||
|
||||
icon.height: 32
|
||||
icon.width: 32
|
||||
icon.url: Qt.resolvedUrl("images/icons/icons8-hdd.svg")
|
||||
|
||||
onTriggered: () => {
|
||||
pageLoader.page = "pages/InstalledWallpaperPage.qml"
|
||||
|
||||
currentMenuButton.selected = false
|
||||
currentMenuButton = this
|
||||
|
||||
searchContainer.preferredHeight = 0
|
||||
}
|
||||
}
|
||||
|
||||
Item {
|
||||
Layout.fillHeight: true
|
||||
}
|
||||
|
||||
MenuButton {
|
||||
Layout.alignment: Qt.AlignBottom
|
||||
|
||||
height: 64
|
||||
width: 100
|
||||
text: "Settings"
|
||||
|
||||
icon.height: 32
|
||||
icon.width: 32
|
||||
icon.url: Qt.resolvedUrl("images/icons/icons8-settings.svg")
|
||||
|
||||
onTriggered: () => {
|
||||
pageLoader.page = "pages/SettingsPage.qml"
|
||||
|
||||
currentMenuButton.selected = false
|
||||
currentMenuButton = this
|
||||
|
||||
searchContainer.preferredHeight = 0
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
id: windowContainer
|
||||
|
||||
Layout.fillHeight: true
|
||||
Layout.fillWidth: true
|
||||
Layout.topMargin: 3
|
||||
|
||||
color: palette.window
|
||||
|
||||
ColumnLayout {
|
||||
id: windowContainerLayout
|
||||
anchors.fill: parent
|
||||
|
||||
SearchBar {
|
||||
property int preferredHeight: 36
|
||||
|
||||
id: searchContainer
|
||||
|
||||
Layout.fillHeight: false
|
||||
Layout.fillWidth: true
|
||||
Layout.preferredHeight: preferredHeight
|
||||
Layout.minimumHeight: preferredHeight
|
||||
Layout.maximumHeight: preferredHeight
|
||||
|
||||
icon: Qt.resolvedUrl("images/icons/icons8-search.svg")
|
||||
|
||||
Behavior on preferredHeight {
|
||||
NumberAnimation { duration: Constants.normalAnimationDuration }
|
||||
}
|
||||
}
|
||||
|
||||
Loader {
|
||||
property bool loading: false
|
||||
property string page
|
||||
|
||||
onPageChanged: () => {
|
||||
loading = true
|
||||
fadeOutPage()
|
||||
}
|
||||
|
||||
id: pageLoader
|
||||
|
||||
Layout.fillHeight: true
|
||||
Layout.fillWidth: true
|
||||
|
||||
OpacityAnimator on opacity {
|
||||
id: pageLoaderAnimation
|
||||
|
||||
target: pageLoader
|
||||
duration: 150
|
||||
|
||||
onFinished: () => {
|
||||
if(pageLoader.loading && pageLoader.opacity === 0)
|
||||
pageLoader.loadPage()
|
||||
else if(pageLoader.loading && pageLoader.opacity === 1)
|
||||
pageLoader.loading = false
|
||||
}
|
||||
}
|
||||
|
||||
function fadeOutPage() {
|
||||
pageLoaderAnimation.from = 1
|
||||
pageLoaderAnimation.to = 0
|
||||
pageLoaderAnimation.start()
|
||||
}
|
||||
|
||||
function fadeInPage() {
|
||||
if(pageLoader.sourceComponent.status != Component.Ready)
|
||||
return
|
||||
|
||||
pageLoaderAnimation.from = 0
|
||||
pageLoaderAnimation.to = 1
|
||||
pageLoaderAnimation.start()
|
||||
}
|
||||
|
||||
function loadPage() {
|
||||
sourceComponent = Qt.createComponent(page)
|
||||
|
||||
if(pageLoader.sourceComponent.status == Component.Ready)
|
||||
fadeInPage()
|
||||
else
|
||||
statusChanged.connect(fadeInPage)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
KeroBuildingAnimation {
|
||||
id: buildingOverlay
|
||||
|
||||
anchors.fill: parent
|
||||
visible: false
|
||||
}
|
||||
|
||||
KeroLoadingAnimation {
|
||||
id: loadingAnimation
|
||||
anchors.fill: parent
|
||||
|
||||
// OpacityAnimator on opacity {
|
||||
// duration: 150
|
||||
// }
|
||||
|
||||
visible: opacity > 0
|
||||
opacity: 0
|
||||
}
|
||||
|
||||
Component.onCompleted: () => {
|
||||
homeMenubutton.selected = true
|
||||
currentMenuButton = homeMenubutton
|
||||
pageLoader.page = "pages/HomePage.qml"
|
||||
searchContainer.preferredHeight = 0
|
||||
loadingAnimation.opacity = 0
|
||||
}
|
||||
|
||||
states: [
|
||||
State {
|
||||
name: "build_error"
|
||||
PropertyChanges {
|
||||
target: windowOverlay
|
||||
visible: true
|
||||
}
|
||||
},
|
||||
State {
|
||||
name: "building"
|
||||
PropertyChanges {
|
||||
target: buildingOverlay
|
||||
visible: true
|
||||
}
|
||||
},
|
||||
State {
|
||||
name: "build_complete"
|
||||
}
|
||||
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
<svg fill="#EBEBEB" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 72 72" width="64px" height="64px"><path d="M46.023,59.542c-1.008,0-2.016-0.378-2.794-1.137L23.183,38.844c-0.771-0.752-1.206-1.785-1.206-2.863 s0.435-2.11,1.206-2.863L43.19,13.596c1.582-1.542,4.113-1.512,5.657,0.069c1.542,1.581,1.512,4.114-0.069,5.656l-17.074,16.66 l17.113,16.698c1.581,1.542,1.611,4.075,0.069,5.656C48.103,59.138,47.063,59.542,46.023,59.542z"/></svg>
|
||||
|
After Width: | Height: | Size: 436 B |
@@ -0,0 +1 @@
|
||||
<?xml version="1.0"?><svg fill="#EBEBEB" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 50 50" width="50px" height="50px"> <path d="M6,2v46h38V2H6z M27,39H13v-2h14V39z M27,33H13v-2h14V33z M27,27H13v-2h14V27z M37,39h-5v-2h5V39z M37,33h-5v-2h5V33z M37,27h-5v-2h5V27z M37,13H13v-2h24V13z"/></svg>
|
||||
|
After Width: | Height: | Size: 298 B |
@@ -0,0 +1 @@
|
||||
<svg fill="#EBEBEB" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 50 50" width="50px" height="50px"><path d="M 8.9375 1.96875 C 8.863281 1.976563 8.792969 1.984375 8.71875 2 C 7.714844 2.15625 6.988281 3.046875 7.03125 4.0625 C 7.230469 11.042969 9.492188 15.933594 12.78125 19.375 C 15.101563 21.800781 17.84375 23.511719 20.625 25 C 13.867188 28.640625 7.34375 33.683594 7 45.96875 C 6.96875 47.074219 7.863281 47.96875 8.96875 48 C 8.988281 48 8.980469 48.03125 9 48.03125 C 10.078125 48.03125 10.96875 47.148438 11 46.0625 C 11.328125 34.269531 17.871094 30.816406 25.5 27 C 25.835938 26.925781 26.148438 26.761719 26.40625 26.53125 C 34.101563 22.675781 42.605469 18.125 43 4.03125 C 43.03125 2.925781 42.136719 2.03125 41.03125 2 C 39.953125 1.988281 39.03125 2.832031 39 3.9375 C 39 3.960938 39 3.976563 39 4 L 13 4 C 12.96875 4 12.9375 4 12.90625 4 C 12.875 4 12.84375 4 12.8125 4 C 12.261719 4.050781 11.855469 4.542969 11.90625 5.09375 C 11.957031 5.644531 12.449219 6.050781 13 6 L 38.84375 6 C 38.773438 6.695313 38.679688 7.367188 38.5625 8 L 13.59375 8 C 13.5625 8 13.53125 8 13.5 8 C 13.46875 8 13.4375 8 13.40625 8 C 12.855469 8.050781 12.449219 8.542969 12.5 9.09375 C 12.550781 9.644531 13.042969 10.050781 13.59375 10 L 38.09375 10 C 37.886719 10.714844 37.648438 11.367188 37.375 12 L 16 12 C 15.96875 12 15.9375 12 15.90625 12 C 15.875 12 15.84375 12 15.8125 12 C 15.261719 12.050781 14.855469 12.542969 14.90625 13.09375 C 14.957031 13.644531 15.449219 14.050781 16 14 L 36.34375 14 C 35.902344 14.71875 35.40625 15.382813 34.875 16 L 19.40625 16 C 19.375 16 19.34375 16 19.3125 16 C 19.28125 16 19.25 16 19.21875 16 C 18.667969 16.050781 18.261719 16.542969 18.3125 17.09375 C 18.363281 17.644531 18.855469 18.050781 19.40625 18 L 32.84375 18 C 31.976563 18.722656 31.046875 19.382813 30.0625 20 L 25 20 C 24.96875 20 24.9375 20 24.90625 20 C 24.875 20 24.84375 20 24.8125 20 C 24.261719 20.050781 23.855469 20.542969 23.90625 21.09375 C 23.957031 21.644531 24.449219 22.050781 25 22 L 26.46875 22 C 25.988281 22.25 25.492188 22.503906 25 22.75 C 21.441406 20.957031 18.105469 19.15625 15.65625 16.59375 C 12.996094 13.8125 11.179688 10.171875 11 3.96875 C 11 3.425781 10.78125 2.910156 10.390625 2.53125 C 10.003906 2.15625 9.480469 1.953125 8.9375 1.96875 Z M 31.4375 26.15625 C 30.261719 26.824219 29.089844 27.417969 27.9375 28 L 24.3125 28 C 24.269531 27.996094 24.230469 27.996094 24.1875 28 C 24.15625 28 24.125 28 24.09375 28 C 23.542969 28.058594 23.140625 28.558594 23.203125 29.109375 C 23.261719 29.660156 23.761719 30.0625 24.3125 30 L 30.03125 30 C 31.015625 30.628906 31.960938 31.289063 32.8125 32 L 18.8125 32 C 18.769531 31.996094 18.730469 31.996094 18.6875 32 C 18.65625 32 18.625 32 18.59375 32 C 18.042969 32.058594 17.640625 32.558594 17.703125 33.109375 C 17.761719 33.660156 18.261719 34.0625 18.8125 34 L 34.875 34 C 35.414063 34.621094 35.898438 35.28125 36.34375 36 L 15.59375 36 C 15.5625 36 15.53125 36 15.5 36 C 15.46875 36 15.4375 36 15.40625 36 C 14.855469 36.050781 14.449219 36.542969 14.5 37.09375 C 14.550781 37.644531 15.042969 38.050781 15.59375 38 L 37.40625 38 C 37.675781 38.625 37.917969 39.296875 38.125 40 L 13.59375 40 C 13.5625 40 13.53125 40 13.5 40 C 13.46875 40 13.4375 40 13.40625 40 C 12.855469 40.050781 12.449219 40.542969 12.5 41.09375 C 12.550781 41.644531 13.042969 42.050781 13.59375 42 L 38.5625 42 C 38.679688 42.632813 38.773438 43.304688 38.84375 44 L 13 44 C 12.96875 44 12.9375 44 12.90625 44 C 12.875 44 12.84375 44 12.8125 44 C 12.261719 44.050781 11.855469 44.542969 11.90625 45.09375 C 11.957031 45.644531 12.449219 46.050781 13 46 L 39 46 C 39 46.011719 39 46.019531 39 46.03125 C 39.03125 47.117188 39.890625 48 40.96875 48 C 40.988281 48 41.011719 47.96875 41.03125 47.96875 C 42.136719 47.9375 43 47.042969 42.96875 45.9375 C 42.640625 34.542969 36.996094 29.527344 31.4375 26.15625 Z"/></svg>
|
||||
|
After Width: | Height: | Size: 3.8 KiB |
@@ -0,0 +1 @@
|
||||
<svg fill="#EBEBEB" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 50 50" width="50px" height="50px"><path d="M25,2C12.319,2,2,12.319,2,25s10.319,23,23,23s23-10.319,23-23S37.681,2,25,2z M33.71,32.29c0.39,0.39,0.39,1.03,0,1.42 C33.51,33.9,33.26,34,33,34s-0.51-0.1-0.71-0.29L25,26.42l-7.29,7.29C17.51,33.9,17.26,34,17,34s-0.51-0.1-0.71-0.29 c-0.39-0.39-0.39-1.03,0-1.42L23.58,25l-7.29-7.29c-0.39-0.39-0.39-1.03,0-1.42c0.39-0.39,1.03-0.39,1.42,0L25,23.58l7.29-7.29 c0.39-0.39,1.03-0.39,1.42,0c0.39,0.39,0.39,1.03,0,1.42L26.42,25L33.71,32.29z"/></svg>
|
||||
|
After Width: | Height: | Size: 549 B |
@@ -0,0 +1 @@
|
||||
<svg fill="#EBEBEB" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 50 50" width="50px" height="50px"><path d="M25,2C12.318,2,2,12.318,2,25c0,12.683,10.318,23,23,23c12.683,0,23-10.317,23-23C48,12.318,37.683,2,25,2z M35.827,16.562 L24.316,33.525l-8.997-8.349c-0.405-0.375-0.429-1.008-0.053-1.413c0.375-0.406,1.009-0.428,1.413-0.053l7.29,6.764l10.203-15.036 c0.311-0.457,0.933-0.575,1.389-0.266C36.019,15.482,36.138,16.104,35.827,16.562z"/></svg>
|
||||
|
After Width: | Height: | Size: 445 B |
@@ -0,0 +1 @@
|
||||
<?xml version="1.0"?><svg fill="#EBEBEB" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 50 50" width="50px" height="50px"> <path d="M41,4H9C6.24,4,4,6.24,4,9v32c0,2.76,2.24,5,5,5h32c2.76,0,5-2.24,5-5V9C46,6.24,43.76,4,41,4z M34.71,33.29l-1.42,1.42 L25,26.42l-8.29,8.29l-1.42-1.42L23.58,25l-8.29-8.29l1.42-1.42L25,23.58l8.29-8.29l1.42,1.42L26.42,25L34.71,33.29z"/></svg>
|
||||
|
After Width: | Height: | Size: 374 B |
@@ -0,0 +1 @@
|
||||
<svg fill="#EBEBEB" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32" width="64px" height="64px"><path d="M29.895,12.52c-0.235-0.704-0.829-1.209-1.549-1.319l-7.309-1.095l-3.29-6.984C17.42,2.43,16.751,2,16,2 s-1.42,0.43-1.747,1.122l-3.242,6.959l-7.357,1.12c-0.72,0.11-1.313,0.615-1.549,1.319c-0.241,0.723-0.063,1.507,0.465,2.046 l5.321,5.446l-1.257,7.676c-0.125,0.767,0.185,1.518,0.811,1.959c0.602,0.427,1.376,0.469,2.02,0.114l6.489-3.624l6.581,3.624 c0.646,0.355,1.418,0.311,2.02-0.114c0.626-0.441,0.937-1.192,0.811-1.959l-1.259-7.686l5.323-5.436 C29.958,14.027,30.136,13.243,29.895,12.52z"/></svg>
|
||||
|
After Width: | Height: | Size: 604 B |
@@ -0,0 +1 @@
|
||||
<svg fill="#EBEBEB" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 50 50" width="50px" height="50px"><path d="M 4 2 C 3.398438 2 3 2.398438 3 3 L 3 6 C 3 6.300781 3.113281 6.488281 3.3125 6.6875 L 19.3125 23.6875 C 19.511719 23.886719 19.800781 24 20 24 L 30 24 C 30.300781 24 30.488281 23.886719 30.6875 23.6875 L 46.6875 6.6875 C 46.886719 6.488281 47 6.300781 47 6 L 47 3 C 47 2.398438 46.601563 2 46 2 Z M 19 26 L 19 41 C 19 41.398438 19.199219 41.707031 19.5 41.90625 L 29.5 47.90625 C 29.601563 48.007813 29.800781 48 30 48 C 30.199219 48 30.300781 48.007813 30.5 47.90625 C 30.800781 47.707031 31 47.398438 31 47 L 31 26 Z"/></svg>
|
||||
|
After Width: | Height: | Size: 640 B |
@@ -0,0 +1 @@
|
||||
<svg fill="#EBEBEB" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 50 50" width="50px" height="50px"><path d="M 5 44.996094 C 4.984375 44.996094 4.972656 44.996094 4.957031 44.996094 C 4.417969 44.972656 3.992188 44.527344 4 43.988281 C 4.003906 43.742188 4.578125 19.679688 28 19.015625 L 28 12 C 28 11.613281 28.222656 11.261719 28.570313 11.097656 C 28.914063 10.929688 29.332031 10.980469 29.628906 11.222656 L 45.628906 24.222656 C 45.863281 24.414063 46 24.699219 46 25 C 46 25.300781 45.863281 25.585938 45.632813 25.777344 L 29.632813 38.777344 C 29.332031 39.019531 28.917969 39.066406 28.570313 38.902344 C 28.222656 38.738281 28 38.386719 28 38 L 28 31.007813 C 7.160156 31.386719 6.035156 43.542969 5.996094 44.066406 C 5.960938 44.59375 5.523438 44.996094 5 44.996094 Z"/></svg>
|
||||
|
After Width: | Height: | Size: 793 B |
@@ -0,0 +1 @@
|
||||
<svg fill="#EBEBEB" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 50 50" width="50px" height="50px"><path d="M 7.6875 0 C 6.777344 0 5.964844 0.6875 5.8125 1.59375 L 0.625 32.25 C 1.050781 32.09375 1.519531 32 2 32 L 48 32 C 48.46875 32 48.894531 32.101563 49.3125 32.25 L 44.1875 1.59375 C 44.035156 0.683594 43.226563 0 42.3125 0 Z M 25 8 C 32.726563 8 39 12.476563 39 18 C 39 23.519531 32.726563 28 25 28 C 17.273438 28 11 23.519531 11 18 C 11 12.476563 17.273438 8 25 8 Z M 25 15 C 23.34375 15 22 15.894531 22 17 C 22 18.105469 23.34375 19 25 19 C 26.65625 19 28 18.105469 28 17 C 28 15.894531 26.65625 15 25 15 Z M 2 34 C 0.898438 34 0 34.898438 0 36 L 0 48 C 0 49.101563 0.898438 50 2 50 L 48 50 C 49.101563 50 50 49.101563 50 48 L 50 36 C 50 34.898438 49.101563 34 48 34 Z M 40 40 C 41.105469 40 42 40.894531 42 42 C 42 43.105469 41.105469 44 40 44 C 38.894531 44 38 43.105469 38 42 C 38 40.894531 38.894531 40 40 40 Z"/></svg>
|
||||
|
After Width: | Height: | Size: 937 B |
@@ -0,0 +1 @@
|
||||
<svg fill="#EBEBEB" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 50 50" width="50px" height="50px"><path d="M 0 4 L 0 46 L 50 46 L 50 4 Z M 2 6 L 48 6 L 48 44 L 2 44 Z M 4 8 L 4 30.6875 L 17.3125 18.28125 C 17.507813 18.097656 17.769531 17.972656 18.03125 18 C 18.296875 18.011719 18.570313 18.117188 18.75 18.3125 L 29.03125 29.5625 L 33.28125 25.28125 C 33.671875 24.890625 34.328125 24.890625 34.71875 25.28125 L 46 36.59375 L 46 8 Z M 35 15 C 36.65625 15 38 16.34375 38 18 C 38 19.65625 36.65625 21 35 21 C 33.34375 21 32 19.65625 32 18 C 32 16.34375 33.34375 15 35 15 Z M 17.9375 20.40625 L 4 33.4375 L 4 42 L 46 42 L 46 39.40625 L 34 27.40625 L 26.40625 35 L 23.59375 35 L 27.625 30.96875 Z"/></svg>
|
||||
|
After Width: | Height: | Size: 709 B |
@@ -0,0 +1 @@
|
||||
<svg fill="#EBEBEB" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 50 50" width="50px" height="50px"><path d="M 25.017578 1.9824219 C 15.436898 1.9824219 7.2123268 7.8663695 3.7636719 16.220703 A 2.0002 2.0002 0 1 0 7.4609375 17.746094 C 10.308283 10.848427 17.072259 5.9824219 25.017578 5.9824219 C 35.534702 5.9824219 44.017578 14.465298 44.017578 24.982422 C 44.017578 35.499546 35.534702 43.982422 25.017578 43.982422 C 17.073352 43.982422 10.308226 39.118231 7.4609375 32.220703 A 2.0002 2.0002 0 1 0 3.7636719 33.746094 C 7.2123838 42.100566 15.437804 47.982422 25.017578 47.982422 C 37.696454 47.982422 48.017578 37.661298 48.017578 24.982422 C 48.017578 12.303546 37.696454 1.9824219 25.017578 1.9824219 z M 26.962891 15.962891 A 2.0002 2.0002 0 0 0 25.568359 19.396484 L 29.154297 22.982422 L 3.9824219 22.982422 A 2.0002 2.0002 0 1 0 3.9824219 26.982422 L 29.154297 26.982422 L 25.568359 30.568359 A 2.0002 2.0002 0 1 0 28.396484 33.396484 L 35.396484 26.396484 A 2.0002 2.0002 0 0 0 35.396484 23.568359 L 28.396484 16.568359 A 2.0002 2.0002 0 0 0 26.962891 15.962891 z"/></svg>
|
||||
|
After Width: | Height: | Size: 1.1 KiB |
@@ -0,0 +1 @@
|
||||
<svg fill="#EBEBEB" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 50 50" width="50px" height="50px"><path d="M 24.96875 1.96875 C 18.17279 1.96875 12.052876 4.9382251 7.8476562 9.6347656 A 2.0002 2.0002 0 1 0 10.826172 12.302734 C 14.306952 8.4152753 19.33471 5.96875 24.96875 5.96875 C 35.485874 5.96875 43.96875 14.451626 43.96875 24.96875 C 43.96875 35.485874 35.485874 43.96875 24.96875 43.96875 C 19.335804 43.96875 14.308056 41.522447 10.826172 37.634766 A 2.0002 2.0002 0 1 0 7.8476562 40.302734 C 12.053772 44.999053 18.173696 47.96875 24.96875 47.96875 C 37.647626 47.96875 47.96875 37.647626 47.96875 24.96875 C 47.96875 12.289874 37.647626 1.96875 24.96875 1.96875 z M 10.992188 15.949219 A 2.0002 2.0002 0 0 0 9.6171875 16.554688 L 2.7949219 23.376953 A 2.0002 2.0002 0 0 0 2.8027344 26.568359 L 9.6171875 33.382812 A 2.0002 2.0002 0 1 0 12.445312 30.554688 L 8.859375 26.96875 L 27.03125 26.96875 A 2.0002 2.0002 0 1 0 27.03125 22.96875 L 8.859375 22.96875 L 12.445312 19.382812 A 2.0002 2.0002 0 0 0 10.992188 15.949219 z"/></svg>
|
||||
|
After Width: | Height: | Size: 1.0 KiB |
@@ -0,0 +1 @@
|
||||
<svg fill="#EBEBEB" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 72 72" width="64px" height="64px"><path d="M25.977,59.542c-1.04,0-2.079-0.403-2.863-1.207c-1.542-1.581-1.512-4.114,0.069-5.656l17.113-16.698l-17.074-16.66 c-1.581-1.542-1.611-4.075-0.069-5.656c1.544-1.582,4.076-1.612,5.657-0.069l20.008,19.522c0.771,0.752,1.206,1.785,1.206,2.863 s-0.435,2.11-1.206,2.863L28.771,58.404C27.992,59.164,26.984,59.542,25.977,59.542z"/></svg>
|
||||
|
After Width: | Height: | Size: 438 B |
@@ -0,0 +1 @@
|
||||
<svg fill="#EBEBEB" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 50 50" width="50px" height="50px"><path d="M 45 45 C 44.476563 45 44.035156 44.59375 44.003906 44.066406 C 43.960938 43.519531 42.820313 31.386719 22 31.007813 L 22 38 C 22 38.386719 21.777344 38.738281 21.429688 38.902344 C 21.082031 39.066406 20.667969 39.019531 20.371094 38.777344 L 4.371094 25.777344 C 4.136719 25.585938 4 25.300781 4 25 C 4 24.699219 4.136719 24.414063 4.371094 24.222656 L 20.371094 11.222656 C 20.671875 10.980469 21.082031 10.929688 21.429688 11.097656 C 21.777344 11.261719 22 11.613281 22 12 L 22 19.015625 C 44.203125 19.644531 45.875 41.304688 45.992188 43.761719 C 46.011719 43.839844 46.019531 43.917969 46.019531 44 C 46.019531 44.554688 45.574219 45 45.019531 45 C 45.015625 45 45.007813 45 45 45 Z"/></svg>
|
||||
|
After Width: | Height: | Size: 811 B |
@@ -0,0 +1 @@
|
||||
<svg fill="#EBEBEB" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 50 50" width="50px" height="50px"><path d="M 21 3 C 11.601563 3 4 10.601563 4 20 C 4 29.398438 11.601563 37 21 37 C 24.355469 37 27.460938 36.015625 30.09375 34.34375 L 42.375 46.625 L 46.625 42.375 L 34.5 30.28125 C 36.679688 27.421875 38 23.878906 38 20 C 38 10.601563 30.398438 3 21 3 Z M 21 7 C 28.199219 7 34 12.800781 34 20 C 34 27.199219 28.199219 33 21 33 C 13.800781 33 8 27.199219 8 20 C 8 12.800781 13.800781 7 21 7 Z"/></svg>
|
||||
|
After Width: | Height: | Size: 506 B |
@@ -0,0 +1 @@
|
||||
<?xml version="1.0"?><svg fill="#EBEBEB" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 50 50" width="50px" height="50px"> <path d="M47.16,21.221l-5.91-0.966c-0.346-1.186-0.819-2.326-1.411-3.405l3.45-4.917c0.279-0.397,0.231-0.938-0.112-1.282 l-3.889-3.887c-0.347-0.346-0.893-0.391-1.291-0.104l-4.843,3.481c-1.089-0.602-2.239-1.08-3.432-1.427l-1.031-5.886 C28.607,2.35,28.192,2,27.706,2h-5.5c-0.49,0-0.908,0.355-0.987,0.839l-0.956,5.854c-1.2,0.345-2.352,0.818-3.437,1.412l-4.83-3.45 c-0.399-0.285-0.942-0.239-1.289,0.106L6.82,10.648c-0.343,0.343-0.391,0.883-0.112,1.28l3.399,4.863 c-0.605,1.095-1.087,2.254-1.438,3.46l-5.831,0.971c-0.482,0.08-0.836,0.498-0.836,0.986v5.5c0,0.485,0.348,0.9,0.825,0.985 l5.831,1.034c0.349,1.203,0.831,2.362,1.438,3.46l-3.441,4.813c-0.284,0.397-0.239,0.942,0.106,1.289l3.888,3.891 c0.343,0.343,0.884,0.391,1.281,0.112l4.87-3.411c1.093,0.601,2.248,1.078,3.445,1.424l0.976,5.861C21.3,47.647,21.717,48,22.206,48 h5.5c0.485,0,0.9-0.348,0.984-0.825l1.045-5.89c1.199-0.353,2.348-0.833,3.43-1.435l4.905,3.441 c0.398,0.281,0.938,0.232,1.282-0.111l3.888-3.891c0.346-0.347,0.391-0.894,0.104-1.292l-3.498-4.857 c0.593-1.08,1.064-2.222,1.407-3.408l5.918-1.039c0.479-0.084,0.827-0.5,0.827-0.985v-5.5C47.999,21.718,47.644,21.3,47.16,21.221z M25,32c-3.866,0-7-3.134-7-7c0-3.866,3.134-7,7-7s7,3.134,7,7C32,28.866,28.866,32,25,32z"/></svg>
|
||||
|
After Width: | Height: | Size: 1.3 KiB |
@@ -0,0 +1 @@
|
||||
<svg fill="#EBEBEB" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 50 50" width="50px" height="50px"><path d="M 2 2 C 0.894531 2 0 2.894531 0 4 C 0 5.105469 0.894531 6 2 6 C 3.105469 6 4 5.105469 4 4 L 8.65625 4 C 10.742188 4 11.542969 4.667969 12.21875 6.9375 L 20.21875 39.21875 C 20.644531 40.828125 21.125 42.609375 22.9375 43.46875 C 22.367188 44.160156 22 45.035156 22 46 C 22 48.207031 23.792969 50 26 50 C 28.207031 50 30 48.207031 30 46 C 30 45.269531 29.78125 44.589844 29.4375 44 L 35.5625 44 C 35.21875 44.589844 35 45.269531 35 46 C 35 48.207031 36.792969 50 39 50 C 41.207031 50 43 48.207031 43 46 C 43 44.960938 42.589844 44.023438 41.9375 43.3125 C 41.972656 43.210938 42 43.113281 42 43 C 42 42.449219 41.550781 42 41 42 L 25.71875 42 C 23.023438 42 22.730469 40.921875 22.15625 38.75 L 21.46875 36 L 39.8125 36 C 40.226563 36 40.605469 35.730469 40.75 35.34375 L 47.9375 16.34375 C 48.054688 16.039063 47.996094 15.707031 47.8125 15.4375 C 47.628906 15.167969 47.324219 15 47 15 L 16.28125 15 L 14.15625 6.40625 C 13.476563 4.117188 12.320313 2 8.65625 2 Z M 26 44 C 27.101563 44 28 44.898438 28 46 C 28 47.101563 27.101563 48 26 48 C 24.898438 48 24 47.101563 24 46 C 24 44.898438 24.898438 44 26 44 Z M 39 44 C 40.101563 44 41 44.898438 41 46 C 41 47.101563 40.101563 48 39 48 C 37.898438 48 37 47.101563 37 46 C 37 44.898438 37.898438 44 39 44 Z"/></svg>
|
||||
|
After Width: | Height: | Size: 1.3 KiB |
@@ -0,0 +1 @@
|
||||
<?xml version="1.0"?><svg fill="#EBEBEB" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 50 50" width="50px" height="50px"> <path d="M10.2,48.6c-0.2,0-0.4-0.1-0.6-0.2c-0.3-0.2-0.5-0.7-0.4-1.1l4.4-16.4L0.4,20.2C0,20-0.1,19.5,0,19.1 c0.1-0.4,0.5-0.7,0.9-0.7l17-0.9l6.1-15.9C24.2,1.3,24.6,1,25,1c0.4,0,0.8,0.3,0.9,0.6l6.1,15.9l17,0.9c0.4,0,0.8,0.3,0.9,0.7 c0.1,0.4,0,0.8-0.3,1.1L36.4,30.9l4.4,16.4c0.1,0.4,0,0.8-0.4,1.1c-0.3,0.2-0.8,0.3-1.1,0L25,39.2l-14.3,9.2 C10.5,48.6,10.4,48.6,10.2,48.6z"/></svg>
|
||||
|
After Width: | Height: | Size: 502 B |
@@ -0,0 +1 @@
|
||||
<svg fill="#EBEBEB" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 50 50" width="50px" height="50px"><path d="M 7 4 C 5.346 4 4 5.346 4 7 L 4 10.912109 C 3.9625533 11.094611 3 15.799274 3 18.5 C 3 19.87865 3.2660604 21.198539 3.9960938 22.251953 C 3.9974251 22.253874 3.9986651 22.255894 4 22.257812 L 4 43 C 4 44.657 5.343 46 7 46 L 43 46 C 44.657 46 46 44.657 46 43 L 46 22.257812 C 46.001335 22.255894 46.002575 22.253874 46.003906 22.251953 C 46.73394 21.198539 47 19.87865 47 18.5 C 47 15.799274 46.037447 11.09461 46 10.912109 L 46 7 C 46 5.346 44.654 4 43 4 L 7 4 z M 8 7 C 8.552 7 9 7.448 9 8 C 9 8.552 8.552 9 8 9 C 7.448 9 7 8.552 7 8 C 7 7.448 7.448 7 8 7 z M 11 7 C 11.552 7 12 7.448 12 8 C 12 8.552 11.552 9 11 9 C 10.448 9 10 8.552 10 8 C 10 7.448 10.448 7 11 7 z M 14 7 C 14.552 7 15 7.448 15 8 C 15 8.552 14.552 9 14 9 C 13.448 9 13 8.552 13 8 C 13 7.448 13.448 7 14 7 z M 5.8730469 12 L 10 12 L 10 20.886719 C 9.3615118 21.563076 8.4966284 22 7.5 22 C 6.5277884 22 6.0393417 21.686664 5.640625 21.111328 C 5.2419083 20.535993 5 19.60635 5 18.5 C 5 16.527448 5.7019741 12.911439 5.8730469 12 z M 12 12 L 17 12 L 17 20.886719 C 16.361512 21.563076 15.496628 22 14.5 22 C 13.504858 22 12.639028 21.566344 12 20.892578 L 12 12 z M 19 12 L 24 12 L 24 20.886719 C 23.361512 21.563076 22.496628 22 21.5 22 C 20.504858 22 19.639028 21.566344 19 20.892578 L 19 12 z M 26 12 L 31 12 L 31 20.886719 C 30.362395 21.562365 29.49642 22 28.5 22 C 27.504858 22 26.639028 21.566344 26 20.892578 L 26 12 z M 33 12 L 38 12 L 38 20.892578 C 37.361904 21.565869 36.495044 22 35.5 22 C 34.504858 22 33.638213 21.56588 33 20.892578 L 33 12 z M 40 12 L 44.126953 12 C 44.298026 12.911439 45 16.527448 45 18.5 C 45 19.60635 44.758092 20.535993 44.359375 21.111328 C 43.960658 21.686664 43.472212 22 42.5 22 C 41.504858 22 40.638213 21.56588 40 20.892578 L 40 12 z M 10 28 L 19 28 L 19 44 L 10 44 L 10 28 z M 24 28 L 40 28 L 40 40 L 24 40 L 24 28 z"/></svg>
|
||||
|
After Width: | Height: | Size: 1.9 KiB |
@@ -0,0 +1 @@
|
||||
<svg fill="#EBEBEB" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 50 50" width="50px" height="50px"><path d="M 19.875 4.40625 C 16.195313 4.472656 13.507813 5.570313 11.875 7.71875 C 9.941406 10.265625 9.589844 14.144531 10.8125 19.21875 C 10.363281 19.769531 10.023438 20.605469 10.15625 21.71875 C 10.421875 23.921875 11.277344 24.828125 12 25.1875 C 12.34375 26.917969 13.296875 28.863281 14.21875 29.78125 L 14.21875 30.25 C 14.226563 31.265625 14.222656 32.144531 14.125 33.28125 C 13.511719 34.6875 11.476563 35.511719 9.125 36.4375 C 5.21875 37.976563 0.363281 39.871094 0 45.9375 L -0.0625 47 L 40.0625 47 L 40 45.9375 C 39.976563 45.515625 39.910156 45.132813 39.84375 44.75 C 39.824219 44.652344 39.800781 44.5625 39.78125 44.46875 C 39.71875 44.179688 39.675781 43.894531 39.59375 43.625 C 39.570313 43.546875 39.523438 43.484375 39.5 43.40625 C 39.402344 43.121094 39.308594 42.824219 39.1875 42.5625 C 39.167969 42.519531 39.144531 42.480469 39.125 42.4375 C 38.980469 42.136719 38.828125 41.863281 38.65625 41.59375 C 36.871094 38.796875 33.660156 37.527344 30.90625 36.4375 C 28.566406 35.511719 26.519531 34.6875 25.90625 33.28125 C 25.808594 32.148438 25.835938 31.292969 25.84375 30.28125 L 25.84375 29.78125 C 26.742188 28.863281 27.664063 26.925781 28 25.1875 C 28.703125 24.824219 29.582031 23.914063 29.84375 21.71875 C 29.976563 20.628906 29.65625 19.800781 29.21875 19.25 C 29.800781 17.269531 30.988281 12.113281 28.9375 8.8125 C 28.488281 8.089844 27.90625 7.535156 27.21875 7.09375 C 26.90625 6.894531 26.578125 6.707031 26.21875 6.5625 C 25.855469 6.421875 25.472656 6.300781 25.0625 6.21875 C 24.117188 5.027344 22.304688 4.40625 19.875 4.40625 Z M 32.90625 5.40625 C 31.488281 5.433594 30.257813 5.664063 29.1875 6.0625 C 29.75 6.550781 30.25 7.128906 30.65625 7.78125 C 32.8125 11.253906 32.140625 15.988281 31.375 18.96875 C 31.800781 19.867188 31.941406 20.890625 31.8125 21.96875 C 31.535156 24.292969 30.679688 25.613281 29.78125 26.375 C 29.371094 27.890625 28.648438 29.449219 27.84375 30.53125 C 27.835938 31.289063 27.828125 31.929688 27.875 32.6875 C 28.417969 33.300781 30.242188 34.015625 31.625 34.5625 C 34.6875 35.773438 38.964844 37.480469 40.9375 41.59375 L 50.0625 41.59375 L 50 40.53125 C 49.6875 35.320313 45.539063 33.683594 42.21875 32.375 C 40.375 31.648438 38.632813 30.953125 38.125 29.84375 C 38.050781 28.910156 38.054688 28.183594 38.0625 27.34375 L 38.0625 27 C 38.859375 26.167969 39.59375 24.527344 39.875 23.15625 C 40.492188 22.808594 41.214844 22.003906 41.4375 20.15625 C 41.546875 19.234375 41.304688 18.523438 40.9375 18.03125 C 41.441406 16.292969 42.390625 11.972656 40.65625 9.1875 C 39.917969 8 38.804688 7.269531 37.34375 6.96875 C 36.507813 5.953125 34.972656 5.40625 32.90625 5.40625 Z"/></svg>
|
||||
|
After Width: | Height: | Size: 2.7 KiB |
@@ -0,0 +1 @@
|
||||
<svg fill="#EBEBEB" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 50 50" width="50px" height="50px"><path d="M 25 2 C 12.316406 2 2 12.316406 2 25 C 2 37.683594 12.316406 48 25 48 C 37.683594 48 48 37.683594 48 25 C 48 12.316406 37.683594 2 25 2 Z M 13 28 C 11.34375 28 10 26.65625 10 25 C 10 23.34375 11.34375 22 13 22 C 14.65625 22 16 23.34375 16 25 C 16 26.65625 14.65625 28 13 28 Z M 25 28 C 23.34375 28 22 26.65625 22 25 C 22 23.34375 23.34375 22 25 22 C 26.65625 22 28 23.34375 28 25 C 28 26.65625 26.65625 28 25 28 Z M 37 28 C 35.34375 28 34 26.65625 34 25 C 34 23.34375 35.34375 22 37 22 C 38.65625 22 40 23.34375 40 25 C 40 26.65625 38.65625 28 37 28 Z"/></svg>
|
||||
|
After Width: | Height: | Size: 673 B |
|
After Width: | Height: | Size: 128 KiB |
|
After Width: | Height: | Size: 133 KiB |
|
After Width: | Height: | Size: 129 KiB |
|
After Width: | Height: | Size: 122 KiB |
|
After Width: | Height: | Size: 138 KiB |
|
After Width: | Height: | Size: 121 KiB |
|
After Width: | Height: | Size: 115 KiB |
|
After Width: | Height: | Size: 107 KiB |
|
After Width: | Height: | Size: 204 KiB |
|
After Width: | Height: | Size: 124 KiB |
|
After Width: | Height: | Size: 87 KiB |
|
After Width: | Height: | Size: 90 KiB |
|
After Width: | Height: | Size: 87 KiB |
|
After Width: | Height: | Size: 85 KiB |
|
After Width: | Height: | Size: 101 KiB |
|
After Width: | Height: | Size: 101 KiB |
@@ -0,0 +1,128 @@
|
||||
import QtQuick
|
||||
import QtQuick.Controls
|
||||
import QtQuick.Layouts
|
||||
import KomplexHub
|
||||
import KomplexHub.Controls
|
||||
import "../Kero"
|
||||
|
||||
Item {
|
||||
readonly property bool searchable: false
|
||||
property int resultsPerRow: (homePageRoot.width - (64 + Constants.largeMargin)) / (256 + Constants.largeMargin)
|
||||
|
||||
id: homePageRoot
|
||||
|
||||
ScrollView {
|
||||
width: homePageRoot.width
|
||||
height: homePageRoot.height
|
||||
|
||||
ColumnLayout {
|
||||
width: homePageRoot.width
|
||||
|
||||
// Featured Results
|
||||
ColumnLayout {
|
||||
width: parent.width
|
||||
height: 420
|
||||
|
||||
Text {
|
||||
color: palette.text
|
||||
font.pixelSize: Constants.largeFont.pixelSize
|
||||
text: "Featured"
|
||||
}
|
||||
|
||||
RowLayout {
|
||||
|
||||
Layout.fillWidth: true
|
||||
Layout.preferredHeight: 256
|
||||
Layout.alignment: Qt.AlignHCenter
|
||||
|
||||
Repeater {
|
||||
model: resultsPerRow
|
||||
|
||||
delegate: SearchResultItem {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
SquareButton {
|
||||
Layout.fillHeight: true
|
||||
Layout.preferredWidth: 64
|
||||
|
||||
icon.source: "images/icons/icons8-forward.svg"
|
||||
icon.height: 24
|
||||
icon.width: 24
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ColumnLayout {
|
||||
width: parent.width
|
||||
height: 420
|
||||
|
||||
Text {
|
||||
color: palette.text
|
||||
font.pixelSize: Constants.largeFont.pixelSize
|
||||
text: "Newest"
|
||||
}
|
||||
|
||||
RowLayout {
|
||||
|
||||
Layout.fillWidth: true
|
||||
Layout.preferredHeight: 256
|
||||
Layout.alignment: Qt.AlignHCenter
|
||||
|
||||
Repeater {
|
||||
model: resultsPerRow
|
||||
|
||||
delegate: SearchResultItem {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
SquareButton {
|
||||
Layout.fillHeight: true
|
||||
Layout.preferredWidth: 64
|
||||
|
||||
icon.source: "images/icons/icons8-forward.svg"
|
||||
icon.height: 24
|
||||
icon.width: 24
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ColumnLayout {
|
||||
width: parent.width
|
||||
height: 420
|
||||
|
||||
Text {
|
||||
color: palette.text
|
||||
font.pixelSize: Constants.largeFont.pixelSize
|
||||
text: "Popular"
|
||||
}
|
||||
|
||||
RowLayout {
|
||||
|
||||
Layout.fillWidth: true
|
||||
Layout.preferredHeight: 256
|
||||
Layout.alignment: Qt.AlignHCenter
|
||||
|
||||
Repeater {
|
||||
model: resultsPerRow
|
||||
|
||||
delegate: SearchResultItem {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
SquareButton {
|
||||
Layout.fillHeight: true
|
||||
Layout.preferredWidth: 64
|
||||
|
||||
icon.source: "images/icons/icons8-forward.svg"
|
||||
icon.height: 24
|
||||
icon.width: 24
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,77 @@
|
||||
import QtQuick
|
||||
import QtQuick.Controls
|
||||
import KomplexHub
|
||||
import KomplexHub.Controls
|
||||
import "../Kero"
|
||||
|
||||
Item {
|
||||
id: imageSearchPageRoot
|
||||
|
||||
SearchResultList {
|
||||
id: searchResultList
|
||||
anchors.fill: parent
|
||||
}
|
||||
|
||||
KeroErrorAvatar {
|
||||
id: errorOverlay
|
||||
|
||||
anchors.fill: parent
|
||||
opacity: 0
|
||||
}
|
||||
|
||||
KeroNoResultsAvatar {
|
||||
id: noResultsOverlay
|
||||
|
||||
anchors.fill: parent
|
||||
opacity: 0
|
||||
}
|
||||
|
||||
KeroLoadingAnimation {
|
||||
id: loadingOverlay
|
||||
|
||||
anchors.fill: parent
|
||||
opacity: 0
|
||||
}
|
||||
|
||||
states: [
|
||||
State {
|
||||
name: "loading"
|
||||
when: searchResultList.state === "loading"
|
||||
|
||||
PropertyChanges {
|
||||
target: loadingOverlay
|
||||
opacity: 1
|
||||
}
|
||||
PropertyChanges {
|
||||
target: resultsView
|
||||
opacity: 0
|
||||
}
|
||||
},
|
||||
State {
|
||||
name: "empty"
|
||||
when: searchResultList.state === "empty"
|
||||
|
||||
PropertyChanges {
|
||||
target: noResultsOverlay
|
||||
opacity: 1
|
||||
}
|
||||
PropertyChanges {
|
||||
target: resultsView
|
||||
opacity: 0
|
||||
}
|
||||
},
|
||||
State {
|
||||
name: "error"
|
||||
when: searchResultList.state === "error"
|
||||
|
||||
PropertyChanges {
|
||||
target: errorOverlay
|
||||
opacity: 1
|
||||
}
|
||||
PropertyChanges {
|
||||
target: resultsView
|
||||
opacity: 0
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
import QtQuick
|
||||
import QtQuick.Controls
|
||||
|
||||
Item {
|
||||
id: root
|
||||
}
|
||||
@@ -0,0 +1,77 @@
|
||||
import QtQuick
|
||||
import QtQuick.Controls
|
||||
import KomplexHub
|
||||
import KomplexHub.Controls
|
||||
import "../Kero"
|
||||
|
||||
Item {
|
||||
id: imageSearchPageRoot
|
||||
|
||||
SearchResultList {
|
||||
id: searchResultList
|
||||
anchors.fill: parent
|
||||
}
|
||||
|
||||
KeroErrorAvatar {
|
||||
id: errorOverlay
|
||||
|
||||
anchors.fill: parent
|
||||
opacity: 0
|
||||
}
|
||||
|
||||
KeroNoResultsAvatar {
|
||||
id: noResultsOverlay
|
||||
|
||||
anchors.fill: parent
|
||||
opacity: 0
|
||||
}
|
||||
|
||||
KeroLoadingAnimation {
|
||||
id: loadingOverlay
|
||||
|
||||
anchors.fill: parent
|
||||
opacity: 0
|
||||
}
|
||||
|
||||
states: [
|
||||
State {
|
||||
name: "loading"
|
||||
when: searchResultList.state === "loading"
|
||||
|
||||
PropertyChanges {
|
||||
target: loadingOverlay
|
||||
opacity: 1
|
||||
}
|
||||
PropertyChanges {
|
||||
target: resultsView
|
||||
opacity: 0
|
||||
}
|
||||
},
|
||||
State {
|
||||
name: "empty"
|
||||
when: searchResultList.state === "empty"
|
||||
|
||||
PropertyChanges {
|
||||
target: noResultsOverlay
|
||||
opacity: 1
|
||||
}
|
||||
PropertyChanges {
|
||||
target: resultsView
|
||||
opacity: 0
|
||||
}
|
||||
},
|
||||
State {
|
||||
name: "error"
|
||||
when: searchResultList.state === "error"
|
||||
|
||||
PropertyChanges {
|
||||
target: errorOverlay
|
||||
opacity: 1
|
||||
}
|
||||
PropertyChanges {
|
||||
target: resultsView
|
||||
opacity: 0
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,87 @@
|
||||
import QtQuick
|
||||
import QtQuick.Controls
|
||||
import QtQuick.Layouts
|
||||
import KomplexHub
|
||||
|
||||
Item {
|
||||
id: loginFormRoot
|
||||
|
||||
ColumnLayout {
|
||||
anchors.centerIn: parent
|
||||
|
||||
Image {
|
||||
source: "images/icons/icons8-user-account.svg"
|
||||
Layout.preferredHeight: 64
|
||||
Layout.preferredWidth: 64
|
||||
Layout.alignment: Qt.AlignCenter
|
||||
}
|
||||
|
||||
// KeroLoginAvatar {
|
||||
// Layout.preferredWidth: 380
|
||||
// Layout.preferredHeight: 380
|
||||
// description: ""
|
||||
// Layout.alignment: Qt.AlignCenter
|
||||
// }
|
||||
|
||||
// Image {
|
||||
// source: "images/kero/kero_choice.png"
|
||||
// Layout.preferredWidth: 380
|
||||
// Layout.preferredHeight: 380
|
||||
// Layout.alignment: Qt.AlignCenter
|
||||
// }
|
||||
|
||||
ColumnLayout {
|
||||
Layout.fillWidth: true
|
||||
Layout.alignment: Qt.AlignCenter
|
||||
|
||||
ColumnLayout {
|
||||
Layout.fillWidth: true
|
||||
|
||||
Text {
|
||||
Layout.fillWidth: false
|
||||
text: "Username"
|
||||
|
||||
font.pixelSize: Constants.largeFont.pixelSize
|
||||
}
|
||||
LineEdit {
|
||||
Layout.preferredHeight: 32
|
||||
Layout.preferredWidth: 256
|
||||
}
|
||||
}
|
||||
|
||||
ColumnLayout {
|
||||
Layout.fillWidth: true
|
||||
|
||||
Text {
|
||||
Layout.fillWidth: false
|
||||
text: "Password"
|
||||
|
||||
font.pixelSize: Constants.largeFont.pixelSize
|
||||
}
|
||||
LineEdit {
|
||||
Layout.preferredHeight: 32
|
||||
Layout.preferredWidth: 256
|
||||
}
|
||||
}
|
||||
|
||||
RowLayout {
|
||||
clip: true
|
||||
Layout.maximumWidth: 250
|
||||
Layout.leftMargin: 3
|
||||
|
||||
SquareButton {
|
||||
Layout.preferredHeight: 36
|
||||
Layout.preferredWidth: 36
|
||||
|
||||
icon.source: "images/icons/icons8-cancel.svg"
|
||||
}
|
||||
|
||||
SquareButton {
|
||||
Layout.fillWidth: true
|
||||
icon.source: "images/icons/icons8-login.svg"
|
||||
text: qsTr("Login")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,214 @@
|
||||
import QtQuick
|
||||
import QtQuick.Controls
|
||||
import QtQuick.Layouts
|
||||
import KomplexHub
|
||||
|
||||
Item {
|
||||
readonly property bool searchable: false
|
||||
|
||||
id: settingsPageRoot
|
||||
|
||||
Rectangle {
|
||||
anchors.fill: parent
|
||||
color: palette.window
|
||||
|
||||
ColumnLayout {
|
||||
anchors.fill: parent
|
||||
|
||||
TabBar {
|
||||
id: bar
|
||||
|
||||
Layout.fillHeight: false
|
||||
Layout.fillWidth: true
|
||||
TabButton {
|
||||
text: qsTr("Wallpaper")
|
||||
}
|
||||
TabButton {
|
||||
text: qsTr("Account")
|
||||
}
|
||||
TabButton {
|
||||
text: qsTr("About")
|
||||
}
|
||||
}
|
||||
|
||||
StackLayout {
|
||||
|
||||
Layout.fillHeight: true
|
||||
Layout.fillWidth: true
|
||||
currentIndex: bar.currentIndex
|
||||
|
||||
Item {
|
||||
id: wallpaperTab
|
||||
|
||||
Layout.fillHeight: true
|
||||
Layout.fillWidth: true
|
||||
|
||||
WallpaperSettingsPage {
|
||||
anchors.fill: parent
|
||||
}
|
||||
}
|
||||
Item {
|
||||
id: accountTab
|
||||
|
||||
Layout.fillHeight: true
|
||||
Layout.fillWidth: true
|
||||
|
||||
UserProfilePage {
|
||||
anchors.fill: parent
|
||||
}
|
||||
}
|
||||
Item {
|
||||
Layout.fillHeight: true
|
||||
Layout.fillWidth: true
|
||||
property string title: qsTr("Hello!")
|
||||
property string contributors: qsTr("DigitalArtifex
|
||||
|
||||
fridje")
|
||||
property string thanks: qsTr("Icons8
|
||||
|
||||
ShaderToy
|
||||
|
||||
Pexels")
|
||||
property color color: palette.window
|
||||
|
||||
id: keroHelloAvatarRoot
|
||||
|
||||
Rectangle {
|
||||
id: keroHelloAvatarBackground
|
||||
anchors.fill: parent
|
||||
color: keroHelloAvatarRoot.color
|
||||
|
||||
ColumnLayout {
|
||||
anchors.fill: parent
|
||||
|
||||
Rectangle {
|
||||
Layout.fillHeight: true
|
||||
Layout.fillWidth: true
|
||||
Layout.minimumWidth: 64
|
||||
Layout.minimumHeight: 64
|
||||
Layout.maximumWidth: 512
|
||||
Layout.maximumHeight: 512
|
||||
Layout.alignment: Qt.AlignCenter
|
||||
|
||||
color: "transparent"
|
||||
|
||||
Image {
|
||||
anchors.fill: parent
|
||||
|
||||
source: "../images/kero/kero_hello.png"
|
||||
antialiasing: true
|
||||
fillMode: Image.PreserveAspectFit
|
||||
}
|
||||
|
||||
ColumnLayout {
|
||||
anchors.bottom: parent.bottom
|
||||
anchors.left: parent.left
|
||||
anchors.right: parent.right
|
||||
|
||||
Text {
|
||||
color: palette.text
|
||||
text: keroHelloAvatarRoot.title
|
||||
font.pixelSize: Constants.largeFont.pixelSize * 1.5
|
||||
|
||||
Layout.alignment: Qt.AlignHCenter | Qt.AlignBottom
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Item { Layout.fillHeight: true }
|
||||
|
||||
Text {
|
||||
Layout.fillHeight: false
|
||||
Layout.fillWidth: true
|
||||
text: qsTr("Meet Kero, the small but tireless spirit behind Komplex, a curious little dragon whose name echoes the cheerful sound of a frog’s call. Hailing from the realm of **Kairoku**, Kero honed his skill in a place where unfinished ideas drift like clouds and raw creativity hums in the air.")
|
||||
color: palette.text.darker()
|
||||
|
||||
Layout.alignment: Qt.AlignHCenter | Qt.AlignBottom
|
||||
Layout.bottomMargin: Constants.largeMargin
|
||||
wrapMode: Text.WordWrap
|
||||
textFormat: Text.MarkdownText
|
||||
}
|
||||
|
||||
Text {
|
||||
Layout.fillHeight: false
|
||||
Layout.fillWidth: true
|
||||
text: qsTr("In Kairoku, landscapes aren’t painted...they’re assembled, animated, and brought to life through careful craftsmanship. Kero was once an apprentice there, learning how to shape reactive skies, breathing forests, and shimmering cityscapes. With his trusty tools and a builder’s instinct, he became known for turning even the simplest concept into something that felt alive.")
|
||||
color: palette.text.darker()
|
||||
|
||||
Layout.alignment: Qt.AlignHCenter | Qt.AlignBottom
|
||||
Layout.bottomMargin: Constants.largeMargin
|
||||
wrapMode: Text.WordWrap
|
||||
textFormat: Text.MarkdownText
|
||||
}
|
||||
|
||||
Item { Layout.fillHeight: true }
|
||||
|
||||
RowLayout {
|
||||
Layout.fillWidth: true
|
||||
Layout.alignment: Qt.AlignTop | Qt.AlignRight
|
||||
|
||||
ColumnLayout {
|
||||
Layout.alignment: Qt.AlignTop | Qt.AlignRight
|
||||
Layout.margins: Constants.largeMargin
|
||||
Layout.fillHeight: true
|
||||
|
||||
Text {
|
||||
text: qsTr("Contributors")
|
||||
color: palette.text.darker()
|
||||
font: Constants.h5Font
|
||||
|
||||
Layout.alignment: Qt.AlignTop
|
||||
Layout.bottomMargin: Constants.largeMargin
|
||||
wrapMode: Text.WordWrap
|
||||
textFormat: Text.MarkdownText
|
||||
}
|
||||
|
||||
Text {
|
||||
id: contributorText
|
||||
text: keroHelloAvatarRoot.contributors
|
||||
color: palette.text.darker()
|
||||
|
||||
Layout.alignment: Qt.AlignBottom
|
||||
Layout.bottomMargin: Constants.largeMargin
|
||||
wrapMode: Text.WordWrap
|
||||
textFormat: Text.MarkdownText
|
||||
}
|
||||
}
|
||||
|
||||
ColumnLayout {
|
||||
Layout.alignment: Qt.AlignTop | Qt.AlignRight
|
||||
Layout.margins: Constants.largeMargin
|
||||
Layout.fillHeight: true
|
||||
|
||||
Text {
|
||||
text: qsTr("Special Thanks")
|
||||
color: palette.text.darker()
|
||||
font: Constants.h5Font
|
||||
|
||||
Layout.alignment: Qt.AlignTop
|
||||
Layout.bottomMargin: Constants.largeMargin
|
||||
wrapMode: Text.WordWrap
|
||||
textFormat: Text.MarkdownText
|
||||
}
|
||||
|
||||
Text {
|
||||
id: thanksText
|
||||
text: keroHelloAvatarRoot.thanks
|
||||
color: palette.text.darker()
|
||||
|
||||
Layout.alignment: Qt.AlignBottom
|
||||
Layout.bottomMargin: Constants.largeMargin
|
||||
wrapMode: Text.WordWrap
|
||||
textFormat: Text.MarkdownText
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,59 @@
|
||||
import QtQuick
|
||||
import QtQuick.Controls
|
||||
import QtQuick.Layouts
|
||||
import KomplexHub
|
||||
|
||||
Item {
|
||||
id: root
|
||||
|
||||
ColumnLayout {
|
||||
anchors.fill: parent
|
||||
|
||||
RowLayout {
|
||||
Layout.fillWidth: true
|
||||
|
||||
Image {
|
||||
Layout.preferredHeight: 128
|
||||
Layout.preferredWidth: 128
|
||||
id: userAccountImage
|
||||
source: "../images/icons/icons8-user-account.svg"
|
||||
}
|
||||
|
||||
ColumnLayout {
|
||||
Layout.alignment: Qt.AlignTop
|
||||
Layout.topMargin: Constants.largeMargin
|
||||
Layout.leftMargin: Constants.largeMargin
|
||||
Layout.bottomMargin: Constants.largeMargin
|
||||
Layout.fillWidth: true
|
||||
Layout.fillHeight: true
|
||||
|
||||
Text {
|
||||
text: qsTr("Username")
|
||||
font.pixelSize: Constants.largeFont.pixelSize
|
||||
font.bold: true
|
||||
color: palette.text
|
||||
}
|
||||
|
||||
Text {
|
||||
text: qsTr("Thursday, April 30th 2026")
|
||||
font.pixelSize: Constants.mediumMargin.pixelSize
|
||||
color: palette.text
|
||||
}
|
||||
|
||||
RowLayout {
|
||||
Text {
|
||||
text: qsTr("Wallpapers Submitted:")
|
||||
font.pixelSize: Constants.largeFont.pixelSize
|
||||
color: palette.text
|
||||
}
|
||||
Text {
|
||||
text: qsTr("12")
|
||||
font.pixelSize: Constants.largeFont.pixelSize
|
||||
font.bold: true
|
||||
color: palette.text
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,667 @@
|
||||
/*
|
||||
* Komplex Wallpaper Engine
|
||||
* Copyright (C) 2025 @DigitalArtifex | github.com/DigitalArtifex
|
||||
*
|
||||
* config.qml
|
||||
*
|
||||
* This component provides a configuration interface for the Komplex Wallpaper Engine,
|
||||
* allowing users to customize shader settings, channel configurations, and other
|
||||
* parameters related to the wallpaper engine.
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>
|
||||
*/
|
||||
// pragma ComponentBehavior: Bound
|
||||
|
||||
import QtQuick
|
||||
import QtQuick.Controls
|
||||
import QtQuick.Dialogs
|
||||
import QtQuick.Layouts
|
||||
//import org.kde.kirigami as Kirigami
|
||||
//import org.kde.plasma.core as PlasmaCore
|
||||
import QtCore
|
||||
import Qt.labs.folderlistmodel 2.15
|
||||
import KomplexHub
|
||||
import KomplexHub.Controls
|
||||
import KomplexHubPlugin
|
||||
|
||||
//import com.github.digitalartifex.komplex 1.0 as Komplex
|
||||
|
||||
Item
|
||||
{
|
||||
SettingsManager {
|
||||
id: manager
|
||||
|
||||
onError: (title, message) => {
|
||||
console.log(title + ": " + message)
|
||||
}
|
||||
}
|
||||
|
||||
id: root
|
||||
property alias cfg_pauseMode: pauseModeCombo.currentIndex
|
||||
property alias cfg_isPaused: runningCombo.checked
|
||||
property alias cfg_shaderSpeed: speedSlider.value
|
||||
property alias cfg_mouseSpeedBias: mouseBiasSlider.value
|
||||
property alias cfg_mouseAllowed: mouseEnableButton.checked
|
||||
property bool cfg_infoPlasma6Preview_dismissed
|
||||
property bool cfg_warningResources_dismissed
|
||||
property bool cfg_emergencyHelp_dismissed
|
||||
property bool cfg_infoiChannelSettings_dismissed
|
||||
property alias cfg_checkActiveScreen: activeScreenOnlyCheckbox.checked
|
||||
property alias cfg_excludeWindows: excludeWindows.windows
|
||||
property alias cfg_running: runningCombo.checked
|
||||
|
||||
property alias cfg_resolution_x: resolutionXField.value
|
||||
property alias cfg_resolution_y: resolutionYField.value
|
||||
|
||||
property alias cfg_framerate_limit: frameRateField.value
|
||||
property bool cfg_shader_updated
|
||||
|
||||
property string shaderPackage: ""
|
||||
property int shaderPackageIndex: 0
|
||||
property real shaderSpeed: 1.0
|
||||
property int resolutionX: 1080
|
||||
property int resolution: 1920
|
||||
property bool enableMouseTracking: true
|
||||
property real mouseTrackingBias: 0.5
|
||||
|
||||
Rectangle {
|
||||
anchors.fill: parent
|
||||
color: palette.base
|
||||
clip: true
|
||||
|
||||
ColumnLayout {
|
||||
anchors.fill: parent
|
||||
|
||||
Text {
|
||||
text: qsTr("Wallpaper")
|
||||
font: Constants.h2Font
|
||||
color: palette.text
|
||||
}
|
||||
|
||||
Text {
|
||||
text: manager.shaderPack
|
||||
}
|
||||
|
||||
ComboBox
|
||||
{
|
||||
property string shader
|
||||
Layout.fillWidth: true
|
||||
|
||||
id: selectedShaderPack
|
||||
model: manager.availableShaderPacks
|
||||
|
||||
delegate: Component
|
||||
{
|
||||
id: packListDelegate
|
||||
ItemDelegate
|
||||
{
|
||||
width: parent ? parent.width : 0
|
||||
text: modelData
|
||||
}
|
||||
}
|
||||
|
||||
textRole: "modelData"
|
||||
currentIndex: manager.shaderPackIndex
|
||||
displayText: currentIndex === -1 ? "Custom File" : currentText.replace("_", " ").charAt(0).toUpperCase() + currentText.replace("_", " ").slice(1)
|
||||
|
||||
// onCurrentTextChanged:
|
||||
// {
|
||||
// root.cfg_shader_package_index = currentIndex;
|
||||
|
||||
// if (root.cfg_shader_package_index === -1)
|
||||
// return;
|
||||
|
||||
// var source = currentText
|
||||
// shaderPackModel.loadMetadata(source)
|
||||
// root.cfg_shader_package = "file://" + shaderPackModel.path(source)
|
||||
// }
|
||||
|
||||
|
||||
}
|
||||
|
||||
RowLayout
|
||||
{
|
||||
Layout.fillWidth: true
|
||||
visible: true
|
||||
//Kirigami.FormData.label: i18nd("com.github.digitalartifex.komplex", "Shader Pack:")
|
||||
|
||||
// ComboBox
|
||||
// {
|
||||
// property string shader
|
||||
// Layout.fillWidth: true
|
||||
|
||||
// id: selectedShaderPack
|
||||
// //model: shaderPackModel.availableShaderPacks
|
||||
|
||||
// delegate: Component
|
||||
// {
|
||||
// id: packListDelegate
|
||||
// ItemDelegate
|
||||
// {
|
||||
// width: parent ? parent.width : 0
|
||||
// text: modelData
|
||||
// }
|
||||
// }
|
||||
|
||||
// textRole: "modelData"
|
||||
// currentIndex: root.cfg_shader_package_index
|
||||
// displayText: currentIndex === -1 ? "Custom File" : currentText.replace("_", " ").charAt(0).toUpperCase() + currentText.replace("_", " ").slice(1)
|
||||
|
||||
// onCurrentTextChanged:
|
||||
// {
|
||||
// root.cfg_shader_package_index = currentIndex;
|
||||
|
||||
// if (root.cfg_shader_package_index === -1)
|
||||
// return;
|
||||
|
||||
// var source = currentText
|
||||
// shaderPackModel.loadMetadata(source)
|
||||
// root.cfg_shader_package = "file://" + shaderPackModel.path(source)
|
||||
// }
|
||||
// }
|
||||
|
||||
FileDialog
|
||||
{
|
||||
id: packDialog
|
||||
fileMode: FileDialog.OpenFile
|
||||
title: i18nd("@dialog_title:choose_shader", "Choose a shader")
|
||||
// will accept and auto convert .frag in the near future
|
||||
nameFilters: ["Shader Package files (*.json)", "All files (*)"]
|
||||
visible: false
|
||||
currentFolder: "file://" + shaderPackModel.shaderPackInstallPath
|
||||
onAccepted:
|
||||
{
|
||||
root.cfg_shader_package_index = -1;
|
||||
root.cfg_shader_package = selectedFile;
|
||||
shaderPackModel.loadMetadataFromFile(selectedFile)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Kirigami.Separator
|
||||
// {
|
||||
// Kirigami.FormData.isSection: false
|
||||
// }
|
||||
// TabBar
|
||||
// {
|
||||
// Layout.topMargin: 6
|
||||
// Layout.fillWidth: true
|
||||
// id: navBar
|
||||
// width: parent.width
|
||||
// TabButton {
|
||||
// height: 36
|
||||
// text: root.cfg_komplex_mode === 0 ? qsTr("Channels") : qsTr("Information")
|
||||
// }
|
||||
// TabButton {
|
||||
// height: 36
|
||||
// text: qsTr("Settings")
|
||||
// }
|
||||
// TabButton {
|
||||
// height: 36
|
||||
// text: qsTr("Extra Settings")
|
||||
// }
|
||||
// }
|
||||
// RowLayout
|
||||
// {
|
||||
// Layout.fillWidth: true
|
||||
// Kirigami.InlineMessage
|
||||
// {
|
||||
// id: warningResources
|
||||
// Layout.fillWidth: true
|
||||
// type: Kirigami.MessageType.Warning
|
||||
// text: qsTr("Some shaders might consume more power and resources than others, beware!")
|
||||
// showCloseButton: true
|
||||
// visible: !root.cfg_warningResources_dismissed
|
||||
// onVisibleChanged: () =>
|
||||
// {
|
||||
// root.cfg_warningResources_dismissed = true;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
||||
|
||||
Text {
|
||||
text: qsTr("Render Resolution")
|
||||
font: Constants.h2Font
|
||||
color: palette.text
|
||||
}
|
||||
|
||||
RowLayout
|
||||
{
|
||||
visible: navBar.currentIndex === 1
|
||||
|
||||
//Kirigami.FormData.label: i18nd("com.github.digitalartifex.komplex", "Resolution:")
|
||||
Text
|
||||
{
|
||||
color: palette.text
|
||||
text: "X"
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
}
|
||||
TextField
|
||||
{
|
||||
property int value
|
||||
id: resolutionXField
|
||||
inputMethodHints: Qt.ImhFormattedNumbersOnly
|
||||
horizontalAlignment: Text.AlignRight
|
||||
Layout.preferredWidth: Kirigami.Units.gridUnit * 4
|
||||
text: value
|
||||
onEditingFinished: () =>
|
||||
{
|
||||
value = parseInt(text)
|
||||
}
|
||||
Keys.onPressed: (event) =>
|
||||
{
|
||||
if (event.key === Qt.Key_Return || event.key === Qt.Key_Enter)
|
||||
{
|
||||
resolutionXField.focus = false; // Unfocus the TextField
|
||||
event.accepted = true; // Prevent further propagation of the key event
|
||||
}
|
||||
}
|
||||
background: Rectangle
|
||||
{
|
||||
color: resolutionXField.activeFocus ? palette.base : "transparent"
|
||||
border.color: resolutionXField.activeFocus ? palette.highlight : "transparent"
|
||||
border.width: 1
|
||||
radius: 4
|
||||
anchors.fill: resolutionXField
|
||||
anchors.margins: -2
|
||||
}
|
||||
}
|
||||
Text
|
||||
{
|
||||
color: palette.text
|
||||
text: "Y"
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
}
|
||||
TextField
|
||||
{
|
||||
property int value
|
||||
id: resolutionYField
|
||||
inputMethodHints: Qt.ImhFormattedNumbersOnly
|
||||
horizontalAlignment: Text.AlignRight
|
||||
Layout.preferredWidth: Kirigami.Units.gridUnit * 4
|
||||
text: value
|
||||
onEditingFinished: () =>
|
||||
{
|
||||
value = parseInt(text)
|
||||
}
|
||||
Keys.onPressed: (event) =>
|
||||
{
|
||||
if (event.key === Qt.Key_Return || event.key === Qt.Key_Enter)
|
||||
{
|
||||
resolutionYField.focus = false; // Unfocus the TextField
|
||||
event.accepted = true; // Prevent further propagation of the key event
|
||||
}
|
||||
}
|
||||
background: Rectangle
|
||||
{
|
||||
color: resolutionYField.activeFocus ? palette.base : "transparent"
|
||||
border.color: resolutionYField.activeFocus ? palette.highlight : "transparent"
|
||||
border.width: 1
|
||||
radius: 4
|
||||
anchors.fill: resolutionYField
|
||||
anchors.margins: -2
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
RowLayout
|
||||
{
|
||||
visible: navBar.currentIndex === 1
|
||||
|
||||
//Kirigami.FormData.label: i18nd("com.github.digitalartifex.komplex", "Frame Rate:")
|
||||
|
||||
TextField
|
||||
{
|
||||
property int value
|
||||
|
||||
id: frameRateField
|
||||
inputMethodHints: Qt.ImhFormattedNumbersOnly
|
||||
Layout.preferredWidth: Kirigami.Units.gridUnit * 4
|
||||
|
||||
onEditingFinished: () =>
|
||||
{
|
||||
value = parseInt(text)
|
||||
}
|
||||
Keys.onPressed: (event) =>
|
||||
{
|
||||
if (event.key === Qt.Key_Return || event.key === Qt.Key_Enter)
|
||||
{
|
||||
frameRateField.focus = false; // Unfocus the TextField
|
||||
event.accepted = true; // Prevent further propagation of the key event
|
||||
}
|
||||
}
|
||||
background: Rectangle
|
||||
{
|
||||
color: frameRateField.activeFocus ? palette.base : "transparent"
|
||||
border.color: frameRateField.activeFocus ? palette.highlight : "transparent"
|
||||
border.width: 1
|
||||
radius: 4
|
||||
anchors.fill: frameRateField
|
||||
anchors.margins: -2
|
||||
}
|
||||
|
||||
Component.onCompleted: () =>
|
||||
{
|
||||
text = value
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ColumnLayout
|
||||
{
|
||||
visible: navBar.currentIndex === 1
|
||||
id: speedLayout
|
||||
Layout.fillWidth: true
|
||||
|
||||
//Kirigami.FormData.label: i18nd("com.github.digitalartifex.komplex", "Shader speed:")
|
||||
|
||||
Slider
|
||||
{
|
||||
id: speedSlider
|
||||
Layout.fillWidth: true
|
||||
from: -4.0
|
||||
to: 4.0
|
||||
stepSize: 0.01
|
||||
onValueChanged: shaderSpeedField.text = String(value.toFixed(2));
|
||||
}
|
||||
|
||||
LineEdit
|
||||
{
|
||||
id: shaderSpeedField
|
||||
//inputMethodHints: Qt.ImhFormattedNumbersOnly
|
||||
//horizontalAlignment: Text.AlignRight
|
||||
Layout.preferredWidth: 128
|
||||
|
||||
// onEditingFinished: () =>
|
||||
// {
|
||||
// let inputValue = parseFloat(text);
|
||||
|
||||
// if (isNaN(inputValue) || inputValue < speedSlider.from)
|
||||
// inputValue = speedSlider.from;
|
||||
// else if (inputValue > speedSlider.to)
|
||||
// inputValue = speedSlider.to;
|
||||
|
||||
// text = inputValue.toFixed(2);
|
||||
// speedSlider.value = inputValue;
|
||||
// }
|
||||
Keys.onPressed: (event) =>
|
||||
{
|
||||
if (event.key === Qt.Key_Return || event.key === Qt.Key_Enter)
|
||||
{
|
||||
shaderSpeedField.focus = false; // Unfocus the TextField
|
||||
event.accepted = true; // Prevent further propagation of the key event
|
||||
}
|
||||
}
|
||||
// background: Rectangle
|
||||
// {
|
||||
// color: shaderSpeedField.activeFocus ? palette.base : "transparent"
|
||||
// border.color: shaderSpeedField.activeFocus ? palette.highlight : "transparent"
|
||||
// border.width: 1
|
||||
// radius: 4
|
||||
// anchors.fill: shaderSpeedField
|
||||
// anchors.margins: -2
|
||||
// }
|
||||
}
|
||||
|
||||
}
|
||||
ComboBox
|
||||
{
|
||||
visible: navBar.currentIndex === 1
|
||||
id: pauseModeCombo
|
||||
|
||||
//Kirigami.FormData.label: i18nd("@buttonGroup:pause_mode", "Pause:")
|
||||
model: [
|
||||
{
|
||||
'label': i18nd("@option:pause_mode", "Maximized or full-screen windows")
|
||||
},
|
||||
{
|
||||
'label': i18nd("@option:pause_mode", "Active window is present")
|
||||
},
|
||||
{
|
||||
'label': i18nd("@option:pause_mode", "At least one window is shown")
|
||||
},
|
||||
{
|
||||
'label': i18nd("@option:pause_mode", "Never")
|
||||
}
|
||||
]
|
||||
textRole: "label"
|
||||
onCurrentIndexChanged: root.cfg_pauseMode = currentIndex
|
||||
currentIndex: root.cfg_pauseMode
|
||||
}
|
||||
|
||||
CheckBox
|
||||
{
|
||||
visible: navBar.currentIndex === 1
|
||||
id: activeScreenOnlyCheckbox
|
||||
|
||||
//Kirigami.FormData.label: i18nd("@checkbox:screen_filter", "Filter:")
|
||||
text: i18n("Only check for windows in active screen")
|
||||
}
|
||||
|
||||
TextField
|
||||
{
|
||||
visible: navBar.currentIndex === 1
|
||||
id: excludeWindows
|
||||
property var windows: []
|
||||
width: Kirigami.Units.gridUnit * 11
|
||||
|
||||
//Kirigami.FormData.label: i18nd("com.github.digitalartifex.komplex", "Exclude windows:")
|
||||
text: windows.join(",")
|
||||
onEditingFinished: () =>
|
||||
{
|
||||
windows = excludeWindows.text.trim().replace(/\s+/g, "").split(",");
|
||||
}
|
||||
ToolTip.visible: hovered
|
||||
ToolTip.text: qsTr("A comma-separated list of fully-qualified App-IDs to exclude their windows from triggering pause mode.")
|
||||
}
|
||||
|
||||
CheckBox
|
||||
{
|
||||
visible: navBar.currentIndex === 1
|
||||
//Kirigami.FormData.label: i18nd("com.github.digitalartifex.komplex", cfg_isPaused ? "Playing" : "Paused")
|
||||
|
||||
id: runningCombo
|
||||
checked: root.cfg_running
|
||||
text: i18n("Play/Pause the shader")
|
||||
onCheckedChanged: () =>
|
||||
{
|
||||
// wallpaper.configuration.running = checked;
|
||||
root.cfg_running = checked;
|
||||
}
|
||||
}
|
||||
|
||||
RowLayout
|
||||
{
|
||||
visible: navBar.currentIndex === 2
|
||||
id: mouseLayout
|
||||
|
||||
//Kirigami.FormData.label: i18nd("com.github.digitalartifex.komplex", "Mouse allowed:")
|
||||
Button
|
||||
{
|
||||
id: mouseEnableButton
|
||||
icon.name: checked ? "followmouse-symbolic" : "hidemouse-symbolic"
|
||||
text: i18nd("@button:toggle_use_mouse", checked ? "Enabled" : "Disabled")
|
||||
checkable: true
|
||||
ToolTip.visible: hovered
|
||||
ToolTip.text: qsTr("Enabling this will allow the shader to interact with the cursor but will prevent interaction with desktop elements")
|
||||
}
|
||||
}
|
||||
|
||||
RowLayout
|
||||
{
|
||||
id: mouseBiasLayout
|
||||
visible: root.cfg_mouseAllowed && navBar.currentIndex === 2
|
||||
|
||||
//Kirigami.FormData.label: i18nd("com.github.digitalartifex.komplex", "Mouse bias:")
|
||||
ColumnLayout
|
||||
{
|
||||
Slider
|
||||
{
|
||||
id: mouseBiasSlider
|
||||
Layout.preferredWidth: Kirigami.Units.gridUnit * 16
|
||||
from: 0.0
|
||||
to: 4.0
|
||||
stepSize: 0.01
|
||||
value: root.cfg_mouseSpeedBias ? root.cfg_mouseSpeedBias : 1.0
|
||||
onValueChanged: () =>
|
||||
{
|
||||
mouseBiasField.text = String(value.toFixed(2));
|
||||
// wallpaper.configuration.mouseBias = mouseBiasField.text;
|
||||
root.cfg_mouseSpeedBias = mouseBiasField.text;
|
||||
}
|
||||
}
|
||||
}
|
||||
ColumnLayout
|
||||
{
|
||||
TextField
|
||||
{
|
||||
id: mouseBiasField
|
||||
text: root.cfg_mouseSpeedBias ? String(root.cfg_mouseSpeedBias.toFixed(2)) : "1.00"
|
||||
inputMethodHints: Qt.ImhFormattedNumbersOnly
|
||||
Layout.preferredWidth: Kirigami.Units.gridUnit * 3
|
||||
onEditingFinished: () =>
|
||||
{
|
||||
let inputValue = parseFloat(text);
|
||||
|
||||
if (isNaN(inputValue) || inputValue < mouseBiasSlider.from)
|
||||
inputValue = mouseBiasSlider.from;
|
||||
else if (inputValue > mouseBiasSlider.to)
|
||||
inputValue = mouseBiasSlider.to;
|
||||
|
||||
text = inputValue.toFixed(2);
|
||||
mouseBiasSlider.value = inputValue;
|
||||
// wallpaper.configuration.mouseBias = inputValue;
|
||||
root.cfg_mouseSpeedBias = inputValue;
|
||||
}
|
||||
Keys.onPressed: (event) =>
|
||||
{
|
||||
if (event.key === Qt.Key_Return || event.key === Qt.Key_Enter)
|
||||
{
|
||||
mouseBiasField.focus = false; // Unfocus the TextField
|
||||
event.accepted = true; // Prevent further propagation of the key event
|
||||
}
|
||||
}
|
||||
background: Rectangle
|
||||
{
|
||||
color: mouseBiasField.activeFocus ? palette.base : "transparent"
|
||||
border.color: mouseBiasField.activeFocus ? palette.highlight : "transparent"
|
||||
border.width: 1
|
||||
radius: 4
|
||||
anchors.fill: mouseBiasField
|
||||
anchors.margins: -2
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Button
|
||||
{
|
||||
visible: navBar.currentIndex === 2
|
||||
id: kofiButton
|
||||
Layout.preferredWidth: Kirigami.Units.gridUnit * 5
|
||||
Layout.preferredHeight: Kirigami.Units.gridUnit * 3
|
||||
|
||||
contentItem: RowLayout
|
||||
{
|
||||
AnimatedImage
|
||||
{
|
||||
source: "icons/kofi.gif"
|
||||
sourceSize.width: 36
|
||||
sourceSize.height: 36
|
||||
fillMode: Image.Pad
|
||||
horizontalAlignment: Image.AlignLeft
|
||||
transform: Translate
|
||||
{
|
||||
x: 8
|
||||
}
|
||||
}
|
||||
Text
|
||||
{
|
||||
text: i18nd("@button:kofi", "Kofi")
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
color: palette.text
|
||||
transform: Translate
|
||||
{
|
||||
x: -8
|
||||
}
|
||||
}
|
||||
}
|
||||
onClicked: () =>
|
||||
{
|
||||
Qt.openUrlExternally("https://ko-fi.com/digitalartifex");
|
||||
}
|
||||
}
|
||||
|
||||
RowLayout
|
||||
{
|
||||
visible: root.cfg_komplex_mode === 1 && navBar.currentIndex === 0
|
||||
|
||||
//Kirigami.FormData.label: i18nd("com.github.digitalartifex.komplex", "Author:")
|
||||
Text
|
||||
{
|
||||
Layout.preferredWidth: Kirigami.Units.gridUnit * 11
|
||||
text: shaderPackModel.metadata.author
|
||||
horizontalAlignment: Text.AlignLeft
|
||||
color: palette.text
|
||||
}
|
||||
}
|
||||
|
||||
RowLayout
|
||||
{
|
||||
visible: root.cfg_komplex_mode === 1 && navBar.currentIndex === 0
|
||||
|
||||
//Kirigami.FormData.label: i18nd("com.github.digitalartifex.komplex", "Description:")
|
||||
Text
|
||||
{
|
||||
Layout.preferredWidth: Kirigami.Units.gridUnit * 16
|
||||
text: shaderPackModel.metadata.description
|
||||
horizontalAlignment: Text.AlignLeft
|
||||
color: palette.text
|
||||
wrapMode: Text.WordWrap
|
||||
maximumLineCount: 2
|
||||
elide: Text.ElideRight
|
||||
}
|
||||
}
|
||||
|
||||
RowLayout
|
||||
{
|
||||
visible: root.cfg_komplex_mode === 1 && navBar.currentIndex === 0
|
||||
|
||||
//Kirigami.FormData.label: i18nd("com.github.digitalartifex.komplex", "License:")
|
||||
Text
|
||||
{
|
||||
Layout.preferredWidth: Kirigami.Units.gridUnit * 11
|
||||
text: shaderPackModel.metadata.license
|
||||
horizontalAlignment: Text.AlignLeft
|
||||
color: palette.text
|
||||
}
|
||||
}
|
||||
|
||||
RowLayout
|
||||
{
|
||||
visible: root.cfg_komplex_mode === 1 && navBar.currentIndex === 0
|
||||
|
||||
//Kirigami.FormData.label: i18nd("com.github.digitalartifex.komplex", "Version:")
|
||||
Text
|
||||
{
|
||||
Layout.preferredWidth: Kirigami.Units.gridUnit * 11
|
||||
text: shaderPackModel.metadata.version
|
||||
horizontalAlignment: Text.AlignLeft
|
||||
color: palette.text
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
module KomplexHubContent
|
||||
linktarget KomplexHubContentplugin
|
||||
optional plugin KomplexHubContentplugin
|
||||
classname KomplexHubContentPlugin
|
||||
typeinfo KomplexHubContent.qmltypes
|
||||
prefer :/qt/qml/KomplexHubContent/
|
||||
App 1.0 App.qml
|
||||
MainScreen 1.0 MainScreen.qml
|
||||
HomePage 1.0 pages/HomePage.qml
|
||||
ImageSearchPage 1.0 pages/ImageSearchPage.qml
|
||||
InstalledWallpaperPage 1.0 pages/InstalledWallpaperPage.qml
|
||||
LiveSearchPage 1.0 pages/LiveSearchPage.qml
|
||||
LoginPage 1.0 pages/LoginPage.qml
|
||||
SettingsPage 1.0 pages/SettingsPage.qml
|
||||
UserProfilePage 1.0 pages/UserProfilePage.qml
|
||||
WallpaperSettingsPage 1.0 pages/WallpaperSettingsPage.qml
|
||||
|
||||