Compare commits
1 Commits
main
..
d79997e883
| Author | SHA1 | Date | |
|---|---|---|---|
|
d79997e883
|
+5
-5
@@ -103,11 +103,11 @@ qt_add_resources(${CMAKE_PROJECT_NAME} "app_images"
|
|||||||
"images/kero/kero_warning.png"
|
"images/kero/kero_warning.png"
|
||||||
)
|
)
|
||||||
|
|
||||||
# target_compile_definitions(
|
target_compile_definitions(
|
||||||
# ${CMAKE_PROJECT_NAME}
|
${CMAKE_PROJECT_NAME}
|
||||||
# PUBLIC
|
PUBLIC
|
||||||
# KOMPLEX_LOCAL_DEV
|
KOMPLEX_LOCAL_DEV
|
||||||
# )
|
)
|
||||||
|
|
||||||
include(qds)
|
include(qds)
|
||||||
|
|
||||||
|
|||||||
@@ -1,50 +1,21 @@
|
|||||||
/*
|
|
||||||
* Komplex Wallpaper Engine
|
|
||||||
* Copyright (C) 2026 @DigitalArtifex
|
|
||||||
* https://digitalartifex.dev - https://github.com/DigitalArtifex
|
|
||||||
*
|
|
||||||
* 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/>
|
|
||||||
*/
|
|
||||||
import QtQuick
|
import QtQuick
|
||||||
import QtQuick.Controls 2.15
|
import QtQuick.Controls 2.15
|
||||||
import QtCore
|
|
||||||
|
|
||||||
import KomplexHub
|
import KomplexHub
|
||||||
|
import org.kde.kirigami as Kirigami
|
||||||
|
|
||||||
ApplicationWindow {
|
ApplicationWindow {
|
||||||
|
|
||||||
id: window
|
|
||||||
visible: true
|
visible: true
|
||||||
flags: Qt.Window
|
flags: Qt.Window
|
||||||
title: "KomplexHub"
|
title: "KomplexHub"
|
||||||
color: "transparent"
|
color: "transparent"
|
||||||
minimumWidth: 720
|
minimumWidth: 720
|
||||||
|
|
||||||
MainScreen
|
MainScreen {
|
||||||
{
|
antialiasing: true
|
||||||
id: mainScreen
|
id: mainScreen
|
||||||
|
|
||||||
antialiasing: true
|
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
}
|
}
|
||||||
|
|
||||||
Settings
|
|
||||||
{
|
|
||||||
property alias x: window.x
|
|
||||||
property alias y: window.y
|
|
||||||
property alias width: window.width
|
|
||||||
property alias height: window.height
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,22 +1,9 @@
|
|||||||
/*
|
/*
|
||||||
* Komplex Wallpaper Engine
|
This is a UI file (.ui.qml) that is intended to be edited in Qt Design Studio only.
|
||||||
* Copyright (C) 2026 @DigitalArtifex
|
It is supposed to be strictly declarative and only uses a subset of QML. If you edit
|
||||||
* https://digitalartifex.dev - https://github.com/DigitalArtifex
|
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.
|
||||||
* 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/>
|
|
||||||
*/
|
|
||||||
import QtCore
|
|
||||||
import QtQuick
|
import QtQuick
|
||||||
import QtQuick.Controls 2.0
|
import QtQuick.Controls 2.0
|
||||||
import QtQuick.Layouts
|
import QtQuick.Layouts
|
||||||
@@ -25,8 +12,7 @@ import KomplexHub.Controls
|
|||||||
import KomplexHub.Kero
|
import KomplexHub.Kero
|
||||||
import KomplexHubContent
|
import KomplexHubContent
|
||||||
|
|
||||||
Rectangle
|
Rectangle {
|
||||||
{
|
|
||||||
property MenuButton currentMenuButton
|
property MenuButton currentMenuButton
|
||||||
property bool popup: false
|
property bool popup: false
|
||||||
|
|
||||||
@@ -34,14 +20,12 @@ Rectangle
|
|||||||
|
|
||||||
color: palette.window
|
color: palette.window
|
||||||
|
|
||||||
RowLayout
|
RowLayout {
|
||||||
{
|
|
||||||
id: windowRootLayout
|
id: windowRootLayout
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
spacing: 0
|
spacing: 0
|
||||||
|
|
||||||
Rectangle
|
Rectangle {
|
||||||
{
|
|
||||||
id: windowMenu
|
id: windowMenu
|
||||||
|
|
||||||
Layout.fillWidth: false
|
Layout.fillWidth: false
|
||||||
@@ -74,12 +58,10 @@ Rectangle
|
|||||||
selected = false
|
selected = false
|
||||||
}
|
}
|
||||||
|
|
||||||
Behavior on opacity
|
Behavior on opacity {
|
||||||
{
|
|
||||||
NumberAnimation
|
NumberAnimation
|
||||||
{
|
{
|
||||||
duration: settings.animationsEnabled ?
|
duration: 250
|
||||||
settings.normalAnimationDuration : 0
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -246,7 +228,7 @@ Rectangle
|
|||||||
{
|
{
|
||||||
NumberAnimation
|
NumberAnimation
|
||||||
{
|
{
|
||||||
duration: settings.animationsEnabled ? settings.normalAnimationDuration : 0
|
duration: 250
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -284,12 +266,8 @@ Rectangle
|
|||||||
pageLoader.setSearchTerm()
|
pageLoader.setSearchTerm()
|
||||||
}
|
}
|
||||||
|
|
||||||
Behavior on preferredHeight
|
Behavior on preferredHeight {
|
||||||
{
|
NumberAnimation { duration: Constants.normalAnimationDuration }
|
||||||
NumberAnimation
|
|
||||||
{
|
|
||||||
duration: settings.animationsEnabled ? settings.normalAnimationDuration : 0
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -324,7 +302,7 @@ Rectangle
|
|||||||
id: pageLoaderAnimation
|
id: pageLoaderAnimation
|
||||||
|
|
||||||
target: pageLoader
|
target: pageLoader
|
||||||
duration: settings.animationsEnabled ? settings.pageChangeAnimationDuration : 0
|
duration: 150
|
||||||
|
|
||||||
onFinished: () => {
|
onFinished: () => {
|
||||||
if(pageLoader.loading && pageLoader.opacity === 0)
|
if(pageLoader.loading && pageLoader.opacity === 0)
|
||||||
@@ -403,6 +381,23 @@ Rectangle
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
KeroBuildingAnimation
|
||||||
|
{
|
||||||
|
id: buildingOverlay
|
||||||
|
|
||||||
|
anchors.fill: parent
|
||||||
|
visible: false
|
||||||
|
}
|
||||||
|
|
||||||
|
KeroLoadingAnimation
|
||||||
|
{
|
||||||
|
id: loadingAnimation
|
||||||
|
anchors.fill: parent
|
||||||
|
|
||||||
|
visible: opacity > 0
|
||||||
|
opacity: 0
|
||||||
|
}
|
||||||
|
|
||||||
Connections
|
Connections
|
||||||
{
|
{
|
||||||
id: popupConnection
|
id: popupConnection
|
||||||
@@ -419,6 +414,7 @@ Rectangle
|
|||||||
currentMenuButton = homeMenubutton
|
currentMenuButton = homeMenubutton
|
||||||
pageLoader.page = "pages/HomePage.qml"
|
pageLoader.page = "pages/HomePage.qml"
|
||||||
searchContainer.preferredHeight = 0
|
searchContainer.preferredHeight = 0
|
||||||
|
loadingAnimation.opacity = 0
|
||||||
}
|
}
|
||||||
|
|
||||||
states: [
|
states: [
|
||||||
@@ -450,17 +446,4 @@ Rectangle
|
|||||||
}
|
}
|
||||||
|
|
||||||
]
|
]
|
||||||
|
|
||||||
Settings
|
|
||||||
{
|
|
||||||
id: settings
|
|
||||||
property bool animationsEnabled: true
|
|
||||||
//ms length of page change
|
|
||||||
property int pageChangeAnimationDuration: 250
|
|
||||||
property int pageFadeAnimationDuration: 250
|
|
||||||
|
|
||||||
property int slowAnimationDuration: 750
|
|
||||||
property int normalAnimationDuration: 250
|
|
||||||
property int fastAnimationDuration: 125
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -17,5 +17,4 @@ qt6_add_qml_module(KomplexHubPages
|
|||||||
"FeaturedPacksPage.qml"
|
"FeaturedPacksPage.qml"
|
||||||
"FeaturedImagesPage.qml"
|
"FeaturedImagesPage.qml"
|
||||||
"NewestPacksPage.qml"
|
"NewestPacksPage.qml"
|
||||||
QML_FILES KomplexSettingsPage.qml
|
|
||||||
)
|
)
|
||||||
@@ -1,22 +1,3 @@
|
|||||||
/*
|
|
||||||
* Komplex Wallpaper Engine
|
|
||||||
* Copyright (C) 2026 @DigitalArtifex
|
|
||||||
* https://digitalartifex.dev - https://github.com/DigitalArtifex
|
|
||||||
*
|
|
||||||
* 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/>
|
|
||||||
*/
|
|
||||||
import QtCore
|
|
||||||
import QtQuick
|
import QtQuick
|
||||||
import QtQuick.Controls
|
import QtQuick.Controls
|
||||||
import QtQuick.Layouts
|
import QtQuick.Layouts
|
||||||
@@ -43,6 +24,7 @@ Rectangle
|
|||||||
FeaturedImagesModel
|
FeaturedImagesModel
|
||||||
{
|
{
|
||||||
id: searchModel
|
id: searchModel
|
||||||
|
//query: rootItem.query
|
||||||
resultsPerPage: paginator.resultsPerPage
|
resultsPerPage: paginator.resultsPerPage
|
||||||
|
|
||||||
Component.onCompleted: () => nextPage()
|
Component.onCompleted: () => nextPage()
|
||||||
@@ -127,8 +109,7 @@ Rectangle
|
|||||||
Behavior on opacity {
|
Behavior on opacity {
|
||||||
NumberAnimation
|
NumberAnimation
|
||||||
{
|
{
|
||||||
duration: settings.animationsEnabled ?
|
duration: 250
|
||||||
settings.normalAnimationDuration : 0
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -136,8 +117,7 @@ Rectangle
|
|||||||
Behavior on opacity {
|
Behavior on opacity {
|
||||||
NumberAnimation
|
NumberAnimation
|
||||||
{
|
{
|
||||||
duration: settings.animationsEnabled ?
|
duration: 250
|
||||||
settings.normalAnimationDuration : 0
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -171,17 +151,4 @@ Rectangle
|
|||||||
resultsLayout.opacity = 1
|
resultsLayout.opacity = 1
|
||||||
rootItem.popup = false
|
rootItem.popup = false
|
||||||
}
|
}
|
||||||
|
|
||||||
Settings
|
|
||||||
{
|
|
||||||
id: settings
|
|
||||||
property bool animationsEnabled: true
|
|
||||||
//ms length of page change
|
|
||||||
property int pageChangeAnimationDuration: 250
|
|
||||||
property int pageFadeAnimationDuration: 250
|
|
||||||
|
|
||||||
property int slowAnimationDuration: 750
|
|
||||||
property int normalAnimationDuration: 250
|
|
||||||
property int fastAnimationDuration: 125
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,22 +1,3 @@
|
|||||||
/*
|
|
||||||
* Komplex Wallpaper Engine
|
|
||||||
* Copyright (C) 2026 @DigitalArtifex
|
|
||||||
* https://digitalartifex.dev - https://github.com/DigitalArtifex
|
|
||||||
*
|
|
||||||
* 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/>
|
|
||||||
*/
|
|
||||||
import QtCore
|
|
||||||
import QtQuick
|
import QtQuick
|
||||||
import QtQuick.Controls
|
import QtQuick.Controls
|
||||||
import QtQuick.Layouts
|
import QtQuick.Layouts
|
||||||
@@ -128,8 +109,7 @@ Rectangle
|
|||||||
Behavior on opacity {
|
Behavior on opacity {
|
||||||
NumberAnimation
|
NumberAnimation
|
||||||
{
|
{
|
||||||
duration: settings.animationsEnabled ?
|
duration: 250
|
||||||
settings.normalAnimationDuration : 0
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -137,8 +117,7 @@ Rectangle
|
|||||||
Behavior on opacity {
|
Behavior on opacity {
|
||||||
NumberAnimation
|
NumberAnimation
|
||||||
{
|
{
|
||||||
duration: settings.animationsEnabled ?
|
duration: 250
|
||||||
settings.normalAnimationDuration : 0
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -163,17 +142,4 @@ Rectangle
|
|||||||
resultsLayout.opacity = 0
|
resultsLayout.opacity = 0
|
||||||
rootItem.popup = true
|
rootItem.popup = true
|
||||||
}
|
}
|
||||||
|
|
||||||
Settings
|
|
||||||
{
|
|
||||||
id: settings
|
|
||||||
property bool animationsEnabled: true
|
|
||||||
//ms length of page change
|
|
||||||
property int pageChangeAnimationDuration: 250
|
|
||||||
property int pageFadeAnimationDuration: 250
|
|
||||||
|
|
||||||
property int slowAnimationDuration: 750
|
|
||||||
property int normalAnimationDuration: 250
|
|
||||||
property int fastAnimationDuration: 125
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,22 +1,3 @@
|
|||||||
/*
|
|
||||||
* Komplex Wallpaper Engine
|
|
||||||
* Copyright (C) 2026 @DigitalArtifex
|
|
||||||
* https://digitalartifex.dev - https://github.com/DigitalArtifex
|
|
||||||
*
|
|
||||||
* 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/>
|
|
||||||
*/
|
|
||||||
import QtCore
|
|
||||||
import QtQuick
|
import QtQuick
|
||||||
import QtQuick.Controls
|
import QtQuick.Controls
|
||||||
import QtQuick.Layouts
|
import QtQuick.Layouts
|
||||||
@@ -128,8 +109,7 @@ Rectangle
|
|||||||
{
|
{
|
||||||
NumberAnimation
|
NumberAnimation
|
||||||
{
|
{
|
||||||
duration: settings.animationsEnabled ?
|
duration: 250
|
||||||
settings.normalAnimationDuration : 0
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -138,8 +118,7 @@ Rectangle
|
|||||||
{
|
{
|
||||||
NumberAnimation
|
NumberAnimation
|
||||||
{
|
{
|
||||||
duration: settings.animationsEnabled ?
|
duration: 250
|
||||||
settings.normalAnimationDuration : 0
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -171,17 +150,4 @@ Rectangle
|
|||||||
resultsLayout.opacity = 1
|
resultsLayout.opacity = 1
|
||||||
rootItem.popup = false
|
rootItem.popup = false
|
||||||
}
|
}
|
||||||
|
|
||||||
Settings
|
|
||||||
{
|
|
||||||
id: settings
|
|
||||||
property bool animationsEnabled: true
|
|
||||||
//ms length of page change
|
|
||||||
property int pageChangeAnimationDuration: 250
|
|
||||||
property int pageFadeAnimationDuration: 250
|
|
||||||
|
|
||||||
property int slowAnimationDuration: 750
|
|
||||||
property int normalAnimationDuration: 250
|
|
||||||
property int fastAnimationDuration: 125
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,22 +1,3 @@
|
|||||||
/*
|
|
||||||
* Komplex Wallpaper Engine
|
|
||||||
* Copyright (C) 2026 @DigitalArtifex
|
|
||||||
* https://digitalartifex.dev - https://github.com/DigitalArtifex
|
|
||||||
*
|
|
||||||
* 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/>
|
|
||||||
*/
|
|
||||||
import QtCore
|
|
||||||
import QtQuick
|
import QtQuick
|
||||||
import QtQuick.Controls 2.0
|
import QtQuick.Controls 2.0
|
||||||
import QtQuick.Layouts
|
import QtQuick.Layouts
|
||||||
@@ -39,10 +20,6 @@ Item
|
|||||||
imagesModel.state === FeaturedImagesModel.Loading ||
|
imagesModel.state === FeaturedImagesModel.Loading ||
|
||||||
videosModel.state === FeaturedVideosModel.Loading;
|
videosModel.state === FeaturedVideosModel.Loading;
|
||||||
|
|
||||||
property bool error: packsModel.state === NewestPacksModel.Error ||
|
|
||||||
imagesModel.state === FeaturedImagesModel.Error ||
|
|
||||||
videosModel.state === FeaturedVideosModel.Error;
|
|
||||||
|
|
||||||
onWidthChanged: () =>
|
onWidthChanged: () =>
|
||||||
{
|
{
|
||||||
packsModel.resultsPerPage = resultsPerRow
|
packsModel.resultsPerPage = resultsPerRow
|
||||||
@@ -428,15 +405,6 @@ Item
|
|||||||
|
|
||||||
visible: opacity > 0
|
visible: opacity > 0
|
||||||
opacity: 1
|
opacity: 1
|
||||||
|
|
||||||
Behavior on opacity
|
|
||||||
{
|
|
||||||
NumberAnimation
|
|
||||||
{
|
|
||||||
duration: settings.animationsEnabled ?
|
|
||||||
settings.normalAnimationDuration : 0
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Rectangle
|
Rectangle
|
||||||
@@ -458,8 +426,7 @@ Item
|
|||||||
{
|
{
|
||||||
NumberAnimation
|
NumberAnimation
|
||||||
{
|
{
|
||||||
duration: settings.animationsEnabled ?
|
duration: 250
|
||||||
settings.normalAnimationDuration : 0
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -475,8 +442,7 @@ Item
|
|||||||
{
|
{
|
||||||
NumberAnimation
|
NumberAnimation
|
||||||
{
|
{
|
||||||
duration: settings.animationsEnabled ?
|
duration: 250
|
||||||
settings.normalAnimationDuration : 0
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -492,8 +458,7 @@ Item
|
|||||||
{
|
{
|
||||||
NumberAnimation
|
NumberAnimation
|
||||||
{
|
{
|
||||||
duration: settings.animationsEnabled ?
|
duration: 250
|
||||||
settings.normalAnimationDuration : 0
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -502,8 +467,7 @@ Item
|
|||||||
{
|
{
|
||||||
NumberAnimation
|
NumberAnimation
|
||||||
{
|
{
|
||||||
duration: settings.animationsEnabled ?
|
duration: 250
|
||||||
settings.normalAnimationDuration : 0
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -522,8 +486,7 @@ Item
|
|||||||
{
|
{
|
||||||
NumberAnimation
|
NumberAnimation
|
||||||
{
|
{
|
||||||
duration: settings.animationsEnabled ?
|
duration: 250
|
||||||
settings.normalAnimationDuration : 0
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -545,8 +508,7 @@ Item
|
|||||||
{
|
{
|
||||||
NumberAnimation
|
NumberAnimation
|
||||||
{
|
{
|
||||||
duration: settings.animationsEnabled ?
|
duration: 250
|
||||||
settings.normalAnimationDuration : 0
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -568,8 +530,7 @@ Item
|
|||||||
{
|
{
|
||||||
NumberAnimation
|
NumberAnimation
|
||||||
{
|
{
|
||||||
duration: settings.animationsEnabled ?
|
duration: 250
|
||||||
settings.normalAnimationDuration : 0
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -577,25 +538,6 @@ Item
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ErrorView
|
|
||||||
{
|
|
||||||
id: errorView
|
|
||||||
anchors.fill: parent
|
|
||||||
|
|
||||||
opacity: 0
|
|
||||||
visible: opacity > 0.01
|
|
||||||
manager: downloadManager
|
|
||||||
|
|
||||||
Behavior on opacity
|
|
||||||
{
|
|
||||||
NumberAnimation
|
|
||||||
{
|
|
||||||
duration: settings.animationsEnabled ?
|
|
||||||
settings.normalAnimationDuration : 0
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Item
|
Item
|
||||||
{
|
{
|
||||||
id: featuredLoaderItem
|
id: featuredLoaderItem
|
||||||
@@ -635,41 +577,6 @@ Item
|
|||||||
target: popupContainer
|
target: popupContainer
|
||||||
opacity: 0
|
opacity: 0
|
||||||
}
|
}
|
||||||
|
|
||||||
PropertyChanges
|
|
||||||
{
|
|
||||||
target: errorView
|
|
||||||
opacity: 0
|
|
||||||
}
|
|
||||||
},
|
|
||||||
State
|
|
||||||
{
|
|
||||||
name: "error"
|
|
||||||
when: homePageRoot.error
|
|
||||||
|
|
||||||
PropertyChanges
|
|
||||||
{
|
|
||||||
target: loadingAnimation
|
|
||||||
opacity: 1
|
|
||||||
}
|
|
||||||
|
|
||||||
PropertyChanges
|
|
||||||
{
|
|
||||||
target: pageArea
|
|
||||||
opacity: 0
|
|
||||||
}
|
|
||||||
|
|
||||||
PropertyChanges
|
|
||||||
{
|
|
||||||
target: popupContainer
|
|
||||||
opacity: 0
|
|
||||||
}
|
|
||||||
|
|
||||||
PropertyChanges
|
|
||||||
{
|
|
||||||
target: errorView
|
|
||||||
opacity: 1
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
State
|
State
|
||||||
{
|
{
|
||||||
@@ -687,18 +594,6 @@ Item
|
|||||||
target: pageArea
|
target: pageArea
|
||||||
opacity: 1
|
opacity: 1
|
||||||
}
|
}
|
||||||
|
|
||||||
PropertyChanges
|
|
||||||
{
|
|
||||||
target: errorView
|
|
||||||
opacity: 0
|
|
||||||
}
|
|
||||||
|
|
||||||
PropertyChanges
|
|
||||||
{
|
|
||||||
target: popupContainer
|
|
||||||
opacity: 0
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
State
|
State
|
||||||
{
|
{
|
||||||
@@ -716,18 +611,6 @@ Item
|
|||||||
target: loadingAnimation
|
target: loadingAnimation
|
||||||
opacity: 0
|
opacity: 0
|
||||||
}
|
}
|
||||||
|
|
||||||
PropertyChanges
|
|
||||||
{
|
|
||||||
target: errorView
|
|
||||||
opacity: 0
|
|
||||||
}
|
|
||||||
|
|
||||||
PropertyChanges
|
|
||||||
{
|
|
||||||
target: popupContainer
|
|
||||||
opacity: 1
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
||||||
@@ -740,15 +623,13 @@ Item
|
|||||||
NumberAnimation
|
NumberAnimation
|
||||||
{
|
{
|
||||||
target: loadingAnimation
|
target: loadingAnimation
|
||||||
duration: settings.animationsEnabled ?
|
duration: 250
|
||||||
settings.normalAnimationDuration : 0
|
|
||||||
property: "opacity";
|
property: "opacity";
|
||||||
}
|
}
|
||||||
NumberAnimation
|
NumberAnimation
|
||||||
{
|
{
|
||||||
target: pageArea
|
target: pageArea
|
||||||
duration: settings.animationsEnabled ?
|
duration: 250
|
||||||
settings.normalAnimationDuration : 0
|
|
||||||
property: "opacity";
|
property: "opacity";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -844,17 +725,4 @@ Item
|
|||||||
pageArea.opacity = 1
|
pageArea.opacity = 1
|
||||||
homePageRoot.popup = false
|
homePageRoot.popup = false
|
||||||
}
|
}
|
||||||
|
|
||||||
Settings
|
|
||||||
{
|
|
||||||
id: settings
|
|
||||||
property bool animationsEnabled: true
|
|
||||||
//ms length of page change
|
|
||||||
property int pageChangeAnimationDuration: 250
|
|
||||||
property int pageFadeAnimationDuration: 250
|
|
||||||
|
|
||||||
property int slowAnimationDuration: 750
|
|
||||||
property int normalAnimationDuration: 250
|
|
||||||
property int fastAnimationDuration: 125
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,22 +1,3 @@
|
|||||||
/*
|
|
||||||
* Komplex Wallpaper Engine
|
|
||||||
* Copyright (C) 2026 @DigitalArtifex
|
|
||||||
* https://digitalartifex.dev - https://github.com/DigitalArtifex
|
|
||||||
*
|
|
||||||
* 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/>
|
|
||||||
*/
|
|
||||||
import QtCore
|
|
||||||
import QtQuick
|
import QtQuick
|
||||||
import QtQuick.Controls
|
import QtQuick.Controls
|
||||||
import QtQuick.Layouts
|
import QtQuick.Layouts
|
||||||
@@ -102,8 +83,7 @@ Item
|
|||||||
Behavior on opacity {
|
Behavior on opacity {
|
||||||
NumberAnimation
|
NumberAnimation
|
||||||
{
|
{
|
||||||
duration: settings.animationsEnabled ?
|
duration: 250
|
||||||
settings.normalAnimationDuration : 0
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -111,8 +91,7 @@ Item
|
|||||||
Behavior on opacity {
|
Behavior on opacity {
|
||||||
NumberAnimation
|
NumberAnimation
|
||||||
{
|
{
|
||||||
duration: settings.animationsEnabled ?
|
duration: 250
|
||||||
settings.normalAnimationDuration : 0
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -146,17 +125,4 @@ Item
|
|||||||
paginator.opacity = 1
|
paginator.opacity = 1
|
||||||
rootItem.popup = false
|
rootItem.popup = false
|
||||||
}
|
}
|
||||||
|
|
||||||
Settings
|
|
||||||
{
|
|
||||||
id: settings
|
|
||||||
property bool animationsEnabled: true
|
|
||||||
//ms length of page change
|
|
||||||
property int pageChangeAnimationDuration: 250
|
|
||||||
property int pageFadeAnimationDuration: 250
|
|
||||||
|
|
||||||
property int slowAnimationDuration: 750
|
|
||||||
property int normalAnimationDuration: 250
|
|
||||||
property int fastAnimationDuration: 125
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,22 +1,3 @@
|
|||||||
/*
|
|
||||||
* Komplex Wallpaper Engine
|
|
||||||
* Copyright (C) 2026 @DigitalArtifex
|
|
||||||
* https://digitalartifex.dev - https://github.com/DigitalArtifex
|
|
||||||
*
|
|
||||||
* 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/>
|
|
||||||
*/
|
|
||||||
import QtCore
|
|
||||||
import QtQuick
|
import QtQuick
|
||||||
import QtQuick.Controls
|
import QtQuick.Controls
|
||||||
import QtQuick.Layouts
|
import QtQuick.Layouts
|
||||||
@@ -157,17 +138,4 @@ Rectangle {
|
|||||||
}
|
}
|
||||||
|
|
||||||
]
|
]
|
||||||
|
|
||||||
Settings
|
|
||||||
{
|
|
||||||
id: settings
|
|
||||||
property bool animationsEnabled: true
|
|
||||||
//ms length of page change
|
|
||||||
property int pageChangeAnimationDuration: 250
|
|
||||||
property int pageFadeAnimationDuration: 250
|
|
||||||
|
|
||||||
property int slowAnimationDuration: 750
|
|
||||||
property int normalAnimationDuration: 250
|
|
||||||
property int fastAnimationDuration: 125
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@@ -1,476 +0,0 @@
|
|||||||
/*
|
|
||||||
* Komplex Wallpaper Engine
|
|
||||||
* Copyright (C) 2026 @DigitalArtifex
|
|
||||||
* https://digitalartifex.dev - https://github.com/DigitalArtifex
|
|
||||||
*
|
|
||||||
* 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/>
|
|
||||||
*/
|
|
||||||
import QtCore
|
|
||||||
import QtQuick
|
|
||||||
import QtQuick.Controls
|
|
||||||
import QtQuick.Layouts
|
|
||||||
import KomplexHub
|
|
||||||
|
|
||||||
Item
|
|
||||||
{
|
|
||||||
property bool updated: updates.length > 0
|
|
||||||
property var updates: []
|
|
||||||
|
|
||||||
ColumnLayout
|
|
||||||
{
|
|
||||||
anchors.fill: parent
|
|
||||||
anchors.margins: Constants.largeMargin
|
|
||||||
|
|
||||||
Text
|
|
||||||
{
|
|
||||||
Layout.fillWidth: true
|
|
||||||
|
|
||||||
text: qsTr("Animation Settings")
|
|
||||||
font: Constants.h1Font
|
|
||||||
color: palette.text
|
|
||||||
}
|
|
||||||
|
|
||||||
Rectangle
|
|
||||||
{
|
|
||||||
Layout.fillWidth: true
|
|
||||||
Layout.preferredHeight: 320
|
|
||||||
Layout.margins: Constants.largeMargin
|
|
||||||
|
|
||||||
color: palette.base
|
|
||||||
border.color: palette.midlight
|
|
||||||
|
|
||||||
ColumnLayout
|
|
||||||
{
|
|
||||||
id: animationSettingsLayout
|
|
||||||
|
|
||||||
anchors.fill: parent
|
|
||||||
anchors.margins: Constants.largeMargin
|
|
||||||
|
|
||||||
RowLayout
|
|
||||||
{
|
|
||||||
Layout.fillWidth: true
|
|
||||||
Layout.preferredHeight: 36
|
|
||||||
|
|
||||||
CheckBox
|
|
||||||
{
|
|
||||||
Layout.preferredHeight: 36
|
|
||||||
property bool value: settings.animationsEnabled
|
|
||||||
|
|
||||||
id: animationsEnabledCheckbox
|
|
||||||
text: qsTr("Enable Animations")
|
|
||||||
font: Constants.h3Font
|
|
||||||
checked: value
|
|
||||||
|
|
||||||
onCheckStateChanged:
|
|
||||||
{
|
|
||||||
if(updates.indexOf("enable"))
|
|
||||||
{
|
|
||||||
updates.splice(updates.indexOf("enable"), 1)
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
updates.push("enable")
|
|
||||||
}
|
|
||||||
|
|
||||||
value = checked
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Rectangle
|
|
||||||
{
|
|
||||||
Layout.fillHeight: true
|
|
||||||
Layout.fillWidth: true
|
|
||||||
|
|
||||||
color: "transparent"
|
|
||||||
|
|
||||||
Rectangle
|
|
||||||
{
|
|
||||||
anchors.centerIn: parent
|
|
||||||
anchors.right: parent.right
|
|
||||||
anchors.left: parent.left
|
|
||||||
height: 2
|
|
||||||
color: palette.midlight
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
RowLayout
|
|
||||||
{
|
|
||||||
Layout.fillWidth: true
|
|
||||||
Layout.preferredHeight: 36
|
|
||||||
|
|
||||||
Text
|
|
||||||
{
|
|
||||||
Layout.fillWidth: true
|
|
||||||
Layout.fillHeight: true
|
|
||||||
|
|
||||||
text: qsTr("Slow Animation Duration (Ms)")
|
|
||||||
font: Constants.h3Font
|
|
||||||
color: palette.text
|
|
||||||
verticalAlignment: Qt.AlignVCenter
|
|
||||||
}
|
|
||||||
|
|
||||||
TextField
|
|
||||||
{
|
|
||||||
property int value: settings.slowAnimationDuration
|
|
||||||
|
|
||||||
Layout.fillHeight: true
|
|
||||||
Layout.preferredWidth: 36 * 3
|
|
||||||
|
|
||||||
id: slowAnimationDurationField
|
|
||||||
inputMethodHints: Qt.ImhFormattedNumbersOnly
|
|
||||||
horizontalAlignment: Text.AlignRight
|
|
||||||
enabled: animationsEnabledCheckbox.value
|
|
||||||
text: value
|
|
||||||
|
|
||||||
onEditingFinished: () =>
|
|
||||||
{
|
|
||||||
if(updates.indexOf("slowAnimationDuration"))
|
|
||||||
{
|
|
||||||
updates.splice(updates.indexOf("slowAnimationDuration"), 1)
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
updates.push("slowAnimationDuration")
|
|
||||||
}
|
|
||||||
|
|
||||||
value = parseInt(text)
|
|
||||||
}
|
|
||||||
|
|
||||||
Keys.onPressed: (event) =>
|
|
||||||
{
|
|
||||||
if (event.key === Qt.Key_Return || event.key === Qt.Key_Enter)
|
|
||||||
{
|
|
||||||
slowAnimationDurationField.focus = false; // Unfocus the TextField
|
|
||||||
event.accepted = true; // Prevent further propagation of the key event
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
background: Rectangle
|
|
||||||
{
|
|
||||||
color: slowAnimationDurationField.activeFocus ? palette.base : "transparent"
|
|
||||||
border.color: slowAnimationDurationField.activeFocus ? palette.highlight : "transparent"
|
|
||||||
border.width: 1
|
|
||||||
radius: 4
|
|
||||||
anchors.fill: slowAnimationDurationField
|
|
||||||
anchors.margins: -2
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
RowLayout
|
|
||||||
{
|
|
||||||
Layout.fillWidth: true
|
|
||||||
Layout.preferredHeight: 36
|
|
||||||
|
|
||||||
Text
|
|
||||||
{
|
|
||||||
Layout.fillWidth: true
|
|
||||||
Layout.fillHeight: true
|
|
||||||
|
|
||||||
text: qsTr("Normal Animation Duration (Ms)")
|
|
||||||
font: Constants.h3Font
|
|
||||||
color: palette.text
|
|
||||||
verticalAlignment: Qt.AlignVCenter
|
|
||||||
}
|
|
||||||
|
|
||||||
TextField
|
|
||||||
{
|
|
||||||
property int value: settings.normalAnimationDuration
|
|
||||||
|
|
||||||
Layout.fillHeight: true
|
|
||||||
Layout.preferredWidth: 36 * 3
|
|
||||||
|
|
||||||
id: normalAnimationDurationField
|
|
||||||
inputMethodHints: Qt.ImhFormattedNumbersOnly
|
|
||||||
horizontalAlignment: Text.AlignRight
|
|
||||||
enabled: animationsEnabledCheckbox.value
|
|
||||||
text: value
|
|
||||||
|
|
||||||
onEditingFinished: () =>
|
|
||||||
{
|
|
||||||
if(updates.indexOf("normalAnimationDuration"))
|
|
||||||
{
|
|
||||||
updates.splice(updates.indexOf("normalAnimationDuration"), 1)
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
updates.push("normalAnimationDuration")
|
|
||||||
}
|
|
||||||
|
|
||||||
value = parseInt(text)
|
|
||||||
}
|
|
||||||
|
|
||||||
Keys.onPressed: (event) =>
|
|
||||||
{
|
|
||||||
if (event.key === Qt.Key_Return || event.key === Qt.Key_Enter)
|
|
||||||
{
|
|
||||||
normalAnimationDurationField.focus = false; // Unfocus the TextField
|
|
||||||
event.accepted = true; // Prevent further propagation of the key event
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
background: Rectangle
|
|
||||||
{
|
|
||||||
color: normalAnimationDurationField.activeFocus ? palette.base : "transparent"
|
|
||||||
border.color: normalAnimationDurationField.activeFocus ? palette.highlight : "transparent"
|
|
||||||
border.width: 1
|
|
||||||
radius: 4
|
|
||||||
anchors.fill: normalAnimationDurationField
|
|
||||||
anchors.margins: -2
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
RowLayout
|
|
||||||
{
|
|
||||||
Layout.fillWidth: true
|
|
||||||
Layout.preferredHeight: 36
|
|
||||||
|
|
||||||
Text
|
|
||||||
{
|
|
||||||
Layout.fillWidth: true
|
|
||||||
Layout.fillHeight: true
|
|
||||||
|
|
||||||
text: qsTr("Fast Animation Duration (Ms)")
|
|
||||||
font: Constants.h3Font
|
|
||||||
color: palette.text
|
|
||||||
verticalAlignment: Qt.AlignVCenter
|
|
||||||
}
|
|
||||||
|
|
||||||
TextField
|
|
||||||
{
|
|
||||||
property int value: settings.fastAnimationDuration
|
|
||||||
|
|
||||||
Layout.fillHeight: true
|
|
||||||
Layout.preferredWidth: 36 * 3
|
|
||||||
|
|
||||||
id: fastAnimationDurationField
|
|
||||||
inputMethodHints: Qt.ImhFormattedNumbersOnly
|
|
||||||
horizontalAlignment: Text.AlignRight
|
|
||||||
enabled: animationsEnabledCheckbox.value
|
|
||||||
text: value
|
|
||||||
|
|
||||||
onEditingFinished: () =>
|
|
||||||
{
|
|
||||||
if(updates.indexOf("normalAnimationDuration"))
|
|
||||||
{
|
|
||||||
updates.splice(updates.indexOf("normalAnimationDuration"), 1)
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
updates.push("normalAnimationDuration")
|
|
||||||
}
|
|
||||||
value = parseInt(text)
|
|
||||||
}
|
|
||||||
|
|
||||||
Keys.onPressed: (event) =>
|
|
||||||
{
|
|
||||||
if (event.key === Qt.Key_Return || event.key === Qt.Key_Enter)
|
|
||||||
{
|
|
||||||
fastAnimationDurationField.focus = false; // Unfocus the TextField
|
|
||||||
event.accepted = true; // Prevent further propagation of the key event
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
background: Rectangle
|
|
||||||
{
|
|
||||||
color: fastAnimationDurationField.activeFocus ? palette.base : "transparent"
|
|
||||||
border.color: fastAnimationDurationField.activeFocus ? palette.highlight : "transparent"
|
|
||||||
border.width: 1
|
|
||||||
radius: 4
|
|
||||||
anchors.fill: fastAnimationDurationField
|
|
||||||
anchors.margins: -2
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
RowLayout
|
|
||||||
{
|
|
||||||
Layout.fillWidth: true
|
|
||||||
Layout.preferredHeight: 36
|
|
||||||
|
|
||||||
Text
|
|
||||||
{
|
|
||||||
Layout.fillWidth: true
|
|
||||||
Layout.fillHeight: true
|
|
||||||
|
|
||||||
text: qsTr("Page Change Animation Duration (Ms)")
|
|
||||||
font: Constants.h3Font
|
|
||||||
color: palette.text
|
|
||||||
verticalAlignment: Qt.AlignVCenter
|
|
||||||
}
|
|
||||||
|
|
||||||
TextField
|
|
||||||
{
|
|
||||||
property int value: settings.pageChangeAnimationDuration
|
|
||||||
|
|
||||||
Layout.fillHeight: true
|
|
||||||
Layout.preferredWidth: 36 * 3
|
|
||||||
|
|
||||||
id: pageChangeAnimationDurationField
|
|
||||||
inputMethodHints: Qt.ImhFormattedNumbersOnly
|
|
||||||
horizontalAlignment: Text.AlignRight
|
|
||||||
enabled: animationsEnabledCheckbox.value
|
|
||||||
text: value
|
|
||||||
|
|
||||||
onEditingFinished: () =>
|
|
||||||
{
|
|
||||||
if(updates.indexOf("pageChangeAnimationDuration"))
|
|
||||||
{
|
|
||||||
updates.splice(updates.indexOf("pageChangeAnimationDuration"), 1)
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
updates.push("pageChangeAnimationDuration")
|
|
||||||
}
|
|
||||||
value = parseInt(text)
|
|
||||||
}
|
|
||||||
|
|
||||||
Keys.onPressed: (event) =>
|
|
||||||
{
|
|
||||||
if (event.key === Qt.Key_Return || event.key === Qt.Key_Enter)
|
|
||||||
{
|
|
||||||
pageChangeAnimationDurationField.focus = false; // Unfocus the TextField
|
|
||||||
event.accepted = true; // Prevent further propagation of the key event
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
background: Rectangle
|
|
||||||
{
|
|
||||||
color: pageChangeAnimationDurationField.activeFocus ? palette.base : "transparent"
|
|
||||||
border.color: pageChangeAnimationDurationField.activeFocus ? palette.highlight : "transparent"
|
|
||||||
border.width: 1
|
|
||||||
radius: 4
|
|
||||||
anchors.fill: pageChangeAnimationDurationField
|
|
||||||
anchors.margins: -2
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
RowLayout
|
|
||||||
{
|
|
||||||
Layout.fillWidth: true
|
|
||||||
Layout.preferredHeight: 36
|
|
||||||
|
|
||||||
Text
|
|
||||||
{
|
|
||||||
Layout.fillWidth: true
|
|
||||||
Layout.fillHeight: true
|
|
||||||
|
|
||||||
text: qsTr("Page Fade Animation Duration (Ms)")
|
|
||||||
font: Constants.h3Font
|
|
||||||
color: palette.text
|
|
||||||
verticalAlignment: Qt.AlignVCenter
|
|
||||||
}
|
|
||||||
|
|
||||||
TextField
|
|
||||||
{
|
|
||||||
property int value: settings.pageFadeAnimationDuration
|
|
||||||
|
|
||||||
Layout.fillHeight: true
|
|
||||||
Layout.preferredWidth: 36 * 3
|
|
||||||
|
|
||||||
id: pageFadeAnimationDurationField
|
|
||||||
inputMethodHints: Qt.ImhFormattedNumbersOnly
|
|
||||||
horizontalAlignment: Text.AlignRight
|
|
||||||
text: value
|
|
||||||
enabled: animationsEnabledCheckbox.value
|
|
||||||
|
|
||||||
onEditingFinished: () =>
|
|
||||||
{
|
|
||||||
if(updates.indexOf("pageChangeAnimationDuration"))
|
|
||||||
{
|
|
||||||
updates.splice(updates.indexOf("pageChangeAnimationDuration"), 1)
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
updates.push("pageChangeAnimationDuration")
|
|
||||||
}
|
|
||||||
value = parseInt(text)
|
|
||||||
}
|
|
||||||
|
|
||||||
Keys.onPressed: (event) =>
|
|
||||||
{
|
|
||||||
if (event.key === Qt.Key_Return || event.key === Qt.Key_Enter)
|
|
||||||
{
|
|
||||||
pageFadeAnimationDurationField.focus = false; // Unfocus the TextField
|
|
||||||
event.accepted = true; // Prevent further propagation of the key event
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
background: Rectangle
|
|
||||||
{
|
|
||||||
color: pageFadeAnimationDurationField.activeFocus ? palette.base : "transparent"
|
|
||||||
border.color: pageFadeAnimationDurationField.activeFocus ? palette.highlight : "transparent"
|
|
||||||
border.width: 1
|
|
||||||
radius: 4
|
|
||||||
anchors.fill: pageFadeAnimationDurationField
|
|
||||||
anchors.margins: -2
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Item
|
|
||||||
{
|
|
||||||
Layout.fillHeight: true
|
|
||||||
Layout.fillWidth: true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Settings
|
|
||||||
{
|
|
||||||
id: settings
|
|
||||||
property bool animationsEnabled: true
|
|
||||||
|
|
||||||
//ms length of page change
|
|
||||||
property int pageChangeAnimationDuration: 250
|
|
||||||
property int pageFadeAnimationDuration: 250
|
|
||||||
|
|
||||||
property int slowAnimationDuration: 750
|
|
||||||
property int normalAnimationDuration: 250
|
|
||||||
property int fastAnimationDuration: 125
|
|
||||||
}
|
|
||||||
|
|
||||||
function apply()
|
|
||||||
{
|
|
||||||
if(updated)
|
|
||||||
{
|
|
||||||
settings.animationsEnabled = animationsEnabledCheckbox.value
|
|
||||||
settings.slowAnimationDuration = slowAnimationDurationField.value
|
|
||||||
settings.normalAnimationDuration = normalAnimationDurationField.value
|
|
||||||
settings.fastAnimationDuration = fastAnimationDurationField.value
|
|
||||||
settings.pageChangeAnimationDuration = pageChangeAnimationDurationField.value
|
|
||||||
settings.pageFadeAnimationDuration = pageFadeAnimationDurationField.value
|
|
||||||
|
|
||||||
updates.splice(0, updates.length)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function reset()
|
|
||||||
{
|
|
||||||
if(updated)
|
|
||||||
{
|
|
||||||
animationsEnabledCheckbox.value = settings.animationsEnabled
|
|
||||||
slowAnimationDurationField.value = settings.slowAnimationDuration
|
|
||||||
normalAnimationDurationField.value = settings.normalAnimationDuration
|
|
||||||
fastAnimationDurationField.value = settings.fastAnimationDuration
|
|
||||||
pageChangeAnimationDurationField.value = settings.pageChangeAnimationDuration
|
|
||||||
pageFadeAnimationDurationField.value = settings.pageFadeAnimationDuration
|
|
||||||
|
|
||||||
updates.splice(0, updates.length)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,22 +1,3 @@
|
|||||||
/*
|
|
||||||
* Komplex Wallpaper Engine
|
|
||||||
* Copyright (C) 2026 @DigitalArtifex
|
|
||||||
* https://digitalartifex.dev - https://github.com/DigitalArtifex
|
|
||||||
*
|
|
||||||
* 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/>
|
|
||||||
*/
|
|
||||||
import QtCore
|
|
||||||
import QtQuick
|
import QtQuick
|
||||||
import QtQuick.Controls
|
import QtQuick.Controls
|
||||||
|
|
||||||
@@ -84,15 +65,6 @@ Item
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Behavior on opacity
|
|
||||||
{
|
|
||||||
NumberAnimation
|
|
||||||
{
|
|
||||||
duration: settings.animationsEnabled ?
|
|
||||||
settings.normalAnimationDuration : 0
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Rectangle
|
Rectangle
|
||||||
@@ -101,20 +73,27 @@ Item
|
|||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
opacity: 0
|
opacity: 0
|
||||||
color: palette.base
|
color: palette.base
|
||||||
visible: opacity > 0.01
|
|
||||||
|
|
||||||
PackView
|
PackView
|
||||||
{
|
{
|
||||||
id: viewMoreWallpaperPopup
|
id: viewMoreWallpaperPopup
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
}
|
opacity: 0
|
||||||
|
visible: opacity > 0.01
|
||||||
|
//model: videosModel.itemModel
|
||||||
|
|
||||||
Behavior on opacity
|
Behavior on opacity {
|
||||||
{
|
|
||||||
NumberAnimation
|
NumberAnimation
|
||||||
{
|
{
|
||||||
duration: settings.animationsEnabled ?
|
duration: 250
|
||||||
settings.normalAnimationDuration : 0
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Behavior on opacity {
|
||||||
|
NumberAnimation
|
||||||
|
{
|
||||||
|
duration: 250
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -134,21 +113,9 @@ Item
|
|||||||
viewMoreWallpaperPopup.description = searchModel.data(searchModel.index(index,0), PackSearchModel.DescriptionRole)
|
viewMoreWallpaperPopup.description = searchModel.data(searchModel.index(index,0), PackSearchModel.DescriptionRole)
|
||||||
viewMoreWallpaperPopup.thumbnail = searchModel.data(searchModel.index(index,0), PackSearchModel.ThumbnailRole)
|
viewMoreWallpaperPopup.thumbnail = searchModel.data(searchModel.index(index,0), PackSearchModel.ThumbnailRole)
|
||||||
viewMoreWallpaperPopup.uuid = searchModel.data(searchModel.index(index,0), PackSearchModel.UuidRole)
|
viewMoreWallpaperPopup.uuid = searchModel.data(searchModel.index(index,0), PackSearchModel.UuidRole)
|
||||||
|
viewMoreWallpaperPopup.opacity = 1
|
||||||
popupContainer.opacity = 1
|
popupContainer.opacity = 1
|
||||||
paginator.opacity = 0
|
paginator.opacity = 0
|
||||||
rootItem.popup = true
|
rootItem.popup = true
|
||||||
}
|
}
|
||||||
|
|
||||||
Settings
|
|
||||||
{
|
|
||||||
id: settings
|
|
||||||
property bool animationsEnabled: true
|
|
||||||
//ms length of page change
|
|
||||||
property int pageChangeAnimationDuration: 250
|
|
||||||
property int pageFadeAnimationDuration: 250
|
|
||||||
|
|
||||||
property int slowAnimationDuration: 750
|
|
||||||
property int normalAnimationDuration: 250
|
|
||||||
property int fastAnimationDuration: 125
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,22 +1,3 @@
|
|||||||
/*
|
|
||||||
* Komplex Wallpaper Engine
|
|
||||||
* Copyright (C) 2026 @DigitalArtifex
|
|
||||||
* https://digitalartifex.dev - https://github.com/DigitalArtifex
|
|
||||||
*
|
|
||||||
* 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/>
|
|
||||||
*/
|
|
||||||
import QtCore
|
|
||||||
import QtQuick
|
import QtQuick
|
||||||
import QtQuick.Controls
|
import QtQuick.Controls
|
||||||
import QtQuick.Layouts
|
import QtQuick.Layouts
|
||||||
@@ -109,17 +90,4 @@ Item {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Settings
|
|
||||||
{
|
|
||||||
id: settings
|
|
||||||
property bool animationsEnabled: true
|
|
||||||
//ms length of page change
|
|
||||||
property int pageChangeAnimationDuration: 250
|
|
||||||
property int pageFadeAnimationDuration: 250
|
|
||||||
|
|
||||||
property int slowAnimationDuration: 750
|
|
||||||
property int normalAnimationDuration: 250
|
|
||||||
property int fastAnimationDuration: 125
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,22 +1,3 @@
|
|||||||
/*
|
|
||||||
* Komplex Wallpaper Engine
|
|
||||||
* Copyright (C) 2026 @DigitalArtifex
|
|
||||||
* https://digitalartifex.dev - https://github.com/DigitalArtifex
|
|
||||||
*
|
|
||||||
* 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/>
|
|
||||||
*/
|
|
||||||
import QtCore
|
|
||||||
import QtQuick
|
import QtQuick
|
||||||
import QtQuick.Controls
|
import QtQuick.Controls
|
||||||
import QtQuick.Layouts
|
import QtQuick.Layouts
|
||||||
@@ -109,15 +90,6 @@ Rectangle
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Behavior on opacity
|
|
||||||
{
|
|
||||||
NumberAnimation
|
|
||||||
{
|
|
||||||
duration: settings.animationsEnabled ?
|
|
||||||
settings.normalAnimationDuration : 0
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Rectangle
|
Rectangle
|
||||||
@@ -135,22 +107,18 @@ Rectangle
|
|||||||
opacity: 0
|
opacity: 0
|
||||||
visible: opacity > 0.01
|
visible: opacity > 0.01
|
||||||
|
|
||||||
Behavior on opacity
|
Behavior on opacity {
|
||||||
{
|
|
||||||
NumberAnimation
|
NumberAnimation
|
||||||
{
|
{
|
||||||
duration: settings.animationsEnabled ?
|
duration: 250
|
||||||
settings.normalAnimationDuration : 0
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Behavior on opacity
|
Behavior on opacity {
|
||||||
{
|
|
||||||
NumberAnimation
|
NumberAnimation
|
||||||
{
|
{
|
||||||
duration: settings.animationsEnabled ?
|
duration: 250
|
||||||
settings.normalAnimationDuration : 0
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -174,17 +142,4 @@ Rectangle
|
|||||||
resultsLayout.opacity = 0
|
resultsLayout.opacity = 0
|
||||||
rootItem.popup = true
|
rootItem.popup = true
|
||||||
}
|
}
|
||||||
|
|
||||||
Settings
|
|
||||||
{
|
|
||||||
id: settings
|
|
||||||
property bool animationsEnabled: true
|
|
||||||
//ms length of page change
|
|
||||||
property int pageChangeAnimationDuration: 250
|
|
||||||
property int pageFadeAnimationDuration: 250
|
|
||||||
|
|
||||||
property int slowAnimationDuration: 750
|
|
||||||
property int normalAnimationDuration: 250
|
|
||||||
property int fastAnimationDuration: 125
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,22 +1,3 @@
|
|||||||
/*
|
|
||||||
* Komplex Wallpaper Engine
|
|
||||||
* Copyright (C) 2026 @DigitalArtifex
|
|
||||||
* https://digitalartifex.dev - https://github.com/DigitalArtifex
|
|
||||||
*
|
|
||||||
* 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/>
|
|
||||||
*/
|
|
||||||
import QtCore
|
|
||||||
import QtQuick
|
import QtQuick
|
||||||
import QtQuick.Controls
|
import QtQuick.Controls
|
||||||
import QtQuick.Layouts
|
import QtQuick.Layouts
|
||||||
@@ -30,9 +11,6 @@ import KomplexHub.Pages
|
|||||||
|
|
||||||
Item {
|
Item {
|
||||||
readonly property bool searchable: false
|
readonly property bool searchable: false
|
||||||
property bool settingsUpdated: wallpaperSettingsUpdated || komplexSettingsUpdated
|
|
||||||
property bool wallpaperSettingsUpdated: wallpaperSettingsPage.updated && pageStack.currentIndex === 0
|
|
||||||
property bool komplexSettingsUpdated: komplexSettingsPage.updated && pageStack.currentIndex === 1
|
|
||||||
|
|
||||||
id: settingsPageRoot
|
id: settingsPageRoot
|
||||||
|
|
||||||
@@ -51,9 +29,6 @@ Item {
|
|||||||
TabButton {
|
TabButton {
|
||||||
text: qsTr("Wallpaper")
|
text: qsTr("Wallpaper")
|
||||||
}
|
}
|
||||||
TabButton {
|
|
||||||
text: qsTr("Komplex")
|
|
||||||
}
|
|
||||||
TabButton {
|
TabButton {
|
||||||
text: qsTr("Account")
|
text: qsTr("Account")
|
||||||
}
|
}
|
||||||
@@ -62,53 +37,33 @@ Item {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
StackLayout
|
StackLayout {
|
||||||
{
|
|
||||||
id: pageStack
|
|
||||||
Layout.fillHeight: true
|
Layout.fillHeight: true
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
currentIndex: bar.currentIndex
|
currentIndex: bar.currentIndex
|
||||||
|
|
||||||
Item
|
Item {
|
||||||
{
|
|
||||||
id: wallpaperTab
|
id: wallpaperTab
|
||||||
|
|
||||||
Layout.fillHeight: true
|
Layout.fillHeight: true
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
|
|
||||||
WallpaperSettingsPage
|
WallpaperSettingsPage {
|
||||||
{
|
|
||||||
id: wallpaperSettingsPage
|
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Item
|
Item {
|
||||||
{
|
|
||||||
id: komplexTab
|
|
||||||
|
|
||||||
Layout.fillHeight: true
|
|
||||||
Layout.fillWidth: true
|
|
||||||
|
|
||||||
KomplexSettingsPage
|
|
||||||
{
|
|
||||||
id: komplexSettingsPage
|
|
||||||
anchors.fill: parent
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Item
|
|
||||||
{
|
|
||||||
id: accountTab
|
id: accountTab
|
||||||
|
|
||||||
Layout.fillHeight: true
|
Layout.fillHeight: true
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
|
|
||||||
UserProfilePage
|
UserProfilePage {
|
||||||
{
|
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Item
|
Item {
|
||||||
{
|
|
||||||
Layout.fillHeight: true
|
Layout.fillHeight: true
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
property string title: qsTr("Hello!")
|
property string title: qsTr("Hello!")
|
||||||
@@ -123,17 +78,14 @@ Pexels")
|
|||||||
|
|
||||||
id: keroHelloAvatarRoot
|
id: keroHelloAvatarRoot
|
||||||
|
|
||||||
Rectangle
|
Rectangle {
|
||||||
{
|
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
color: "transparent"
|
color: "transparent"
|
||||||
|
|
||||||
ColumnLayout
|
ColumnLayout {
|
||||||
{
|
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
|
|
||||||
KeroHelloAvatar
|
KeroHelloAvatar {
|
||||||
{
|
|
||||||
Layout.fillHeight: true
|
Layout.fillHeight: true
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
antialiasing: true
|
antialiasing: true
|
||||||
@@ -141,8 +93,7 @@ Pexels")
|
|||||||
|
|
||||||
Item { Layout.preferredHeight: 36 }
|
Item { Layout.preferredHeight: 36 }
|
||||||
|
|
||||||
Text
|
Text {
|
||||||
{
|
|
||||||
Layout.fillHeight: false
|
Layout.fillHeight: false
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
Layout.margins: Constants.largeMargin
|
Layout.margins: Constants.largeMargin
|
||||||
@@ -155,8 +106,7 @@ Pexels")
|
|||||||
textFormat: Text.MarkdownText
|
textFormat: Text.MarkdownText
|
||||||
}
|
}
|
||||||
|
|
||||||
Text
|
Text {
|
||||||
{
|
|
||||||
Layout.fillHeight: false
|
Layout.fillHeight: false
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
Layout.margins: Constants.largeMargin
|
Layout.margins: Constants.largeMargin
|
||||||
@@ -171,19 +121,16 @@ Pexels")
|
|||||||
|
|
||||||
Item { Layout.fillHeight: true }
|
Item { Layout.fillHeight: true }
|
||||||
|
|
||||||
RowLayout
|
RowLayout {
|
||||||
{
|
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
Layout.alignment: Qt.AlignTop | Qt.AlignRight
|
Layout.alignment: Qt.AlignTop | Qt.AlignRight
|
||||||
|
|
||||||
ColumnLayout
|
ColumnLayout {
|
||||||
{
|
|
||||||
Layout.alignment: Qt.AlignTop | Qt.AlignRight
|
Layout.alignment: Qt.AlignTop | Qt.AlignRight
|
||||||
Layout.margins: Constants.largeMargin
|
Layout.margins: Constants.largeMargin
|
||||||
Layout.fillHeight: true
|
Layout.fillHeight: true
|
||||||
|
|
||||||
Text
|
Text {
|
||||||
{
|
|
||||||
text: qsTr("Contributors")
|
text: qsTr("Contributors")
|
||||||
color: palette.text.darker()
|
color: palette.text.darker()
|
||||||
font: Constants.h5Font
|
font: Constants.h5Font
|
||||||
@@ -194,8 +141,7 @@ Pexels")
|
|||||||
textFormat: Text.MarkdownText
|
textFormat: Text.MarkdownText
|
||||||
}
|
}
|
||||||
|
|
||||||
Text
|
Text {
|
||||||
{
|
|
||||||
id: contributorText
|
id: contributorText
|
||||||
text: keroHelloAvatarRoot.contributors
|
text: keroHelloAvatarRoot.contributors
|
||||||
color: palette.text.darker()
|
color: palette.text.darker()
|
||||||
@@ -207,14 +153,12 @@ Pexels")
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ColumnLayout
|
ColumnLayout {
|
||||||
{
|
|
||||||
Layout.alignment: Qt.AlignTop | Qt.AlignRight
|
Layout.alignment: Qt.AlignTop | Qt.AlignRight
|
||||||
Layout.margins: Constants.largeMargin
|
Layout.margins: Constants.largeMargin
|
||||||
Layout.fillHeight: true
|
Layout.fillHeight: true
|
||||||
|
|
||||||
Text
|
Text {
|
||||||
{
|
|
||||||
text: qsTr("Special Thanks")
|
text: qsTr("Special Thanks")
|
||||||
color: palette.text.darker()
|
color: palette.text.darker()
|
||||||
font: Constants.h5Font
|
font: Constants.h5Font
|
||||||
@@ -225,8 +169,7 @@ Pexels")
|
|||||||
textFormat: Text.MarkdownText
|
textFormat: Text.MarkdownText
|
||||||
}
|
}
|
||||||
|
|
||||||
Text
|
Text {
|
||||||
{
|
|
||||||
id: thanksText
|
id: thanksText
|
||||||
text: keroHelloAvatarRoot.thanks
|
text: keroHelloAvatarRoot.thanks
|
||||||
color: palette.text.darker()
|
color: palette.text.darker()
|
||||||
@@ -240,92 +183,10 @@ Pexels")
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Rectangle
|
|
||||||
{
|
|
||||||
Layout.fillWidth: true
|
|
||||||
Layout.preferredHeight: settingsUpdated ? 64 : 0
|
|
||||||
color: palette.base
|
|
||||||
border.color: palette.midlight
|
|
||||||
opacity: settingsUpdated ? 1 : 0
|
|
||||||
|
|
||||||
RowLayout
|
|
||||||
{
|
|
||||||
anchors.fill: parent
|
|
||||||
anchors.rightMargin: Constants.mediumMargin
|
|
||||||
|
|
||||||
Item
|
|
||||||
{
|
|
||||||
Layout.fillHeight: true
|
|
||||||
Layout.fillWidth: true
|
|
||||||
}
|
|
||||||
|
|
||||||
SquareButton
|
|
||||||
{
|
|
||||||
Layout.preferredHeight: 50
|
|
||||||
Layout.preferredWidth: 160
|
|
||||||
|
|
||||||
Layout.alignment: Qt.AlignRight | Qt.AlignVCenter
|
|
||||||
icon.source: "qrc:/images/icons/icons8-reply-arrow.svg"
|
|
||||||
text: qsTr("Reset")
|
|
||||||
}
|
|
||||||
|
|
||||||
SquareButton
|
|
||||||
{
|
|
||||||
Layout.preferredHeight: 50
|
|
||||||
Layout.preferredWidth: 160
|
|
||||||
Layout.alignment: Qt.AlignRight | Qt.AlignVCenter
|
|
||||||
icon.source: "qrc:/images/icons/icons8-check-mark.svg"
|
|
||||||
text: qsTr("Apply")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Behavior on opacity
|
|
||||||
{
|
|
||||||
NumberAnimation
|
|
||||||
{
|
|
||||||
duration: settings.animationsEnabled ?
|
|
||||||
settings.normalAnimationDuration : 0
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Behavior on height
|
|
||||||
{
|
|
||||||
NumberAnimation
|
|
||||||
{
|
|
||||||
duration: settings.animationsEnabled ?
|
|
||||||
settings.normalAnimationDuration : 0
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function applyCurrentSettings()
|
|
||||||
{
|
|
||||||
if(pageStack.currentIndex === 0 && wallpaperSettingsPage.updated)
|
|
||||||
{
|
|
||||||
wallpaperSettingsPage.apply()
|
|
||||||
}
|
|
||||||
|
|
||||||
else if(pageStack.currentIndex === 1 && komplexSettingsPage.updated)
|
|
||||||
{
|
|
||||||
komplexSettingsPage.apply()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function resetCurrentSettings()
|
|
||||||
{
|
|
||||||
if(pageStack.currentIndex === 0 && wallpaperSettingsPage.updated)
|
|
||||||
{
|
|
||||||
wallpaperSettingsPage.reset()
|
|
||||||
}
|
|
||||||
|
|
||||||
else if(pageStack.currentIndex === 1 && komplexSettingsPage.updated)
|
|
||||||
{
|
|
||||||
komplexSettingsPage.reset()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,22 +1,3 @@
|
|||||||
/*
|
|
||||||
* Komplex Wallpaper Engine
|
|
||||||
* Copyright (C) 2026 @DigitalArtifex
|
|
||||||
* https://digitalartifex.dev - https://github.com/DigitalArtifex
|
|
||||||
*
|
|
||||||
* 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/>
|
|
||||||
*/
|
|
||||||
import QtCore
|
|
||||||
import QtQuick
|
import QtQuick
|
||||||
import QtQuick.Controls
|
import QtQuick.Controls
|
||||||
import QtQuick.Layouts
|
import QtQuick.Layouts
|
||||||
@@ -82,17 +63,4 @@ Item {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Settings
|
|
||||||
{
|
|
||||||
id: settings
|
|
||||||
property bool animationsEnabled: true
|
|
||||||
//ms length of page change
|
|
||||||
property int pageChangeAnimationDuration: 250
|
|
||||||
property int pageFadeAnimationDuration: 250
|
|
||||||
|
|
||||||
property int slowAnimationDuration: 750
|
|
||||||
property int normalAnimationDuration: 250
|
|
||||||
property int fastAnimationDuration: 125
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,22 +1,3 @@
|
|||||||
/*
|
|
||||||
* Komplex Wallpaper Engine
|
|
||||||
* Copyright (C) 2026 @DigitalArtifex
|
|
||||||
* https://digitalartifex.dev - https://github.com/DigitalArtifex
|
|
||||||
*
|
|
||||||
* 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/>
|
|
||||||
*/
|
|
||||||
import QtCore
|
|
||||||
import QtQuick
|
import QtQuick
|
||||||
import QtQuick.Controls
|
import QtQuick.Controls
|
||||||
import QtQuick.Layouts
|
import QtQuick.Layouts
|
||||||
@@ -85,15 +66,6 @@ Item
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Behavior on opacity
|
|
||||||
{
|
|
||||||
NumberAnimation
|
|
||||||
{
|
|
||||||
duration: settings.animationsEnabled ?
|
|
||||||
settings.normalAnimationDuration : 0
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Rectangle
|
Rectangle
|
||||||
@@ -108,16 +80,22 @@ Item
|
|||||||
{
|
{
|
||||||
id: viewMoreVideoPopup
|
id: viewMoreVideoPopup
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
visible: opacity > 0.01
|
|
||||||
opacity: 0
|
opacity: 0
|
||||||
|
|
||||||
|
Behavior on opacity
|
||||||
|
{
|
||||||
|
NumberAnimation
|
||||||
|
{
|
||||||
|
duration: 250
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Behavior on opacity
|
Behavior on opacity
|
||||||
{
|
{
|
||||||
NumberAnimation
|
NumberAnimation
|
||||||
{
|
{
|
||||||
duration: settings.animationsEnabled ?
|
duration: 250
|
||||||
settings.normalAnimationDuration : 0
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -144,17 +122,4 @@ Item
|
|||||||
paginator.opacity = 1
|
paginator.opacity = 1
|
||||||
rootItem.popup = false
|
rootItem.popup = false
|
||||||
}
|
}
|
||||||
|
|
||||||
Settings
|
|
||||||
{
|
|
||||||
id: settings
|
|
||||||
property bool animationsEnabled: true
|
|
||||||
//ms length of page change
|
|
||||||
property int pageChangeAnimationDuration: 250
|
|
||||||
property int pageFadeAnimationDuration: 250
|
|
||||||
|
|
||||||
property int slowAnimationDuration: 750
|
|
||||||
property int normalAnimationDuration: 250
|
|
||||||
property int fastAnimationDuration: 125
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,29 +23,13 @@
|
|||||||
*/
|
*/
|
||||||
// pragma ComponentBehavior: Bound
|
// pragma ComponentBehavior: Bound
|
||||||
|
|
||||||
/*
|
|
||||||
* Komplex Wallpaper Engine
|
|
||||||
* Copyright (C) 2026 @DigitalArtifex
|
|
||||||
* https://digitalartifex.dev - https://github.com/DigitalArtifex
|
|
||||||
*
|
|
||||||
* 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/>
|
|
||||||
*/
|
|
||||||
import QtCore
|
|
||||||
import QtQuick
|
import QtQuick
|
||||||
import QtQuick.Controls
|
import QtQuick.Controls
|
||||||
import QtQuick.Dialogs
|
import QtQuick.Dialogs
|
||||||
import QtQuick.Layouts
|
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 Qt.labs.folderlistmodel 2.15
|
||||||
|
|
||||||
import KomplexHub
|
import KomplexHub
|
||||||
@@ -68,9 +52,13 @@ Item
|
|||||||
|
|
||||||
id: root
|
id: root
|
||||||
property alias cfg_pauseMode: pauseModeCombo.currentIndex
|
property alias cfg_pauseMode: pauseModeCombo.currentIndex
|
||||||
|
property alias cfg_isPaused: runningCombo.checked
|
||||||
property alias cfg_shaderSpeed: speedSlider.value
|
property alias cfg_shaderSpeed: speedSlider.value
|
||||||
property alias cfg_mouseSpeedBias: mouseBiasSlider.value
|
property alias cfg_mouseSpeedBias: mouseBiasSlider.value
|
||||||
property alias cfg_enableMouseTracking: mouseTrackingCheckbox.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_checkActiveScreen: activeScreenOnlyCheckbox.checked
|
||||||
property alias cfg_excludeWindows: excludeWindows.windows
|
property alias cfg_excludeWindows: excludeWindows.windows
|
||||||
property alias cfg_running: runningCombo.checked
|
property alias cfg_running: runningCombo.checked
|
||||||
@@ -89,9 +77,6 @@ Item
|
|||||||
property bool enableMouseTracking: true
|
property bool enableMouseTracking: true
|
||||||
property real mouseTrackingBias: 0.5
|
property real mouseTrackingBias: 0.5
|
||||||
|
|
||||||
property bool updated: updates.length > 0
|
|
||||||
property var updates: []
|
|
||||||
|
|
||||||
Rectangle {
|
Rectangle {
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
color: "transparent"
|
color: "transparent"
|
||||||
@@ -138,17 +123,19 @@ Item
|
|||||||
currentIndex: manager.shaderPackIndex
|
currentIndex: manager.shaderPackIndex
|
||||||
displayText: currentIndex === -1 ? "Custom File" : currentText.replace("_", " ").charAt(0).toUpperCase() + currentText.replace("_", " ").slice(1)
|
displayText: currentIndex === -1 ? "Custom File" : currentText.replace("_", " ").charAt(0).toUpperCase() + currentText.replace("_", " ").slice(1)
|
||||||
|
|
||||||
onCurrentIndexChanged:
|
// onCurrentTextChanged:
|
||||||
{
|
// {
|
||||||
if(updates.indexOf("wallpaper") >= 0 && value === manager.shaderPackIndex)
|
// root.cfg_shader_package_index = currentIndex;
|
||||||
{
|
|
||||||
updates.slice(updates.indexOf("wallpaper"), 1)
|
// if (root.cfg_shader_package_index === -1)
|
||||||
}
|
// return;
|
||||||
else
|
|
||||||
{
|
// var source = currentText
|
||||||
updates.push("wallpaper")
|
// shaderPackModel.loadMetadata(source)
|
||||||
}
|
// root.cfg_shader_package = "file://" + shaderPackModel.path(source)
|
||||||
}
|
// }
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Item { Layout.preferredHeight: Constants.smallMargin }
|
Item { Layout.preferredHeight: Constants.smallMargin }
|
||||||
@@ -187,15 +174,6 @@ Item
|
|||||||
onEditingFinished: () =>
|
onEditingFinished: () =>
|
||||||
{
|
{
|
||||||
value = parseInt(text)
|
value = parseInt(text)
|
||||||
|
|
||||||
if(updates.indexOf("resolutionX") >= 0 && value === manager.resolutionX)
|
|
||||||
{
|
|
||||||
updates.slice(updates.indexOf("resolutionX"), 1)
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
updates.push("resolutionX")
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Keys.onPressed: (event) =>
|
Keys.onPressed: (event) =>
|
||||||
@@ -218,8 +196,7 @@ Item
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Text
|
Text {
|
||||||
{
|
|
||||||
text: qsTr("Y")
|
text: qsTr("Y")
|
||||||
font: Constants.h3Font
|
font: Constants.h3Font
|
||||||
color: palette.text
|
color: palette.text
|
||||||
@@ -228,8 +205,7 @@ Item
|
|||||||
verticalAlignment: Text.AlignVCenter
|
verticalAlignment: Text.AlignVCenter
|
||||||
}
|
}
|
||||||
|
|
||||||
TextField
|
TextField {
|
||||||
{
|
|
||||||
property int value: manager.resolutionY
|
property int value: manager.resolutionY
|
||||||
|
|
||||||
Layout.preferredHeight: 36
|
Layout.preferredHeight: 36
|
||||||
@@ -243,15 +219,6 @@ Item
|
|||||||
onEditingFinished: () =>
|
onEditingFinished: () =>
|
||||||
{
|
{
|
||||||
value = parseInt(text)
|
value = parseInt(text)
|
||||||
|
|
||||||
if(updates.indexOf("resolutionY") >= 0 && value === manager.resolutionY)
|
|
||||||
{
|
|
||||||
updates.slice(updates.indexOf("resolutionY"), 1)
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
updates.push("resolutionY")
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Keys.onPressed: (event) =>
|
Keys.onPressed: (event) =>
|
||||||
@@ -281,8 +248,7 @@ Item
|
|||||||
{
|
{
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
|
|
||||||
Text
|
Text {
|
||||||
{
|
|
||||||
text: qsTr("Frame Rate")
|
text: qsTr("Frame Rate")
|
||||||
font: Constants.h3Font
|
font: Constants.h3Font
|
||||||
color: palette.text
|
color: palette.text
|
||||||
@@ -297,19 +263,7 @@ Item
|
|||||||
from: 1
|
from: 1
|
||||||
to: 60
|
to: 60
|
||||||
stepSize: 0.01
|
stepSize: 0.01
|
||||||
onValueChanged:
|
onValueChanged: frameRateField.text = String(value.toFixed(2));
|
||||||
{
|
|
||||||
frameRateField.text = String(value.toFixed(2));
|
|
||||||
|
|
||||||
if(updates.indexOf("frameRate") >= 0 && value === manager.targetFramerate)
|
|
||||||
{
|
|
||||||
updates.slice(updates.indexOf("frameRate"), 1)
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
updates.push("frameRate")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Component.onCompleted: () => {
|
Component.onCompleted: () => {
|
||||||
value = manager.targetFramerate
|
value = manager.targetFramerate
|
||||||
@@ -359,8 +313,7 @@ Item
|
|||||||
id: speedLayout
|
id: speedLayout
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
|
|
||||||
Text
|
Text {
|
||||||
{
|
|
||||||
text: qsTr("Shader Speed")
|
text: qsTr("Shader Speed")
|
||||||
font: Constants.h3Font
|
font: Constants.h3Font
|
||||||
color: palette.text
|
color: palette.text
|
||||||
@@ -376,22 +329,9 @@ Item
|
|||||||
from: -4.0
|
from: -4.0
|
||||||
to: 4.0
|
to: 4.0
|
||||||
stepSize: 0.01
|
stepSize: 0.01
|
||||||
onValueChanged:
|
onValueChanged: shaderSpeedField.text = String(value.toFixed(2));
|
||||||
{
|
|
||||||
if(updates.indexOf("shaderSpeed") >= 0 && value === manager.shaderSpeed)
|
|
||||||
{
|
|
||||||
updates.slice(updates.indexOf("shaderSpeed"), 1)
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
updates.push("shaderSpeed")
|
|
||||||
}
|
|
||||||
|
|
||||||
shaderSpeedField.text = String(value.toFixed(2));
|
Component.onCompleted: () => {
|
||||||
}
|
|
||||||
|
|
||||||
Component.onCompleted: () =>
|
|
||||||
{
|
|
||||||
value = manager.shaderSpeed
|
value = manager.shaderSpeed
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -474,17 +414,7 @@ Item
|
|||||||
]
|
]
|
||||||
|
|
||||||
textRole: modelData
|
textRole: modelData
|
||||||
onCurrentIndexChanged:
|
//onCurrentIndexChanged: root.cfg_pauseMode = currentIndex
|
||||||
{
|
|
||||||
if(updates.indexOf("pauseMode") && currentIndex === manager.pauseMode)
|
|
||||||
{
|
|
||||||
updates.slice(updates.indexOf("pauseMode"), 1)
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
updates.push("pauseMode")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
currentIndex: manager.pauseMode
|
currentIndex: manager.pauseMode
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -504,8 +434,7 @@ Item
|
|||||||
{
|
{
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
|
|
||||||
Text
|
Text {
|
||||||
{
|
|
||||||
text: qsTr("Excluded Windows")
|
text: qsTr("Excluded Windows")
|
||||||
font: Constants.h3Font
|
font: Constants.h3Font
|
||||||
color: palette.text
|
color: palette.text
|
||||||
@@ -522,15 +451,6 @@ Item
|
|||||||
onEditingFinished: () =>
|
onEditingFinished: () =>
|
||||||
{
|
{
|
||||||
windows = excludeWindows.text.trim().replace(/\s+/g, "").split(",");
|
windows = excludeWindows.text.trim().replace(/\s+/g, "").split(",");
|
||||||
|
|
||||||
if(updates.indexOf("excludeWindows") >= 0 && windows === manager.excludedWindows)
|
|
||||||
{
|
|
||||||
updates.slice(updates.indexOf("excludeWindows"), 1)
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
updates.push("excludeWindows")
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ToolTip.visible: hovered
|
ToolTip.visible: hovered
|
||||||
@@ -542,27 +462,16 @@ Item
|
|||||||
|
|
||||||
CheckBox
|
CheckBox
|
||||||
{
|
{
|
||||||
|
//Kirigami.FormData.label: i18nd("com.github.digitalartifex.komplex", cfg_isPaused ? "Playing" : "Paused")
|
||||||
|
|
||||||
id: runningCombo
|
id: runningCombo
|
||||||
checked: manager.running
|
checked: manager.running
|
||||||
text: qsTr("Shader Is Running")
|
text: qsTr("Shader Is Running")
|
||||||
|
|
||||||
onCheckedChanged:
|
|
||||||
{
|
|
||||||
if(updates.indexOf("shaderRunning") > 0 && checked === manager.running)
|
|
||||||
{
|
|
||||||
updates.slice(updates.indexOf("shaderRunning"), 1)
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
updates.push("shaderRunning")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Item { Layout.preferredHeight: Constants.largeMargin }
|
Item { Layout.preferredHeight: Constants.largeMargin }
|
||||||
|
|
||||||
Text
|
Text {
|
||||||
{
|
|
||||||
text: qsTr("Mouse Tracking")
|
text: qsTr("Mouse Tracking")
|
||||||
font: Constants.h2Font
|
font: Constants.h2Font
|
||||||
color: palette.text
|
color: palette.text
|
||||||
@@ -574,15 +483,14 @@ Item
|
|||||||
{
|
{
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
|
|
||||||
Text
|
Text {
|
||||||
{
|
text: qsTr("Mouse Tracking Bias")
|
||||||
text: qsTr("Mouse Speed Bias")
|
|
||||||
font: Constants.h3Font
|
font: Constants.h3Font
|
||||||
color: palette.text
|
color: palette.text
|
||||||
verticalAlignment: Text.AlignVCenter
|
verticalAlignment: Text.AlignVCenter
|
||||||
Layout.preferredHeight: 36
|
Layout.preferredHeight: 36
|
||||||
}
|
}
|
||||||
|
//Kirigami.FormData.label: i18nd("com.github.digitalartifex.komplex", "Mouse bias:")
|
||||||
Slider
|
Slider
|
||||||
{
|
{
|
||||||
id: mouseBiasSlider
|
id: mouseBiasSlider
|
||||||
@@ -595,15 +503,6 @@ Item
|
|||||||
onValueChanged: () =>
|
onValueChanged: () =>
|
||||||
{
|
{
|
||||||
mouseBiasField.text = String(value.toFixed(2));
|
mouseBiasField.text = String(value.toFixed(2));
|
||||||
|
|
||||||
if(updates.indexOf("mouseSpeedBias") >= 0 && value === manager.mouseTrackingBias)
|
|
||||||
{
|
|
||||||
updates.slice(updates.indexOf("mouseSpeedBias"), 1)
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
updates.push("mouseSpeedBias")
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
TextField
|
TextField
|
||||||
@@ -650,29 +549,19 @@ Item
|
|||||||
|
|
||||||
CheckBox
|
CheckBox
|
||||||
{
|
{
|
||||||
|
//Kirigami.FormData.label: i18nd("com.github.digitalartifex.komplex", cfg_isPaused ? "Playing" : "Paused")
|
||||||
|
|
||||||
id: mouseTrackingCheckbox
|
id: mouseTrackingCheckbox
|
||||||
checked: manager.mouseTrackingEnabled
|
checked: manager.mouseTrackingEnabled
|
||||||
text: qsTr("Mouse Tracking Enabled")
|
text: qsTr("Mouse Tracking Enabled")
|
||||||
|
|
||||||
onCheckedChanged:
|
|
||||||
{
|
|
||||||
if(updates.indexOf("mouseEnabled") >= 0 && currentIndex === manager.mouseTrackingEnabled)
|
|
||||||
{
|
|
||||||
updates.slice(updates.indexOf("mouseEnabled"), 1)
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
updates.push("mouseEnabled")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Button
|
// Button
|
||||||
// {
|
// {
|
||||||
// visible: navBar.currentIndex === 2
|
// visible: navBar.currentIndex === 2
|
||||||
// id: kofiButton
|
// id: kofiButton
|
||||||
// Layout.preferredWidth: 4 * 5
|
// Layout.preferredWidth: Kirigami.Units.gridUnit * 5
|
||||||
// Layout.preferredHeight: 4 * 3
|
// Layout.preferredHeight: Kirigami.Units.gridUnit * 3
|
||||||
|
|
||||||
// contentItem: RowLayout
|
// contentItem: RowLayout
|
||||||
// {
|
// {
|
||||||
@@ -709,9 +598,10 @@ Item
|
|||||||
|
|
||||||
RowLayout
|
RowLayout
|
||||||
{
|
{
|
||||||
|
//Kirigami.FormData.label: i18nd("com.github.digitalartifex.komplex", "Author:")
|
||||||
Text
|
Text
|
||||||
{
|
{
|
||||||
Layout.preferredWidth: 4 * 11
|
Layout.preferredWidth: Kirigami.Units.gridUnit * 11
|
||||||
text: shaderPackModel.metadata.author
|
text: shaderPackModel.metadata.author
|
||||||
horizontalAlignment: Text.AlignLeft
|
horizontalAlignment: Text.AlignLeft
|
||||||
color: palette.text
|
color: palette.text
|
||||||
@@ -720,9 +610,10 @@ Item
|
|||||||
|
|
||||||
RowLayout
|
RowLayout
|
||||||
{
|
{
|
||||||
|
//Kirigami.FormData.label: i18nd("com.github.digitalartifex.komplex", "Description:")
|
||||||
Text
|
Text
|
||||||
{
|
{
|
||||||
Layout.preferredWidth: 4 * 16
|
Layout.preferredWidth: Kirigami.Units.gridUnit * 16
|
||||||
text: shaderPackModel.metadata.description
|
text: shaderPackModel.metadata.description
|
||||||
horizontalAlignment: Text.AlignLeft
|
horizontalAlignment: Text.AlignLeft
|
||||||
color: palette.text
|
color: palette.text
|
||||||
@@ -734,9 +625,10 @@ Item
|
|||||||
|
|
||||||
RowLayout
|
RowLayout
|
||||||
{
|
{
|
||||||
|
//Kirigami.FormData.label: i18nd("com.github.digitalartifex.komplex", "License:")
|
||||||
Text
|
Text
|
||||||
{
|
{
|
||||||
Layout.preferredWidth: 4 * 11
|
Layout.preferredWidth: Kirigami.Units.gridUnit * 11
|
||||||
text: shaderPackModel.metadata.license
|
text: shaderPackModel.metadata.license
|
||||||
horizontalAlignment: Text.AlignLeft
|
horizontalAlignment: Text.AlignLeft
|
||||||
color: palette.text
|
color: palette.text
|
||||||
@@ -745,9 +637,10 @@ Item
|
|||||||
|
|
||||||
RowLayout
|
RowLayout
|
||||||
{
|
{
|
||||||
|
//Kirigami.FormData.label: i18nd("com.github.digitalartifex.komplex", "Version:")
|
||||||
Text
|
Text
|
||||||
{
|
{
|
||||||
Layout.preferredWidth: 4 * 11
|
Layout.preferredWidth: Kirigami.Units.gridUnit * 11
|
||||||
text: shaderPackModel.metadata.version
|
text: shaderPackModel.metadata.version
|
||||||
horizontalAlignment: Text.AlignLeft
|
horizontalAlignment: Text.AlignLeft
|
||||||
color: palette.text
|
color: palette.text
|
||||||
@@ -756,56 +649,4 @@ Item
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Settings
|
|
||||||
{
|
|
||||||
id: settings
|
|
||||||
property bool animationsEnabled: true
|
|
||||||
|
|
||||||
//ms length of page change
|
|
||||||
property int pageChangeAnimationDuration: 250
|
|
||||||
property int pageFadeAnimationDuration: 250
|
|
||||||
|
|
||||||
property int slowAnimationDuration: 750
|
|
||||||
property int normalAnimationDuration: 250
|
|
||||||
property int fastAnimationDuration: 125
|
|
||||||
}
|
|
||||||
|
|
||||||
function apply()
|
|
||||||
{
|
|
||||||
if(updated)
|
|
||||||
{
|
|
||||||
manager.pauseMode = cfg_pauseMode
|
|
||||||
manager.shaderSpeed = cfg_shaderSpeed
|
|
||||||
manager.mouseTrackingBias = cfg_mouseSpeedBias
|
|
||||||
manager.mouseTrackingEnabled = cfg_enableMouseTracking
|
|
||||||
manager.onlyCheckActiveScreen = cfg_checkActiveScreen
|
|
||||||
manager.excludedWindows = cfg_excludeWindows
|
|
||||||
manager.running = cfg_running
|
|
||||||
manager.resolutionX = cfg_resolution_x
|
|
||||||
manager.resolutionY = cfg_resolution_y
|
|
||||||
manager.targetFramerate = cfg_framerate_limit
|
|
||||||
|
|
||||||
updates.splice(0, updates.length)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function reset()
|
|
||||||
{
|
|
||||||
if(updated)
|
|
||||||
{
|
|
||||||
cfg_pauseMode = manager.pauseMode
|
|
||||||
cfg_shaderSpeed = manager.shaderSpeed
|
|
||||||
cfg_mouseSpeedBias = manager.mouseTrackingBias
|
|
||||||
cfg_enableMouseTracking = manager.mouseTrackingEnabled
|
|
||||||
cfg_checkActiveScreen = manager.onlyCheckActiveScreen
|
|
||||||
cfg_excludeWindows = manager.excludedWindows
|
|
||||||
cfg_running = manager.running
|
|
||||||
cfg_resolution_x = manager.resolutionX
|
|
||||||
cfg_resolution_y = manager.resolutionY
|
|
||||||
cfg_framerate_limit = manager.targetFramerate
|
|
||||||
|
|
||||||
updates.splice(0, updates.length)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,22 +1,3 @@
|
|||||||
/*
|
|
||||||
* Komplex Wallpaper Engine
|
|
||||||
* Copyright (C) 2026 @DigitalArtifex
|
|
||||||
* https://digitalartifex.dev - https://github.com/DigitalArtifex
|
|
||||||
*
|
|
||||||
* 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/>
|
|
||||||
*/
|
|
||||||
import QtCore
|
|
||||||
import QtQuick
|
import QtQuick
|
||||||
import QtQuick.Controls
|
import QtQuick.Controls
|
||||||
import QtQuick.Layouts
|
import QtQuick.Layouts
|
||||||
|
|||||||
@@ -1,22 +1,3 @@
|
|||||||
/*
|
|
||||||
* Komplex Wallpaper Engine
|
|
||||||
* Copyright (C) 2026 @DigitalArtifex
|
|
||||||
* https://digitalartifex.dev - https://github.com/DigitalArtifex
|
|
||||||
*
|
|
||||||
* 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/>
|
|
||||||
*/
|
|
||||||
import QtCore
|
|
||||||
import QtQuick
|
import QtQuick
|
||||||
import QtQuick.Controls
|
import QtQuick.Controls
|
||||||
import QtQuick.Layouts
|
import QtQuick.Layouts
|
||||||
|
|||||||
@@ -1,22 +1,3 @@
|
|||||||
/*
|
|
||||||
* Komplex Wallpaper Engine
|
|
||||||
* Copyright (C) 2026 @DigitalArtifex
|
|
||||||
* https://digitalartifex.dev - https://github.com/DigitalArtifex
|
|
||||||
*
|
|
||||||
* 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/>
|
|
||||||
*/
|
|
||||||
import QtCore
|
|
||||||
import QtQuick
|
import QtQuick
|
||||||
import QtQuick.Controls
|
import QtQuick.Controls
|
||||||
import QtQuick.Layouts
|
import QtQuick.Layouts
|
||||||
|
|||||||
@@ -1,22 +1,3 @@
|
|||||||
/*
|
|
||||||
* Komplex Wallpaper Engine
|
|
||||||
* Copyright (C) 2026 @DigitalArtifex
|
|
||||||
* https://digitalartifex.dev - https://github.com/DigitalArtifex
|
|
||||||
*
|
|
||||||
* 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/>
|
|
||||||
*/
|
|
||||||
import QtCore
|
|
||||||
import QtQuick
|
import QtQuick
|
||||||
import QtQuick.Controls
|
import QtQuick.Controls
|
||||||
import QtQuick.Layouts
|
import QtQuick.Layouts
|
||||||
@@ -183,14 +164,6 @@ Item
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Behavior on opacity
|
|
||||||
{
|
|
||||||
NumberAnimation
|
|
||||||
{
|
|
||||||
duration: 250
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
states:
|
states:
|
||||||
[
|
[
|
||||||
State
|
State
|
||||||
@@ -321,14 +294,6 @@ Item
|
|||||||
thumbnail: rootItem.thumbnail
|
thumbnail: rootItem.thumbnail
|
||||||
opacity: 0
|
opacity: 0
|
||||||
visible: opacity > 0.01
|
visible: opacity > 0.01
|
||||||
|
|
||||||
Behavior on opacity
|
|
||||||
{
|
|
||||||
NumberAnimation
|
|
||||||
{
|
|
||||||
duration: 250
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
CompletedView
|
CompletedView
|
||||||
@@ -339,14 +304,6 @@ Item
|
|||||||
opacity: 0
|
opacity: 0
|
||||||
visible: opacity > 0.01
|
visible: opacity > 0.01
|
||||||
manager: downloadManager
|
manager: downloadManager
|
||||||
|
|
||||||
Behavior on opacity
|
|
||||||
{
|
|
||||||
NumberAnimation
|
|
||||||
{
|
|
||||||
duration: 250
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ErrorView
|
ErrorView
|
||||||
@@ -357,14 +314,6 @@ Item
|
|||||||
opacity: 0
|
opacity: 0
|
||||||
visible: opacity > 0.01
|
visible: opacity > 0.01
|
||||||
manager: downloadManager
|
manager: downloadManager
|
||||||
|
|
||||||
Behavior on opacity
|
|
||||||
{
|
|
||||||
NumberAnimation
|
|
||||||
{
|
|
||||||
duration: 250
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function download()
|
function download()
|
||||||
|
|||||||
@@ -1,22 +1,3 @@
|
|||||||
/*
|
|
||||||
* Komplex Wallpaper Engine
|
|
||||||
* Copyright (C) 2026 @DigitalArtifex
|
|
||||||
* https://digitalartifex.dev - https://github.com/DigitalArtifex
|
|
||||||
*
|
|
||||||
* 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/>
|
|
||||||
*/
|
|
||||||
import QtCore
|
|
||||||
import QtQuick
|
import QtQuick
|
||||||
import QtQuick.Controls
|
import QtQuick.Controls
|
||||||
import QtQuick.Layouts
|
import QtQuick.Layouts
|
||||||
@@ -167,15 +148,6 @@ Item
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Behavior on opacity
|
|
||||||
{
|
|
||||||
NumberAnimation
|
|
||||||
{
|
|
||||||
duration: 250
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
states:
|
states:
|
||||||
[
|
[
|
||||||
State
|
State
|
||||||
@@ -208,64 +180,6 @@ Item
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
State
|
State
|
||||||
{
|
|
||||||
name: "compiling"
|
|
||||||
when: downloadManager.state === DownloadManager.Compiling
|
|
||||||
|
|
||||||
PropertyChanges
|
|
||||||
{
|
|
||||||
target: pageView
|
|
||||||
opacity: 0
|
|
||||||
}
|
|
||||||
|
|
||||||
PropertyChanges
|
|
||||||
{
|
|
||||||
target: downloadView
|
|
||||||
opacity: 1
|
|
||||||
}
|
|
||||||
|
|
||||||
PropertyChanges
|
|
||||||
{
|
|
||||||
target: completedView
|
|
||||||
opacity: 0
|
|
||||||
}
|
|
||||||
|
|
||||||
PropertyChanges
|
|
||||||
{
|
|
||||||
target: errorView
|
|
||||||
opacity: 0
|
|
||||||
}
|
|
||||||
},
|
|
||||||
State
|
|
||||||
{
|
|
||||||
name: "installing"
|
|
||||||
when: downloadManager.state === DownloadManager.Installing
|
|
||||||
|
|
||||||
PropertyChanges
|
|
||||||
{
|
|
||||||
target: pageView
|
|
||||||
opacity: 0
|
|
||||||
}
|
|
||||||
|
|
||||||
PropertyChanges
|
|
||||||
{
|
|
||||||
target: downloadView
|
|
||||||
opacity: 1
|
|
||||||
}
|
|
||||||
|
|
||||||
PropertyChanges
|
|
||||||
{
|
|
||||||
target: completedView
|
|
||||||
opacity: 0
|
|
||||||
}
|
|
||||||
|
|
||||||
PropertyChanges
|
|
||||||
{
|
|
||||||
target: errorView
|
|
||||||
opacity: 0
|
|
||||||
}
|
|
||||||
},
|
|
||||||
State
|
|
||||||
{
|
{
|
||||||
name: "complete"
|
name: "complete"
|
||||||
when: downloadManager.state === DownloadManager.Complete
|
when: downloadManager.state === DownloadManager.Complete
|
||||||
@@ -364,14 +278,6 @@ Item
|
|||||||
thumbnail: rootItem.thumbnail
|
thumbnail: rootItem.thumbnail
|
||||||
opacity: 0
|
opacity: 0
|
||||||
visible: opacity > 0.01
|
visible: opacity > 0.01
|
||||||
|
|
||||||
Behavior on opacity
|
|
||||||
{
|
|
||||||
NumberAnimation
|
|
||||||
{
|
|
||||||
duration: 250
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
CompletedView
|
CompletedView
|
||||||
@@ -382,14 +288,6 @@ Item
|
|||||||
opacity: 0
|
opacity: 0
|
||||||
visible: opacity > 0.01
|
visible: opacity > 0.01
|
||||||
manager: downloadManager
|
manager: downloadManager
|
||||||
|
|
||||||
Behavior on opacity
|
|
||||||
{
|
|
||||||
NumberAnimation
|
|
||||||
{
|
|
||||||
duration: 250
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ErrorView
|
ErrorView
|
||||||
@@ -400,14 +298,6 @@ Item
|
|||||||
opacity: 0
|
opacity: 0
|
||||||
visible: opacity > 0.01
|
visible: opacity > 0.01
|
||||||
manager: downloadManager
|
manager: downloadManager
|
||||||
|
|
||||||
Behavior on opacity
|
|
||||||
{
|
|
||||||
NumberAnimation
|
|
||||||
{
|
|
||||||
duration: 250
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function download()
|
function download()
|
||||||
|
|||||||
@@ -1,22 +1,3 @@
|
|||||||
/*
|
|
||||||
* Komplex Wallpaper Engine
|
|
||||||
* Copyright (C) 2026 @DigitalArtifex
|
|
||||||
* https://digitalartifex.dev - https://github.com/DigitalArtifex
|
|
||||||
*
|
|
||||||
* 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/>
|
|
||||||
*/
|
|
||||||
import QtCore
|
|
||||||
import QtQuick
|
import QtQuick
|
||||||
import QtQuick.Controls
|
import QtQuick.Controls
|
||||||
import QtQuick.Layouts
|
import QtQuick.Layouts
|
||||||
@@ -173,14 +154,6 @@ Item
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Behavior on opacity
|
|
||||||
{
|
|
||||||
NumberAnimation
|
|
||||||
{
|
|
||||||
duration: 250
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
states:
|
states:
|
||||||
[
|
[
|
||||||
State
|
State
|
||||||
@@ -311,14 +284,6 @@ Item
|
|||||||
thumbnail: rootItem.thumbnail
|
thumbnail: rootItem.thumbnail
|
||||||
opacity: 0
|
opacity: 0
|
||||||
visible: opacity > 0.01
|
visible: opacity > 0.01
|
||||||
|
|
||||||
Behavior on opacity
|
|
||||||
{
|
|
||||||
NumberAnimation
|
|
||||||
{
|
|
||||||
duration: 250
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
CompletedView
|
CompletedView
|
||||||
@@ -329,14 +294,6 @@ Item
|
|||||||
opacity: 0
|
opacity: 0
|
||||||
visible: opacity > 0.01
|
visible: opacity > 0.01
|
||||||
manager: downloadManager
|
manager: downloadManager
|
||||||
|
|
||||||
Behavior on opacity
|
|
||||||
{
|
|
||||||
NumberAnimation
|
|
||||||
{
|
|
||||||
duration: 250
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ErrorView
|
ErrorView
|
||||||
@@ -347,14 +304,6 @@ Item
|
|||||||
opacity: 0
|
opacity: 0
|
||||||
visible: opacity > 0.01
|
visible: opacity > 0.01
|
||||||
manager: downloadManager
|
manager: downloadManager
|
||||||
|
|
||||||
Behavior on opacity
|
|
||||||
{
|
|
||||||
NumberAnimation
|
|
||||||
{
|
|
||||||
duration: 250
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function download()
|
function download()
|
||||||
|
|||||||
@@ -13,9 +13,9 @@ qt6_add_qml_module(KomplexHubModule
|
|||||||
RESOURCE_PREFIX "/qt/qml"
|
RESOURCE_PREFIX "/qt/qml"
|
||||||
QML_FILES
|
QML_FILES
|
||||||
"Constants.qml"
|
"Constants.qml"
|
||||||
|
"EventListModel.qml"
|
||||||
|
"EventListSimulator.qml"
|
||||||
|
"WallpaperModelData.qml"
|
||||||
)
|
)
|
||||||
|
|
||||||
set_target_properties(KomplexHubModule PROPERTIES VERSION "1.0")
|
set_target_properties(KomplexHubModule PROPERTIES VERSION "1.0")
|
||||||
|
|||||||
@@ -1,27 +1,8 @@
|
|||||||
/*
|
|
||||||
* Komplex Wallpaper Engine
|
|
||||||
* Copyright (C) 2026 @DigitalArtifex
|
|
||||||
* https://digitalartifex.dev - https://github.com/DigitalArtifex
|
|
||||||
*
|
|
||||||
* 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 Singleton
|
pragma Singleton
|
||||||
import QtQuick
|
import QtQuick
|
||||||
import QtQuick.Studio.Application
|
import QtQuick.Studio.Application
|
||||||
|
|
||||||
QtObject
|
QtObject {
|
||||||
{
|
|
||||||
readonly property int width: 1920
|
readonly property int width: 1920
|
||||||
readonly property int height: 1080
|
readonly property int height: 1080
|
||||||
|
|
||||||
@@ -81,4 +62,8 @@ QtObject
|
|||||||
readonly property int slowAnimationDuration: 750
|
readonly property int slowAnimationDuration: 750
|
||||||
readonly property int normalAnimationDuration: 250
|
readonly property int normalAnimationDuration: 250
|
||||||
readonly property int fastAnimationDuration: 125
|
readonly property int fastAnimationDuration: 125
|
||||||
|
|
||||||
|
// property StudioApplication application: StudioApplication {
|
||||||
|
// fontPath: Qt.resolvedUrl("../KomplexHubContent/" + relativeFontDirectory)
|
||||||
|
// }
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,22 +1,3 @@
|
|||||||
/*
|
|
||||||
* Komplex Wallpaper Engine
|
|
||||||
* Copyright (C) 2026 @DigitalArtifex
|
|
||||||
* https://digitalartifex.dev - https://github.com/DigitalArtifex
|
|
||||||
*
|
|
||||||
* 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/>
|
|
||||||
*/
|
|
||||||
import QtCore
|
|
||||||
import QtQuick
|
import QtQuick
|
||||||
import QtQuick.Controls
|
import QtQuick.Controls
|
||||||
import QtQuick.Effects
|
import QtQuick.Effects
|
||||||
|
|||||||
@@ -1,22 +1,3 @@
|
|||||||
/*
|
|
||||||
* Komplex Wallpaper Engine
|
|
||||||
* Copyright (C) 2026 @DigitalArtifex
|
|
||||||
* https://digitalartifex.dev - https://github.com/DigitalArtifex
|
|
||||||
*
|
|
||||||
* 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/>
|
|
||||||
*/
|
|
||||||
import QtCore
|
|
||||||
import QtQuick
|
import QtQuick
|
||||||
import QtQuick.Controls
|
import QtQuick.Controls
|
||||||
import QtQuick.Layouts
|
import QtQuick.Layouts
|
||||||
|
|||||||
@@ -1,22 +1,3 @@
|
|||||||
/*
|
|
||||||
* Komplex Wallpaper Engine
|
|
||||||
* Copyright (C) 2026 @DigitalArtifex
|
|
||||||
* https://digitalartifex.dev - https://github.com/DigitalArtifex
|
|
||||||
*
|
|
||||||
* 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/>
|
|
||||||
*/
|
|
||||||
import QtCore
|
|
||||||
import QtQuick
|
import QtQuick
|
||||||
import QtQuick.Controls
|
import QtQuick.Controls
|
||||||
import QtQuick.Layouts
|
import QtQuick.Layouts
|
||||||
|
|||||||
@@ -1,22 +1,3 @@
|
|||||||
/*
|
|
||||||
* Komplex Wallpaper Engine
|
|
||||||
* Copyright (C) 2026 @DigitalArtifex
|
|
||||||
* https://digitalartifex.dev - https://github.com/DigitalArtifex
|
|
||||||
*
|
|
||||||
* 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/>
|
|
||||||
*/
|
|
||||||
import QtCore
|
|
||||||
import QtQuick
|
import QtQuick
|
||||||
import QtQuick.Controls
|
import QtQuick.Controls
|
||||||
import QtQuick.Layouts
|
import QtQuick.Layouts
|
||||||
|
|||||||
@@ -1,22 +1,3 @@
|
|||||||
/*
|
|
||||||
* Komplex Wallpaper Engine
|
|
||||||
* Copyright (C) 2026 @DigitalArtifex
|
|
||||||
* https://digitalartifex.dev - https://github.com/DigitalArtifex
|
|
||||||
*
|
|
||||||
* 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/>
|
|
||||||
*/
|
|
||||||
import QtCore
|
|
||||||
import QtQuick
|
import QtQuick
|
||||||
import QtQuick.Layouts
|
import QtQuick.Layouts
|
||||||
import QtQuick.Controls
|
import QtQuick.Controls
|
||||||
|
|||||||
@@ -1,22 +1,3 @@
|
|||||||
/*
|
|
||||||
* Komplex Wallpaper Engine
|
|
||||||
* Copyright (C) 2026 @DigitalArtifex
|
|
||||||
* https://digitalartifex.dev - https://github.com/DigitalArtifex
|
|
||||||
*
|
|
||||||
* 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/>
|
|
||||||
*/
|
|
||||||
import QtCore
|
|
||||||
import QtQuick
|
import QtQuick
|
||||||
import QtQuick.Controls
|
import QtQuick.Controls
|
||||||
import QtQuick.Layouts
|
import QtQuick.Layouts
|
||||||
|
|||||||
@@ -1,22 +1,9 @@
|
|||||||
/*
|
/*
|
||||||
* Komplex Wallpaper Engine
|
This is a UI file (.ui.qml) that is intended to be edited in Qt Design Studio only.
|
||||||
* Copyright (C) 2026 @DigitalArtifex
|
It is supposed to be strictly declarative and only uses a subset of QML. If you edit
|
||||||
* https://digitalartifex.dev - https://github.com/DigitalArtifex
|
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.
|
||||||
* 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/>
|
|
||||||
*/
|
|
||||||
import QtCore
|
|
||||||
import QtQuick
|
import QtQuick
|
||||||
import QtQuick.Controls
|
import QtQuick.Controls
|
||||||
import QtQuick.Layouts
|
import QtQuick.Layouts
|
||||||
|
|||||||
@@ -1,22 +1,3 @@
|
|||||||
/*
|
|
||||||
* Komplex Wallpaper Engine
|
|
||||||
* Copyright (C) 2026 @DigitalArtifex
|
|
||||||
* https://digitalartifex.dev - https://github.com/DigitalArtifex
|
|
||||||
*
|
|
||||||
* 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/>
|
|
||||||
*/
|
|
||||||
import QtCore
|
|
||||||
import QtQuick
|
import QtQuick
|
||||||
import QtQuick.Controls
|
import QtQuick.Controls
|
||||||
import QtQuick.Layouts
|
import QtQuick.Layouts
|
||||||
|
|||||||
@@ -1,22 +1,3 @@
|
|||||||
/*
|
|
||||||
* Komplex Wallpaper Engine
|
|
||||||
* Copyright (C) 2026 @DigitalArtifex
|
|
||||||
* https://digitalartifex.dev - https://github.com/DigitalArtifex
|
|
||||||
*
|
|
||||||
* 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/>
|
|
||||||
*/
|
|
||||||
import QtCore
|
|
||||||
import QtQuick
|
import QtQuick
|
||||||
import QtQuick.Controls
|
import QtQuick.Controls
|
||||||
import QtQuick.Layouts
|
import QtQuick.Layouts
|
||||||
|
|||||||
@@ -1,22 +1,3 @@
|
|||||||
/*
|
|
||||||
* Komplex Wallpaper Engine
|
|
||||||
* Copyright (C) 2026 @DigitalArtifex
|
|
||||||
* https://digitalartifex.dev - https://github.com/DigitalArtifex
|
|
||||||
*
|
|
||||||
* 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/>
|
|
||||||
*/
|
|
||||||
import QtCore
|
|
||||||
import QtQuick
|
import QtQuick
|
||||||
import QtQuick.Controls
|
import QtQuick.Controls
|
||||||
import QtQuick.Layouts
|
import QtQuick.Layouts
|
||||||
|
|||||||
@@ -1,22 +1,3 @@
|
|||||||
/*
|
|
||||||
* Komplex Wallpaper Engine
|
|
||||||
* Copyright (C) 2026 @DigitalArtifex
|
|
||||||
* https://digitalartifex.dev - https://github.com/DigitalArtifex
|
|
||||||
*
|
|
||||||
* 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/>
|
|
||||||
*/
|
|
||||||
import QtCore
|
|
||||||
import QtQuick
|
import QtQuick
|
||||||
import QtQuick.Shapes
|
import QtQuick.Shapes
|
||||||
import QtQuick.Effects
|
import QtQuick.Effects
|
||||||
|
|||||||
@@ -1,22 +1,3 @@
|
|||||||
/*
|
|
||||||
* Komplex Wallpaper Engine
|
|
||||||
* Copyright (C) 2026 @DigitalArtifex
|
|
||||||
* https://digitalartifex.dev - https://github.com/DigitalArtifex
|
|
||||||
*
|
|
||||||
* 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/>
|
|
||||||
*/
|
|
||||||
import QtCore
|
|
||||||
import QtQuick
|
import QtQuick
|
||||||
import QtQuick.Layouts
|
import QtQuick.Layouts
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,12 @@
|
|||||||
|
import QtQuick
|
||||||
|
|
||||||
|
ListModel {
|
||||||
|
id: eventListModel
|
||||||
|
|
||||||
|
ListElement {
|
||||||
|
eventId: "enterPressed"
|
||||||
|
eventDescription: "Emitted when pressing the enter button"
|
||||||
|
shortcut: "Return"
|
||||||
|
parameters: "Enter"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
import QtQuick
|
||||||
|
import QtQuick.Studio.EventSimulator
|
||||||
|
import QtQuick.Studio.EventSystem
|
||||||
|
|
||||||
|
QtObject {
|
||||||
|
id: simulator
|
||||||
|
property bool active: true
|
||||||
|
|
||||||
|
property Timer __timer: Timer {
|
||||||
|
id: timer
|
||||||
|
interval: 100
|
||||||
|
onTriggered: {
|
||||||
|
EventSimulator.show()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Component.onCompleted: {
|
||||||
|
EventSystem.init(Qt.resolvedUrl("EventListModel.qml"))
|
||||||
|
if (simulator.active)
|
||||||
|
timer.start()
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,21 +1,3 @@
|
|||||||
/*
|
|
||||||
* Komplex Wallpaper Engine
|
|
||||||
* Copyright (C) 2026 @DigitalArtifex
|
|
||||||
* https://digitalartifex.dev - https://github.com/DigitalArtifex
|
|
||||||
*
|
|
||||||
* 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/>
|
|
||||||
*/
|
|
||||||
import QtQuick
|
import QtQuick
|
||||||
import QtQuick.Controls
|
import QtQuick.Controls
|
||||||
import QtQuick.Layouts
|
import QtQuick.Layouts
|
||||||
|
|||||||
@@ -1,21 +1,3 @@
|
|||||||
/*
|
|
||||||
* Komplex Wallpaper Engine
|
|
||||||
* Copyright (C) 2026 @DigitalArtifex
|
|
||||||
* https://digitalartifex.dev - https://github.com/DigitalArtifex
|
|
||||||
*
|
|
||||||
* 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/>
|
|
||||||
*/
|
|
||||||
import QtQuick
|
import QtQuick
|
||||||
import QtQuick.Controls
|
import QtQuick.Controls
|
||||||
import QtQuick.Layouts
|
import QtQuick.Layouts
|
||||||
|
|||||||
@@ -1,21 +1,3 @@
|
|||||||
/*
|
|
||||||
* Komplex Wallpaper Engine
|
|
||||||
* Copyright (C) 2026 @DigitalArtifex
|
|
||||||
* https://digitalartifex.dev - https://github.com/DigitalArtifex
|
|
||||||
*
|
|
||||||
* 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/>
|
|
||||||
*/
|
|
||||||
import QtQuick
|
import QtQuick
|
||||||
import QtQuick.Controls
|
import QtQuick.Controls
|
||||||
import QtQuick.Layouts
|
import QtQuick.Layouts
|
||||||
|
|||||||
@@ -1,21 +1,3 @@
|
|||||||
/*
|
|
||||||
* Komplex Wallpaper Engine
|
|
||||||
* Copyright (C) 2026 @DigitalArtifex
|
|
||||||
* https://digitalartifex.dev - https://github.com/DigitalArtifex
|
|
||||||
*
|
|
||||||
* 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/>
|
|
||||||
*/
|
|
||||||
import QtQuick
|
import QtQuick
|
||||||
import QtQuick.Controls 2.0
|
import QtQuick.Controls 2.0
|
||||||
import QtQuick.Layouts
|
import QtQuick.Layouts
|
||||||
|
|||||||
@@ -1,21 +1,3 @@
|
|||||||
/*
|
|
||||||
* Komplex Wallpaper Engine
|
|
||||||
* Copyright (C) 2026 @DigitalArtifex
|
|
||||||
* https://digitalartifex.dev - https://github.com/DigitalArtifex
|
|
||||||
*
|
|
||||||
* 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/>
|
|
||||||
*/
|
|
||||||
import QtQuick
|
import QtQuick
|
||||||
import QtQuick.Controls
|
import QtQuick.Controls
|
||||||
import QtQuick.Layouts
|
import QtQuick.Layouts
|
||||||
|
|||||||
@@ -1,21 +1,3 @@
|
|||||||
/*
|
|
||||||
* Komplex Wallpaper Engine
|
|
||||||
* Copyright (C) 2026 @DigitalArtifex
|
|
||||||
* https://digitalartifex.dev - https://github.com/DigitalArtifex
|
|
||||||
*
|
|
||||||
* 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/>
|
|
||||||
*/
|
|
||||||
import QtQuick
|
import QtQuick
|
||||||
import QtQuick.Controls
|
import QtQuick.Controls
|
||||||
import QtQuick.Layouts
|
import QtQuick.Layouts
|
||||||
|
|||||||
@@ -1,21 +1,3 @@
|
|||||||
/*
|
|
||||||
* Komplex Wallpaper Engine
|
|
||||||
* Copyright (C) 2026 @DigitalArtifex
|
|
||||||
* https://digitalartifex.dev - https://github.com/DigitalArtifex
|
|
||||||
*
|
|
||||||
* 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/>
|
|
||||||
*/
|
|
||||||
import QtQuick
|
import QtQuick
|
||||||
import QtQuick.Controls
|
import QtQuick.Controls
|
||||||
import QtQuick.Layouts
|
import QtQuick.Layouts
|
||||||
|
|||||||
@@ -1,21 +1,3 @@
|
|||||||
/*
|
|
||||||
* Komplex Wallpaper Engine
|
|
||||||
* Copyright (C) 2026 @DigitalArtifex
|
|
||||||
* https://digitalartifex.dev - https://github.com/DigitalArtifex
|
|
||||||
*
|
|
||||||
* 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/>
|
|
||||||
*/
|
|
||||||
import QtQuick
|
import QtQuick
|
||||||
import QtQuick.Controls
|
import QtQuick.Controls
|
||||||
import QtQuick.Layouts
|
import QtQuick.Layouts
|
||||||
|
|||||||
@@ -1,21 +1,3 @@
|
|||||||
/*
|
|
||||||
* Komplex Wallpaper Engine
|
|
||||||
* Copyright (C) 2026 @DigitalArtifex
|
|
||||||
* https://digitalartifex.dev - https://github.com/DigitalArtifex
|
|
||||||
*
|
|
||||||
* 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/>
|
|
||||||
*/
|
|
||||||
import QtQuick
|
import QtQuick
|
||||||
import QtQuick.Controls
|
import QtQuick.Controls
|
||||||
import QtQuick.Layouts
|
import QtQuick.Layouts
|
||||||
|
|||||||
@@ -0,0 +1,67 @@
|
|||||||
|
import QtQuick
|
||||||
|
import QtQuick.Controls
|
||||||
|
|
||||||
|
ListModel {
|
||||||
|
ListElement {
|
||||||
|
author: "Wizmart"
|
||||||
|
name: "Some cool name 1"
|
||||||
|
description: "This is not a real wallpaper or person"
|
||||||
|
thumbnail: ""
|
||||||
|
uuid: "{aafd-311-afaa}"
|
||||||
|
url: ""
|
||||||
|
}
|
||||||
|
|
||||||
|
ListElement {
|
||||||
|
author: "Wizmart"
|
||||||
|
name: "Some cool name 2"
|
||||||
|
description: "This is not a real wallpaper or person"
|
||||||
|
thumbnail: ""
|
||||||
|
uuid: "{aafd-311-afaa}"
|
||||||
|
url: ""
|
||||||
|
}
|
||||||
|
|
||||||
|
ListElement {
|
||||||
|
author: "Wizmart"
|
||||||
|
name: "Some cool name 3"
|
||||||
|
description: "This is not a real wallpaper or person"
|
||||||
|
thumbnail: ""
|
||||||
|
uuid: "{aafd-311-afaa}"
|
||||||
|
url: ""
|
||||||
|
}
|
||||||
|
|
||||||
|
ListElement {
|
||||||
|
author: "Wizmart"
|
||||||
|
name: "Some cool name 4"
|
||||||
|
description: "This is not a real wallpaper or person"
|
||||||
|
thumbnail: ""
|
||||||
|
uuid: "{aafd-311-afaa}"
|
||||||
|
url: ""
|
||||||
|
}
|
||||||
|
|
||||||
|
ListElement {
|
||||||
|
author: "Wizmart"
|
||||||
|
name: "Some cool name 5"
|
||||||
|
description: "This is not a real wallpaper or person"
|
||||||
|
thumbnail: ""
|
||||||
|
uuid: "{aafd-311-afaa}"
|
||||||
|
url: ""
|
||||||
|
}
|
||||||
|
|
||||||
|
ListElement {
|
||||||
|
author: "Wizmart"
|
||||||
|
name: "Some cool name 6"
|
||||||
|
description: "This is not a real wallpaper or person"
|
||||||
|
thumbnail: ""
|
||||||
|
uuid: "{aafd-311-afaa}"
|
||||||
|
url: ""
|
||||||
|
}
|
||||||
|
|
||||||
|
ListElement {
|
||||||
|
author: "Wizmart"
|
||||||
|
name: "Some cool name 7"
|
||||||
|
description: "This is not a real wallpaper or person"
|
||||||
|
thumbnail: ""
|
||||||
|
uuid: "{aafd-311-afaa}"
|
||||||
|
url: ""
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -249,7 +249,7 @@ auto InstalledPackManager::setState(State state) -> void
|
|||||||
|
|
||||||
auto InstalledPackManager::resetState() -> void
|
auto InstalledPackManager::resetState() -> void
|
||||||
{
|
{
|
||||||
setState(Idle);
|
setState(Idle); // TODO: Adapt to use your actual default value
|
||||||
}
|
}
|
||||||
|
|
||||||
auto InstalledPackManager::roleNames() const -> QHash<int, QByteArray>
|
auto InstalledPackManager::roleNames() const -> QHash<int, QByteArray>
|
||||||
|
|||||||
@@ -24,17 +24,17 @@ PackCompiler::PackCompiler(QObject *parent)
|
|||||||
|
|
||||||
auto PackCompiler::reset() -> void
|
auto PackCompiler::reset() -> void
|
||||||
{
|
{
|
||||||
|
setError({}, {});
|
||||||
setProgress(std::numeric_limits<qreal>::infinity());
|
setProgress(std::numeric_limits<qreal>::infinity());
|
||||||
setTotalSteps(0);
|
setTotalSteps(0);
|
||||||
setCurrentStep(0);
|
setCurrentStep(0);
|
||||||
|
setCompilerOutput({});
|
||||||
|
setStatus({});
|
||||||
setState(Idle);
|
setState(Idle);
|
||||||
}
|
}
|
||||||
|
|
||||||
auto PackCompiler::build(const QUrl &uri) -> QUrl
|
auto PackCompiler::build(const QUrl &uri) -> QUrl
|
||||||
{
|
{
|
||||||
setState(Compiling);
|
|
||||||
setStatus(QStringLiteral("Preparing Komplex Pack For Building"));
|
|
||||||
|
|
||||||
BuildContext *context = new BuildContext;
|
BuildContext *context = new BuildContext;
|
||||||
QUrl extractedUri = extract(uri);
|
QUrl extractedUri = extract(uri);
|
||||||
|
|
||||||
@@ -42,8 +42,6 @@ auto PackCompiler::build(const QUrl &uri) -> QUrl
|
|||||||
context->commonData = loadCommonData(extractedUri);
|
context->commonData = loadCommonData(extractedUri);
|
||||||
processShaders(extractedUri, context);
|
processShaders(extractedUri, context);
|
||||||
|
|
||||||
setState(Complete);
|
|
||||||
setStatus(QStringLiteral("Complete"));
|
|
||||||
delete context;
|
delete context;
|
||||||
|
|
||||||
return extractedUri;
|
return extractedUri;
|
||||||
@@ -52,7 +50,6 @@ auto PackCompiler::build(const QUrl &uri) -> QUrl
|
|||||||
auto PackCompiler::extract(const QUrl &sourceUri) noexcept(false) -> const QUrl
|
auto PackCompiler::extract(const QUrl &sourceUri) noexcept(false) -> const QUrl
|
||||||
{
|
{
|
||||||
validateUri(sourceUri);
|
validateUri(sourceUri);
|
||||||
setStatus(QStringLiteral("Extracting Komplex Pack"));
|
|
||||||
|
|
||||||
QFileInfo info(sourceUri.toLocalFile());
|
QFileInfo info(sourceUri.toLocalFile());
|
||||||
|
|
||||||
@@ -80,6 +77,7 @@ auto PackCompiler::extract(const QUrl &sourceUri) noexcept(false) -> const QUrl
|
|||||||
}
|
}
|
||||||
|
|
||||||
run(QStringLiteral("tar"), arguments);
|
run(QStringLiteral("tar"), arguments);
|
||||||
|
|
||||||
QFile::remove(sourceUri.toLocalFile());
|
QFile::remove(sourceUri.toLocalFile());
|
||||||
|
|
||||||
return std::move(outputUri);
|
return std::move(outputUri);
|
||||||
@@ -103,7 +101,6 @@ auto PackCompiler::validatePack(const QUrl &uri) const noexcept(false) -> void
|
|||||||
auto PackCompiler::loadCommonData(const QUrl &uri) -> QMap<QByteArray,QByteArray>
|
auto PackCompiler::loadCommonData(const QUrl &uri) -> QMap<QByteArray,QByteArray>
|
||||||
{
|
{
|
||||||
validateUri(uri);
|
validateUri(uri);
|
||||||
setStatus(QStringLiteral("Loading Common Data"));
|
|
||||||
|
|
||||||
QMap<QByteArray,QByteArray> commonData;
|
QMap<QByteArray,QByteArray> commonData;
|
||||||
|
|
||||||
@@ -169,21 +166,18 @@ auto PackCompiler::processShaders(const QUrl &uri, BuildContext *context) -> voi
|
|||||||
|
|
||||||
const QStringList entries = shaderDirectory.entryList();
|
const QStringList entries = shaderDirectory.entryList();
|
||||||
|
|
||||||
setTotalSteps(entries.count());
|
|
||||||
setProgress(0);
|
|
||||||
|
|
||||||
for(const QString &entry : entries)
|
for(const QString &entry : entries)
|
||||||
{
|
{
|
||||||
QFileInfo entryInfo(shaderDirectory.absoluteFilePath(entry));
|
QFileInfo entryInfo(shaderDirectory.absoluteFilePath(entry));
|
||||||
|
QByteArray shaderData;
|
||||||
QUrl entryUri = QStringLiteral("file://%1").arg
|
QUrl entryUri = QStringLiteral("file://%1").arg
|
||||||
(
|
(
|
||||||
entryInfo.absoluteFilePath()
|
entryInfo.absoluteFilePath()
|
||||||
);
|
);
|
||||||
|
|
||||||
setStatus(QStringLiteral("Compiling: %1").arg(entry));
|
shaderData += readFile(entryUri);
|
||||||
|
|
||||||
QShader::Stage stage = getStageFromSuffix(entryInfo.suffix());
|
QShader::Stage stage = getStageFromSuffix(entryInfo.suffix());
|
||||||
QByteArray shaderData = readFile(entryUri);
|
|
||||||
|
|
||||||
appendCommonData(&shaderData, entryInfo.suffix().toUtf8(), context);
|
appendCommonData(&shaderData, entryInfo.suffix().toUtf8(), context);
|
||||||
replaceUniformVariables(&shaderData);
|
replaceUniformVariables(&shaderData);
|
||||||
@@ -201,7 +195,6 @@ auto PackCompiler::processShaders(const QUrl &uri, BuildContext *context) -> voi
|
|||||||
save(outputUri, shader);
|
save(outputUri, shader);
|
||||||
|
|
||||||
QFile::remove(entryUri.toLocalFile());
|
QFile::remove(entryUri.toLocalFile());
|
||||||
incrementCompileStep();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -244,6 +237,13 @@ auto PackCompiler::compile(const QByteArray &data, const QString &filename, cons
|
|||||||
|
|
||||||
if(!shader.isValid())
|
if(!shader.isValid())
|
||||||
{
|
{
|
||||||
|
QUrl errorUri
|
||||||
|
(
|
||||||
|
QStringLiteral("file://tmp/_err")
|
||||||
|
);
|
||||||
|
|
||||||
|
writeFile(errorUri, data);
|
||||||
|
|
||||||
throw shader::logic_error
|
throw shader::logic_error
|
||||||
(
|
(
|
||||||
std::string("Compiler Error"),
|
std::string("Compiler Error"),
|
||||||
@@ -541,6 +541,42 @@ auto PackCompiler::setProgress(qreal progress) -> void
|
|||||||
Q_EMIT progressChanged();
|
Q_EMIT progressChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void PackCompiler::setCompilerOutput(const QString &compilerOutput)
|
||||||
|
{
|
||||||
|
if (m_compilerOutput == compilerOutput)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
m_compilerOutput = compilerOutput;
|
||||||
|
emit compilerOutputChanged();
|
||||||
|
}
|
||||||
|
|
||||||
|
auto PackCompiler::setError(const QString &title, const QString &message, const QUrl &uri) -> void
|
||||||
|
{
|
||||||
|
if(title == m_errorTitle && message == m_errorMessage)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
m_errorMessage = std::move(message);
|
||||||
|
m_errorTitle = std::move(title);
|
||||||
|
|
||||||
|
if(uri.isValid() && uri.isLocalFile())
|
||||||
|
{
|
||||||
|
QFile errorFile(uri.toLocalFile());
|
||||||
|
|
||||||
|
if(errorFile.open(QFile::ReadWrite | QFile::Append))
|
||||||
|
{
|
||||||
|
errorFile.write(message.toLocal8Bit() + QByteArray("\n"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Q_EMIT errorTitleChanged();
|
||||||
|
Q_EMIT errorMessageChanged();
|
||||||
|
Q_EMIT errorOcurred();
|
||||||
|
}
|
||||||
|
|
||||||
auto PackCompiler::setState(State state) -> void
|
auto PackCompiler::setState(State state) -> void
|
||||||
{
|
{
|
||||||
if(state == m_state)
|
if(state == m_state)
|
||||||
|
|||||||
+28
-201
@@ -59,6 +59,7 @@
|
|||||||
struct KOMPLEX_EXPORT BuildContext
|
struct KOMPLEX_EXPORT BuildContext
|
||||||
{
|
{
|
||||||
QMap<QByteArray, QByteArray> commonData;
|
QMap<QByteArray, QByteArray> commonData;
|
||||||
|
QPromise<QUrl> promise;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -82,10 +83,6 @@ class PackCompiler : public QObject
|
|||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief The State enum
|
|
||||||
* Enum of the possible states of the compiler
|
|
||||||
*/
|
|
||||||
enum State
|
enum State
|
||||||
{
|
{
|
||||||
Idle,
|
Idle,
|
||||||
@@ -97,59 +94,23 @@ public:
|
|||||||
|
|
||||||
explicit PackCompiler(QObject *parent = nullptr);
|
explicit PackCompiler(QObject *parent = nullptr);
|
||||||
|
|
||||||
/**
|
auto compilerOutput() const -> const QString & { return m_compilerOutput; }
|
||||||
* @brief progress
|
|
||||||
* Current compiler progress
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
auto progress() -> qreal { return m_progress; }
|
auto progress() -> qreal { return m_progress; }
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief currentStep
|
|
||||||
* Current compiler step
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
auto currentStep() -> qint64 { return m_currentStep; }
|
auto currentStep() -> qint64 { return m_currentStep; }
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief totalSteps
|
|
||||||
* Total steps in the current compile
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
auto totalSteps() -> qint64 { return m_totalSteps; }
|
auto totalSteps() -> qint64 { return m_totalSteps; }
|
||||||
|
auto errorTitle() const -> const QString & { return m_errorTitle; }
|
||||||
/**
|
auto errorMessage() const -> const QString & { return m_errorMessage; }
|
||||||
* @brief status
|
|
||||||
* Current status message
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
auto status() const -> const QString & { return m_status; }
|
auto status() const -> const QString & { return m_status; }
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief state
|
|
||||||
* Current compiler state
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
auto state() const -> State { return m_state; }
|
auto state() const -> State { return m_state; }
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief reset
|
|
||||||
* Resets the compiler state
|
|
||||||
*/
|
|
||||||
auto reset() -> void;
|
auto reset() -> void;
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief build
|
|
||||||
* Builds a Komplex pack from a tar.gz file
|
|
||||||
* @param uri
|
|
||||||
* Uri of the tar.gz
|
|
||||||
* @return
|
|
||||||
* Uri of the built pack
|
|
||||||
*/
|
|
||||||
auto build(const QUrl &uri) -> QUrl;
|
auto build(const QUrl &uri) -> QUrl;
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
auto compilerOutputChanged() -> void;
|
auto compilerOutputChanged() -> void;
|
||||||
|
auto errorOcurred() -> void;
|
||||||
|
auto errorTitleChanged() -> void;
|
||||||
|
auto errorMessageChanged() -> void;
|
||||||
auto stateChanged() -> void;
|
auto stateChanged() -> void;
|
||||||
auto progressChanged() -> void;
|
auto progressChanged() -> void;
|
||||||
auto currentStepChanged() -> void;
|
auto currentStepChanged() -> void;
|
||||||
@@ -269,161 +230,36 @@ private:
|
|||||||
auto compile(const QByteArray &data, const QString &filename, const QShader::Stage stage) noexcept(false) -> QShader;
|
auto compile(const QByteArray &data, const QString &filename, const QShader::Stage stage) noexcept(false) -> QShader;
|
||||||
|
|
||||||
//[13]
|
//[13]
|
||||||
/**
|
|
||||||
* @brief save
|
|
||||||
* Saves a serialized version of the shader to the specified uri
|
|
||||||
* @param uri
|
|
||||||
* Uri of the file to create
|
|
||||||
* @param shader
|
|
||||||
* The compiled shader
|
|
||||||
*/
|
|
||||||
auto save(const QUrl &uri, const QShader &shader) noexcept(false) -> void;
|
auto save(const QUrl &uri, const QShader &shader) noexcept(false) -> void;
|
||||||
|
|
||||||
//@BEGIN helpers
|
//helpers
|
||||||
/**
|
|
||||||
* @brief validateUri
|
|
||||||
* Validates that the uri is a local file or direcotry
|
|
||||||
* @param uri
|
|
||||||
*/
|
|
||||||
auto validateUri(const QUrl &uri) const noexcept(false) -> void;
|
auto validateUri(const QUrl &uri) const noexcept(false) -> void;
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief run
|
|
||||||
* Runs the supplied command with the given arguments as a QProcess. If
|
|
||||||
* data is supplied, it is written to the standard input channel after the
|
|
||||||
* process has started
|
|
||||||
* @param command
|
|
||||||
* System command or program to run
|
|
||||||
* @param arguments
|
|
||||||
* QStringList of the given arguments. Minimal wildcard expansion available.
|
|
||||||
* @param data
|
|
||||||
* Optional data to write
|
|
||||||
* @return
|
|
||||||
* Standard non-error output
|
|
||||||
*/
|
|
||||||
auto run(const QString &command, const QStringList &arguments, const QByteArray &data = {}) noexcept(false) -> QByteArray;
|
auto run(const QString &command, const QStringList &arguments, const QByteArray &data = {}) noexcept(false) -> QByteArray;
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief readFile
|
|
||||||
* Reads the file at the given uri and returns its data
|
|
||||||
* @param uri
|
|
||||||
* Uri of the file
|
|
||||||
* @return
|
|
||||||
* File contents
|
|
||||||
*/
|
|
||||||
auto readFile(const QUrl &uri) noexcept(false) -> QByteArray;
|
auto readFile(const QUrl &uri) noexcept(false) -> QByteArray;
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief writeFile
|
|
||||||
* Writes the supplied data to the given uri
|
|
||||||
* @param uri
|
|
||||||
* Uri of the file
|
|
||||||
* @param data
|
|
||||||
* Data to write
|
|
||||||
*/
|
|
||||||
auto writeFile(const QUrl &uri, const QByteArray &data) noexcept(false) -> void;
|
auto writeFile(const QUrl &uri, const QByteArray &data) noexcept(false) -> void;
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief copyFile
|
|
||||||
* Copys file to new uri
|
|
||||||
* @param sourceUri
|
|
||||||
* File to copy
|
|
||||||
* @param destinationUri
|
|
||||||
* New file location/name
|
|
||||||
*/
|
|
||||||
auto copyFile(const QUrl &sourceUri, const QUrl &destinationUri) noexcept(false) -> void;
|
auto copyFile(const QUrl &sourceUri, const QUrl &destinationUri) noexcept(false) -> void;
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief createDirectory
|
|
||||||
* QDir::mkpath was failing, so this helper function calls mkdir -p
|
|
||||||
* @param uri
|
|
||||||
* Directory path to create
|
|
||||||
*/
|
|
||||||
auto createDirectory(const QUrl &uri) noexcept(false) -> void;
|
auto createDirectory(const QUrl &uri) noexcept(false) -> void;
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief removeDirectory
|
|
||||||
* Calls rm -rf, but should be replaced with an agnostic solution
|
|
||||||
* @param uri
|
|
||||||
* Directory to remove
|
|
||||||
*/
|
|
||||||
auto removeDirectory(const QUrl &uri) noexcept(false) -> void;
|
auto removeDirectory(const QUrl &uri) noexcept(false) -> void;
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief getStageFromSuffix
|
|
||||||
* Supplies the stage/type of shader based on the shaders file extension
|
|
||||||
* @param suffix
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
auto getStageFromSuffix(const QString &suffix) const -> QShader::Stage;
|
auto getStageFromSuffix(const QString &suffix) const -> QShader::Stage;
|
||||||
|
|
||||||
/**
|
auto setError(const QString &title, const QString &message, const QUrl &uri = {}) -> void;
|
||||||
* @brief setState
|
auto setCompilerOutput(const QString &compilerOutput) -> void;
|
||||||
* Sets the current state of the compiler
|
|
||||||
* @param state
|
|
||||||
*/
|
|
||||||
auto setState(State state) -> void;
|
auto setState(State state) -> void;
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief setProgress
|
|
||||||
* Sets the current progress of the compiler
|
|
||||||
* @param progress
|
|
||||||
*/
|
|
||||||
auto setProgress(qreal progress) -> void;
|
auto setProgress(qreal progress) -> void;
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief setTotalSteps
|
|
||||||
* Sets the total steps pack will take to build
|
|
||||||
* @param steps
|
|
||||||
*/
|
|
||||||
auto setTotalSteps(qint64 steps) -> void;
|
auto setTotalSteps(qint64 steps) -> void;
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief setCurrentStep
|
|
||||||
* Sets the current step
|
|
||||||
* @param step
|
|
||||||
*/
|
|
||||||
auto setCurrentStep(qint64 step) -> void;
|
auto setCurrentStep(qint64 step) -> void;
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief setStatus
|
|
||||||
* Sets the current status message
|
|
||||||
* @param status
|
|
||||||
*/
|
|
||||||
auto setStatus(const QString &status) -> void;
|
auto setStatus(const QString &status) -> void;
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief incrementCompileStep
|
|
||||||
* Increments the current step and updates progress
|
|
||||||
*/
|
|
||||||
auto incrementCompileStep() -> void;
|
auto incrementCompileStep() -> void;
|
||||||
|
|
||||||
//@END helpers
|
|
||||||
|
|
||||||
#ifdef HAS_VULKAN
|
#ifdef HAS_VULKAN
|
||||||
/**
|
|
||||||
* @brief vulkanVersion
|
|
||||||
* Returns the current version reported by the vulkan api
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
auto vulkanVersion() const -> qint32;
|
auto vulkanVersion() const -> qint32;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef HAS_OPENGL
|
#ifdef HAS_OPENGL
|
||||||
/**
|
|
||||||
* @brief openGlVersion
|
|
||||||
* Returns the current version reported by the opengl api
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
auto openGlVersion() const -> qint32;
|
auto openGlVersion() const -> qint32;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
//members
|
//members
|
||||||
/**
|
|
||||||
* @brief m_updateVariables
|
|
||||||
* Standard variables expected by most online shaders, mainly
|
|
||||||
* shadertoy and similar.
|
|
||||||
*/
|
|
||||||
static inline const QStringList m_updateVariables
|
static inline const QStringList m_updateVariables
|
||||||
{
|
{
|
||||||
QStringLiteral("iTime"),
|
QStringLiteral("iTime"),
|
||||||
@@ -439,16 +275,6 @@ private:
|
|||||||
QStringLiteral("iChannelResolution")
|
QStringLiteral("iChannelResolution")
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief m_variableExpressions
|
|
||||||
* Regular expressions of standardized variables. Built at runtime
|
|
||||||
*/
|
|
||||||
static inline QList<QRegularExpression> m_variableExpressions;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief m_shaderNameFilters
|
|
||||||
* Name filters for supported shader types
|
|
||||||
*/
|
|
||||||
static inline const QStringList m_shaderNameFilters
|
static inline const QStringList m_shaderNameFilters
|
||||||
{
|
{
|
||||||
QStringLiteral("*.frag"),
|
QStringLiteral("*.frag"),
|
||||||
@@ -460,10 +286,6 @@ private:
|
|||||||
QStringLiteral("*.glsl")
|
QStringLiteral("*.glsl")
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief m_shaderStages
|
|
||||||
* Map of supported file suffix to their QShader::Stage
|
|
||||||
*/
|
|
||||||
static inline const QMap<QString, QShader::Stage> m_shaderStages
|
static inline const QMap<QString, QShader::Stage> m_shaderStages
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
@@ -492,19 +314,11 @@ private:
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief m_version
|
|
||||||
* Version to be appended to the shader before build
|
|
||||||
*/
|
|
||||||
static inline const QByteArray m_version
|
static inline const QByteArray m_version
|
||||||
{
|
{
|
||||||
R"(#version 450)"
|
R"(#version 450)"
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief m_header
|
|
||||||
* Header to be appended to the shader before build
|
|
||||||
*/
|
|
||||||
static inline const QByteArray m_header
|
static inline const QByteArray m_header
|
||||||
{
|
{
|
||||||
R"(layout(location = 0) in vec2 qt_TexCoord0;
|
R"(layout(location = 0) in vec2 qt_TexCoord0;
|
||||||
@@ -534,10 +348,6 @@ layout(binding = 4) uniform sampler2D iChannel3;
|
|||||||
vec2 fragCoord = vec2(qt_TexCoord0.x, 1.0 - qt_TexCoord0.y) * ubuf.iResolution.xy;)"
|
vec2 fragCoord = vec2(qt_TexCoord0.x, 1.0 - qt_TexCoord0.y) * ubuf.iResolution.xy;)"
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief m_footer
|
|
||||||
* Footer to be appended to the shader before build
|
|
||||||
*/
|
|
||||||
static inline const QByteArray m_footer
|
static inline const QByteArray m_footer
|
||||||
{
|
{
|
||||||
R"(
|
R"(
|
||||||
@@ -548,12 +358,29 @@ void main() {
|
|||||||
})"
|
})"
|
||||||
};
|
};
|
||||||
|
|
||||||
|
QMap<QByteArray, QByteArray> m_commonData;
|
||||||
|
QMap<QByteArray, QShaderBaker> m_shaders;
|
||||||
|
|
||||||
|
QString m_compilerOutput;
|
||||||
|
QString m_errorMessage;
|
||||||
|
QString m_errorTitle;
|
||||||
|
QString m_status;
|
||||||
|
|
||||||
State m_state;
|
State m_state;
|
||||||
|
|
||||||
qreal m_currentStep = 0;
|
qreal m_currentStep = 0;
|
||||||
qreal m_progress = 0;
|
qreal m_progress = 0;
|
||||||
qreal m_totalSteps = 0;
|
qreal m_totalSteps = 0;
|
||||||
QString m_status;
|
|
||||||
|
|
||||||
|
QMutex m_downloadMutex;
|
||||||
|
|
||||||
|
QFuture<QUrl> m_buildFuture;
|
||||||
|
|
||||||
|
static inline QList<QRegularExpression> m_variableExpressions;
|
||||||
|
|
||||||
|
Q_PROPERTY(QString compilerOutput READ compilerOutput WRITE setCompilerOutput NOTIFY compilerOutputChanged FINAL)
|
||||||
|
Q_PROPERTY(QString errorTitle READ errorTitle NOTIFY errorTitleChanged FINAL)
|
||||||
|
Q_PROPERTY(QString errorMessage READ errorMessage NOTIFY errorMessageChanged FINAL)
|
||||||
Q_PROPERTY(qreal progress READ progress NOTIFY progressChanged FINAL)
|
Q_PROPERTY(qreal progress READ progress NOTIFY progressChanged FINAL)
|
||||||
Q_PROPERTY(qint64 totalSteps READ totalSteps NOTIFY totalStepsChanged FINAL)
|
Q_PROPERTY(qint64 totalSteps READ totalSteps NOTIFY totalStepsChanged FINAL)
|
||||||
Q_PROPERTY(qint64 currentStep READ currentStep NOTIFY currentStepChanged FINAL)
|
Q_PROPERTY(qint64 currentStep READ currentStep NOTIFY currentStepChanged FINAL)
|
||||||
|
|||||||
Reference in New Issue
Block a user