Окно 1

master
tanaevms 2023-09-03 18:49:20 +03:00
commit 6d6bd6fe8f
44 changed files with 1529 additions and 0 deletions

24
CMakeLists.txt 100644
View File

@ -0,0 +1,24 @@
cmake_minimum_required(VERSION 3.18)
project(QML_BalancerApp LANGUAGES CXX)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_AUTOMOC ON)
find_package(Qt6 COMPONENTS Gui Qml Quick)
qt_add_executable(QML_BalancerApp src/main.cpp)
qt_add_resources(QML_BalancerApp "configuration"
PREFIX "/"
FILES
qtquickcontrols2.conf
)
target_link_libraries(QML_BalancerApp PRIVATE
Qt${QT_VERSION_MAJOR}::Core
Qt${QT_VERSION_MAJOR}::Gui
Qt${QT_VERSION_MAJOR}::Quick
Qt${QT_VERSION_MAJOR}::Qml
)
include(${CMAKE_CURRENT_SOURCE_DIR}/qmlmodules)

View File

@ -0,0 +1,99 @@
import QmlProject
Project {
mainFile: "content/App.qml"
/* Include .qml, .js, and image files from current directory and subdirectories */
QmlFiles {
directory: "content"
}
QmlFiles {
directory: "imports"
}
JavaScriptFiles {
directory: "content"
}
JavaScriptFiles {
directory: "imports"
}
ImageFiles {
directory: "content"
}
Files {
filter: "*.conf"
files: ["qtquickcontrols2.conf"]
}
Files {
filter: "qmldir"
directory: "."
}
Files {
filter: "*.ttf;*.otf"
}
Files {
filter: "*.wav;*.mp3"
}
Files {
filter: "*.mp4"
}
Files {
filter: "*.glsl;*.glslv;*.glslf;*.vsh;*.fsh;*.vert;*.frag"
}
Files {
filter: "*.mesh"
directory: "asset_imports"
}
Environment {
QT_QUICK_CONTROLS_CONF: "qtquickcontrols2.conf"
QT_AUTO_SCREEN_SCALE_FACTOR: "1"
QT_LOGGING_RULES: "qt.qml.connections=false"
QT_ENABLE_HIGHDPI_SCALING: "0"
/* Useful for debugging
QSG_VISUALIZE=batches
QSG_VISUALIZE=clip
QSG_VISUALIZE=changes
QSG_VISUALIZE=overdraw
*/
}
qt6Project: true
/* List of plugin directories passed to QML runtime */
importPaths: [ "imports", "asset_imports" ]
/* Required for deployment */
targetDirectory: "/opt/QML_Balancer"
qdsVersion: "3.5"
quickVersion: "6.2"
/* If any modules the project imports require widgets (e.g. QtCharts), widgetApp must be true */
widgetApp: true
/* args: Specifies command line arguments for qsb tool to generate shaders.
files: Specifies target files for qsb tool. If path is included, it must be relative to this file.
Wildcard '*' can be used in the file name part of the path.
e.g. files: [ "content/shaders/*.vert", "*.frag" ] */
ShaderTool {
args: "-s --glsl \"100 es,120,150\" --hlsl 50 --msl 12"
files: [ "content/shaders/*" ]
}
multilanguageSupport: true
supportedLanguages: ["en"]
primaryLanguage: "en"
}

0
README.md 100644
View File

51
content/App.qml 100644
View File

@ -0,0 +1,51 @@
/****************************************************************************
**
** Copyright (C) 2021 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of Qt Quick Studio Components.
**
** $QT_BEGIN_LICENSE:GPL$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 3 or (at your option) any later version
** approved by the KDE Free Qt Foundation. The licenses are as published by
** the Free Software Foundation and appearing in the file LICENSE.GPL3
** included in the packaging of this file. Please review the following
** information to ensure the GNU General Public License requirements will
** be met: https://www.gnu.org/licenses/gpl-3.0.html.
**
** $QT_END_LICENSE$
**
****************************************************************************/
import QtQuick 6.2
import QtQuick.Window 6.2
import QML_Balancer
import QtQuick.Controls.Material
Window {
width: mainScreen.width
height: mainScreen.height
//Material.theme: darkModeToggle.checked ? Material.Dark : Material.Light
visible: true
title: "Балансировщик"
Screen01 {
id: mainScreen
}
}

