This commit is contained in:
lopata29435_NSK 2025-01-08 05:13:48 +07:00
parent 19d2c8c046
commit 3af06d02ec
72 changed files with 14330 additions and 1841 deletions

View File

@ -9,8 +9,8 @@ set(CMAKE_AUTORCC ON)
set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_STANDARD_REQUIRED ON)
find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Widgets LinguistTools SvgWidgets Gui Network PrintSupport) find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Widgets LinguistTools SvgWidgets Gui Network PrintSupport Positioning Location Qml QuickWidgets)
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets LinguistTools SvgWidgets Gui Network PrintSupport) find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets LinguistTools SvgWidgets Gui Network PrintSupport Positioning Location Qml QuickWidgets)
set(TS_FILES FemaSoftware_ru_RU.ts) set(TS_FILES FemaSoftware_ru_RU.ts)
@ -54,7 +54,10 @@ if(${QT_VERSION_MAJOR} GREATER_EQUAL 6)
journalservice.h journalservice.h
logs_r.h logs_r.h
qcustomplot.h qcustomplot.cpp qcustomplot.h qcustomplot.cpp
plotservice.h
logwidget.h logwidget.cpp
apiform.h apiform.cpp apiform.ui
serverwidget.h serverwidget.cpp
) )
@ -80,7 +83,7 @@ else()
qt5_create_translation(QM_FILES ${CMAKE_SOURCE_DIR} ${TS_FILES}) qt5_create_translation(QM_FILES ${CMAKE_SOURCE_DIR} ${TS_FILES})
endif() endif()
target_link_libraries(FemaSoftware PRIVATE Qt${QT_VERSION_MAJOR}::Widgets Qt${QT_VERSION_MAJOR}::SvgWidgets Qt${QT_VERSION_MAJOR}::Gui Qt${QT_VERSION_MAJOR}::Network Qt${QT_VERSION_MAJOR}::PrintSupport) target_link_libraries(FemaSoftware PRIVATE Qt${QT_VERSION_MAJOR}::Widgets Qt${QT_VERSION_MAJOR}::SvgWidgets Qt${QT_VERSION_MAJOR}::Gui Qt${QT_VERSION_MAJOR}::Network Qt${QT_VERSION_MAJOR}::PrintSupport Qt${QT_VERSION_MAJOR}::Positioning Qt${QT_VERSION_MAJOR}::Qml Qt${QT_VERSION_MAJOR}::QuickWidgets Qt${QT_VERSION_MAJOR}::Location)
# Qt for iOS sets MACOSX_BUNDLE_GUI_IDENTIFIER automatically since Qt 6.1. # Qt for iOS sets MACOSX_BUNDLE_GUI_IDENTIFIER automatically since Qt 6.1.

View File

@ -1,10 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject> <!DOCTYPE QtCreatorProject>
<!-- Written by QtCreator 15.0.0, 2024-12-28T20:14:42. --> <!-- Written by QtCreator 15.0.0, 2025-01-08T02:03:27. -->
<qtcreator> <qtcreator>
<data> <data>
<variable>EnvironmentId</variable> <variable>EnvironmentId</variable>
<value type="QByteArray">{0f80b2dd-ddfc-4d50-9ae5-0a805fa2dbe5}</value> <value type="QByteArray">{13b89f84-ee4a-4465-9e05-91bc83d27758}</value>
</data> </data>
<data> <data>
<variable>ProjectExplorer.Project.ActiveTarget</variable> <variable>ProjectExplorer.Project.ActiveTarget</variable>
@ -103,21 +103,21 @@
<value type="int" key="CMake.Configure.BaseEnvironment">2</value> <value type="int" key="CMake.Configure.BaseEnvironment">2</value>
<value type="bool" key="CMake.Configure.ClearSystemEnvironment">false</value> <value type="bool" key="CMake.Configure.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="CMake.Configure.UserEnvironmentChanges"/> <valuelist type="QVariantList" key="CMake.Configure.UserEnvironmentChanges"/>
<value type="QString" key="CMake.Initial.Parameters">-DCMAKE_GENERATOR:STRING=Ninja <value type="QString" key="CMake.Initial.Parameters">-DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG}
-DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable}
-DCMAKE_PROJECT_INCLUDE_BEFORE:FILEPATH=%{BuildConfig:BuildDirectory:NativeFilePath}/.qtc/package-manager/auto-setup.cmake -DCMAKE_PROJECT_INCLUDE_BEFORE:FILEPATH=%{BuildConfig:BuildDirectory:NativeFilePath}/.qtc/package-manager/auto-setup.cmake
-DCMAKE_PREFIX_PATH:PATH=%{Qt:QT_INSTALL_PREFIX} -DCMAKE_PREFIX_PATH:PATH=%{Qt:QT_INSTALL_PREFIX}
-DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG} -DCMAKE_GENERATOR:STRING=Ninja
-DCMAKE_BUILD_TYPE:STRING=Debug
-DCMAKE_CXX_COMPILER:FILEPATH=%{Compiler:Executable:Cxx} -DCMAKE_CXX_COMPILER:FILEPATH=%{Compiler:Executable:Cxx}
-DCMAKE_C_COMPILER:FILEPATH=%{Compiler:Executable:C}</value> -DCMAKE_BUILD_TYPE:STRING=Debug
<value type="int" key="EnableQmlDebugging">0</value> -DCMAKE_C_COMPILER:FILEPATH=%{Compiler:Executable:C}
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:\Projects\QTProjects\FemaLocalSoftware\build\Desktop_Qt_6_8_1_MinGW_64_bit-Debug</value> -DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable}</value>
<value type="int" key="EnableQmlDebugging">1</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">E:\projects\FemaLocalSoftware\build\Desktop_Qt_6_8_1_MinGW_64_bit-Debug</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0"> <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0"> <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.BuildPreset"></value> <value type="QString" key="CMakeProjectManager.MakeStep.BuildPreset"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets"> <valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">FemaSoftware</value> <value type="QString">all</value>
</valuelist> </valuelist>
<value type="bool" key="CMakeProjectManager.MakeStep.ClearSystemEnvironment">false</value> <value type="bool" key="CMakeProjectManager.MakeStep.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.UserEnvironmentChanges"/> <valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.UserEnvironmentChanges"/>
@ -160,15 +160,15 @@
<value type="int" key="CMake.Configure.BaseEnvironment">2</value> <value type="int" key="CMake.Configure.BaseEnvironment">2</value>
<value type="bool" key="CMake.Configure.ClearSystemEnvironment">false</value> <value type="bool" key="CMake.Configure.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="CMake.Configure.UserEnvironmentChanges"/> <valuelist type="QVariantList" key="CMake.Configure.UserEnvironmentChanges"/>
<value type="QString" key="CMake.Initial.Parameters">-DCMAKE_GENERATOR:STRING=Ninja <value type="QString" key="CMake.Initial.Parameters">-DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG}
-DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable}
-DCMAKE_PROJECT_INCLUDE_BEFORE:FILEPATH=%{BuildConfig:BuildDirectory:NativeFilePath}/.qtc/package-manager/auto-setup.cmake -DCMAKE_PROJECT_INCLUDE_BEFORE:FILEPATH=%{BuildConfig:BuildDirectory:NativeFilePath}/.qtc/package-manager/auto-setup.cmake
-DCMAKE_PREFIX_PATH:PATH=%{Qt:QT_INSTALL_PREFIX} -DCMAKE_PREFIX_PATH:PATH=%{Qt:QT_INSTALL_PREFIX}
-DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG} -DCMAKE_GENERATOR:STRING=Ninja
-DCMAKE_BUILD_TYPE:STRING=Release
-DCMAKE_CXX_COMPILER:FILEPATH=%{Compiler:Executable:Cxx} -DCMAKE_CXX_COMPILER:FILEPATH=%{Compiler:Executable:Cxx}
-DCMAKE_C_COMPILER:FILEPATH=%{Compiler:Executable:C}</value> -DCMAKE_BUILD_TYPE:STRING=Release
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:\Projects\QTProjects\FemaLocalSoftware\build\Desktop_Qt_6_8_1_MinGW_64_bit-Release</value> -DCMAKE_C_COMPILER:FILEPATH=%{Compiler:Executable:C}
-DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable}</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">E:\projects\FemaLocalSoftware\build\Desktop_Qt_6_8_1_MinGW_64_bit-Release</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0"> <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0"> <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.BuildPreset"></value> <value type="QString" key="CMakeProjectManager.MakeStep.BuildPreset"></value>
@ -178,7 +178,6 @@
<value type="bool" key="CMakeProjectManager.MakeStep.ClearSystemEnvironment">false</value> <value type="bool" key="CMakeProjectManager.MakeStep.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.UserEnvironmentChanges"/> <valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.UserEnvironmentChanges"/>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value> <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap> </valuemap>
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">1</value> <value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
@ -195,7 +194,6 @@
<value type="bool" key="CMakeProjectManager.MakeStep.ClearSystemEnvironment">false</value> <value type="bool" key="CMakeProjectManager.MakeStep.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.UserEnvironmentChanges"/> <valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.UserEnvironmentChanges"/>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value> <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value> <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap> </valuemap>
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">1</value> <value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
@ -216,15 +214,15 @@
<value type="int" key="CMake.Configure.BaseEnvironment">2</value> <value type="int" key="CMake.Configure.BaseEnvironment">2</value>
<value type="bool" key="CMake.Configure.ClearSystemEnvironment">false</value> <value type="bool" key="CMake.Configure.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="CMake.Configure.UserEnvironmentChanges"/> <valuelist type="QVariantList" key="CMake.Configure.UserEnvironmentChanges"/>
<value type="QString" key="CMake.Initial.Parameters">-DCMAKE_GENERATOR:STRING=Ninja <value type="QString" key="CMake.Initial.Parameters">-DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG}
-DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable}
-DCMAKE_PROJECT_INCLUDE_BEFORE:FILEPATH=%{BuildConfig:BuildDirectory:NativeFilePath}/.qtc/package-manager/auto-setup.cmake -DCMAKE_PROJECT_INCLUDE_BEFORE:FILEPATH=%{BuildConfig:BuildDirectory:NativeFilePath}/.qtc/package-manager/auto-setup.cmake
-DCMAKE_PREFIX_PATH:PATH=%{Qt:QT_INSTALL_PREFIX} -DCMAKE_PREFIX_PATH:PATH=%{Qt:QT_INSTALL_PREFIX}
-DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG} -DCMAKE_GENERATOR:STRING=Ninja
-DCMAKE_BUILD_TYPE:STRING=RelWithDebInfo
-DCMAKE_CXX_COMPILER:FILEPATH=%{Compiler:Executable:Cxx} -DCMAKE_CXX_COMPILER:FILEPATH=%{Compiler:Executable:Cxx}
-DCMAKE_C_COMPILER:FILEPATH=%{Compiler:Executable:C}</value> -DCMAKE_BUILD_TYPE:STRING=RelWithDebInfo
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:\Projects\QTProjects\FemaLocalSoftware\build\Desktop_Qt_6_8_1_MinGW_64_bit-RelWithDebInfo</value> -DCMAKE_C_COMPILER:FILEPATH=%{Compiler:Executable:C}
-DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable}</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">E:\projects\FemaLocalSoftware\build\Desktop_Qt_6_8_1_MinGW_64_bit-RelWithDebInfo</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0"> <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0"> <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.BuildPreset"></value> <value type="QString" key="CMakeProjectManager.MakeStep.BuildPreset"></value>
@ -270,16 +268,16 @@
<value type="int" key="CMake.Configure.BaseEnvironment">2</value> <value type="int" key="CMake.Configure.BaseEnvironment">2</value>
<value type="bool" key="CMake.Configure.ClearSystemEnvironment">false</value> <value type="bool" key="CMake.Configure.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="CMake.Configure.UserEnvironmentChanges"/> <valuelist type="QVariantList" key="CMake.Configure.UserEnvironmentChanges"/>
<value type="QString" key="CMake.Initial.Parameters">-DCMAKE_GENERATOR:STRING=Ninja <value type="QString" key="CMake.Initial.Parameters">-DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG}
-DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable}
-DCMAKE_PROJECT_INCLUDE_BEFORE:FILEPATH=%{BuildConfig:BuildDirectory:NativeFilePath}/.qtc/package-manager/auto-setup.cmake -DCMAKE_PROJECT_INCLUDE_BEFORE:FILEPATH=%{BuildConfig:BuildDirectory:NativeFilePath}/.qtc/package-manager/auto-setup.cmake
-DCMAKE_PREFIX_PATH:PATH=%{Qt:QT_INSTALL_PREFIX} -DCMAKE_PREFIX_PATH:PATH=%{Qt:QT_INSTALL_PREFIX}
-DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG} -DCMAKE_GENERATOR:STRING=Ninja
-DCMAKE_BUILD_TYPE:STRING=RelWithDebInfo
-DCMAKE_CXX_COMPILER:FILEPATH=%{Compiler:Executable:Cxx} -DCMAKE_CXX_COMPILER:FILEPATH=%{Compiler:Executable:Cxx}
-DCMAKE_C_COMPILER:FILEPATH=%{Compiler:Executable:C}</value> -DCMAKE_BUILD_TYPE:STRING=RelWithDebInfo
-DCMAKE_C_COMPILER:FILEPATH=%{Compiler:Executable:C}
-DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable}</value>
<value type="int" key="EnableQmlDebugging">0</value> <value type="int" key="EnableQmlDebugging">0</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:\Projects\QTProjects\FemaLocalSoftware\build\Desktop_Qt_6_8_1_MinGW_64_bit-Profile</value> <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">E:\projects\FemaLocalSoftware\build\Desktop_Qt_6_8_1_MinGW_64_bit-Profile</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0"> <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0"> <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.BuildPreset"></value> <value type="QString" key="CMakeProjectManager.MakeStep.BuildPreset"></value>
@ -325,724 +323,15 @@
<value type="int" key="CMake.Configure.BaseEnvironment">2</value> <value type="int" key="CMake.Configure.BaseEnvironment">2</value>
<value type="bool" key="CMake.Configure.ClearSystemEnvironment">false</value> <value type="bool" key="CMake.Configure.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="CMake.Configure.UserEnvironmentChanges"/> <valuelist type="QVariantList" key="CMake.Configure.UserEnvironmentChanges"/>
<value type="QString" key="CMake.Initial.Parameters">-DCMAKE_GENERATOR:STRING=Ninja <value type="QString" key="CMake.Initial.Parameters">-DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG}
-DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable}
-DCMAKE_PROJECT_INCLUDE_BEFORE:FILEPATH=%{BuildConfig:BuildDirectory:NativeFilePath}/.qtc/package-manager/auto-setup.cmake -DCMAKE_PROJECT_INCLUDE_BEFORE:FILEPATH=%{BuildConfig:BuildDirectory:NativeFilePath}/.qtc/package-manager/auto-setup.cmake
-DCMAKE_PREFIX_PATH:PATH=%{Qt:QT_INSTALL_PREFIX} -DCMAKE_PREFIX_PATH:PATH=%{Qt:QT_INSTALL_PREFIX}
-DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG} -DCMAKE_GENERATOR:STRING=Ninja
-DCMAKE_BUILD_TYPE:STRING=MinSizeRel
-DCMAKE_CXX_COMPILER:FILEPATH=%{Compiler:Executable:Cxx} -DCMAKE_CXX_COMPILER:FILEPATH=%{Compiler:Executable:Cxx}
-DCMAKE_C_COMPILER:FILEPATH=%{Compiler:Executable:C}</value> -DCMAKE_BUILD_TYPE:STRING=MinSizeRel
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:\Projects\QTProjects\FemaLocalSoftware\build\Desktop_Qt_6_8_1_MinGW_64_bit-MinSizeRel</value> -DCMAKE_C_COMPILER:FILEPATH=%{Compiler:Executable:C}
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0"> -DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable}</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0"> <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">E:\projects\FemaLocalSoftware\build\Desktop_Qt_6_8_1_MinGW_64_bit-MinSizeRel</value>
<value type="QString" key="CMakeProjectManager.MakeStep.BuildPreset"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">all</value>
</valuelist>
<value type="bool" key="CMakeProjectManager.MakeStep.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.UserEnvironmentChanges"/>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.BuildPreset"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">clean</value>
</valuelist>
<value type="bool" key="CMakeProjectManager.MakeStep.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.UserEnvironmentChanges"/>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.CustomParsers"/>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ParseStandardOutput">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Minimum Size Release</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeBuildConfiguration</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.Target.BuildConfigurationCount">5</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Deploy</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
<valuemap type="QVariantMap" key="ProjectExplorer.DeployConfiguration.CustomData"/>
<value type="bool" key="ProjectExplorer.DeployConfiguration.CustomDataEnabled">false</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.BuildPreset"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString"></value>
</valuelist>
<value type="bool" key="CMakeProjectManager.MakeStep.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.UserEnvironmentChanges"/>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ApplicationManagerPlugin.Deploy.CMakePackageStep</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
<value type="QString" key="ApplicationManagerPlugin.Deploy.InstallPackageStep.Arguments">install-package --acknowledge</value>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Install Application Manager package</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ApplicationManagerPlugin.Deploy.InstallPackageStep</value>
<valuelist type="QVariantList" key="ProjectExplorer.RunConfiguration.LastDeployedFiles"/>
<valuelist type="QVariantList" key="ProjectExplorer.RunConfiguration.LastDeployedHosts"/>
<valuelist type="QVariantList" key="ProjectExplorer.RunConfiguration.LastDeployedRemotePaths"/>
<valuelist type="QVariantList" key="ProjectExplorer.RunConfiguration.LastDeployedSysroots"/>
<valuelist type="QVariantList" key="RemoteLinux.LastDeployedLocalTimes"/>
<valuelist type="QVariantList" key="RemoteLinux.LastDeployedRemoteTimes"/>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Deploy</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
<valuemap type="QVariantMap" key="ProjectExplorer.DeployConfiguration.CustomData"/>
<value type="bool" key="ProjectExplorer.DeployConfiguration.CustomDataEnabled">false</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ApplicationManagerPlugin.Deploy.Configuration</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.Target.DeployConfigurationCount">2</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
<value type="bool" key="Analyzer.Perf.Settings.UseGlobalSettings">true</value>
<value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
<value type="int" key="Analyzer.Valgrind.Callgrind.CostFormat">0</value>
<value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
<valuelist type="QVariantList" key="CustomOutputParsers"/>
<value type="int" key="PE.EnvironmentAspect.Base">2</value>
<valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
<value type="bool" key="PE.EnvironmentAspect.PrintOnRun">false</value>
<value type="QString" key="PerfRecordArgsId">-e cpu-cycles --call-graph &quot;dwarf,4096&quot; -F 250</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">FemaSoftware</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeRunConfiguration.</value>
<value type="QString" key="ProjectExplorer.RunConfiguration.BuildKey">FemaSoftware</value>
<value type="bool" key="ProjectExplorer.RunConfiguration.Customized">false</value>
<value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
<value type="bool" key="RunConfiguration.UseLibrarySearchPath">true</value>
<value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
<value type="QString" key="RunConfiguration.WorkingDirectory.default">D:/Projects/QTProjects/FemaLocalSoftware/build/Desktop_Qt_6_8_1_MinGW_64_bit-Debug</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.Target.1</variable>
<valuemap type="QVariantMap">
<value type="QString" key="DeviceType">Desktop</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop Qt 6.8.1 MSVC2022 64bit</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop Qt 6.8.1 MSVC2022 64bit</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">qt.qt6.681.win64_msvc2022_64_kit</value>
<value type="qlonglong" key="ProjectExplorer.Target.ActiveBuildConfiguration">1</value>
<value type="qlonglong" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
<value type="qlonglong" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
<value type="QString" key="CMake.Build.Type">Debug</value>
<value type="int" key="CMake.Configure.BaseEnvironment">2</value>
<value type="bool" key="CMake.Configure.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="CMake.Configure.UserEnvironmentChanges"/>
<value type="QString" key="CMake.Initial.Parameters">-DCMAKE_GENERATOR:STRING=Ninja
-DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable}
-DCMAKE_PROJECT_INCLUDE_BEFORE:FILEPATH=%{BuildConfig:BuildDirectory:NativeFilePath}/.qtc/package-manager/auto-setup.cmake
-DCMAKE_PREFIX_PATH:PATH=%{Qt:QT_INSTALL_PREFIX}
-DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG}
-DCMAKE_BUILD_TYPE:STRING=Debug
-DCMAKE_CXX_COMPILER:FILEPATH=%{Compiler:Executable:Cxx}
-DCMAKE_C_COMPILER:FILEPATH=%{Compiler:Executable:C}</value>
<value type="int" key="EnableQmlDebugging">0</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:\Projects\QTProjects\FemaLocalSoftware\build\Desktop_Qt_6_8_1_MSVC2022_64bit-Debug</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.BuildPreset"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">all</value>
</valuelist>
<value type="bool" key="CMakeProjectManager.MakeStep.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.UserEnvironmentChanges"/>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.BuildPreset"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">clean</value>
</valuelist>
<value type="bool" key="CMakeProjectManager.MakeStep.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.UserEnvironmentChanges"/>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.CustomParsers"/>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ParseStandardOutput">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Debug</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeBuildConfiguration</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
<value type="QString" key="CMake.Build.Type">Release</value>
<value type="int" key="CMake.Configure.BaseEnvironment">2</value>
<value type="bool" key="CMake.Configure.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="CMake.Configure.UserEnvironmentChanges"/>
<value type="QString" key="CMake.Initial.Parameters">-DCMAKE_GENERATOR:STRING=Ninja
-DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable}
-DCMAKE_PROJECT_INCLUDE_BEFORE:FILEPATH=%{BuildConfig:BuildDirectory:NativeFilePath}/.qtc/package-manager/auto-setup.cmake
-DCMAKE_PREFIX_PATH:PATH=%{Qt:QT_INSTALL_PREFIX}
-DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG}
-DCMAKE_BUILD_TYPE:STRING=Release
-DCMAKE_CXX_COMPILER:FILEPATH=%{Compiler:Executable:Cxx}
-DCMAKE_C_COMPILER:FILEPATH=%{Compiler:Executable:C}</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:\Projects\QTProjects\FemaLocalSoftware\build\Desktop_Qt_6_8_1_MSVC2022_64bit-Release</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.BuildPreset"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">all</value>
</valuelist>
<value type="bool" key="CMakeProjectManager.MakeStep.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.UserEnvironmentChanges"/>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.BuildPreset"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">clean</value>
</valuelist>
<value type="bool" key="CMakeProjectManager.MakeStep.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.UserEnvironmentChanges"/>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.CustomParsers"/>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ParseStandardOutput">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Release</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeBuildConfiguration</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.2">
<value type="QString" key="CMake.Build.Type">RelWithDebInfo</value>
<value type="int" key="CMake.Configure.BaseEnvironment">2</value>
<value type="bool" key="CMake.Configure.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="CMake.Configure.UserEnvironmentChanges"/>
<value type="QString" key="CMake.Initial.Parameters">-DCMAKE_GENERATOR:STRING=Ninja
-DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable}
-DCMAKE_PROJECT_INCLUDE_BEFORE:FILEPATH=%{BuildConfig:BuildDirectory:NativeFilePath}/.qtc/package-manager/auto-setup.cmake
-DCMAKE_PREFIX_PATH:PATH=%{Qt:QT_INSTALL_PREFIX}
-DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG}
-DCMAKE_BUILD_TYPE:STRING=RelWithDebInfo
-DCMAKE_CXX_COMPILER:FILEPATH=%{Compiler:Executable:Cxx}
-DCMAKE_C_COMPILER:FILEPATH=%{Compiler:Executable:C}</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:\Projects\QTProjects\FemaLocalSoftware\build\Desktop_Qt_6_8_1_MSVC2022_64bit-RelWithDebInfo</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.BuildPreset"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">all</value>
</valuelist>
<value type="bool" key="CMakeProjectManager.MakeStep.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.UserEnvironmentChanges"/>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.BuildPreset"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">clean</value>
</valuelist>
<value type="bool" key="CMakeProjectManager.MakeStep.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.UserEnvironmentChanges"/>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.CustomParsers"/>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ParseStandardOutput">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Release with Debug Information</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeBuildConfiguration</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.3">
<value type="QString" key="CMake.Build.Type">RelWithDebInfo</value>
<value type="int" key="CMake.Configure.BaseEnvironment">2</value>
<value type="bool" key="CMake.Configure.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="CMake.Configure.UserEnvironmentChanges"/>
<value type="QString" key="CMake.Initial.Parameters">-DCMAKE_GENERATOR:STRING=Ninja
-DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable}
-DCMAKE_PROJECT_INCLUDE_BEFORE:FILEPATH=%{BuildConfig:BuildDirectory:NativeFilePath}/.qtc/package-manager/auto-setup.cmake
-DCMAKE_PREFIX_PATH:PATH=%{Qt:QT_INSTALL_PREFIX}
-DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG}
-DCMAKE_BUILD_TYPE:STRING=RelWithDebInfo
-DCMAKE_CXX_COMPILER:FILEPATH=%{Compiler:Executable:Cxx}
-DCMAKE_C_COMPILER:FILEPATH=%{Compiler:Executable:C}</value>
<value type="int" key="EnableQmlDebugging">0</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:\Projects\QTProjects\FemaLocalSoftware\build\Desktop_Qt_6_8_1_MSVC2022_64bit-Profile</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.BuildPreset"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">all</value>
</valuelist>
<value type="bool" key="CMakeProjectManager.MakeStep.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.UserEnvironmentChanges"/>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.BuildPreset"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">clean</value>
</valuelist>
<value type="bool" key="CMakeProjectManager.MakeStep.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.UserEnvironmentChanges"/>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.CustomParsers"/>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ParseStandardOutput">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Profile</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeBuildConfiguration</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.4">
<value type="QString" key="CMake.Build.Type">MinSizeRel</value>
<value type="int" key="CMake.Configure.BaseEnvironment">2</value>
<value type="bool" key="CMake.Configure.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="CMake.Configure.UserEnvironmentChanges"/>
<value type="QString" key="CMake.Initial.Parameters">-DCMAKE_GENERATOR:STRING=Ninja
-DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable}
-DCMAKE_PROJECT_INCLUDE_BEFORE:FILEPATH=%{BuildConfig:BuildDirectory:NativeFilePath}/.qtc/package-manager/auto-setup.cmake
-DCMAKE_PREFIX_PATH:PATH=%{Qt:QT_INSTALL_PREFIX}
-DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG}
-DCMAKE_BUILD_TYPE:STRING=MinSizeRel
-DCMAKE_CXX_COMPILER:FILEPATH=%{Compiler:Executable:Cxx}
-DCMAKE_C_COMPILER:FILEPATH=%{Compiler:Executable:C}</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:\Projects\QTProjects\FemaLocalSoftware\build\Desktop_Qt_6_8_1_MSVC2022_64bit-MinSizeRel</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.BuildPreset"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">all</value>
</valuelist>
<value type="bool" key="CMakeProjectManager.MakeStep.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.UserEnvironmentChanges"/>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.BuildPreset"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">clean</value>
</valuelist>
<value type="bool" key="CMakeProjectManager.MakeStep.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.UserEnvironmentChanges"/>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.CustomParsers"/>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ParseStandardOutput">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Minimum Size Release</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeBuildConfiguration</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.Target.BuildConfigurationCount">5</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Deploy</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
<valuemap type="QVariantMap" key="ProjectExplorer.DeployConfiguration.CustomData"/>
<value type="bool" key="ProjectExplorer.DeployConfiguration.CustomDataEnabled">false</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.BuildPreset"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString"></value>
</valuelist>
<value type="bool" key="CMakeProjectManager.MakeStep.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.UserEnvironmentChanges"/>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ApplicationManagerPlugin.Deploy.CMakePackageStep</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
<value type="QString" key="ApplicationManagerPlugin.Deploy.InstallPackageStep.Arguments">install-package --acknowledge</value>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Install Application Manager package</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ApplicationManagerPlugin.Deploy.InstallPackageStep</value>
<valuelist type="QVariantList" key="ProjectExplorer.RunConfiguration.LastDeployedFiles"/>
<valuelist type="QVariantList" key="ProjectExplorer.RunConfiguration.LastDeployedHosts"/>
<valuelist type="QVariantList" key="ProjectExplorer.RunConfiguration.LastDeployedRemotePaths"/>
<valuelist type="QVariantList" key="ProjectExplorer.RunConfiguration.LastDeployedSysroots"/>
<valuelist type="QVariantList" key="RemoteLinux.LastDeployedLocalTimes"/>
<valuelist type="QVariantList" key="RemoteLinux.LastDeployedRemoteTimes"/>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Deploy</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
<valuemap type="QVariantMap" key="ProjectExplorer.DeployConfiguration.CustomData"/>
<value type="bool" key="ProjectExplorer.DeployConfiguration.CustomDataEnabled">false</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ApplicationManagerPlugin.Deploy.Configuration</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.Target.DeployConfigurationCount">2</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
<value type="bool" key="Analyzer.Perf.Settings.UseGlobalSettings">true</value>
<value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
<value type="int" key="Analyzer.Valgrind.Callgrind.CostFormat">0</value>
<value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
<valuelist type="QVariantList" key="CustomOutputParsers"/>
<value type="int" key="PE.EnvironmentAspect.Base">2</value>
<valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
<value type="bool" key="PE.EnvironmentAspect.PrintOnRun">false</value>
<value type="QString" key="PerfRecordArgsId">-e cpu-cycles --call-graph &quot;dwarf,4096&quot; -F 250</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">FemaSoftware</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeRunConfiguration.</value>
<value type="QString" key="ProjectExplorer.RunConfiguration.BuildKey">FemaSoftware</value>
<value type="bool" key="ProjectExplorer.RunConfiguration.Customized">false</value>
<value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
<value type="bool" key="RunConfiguration.UseLibrarySearchPath">true</value>
<value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.Target.2</variable>
<valuemap type="QVariantMap">
<value type="QString" key="DeviceType">Desktop</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop Qt 6.8.1 llvm-mingw 64-bit</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop Qt 6.8.1 llvm-mingw 64-bit</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">qt.qt6.681.win64_llvm_mingw_kit</value>
<value type="qlonglong" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
<value type="qlonglong" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
<value type="qlonglong" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
<value type="QString" key="CMake.Build.Type">Debug</value>
<value type="int" key="CMake.Configure.BaseEnvironment">2</value>
<value type="bool" key="CMake.Configure.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="CMake.Configure.UserEnvironmentChanges"/>
<value type="QString" key="CMake.Initial.Parameters">-DCMAKE_GENERATOR:STRING=Ninja
-DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable}
-DCMAKE_PROJECT_INCLUDE_BEFORE:FILEPATH=%{BuildConfig:BuildDirectory:NativeFilePath}/.qtc/package-manager/auto-setup.cmake
-DCMAKE_PREFIX_PATH:PATH=%{Qt:QT_INSTALL_PREFIX}
-DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG}
-DCMAKE_BUILD_TYPE:STRING=Debug
-DCMAKE_CXX_COMPILER:FILEPATH=%{Compiler:Executable:Cxx}
-DCMAKE_C_COMPILER:FILEPATH=%{Compiler:Executable:C}</value>
<value type="int" key="EnableQmlDebugging">0</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:\Projects\QTProjects\FemaLocalSoftware\build\Desktop_Qt_6_8_1_llvm_mingw_64_bit-Debug</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.BuildPreset"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">all</value>
</valuelist>
<value type="bool" key="CMakeProjectManager.MakeStep.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.UserEnvironmentChanges"/>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.BuildPreset"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">clean</value>
</valuelist>
<value type="bool" key="CMakeProjectManager.MakeStep.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.UserEnvironmentChanges"/>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.CustomParsers"/>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ParseStandardOutput">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Debug</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeBuildConfiguration</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
<value type="QString" key="CMake.Build.Type">Release</value>
<value type="int" key="CMake.Configure.BaseEnvironment">2</value>
<value type="bool" key="CMake.Configure.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="CMake.Configure.UserEnvironmentChanges"/>
<value type="QString" key="CMake.Initial.Parameters">-DCMAKE_GENERATOR:STRING=Ninja
-DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable}
-DCMAKE_PROJECT_INCLUDE_BEFORE:FILEPATH=%{BuildConfig:BuildDirectory:NativeFilePath}/.qtc/package-manager/auto-setup.cmake
-DCMAKE_PREFIX_PATH:PATH=%{Qt:QT_INSTALL_PREFIX}
-DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG}
-DCMAKE_BUILD_TYPE:STRING=Release
-DCMAKE_CXX_COMPILER:FILEPATH=%{Compiler:Executable:Cxx}
-DCMAKE_C_COMPILER:FILEPATH=%{Compiler:Executable:C}</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:\Projects\QTProjects\FemaLocalSoftware\build\Desktop_Qt_6_8_1_llvm_mingw_64_bit-Release</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.BuildPreset"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">all</value>
</valuelist>
<value type="bool" key="CMakeProjectManager.MakeStep.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.UserEnvironmentChanges"/>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.BuildPreset"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">clean</value>
</valuelist>
<value type="bool" key="CMakeProjectManager.MakeStep.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.UserEnvironmentChanges"/>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.CustomParsers"/>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ParseStandardOutput">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Release</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeBuildConfiguration</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.2">
<value type="QString" key="CMake.Build.Type">RelWithDebInfo</value>
<value type="int" key="CMake.Configure.BaseEnvironment">2</value>
<value type="bool" key="CMake.Configure.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="CMake.Configure.UserEnvironmentChanges"/>
<value type="QString" key="CMake.Initial.Parameters">-DCMAKE_GENERATOR:STRING=Ninja
-DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable}
-DCMAKE_PROJECT_INCLUDE_BEFORE:FILEPATH=%{BuildConfig:BuildDirectory:NativeFilePath}/.qtc/package-manager/auto-setup.cmake
-DCMAKE_PREFIX_PATH:PATH=%{Qt:QT_INSTALL_PREFIX}
-DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG}
-DCMAKE_BUILD_TYPE:STRING=RelWithDebInfo
-DCMAKE_CXX_COMPILER:FILEPATH=%{Compiler:Executable:Cxx}
-DCMAKE_C_COMPILER:FILEPATH=%{Compiler:Executable:C}</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:\Projects\QTProjects\FemaLocalSoftware\build\Desktop_Qt_6_8_1_llvm_mingw_64_bit-RelWithDebInfo</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.BuildPreset"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">all</value>
</valuelist>
<value type="bool" key="CMakeProjectManager.MakeStep.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.UserEnvironmentChanges"/>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.BuildPreset"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">clean</value>
</valuelist>
<value type="bool" key="CMakeProjectManager.MakeStep.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.UserEnvironmentChanges"/>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.CustomParsers"/>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ParseStandardOutput">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Release with Debug Information</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeBuildConfiguration</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.3">
<value type="QString" key="CMake.Build.Type">RelWithDebInfo</value>
<value type="int" key="CMake.Configure.BaseEnvironment">2</value>
<value type="bool" key="CMake.Configure.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="CMake.Configure.UserEnvironmentChanges"/>
<value type="QString" key="CMake.Initial.Parameters">-DCMAKE_GENERATOR:STRING=Ninja
-DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable}
-DCMAKE_PROJECT_INCLUDE_BEFORE:FILEPATH=%{BuildConfig:BuildDirectory:NativeFilePath}/.qtc/package-manager/auto-setup.cmake
-DCMAKE_PREFIX_PATH:PATH=%{Qt:QT_INSTALL_PREFIX}
-DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG}
-DCMAKE_BUILD_TYPE:STRING=RelWithDebInfo
-DCMAKE_CXX_COMPILER:FILEPATH=%{Compiler:Executable:Cxx}
-DCMAKE_C_COMPILER:FILEPATH=%{Compiler:Executable:C}</value>
<value type="int" key="EnableQmlDebugging">0</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:\Projects\QTProjects\FemaLocalSoftware\build\Desktop_Qt_6_8_1_llvm_mingw_64_bit-Profile</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.BuildPreset"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">all</value>
</valuelist>
<value type="bool" key="CMakeProjectManager.MakeStep.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.UserEnvironmentChanges"/>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Build</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.BuildPreset"></value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.BuildTargets">
<value type="QString">clean</value>
</valuelist>
<value type="bool" key="CMakeProjectManager.MakeStep.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="CMakeProjectManager.MakeStep.UserEnvironmentChanges"/>
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.MakeStep</value>
</valuemap>
<value type="qlonglong" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Clean</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.CustomParsers"/>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ParseStandardOutput">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Profile</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">CMakeProjectManager.CMakeBuildConfiguration</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.4">
<value type="QString" key="CMake.Build.Type">MinSizeRel</value>
<value type="int" key="CMake.Configure.BaseEnvironment">2</value>
<value type="bool" key="CMake.Configure.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="CMake.Configure.UserEnvironmentChanges"/>
<value type="QString" key="CMake.Initial.Parameters">-DCMAKE_GENERATOR:STRING=Ninja
-DQT_QMAKE_EXECUTABLE:FILEPATH=%{Qt:qmakeExecutable}
-DCMAKE_PROJECT_INCLUDE_BEFORE:FILEPATH=%{BuildConfig:BuildDirectory:NativeFilePath}/.qtc/package-manager/auto-setup.cmake
-DCMAKE_PREFIX_PATH:PATH=%{Qt:QT_INSTALL_PREFIX}
-DCMAKE_CXX_FLAGS_INIT:STRING=%{Qt:QML_DEBUG_FLAG}
-DCMAKE_BUILD_TYPE:STRING=MinSizeRel
-DCMAKE_CXX_COMPILER:FILEPATH=%{Compiler:Executable:Cxx}
-DCMAKE_C_COMPILER:FILEPATH=%{Compiler:Executable:C}</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">D:\Projects\QTProjects\FemaLocalSoftware\build\Desktop_Qt_6_8_1_llvm_mingw_64_bit-MinSizeRel</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0"> <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0"> <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="QString" key="CMakeProjectManager.MakeStep.BuildPreset"></value> <value type="QString" key="CMakeProjectManager.MakeStep.BuildPreset"></value>
@ -1148,13 +437,14 @@
<value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value> <value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
<value type="bool" key="RunConfiguration.UseLibrarySearchPath">true</value> <value type="bool" key="RunConfiguration.UseLibrarySearchPath">true</value>
<value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value> <value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
<value type="QString" key="RunConfiguration.WorkingDirectory.default">E:/projects/FemaLocalSoftware/build/Desktop_Qt_6_8_1_MinGW_64_bit-Debug</value>
</valuemap> </valuemap>
<value type="qlonglong" key="ProjectExplorer.Target.RunConfigurationCount">1</value> <value type="qlonglong" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
</valuemap> </valuemap>
</data> </data>
<data> <data>
<variable>ProjectExplorer.Project.TargetCount</variable> <variable>ProjectExplorer.Project.TargetCount</variable>
<value type="qlonglong">3</value> <value type="qlonglong">1</value>
</data> </data>
<data> <data>
<variable>ProjectExplorer.Project.Updater.FileVersion</variable> <variable>ProjectExplorer.Project.Updater.FileVersion</variable>

1167
CMakeLists.txt.user.0f80b2d Normal file

File diff suppressed because it is too large Load Diff

View File

@ -1,22 +1,44 @@
#ifndef ALARM_R_H #ifndef ALARM_R_H
#define ALARM_R_H #define ALARM_R_H
#include <QString>
#include <QJsonObject>
#include <QJsonDocument> #include <QJsonDocument>
#include <QJsonObject>
#include <QString>
class AlarmR { class AlarmR
{
public: public:
AlarmR() = default; AlarmR() = default;
AlarmR(const QString& endTime, const QString& mark, const QString& sensorGroup, AlarmR(const QString &endTime,
const QString& sensorId, const QString& serial, const QString& startTime) const QString &mark,
: end_time(endTime), mark(mark), sensor_group(sensorGroup), sensor_id(sensorId), const QString &sensorGroup,
serial(serial), start_time(startTime) {} const QString &sensorId,
const QString &serial,
const QString &startTime)
: end_time(endTime)
, mark(mark)
, sensor_group(sensorGroup)
, sensor_id(sensorId)
, serial(serial)
, start_time(startTime)
{}
void parseResponse(const QJsonObject& json) { void parseResponse(const QJsonObject &json)
if (json.contains("end_time") && json["end_time"].isString()) { {
end_time = json["end_time"].toString(); if (json["start_time"].isDouble()) {
start_time = QString::number(static_cast<qint64>(json["start_time"].toDouble()));
qint64 unixTime = static_cast<qint64>(json["start_time"].toDouble());
QDateTime dateTime = QDateTime::fromSecsSinceEpoch(unixTime);
start_time = dateTime.toString("dd.MM.yyyy HH:mm");
}
if (json.contains("end_time") && json["end_time"].isDouble()) {
end_time = QString::number(static_cast<qint64>(json["end_time"].toDouble()));
qint64 unixTime = static_cast<qint64>(json["end_time"].toDouble());
QDateTime dateTime = QDateTime::fromSecsSinceEpoch(unixTime);
end_time = dateTime.toString("dd.MM.yyyy HH:mm");
} else {
end_time.clear();
} }
if (json.contains("mark") && json["mark"].isString()) { if (json.contains("mark") && json["mark"].isString()) {
mark = json["mark"].toString(); mark = json["mark"].toString();
@ -30,9 +52,6 @@ public:
if (json.contains("serial") && json["serial"].isString()) { if (json.contains("serial") && json["serial"].isString()) {
serial = json["serial"].toString(); serial = json["serial"].toString();
} }
if (json.contains("start_time") && json["start_time"].isString()) {
start_time = json["start_time"].toString();
}
} }
QString getEndTime() const { return end_time; } QString getEndTime() const { return end_time; }

View File

@ -1,11 +1,88 @@
#include "alarmdialog.h" #include "alarmdialog.h"
#include "ui_alarmdialog.h" #include "ui_alarmdialog.h"
#include "qcustomplot.h"
alarmdialog::alarmdialog(QWidget *parent) #include <QGeoCoordinate>
: QWidget(parent) #include <QQmlContext>
#include <QColor>
alarmdialog::alarmdialog(QDialog *parent,
const QString &sensorId,
const QString &sensorName,
const QString &group,
const QString &dateStart,
const QString &dateEnd,
SensorService *sensorService)
: QDialog(parent)
, ui(new Ui::alarmdialog) , ui(new Ui::alarmdialog)
, _sensorService(sensorService)
{ {
ui->setupUi(this); ui->setupUi(this);
ui->nameHead->setText(sensorId);
ui->name->setText("Датчик - " + sensorName);
ui->dateStart->setText("Дата начала - " + dateStart);
if(dateEnd.isEmpty()) {
ui->dateEnd->setText("Дата конца - Инцидент еще не закончился");
} else {
ui->dateEnd->setText("Дата конца - " + dateEnd);
}
QCustomPlot *customPlot = new QCustomPlot(this);
customPlot->setFixedSize(710, 250);
ui->chartLayout->addWidget(customPlot);
qint64 start = QDateTime::fromString(dateStart, "dd.MM.yyyy HH:mm").toSecsSinceEpoch();
qint64 end = QDateTime::fromString(dateEnd, "dd.MM.yyyy HH:mm").toSecsSinceEpoch();
if(end == 0) {
end = QDateTime::currentMSecsSinceEpoch();
}
PlotData data = sensorService->getDeviceSensorData(group, sensorId, start, end);
customPlot->addGraph();
QPen pen;
pen.setColor(QColor(19, 58, 97));
pen.setWidth(2);
customPlot->graph(0)->setPen(pen);
customPlot->graph(0)->setData(data.X, data.Y);
QSharedPointer<QCPAxisTickerDateTime> dateTimeTicker(new QCPAxisTickerDateTime);
dateTimeTicker->setDateTimeFormat("HH:mm:ss dd.MM.yyyy");
customPlot->xAxis->setTicker(dateTimeTicker);
customPlot->yAxis->setRange(*std::min_element(data.Y.begin(), data.Y.end()) - 10,
*std::max_element(data.Y.begin(), data.Y.end()) + 10);
customPlot->setInteractions(QCP::iRangeDrag | QCP::iRangeZoom);
customPlot->graph(0)->rescaleAxes();
customPlot->replot();
QVariantList points = sensorService->getPoints(start, end);
if(!points.empty()) {
ui->map->rootContext()->setContextProperty("mapCenter", points[0]);
ui->map->rootContext()->setContextProperty("pointsList", points);
}
ui->map->setSource(QUrl(QStringLiteral("qrc:/qml/map.qml")));
connect(ui->cancelButton, &QPushButton::clicked, this, &alarmdialog::onCancelButtonClicked);
connect(ui->statisticButton, &QPushButton::clicked, this, &alarmdialog::onStatisticButtonClicked);
}
void alarmdialog::onCancelButtonClicked()
{
this->close();
}
void alarmdialog::onStatisticButtonClicked()
{
emit dialogClosed();
this->close();
} }
alarmdialog::~alarmdialog() alarmdialog::~alarmdialog()

View File

@ -1,22 +1,41 @@
#ifndef ALARMDIALOG_H #ifndef ALARMDIALOG_H
#define ALARMDIALOG_H #define ALARMDIALOG_H
#include <QWidget> #include "sensorservice.h"
#include <QDialog>
namespace Ui { namespace Ui {
class alarmdialog; class alarmdialog;
} }
class alarmdialog : public QWidget class alarmdialog : public QDialog
{ {
Q_OBJECT Q_OBJECT
public: public:
explicit alarmdialog(QWidget *parent = nullptr); explicit alarmdialog(QDialog *parent = nullptr,
const QString &sensorId = "",
const QString &sensorName = "",
const QString &group = "",
const QString &dateStart = "",
const QString &dateEnd = "",
SensorService *sensorService = nullptr);
~alarmdialog(); ~alarmdialog();
private: private:
Ui::alarmdialog *ui; Ui::alarmdialog *ui;
signals:
void dialogClosed();
private slots:
void onCancelButtonClicked();
void onStatisticButtonClicked();
private:
SensorService *_sensorService;
}; };
#endif // ALARMDIALOG_H #endif // ALARMDIALOG_H

View File

@ -31,6 +31,21 @@ background: white;
}</string> }</string>
</property> </property>
<layout class="QVBoxLayout" name="verticalLayout"> <layout class="QVBoxLayout" name="verticalLayout">
<property name="spacing">
<number>0</number>
</property>
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item> <item>
<layout class="QHBoxLayout" name="horizontalLayout_7"> <layout class="QHBoxLayout" name="horizontalLayout_7">
<property name="spacing"> <property name="spacing">
@ -65,7 +80,7 @@ background: white;
</widget> </widget>
</item> </item>
<item> <item>
<widget class="QLabel" name="label"> <widget class="QLabel" name="nameHead">
<property name="sizePolicy"> <property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred"> <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch> <horstretch>0</horstretch>
@ -120,75 +135,44 @@ color: #13385F;
<number>0</number> <number>0</number>
</property> </property>
<property name="leftMargin"> <property name="leftMargin">
<number>25</number>
</property>
<property name="rightMargin">
<number>25</number>
</property>
<property name="bottomMargin">
<number>15</number>
</property>
<item>
<widget class="QLabel" name="label_3">
<property name="minimumSize">
<size>
<width>0</width>
<height>27</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>27</height>
</size>
</property>
<property name="styleSheet">
<string notr="true">background: transparent;
font-family: Inter;
font-size: 22px;
font-weight: 400;
line-height: 26.63px;
text-align: left;
color: #13385F;
</string>
</property>
<property name="text">
<string>TextLabel</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_4">
<property name="spacing">
<number>0</number> <number>0</number>
</property> </property>
<property name="leftMargin">
<number>25</number>
</property>
<property name="rightMargin"> <property name="rightMargin">
<number>25</number> <number>0</number>
</property> </property>
<property name="bottomMargin"> <property name="bottomMargin">
<number>15</number> <number>0</number>
</property> </property>
<item> <item>
<widget class="QLabel" name="label_4"> <layout class="QVBoxLayout" name="verticalLayout_2">
<property name="minimumSize"> <property name="spacing">
<size> <number>0</number>
<width>0</width>
<height>27</height>
</size>
</property> </property>
<property name="maximumSize"> <property name="leftMargin">
<size> <number>25</number>
<width>16777215</width>
<height>27</height>
</size>
</property> </property>
<property name="styleSheet"> <property name="rightMargin">
<string notr="true">background: transparent; <number>25</number>
</property>
<property name="bottomMargin">
<number>15</number>
</property>
<item>
<widget class="QLabel" name="dateStart">
<property name="minimumSize">
<size>
<width>0</width>
<height>27</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>27</height>
</size>
</property>
<property name="styleSheet">
<string notr="true">background: transparent;
font-family: Inter; font-family: Inter;
font-size: 22px; font-size: 22px;
font-weight: 400; font-weight: 400;
@ -196,11 +180,36 @@ line-height: 26.63px;
text-align: left; text-align: left;
color: #13385F; color: #13385F;
</string> </string>
</property> </property>
<property name="text"> <property name="text">
<string>TextLabel</string> <string>TextLabel</string>
</property> </property>
</widget> </widget>
</item>
<item>
<widget class="QLabel" name="dateEnd">
<property name="maximumSize">
<size>
<width>16777215</width>
<height>27</height>
</size>
</property>
<property name="styleSheet">
<string notr="true">background: transparent;
font-family: Inter;
font-size: 22px;
font-weight: 400;
line-height: 26.63px;
text-align: left;
color: #13385F;
</string>
</property>
<property name="text">
<string>TextLabel</string>
</property>
</widget>
</item>
</layout>
</item> </item>
</layout> </layout>
</item> </item>
@ -219,7 +228,7 @@ color: #13385F;
<number>15</number> <number>15</number>
</property> </property>
<item> <item>
<widget class="QLabel" name="label_5"> <widget class="QLabel" name="name">
<property name="minimumSize"> <property name="minimumSize">
<size> <size>
<width>0</width> <width>0</width>
@ -274,24 +283,21 @@ color: #13385F;
<number>25</number> <number>25</number>
</property> </property>
<item> <item>
<widget class="QLabel" name="label_6"> <widget class="QQuickWidget" name="map">
<property name="minimumSize"> <property name="minimumSize">
<size> <size>
<width>710</width> <width>710</width>
<height>318</height> <height>320</height>
</size> </size>
</property> </property>
<property name="maximumSize"> <property name="maximumSize">
<size> <size>
<width>710</width> <width>710</width>
<height>318</height> <height>320</height>
</size> </size>
</property> </property>
<property name="styleSheet"> <property name="resizeMode">
<string notr="true">background: black;</string> <enum>QQuickWidget::ResizeMode::SizeRootObjectToView</enum>
</property>
<property name="text">
<string/>
</property> </property>
</widget> </widget>
</item> </item>
@ -367,7 +373,7 @@ QPushButton:pressed {
</widget> </widget>
</item> </item>
<item> <item>
<widget class="QPushButton" name="pushButton_2"> <widget class="QPushButton" name="statisticButton">
<property name="minimumSize"> <property name="minimumSize">
<size> <size>
<width>266</width> <width>266</width>
@ -410,54 +416,17 @@ QPushButton:pressed {
</property> </property>
</widget> </widget>
</item> </item>
<item>
<widget class="QPushButton" name="pushButton">
<property name="minimumSize">
<size>
<width>117</width>
<height>41</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>117</width>
<height>41</height>
</size>
</property>
<property name="styleSheet">
<string notr="true">QPushButton {
border-style: outset;
border-radius: 5px;
border-color: #13385F;
border-width: 1px;
background-color: #13385F;
color: white;
font-family: Inter;
font-size: 22px;
font-weight: 500;
line-height: 26.63px;
text-align: center;
}
QPushButton:hover {
background-color: #1A4A73;
border-color: #1A4A73;
}
QPushButton:pressed {
background-color: #102E47;
border-color: #102E47;
}</string>
</property>
<property name="text">
<string>Экспорт</string>
</property>
</widget>
</item>
</layout> </layout>
</item> </item>
</layout> </layout>
</widget> </widget>
<customwidgets>
<customwidget>
<class>QQuickWidget</class>
<extends>QWidget</extends>
<header location="global">QtQuickWidgets/QQuickWidget</header>
</customwidget>
</customwidgets>
<resources> <resources>
<include location="resources.qrc"/> <include location="resources.qrc"/>
</resources> </resources>

View File

@ -1,27 +1,43 @@
#ifndef ALARMSSERVICE_H #ifndef ALARMSSERVICE_H
#define ALARMSSERVICE_H #define ALARMSSERVICE_H
#include "utils.h"
#include "HttpClient.h" #include "HttpClient.h"
#include "alarm_r.h" #include "alarm_r.h"
#include "utils.h"
#include <QJsonArray>
#include <QJsonDocument>
#include <QJsonObject>
#include <QList>
#include <QObject> #include <QObject>
#include <QString> #include <QString>
#include <QJsonObject>
#include <QJsonArray>
#include <QList>
#include <QStringList> #include <QStringList>
#include <QJsonDocument>
struct AlarmSettings{
QMap<QString, QList<QString>> groupsWithSensors;
qint64 start_time;
qint64 end_time;
AlarmSettings(QMap<QString, QList<QString>> a, qint64 b, qint64 c) {
groupsWithSensors = a;
start_time = b;
end_time = c;
}
};
class AlarmsService : public QObject class AlarmsService : public QObject
{ {
Q_OBJECT Q_OBJECT
public: public:
explicit AlarmsService(HttpClient* client, QObject *parent = nullptr) explicit AlarmsService(HttpClient *client, QObject *parent = nullptr)
: QObject(parent), httpClient(client) {} : QObject(parent)
, httpClient(client)
{}
int getAlarmsAmount(const QMap<QString, QList<QString>>& groupsWithSensors, qint64 start, qint64 end) { int getAlarmsAmount(const QMap<QString, QList<QString>> &groupsWithSensors,
qint64 start,
qint64 end)
{
QJsonObject rootObj; QJsonObject rootObj;
rootObj["start_time"] = start; rootObj["start_time"] = start;
rootObj["end_time"] = end; rootObj["end_time"] = end;
@ -37,8 +53,8 @@ public:
QJsonDocument doc(rootObj); QJsonDocument doc(rootObj);
QByteArray requestData = doc.toJson(); QByteArray requestData = doc.toJson();
QJsonObject responseJson = httpClient->post(utils::API_URL + "/alarms/getAlarmsAmount", QJsonDocument::fromJson(requestData).object()); QJsonObject responseJson = httpClient->post(utils::API_URL + "/alarms/getAlarmsAmount",
QJsonDocument::fromJson(requestData).object());
if (responseJson.contains("amount")) { if (responseJson.contains("amount")) {
return responseJson["amount"].toInt(); return responseJson["amount"].toInt();
@ -46,57 +62,23 @@ public:
return 0; return 0;
} }
QList<AlarmR> tmpB(int pageNum, int pageSize, qint64 start = 1734063255, qint64 end = 1735392656) { QList<AlarmR> getAlarms(const QMap<QString, QList<QString>> &groupsWithSensors,
QJsonObject rootObj; qint64 start,
rootObj["start_time"] = start; qint64 end,
rootObj["end_time"] = end; int pageNum,
rootObj["page_number"] = pageNum; int pageSize)
rootObj["page_size"] = pageSize; {
QJsonDocument doc(rootObj);
QByteArray requestData = doc.toJson();
QJsonObject responseJson = httpClient->post(utils::API_URL + "/alarms/getAlarms", QJsonDocument::fromJson(requestData).object());
QList<AlarmR> alarmList;
if (responseJson.contains("alarms") && responseJson["alarms"].isArray()) {
QJsonArray alarmsArray = responseJson["alarms"].toArray();
for (const QJsonValue& value : alarmsArray) {
if (value.isObject()) {
AlarmR alarm;
alarm.parseResponse(value.toObject());
alarmList.append(alarm);
}
}
}
return alarmList;
}
int tmpA(qint64 start = 1734063255, qint64 end = 1735392656) {
QJsonObject rootObj;
rootObj["start_time"] = start;
rootObj["end_time"] = end;
QJsonDocument doc(rootObj);
QByteArray requestData = doc.toJson();
QJsonObject responseJson = httpClient->post(utils::API_URL + "/alarms/getAlarmsAmount", QJsonDocument::fromJson(requestData).object());
if (responseJson.contains("amount")) {
return responseJson["amount"].toInt();
}
return 0;
}
QList<AlarmR> getAlarms(const QMap<QString, QList<QString>>& groupsWithSensors, qint64 start, qint64 end, int pageNum, int pageSize) {
QJsonObject rootObj; QJsonObject rootObj;
rootObj["start_time"] = start; rootObj["start_time"] = start;
rootObj["end_time"] = end; rootObj["end_time"] = end;
rootObj["page_number"] = pageNum; rootObj["page_number"] = pageNum;
rootObj["page_size"] = pageSize; rootObj["page_size"] = pageSize;
QJsonArray orderArray;
QJsonArray orderItem;
orderItem.append("start_time");
orderItem.append("-");
orderArray.append(orderItem);
rootObj["order"] = orderArray;
QJsonObject sensorsObj; QJsonObject sensorsObj;
for (auto it = groupsWithSensors.constBegin(); it != groupsWithSensors.constEnd(); ++it) { for (auto it = groupsWithSensors.constBegin(); it != groupsWithSensors.constEnd(); ++it) {
QJsonArray sensorArray; QJsonArray sensorArray;
@ -109,15 +91,15 @@ public:
QJsonDocument doc(rootObj); QJsonDocument doc(rootObj);
QByteArray requestData = doc.toJson(); QByteArray requestData = doc.toJson();
QJsonObject responseJson = httpClient->post(utils::API_URL + "/alarms/getAlarms",
QJsonObject responseJson = httpClient->post(utils::API_URL + "/alarms/getAlarms", QJsonDocument::fromJson(requestData).object()); QJsonDocument::fromJson(requestData).object());
QList<AlarmR> alarmList; QList<AlarmR> alarmList;
if (responseJson.contains("alarms") && responseJson["alarms"].isArray()) { if (responseJson.contains("alarms") && responseJson["alarms"].isArray()) {
QJsonArray alarmsArray = responseJson["alarms"].toArray(); QJsonArray alarmsArray = responseJson["alarms"].toArray();
for (const QJsonValue& value : alarmsArray) { for (const QJsonValue &value : alarmsArray) {
if (value.isObject()) { if (value.isObject()) {
AlarmR alarm; AlarmR alarm;
alarm.parseResponse(value.toObject()); alarm.parseResponse(value.toObject());
@ -130,7 +112,7 @@ public:
} }
private: private:
HttpClient* httpClient; HttpClient *httpClient;
}; };
#endif // ALARMSSERVICE_H #endif // ALARMSSERVICE_H

View File

@ -1,11 +1,22 @@
#include "alarmwidget.h" #include "alarmwidget.h"
#include "alarmdialog.h"
AlarmWidget::AlarmWidget(const QString& vehicle, const QString& group, const QString& sensor, AlarmWidget::AlarmWidget(QMap<QString, QMap<QString, QPair<QString, QString>>> &translate,
const QString& date, const QString& time, QWidget *parent) const QString &sensorId,
const QString &group,
const QString &date,
const QString &time,
const QString &timeEnd,
SensorService *sensorService,
QWidget *parent)
: QWidget(parent) : QWidget(parent)
, _timeEnd(timeEnd)
, _sensorService(sensorService)
, _translate(translate)
, _sensorId(sensorId)
{ {
setAttribute(Qt::WA_StyledBackground); setAttribute(Qt::WA_StyledBackground);
// Устанавливаем обводку для ВСЕГО виджета
setStyleSheet(R"( setStyleSheet(R"(
QWidget { QWidget {
border: 1px solid #E5E7EB; border: 1px solid #E5E7EB;
@ -13,27 +24,23 @@ AlarmWidget::AlarmWidget(const QString& vehicle, const QString& group, const QSt
} }
)"); )");
// Горизонтальный layout
QHBoxLayout *mainLayout = new QHBoxLayout(this); QHBoxLayout *mainLayout = new QHBoxLayout(this);
mainLayout->setSpacing(70); // Отступы между элементами mainLayout->setSpacing(70);
mainLayout->setContentsMargins(25, 5, 25, 5); // Внутренние отступы mainLayout->setContentsMargins(25, 5, 25, 5);
setLayout(mainLayout); setLayout(mainLayout);
// Создаем лейблы //groupLabel = createLabel(_groupToLocalgroup[group], 100, 250);
vehicleLabel = createLabel(vehicle, 100, 230); //sensorLabel = createLabel(_sensorToLocalSensor[sensorId], 100, 350);
groupLabel = createLabel(group, 100, 250); groupLabel = createLabel(translate[group][sensorId].first, 100, 250);
sensorLabel = createLabel(sensor, 100, 250); sensorLabel = createLabel(translate[group][sensorId].second, 100, 350);
dateLabel = createLabel(date, 100, 150); dateLabel = createLabel(date, 100, 150);
timeLabel = createLabel(time, 100, 100); timeLabel = createLabel(time, 100, 100);
// Добавляем лейблы в layout
mainLayout->addWidget(vehicleLabel);
mainLayout->addWidget(groupLabel); mainLayout->addWidget(groupLabel);
mainLayout->addWidget(sensorLabel); mainLayout->addWidget(sensorLabel);
mainLayout->addWidget(dateLabel); mainLayout->addWidget(dateLabel);
mainLayout->addWidget(timeLabel); mainLayout->addWidget(timeLabel);
// Кнопка "Подробнее"
infoButton = new QPushButton("Подробнее"); infoButton = new QPushButton("Подробнее");
infoButton->setFixedHeight(40); infoButton->setFixedHeight(40);
infoButton->setFixedSize(140, 40); infoButton->setFixedSize(140, 40);
@ -59,14 +66,30 @@ AlarmWidget::AlarmWidget(const QString& vehicle, const QString& group, const QSt
} }
)"); )");
// Добавляем кнопку в layout
mainLayout->addWidget(infoButton); mainLayout->addWidget(infoButton);
connect(infoButton, &QPushButton::clicked, this, &AlarmWidget::onInfoButtonClicked);
//mainLayout->addStretch();
} }
QLabel* AlarmWidget::createLabel(const QString &text, int minSize, int maxSize) void AlarmWidget::onInfoButtonClicked() {
alarmdialog *dialog = new alarmdialog(nullptr, _sensorId, sensorLabel->text(),
groupLabel->text(), dateLabel->text() + ' ' + timeLabel->text(),
_timeEnd, _sensorService);
connect(dialog, &alarmdialog::dialogClosed, this, &AlarmWidget::onDialogClosed);
dialog->exec();
}
void AlarmWidget::onDialogClosed() {
QDateTime start = QDateTime::fromString(dateLabel->text() + ' ' + timeLabel->text(), "dd.MM.yyyy HH:mm");
QDateTime end = QDateTime::fromString(_timeEnd, "dd.MM.yyyy HH:mm");
if(end.isNull()) {
end = QDateTime::currentDateTime();
}
emit dialogClosedFromWidget(groupLabel->text() + '/' + sensorLabel->text(), start, end);
}
QLabel *AlarmWidget::createLabel(const QString &text, int minSize, int maxSize)
{ {
QLabel *label = new QLabel(text); QLabel *label = new QLabel(text);
label->setAlignment(Qt::AlignLeft); label->setAlignment(Qt::AlignLeft);

View File

@ -1,26 +1,44 @@
#ifndef ALARMWIDGET_H #ifndef ALARMWIDGET_H
#define ALARMWIDGET_H #define ALARMWIDGET_H
#include <QWidget> #include "sensorservice.h"
#include <QFrame>
#include <QHBoxLayout>
#include <QLabel> #include <QLabel>
#include <QPushButton> #include <QPushButton>
#include <QVBoxLayout> #include <QVBoxLayout>
#include <QHBoxLayout> #include <QWidget>
#include <QFrame>
class AlarmWidget : public QWidget class AlarmWidget : public QWidget
{ {
Q_OBJECT Q_OBJECT
public: public:
explicit AlarmWidget(const QString& vehicle, const QString& group, const QString& sensor, explicit AlarmWidget(QMap<QString, QMap<QString, QPair<QString, QString>>> &translate,
const QString& date, const QString& time, QWidget *parent = nullptr); const QString &sensorId = "",
const QString &group = "",
const QString &date = "",
const QString &time = "",
const QString &timeEnd = "",
SensorService *sensorService = nullptr,
QWidget *parent = nullptr);
private: private:
QLabel *createLabel(const QString &text, int minSize = 100, int maxSize = 250); QLabel *createLabel(const QString &text, int minSize = 100, int maxSize = 250);
signals:
void dialogClosedFromWidget(QString groupWithSensor, QDateTime start, QDateTime end);
private slots:
void onInfoButtonClicked();
void onDialogClosed();
private: private:
QLabel *vehicleLabel; QMap<QString, QMap<QString, QPair<QString, QString>>> _translate;
const QString _timeEnd;
const QString _sensorId;
SensorService *_sensorService;
QLabel *groupLabel; QLabel *groupLabel;
QLabel *sensorLabel; QLabel *sensorLabel;
QLabel *dateLabel; QLabel *dateLabel;

25
apiform.cpp Normal file
View File

@ -0,0 +1,25 @@
#include "apiform.h"
#include "ui_apiform.h"
#include "utils.h"
ApiForm::ApiForm(QDialog *parent)
: QDialog(parent)
, ui(new Ui::ApiForm)
{
ui->setupUi(this);
connect(ui->loginButton, &QPushButton::clicked, this, [this]() {
const QString adres = ui->adres->text();
const QString port = ui->port->text();
if (!adres.isEmpty() && !port.isEmpty()) {
utils::API_URL = QString("http://%1:%2").arg(adres).arg(port);
this->accept();
}
this->accept();
});
}
ApiForm::~ApiForm()
{
delete ui;
}

22
apiform.h Normal file
View File

@ -0,0 +1,22 @@
#ifndef APIFORM_H
#define APIFORM_H
#include <QDialog>
namespace Ui {
class ApiForm;
}
class ApiForm : public QDialog
{
Q_OBJECT
public:
explicit ApiForm(QDialog *parent = nullptr);
~ApiForm();
private:
Ui::ApiForm *ui;
};
#endif // APIFORM_H

254
apiform.ui Normal file
View File

@ -0,0 +1,254 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>ApiForm</class>
<widget class="QWidget" name="ApiForm">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>800</width>
<height>400</height>
</rect>
</property>
<property name="minimumSize">
<size>
<width>800</width>
<height>400</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>800</width>
<height>400</height>
</size>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<property name="styleSheet">
<string notr="true">#ApiForm{
image: url(:/visual/res/svg/fema-wing.svg);
background-color: #ffffff;
image-position: bottom right;
border: none;
}</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<property name="spacing">
<number>0</number>
</property>
<property name="leftMargin">
<number>25</number>
</property>
<property name="topMargin">
<number>25</number>
</property>
<property name="rightMargin">
<number>25</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QLabel" name="label_3">
<property name="maximumSize">
<size>
<width>16777215</width>
<height>30</height>
</size>
</property>
<property name="styleSheet">
<string notr="true">background: transparent;
font-family: Inter;
font-size: 20px;
font-weight: 400;
line-height: 36.31px;
text-align: left;
color: #13385F;
</string>
</property>
<property name="text">
<string>Здравствуйте! Введите пожалуйста адрес и порт устройства</string>
</property>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout">
<property name="spacing">
<number>10</number>
</property>
<item>
<widget class="QLabel" name="label">
<property name="minimumSize">
<size>
<width>0</width>
<height>40</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>40</height>
</size>
</property>
<property name="styleSheet">
<string notr="true">background: transparent;
font-family: Inter;
font-size: 20px;
font-weight: 500;
line-height: 36.31px;
text-align: left;
color: #13385F;
</string>
</property>
<property name="text">
<string>Адрес:</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_2">
<property name="minimumSize">
<size>
<width>0</width>
<height>40</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>40</height>
</size>
</property>
<property name="styleSheet">
<string notr="true">background: transparent;
font-family: Inter;
font-size: 20px;
font-weight: 500;
line-height: 36.31px;
text-align: left;
color: #13385F;
</string>
</property>
<property name="text">
<string>Порт:</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<property name="spacing">
<number>10</number>
</property>
<item>
<widget class="QLineEdit" name="adres">
<property name="minimumSize">
<size>
<width>0</width>
<height>40</height>
</size>
</property>
<property name="styleSheet">
<string notr="true">border: 2px solid #DCD174;
font-family: Inter;
font-size: 20px;
font-weight: 400;
line-height: 31.47px;
text-align: left;
background: #00000000;
color: #13385F;
</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="port">
<property name="minimumSize">
<size>
<width>0</width>
<height>40</height>
</size>
</property>
<property name="styleSheet">
<string notr="true">border: 2px solid #DCD174;
font-family: Inter;
font-size: 20px;
font-weight: 400;
line-height: 31.47px;
text-align: left;
background: #00000000;
color: #13385F;
</string>
</property>
</widget>
</item>
</layout>
</item>
<item>
<spacer name="verticalSpacer_2">
<property name="orientation">
<enum>Qt::Orientation::Vertical</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Policy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QPushButton" name="loginButton">
<property name="styleSheet">
<string notr="true">QPushButton {
border-style: outset;
border-radius: 5px;
border-color: #13385F;
border-width: 1px;
background-color: #13385F;
color: white;
font-family: Inter;
font-size: 22px;
font-weight: 500;
line-height: 26.63px;
text-align: center;
}
QPushButton:hover {
background-color: #1A4A73;
border-color: #1A4A73;
}
QPushButton:pressed {
background-color: #102E47;
border-color: #102E47;
}</string>
</property>
<property name="text">
<string>Войти в приложение</string>
</property>
</widget>
</item>
<item>
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Orientation::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>

View File

@ -1,4 +1,4 @@
set(CMAKE_CXX_COMPILER "G:/Programs/QT/Tools/mingw1310_64/bin/g++.exe") set(CMAKE_CXX_COMPILER "E:/qt/Tools/mingw1310_64/bin/g++.exe")
set(CMAKE_CXX_COMPILER_ARG1 "") set(CMAKE_CXX_COMPILER_ARG1 "")
set(CMAKE_CXX_COMPILER_ID "GNU") set(CMAKE_CXX_COMPILER_ID "GNU")
set(CMAKE_CXX_COMPILER_VERSION "13.1.0") set(CMAKE_CXX_COMPILER_VERSION "13.1.0")
@ -22,11 +22,11 @@ set(CMAKE_CXX_SIMULATE_VERSION "")
set(CMAKE_AR "G:/Programs/QT/Tools/mingw1310_64/bin/ar.exe") set(CMAKE_AR "E:/qt/Tools/mingw1310_64/bin/ar.exe")
set(CMAKE_CXX_COMPILER_AR "G:/Programs/QT/Tools/mingw1310_64/bin/gcc-ar.exe") set(CMAKE_CXX_COMPILER_AR "E:/qt/Tools/mingw1310_64/bin/gcc-ar.exe")
set(CMAKE_RANLIB "G:/Programs/QT/Tools/mingw1310_64/bin/ranlib.exe") set(CMAKE_RANLIB "E:/qt/Tools/mingw1310_64/bin/ranlib.exe")
set(CMAKE_CXX_COMPILER_RANLIB "G:/Programs/QT/Tools/mingw1310_64/bin/gcc-ranlib.exe") set(CMAKE_CXX_COMPILER_RANLIB "E:/qt/Tools/mingw1310_64/bin/gcc-ranlib.exe")
set(CMAKE_LINKER "G:/Programs/QT/Tools/mingw1310_64/bin/ld.exe") set(CMAKE_LINKER "E:/qt/Tools/mingw1310_64/bin/ld.exe")
set(CMAKE_LINKER_LINK "") set(CMAKE_LINKER_LINK "")
set(CMAKE_LINKER_LLD "") set(CMAKE_LINKER_LLD "")
set(CMAKE_CXX_COMPILER_LINKER "../src/gcc-13.1.0/configure --host=x86_64-w64-mingw32 --build=x86_64-w64-mingw32 --target=x86_64-w64-mingw32 --prefix=/mingw64 --with-sysroot=/c/buildroot/x86_64-1310-posix-seh-msvcrt-rt_v11-rev1/mingw64 --enable-host-shared --disable-multilib --enable-languages=c,c++,fortran,lto --enable-libstdcxx-time=yes --enable-threads=posix --enable-libgomp --enable-libatomic --enable-lto --enable-graphite --enable-checking=release --enable-fully-dynamic-string --enable-version-specific-runtime-libs --enable-libstdcxx-filesystem-ts=yes --disable-libssp --disable-libstdcxx-pch --disable-libstdcxx-debug --enable-bootstrap --disable-rpath --disable-win32-registry --disable-nls --disable-werror --disable-symvers --with-gnu-as --with-gnu-ld --with-arch=nocona --with-tune=core2 --with-libiconv --with-system-zlib --with-gmp=/c/buildroot/prerequisites/x86_64-w64-mingw32-static --with-mpfr=/c/buildroot/prerequisites/x86_64-w64-mingw32-static --with-mpc=/c/buildroot/prerequisites/x86_64-w64-mingw32-static --with-isl=/c/buildroot/prerequisites/x86_64-w64-mingw32-static --with-pkgversion='x86_64-posix-seh-rev1, Built by MinGW-Builds project' --with-bugurl=https:/github.com/niXman/mingw-builds CFLAGS='-O2 -pipe -fno-ident -I/c/buildroot/x86_64-1310-posix-seh-msvcrt-rt_v11-rev1/mingw64/opt/include -I/c/buildroot/prerequisites/x86_64-zlib-static/include -I/c/buildroot/prerequisites/x86_64-w64-mingw32-static/include' CXXFLAGS='-O2 -pipe -fno-ident -I/c/buildroot/x86_64-1310-posix-seh-msvcrt-rt_v11-rev1/mingw64/opt/include -I/c/buildroot/prerequisites/x86_64-zlib-static/include -I/c/buildroot/prerequisites/x86_64-w64-mingw32-static/include' CPPFLAGS=' -I/c/buildroot/x86_64-1310-posix-seh-msvcrt-rt_v11-rev1/mingw64/opt/include -I/c/buildroot/prerequisites/x86_64-zlib-static/include -I/c/buildroot/prerequisites/x86_64-w64-mingw32-static/include' LDFLAGS='-pipe -fno-ident -L/c/buildroot/x86_64-1310-posix-seh-msvcrt-rt_v11-rev1/mingw64/opt/lib -L/c/buildroot/prerequisites/x86_64-zlib-static/lib -L/c/buildroot/prerequisites/x86_64-w64-mingw32-static/lib ' LD_FOR_TARGET=/c/buildroot/x86_64-1310-posix-seh-msvcrt-rt_v11-rev1/mingw64/bin/ld.exe") set(CMAKE_CXX_COMPILER_LINKER "../src/gcc-13.1.0/configure --host=x86_64-w64-mingw32 --build=x86_64-w64-mingw32 --target=x86_64-w64-mingw32 --prefix=/mingw64 --with-sysroot=/c/buildroot/x86_64-1310-posix-seh-msvcrt-rt_v11-rev1/mingw64 --enable-host-shared --disable-multilib --enable-languages=c,c++,fortran,lto --enable-libstdcxx-time=yes --enable-threads=posix --enable-libgomp --enable-libatomic --enable-lto --enable-graphite --enable-checking=release --enable-fully-dynamic-string --enable-version-specific-runtime-libs --enable-libstdcxx-filesystem-ts=yes --disable-libssp --disable-libstdcxx-pch --disable-libstdcxx-debug --enable-bootstrap --disable-rpath --disable-win32-registry --disable-nls --disable-werror --disable-symvers --with-gnu-as --with-gnu-ld --with-arch=nocona --with-tune=core2 --with-libiconv --with-system-zlib --with-gmp=/c/buildroot/prerequisites/x86_64-w64-mingw32-static --with-mpfr=/c/buildroot/prerequisites/x86_64-w64-mingw32-static --with-mpc=/c/buildroot/prerequisites/x86_64-w64-mingw32-static --with-isl=/c/buildroot/prerequisites/x86_64-w64-mingw32-static --with-pkgversion='x86_64-posix-seh-rev1, Built by MinGW-Builds project' --with-bugurl=https:/github.com/niXman/mingw-builds CFLAGS='-O2 -pipe -fno-ident -I/c/buildroot/x86_64-1310-posix-seh-msvcrt-rt_v11-rev1/mingw64/opt/include -I/c/buildroot/prerequisites/x86_64-zlib-static/include -I/c/buildroot/prerequisites/x86_64-w64-mingw32-static/include' CXXFLAGS='-O2 -pipe -fno-ident -I/c/buildroot/x86_64-1310-posix-seh-msvcrt-rt_v11-rev1/mingw64/opt/include -I/c/buildroot/prerequisites/x86_64-zlib-static/include -I/c/buildroot/prerequisites/x86_64-w64-mingw32-static/include' CPPFLAGS=' -I/c/buildroot/x86_64-1310-posix-seh-msvcrt-rt_v11-rev1/mingw64/opt/include -I/c/buildroot/prerequisites/x86_64-zlib-static/include -I/c/buildroot/prerequisites/x86_64-w64-mingw32-static/include' LDFLAGS='-pipe -fno-ident -L/c/buildroot/x86_64-1310-posix-seh-msvcrt-rt_v11-rev1/mingw64/opt/lib -L/c/buildroot/prerequisites/x86_64-zlib-static/lib -L/c/buildroot/prerequisites/x86_64-w64-mingw32-static/lib ' LD_FOR_TARGET=/c/buildroot/x86_64-1310-posix-seh-msvcrt-rt_v11-rev1/mingw64/bin/ld.exe")
@ -85,8 +85,8 @@ endif()
set(CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES "G:/Programs/QT/Tools/mingw1310_64/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++;G:/Programs/QT/Tools/mingw1310_64/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/x86_64-w64-mingw32;G:/Programs/QT/Tools/mingw1310_64/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/backward;G:/Programs/QT/Tools/mingw1310_64/lib/gcc/x86_64-w64-mingw32/13.1.0/include;G:/Programs/QT/Tools/mingw1310_64/lib/gcc/x86_64-w64-mingw32/13.1.0/include-fixed;G:/Programs/QT/Tools/mingw1310_64/x86_64-w64-mingw32/include") set(CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES "E:/qt/Tools/mingw1310_64/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++;E:/qt/Tools/mingw1310_64/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/x86_64-w64-mingw32;E:/qt/Tools/mingw1310_64/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/backward;E:/qt/Tools/mingw1310_64/lib/gcc/x86_64-w64-mingw32/13.1.0/include;E:/qt/Tools/mingw1310_64/lib/gcc/x86_64-w64-mingw32/13.1.0/include-fixed;E:/qt/Tools/mingw1310_64/x86_64-w64-mingw32/include")
set(CMAKE_CXX_IMPLICIT_LINK_LIBRARIES "stdc++;mingw32;gcc_s;gcc;moldname;mingwex;kernel32;pthread;advapi32;shell32;user32;kernel32;iconv;mingw32;gcc_s;gcc;moldname;mingwex;kernel32") set(CMAKE_CXX_IMPLICIT_LINK_LIBRARIES "stdc++;mingw32;gcc_s;gcc;moldname;mingwex;kernel32;pthread;advapi32;shell32;user32;kernel32;iconv;mingw32;gcc_s;gcc;moldname;mingwex;kernel32")
set(CMAKE_CXX_IMPLICIT_LINK_DIRECTORIES "G:/Programs/QT/Tools/mingw1310_64/lib/gcc/x86_64-w64-mingw32/13.1.0;G:/Programs/QT/Tools/mingw1310_64/lib/gcc;G:/Programs/QT/Tools/mingw1310_64/x86_64-w64-mingw32/lib;G:/Programs/QT/Tools/mingw1310_64/lib") set(CMAKE_CXX_IMPLICIT_LINK_DIRECTORIES "E:/qt/Tools/mingw1310_64/lib/gcc/x86_64-w64-mingw32/13.1.0;E:/qt/Tools/mingw1310_64/lib/gcc;E:/qt/Tools/mingw1310_64/x86_64-w64-mingw32/lib;E:/qt/Tools/mingw1310_64/lib")
set(CMAKE_CXX_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "") set(CMAKE_CXX_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "")
set(CMAKE_CXX_COMPILER_CLANG_RESOURCE_DIR "") set(CMAKE_CXX_COMPILER_CLANG_RESOURCE_DIR "")

View File

@ -1,4 +1,4 @@
set(CMAKE_RC_COMPILER "G:/Programs/QT/Tools/mingw1310_64/bin/windres.exe") set(CMAKE_RC_COMPILER "E:/qt/Tools/mingw1310_64/bin/windres.exe")
set(CMAKE_RC_COMPILER_ARG1 "") set(CMAKE_RC_COMPILER_ARG1 "")
set(CMAKE_RC_COMPILER_LOADED 1) set(CMAKE_RC_COMPILER_LOADED 1)
set(CMAKE_RC_SOURCE_FILE_EXTENSIONS rc;RC) set(CMAKE_RC_SOURCE_FILE_EXTENSIONS rc;RC)

View File

@ -1,13 +1,13 @@
set(CMAKE_HOST_SYSTEM "Windows-10.0.26100") set(CMAKE_HOST_SYSTEM "Windows-10.0.19045")
set(CMAKE_HOST_SYSTEM_NAME "Windows") set(CMAKE_HOST_SYSTEM_NAME "Windows")
set(CMAKE_HOST_SYSTEM_VERSION "10.0.26100") set(CMAKE_HOST_SYSTEM_VERSION "10.0.19045")
set(CMAKE_HOST_SYSTEM_PROCESSOR "AMD64") set(CMAKE_HOST_SYSTEM_PROCESSOR "AMD64")
set(CMAKE_SYSTEM "Windows-10.0.26100") set(CMAKE_SYSTEM "Windows-10.0.19045")
set(CMAKE_SYSTEM_NAME "Windows") set(CMAKE_SYSTEM_NAME "Windows")
set(CMAKE_SYSTEM_VERSION "10.0.26100") set(CMAKE_SYSTEM_VERSION "10.0.19045")
set(CMAKE_SYSTEM_PROCESSOR "AMD64") set(CMAKE_SYSTEM_PROCESSOR "AMD64")
set(CMAKE_CROSSCOMPILING "FALSE") set(CMAKE_CROSSCOMPILING "FALSE")

View File

@ -99,6 +99,79 @@ static const unsigned char qt_resource_data[] = {
0x7f,0x9a,0x22,0x88,0x8a,0xa5,0x99,0x9d,0x2a,0x0,0x0,0x0,0x0,0x0,0x0,0x0, 0x7f,0x9a,0x22,0x88,0x8a,0xa5,0x99,0x9d,0x2a,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
0x0,0x0,0x0,0x0,0x0,0x0,0x48,0xb8,0xbf,0x3d,0xed,0xb2,0xe3,0x7e,0x81,0xad, 0x0,0x0,0x0,0x0,0x0,0x0,0x48,0xb8,0xbf,0x3d,0xed,0xb2,0xe3,0x7e,0x81,0xad,
0x3e,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82, 0x3e,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82,
// delete.png
0x0,0x0,0x4,0x5d,
0x89,
0x50,0x4e,0x47,0xd,0xa,0x1a,0xa,0x0,0x0,0x0,0xd,0x49,0x48,0x44,0x52,0x0,
0x0,0x0,0x30,0x0,0x0,0x0,0x36,0x8,0x6,0x0,0x0,0x0,0x81,0x5b,0x1a,0x9a,
0x0,0x0,0x0,0x9,0x70,0x48,0x59,0x73,0x0,0x0,0xb,0x13,0x0,0x0,0xb,0x13,
0x1,0x0,0x9a,0x9c,0x18,0x0,0x0,0x0,0x1,0x73,0x52,0x47,0x42,0x0,0xae,0xce,
0x1c,0xe9,0x0,0x0,0x0,0x4,0x67,0x41,0x4d,0x41,0x0,0x0,0xb1,0x8f,0xb,0xfc,
0x61,0x5,0x0,0x0,0x3,0xf2,0x49,0x44,0x41,0x54,0x78,0x1,0xd5,0x5a,0x4d,0x56,
0x13,0x41,0x10,0xae,0xea,0x9,0xca,0x8e,0x78,0x2,0xc7,0x1b,0xc0,0xe,0x70,0x61,
0x50,0xf1,0xb9,0x13,0x4f,0x20,0x9e,0x40,0x38,0x1,0xe6,0x4,0xe2,0xd,0xe4,0x4,
0xe0,0xce,0xf7,0xc,0x1a,0x17,0x2,0x3b,0xf1,0x4,0xe,0x27,0x30,0xec,0x90,0x4c,
0xba,0xec,0x9e,0x68,0xc8,0xf4,0xcf,0x4c,0x77,0xcf,0xc,0x79,0xf9,0x16,0xd0,0xe9,
0xff,0xaf,0xbb,0xab,0xba,0xaa,0x6b,0x10,0x2a,0x80,0x9e,0xaf,0xc6,0x90,0x46,0x6f,
0x80,0xd1,0x16,0x10,0xc4,0x1e,0x4d,0x7,0x0,0x78,0xe,0x38,0xfa,0x0,0xc,0xbe,
0xe1,0xa7,0xb3,0x4,0x2,0x81,0x10,0x8,0xda,0x5c,0xdd,0x6,0x60,0xef,0x44,0xb2,
0xd,0x55,0x80,0x94,0x88,0x5,0xd8,0x8,0x25,0x11,0x44,0x20,0x5b,0xf9,0x11,0xfb,
0x5,0x75,0x41,0x92,0xb8,0xbe,0xbb,0x82,0xfd,0xfe,0x0,0x3c,0xd1,0x82,0x10,0x8c,
0xd8,0x9e,0x96,0x47,0xd4,0x7,0xc2,0x4,0x5c,0xc0,0xa0,0x23,0xfe,0xc6,0x37,0x6d,
0x31,0x86,0x68,0xf8,0x42,0xa4,0xe,0xc0,0x13,0x61,0x4,0x0,0x97,0xc5,0xa8,0x37,
0x3f,0x89,0xbf,0xc5,0xde,0x59,0x17,0x3c,0x40,0xcf,0xd6,0xe,0xc5,0xc4,0xb7,0x26,
0x19,0x8c,0x3a,0x10,0x40,0x80,0x41,0x10,0x28,0x77,0xee,0x7d,0x27,0x9f,0x61,0xd4,
0xca,0x4f,0x96,0x28,0x48,0x96,0x2,0x9,0xd4,0x0,0x24,0xf5,0xbc,0xcf,0x19,0x81,
0x9a,0x30,0xf7,0x4,0xf0,0x9f,0x4a,0x14,0x5a,0x5,0x63,0xf7,0x66,0x99,0xc0,0x4d,
0x77,0xd3,0x7,0x6f,0x64,0x67,0x7e,0x79,0x2a,0x63,0x7c,0xb9,0xb9,0xb7,0x4f,0x20,
0xe2,0xdd,0x16,0x70,0xf6,0x15,0x32,0x95,0x46,0x10,0xe,0x95,0x50,0x10,0xda,0xde,
0xfd,0xa4,0xd8,0x66,0x62,0xde,0xd5,0x6e,0xd2,0xd9,0x42,0x10,0x0,0xbe,0x2b,0x12,
0x9,0xcc,0x1f,0x84,0x2d,0x95,0xee,0x6a,0xa6,0x4,0x6d,0xae,0xcb,0x73,0xf9,0xe3,
0x26,0x83,0x8e,0xb0,0x77,0xfa,0x12,0x66,0x0,0x31,0x97,0xdc,0xb9,0xc6,0xcf,0x27,
0xda,0x7c,0x75,0x2d,0x14,0xf1,0x5a,0xf4,0xf3,0x6d,0xa1,0x5c,0x8d,0x22,0xce,0x84,
0x0,0x75,0x3a,0xea,0xb8,0x89,0xa9,0x9e,0x46,0xc0,0x60,0xd6,0xce,0x66,0x7,0x16,
0xaf,0x9c,0xc6,0xd,0x34,0xe6,0x26,0x26,0xf5,0x9e,0xd0,0x62,0x9,0xf6,0x4e,0xba,
0xf6,0x72,0x1c,0x40,0xba,0xd0,0x55,0x4d,0xe5,0x89,0x33,0x24,0x61,0x28,0xd7,0x7,
0x14,0x7a,0xdf,0x83,0x80,0xec,0xec,0xff,0xa,0x98,0x57,0x22,0x15,0xce,0xc,0xc2,
0x96,0xf4,0x28,0xe8,0xc9,0xc3,0x4,0x8f,0xbf,0xe7,0x8d,0xb3,0xb1,0xc9,0xbd,0x2d,
0xae,0x4a,0x80,0x85,0x3f,0x89,0x48,0xbf,0x57,0xda,0xbf,0x12,0x65,0x3b,0x59,0xda,
0x58,0xde,0x8a,0x1,0x39,0x94,0x81,0x15,0x10,0x80,0x42,0x2,0x8,0xee,0xce,0x7,
0x19,0xe4,0x88,0x4d,0xe5,0x51,0xb8,0x9c,0xcd,0xce,0x16,0xf2,0x35,0x9f,0xd1,0xec,
0x2c,0x59,0x8,0xe4,0x2b,0xd3,0xe3,0xf5,0xfb,0x50,0x4,0xc6,0xab,0xfa,0xc5,0xfa,
0x6e,0x22,0x8f,0xc1,0x1,0xf5,0xec,0x0,0x55,0x54,0xb5,0x9c,0x95,0x1f,0x47,0xa9,
0xc,0xc,0x30,0x13,0x20,0x65,0x45,0xa2,0xe1,0x3d,0xad,0xe,0xa2,0xb7,0x3,0x9e,
0x1f,0xa3,0x44,0x3d,0x13,0x28,0xbb,0x4e,0x1e,0x4,0x34,0x1,0x6d,0x2d,0x69,0x75,
0x38,0x55,0x23,0x50,0xd3,0x5,0xe9,0x76,0x84,0x4a,0x8f,0x8,0xd6,0x2f,0x3,0xfa,
0x1c,0x12,0x53,0xb6,0xe5,0x8,0x29,0xd7,0x76,0x19,0x1,0xa4,0x6,0x84,0xd8,0xed,
0xa5,0x6f,0x7e,0x5c,0x4a,0xf4,0x92,0x1,0xa5,0xb2,0x49,0x4d,0x22,0x5c,0x40,0x25,
0x50,0x5c,0x5c,0xac,0x8,0xb9,0x17,0x1,0xc0,0xcb,0x7c,0x67,0x33,0xb0,0x48,0x1d,
0x85,0xbc,0xa6,0x7b,0xa0,0x64,0x35,0x4b,0x91,0x5e,0x86,0xd6,0x31,0x13,0xe0,0x51,
0x7e,0xbb,0x1c,0x5,0x2a,0x18,0xa3,0x85,0xdf,0x86,0xdc,0xb6,0x43,0x1d,0x47,0x19,
0x30,0x41,0x25,0xe9,0x8f,0xb8,0xb8,0x58,0xd1,0x6c,0xfc,0x8e,0xc7,0xe,0xa0,0xe2,
0x56,0x9a,0xc,0xaf,0x69,0x92,0xb7,0xe0,0xb5,0xd9,0xfc,0x5,0x33,0x1,0x7f,0xbf,
0xb8,0xa2,0x2d,0x64,0x5c,0xdd,0x18,0x1c,0xe0,0x26,0xc4,0xd,0xaf,0xb0,0x43,0x60,
0xc3,0x5a,0x6e,0x26,0x70,0xb5,0x58,0xbe,0x3,0xc8,0x83,0x65,0xc0,0xe0,0xb0,0x97,
0x95,0xfb,0x11,0x70,0xa,0xf5,0x44,0xe1,0x4,0x4a,0x1d,0x76,0xbd,0xdc,0x73,0x7,
0xf4,0x46,0x65,0x47,0x28,0x86,0x26,0x41,0xd4,0x38,0x81,0x2a,0x48,0xb4,0x1c,0xe9,
0xd0,0x3b,0x62,0x5e,0x8c,0xb9,0x90,0x1d,0xc8,0x7b,0x5c,0xaa,0x5f,0x5c,0x25,0x38,
0xed,0xb3,0xc2,0xe3,0xc1,0xb0,0xf2,0x11,0x2a,0x45,0x99,0x66,0xf1,0x82,0xa3,0x43,
0x2f,0x61,0x27,0xe0,0xe2,0x17,0xe7,0x7a,0xba,0x5e,0x82,0x10,0x58,0x5e,0xdc,0xf2,
0x75,0xec,0xcf,0xff,0x76,0x2,0x2e,0x7e,0xb1,0xe7,0x2e,0xb9,0x83,0x9c,0x17,0xc3,
0x5d,0x88,0x4d,0x3e,0x1,0xf1,0x7d,0x90,0x5a,0x44,0x44,0xe9,0xf1,0xcb,0xc9,0x85,
0x52,0x76,0x0,0x63,0xd,0x73,0xe,0x29,0xcf,0x3f,0x3b,0xa6,0xad,0xf3,0x2c,0x5f,
0x2e,0x0,0x29,0x4f,0x8a,0xa6,0xb1,0xa,0x8c,0x4b,0xfb,0xe3,0xae,0x14,0x1c,0x22,
0x7b,0xa7,0x30,0x9,0x70,0x1b,0x83,0xdc,0xa2,0xac,0x2f,0xfe,0x3d,0x30,0x96,0x8d,
0x2f,0xca,0x15,0x70,0x45,0xc1,0xbb,0x91,0x7d,0x7,0xaa,0x3e,0x9b,0x54,0x81,0x87,
0xff,0x51,0x20,0x3,0xaa,0x5f,0x5c,0x4b,0x24,0xd2,0x11,0x18,0xe7,0x7e,0x32,0x9e,
0xd8,0x6a,0x16,0x69,0xa1,0x9f,0x4a,0xce,0x36,0x3d,0x5d,0xdb,0x81,0x6,0x21,0x55,
0xb1,0x88,0x8b,0xed,0x6b,0xe1,0xd6,0x21,0x59,0x1f,0x10,0xa,0xbf,0x17,0x12,0x9d,
0xc9,0x6f,0x82,0x62,0x43,0xab,0x4,0x9a,0x80,0xe9,0xab,0x2f,0xa9,0x20,0x7a,0xa7,
0x1b,0xb6,0x26,0xc5,0x11,0x1a,0x4e,0xbb,0xe2,0x1d,0xff,0xd0,0x69,0xa0,0x66,0x20,
0xa2,0x3b,0xf4,0xba,0xa8,0x42,0xa1,0x1a,0xc5,0xe3,0xd3,0x23,0xb1,0x2,0x33,0x8a,
0x23,0xcb,0xb,0x6e,0xb8,0x81,0xfd,0x62,0x93,0xc5,0xe9,0x93,0x33,0xea,0x88,0x78,
0x16,0x63,0x1d,0x51,0xfb,0x91,0x10,0xee,0x18,0x9a,0xc3,0x20,0x7b,0x46,0x8f,0xb0,
0xf,0xd7,0xb,0x1f,0x5d,0xfc,0x92,0xbf,0xab,0x19,0x7d,0xfc,0x73,0x28,0xa2,0xe9,
0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82,
// arrowRight.png // arrowRight.png
0x0,0x0,0x1,0x4c, 0x0,0x0,0x1,0x4c,
0x89, 0x89,
@ -210,6 +283,23 @@ static const unsigned char qt_resource_data[] = {
0x1b,0x9d,0x6f,0xf2,0x3c,0x5c,0x99,0x74,0xbd,0x8d,0x1a,0xf2,0x77,0x5f,0x26,0x7f, 0x1b,0x9d,0x6f,0xf2,0x3c,0x5c,0x99,0x74,0xbd,0x8d,0x1a,0xf2,0x77,0x5f,0x26,0x7f,
0x2f,0x6f,0xa8,0x4f,0xa6,0xf3,0xed,0x34,0xae,0x1,0xf5,0x91,0x9c,0xe1,0xe2,0x98, 0x2f,0x6f,0xa8,0x4f,0xa6,0xf3,0xed,0x34,0xae,0x1,0xf5,0x91,0x9c,0xe1,0xe2,0x98,
0xb5,0x4f,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82, 0xb5,0x4f,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82,
// open.png
0x0,0x0,0x0,0xde,
0x89,
0x50,0x4e,0x47,0xd,0xa,0x1a,0xa,0x0,0x0,0x0,0xd,0x49,0x48,0x44,0x52,0x0,
0x0,0x0,0xc,0x0,0x0,0x0,0x8,0x8,0x6,0x0,0x0,0x0,0xcd,0xe4,0x1e,0xf1,
0x0,0x0,0x0,0x4,0x73,0x42,0x49,0x54,0x8,0x8,0x8,0x8,0x7c,0x8,0x64,0x88,
0x0,0x0,0x0,0x1,0x73,0x52,0x47,0x42,0x0,0xae,0xce,0x1c,0xe9,0x0,0x0,0x0,
0x4,0x67,0x41,0x4d,0x41,0x0,0x0,0xb1,0x8f,0xb,0xfc,0x61,0x5,0x0,0x0,0x0,
0x9,0x70,0x48,0x59,0x73,0x0,0x0,0xe,0xc4,0x0,0x0,0xe,0xc4,0x1,0x95,0x2b,
0xe,0x1b,0x0,0x0,0x0,0x19,0x74,0x45,0x58,0x74,0x53,0x6f,0x66,0x74,0x77,0x61,
0x72,0x65,0x0,0x77,0x77,0x77,0x2e,0x69,0x6e,0x6b,0x73,0x63,0x61,0x70,0x65,0x2e,
0x6f,0x72,0x67,0x9b,0xee,0x3c,0x1a,0x0,0x0,0x0,0x3e,0x49,0x44,0x41,0x54,0x28,
0x53,0x63,0xbc,0x73,0xb1,0xe4,0x3f,0x3,0x9,0x80,0x9,0x4a,0x13,0xd,0x98,0x94,
0xf5,0xba,0xa1,0x4c,0xc2,0x0,0xa4,0x16,0x6c,0x3,0x31,0x9a,0x60,0x6a,0xe0,0x4e,
0xc2,0xa7,0x9,0x59,0x8e,0x74,0x3f,0x40,0x69,0x30,0xc0,0x66,0xb,0xba,0x18,0x86,
0xd,0xc8,0xa,0x30,0xd,0x60,0x60,0x0,0x0,0xe9,0x19,0xb,0xc8,0x7a,0x5a,0xb8,
0x7c,0x0,0x0,0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82,
// branch-more.png // branch-more.png
0x0,0x0,0x0,0xb0, 0x0,0x0,0x0,0xb0,
0x89, 0x89,
@ -242,6 +332,25 @@ static const unsigned char qt_resource_data[] = {
0x42,0x44,0x6d,0xea,0x79,0xc5,0x4e,0xfa,0x15,0xc9,0x55,0x3e,0xd6,0x44,0xb,0x4, 0x42,0x44,0x6d,0xea,0x79,0xc5,0x4e,0xfa,0x15,0xc9,0x55,0x3e,0xd6,0x44,0xb,0x4,
0xfe,0x6,0xbd,0x89,0x85,0x37,0xc3,0x8c,0x6d,0x33,0x49,0x87,0x85,0x54,0x0,0x0, 0xfe,0x6,0xbd,0x89,0x85,0x37,0xc3,0x8c,0x6d,0x33,0x49,0x87,0x85,0x54,0x0,0x0,
0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82, 0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82,
// close.png
0x0,0x0,0x0,0xf9,
0x89,
0x50,0x4e,0x47,0xd,0xa,0x1a,0xa,0x0,0x0,0x0,0xd,0x49,0x48,0x44,0x52,0x0,
0x0,0x0,0x8,0x0,0x0,0x0,0xc,0x8,0x6,0x0,0x0,0x0,0x5f,0x9e,0xfc,0x9d,
0x0,0x0,0x0,0x4,0x73,0x42,0x49,0x54,0x8,0x8,0x8,0x8,0x7c,0x8,0x64,0x88,
0x0,0x0,0x0,0x1,0x73,0x52,0x47,0x42,0x0,0xae,0xce,0x1c,0xe9,0x0,0x0,0x0,
0x4,0x67,0x41,0x4d,0x41,0x0,0x0,0xb1,0x8f,0xb,0xfc,0x61,0x5,0x0,0x0,0x0,
0x9,0x70,0x48,0x59,0x73,0x0,0x0,0xe,0xc4,0x0,0x0,0xe,0xc4,0x1,0x95,0x2b,
0xe,0x1b,0x0,0x0,0x0,0x19,0x74,0x45,0x58,0x74,0x53,0x6f,0x66,0x74,0x77,0x61,
0x72,0x65,0x0,0x77,0x77,0x77,0x2e,0x69,0x6e,0x6b,0x73,0x63,0x61,0x70,0x65,0x2e,
0x6f,0x72,0x67,0x9b,0xee,0x3c,0x1a,0x0,0x0,0x0,0x59,0x49,0x44,0x41,0x54,0x28,
0x53,0x63,0xbc,0x73,0xb1,0xe4,0x3f,0x3,0x10,0x28,0xeb,0x75,0x83,0x28,0xc,0xc0,
0x4,0xa5,0x19,0xee,0x5e,0x2a,0x85,0xb2,0x50,0x1,0x5c,0x1,0x8,0x60,0x53,0x84,
0xa2,0x0,0x4,0x40,0x8a,0x90,0x15,0x62,0x28,0x80,0x1,0x98,0x22,0x9c,0xa,0x40,
0x0,0xa4,0x8,0xaf,0x2,0x10,0xc0,0xab,0x0,0xe4,0x75,0x9c,0xa,0x60,0xe1,0x82,
0xa1,0x0,0x24,0x81,0x1c,0x68,0x28,0xa,0xb0,0x85,0x26,0x5c,0x1,0x36,0x49,0x6,
0x6,0x6,0x6,0x0,0xab,0x61,0x16,0x14,0x83,0x17,0x2c,0x6d,0x0,0x0,0x0,0x0,
0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82,
// chevron-down.png // chevron-down.png
0x0,0x0,0x1,0x4b, 0x0,0x0,0x1,0x4b,
0x89, 0x89,
@ -267,130 +376,131 @@ static const unsigned char qt_resource_data[] = {
0xc,0xd1,0x82,0x6,0xbd,0x1,0xcd,0x6,0x82,0xb5,0x4d,0xed,0x9,0x91,0x0,0x0, 0xc,0xd1,0x82,0x6,0xbd,0x1,0xcd,0x6,0x82,0xb5,0x4d,0xed,0x9,0x91,0x0,0x0,
0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82, 0x0,0x0,0x49,0x45,0x4e,0x44,0xae,0x42,0x60,0x82,
// settings.svg // settings.svg
0x0,0x0,0x7,0x9d, 0x0,0x0,0x7,0xac,
0x3c, 0x3c,
0x73,0x76,0x67,0x20,0x77,0x69,0x64,0x74,0x68,0x3d,0x22,0x33,0x32,0x22,0x20,0x68, 0x73,0x76,0x67,0x20,0x77,0x69,0x64,0x74,0x68,0x3d,0x22,0x33,0x32,0x22,0x20,0x68,
0x65,0x69,0x67,0x68,0x74,0x3d,0x22,0x33,0x32,0x22,0x20,0x76,0x69,0x65,0x77,0x42, 0x65,0x69,0x67,0x68,0x74,0x3d,0x22,0x33,0x32,0x22,0x20,0x76,0x69,0x65,0x77,0x42,
0x6f,0x78,0x3d,0x22,0x30,0x20,0x30,0x20,0x33,0x32,0x20,0x33,0x32,0x22,0x20,0x66, 0x6f,0x78,0x3d,0x22,0x30,0x20,0x30,0x20,0x33,0x32,0x20,0x33,0x32,0x22,0x20,0x66,
0x69,0x6c,0x6c,0x3d,0x22,0x6e,0x6f,0x6e,0x65,0x22,0x20,0x78,0x6d,0x6c,0x6e,0x73, 0x69,0x6c,0x6c,0x3d,0x22,0x6e,0x6f,0x6e,0x65,0x22,0x20,0x78,0x6d,0x6c,0x6e,0x73,
0x3d,0x22,0x68,0x74,0x74,0x70,0x3a,0x2f,0x2f,0x77,0x77,0x77,0x2e,0x77,0x33,0x2e, 0x3d,0x22,0x68,0x74,0x74,0x70,0x3a,0x2f,0x2f,0x77,0x77,0x77,0x2e,0x77,0x33,0x2e,
0x6f,0x72,0x67,0x2f,0x32,0x30,0x30,0x30,0x2f,0x73,0x76,0x67,0x22,0x3e,0xa,0x3c, 0x6f,0x72,0x67,0x2f,0x32,0x30,0x30,0x30,0x2f,0x73,0x76,0x67,0x22,0x3e,0xd,0xa,
0x67,0x20,0x63,0x6c,0x69,0x70,0x2d,0x70,0x61,0x74,0x68,0x3d,0x22,0x75,0x72,0x6c, 0x3c,0x67,0x20,0x63,0x6c,0x69,0x70,0x2d,0x70,0x61,0x74,0x68,0x3d,0x22,0x75,0x72,
0x28,0x23,0x63,0x6c,0x69,0x70,0x30,0x5f,0x34,0x5f,0x31,0x31,0x32,0x29,0x22,0x3e, 0x6c,0x28,0x23,0x63,0x6c,0x69,0x70,0x30,0x5f,0x34,0x5f,0x31,0x31,0x32,0x29,0x22,
0xa,0x3c,0x6d,0x61,0x73,0x6b,0x20,0x69,0x64,0x3d,0x22,0x6d,0x61,0x73,0x6b,0x30, 0x3e,0xd,0xa,0x3c,0x6d,0x61,0x73,0x6b,0x20,0x69,0x64,0x3d,0x22,0x6d,0x61,0x73,
0x5f,0x34,0x5f,0x31,0x31,0x32,0x22,0x20,0x73,0x74,0x79,0x6c,0x65,0x3d,0x22,0x6d, 0x6b,0x30,0x5f,0x34,0x5f,0x31,0x31,0x32,0x22,0x20,0x73,0x74,0x79,0x6c,0x65,0x3d,
0x61,0x73,0x6b,0x2d,0x74,0x79,0x70,0x65,0x3a,0x6c,0x75,0x6d,0x69,0x6e,0x61,0x6e, 0x22,0x6d,0x61,0x73,0x6b,0x2d,0x74,0x79,0x70,0x65,0x3a,0x6c,0x75,0x6d,0x69,0x6e,
0x63,0x65,0x22,0x20,0x6d,0x61,0x73,0x6b,0x55,0x6e,0x69,0x74,0x73,0x3d,0x22,0x75, 0x61,0x6e,0x63,0x65,0x22,0x20,0x6d,0x61,0x73,0x6b,0x55,0x6e,0x69,0x74,0x73,0x3d,
0x73,0x65,0x72,0x53,0x70,0x61,0x63,0x65,0x4f,0x6e,0x55,0x73,0x65,0x22,0x20,0x78, 0x22,0x75,0x73,0x65,0x72,0x53,0x70,0x61,0x63,0x65,0x4f,0x6e,0x55,0x73,0x65,0x22,
0x3d,0x22,0x30,0x22,0x20,0x79,0x3d,0x22,0x30,0x22,0x20,0x77,0x69,0x64,0x74,0x68, 0x20,0x78,0x3d,0x22,0x30,0x22,0x20,0x79,0x3d,0x22,0x30,0x22,0x20,0x77,0x69,0x64,
0x3d,0x22,0x33,0x32,0x22,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3d,0x22,0x33,0x32, 0x74,0x68,0x3d,0x22,0x33,0x32,0x22,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3d,0x22,
0x22,0x3e,0xa,0x3c,0x70,0x61,0x74,0x68,0x20,0x64,0x3d,0x22,0x4d,0x30,0x20,0x30, 0x33,0x32,0x22,0x3e,0xd,0xa,0x3c,0x70,0x61,0x74,0x68,0x20,0x64,0x3d,0x22,0x4d,
0x48,0x33,0x32,0x56,0x33,0x32,0x48,0x30,0x56,0x30,0x5a,0x22,0x20,0x66,0x69,0x6c, 0x30,0x20,0x30,0x48,0x33,0x32,0x56,0x33,0x32,0x48,0x30,0x56,0x30,0x5a,0x22,0x20,
0x6c,0x3d,0x22,0x77,0x68,0x69,0x74,0x65,0x22,0x2f,0x3e,0xa,0x3c,0x2f,0x6d,0x61, 0x66,0x69,0x6c,0x6c,0x3d,0x22,0x77,0x68,0x69,0x74,0x65,0x22,0x2f,0x3e,0xd,0xa,
0x73,0x6b,0x3e,0xa,0x3c,0x67,0x20,0x6d,0x61,0x73,0x6b,0x3d,0x22,0x75,0x72,0x6c, 0x3c,0x2f,0x6d,0x61,0x73,0x6b,0x3e,0xd,0xa,0x3c,0x67,0x20,0x6d,0x61,0x73,0x6b,
0x28,0x23,0x6d,0x61,0x73,0x6b,0x30,0x5f,0x34,0x5f,0x31,0x31,0x32,0x29,0x22,0x3e, 0x3d,0x22,0x75,0x72,0x6c,0x28,0x23,0x6d,0x61,0x73,0x6b,0x30,0x5f,0x34,0x5f,0x31,
0xa,0x3c,0x70,0x61,0x74,0x68,0x20,0x64,0x3d,0x22,0x4d,0x31,0x34,0x2e,0x35,0x39, 0x31,0x32,0x29,0x22,0x3e,0xd,0xa,0x3c,0x70,0x61,0x74,0x68,0x20,0x64,0x3d,0x22,
0x31,0x20,0x33,0x31,0x2e,0x39,0x38,0x35,0x48,0x31,0x37,0x2e,0x34,0x30,0x39,0x43, 0x4d,0x31,0x34,0x2e,0x35,0x39,0x31,0x20,0x33,0x31,0x2e,0x39,0x38,0x35,0x48,0x31,
0x31,0x38,0x2e,0x32,0x30,0x35,0x20,0x33,0x31,0x2e,0x39,0x38,0x35,0x20,0x31,0x38, 0x37,0x2e,0x34,0x30,0x39,0x43,0x31,0x38,0x2e,0x32,0x30,0x35,0x20,0x33,0x31,0x2e,
0x2e,0x37,0x38,0x37,0x20,0x33,0x31,0x2e,0x35,0x31,0x20,0x31,0x38,0x2e,0x39,0x35, 0x39,0x38,0x35,0x20,0x31,0x38,0x2e,0x37,0x38,0x37,0x20,0x33,0x31,0x2e,0x35,0x31,
0x35,0x20,0x33,0x30,0x2e,0x37,0x33,0x4c,0x31,0x39,0x2e,0x37,0x35,0x31,0x20,0x32, 0x20,0x31,0x38,0x2e,0x39,0x35,0x35,0x20,0x33,0x30,0x2e,0x37,0x33,0x4c,0x31,0x39,
0x37,0x2e,0x33,0x36,0x33,0x43,0x32,0x30,0x2e,0x33,0x32,0x36,0x20,0x32,0x37,0x2e, 0x2e,0x37,0x35,0x31,0x20,0x32,0x37,0x2e,0x33,0x36,0x33,0x43,0x32,0x30,0x2e,0x33,
0x31,0x37,0x34,0x36,0x20,0x32,0x30,0x2e,0x38,0x38,0x38,0x35,0x20,0x32,0x36,0x2e, 0x32,0x36,0x20,0x32,0x37,0x2e,0x31,0x37,0x34,0x36,0x20,0x32,0x30,0x2e,0x38,0x38,
0x39,0x34,0x39,0x38,0x20,0x32,0x31,0x2e,0x34,0x33,0x35,0x20,0x32,0x36,0x2e,0x36, 0x38,0x35,0x20,0x32,0x36,0x2e,0x39,0x34,0x39,0x38,0x20,0x32,0x31,0x2e,0x34,0x33,
0x39,0x4c,0x32,0x34,0x2e,0x33,0x39,0x20,0x32,0x38,0x2e,0x34,0x39,0x35,0x43,0x32, 0x35,0x20,0x32,0x36,0x2e,0x36,0x39,0x4c,0x32,0x34,0x2e,0x33,0x39,0x20,0x32,0x38,
0x35,0x2e,0x30,0x34,0x39,0x20,0x32,0x38,0x2e,0x39,0x30,0x39,0x20,0x32,0x35,0x2e, 0x2e,0x34,0x39,0x35,0x43,0x32,0x35,0x2e,0x30,0x34,0x39,0x20,0x32,0x38,0x2e,0x39,
0x37,0x39,0x39,0x20,0x32,0x38,0x2e,0x38,0x34,0x37,0x20,0x32,0x36,0x2e,0x33,0x35, 0x30,0x39,0x20,0x32,0x35,0x2e,0x37,0x39,0x39,0x20,0x32,0x38,0x2e,0x38,0x34,0x37,
0x20,0x32,0x38,0x2e,0x32,0x39,0x37,0x4c,0x32,0x38,0x2e,0x33,0x32,0x35,0x20,0x32, 0x20,0x32,0x36,0x2e,0x33,0x35,0x20,0x32,0x38,0x2e,0x32,0x39,0x37,0x4c,0x32,0x38,
0x36,0x2e,0x33,0x33,0x37,0x43,0x32,0x38,0x2e,0x38,0x37,0x37,0x20,0x32,0x35,0x2e, 0x2e,0x33,0x32,0x35,0x20,0x32,0x36,0x2e,0x33,0x33,0x37,0x43,0x32,0x38,0x2e,0x38,
0x37,0x38,0x37,0x20,0x32,0x38,0x2e,0x39,0x35,0x33,0x20,0x32,0x34,0x2e,0x39,0x39, 0x37,0x37,0x20,0x32,0x35,0x2e,0x37,0x38,0x37,0x20,0x32,0x38,0x2e,0x39,0x35,0x33,
0x31,0x20,0x32,0x38,0x2e,0x35,0x30,0x39,0x20,0x32,0x34,0x2e,0x33,0x33,0x33,0x4c, 0x20,0x32,0x34,0x2e,0x39,0x39,0x31,0x20,0x32,0x38,0x2e,0x35,0x30,0x39,0x20,0x32,
0x32,0x36,0x2e,0x37,0x30,0x32,0x20,0x32,0x31,0x2e,0x34,0x31,0x43,0x32,0x36,0x2e, 0x34,0x2e,0x33,0x33,0x33,0x4c,0x32,0x36,0x2e,0x37,0x30,0x32,0x20,0x32,0x31,0x2e,
0x39,0x36,0x32,0x20,0x32,0x30,0x2e,0x38,0x37,0x34,0x20,0x32,0x37,0x2e,0x31,0x39, 0x34,0x31,0x43,0x32,0x36,0x2e,0x39,0x36,0x32,0x20,0x32,0x30,0x2e,0x38,0x37,0x34,
0x32,0x20,0x32,0x30,0x2e,0x33,0x32,0x33,0x20,0x32,0x37,0x2e,0x33,0x36,0x31,0x20, 0x20,0x32,0x37,0x2e,0x31,0x39,0x32,0x20,0x32,0x30,0x2e,0x33,0x32,0x33,0x20,0x32,
0x31,0x39,0x2e,0x37,0x37,0x32,0x4c,0x33,0x30,0x2e,0x37,0x36,0x20,0x31,0x38,0x2e, 0x37,0x2e,0x33,0x36,0x31,0x20,0x31,0x39,0x2e,0x37,0x37,0x32,0x4c,0x33,0x30,0x2e,
0x39,0x36,0x32,0x43,0x33,0x31,0x2e,0x35,0x34,0x20,0x31,0x38,0x2e,0x37,0x39,0x32, 0x37,0x36,0x20,0x31,0x38,0x2e,0x39,0x36,0x32,0x43,0x33,0x31,0x2e,0x35,0x34,0x20,
0x20,0x33,0x32,0x20,0x31,0x38,0x2e,0x32,0x31,0x32,0x20,0x33,0x32,0x20,0x31,0x37, 0x31,0x38,0x2e,0x37,0x39,0x32,0x20,0x33,0x32,0x20,0x31,0x38,0x2e,0x32,0x31,0x32,
0x2e,0x34,0x31,0x36,0x56,0x31,0x34,0x2e,0x36,0x34,0x36,0x43,0x33,0x32,0x20,0x31, 0x20,0x33,0x32,0x20,0x31,0x37,0x2e,0x34,0x31,0x36,0x56,0x31,0x34,0x2e,0x36,0x34,
0x33,0x2e,0x38,0x36,0x36,0x20,0x33,0x31,0x2e,0x35,0x34,0x20,0x31,0x33,0x2e,0x32, 0x36,0x43,0x33,0x32,0x20,0x31,0x33,0x2e,0x38,0x36,0x36,0x20,0x33,0x31,0x2e,0x35,
0x38,0x34,0x20,0x33,0x30,0x2e,0x37,0x36,0x20,0x31,0x33,0x2e,0x31,0x31,0x36,0x4c, 0x34,0x20,0x31,0x33,0x2e,0x32,0x38,0x34,0x20,0x33,0x30,0x2e,0x37,0x36,0x20,0x31,
0x32,0x37,0x2e,0x33,0x39,0x31,0x20,0x31,0x32,0x2e,0x33,0x30,0x34,0x43,0x32,0x37, 0x33,0x2e,0x31,0x31,0x36,0x4c,0x32,0x37,0x2e,0x33,0x39,0x31,0x20,0x31,0x32,0x2e,
0x2e,0x32,0x30,0x34,0x38,0x20,0x31,0x31,0x2e,0x37,0x33,0x35,0x35,0x20,0x32,0x36, 0x33,0x30,0x34,0x43,0x32,0x37,0x2e,0x32,0x30,0x34,0x38,0x20,0x31,0x31,0x2e,0x37,
0x2e,0x39,0x38,0x35,0x31,0x20,0x31,0x31,0x2e,0x31,0x37,0x38,0x35,0x20,0x32,0x36, 0x33,0x35,0x35,0x20,0x32,0x36,0x2e,0x39,0x38,0x35,0x31,0x20,0x31,0x31,0x2e,0x31,
0x2e,0x37,0x33,0x33,0x20,0x31,0x30,0x2e,0x36,0x33,0x36,0x4c,0x32,0x38,0x2e,0x35, 0x37,0x38,0x35,0x20,0x32,0x36,0x2e,0x37,0x33,0x33,0x20,0x31,0x30,0x2e,0x36,0x33,
0x34,0x20,0x37,0x2e,0x36,0x36,0x37,0x43,0x32,0x38,0x2e,0x39,0x36,0x38,0x20,0x37, 0x36,0x4c,0x32,0x38,0x2e,0x35,0x34,0x20,0x37,0x2e,0x36,0x36,0x37,0x43,0x32,0x38,
0x2e,0x30,0x30,0x39,0x20,0x32,0x38,0x2e,0x39,0x32,0x33,0x20,0x36,0x2e,0x32,0x35, 0x2e,0x39,0x36,0x38,0x20,0x37,0x2e,0x30,0x30,0x39,0x20,0x32,0x38,0x2e,0x39,0x32,
0x39,0x20,0x32,0x38,0x2e,0x33,0x35,0x36,0x20,0x35,0x2e,0x37,0x30,0x38,0x4c,0x32, 0x33,0x20,0x36,0x2e,0x32,0x35,0x39,0x20,0x32,0x38,0x2e,0x33,0x35,0x36,0x20,0x35,
0x36,0x2e,0x33,0x35,0x20,0x33,0x2e,0x37,0x33,0x34,0x43,0x32,0x35,0x2e,0x37,0x38, 0x2e,0x37,0x30,0x38,0x4c,0x32,0x36,0x2e,0x33,0x35,0x20,0x33,0x2e,0x37,0x33,0x34,
0x34,0x20,0x33,0x2e,0x32,0x31,0x34,0x20,0x32,0x35,0x2e,0x31,0x31,0x20,0x33,0x2e, 0x43,0x32,0x35,0x2e,0x37,0x38,0x34,0x20,0x33,0x2e,0x32,0x31,0x34,0x20,0x32,0x35,
0x31,0x32,0x32,0x20,0x32,0x34,0x2e,0x34,0x33,0x36,0x20,0x33,0x2e,0x35,0x30,0x34, 0x2e,0x31,0x31,0x20,0x33,0x2e,0x31,0x32,0x32,0x20,0x32,0x34,0x2e,0x34,0x33,0x36,
0x4c,0x32,0x31,0x2e,0x34,0x33,0x36,0x20,0x35,0x2e,0x33,0x35,0x36,0x43,0x32,0x30, 0x20,0x33,0x2e,0x35,0x30,0x34,0x4c,0x32,0x31,0x2e,0x34,0x33,0x36,0x20,0x35,0x2e,
0x2e,0x38,0x39,0x36,0x33,0x20,0x35,0x2e,0x30,0x37,0x36,0x33,0x32,0x20,0x32,0x30, 0x33,0x35,0x36,0x43,0x32,0x30,0x2e,0x38,0x39,0x36,0x33,0x20,0x35,0x2e,0x30,0x37,
0x2e,0x33,0x33,0x32,0x33,0x20,0x34,0x2e,0x38,0x34,0x36,0x30,0x35,0x20,0x31,0x39, 0x36,0x33,0x32,0x20,0x32,0x30,0x2e,0x33,0x33,0x32,0x33,0x20,0x34,0x2e,0x38,0x34,
0x2e,0x37,0x35,0x31,0x20,0x34,0x2e,0x36,0x36,0x38,0x4c,0x31,0x38,0x2e,0x39,0x35, 0x36,0x30,0x35,0x20,0x31,0x39,0x2e,0x37,0x35,0x31,0x20,0x34,0x2e,0x36,0x36,0x38,
0x35,0x20,0x31,0x2e,0x32,0x35,0x35,0x43,0x31,0x38,0x2e,0x37,0x38,0x37,0x20,0x30, 0x4c,0x31,0x38,0x2e,0x39,0x35,0x35,0x20,0x31,0x2e,0x32,0x35,0x35,0x43,0x31,0x38,
0x2e,0x34,0x37,0x35,0x20,0x31,0x38,0x2e,0x32,0x30,0x35,0x20,0x30,0x20,0x31,0x37, 0x2e,0x37,0x38,0x37,0x20,0x30,0x2e,0x34,0x37,0x35,0x20,0x31,0x38,0x2e,0x32,0x30,
0x2e,0x34,0x30,0x39,0x20,0x30,0x48,0x31,0x34,0x2e,0x35,0x39,0x43,0x31,0x33,0x2e, 0x35,0x20,0x30,0x20,0x31,0x37,0x2e,0x34,0x30,0x39,0x20,0x30,0x48,0x31,0x34,0x2e,
0x37,0x39,0x34,0x20,0x30,0x20,0x31,0x33,0x2e,0x32,0x31,0x32,0x20,0x30,0x2e,0x34, 0x35,0x39,0x43,0x31,0x33,0x2e,0x37,0x39,0x34,0x20,0x30,0x20,0x31,0x33,0x2e,0x32,
0x37,0x34,0x20,0x31,0x33,0x2e,0x30,0x32,0x39,0x20,0x31,0x2e,0x32,0x35,0x35,0x4c, 0x31,0x32,0x20,0x30,0x2e,0x34,0x37,0x34,0x20,0x31,0x33,0x2e,0x30,0x32,0x39,0x20,
0x31,0x32,0x2e,0x32,0x33,0x33,0x20,0x34,0x2e,0x36,0x33,0x37,0x43,0x31,0x31,0x2e, 0x31,0x2e,0x32,0x35,0x35,0x4c,0x31,0x32,0x2e,0x32,0x33,0x33,0x20,0x34,0x2e,0x36,
0x36,0x33,0x35,0x20,0x34,0x2e,0x38,0x33,0x36,0x20,0x31,0x31,0x2e,0x30,0x35,0x33, 0x33,0x37,0x43,0x31,0x31,0x2e,0x36,0x33,0x35,0x20,0x34,0x2e,0x38,0x33,0x36,0x20,
0x20,0x35,0x2e,0x30,0x36,0x36,0x20,0x31,0x30,0x2e,0x35,0x33,0x33,0x20,0x35,0x2e, 0x31,0x31,0x2e,0x30,0x35,0x33,0x20,0x35,0x2e,0x30,0x36,0x36,0x20,0x31,0x30,0x2e,
0x33,0x34,0x31,0x4c,0x37,0x2e,0x35,0x36,0x33,0x30,0x32,0x20,0x33,0x2e,0x35,0x30, 0x35,0x33,0x33,0x20,0x35,0x2e,0x33,0x34,0x31,0x4c,0x37,0x2e,0x35,0x36,0x33,0x30,
0x35,0x43,0x36,0x2e,0x38,0x38,0x39,0x30,0x32,0x20,0x33,0x2e,0x31,0x32,0x32,0x20, 0x32,0x20,0x33,0x2e,0x35,0x30,0x35,0x43,0x36,0x2e,0x38,0x38,0x39,0x30,0x32,0x20,
0x36,0x2e,0x32,0x30,0x30,0x30,0x32,0x20,0x33,0x2e,0x31,0x39,0x38,0x20,0x35,0x2e, 0x33,0x2e,0x31,0x32,0x32,0x20,0x36,0x2e,0x32,0x30,0x30,0x30,0x32,0x20,0x33,0x2e,
0x36,0x33,0x33,0x30,0x32,0x20,0x33,0x2e,0x37,0x33,0x35,0x4c,0x33,0x2e,0x36,0x34, 0x31,0x39,0x38,0x20,0x35,0x2e,0x36,0x33,0x33,0x30,0x32,0x20,0x33,0x2e,0x37,0x33,
0x33,0x30,0x32,0x20,0x35,0x2e,0x37,0x30,0x38,0x43,0x33,0x2e,0x30,0x37,0x37,0x30, 0x35,0x4c,0x33,0x2e,0x36,0x34,0x33,0x30,0x32,0x20,0x35,0x2e,0x37,0x30,0x38,0x43,
0x32,0x20,0x36,0x2e,0x32,0x35,0x39,0x20,0x33,0x2e,0x30,0x31,0x35,0x30,0x32,0x20, 0x33,0x2e,0x30,0x37,0x37,0x30,0x32,0x20,0x36,0x2e,0x32,0x35,0x39,0x20,0x33,0x2e,
0x37,0x2e,0x30,0x30,0x39,0x20,0x33,0x2e,0x34,0x35,0x39,0x30,0x32,0x20,0x37,0x2e, 0x30,0x31,0x35,0x30,0x32,0x20,0x37,0x2e,0x30,0x30,0x39,0x20,0x33,0x2e,0x34,0x35,
0x36,0x36,0x38,0x4c,0x35,0x2e,0x32,0x35,0x31,0x30,0x32,0x20,0x31,0x30,0x2e,0x36, 0x39,0x30,0x32,0x20,0x37,0x2e,0x36,0x36,0x38,0x4c,0x35,0x2e,0x32,0x35,0x31,0x30,
0x33,0x36,0x43,0x35,0x2e,0x30,0x35,0x31,0x30,0x32,0x20,0x31,0x31,0x2e,0x31,0x31, 0x32,0x20,0x31,0x30,0x2e,0x36,0x33,0x36,0x43,0x35,0x2e,0x30,0x35,0x31,0x30,0x32,
0x31,0x20,0x34,0x2e,0x38,0x30,0x37,0x30,0x32,0x20,0x31,0x31,0x2e,0x36,0x37,0x36, 0x20,0x31,0x31,0x2e,0x31,0x31,0x31,0x20,0x34,0x2e,0x38,0x30,0x37,0x30,0x32,0x20,
0x20,0x34,0x2e,0x36,0x30,0x38,0x30,0x32,0x20,0x31,0x32,0x2e,0x33,0x30,0x34,0x4c, 0x31,0x31,0x2e,0x36,0x37,0x36,0x20,0x34,0x2e,0x36,0x30,0x38,0x30,0x32,0x20,0x31,
0x31,0x2e,0x32,0x33,0x39,0x30,0x32,0x20,0x31,0x33,0x2e,0x31,0x31,0x35,0x43,0x30, 0x32,0x2e,0x33,0x30,0x34,0x4c,0x31,0x2e,0x32,0x33,0x39,0x30,0x32,0x20,0x31,0x33,
0x2e,0x34,0x35,0x39,0x30,0x32,0x33,0x20,0x31,0x33,0x2e,0x32,0x38,0x34,0x20,0x2d, 0x2e,0x31,0x31,0x35,0x43,0x30,0x2e,0x34,0x35,0x39,0x30,0x32,0x33,0x20,0x31,0x33,
0x30,0x2e,0x30,0x30,0x30,0x39,0x37,0x36,0x35,0x36,0x32,0x20,0x31,0x33,0x2e,0x38, 0x2e,0x32,0x38,0x34,0x20,0x2d,0x30,0x2e,0x30,0x30,0x30,0x39,0x37,0x36,0x35,0x36,
0x36,0x35,0x20,0x2d,0x30,0x2e,0x30,0x30,0x30,0x39,0x37,0x36,0x35,0x36,0x32,0x20, 0x32,0x20,0x31,0x33,0x2e,0x38,0x36,0x35,0x20,0x2d,0x30,0x2e,0x30,0x30,0x30,0x39,
0x31,0x34,0x2e,0x36,0x34,0x35,0x56,0x31,0x37,0x2e,0x34,0x31,0x35,0x43,0x2d,0x30, 0x37,0x36,0x35,0x36,0x32,0x20,0x31,0x34,0x2e,0x36,0x34,0x35,0x56,0x31,0x37,0x2e,
0x2e,0x30,0x30,0x30,0x39,0x37,0x36,0x35,0x36,0x32,0x20,0x31,0x38,0x2e,0x32,0x31, 0x34,0x31,0x35,0x43,0x2d,0x30,0x2e,0x30,0x30,0x30,0x39,0x37,0x36,0x35,0x36,0x32,
0x31,0x20,0x30,0x2e,0x34,0x35,0x39,0x30,0x32,0x33,0x20,0x31,0x38,0x2e,0x37,0x39, 0x20,0x31,0x38,0x2e,0x32,0x31,0x31,0x20,0x30,0x2e,0x34,0x35,0x39,0x30,0x32,0x33,
0x33,0x20,0x31,0x2e,0x32,0x33,0x39,0x30,0x32,0x20,0x31,0x38,0x2e,0x39,0x36,0x31, 0x20,0x31,0x38,0x2e,0x37,0x39,0x33,0x20,0x31,0x2e,0x32,0x33,0x39,0x30,0x32,0x20,
0x4c,0x34,0x2e,0x36,0x33,0x39,0x30,0x32,0x20,0x31,0x39,0x2e,0x37,0x37,0x32,0x43, 0x31,0x38,0x2e,0x39,0x36,0x31,0x4c,0x34,0x2e,0x36,0x33,0x39,0x30,0x32,0x20,0x31,
0x34,0x2e,0x38,0x30,0x37,0x30,0x32,0x20,0x32,0x30,0x2e,0x33,0x32,0x33,0x20,0x35, 0x39,0x2e,0x37,0x37,0x32,0x43,0x34,0x2e,0x38,0x30,0x37,0x30,0x32,0x20,0x32,0x30,
0x2e,0x30,0x33,0x36,0x30,0x32,0x20,0x32,0x30,0x2e,0x38,0x37,0x34,0x20,0x35,0x2e, 0x2e,0x33,0x32,0x33,0x20,0x35,0x2e,0x30,0x33,0x36,0x30,0x32,0x20,0x32,0x30,0x2e,
0x32,0x38,0x31,0x30,0x32,0x20,0x32,0x31,0x2e,0x34,0x31,0x4c,0x33,0x2e,0x34,0x39, 0x38,0x37,0x34,0x20,0x35,0x2e,0x32,0x38,0x31,0x30,0x32,0x20,0x32,0x31,0x2e,0x34,
0x30,0x30,0x32,0x20,0x32,0x34,0x2e,0x33,0x33,0x33,0x43,0x33,0x2e,0x30,0x33,0x30, 0x31,0x4c,0x33,0x2e,0x34,0x39,0x30,0x30,0x32,0x20,0x32,0x34,0x2e,0x33,0x33,0x33,
0x30,0x32,0x20,0x32,0x34,0x2e,0x39,0x39,0x31,0x20,0x33,0x2e,0x31,0x32,0x32,0x30, 0x43,0x33,0x2e,0x30,0x33,0x30,0x30,0x32,0x20,0x32,0x34,0x2e,0x39,0x39,0x31,0x20,
0x32,0x20,0x32,0x35,0x2e,0x37,0x38,0x37,0x20,0x33,0x2e,0x36,0x37,0x34,0x30,0x32, 0x33,0x2e,0x31,0x32,0x32,0x30,0x32,0x20,0x32,0x35,0x2e,0x37,0x38,0x37,0x20,0x33,
0x20,0x32,0x36,0x2e,0x33,0x33,0x38,0x4c,0x35,0x2e,0x36,0x33,0x34,0x30,0x32,0x20, 0x2e,0x36,0x37,0x34,0x30,0x32,0x20,0x32,0x36,0x2e,0x33,0x33,0x38,0x4c,0x35,0x2e,
0x32,0x38,0x2e,0x32,0x39,0x37,0x43,0x36,0x2e,0x31,0x38,0x34,0x30,0x32,0x20,0x32, 0x36,0x33,0x34,0x30,0x32,0x20,0x32,0x38,0x2e,0x32,0x39,0x37,0x43,0x36,0x2e,0x31,
0x38,0x2e,0x38,0x34,0x37,0x20,0x36,0x2e,0x39,0x35,0x30,0x30,0x32,0x20,0x32,0x38, 0x38,0x34,0x30,0x32,0x20,0x32,0x38,0x2e,0x38,0x34,0x37,0x20,0x36,0x2e,0x39,0x35,
0x2e,0x39,0x30,0x39,0x20,0x37,0x2e,0x36,0x30,0x39,0x30,0x32,0x20,0x32,0x38,0x2e, 0x30,0x30,0x32,0x20,0x32,0x38,0x2e,0x39,0x30,0x39,0x20,0x37,0x2e,0x36,0x30,0x39,
0x34,0x39,0x35,0x4c,0x31,0x30,0x2e,0x35,0x34,0x39,0x20,0x32,0x36,0x2e,0x36,0x39, 0x30,0x32,0x20,0x32,0x38,0x2e,0x34,0x39,0x35,0x4c,0x31,0x30,0x2e,0x35,0x34,0x39,
0x43,0x31,0x31,0x2e,0x30,0x36,0x39,0x20,0x32,0x36,0x2e,0x39,0x33,0x34,0x20,0x31, 0x20,0x32,0x36,0x2e,0x36,0x39,0x43,0x31,0x31,0x2e,0x30,0x36,0x39,0x20,0x32,0x36,
0x31,0x2e,0x36,0x33,0x35,0x20,0x32,0x37,0x2e,0x31,0x36,0x34,0x20,0x31,0x32,0x2e, 0x2e,0x39,0x33,0x34,0x20,0x31,0x31,0x2e,0x36,0x33,0x35,0x20,0x32,0x37,0x2e,0x31,
0x32,0x33,0x32,0x20,0x32,0x37,0x2e,0x33,0x36,0x33,0x4c,0x31,0x33,0x2e,0x30,0x32, 0x36,0x34,0x20,0x31,0x32,0x2e,0x32,0x33,0x32,0x20,0x32,0x37,0x2e,0x33,0x36,0x33,
0x39,0x20,0x33,0x30,0x2e,0x37,0x33,0x43,0x31,0x33,0x2e,0x32,0x31,0x32,0x20,0x33, 0x4c,0x31,0x33,0x2e,0x30,0x32,0x39,0x20,0x33,0x30,0x2e,0x37,0x33,0x43,0x31,0x33,
0x31,0x2e,0x35,0x31,0x20,0x31,0x33,0x2e,0x37,0x39,0x35,0x20,0x33,0x31,0x2e,0x39, 0x2e,0x32,0x31,0x32,0x20,0x33,0x31,0x2e,0x35,0x31,0x20,0x31,0x33,0x2e,0x37,0x39,
0x38,0x35,0x20,0x31,0x34,0x2e,0x35,0x39,0x31,0x20,0x33,0x31,0x2e,0x39,0x38,0x35, 0x35,0x20,0x33,0x31,0x2e,0x39,0x38,0x35,0x20,0x31,0x34,0x2e,0x35,0x39,0x31,0x20,
0x5a,0x4d,0x31,0x36,0x20,0x32,0x31,0x2e,0x33,0x39,0x35,0x43,0x31,0x33,0x2e,0x30, 0x33,0x31,0x2e,0x39,0x38,0x35,0x5a,0x4d,0x31,0x36,0x20,0x32,0x31,0x2e,0x33,0x39,
0x33,0x20,0x32,0x31,0x2e,0x33,0x39,0x35,0x20,0x31,0x30,0x2e,0x35,0x39,0x35,0x20, 0x35,0x43,0x31,0x33,0x2e,0x30,0x33,0x20,0x32,0x31,0x2e,0x33,0x39,0x35,0x20,0x31,
0x31,0x38,0x2e,0x39,0x34,0x36,0x20,0x31,0x30,0x2e,0x35,0x39,0x35,0x20,0x31,0x35, 0x30,0x2e,0x35,0x39,0x35,0x20,0x31,0x38,0x2e,0x39,0x34,0x36,0x20,0x31,0x30,0x2e,
0x2e,0x39,0x37,0x37,0x43,0x31,0x30,0x2e,0x35,0x39,0x35,0x20,0x31,0x33,0x2e,0x30, 0x35,0x39,0x35,0x20,0x31,0x35,0x2e,0x39,0x37,0x37,0x43,0x31,0x30,0x2e,0x35,0x39,
0x32,0x33,0x20,0x31,0x33,0x2e,0x30,0x33,0x20,0x31,0x30,0x2e,0x35,0x39,0x20,0x31, 0x35,0x20,0x31,0x33,0x2e,0x30,0x32,0x33,0x20,0x31,0x33,0x2e,0x30,0x33,0x20,0x31,
0x36,0x20,0x31,0x30,0x2e,0x35,0x39,0x43,0x31,0x38,0x2e,0x39,0x37,0x20,0x31,0x30, 0x30,0x2e,0x35,0x39,0x20,0x31,0x36,0x20,0x31,0x30,0x2e,0x35,0x39,0x43,0x31,0x38,
0x2e,0x35,0x39,0x20,0x32,0x31,0x2e,0x34,0x30,0x35,0x20,0x31,0x33,0x2e,0x30,0x32, 0x2e,0x39,0x37,0x20,0x31,0x30,0x2e,0x35,0x39,0x20,0x32,0x31,0x2e,0x34,0x30,0x35,
0x34,0x20,0x32,0x31,0x2e,0x34,0x30,0x35,0x20,0x31,0x35,0x2e,0x39,0x37,0x37,0x43, 0x20,0x31,0x33,0x2e,0x30,0x32,0x34,0x20,0x32,0x31,0x2e,0x34,0x30,0x35,0x20,0x31,
0x32,0x31,0x2e,0x34,0x30,0x35,0x20,0x31,0x38,0x2e,0x39,0x34,0x36,0x20,0x31,0x38, 0x35,0x2e,0x39,0x37,0x37,0x43,0x32,0x31,0x2e,0x34,0x30,0x35,0x20,0x31,0x38,0x2e,
0x2e,0x39,0x37,0x20,0x32,0x31,0x2e,0x33,0x39,0x35,0x20,0x31,0x36,0x20,0x32,0x31, 0x39,0x34,0x36,0x20,0x31,0x38,0x2e,0x39,0x37,0x20,0x32,0x31,0x2e,0x33,0x39,0x35,
0x2e,0x33,0x39,0x35,0x5a,0x22,0x20,0x66,0x69,0x6c,0x6c,0x3d,0x22,0x23,0x31,0x33, 0x20,0x31,0x36,0x20,0x32,0x31,0x2e,0x33,0x39,0x35,0x5a,0x22,0x20,0x66,0x69,0x6c,
0x33,0x38,0x35,0x46,0x22,0x2f,0x3e,0xa,0x3c,0x2f,0x67,0x3e,0xa,0x3c,0x2f,0x67, 0x6c,0x3d,0x22,0x23,0x31,0x33,0x33,0x38,0x35,0x46,0x22,0x2f,0x3e,0xd,0xa,0x3c,
0x3e,0xa,0x3c,0x64,0x65,0x66,0x73,0x3e,0xa,0x3c,0x63,0x6c,0x69,0x70,0x50,0x61, 0x2f,0x67,0x3e,0xd,0xa,0x3c,0x2f,0x67,0x3e,0xd,0xa,0x3c,0x64,0x65,0x66,0x73,
0x74,0x68,0x20,0x69,0x64,0x3d,0x22,0x63,0x6c,0x69,0x70,0x30,0x5f,0x34,0x5f,0x31, 0x3e,0xd,0xa,0x3c,0x63,0x6c,0x69,0x70,0x50,0x61,0x74,0x68,0x20,0x69,0x64,0x3d,
0x31,0x32,0x22,0x3e,0xa,0x3c,0x72,0x65,0x63,0x74,0x20,0x77,0x69,0x64,0x74,0x68, 0x22,0x63,0x6c,0x69,0x70,0x30,0x5f,0x34,0x5f,0x31,0x31,0x32,0x22,0x3e,0xd,0xa,
0x3d,0x22,0x33,0x32,0x22,0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3d,0x22,0x33,0x32, 0x3c,0x72,0x65,0x63,0x74,0x20,0x77,0x69,0x64,0x74,0x68,0x3d,0x22,0x33,0x32,0x22,
0x22,0x20,0x66,0x69,0x6c,0x6c,0x3d,0x22,0x77,0x68,0x69,0x74,0x65,0x22,0x2f,0x3e, 0x20,0x68,0x65,0x69,0x67,0x68,0x74,0x3d,0x22,0x33,0x32,0x22,0x20,0x66,0x69,0x6c,
0xa,0x3c,0x2f,0x63,0x6c,0x69,0x70,0x50,0x61,0x74,0x68,0x3e,0xa,0x3c,0x2f,0x64, 0x6c,0x3d,0x22,0x77,0x68,0x69,0x74,0x65,0x22,0x2f,0x3e,0xd,0xa,0x3c,0x2f,0x63,
0x65,0x66,0x73,0x3e,0xa,0x3c,0x2f,0x73,0x76,0x67,0x3e,0xa, 0x6c,0x69,0x70,0x50,0x61,0x74,0x68,0x3e,0xd,0xa,0x3c,0x2f,0x64,0x65,0x66,0x73,
0x3e,0xd,0xa,0x3c,0x2f,0x73,0x76,0x67,0x3e,0xd,0xa,
// fema-wing.svg // fema-wing.svg
0x0,0x0,0x34,0x55, 0x0,0x0,0x34,0x55,
0x3c, 0x3c,
@ -1232,11 +1342,118 @@ static const unsigned char qt_resource_data[] = {
0x65,0x22,0x2f,0x3e,0xd,0xa,0x3c,0x2f,0x63,0x6c,0x69,0x70,0x50,0x61,0x74,0x68, 0x65,0x22,0x2f,0x3e,0xd,0xa,0x3c,0x2f,0x63,0x6c,0x69,0x70,0x50,0x61,0x74,0x68,
0x3e,0xd,0xa,0x3c,0x2f,0x64,0x65,0x66,0x73,0x3e,0xd,0xa,0x3c,0x2f,0x73,0x76, 0x3e,0xd,0xa,0x3c,0x2f,0x64,0x65,0x66,0x73,0x3e,0xd,0xa,0x3c,0x2f,0x73,0x76,
0x67,0x3e,0xd,0xa, 0x67,0x3e,0xd,0xa,
// map.qml
0x0,0x0,0x2,0xf5,
0x0,
0x0,0xa,0x7,0x78,0xda,0xad,0x55,0x4d,0x6b,0xdb,0x40,0x10,0xbd,0x7,0xf2,0x1f,
0x16,0x9f,0xec,0x7c,0x6c,0xec,0x80,0xa1,0x28,0xd,0x25,0x38,0x94,0x16,0x1c,0x70,
0xda,0x43,0xe3,0xe3,0x56,0x9a,0x48,0x4b,0xa5,0xdd,0x65,0x77,0x64,0xc7,0x2d,0xfd,
0xef,0x9d,0x95,0x2c,0x5b,0xb2,0x64,0x39,0x87,0x2e,0x6,0xcb,0x3b,0xef,0x8d,0xe7,
0xe3,0xcd,0x48,0x66,0x46,0x5b,0x64,0xcf,0xf8,0x9c,0xcb,0xf0,0x17,0xbb,0xe5,0x93,
0xe9,0xf9,0x99,0xac,0x2e,0xe7,0x3a,0x14,0x28,0xb5,0x62,0xd3,0xe6,0xfd,0x42,0x3b,
0xe9,0xef,0xa5,0x8a,0xb7,0xa6,0xf3,0xb3,0xaf,0x8,0x19,0xfb,0x73,0x7e,0xc6,0xe8,
0x8,0x15,0x26,0xda,0x3a,0xfe,0x2a,0xd3,0x34,0x60,0x46,0x58,0x50,0xe8,0x31,0xde,
0xf6,0x24,0x4c,0x5,0xf3,0x47,0x46,0x1,0xcb,0x84,0xd9,0x5f,0x74,0x73,0x2b,0xab,
0x49,0xf3,0x58,0xaa,0x80,0x2d,0x8a,0xef,0xba,0x23,0x7f,0x94,0xc8,0x20,0x60,0x3,
0xed,0xb2,0x41,0xd3,0x50,0xc2,0x17,0xc2,0x12,0x0,0xc1,0x1e,0xf2,0x9a,0x5c,0x4e,
0xf1,0x18,0x4a,0x8d,0x87,0xb9,0x43,0x9d,0xf1,0x44,0x3b,0x1c,0xb4,0x9,0x2b,0x91,
0xe6,0x9e,0x91,0x20,0x1a,0x17,0xdc,0xdc,0xa0,0x4c,0x81,0x6b,0x3,0xca,0xa1,0x5,
0x40,0x72,0xc2,0xb5,0x8d,0x6f,0xe,0x98,0x7f,0xff,0x47,0x60,0xc6,0xea,0x95,0x8c,
0xc0,0x3a,0xb,0xc6,0xb7,0x42,0xdb,0xd,0x8f,0xa4,0x13,0x3f,0x53,0x88,0x7a,0x22,
0x45,0x9b,0xc3,0xf1,0x70,0x6a,0x8f,0x21,0xd5,0x1c,0x6c,0xd0,0xec,0x34,0xf,0xb5,
0xb6,0x91,0x54,0x2,0x61,0x48,0x81,0xcc,0xa,0xc,0x4f,0x49,0x20,0x98,0x47,0x70,
0xc5,0x6a,0x77,0x5a,0xc5,0xc5,0xe5,0x68,0xef,0xf2,0xb7,0xd6,0xd9,0x1c,0x56,0x40,
0x3d,0xf5,0x7a,0xa9,0xae,0xbf,0x81,0x1,0xd1,0x4e,0x3c,0xd3,0x91,0x47,0x1a,0x2d,
0x15,0xba,0xb9,0x74,0xd8,0x8c,0x9a,0x34,0x54,0xe8,0xb5,0xae,0xb9,0xfa,0xf1,0xa2,
0x2a,0xb8,0x6d,0xd3,0x3e,0x89,0xa0,0xfc,0x97,0x47,0x81,0xa2,0xd,0x2b,0x55,0xb8,
0xf0,0x3e,0xf8,0x1b,0x85,0x3c,0xee,0x87,0x6c,0x4a,0x48,0x1b,0xe4,0x74,0x6e,0x43,
0xf0,0x71,0x6,0x94,0x6b,0x88,0x42,0xc5,0x29,0x74,0x85,0xec,0xcf,0x5a,0x46,0x98,
0x4,0xec,0x76,0xdc,0x6d,0x4e,0x40,0xc6,0x9,0x1e,0xb7,0x87,0x3a,0xd5,0xd4,0xb4,
0x81,0xed,0x14,0x81,0x3f,0x56,0x44,0x32,0x77,0xdd,0xe9,0xfc,0xed,0x13,0xc6,0xfe,
0xc7,0x93,0xce,0x1d,0x3c,0x58,0x10,0x87,0x49,0x14,0x83,0x5c,0x19,0x9b,0xa6,0xfe,
0x91,0xf6,0x27,0xb2,0x22,0xe6,0x28,0x6c,0xc,0xb8,0x5d,0x7,0x4d,0x3b,0x9,0xde,
0x80,0xc5,0xd,0x23,0xdf,0x29,0x73,0x84,0xc4,0xb9,0x28,0xa1,0x3c,0x6c,0xa,0xf1,
0x34,0x51,0xab,0x26,0xb1,0x52,0xeb,0x49,0xe6,0x4b,0xc0,0xc6,0x27,0x41,0xcb,0x2,
0xd4,0x7,0xf3,0xa3,0xf0,0x59,0x84,0xe8,0x9b,0xf5,0x24,0x30,0xe1,0x46,0xaf,0x87,
0xb7,0xc5,0x0,0xf1,0xdd,0x98,0xb0,0x6b,0x9a,0x93,0xd1,0xa1,0xa3,0x30,0xb7,0x4e,
0xdb,0xef,0x89,0x30,0xe0,0xa7,0x93,0x3f,0x58,0xab,0xd7,0xb3,0xe2,0xf2,0x10,0xaa,
0xd5,0xc2,0x82,0x73,0x40,0x6d,0xe9,0x90,0x5b,0x55,0x42,0x76,0x7f,0xba,0x86,0x7b,
0x3c,0xbd,0x9,0xee,0xdf,0x51,0xba,0x1d,0xe1,0xc5,0xc3,0x2b,0x4d,0xf0,0xe2,0xe9,
0xe5,0x8,0x74,0xd9,0x86,0x2e,0x5b,0x8a,0x6c,0x65,0xb8,0xdd,0x4e,0xb3,0x84,0xe6,
0xea,0x48,0xa6,0x2b,0x61,0x59,0xf4,0xd6,0x11,0x8,0x55,0xb8,0xc,0xf2,0x8,0x67,
0xd3,0x11,0x51,0xc5,0x59,0x76,0xcd,0xba,0x67,0xbd,0x16,0x7d,0x25,0x66,0xbd,0xb1,
0x93,0x29,0xf1,0x1a,0xdd,0x1d,0xb1,0xb,0x36,0xe6,0x63,0x3a,0xd3,0xbb,0x2e,0x57,
0xfb,0x1a,0x93,0xab,0xa3,0x5b,0xb8,0x7b,0xc8,0x77,0xad,0xbd,0xf6,0x39,0x5c,0xb0,
0xeb,0x32,0xa6,0xab,0x3e,0x34,0x35,0xf6,0xd2,0x57,0x69,0x87,0x6e,0x83,0x47,0x27,
0xbb,0xf1,0x23,0x1,0xbf,0xb4,0xbb,0xf6,0xf1,0x2b,0x1b,0xae,0xbd,0x95,0x17,0xfb,
0xef,0x11,0x52,0x14,0x7c,0xc3,0x3e,0xb2,0xf1,0xe8,0xd8,0x2e,0x3c,0x18,0x86,0x7b,
0x36,0xe9,0x58,0x59,0xc,0x52,0x7,0xef,0xf3,0x70,0xd9,0xed,0xa1,0xbb,0xf4,0x7b,
0xda,0xb6,0x91,0x99,0x78,0x1b,0x4e,0xae,0xb6,0xcf,0x52,0xd,0x1b,0x20,0x6a,0xf0,
0x87,0xd1,0xe8,0xee,0x64,0x7d,0x66,0x5a,0xa1,0x90,0xca,0x15,0x2b,0xb4,0x4f,0xb2,
0xb5,0x29,0x6f,0x68,0x30,0xac,0x3b,0x60,0x9f,0xfc,0x2,0x98,0xa5,0x9a,0x46,0xfc,
0x8b,0x50,0x51,0xb9,0x5,0x58,0x7b,0x2d,0xf4,0xbf,0xee,0xe9,0x8b,0x3e,0xff,0x0,
0x94,0xce,0x8c,0xed,
// map.qml
0x0,0x0,0x2,0xf5,
0x0,
0x0,0xa,0x7,0x78,0xda,0xad,0x55,0x4d,0x6b,0xdb,0x40,0x10,0xbd,0x7,0xf2,0x1f,
0x16,0x9f,0xec,0x7c,0x6c,0xec,0x80,0xa1,0x28,0xd,0x25,0x38,0x94,0x16,0x1c,0x70,
0xda,0x43,0xe3,0xe3,0x56,0x9a,0x48,0x4b,0xa5,0xdd,0x65,0x77,0x64,0xc7,0x2d,0xfd,
0xef,0x9d,0x95,0x2c,0x5b,0xb2,0x64,0x39,0x87,0x2e,0x6,0xcb,0x3b,0xef,0x8d,0xe7,
0xe3,0xcd,0x48,0x66,0x46,0x5b,0x64,0xcf,0xf8,0x9c,0xcb,0xf0,0x17,0xbb,0xe5,0x93,
0xe9,0xf9,0x99,0xac,0x2e,0xe7,0x3a,0x14,0x28,0xb5,0x62,0xd3,0xe6,0xfd,0x42,0x3b,
0xe9,0xef,0xa5,0x8a,0xb7,0xa6,0xf3,0xb3,0xaf,0x8,0x19,0xfb,0x73,0x7e,0xc6,0xe8,
0x8,0x15,0x26,0xda,0x3a,0xfe,0x2a,0xd3,0x34,0x60,0x46,0x58,0x50,0xe8,0x31,0xde,
0xf6,0x24,0x4c,0x5,0xf3,0x47,0x46,0x1,0xcb,0x84,0xd9,0x5f,0x74,0x73,0x2b,0xab,
0x49,0xf3,0x58,0xaa,0x80,0x2d,0x8a,0xef,0xba,0x23,0x7f,0x94,0xc8,0x20,0x60,0x3,
0xed,0xb2,0x41,0xd3,0x50,0xc2,0x17,0xc2,0x12,0x0,0xc1,0x1e,0xf2,0x9a,0x5c,0x4e,
0xf1,0x18,0x4a,0x8d,0x87,0xb9,0x43,0x9d,0xf1,0x44,0x3b,0x1c,0xb4,0x9,0x2b,0x91,
0xe6,0x9e,0x91,0x20,0x1a,0x17,0xdc,0xdc,0xa0,0x4c,0x81,0x6b,0x3,0xca,0xa1,0x5,
0x40,0x72,0xc2,0xb5,0x8d,0x6f,0xe,0x98,0x7f,0xff,0x47,0x60,0xc6,0xea,0x95,0x8c,
0xc0,0x3a,0xb,0xc6,0xb7,0x42,0xdb,0xd,0x8f,0xa4,0x13,0x3f,0x53,0x88,0x7a,0x22,
0x45,0x9b,0xc3,0xf1,0x70,0x6a,0x8f,0x21,0xd5,0x1c,0x6c,0xd0,0xec,0x34,0xf,0xb5,
0xb6,0x91,0x54,0x2,0x61,0x48,0x81,0xcc,0xa,0xc,0x4f,0x49,0x20,0x98,0x47,0x70,
0xc5,0x6a,0x77,0x5a,0xc5,0xc5,0xe5,0x68,0xef,0xf2,0xb7,0xd6,0xd9,0x1c,0x56,0x40,
0x3d,0xf5,0x7a,0xa9,0xae,0xbf,0x81,0x1,0xd1,0x4e,0x3c,0xd3,0x91,0x47,0x1a,0x2d,
0x15,0xba,0xb9,0x74,0xd8,0x8c,0x9a,0x34,0x54,0xe8,0xb5,0xae,0xb9,0xfa,0xf1,0xa2,
0x2a,0xb8,0x6d,0xd3,0x3e,0x89,0xa0,0xfc,0x97,0x47,0x81,0xa2,0xd,0x2b,0x55,0xb8,
0xf0,0x3e,0xf8,0x1b,0x85,0x3c,0xee,0x87,0x6c,0x4a,0x48,0x1b,0xe4,0x74,0x6e,0x43,
0xf0,0x71,0x6,0x94,0x6b,0x88,0x42,0xc5,0x29,0x74,0x85,0xec,0xcf,0x5a,0x46,0x98,
0x4,0xec,0x76,0xdc,0x6d,0x4e,0x40,0xc6,0x9,0x1e,0xb7,0x87,0x3a,0xd5,0xd4,0xb4,
0x81,0xed,0x14,0x81,0x3f,0x56,0x44,0x32,0x77,0xdd,0xe9,0xfc,0xed,0x13,0xc6,0xfe,
0xc7,0x93,0xce,0x1d,0x3c,0x58,0x10,0x87,0x49,0x14,0x83,0x5c,0x19,0x9b,0xa6,0xfe,
0x91,0xf6,0x27,0xb2,0x22,0xe6,0x28,0x6c,0xc,0xb8,0x5d,0x7,0x4d,0x3b,0x9,0xde,
0x80,0xc5,0xd,0x23,0xdf,0x29,0x73,0x84,0xc4,0xb9,0x28,0xa1,0x3c,0x6c,0xa,0xf1,
0x34,0x51,0xab,0x26,0xb1,0x52,0xeb,0x49,0xe6,0x4b,0xc0,0xc6,0x27,0x41,0xcb,0x2,
0xd4,0x7,0xf3,0xa3,0xf0,0x59,0x84,0xe8,0x9b,0xf5,0x24,0x30,0xe1,0x46,0xaf,0x87,
0xb7,0xc5,0x0,0xf1,0xdd,0x98,0xb0,0x6b,0x9a,0x93,0xd1,0xa1,0xa3,0x30,0xb7,0x4e,
0xdb,0xef,0x89,0x30,0xe0,0xa7,0x93,0x3f,0x58,0xab,0xd7,0xb3,0xe2,0xf2,0x10,0xaa,
0xd5,0xc2,0x82,0x73,0x40,0x6d,0xe9,0x90,0x5b,0x55,0x42,0x76,0x7f,0xba,0x86,0x7b,
0x3c,0xbd,0x9,0xee,0xdf,0x51,0xba,0x1d,0xe1,0xc5,0xc3,0x2b,0x4d,0xf0,0xe2,0xe9,
0xe5,0x8,0x74,0xd9,0x86,0x2e,0x5b,0x8a,0x6c,0x65,0xb8,0xdd,0x4e,0xb3,0x84,0xe6,
0xea,0x48,0xa6,0x2b,0x61,0x59,0xf4,0xd6,0x11,0x8,0x55,0xb8,0xc,0xf2,0x8,0x67,
0xd3,0x11,0x51,0xc5,0x59,0x76,0xcd,0xba,0x67,0xbd,0x16,0x7d,0x25,0x66,0xbd,0xb1,
0x93,0x29,0xf1,0x1a,0xdd,0x1d,0xb1,0xb,0x36,0xe6,0x63,0x3a,0xd3,0xbb,0x2e,0x57,
0xfb,0x1a,0x93,0xab,0xa3,0x5b,0xb8,0x7b,0xc8,0x77,0xad,0xbd,0xf6,0x39,0x5c,0xb0,
0xeb,0x32,0xa6,0xab,0x3e,0x34,0x35,0xf6,0xd2,0x57,0x69,0x87,0x6e,0x83,0x47,0x27,
0xbb,0xf1,0x23,0x1,0xbf,0xb4,0xbb,0xf6,0xf1,0x2b,0x1b,0xae,0xbd,0x95,0x17,0xfb,
0xef,0x11,0x52,0x14,0x7c,0xc3,0x3e,0xb2,0xf1,0xe8,0xd8,0x2e,0x3c,0x18,0x86,0x7b,
0x36,0xe9,0x58,0x59,0xc,0x52,0x7,0xef,0xf3,0x70,0xd9,0xed,0xa1,0xbb,0xf4,0x7b,
0xda,0xb6,0x91,0x99,0x78,0x1b,0x4e,0xae,0xb6,0xcf,0x52,0xd,0x1b,0x20,0x6a,0xf0,
0x87,0xd1,0xe8,0xee,0x64,0x7d,0x66,0x5a,0xa1,0x90,0xca,0x15,0x2b,0xb4,0x4f,0xb2,
0xb5,0x29,0x6f,0x68,0x30,0xac,0x3b,0x60,0x9f,0xfc,0x2,0x98,0xa5,0x9a,0x46,0xfc,
0x8b,0x50,0x51,0xb9,0x5,0x58,0x7b,0x2d,0xf4,0xbf,0xee,0xe9,0x8b,0x3e,0xff,0x0,
0x94,0xce,0x8c,0xed,
}; };
static const unsigned char qt_resource_name[] = { static const unsigned char qt_resource_name[] = {
// visual // qml
0x0,0x3,
0x0,0x0,0x78,0x3c,
0x0,0x71,
0x0,0x6d,0x0,0x6c,
// visual
0x0,0x6, 0x0,0x6,
0x7,0xd0,0xab,0x7c, 0x7,0xd0,0xab,0x7c,
0x0,0x76, 0x0,0x76,
@ -1261,6 +1478,11 @@ static const unsigned char qt_resource_name[] = {
0xd,0x4e,0x7b,0x47, 0xd,0x4e,0x7b,0x47,
0x0,0x62, 0x0,0x62,
0x0,0x72,0x0,0x61,0x0,0x6e,0x0,0x63,0x0,0x68,0x0,0x2d,0x0,0x65,0x0,0x6e,0x0,0x64,0x0,0x2e,0x0,0x70,0x0,0x6e,0x0,0x67, 0x0,0x72,0x0,0x61,0x0,0x6e,0x0,0x63,0x0,0x68,0x0,0x2d,0x0,0x65,0x0,0x6e,0x0,0x64,0x0,0x2e,0x0,0x70,0x0,0x6e,0x0,0x67,
// delete.png
0x0,0xa,
0xc,0xad,0xf,0x7,
0x0,0x64,
0x0,0x65,0x0,0x6c,0x0,0x65,0x0,0x74,0x0,0x65,0x0,0x2e,0x0,0x70,0x0,0x6e,0x0,0x67,
// arrowRight.png // arrowRight.png
0x0,0xe, 0x0,0xe,
0xe,0xda,0xdc,0x87, 0xe,0xda,0xdc,0x87,
@ -1281,6 +1503,11 @@ static const unsigned char qt_resource_name[] = {
0xc,0x2f,0x5a,0x47, 0xc,0x2f,0x5a,0x47,
0x0,0x62, 0x0,0x62,
0x0,0x65,0x0,0x6c,0x0,0x6c,0x0,0x2e,0x0,0x70,0x0,0x6e,0x0,0x67, 0x0,0x65,0x0,0x6c,0x0,0x6c,0x0,0x2e,0x0,0x70,0x0,0x6e,0x0,0x67,
// open.png
0x0,0x8,
0x6,0xc1,0x59,0x87,
0x0,0x6f,
0x0,0x70,0x0,0x65,0x0,0x6e,0x0,0x2e,0x0,0x70,0x0,0x6e,0x0,0x67,
// branch-more.png // branch-more.png
0x0,0xf, 0x0,0xf,
0x6,0x16,0x91,0xe7, 0x6,0x16,0x91,0xe7,
@ -1291,6 +1518,11 @@ static const unsigned char qt_resource_name[] = {
0x1,0x64,0x80,0x7, 0x1,0x64,0x80,0x7,
0x0,0x63, 0x0,0x63,
0x0,0x68,0x0,0x65,0x0,0x63,0x0,0x6b,0x0,0x65,0x0,0x64,0x0,0x2e,0x0,0x70,0x0,0x6e,0x0,0x67, 0x0,0x68,0x0,0x65,0x0,0x63,0x0,0x6b,0x0,0x65,0x0,0x64,0x0,0x2e,0x0,0x70,0x0,0x6e,0x0,0x67,
// close.png
0x0,0x9,
0x6,0x98,0x83,0x27,
0x0,0x63,
0x0,0x6c,0x0,0x6f,0x0,0x73,0x0,0x65,0x0,0x2e,0x0,0x70,0x0,0x6e,0x0,0x67,
// svg // svg
0x0,0x3, 0x0,0x3,
0x0,0x0,0x7a,0xc7, 0x0,0x0,0x7a,0xc7,
@ -1311,64 +1543,93 @@ static const unsigned char qt_resource_name[] = {
0x9,0xd0,0xd2,0xc7, 0x9,0xd0,0xd2,0xc7,
0x0,0x66, 0x0,0x66,
0x0,0x65,0x0,0x6d,0x0,0x61,0x0,0x2d,0x0,0x77,0x0,0x69,0x0,0x6e,0x0,0x67,0x0,0x2e,0x0,0x73,0x0,0x76,0x0,0x67, 0x0,0x65,0x0,0x6d,0x0,0x61,0x0,0x2d,0x0,0x77,0x0,0x69,0x0,0x6e,0x0,0x67,0x0,0x2e,0x0,0x73,0x0,0x76,0x0,0x67,
// map.qml
0x0,0x7,
0x3,0x83,0x58,0xdc,
0x0,0x6d,
0x0,0x61,0x0,0x70,0x0,0x2e,0x0,0x71,0x0,0x6d,0x0,0x6c,
}; };
static const unsigned char qt_resource_struct[] = { static const unsigned char qt_resource_struct[] = {
// : // :
0x0,0x0,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x1, 0x0,0x0,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x3,0x0,0x0,0x0,0x1,
0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
// :/png // :/png
0x0,0x0,0x0,0x12,0x0,0x2,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x8, 0x0,0x0,0x0,0x1e,0x0,0x2,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0xd,
0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
// :/qml
0x0,0x0,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x9,
0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
// :/visual // :/visual
0x0,0x0,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x3, 0x0,0x0,0x0,0xc,0x0,0x2,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x4,
0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
// :/visual/res // :/visual/res
0x0,0x0,0x0,0x1e,0x0,0x2,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x4, 0x0,0x0,0x0,0x2a,0x0,0x2,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x5,
0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
// :/visual/res/svg // :/visual/res/svg
0x0,0x0,0x1,0x22,0x0,0x2,0x0,0x0,0x0,0x3,0x0,0x0,0x0,0x5, 0x0,0x0,0x1,0x76,0x0,0x2,0x0,0x0,0x0,0x3,0x0,0x0,0x0,0x6,
0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
// :/visual/res/svg/fema-wing.svg // :/visual/res/svg/fema-wing.svg
0x0,0x0,0x1,0x72,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x15,0xcd, 0x0,0x0,0x1,0xc6,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x1c,0x1c,
0x0,0x0,0x1,0x93,0xaa,0x2d,0x2b,0xfe, 0x0,0x0,0x1,0x94,0x1d,0xb3,0xc8,0x17,
// :/visual/res/svg/settings.svg // :/visual/res/svg/settings.svg
0x0,0x0,0x1,0x54,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0xe,0x2c, 0x0,0x0,0x1,0xa8,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x14,0x6c,
0x0,0x0,0x1,0x93,0xb1,0x33,0x6,0x6e, 0x0,0x0,0x1,0x94,0x1d,0xb3,0xc8,0x17,
// :/visual/res/svg/chevron-down.png // :/visual/res/svg/chevron-down.png
0x0,0x0,0x1,0x2e,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0xc,0xdd, 0x0,0x0,0x1,0x82,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x13,0x1d,
0x0,0x0,0x1,0x93,0xaa,0x2d,0x2b,0xfe, 0x0,0x0,0x1,0x94,0x1d,0xb3,0xc8,0x16,
// :/qml/res
0x0,0x0,0x0,0x2a,0x0,0x2,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0xb,
0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
// :/qml/map.qml
0x0,0x0,0x1,0xe6,0x0,0x1,0x0,0x0,0x0,0x1,0x0,0x0,0x50,0x75,
0x0,0x0,0x1,0x94,0x22,0x1f,0xb5,0xe9,
// :/qml/res/qml
0x0,0x0,0x0,0x0,0x0,0x2,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0xc,
0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
// :/qml/res/qml/map.qml
0x0,0x0,0x1,0xe6,0x0,0x1,0x0,0x0,0x0,0x1,0x0,0x0,0x53,0x6e,
0x0,0x0,0x1,0x94,0x22,0x1f,0xb5,0xe9,
// :/png/res // :/png/res
0x0,0x0,0x0,0x1e,0x0,0x2,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x9, 0x0,0x0,0x0,0x2a,0x0,0x2,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0xe,
0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
// :/png/res/png // :/png/res/png
0x0,0x0,0x0,0x12,0x0,0x2,0x0,0x0,0x0,0x8,0x0,0x0,0x0,0xa, 0x0,0x0,0x0,0x1e,0x0,0x2,0x0,0x0,0x0,0xb,0x0,0x0,0x0,0xf,
0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, 0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,
// :/png/res/png/vline.png // :/png/res/png/vline.png
0x0,0x0,0x0,0xb4,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x7,0xb2, 0x0,0x0,0x0,0xda,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0xc,0x13,
0x0,0x0,0x1,0x93,0xcb,0x7c,0xe2,0x72, 0x0,0x0,0x1,0x94,0x1d,0xb3,0xc8,0x15,
// :/png/res/png/checked.png // :/png/res/png/checked.png
0x0,0x0,0x1,0x6,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0xb,0xee, 0x0,0x0,0x1,0x42,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x11,0x31,
0x0,0x0,0x1,0x93,0xcb,0xab,0xe6,0x16, 0x0,0x0,0x1,0x94,0x1d,0xb3,0xc8,0x14,
// :/png/res/png/branch-more.png // :/png/res/png/branch-more.png
0x0,0x0,0x0,0xe2,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0xb,0x3a, 0x0,0x0,0x1,0x1e,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x10,0x7d,
0x0,0x0,0x1,0x93,0xcb,0x93,0x3a,0x4c, 0x0,0x0,0x1,0x94,0x1d,0xb3,0xc8,0x14,
// :/png/res/png/close.png
0x0,0x0,0x1,0x5e,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x12,0x20,
0x0,0x0,0x1,0x94,0x32,0x40,0x4e,0x90,
// :/png/res/png/open.png
0x0,0x0,0x1,0x8,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0xf,0x9b,
0x0,0x0,0x1,0x94,0x32,0x41,0x97,0x64,
// :/png/res/png/arrowLeft.png // :/png/res/png/arrowLeft.png
0x0,0x0,0x0,0x94,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x6,0x62, 0x0,0x0,0x0,0xba,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0xa,0xc3,
0x0,0x0,0x1,0x93,0xcb,0xed,0xe4,0x54, 0x0,0x0,0x1,0x94,0x1d,0xb3,0xc8,0x13,
// :/png/res/png/bell.png // :/png/res/png/bell.png
0x0,0x0,0x0,0xcc,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x8,0xc7, 0x0,0x0,0x0,0xf2,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0xd,0x28,
0x0,0x0,0x1,0x93,0xd6,0x85,0xb7,0x62, 0x0,0x0,0x1,0x94,0x1d,0xb3,0xc8,0x13,
// :/png/res/png/delete.png
0x0,0x0,0x0,0x7e,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x5,0x12,
0x0,0x0,0x1,0x94,0x42,0x8d,0x10,0x79,
// :/png/res/png/branch-end.png // :/png/res/png/branch-end.png
0x0,0x0,0x0,0x50,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x2,0x20, 0x0,0x0,0x0,0x5c,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x2,0x20,
0x0,0x0,0x1,0x93,0xcb,0x98,0x21,0xc5, 0x0,0x0,0x1,0x94,0x1d,0xb3,0xc8,0x14,
// :/png/res/png/arrowRight.png // :/png/res/png/arrowRight.png
0x0,0x0,0x0,0x72,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x5,0x12, 0x0,0x0,0x0,0x98,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x9,0x73,
0x0,0x0,0x1,0x93,0xcb,0xee,0xf,0x3c, 0x0,0x0,0x1,0x94,0x1d,0xb3,0xc8,0x13,
// :/png/res/png/branch-close.png // :/png/res/png/branch-close.png
0x0,0x0,0x0,0x2a,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x0, 0x0,0x0,0x0,0x36,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0x0,
0x0,0x0,0x1,0x93,0xcb,0x9e,0x47,0x33, 0x0,0x0,0x1,0x94,0x1d,0xb3,0xc8,0x13,
}; };
@ -1393,6 +1654,16 @@ namespace QT_NAMESPACE {
bool qRegisterResourceData(int, const unsigned char *, const unsigned char *, const unsigned char *); bool qRegisterResourceData(int, const unsigned char *, const unsigned char *, const unsigned char *);
bool qUnregisterResourceData(int, const unsigned char *, const unsigned char *, const unsigned char *); bool qUnregisterResourceData(int, const unsigned char *, const unsigned char *, const unsigned char *);
#if defined(__ELF__) || defined(__APPLE__)
static inline unsigned char qResourceFeatureZlib()
{
extern const unsigned char qt_resourceFeatureZlib;
return qt_resourceFeatureZlib;
}
#else
unsigned char qResourceFeatureZlib();
#endif
#ifdef QT_NAMESPACE #ifdef QT_NAMESPACE
} }
#endif #endif
@ -1410,6 +1681,7 @@ int QT_RCC_MANGLE_NAMESPACE(qCleanupResources_resources)();
int QT_RCC_MANGLE_NAMESPACE(qCleanupResources_resources)() int QT_RCC_MANGLE_NAMESPACE(qCleanupResources_resources)()
{ {
int version = 3; int version = 3;
version += QT_RCC_PREPEND_NAMESPACE(qResourceFeatureZlib());
QT_RCC_PREPEND_NAMESPACE(qUnregisterResourceData) QT_RCC_PREPEND_NAMESPACE(qUnregisterResourceData)
(version, qt_resource_struct, qt_resource_name, qt_resource_data); (version, qt_resource_struct, qt_resource_name, qt_resource_data);
return 1; return 1;

View File

@ -10,6 +10,7 @@
#define UI_ALARMDIALOG_H #define UI_ALARMDIALOG_H
#include <QtCore/QVariant> #include <QtCore/QVariant>
#include <QtQuickWidgets/QQuickWidget>
#include <QtWidgets/QApplication> #include <QtWidgets/QApplication>
#include <QtWidgets/QHBoxLayout> #include <QtWidgets/QHBoxLayout>
#include <QtWidgets/QLabel> #include <QtWidgets/QLabel>
@ -26,22 +27,21 @@ public:
QVBoxLayout *verticalLayout; QVBoxLayout *verticalLayout;
QHBoxLayout *horizontalLayout_7; QHBoxLayout *horizontalLayout_7;
QLabel *label_2; QLabel *label_2;
QLabel *label; QLabel *nameHead;
QSpacerItem *horizontalSpacer; QSpacerItem *horizontalSpacer;
QHBoxLayout *horizontalLayout_6; QHBoxLayout *horizontalLayout_6;
QLabel *label_3; QVBoxLayout *verticalLayout_2;
QHBoxLayout *horizontalLayout_4; QLabel *dateStart;
QLabel *label_4; QLabel *dateEnd;
QHBoxLayout *horizontalLayout; QHBoxLayout *horizontalLayout;
QLabel *label_5; QLabel *name;
QHBoxLayout *chartLayout; QHBoxLayout *chartLayout;
QHBoxLayout *horizontalLayout_2; QHBoxLayout *horizontalLayout_2;
QLabel *label_6; QQuickWidget *map;
QHBoxLayout *horizontalLayout_5; QHBoxLayout *horizontalLayout_5;
QSpacerItem *horizontalSpacer_2; QSpacerItem *horizontalSpacer_2;
QPushButton *cancelButton; QPushButton *cancelButton;
QPushButton *pushButton_2; QPushButton *statisticButton;
QPushButton *pushButton;
void setupUi(QWidget *alarmdialog) void setupUi(QWidget *alarmdialog)
{ {
@ -54,7 +54,9 @@ public:
"background: white;\n" "background: white;\n"
"}")); "}"));
verticalLayout = new QVBoxLayout(alarmdialog); verticalLayout = new QVBoxLayout(alarmdialog);
verticalLayout->setSpacing(0);
verticalLayout->setObjectName("verticalLayout"); verticalLayout->setObjectName("verticalLayout");
verticalLayout->setContentsMargins(0, 0, 0, 0);
horizontalLayout_7 = new QHBoxLayout(); horizontalLayout_7 = new QHBoxLayout();
horizontalLayout_7->setSpacing(20); horizontalLayout_7->setSpacing(20);
horizontalLayout_7->setObjectName("horizontalLayout_7"); horizontalLayout_7->setObjectName("horizontalLayout_7");
@ -67,16 +69,16 @@ public:
horizontalLayout_7->addWidget(label_2); horizontalLayout_7->addWidget(label_2);
label = new QLabel(alarmdialog); nameHead = new QLabel(alarmdialog);
label->setObjectName("label"); nameHead->setObjectName("nameHead");
QSizePolicy sizePolicy(QSizePolicy::Policy::Preferred, QSizePolicy::Policy::Preferred); QSizePolicy sizePolicy(QSizePolicy::Policy::Preferred, QSizePolicy::Policy::Preferred);
sizePolicy.setHorizontalStretch(0); sizePolicy.setHorizontalStretch(0);
sizePolicy.setVerticalStretch(29); sizePolicy.setVerticalStretch(29);
sizePolicy.setHeightForWidth(label->sizePolicy().hasHeightForWidth()); sizePolicy.setHeightForWidth(nameHead->sizePolicy().hasHeightForWidth());
label->setSizePolicy(sizePolicy); nameHead->setSizePolicy(sizePolicy);
label->setMinimumSize(QSize(0, 29)); nameHead->setMinimumSize(QSize(0, 29));
label->setMaximumSize(QSize(16777215, 29)); nameHead->setMaximumSize(QSize(16777215, 29));
label->setStyleSheet(QString::fromUtf8("background: transparent;\n" nameHead->setStyleSheet(QString::fromUtf8("background: transparent;\n"
"font-family: Inter;\n" "font-family: Inter;\n"
"font-size: 24px;\n" "font-size: 24px;\n"
"font-weight: 400;\n" "font-weight: 400;\n"
@ -85,7 +87,7 @@ public:
"color: #13385F;\n" "color: #13385F;\n"
"")); ""));
horizontalLayout_7->addWidget(label); horizontalLayout_7->addWidget(nameHead);
horizontalSpacer = new QSpacerItem(40, 29, QSizePolicy::Policy::Expanding, QSizePolicy::Policy::Minimum); horizontalSpacer = new QSpacerItem(40, 29, QSizePolicy::Policy::Expanding, QSizePolicy::Policy::Minimum);
@ -97,12 +99,16 @@ public:
horizontalLayout_6 = new QHBoxLayout(); horizontalLayout_6 = new QHBoxLayout();
horizontalLayout_6->setSpacing(0); horizontalLayout_6->setSpacing(0);
horizontalLayout_6->setObjectName("horizontalLayout_6"); horizontalLayout_6->setObjectName("horizontalLayout_6");
horizontalLayout_6->setContentsMargins(25, -1, 25, 15); horizontalLayout_6->setContentsMargins(0, -1, 0, 0);
label_3 = new QLabel(alarmdialog); verticalLayout_2 = new QVBoxLayout();
label_3->setObjectName("label_3"); verticalLayout_2->setSpacing(0);
label_3->setMinimumSize(QSize(0, 27)); verticalLayout_2->setObjectName("verticalLayout_2");
label_3->setMaximumSize(QSize(16777215, 27)); verticalLayout_2->setContentsMargins(25, -1, 25, 15);
label_3->setStyleSheet(QString::fromUtf8("background: transparent;\n" dateStart = new QLabel(alarmdialog);
dateStart->setObjectName("dateStart");
dateStart->setMinimumSize(QSize(0, 27));
dateStart->setMaximumSize(QSize(16777215, 27));
dateStart->setStyleSheet(QString::fromUtf8("background: transparent;\n"
"font-family: Inter;\n" "font-family: Inter;\n"
"font-size: 22px;\n" "font-size: 22px;\n"
"font-weight: 400;\n" "font-weight: 400;\n"
@ -111,42 +117,37 @@ public:
"color: #13385F;\n" "color: #13385F;\n"
"")); ""));
horizontalLayout_6->addWidget(label_3); verticalLayout_2->addWidget(dateStart);
dateEnd = new QLabel(alarmdialog);
dateEnd->setObjectName("dateEnd");
dateEnd->setMaximumSize(QSize(16777215, 27));
dateEnd->setStyleSheet(QString::fromUtf8("background: transparent;\n"
"font-family: Inter;\n"
"font-size: 22px;\n"
"font-weight: 400;\n"
"line-height: 26.63px;\n"
"text-align: left;\n"
"color: #13385F;\n"
""));
verticalLayout_2->addWidget(dateEnd);
horizontalLayout_6->addLayout(verticalLayout_2);
verticalLayout->addLayout(horizontalLayout_6); verticalLayout->addLayout(horizontalLayout_6);
horizontalLayout_4 = new QHBoxLayout();
horizontalLayout_4->setSpacing(0);
horizontalLayout_4->setObjectName("horizontalLayout_4");
horizontalLayout_4->setContentsMargins(25, -1, 25, 15);
label_4 = new QLabel(alarmdialog);
label_4->setObjectName("label_4");
label_4->setMinimumSize(QSize(0, 27));
label_4->setMaximumSize(QSize(16777215, 27));
label_4->setStyleSheet(QString::fromUtf8("background: transparent;\n"
"font-family: Inter;\n"
"font-size: 22px;\n"
"font-weight: 400;\n"
"line-height: 26.63px;\n"
"text-align: left;\n"
"color: #13385F;\n"
""));
horizontalLayout_4->addWidget(label_4);
verticalLayout->addLayout(horizontalLayout_4);
horizontalLayout = new QHBoxLayout(); horizontalLayout = new QHBoxLayout();
horizontalLayout->setSpacing(0); horizontalLayout->setSpacing(0);
horizontalLayout->setObjectName("horizontalLayout"); horizontalLayout->setObjectName("horizontalLayout");
horizontalLayout->setContentsMargins(25, -1, 25, 15); horizontalLayout->setContentsMargins(25, -1, 25, 15);
label_5 = new QLabel(alarmdialog); name = new QLabel(alarmdialog);
label_5->setObjectName("label_5"); name->setObjectName("name");
label_5->setMinimumSize(QSize(0, 27)); name->setMinimumSize(QSize(0, 27));
label_5->setMaximumSize(QSize(16777215, 27)); name->setMaximumSize(QSize(16777215, 27));
label_5->setStyleSheet(QString::fromUtf8("background: transparent;\n" name->setStyleSheet(QString::fromUtf8("background: transparent;\n"
"font-family: Inter;\n" "font-family: Inter;\n"
"font-size: 22px;\n" "font-size: 22px;\n"
"font-weight: 400;\n" "font-weight: 400;\n"
@ -155,7 +156,7 @@ public:
"color: #13385F;\n" "color: #13385F;\n"
"")); ""));
horizontalLayout->addWidget(label_5); horizontalLayout->addWidget(name);
verticalLayout->addLayout(horizontalLayout); verticalLayout->addLayout(horizontalLayout);
@ -171,13 +172,13 @@ public:
horizontalLayout_2->setSpacing(0); horizontalLayout_2->setSpacing(0);
horizontalLayout_2->setObjectName("horizontalLayout_2"); horizontalLayout_2->setObjectName("horizontalLayout_2");
horizontalLayout_2->setContentsMargins(25, -1, 25, -1); horizontalLayout_2->setContentsMargins(25, -1, 25, -1);
label_6 = new QLabel(alarmdialog); map = new QQuickWidget(alarmdialog);
label_6->setObjectName("label_6"); map->setObjectName("map");
label_6->setMinimumSize(QSize(710, 318)); map->setMinimumSize(QSize(710, 320));
label_6->setMaximumSize(QSize(710, 318)); map->setMaximumSize(QSize(710, 320));
label_6->setStyleSheet(QString::fromUtf8("background: black;")); map->setResizeMode(QQuickWidget::ResizeMode::SizeRootObjectToView);
horizontalLayout_2->addWidget(label_6); horizontalLayout_2->addWidget(map);
verticalLayout->addLayout(horizontalLayout_2); verticalLayout->addLayout(horizontalLayout_2);
@ -221,11 +222,11 @@ public:
horizontalLayout_5->addWidget(cancelButton); horizontalLayout_5->addWidget(cancelButton);
pushButton_2 = new QPushButton(alarmdialog); statisticButton = new QPushButton(alarmdialog);
pushButton_2->setObjectName("pushButton_2"); statisticButton->setObjectName("statisticButton");
pushButton_2->setMinimumSize(QSize(266, 41)); statisticButton->setMinimumSize(QSize(266, 41));
pushButton_2->setMaximumSize(QSize(266, 41)); statisticButton->setMaximumSize(QSize(266, 41));
pushButton_2->setStyleSheet(QString::fromUtf8("QPushButton {\n" statisticButton->setStyleSheet(QString::fromUtf8("QPushButton {\n"
" border-style: outset;\n" " border-style: outset;\n"
" border-radius: 5px;\n" " border-radius: 5px;\n"
" border-color: #13385F;\n" " border-color: #13385F;\n"
@ -249,37 +250,7 @@ public:
" border-color: #102E47;\n" " border-color: #102E47;\n"
"}")); "}"));
horizontalLayout_5->addWidget(pushButton_2); horizontalLayout_5->addWidget(statisticButton);
pushButton = new QPushButton(alarmdialog);
pushButton->setObjectName("pushButton");
pushButton->setMinimumSize(QSize(117, 41));
pushButton->setMaximumSize(QSize(117, 41));
pushButton->setStyleSheet(QString::fromUtf8("QPushButton {\n"
" border-style: outset;\n"
" border-radius: 5px;\n"
" border-color: #13385F;\n"
" border-width: 1px;\n"
" background-color: #13385F;\n"
" color: white;\n"
" font-family: Inter;\n"
" font-size: 22px;\n"
" font-weight: 500;\n"
" line-height: 26.63px;\n"
" text-align: center;\n"
"}\n"
"\n"
"QPushButton:hover {\n"
" background-color: #1A4A73;\n"
" border-color: #1A4A73;\n"
"}\n"
"\n"
"QPushButton:pressed {\n"
" background-color: #102E47;\n"
" border-color: #102E47;\n"
"}"));
horizontalLayout_5->addWidget(pushButton);
verticalLayout->addLayout(horizontalLayout_5); verticalLayout->addLayout(horizontalLayout_5);
@ -294,14 +265,12 @@ public:
{ {
alarmdialog->setWindowTitle(QCoreApplication::translate("alarmdialog", "Form", nullptr)); alarmdialog->setWindowTitle(QCoreApplication::translate("alarmdialog", "Form", nullptr));
label_2->setText(QString()); label_2->setText(QString());
label->setText(QCoreApplication::translate("alarmdialog", "\320\235\320\260\320\267\320\262\320\260\320\275\320\270\320\265 \320\264\320\260\321\202\321\207\320\270\320\272\320\260", nullptr)); nameHead->setText(QCoreApplication::translate("alarmdialog", "\320\235\320\260\320\267\320\262\320\260\320\275\320\270\320\265 \320\264\320\260\321\202\321\207\320\270\320\272\320\260", nullptr));
label_3->setText(QCoreApplication::translate("alarmdialog", "TextLabel", nullptr)); dateStart->setText(QCoreApplication::translate("alarmdialog", "TextLabel", nullptr));
label_4->setText(QCoreApplication::translate("alarmdialog", "TextLabel", nullptr)); dateEnd->setText(QCoreApplication::translate("alarmdialog", "TextLabel", nullptr));
label_5->setText(QCoreApplication::translate("alarmdialog", "TextLabel", nullptr)); name->setText(QCoreApplication::translate("alarmdialog", "TextLabel", nullptr));
label_6->setText(QString());
cancelButton->setText(QCoreApplication::translate("alarmdialog", "\320\236\321\202\320\274\320\265\320\275\320\260", nullptr)); cancelButton->setText(QCoreApplication::translate("alarmdialog", "\320\236\321\202\320\274\320\265\320\275\320\260", nullptr));
pushButton_2->setText(QCoreApplication::translate("alarmdialog", "\320\237\320\265\321\200\320\265\320\271\321\202\320\270 \320\272 \321\201\321\202\320\260\321\202\320\270\321\201\321\202\320\270\320\272\320\265", nullptr)); statisticButton->setText(QCoreApplication::translate("alarmdialog", "\320\237\320\265\321\200\320\265\320\271\321\202\320\270 \320\272 \321\201\321\202\320\260\321\202\320\270\321\201\321\202\320\270\320\272\320\265", nullptr));
pushButton->setText(QCoreApplication::translate("alarmdialog", "\320\255\320\272\321\201\320\277\320\276\321\200\321\202", nullptr));
} // retranslateUi } // retranslateUi
}; };

View File

@ -2,14 +2,18 @@
#include "EWIEGA46WW/moc_alarmdialog.cpp" #include "EWIEGA46WW/moc_alarmdialog.cpp"
#include "EWIEGA46WW/moc_alarmsservice.cpp" #include "EWIEGA46WW/moc_alarmsservice.cpp"
#include "EWIEGA46WW/moc_alarmwidget.cpp" #include "EWIEGA46WW/moc_alarmwidget.cpp"
#include "EWIEGA46WW/moc_apiform.cpp"
#include "EWIEGA46WW/moc_httpclient.cpp" #include "EWIEGA46WW/moc_httpclient.cpp"
#include "EWIEGA46WW/moc_incedentwidget.cpp" #include "EWIEGA46WW/moc_incedentwidget.cpp"
#include "EWIEGA46WW/moc_journalservice.cpp" #include "EWIEGA46WW/moc_journalservice.cpp"
#include "EWIEGA46WW/moc_logwidget.cpp"
#include "EWIEGA46WW/moc_mainwindow.cpp" #include "EWIEGA46WW/moc_mainwindow.cpp"
#include "EWIEGA46WW/moc_paginationbar.cpp" #include "EWIEGA46WW/moc_paginationbar.cpp"
#include "EWIEGA46WW/moc_plotservice.cpp"
#include "EWIEGA46WW/moc_qcustomplot.cpp" #include "EWIEGA46WW/moc_qcustomplot.cpp"
#include "EWIEGA46WW/moc_savesensorservice.cpp" #include "EWIEGA46WW/moc_savesensorservice.cpp"
#include "EWIEGA46WW/moc_sensordialog.cpp" #include "EWIEGA46WW/moc_sensordialog.cpp"
#include "EWIEGA46WW/moc_sensorlogervice.cpp" #include "EWIEGA46WW/moc_sensorlogervice.cpp"
#include "EWIEGA46WW/moc_sensorservice.cpp" #include "EWIEGA46WW/moc_sensorservice.cpp"
#include "EWIEGA46WW/moc_sensorwidget.cpp" #include "EWIEGA46WW/moc_sensorwidget.cpp"
#include "EWIEGA46WW/moc_serverwidget.cpp"

View File

@ -0,0 +1,10 @@
set(qml_import_scanner_imports_count 8)
set(qml_import_scanner_import_0 "CLASSNAME;QtQuick2Plugin;LINKTARGET;Qt6::qtquick2plugin;NAME;QtQuick;PATH;E:/qt/6.8.1/mingw_64/qml/QtQuick;PLUGIN;qtquick2plugin;PLUGINISOPTIONAL;;PREFER;:/qt-project.org/imports/QtQuick/;RELATIVEPATH;QtQuick;TYPE;module;")
set(qml_import_scanner_import_1 "CLASSNAME;QtQmlPlugin;LINKTARGET;Qt6::qmlplugin;NAME;QtQml;PATH;E:/qt/6.8.1/mingw_64/qml/QtQml;PLUGIN;qmlplugin;PLUGINISOPTIONAL;;PREFER;:/qt-project.org/imports/QtQml/;RELATIVEPATH;QtQml;TYPE;module;")
set(qml_import_scanner_import_2 "NAME;QML;PATH;E:/qt/6.8.1/mingw_64/qml/QML;PREFER;:/qt-project.org/imports/QML/;RELATIVEPATH;QML;TYPE;module;")
set(qml_import_scanner_import_3 "CLASSNAME;QtQmlModelsPlugin;LINKTARGET;Qt6::modelsplugin;NAME;QtQml.Models;PATH;E:/qt/6.8.1/mingw_64/qml/QtQml/Models;PLUGIN;modelsplugin;PLUGINISOPTIONAL;;PREFER;:/qt-project.org/imports/QtQml/Models/;RELATIVEPATH;QtQml/Models;TYPE;module;")
set(qml_import_scanner_import_4 "CLASSNAME;QtQmlWorkerScriptPlugin;LINKTARGET;Qt6::workerscriptplugin;NAME;QtQml.WorkerScript;PATH;E:/qt/6.8.1/mingw_64/qml/QtQml/WorkerScript;PLUGIN;workerscriptplugin;PLUGINISOPTIONAL;;PREFER;:/qt-project.org/imports/QtQml/WorkerScript/;RELATIVEPATH;QtQml/WorkerScript;TYPE;module;")
set(qml_import_scanner_import_5 "CLASSNAME;QtLocationDeclarativeModule;COMPONENTS;E:/qt/6.8.1/mingw_64/qml/QtLocation/MapView.qml;LINKTARGET;Qt6::declarative_location;NAME;QtLocation;PATH;E:/qt/6.8.1/mingw_64/qml/QtLocation;PLUGIN;declarative_locationplugin;PREFER;:/qt-project.org/imports/QtLocation/;RELATIVEPATH;QtLocation;TYPE;module;")
set(qml_import_scanner_import_6 "CLASSNAME;QtPositioningDeclarativeModule;LINKTARGET;Qt6::positioningquickplugin;NAME;QtPositioning;PATH;E:/qt/6.8.1/mingw_64/qml/QtPositioning;PLUGIN;positioningquickplugin;PREFER;:/qt-project.org/imports/QtPositioning/;RELATIVEPATH;QtPositioning;TYPE;module;")
set(qml_import_scanner_import_7 "CLASSNAME;QtLabsAnimationPlugin;LINKTARGET;Qt6::labsanimationplugin;NAME;Qt.labs.animation;PATH;E:/qt/6.8.1/mingw_64/qml/Qt/labs/animation;PLUGIN;labsanimationplugin;PLUGINISOPTIONAL;;PREFER;:/qt-project.org/imports/Qt/labs/animation/;RELATIVEPATH;Qt/labs/animation;TYPE;module;")

View File

@ -0,0 +1,314 @@
#
# Internal Qt Creator variable reference
#
foreach(qtcreator_var
QT_QMAKE_EXECUTABLE CMAKE_PREFIX_PATH CMAKE_C_COMPILER CMAKE_CXX_COMPILER
CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELWITHDEBINFO)
set(__just_reference_${qtcreator_var} ${${qtcreator_var}})
endforeach()
option(QT_CREATOR_SOURCE_GROUPS "Qt Creator source groups extensions" ON)
if (QT_CREATOR_SOURCE_GROUPS)
source_group("Resources" REGULAR_EXPRESSION "\\.(pdf|plist|png|jpeg|jpg|storyboard|xcassets|qrc|svg|gif|ico|webp)$")
source_group("Forms" REGULAR_EXPRESSION "\\.(ui)$")
source_group("State charts" REGULAR_EXPRESSION "\\.(scxml)$")
endif()
if (EXISTS "${CMAKE_SOURCE_DIR}/QtCreatorPackageManager.cmake")
include("${CMAKE_SOURCE_DIR}/QtCreatorPackageManager.cmake")
endif()
if (QT_CREATOR_SKIP_PACKAGE_MANAGER_SETUP)
return()
endif()
option(QT_CREATOR_SKIP_PACKAGE_MANAGER_SETUP "Skip Qt Creator's package manager auto-setup" OFF)
# Store the C/C++ object output extension
if (CMAKE_VERSION GREATER_EQUAL "3.19")
cmake_language(DEFER CALL set CMAKE_C_OUTPUT_EXTENSION "${CMAKE_C_OUTPUT_EXTENSION}" CACHE STRING "" FORCE)
cmake_language(DEFER CALL set CMAKE_CXX_OUTPUT_EXTENSION "${CMAKE_CXX_OUTPUT_EXTENSION}" CACHE STRING "" FORCE)
endif()
macro(qtc_auto_setup_compiler_standard toolchainFile)
foreach(lang_var C CXX CUDA OBJC OBJCXX)
foreach(prop_var STANDARD STANDARD_REQUIRED EXTENSIONS)
if (CMAKE_${lang_var}_${prop_var})
file(APPEND "${toolchainFile}"
"set(CMAKE_${lang_var}_${prop_var} ${CMAKE_${lang_var}_${prop_var}})\n")
endif()
endforeach()
endforeach()
# Forward important CMake variables to the package manager in the toolchain file
foreach(fwd_var CMAKE_MSVC_RUNTIME_LIBRARY CMAKE_SYSROOT CMAKE_OSX_SYSROOT CMAKE_OSX_ARCHITECTURES)
if (${fwd_var})
file(APPEND "${toolchainFile}"
"set(${fwd_var} ${${fwd_var}})\n")
endif()
endforeach()
endmacro()
#
# conan
#
macro(qtc_auto_setup_conan)
foreach(file conanfile.txt conanfile.py)
if (EXISTS "${CMAKE_SOURCE_DIR}/${file}")
set(conanfile_txt "${CMAKE_SOURCE_DIR}/${file}")
break()
endif()
endforeach()
if (conanfile_txt AND NOT QT_CREATOR_SKIP_CONAN_SETUP)
option(QT_CREATOR_SKIP_CONAN_SETUP "Skip Qt Creator's conan package manager auto-setup" OFF)
set(QT_CREATOR_CONAN_BUILD_POLICY "missing" CACHE STRING "Qt Creator's conan package manager auto-setup build policy. This is used for the BUILD property of cmake_conan_run")
set_property(
DIRECTORY "${CMAKE_SOURCE_DIR}"
APPEND
PROPERTY CMAKE_CONFIGURE_DEPENDS "${conanfile_txt}")
find_program(conan_program conan)
if (NOT conan_program)
message(WARNING "Qt Creator: conan executable not found. "
"Package manager auto-setup will be skipped. "
"To disable this warning set QT_CREATOR_SKIP_CONAN_SETUP to ON.")
return()
endif()
execute_process(COMMAND ${conan_program} --version
RESULT_VARIABLE result_code
OUTPUT_VARIABLE conan_version_output
ERROR_VARIABLE conan_version_output)
if (NOT result_code EQUAL 0)
message(FATAL_ERROR "conan --version failed='${result_code}: ${conan_version_output}")
endif()
string(REGEX REPLACE ".*Conan version ([0-9].[0-9]).*" "\\1" conan_version "${conan_version_output}")
set(conanfile_timestamp_file "${CMAKE_BINARY_DIR}/conan-dependencies/conanfile.timestamp")
file(TIMESTAMP "${conanfile_txt}" conanfile_timestamp)
set(do_conan_installation ON)
if (EXISTS "${conanfile_timestamp_file}")
file(READ "${conanfile_timestamp_file}" old_conanfile_timestamp)
if ("${conanfile_timestamp}" STREQUAL "${old_conanfile_timestamp}")
set(do_conan_installation OFF)
endif()
endif()
set(conanfile_build_policy_file "${CMAKE_BINARY_DIR}/conan-dependencies/conanfile.buildpolicy")
if (EXISTS "${conanfile_build_policy_file}")
file(READ "${conanfile_build_policy_file}" build_policy)
if (NOT "${build_policy}" STREQUAL "${QT_CREATOR_CONAN_BUILD_POLICY}")
set(do_conan_installation ON)
endif()
endif()
if (do_conan_installation)
message(STATUS "Qt Creator: conan package manager auto-setup. "
"Skip this step by setting QT_CREATOR_SKIP_CONAN_SETUP to ON.")
file(COPY "${conanfile_txt}" DESTINATION "${CMAKE_BINARY_DIR}/conan-dependencies/")
file(WRITE "${CMAKE_BINARY_DIR}/conan-dependencies/toolchain.cmake" "
set(CMAKE_C_COMPILER \"${CMAKE_C_COMPILER}\")
set(CMAKE_CXX_COMPILER \"${CMAKE_CXX_COMPILER}\")
")
qtc_auto_setup_compiler_standard("${CMAKE_BINARY_DIR}/conan-dependencies/toolchain.cmake")
if (CMAKE_TOOLCHAIN_FILE)
file(APPEND "${CMAKE_BINARY_DIR}/conan-dependencies/toolchain.cmake"
"include(\"${CMAKE_TOOLCHAIN_FILE}\")\n")
endif()
file(WRITE "${CMAKE_BINARY_DIR}/conan-dependencies/CMakeLists.txt" "
cmake_minimum_required(VERSION 3.15)
unset(CMAKE_PROJECT_INCLUDE_BEFORE CACHE)
project(conan-setup)
if (${conan_version} VERSION_GREATER_EQUAL 2.0)
set(CONAN_COMMAND \"${conan_program}\")
include(\"${CMAKE_CURRENT_LIST_DIR}/conan_provider.cmake\")
conan_profile_detect_default()
detect_host_profile(\"${CMAKE_BINARY_DIR}/conan-dependencies/conan_host_profile\")
set(build_types \${CMAKE_BUILD_TYPE})
if (CMAKE_CONFIGURATION_TYPES)
set(build_types \${CMAKE_CONFIGURATION_TYPES})
endif()
foreach(type \${build_types})
conan_install(
-pr \"${CMAKE_BINARY_DIR}/conan-dependencies/conan_host_profile\"
--build=${QT_CREATOR_CONAN_BUILD_POLICY}
-s build_type=\${type}
-g CMakeDeps)
endforeach()
get_property(CONAN_INSTALL_SUCCESS GLOBAL PROPERTY CONAN_INSTALL_SUCCESS)
if (CONAN_INSTALL_SUCCESS)
get_property(CONAN_GENERATORS_FOLDER GLOBAL PROPERTY CONAN_GENERATORS_FOLDER)
file(TO_CMAKE_PATH \"\${CONAN_GENERATORS_FOLDER}\" CONAN_GENERATORS_FOLDER)
file(WRITE \"${CMAKE_BINARY_DIR}/conan-dependencies/conan_paths.cmake\" \"
list(PREPEND CMAKE_PREFIX_PATH \\\"\${CONAN_GENERATORS_FOLDER}\\\")
list(PREPEND CMAKE_MODULE_PATH \\\"\${CONAN_GENERATORS_FOLDER}\\\")
list(PREPEND CMAKE_FIND_ROOT_PATH \\\"\${CONAN_GENERATORS_FOLDER}\\\")
list(REMOVE_DUPLICATES CMAKE_PREFIX_PATH)
list(REMOVE_DUPLICATES CMAKE_MODULE_PATH)
list(REMOVE_DUPLICATES CMAKE_FIND_ROOT_PATH)
set(CMAKE_PREFIX_PATH \\\"\\\${CMAKE_PREFIX_PATH}\\\" CACHE STRING \\\"\\\" FORCE)
set(CMAKE_MODULE_PATH \\\"\\\${CMAKE_MODULE_PATH}\\\" CACHE STRING \\\"\\\" FORCE)
set(CMAKE_FIND_ROOT_PATH \\\"\\\${CMAKE_FIND_ROOT_PATH}\\\" CACHE STRING \\\"\\\" FORCE)
\")
endif()
else()
include(\"${CMAKE_CURRENT_LIST_DIR}/conan.cmake\")
conan_cmake_run(
CONANFILE \"${conanfile_txt}\"
INSTALL_FOLDER \"${CMAKE_BINARY_DIR}/conan-dependencies\"
GENERATORS cmake_paths cmake_find_package json
BUILD ${QT_CREATOR_CONAN_BUILD_POLICY}
ENV CONAN_CMAKE_TOOLCHAIN_FILE=\"${CMAKE_BINARY_DIR}/conan-dependencies/toolchain.cmake\"
)
endif()
")
if (NOT DEFINED CMAKE_BUILD_TYPE AND NOT DEFINED CMAKE_CONFIGURATION_TYPES)
set(CMAKE_CONFIGURATION_TYPES "Debug;Release")
endif()
execute_process(COMMAND ${CMAKE_COMMAND}
-S "${CMAKE_BINARY_DIR}/conan-dependencies/"
-B "${CMAKE_BINARY_DIR}/conan-dependencies/build"
-C "${CMAKE_BINARY_DIR}/qtcsettings.cmake"
-D "CMAKE_TOOLCHAIN_FILE=${CMAKE_BINARY_DIR}/conan-dependencies/toolchain.cmake"
-G ${CMAKE_GENERATOR}
-D CMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
-D "CMAKE_CONFIGURATION_TYPES=${CMAKE_CONFIGURATION_TYPES}"
RESULT_VARIABLE result
)
if (result EQUAL 0)
file(WRITE "${conanfile_timestamp_file}" "${conanfile_timestamp}")
file(WRITE "${conanfile_build_policy_file}" ${QT_CREATOR_CONAN_BUILD_POLICY})
else()
message(WARNING "Qt Creator's conan package manager auto-setup failed. Consider setting "
"QT_CREATOR_SKIP_CONAN_SETUP to ON and reconfigure to skip this step.")
return()
endif()
endif()
include("${CMAKE_BINARY_DIR}/conan-dependencies/conan_paths.cmake")
endif()
unset(conanfile_txt)
endmacro()
qtc_auto_setup_conan()
#
# vcpkg
#
macro(qtc_auto_setup_vcpkg)
if (EXISTS "${CMAKE_SOURCE_DIR}/vcpkg.json" AND NOT QT_CREATOR_SKIP_VCPKG_SETUP)
option(QT_CREATOR_SKIP_VCPKG_SETUP "Skip Qt Creator's vcpkg package manager auto-setup" OFF)
set_property(
DIRECTORY "${CMAKE_SOURCE_DIR}"
APPEND
PROPERTY CMAKE_CONFIGURE_DEPENDS "${CMAKE_SOURCE_DIR}/vcpkg.json")
find_program(vcpkg_program vcpkg
PATHS $ENV{VCPKG_ROOT} ${CMAKE_SOURCE_DIR}/vcpkg ${CMAKE_SOURCE_DIR}/3rdparty/vcpkg
NO_DEFAULT_PATH
)
if (NOT vcpkg_program)
message(WARNING "Qt Creator: vcpkg executable not found. "
"Package manager auto-setup will be skipped. "
"To disable this warning set QT_CREATOR_SKIP_VCPKG_SETUP to ON.")
return()
endif()
execute_process(COMMAND ${vcpkg_program} version
RESULT_VARIABLE result_code
OUTPUT_VARIABLE vcpkg_version_output
ERROR_VARIABLE vcpkg_version_output)
if (NOT result_code EQUAL 0)
message(FATAL_ERROR "vcpkg version failed='${result_code}: ${vcpkg_version_output}")
endif()
# Resolve any symlinks
get_filename_component(vpkg_program_real_path ${vcpkg_program} REALPATH)
get_filename_component(vpkg_root ${vpkg_program_real_path} DIRECTORY)
if (NOT EXISTS "${CMAKE_BINARY_DIR}/vcpkg-dependencies/toolchain.cmake")
message(STATUS "Qt Creator: vcpkg package manager auto-setup. "
"Skip this step by setting QT_CREATOR_SKIP_VCPKG_SETUP to ON.")
file(WRITE "${CMAKE_BINARY_DIR}/vcpkg-dependencies/toolchain.cmake" "
set(CMAKE_C_COMPILER \"${CMAKE_C_COMPILER}\")
set(CMAKE_CXX_COMPILER \"${CMAKE_CXX_COMPILER}\")
")
qtc_auto_setup_compiler_standard("${CMAKE_BINARY_DIR}/vcpkg-dependencies/toolchain.cmake")
if (CMAKE_TOOLCHAIN_FILE AND NOT
CMAKE_TOOLCHAIN_FILE STREQUAL "${CMAKE_BINARY_DIR}/vcpkg-dependencies/toolchain.cmake")
file(APPEND "${CMAKE_BINARY_DIR}/vcpkg-dependencies/toolchain.cmake"
"include(\"${CMAKE_TOOLCHAIN_FILE}\")\n")
endif()
if (VCPKG_TARGET_TRIPLET)
set(vcpkg_triplet ${VCPKG_TARGET_TRIPLET})
else()
if (ANDROID_ABI)
if (ANDROID_ABI STREQUAL "armeabi-v7a")
set(vcpkg_triplet arm-neon-android)
elseif (ANDROID_ABI STREQUAL "arm64-v8a")
set(vcpkg_triplet arm64-android)
elseif (ANDROID_ABI STREQUAL "x86")
set(vcpkg_triplet x86-android)
elseif (ANDROID_ABI STREQUAL "x86_64")
set(vcpkg_triplet x64-android)
else()
message(FATAL_ERROR "Unsupported Android ABI: ${ANDROID_ABI}")
endif()
# Needed by vcpkg/scripts/toolchains/android.cmake
file(APPEND "${CMAKE_BINARY_DIR}/vcpkg-dependencies/toolchain.cmake" "
set(ENV{ANDROID_NDK_HOME} \"${ANDROID_NDK}\")
")
elseif (WIN32)
set(vcpkg_triplet x64-mingw-static)
if (CMAKE_CXX_COMPILER MATCHES ".*/(.*)/cl.exe")
set(vcpkg_triplet ${CMAKE_MATCH_1}-windows)
endif()
elseif(APPLE)
# We're too early to use CMAKE_HOST_SYSTEM_PROCESSOR
execute_process(
COMMAND uname -m
OUTPUT_VARIABLE __apple_host_system_processor
OUTPUT_STRIP_TRAILING_WHITESPACE)
if (__apple_host_system_processor MATCHES "arm64")
set(vcpkg_triplet arm64-osx)
else()
set(vcpkg_triplet x64-osx)
endif()
else()
set(vcpkg_triplet x64-linux)
endif()
endif()
file(APPEND "${CMAKE_BINARY_DIR}/vcpkg-dependencies/toolchain.cmake" "
set(VCPKG_TARGET_TRIPLET ${vcpkg_triplet})
include(\"${vpkg_root}/scripts/buildsystems/vcpkg.cmake\")
")
endif()
set(CMAKE_TOOLCHAIN_FILE "${CMAKE_BINARY_DIR}/vcpkg-dependencies/toolchain.cmake" CACHE PATH "" FORCE)
# Save CMAKE_PREFIX_PATH and CMAKE_MODULE_PATH as cache variables
if (CMAKE_VERSION GREATER_EQUAL "3.19")
cmake_language(DEFER CALL list REMOVE_DUPLICATES CMAKE_PREFIX_PATH)
cmake_language(DEFER CALL list REMOVE_DUPLICATES CMAKE_MODULE_PATH)
cmake_language(DEFER CALL set CMAKE_PREFIX_PATH "${CMAKE_PREFIX_PATH}" CACHE STRING "" FORCE)
cmake_language(DEFER CALL set CMAKE_MODULE_PATH "${CMAKE_MODULE_PATH}" CACHE STRING "" FORCE)
endif()
endif()
endmacro()
qtc_auto_setup_vcpkg()

View File

@ -0,0 +1,92 @@
set(CMAKE_CXX_COMPILER "E:/qt/Tools/mingw1310_64/bin/g++.exe")
set(CMAKE_CXX_COMPILER_ARG1 "")
set(CMAKE_CXX_COMPILER_ID "GNU")
set(CMAKE_CXX_COMPILER_VERSION "13.1.0")
set(CMAKE_CXX_COMPILER_VERSION_INTERNAL "")
set(CMAKE_CXX_COMPILER_WRAPPER "")
set(CMAKE_CXX_STANDARD_COMPUTED_DEFAULT "17")
set(CMAKE_CXX_EXTENSIONS_COMPUTED_DEFAULT "ON")
set(CMAKE_CXX_COMPILE_FEATURES "cxx_std_98;cxx_template_template_parameters;cxx_std_11;cxx_alias_templates;cxx_alignas;cxx_alignof;cxx_attributes;cxx_auto_type;cxx_constexpr;cxx_decltype;cxx_decltype_incomplete_return_types;cxx_default_function_template_args;cxx_defaulted_functions;cxx_defaulted_move_initializers;cxx_delegating_constructors;cxx_deleted_functions;cxx_enum_forward_declarations;cxx_explicit_conversions;cxx_extended_friend_declarations;cxx_extern_templates;cxx_final;cxx_func_identifier;cxx_generalized_initializers;cxx_inheriting_constructors;cxx_inline_namespaces;cxx_lambdas;cxx_local_type_template_args;cxx_long_long_type;cxx_noexcept;cxx_nonstatic_member_init;cxx_nullptr;cxx_override;cxx_range_for;cxx_raw_string_literals;cxx_reference_qualified_functions;cxx_right_angle_brackets;cxx_rvalue_references;cxx_sizeof_member;cxx_static_assert;cxx_strong_enums;cxx_thread_local;cxx_trailing_return_types;cxx_unicode_literals;cxx_uniform_initialization;cxx_unrestricted_unions;cxx_user_literals;cxx_variadic_macros;cxx_variadic_templates;cxx_std_14;cxx_aggregate_default_initializers;cxx_attribute_deprecated;cxx_binary_literals;cxx_contextual_conversions;cxx_decltype_auto;cxx_digit_separators;cxx_generic_lambdas;cxx_lambda_init_captures;cxx_relaxed_constexpr;cxx_return_type_deduction;cxx_variable_templates;cxx_std_17;cxx_std_20;cxx_std_23")
set(CMAKE_CXX98_COMPILE_FEATURES "cxx_std_98;cxx_template_template_parameters")
set(CMAKE_CXX11_COMPILE_FEATURES "cxx_std_11;cxx_alias_templates;cxx_alignas;cxx_alignof;cxx_attributes;cxx_auto_type;cxx_constexpr;cxx_decltype;cxx_decltype_incomplete_return_types;cxx_default_function_template_args;cxx_defaulted_functions;cxx_defaulted_move_initializers;cxx_delegating_constructors;cxx_deleted_functions;cxx_enum_forward_declarations;cxx_explicit_conversions;cxx_extended_friend_declarations;cxx_extern_templates;cxx_final;cxx_func_identifier;cxx_generalized_initializers;cxx_inheriting_constructors;cxx_inline_namespaces;cxx_lambdas;cxx_local_type_template_args;cxx_long_long_type;cxx_noexcept;cxx_nonstatic_member_init;cxx_nullptr;cxx_override;cxx_range_for;cxx_raw_string_literals;cxx_reference_qualified_functions;cxx_right_angle_brackets;cxx_rvalue_references;cxx_sizeof_member;cxx_static_assert;cxx_strong_enums;cxx_thread_local;cxx_trailing_return_types;cxx_unicode_literals;cxx_uniform_initialization;cxx_unrestricted_unions;cxx_user_literals;cxx_variadic_macros;cxx_variadic_templates")
set(CMAKE_CXX14_COMPILE_FEATURES "cxx_std_14;cxx_aggregate_default_initializers;cxx_attribute_deprecated;cxx_binary_literals;cxx_contextual_conversions;cxx_decltype_auto;cxx_digit_separators;cxx_generic_lambdas;cxx_lambda_init_captures;cxx_relaxed_constexpr;cxx_return_type_deduction;cxx_variable_templates")
set(CMAKE_CXX17_COMPILE_FEATURES "cxx_std_17")
set(CMAKE_CXX20_COMPILE_FEATURES "cxx_std_20")
set(CMAKE_CXX23_COMPILE_FEATURES "cxx_std_23")
set(CMAKE_CXX_PLATFORM_ID "MinGW")
set(CMAKE_CXX_SIMULATE_ID "")
set(CMAKE_CXX_COMPILER_FRONTEND_VARIANT "GNU")
set(CMAKE_CXX_SIMULATE_VERSION "")
set(CMAKE_AR "E:/qt/Tools/mingw1310_64/bin/ar.exe")
set(CMAKE_CXX_COMPILER_AR "E:/qt/Tools/mingw1310_64/bin/gcc-ar.exe")
set(CMAKE_RANLIB "E:/qt/Tools/mingw1310_64/bin/ranlib.exe")
set(CMAKE_CXX_COMPILER_RANLIB "E:/qt/Tools/mingw1310_64/bin/gcc-ranlib.exe")
set(CMAKE_LINKER "E:/qt/Tools/mingw1310_64/bin/ld.exe")
set(CMAKE_LINKER_LINK "")
set(CMAKE_LINKER_LLD "")
set(CMAKE_CXX_COMPILER_LINKER "../src/gcc-13.1.0/configure --host=x86_64-w64-mingw32 --build=x86_64-w64-mingw32 --target=x86_64-w64-mingw32 --prefix=/mingw64 --with-sysroot=/c/buildroot/x86_64-1310-posix-seh-msvcrt-rt_v11-rev1/mingw64 --enable-host-shared --disable-multilib --enable-languages=c,c++,fortran,lto --enable-libstdcxx-time=yes --enable-threads=posix --enable-libgomp --enable-libatomic --enable-lto --enable-graphite --enable-checking=release --enable-fully-dynamic-string --enable-version-specific-runtime-libs --enable-libstdcxx-filesystem-ts=yes --disable-libssp --disable-libstdcxx-pch --disable-libstdcxx-debug --enable-bootstrap --disable-rpath --disable-win32-registry --disable-nls --disable-werror --disable-symvers --with-gnu-as --with-gnu-ld --with-arch=nocona --with-tune=core2 --with-libiconv --with-system-zlib --with-gmp=/c/buildroot/prerequisites/x86_64-w64-mingw32-static --with-mpfr=/c/buildroot/prerequisites/x86_64-w64-mingw32-static --with-mpc=/c/buildroot/prerequisites/x86_64-w64-mingw32-static --with-isl=/c/buildroot/prerequisites/x86_64-w64-mingw32-static --with-pkgversion='x86_64-posix-seh-rev1, Built by MinGW-Builds project' --with-bugurl=https:/github.com/niXman/mingw-builds CFLAGS='-O2 -pipe -fno-ident -I/c/buildroot/x86_64-1310-posix-seh-msvcrt-rt_v11-rev1/mingw64/opt/include -I/c/buildroot/prerequisites/x86_64-zlib-static/include -I/c/buildroot/prerequisites/x86_64-w64-mingw32-static/include' CXXFLAGS='-O2 -pipe -fno-ident -I/c/buildroot/x86_64-1310-posix-seh-msvcrt-rt_v11-rev1/mingw64/opt/include -I/c/buildroot/prerequisites/x86_64-zlib-static/include -I/c/buildroot/prerequisites/x86_64-w64-mingw32-static/include' CPPFLAGS=' -I/c/buildroot/x86_64-1310-posix-seh-msvcrt-rt_v11-rev1/mingw64/opt/include -I/c/buildroot/prerequisites/x86_64-zlib-static/include -I/c/buildroot/prerequisites/x86_64-w64-mingw32-static/include' LDFLAGS='-pipe -fno-ident -L/c/buildroot/x86_64-1310-posix-seh-msvcrt-rt_v11-rev1/mingw64/opt/lib -L/c/buildroot/prerequisites/x86_64-zlib-static/lib -L/c/buildroot/prerequisites/x86_64-w64-mingw32-static/lib ' LD_FOR_TARGET=/c/buildroot/x86_64-1310-posix-seh-msvcrt-rt_v11-rev1/mingw64/bin/ld.exe")
set(CMAKE_CXX_COMPILER_LINKER_ID "")
set(CMAKE_CXX_COMPILER_LINKER_VERSION )
set(CMAKE_CXX_COMPILER_LINKER_FRONTEND_VARIANT )
set(CMAKE_MT "")
set(CMAKE_TAPI "CMAKE_TAPI-NOTFOUND")
set(CMAKE_COMPILER_IS_GNUCXX 1)
set(CMAKE_CXX_COMPILER_LOADED 1)
set(CMAKE_CXX_COMPILER_WORKS TRUE)
set(CMAKE_CXX_ABI_COMPILED TRUE)
set(CMAKE_CXX_COMPILER_ENV_VAR "CXX")
set(CMAKE_CXX_COMPILER_ID_RUN 1)
set(CMAKE_CXX_SOURCE_FILE_EXTENSIONS C;M;c++;cc;cpp;cxx;m;mm;mpp;CPP;ixx;cppm;ccm;cxxm;c++m)
set(CMAKE_CXX_IGNORE_EXTENSIONS inl;h;hpp;HPP;H;o;O;obj;OBJ;def;DEF;rc;RC)
foreach (lang IN ITEMS C OBJC OBJCXX)
if (CMAKE_${lang}_COMPILER_ID_RUN)
foreach(extension IN LISTS CMAKE_${lang}_SOURCE_FILE_EXTENSIONS)
list(REMOVE_ITEM CMAKE_CXX_SOURCE_FILE_EXTENSIONS ${extension})
endforeach()
endif()
endforeach()
set(CMAKE_CXX_LINKER_PREFERENCE 30)
set(CMAKE_CXX_LINKER_PREFERENCE_PROPAGATES 1)
set(CMAKE_CXX_LINKER_DEPFILE_SUPPORTED FALSE)
# Save compiler ABI information.
set(CMAKE_CXX_SIZEOF_DATA_PTR "8")
set(CMAKE_CXX_COMPILER_ABI "")
set(CMAKE_CXX_BYTE_ORDER "LITTLE_ENDIAN")
set(CMAKE_CXX_LIBRARY_ARCHITECTURE "")
if(CMAKE_CXX_SIZEOF_DATA_PTR)
set(CMAKE_SIZEOF_VOID_P "${CMAKE_CXX_SIZEOF_DATA_PTR}")
endif()
if(CMAKE_CXX_COMPILER_ABI)
set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_CXX_COMPILER_ABI}")
endif()
if(CMAKE_CXX_LIBRARY_ARCHITECTURE)
set(CMAKE_LIBRARY_ARCHITECTURE "")
endif()
set(CMAKE_CXX_CL_SHOWINCLUDES_PREFIX "")
if(CMAKE_CXX_CL_SHOWINCLUDES_PREFIX)
set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_CXX_CL_SHOWINCLUDES_PREFIX}")
endif()
set(CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES "E:/qt/Tools/mingw1310_64/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++;E:/qt/Tools/mingw1310_64/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/x86_64-w64-mingw32;E:/qt/Tools/mingw1310_64/lib/gcc/x86_64-w64-mingw32/13.1.0/include/c++/backward;E:/qt/Tools/mingw1310_64/lib/gcc/x86_64-w64-mingw32/13.1.0/include;E:/qt/Tools/mingw1310_64/lib/gcc/x86_64-w64-mingw32/13.1.0/include-fixed;E:/qt/Tools/mingw1310_64/x86_64-w64-mingw32/include")
set(CMAKE_CXX_IMPLICIT_LINK_LIBRARIES "stdc++;mingw32;gcc_s;gcc;moldname;mingwex;kernel32;pthread;advapi32;shell32;user32;kernel32;iconv;mingw32;gcc_s;gcc;moldname;mingwex;kernel32")
set(CMAKE_CXX_IMPLICIT_LINK_DIRECTORIES "E:/qt/Tools/mingw1310_64/lib/gcc/x86_64-w64-mingw32/13.1.0;E:/qt/Tools/mingw1310_64/lib/gcc;E:/qt/Tools/mingw1310_64/x86_64-w64-mingw32/lib;E:/qt/Tools/mingw1310_64/lib")
set(CMAKE_CXX_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "")
set(CMAKE_CXX_COMPILER_CLANG_RESOURCE_DIR "")

View File

@ -0,0 +1,6 @@
set(CMAKE_RC_COMPILER "E:/qt/Tools/mingw1310_64/bin/windres.exe")
set(CMAKE_RC_COMPILER_ARG1 "")
set(CMAKE_RC_COMPILER_LOADED 1)
set(CMAKE_RC_SOURCE_FILE_EXTENSIONS rc;RC)
set(CMAKE_RC_OUTPUT_EXTENSION .obj)
set(CMAKE_RC_COMPILER_ENV_VAR "RC")

View File

@ -0,0 +1,15 @@
set(CMAKE_HOST_SYSTEM "Windows-10.0.19045")
set(CMAKE_HOST_SYSTEM_NAME "Windows")
set(CMAKE_HOST_SYSTEM_VERSION "10.0.19045")
set(CMAKE_HOST_SYSTEM_PROCESSOR "AMD64")
set(CMAKE_SYSTEM "Windows-10.0.19045")
set(CMAKE_SYSTEM_NAME "Windows")
set(CMAKE_SYSTEM_VERSION "10.0.19045")
set(CMAKE_SYSTEM_PROCESSOR "AMD64")
set(CMAKE_CROSSCOMPILING "FALSE")
set(CMAKE_SYSTEM_LOADED 1)

View File

@ -0,0 +1,284 @@
/********************************************************************************
** Form generated from reading UI file 'alarmdialog.ui'
**
** Created by: Qt User Interface Compiler version 6.8.1
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
#ifndef UI_ALARMDIALOG_H
#define UI_ALARMDIALOG_H
#include <QtCore/QVariant>
#include <QtQuickWidgets/QQuickWidget>
#include <QtWidgets/QApplication>
#include <QtWidgets/QHBoxLayout>
#include <QtWidgets/QLabel>
#include <QtWidgets/QPushButton>
#include <QtWidgets/QSpacerItem>
#include <QtWidgets/QVBoxLayout>
#include <QtWidgets/QWidget>
QT_BEGIN_NAMESPACE
class Ui_alarmdialog
{
public:
QVBoxLayout *verticalLayout;
QHBoxLayout *horizontalLayout_7;
QLabel *label_2;
QLabel *nameHead;
QSpacerItem *horizontalSpacer;
QHBoxLayout *horizontalLayout_6;
QVBoxLayout *verticalLayout_2;
QLabel *dateStart;
QLabel *dateEnd;
QHBoxLayout *horizontalLayout;
QLabel *name;
QHBoxLayout *chartLayout;
QHBoxLayout *horizontalLayout_2;
QQuickWidget *map;
QHBoxLayout *horizontalLayout_5;
QSpacerItem *horizontalSpacer_2;
QPushButton *cancelButton;
QPushButton *statisticButton;
void setupUi(QWidget *alarmdialog)
{
if (alarmdialog->objectName().isEmpty())
alarmdialog->setObjectName("alarmdialog");
alarmdialog->resize(775, 850);
alarmdialog->setMinimumSize(QSize(775, 850));
alarmdialog->setMaximumSize(QSize(775, 850));
alarmdialog->setStyleSheet(QString::fromUtf8("QWidget#alarmdialog{\n"
"background: white;\n"
"}"));
verticalLayout = new QVBoxLayout(alarmdialog);
verticalLayout->setSpacing(0);
verticalLayout->setObjectName("verticalLayout");
verticalLayout->setContentsMargins(0, 0, 0, 0);
horizontalLayout_7 = new QHBoxLayout();
horizontalLayout_7->setSpacing(20);
horizontalLayout_7->setObjectName("horizontalLayout_7");
horizontalLayout_7->setContentsMargins(25, -1, -1, 25);
label_2 = new QLabel(alarmdialog);
label_2->setObjectName("label_2");
label_2->setMinimumSize(QSize(29, 32));
label_2->setMaximumSize(QSize(29, 32));
label_2->setPixmap(QPixmap(QString::fromUtf8(":/png/res/png/bell.png")));
horizontalLayout_7->addWidget(label_2);
nameHead = new QLabel(alarmdialog);
nameHead->setObjectName("nameHead");
QSizePolicy sizePolicy(QSizePolicy::Policy::Preferred, QSizePolicy::Policy::Preferred);
sizePolicy.setHorizontalStretch(0);
sizePolicy.setVerticalStretch(29);
sizePolicy.setHeightForWidth(nameHead->sizePolicy().hasHeightForWidth());
nameHead->setSizePolicy(sizePolicy);
nameHead->setMinimumSize(QSize(0, 29));
nameHead->setMaximumSize(QSize(16777215, 29));
nameHead->setStyleSheet(QString::fromUtf8("background: transparent;\n"
"font-family: Inter;\n"
"font-size: 24px;\n"
"font-weight: 400;\n"
"line-height: 29.05px;\n"
"text-align: left;\n"
"color: #13385F;\n"
""));
horizontalLayout_7->addWidget(nameHead);
horizontalSpacer = new QSpacerItem(40, 29, QSizePolicy::Policy::Expanding, QSizePolicy::Policy::Minimum);
horizontalLayout_7->addItem(horizontalSpacer);
verticalLayout->addLayout(horizontalLayout_7);
horizontalLayout_6 = new QHBoxLayout();
horizontalLayout_6->setSpacing(0);
horizontalLayout_6->setObjectName("horizontalLayout_6");
horizontalLayout_6->setContentsMargins(0, -1, 0, 0);
verticalLayout_2 = new QVBoxLayout();
verticalLayout_2->setSpacing(0);
verticalLayout_2->setObjectName("verticalLayout_2");
verticalLayout_2->setContentsMargins(25, -1, 25, 15);
dateStart = new QLabel(alarmdialog);
dateStart->setObjectName("dateStart");
dateStart->setMinimumSize(QSize(0, 27));
dateStart->setMaximumSize(QSize(16777215, 27));
dateStart->setStyleSheet(QString::fromUtf8("background: transparent;\n"
"font-family: Inter;\n"
"font-size: 22px;\n"
"font-weight: 400;\n"
"line-height: 26.63px;\n"
"text-align: left;\n"
"color: #13385F;\n"
""));
verticalLayout_2->addWidget(dateStart);
dateEnd = new QLabel(alarmdialog);
dateEnd->setObjectName("dateEnd");
dateEnd->setMaximumSize(QSize(16777215, 27));
dateEnd->setStyleSheet(QString::fromUtf8("background: transparent;\n"
"font-family: Inter;\n"
"font-size: 22px;\n"
"font-weight: 400;\n"
"line-height: 26.63px;\n"
"text-align: left;\n"
"color: #13385F;\n"
""));
verticalLayout_2->addWidget(dateEnd);
horizontalLayout_6->addLayout(verticalLayout_2);
verticalLayout->addLayout(horizontalLayout_6);
horizontalLayout = new QHBoxLayout();
horizontalLayout->setSpacing(0);
horizontalLayout->setObjectName("horizontalLayout");
horizontalLayout->setContentsMargins(25, -1, 25, 15);
name = new QLabel(alarmdialog);
name->setObjectName("name");
name->setMinimumSize(QSize(0, 27));
name->setMaximumSize(QSize(16777215, 27));
name->setStyleSheet(QString::fromUtf8("background: transparent;\n"
"font-family: Inter;\n"
"font-size: 22px;\n"
"font-weight: 400;\n"
"line-height: 26.63px;\n"
"text-align: left;\n"
"color: #13385F;\n"
""));
horizontalLayout->addWidget(name);
verticalLayout->addLayout(horizontalLayout);
chartLayout = new QHBoxLayout();
chartLayout->setSpacing(0);
chartLayout->setObjectName("chartLayout");
chartLayout->setContentsMargins(25, -1, 25, -1);
verticalLayout->addLayout(chartLayout);
horizontalLayout_2 = new QHBoxLayout();
horizontalLayout_2->setSpacing(0);
horizontalLayout_2->setObjectName("horizontalLayout_2");
horizontalLayout_2->setContentsMargins(25, -1, 25, -1);
map = new QQuickWidget(alarmdialog);
map->setObjectName("map");
map->setMinimumSize(QSize(710, 320));
map->setMaximumSize(QSize(710, 320));
map->setResizeMode(QQuickWidget::ResizeMode::SizeRootObjectToView);
horizontalLayout_2->addWidget(map);
verticalLayout->addLayout(horizontalLayout_2);
horizontalLayout_5 = new QHBoxLayout();
horizontalLayout_5->setSpacing(10);
horizontalLayout_5->setObjectName("horizontalLayout_5");
horizontalLayout_5->setContentsMargins(25, -1, 25, -1);
horizontalSpacer_2 = new QSpacerItem(40, 20, QSizePolicy::Policy::Expanding, QSizePolicy::Policy::Minimum);
horizontalLayout_5->addItem(horizontalSpacer_2);
cancelButton = new QPushButton(alarmdialog);
cancelButton->setObjectName("cancelButton");
cancelButton->setMinimumSize(QSize(110, 41));
cancelButton->setMaximumSize(QSize(110, 41));
cancelButton->setStyleSheet(QString::fromUtf8("QPushButton {\n"
" border-style: outset;\n"
" border-radius: 5px;\n"
" border-color: #13385F;\n"
" border-width: 1px;\n"
" color: #13385F;\n"
" font-family: Inter;\n"
" font-size: 22px;\n"
" font-weight: 500;\n"
" line-height: 26.63px;\n"
" text-align: center;\n"
"}\n"
"\n"
"QPushButton:hover {\n"
" background-color: #e0f2f7;\n"
" border-color: #1A4A73;\n"
" color: #1A4A73;\n"
"}\n"
"\n"
"QPushButton:pressed {\n"
" background-color: #102E47;\n"
" border-color: #102E47;\n"
" color: white; \n"
"}"));
horizontalLayout_5->addWidget(cancelButton);
statisticButton = new QPushButton(alarmdialog);
statisticButton->setObjectName("statisticButton");
statisticButton->setMinimumSize(QSize(266, 41));
statisticButton->setMaximumSize(QSize(266, 41));
statisticButton->setStyleSheet(QString::fromUtf8("QPushButton {\n"
" border-style: outset;\n"
" border-radius: 5px;\n"
" border-color: #13385F;\n"
" border-width: 1px;\n"
" background-color: #13385F;\n"
" color: white;\n"
" font-family: Inter;\n"
" font-size: 22px;\n"
" font-weight: 500;\n"
" line-height: 26.63px;\n"
" text-align: center;\n"
"}\n"
"\n"
"QPushButton:hover {\n"
" background-color: #1A4A73;\n"
" border-color: #1A4A73;\n"
"}\n"
"\n"
"QPushButton:pressed {\n"
" background-color: #102E47;\n"
" border-color: #102E47;\n"
"}"));
horizontalLayout_5->addWidget(statisticButton);
verticalLayout->addLayout(horizontalLayout_5);
retranslateUi(alarmdialog);
QMetaObject::connectSlotsByName(alarmdialog);
} // setupUi
void retranslateUi(QWidget *alarmdialog)
{
alarmdialog->setWindowTitle(QCoreApplication::translate("alarmdialog", "Form", nullptr));
label_2->setText(QString());
nameHead->setText(QCoreApplication::translate("alarmdialog", "\320\235\320\260\320\267\320\262\320\260\320\275\320\270\320\265 \320\264\320\260\321\202\321\207\320\270\320\272\320\260", nullptr));
dateStart->setText(QCoreApplication::translate("alarmdialog", "TextLabel", nullptr));
dateEnd->setText(QCoreApplication::translate("alarmdialog", "TextLabel", nullptr));
name->setText(QCoreApplication::translate("alarmdialog", "TextLabel", nullptr));
cancelButton->setText(QCoreApplication::translate("alarmdialog", "\320\236\321\202\320\274\320\265\320\275\320\260", nullptr));
statisticButton->setText(QCoreApplication::translate("alarmdialog", "\320\237\320\265\321\200\320\265\320\271\321\202\320\270 \320\272 \321\201\321\202\320\260\321\202\320\270\321\201\321\202\320\270\320\272\320\265", nullptr));
} // retranslateUi
};
namespace Ui {
class alarmdialog: public Ui_alarmdialog {};
} // namespace Ui
QT_END_NAMESPACE
#endif // UI_ALARMDIALOG_H

View File

@ -0,0 +1,201 @@
/********************************************************************************
** Form generated from reading UI file 'apiform.ui'
**
** Created by: Qt User Interface Compiler version 6.8.1
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
#ifndef UI_APIFORM_H
#define UI_APIFORM_H
#include <QtCore/QVariant>
#include <QtWidgets/QApplication>
#include <QtWidgets/QHBoxLayout>
#include <QtWidgets/QLabel>
#include <QtWidgets/QLineEdit>
#include <QtWidgets/QPushButton>
#include <QtWidgets/QSpacerItem>
#include <QtWidgets/QVBoxLayout>
#include <QtWidgets/QWidget>
QT_BEGIN_NAMESPACE
class Ui_ApiForm
{
public:
QVBoxLayout *verticalLayout;
QLabel *label_3;
QHBoxLayout *horizontalLayout;
QLabel *label;
QLabel *label_2;
QHBoxLayout *horizontalLayout_2;
QLineEdit *adres;
QLineEdit *port;
QSpacerItem *verticalSpacer_2;
QPushButton *loginButton;
QSpacerItem *verticalSpacer;
void setupUi(QWidget *ApiForm)
{
if (ApiForm->objectName().isEmpty())
ApiForm->setObjectName("ApiForm");
ApiForm->resize(800, 400);
ApiForm->setMinimumSize(QSize(800, 400));
ApiForm->setMaximumSize(QSize(800, 400));
ApiForm->setStyleSheet(QString::fromUtf8("#ApiForm{\n"
" image: url(:/visual/res/svg/fema-wing.svg);\n"
" background-color: #ffffff; \n"
" image-position: bottom right;\n"
" border: none;\n"
"}"));
verticalLayout = new QVBoxLayout(ApiForm);
verticalLayout->setSpacing(0);
verticalLayout->setObjectName("verticalLayout");
verticalLayout->setContentsMargins(25, 25, 25, 0);
label_3 = new QLabel(ApiForm);
label_3->setObjectName("label_3");
label_3->setMaximumSize(QSize(16777215, 30));
label_3->setStyleSheet(QString::fromUtf8("background: transparent;\n"
"font-family: Inter;\n"
"font-size: 20px;\n"
"font-weight: 400;\n"
"line-height: 36.31px;\n"
"text-align: left;\n"
"color: #13385F;\n"
""));
verticalLayout->addWidget(label_3);
horizontalLayout = new QHBoxLayout();
horizontalLayout->setSpacing(10);
horizontalLayout->setObjectName("horizontalLayout");
label = new QLabel(ApiForm);
label->setObjectName("label");
label->setMinimumSize(QSize(0, 40));
label->setMaximumSize(QSize(16777215, 40));
label->setStyleSheet(QString::fromUtf8("background: transparent;\n"
"font-family: Inter;\n"
"font-size: 20px;\n"
"font-weight: 500;\n"
"line-height: 36.31px;\n"
"text-align: left;\n"
"color: #13385F;\n"
""));
horizontalLayout->addWidget(label);
label_2 = new QLabel(ApiForm);
label_2->setObjectName("label_2");
label_2->setMinimumSize(QSize(0, 40));
label_2->setMaximumSize(QSize(16777215, 40));
label_2->setStyleSheet(QString::fromUtf8("background: transparent;\n"
"font-family: Inter;\n"
"font-size: 20px;\n"
"font-weight: 500;\n"
"line-height: 36.31px;\n"
"text-align: left;\n"
"color: #13385F;\n"
""));
horizontalLayout->addWidget(label_2);
verticalLayout->addLayout(horizontalLayout);
horizontalLayout_2 = new QHBoxLayout();
horizontalLayout_2->setSpacing(10);
horizontalLayout_2->setObjectName("horizontalLayout_2");
adres = new QLineEdit(ApiForm);
adres->setObjectName("adres");
adres->setMinimumSize(QSize(0, 40));
adres->setStyleSheet(QString::fromUtf8("border: 2px solid #DCD174;\n"
"font-family: Inter;\n"
"font-size: 20px;\n"
"font-weight: 400;\n"
"line-height: 31.47px;\n"
"text-align: left;\n"
"background: #00000000;\n"
"color: #13385F;\n"
""));
horizontalLayout_2->addWidget(adres);
port = new QLineEdit(ApiForm);
port->setObjectName("port");
port->setMinimumSize(QSize(0, 40));
port->setStyleSheet(QString::fromUtf8("border: 2px solid #DCD174;\n"
"font-family: Inter;\n"
"font-size: 20px;\n"
"font-weight: 400;\n"
"line-height: 31.47px;\n"
"text-align: left;\n"
"background: #00000000;\n"
"color: #13385F;\n"
""));
horizontalLayout_2->addWidget(port);
verticalLayout->addLayout(horizontalLayout_2);
verticalSpacer_2 = new QSpacerItem(20, 40, QSizePolicy::Policy::Minimum, QSizePolicy::Policy::Fixed);
verticalLayout->addItem(verticalSpacer_2);
loginButton = new QPushButton(ApiForm);
loginButton->setObjectName("loginButton");
loginButton->setStyleSheet(QString::fromUtf8("QPushButton {\n"
" border-style: outset;\n"
" border-radius: 5px;\n"
" border-color: #13385F;\n"
" border-width: 1px;\n"
" background-color: #13385F;\n"
" color: white;\n"
" font-family: Inter;\n"
" font-size: 22px;\n"
" font-weight: 500;\n"
" line-height: 26.63px;\n"
" text-align: center;\n"
"}\n"
"\n"
"QPushButton:hover {\n"
" background-color: #1A4A73;\n"
" border-color: #1A4A73;\n"
"}\n"
"\n"
"QPushButton:pressed {\n"
" background-color: #102E47;\n"
" border-color: #102E47;\n"
"}"));
verticalLayout->addWidget(loginButton);
verticalSpacer = new QSpacerItem(20, 40, QSizePolicy::Policy::Minimum, QSizePolicy::Policy::Expanding);
verticalLayout->addItem(verticalSpacer);
retranslateUi(ApiForm);
QMetaObject::connectSlotsByName(ApiForm);
} // setupUi
void retranslateUi(QWidget *ApiForm)
{
ApiForm->setWindowTitle(QCoreApplication::translate("ApiForm", "Form", nullptr));
label_3->setText(QCoreApplication::translate("ApiForm", "\320\227\320\264\321\200\320\260\320\262\321\201\321\202\320\262\321\203\320\271\321\202\320\265! \320\222\320\262\320\265\320\264\320\270\321\202\320\265 \320\277\320\276\320\266\320\260\320\273\321\203\320\271\321\201\321\202\320\260 \320\260\320\264\321\200\320\265\321\201 \320\270 \320\277\320\276\321\200\321\202 \321\203\321\201\321\202\321\200\320\276\320\271\321\201\321\202\320\262\320\260", nullptr));
label->setText(QCoreApplication::translate("ApiForm", "\320\220\320\264\321\200\320\265\321\201:", nullptr));
label_2->setText(QCoreApplication::translate("ApiForm", "\320\237\320\276\321\200\321\202:", nullptr));
loginButton->setText(QCoreApplication::translate("ApiForm", "\320\222\320\276\320\271\321\202\320\270 \320\262 \320\277\321\200\320\270\320\273\320\276\320\266\320\265\320\275\320\270\320\265", nullptr));
} // retranslateUi
};
namespace Ui {
class ApiForm: public Ui_ApiForm {};
} // namespace Ui
QT_END_NAMESPACE
#endif // UI_APIFORM_H

View File

@ -0,0 +1,792 @@
/********************************************************************************
** Form generated from reading UI file 'sensordialog.ui'
**
** Created by: Qt User Interface Compiler version 6.8.1
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/
#ifndef UI_SENSORDIALOG_H
#define UI_SENSORDIALOG_H
#include <QtCore/QVariant>
#include <QtWidgets/QApplication>
#include <QtWidgets/QComboBox>
#include <QtWidgets/QDialog>
#include <QtWidgets/QHBoxLayout>
#include <QtWidgets/QLabel>
#include <QtWidgets/QLineEdit>
#include <QtWidgets/QPushButton>
#include <QtWidgets/QSpacerItem>
#include <QtWidgets/QTextEdit>
#include <QtWidgets/QVBoxLayout>
QT_BEGIN_NAMESPACE
class Ui_SensorDialog
{
public:
QVBoxLayout *verticalLayout;
QHBoxLayout *horizontalLayout_18;
QLabel *label_14;
QLabel *nameHeader;
QSpacerItem *horizontalSpacer_2;
QHBoxLayout *horizontalLayout_17;
QLabel *label;
QLineEdit *name;
QHBoxLayout *horizontalLayout_16;
QLabel *label_2;
QLineEdit *unitName;
QHBoxLayout *horizontalLayout_15;
QLabel *label_3;
QComboBox *isBooled;
QHBoxLayout *horizontalLayout_14;
QLabel *label_4;
QComboBox *isAlarm;
QHBoxLayout *horizontalLayout_13;
QLabel *label_5;
QLineEdit *alarmLow;
QHBoxLayout *horizontalLayout_12;
QLabel *label_6;
QLineEdit *alarmUp;
QHBoxLayout *horizontalLayout_11;
QLabel *label_7;
QLineEdit *alarmCooldown;
QHBoxLayout *horizontalLayout_10;
QLabel *label_8;
QHBoxLayout *horizontalLayout_9;
QTextEdit *logError;
QHBoxLayout *horizontalLayout_8;
QLabel *label_9;
QHBoxLayout *horizontalLayout_7;
QTextEdit *logManual;
QHBoxLayout *horizontalLayout_6;
QLabel *label_10;
QLineEdit *alarmSleepage;
QHBoxLayout *horizontalLayout_5;
QLabel *label_11;
QHBoxLayout *horizontalLayout_4;
QTextEdit *logHugeError;
QHBoxLayout *horizontalLayout_3;
QLabel *label_12;
QComboBox *isVisible;
QHBoxLayout *horizontalLayout_2;
QSpacerItem *horizontalSpacer;
QPushButton *cancelButton;
QPushButton *saveButton;
void setupUi(QDialog *SensorDialog)
{
if (SensorDialog->objectName().isEmpty())
SensorDialog->setObjectName("SensorDialog");
SensorDialog->resize(759, 947);
QSizePolicy sizePolicy(QSizePolicy::Policy::Fixed, QSizePolicy::Policy::Fixed);
sizePolicy.setHorizontalStretch(0);
sizePolicy.setVerticalStretch(0);
sizePolicy.setHeightForWidth(SensorDialog->sizePolicy().hasHeightForWidth());
SensorDialog->setSizePolicy(sizePolicy);
SensorDialog->setStyleSheet(QString::fromUtf8("background-color: white;"));
verticalLayout = new QVBoxLayout(SensorDialog);
verticalLayout->setSpacing(0);
verticalLayout->setObjectName("verticalLayout");
verticalLayout->setContentsMargins(25, 0, 25, 0);
horizontalLayout_18 = new QHBoxLayout();
horizontalLayout_18->setSpacing(20);
horizontalLayout_18->setObjectName("horizontalLayout_18");
horizontalLayout_18->setContentsMargins(-1, 25, -1, 25);
label_14 = new QLabel(SensorDialog);
label_14->setObjectName("label_14");
sizePolicy.setHeightForWidth(label_14->sizePolicy().hasHeightForWidth());
label_14->setSizePolicy(sizePolicy);
label_14->setMinimumSize(QSize(32, 32));
label_14->setMaximumSize(QSize(32, 32));
label_14->setStyleSheet(QString::fromUtf8(""));
label_14->setPixmap(QPixmap(QString::fromUtf8(":/visual/res/svg/settings.svg")));
horizontalLayout_18->addWidget(label_14);
nameHeader = new QLabel(SensorDialog);
nameHeader->setObjectName("nameHeader");
nameHeader->setStyleSheet(QString::fromUtf8("background: transparent;\n"
"font-family: Inter;\n"
"font-size: 22px;\n"
"font-weight: 400;\n"
"line-height: 26.63px;\n"
"text-align: left;\n"
"color: #13385F;\n"
""));
horizontalLayout_18->addWidget(nameHeader);
horizontalSpacer_2 = new QSpacerItem(40, 20, QSizePolicy::Policy::Expanding, QSizePolicy::Policy::Minimum);
horizontalLayout_18->addItem(horizontalSpacer_2);
verticalLayout->addLayout(horizontalLayout_18);
horizontalLayout_17 = new QHBoxLayout();
horizontalLayout_17->setSpacing(15);
horizontalLayout_17->setObjectName("horizontalLayout_17");
horizontalLayout_17->setContentsMargins(-1, -1, -1, 10);
label = new QLabel(SensorDialog);
label->setObjectName("label");
label->setStyleSheet(QString::fromUtf8("background: transparent;\n"
"font-family: Inter;\n"
"font-size: 22px;\n"
"font-weight: 400;\n"
"line-height: 26.63px;\n"
"text-align: left;\n"
"color: #13385F;\n"
""));
horizontalLayout_17->addWidget(label);
name = new QLineEdit(SensorDialog);
name->setObjectName("name");
name->setStyleSheet(QString::fromUtf8("border: 2px solid #DCD174;\n"
"font-family: Inter;\n"
"font-size: 26px;\n"
"font-weight: 400;\n"
"line-height: 31.47px;\n"
"text-align: left;\n"
"background: #00000000;\n"
"color: #13385F;\n"
""));
horizontalLayout_17->addWidget(name);
verticalLayout->addLayout(horizontalLayout_17);
horizontalLayout_16 = new QHBoxLayout();
horizontalLayout_16->setSpacing(15);
horizontalLayout_16->setObjectName("horizontalLayout_16");
horizontalLayout_16->setContentsMargins(-1, -1, -1, 10);
label_2 = new QLabel(SensorDialog);
label_2->setObjectName("label_2");
label_2->setStyleSheet(QString::fromUtf8("background: transparent;\n"
"font-family: Inter;\n"
"font-size: 22px;\n"
"font-weight: 400;\n"
"line-height: 26.63px;\n"
"text-align: left;\n"
"color: #13385F;\n"
""));
horizontalLayout_16->addWidget(label_2);
unitName = new QLineEdit(SensorDialog);
unitName->setObjectName("unitName");
unitName->setStyleSheet(QString::fromUtf8("border: 2px solid #DCD174;\n"
"font-family: Inter;\n"
"font-size: 26px;\n"
"font-weight: 400;\n"
"line-height: 31.47px;\n"
"text-align: left;\n"
"background: #00000000;\n"
"color: #13385F;\n"
""));
horizontalLayout_16->addWidget(unitName);
verticalLayout->addLayout(horizontalLayout_16);
horizontalLayout_15 = new QHBoxLayout();
horizontalLayout_15->setSpacing(15);
horizontalLayout_15->setObjectName("horizontalLayout_15");
horizontalLayout_15->setContentsMargins(-1, -1, -1, 10);
label_3 = new QLabel(SensorDialog);
label_3->setObjectName("label_3");
QSizePolicy sizePolicy1(QSizePolicy::Policy::Maximum, QSizePolicy::Policy::Preferred);
sizePolicy1.setHorizontalStretch(0);
sizePolicy1.setVerticalStretch(0);
sizePolicy1.setHeightForWidth(label_3->sizePolicy().hasHeightForWidth());
label_3->setSizePolicy(sizePolicy1);
label_3->setStyleSheet(QString::fromUtf8("background: transparent;\n"
"font-family: Inter;\n"
"font-size: 22px;\n"
"font-weight: 400;\n"
"line-height: 26.63px;\n"
"text-align: left;\n"
"color: #13385F;\n"
""));
horizontalLayout_15->addWidget(label_3);
isBooled = new QComboBox(SensorDialog);
isBooled->setObjectName("isBooled");
isBooled->setStyleSheet(QString::fromUtf8("QComboBox::drop-down {\n"
" border: 0px;\n"
"}\n"
"\n"
"QComboBox::down-arrow {\n"
" image: url(:/visual/res/svg/chevron-down.png);\n"
"}\n"
"\n"
"QComboBox {\n"
" border: 2px solid #DCD174;\n"
" background: transparent;\n"
" color: #13385F;\n"
" font-family: Inter;\n"
" font-size: 20px;\n"
" font-weight: 400;\n"
"}\n"
"\n"
"QComboBox QAbstractItemView {\n"
" border: 2px solid #DCD174; \n"
" background: white; \n"
" selection-color: red;\n"
" selection-background-color: blue;\n"
" outline: 0px;;\n"
"}\n"
"\n"
"QComboBox QAbstractItemView::item {\n"
" font-family: Inter;\n"
" font-size: 50px;\n"
" font-weight: 400;\n"
" text-align: left;\n"
" padding: 5px;\n"
" color: #13385F;\n"
" outline: 0px;;\n"
"}\n"
"\n"
"QComboBox QAbstractItemView::item:hover {\n"
" background-color: #13385F; \n"
" selection-color: white;\n"
" outline: 0px;;\n"
"}\n"
"\n"
"\n"
""));
horizontalLayout_15->addWidget(isBooled);
verticalLayout->addLayout(horizontalLayout_15);
horizontalLayout_14 = new QHBoxLayout();
horizontalLayout_14->setSpacing(15);
horizontalLayout_14->setObjectName("horizontalLayout_14");
horizontalLayout_14->setContentsMargins(-1, -1, -1, 10);
label_4 = new QLabel(SensorDialog);
label_4->setObjectName("label_4");
sizePolicy1.setHeightForWidth(label_4->sizePolicy().hasHeightForWidth());
label_4->setSizePolicy(sizePolicy1);
label_4->setStyleSheet(QString::fromUtf8("background: transparent;\n"
"font-family: Inter;\n"
"font-size: 22px;\n"
"font-weight: 400;\n"
"line-height: 26.63px;\n"
"text-align: left;\n"
"color: #13385F;\n"
""));
horizontalLayout_14->addWidget(label_4);
isAlarm = new QComboBox(SensorDialog);
isAlarm->setObjectName("isAlarm");
isAlarm->setStyleSheet(QString::fromUtf8("QComboBox::drop-down {\n"
" border: 0px;\n"
"}\n"
"\n"
"QComboBox::down-arrow {\n"
" image: url(:/visual/res/svg/chevron-down.png);\n"
"}\n"
"\n"
"QComboBox {\n"
" border: 2px solid #DCD174;\n"
" background: transparent;\n"
" color: #13385F;\n"
" font-family: Inter;\n"
" font-size: 20px;\n"
" font-weight: 400;\n"
"}\n"
"\n"
"QComboBox QAbstractItemView {\n"
" border: 2px solid #DCD174; \n"
" background: white; \n"
" selection-color: red;\n"
" selection-background-color: blue;\n"
" outline: 0px;;\n"
"}\n"
"\n"
"QComboBox QAbstractItemView::item {\n"
" font-family: Inter;\n"
" font-size: 50px;\n"
" font-weight: 400;\n"
" text-align: left;\n"
" padding: 5px;\n"
" color: #13385F;\n"
" outline: 0px;;\n"
"}\n"
"\n"
"QComboBox QAbstractItemView::item:hover {\n"
" background-color: #13385F; \n"
" selection-color: white;\n"
" outline: 0px;;\n"
"}\n"
"\n"
"\n"
""));
horizontalLayout_14->addWidget(isAlarm);
verticalLayout->addLayout(horizontalLayout_14);
horizontalLayout_13 = new QHBoxLayout();
horizontalLayout_13->setSpacing(15);
horizontalLayout_13->setObjectName("horizontalLayout_13");
horizontalLayout_13->setContentsMargins(-1, -1, -1, 10);
label_5 = new QLabel(SensorDialog);
label_5->setObjectName("label_5");
sizePolicy1.setHeightForWidth(label_5->sizePolicy().hasHeightForWidth());
label_5->setSizePolicy(sizePolicy1);
label_5->setStyleSheet(QString::fromUtf8("background: transparent;\n"
"font-family: Inter;\n"
"font-size: 22px;\n"
"font-weight: 400;\n"
"line-height: 26.63px;\n"
"text-align: left;\n"
"color: #13385F;\n"
""));
horizontalLayout_13->addWidget(label_5);
alarmLow = new QLineEdit(SensorDialog);
alarmLow->setObjectName("alarmLow");
alarmLow->setStyleSheet(QString::fromUtf8("border: 2px solid #DCD174;\n"
"font-family: Inter;\n"
"font-size: 26px;\n"
"font-weight: 400;\n"
"line-height: 31.47px;\n"
"text-align: left;\n"
"background: #00000000;\n"
"color: #13385F;\n"
""));
horizontalLayout_13->addWidget(alarmLow);
verticalLayout->addLayout(horizontalLayout_13);
horizontalLayout_12 = new QHBoxLayout();
horizontalLayout_12->setSpacing(15);
horizontalLayout_12->setObjectName("horizontalLayout_12");
horizontalLayout_12->setContentsMargins(-1, -1, -1, 10);
label_6 = new QLabel(SensorDialog);
label_6->setObjectName("label_6");
sizePolicy1.setHeightForWidth(label_6->sizePolicy().hasHeightForWidth());
label_6->setSizePolicy(sizePolicy1);
label_6->setStyleSheet(QString::fromUtf8("background: transparent;\n"
"font-family: Inter;\n"
"font-size: 22px;\n"
"font-weight: 400;\n"
"line-height: 26.63px;\n"
"text-align: left;\n"
"color: #13385F;\n"
""));
horizontalLayout_12->addWidget(label_6);
alarmUp = new QLineEdit(SensorDialog);
alarmUp->setObjectName("alarmUp");
alarmUp->setStyleSheet(QString::fromUtf8("border: 2px solid #DCD174;\n"
"font-family: Inter;\n"
"font-size: 26px;\n"
"font-weight: 400;\n"
"line-height: 31.47px;\n"
"text-align: left;\n"
"background: #00000000;\n"
"color: #13385F;\n"
""));
horizontalLayout_12->addWidget(alarmUp);
verticalLayout->addLayout(horizontalLayout_12);
horizontalLayout_11 = new QHBoxLayout();
horizontalLayout_11->setSpacing(15);
horizontalLayout_11->setObjectName("horizontalLayout_11");
horizontalLayout_11->setContentsMargins(-1, -1, -1, 10);
label_7 = new QLabel(SensorDialog);
label_7->setObjectName("label_7");
label_7->setStyleSheet(QString::fromUtf8("background: transparent;\n"
"font-family: Inter;\n"
"font-size: 22px;\n"
"font-weight: 400;\n"
"line-height: 26.63px;\n"
"text-align: left;\n"
"color: #13385F;\n"
""));
horizontalLayout_11->addWidget(label_7);
alarmCooldown = new QLineEdit(SensorDialog);
alarmCooldown->setObjectName("alarmCooldown");
alarmCooldown->setStyleSheet(QString::fromUtf8("border: 2px solid #DCD174;\n"
"font-family: Inter;\n"
"font-size: 26px;\n"
"font-weight: 400;\n"
"line-height: 31.47px;\n"
"text-align: left;\n"
"background: #00000000;\n"
"color: #13385F;\n"
""));
horizontalLayout_11->addWidget(alarmCooldown);
verticalLayout->addLayout(horizontalLayout_11);
horizontalLayout_10 = new QHBoxLayout();
horizontalLayout_10->setObjectName("horizontalLayout_10");
horizontalLayout_10->setContentsMargins(-1, -1, -1, 5);
label_8 = new QLabel(SensorDialog);
label_8->setObjectName("label_8");
label_8->setStyleSheet(QString::fromUtf8("background: transparent;\n"
"font-family: Inter;\n"
"font-size: 22px;\n"
"font-weight: 400;\n"
"line-height: 26.63px;\n"
"text-align: left;\n"
"color: #13385F;\n"
""));
horizontalLayout_10->addWidget(label_8);
verticalLayout->addLayout(horizontalLayout_10);
horizontalLayout_9 = new QHBoxLayout();
horizontalLayout_9->setObjectName("horizontalLayout_9");
horizontalLayout_9->setContentsMargins(-1, -1, -1, 10);
logError = new QTextEdit(SensorDialog);
logError->setObjectName("logError");
QSizePolicy sizePolicy2(QSizePolicy::Policy::Expanding, QSizePolicy::Policy::Fixed);
sizePolicy2.setHorizontalStretch(0);
sizePolicy2.setVerticalStretch(0);
sizePolicy2.setHeightForWidth(logError->sizePolicy().hasHeightForWidth());
logError->setSizePolicy(sizePolicy2);
logError->setMinimumSize(QSize(707, 80));
logError->setMaximumSize(QSize(16777215, 80));
logError->setStyleSheet(QString::fromUtf8("border: 2px solid #DCD174;\n"
"font-family: Inter;\n"
"font-size: 26px;\n"
"font-weight: 400;\n"
"line-height: 31.47px;\n"
"text-align: left;\n"
"background: #00000000;\n"
"color: #13385F;\n"
""));
horizontalLayout_9->addWidget(logError);
verticalLayout->addLayout(horizontalLayout_9);
horizontalLayout_8 = new QHBoxLayout();
horizontalLayout_8->setObjectName("horizontalLayout_8");
horizontalLayout_8->setContentsMargins(-1, -1, -1, 5);
label_9 = new QLabel(SensorDialog);
label_9->setObjectName("label_9");
label_9->setStyleSheet(QString::fromUtf8("background: transparent;\n"
"font-family: Inter;\n"
"font-size: 22px;\n"
"font-weight: 400;\n"
"line-height: 26.63px;\n"
"text-align: left;\n"
"color: #13385F;\n"
""));
horizontalLayout_8->addWidget(label_9);
verticalLayout->addLayout(horizontalLayout_8);
horizontalLayout_7 = new QHBoxLayout();
horizontalLayout_7->setObjectName("horizontalLayout_7");
horizontalLayout_7->setContentsMargins(-1, -1, -1, 10);
logManual = new QTextEdit(SensorDialog);
logManual->setObjectName("logManual");
sizePolicy2.setHeightForWidth(logManual->sizePolicy().hasHeightForWidth());
logManual->setSizePolicy(sizePolicy2);
logManual->setMinimumSize(QSize(707, 80));
logManual->setMaximumSize(QSize(16777215, 80));
logManual->setStyleSheet(QString::fromUtf8("border: 2px solid #DCD174;\n"
"font-family: Inter;\n"
"font-size: 26px;\n"
"font-weight: 400;\n"
"line-height: 31.47px;\n"
"text-align: left;\n"
"background: #00000000;\n"
"color: #13385F;\n"
""));
horizontalLayout_7->addWidget(logManual);
verticalLayout->addLayout(horizontalLayout_7);
horizontalLayout_6 = new QHBoxLayout();
horizontalLayout_6->setSpacing(15);
horizontalLayout_6->setObjectName("horizontalLayout_6");
horizontalLayout_6->setContentsMargins(-1, -1, -1, 10);
label_10 = new QLabel(SensorDialog);
label_10->setObjectName("label_10");
label_10->setStyleSheet(QString::fromUtf8("background: transparent;\n"
"font-family: Inter;\n"
"font-size: 22px;\n"
"font-weight: 400;\n"
"line-height: 26.63px;\n"
"text-align: left;\n"
"color: #13385F;\n"
""));
horizontalLayout_6->addWidget(label_10);
alarmSleepage = new QLineEdit(SensorDialog);
alarmSleepage->setObjectName("alarmSleepage");
alarmSleepage->setStyleSheet(QString::fromUtf8("border: 2px solid #DCD174;\n"
"font-family: Inter;\n"
"font-size: 26px;\n"
"font-weight: 400;\n"
"line-height: 31.47px;\n"
"text-align: left;\n"
"background: #00000000;\n"
"color: #13385F;\n"
""));
horizontalLayout_6->addWidget(alarmSleepage);
verticalLayout->addLayout(horizontalLayout_6);
horizontalLayout_5 = new QHBoxLayout();
horizontalLayout_5->setObjectName("horizontalLayout_5");
horizontalLayout_5->setContentsMargins(-1, -1, -1, 5);
label_11 = new QLabel(SensorDialog);
label_11->setObjectName("label_11");
label_11->setStyleSheet(QString::fromUtf8("background: transparent;\n"
"font-family: Inter;\n"
"font-size: 22px;\n"
"font-weight: 400;\n"
"line-height: 26.63px;\n"
"text-align: left;\n"
"color: #13385F;\n"
""));
horizontalLayout_5->addWidget(label_11);
verticalLayout->addLayout(horizontalLayout_5);
horizontalLayout_4 = new QHBoxLayout();
horizontalLayout_4->setObjectName("horizontalLayout_4");
horizontalLayout_4->setContentsMargins(-1, -1, -1, 10);
logHugeError = new QTextEdit(SensorDialog);
logHugeError->setObjectName("logHugeError");
sizePolicy2.setHeightForWidth(logHugeError->sizePolicy().hasHeightForWidth());
logHugeError->setSizePolicy(sizePolicy2);
logHugeError->setMinimumSize(QSize(707, 80));
logHugeError->setMaximumSize(QSize(16777215, 80));
logHugeError->setStyleSheet(QString::fromUtf8("border: 2px solid #DCD174;\n"
"font-family: Inter;\n"
"font-size: 26px;\n"
"font-weight: 400;\n"
"line-height: 31.47px;\n"
"text-align: left;\n"
"background: #00000000;\n"
"color: #13385F;\n"
""));
horizontalLayout_4->addWidget(logHugeError);
verticalLayout->addLayout(horizontalLayout_4);
horizontalLayout_3 = new QHBoxLayout();
horizontalLayout_3->setSpacing(15);
horizontalLayout_3->setObjectName("horizontalLayout_3");
horizontalLayout_3->setContentsMargins(-1, -1, -1, 25);
label_12 = new QLabel(SensorDialog);
label_12->setObjectName("label_12");
sizePolicy1.setHeightForWidth(label_12->sizePolicy().hasHeightForWidth());
label_12->setSizePolicy(sizePolicy1);
label_12->setStyleSheet(QString::fromUtf8("background: transparent;\n"
"font-family: Inter;\n"
"font-size: 22px;\n"
"font-weight: 400;\n"
"line-height: 26.63px;\n"
"text-align: left;\n"
"color: #FF453A;\n"
""));
horizontalLayout_3->addWidget(label_12);
isVisible = new QComboBox(SensorDialog);
isVisible->setObjectName("isVisible");
isVisible->setStyleSheet(QString::fromUtf8("QComboBox::drop-down {\n"
" border: 0px;\n"
"}\n"
"\n"
"QComboBox::down-arrow {\n"
" image: url(:/visual/res/svg/chevron-down.png);\n"
"}\n"
"\n"
"QComboBox {\n"
" border: 2px solid #DCD174;\n"
" background: transparent;\n"
" color: #13385F;\n"
" font-family: Inter;\n"
" font-size: 20px;\n"
" font-weight: 400;\n"
"}\n"
"\n"
"QComboBox QAbstractItemView {\n"
" border: 2px solid #DCD174; \n"
" background: white; \n"
" selection-color: red;\n"
" selection-background-color: blue;\n"
" outline: 0px;;\n"
"}\n"
"\n"
"QComboBox QAbstractItemView::item {\n"
" font-family: Inter;\n"
" font-size: 50px;\n"
" font-weight: 400;\n"
" text-align: left;\n"
" padding: 5px;\n"
" color: #13385F;\n"
" outline: 0px;;\n"
"}\n"
"\n"
"QComboBox QAbstractItemView::item:hover {\n"
" background-color: #13385F; \n"
" selection-color: white;\n"
" outline: 0px;;\n"
"}\n"
"\n"
"\n"
""));
horizontalLayout_3->addWidget(isVisible);
verticalLayout->addLayout(horizontalLayout_3);
horizontalLayout_2 = new QHBoxLayout();
horizontalLayout_2->setSpacing(15);
horizontalLayout_2->setObjectName("horizontalLayout_2");
horizontalLayout_2->setContentsMargins(-1, -1, -1, 25);
horizontalSpacer = new QSpacerItem(40, 20, QSizePolicy::Policy::Expanding, QSizePolicy::Policy::Minimum);
horizontalLayout_2->addItem(horizontalSpacer);
cancelButton = new QPushButton(SensorDialog);
cancelButton->setObjectName("cancelButton");
sizePolicy.setHeightForWidth(cancelButton->sizePolicy().hasHeightForWidth());
cancelButton->setSizePolicy(sizePolicy);
cancelButton->setMinimumSize(QSize(110, 41));
cancelButton->setMaximumSize(QSize(110, 41));
cancelButton->setStyleSheet(QString::fromUtf8("QPushButton {\n"
" border-style: outset;\n"
" border-radius: 5px;\n"
" border-color: #13385F;\n"
" border-width: 1px;\n"
" color: #13385F;\n"
" font-family: Inter;\n"
" font-size: 22px;\n"
" font-weight: 500;\n"
" line-height: 26.63px;\n"
" text-align: center;\n"
"}\n"
"\n"
"QPushButton:hover {\n"
" background-color: #e0f2f7;\n"
" border-color: #1A4A73;\n"
" color: #1A4A73;\n"
"}\n"
"\n"
"QPushButton:pressed {\n"
" background-color: #102E47;\n"
" border-color: #102E47;\n"
" color: white; \n"
"}"));
horizontalLayout_2->addWidget(cancelButton);
saveButton = new QPushButton(SensorDialog);
saveButton->setObjectName("saveButton");
sizePolicy.setHeightForWidth(saveButton->sizePolicy().hasHeightForWidth());
saveButton->setSizePolicy(sizePolicy);
saveButton->setMinimumSize(QSize(143, 41));
saveButton->setMaximumSize(QSize(143, 41));
saveButton->setStyleSheet(QString::fromUtf8("QPushButton {\n"
" border-style: outset;\n"
" border-radius: 5px;\n"
" border-color: #13385F;\n"
" border-width: 1px;\n"
" background-color: #13385F;\n"
" color: white;\n"
" font-family: Inter;\n"
" font-size: 22px;\n"
" font-weight: 500;\n"
" line-height: 26.63px;\n"
" text-align: center;\n"
"}\n"
"\n"
"QPushButton:hover {\n"
" background-color: #1A4A73;\n"
" border-color: #1A4A73;\n"
"}\n"
"\n"
"QPushButton:pressed {\n"
" background-color: #102E47;\n"
" border-color: #102E47;\n"
"}"));
horizontalLayout_2->addWidget(saveButton);
verticalLayout->addLayout(horizontalLayout_2);
retranslateUi(SensorDialog);
QMetaObject::connectSlotsByName(SensorDialog);
} // setupUi
void retranslateUi(QDialog *SensorDialog)
{
SensorDialog->setWindowTitle(QCoreApplication::translate("SensorDialog", "Dialog", nullptr));
label_14->setText(QString());
nameHeader->setText(QCoreApplication::translate("SensorDialog", "TextLabel", nullptr));
label->setText(QCoreApplication::translate("SensorDialog", "\320\235\320\260\320\270\320\274\320\265\320\275\320\276\320\262\320\260\320\275\320\270\320\265", nullptr));
label_2->setText(QCoreApplication::translate("SensorDialog", "\320\225\320\264\320\270\320\275\320\270\321\206\320\260 \320\270\320\267\320\274\320\265\321\200\320\265\320\275\320\270\321\217", nullptr));
label_3->setText(QCoreApplication::translate("SensorDialog", "\320\236\321\202\320\276\320\261\321\200\320\260\320\266\320\260\321\202\321\214 \321\202\320\276\320\273\321\214\320\272\320\276 \320\224\320\260/\320\235\320\265\321\202 \320\262\320\274\320\265\321\201\321\202\320\276 \320\267\320\275\320\260\321\207\320\265\320\275\320\270\320\271 \320\264\320\260\321\202\321\207\320\270\320\272\320\260", nullptr));
label_4->setText(QCoreApplication::translate("SensorDialog", "\320\230\320\274\320\265\320\265\321\202 \320\273\320\270 \320\277\320\276\321\200\320\276\320\263\320\276\320\262\321\213\320\265 \320\267\320\275\320\260\321\207\320\265\320\275\320\270\321\217", nullptr));
label_5->setText(QCoreApplication::translate("SensorDialog", "\320\237\320\276\321\200\320\276\320\263\320\276\320\262\320\276\320\265 \320\267\320\275\320\260\321\207\320\265\320\275\320\270\320\265 (\320\274\320\270\320\275\320\270\320\274\321\203\320\274)", nullptr));
label_6->setText(QCoreApplication::translate("SensorDialog", "\320\237\320\276\321\200\320\276\320\263\320\276\320\262\320\276\320\265 \320\267\320\275\320\260\321\207\320\265\320\275\320\270\320\265 (\320\274\320\260\320\272\321\201\320\270\320\274\321\203\320\274)", nullptr));
label_7->setText(QCoreApplication::translate("SensorDialog", "\320\224\320\273\320\270\321\202\320\265\320\273\321\214\320\275\320\276\321\201\321\202\321\214, \321\201\320\265\320\272\321\203\320\275\320\264", nullptr));
label_8->setText(QCoreApplication::translate("SensorDialog", "\320\233\320\276\320\263 \320\276\321\210\320\270\320\261\320\272\320\270", nullptr));
label_9->setText(QCoreApplication::translate("SensorDialog", "\320\233\320\276\320\263 \320\270\320\275\321\201\321\202\321\200\321\203\320\272\321\206\320\270\320\270", nullptr));
label_10->setText(QCoreApplication::translate("SensorDialog", "\320\222\321\200\320\265\320\274\321\217 \320\277\320\276\320\262\321\202\320\276\321\200\320\260, \321\201\320\265\320\272\321\203\320\275\320\264", nullptr));
label_11->setText(QCoreApplication::translate("SensorDialog", "\320\233\320\276\320\263 \320\277\320\276\320\262\321\202\320\276\321\200\321\217\321\216\321\211\320\265\320\271\321\201\321\217 \320\276\321\210\320\270\320\261\320\272\320\270", nullptr));
label_12->setText(QCoreApplication::translate("SensorDialog", "\320\241\320\272\321\200\321\213\321\202\321\214 \320\264\320\260\321\202\321\207\320\270\320\272?", nullptr));
cancelButton->setText(QCoreApplication::translate("SensorDialog", "\320\236\321\202\320\274\320\265\320\275\320\260", nullptr));
saveButton->setText(QCoreApplication::translate("SensorDialog", "\320\241\320\276\321\205\321\200\320\260\320\275\320\270\321\202\321\214", nullptr));
} // retranslateUi
};
namespace Ui {
class SensorDialog: public Ui_SensorDialog {};
} // namespace Ui
QT_END_NAMESPACE
#endif // UI_SENSORDIALOG_H

View File

@ -0,0 +1,19 @@
// This file is autogenerated. Changes will be overwritten.
#include "EWIEGA46WW/moc_alarmdialog.cpp"
#include "EWIEGA46WW/moc_alarmsservice.cpp"
#include "EWIEGA46WW/moc_alarmwidget.cpp"
#include "EWIEGA46WW/moc_apiform.cpp"
#include "EWIEGA46WW/moc_httpclient.cpp"
#include "EWIEGA46WW/moc_incedentwidget.cpp"
#include "EWIEGA46WW/moc_journalservice.cpp"
#include "EWIEGA46WW/moc_logwidget.cpp"
#include "EWIEGA46WW/moc_mainwindow.cpp"
#include "EWIEGA46WW/moc_paginationbar.cpp"
#include "EWIEGA46WW/moc_plotservice.cpp"
#include "EWIEGA46WW/moc_qcustomplot.cpp"
#include "EWIEGA46WW/moc_savesensorservice.cpp"
#include "EWIEGA46WW/moc_sensordialog.cpp"
#include "EWIEGA46WW/moc_sensorlogervice.cpp"
#include "EWIEGA46WW/moc_sensorservice.cpp"
#include "EWIEGA46WW/moc_sensorwidget.cpp"
#include "EWIEGA46WW/moc_serverwidget.cpp"

View File

@ -4,18 +4,23 @@
#include <utility> #include <utility>
FlowLayout::FlowLayout(QWidget *parent, int margin, int hSpacing, int vSpacing) FlowLayout::FlowLayout(QWidget *parent, int margin, int hSpacing, int vSpacing)
: QLayout(parent), m_hSpacing(hSpacing), m_vSpacing(vSpacing) { : QLayout(parent)
, m_hSpacing(hSpacing)
, m_vSpacing(vSpacing)
{
setContentsMargins(margin, margin, margin, margin); setContentsMargins(margin, margin, margin, margin);
} }
FlowLayout::~FlowLayout() { FlowLayout::~FlowLayout()
{
QLayoutItem *item; QLayoutItem *item;
while ((item = takeAt(0))) { while ((item = takeAt(0))) {
delete item; delete item;
} }
} }
void FlowLayout::clear() { void FlowLayout::clear()
{
while (QLayoutItem *item = takeAt(0)) { while (QLayoutItem *item = takeAt(0)) {
if (item->widget()) { if (item->widget()) {
item->widget()->hide(); item->widget()->hide();
@ -24,44 +29,54 @@ void FlowLayout::clear() {
} }
} }
void FlowLayout::addItem(QLayoutItem *item) { void FlowLayout::addItem(QLayoutItem *item)
{
m_items.append(item); m_items.append(item);
} }
int FlowLayout::count() const { int FlowLayout::count() const
{
return m_items.size(); return m_items.size();
} }
QLayoutItem *FlowLayout::itemAt(int index) const { QLayoutItem *FlowLayout::itemAt(int index) const
{
return m_items.value(index); return m_items.value(index);
} }
QLayoutItem *FlowLayout::takeAt(int index) { QLayoutItem *FlowLayout::takeAt(int index)
{
return (index >= 0 && index < m_items.size()) ? m_items.takeAt(index) : nullptr; return (index >= 0 && index < m_items.size()) ? m_items.takeAt(index) : nullptr;
} }
Qt::Orientations FlowLayout::expandingDirections() const { Qt::Orientations FlowLayout::expandingDirections() const
{
return Qt::Orientation(0); return Qt::Orientation(0);
} }
bool FlowLayout::hasHeightForWidth() const { bool FlowLayout::hasHeightForWidth() const
{
return true; return true;
} }
int FlowLayout::heightForWidth(int width) const { int FlowLayout::heightForWidth(int width) const
{
return doLayout(QRect(0, 0, width, 0), true); return doLayout(QRect(0, 0, width, 0), true);
} }
void FlowLayout::setGeometry(const QRect &rect) { void FlowLayout::setGeometry(const QRect &rect)
{
QLayout::setGeometry(rect); QLayout::setGeometry(rect);
doLayout(rect, false); doLayout(rect, false);
} }
QSize FlowLayout::sizeHint() const { QSize FlowLayout::sizeHint() const
{
return minimumSize(); return minimumSize();
} }
QSize FlowLayout::minimumSize() const { QSize FlowLayout::minimumSize() const
{
QSize size; QSize size;
for (const QLayoutItem *item : std::as_const(m_items)) { for (const QLayoutItem *item : std::as_const(m_items)) {
size = size.expandedTo(item->minimumSize()); size = size.expandedTo(item->minimumSize());
@ -71,7 +86,8 @@ QSize FlowLayout::minimumSize() const {
return size; return size;
} }
int FlowLayout::doLayout(const QRect &rect, bool testOnly) const { int FlowLayout::doLayout(const QRect &rect, bool testOnly) const
{
int x = rect.x(); int x = rect.x();
int y = rect.y(); int y = rect.y();
int lineHeight = 0; int lineHeight = 0;
@ -98,20 +114,25 @@ int FlowLayout::doLayout(const QRect &rect, bool testOnly) const {
return y + lineHeight - rect.y(); return y + lineHeight - rect.y();
} }
int FlowLayout::horizontalSpacing() const { int FlowLayout::horizontalSpacing() const
{
return (m_hSpacing >= 0) ? m_hSpacing : smartSpacing(QStyle::PM_LayoutHorizontalSpacing); return (m_hSpacing >= 0) ? m_hSpacing : smartSpacing(QStyle::PM_LayoutHorizontalSpacing);
} }
int FlowLayout::verticalSpacing() const { int FlowLayout::verticalSpacing() const
{
return (m_vSpacing >= 0) ? m_vSpacing : smartSpacing(QStyle::PM_LayoutVerticalSpacing); return (m_vSpacing >= 0) ? m_vSpacing : smartSpacing(QStyle::PM_LayoutVerticalSpacing);
} }
int FlowLayout::smartSpacing(QStyle::PixelMetric pm) const { int FlowLayout::smartSpacing(QStyle::PixelMetric pm) const
{
QObject *parent = this->parent(); QObject *parent = this->parent();
if (!parent) { if (!parent) {
return -1; return -1;
} else if (parent->isWidgetType()) { } else if (parent->isWidgetType()) {
return static_cast<QWidget *>(parent)->style()->pixelMetric(pm, nullptr, static_cast<QWidget *>(parent)); return static_cast<QWidget *>(parent)->style()->pixelMetric(pm,
nullptr,
static_cast<QWidget *>(parent));
} else { } else {
return static_cast<QLayout *>(parent)->spacing(); return static_cast<QLayout *>(parent)->spacing();
} }

View File

@ -2,13 +2,17 @@
#define FLOWLAYOUT_H #define FLOWLAYOUT_H
#include <QLayout> #include <QLayout>
#include <QStyle>
#include <QRect>
#include <QList> #include <QList>
#include <QRect>
#include <QStyle>
class FlowLayout : public QLayout { class FlowLayout : public QLayout
{
public: public:
explicit FlowLayout(QWidget *parent = nullptr, int margin = 0, int hSpacing = -1, int vSpacing = -1); explicit FlowLayout(QWidget *parent = nullptr,
int margin = 0,
int hSpacing = -1,
int vSpacing = -1);
~FlowLayout() override; ~FlowLayout() override;
void clear(); void clear();

View File

@ -1,19 +1,19 @@
#ifndef GETSENSORS_P_H #ifndef GETSENSORS_P_H
#define GETSENSORS_P_H #define GETSENSORS_P_H
#include <QString> #include <QByteArray>
#include <QJsonDocument> #include <QJsonDocument>
#include <QJsonObject> #include <QJsonObject>
#include <QByteArray> #include <QString>
class GetSensorsP { class GetSensorsP
{
public: public:
GetSensorsP() = default; GetSensorsP() = default;
void setGroup(const QString& group) { void setGroup(const QString &group) { this->group = group; }
this->group = group;
}
QByteArray createRequestJson() const { QByteArray createRequestJson() const
{
QJsonObject obj; QJsonObject obj;
obj["group"] = group; obj["group"] = group;

View File

@ -1,19 +1,20 @@
#ifndef GETSENSORS_R_H #ifndef GETSENSORS_R_H
#define GETSENSORS_R_H #define GETSENSORS_R_H
#include <QString> #include <QJsonArray>
#include <QJsonDocument> #include <QJsonDocument>
#include <QJsonObject> #include <QJsonObject>
#include <QJsonArray>
#include <QList> #include <QList>
#include <QString>
class Sensor { class Sensor
{
public: public:
int alarmCooldown; int alarmCooldown;
double alarmLowerBound; double alarmLowerBound;
double alarmUpperBound; double alarmUpperBound;
bool isBooled; // Поле из EXTRA bool isBooled; // Поле из EXTRA
bool isHide; // Поле из EXTRA bool isHide; // Поле из EXTRA
QString group; QString group;
QString id; QString id;
bool isAlarmEnabled; bool isAlarmEnabled;
@ -22,7 +23,8 @@ public:
QString name; QString name;
QString unitName; QString unitName;
void parseSensor(const QJsonObject& sensorObj) { void parseSensor(const QJsonObject &sensorObj)
{
alarmCooldown = sensorObj["ALARM_COOLDOWN"].toInt(); alarmCooldown = sensorObj["ALARM_COOLDOWN"].toInt();
alarmLowerBound = sensorObj["ALARM_LOWERBOUND"].toDouble(); alarmLowerBound = sensorObj["ALARM_LOWERBOUND"].toDouble();
alarmUpperBound = sensorObj["ALARM_UPPERBOUND"].toDouble(); alarmUpperBound = sensorObj["ALARM_UPPERBOUND"].toDouble();
@ -55,14 +57,16 @@ public:
} }
}; };
class GetSensorsR { class GetSensorsR
{
public: public:
GetSensorsR() = default; GetSensorsR() = default;
void parseResponse(const QJsonObject& responseObj) { void parseResponse(const QJsonObject &responseObj)
{
if (responseObj.contains("sensors") && responseObj["sensors"].isArray()) { if (responseObj.contains("sensors") && responseObj["sensors"].isArray()) {
QJsonArray sensorsArray = responseObj["sensors"].toArray(); QJsonArray sensorsArray = responseObj["sensors"].toArray();
for (const QJsonValue& value : sensorsArray) { for (const QJsonValue &value : sensorsArray) {
if (value.isObject()) { if (value.isObject()) {
Sensor sensor; Sensor sensor;
sensor.parseSensor(value.toObject()); sensor.parseSensor(value.toObject());
@ -72,9 +76,7 @@ public:
} }
} }
const QList<Sensor>& getSensors() const { const QList<Sensor> &getSensors() const { return sensors; }
return sensors;
}
private: private:
QList<Sensor> sensors; QList<Sensor> sensors;

View File

@ -2,10 +2,10 @@
#include <QEventLoop> #include <QEventLoop>
#include <QJsonDocument> #include <QJsonDocument>
#include <QJsonParseError> #include <QJsonParseError>
#include <QMessageBox>
#include <QNetworkAccessManager> #include <QNetworkAccessManager>
#include <QNetworkReply> #include <QNetworkReply>
#include <QNetworkRequest> #include <QNetworkRequest>
#include <QMessageBox>
HttpClient::HttpClient(QObject *parent) HttpClient::HttpClient(QObject *parent)
: QObject(parent) : QObject(parent)

View File

@ -1,7 +1,11 @@
#include "incedentwidget.h" #include "incedentwidget.h"
IncedentWidget::IncedentWidget(const QString& time, const QString& log, const QString& sender, IncedentWidget::IncedentWidget(const QString &time,
const QString& section, const QString& status, QWidget *parent) const QString &log,
const QString &sender,
const QString &section,
const QString &status,
QWidget *parent)
: QWidget(parent) : QWidget(parent)
{ {
setAttribute(Qt::WA_StyledBackground); setAttribute(Qt::WA_StyledBackground);
@ -15,8 +19,8 @@ IncedentWidget::IncedentWidget(const QString& time, const QString& log, const QS
// Горизонтальный layout // Горизонтальный layout
QHBoxLayout *mainLayout = new QHBoxLayout(this); QHBoxLayout *mainLayout = new QHBoxLayout(this);
mainLayout->setSpacing(70); // Отступы между элементами mainLayout->setSpacing(70); // Отступы между элементами
mainLayout->setContentsMargins(25, 5, 25, 5); // Внутренние отступы mainLayout->setContentsMargins(25, 5, 25, 5); // Внутренние отступы
setLayout(mainLayout); setLayout(mainLayout);
// Создаем лейблы // Создаем лейблы
@ -32,10 +36,9 @@ IncedentWidget::IncedentWidget(const QString& time, const QString& log, const QS
mainLayout->addWidget(senderLabel); mainLayout->addWidget(senderLabel);
mainLayout->addWidget(sectionLabel); mainLayout->addWidget(sectionLabel);
mainLayout->addWidget(statusLabel); mainLayout->addWidget(statusLabel);
} }
QLabel* IncedentWidget::createLabel(const QString &text, int minSize, int maxSize) QLabel *IncedentWidget::createLabel(const QString &text, int minSize, int maxSize)
{ {
QLabel *label = new QLabel(text); QLabel *label = new QLabel(text);
label->setAlignment(Qt::AlignLeft); label->setAlignment(Qt::AlignLeft);

View File

@ -1,20 +1,24 @@
#ifndef INCEDENTWIDGET_H #ifndef INCEDENTWIDGET_H
#define INCEDENTWIDGET_H #define INCEDENTWIDGET_H
#include <QWidget> #include <QFrame>
#include <QHBoxLayout>
#include <QLabel> #include <QLabel>
#include <QPushButton> #include <QPushButton>
#include <QVBoxLayout> #include <QVBoxLayout>
#include <QHBoxLayout> #include <QWidget>
#include <QFrame>
class IncedentWidget : public QWidget class IncedentWidget : public QWidget
{ {
Q_OBJECT Q_OBJECT
public: public:
explicit IncedentWidget(const QString& time, const QString& log, const QString& sender, explicit IncedentWidget(const QString &time,
const QString& section, const QString& status, QWidget *parent = nullptr); const QString &log,
const QString &sender,
const QString &section,
const QString &status,
QWidget *parent = nullptr);
private: private:
QLabel *createLabel(const QString &text, int minSize = 100, int maxSize = 250); QLabel *createLabel(const QString &text, int minSize = 100, int maxSize = 250);
@ -27,5 +31,4 @@ private:
QLabel *statusLabel; QLabel *statusLabel;
}; };
#endif // INCEDENTWIDGET_H #endif // INCEDENTWIDGET_H

View File

@ -1,42 +1,68 @@
#ifndef JOURNALSERVICE_H #ifndef JOURNALSERVICE_H
#define JOURNALSERVICE_H #define JOURNALSERVICE_H
#include "utils.h"
#include "HttpClient.h" #include "HttpClient.h"
#include "logs_r.h" #include "logs_r.h"
#include "utils.h"
#include <QJsonArray>
#include <QJsonDocument>
#include <QJsonObject>
#include <QList>
#include <QObject> #include <QObject>
#include <QString> #include <QString>
#include <QJsonObject>
#include <QJsonArray>
#include <QList>
#include <QStringList> #include <QStringList>
#include <QJsonDocument>
struct JournalSettings{
QMap<QString, QList<QString>> groupsWithSensors;
qint64 start_time;
qint64 end_time;
bool cmp;
QList<int> status;
JournalSettings(QMap<QString, QList<QString>> a, qint64 b, qint64 c, bool d, QList<int> e) {
groupsWithSensors = a;
start_time = b;
end_time = c;
cmp = d;
status = e;
}
};
class JournalService : public QObject class JournalService : public QObject
{ {
Q_OBJECT Q_OBJECT
public: public:
explicit JournalService(HttpClient* client, QObject *parent = nullptr) explicit JournalService(HttpClient *client, QObject *parent = nullptr)
: QObject(parent), httpClient(client) {} : QObject(parent)
, httpClient(client)
{}
int getLogsAmount(const QMap<QString, QString>& groupWithSensors, qint64 start, qint64 end) { int getLogsAmount(const QMap<QString, QList<QString>> &groupWithSensors, const QList<int> &threatLevels,
qint64 start, qint64 end)
{
QJsonObject rootObj; QJsonObject rootObj;
rootObj["start_time"] = start; rootObj["start_time"] = start;
rootObj["end_time"] = end; rootObj["end_time"] = end;
QJsonArray threatLevelsArray;
for (int level : threatLevels) {
threatLevelsArray.append(level);
}
rootObj["threat_levels"] = threatLevelsArray;
QJsonObject sensorsObj; QJsonObject sensorsObj;
for (auto it = groupWithSensors.constBegin(); it != groupWithSensors.constEnd(); ++it) { for (auto it = groupWithSensors.constBegin(); it != groupWithSensors.constEnd(); ++it) {
QJsonArray sensorArray; QJsonArray sensorArray;
sensorArray.append(it.value()); for (QString sensorId : it.value()) {
sensorArray.append(sensorId);
}
sensorsObj[it.key()] = sensorArray; sensorsObj[it.key()] = sensorArray;
} }
rootObj["sensors"] = sensorsObj; rootObj["sensors"] = sensorsObj;
QJsonDocument doc(rootObj); QJsonDocument doc(rootObj);
QByteArray requestData = doc.toJson(); QByteArray requestData = doc.toJson();
QJsonObject responseJson = httpClient->post(utils::API_URL + "/logs/getLogsAmount", QJsonDocument::fromJson(requestData).object()); QJsonObject responseJson = httpClient->post(utils::API_URL + "/logs/getLogsAmount",
QJsonDocument::fromJson(requestData).object());
if (responseJson.contains("amount")) { if (responseJson.contains("amount")) {
return responseJson["amount"].toInt(); return responseJson["amount"].toInt();
@ -44,52 +70,14 @@ public:
return 0; return 0;
} }
QList<LogsR> tmpB(int pageNum, int pageSize, qint64 start = 1734063255, qint64 end = 1735392656) { QList<LogsR> getLogs(const QMap<QString, QList<QString>> &groupWithSensors,
QJsonObject rootObj; const QList<int> &threatLevels,
rootObj["start_time"] = start; bool cmp,
rootObj["end_time"] = end; qint64 start,
rootObj["page_number"] = pageNum; qint64 end,
rootObj["page_size"] = pageSize; int pageNum,
QJsonDocument doc(rootObj); int pageSize)
QByteArray requestData = doc.toJson(); {
QJsonObject responseJson = httpClient->post(utils::API_URL + "/logs/getLogs", QJsonDocument::fromJson(requestData).object());
QList<LogsR> logList;
if (responseJson.contains("logs") && responseJson["logs"].isArray()) {
QJsonArray alarmsArray = responseJson["logs"].toArray();
for (const QJsonValue& value : alarmsArray) {
if (value.isObject()) {
LogsR log;
log.parseResponse(value.toObject());
logList.append(log);
}
}
}
return logList;
}
int tmpA(qint64 start = 1734063255, qint64 end = 1735392656) {
QJsonObject rootObj;
rootObj["start_time"] = start;
rootObj["end_time"] = end;
QJsonDocument doc(rootObj);
QByteArray requestData = doc.toJson();
QJsonObject responseJson = httpClient->post(utils::API_URL + "/logs/getLogsAmount", QJsonDocument::fromJson(requestData).object());
if (responseJson.contains("amount")) {
return responseJson["amount"].toInt();
}
return 0;
}
QStringList getLogs(const QMap<QString, QString>& groupWithSensors, const QList<int>& threatLevels, qint64 start, qint64 end, int pageNum, int pageSize) {
QJsonObject rootObj; QJsonObject rootObj;
QJsonArray threatLevelsArray; QJsonArray threatLevelsArray;
for (int level : threatLevels) { for (int level : threatLevels) {
@ -103,26 +91,34 @@ public:
QJsonObject sensorsObj; QJsonObject sensorsObj;
for (auto it = groupWithSensors.constBegin(); it != groupWithSensors.constEnd(); ++it) { for (auto it = groupWithSensors.constBegin(); it != groupWithSensors.constEnd(); ++it) {
QJsonArray sensorArray; QJsonArray sensorArray;
sensorArray.append(it.value()); for (QString sensorId : it.value()) {
sensorArray.append(sensorId);
}
sensorsObj[it.key()] = sensorArray; sensorsObj[it.key()] = sensorArray;
} }
rootObj["sensors"] = sensorsObj; rootObj["sensors"] = sensorsObj;
QJsonArray orderArray;
QJsonArray orderItem;
cmp ? orderItem.append("threat_level") : orderItem.append("date");
orderItem.append("-");
orderArray.append(orderItem);
rootObj["order"] = orderArray;
QJsonDocument doc(rootObj); QJsonDocument doc(rootObj);
QByteArray requestData = doc.toJson(); QByteArray requestData = doc.toJson();
QJsonObject responseJson = httpClient->post(utils::API_URL + "/logs/getLogs",
QJsonDocument::fromJson(requestData).object());
QJsonObject responseJson = httpClient->post(utils::API_URL + "/logs/getLogs", QJsonDocument::fromJson(requestData).object()); QList<LogsR> logsList;
QStringList logsList;
if (responseJson.contains("logs") && responseJson["logs"].isArray()) { if (responseJson.contains("logs") && responseJson["logs"].isArray()) {
QJsonArray logsArray = responseJson["logs"].toArray(); QJsonArray logsArray = responseJson["logs"].toArray();
for (const QJsonValue& logValue : logsArray) { for (const QJsonValue &logValue : logsArray) {
if (logValue.isObject()) { if (logValue.isObject()) {
LogsR log; LogsR log;
log.parseResponse(logValue.toObject()); log.parseResponse(logValue.toObject());
logsList.append(log.getMark() + " - " + log.getMessage()); logsList.append(log);
} }
} }
} }
@ -131,7 +127,7 @@ public:
} }
private: private:
HttpClient* httpClient; HttpClient *httpClient;
}; };
#endif // JOURNALSERVICE_H #endif // JOURNALSERVICE_H

View File

@ -1,21 +1,34 @@
#ifndef LOGS_R_H #ifndef LOGS_R_H
#define LOGS_R_H #define LOGS_R_H
#include <QString>
#include <QJsonObject>
#include <QJsonArray> #include <QJsonArray>
#include <QJsonObject>
#include <QList> #include <QList>
#include <QString>
class LogsR { class LogsR
{
public: public:
LogsR() = default; LogsR() = default;
LogsR(const QString& mark, const QString& message, const QString& sensorGroup, LogsR(const QString &mark,
const QString& sensorId, const QString& serial, int threatLevel, const QString& time) const QString &message,
: mark(mark), message(message), sensor_group(sensorGroup), sensor_id(sensorId), const QString &sensorGroup,
serial(serial), threat_level(threatLevel), time(time) {} const QString &sensorId,
const QString &serial,
int threatLevel,
const QString &time)
: mark(mark)
, message(message)
, sensor_group(sensorGroup)
, sensor_id(sensorId)
, serial(serial)
, threat_level(threatLevel)
, time(time)
{}
void parseResponse(const QJsonObject& json) { void parseResponse(const QJsonObject &json)
{
if (json.contains("mark") && json["mark"].isString()) { if (json.contains("mark") && json["mark"].isString()) {
mark = json["mark"].toString(); mark = json["mark"].toString();
} }
@ -34,8 +47,10 @@ public:
if (json.contains("threat_level") && json["threat_level"].isDouble()) { if (json.contains("threat_level") && json["threat_level"].isDouble()) {
threat_level = json["threat_level"].toInt(); threat_level = json["threat_level"].toInt();
} }
if (json.contains("time") && json["time"].isString()) { if (json.contains("time") && json["time"].isDouble()) {
time = json["time"].toString(); qint64 unixTime = json["time"].toVariant().toLongLong();
QDateTime dateTime = QDateTime::fromSecsSinceEpoch(unixTime);
time = dateTime.toString("HH:mm dd.MM.yyyy");
} }
} }

71
logwidget.cpp Normal file
View File

@ -0,0 +1,71 @@
#include "logwidget.h"
#include <QHBoxLayout>
LogWidget::LogWidget(QMap<QString, QMap<QString, QPair<QString, QString>>> &translate,
const QString &time,
const QString &log,
const QString &sensorId,
const QString &group,
const int status,
QWidget *parent)
: QWidget(parent)
, _translate(translate)
{
setAttribute(Qt::WA_StyledBackground);
setStyleSheet(R"(
QWidget {
border: 1px solid #E5E7EB;
background-color: transparent;
}
)");
QHBoxLayout *mainLayout = new QHBoxLayout(this);
mainLayout->setSpacing(70);
mainLayout->setContentsMargins(25, 5, 25, 5);
setLayout(mainLayout);
timeLabel = createLabel(time, 100, 230);
logLabel = createLabel(log, 100, 250);
sensorIdLabel = createLabel(translate[group][sensorId].second, 150, 220);
groupLabel = createLabel(translate[group][sensorId].first, 150, 100);
QString msg;
if (status == 0) {
msg = "Отладка";
} else if (status == 1) {
msg = "Информация";
} else if (status == 2) {
msg = "Предупреждение";
} else if (status == 3) {
msg = "Ошибка";
} else {
msg = "Экстренно";
}
statusLabel = createLabel(msg, 100, 120);
mainLayout->addWidget(timeLabel);
mainLayout->addWidget(logLabel);
mainLayout->addWidget(sensorIdLabel);
mainLayout->addWidget(groupLabel);
mainLayout->addWidget(statusLabel);
}
QLabel *LogWidget::createLabel(const QString &text, int minSize, int maxSize)
{
QLabel *label = new QLabel(text);
label->setAlignment(Qt::AlignLeft | Qt::AlignVCenter);
label->setWordWrap(true);
label->setMinimumWidth(minSize);
label->setMaximumWidth(maxSize);
label->setFixedHeight(200);
label->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed);
label->setStyleSheet(R"(
background: transparent;
font-family: Inter;
font-size: 20px;
font-weight: 400;
color: #13385F;
border: none;
)");
return label;
}

31
logwidget.h Normal file
View File

@ -0,0 +1,31 @@
#ifndef LOGWIDGET_H
#define LOGWIDGET_H
#include <QWidget>
#include <QLabel>
class LogWidget : public QWidget
{
Q_OBJECT
public:
explicit LogWidget(QMap<QString, QMap<QString, QPair<QString, QString>>> &translate,
const QString &time = "",
const QString &log = "",
const QString &sensorId = "",
const QString &group = "",
const int status = 4,
QWidget *parent = nullptr);
private:
QLabel *createLabel(const QString &text, int minSize = 100, int maxSize = 250);
private:
QMap<QString, QMap<QString, QPair<QString, QString>>> _translate;
QLabel *timeLabel;
QLabel *logLabel;
QLabel *sensorIdLabel;
QLabel *groupLabel;
QLabel *statusLabel;
};
#endif // LOGWIDGET_H

View File

@ -1,29 +1,44 @@
#include "mainwindow.h" #include "mainwindow.h"
#include "sensordialog.h" #include "apiform.h"
#include "alarmdialog.h" #include "utils.h"
#include <QApplication> #include <QApplication>
#include <QCoreApplication>
#include <QLocale> #include <QLocale>
#include <QTranslator> #include <QTranslator>
#include <QObject>
#include <QTreeWidget> #include <QWidget>
#include <QTreeWidgetItem> #include <QMessageBox>
#include <QHeaderView>
int main(int argc, char *argv[]) int main(int argc, char *argv[])
{ {
QApplication a(argc, argv); QApplication a(argc, argv);
QTranslator translator; try {
const QStringList uiLanguages = QLocale::system().uiLanguages(); QTranslator translator;
for (const QString &locale : uiLanguages) { const QStringList uiLanguages = QLocale::system().uiLanguages();
const QString baseName = "FemaSoftware_" + QLocale(locale).name(); for (const QString &locale : uiLanguages) {
if (translator.load(":/i18n/" + baseName)) { const QString baseName = "FemaSoftware_" + QLocale(locale).name();
a.installTranslator(&translator); if (translator.load(":/i18n/" + baseName)) {
break; a.installTranslator(&translator);
break;
}
} }
ApiForm *apiForm = new ApiForm();
apiForm->exec();
if (!utils::API_URL.isEmpty()) {
MainWindow *mainWindow = new MainWindow();
mainWindow->show();
} else {
throw std::runtime_error("Invalid API URL or parameters.");
}
} catch (const std::exception &e) {
QMessageBox::critical(nullptr, "Ошибка", "Произошла ошибка: " + QString::fromStdString(e.what()));
return 1;
} }
MainWindow w;
w.show();
return a.exec(); return a.exec();
} }

File diff suppressed because it is too large Load Diff

View File

@ -1,18 +1,20 @@
#ifndef MAINWINDOW_H #ifndef MAINWINDOW_H
#define MAINWINDOW_H #define MAINWINDOW_H
#include "flowlayout.h"
#include "sensorwidget.h"
#include "sensorservice.h"
#include "httpclient.h"
#include "alarmsservice.h" #include "alarmsservice.h"
#include "flowlayout.h"
#include "httpclient.h"
#include "journalservice.h" #include "journalservice.h"
#include "sensorservice.h"
#include "sensorwidget.h"
#include "paginationbar.h"
#include "qcustomplot.h"
#include <QMainWindow> #include <QMainWindow>
#include <QPixmap>
#include <QVBoxLayout>
#include <QTreeWidget>
#include <QMap> #include <QMap>
#include <QPixmap>
#include <QTreeWidget>
#include <QVBoxLayout>
#ifdef Q_OS_WIN #ifdef Q_OS_WIN
#include <Qlabel> #include <Qlabel>
@ -40,6 +42,20 @@ class MainWindow : public QMainWindow
private slots: private slots:
void onIncidentsPageChanged(int page); void onIncidentsPageChanged(int page);
void onJournalPageChanged(int page); void onJournalPageChanged(int page);
void onSearchIncidentsClicked();
void onSearchJournalClicked();
void updateTreeClicked();
void onRealTimeStatisticClicked();
void onArchiveStatisticClicked();
void onShowStatisticClicked();
void updateRealTimeChart();
void onSensorSelectStatisticChanged(int index);
void ondialogClosedFromWidget(QString groupWithSensor, QDateTime start, QDateTime end);
void onSaveButtonSettings();
void onCancelButtonSettings();
void onImportButtonSettings();
void onExportButtonSettings();
void onServerButtonSettings();
public: public:
MainWindow(QWidget *parent = nullptr); MainWindow(QWidget *parent = nullptr);
@ -53,14 +69,30 @@ private:
JournalService *jsr; JournalService *jsr;
HttpClient *httpClient; HttpClient *httpClient;
QWidget *widgetContainer; QWidget *widgetContainer;
PaginationBar *paginationBarIncident;
PaginationBar *paginationBarJournal;
FlowLayout *layout; FlowLayout *layout;
SensorService *sensorService; SensorService *sensorService;
JournalService *journalService;
AlarmsService *alarmsService;
QMap<QString, QString> nameToId; QMap<QString, QString> nameToId;
AlarmSettings *settingsIncident;
JournalSettings *journalSettings;
bool statisticType;
QMap<QString, int> groupWithSensorToIndex;
QList<QString> groupWithSensor;
QTimer *realTimeChartTimer;
QCustomPlot *statisticChart;
QMap<QString, QMap<QString, QPair<QString, QString>>> translate;
Settings settings;
private: private:
//COMMON------------------------------------------------------ //COMMON------------------------------------------------------
void loadSenorsTree(QTreeWidget* tree); void loadSensorsTree(QTreeWidget *treeWidget);
void moveTopLevelItems(QTreeWidget *source, QTreeWidget *destination);
void startTranslateUpdateTimer();
void TranslateUpdate();
void startRefreshTimer();
//------------------------------------------------------------ //------------------------------------------------------------
//SENSOR------------------------------------------------------ //SENSOR------------------------------------------------------
@ -68,7 +100,7 @@ private:
void showSensorDialog(SensorWidget *sensor); void showSensorDialog(SensorWidget *sensor);
void onSensorDialogFinished(int result); void onSensorDialogFinished(int result);
//api requests //api requests
void loadSensors(const QString& group); void loadSensors(const QString &group);
void loadSensorGroups(); void loadSensorGroups();
//update widgets //update widgets
void updateDisplayedWidgets(); void updateDisplayedWidgets();
@ -76,7 +108,6 @@ private:
void onGroupSelected(int index); void onGroupSelected(int index);
void onShowHiddenSelected(int index); void onShowHiddenSelected(int index);
//utility //utility
void startSensorTabRefreshTimer();
void SetupSensorTab(); void SetupSensorTab();
//------------------------------------------------------------ //------------------------------------------------------------
@ -84,13 +115,26 @@ private:
//update widgets //update widgets
void onSearchIncedentsTextChanged(const QString &text); void onSearchIncedentsTextChanged(const QString &text);
void onTreeIncidentsChanged(QTreeWidgetItem *item, int column); void onTreeIncidentsChanged(QTreeWidgetItem *item, int column);
void onTimeIntervalChanged(const QString &selectedInterval);
AlarmSettings* getIncidentDataSettings();
//utility
void SetupIncidentTab();
//------------------------------------------------------------ //------------------------------------------------------------
//JOURNAL----------------------------------------------------- //JOURNAL-----------------------------------------------------
//update widgets //update widgets
void onSearchJournalTextChanged(const QString &text); void onSearchJournalTextChanged(const QString &text);
void onTreeJournalChanged(QTreeWidgetItem *item, int column); void onTreeJournalChanged(QTreeWidgetItem *item, int column);
JournalSettings* getJournalDataSettings();
//utility
void SetupJournalTab();
//------------------------------------------------------------ //------------------------------------------------------------
//Statistic---------------------------------------------------
//update widgets
void updateComboboxStatistic();
//utility
void SetupStatisticTab();
//------------------------------------------------------------
}; };
#endif // MAINWINDOW_H #endif // MAINWINDOW_H

File diff suppressed because it is too large Load Diff

88
map.qml Normal file
View File

@ -0,0 +1,88 @@
import QtQuick 2.15
import QtLocation 5.15
import QtPositioning 5.15
Item {
anchors.fill: parent
Map {
id: map
anchors.fill: parent
plugin: Plugin {
name: "osm"
PluginParameter {
name: "osm.mapping.custom.host"
value: "https://tile.openstreetmap.org/"
}
PluginParameter {
name: "osm.mapping.providersrepository.disabled"
value: "true"
}
}
center: QtPositioning.coordinate(mapCenter.latitude, mapCenter.longitude)
zoomLevel: 15
Repeater {
model: pointsList
MapQuickItem {
id: point
coordinate: modelData
anchorPoint.x: 10
anchorPoint.y: 10
sourceItem: Rectangle {
width: 20
height: 20
color: "red"
radius: 10
}
}
}
MouseArea {
id: mouseArea
anchors.fill: parent
drag.target: map
property real startLat: map.center.latitude
property real startLon: map.center.longitude
property real startX: 0
property real startY: 0
property real zoomFactor: Math.pow(2, map.zoomLevel - 15)
cursorShape: Qt.ArrowCursor
onPressed: {
startLat = map.center.latitude
startLon = map.center.longitude
startX = mouseArea.mouseX
startY = mouseArea.mouseY
}
onPositionChanged: {
var dx = mouseArea.mouseX - startX
var dy = mouseArea.mouseY - startY
var factor = Math.pow(2, 15 - map.zoomLevel) * 0.00005;
map.center = QtPositioning.coordinate(
startLat - dy * -factor,
startLon + dx * -factor
)
}
onWheel: {
if (wheel.angleDelta.y < 0) {
map.zoomLevel -= 1
} else {
map.zoomLevel += 1
}
map.zoomLevel = Math.max(1, Math.min(map.zoomLevel, 18));
}
onContainsMouseChanged: {
cursorShape = mouseArea.containsMouse ? Qt.ClosedHandCursor : Qt.ArrowCursor
}
}
}
}

View File

@ -1,10 +1,13 @@
#include "PaginationBar.h" #include "PaginationBar.h"
#include <QStyle>
#include <QIntValidator>
#include <QDebug> #include <QDebug>
#include <QIntValidator>
#include <QStyle>
PaginationBar::PaginationBar(int totalPages, QWidget *parent) PaginationBar::PaginationBar(int totalPages, QWidget *parent)
: QWidget(parent), totalPages(totalPages), currentPage(1) { : QWidget(parent)
, totalPages(totalPages)
, currentPage(1)
{
layout = new QHBoxLayout(this); layout = new QHBoxLayout(this);
layout->setContentsMargins(0, 0, 0, 0); layout->setContentsMargins(0, 0, 0, 0);
layout->setSpacing(5); layout->setSpacing(5);
@ -50,13 +53,15 @@ PaginationBar::PaginationBar(int totalPages, QWidget *parent)
updateButtons(); updateButtons();
} }
void PaginationBar::onPageButtonClicked(int page) { void PaginationBar::onPageButtonClicked(int page)
{
currentPage = page; currentPage = page;
emit pageChanged(currentPage); emit pageChanged(currentPage);
updateButtons(); updateButtons();
} }
void PaginationBar::goToPreviousPage() { void PaginationBar::goToPreviousPage()
{
if (currentPage > 1) { if (currentPage > 1) {
currentPage--; currentPage--;
emit pageChanged(currentPage); emit pageChanged(currentPage);
@ -64,7 +69,8 @@ void PaginationBar::goToPreviousPage() {
} }
} }
void PaginationBar::goToNextPage() { void PaginationBar::goToNextPage()
{
if (currentPage < totalPages) { if (currentPage < totalPages) {
currentPage++; currentPage++;
emit pageChanged(currentPage); emit pageChanged(currentPage);
@ -72,7 +78,8 @@ void PaginationBar::goToNextPage() {
} }
} }
void PaginationBar::onEllipsisClicked(QPushButton *ellipsisButton) { void PaginationBar::onEllipsisClicked(QPushButton *ellipsisButton)
{
if (activeLineEdit) { if (activeLineEdit) {
layout->replaceWidget(activeLineEdit, previousEllipsisButton); layout->replaceWidget(activeLineEdit, previousEllipsisButton);
activeLineEdit->deleteLater(); activeLineEdit->deleteLater();
@ -121,7 +128,8 @@ void PaginationBar::onEllipsisClicked(QPushButton *ellipsisButton) {
}); });
} }
void PaginationBar::updateButtons() { void PaginationBar::updateButtons()
{
if (activeLineEdit) { if (activeLineEdit) {
for (auto *button : pageButtons) { for (auto *button : pageButtons) {
if (!button->isVisible()) { if (!button->isVisible()) {
@ -146,24 +154,28 @@ void PaginationBar::updateButtons() {
} }
} else { } else {
if (currentPage <= 4) { if (currentPage <= 4) {
for (int i = 1; i <= 5; ++i) addPageButton(i); for (int i = 1; i <= 5; ++i)
addPageButton(i);
addEllipsisButton(); addEllipsisButton();
addPageButton(totalPages); addPageButton(totalPages);
} else if (currentPage >= totalPages - 3) { } else if (currentPage >= totalPages - 3) {
addPageButton(1); addPageButton(1);
addEllipsisButton(); addEllipsisButton();
for (int i = totalPages - 4; i <= totalPages; ++i) addPageButton(i); for (int i = totalPages - 4; i <= totalPages; ++i)
addPageButton(i);
} else { } else {
addPageButton(1); addPageButton(1);
addEllipsisButton(); addEllipsisButton();
for (int i = currentPage - 1; i <= currentPage + 1; ++i) addPageButton(i); for (int i = currentPage - 1; i <= currentPage + 1; ++i)
addPageButton(i);
addEllipsisButton(); addEllipsisButton();
addPageButton(totalPages); addPageButton(totalPages);
} }
} }
} }
void PaginationBar::addPageButton(int page) { void PaginationBar::addPageButton(int page)
{
auto *button = new QPushButton(QString::number(page), this); auto *button = new QPushButton(QString::number(page), this);
button->setFixedSize(40, 40); button->setFixedSize(40, 40);
if (page == currentPage) { if (page == currentPage) {
@ -193,7 +205,8 @@ void PaginationBar::addPageButton(int page) {
layout->insertWidget(layout->count() - 1, button); layout->insertWidget(layout->count() - 1, button);
} }
void PaginationBar::addEllipsisButton() { void PaginationBar::addEllipsisButton()
{
auto *button = new QPushButton("...", this); auto *button = new QPushButton("...", this);
button->setFixedSize(40, 40); button->setFixedSize(40, 40);
button->setStyleSheet(R"( button->setStyleSheet(R"(
@ -207,3 +220,11 @@ void PaginationBar::addEllipsisButton() {
pageButtons.append(button); pageButtons.append(button);
layout->insertWidget(layout->count() - 1, button); layout->insertWidget(layout->count() - 1, button);
} }
void PaginationBar::setTotalPages(int newTotalPages)
{
totalPages = newTotalPages;
currentPage = 1;
updateButtons();
//emit pageChanged(currentPage);
}

View File

@ -1,17 +1,21 @@
#ifndef PAGINATIONBAR_H #ifndef PAGINATIONBAR_H
#define PAGINATIONBAR_H #define PAGINATIONBAR_H
#include <QWidget>
#include <QPushButton>
#include <QLineEdit>
#include <QHBoxLayout> #include <QHBoxLayout>
#include <QLineEdit>
#include <QPushButton>
#include <QWidget>
class PaginationBar : public QWidget { class PaginationBar : public QWidget
{
Q_OBJECT Q_OBJECT
public: public:
explicit PaginationBar(int totalPages, QWidget *parent = nullptr); explicit PaginationBar(int totalPages, QWidget *parent = nullptr);
public:
void setTotalPages(int newTotalPages);
signals: signals:
void pageChanged(int page); void pageChanged(int page);
@ -26,17 +30,17 @@ private:
QPushButton *previousEllipsisButton = nullptr; QPushButton *previousEllipsisButton = nullptr;
private: private:
int totalPages; // Общее количество страниц int totalPages; // Общее количество страниц
int currentPage; // Текущая страница int currentPage; // Текущая страница
QPushButton *leftArrow; // Кнопка влево QPushButton *leftArrow; // Кнопка влево
QPushButton *rightArrow; // Кнопка вправо QPushButton *rightArrow; // Кнопка вправо
QHBoxLayout *layout; // Макет для размещения кнопок QHBoxLayout *layout; // Макет для размещения кнопок
QList<QPushButton *> pageButtons; // Список кнопок страниц QList<QPushButton *> pageButtons; // Список кнопок страниц
void updateButtons(); // Обновление кнопок в зависимости от состояния void updateButtons(); // Обновление кнопок в зависимости от состояния
void addPageButton(int page); // Добавить кнопку страницы void addPageButton(int page); // Добавить кнопку страницы
void addEllipsisButton(); // Добавить кнопку с троеточием void addEllipsisButton(); // Добавить кнопку с троеточием
}; };
#endif // PAGINATIONBAR_H #endif // PAGINATIONBAR_H

59
plotservice.h Normal file
View File

@ -0,0 +1,59 @@
#ifndef PLOTSERVICE_H
#define PLOTSERVICE_H
#include "HttpClient.h"
#include "utils.h"
#include <QJsonArray>
#include <QJsonDocument>
#include <QJsonObject>
#include <QList>
#include <QObject>
#include <QString>
#include <QStringList>
class PlotService : public QObject
{
Q_OBJECT
public:
explicit PlotService(HttpClient *client, QObject *parent = nullptr)
: QObject(parent)
, httpClient(client)
{}
int getDeviceSensorData(const QMap<QString, QList<QString>> &groupsWithSensors,
qint64 start,
qint64 end)
{
QJsonObject rootObj;
rootObj["start_time"] = start;
rootObj["end_time"] = end;
QJsonObject sensorsObj;
for (auto it = groupsWithSensors.constBegin(); it != groupsWithSensors.constEnd(); ++it) {
QJsonArray sensorArray;
for (QString sensorId : it.value()) {
sensorArray.append(sensorId);
}
sensorsObj[it.key()] = sensorArray;
}
rootObj["sensors"] = sensorsObj;
QJsonDocument doc(rootObj);
QByteArray requestData = doc.toJson();
QJsonObject responseJson = httpClient->post(utils::API_URL + "/alarms/getAlarmsAmount",
QJsonDocument::fromJson(requestData).object());
if (responseJson.contains("amount")) {
return responseJson["amount"].toInt();
}
return 0;
}
private:
HttpClient *httpClient;
};
#endif // PLOTSERVICE_H

BIN
res/png/close.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 249 B

BIN
res/png/delete.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
res/png/open.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 222 B

88
res/qml/map.qml Normal file
View File

@ -0,0 +1,88 @@
import QtQuick 2.15
import QtLocation 5.15
import QtPositioning 5.15
Item {
anchors.fill: parent
Map {
id: map
anchors.fill: parent
plugin: Plugin {
name: "osm"
PluginParameter {
name: "osm.mapping.custom.host"
value: "https://tile.openstreetmap.org/"
}
PluginParameter {
name: "osm.mapping.providersrepository.disabled"
value: "true"
}
}
center: QtPositioning.coordinate(mapCenter.latitude, mapCenter.longitude)
zoomLevel: 15
Repeater {
model: pointsList
MapQuickItem {
id: point
coordinate: modelData
anchorPoint.x: 10
anchorPoint.y: 10
sourceItem: Rectangle {
width: 20
height: 20
color: "red"
radius: 10
}
}
}
MouseArea {
id: mouseArea
anchors.fill: parent
drag.target: map
property real startLat: map.center.latitude
property real startLon: map.center.longitude
property real startX: 0
property real startY: 0
property real zoomFactor: Math.pow(2, map.zoomLevel - 15)
cursorShape: Qt.ArrowCursor
onPressed: {
startLat = map.center.latitude
startLon = map.center.longitude
startX = mouseArea.mouseX
startY = mouseArea.mouseY
}
onPositionChanged: {
var dx = mouseArea.mouseX - startX
var dy = mouseArea.mouseY - startY
var factor = Math.pow(2, 15 - map.zoomLevel) * 0.00005;
map.center = QtPositioning.coordinate(
startLat - dy * -factor,
startLon + dx * -factor
)
}
onWheel: {
if (wheel.angleDelta.y < 0) {
map.zoomLevel -= 1
} else {
map.zoomLevel += 1
}
map.zoomLevel = Math.max(1, Math.min(map.zoomLevel, 18));
}
onContainsMouseChanged: {
cursorShape = mouseArea.containsMouse ? Qt.ClosedHandCursor : Qt.ArrowCursor
}
}
}
}

View File

@ -13,5 +13,12 @@
<file>res/png/arrowLeft.png</file> <file>res/png/arrowLeft.png</file>
<file>res/png/arrowRight.png</file> <file>res/png/arrowRight.png</file>
<file>res/png/bell.png</file> <file>res/png/bell.png</file>
<file>res/png/close.png</file>
<file>res/png/open.png</file>
<file>res/png/delete.png</file>
</qresource>
<qresource prefix="/qml">
<file>map.qml</file>
<file>res/qml/map.qml</file>
</qresource> </qresource>
</RCC> </RCC>

View File

@ -1,30 +1,34 @@
#ifndef SAVESENSORSERVICE_H #ifndef SAVESENSORSERVICE_H
#define SAVESENSORSERVICE_H #define SAVESENSORSERVICE_H
#include "utils.h"
#include "getsensors_r.h" #include "getsensors_r.h"
#include "sensorlogs.h"
#include "httpclient.h" #include "httpclient.h"
#include "sensorlogs.h"
#include "utils.h"
#include <QObject> #include <QFile>
#include <QNetworkAccessManager> #include <QJsonArray>
#include <QNetworkReply>
#include <QJsonDocument> #include <QJsonDocument>
#include <QJsonObject> #include <QJsonObject>
#include <QJsonArray> #include <QNetworkAccessManager>
#include <QNetworkReply>
#include <QObject>
#include <QString> #include <QString>
#include <QFile>
class SaveSensorService : public QObject class SaveSensorService : public QObject
{ {
Q_OBJECT Q_OBJECT
public: public:
explicit SaveSensorService(HttpClient* client, QObject *parent = nullptr) explicit SaveSensorService(HttpClient *client, QObject *parent = nullptr)
: QObject(parent), httpClient(client) {} : QObject(parent)
, httpClient(client)
{}
bool saveSensorLog(const Sensor &sensor, const SensorLogs &newSensorLogs) { bool saveSensorLog(const Sensor &sensor, const SensorLogs &newSensorLogs)
QJsonObject responseSettingsJson = httpClient->get(utils::API_URL + "/settings/deviceSettings"); {
QJsonObject responseSettingsJson = httpClient->get(utils::API_URL
+ "/settings/deviceSettings");
QJsonObject sensors = responseSettingsJson["SENSORS"].toObject(); QJsonObject sensors = responseSettingsJson["SENSORS"].toObject();
@ -63,14 +67,14 @@ public:
responseSettingsJson["SENSORS"] = sensors; responseSettingsJson["SENSORS"] = sensors;
QJsonObject putResponse = httpClient->post(utils::API_URL + "/settings/deviceSettings", responseSettingsJson); QJsonObject putResponse = httpClient->post(utils::API_URL + "/settings/deviceSettings",
responseSettingsJson);
return putResponse["message"] == "OK"; return putResponse["message"] == "OK";
} }
private: private:
HttpClient* httpClient; HttpClient *httpClient;
}; };
#endif // SAVESENSORSERVICE_H #endif // SAVESENSORSERVICE_H

View File

@ -1,11 +1,11 @@
#include "sensordialog.h" #include "sensordialog.h"
#include "ui_sensordialog.h" #include "ui_sensordialog.h"
#include "sensorlogervice.h"
#include "savesensorservice.h" #include "savesensorservice.h"
#include "sensorlogervice.h"
#include <QPainterPath>
#include <QCloseEvent> #include <QCloseEvent>
#include <QPainterPath>
#include <QDebug> #include <QDebug>
@ -15,7 +15,6 @@ SensorDialog::SensorDialog(QWidget *parent, SensorWidget *sensor, HttpClient *ht
, sensorWidget(sensor) , sensorWidget(sensor)
, _httpClient(httpClient) , _httpClient(httpClient)
{ {
ui->setupUi(this); ui->setupUi(this);
ui->isAlarm->addItems({"Да", "Нет"}); ui->isAlarm->addItems({"Да", "Нет"});
@ -28,8 +27,6 @@ SensorDialog::SensorDialog(QWidget *parent, SensorWidget *sensor, HttpClient *ht
ui->saveButton->setCursor(Qt::PointingHandCursor); ui->saveButton->setCursor(Qt::PointingHandCursor);
ui->cancelButton->setCursor(Qt::PointingHandCursor); ui->cancelButton->setCursor(Qt::PointingHandCursor);
ui->nameHeader->setText(sensorWidget->getSensor().id); ui->nameHeader->setText(sensorWidget->getSensor().id);
ui->name->setText(sensorWidget->getSensor().name); ui->name->setText(sensorWidget->getSensor().name);
ui->unitName->setText(sensorWidget->getSensor().unitName); ui->unitName->setText(sensorWidget->getSensor().unitName);
@ -48,7 +45,6 @@ SensorDialog::SensorDialog(QWidget *parent, SensorWidget *sensor, HttpClient *ht
ui->alarmSleepage->setText(QString::number(sensorLogs.getAlarmSleepage())); ui->alarmSleepage->setText(QString::number(sensorLogs.getAlarmSleepage()));
ui->logHugeError->setText(sensorLogs.getLogHugeError()); ui->logHugeError->setText(sensorLogs.getLogHugeError());
connect(ui->cancelButton, &QPushButton::clicked, this, [this]() { connect(ui->cancelButton, &QPushButton::clicked, this, [this]() {
isSavingSuccess = false; isSavingSuccess = false;
close(); close();
@ -68,51 +64,63 @@ SensorDialog::SensorDialog(QWidget *parent, SensorWidget *sensor, HttpClient *ht
connect(ui->logHugeError, &QTextEdit::textChanged, this, &SensorDialog::onLogHugeErrorChanged); connect(ui->logHugeError, &QTextEdit::textChanged, this, &SensorDialog::onLogHugeErrorChanged);
} }
void SensorDialog::onIsAlarmChanged(const QString& value) { void SensorDialog::onIsAlarmChanged(const QString &value)
{
sensorC.isAlarmEnabled = (value == "Да"); sensorC.isAlarmEnabled = (value == "Да");
} }
void SensorDialog::onIsBooledChanged(const QString& value) { void SensorDialog::onIsBooledChanged(const QString &value)
{
sensorC.isBooled = (value == "Да"); sensorC.isBooled = (value == "Да");
} }
void SensorDialog::onIsVisibleChanged(const QString& value) { void SensorDialog::onIsVisibleChanged(const QString &value)
{
sensorC.isHide = (value == "Да"); sensorC.isHide = (value == "Да");
} }
void SensorDialog::onNameChanged(const QString& value) { void SensorDialog::onNameChanged(const QString &value)
{
sensorC.name = value; sensorC.name = value;
} }
void SensorDialog::onUnitNameChanged(const QString& value) { void SensorDialog::onUnitNameChanged(const QString &value)
{
sensorC.unitName = value; sensorC.unitName = value;
} }
void SensorDialog::onAlarmLowChanged(const QString& value) { void SensorDialog::onAlarmLowChanged(const QString &value)
{
sensorC.alarmLowerBound = value.toDouble(); sensorC.alarmLowerBound = value.toDouble();
} }
void SensorDialog::onAlarmUpChanged(const QString& value) { void SensorDialog::onAlarmUpChanged(const QString &value)
{
sensorC.alarmUpperBound = value.toDouble(); sensorC.alarmUpperBound = value.toDouble();
} }
void SensorDialog::onAlarmCooldownChanged(const QString& value) { void SensorDialog::onAlarmCooldownChanged(const QString &value)
{
sensorC.alarmCooldown = value.toDouble(); sensorC.alarmCooldown = value.toDouble();
} }
void SensorDialog::onLogErrorChanged() { void SensorDialog::onLogErrorChanged()
{
sensorLogsC.setLogError(ui->logError->toPlainText()); sensorLogsC.setLogError(ui->logError->toPlainText());
} }
void SensorDialog::onLogManualChanged() { void SensorDialog::onLogManualChanged()
{
sensorLogsC.setLogManual(ui->logManual->toPlainText()); sensorLogsC.setLogManual(ui->logManual->toPlainText());
} }
void SensorDialog::onAlarmSleepageChanged(const QString& value) { void SensorDialog::onAlarmSleepageChanged(const QString &value)
{
sensorLogsC.setAlarmSleepage(value.toInt()); sensorLogsC.setAlarmSleepage(value.toInt());
} }
void SensorDialog::onLogHugeErrorChanged() { void SensorDialog::onLogHugeErrorChanged()
{
sensorLogsC.setLogHugeError(ui->logHugeError->toPlainText()); sensorLogsC.setLogHugeError(ui->logHugeError->toPlainText());
} }
@ -140,7 +148,6 @@ void SensorDialog::closeEvent(QCloseEvent *event)
event->accept(); event->accept();
} }
SensorDialog::~SensorDialog() SensorDialog::~SensorDialog()
{ {
delete ui; delete ui;

View File

@ -1,9 +1,9 @@
#ifndef SENSORDIALOG_H #ifndef SENSORDIALOG_H
#define SENSORDIALOG_H #define SENSORDIALOG_H
#include "sensorwidget.h"
#include "httpclient.h" #include "httpclient.h"
#include "sensorlogs.h" #include "sensorlogs.h"
#include "sensorwidget.h"
#include <QDialog> #include <QDialog>
@ -16,14 +16,12 @@ class SensorDialog : public QDialog
Q_OBJECT Q_OBJECT
public: public:
explicit SensorDialog(QWidget *parent = nullptr, SensorWidget *sensor = nullptr, HttpClient *httpClient = nullptr); explicit SensorDialog(QWidget *parent = nullptr,
SensorWidget *sensor = nullptr,
HttpClient *httpClient = nullptr);
~SensorDialog(); ~SensorDialog();
enum DialogResult { enum DialogResult { NoSave = 0, SaveSuccess, SaveError };
NoSave = 0,
SaveSuccess,
SaveError
};
signals: signals:
void resultReady(SensorDialog::DialogResult result); void resultReady(SensorDialog::DialogResult result);
@ -41,17 +39,17 @@ private:
private: private:
void onSaveButtonClicked(); void onSaveButtonClicked();
void onIsAlarmChanged(const QString& value); void onIsAlarmChanged(const QString &value);
void onIsBooledChanged(const QString& value); void onIsBooledChanged(const QString &value);
void onIsVisibleChanged(const QString& value); void onIsVisibleChanged(const QString &value);
void onNameChanged(const QString& value); void onNameChanged(const QString &value);
void onUnitNameChanged(const QString& value); void onUnitNameChanged(const QString &value);
void onAlarmLowChanged(const QString& value); void onAlarmLowChanged(const QString &value);
void onAlarmUpChanged(const QString& value); void onAlarmUpChanged(const QString &value);
void onAlarmCooldownChanged(const QString& value); void onAlarmCooldownChanged(const QString &value);
void onLogErrorChanged(); void onLogErrorChanged();
void onLogManualChanged(); void onLogManualChanged();
void onAlarmSleepageChanged(const QString& value); void onAlarmSleepageChanged(const QString &value);
void onLogHugeErrorChanged(); void onLogHugeErrorChanged();
private: private:

View File

@ -1,20 +1,22 @@
#ifndef SENSORGROUPS_R_H #ifndef SENSORGROUPS_R_H
#define SENSORGROUPS_R_H #define SENSORGROUPS_R_H
#include <QString> #include <QJsonArray>
#include <QJsonDocument> #include <QJsonDocument>
#include <QJsonObject> #include <QJsonObject>
#include <QJsonArray> #include <QString>
#include <QStringList> #include <QStringList>
class GetSensorsGroupsR { class GetSensorsGroupsR
{
public: public:
GetSensorsGroupsR() = default; GetSensorsGroupsR() = default;
void parseResponse(const QJsonObject& responseObj) { void parseResponse(const QJsonObject &responseObj)
{
if (responseObj.contains("groups") && responseObj["groups"].isArray()) { if (responseObj.contains("groups") && responseObj["groups"].isArray()) {
QJsonArray groupsArray = responseObj["groups"].toArray(); QJsonArray groupsArray = responseObj["groups"].toArray();
for (const QJsonValue& value : groupsArray) { for (const QJsonValue &value : groupsArray) {
if (value.isString()) { if (value.isString()) {
groups.append(value.toString()); groups.append(value.toString());
} }
@ -22,9 +24,7 @@ public:
} }
} }
const QStringList& getGroups() const { const QStringList &getGroups() const { return groups; }
return groups;
}
private: private:
QStringList groups; QStringList groups;

View File

@ -1,17 +1,17 @@
#ifndef SENSORLOGSSERVICE_H #ifndef SENSORLOGSSERVICE_H
#define SENSORLOGSSERVICE_H #define SENSORLOGSSERVICE_H
#include "utils.h"
#include "sensorlogs.h"
#include "httpclient.h" #include "httpclient.h"
#include "sensorlogs.h"
#include "utils.h"
#include <QObject> #include <QJsonArray>
#include <QNetworkAccessManager>
#include <QNetworkReply>
#include <QJsonDocument> #include <QJsonDocument>
#include <QJsonObject> #include <QJsonObject>
#include <QMessageBox> #include <QMessageBox>
#include <QJsonArray> #include <QNetworkAccessManager>
#include <QNetworkReply>
#include <QObject>
class SensorLogService : public QObject class SensorLogService : public QObject
{ {
@ -19,10 +19,14 @@ class SensorLogService : public QObject
public: public:
explicit SensorLogService(HttpClient *client, QObject *parent = nullptr) explicit SensorLogService(HttpClient *client, QObject *parent = nullptr)
: QObject(parent), httpClient(client) {} : QObject(parent)
, httpClient(client)
{}
SensorLogs getSensorLog(const QString &targetSensorId) { SensorLogs getSensorLog(const QString &targetSensorId)
QJsonObject responseSettingsJson = httpClient->get(utils::API_URL + "/settings/deviceSettings"); {
QJsonObject responseSettingsJson = httpClient->get(utils::API_URL
+ "/settings/deviceSettings");
QJsonObject sensors = responseSettingsJson["SENSORS"].toObject(); QJsonObject sensors = responseSettingsJson["SENSORS"].toObject();
for (const QString &groupKey : sensors.keys()) { for (const QString &groupKey : sensors.keys()) {
@ -41,7 +45,7 @@ public:
} }
private: private:
HttpClient* httpClient; HttpClient *httpClient;
}; };
#endif // SENSORLOGSSERVICE_H #endif // SENSORLOGSSERVICE_H

View File

@ -1,15 +1,18 @@
#ifndef SENSORLOGS_H #ifndef SENSORLOGS_H
#define SENSORLOGS_H #define SENSORLOGS_H
#include <QString>
#include <QJsonObject> #include <QJsonObject>
#include <QString>
class SensorLogs class SensorLogs
{ {
public: public:
SensorLogs() = default; SensorLogs() = default;
SensorLogs(const QString &logError, const QString &logManual, const QString &logHugeError) SensorLogs(const QString &logError, const QString &logManual, const QString &logHugeError)
: logError(logError), logManual(logManual), logHugeError(logHugeError) {} : logError(logError)
, logManual(logManual)
, logHugeError(logHugeError)
{}
QString getLogError() const { return logError; } QString getLogError() const { return logError; }
void setLogError(const QString &value) { logError = value; } void setLogError(const QString &value) { logError = value; }
@ -23,7 +26,8 @@ public:
int getAlarmSleepage() const { return AlarmSleepage; } int getAlarmSleepage() const { return AlarmSleepage; }
void setAlarmSleepage(const int &value) { AlarmSleepage = value; } void setAlarmSleepage(const int &value) { AlarmSleepage = value; }
void SensorLogsParse(QJsonObject &sensorData) { void SensorLogsParse(QJsonObject &sensorData)
{
logError = sensorData["LOG_ERROR"].toString(); logError = sensorData["LOG_ERROR"].toString();
logManual = sensorData["LOG_MANUAL"].toString(); logManual = sensorData["LOG_MANUAL"].toString();
logHugeError = sensorData["LOG_HUGE_ERROR"].toString(); logHugeError = sensorData["LOG_HUGE_ERROR"].toString();

View File

@ -1,33 +1,227 @@
#ifndef SENSORSERVICE_H #ifndef SENSORSERVICE_H
#define SENSORSERVICE_H #define SENSORSERVICE_H
#include "utils.h"
#include "HttpClient.h" #include "HttpClient.h"
#include "getsensors_r.h"
#include "getsensors_p.h"
#include "SensorGroups_r.h" #include "SensorGroups_r.h"
#include "getsensors_p.h"
#include "getsensors_r.h"
#include "utils.h"
#include <QJsonArray>
#include <QJsonObject>
#include <QList>
#include <QObject> #include <QObject>
#include <QString> #include <QString>
#include <QJsonObject>
#include <QJsonArray>
#include <QList>
#include <QStringList> #include <QStringList>
#include <QTime>
#include <QGeoCoordinate>
#include <QList>
class PlotData {
public:
QList<double> X;
QList<double> Y;
PlotData(QList<double>& x, QList<double> y)
: X(x)
, Y(y)
{}
};
struct sensorGroupTree {
QMap<QString, QString> groupToLocalGroup;
QMap<QString, QMap<QString, QString>> groupToSensorWithLocal;
sensorGroupTree(QMap<QString, QString>& a, QMap<QString, QMap<QString, QString>> b)
: groupToLocalGroup(a)
, groupToSensorWithLocal(b)
{}
};
struct Settings {
QString serial;
QString factory;
QString exhuyant;
QString fleet;
QString side;
QString gosNumber;
QString factoryNumber;
QString group;
QString adres;
QString userName;
QString userPassword;
QString argusSerial;
QList<QPair<QString, QString>> servers;
Settings(QString seriala,
QString factorya,
QString operatoroa,
QString fleeta,
QString sidea,
QString gosNumbera,
QString factoryNumbera,
QString groupa,
QString adresa,
QString userNamea,
QString userPassworda,
QString argusSeriala,
QList<QPair<QString, QString>> serversa)
: serial(seriala)
, factory(factorya)
, exhuyant(operatoroa)
, fleet(fleeta)
, side(sidea)
, gosNumber(gosNumbera)
, factoryNumber(factoryNumbera)
, group(groupa)
, adres(adresa)
, userName(userNamea)
, userPassword(userPassworda)
, argusSerial(argusSeriala)
, servers(serversa)
{}
Settings()
: serial("")
, factory("")
, exhuyant("")
, fleet("")
, side("")
, gosNumber("")
, factoryNumber("")
, group("")
, adres("")
, userName("")
, userPassword("")
, argusSerial("")
,servers({})
{}
};
class SensorService : public QObject class SensorService : public QObject
{ {
Q_OBJECT Q_OBJECT
public: public:
explicit SensorService(HttpClient* client, QObject *parent = nullptr) explicit SensorService(HttpClient *client, QObject *parent = nullptr)
: QObject(parent), httpClient(client) {} : QObject(parent)
, httpClient(client)
{}
QList<Sensor> getSensors(const QString& group) { Settings getSettings()
{
QJsonObject responseJson = httpClient->get(utils::API_URL + "/settings/deviceSettings");
Settings settings;
if (responseJson.isEmpty()) {
return settings;
}
if (responseJson.contains("SYSTEM")) {
QJsonObject systemObj = responseJson.value("SYSTEM").toObject();
settings.serial = systemObj.value("VIN").toString();
settings.factory = systemObj.value("MANUFACTURER").toString();
settings.exhuyant = systemObj.value("OPERATOR").toString();
settings.fleet = systemObj.value("TP").toString();
settings.gosNumber = systemObj.value("GOS_NUMBER").toString();
settings.factoryNumber = systemObj.value("REG_NUMBER").toString();
settings.group = systemObj.value("GROUP").toString();
}
if (responseJson.contains("SENSORS")) {
QJsonObject sensorsObj = responseJson.value("SENSORS").toObject();
if (sensorsObj.contains("*SYSTEM")) {
QJsonObject systemSensorsObj = sensorsObj.value("*SYSTEM").toObject();
if (systemSensorsObj.contains("*ARGUS")) {
QJsonObject argusObj = systemSensorsObj.value("*ARGUS").toObject();
QString extra = argusObj.value("EXTRA").toString();
QJsonDocument extraDoc = QJsonDocument::fromJson(extra.toUtf8());
if (!extraDoc.isNull() && extraDoc.isObject()) {
QJsonObject extraObj = extraDoc.object();
settings.adres = extraObj.value("IP").toString();
settings.userName = extraObj.value("DB_USER").toString();
settings.userPassword = extraObj.value("DB_PASSWORD").toString();
settings.argusSerial = extraObj.value("SERIAL").toString();
}
}
}
}
if (responseJson.contains("HOSTS")) {
QJsonArray hostsArray = responseJson.value("HOSTS").toArray();
for (const QJsonValue &hostValue : hostsArray) {
QJsonObject hostObj = hostValue.toObject();
QString domain = hostObj.value("DOMAIN").toString();
int port = hostObj.value("PORT").toInt();
settings.servers.append(qMakePair(domain, QString::number(port)));
}
}
return settings;
}
void updateSettings(Settings& settings)
{
QJsonObject responseJson = httpClient->get(utils::API_URL + "/settings/deviceSettings");
if (responseJson.contains("SYSTEM")) {
QJsonObject systemObj = responseJson.value("SYSTEM").toObject();
systemObj["VIN"] = settings.serial;
systemObj["MANUFACTURER"] = settings.factory;
systemObj["OPERATOR"] = settings.exhuyant;
systemObj["TP"] = settings.fleet;
systemObj["GOS_NUMBER"] = settings.gosNumber;
systemObj["REG_NUMBER"] = settings.factoryNumber;
systemObj["GROUP"] = settings.group;
responseJson["SYSTEM"] = systemObj;
}
if (responseJson.contains("SENSORS")) {
QJsonObject sensorsObj = responseJson.value("SENSORS").toObject();
if (sensorsObj.contains("*SYSTEM")) {
QJsonObject systemSensorsObj = sensorsObj.value("*SYSTEM").toObject();
if (systemSensorsObj.contains("*ARGUS")) {
QJsonObject argusObj = systemSensorsObj.value("*ARGUS").toObject();
QJsonObject extraObj;
extraObj["IP"] = settings.adres;
extraObj["DB_USER"] = settings.userName;
extraObj["DB_PASSWORD"] = settings.userPassword;
extraObj["SERIAL"] = settings.argusSerial;
QJsonDocument extraDoc(extraObj);
argusObj["EXTRA"] = QString(extraDoc.toJson(QJsonDocument::Compact));
systemSensorsObj["*ARGUS"] = argusObj;
sensorsObj["*SYSTEM"] = systemSensorsObj;
responseJson["SENSORS"] = sensorsObj;
}
}
}
if (responseJson.contains("HOSTS")) {
QJsonArray hostsArray;
for (const auto& server : settings.servers) {
QJsonObject newHostObj;
newHostObj["DOMAIN"] = server.first;
newHostObj["PORT"] = server.second.toInt();
hostsArray.append(newHostObj);
}
responseJson["HOSTS"] = hostsArray;
}
httpClient->post(utils::API_URL + "/settings/deviceSettings", responseJson);
}
QList<Sensor> getSensors(const QString &group)
{
GetSensorsP requestParams; GetSensorsP requestParams;
requestParams.setGroup(group); requestParams.setGroup(group);
QByteArray requestData = requestParams.createRequestJson(); QByteArray requestData = requestParams.createRequestJson();
QJsonObject responseJson = httpClient->post(utils::API_URL + "/data/getDeviceSensors", QJsonDocument::fromJson(requestData).object()); QJsonObject responseJson = httpClient->post(utils::API_URL + "/data/getDeviceSensors",
QJsonDocument::fromJson(requestData).object());
GetSensorsR response; GetSensorsR response;
response.parseResponse(responseJson); response.parseResponse(responseJson);
@ -35,8 +229,8 @@ public:
return response.getSensors(); return response.getSensors();
} }
QStringList getSensorGroups() { QStringList getSensorGroups()
QJsonObject emptyJson; {
QJsonObject responseJson = httpClient->post(utils::API_URL + "/data/getDeviceSensorGroups"); QJsonObject responseJson = httpClient->post(utils::API_URL + "/data/getDeviceSensorGroups");
GetSensorsGroupsR response; GetSensorsGroupsR response;
@ -45,8 +239,262 @@ public:
return response.getGroups(); return response.getGroups();
} }
QMap<QString, QString> getLocalizedSensorGroups()
{
QJsonObject responseJson = httpClient->get(utils::API_URL + "/data/getDeviceSensorsTree");
QMap<QString, QString> localizedGroupsMap;
if (responseJson.contains("groups") && responseJson["groups"].isObject()) {
QJsonObject groupsObject = responseJson["groups"].toObject();
for (const QString &groupKey : groupsObject.keys()) {
QJsonObject groupInfo = groupsObject[groupKey].toObject();
if (groupInfo.contains("name") && groupInfo["name"].isString()) {
if(groupInfo["name"].toString() == "*SYSTEM") {
continue;
}
QString localizedName = groupInfo["name"].toString();
localizedGroupsMap[localizedName] = groupKey;
}
}
}
return localizedGroupsMap;
}
QMap<QString, QMap<QString, QPair<QString, QString>>> getTranslate()
{
QJsonObject responseJson = httpClient->get(utils::API_URL + "/data/getDeviceSensorsTree");
QMap<QString, QMap<QString, QPair<QString, QString>>> translate;
if (responseJson.contains("groups") && responseJson["groups"].isObject()) {
QJsonObject groupsObject = responseJson["groups"].toObject();
for (const QString &groupKey : groupsObject.keys()) {
QJsonObject groupInfo = groupsObject[groupKey].toObject();
if (groupInfo.contains("sensors") && groupInfo["sensors"].isObject() &&
groupInfo.contains("name") && groupInfo["name"].isString()) {
if(groupInfo["name"].toString() == "*SYSTEM") {
continue;
}
QJsonObject sensors = groupInfo["sensors"].toObject();
QString localizedGroup = groupInfo["name"].toString();
for (auto sensorKey : sensors.keys()) {
if (sensors[sensorKey].isString()) {
translate[groupKey][sensorKey].first = localizedGroup;
translate[groupKey][sensorKey].second = sensors[sensorKey].toString();
}
}
}
}
}
return translate;
}
QMap<QString, QString> getSensorToLocalSensor()
{
QJsonObject responseJson = httpClient->get(utils::API_URL + "/data/getDeviceSensorsTree");
QMap<QString, QString> localizedGroupsMap;
if (responseJson.contains("groups") && responseJson["groups"].isObject()) {
QJsonObject groupsObject = responseJson["groups"].toObject();
for (const QString &groupKey : groupsObject.keys()) {
QJsonObject groupInfo = groupsObject[groupKey].toObject();
if (groupInfo.contains("name") && groupInfo["name"].isString()) {
if(groupInfo["name"].toString() == "*SYSTEM") {
continue;
}
QString localizedName = groupInfo["name"].toString();
localizedGroupsMap[localizedName] = groupKey;
}
}
}
return localizedGroupsMap;
}
sensorGroupTree getSensorGroupsTree()
{
QJsonObject responseJson = httpClient->get(utils::API_URL + "/data/getDeviceSensorsTree");
GetSensorsGroupsR response;
QMap<QString, QString> groupToLocalGroup;
QMap<QString, QMap<QString, QString>> groupToSensorWithLocal;
if (responseJson.contains("groups") && responseJson["groups"].isObject()) {
QJsonObject groups = responseJson["groups"].toObject();
for (auto groupKey : groups.keys()) {
QJsonObject group = groups[groupKey].toObject();
if(group["name"].toString() == "*SYSTEM") {
continue;
}
if (group.contains("name") && group["name"].isString()) {
groupToLocalGroup[groupKey] = group["name"].toString();
}
if (group.contains("sensors") && group["sensors"].isObject()) {
QJsonObject sensors = group["sensors"].toObject();
QMap<QString, QString> sensorsMap;
for (auto sensorKey : sensors.keys()) {
if (sensors[sensorKey].isString()) {
sensorsMap[sensorKey] = sensors[sensorKey].toString();
}
}
groupToSensorWithLocal[groupKey] = sensorsMap;
}
}
}
return sensorGroupTree(groupToLocalGroup, groupToSensorWithLocal);
}
PlotData getDeviceSensorData(const QString &group, const QString &sensorId,
qint64 start,
qint64 end)
{
QJsonObject rootObj;
rootObj["start"] = start;
rootObj["end"] = end;
rootObj["sensor"] = group + '/' + sensorId;
QJsonDocument doc(rootObj);
QByteArray requestData = doc.toJson();
QJsonObject responseJson = httpClient->post(utils::API_URL + "/data/getDeviceSensorData",
QJsonDocument::fromJson(requestData).object());
QList<double> x;
QList<double> y;
if (responseJson.contains("data") && responseJson["data"].isArray() &&
responseJson.contains("timestamp") && responseJson["timestamp"].isArray())
{
QJsonArray dataArray = responseJson["data"].toArray();
QJsonArray timestampArray = responseJson["timestamp"].toArray();
if (dataArray.size() == timestampArray.size()) {
for (int i = 0; i < dataArray.size(); ++i) {
int value = dataArray[i].toInt();
qint64 timestamp = timestampArray[i].toInt();
x.append(timestamp);
y.append(value);
}
} else {
x.append(QTime::currentTime().msecsSinceStartOfDay());
y.append(0);
}
} else {
x.append(QTime::currentTime().msecsSinceStartOfDay());
y.append(0);
}
if(x.empty()) {
x.append(QTime::currentTime().msecsSinceStartOfDay());
y.append(0);
}
return PlotData(x, y);
}
PlotData getDeviceSensorData(const QString &groupWithSensor,
qint64 start,
qint64 end)
{
QJsonObject rootObj;
rootObj["start"] = start;
rootObj["end"] = end;
rootObj["sensor"] = groupWithSensor;
QJsonDocument doc(rootObj);
QByteArray requestData = doc.toJson();
QJsonObject responseJson = httpClient->post(utils::API_URL + "/data/getDeviceSensorData",
QJsonDocument::fromJson(requestData).object());
QList<double> x;
QList<double> y;
if (responseJson.contains("data") && responseJson["data"].isArray() &&
responseJson.contains("timestamp") && responseJson["timestamp"].isArray())
{
QJsonArray dataArray = responseJson["data"].toArray();
QJsonArray timestampArray = responseJson["timestamp"].toArray();
if (dataArray.size() == timestampArray.size()) {
for (int i = 0; i < dataArray.size(); ++i) {
int value = dataArray[i].toInt();
qint64 timestamp = timestampArray[i].toInt();
x.append(timestamp);
y.append(value);
}
} else {
x.append(QTime::currentTime().msecsSinceStartOfDay());
y.append(0);
}
} else {
x.append(QTime::currentTime().msecsSinceStartOfDay());
y.append(0);
}
if(x.empty()) {
x.append(QTime::currentTime().msecsSinceStartOfDay());
y.append(0);
}
return PlotData(x, y);
}
QVariantList getPoints(qint64 start, qint64 end)
{
QJsonObject rootObj;
rootObj["start_time"] = start;
rootObj["end_time"] = end;
QJsonDocument doc(rootObj);
QByteArray requestData = doc.toJson();
QJsonObject responseJson = httpClient->post(utils::API_URL + "/data/geo/getPoints",
QJsonDocument::fromJson(requestData).object());
QVariantList points;
if (responseJson.contains("time") && responseJson["time"].isArray() &&
responseJson.contains("latitude") && responseJson["latitude"].isArray() &&
responseJson.contains("longitude") && responseJson["longitude"].isArray())
{
QJsonArray timeArray = responseJson["time"].toArray();
QJsonArray latitudeArray = responseJson["latitude"].toArray();
QJsonArray longitudeArray = responseJson["longitude"].toArray();
if (timeArray.size() == latitudeArray.size() && timeArray.size() == longitudeArray.size()) {
for (int i = 0; i < timeArray.size(); ++i) {
qint64 timestamp = timeArray[i].toInt();
points.append(QVariant::fromValue(QGeoCoordinate(latitudeArray[i].toDouble(), longitudeArray[i].toDouble())));
}
}
}
return points;
}
private: private:
HttpClient* httpClient; HttpClient *httpClient;
}; };
#endif // SENSORSERVICE_H #endif // SENSORSERVICE_H

View File

@ -2,9 +2,12 @@
#include <QMouseEvent> #include <QMouseEvent>
SensorWidget::SensorWidget(QWidget *parent, const Sensor &sensor) SensorWidget::SensorWidget(QWidget *parent, const Sensor &sensor)
: QFrame(parent), sensor(sensor), : QFrame(parent)
titleLabel(new QLabel(this)), valueLabel(new QLabel(this)), incidentLabel(new QLabel(this)), , sensor(sensor)
layout(new QVBoxLayout(this)) , titleLabel(new QLabel(this))
, valueLabel(new QLabel(this))
, incidentLabel(new QLabel(this))
, layout(new QVBoxLayout(this))
{ {
setFrameStyle(QFrame::Box); setFrameStyle(QFrame::Box);
setLineWidth(1); setLineWidth(1);
@ -27,19 +30,21 @@ SensorWidget::SensorWidget(QWidget *parent, const Sensor &sensor)
titleLabel->setMinimumHeight(100); titleLabel->setMinimumHeight(100);
titleLabel->setAlignment(Qt::AlignTop | Qt::AlignLeft); titleLabel->setAlignment(Qt::AlignTop | Qt::AlignLeft);
if(sensor.isBooled) { if (sensor.isBooled) {
valueLabel->setText(sensor.lastValue != 0 ? "Да" : "Нет"); valueLabel->setText(sensor.lastValue != 0 ? "Да" : "Нет");
} else { } else {
valueLabel->setText(QString::number(sensor.lastValue) + ' ' + sensor.unitName); valueLabel->setText(QString::number(sensor.lastValue) + ' ' + sensor.unitName);
incidentLabel->setText(QString::number(sensor.alarmLowerBound) + "-" + QString::number(sensor.alarmUpperBound)); incidentLabel->setText(QString::number(sensor.alarmLowerBound) + "-"
+ QString::number(sensor.alarmUpperBound));
} }
layout->setContentsMargins(10, 10, 10, 10); layout->setContentsMargins(10, 10, 10, 10);
layout->setSpacing(5); layout->setSpacing(5);
setLayout(layout); setLayout(layout);
} }
void SensorWidget::mousePressEvent(QMouseEvent *event) { void SensorWidget::mousePressEvent(QMouseEvent *event)
emit clicked(this); // Генерация сигнала о клике {
emit clicked(this); // Генерация сигнала о клике
QFrame::mousePressEvent(event); QFrame::mousePressEvent(event);
} }
@ -108,22 +113,26 @@ void SensorWidget::setErrorState()
} }
} }
Sensor SensorWidget::getSensor() const { Sensor SensorWidget::getSensor() const
{
return sensor; return sensor;
} }
void SensorWidget::setSensor(const Sensor value) { void SensorWidget::setSensor(const Sensor value)
{
sensor = value; sensor = value;
QString titleText = sensor.name; QString titleText = sensor.name;
if (titleText.length() > 40) { if (titleText.length() > 40) {
titleText = titleText.left(37) + "..."; titleText = titleText.left(37) + "...";
} }
titleLabel->setText(titleText); titleLabel->setText(titleText);
if(sensor.isBooled) { if (sensor.isBooled) {
valueLabel->setText(sensor.lastValue != 0 ? "Да" : "Нет"); valueLabel->setText(sensor.lastValue != 0 ? "Да" : "Нет");
incidentLabel->hide();
} else { } else {
valueLabel->setText(QString::number(sensor.lastValue) + ' ' + sensor.unitName); valueLabel->setText(QString::number(sensor.lastValue) + ' ' + sensor.unitName);
incidentLabel->setText(QString::number(sensor.alarmLowerBound) + "-" + QString::number(sensor.alarmUpperBound)); incidentLabel->show();
incidentLabel->setText(QString::number(sensor.alarmLowerBound) + "-"
+ QString::number(sensor.alarmUpperBound));
} }
} }

View File

@ -1,18 +1,17 @@
#ifndef SENSORWIDGET_H #ifndef SENSORWIDGET_H
#define SENSORWIDGET_H #define SENSORWIDGET_H
#include "getsensors_r.h"
#include <QFrame> #include <QFrame>
#include <QLabel> #include <QLabel>
#include <QVBoxLayout> #include <QVBoxLayout>
#include "getsensors_r.h"
class SensorWidget : public QFrame class SensorWidget : public QFrame
{ {
Q_OBJECT Q_OBJECT
public: public:
explicit SensorWidget(QWidget *parent = nullptr, explicit SensorWidget(QWidget *parent = nullptr, const Sensor &sensor = Sensor());
const Sensor &sensor = Sensor());
void setErrorState(); void setErrorState();

63
serverwidget.cpp Normal file
View File

@ -0,0 +1,63 @@
#include "serverwidget.h"
ServerWidget::ServerWidget(const QString &domain, int port, QWidget *parent)
: QWidget(parent)
{
deleted = 0;
domainLineEdit = new QLineEdit(domain, this);
portLineEdit = new QLineEdit(QString::number(port), this);
removeButton = new QPushButton(QIcon(":/png/res/png/delete.png"), "", this);
domainLineEdit->setFixedSize(360, 35);
domainLineEdit->setStyleSheet(R"(
border: 2px solid #DCD174;
font-family: Inter;
font-size: 15px;
font-weight: 400;
line-height: 31.47px;
text-align: left;
background: #00000000;
color: #13385F;
)");
portLineEdit->setFixedSize(150, 35);
portLineEdit->setStyleSheet(R"(
border: 2px solid #DCD174;
font-family: Inter;
font-size: 15px;
font-weight: 400;
line-height: 31.47px;
text-align: left;
background: #00000000;
color: #13385F;
)");
removeButton->setFixedSize(35, 35);
removeButton->setStyleSheet(R"(
border: none;
background: #00000000;
)");
QHBoxLayout *layout = new QHBoxLayout(this);
layout->setSpacing(10);
layout->setContentsMargins(0, 0, 0, 0);
layout->addWidget(domainLineEdit);
layout->addWidget(portLineEdit);
layout->addWidget(removeButton);
connect(removeButton, &QPushButton::clicked, this, [this]() {
deleted = 1;
emit removeWidget(this);
});
setLayout(layout);
}
QString ServerWidget::getDomain() const {
return domainLineEdit->text();
}
QString ServerWidget::getPort() const {
return portLineEdit->text();
}
ServerWidget::~ServerWidget() {
}

33
serverwidget.h Normal file
View File

@ -0,0 +1,33 @@
// ServerWidget.h
#ifndef SERVERWIDGET_H
#define SERVERWIDGET_H
#include <QWidget>
#include <QLineEdit>
#include <QPushButton>
#include <QIcon>
#include <QHBoxLayout>
class ServerWidget : public QWidget
{
Q_OBJECT
public:
explicit ServerWidget(const QString &domain, int port, QWidget *parent = nullptr);
~ServerWidget();
signals:
void removeWidget(ServerWidget *widget);
public:
bool deleted = 0;
QString getPort() const;
QString getDomain() const;
private:
QLineEdit *domainLineEdit;
QLineEdit *portLineEdit;
QPushButton *removeButton;
};
#endif // SERVERWIDGET_H

View File

@ -1,5 +1,5 @@
#include "utils.h" #include "utils.h"
namespace utils { namespace utils {
QString API_URL = "http://localhost:8080"; // Определение переменной QString API_URL = "http://localhost:8080";
} }

View File

@ -4,8 +4,7 @@
#include <QString> #include <QString>
namespace utils { namespace utils {
extern QString API_URL; extern QString API_URL;
} }
#endif // UTILS_H #endif // UTILS_H