View File

@ -0,0 +1,13 @@
### This file is automatically generated by Qt Design Studio.
### Do not change
qt_add_library(content STATIC)
qt6_add_qml_module(content
URI "content"
VERSION 1.0
QML_FILES
App.qml
Screen01.ui.qml
RESOURCES
fonts/fonts.txt
)

View File

@ -0,0 +1,11 @@
import QtQuick 2.15
import QtQuick.Controls 2.15
import QML_Balancer 1.0
Label {
width: Constants.width
height: Constants.height
font.weight: Font.Normal
font.pointSize: 40
verticalAlignment: Text.AlignVCenter
}

View File

@ -0,0 +1,248 @@
/*
This is a UI file (.ui.qml) that is intended to be edited in Qt Design Studio only.
It is supposed to be strictly declarative and only uses a subset of QML. If you edit
this file manually, you might introduce QML code that is not supported by Qt Design Studio.
Check out https://doc.qt.io/qtcreator/creator-quick-ui-forms.html for details on .ui.qml files.
*/
import QtQuick 6.2
import QtQuick.Controls 6.2
import QML_Balancer
import QtQuick.Controls.Material
Pane {
width: Constants.width
height: Constants.height
//color: "#606060"
Material.theme: darkModeToggle.checked ? Material.Dark : Material.Light
property url pathImg: "images/textinput.png"
property string headerText: "Шаг 0: Ввод информации(необязательный этап)"
//textfield0.text: "" //введенные данные с textfield0
//textfield1.text: "" //введенные данные с textfield1
//textfield2.text: "" //введенные данные с textfield2
/*SettingsBar {
id: settings
x: 0
y: 0
}*/
Column {
x: -12
y: -8
width: 1920
height: 1072
rotation: 0
spacing: 52
Row {
Toggle {
id: darkModeToggle
text: qsTr("Dark mode")
anchors.top: parent.top
}
ListView {
width: 1097
height: 62
//anchors.verticalCenterOffset: -456
//anchors.horizontalCenterOffset: 1
//anchors.centerIn: parent
delegate: TextGTL.mycomponent
TextGTL {
id: text0
x: 55
text: headerText
elide: Text.ElideNone
leftPadding: 200
}
}
}
Row {
anchors.top: parent.top
leftPadding: 50
layoutDirection: Qt.LeftToRight
spacing: 48
anchors.left: parent.middle
Column {
id: column0
x: 0
y: 184
width: 602
height: 565
rotation: 0
clip: true
spacing: 54
padding: 0
//anchors.top: parent.middle
//add: touchStyle
//add1: touchStyle
//children: [ touchStyle, touchStyle]
LabelGTL {
//anchors.fill: parent
width: 600
height: 140
text: "Скорость вращения, об/мин"
font.pointSize: 30
anchors.top: bottom
rightInset: 0
verticalAlignment: Text.AlignVCenter
//delegate: TextFieldGTL.mycomponent
/*TextFieldGTL {
id: textfield01
}*/
}
LabelGTL {
//anchors.fill: parent
width: 600
height: 140
text: "Радиус установки грузов, мм"
//topPadding: 0
verticalAlignment: Text.AlignVCenter
font.pointSize: 30
//delegate: TextFieldGTL.mycomponent
/*TextFieldGTL {
id: textfield01
}*/
}
LabelGTL {
//anchors.fill: parent
width: 600
height: 140
text: "Масса ротора, гр."
font.pointSize: 30
//delegate: TextFieldGTL.mycomponent
/*TextFieldGTL {
id: textfield01
}*/
}
/*ListView {
//anchors.fill: parent
width: 600
height: 140
model: 5
delegate: TextFieldGTL.mycomponent
TextFieldGTL {
id: textfield11
}
}
ListView {
//anchors.fill: parent
width: 600
height: 140
model: 5
delegate: TextFieldGTL.mycomponent
TextFieldGTL {
id: textfield21
x: 0
y: -8
}
}*/
}
Column {
id: column1
x: 792
y: 184
width: 602
height: 565
rotation: 0
clip: true
spacing: 54
padding: 0
//add: touchStyle
//add1: touchStyle
//children: [ touchStyle, touchStyle]
ListView {
//anchors.fill: parent
width: 600
height: 140
model: 5
delegate: TextFieldGTL.mycomponent
TextFieldGTL {
id: textfield0
}
}
ListView {
//anchors.fill: parent
width: 600
height: 140
model: 5
delegate: TextFieldGTL.mycomponent
TextFieldGTL {
id: textfield1
}
}
ListView {
//anchors.fill: parent
width: 600
height: 140
model: 5
delegate: TextFieldGTL.mycomponent
TextFieldGTL {
id: textfield2
x: 0
y: -8
}
}
}
}
}
Button {
id: button
x: 21
y: 776
width: 286
height: 87
text: qsTr("Button")
}
/* Rectangle {
id: backButton
width: 0
//width: opacity ? 60 : 0
anchors.left: parent
//anchors.leftMargin: 20
//opacity: stackView.depth > 1 ? 1 : 0
//anchors.verticalCenter: parent.verticalCenter
antialiasing: true
height: 60
radius: 4
color: backmouse.pressed ? "#222" : "transparent"
//Behavior on opacity { NumberAnimation{} }
Image {
anchors.verticalCenter: parent.verticalCenter
source: "images/navigation_previous_item.png"
}
MouseArea {
id: backmouse
anchors.fill: parent
anchors.margins: -10
//onClicked: stackView.pop()
}
}*/
}

View File

@ -0,0 +1,405 @@
/****************************************************************************
**
** Copyright (C) 2019 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the examples of the Qt Design Studio.
**
** $QT_BEGIN_LICENSE:BSD$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** BSD License Usage
** Alternatively, you may use this file under the terms of the BSD license
** as follows:
**
** "Redistribution and use in source and binary forms, with or without
** modification, are permitted provided that the following conditions are
** met:
** * Redistributions of source code must retain the above copyright
** notice, this list of conditions and the following disclaimer.
** * Redistributions in binary form must reproduce the above copyright
** notice, this list of conditions and the following disclaimer in
** the documentation and/or other materials provided with the
** distribution.
** * Neither the name of The Qt Company Ltd nor the names of its
** contributors may be used to endorse or promote products derived
** from this software without specific prior written permission.
**
**
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
**
** $QT_END_LICENSE$
**
****************************************************************************/
import QtQuick 2.10
//import ebikeDesign 1.0
//import EbikeData 1.0
import QtQuick.Studio.Components 1.0
import QtQuick.Controls 2.3
import QtQuick.Timeline 1.0
import QtQuick.Layouts 1.3
Item {
id: settings
width: Constants.width
height: Constants.height
state: "closed"
Rectangle {
id: blocker
x: 0
width: Constants.width
color: "#464646"
opacity: 0
anchors.bottom: parent.bottom
anchors.top: stack.bottom
MouseArea {
id: mouseArea2
anchors.fill: parent
}
}
Image {
id: close
x: 564
y: 44
source: "images/top_curtain_drag_back.png"
MouseArea {
id: mouseArea
anchors.rightMargin: -16
anchors.leftMargin: -16
anchors.bottomMargin: -16
anchors.fill: parent
}
}
Rectangle {
id: stack
x: 0
y: 44
width: Constants.width
height: 200
color: "#0d0d0d"
clip: true
MouseArea {
anchors.fill: parent
}
StackLayout {
id: stackLayout
width: Constants.width
currentIndex: tabbar.index
anchors.fill: parent
Info {}
GeneralSettings {}
ViewSettings {}
}
}
Rectangle {
id: topBar
x: 0
y: 0
width: Constants.width
height: 45
color: "#0d0d0d"
Image {
id: image4
x: 1240
y: 5
source: "images/search_cancel.png"
}
Image {
id: image3
x: 1193
y: 5
source: "images/info.png"
}
}
Image {
id: open
x: 564
y: 44
source: "images/top_curtain_drag.png"
MouseArea {
id: mouseArea1
anchors.rightMargin: -16
anchors.leftMargin: -16
anchors.bottomMargin: -16
anchors.fill: parent
}
CustomLabel {
id: customLabel
x: -245
y: 316
text: Backend.time
font.pixelSize: 22
horizontalAlignment: Text.AlignHCenter
anchors.fill: parent
}
}
Timeline {
id: timeline
animations: [
TimelineAnimation {
id: openAnimation
onFinished: settings.state = "Open"
loops: 1
duration: 250
from: 0
to: 1000
running: false
},
TimelineAnimation {
id: closeAnimation
onFinished: settings.state = "Closed"
loops: 1
duration: 250
from: 1000
to: 0
running: false
}
]
endFrame: 1000
enabled: true
startFrame: 0
KeyframeGroup {
target: stack
property: "height"
Keyframe {
value: 0
frame: 0
}
Keyframe {
easing.bezierCurve: [0.39, 0.575, 0.565, 1, 1, 1]
value: 320
frame: 1000
}
Keyframe {
value: 0
frame: 89
}
}
KeyframeGroup {
target: close
property: "opacity"
Keyframe {
easing.bezierCurve: [0.39, 0.575, 0.565, 1, 1, 1]
value: 1
frame: 1000
}
Keyframe {
value: 0
frame: 850
}
Keyframe {
value: 0
frame: 0
}
}
KeyframeGroup {
target: close
property: "y"
Keyframe {
value: 315
frame: 850
}
Keyframe {
easing.bezierCurve: [0.39, 0.575, 0.565, 1, 1, 1]
value: 360
frame: 1000
}
}
KeyframeGroup {
target: open
property: "opacity"
Keyframe {
value: 1
frame: 0
}
Keyframe {
value: 0
frame: 88
}
}
KeyframeGroup {
target: tabbar
property: "opacity"
Keyframe {
value: 0
frame: 0
}
Keyframe {
value: 1
frame: 1000
}
}
KeyframeGroup {
target: blocker
property: "opacity"
Keyframe {
value: 0
frame: 0
}
Keyframe {
value: 0.2
frame: 1000
}
Keyframe {
frame: 794
value: "0"
}
}
KeyframeGroup {
target: stackLayout
property: "opacity"
Keyframe {
value: 0
frame: 0
}
Keyframe {
value: 0
frame: 300
}
Keyframe {
value: 1
frame: 1000
}
}
KeyframeGroup {
target: blocker
property: "anchors.bottomMargin"
Keyframe {
value: 708
frame: 0
}
Keyframe {
value: 0
frame: 1000
}
}
}
Connections {
target: mouseArea
onClicked: {
settings.state = "Closing"
}
}
Connections {
target: mouseArea1
onClicked: {
if (settings.state != "Open")
settings.state = "Opening"
}
}
Tabbar {
id: tabbar
x: 0
y: 0
index: 0
}
states: [
State {
name: "Open"
PropertyChanges {
target: timeline
currentFrame: 1000
enabled: true
}
},
State {
name: "Closed"
PropertyChanges {
target: timeline
currentFrame: 0
enabled: true
}
},
State {
name: "Opening"
PropertyChanges {
target: timeline
enabled: true
}
PropertyChanges {
target: openAnimation
running: true
}
},
State {
name: "Closing"
PropertyChanges {
target: timeline
enabled: true
}
PropertyChanges {
target: closeAnimation
running: true
}
}
]
}

197
content/Tabbar.qml 100644
View File

@ -0,0 +1,197 @@
/****************************************************************************
**
** Copyright (C) 2019 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the examples of the Qt Design Studio.
**
** $QT_BEGIN_LICENSE:BSD$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** BSD License Usage
** Alternatively, you may use this file under the terms of the BSD license
** as follows:
**
** "Redistribution and use in source and binary forms, with or without
** modification, are permitted provided that the following conditions are
** met:
** * Redistributions of source code must retain the above copyright
** notice, this list of conditions and the following disclaimer.
** * Redistributions in binary form must reproduce the above copyright
** notice, this list of conditions and the following disclaimer in
** the documentation and/or other materials provided with the
** distribution.
** * Neither the name of The Qt Company Ltd nor the names of its
** contributors may be used to endorse or promote products derived
** from this software without specific prior written permission.
**
**
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
**
** $QT_END_LICENSE$
**
****************************************************************************/
import QtQuick 2.10
//import ebikeDesign 1.0
import QtQuick.Studio.Components 1.0
import QtQuick.Controls 2.3
import QtQuick.Timeline 1.0
import QtQuick.Layouts 1.3
Rectangle {
id: tabbar
width: 1200
height: 50
color: "#0d0d0d"
property int index: 0
RowLayout {
y: 0
anchors.left: parent.left
anchors.right: parent.right
Image {
id: info
Layout.alignment: Qt.AlignHCenter | Qt.AlignVCenter
source: "images/info.png"
MouseArea {
id: infoClicked
anchors.rightMargin: -64
anchors.leftMargin: -64
anchors.bottomMargin: -4
anchors.topMargin: -4
anchors.fill: parent
}
}
Image {
id: list
Layout.alignment: Qt.AlignHCenter | Qt.AlignVCenter
source: "images/list.png"
MouseArea {
id: listClicked
anchors.topMargin: -4
anchors.bottomMargin: -4
anchors.rightMargin: -64
anchors.leftMargin: -64
anchors.fill: parent
}
}
Image {
id: settings
Layout.alignment: Qt.AlignHCenter | Qt.AlignVCenter
source: "images/settings.png"
MouseArea {
id: settingsClicked
anchors.rightMargin: -64
anchors.leftMargin: -64
anchors.bottomMargin: -4
anchors.topMargin: -4
anchors.fill: parent
}
}
}
Rectangle {
id: rectangle
x: 8
y: 38
width: 365
height: 4
color: "#ffffff"
Behavior on x {
PropertyAnimation {
duration: 140
}
}
}
Connections {
target: listClicked
onClicked: {
tabbar.index = "1"
}
}
Connections {
target: infoClicked
onClicked: {
tabbar.index = "0"
}
}
Connections {
target: settingsClicked
onClicked: {
tabbar.index = "2"
}
}
states: [
State {
name: "Left"
when: tabbar.index === 0
PropertyChanges {
target: info
source: "images/info_selected.png"
}
PropertyChanges {
target: rectangle
x: 8
}
},
State {
name: "Middle"
when: tabbar.index === 1
PropertyChanges {
target: list
source: "images/list_selected.png"
}
PropertyChanges {
target: rectangle
x: 418
}
},
State {
name: "Right"
when: tabbar.index === 2
PropertyChanges {
target: settings
source: "images/settings_selected.png"
}
PropertyChanges {
target: rectangle
x: 827
}
}
]
}

View File

@ -0,0 +1,35 @@
import QtQuick 2.15
import QtQuick.Controls 2.15
import QML_Balancer 1.0
//Item {
TextField {
id: textfieldgtl
width: 600
height: 140
//selectedTextColor: "white"
//placeholderTextColor: "white"
layer.enabled: false
focus: false
antialiasing: false
font.weight: Font.Normal
font.pointSize: 40
background: Item {
implicitHeight: 140
implicitWidth: 600
BorderImage {
source: pathImg
border.left: 8
border.right: 8
anchors.bottom: parent.bottom
anchors.left: parent.left
anchors.right: parent.right
}
}
placeholderText: qsTr("Введите значение")
}
//}

View File

@ -0,0 +1,14 @@
import QtQuick 2.15
import QtQuick.Controls 2.15
Text {
color: "#b7b7b7"
text: headerText
transformOrigin: Item.Top
font.pointSize: 32
minimumPointSize: 16
minimumPixelSize: 16
font.family: "Verdana"
font.styleName: "Полужирный"
}

View File

@ -0,0 +1,84 @@
/*
This is a UI file (.ui.qml) that is intended to be edited in Qt Design Studio only.
It is supposed to be strictly declarative and only uses a subset of QML. If you edit
this file manually, you might introduce QML code that is not supported by Qt Design Studio.
Check out https://doc.qt.io/qtcreator/creator-quick-ui-forms.html for details on .ui.qml files.
*/
/****************************************************************************
**
** Copyright (C) 2022 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the examples of the Qt Design Studio.
**
** $QT_BEGIN_LICENSE:BSD$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** BSD License Usage
** Alternatively, you may use this file under the terms of the BSD license
** as follows:
**
** "Redistribution and use in source and binary forms, with or without
** modification, are permitted provided that the following conditions are
** met:
** * Redistributions of source code must retain the above copyright
** notice, this list of conditions and the following disclaimer.
** * Redistributions in binary form must reproduce the above copyright
** notice, this list of conditions and the following disclaimer in
** the documentation and/or other materials provided with the
** distribution.
** * Neither the name of The Qt Company Ltd nor the names of its
** contributors may be used to endorse or promote products derived
** from this software without specific prior written permission.
**
**
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
**
** $QT_END_LICENSE$
**
****************************************************************************/
/*
This is a UI file (.ui.qml) that is intended to be edited in Qt Design Studio only.
It is supposed to be strictly declarative and only uses a subset of QML. If you edit
this file manually, you might introduce QML code that is not supported by Qt Design Studio.
Check out https://doc.qt.io/qtcreator/creator-quick-ui-forms.html for details on .ui.qml files.
*/
import QtQuick
import QtQuick.Controls
Item {
property string text
property alias checked: toggleIndicator.checked
readonly property alias hasFocus: toggleIndicator.activeFocus
implicitWidth: toggleText.width + toggleIndicator.width
implicitHeight: 50
Label {
id: toggleText
text: parent.text
anchors.verticalCenter: toggleIndicator.verticalCenter
}
Switch {
id: toggleIndicator
anchors.left: toggleText.right
anchors.rightMargin: 8
}
}

View File

@ -0,0 +1 @@
Fonts in this folder are loaded automatically.

View File

@ -0,0 +1,2 @@
Notice some of these images are derived from Google applications resources. They were provided under the following license:
You may use the materials in this directory without restriction to develop your apps and to use in your apps.

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 439 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 368 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 179 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 159 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 322 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 630 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 217 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

View File

@ -0,0 +1,4 @@
### This file is automatically generated by Qt Design Studio.
### Do not change
add_subdirectory(QML_Balancer)

View File

@ -0,0 +1,18 @@
### This file is automatically generated by Qt Design Studio.
### Do not change
qt_add_library(QML_Balancer STATIC)
set_source_files_properties(Constants.qml
PROPERTIES
QT_QML_SINGLETON_TYPE true
)
qt6_add_qml_module(QML_Balancer
URI "QML_Balancer"
VERSION 1.0
QML_FILES
Constants.qml
DirectoryFontLoader.qml
EventListModel.qml
EventListSimulator.qml
)

View File

@ -0,0 +1,27 @@
pragma Singleton
import QtQuick 6.2
import QtQuick.Studio.Application
QtObject {
readonly property int width: 1920
readonly property int height: 1080
property string relativeFontDirectory: "fonts"
/* Edit this comment to add your custom font */
readonly property font font: Qt.font({
family: Qt.application.font.family,
pixelSize: Qt.application.font.pixelSize
})
readonly property font largeFont: Qt.font({
family: Qt.application.font.family,
pixelSize: Qt.application.font.pixelSize * 1.6
})
readonly property color backgroundColor: "#c2c2c2"
property StudioApplication application: StudioApplication {
fontPath: Qt.resolvedUrl("../../content/" + relativeFontDirectory)
}
}

View File

@ -0,0 +1,60 @@
/****************************************************************************
**
** Copyright (C) 2019 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of Qt Quick Designer Components.
**
** $QT_BEGIN_LICENSE:GPL$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 3 or (at your option) any later version
** approved by the KDE Free Qt Foundation. The licenses are as published by
** the Free Software Foundation and appearing in the file LICENSE.GPL3
** included in the packaging of this file. Please review the following
** information to ensure the GNU General Public License requirements will
** be met: https://www.gnu.org/licenses/gpl-3.0.html.
**
** $QT_END_LICENSE$
**
****************************************************************************/
import QtQuick 6.2
import Qt.labs.folderlistmodel 6.2
QtObject {
id: loader
property url fontDirectory: Qt.resolvedUrl("../../content/" + relativeFontDirectory)
property string relativeFontDirectory: "fonts"
function loadFont(url) {
var fontLoader = Qt.createQmlObject('import QtQuick 2.15; FontLoader { source: "' + url + '"; }',
loader,
"dynamicFontLoader");
}
property FolderListModel folderModel: FolderListModel {
id: folderModel
folder: loader.fontDirectory
nameFilters: [ "*.ttf", "*.otf" ]
showDirs: false
onStatusChanged: {
if (folderModel.status == FolderListModel.Ready) {
var i
for (i = 0; i < count; i++) {
loadFont(folderModel.get(i, "fileURL"))
}
}
}
}
}

View File

@ -0,0 +1,41 @@
/****************************************************************************
**
** Copyright (C) 2018 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of Qt Quick Designer Components.
**
** $QT_BEGIN_LICENSE:GPL$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 3 or (at your option) any later version
** approved by the KDE Free Qt Foundation. The licenses are as published by
** the Free Software Foundation and appearing in the file LICENSE.GPL3
** included in the packaging of this file. Please review the following
** information to ensure the GNU General Public License requirements will
** be met: https://www.gnu.org/licenses/gpl-3.0.html.
**
** $QT_END_LICENSE$
**
****************************************************************************/
import QtQuick 6.2
ListModel {
id: eventListModel
ListElement {
eventId: "enterPressed"
eventDescription: "Emitted when pressing the enter button"
shortcut: "Return"
parameters: "Enter"
}
}

View File

@ -0,0 +1,51 @@
/****************************************************************************
**
** Copyright (C) 2018 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of Qt Quick Designer Components.
**
** $QT_BEGIN_LICENSE:GPL$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 3 or (at your option) any later version
** approved by the KDE Free Qt Foundation. The licenses are as published by
** the Free Software Foundation and appearing in the file LICENSE.GPL3
** included in the packaging of this file. Please review the following
** information to ensure the GNU General Public License requirements will
** be met: https://www.gnu.org/licenses/gpl-3.0.html.
**
** $QT_END_LICENSE$
**
****************************************************************************/
import QtQuick 6.2
import QtQuick.Studio.EventSimulator 1.0
import QtQuick.Studio.EventSystem 1.0
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()
}
}

View File

@ -0,0 +1,13 @@
MetaInfo {
Type {
name: "QML_Balancer.EventListSimulator"
icon: ":/qtquickplugin/images/item-icon16.png"
Hints {
visibleInNavigator: true
canBeDroppedInNavigator: true
canBeDroppedInFormEditor: false
canBeDroppedInView3D: false
}
}
}

View File

@ -0,0 +1,6 @@
Module QML_Balancer
singleton Constants 1.0 Constants.qml
EventListSimulator 1.0 EventListSimulator.qml
EventListModel 1.0 EventListModel.qml
DirectoryFontLoader 1.0 DirectoryFontLoader.qml

8
main.qml 100644
View File

@ -0,0 +1,8 @@
/* This file is generated and only relevant for integrating the project into a Qt 6 and cmake based
C++ project. */
import QtQuick
import content
App {
}

17
qmlmodules 100644
View File

@ -0,0 +1,17 @@
### This file is automatically generated by Qt Design Studio.
### Do not change
qt6_add_qml_module(QML_BalancerApp
URI "Main"
VERSION 1.0
NO_PLUGIN
QML_FILES main.qml
)
add_subdirectory(content)
add_subdirectory(imports)
target_link_libraries(QML_BalancerApp PRIVATE
contentplugin
QML_Balancerplugin
)

View File

@ -0,0 +1,15 @@
; This file can be edited to change the style of the application
; Read "Qt Quick Controls 2 Configuration File" for details:
; http://doc.qt.io/qt-5/qtquickcontrols2-configuration.html
[Controls]
Style=Material
;FallbackStyle=Material
[Material]
Theme=System
Variant=Normal
Accent=#067fff
;Primary=Red
;Foreground=Red
;Background=Red

View File

@ -0,0 +1,14 @@
/*
* This file is automatically generated by Qt Design Studio.
* Do not change.
*/
#include <QGuiApplication>
void set_qt_environment()
{
qputenv("QT_AUTO_SCREEN_SCALE_FACTOR", "1");
qputenv("QT_ENABLE_HIGHDPI_SCALING", "0");
qputenv("QT_LOGGING_RULES", "qt.qml.connections=false");
qputenv("QT_QUICK_CONTROLS_CONF", ":/qtquickcontrols2.conf");
}

View File

@ -0,0 +1,9 @@
/*
* This file is automatically generated by Qt Design Studio.
* Do not change.
*/
#include <QtQml/qqmlextensionplugin.h>
Q_IMPORT_QML_PLUGIN(contentPlugin)
Q_IMPORT_QML_PLUGIN(QML_BalancerPlugin)

62
src/main.cpp 100644
View File

@ -0,0 +1,62 @@
/****************************************************************************
**
** Copyright (C) 2021 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of Qt Quick Studio Components.
**
** $QT_BEGIN_LICENSE:GPL$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 3 or (at your option) any later version
** approved by the KDE Free Qt Foundation. The licenses are as published by
** the Free Software Foundation and appearing in the file LICENSE.GPL3
** included in the packaging of this file. Please review the following
** information to ensure the GNU General Public License requirements will
** be met: https://www.gnu.org/licenses/gpl-3.0.html.
**
** $QT_END_LICENSE$
**
****************************************************************************/
#include <QGuiApplication>
#include <QQmlApplicationEngine>
#include "app_environment.h"
#include "import_qml_plugins.h"
int main(int argc, char *argv[])
{
set_qt_environment();
QGuiApplication app(argc, argv);
QQmlApplicationEngine engine;
const QUrl url(u"qrc:Main/main.qml"_qs);
QObject::connect(
&engine, &QQmlApplicationEngine::objectCreated, &app,
[url](QObject *obj, const QUrl &objUrl) {
if (!obj && url == objUrl)
QCoreApplication::exit(-1);
},
Qt::QueuedConnection);
engine.addImportPath(QCoreApplication::applicationDirPath() + "/qml");
engine.addImportPath(":/");
engine.load(url);
if (engine.rootObjects().isEmpty()) {
return -1;
}
return app.exec();
}