Compare commits
21 Commits
v1.0.0-bet
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
73955a1b8b | ||
|
|
0c65ab2cb5 | ||
|
|
5515112404 | ||
|
|
8e11f3e210 | ||
|
|
9721350fb0 | ||
|
|
689689f243 | ||
|
|
fd4b766c4d | ||
|
|
6a44c4afd9 | ||
|
|
63d1ca329f | ||
|
|
1753a34957 | ||
|
|
a6593a0151 | ||
|
|
877fde22e0 | ||
|
|
92d0c14df7 | ||
|
|
deb49909d1 | ||
|
|
9bb56fe174 | ||
|
|
ffebb3c7d7 | ||
|
|
c49966b47c | ||
|
|
e628ef9e94 | ||
|
|
2b95b41257 | ||
|
|
b07b7b69eb | ||
|
|
102f720d29 |
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
*.pro.*
|
||||||
88
Chronos.pro
88
Chronos.pro
@@ -1,17 +1,66 @@
|
|||||||
QT += core gui
|
QT += core gui
|
||||||
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
|
greaterThan(QT_MAJOR_VERSION, 5): QT += widgets
|
||||||
|
|
||||||
CONFIG += c++17
|
CONFIG += c++17
|
||||||
|
|
||||||
|
win32:VERSION = 2.3.0.0 # major.minor.patch.build
|
||||||
|
else:VERSION = 2.3.0 # major.minor.patch
|
||||||
|
|
||||||
|
DEFINES += APP_VERSION=\"\\\"$${VERSION}\\\"\"
|
||||||
|
|
||||||
# remove possible other optimization flags
|
# remove possible other optimization flags
|
||||||
|
win32 {
|
||||||
|
message("Build for Windows")
|
||||||
QMAKE_CXXFLAGS_RELEASE -= -O
|
QMAKE_CXXFLAGS_RELEASE -= -O
|
||||||
QMAKE_CXXFLAGS_RELEASE -= -O1
|
QMAKE_CXXFLAGS_RELEASE -= -O1
|
||||||
QMAKE_CXXFLAGS_RELEASE *= -O2
|
QMAKE_CXXFLAGS_RELEASE *= -O2
|
||||||
|
DEFINES += APP_OS=\"\\\"Windows\\\"\"
|
||||||
# add the desired -O3 if not present, MinGW only
|
DEFINES += APP_OS_VERSION=\"\\\"$$system(ver)\\\"\"
|
||||||
# QMAKE_CXXFLAGS_RELEASE *= -O3
|
equals(QMAKE_TARGET.arch, arm64) {
|
||||||
|
message("CPU Architecture : aarch64")
|
||||||
|
DEFINES += APP_ARCH=\"\\\"arm64\\\"\"
|
||||||
|
}
|
||||||
|
equals(QMAKE_TARGET.arch, x86_64) {
|
||||||
|
message("CPU Architecture : x64")
|
||||||
|
QMAKE_CXXFLAGS_RELEASE += -favor:INTEL64
|
||||||
|
DEFINES += APP_ARCH=\"\\\"x64\\\"\"
|
||||||
|
}
|
||||||
RC_ICONS = icon.ico
|
RC_ICONS = icon.ico
|
||||||
|
QMAKE_TARGET_COMPANY = "Aurelie Delhaie"
|
||||||
|
QMAKE_TARGET_PRODUCT = "Chronos"
|
||||||
|
QMAKE_TARGET_DESCRIPTION = "Chronos"
|
||||||
|
}
|
||||||
|
|
||||||
|
macx {
|
||||||
|
message("Build for macOS")
|
||||||
|
ICON = icon.icns
|
||||||
|
QMAKE_INFO_PLIST = Info.plist
|
||||||
|
QMAKE_CXXFLAGS_RELEASE -= -O
|
||||||
|
QMAKE_CXXFLAGS_RELEASE -= -O1
|
||||||
|
QMAKE_CXXFLAGS_RELEASE -= -O2
|
||||||
|
QMAKE_CXXFLAGS_RELEASE *= -O3
|
||||||
|
QMAKE_APPLE_DEVICE_ARCHS = x86_64 arm64
|
||||||
|
DEFINES += APP_OS=\"\\\"macOS\\\"\"
|
||||||
|
DEFINES += APP_OS_VERSION=\"\\\"$$system(uname -r)\\\"\"
|
||||||
|
DEFINES += APP_ARCH=\"\\\"universal\\\"\"
|
||||||
|
}
|
||||||
|
|
||||||
|
linux-* {
|
||||||
|
message("Build for Linux")
|
||||||
|
DEFINES += APP_OS=\"\\\"$$system(cat /etc/issue | cut -d\' \' -f1)\\\"\"
|
||||||
|
DEFINES += APP_OS_VERSION=\"\\\"$$system(uname -r)\\\"\"
|
||||||
|
DEFINES += APP_ARCH=\"\\\"$$system(uname -m)\\\"\"
|
||||||
|
ARCH = $$system(uname -m)
|
||||||
|
equals(ARCH, aarch64) {
|
||||||
|
message("CPU Architecture : aarch64")
|
||||||
|
QMAKE_CXXFLAGS_RELEASE += -mtune=cortex-a72
|
||||||
|
}
|
||||||
|
equals(ARCH, amd64) {
|
||||||
|
message("CPU Architecture : amd64")
|
||||||
|
QMAKE_CXXFLAGS_RELEASE += -march=skylake
|
||||||
|
}
|
||||||
|
QMAKE_CXXFLAGS_RELEASE *= -O3
|
||||||
|
}
|
||||||
|
|
||||||
# The following define makes your compiler emit warnings if you use
|
# The following define makes your compiler emit warnings if you use
|
||||||
# any Qt feature that has been marked deprecated (the exact warnings
|
# any Qt feature that has been marked deprecated (the exact warnings
|
||||||
@@ -25,25 +74,42 @@ DEFINES += QT_DEPRECATED_WARNINGS
|
|||||||
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
|
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
|
||||||
|
|
||||||
SOURCES += \
|
SOURCES += \
|
||||||
|
sources/configurationmanager.cpp \
|
||||||
|
sources/configurationdialog.cpp \
|
||||||
sources/aboutbox.cpp \
|
sources/aboutbox.cpp \
|
||||||
sources/day.cpp \
|
sources/breakdialog.cpp \
|
||||||
|
sources/models/breakpoint.cpp \
|
||||||
|
sources/models/day.cpp \
|
||||||
sources/main.cpp \
|
sources/main.cpp \
|
||||||
sources/mainwindow.cpp \
|
sources/mainwindow.cpp \
|
||||||
|
sources/models/settings.cpp \
|
||||||
sources/setdaydialog.cpp \
|
sources/setdaydialog.cpp \
|
||||||
sources/tools.cpp \
|
sources/tools.cpp \
|
||||||
sources/week.cpp \
|
sources/models/week.cpp \
|
||||||
sources/welcome.cpp
|
sources/weekoption.cpp \
|
||||||
|
sources/welcome.cpp \
|
||||||
|
sources/models/year.cpp
|
||||||
|
|
||||||
HEADERS += \
|
HEADERS += \
|
||||||
|
sources/configurationmanager.h \
|
||||||
|
sources/configurationdialog.h \
|
||||||
sources/aboutbox.h \
|
sources/aboutbox.h \
|
||||||
sources/day.h \
|
sources/breakdialog.h \
|
||||||
|
sources/models/breakpoint.h \
|
||||||
|
sources/models/day.h \
|
||||||
sources/mainwindow.h \
|
sources/mainwindow.h \
|
||||||
|
sources/models/settings.h \
|
||||||
sources/setdaydialog.h \
|
sources/setdaydialog.h \
|
||||||
sources/tools.h \
|
sources/tools.h \
|
||||||
sources/week.h \
|
sources/models/week.h \
|
||||||
sources/welcome.h
|
sources/weekoption.h \
|
||||||
|
sources/welcome.h \
|
||||||
|
sources/models/year.h
|
||||||
|
|
||||||
FORMS += \
|
FORMS += \
|
||||||
|
ui/weekoption.ui \
|
||||||
|
ui/configurationdialog.ui \
|
||||||
|
ui/breakdialog.ui \
|
||||||
ui/aboutbox.ui \
|
ui/aboutbox.ui \
|
||||||
ui/mainwindow.ui \
|
ui/mainwindow.ui \
|
||||||
ui/setdaydialog.ui \
|
ui/setdaydialog.ui \
|
||||||
|
|||||||
340
Chronos.pro.user
340
Chronos.pro.user
@@ -1,340 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<!DOCTYPE QtCreatorProject>
|
|
||||||
<!-- Written by QtCreator 4.12.4, 2020-09-26T16:18:50. -->
|
|
||||||
<qtcreator>
|
|
||||||
<data>
|
|
||||||
<variable>EnvironmentId</variable>
|
|
||||||
<value type="QByteArray">{39b4df9e-fc10-428a-bc34-924198bd0973}</value>
|
|
||||||
</data>
|
|
||||||
<data>
|
|
||||||
<variable>ProjectExplorer.Project.ActiveTarget</variable>
|
|
||||||
<value type="int">0</value>
|
|
||||||
</data>
|
|
||||||
<data>
|
|
||||||
<variable>ProjectExplorer.Project.EditorSettings</variable>
|
|
||||||
<valuemap type="QVariantMap">
|
|
||||||
<value type="bool" key="EditorConfiguration.AutoIndent">true</value>
|
|
||||||
<value type="bool" key="EditorConfiguration.AutoSpacesForTabs">false</value>
|
|
||||||
<value type="bool" key="EditorConfiguration.CamelCaseNavigation">true</value>
|
|
||||||
<valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.0">
|
|
||||||
<value type="QString" key="language">Cpp</value>
|
|
||||||
<valuemap type="QVariantMap" key="value">
|
|
||||||
<value type="QByteArray" key="CurrentPreferences">CppGlobal</value>
|
|
||||||
</valuemap>
|
|
||||||
</valuemap>
|
|
||||||
<valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.1">
|
|
||||||
<value type="QString" key="language">QmlJS</value>
|
|
||||||
<valuemap type="QVariantMap" key="value">
|
|
||||||
<value type="QByteArray" key="CurrentPreferences">QmlJSGlobal</value>
|
|
||||||
</valuemap>
|
|
||||||
</valuemap>
|
|
||||||
<value type="int" key="EditorConfiguration.CodeStyle.Count">2</value>
|
|
||||||
<value type="QByteArray" key="EditorConfiguration.Codec">UTF-8</value>
|
|
||||||
<value type="bool" key="EditorConfiguration.ConstrainTooltips">false</value>
|
|
||||||
<value type="int" key="EditorConfiguration.IndentSize">4</value>
|
|
||||||
<value type="bool" key="EditorConfiguration.KeyboardTooltips">false</value>
|
|
||||||
<value type="int" key="EditorConfiguration.MarginColumn">80</value>
|
|
||||||
<value type="bool" key="EditorConfiguration.MouseHiding">true</value>
|
|
||||||
<value type="bool" key="EditorConfiguration.MouseNavigation">true</value>
|
|
||||||
<value type="int" key="EditorConfiguration.PaddingMode">1</value>
|
|
||||||
<value type="bool" key="EditorConfiguration.ScrollWheelZooming">true</value>
|
|
||||||
<value type="bool" key="EditorConfiguration.ShowMargin">false</value>
|
|
||||||
<value type="int" key="EditorConfiguration.SmartBackspaceBehavior">0</value>
|
|
||||||
<value type="bool" key="EditorConfiguration.SmartSelectionChanging">true</value>
|
|
||||||
<value type="bool" key="EditorConfiguration.SpacesForTabs">true</value>
|
|
||||||
<value type="int" key="EditorConfiguration.TabKeyBehavior">0</value>
|
|
||||||
<value type="int" key="EditorConfiguration.TabSize">8</value>
|
|
||||||
<value type="bool" key="EditorConfiguration.UseGlobal">true</value>
|
|
||||||
<value type="int" key="EditorConfiguration.Utf8BomBehavior">1</value>
|
|
||||||
<value type="bool" key="EditorConfiguration.addFinalNewLine">true</value>
|
|
||||||
<value type="bool" key="EditorConfiguration.cleanIndentation">true</value>
|
|
||||||
<value type="bool" key="EditorConfiguration.cleanWhitespace">true</value>
|
|
||||||
<value type="bool" key="EditorConfiguration.inEntireDocument">false</value>
|
|
||||||
</valuemap>
|
|
||||||
</data>
|
|
||||||
<data>
|
|
||||||
<variable>ProjectExplorer.Project.PluginSettings</variable>
|
|
||||||
<valuemap type="QVariantMap">
|
|
||||||
<valuelist type="QVariantList" key="ClangCodeModel.CustomCommandLineKey">
|
|
||||||
<value type="QString">-fno-delayed-template-parsing</value>
|
|
||||||
</valuelist>
|
|
||||||
<value type="bool" key="ClangCodeModel.UseGlobalConfig">true</value>
|
|
||||||
<value type="QString" key="ClangCodeModel.WarningConfigId">Builtin.Questionable</value>
|
|
||||||
<valuemap type="QVariantMap" key="ClangTools">
|
|
||||||
<value type="bool" key="ClangTools.BuildBeforeAnalysis">true</value>
|
|
||||||
<value type="QString" key="ClangTools.DiagnosticConfig">Builtin.DefaultTidyAndClazy</value>
|
|
||||||
<value type="int" key="ClangTools.ParallelJobs">4</value>
|
|
||||||
<valuelist type="QVariantList" key="ClangTools.SelectedDirs"/>
|
|
||||||
<valuelist type="QVariantList" key="ClangTools.SelectedFiles"/>
|
|
||||||
<valuelist type="QVariantList" key="ClangTools.SuppressedDiagnostics"/>
|
|
||||||
<value type="bool" key="ClangTools.UseGlobalSettings">true</value>
|
|
||||||
</valuemap>
|
|
||||||
</valuemap>
|
|
||||||
</data>
|
|
||||||
<data>
|
|
||||||
<variable>ProjectExplorer.Project.Target.0</variable>
|
|
||||||
<valuemap type="QVariantMap">
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop Qt 5.15.0 MSVC2019 64bit</value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop Qt 5.15.0 MSVC2019 64bit</value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">qt.qt5.5150.win64_msvc2019_64_kit</value>
|
|
||||||
<value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">1</value>
|
|
||||||
<value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
|
|
||||||
<value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
|
|
||||||
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
|
|
||||||
<value type="bool">true</value>
|
|
||||||
<value type="int" key="EnableQmlDebugging">0</value>
|
|
||||||
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">C:\Users\robof\OneDrive\Documents\build-Chronos-Desktop_Qt_5_15_0_MSVC2019_64bit-Debug</value>
|
|
||||||
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">C:/Users/robof/OneDrive/Documents/build-Chronos-Desktop_Qt_5_15_0_MSVC2019_64bit-Debug</value>
|
|
||||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
|
|
||||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
|
|
||||||
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
|
|
||||||
<value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
|
|
||||||
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
|
|
||||||
<valuelist type="QVariantList" key="QtProjectManager.QMakeBuildStep.SelectedAbis"/>
|
|
||||||
</valuemap>
|
|
||||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
|
|
||||||
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
|
|
||||||
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
|
|
||||||
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
|
|
||||||
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
|
|
||||||
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
|
|
||||||
<value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
|
|
||||||
</valuemap>
|
|
||||||
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</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="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
|
|
||||||
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
|
|
||||||
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
|
|
||||||
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
|
|
||||||
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
|
|
||||||
<value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
|
|
||||||
</valuemap>
|
|
||||||
<value type="int" 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.UserEnvironmentChanges"/>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Debug</value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
|
|
||||||
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">2</value>
|
|
||||||
<value type="int" key="QtQuickCompiler">2</value>
|
|
||||||
<value type="int" key="SeparateDebugInfo">2</value>
|
|
||||||
</valuemap>
|
|
||||||
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
|
|
||||||
<value type="bool">true</value>
|
|
||||||
<value type="int" key="EnableQmlDebugging">2</value>
|
|
||||||
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">C:\Users\robof\OneDrive\Documents\build-Chronos-Desktop_Qt_5_15_0_MSVC2019_64bit-Release</value>
|
|
||||||
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">C:/Users/robof/OneDrive/Documents/build-Chronos-Desktop_Qt_5_15_0_MSVC2019_64bit-Release</value>
|
|
||||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
|
|
||||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
|
|
||||||
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
|
|
||||||
<value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
|
|
||||||
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
|
|
||||||
<valuelist type="QVariantList" key="QtProjectManager.QMakeBuildStep.SelectedAbis"/>
|
|
||||||
</valuemap>
|
|
||||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
|
|
||||||
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
|
|
||||||
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
|
|
||||||
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
|
|
||||||
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
|
|
||||||
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
|
|
||||||
<value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
|
|
||||||
</valuemap>
|
|
||||||
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</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="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
|
|
||||||
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
|
|
||||||
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
|
|
||||||
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
|
|
||||||
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
|
|
||||||
<value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
|
|
||||||
</valuemap>
|
|
||||||
<value type="int" 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.UserEnvironmentChanges"/>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Release</value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
|
|
||||||
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
|
|
||||||
<value type="int" key="QtQuickCompiler">0</value>
|
|
||||||
<value type="int" key="SeparateDebugInfo">2</value>
|
|
||||||
</valuemap>
|
|
||||||
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.2">
|
|
||||||
<value type="bool">true</value>
|
|
||||||
<value type="int" key="EnableQmlDebugging">0</value>
|
|
||||||
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">C:\Users\robof\OneDrive\Documents\build-Chronos-Desktop_Qt_5_15_0_MSVC2019_64bit-Profile</value>
|
|
||||||
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">C:/Users/robof/OneDrive/Documents/build-Chronos-Desktop_Qt_5_15_0_MSVC2019_64bit-Profile</value>
|
|
||||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
|
|
||||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
|
|
||||||
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
|
|
||||||
<value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
|
|
||||||
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
|
|
||||||
<valuelist type="QVariantList" key="QtProjectManager.QMakeBuildStep.SelectedAbis"/>
|
|
||||||
</valuemap>
|
|
||||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
|
|
||||||
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
|
|
||||||
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
|
|
||||||
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
|
|
||||||
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
|
|
||||||
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
|
|
||||||
<value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
|
|
||||||
</valuemap>
|
|
||||||
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</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="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
|
|
||||||
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
|
|
||||||
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
|
|
||||||
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
|
|
||||||
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
|
|
||||||
<value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
|
|
||||||
</valuemap>
|
|
||||||
<value type="int" 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.UserEnvironmentChanges"/>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Profile</value>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
|
|
||||||
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
|
|
||||||
<value type="int" key="QtQuickCompiler">0</value>
|
|
||||||
<value type="int" key="SeparateDebugInfo">0</value>
|
|
||||||
</valuemap>
|
|
||||||
<value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">3</value>
|
|
||||||
<valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
|
|
||||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
|
|
||||||
<value type="int" 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>
|
|
||||||
<value type="int" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
|
|
||||||
<valuemap type="QVariantMap" key="ProjectExplorer.Target.PluginSettings"/>
|
|
||||||
<valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
|
|
||||||
<value type="QString" key="Analyzer.Perf.CallgraphMode">dwarf</value>
|
|
||||||
<valuelist type="QVariantList" key="Analyzer.Perf.Events">
|
|
||||||
<value type="QString">cpu-cycles</value>
|
|
||||||
</valuelist>
|
|
||||||
<valuelist type="QVariantList" key="Analyzer.Perf.ExtraArguments"/>
|
|
||||||
<value type="int" key="Analyzer.Perf.Frequency">250</value>
|
|
||||||
<valuelist type="QVariantList" key="Analyzer.Perf.RecordArguments">
|
|
||||||
<value type="QString">-e</value>
|
|
||||||
<value type="QString">cpu-cycles</value>
|
|
||||||
<value type="QString">--call-graph</value>
|
|
||||||
<value type="QString">dwarf,4096</value>
|
|
||||||
<value type="QString">-F</value>
|
|
||||||
<value type="QString">250</value>
|
|
||||||
</valuelist>
|
|
||||||
<value type="QString" key="Analyzer.Perf.SampleMode">-F</value>
|
|
||||||
<value type="bool" key="Analyzer.Perf.Settings.UseGlobalSettings">true</value>
|
|
||||||
<value type="int" key="Analyzer.Perf.StackSize">4096</value>
|
|
||||||
<value type="bool" key="Analyzer.QmlProfiler.AggregateTraces">false</value>
|
|
||||||
<value type="bool" key="Analyzer.QmlProfiler.FlushEnabled">false</value>
|
|
||||||
<value type="uint" key="Analyzer.QmlProfiler.FlushInterval">1000</value>
|
|
||||||
<value type="QString" key="Analyzer.QmlProfiler.LastTraceFile"></value>
|
|
||||||
<value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
|
|
||||||
<valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/>
|
|
||||||
<value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value>
|
|
||||||
<value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value>
|
|
||||||
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value>
|
|
||||||
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value>
|
|
||||||
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value>
|
|
||||||
<value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value>
|
|
||||||
<value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value>
|
|
||||||
<value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value>
|
|
||||||
<value type="QString" key="Analyzer.Valgrind.KCachegrindExecutable">kcachegrind</value>
|
|
||||||
<value type="int" key="Analyzer.Valgrind.LeakCheckOnFinish">1</value>
|
|
||||||
<value type="int" key="Analyzer.Valgrind.NumCallers">25</value>
|
|
||||||
<valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/>
|
|
||||||
<value type="int" key="Analyzer.Valgrind.SelfModifyingCodeDetection">1</value>
|
|
||||||
<value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
|
|
||||||
<value type="bool" key="Analyzer.Valgrind.ShowReachable">false</value>
|
|
||||||
<value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value>
|
|
||||||
<value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value>
|
|
||||||
<valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds">
|
|
||||||
<value type="int">0</value>
|
|
||||||
<value type="int">1</value>
|
|
||||||
<value type="int">2</value>
|
|
||||||
<value type="int">3</value>
|
|
||||||
<value type="int">4</value>
|
|
||||||
<value type="int">5</value>
|
|
||||||
<value type="int">6</value>
|
|
||||||
<value type="int">7</value>
|
|
||||||
<value type="int">8</value>
|
|
||||||
<value type="int">9</value>
|
|
||||||
<value type="int">10</value>
|
|
||||||
<value type="int">11</value>
|
|
||||||
<value type="int">12</value>
|
|
||||||
<value type="int">13</value>
|
|
||||||
<value type="int">14</value>
|
|
||||||
</valuelist>
|
|
||||||
<value type="int" key="PE.EnvironmentAspect.Base">2</value>
|
|
||||||
<valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
|
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:C:/Users/robof/OneDrive/Documents/Chronos/Chronos.pro</value>
|
|
||||||
<value type="QString" key="ProjectExplorer.RunConfiguration.BuildKey">C:/Users/robof/OneDrive/Documents/Chronos/Chronos.pro</value>
|
|
||||||
<value type="QString" key="RunConfiguration.Arguments"></value>
|
|
||||||
<value type="bool" key="RunConfiguration.Arguments.multi">false</value>
|
|
||||||
<value type="QString" key="RunConfiguration.OverrideDebuggerStartup"></value>
|
|
||||||
<value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
|
|
||||||
<value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
|
|
||||||
<value type="bool" key="RunConfiguration.UseLibrarySearchPath">true</value>
|
|
||||||
<value type="bool" key="RunConfiguration.UseMultiProcess">false</value>
|
|
||||||
<value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
|
|
||||||
<value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
|
|
||||||
<value type="QString" key="RunConfiguration.WorkingDirectory"></value>
|
|
||||||
<value type="QString" key="RunConfiguration.WorkingDirectory.default">C:/Users/robof/OneDrive/Documents/build-Chronos-Desktop_Qt_5_15_0_MSVC2019_64bit-Release</value>
|
|
||||||
</valuemap>
|
|
||||||
<value type="int" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
|
|
||||||
</valuemap>
|
|
||||||
</data>
|
|
||||||
<data>
|
|
||||||
<variable>ProjectExplorer.Project.TargetCount</variable>
|
|
||||||
<value type="int">1</value>
|
|
||||||
</data>
|
|
||||||
<data>
|
|
||||||
<variable>ProjectExplorer.Project.Updater.FileVersion</variable>
|
|
||||||
<value type="int">22</value>
|
|
||||||
</data>
|
|
||||||
<data>
|
|
||||||
<variable>Version</variable>
|
|
||||||
<value type="int">22</value>
|
|
||||||
</data>
|
|
||||||
</qtcreator>
|
|
||||||
24
Info.plist
Normal file
24
Info.plist
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<plist version="1.0">
|
||||||
|
<dict>
|
||||||
|
<key>CFBundleExecutable</key>
|
||||||
|
<string>Chronos</string>
|
||||||
|
<key>CFBundleIconFile</key>
|
||||||
|
<string></string>
|
||||||
|
<key>CFBundleIdentifier</key>
|
||||||
|
<string>com.aureliedelhaie.Chronos</string>
|
||||||
|
<key>CFBundlePackageType</key>
|
||||||
|
<string>APPL</string>
|
||||||
|
<key>CFBundleSignature</key>
|
||||||
|
<string>????</string>
|
||||||
|
<key>LSMinimumSystemVersion</key>
|
||||||
|
<string>10.14</string>
|
||||||
|
<key>NSPrincipalClass</key>
|
||||||
|
<string>NSApplication</string>
|
||||||
|
<key>NSSupportsAutomaticGraphicsSwitching</key>
|
||||||
|
<true/>
|
||||||
|
<key>CFBundleIconFile</key>
|
||||||
|
<string>icon.icns</string>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
||||||
7
LICENSE
Normal file
7
LICENSE
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
Copyright 2022 Aurélie Delhaie
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
@@ -1 +1,10 @@
|
|||||||
# Chronos
|
# Chronos
|
||||||
|
|
||||||
|
## Install on Ubuntu
|
||||||
|
You need to install Qt 6 dependencies
|
||||||
|
|
||||||
|
```sh
|
||||||
|
sudo apt install libqt6widgets6 libqt6gui6 libqt6core5compat6 libqt6core5compat6 libqt6core6 libqt6dbus6
|
||||||
|
```
|
||||||
|
|
||||||
|
then download binary from the release section
|
||||||
|
|||||||
1
find_dependencies_linux.sh
Normal file
1
find_dependencies_linux.sh
Normal file
@@ -0,0 +1 @@
|
|||||||
|
ldd $1 | awk '{print $1}' | sed 's/\..*//' | while read n; do apt-cache search ^$n | grep libqt6 | cut -f 1 -d '-' >> deps.txt; done
|
||||||
BIN
icon-1.png
Normal file
BIN
icon-1.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 27 KiB |
@@ -1,10 +1,9 @@
|
|||||||
<RCC>
|
<RCC>
|
||||||
<qresource prefix="/clock">
|
<qresource prefix="/clock">
|
||||||
<file>pictures/clock-8-128.png</file>
|
|
||||||
<file>pictures/sport.png</file>
|
|
||||||
<file>pictures/calendar.png</file>
|
|
||||||
<file>pictures/about.png</file>
|
<file>pictures/about.png</file>
|
||||||
<file>pictures/banner.png</file>
|
<file>pictures/banner.png</file>
|
||||||
<file>pictures/validate.png</file>
|
<file>pictures/validate.png</file>
|
||||||
|
<file>pictures/warning.png</file>
|
||||||
|
<file>pictures/leave.png</file>
|
||||||
</qresource>
|
</qresource>
|
||||||
</RCC>
|
</RCC>
|
||||||
|
|||||||
Binary file not shown.
|
Before Width: | Height: | Size: 8.6 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 3.2 KiB |
BIN
pictures/leave.png
Normal file
BIN
pictures/leave.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 4.7 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 8.5 KiB |
BIN
pictures/warning.png
Normal file
BIN
pictures/warning.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 6.0 KiB |
BIN
sources/.DS_Store
vendored
Normal file
BIN
sources/.DS_Store
vendored
Normal file
Binary file not shown.
@@ -11,6 +11,8 @@ AboutBox::AboutBox(QWidget *parent) :
|
|||||||
xmin = ui->frame->x();
|
xmin = ui->frame->x();
|
||||||
ymax = ui->frame->x() + ui->frame->height();
|
ymax = ui->frame->x() + ui->frame->height();
|
||||||
ymin = ui->frame->y();
|
ymin = ui->frame->y();
|
||||||
|
ui->systemLabel->setText(QString("Built on %1 %2 (%3)").arg(APP_OS, APP_OS_VERSION, APP_ARCH));
|
||||||
|
ui->versionLabel->setText(QString("Version: %1").arg(APP_VERSION));
|
||||||
}
|
}
|
||||||
|
|
||||||
AboutBox::~AboutBox()
|
AboutBox::~AboutBox()
|
||||||
@@ -19,14 +21,14 @@ AboutBox::~AboutBox()
|
|||||||
}
|
}
|
||||||
|
|
||||||
void AboutBox::mousePressEvent(QMouseEvent *event) {
|
void AboutBox::mousePressEvent(QMouseEvent *event) {
|
||||||
m_nMouseClick_X_Coordinate = event->x();
|
m_nMouseClick_X_Coordinate = event->position().rx();
|
||||||
m_nMouseClick_Y_Coordinate = event->y();
|
m_nMouseClick_Y_Coordinate = event->position().ry();
|
||||||
}
|
}
|
||||||
|
|
||||||
void AboutBox::mouseMoveEvent(QMouseEvent *event) {
|
void AboutBox::mouseMoveEvent(QMouseEvent *event) {
|
||||||
if (isWidgetIsTitleBar()) {
|
if (isWidgetIsTitleBar()) {
|
||||||
move(event->globalX() - m_nMouseClick_X_Coordinate ,
|
move(event->globalPosition().rx() - m_nMouseClick_X_Coordinate ,
|
||||||
event->globalY() - m_nMouseClick_Y_Coordinate);
|
event->globalPosition().ry() - m_nMouseClick_Y_Coordinate);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,6 +4,7 @@
|
|||||||
#include <QDialog>
|
#include <QDialog>
|
||||||
#include <QMouseEvent>
|
#include <QMouseEvent>
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
#include <QSysInfo>
|
||||||
|
|
||||||
namespace Ui {
|
namespace Ui {
|
||||||
class AboutBox;
|
class AboutBox;
|
||||||
|
|||||||
32
sources/breakdialog.cpp
Normal file
32
sources/breakdialog.cpp
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
#include "breakdialog.h"
|
||||||
|
#include "ui_breakdialog.h"
|
||||||
|
|
||||||
|
BreakDialog::BreakDialog(QWidget *parent) :
|
||||||
|
QDialog(parent),
|
||||||
|
ui(new Ui::BreakDialog)
|
||||||
|
{
|
||||||
|
ui->setupUi(this);
|
||||||
|
connect(ui->startTime, &QTimeEdit::timeChanged, this, &BreakDialog::compute);
|
||||||
|
connect(ui->endTime, &QTimeEdit::timeChanged, this, &BreakDialog::compute);
|
||||||
|
}
|
||||||
|
|
||||||
|
BreakDialog::~BreakDialog()
|
||||||
|
{
|
||||||
|
delete ui;
|
||||||
|
}
|
||||||
|
|
||||||
|
BreakPoint BreakDialog::get_result()
|
||||||
|
{
|
||||||
|
return bp;
|
||||||
|
}
|
||||||
|
|
||||||
|
void BreakDialog::compute()
|
||||||
|
{
|
||||||
|
if (ui->endTime->time() < ui->startTime->time()) {
|
||||||
|
ui->endTime->setTime(ui->startTime->time());
|
||||||
|
}
|
||||||
|
bp.setStart(ui->startTime->time());
|
||||||
|
bp.setEnd(ui->endTime->time());
|
||||||
|
float minutes = bp.getDuration();
|
||||||
|
ui->totalTime->setText(Tools::double_to_string_counter(minutes));
|
||||||
|
}
|
||||||
30
sources/breakdialog.h
Normal file
30
sources/breakdialog.h
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
#ifndef BREAKDIALOG_H
|
||||||
|
#define BREAKDIALOG_H
|
||||||
|
|
||||||
|
#include <QDialog>
|
||||||
|
|
||||||
|
#include "models/breakpoint.h"
|
||||||
|
#include "tools.h"
|
||||||
|
|
||||||
|
namespace Ui {
|
||||||
|
class BreakDialog;
|
||||||
|
}
|
||||||
|
|
||||||
|
class BreakDialog : public QDialog
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
explicit BreakDialog(QWidget *parent = nullptr);
|
||||||
|
~BreakDialog();
|
||||||
|
BreakPoint get_result();
|
||||||
|
|
||||||
|
private slots:
|
||||||
|
void compute();
|
||||||
|
|
||||||
|
private:
|
||||||
|
Ui::BreakDialog *ui;
|
||||||
|
BreakPoint bp;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // BREAKDIALOG_H
|
||||||
32
sources/configurationdialog.cpp
Normal file
32
sources/configurationdialog.cpp
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
#include "configurationdialog.h"
|
||||||
|
#include "ui_configurationdialog.h"
|
||||||
|
|
||||||
|
ConfigurationDialog::ConfigurationDialog(QWidget *parent) :
|
||||||
|
QDialog(parent),
|
||||||
|
ui(new Ui::ConfigurationDialog)
|
||||||
|
{
|
||||||
|
ui->setupUi(this);
|
||||||
|
RefreshField();
|
||||||
|
}
|
||||||
|
|
||||||
|
ConfigurationDialog::~ConfigurationDialog()
|
||||||
|
{
|
||||||
|
delete ui;
|
||||||
|
}
|
||||||
|
|
||||||
|
void ConfigurationDialog::RefreshField()
|
||||||
|
{
|
||||||
|
Settings* s = mng.GetConfiguration();
|
||||||
|
ui->cloud_url->setText(s->GetCloudUrl());
|
||||||
|
ui->cloud_Email->setText(s->GetCloudEmail());
|
||||||
|
ui->cloud_password->setText(s->GetCloudPassword());
|
||||||
|
ui->cloud_agent->setText(s->GetCloudAgent());
|
||||||
|
ui->cloud_enable->setCheckState(s->GetCloudEnabled() ? Qt::CheckState::Checked : Qt::CheckState::Unchecked);
|
||||||
|
|
||||||
|
bool cloudDisabled = !s->GetCloudEnabled();
|
||||||
|
ui->cloud_url->setDisabled(cloudDisabled);
|
||||||
|
ui->cloud_Email->setDisabled(cloudDisabled);
|
||||||
|
ui->cloud_password->setDisabled(cloudDisabled);
|
||||||
|
ui->cloud_agent->setDisabled(cloudDisabled);
|
||||||
|
}
|
||||||
|
|
||||||
28
sources/configurationdialog.h
Normal file
28
sources/configurationdialog.h
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
#ifndef CONFIGURATIONDIALOG_H
|
||||||
|
#define CONFIGURATIONDIALOG_H
|
||||||
|
|
||||||
|
#include <QDialog>
|
||||||
|
|
||||||
|
#include "configurationmanager.h"
|
||||||
|
|
||||||
|
namespace Ui {
|
||||||
|
class ConfigurationDialog;
|
||||||
|
}
|
||||||
|
|
||||||
|
class ConfigurationDialog : public QDialog
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
explicit ConfigurationDialog(QWidget *parent = nullptr);
|
||||||
|
~ConfigurationDialog();
|
||||||
|
|
||||||
|
private:
|
||||||
|
Ui::ConfigurationDialog *ui;
|
||||||
|
ConfigurationManager mng;
|
||||||
|
|
||||||
|
void RefreshField();
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // CONFIGURATIONDIALOG_H
|
||||||
51
sources/configurationmanager.cpp
Normal file
51
sources/configurationmanager.cpp
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
#include "configurationmanager.h"
|
||||||
|
|
||||||
|
ConfigurationManager::ConfigurationManager()
|
||||||
|
{
|
||||||
|
if (QFile::exists(GetPath())) {
|
||||||
|
QFile* file = new QFile(GetPath());
|
||||||
|
file->open(QIODevice::ReadOnly);
|
||||||
|
auto json = QString(file->readAll());
|
||||||
|
file->close();
|
||||||
|
delete file;
|
||||||
|
|
||||||
|
QJsonObject obj = QJsonDocument::fromJson(json.toUtf8()).object();
|
||||||
|
this->s = Settings::FromJSON(obj);
|
||||||
|
} else {
|
||||||
|
this->s = new Settings();
|
||||||
|
Save();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ConfigurationManager::~ConfigurationManager()
|
||||||
|
{
|
||||||
|
delete s;
|
||||||
|
}
|
||||||
|
|
||||||
|
Settings *ConfigurationManager::GetConfiguration()
|
||||||
|
{
|
||||||
|
return s;
|
||||||
|
}
|
||||||
|
|
||||||
|
QString ConfigurationManager::GetPath() {
|
||||||
|
QString path = QStandardPaths::writableLocation(QStandardPaths::AppDataLocation);
|
||||||
|
if (!QDir(path).exists()) {
|
||||||
|
QDir().mkpath(path);
|
||||||
|
}
|
||||||
|
path += "/";
|
||||||
|
if (!QDir(path).exists()) {
|
||||||
|
QDir().mkpath(path);
|
||||||
|
}
|
||||||
|
path += FILENAME;
|
||||||
|
return path;
|
||||||
|
}
|
||||||
|
|
||||||
|
void ConfigurationManager::Save() {
|
||||||
|
QJsonDocument doc(s->ToJSON());
|
||||||
|
QFile *f = new QFile(GetPath());
|
||||||
|
if (f->open(QIODevice::WriteOnly)) {
|
||||||
|
f->write(doc.toJson());
|
||||||
|
f->close();
|
||||||
|
}
|
||||||
|
delete f;
|
||||||
|
}
|
||||||
27
sources/configurationmanager.h
Normal file
27
sources/configurationmanager.h
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
#ifndef CONFIGURATIONMANAGER_H
|
||||||
|
#define CONFIGURATIONMANAGER_H
|
||||||
|
|
||||||
|
#define FILENAME "settings.json"
|
||||||
|
|
||||||
|
#include <QString>
|
||||||
|
#include <QDir>
|
||||||
|
#include <QStandardPaths>
|
||||||
|
#include <QJsonObject>
|
||||||
|
#include <QJsonDocument>
|
||||||
|
|
||||||
|
#include "models/settings.h"
|
||||||
|
|
||||||
|
class ConfigurationManager
|
||||||
|
{
|
||||||
|
private:
|
||||||
|
Settings *s;
|
||||||
|
QString GetPath();
|
||||||
|
void Save();
|
||||||
|
public:
|
||||||
|
ConfigurationManager();
|
||||||
|
~ConfigurationManager();
|
||||||
|
|
||||||
|
Settings* GetConfiguration();
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // CONFIGURATIONMANAGER_H
|
||||||
@@ -1,76 +0,0 @@
|
|||||||
#include "day.h"
|
|
||||||
|
|
||||||
Day::Day()
|
|
||||||
{
|
|
||||||
start = QTime(9, 0, 0, 0);
|
|
||||||
end = QTime(17, 15, 0, 0);
|
|
||||||
time_break = 45.0;
|
|
||||||
}
|
|
||||||
|
|
||||||
double Day::get_total() {
|
|
||||||
int sec = start.secsTo(end);
|
|
||||||
int minutes = sec / 60;
|
|
||||||
return (minutes - time_break) / 60;
|
|
||||||
}
|
|
||||||
|
|
||||||
void Day::set_start(QTime value)
|
|
||||||
{
|
|
||||||
start = value;
|
|
||||||
}
|
|
||||||
|
|
||||||
void Day::set_end(QTime value)
|
|
||||||
{
|
|
||||||
end = value;
|
|
||||||
}
|
|
||||||
|
|
||||||
void Day::set_time_break(double value)
|
|
||||||
{
|
|
||||||
time_break = value;
|
|
||||||
}
|
|
||||||
|
|
||||||
void Day::set_validate(bool value) {
|
|
||||||
validate = value;
|
|
||||||
}
|
|
||||||
|
|
||||||
QTime Day::get_start()
|
|
||||||
{
|
|
||||||
return start;
|
|
||||||
}
|
|
||||||
|
|
||||||
QTime Day::get_end()
|
|
||||||
{
|
|
||||||
return end;
|
|
||||||
}
|
|
||||||
|
|
||||||
double Day::get_time_break()
|
|
||||||
{
|
|
||||||
return time_break;
|
|
||||||
}
|
|
||||||
|
|
||||||
QJsonObject Day::to_json()
|
|
||||||
{
|
|
||||||
QJsonObject obj{
|
|
||||||
{KEY_START, start.toString(Qt::DateFormat::ISODate)},
|
|
||||||
{KEY_END, end.toString(Qt::DateFormat::ISODate)},
|
|
||||||
{KEY_BREAK, time_break},
|
|
||||||
{KEY_VALIDATE, validate}
|
|
||||||
};
|
|
||||||
|
|
||||||
return obj;
|
|
||||||
}
|
|
||||||
|
|
||||||
Day Day::from_json(QJsonObject obj)
|
|
||||||
{
|
|
||||||
Day result;
|
|
||||||
|
|
||||||
result.start = QTime::fromString(obj[KEY_START].toString(), Qt::DateFormat::ISODate);
|
|
||||||
result.end = QTime::fromString(obj[KEY_END].toString(), Qt::DateFormat::ISODate);
|
|
||||||
result.time_break = obj[KEY_BREAK].toDouble();
|
|
||||||
result.validate = obj[KEY_VALIDATE].toBool();
|
|
||||||
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool Day::get_validate() {
|
|
||||||
return validate;
|
|
||||||
}
|
|
||||||
@@ -6,33 +6,16 @@ MainWindow::MainWindow(QWidget *parent)
|
|||||||
, ui(new Ui::MainWindow)
|
, ui(new Ui::MainWindow)
|
||||||
{
|
{
|
||||||
ui->setupUi(this);
|
ui->setupUi(this);
|
||||||
ui->window_title->setText(this->windowTitle());
|
|
||||||
this->setWindowFlags(Qt::FramelessWindowHint);
|
|
||||||
init();
|
init();
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainWindow::mousePressEvent(QMouseEvent *event) {
|
|
||||||
m_nMouseClick_X_Coordinate = event->x();
|
|
||||||
m_nMouseClick_Y_Coordinate = event->y();
|
|
||||||
}
|
|
||||||
|
|
||||||
void MainWindow::mouseMoveEvent(QMouseEvent *event) {
|
|
||||||
if (isWidgetIsTitleBar()) {
|
|
||||||
move(event->globalX() - m_nMouseClick_X_Coordinate ,
|
|
||||||
event->globalY() - m_nMouseClick_Y_Coordinate);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
bool MainWindow::isWidgetIsTitleBar() {
|
|
||||||
return (m_nMouseClick_X_Coordinate >= xmin &&
|
|
||||||
m_nMouseClick_X_Coordinate < xmax &&
|
|
||||||
m_nMouseClick_Y_Coordinate >= ymin &&
|
|
||||||
m_nMouseClick_Y_Coordinate < ymax);
|
|
||||||
}
|
|
||||||
|
|
||||||
MainWindow::~MainWindow()
|
MainWindow::~MainWindow()
|
||||||
{
|
{
|
||||||
|
delete week_template;
|
||||||
|
foreach (Year *y, years) {
|
||||||
|
delete y;
|
||||||
|
}
|
||||||
|
years.clear();
|
||||||
delete ui;
|
delete ui;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -55,12 +38,10 @@ void MainWindow::init() {
|
|||||||
objectId.insert(ui->wed_button->objectName(), Identifier::wed);
|
objectId.insert(ui->wed_button->objectName(), Identifier::wed);
|
||||||
objectId.insert(ui->thu_button->objectName(), Identifier::thu);
|
objectId.insert(ui->thu_button->objectName(), Identifier::thu);
|
||||||
objectId.insert(ui->fri_button->objectName(), Identifier::fri);
|
objectId.insert(ui->fri_button->objectName(), Identifier::fri);
|
||||||
xmax = ui->titleBar->x() + ui->titleBar->width();
|
|
||||||
xmin = ui->titleBar->x();
|
|
||||||
ymax = ui->titleBar->x() + ui->titleBar->height();
|
|
||||||
ymin = ui->titleBar->y();
|
|
||||||
connect(ui->aboutButton, &QPushButton::clicked, this, &MainWindow::open_about);
|
connect(ui->aboutButton, &QPushButton::clicked, this, &MainWindow::open_about);
|
||||||
connect(ui->template_settings_button, &QPushButton::clicked, this, &MainWindow::edit_template);
|
connect(ui->template_settings_button, &QPushButton::clicked, this, &MainWindow::edit_template);
|
||||||
|
connect(ui->today_button, &QPushButton::clicked, this, &MainWindow::set_date_to_now);
|
||||||
|
connect(ui->week_options_button, &QPushButton::clicked, this, &MainWindow::set_week_options);
|
||||||
connect(ui->dateEdit, &QDateEdit::dateTimeChanged, this, &MainWindow::compute_week_number);
|
connect(ui->dateEdit, &QDateEdit::dateTimeChanged, this, &MainWindow::compute_week_number);
|
||||||
connect(ui->mon_button, &QPushButton::clicked, this, &MainWindow::edit);
|
connect(ui->mon_button, &QPushButton::clicked, this, &MainWindow::edit);
|
||||||
connect(ui->tue_button, &QPushButton::clicked, this, &MainWindow::edit);
|
connect(ui->tue_button, &QPushButton::clicked, this, &MainWindow::edit);
|
||||||
@@ -74,9 +55,10 @@ void MainWindow::init() {
|
|||||||
if (QFile::exists(get_save_file_path())) {
|
if (QFile::exists(get_save_file_path())) {
|
||||||
open_save();
|
open_save();
|
||||||
} else {
|
} else {
|
||||||
|
week_template = new Week();
|
||||||
Welcome w(week_template);
|
Welcome w(week_template);
|
||||||
w.exec();
|
w.exec();
|
||||||
week_template = w.get_result();
|
saveLoaded = true;
|
||||||
}
|
}
|
||||||
if (saveLoaded) {
|
if (saveLoaded) {
|
||||||
set_date_to_now();
|
set_date_to_now();
|
||||||
@@ -90,30 +72,33 @@ void MainWindow::highlightDayOfWeek() {
|
|||||||
ui->wedLabel->setText("Mercredi");
|
ui->wedLabel->setText("Mercredi");
|
||||||
ui->thuLabel->setText("Jeudi");
|
ui->thuLabel->setText("Jeudi");
|
||||||
ui->friLabel->setText("Vendredi");
|
ui->friLabel->setText("Vendredi");
|
||||||
if (todayWeekNumber == current_week.getWeekNumber()) {
|
if (todayWeekNumber == current_week->getWeekNumber()) {
|
||||||
|
ui->today_button->setDisabled(true);
|
||||||
switch (dayOfWeek) {
|
switch (dayOfWeek) {
|
||||||
case 1: {
|
case 1: {
|
||||||
ui->monLabel->setText(QString("> %1 <").arg(ui->monLabel->text()));
|
ui->monLabel->setText(QString("%1 📆").arg(ui->monLabel->text()));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 2: {
|
case 2: {
|
||||||
ui->tueLabel->setText(QString("> %1 <").arg(ui->tueLabel->text()));
|
ui->tueLabel->setText(QString("%1 📆").arg(ui->tueLabel->text()));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 3: {
|
case 3: {
|
||||||
ui->wedLabel->setText(QString("> %1 <").arg(ui->wedLabel->text()));
|
ui->wedLabel->setText(QString("%1 📆").arg(ui->wedLabel->text()));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 4: {
|
case 4: {
|
||||||
ui->thuLabel->setText(QString("> %1 <").arg(ui->thuLabel->text()));
|
ui->thuLabel->setText(QString("%1 📆").arg(ui->thuLabel->text()));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 5: {
|
case 5: {
|
||||||
ui->friLabel->setText(QString("> %1 <").arg(ui->friLabel->text()));
|
ui->friLabel->setText(QString("%1 📆").arg(ui->friLabel->text()));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
default: break;
|
default: break;
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
ui->today_button->setDisabled(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -130,28 +115,17 @@ void MainWindow::open_save() {
|
|||||||
delete file;
|
delete file;
|
||||||
|
|
||||||
QJsonObject obj = QJsonDocument::fromJson(json.toUtf8()).object();
|
QJsonObject obj = QJsonDocument::fromJson(json.toUtf8()).object();
|
||||||
if (obj[KEY_SAVE_FILE_VERSION].toInt() == SAVE_FILE_VERSION) {
|
if (obj[KEY_SAVE_FILE_VERSION] != SAVE_FILE_VERSION) {
|
||||||
|
panic_dialog("Your save file version does not match the supported version."
|
||||||
|
" Please update this file and restart the application");
|
||||||
|
}
|
||||||
week_template = Week::from_json(obj[KEY_TEMPLATE].toObject());
|
week_template = Week::from_json(obj[KEY_TEMPLATE].toObject());
|
||||||
QJsonArray arr = obj[KEY_WEEKS].toArray();
|
QJsonArray arr = obj[KEY_YEARS].toArray();
|
||||||
for (QJsonValue val : arr) {
|
foreach (QJsonValue val, arr) {
|
||||||
weeks[val.toObject()["weekNumber"].toInt()] = Week::from_json(val.toObject());
|
Year *y = Year::from_json(val.toObject());
|
||||||
|
years[y->getNumber()] = y;
|
||||||
}
|
}
|
||||||
saveLoaded = true;
|
saveLoaded = true;
|
||||||
} else if (obj[KEY_SAVE_FILE_VERSION].toInt() < SAVE_FILE_VERSION) {
|
|
||||||
QString updater = QCoreApplication::applicationDirPath() + "/save-updater.exe";
|
|
||||||
if (QFile::exists(updater)) {
|
|
||||||
QProcess* process = new QProcess(this);
|
|
||||||
process->execute(updater, QStringList({"update"}));
|
|
||||||
delete process;
|
|
||||||
open_save();
|
|
||||||
} else {
|
|
||||||
panic_dialog("Cette application n'a pas pu démarrer car save-updater.exe est introuvable.\n"
|
|
||||||
"La réinstallation de cette application peut corriger ce problème");
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
panic_dialog("Votre fichier de sauvegarde a été enregistré depuis une version plus récente de Chronos\n"
|
|
||||||
"Mettez à jour Chronos pour pouvoir utiliser ce fichier");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainWindow::panic_dialog(QString text) {
|
void MainWindow::panic_dialog(QString text) {
|
||||||
@@ -162,12 +136,12 @@ void MainWindow::panic_dialog(QString text) {
|
|||||||
|
|
||||||
void MainWindow::save_to_file() {
|
void MainWindow::save_to_file() {
|
||||||
QJsonArray arr;
|
QJsonArray arr;
|
||||||
for (Week w : weeks) {
|
foreach (Year *y, years) {
|
||||||
arr.append(w.to_json());
|
arr.append(y->to_json());
|
||||||
}
|
}
|
||||||
QJsonObject obj {
|
QJsonObject obj {
|
||||||
{KEY_TEMPLATE, week_template.to_json()},
|
{KEY_TEMPLATE, week_template->to_json()},
|
||||||
{KEY_WEEKS, arr},
|
{KEY_YEARS, arr},
|
||||||
{KEY_SAVE_FILE_VERSION, SAVE_FILE_VERSION}
|
{KEY_SAVE_FILE_VERSION, SAVE_FILE_VERSION}
|
||||||
};
|
};
|
||||||
QJsonDocument doc(obj);
|
QJsonDocument doc(obj);
|
||||||
@@ -176,26 +150,28 @@ void MainWindow::save_to_file() {
|
|||||||
f->write(doc.toJson());
|
f->write(doc.toJson());
|
||||||
f->close();
|
f->close();
|
||||||
}
|
}
|
||||||
|
delete f;
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainWindow::compute_week_number(const QDateTime &dt) {
|
void MainWindow::compute_week_number(const QDateTime &dt) {
|
||||||
int n = dt.date().weekNumber();
|
int n = dt.date().weekNumber();
|
||||||
|
int y = dt.date().year();
|
||||||
ui->label_semaine->setText(QString("Semaine : %1").arg(QString::number(n)));
|
ui->label_semaine->setText(QString("Semaine : %1").arg(QString::number(n)));
|
||||||
QMapIterator<int, Week> it(weeks);
|
if (years.contains(y)) {
|
||||||
bool working = true;
|
current_year = years[y];
|
||||||
bool found = false;
|
} else {
|
||||||
while (it.hasNext() && working) {
|
Year *nYear = new Year(y);
|
||||||
Week w = it.next().value();
|
years[y] = nYear;
|
||||||
if (w.getWeekNumber() == n) {
|
current_year = nYear;
|
||||||
current_week = w;
|
save_to_file();
|
||||||
working = false;
|
|
||||||
found = true;
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
if (!found) {
|
if (current_year->hasWeek(n)) {
|
||||||
current_week = Week(week_template);
|
current_week = current_year->getWeek(n);
|
||||||
current_week.setWeekNumber(n);
|
} else {
|
||||||
weeks.insert(n, current_week);
|
current_week = new Week(week_template);
|
||||||
|
current_week->setWeekNumber(n);
|
||||||
|
current_year->addWeek(current_week);
|
||||||
save_to_file();
|
save_to_file();
|
||||||
}
|
}
|
||||||
compute_time();
|
compute_time();
|
||||||
@@ -203,95 +179,100 @@ void MainWindow::compute_week_number(const QDateTime &dt) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void MainWindow::compute_time() {
|
void MainWindow::compute_time() {
|
||||||
ui->mon_time_label->setText(Tools::double_to_string_time(current_week.getMon().get_total()));
|
ui->mon_time_label->setText(Tools::double_to_string_time(current_week->getMon()->get_total()));
|
||||||
ui->tue_time_label->setText(Tools::double_to_string_time(current_week.getTue().get_total()));
|
ui->tue_time_label->setText(Tools::double_to_string_time(current_week->getTue()->get_total()));
|
||||||
ui->wed_time_label->setText(Tools::double_to_string_time(current_week.getWed().get_total()));
|
ui->wed_time_label->setText(Tools::double_to_string_time(current_week->getWed()->get_total()));
|
||||||
ui->thu_time_label->setText(Tools::double_to_string_time(current_week.getThu().get_total()));
|
ui->thu_time_label->setText(Tools::double_to_string_time(current_week->getThu()->get_total()));
|
||||||
ui->fri_time_label->setText(Tools::double_to_string_time(current_week.getFri().get_total()));
|
ui->fri_time_label->setText(Tools::double_to_string_time(current_week->getFri()->get_total()));
|
||||||
ui->total_time_label->setText(Tools::double_to_string_time(current_week.total()));
|
ui->total_time_label->setText(Tools::double_to_string_time(current_week->total()));
|
||||||
updateStartLabel();
|
updateLabels();
|
||||||
updateBreakLabel();
|
updateWeekTime();
|
||||||
updateEndLabel();
|
|
||||||
updateValidIcon();
|
|
||||||
|
|
||||||
double late = 0.0;
|
double late = 0.0;
|
||||||
double overtime = 0.0;
|
double overtime = 0.0;
|
||||||
int todayWeekNumber = QDate::currentDate().weekNumber();
|
int todayWeekNumber = QDate::currentDate().weekNumber();
|
||||||
for (Week w : weeks) {
|
QMapIterator i = current_year->iterator();
|
||||||
if (w.getWeekNumber() <= todayWeekNumber) {
|
while (i.hasNext()) {
|
||||||
late += (week_template.total() - w.total());
|
Week *w = i.next().value();
|
||||||
overtime += (w.total() - week_template.total());
|
if (w->getWeekNumber() <= todayWeekNumber) {
|
||||||
|
late += (week_template->total() - w->total(week_template)) - w->getTimeDeltaInHours();
|
||||||
|
overtime += (w->total() - week_template->total(week_template)) + w->getTimeDeltaInHours();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
late -= current_week->getTimeDeltaInHours();
|
||||||
|
overtime += - current_week->getTimeDeltaInHours();
|
||||||
ui->late_time_label->setText(Tools::double_to_string_time((late > 0.0) ? late : 0.0));
|
ui->late_time_label->setText(Tools::double_to_string_time((late > 0.0) ? late : 0.0));
|
||||||
ui->overtime_time_label->setText(Tools::double_to_string_time((overtime > 0.0) ? overtime : 0.0));
|
ui->overtime_time_label->setText(Tools::double_to_string_time((overtime > 0.0) ? overtime : 0.0));
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainWindow::updateValidIcon() {
|
void MainWindow::updateWeekTime()
|
||||||
ui->mondayValidate->setVisible(current_week.getMon().get_validate());
|
{
|
||||||
ui->tuesdayValidate->setVisible(current_week.getTue().get_validate());
|
double t = (current_week->total(week_template) + current_week->getTimeDeltaInHours()) - week_template->total();
|
||||||
ui->wednesdayValidate->setVisible(current_week.getWed().get_validate());
|
if (t > 0) {
|
||||||
ui->thurdayValidate->setVisible(current_week.getThu().get_validate());
|
ui->overtime_time_label_week->setText(Tools::double_to_string_time(t));
|
||||||
ui->fridayValidate->setVisible(current_week.getFri().get_validate());
|
ui->late_time_label_week->setText("0h");
|
||||||
|
} else if(t < 0) {
|
||||||
|
ui->late_time_label_week->setText(Tools::double_to_string_time(-t));
|
||||||
|
ui->overtime_time_label_week->setText("0h");
|
||||||
|
} else {
|
||||||
|
ui->overtime_time_label_week->setText("0h");
|
||||||
|
ui->late_time_label_week->setText("0h");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainWindow::updateStartLabel() {
|
void MainWindow::updateLabels() {
|
||||||
ui->monStartLabel->setText(current_week.getMon().get_start().toString("HH:mm"));
|
updateDayLabels(ui->monStartLabel, ui->monEndLabel, ui->monBreakLabel, ui->mondayValidate, ui->mondayWarning, ui->mondayNotWorking, current_week->getMon());
|
||||||
ui->tueStartLabel->setText(current_week.getTue().get_start().toString("HH:mm"));
|
updateDayLabels(ui->tueStartLabel, ui->tueEndLabel, ui->tueBreakLabel, ui->tuesdayValidate, ui->tuesdayWarning, ui->tuesdayNotWorking, current_week->getTue());
|
||||||
ui->wedStartLabel->setText(current_week.getWed().get_start().toString("HH:mm"));
|
updateDayLabels(ui->wedStartLabel, ui->wedEndLabel, ui->wedBreakLabel, ui->wednesdayValidate, ui->wednesdayWarning, ui->wednesdayNotWorking, current_week->getWed());
|
||||||
ui->thuStartLabel->setText(current_week.getThu().get_start().toString("HH:mm"));
|
updateDayLabels(ui->thuStartLabel, ui->thuEndLabel, ui->thuBreakLabel, ui->thurdayValidate, ui->thurdayWarning, ui->thurdayNotWorking, current_week->getThu());
|
||||||
ui->friStartLabel->setText(current_week.getFri().get_start().toString("HH:mm"));
|
updateDayLabels(ui->friStartLabel, ui->friEndLabel, ui->friBreakLabel, ui->fridayValidate, ui->fridayWarning, ui->fridayNotWorking, current_week->getFri());
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainWindow::updateBreakLabel() {
|
void MainWindow::updateDayLabels(QLabel *start, QLabel *end, QLabel *breaks, QFrame *validate, QFrame *warning, QFrame *not_working, Day *d)
|
||||||
ui->monBreakLabel->setText(QString("%1 min.").arg(current_week.getMon().get_time_break()));
|
{
|
||||||
ui->tueBreakLabel->setText(QString("%1 min.").arg(current_week.getTue().get_time_break()));
|
not_working->setVisible(d->not_working());
|
||||||
ui->wedBreakLabel->setText(QString("%1 min.").arg(current_week.getWed().get_time_break()));
|
if (!d->not_working()) {
|
||||||
ui->thuBreakLabel->setText(QString("%1 min.").arg(current_week.getThu().get_time_break()));
|
start->setText(d->get_start().toString("HH:mm"));
|
||||||
ui->friBreakLabel->setText(QString("%1 min.").arg(current_week.getFri().get_time_break()));
|
end->setText(d->get_end().toString("HH:mm"));
|
||||||
|
breaks->setText(Tools::double_to_string_counter(d->get_time_break()));
|
||||||
|
validate->setVisible(d->get_validate());
|
||||||
|
warning->setVisible(d->has_warning());
|
||||||
|
} else {
|
||||||
|
start->setText("--:--");
|
||||||
|
end->setText("--:--");
|
||||||
|
breaks->setText("0 min.");
|
||||||
|
validate->setVisible(false);
|
||||||
|
warning->setVisible(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainWindow::updateEndLabel() {
|
|
||||||
ui->monEndLabel->setText(current_week.getMon().get_end().toString("HH:mm"));
|
|
||||||
ui->tueEndLabel->setText(current_week.getTue().get_end().toString("HH:mm"));
|
|
||||||
ui->wedEndLabel->setText(current_week.getWed().get_end().toString("HH:mm"));
|
|
||||||
ui->thuEndLabel->setText(current_week.getThu().get_end().toString("HH:mm"));
|
|
||||||
ui->friEndLabel->setText(current_week.getFri().get_end().toString("HH:mm"));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainWindow::edit() {
|
void MainWindow::edit() {
|
||||||
QString name = QObject::sender()->objectName();
|
QString name = QObject::sender()->objectName();
|
||||||
switch (get_identifier(name)) {
|
switch (get_identifier(name)) {
|
||||||
case mon:
|
case mon:
|
||||||
current_week.setMon(modify_value(current_week.getMon()));
|
modify_value(current_week->getMon());
|
||||||
break;
|
break;
|
||||||
case tue:
|
case tue:
|
||||||
current_week.setTue(modify_value(current_week.getTue()));
|
modify_value(current_week->getTue());
|
||||||
break;
|
break;
|
||||||
case wed:
|
case wed:
|
||||||
current_week.setWed(modify_value(current_week.getWed()));
|
modify_value(current_week->getWed());
|
||||||
break;
|
break;
|
||||||
case thu:
|
case thu:
|
||||||
current_week.setThu(modify_value(current_week.getThu()));
|
modify_value(current_week->getThu());
|
||||||
break;
|
break;
|
||||||
case fri:
|
case fri:
|
||||||
current_week.setFri(modify_value(current_week.getFri()));
|
modify_value(current_week->getFri());
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
weeks[current_week.getWeekNumber()] = current_week;
|
|
||||||
save_to_file();
|
save_to_file();
|
||||||
compute_time();
|
compute_time();
|
||||||
}
|
}
|
||||||
|
|
||||||
Day MainWindow::modify_value(Day d) {
|
void MainWindow::modify_value(Day *d) {
|
||||||
bool isNotValidable = (current_week.getWeekNumber() > todayWeekNumber);
|
bool isNotValidable = (current_week->getWeekNumber() > todayWeekNumber);
|
||||||
SetDayDialog sdd(d, isNotValidable, this);
|
SetDayDialog sdd(d, isNotValidable, this);
|
||||||
int result = sdd.exec();
|
sdd.exec();
|
||||||
if (result == QDialog::Accepted) {
|
|
||||||
return sdd.get_result();
|
|
||||||
}
|
|
||||||
return d;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Identifier MainWindow::get_identifier(QString objectName) {
|
Identifier MainWindow::get_identifier(QString objectName) {
|
||||||
@@ -302,7 +283,6 @@ void MainWindow::edit_template() {
|
|||||||
Welcome w(week_template);
|
Welcome w(week_template);
|
||||||
int res = w.exec();
|
int res = w.exec();
|
||||||
if (res == QDialog::Accepted) {
|
if (res == QDialog::Accepted) {
|
||||||
week_template = w.get_result();
|
|
||||||
save_to_file();
|
save_to_file();
|
||||||
compute_time();
|
compute_time();
|
||||||
}
|
}
|
||||||
@@ -312,3 +292,14 @@ void MainWindow::open_about() {
|
|||||||
AboutBox a(this);
|
AboutBox a(this);
|
||||||
a.exec();
|
a.exec();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MainWindow::set_week_options()
|
||||||
|
{
|
||||||
|
WeekOption ow(current_week, this);
|
||||||
|
int result = ow.exec();
|
||||||
|
if (result == QDialog::Accepted) {
|
||||||
|
current_week->setTimeDelta(ow.get_time_delta());
|
||||||
|
save_to_file();
|
||||||
|
compute_time();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -2,9 +2,9 @@
|
|||||||
#define MAINWINDOW_H
|
#define MAINWINDOW_H
|
||||||
|
|
||||||
#define KEY_TEMPLATE "template"
|
#define KEY_TEMPLATE "template"
|
||||||
#define KEY_WEEKS "weeks"
|
#define KEY_YEARS "years"
|
||||||
#define SAVE_FILENAME "data.json"
|
#define SAVE_FILENAME "data.json"
|
||||||
#define SAVE_FILE_VERSION 2
|
#define SAVE_FILE_VERSION 4
|
||||||
#define KEY_SAVE_FILE_VERSION "version"
|
#define KEY_SAVE_FILE_VERSION "version"
|
||||||
|
|
||||||
#include <QMouseEvent>
|
#include <QMouseEvent>
|
||||||
@@ -21,12 +21,12 @@
|
|||||||
#include <QTimer>
|
#include <QTimer>
|
||||||
#include <QProcess>
|
#include <QProcess>
|
||||||
#include <QDir>
|
#include <QDir>
|
||||||
#include <QtWinExtras/QtWin>
|
|
||||||
|
|
||||||
#include "week.h"
|
#include "models/week.h"
|
||||||
|
#include "models/year.h"
|
||||||
#include "welcome.h"
|
#include "welcome.h"
|
||||||
#include "tools.h"
|
|
||||||
#include "aboutbox.h"
|
#include "aboutbox.h"
|
||||||
|
#include "weekoption.h"
|
||||||
|
|
||||||
QT_BEGIN_NAMESPACE
|
QT_BEGIN_NAMESPACE
|
||||||
namespace Ui { class MainWindow; }
|
namespace Ui { class MainWindow; }
|
||||||
@@ -51,40 +51,31 @@ private:
|
|||||||
void panic_dialog(QString text);
|
void panic_dialog(QString text);
|
||||||
|
|
||||||
// UI Update
|
// UI Update
|
||||||
void updateStartLabel();
|
void updateLabels();
|
||||||
void updateBreakLabel();
|
|
||||||
void updateEndLabel();
|
|
||||||
void highlightDayOfWeek();
|
void highlightDayOfWeek();
|
||||||
void updateValidIcon();
|
void updateWeekTime();
|
||||||
|
void updateDayLabels(QLabel *start, QLabel *end, QLabel *breaks, QFrame *validate, QFrame *warning, QFrame *not_working, Day *d);
|
||||||
|
|
||||||
QString get_save_file_path();
|
QString get_save_file_path();
|
||||||
Identifier get_identifier(QString objectName);
|
Identifier get_identifier(QString objectName);
|
||||||
Day modify_value(Day);
|
void modify_value(Day*);
|
||||||
|
|
||||||
Week week_template;
|
Week* week_template;
|
||||||
Week current_week;
|
Week* current_week;
|
||||||
QMap<int, Week> weeks;
|
Year* current_year;
|
||||||
|
QMap<int, Year*> years;
|
||||||
QMap<QString, Identifier> objectId;
|
QMap<QString, Identifier> objectId;
|
||||||
int todayWeekNumber;
|
int todayWeekNumber;
|
||||||
int dayOfWeek;
|
int dayOfWeek;
|
||||||
bool saveLoaded;
|
bool saveLoaded;
|
||||||
|
|
||||||
void mousePressEvent(QMouseEvent *event);
|
private slots:
|
||||||
void mouseMoveEvent(QMouseEvent *event);
|
|
||||||
int m_nMouseClick_X_Coordinate;
|
|
||||||
int m_nMouseClick_Y_Coordinate;
|
|
||||||
int xmax;
|
|
||||||
int xmin;
|
|
||||||
int ymax;
|
|
||||||
int ymin;
|
|
||||||
inline bool isWidgetIsTitleBar();
|
|
||||||
|
|
||||||
public slots:
|
|
||||||
void compute_week_number(const QDateTime &dt);
|
void compute_week_number(const QDateTime &dt);
|
||||||
void compute_time();
|
void compute_time();
|
||||||
void set_date_to_now();
|
void set_date_to_now();
|
||||||
void edit();
|
void edit();
|
||||||
void edit_template();
|
void edit_template();
|
||||||
void open_about();
|
void open_about();
|
||||||
|
void set_week_options();
|
||||||
};
|
};
|
||||||
#endif // MAINWINDOW_H
|
#endif // MAINWINDOW_H
|
||||||
|
|||||||
62
sources/models/breakpoint.cpp
Normal file
62
sources/models/breakpoint.cpp
Normal file
@@ -0,0 +1,62 @@
|
|||||||
|
#include "breakpoint.h"
|
||||||
|
|
||||||
|
BreakPoint::BreakPoint()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
BreakPoint::BreakPoint(BreakPoint *old)
|
||||||
|
{
|
||||||
|
this->start = old->start;
|
||||||
|
this->end = old->end;
|
||||||
|
}
|
||||||
|
|
||||||
|
BreakPoint::BreakPoint(QTime start, QTime end)
|
||||||
|
{
|
||||||
|
this->start = start;
|
||||||
|
this->end = end;
|
||||||
|
}
|
||||||
|
|
||||||
|
QTime BreakPoint::getStart()
|
||||||
|
{
|
||||||
|
return start;
|
||||||
|
}
|
||||||
|
|
||||||
|
QTime BreakPoint::getEnd()
|
||||||
|
{
|
||||||
|
return end;
|
||||||
|
}
|
||||||
|
|
||||||
|
float BreakPoint::getDuration()
|
||||||
|
{
|
||||||
|
return start.secsTo(end) / 60;
|
||||||
|
}
|
||||||
|
|
||||||
|
void BreakPoint::setStart(QTime start)
|
||||||
|
{
|
||||||
|
this->start = start;
|
||||||
|
}
|
||||||
|
|
||||||
|
void BreakPoint::setEnd(QTime end)
|
||||||
|
{
|
||||||
|
this->end = end;
|
||||||
|
}
|
||||||
|
|
||||||
|
QJsonObject BreakPoint::to_json()
|
||||||
|
{
|
||||||
|
QJsonObject obj{
|
||||||
|
{"start", start.toString(Qt::DateFormat::ISODate)},
|
||||||
|
{"end", end.toString(Qt::DateFormat::ISODate)}
|
||||||
|
};
|
||||||
|
return obj;
|
||||||
|
}
|
||||||
|
|
||||||
|
BreakPoint* BreakPoint::from_json(QJsonObject obj)
|
||||||
|
{
|
||||||
|
BreakPoint *result = new BreakPoint();
|
||||||
|
|
||||||
|
result->start = QTime::fromString(obj["start"].toString(), Qt::DateFormat::ISODate);
|
||||||
|
result->end = QTime::fromString(obj["end"].toString(), Qt::DateFormat::ISODate);
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
30
sources/models/breakpoint.h
Normal file
30
sources/models/breakpoint.h
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
#ifndef BREAKPOINT_H
|
||||||
|
#define BREAKPOINT_H
|
||||||
|
|
||||||
|
#include <QTime>
|
||||||
|
#include <QJsonObject>
|
||||||
|
#include <cmath>
|
||||||
|
|
||||||
|
class BreakPoint
|
||||||
|
{
|
||||||
|
private:
|
||||||
|
QTime start;
|
||||||
|
QTime end;
|
||||||
|
|
||||||
|
public:
|
||||||
|
BreakPoint();
|
||||||
|
BreakPoint(BreakPoint*);
|
||||||
|
BreakPoint(QTime, QTime);
|
||||||
|
|
||||||
|
QTime getStart();
|
||||||
|
QTime getEnd();
|
||||||
|
float getDuration();
|
||||||
|
|
||||||
|
void setStart(QTime);
|
||||||
|
void setEnd(QTime);
|
||||||
|
|
||||||
|
QJsonObject to_json();
|
||||||
|
static BreakPoint* from_json(QJsonObject);
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // BREAKPOINT_H
|
||||||
163
sources/models/day.cpp
Normal file
163
sources/models/day.cpp
Normal file
@@ -0,0 +1,163 @@
|
|||||||
|
#include "day.h"
|
||||||
|
|
||||||
|
Day::Day()
|
||||||
|
{
|
||||||
|
start = QTime(9, 0, 0, 0);
|
||||||
|
end = QTime(17, 15, 0, 0);
|
||||||
|
BreakPoint *lunch = new BreakPoint(QTime(12, 0, 0, 0), QTime(12, 45, 0, 0));
|
||||||
|
breaks.append(lunch);
|
||||||
|
validate = false;
|
||||||
|
notWorking = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
Day::Day(Day *old)
|
||||||
|
{
|
||||||
|
start = QTime(9, 0, 0, 0);
|
||||||
|
end = QTime(17, 15, 0, 0);
|
||||||
|
BreakPoint *lunch = new BreakPoint(QTime(12, 0, 0, 0), QTime(12, 45, 0, 0));
|
||||||
|
breaks.append(lunch);
|
||||||
|
validate = false;
|
||||||
|
notWorking = false;
|
||||||
|
update(old);
|
||||||
|
}
|
||||||
|
|
||||||
|
Day::~Day()
|
||||||
|
{
|
||||||
|
foreach (BreakPoint *bp, breaks) {
|
||||||
|
delete bp;
|
||||||
|
}
|
||||||
|
breaks.clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
float Day::get_total() {
|
||||||
|
if (notWorking) {
|
||||||
|
return 0.0;
|
||||||
|
}
|
||||||
|
int sec = start.secsTo(end);
|
||||||
|
int minutes = sec / 60;
|
||||||
|
float breakTime = get_time_break();
|
||||||
|
return (minutes - breakTime) / 60;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Day::set_start(QTime value)
|
||||||
|
{
|
||||||
|
start = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Day::set_end(QTime value)
|
||||||
|
{
|
||||||
|
end = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Day::set_validate(bool value) {
|
||||||
|
validate = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Day::set_not_working(bool value)
|
||||||
|
{
|
||||||
|
this->notWorking = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Day::setBreaks(QVector<BreakPoint*> breaks)
|
||||||
|
{
|
||||||
|
this->breaks = breaks;
|
||||||
|
}
|
||||||
|
|
||||||
|
QTime Day::get_start()
|
||||||
|
{
|
||||||
|
return start;
|
||||||
|
}
|
||||||
|
|
||||||
|
QTime Day::get_end()
|
||||||
|
{
|
||||||
|
return end;
|
||||||
|
}
|
||||||
|
|
||||||
|
QVector<BreakPoint*> Day::getBreaks()
|
||||||
|
{
|
||||||
|
return breaks;
|
||||||
|
}
|
||||||
|
|
||||||
|
QJsonObject Day::to_json()
|
||||||
|
{
|
||||||
|
QJsonArray arr;
|
||||||
|
foreach (BreakPoint *bp, breaks) {
|
||||||
|
arr.append(bp->to_json());
|
||||||
|
}
|
||||||
|
QJsonObject obj{
|
||||||
|
{KEY_START, start.toString(Qt::DateFormat::ISODate)},
|
||||||
|
{KEY_END, end.toString(Qt::DateFormat::ISODate)},
|
||||||
|
{KEY_BREAKS, arr},
|
||||||
|
{KEY_VALIDATE, validate},
|
||||||
|
{KEY_NOT_WORKING, notWorking}
|
||||||
|
};
|
||||||
|
|
||||||
|
return obj;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Day::has_warning()
|
||||||
|
{
|
||||||
|
bool warning = false;
|
||||||
|
foreach (BreakPoint val, breaks) {
|
||||||
|
if (val.getStart() < start) {
|
||||||
|
warning = true;
|
||||||
|
}
|
||||||
|
if (val.getEnd() > end) {
|
||||||
|
warning = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return warning;
|
||||||
|
}
|
||||||
|
|
||||||
|
Day* Day::from_json(QJsonObject obj)
|
||||||
|
{
|
||||||
|
Day *result = new Day();
|
||||||
|
|
||||||
|
result->start = QTime::fromString(obj[KEY_START].toString(), Qt::DateFormat::ISODate);
|
||||||
|
result->end = QTime::fromString(obj[KEY_END].toString(), Qt::DateFormat::ISODate);
|
||||||
|
result->validate = obj[KEY_VALIDATE].toBool(false);
|
||||||
|
result->notWorking = obj[KEY_NOT_WORKING].toBool(false);
|
||||||
|
|
||||||
|
result->breaks.clear();
|
||||||
|
QJsonArray arr = obj[KEY_BREAKS].toArray();
|
||||||
|
foreach (QJsonValue val, arr) {
|
||||||
|
result->breaks.append(BreakPoint::from_json(val.toObject()));
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Day::get_validate() {
|
||||||
|
return validate;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Day::not_working()
|
||||||
|
{
|
||||||
|
return notWorking;
|
||||||
|
}
|
||||||
|
|
||||||
|
float Day::get_time_break()
|
||||||
|
{
|
||||||
|
float result = 0;
|
||||||
|
foreach (BreakPoint* bp, breaks) {
|
||||||
|
result += bp->getDuration();
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Day::update(Day *old)
|
||||||
|
{
|
||||||
|
this->start = old->start;
|
||||||
|
this->end = old->end;
|
||||||
|
this->validate = old->validate;
|
||||||
|
this->notWorking = old->notWorking;
|
||||||
|
|
||||||
|
foreach (BreakPoint *bp, breaks) {
|
||||||
|
delete bp;
|
||||||
|
}
|
||||||
|
breaks.clear();
|
||||||
|
|
||||||
|
foreach (BreakPoint *bp, old->breaks) {
|
||||||
|
this->breaks.append(new BreakPoint(bp));
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -3,39 +3,51 @@
|
|||||||
|
|
||||||
#define KEY_START "start"
|
#define KEY_START "start"
|
||||||
#define KEY_END "end"
|
#define KEY_END "end"
|
||||||
#define KEY_BREAK "break"
|
#define KEY_BREAKS "breaks"
|
||||||
#define KEY_VALIDATE "validate"
|
#define KEY_VALIDATE "validate"
|
||||||
|
#define KEY_NOT_WORKING "not_working"
|
||||||
|
|
||||||
#include <QTime>
|
#include <QTime>
|
||||||
#include <QJsonObject>
|
#include <QJsonObject>
|
||||||
|
#include <QJsonArray>
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
|
|
||||||
|
#include "breakpoint.h"
|
||||||
|
|
||||||
class Day
|
class Day
|
||||||
{
|
{
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QTime start;
|
QTime start;
|
||||||
QTime end;
|
QTime end;
|
||||||
double time_break;
|
QVector<BreakPoint*> breaks;
|
||||||
bool validate;
|
bool validate;
|
||||||
|
bool notWorking;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
Day();
|
Day();
|
||||||
|
Day(Day*);
|
||||||
|
~Day();
|
||||||
|
|
||||||
void set_start(QTime value);
|
void set_start(QTime value);
|
||||||
void set_end(QTime value);
|
void set_end(QTime value);
|
||||||
void set_time_break(double value);
|
|
||||||
void set_validate(bool);
|
void set_validate(bool);
|
||||||
|
void set_not_working(bool);
|
||||||
|
void setBreaks(QVector<BreakPoint*>);
|
||||||
|
|
||||||
QTime get_start();
|
QTime get_start();
|
||||||
QTime get_end();
|
QTime get_end();
|
||||||
double get_time_break();
|
QVector<BreakPoint*> getBreaks();
|
||||||
bool get_validate();
|
bool get_validate();
|
||||||
|
bool not_working();
|
||||||
|
float get_time_break();
|
||||||
|
void update(Day *);
|
||||||
QJsonObject to_json();
|
QJsonObject to_json();
|
||||||
|
bool has_warning();
|
||||||
|
|
||||||
double get_total();
|
float get_total();
|
||||||
|
|
||||||
static Day from_json(QJsonObject);
|
static Day* from_json(QJsonObject);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // DAY_H
|
#endif // DAY_H
|
||||||
96
sources/models/settings.cpp
Normal file
96
sources/models/settings.cpp
Normal file
@@ -0,0 +1,96 @@
|
|||||||
|
#include "settings.h"
|
||||||
|
|
||||||
|
Settings::Settings()
|
||||||
|
{
|
||||||
|
this->cloudEnabled = false;
|
||||||
|
this->cloudEmail = "";
|
||||||
|
this->cloudPassword = "";
|
||||||
|
this->cloudUrl = "";
|
||||||
|
this->cloudAgent = DEFAULT_AGENT_KEY;
|
||||||
|
}
|
||||||
|
|
||||||
|
Settings* Settings::FromJSON(QJsonObject obj)
|
||||||
|
{
|
||||||
|
Settings *s = new Settings();
|
||||||
|
if (obj["cloud"].isObject())
|
||||||
|
{
|
||||||
|
QJsonObject cloud = obj["cloud"].toObject();
|
||||||
|
s->cloudEnabled = cloud["enabled"].toBool(false);
|
||||||
|
s->cloudUrl = cloud["url"].toString("");
|
||||||
|
s->cloudEmail = cloud["email"].toString("");
|
||||||
|
s->cloudPassword = cloud["password"].toString("");
|
||||||
|
s->cloudAgent = cloud["agent"].toString(DEFAULT_AGENT_KEY);
|
||||||
|
}
|
||||||
|
return s;
|
||||||
|
}
|
||||||
|
|
||||||
|
QJsonObject Settings::ToJSON()
|
||||||
|
{
|
||||||
|
QJsonObject s;
|
||||||
|
|
||||||
|
QJsonObject cloud;
|
||||||
|
cloud["enabled"] = this->cloudEnabled;
|
||||||
|
cloud["url"] = this->cloudUrl;
|
||||||
|
cloud["email"] = this->cloudEmail;
|
||||||
|
cloud["password"] = this->cloudPassword;
|
||||||
|
cloud["agent"] = this->cloudAgent;
|
||||||
|
|
||||||
|
s["cloud"] = cloud;
|
||||||
|
|
||||||
|
return s;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Settings::GetCloudEnabled()
|
||||||
|
{
|
||||||
|
return this->cloudEnabled;
|
||||||
|
}
|
||||||
|
|
||||||
|
QString Settings::GetCloudUrl()
|
||||||
|
{
|
||||||
|
return this->cloudUrl;
|
||||||
|
}
|
||||||
|
|
||||||
|
QString Settings::GetCloudEmail()
|
||||||
|
{
|
||||||
|
return this->cloudEmail;
|
||||||
|
}
|
||||||
|
|
||||||
|
QString Settings::GetCloudPassword()
|
||||||
|
{
|
||||||
|
return this->cloudPassword;
|
||||||
|
}
|
||||||
|
|
||||||
|
QString Settings::GetCloudAgent()
|
||||||
|
{
|
||||||
|
return this->cloudAgent;
|
||||||
|
}
|
||||||
|
|
||||||
|
QString Settings::GetCloudAgentDefault()
|
||||||
|
{
|
||||||
|
return DEFAULT_AGENT;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Settings::SetCloudEnabled(bool enabled)
|
||||||
|
{
|
||||||
|
this->cloudEnabled = enabled;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Settings::SetCloudUrl(QString url)
|
||||||
|
{
|
||||||
|
this->cloudUrl = url;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Settings::SetCloudEmail(QString email)
|
||||||
|
{
|
||||||
|
this->cloudEmail = email;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Settings::SetCloudPassword(QString password)
|
||||||
|
{
|
||||||
|
this->cloudPassword = password;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Settings::SetCloudAgent(QString agent)
|
||||||
|
{
|
||||||
|
this->cloudAgent = agent;
|
||||||
|
}
|
||||||
43
sources/models/settings.h
Normal file
43
sources/models/settings.h
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
#ifndef SETTINGS_H
|
||||||
|
#define SETTINGS_H
|
||||||
|
|
||||||
|
#ifdef _WIN32
|
||||||
|
#define DEFAULT_AGENT "cagent.exe"
|
||||||
|
#else
|
||||||
|
#define DEFAULT_AGENT "cagent"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define DEFAULT_AGENT_KEY "<default>"
|
||||||
|
|
||||||
|
#include <QString>
|
||||||
|
#include <QJsonObject>
|
||||||
|
|
||||||
|
class Settings
|
||||||
|
{
|
||||||
|
private:
|
||||||
|
bool cloudEnabled;
|
||||||
|
QString cloudUrl;
|
||||||
|
QString cloudEmail;
|
||||||
|
QString cloudPassword;
|
||||||
|
QString cloudAgent;
|
||||||
|
public:
|
||||||
|
Settings();
|
||||||
|
|
||||||
|
static Settings* FromJSON(QJsonObject obj);
|
||||||
|
QJsonObject ToJSON();
|
||||||
|
|
||||||
|
bool GetCloudEnabled();
|
||||||
|
QString GetCloudUrl();
|
||||||
|
QString GetCloudEmail();
|
||||||
|
QString GetCloudPassword();
|
||||||
|
QString GetCloudAgent();
|
||||||
|
QString GetCloudAgentDefault();
|
||||||
|
|
||||||
|
void SetCloudEnabled(bool enabled);
|
||||||
|
void SetCloudUrl(QString url);
|
||||||
|
void SetCloudEmail(QString email);
|
||||||
|
void SetCloudPassword(QString password);
|
||||||
|
void SetCloudAgent(QString agent);
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // SETTINGS_H
|
||||||
167
sources/models/week.cpp
Normal file
167
sources/models/week.cpp
Normal file
@@ -0,0 +1,167 @@
|
|||||||
|
#include "week.h"
|
||||||
|
|
||||||
|
Week::Week()
|
||||||
|
{
|
||||||
|
mon = new Day();
|
||||||
|
tue = new Day();
|
||||||
|
wed = new Day();
|
||||||
|
thu = new Day();
|
||||||
|
fri = new Day();
|
||||||
|
time_delta = 0;
|
||||||
|
week_number = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
Week::Week(Week *old)
|
||||||
|
{
|
||||||
|
mon = new Day();
|
||||||
|
tue = new Day();
|
||||||
|
wed = new Day();
|
||||||
|
thu = new Day();
|
||||||
|
fri = new Day();
|
||||||
|
time_delta = 0;
|
||||||
|
week_number = 0;
|
||||||
|
update(old);
|
||||||
|
}
|
||||||
|
|
||||||
|
Week::~Week()
|
||||||
|
{
|
||||||
|
delete mon;
|
||||||
|
delete tue;
|
||||||
|
delete wed;
|
||||||
|
delete thu;
|
||||||
|
delete fri;
|
||||||
|
}
|
||||||
|
|
||||||
|
Week* Week::from_json(QJsonObject obj) {
|
||||||
|
Week *w = new Week();
|
||||||
|
w->mon = Day::from_json(obj[MONDAY].toObject());
|
||||||
|
w->tue = Day::from_json(obj[TUESDAY].toObject());
|
||||||
|
w->wed = Day::from_json(obj[WEDNESDAY].toObject());
|
||||||
|
w->thu = Day::from_json(obj[THURDAY].toObject());
|
||||||
|
w->fri = Day::from_json(obj[FRIDAY].toObject());
|
||||||
|
w->time_delta = obj[TIME_DELTA].toInt(0);
|
||||||
|
w->week_number = obj[WEEK_NUMBER].toInt();
|
||||||
|
return w;
|
||||||
|
}
|
||||||
|
|
||||||
|
QJsonObject Week::to_json() {
|
||||||
|
QJsonObject obj {
|
||||||
|
{MONDAY, mon->to_json()},
|
||||||
|
{TUESDAY, tue->to_json()},
|
||||||
|
{WEDNESDAY, wed->to_json()},
|
||||||
|
{THURDAY, thu->to_json()},
|
||||||
|
{FRIDAY, fri->to_json()},
|
||||||
|
{TIME_DELTA, time_delta},
|
||||||
|
{WEEK_NUMBER, week_number}
|
||||||
|
};
|
||||||
|
return obj;
|
||||||
|
}
|
||||||
|
|
||||||
|
double Week::total() {
|
||||||
|
return mon->get_total() + tue->get_total() + wed->get_total() + thu->get_total() + fri->get_total();
|
||||||
|
}
|
||||||
|
|
||||||
|
double Week::total(Week *wtemplate)
|
||||||
|
{
|
||||||
|
double t = 0.0;
|
||||||
|
if (mon->not_working()) {
|
||||||
|
t += wtemplate->mon->get_total();
|
||||||
|
} else {
|
||||||
|
t += mon->get_total();
|
||||||
|
}
|
||||||
|
if (tue->not_working()) {
|
||||||
|
t += wtemplate->tue->get_total();
|
||||||
|
} else {
|
||||||
|
t += tue->get_total();
|
||||||
|
}
|
||||||
|
if (wed->not_working()) {
|
||||||
|
t += wtemplate->wed->get_total();
|
||||||
|
} else {
|
||||||
|
t += wed->get_total();
|
||||||
|
}
|
||||||
|
if (thu->not_working()) {
|
||||||
|
t += wtemplate->thu->get_total();
|
||||||
|
} else {
|
||||||
|
t += thu->get_total();
|
||||||
|
}
|
||||||
|
if (fri->not_working()) {
|
||||||
|
t += wtemplate->fri->get_total();
|
||||||
|
} else {
|
||||||
|
t += fri->get_total();
|
||||||
|
}
|
||||||
|
return t;
|
||||||
|
}
|
||||||
|
|
||||||
|
Day* Week::getMon() {
|
||||||
|
return mon;
|
||||||
|
}
|
||||||
|
|
||||||
|
Day* Week::getTue() {
|
||||||
|
return tue;
|
||||||
|
}
|
||||||
|
|
||||||
|
Day* Week::getWed() {
|
||||||
|
return wed;
|
||||||
|
}
|
||||||
|
|
||||||
|
Day* Week::getThu() {
|
||||||
|
return thu;
|
||||||
|
}
|
||||||
|
|
||||||
|
Day* Week::getFri() {
|
||||||
|
return fri;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Week::update(Week *old)
|
||||||
|
{
|
||||||
|
mon = new Day(old->mon);
|
||||||
|
tue = new Day(old->tue);
|
||||||
|
wed = new Day(old->wed);
|
||||||
|
thu = new Day(old->thu);
|
||||||
|
fri = new Day(old->fri);
|
||||||
|
time_delta = old->time_delta;
|
||||||
|
week_number = old->week_number;
|
||||||
|
}
|
||||||
|
|
||||||
|
int Week::getWeekNumber() {
|
||||||
|
return week_number;
|
||||||
|
}
|
||||||
|
|
||||||
|
int Week::getTimeDelta()
|
||||||
|
{
|
||||||
|
return time_delta;
|
||||||
|
}
|
||||||
|
|
||||||
|
float Week::getTimeDeltaInHours()
|
||||||
|
{
|
||||||
|
return time_delta/60.0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Week::setMon(Day* value) {
|
||||||
|
mon = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Week::setTue(Day* value) {
|
||||||
|
tue = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Week::setWed(Day* value) {
|
||||||
|
wed = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Week::setThu(Day* value) {
|
||||||
|
thu = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Week::setFri(Day* value) {
|
||||||
|
fri = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Week::setWeekNumber(int value) {
|
||||||
|
week_number = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Week::setTimeDelta(int value)
|
||||||
|
{
|
||||||
|
time_delta = value;
|
||||||
|
}
|
||||||
55
sources/models/week.h
Normal file
55
sources/models/week.h
Normal file
@@ -0,0 +1,55 @@
|
|||||||
|
#ifndef WEEK_H
|
||||||
|
#define WEEK_H
|
||||||
|
|
||||||
|
#define MONDAY "monday"
|
||||||
|
#define TUESDAY "tuesday"
|
||||||
|
#define WEDNESDAY "wednesday"
|
||||||
|
#define THURDAY "thurday"
|
||||||
|
#define FRIDAY "friday"
|
||||||
|
#define TIME_DELTA "timeDelta"
|
||||||
|
#define WEEK_NUMBER "weekNumber"
|
||||||
|
|
||||||
|
#include <QJsonObject>
|
||||||
|
#include "day.h"
|
||||||
|
|
||||||
|
class Week
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
Week();
|
||||||
|
Week(Week*);
|
||||||
|
~Week();
|
||||||
|
double total();
|
||||||
|
double total(Week *wtemplate);
|
||||||
|
|
||||||
|
void setMon(Day*);
|
||||||
|
void setTue(Day*);
|
||||||
|
void setWed(Day*);
|
||||||
|
void setThu(Day*);
|
||||||
|
void setFri(Day*);
|
||||||
|
void setWeekNumber(int);
|
||||||
|
void setTimeDelta(int);
|
||||||
|
|
||||||
|
Day* getMon();
|
||||||
|
Day* getTue();
|
||||||
|
Day* getWed();
|
||||||
|
Day* getThu();
|
||||||
|
Day* getFri();
|
||||||
|
void update(Week *);
|
||||||
|
int getWeekNumber();
|
||||||
|
int getTimeDelta();
|
||||||
|
float getTimeDeltaInHours();
|
||||||
|
|
||||||
|
static Week* from_json(QJsonObject);
|
||||||
|
QJsonObject to_json();
|
||||||
|
|
||||||
|
private:
|
||||||
|
Day* mon;
|
||||||
|
Day* tue;
|
||||||
|
Day* wed;
|
||||||
|
Day* thu;
|
||||||
|
Day* fri;
|
||||||
|
int time_delta;
|
||||||
|
int week_number;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // WEEK_H
|
||||||
77
sources/models/year.cpp
Normal file
77
sources/models/year.cpp
Normal file
@@ -0,0 +1,77 @@
|
|||||||
|
#include "year.h"
|
||||||
|
|
||||||
|
Year::Year()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
Year::Year(Year *old)
|
||||||
|
{
|
||||||
|
this->number = old->number;
|
||||||
|
foreach (int weekNumber, old->weeks.keys()) {
|
||||||
|
weeks[weekNumber] = new Week(old->weeks[weekNumber]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Year::~Year()
|
||||||
|
{
|
||||||
|
foreach (Week *w, weeks) {
|
||||||
|
delete w;
|
||||||
|
}
|
||||||
|
weeks.clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
Year::Year(int number)
|
||||||
|
{
|
||||||
|
this->number = number;
|
||||||
|
}
|
||||||
|
|
||||||
|
Year* Year::from_json(QJsonObject obj)
|
||||||
|
{
|
||||||
|
Year *result = new Year();
|
||||||
|
result->number = obj[KEY_NUMBER].toInt();
|
||||||
|
QJsonArray arr = obj[KEY_WEEKS].toArray();
|
||||||
|
foreach (QJsonValue val, arr) {
|
||||||
|
Week* w = Week::from_json(val.toObject());
|
||||||
|
result->weeks[w->getWeekNumber()] = w;
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
QJsonObject Year::to_json()
|
||||||
|
{
|
||||||
|
QJsonObject obj;
|
||||||
|
QJsonArray arr;
|
||||||
|
foreach (Week *w, weeks) {
|
||||||
|
arr.append(w->to_json());
|
||||||
|
}
|
||||||
|
obj[KEY_NUMBER] = number;
|
||||||
|
obj[KEY_WEEKS] = arr;
|
||||||
|
return obj;
|
||||||
|
}
|
||||||
|
|
||||||
|
Week *Year::getWeek(int weekNumber)
|
||||||
|
{
|
||||||
|
return weeks[weekNumber];
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Year::hasWeek(int weekNumber)
|
||||||
|
{
|
||||||
|
return weeks.contains(weekNumber);
|
||||||
|
}
|
||||||
|
|
||||||
|
QMapIterator<int, Week *> Year::iterator()
|
||||||
|
{
|
||||||
|
QMapIterator i(weeks);
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
|
||||||
|
int Year::getNumber()
|
||||||
|
{
|
||||||
|
return number;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Year::addWeek(Week* w)
|
||||||
|
{
|
||||||
|
weeks[w->getWeekNumber()] = w;
|
||||||
|
}
|
||||||
37
sources/models/year.h
Normal file
37
sources/models/year.h
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
#ifndef YEAR_H
|
||||||
|
#define YEAR_H
|
||||||
|
|
||||||
|
#define KEY_NUMBER "number"
|
||||||
|
#define KEY_WEEKS "weeks"
|
||||||
|
|
||||||
|
#include <QJsonObject>
|
||||||
|
#include <QJsonArray>
|
||||||
|
#include <QMouseEvent>
|
||||||
|
#include <QMapIterator>
|
||||||
|
|
||||||
|
#include "week.h"
|
||||||
|
|
||||||
|
class Year
|
||||||
|
{
|
||||||
|
private:
|
||||||
|
int number;
|
||||||
|
QMap<int, Week*> weeks;
|
||||||
|
|
||||||
|
public:
|
||||||
|
Year();
|
||||||
|
Year(Year*);
|
||||||
|
~Year();
|
||||||
|
Year(int number);
|
||||||
|
|
||||||
|
static Year* from_json(QJsonObject);
|
||||||
|
QJsonObject to_json();
|
||||||
|
|
||||||
|
Week *getWeek(int);
|
||||||
|
bool hasWeek(int);
|
||||||
|
QMapIterator<int, Week*> iterator();
|
||||||
|
int getNumber();
|
||||||
|
|
||||||
|
void addWeek(Week* w);
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // YEAR_H
|
||||||
@@ -1,70 +1,114 @@
|
|||||||
#include "setdaydialog.h"
|
#include "setdaydialog.h"
|
||||||
#include "ui_setdaydialog.h"
|
#include "ui_setdaydialog.h"
|
||||||
|
|
||||||
SetDayDialog::SetDayDialog(Day d, bool isNotValidable, QWidget *parent) :
|
SetDayDialog::SetDayDialog(Day *d, bool isNotValidable, QWidget *parent) :
|
||||||
QDialog(parent),
|
QDialog(parent),
|
||||||
ui(new Ui::SetDayDialog)
|
ui(new Ui::SetDayDialog)
|
||||||
{
|
{
|
||||||
ui->setupUi(this);
|
ui->setupUi(this);
|
||||||
ui->window_title->setText(this->windowTitle());
|
copy = new Day(d);
|
||||||
this->setWindowFlags(Qt::Dialog | Qt::FramelessWindowHint);
|
|
||||||
ui->validateButton->setEnabled(!isNotValidable);
|
ui->validateButton->setEnabled(!isNotValidable);
|
||||||
|
ui->validateButton->setVisible(!isNotValidable);
|
||||||
this->d = d;
|
this->d = d;
|
||||||
init();
|
init();
|
||||||
}
|
}
|
||||||
|
|
||||||
SetDayDialog::~SetDayDialog()
|
SetDayDialog::~SetDayDialog()
|
||||||
{
|
{
|
||||||
|
delete copy;
|
||||||
delete ui;
|
delete ui;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SetDayDialog::mousePressEvent(QMouseEvent *event) {
|
|
||||||
m_nMouseClick_X_Coordinate = event->x();
|
|
||||||
m_nMouseClick_Y_Coordinate = event->y();
|
|
||||||
}
|
|
||||||
|
|
||||||
void SetDayDialog::mouseMoveEvent(QMouseEvent *event) {
|
|
||||||
if (isWidgetIsTitleBar()) {
|
|
||||||
move(event->globalX() - m_nMouseClick_X_Coordinate ,
|
|
||||||
event->globalY() - m_nMouseClick_Y_Coordinate);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
bool SetDayDialog::isWidgetIsTitleBar() {
|
|
||||||
return (m_nMouseClick_X_Coordinate >= xmin &&
|
|
||||||
m_nMouseClick_X_Coordinate < xmax &&
|
|
||||||
m_nMouseClick_Y_Coordinate >= ymin &&
|
|
||||||
m_nMouseClick_Y_Coordinate < ymax);
|
|
||||||
}
|
|
||||||
|
|
||||||
void SetDayDialog::init() {
|
void SetDayDialog::init() {
|
||||||
ui->start_edit->setTime(d.get_start());
|
ui->start_edit->setTime(copy->get_start());
|
||||||
ui->end_edit->setTime(d.get_end());
|
ui->end_edit->setTime(copy->get_end());
|
||||||
ui->break_edit->setValue(d.get_time_break());
|
ui->notWorkingCheckbox->setCheckState((copy->not_working()) ? Qt::CheckState::Checked : Qt::CheckState::Unchecked);
|
||||||
xmax = ui->titleBar->x() + ui->titleBar->width();
|
lockControls(copy->not_working());
|
||||||
xmin = ui->titleBar->x();
|
updateBreakList();
|
||||||
ymax = ui->titleBar->x() + ui->titleBar->height();
|
|
||||||
ymin = ui->titleBar->y();
|
|
||||||
connect(ui->start_edit, &QTimeEdit::timeChanged, this, &SetDayDialog::compute_time);
|
connect(ui->start_edit, &QTimeEdit::timeChanged, this, &SetDayDialog::compute_time);
|
||||||
connect(ui->end_edit, &QTimeEdit::timeChanged, this, &SetDayDialog::compute_time);
|
connect(ui->end_edit, &QTimeEdit::timeChanged, this, &SetDayDialog::compute_time);
|
||||||
connect(ui->validateButton, &QPushButton::clicked, this, &SetDayDialog::validate);
|
connect(ui->validateButton, &QPushButton::clicked, this, &SetDayDialog::validate_and_accept);
|
||||||
connect(ui->break_edit, static_cast<void (QDoubleSpinBox::*)(double)>(&QDoubleSpinBox::valueChanged), this, &SetDayDialog::compute_time);
|
connect(ui->pushButton, &QPushButton::clicked, this, &SetDayDialog::accept);
|
||||||
ui->total_label->setText(Tools::double_to_string_time(d.get_total()));
|
connect(ui->addBreakButton, &QPushButton::clicked, this, &SetDayDialog::add_break_point);
|
||||||
|
connect(ui->removeBreakButton, &QPushButton::clicked, this, &SetDayDialog::remove_break_point);
|
||||||
|
connect(ui->breakList, &QListWidget::currentRowChanged, this, &SetDayDialog::break_selected);
|
||||||
|
connect(ui->notWorkingCheckbox, &QCheckBox::stateChanged, this, &SetDayDialog::change_not_working);
|
||||||
|
ui->total_label->setText(Tools::double_to_string_time(d->get_total()));
|
||||||
|
}
|
||||||
|
|
||||||
|
void SetDayDialog::updateBreakList()
|
||||||
|
{
|
||||||
|
ui->breakList->clear();
|
||||||
|
foreach (BreakPoint *bp, copy->getBreaks()) {
|
||||||
|
ui->breakList->addItem(QString("%1 -> %2").arg(bp->getStart().toString("hh:mm"), bp->getEnd().toString("hh:mm")));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void SetDayDialog::lockControls(bool lock)
|
||||||
|
{
|
||||||
|
ui->addBreakButton->setDisabled(lock);
|
||||||
|
ui->start_edit->setDisabled(lock);
|
||||||
|
ui->end_edit->setDisabled(lock);
|
||||||
|
ui->breakList->setDisabled(lock);
|
||||||
|
if (ui->breakList->currentRow() != -1) {
|
||||||
|
ui->removeBreakButton->setDisabled(lock);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void SetDayDialog::compute_time() {
|
void SetDayDialog::compute_time() {
|
||||||
d.set_start(ui->start_edit->time());
|
copy->set_validate(false);
|
||||||
d.set_end(ui->end_edit->time());
|
copy->set_start(ui->start_edit->time());
|
||||||
d.set_time_break(ui->break_edit->value());
|
copy->set_end(ui->end_edit->time());
|
||||||
ui->total_label->setText(Tools::double_to_string_time(d.get_total()));
|
ui->total_label->setText(Tools::double_to_string_time(copy->get_total()));
|
||||||
}
|
}
|
||||||
|
|
||||||
Day SetDayDialog::get_result() {
|
void SetDayDialog::accept()
|
||||||
return d;
|
{
|
||||||
|
d->update(copy);
|
||||||
|
QDialog::accept();
|
||||||
}
|
}
|
||||||
|
|
||||||
void SetDayDialog::validate() {
|
void SetDayDialog::validate_and_accept() {
|
||||||
d.set_validate(true);
|
copy->set_validate(!copy->not_working());
|
||||||
accept();
|
this->accept();
|
||||||
|
}
|
||||||
|
|
||||||
|
void SetDayDialog::add_break_point()
|
||||||
|
{
|
||||||
|
BreakDialog bd(this);
|
||||||
|
int result = bd.exec();
|
||||||
|
if (result == QDialog::Accepted) {
|
||||||
|
BreakPoint bp = bd.get_result();
|
||||||
|
auto breaks = copy->getBreaks();
|
||||||
|
breaks.append(new BreakPoint(bp));
|
||||||
|
copy->setBreaks(breaks);
|
||||||
|
updateBreakList();
|
||||||
|
compute_time();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void SetDayDialog::remove_break_point()
|
||||||
|
{
|
||||||
|
int i = ui->breakList->currentRow();
|
||||||
|
if (i > -1) {
|
||||||
|
auto breaks = copy->getBreaks();
|
||||||
|
BreakPoint *bp = breaks.at(i);
|
||||||
|
breaks.removeAt(i);
|
||||||
|
delete bp;
|
||||||
|
copy->setBreaks(breaks);
|
||||||
|
updateBreakList();
|
||||||
|
compute_time();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void SetDayDialog::break_selected(int i)
|
||||||
|
{
|
||||||
|
ui->removeBreakButton->setEnabled(i > -1);
|
||||||
|
}
|
||||||
|
|
||||||
|
void SetDayDialog::change_not_working(int state)
|
||||||
|
{
|
||||||
|
copy->set_not_working(state != 0);
|
||||||
|
lockControls(copy->not_working());
|
||||||
|
compute_time();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,8 +4,10 @@
|
|||||||
#include <QDialog>
|
#include <QDialog>
|
||||||
#include <QMouseEvent>
|
#include <QMouseEvent>
|
||||||
|
|
||||||
#include "day.h"
|
#include "models/day.h"
|
||||||
#include "tools.h"
|
#include "tools.h"
|
||||||
|
#include "breakdialog.h"
|
||||||
|
#include "models/breakpoint.h"
|
||||||
|
|
||||||
namespace Ui {
|
namespace Ui {
|
||||||
class SetDayDialog;
|
class SetDayDialog;
|
||||||
@@ -16,31 +18,27 @@ class SetDayDialog : public QDialog
|
|||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
explicit SetDayDialog(Day d, bool isNotValidable, QWidget *parent = nullptr);
|
explicit SetDayDialog(Day *d, bool isNotValidable, QWidget *parent = nullptr);
|
||||||
~SetDayDialog();
|
~SetDayDialog();
|
||||||
|
|
||||||
Day get_result();
|
private slots:
|
||||||
|
|
||||||
public slots:
|
|
||||||
void compute_time();
|
void compute_time();
|
||||||
void validate();
|
void validate_and_accept();
|
||||||
|
void accept();
|
||||||
|
void add_break_point();
|
||||||
|
void remove_break_point();
|
||||||
|
void break_selected(int);
|
||||||
|
void change_not_working(int);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Ui::SetDayDialog *ui;
|
Ui::SetDayDialog *ui;
|
||||||
|
|
||||||
Day d;
|
Day *copy;
|
||||||
|
Day *d;
|
||||||
|
|
||||||
void init();
|
void init();
|
||||||
|
void updateBreakList();
|
||||||
void mousePressEvent(QMouseEvent *event);
|
void lockControls(bool);
|
||||||
void mouseMoveEvent(QMouseEvent *event);
|
|
||||||
int m_nMouseClick_X_Coordinate;
|
|
||||||
int m_nMouseClick_Y_Coordinate;
|
|
||||||
int xmax;
|
|
||||||
int xmin;
|
|
||||||
int ymax;
|
|
||||||
int ymin;
|
|
||||||
inline bool isWidgetIsTitleBar();
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // SETDAYDIALOG_H
|
#endif // SETDAYDIALOG_H
|
||||||
|
|||||||
@@ -1,14 +1,42 @@
|
|||||||
#include "tools.h"
|
#include "tools.h"
|
||||||
|
|
||||||
QString Tools::double_to_string_time(double value) {
|
QString Tools::double_to_string_time(double value) {
|
||||||
|
value = abs(value);
|
||||||
const int h = floor(value);
|
const int h = floor(value);
|
||||||
value -= h;
|
int m = round((value - h) * 60);
|
||||||
value = value * 60;
|
if (m == 0) {
|
||||||
if (value == 0.0) {
|
return QString("%1h").arg(QString::number(h, 10));
|
||||||
return QString("%1h").arg(QString::number(h));
|
} else if (m < 10) {
|
||||||
} else if (value < 10.0) {
|
return QString("%1h0%2").arg(QString::number(h, 10), QString::number(m, 10));
|
||||||
return QString("%1h0%2").arg(QString::number(h), QString::number(round(value)));
|
}
|
||||||
|
return QString("%1h%2").arg(QString::number(h, 10), QString::number(m, 10));
|
||||||
}
|
}
|
||||||
|
|
||||||
return QString("%1h%2").arg(QString::number(h), QString::number(round(value)));
|
QString Tools::double_to_string_counter(double value) {
|
||||||
|
value = abs(value);
|
||||||
|
const int h = floor(value / 60);
|
||||||
|
int m = round(value - (60 * h));
|
||||||
|
if (h == 0) {
|
||||||
|
return QString("%1 minutes").arg(QString::number(m, 10));
|
||||||
|
}
|
||||||
|
if (m == 0) {
|
||||||
|
return QString("%1 heures").arg(QString::number(h, 10));
|
||||||
|
} else if (m < 10) {
|
||||||
|
return QString("%1h0%2").arg(QString::number(h, 10), QString::number(m, 10));
|
||||||
|
}
|
||||||
|
return QString("%1h%2").arg(QString::number(h, 10), QString::number(m, 10));
|
||||||
|
}
|
||||||
|
|
||||||
|
QString Tools::int_to_string_time(int value)
|
||||||
|
{
|
||||||
|
value = abs(value);
|
||||||
|
const int h = floor(value / 60);
|
||||||
|
int m = round(value - (60 * h));
|
||||||
|
QString minutes = "";
|
||||||
|
if (m >= 10) {
|
||||||
|
minutes = QString::number(m, 10);
|
||||||
|
} else {
|
||||||
|
minutes = QString("0%1").arg(QString::number(m, 10));
|
||||||
|
}
|
||||||
|
return QString("%1h%2").arg(QString::number(h, 10), minutes);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,6 +8,8 @@ class Tools
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
static QString double_to_string_time(double value);
|
static QString double_to_string_time(double value);
|
||||||
|
static QString double_to_string_counter(double value);
|
||||||
|
static QString int_to_string_time(int value);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // TOOLS_H
|
#endif // TOOLS_H
|
||||||
|
|||||||
@@ -1,86 +0,0 @@
|
|||||||
#include "week.h"
|
|
||||||
|
|
||||||
Week::Week()
|
|
||||||
{
|
|
||||||
mon = Day();
|
|
||||||
tue = Day();
|
|
||||||
wed = Day();
|
|
||||||
thu = Day();
|
|
||||||
fri = Day();
|
|
||||||
week_number = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
Week Week::from_json(QJsonObject obj) {
|
|
||||||
Week w;
|
|
||||||
w.mon = Day::from_json(obj[MONDAY].toObject());
|
|
||||||
w.tue = Day::from_json(obj[TUESDAY].toObject());
|
|
||||||
w.wed = Day::from_json(obj[WEDNESDAY].toObject());
|
|
||||||
w.thu = Day::from_json(obj[THURDAY].toObject());
|
|
||||||
w.fri = Day::from_json(obj[FRIDAY].toObject());
|
|
||||||
w.week_number = obj[WEEK_NUMBER].toInt();
|
|
||||||
return w;
|
|
||||||
}
|
|
||||||
|
|
||||||
QJsonObject Week::to_json() {
|
|
||||||
QJsonObject obj {
|
|
||||||
{MONDAY, mon.to_json()},
|
|
||||||
{TUESDAY, tue.to_json()},
|
|
||||||
{WEDNESDAY, wed.to_json()},
|
|
||||||
{THURDAY, thu.to_json()},
|
|
||||||
{FRIDAY, fri.to_json()},
|
|
||||||
{WEEK_NUMBER, week_number}
|
|
||||||
};
|
|
||||||
return obj;
|
|
||||||
}
|
|
||||||
|
|
||||||
double Week::total() {
|
|
||||||
return mon.get_total() + tue.get_total() + wed.get_total() + thu.get_total() + fri.get_total();
|
|
||||||
}
|
|
||||||
|
|
||||||
Day Week::getMon() {
|
|
||||||
return mon;
|
|
||||||
}
|
|
||||||
|
|
||||||
Day Week::getTue() {
|
|
||||||
return tue;
|
|
||||||
}
|
|
||||||
|
|
||||||
Day Week::getWed() {
|
|
||||||
return wed;
|
|
||||||
}
|
|
||||||
|
|
||||||
Day Week::getThu() {
|
|
||||||
return thu;
|
|
||||||
}
|
|
||||||
|
|
||||||
Day Week::getFri() {
|
|
||||||
return fri;
|
|
||||||
}
|
|
||||||
|
|
||||||
int Week::getWeekNumber() {
|
|
||||||
return week_number;
|
|
||||||
}
|
|
||||||
|
|
||||||
void Week::setMon(Day value) {
|
|
||||||
mon = value;
|
|
||||||
}
|
|
||||||
|
|
||||||
void Week::setTue(Day value) {
|
|
||||||
tue = value;
|
|
||||||
}
|
|
||||||
|
|
||||||
void Week::setWed(Day value) {
|
|
||||||
wed = value;
|
|
||||||
}
|
|
||||||
|
|
||||||
void Week::setThu(Day value) {
|
|
||||||
thu = value;
|
|
||||||
}
|
|
||||||
|
|
||||||
void Week::setFri(Day value) {
|
|
||||||
fri = value;
|
|
||||||
}
|
|
||||||
|
|
||||||
void Week::setWeekNumber(int value) {
|
|
||||||
week_number = value;
|
|
||||||
}
|
|
||||||
@@ -1,46 +0,0 @@
|
|||||||
#ifndef WEEK_H
|
|
||||||
#define WEEK_H
|
|
||||||
|
|
||||||
#define MONDAY "monday"
|
|
||||||
#define TUESDAY "tuesday"
|
|
||||||
#define WEDNESDAY "wednesday"
|
|
||||||
#define THURDAY "thurday"
|
|
||||||
#define FRIDAY "friday"
|
|
||||||
#define WEEK_NUMBER "weekNumber"
|
|
||||||
|
|
||||||
#include <QJsonObject>
|
|
||||||
#include "day.h"
|
|
||||||
|
|
||||||
class Week
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
Week();
|
|
||||||
double total();
|
|
||||||
|
|
||||||
void setMon(Day);
|
|
||||||
void setTue(Day);
|
|
||||||
void setWed(Day);
|
|
||||||
void setThu(Day);
|
|
||||||
void setFri(Day);
|
|
||||||
void setWeekNumber(int);
|
|
||||||
|
|
||||||
Day getMon();
|
|
||||||
Day getTue();
|
|
||||||
Day getWed();
|
|
||||||
Day getThu();
|
|
||||||
Day getFri();
|
|
||||||
int getWeekNumber();
|
|
||||||
|
|
||||||
static Week from_json(QJsonObject);
|
|
||||||
QJsonObject to_json();
|
|
||||||
|
|
||||||
private:
|
|
||||||
Day mon;
|
|
||||||
Day tue;
|
|
||||||
Day wed;
|
|
||||||
Day thu;
|
|
||||||
Day fri;
|
|
||||||
int week_number;
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif // WEEK_H
|
|
||||||
34
sources/weekoption.cpp
Normal file
34
sources/weekoption.cpp
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
#include "weekoption.h"
|
||||||
|
#include "ui_weekoption.h"
|
||||||
|
|
||||||
|
WeekOption::WeekOption(Week *w, QWidget *parent) :
|
||||||
|
QDialog(parent),
|
||||||
|
ui(new Ui::WeekOption)
|
||||||
|
{
|
||||||
|
ui->setupUi(this);
|
||||||
|
this->time_delta = w->getTimeDelta();
|
||||||
|
ui->time_delta_spinbox->setValue(time_delta);
|
||||||
|
compute();
|
||||||
|
connect(ui->time_delta_spinbox, &QSpinBox::valueChanged, this, &WeekOption::set_time_delta);
|
||||||
|
}
|
||||||
|
|
||||||
|
WeekOption::~WeekOption()
|
||||||
|
{
|
||||||
|
delete ui;
|
||||||
|
}
|
||||||
|
|
||||||
|
int WeekOption::get_time_delta()
|
||||||
|
{
|
||||||
|
return this->time_delta;
|
||||||
|
}
|
||||||
|
|
||||||
|
void WeekOption::set_time_delta(int value)
|
||||||
|
{
|
||||||
|
this->time_delta = value;
|
||||||
|
compute();
|
||||||
|
}
|
||||||
|
|
||||||
|
void WeekOption::compute()
|
||||||
|
{
|
||||||
|
ui->total_label->setText(Tools::int_to_string_time(this->time_delta));
|
||||||
|
}
|
||||||
33
sources/weekoption.h
Normal file
33
sources/weekoption.h
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
#ifndef WEEKOPTION_H
|
||||||
|
#define WEEKOPTION_H
|
||||||
|
|
||||||
|
#include <QDialog>
|
||||||
|
|
||||||
|
#include "models/week.h"
|
||||||
|
#include "tools.h"
|
||||||
|
|
||||||
|
namespace Ui {
|
||||||
|
class WeekOption;
|
||||||
|
}
|
||||||
|
|
||||||
|
class WeekOption : public QDialog
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
explicit WeekOption(Week *w, QWidget *parent = nullptr);
|
||||||
|
~WeekOption();
|
||||||
|
int get_time_delta();
|
||||||
|
|
||||||
|
private slots:
|
||||||
|
void set_time_delta(int);
|
||||||
|
|
||||||
|
private:
|
||||||
|
Ui::WeekOption *ui;
|
||||||
|
|
||||||
|
void compute();
|
||||||
|
|
||||||
|
int time_delta;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // WEEKOPTION_H
|
||||||
@@ -1,13 +1,11 @@
|
|||||||
#include "welcome.h"
|
#include "welcome.h"
|
||||||
#include "ui_welcome.h"
|
#include "ui_welcome.h"
|
||||||
|
|
||||||
Welcome::Welcome(Week wtemplate, QWidget *parent) :
|
Welcome::Welcome(Week *wtemplate, QWidget *parent) :
|
||||||
QDialog(parent),
|
QDialog(parent),
|
||||||
ui(new Ui::Welcome)
|
ui(new Ui::Welcome)
|
||||||
{
|
{
|
||||||
ui->setupUi(this);
|
ui->setupUi(this);
|
||||||
ui->window_title->setText(this->windowTitle());
|
|
||||||
this->setWindowFlags(Qt::Dialog | Qt::FramelessWindowHint);
|
|
||||||
w = wtemplate;
|
w = wtemplate;
|
||||||
init();
|
init();
|
||||||
}
|
}
|
||||||
@@ -17,26 +15,6 @@ Welcome::~Welcome()
|
|||||||
delete ui;
|
delete ui;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Welcome::mousePressEvent(QMouseEvent *event) {
|
|
||||||
m_nMouseClick_X_Coordinate = event->x();
|
|
||||||
m_nMouseClick_Y_Coordinate = event->y();
|
|
||||||
}
|
|
||||||
|
|
||||||
void Welcome::mouseMoveEvent(QMouseEvent *event) {
|
|
||||||
if (isWidgetIsTitleBar()) {
|
|
||||||
move(event->globalX() - m_nMouseClick_X_Coordinate ,
|
|
||||||
event->globalY() - m_nMouseClick_Y_Coordinate);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
bool Welcome::isWidgetIsTitleBar() {
|
|
||||||
return (m_nMouseClick_X_Coordinate >= xmin &&
|
|
||||||
m_nMouseClick_X_Coordinate < xmax &&
|
|
||||||
m_nMouseClick_Y_Coordinate >= ymin &&
|
|
||||||
m_nMouseClick_Y_Coordinate < ymax);
|
|
||||||
}
|
|
||||||
|
|
||||||
void Welcome::init() {
|
void Welcome::init() {
|
||||||
set_value_to_widget();
|
set_value_to_widget();
|
||||||
objectId.insert(ui->mon_button->objectName(), Identifier::mon);
|
objectId.insert(ui->mon_button->objectName(), Identifier::mon);
|
||||||
@@ -44,10 +22,6 @@ void Welcome::init() {
|
|||||||
objectId.insert(ui->wed_button->objectName(), Identifier::wed);
|
objectId.insert(ui->wed_button->objectName(), Identifier::wed);
|
||||||
objectId.insert(ui->thu_button->objectName(), Identifier::thu);
|
objectId.insert(ui->thu_button->objectName(), Identifier::thu);
|
||||||
objectId.insert(ui->fri_button->objectName(), Identifier::fri);
|
objectId.insert(ui->fri_button->objectName(), Identifier::fri);
|
||||||
xmax = ui->titleBar->x() + ui->titleBar->width();
|
|
||||||
xmin = ui->titleBar->x();
|
|
||||||
ymax = ui->titleBar->x() + ui->titleBar->height();
|
|
||||||
ymin = ui->titleBar->y();
|
|
||||||
connect(ui->mon_button, &QPushButton::clicked, this, &Welcome::edit);
|
connect(ui->mon_button, &QPushButton::clicked, this, &Welcome::edit);
|
||||||
connect(ui->tue_button, &QPushButton::clicked, this, &Welcome::edit);
|
connect(ui->tue_button, &QPushButton::clicked, this, &Welcome::edit);
|
||||||
connect(ui->wed_button, &QPushButton::clicked, this, &Welcome::edit);
|
connect(ui->wed_button, &QPushButton::clicked, this, &Welcome::edit);
|
||||||
@@ -60,43 +34,39 @@ Week Welcome::get_result() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void Welcome::set_value_to_widget() {
|
void Welcome::set_value_to_widget() {
|
||||||
ui->mon_time_label->setText(Tools::double_to_string_time(w.getMon().get_total()));
|
ui->mon_time_label->setText(Tools::double_to_string_time(w->getMon()->get_total()));
|
||||||
ui->tue_time_label->setText(Tools::double_to_string_time(w.getTue().get_total()));
|
ui->tue_time_label->setText(Tools::double_to_string_time(w->getTue()->get_total()));
|
||||||
ui->wed_time_label->setText(Tools::double_to_string_time(w.getWed().get_total()));
|
ui->wed_time_label->setText(Tools::double_to_string_time(w->getWed()->get_total()));
|
||||||
ui->thu_time_label->setText(Tools::double_to_string_time(w.getThu().get_total()));
|
ui->thu_time_label->setText(Tools::double_to_string_time(w->getThu()->get_total()));
|
||||||
ui->fri_time_label->setText(Tools::double_to_string_time(w.getFri().get_total()));
|
ui->fri_time_label->setText(Tools::double_to_string_time(w->getFri()->get_total()));
|
||||||
ui->total->setText(Tools::double_to_string_time(w.total()));
|
ui->total->setText(Tools::double_to_string_time(w->total()));
|
||||||
}
|
}
|
||||||
|
|
||||||
void Welcome::edit() {
|
void Welcome::edit() {
|
||||||
QString name = QObject::sender()->objectName();
|
QString name = QObject::sender()->objectName();
|
||||||
switch (get_identifier(name)) {
|
switch (get_identifier(name)) {
|
||||||
case mon:
|
case mon:
|
||||||
w.setMon(modify_value(w.getMon()));
|
modify_value(w->getMon());
|
||||||
break;
|
break;
|
||||||
case tue:
|
case tue:
|
||||||
w.setTue(modify_value(w.getTue()));
|
modify_value(w->getTue());
|
||||||
break;
|
break;
|
||||||
case wed:
|
case wed:
|
||||||
w.setWed(modify_value(w.getWed()));
|
modify_value(w->getWed());
|
||||||
break;
|
break;
|
||||||
case thu:
|
case thu:
|
||||||
w.setThu(modify_value(w.getThu()));
|
modify_value(w->getThu());
|
||||||
break;
|
break;
|
||||||
case fri:
|
case fri:
|
||||||
w.setFri(modify_value(w.getFri()));
|
modify_value(w->getFri());
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
set_value_to_widget();
|
set_value_to_widget();
|
||||||
}
|
}
|
||||||
|
|
||||||
Day Welcome::modify_value(Day d) {
|
void Welcome::modify_value(Day *d) {
|
||||||
SetDayDialog sdd(d, true, this);
|
SetDayDialog sdd(d, true, this);
|
||||||
int result = sdd.exec();
|
sdd.exec();
|
||||||
if (result == QDialog::Accepted) {
|
|
||||||
return sdd.get_result();
|
|
||||||
}
|
|
||||||
return d;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Identifier Welcome::get_identifier(QString objectName) {
|
Identifier Welcome::get_identifier(QString objectName) {
|
||||||
|
|||||||
@@ -6,8 +6,8 @@
|
|||||||
#include <QMouseEvent>
|
#include <QMouseEvent>
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
|
|
||||||
#include "week.h"
|
#include "models/week.h"
|
||||||
#include "day.h"
|
#include "models/day.h"
|
||||||
#include "tools.h"
|
#include "tools.h"
|
||||||
#include "setdaydialog.h"
|
#include "setdaydialog.h"
|
||||||
|
|
||||||
@@ -28,7 +28,7 @@ class Welcome : public QDialog
|
|||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
explicit Welcome(Week tpl, QWidget *parent = nullptr);
|
explicit Welcome(Week *tpl, QWidget *parent = nullptr);
|
||||||
~Welcome();
|
~Welcome();
|
||||||
|
|
||||||
Week get_result();
|
Week get_result();
|
||||||
@@ -36,23 +36,13 @@ public:
|
|||||||
private:
|
private:
|
||||||
Ui::Welcome *ui;
|
Ui::Welcome *ui;
|
||||||
|
|
||||||
Week w;
|
Week *w;
|
||||||
QMap<QString, Identifier> objectId;
|
QMap<QString, Identifier> objectId;
|
||||||
|
|
||||||
void init();
|
void init();
|
||||||
void set_value_to_widget();
|
void set_value_to_widget();
|
||||||
Identifier get_identifier(QString objectName);
|
Identifier get_identifier(QString objectName);
|
||||||
Day modify_value(Day);
|
void modify_value(Day*);
|
||||||
|
|
||||||
void mousePressEvent(QMouseEvent *event);
|
|
||||||
void mouseMoveEvent(QMouseEvent *event);
|
|
||||||
int m_nMouseClick_X_Coordinate;
|
|
||||||
int m_nMouseClick_Y_Coordinate;
|
|
||||||
int xmax;
|
|
||||||
int xmin;
|
|
||||||
int ymax;
|
|
||||||
int ymin;
|
|
||||||
inline bool isWidgetIsTitleBar();
|
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
void edit();
|
void edit();
|
||||||
|
|||||||
BIN
ui/.DS_Store
vendored
Normal file
BIN
ui/.DS_Store
vendored
Normal file
Binary file not shown.
@@ -71,13 +71,8 @@
|
|||||||
<height>21</height>
|
<height>21</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="font">
|
|
||||||
<font>
|
|
||||||
<family>Segoe MDL2 Assets</family>
|
|
||||||
</font>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string></string>
|
<string>X</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="flat">
|
<property name="flat">
|
||||||
<bool>true</bool>
|
<bool>true</bool>
|
||||||
@@ -150,7 +145,7 @@ background-color: qlineargradient(spread:pad, x1:0, y1:1, x2:1, y2:1, stop:0 rgb
|
|||||||
<attribute name="title">
|
<attribute name="title">
|
||||||
<string>Information</string>
|
<string>Information</string>
|
||||||
</attribute>
|
</attribute>
|
||||||
<widget class="QWidget" name="">
|
<widget class="QWidget" name="layoutWidget">
|
||||||
<property name="geometry">
|
<property name="geometry">
|
||||||
<rect>
|
<rect>
|
||||||
<x>10</x>
|
<x>10</x>
|
||||||
@@ -166,57 +161,27 @@ background-color: qlineargradient(spread:pad, x1:0, y1:1, x2:1, y2:1, stop:0 rgb
|
|||||||
<string notr="true">font-size: 12px;</string>
|
<string notr="true">font-size: 12px;</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Author: Alexis Delhaie</string>
|
<string>Author: Aurélie Delhaie</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QLabel" name="label_2">
|
<widget class="QLabel" name="versionLabel">
|
||||||
<property name="styleSheet">
|
<property name="styleSheet">
|
||||||
<string notr="true">font-size: 12px;</string>
|
<string notr="true">font-size: 12px;</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Version: 1.0.0 (Beta 5)</string>
|
<string>Version: ...</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QLabel" name="label_3">
|
<widget class="QLabel" name="systemLabel">
|
||||||
<property name="styleSheet">
|
<property name="styleSheet">
|
||||||
<string notr="true">font-size: 12px;</string>
|
<string notr="true">font-size: 12px;</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string><html><head/><body><p>Software: Qt 5.15.0 MSVC2019 64bit (C++17) (<a href="https://github.com/alexlegarnd/Chronos"><span style=" text-decoration: underline; color:#0000ff;">https://github.com/alexlegarnd/Chronos</span></a>)</p></body></html></string>
|
<string><html><head/><body><p>...</p></body></html></string>
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<widget class="QLabel" name="label_7">
|
|
||||||
<property name="styleSheet">
|
|
||||||
<string notr="true">font-size: 12px;</string>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
|
||||||
<string><html><head/><body><p>Save Updater: Rust (<a href="https://github.com/alexlegarnd/chronos-save-updater"><span style=" text-decoration: underline; color:#0000ff;">https://github.com/alexlegarnd/chronos-save-updater</span></a>)</p></body></html></string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<widget class="QLabel" name="label_5">
|
|
||||||
<property name="styleSheet">
|
|
||||||
<string notr="true">font-size: 12px;</string>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
|
||||||
<string><html><head/><body><p>Installer: Delphi 10.3.3 Community (<a href="https://github.com/alexlegarnd/chronos-installer"><span style=" text-decoration: underline; color:#0000ff;">https://github.com/alexlegarnd/chronos-installer</span></a>)</p></body></html></string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<widget class="QLabel" name="label_6">
|
|
||||||
<property name="styleSheet">
|
|
||||||
<string notr="true">font-size: 12px;</string>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
|
||||||
<string><html><head/><body><p>Installer Bootstrap: Python 3.8.5 [MSC v.1924 (AMD64)] (<a href="https://github.com/alexlegarnd/chronos-installer-bootstrap"><span style=" text-decoration: underline; color:#0000ff;">https://github.com/alexlegarnd/chronos-installer-bootstrap</span></a>)</p></body></html></string>
|
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
@@ -252,16 +217,14 @@ background-color: qlineargradient(spread:pad, x1:0, y1:1, x2:1, y2:1, stop:0 rgb
|
|||||||
<string><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
|
<string><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
|
||||||
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
|
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
|
||||||
p, li { white-space: pre-wrap; }
|
p, li { white-space: pre-wrap; }
|
||||||
</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:12px; font-weight:400; font-style:normal;">
|
</style></head><body style=" font-family:'.AppleSystemUIFont'; font-size:12px; font-weight:400; font-style:normal;">
|
||||||
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">Application icon: Alexis Delhaie (me)</span></p>
|
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:12px;">Qt 6.2.0 : https://www.qt.io/download-open-source</span></p>
|
||||||
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:10pt;"><br /></p>
|
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'MS Shell Dlg 2'; font-size:10pt;"><br /></p>
|
||||||
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">About box banner: Alexis Delhaie (me)</span></p>
|
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt;">Clock image: iconsdb, Iconic (MIT License)</span></p>
|
||||||
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:10pt;"><br /></p>
|
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'MS Shell Dlg 2'; font-size:10pt;"><br /></p>
|
||||||
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">Clock image: iconsdb, Iconic (MIT License)</span></p>
|
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt;">Running image: Icons made by </span><a href="https://www.flaticon.com/authors/freepik"><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt; text-decoration: underline; color:#0000ff;">Freepik</span></a><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt;"> from </span><a href="https://www.flaticon.com/"><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt; text-decoration: underline; color:#0000ff;">www.flaticon.com</span></a></p>
|
||||||
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:10pt;"><br /></p>
|
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:'MS Shell Dlg 2'; font-size:10pt; text-decoration: underline; color:#0000ff;"><br /></p>
|
||||||
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">Running image: Icons made by </span><a href="https://www.flaticon.com/authors/freepik"><span style=" font-size:10pt; text-decoration: underline; color:#0000ff;">Freepik</span></a><span style=" font-size:10pt;"> from </span><a href="https://www.flaticon.com/"><span style=" font-size:10pt; text-decoration: underline; color:#0000ff;">www.flaticon.com</span></a></p>
|
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt;">Calendar image: Icons made by </span><a href="https://www.flaticon.com/authors/freepik"><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt; text-decoration: underline; color:#0000ff;">Freepik</span></a><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt;"> from </span><a href="https://www.flaticon.com/"><span style=" font-family:'MS Shell Dlg 2'; font-size:10pt; text-decoration: underline; color:#0000ff;">www.flaticon.com</span></a></p></body></html></string>
|
||||||
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:10pt; text-decoration: underline; color:#0000ff;"><br /></p>
|
|
||||||
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:10pt;">Calendar image: Icons made by </span><a href="https://www.flaticon.com/authors/freepik"><span style=" font-size:10pt; text-decoration: underline; color:#0000ff;">Freepik</span></a><span style=" font-size:10pt;"> from </span><a href="https://www.flaticon.com/"><span style=" font-size:10pt; text-decoration: underline; color:#0000ff;">www.flaticon.com</span></a></p></body></html></string>
|
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</widget>
|
</widget>
|
||||||
|
|||||||
208
ui/breakdialog.ui
Normal file
208
ui/breakdialog.ui
Normal file
@@ -0,0 +1,208 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<ui version="4.0">
|
||||||
|
<class>BreakDialog</class>
|
||||||
|
<widget class="QDialog" name="BreakDialog">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<width>319</width>
|
||||||
|
<height>187</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>319</width>
|
||||||
|
<height>187</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="maximumSize">
|
||||||
|
<size>
|
||||||
|
<width>319</width>
|
||||||
|
<height>187</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="windowTitle">
|
||||||
|
<string>Dialog</string>
|
||||||
|
</property>
|
||||||
|
<widget class="QPushButton" name="validateButton">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>190</x>
|
||||||
|
<y>128</y>
|
||||||
|
<width>113</width>
|
||||||
|
<height>21</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Ajouter</string>
|
||||||
|
</property>
|
||||||
|
<property name="autoDefault">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
<property name="default">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QTimeEdit" name="startTime">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>180</x>
|
||||||
|
<y>16</y>
|
||||||
|
<width>118</width>
|
||||||
|
<height>31</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="frame">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="alignment">
|
||||||
|
<set>Qt::AlignCenter</set>
|
||||||
|
</property>
|
||||||
|
<property name="buttonSymbols">
|
||||||
|
<enum>QAbstractSpinBox::NoButtons</enum>
|
||||||
|
</property>
|
||||||
|
<property name="correctionMode">
|
||||||
|
<enum>QAbstractSpinBox::CorrectToNearestValue</enum>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QTimeEdit" name="endTime">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>180</x>
|
||||||
|
<y>66</y>
|
||||||
|
<width>118</width>
|
||||||
|
<height>31</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="alignment">
|
||||||
|
<set>Qt::AlignCenter</set>
|
||||||
|
</property>
|
||||||
|
<property name="buttonSymbols">
|
||||||
|
<enum>QAbstractSpinBox::NoButtons</enum>
|
||||||
|
</property>
|
||||||
|
<property name="correctionMode">
|
||||||
|
<enum>QAbstractSpinBox::CorrectToNearestValue</enum>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QLabel" name="label">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>31</x>
|
||||||
|
<y>21</y>
|
||||||
|
<width>141</width>
|
||||||
|
<height>21</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Début de la pause</string>
|
||||||
|
</property>
|
||||||
|
<property name="alignment">
|
||||||
|
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QLabel" name="label_2">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>31</x>
|
||||||
|
<y>70</y>
|
||||||
|
<width>141</width>
|
||||||
|
<height>21</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Fin de la pause</string>
|
||||||
|
</property>
|
||||||
|
<property name="alignment">
|
||||||
|
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QLabel" name="label_3">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>20</x>
|
||||||
|
<y>127</y>
|
||||||
|
<width>60</width>
|
||||||
|
<height>16</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="font">
|
||||||
|
<font>
|
||||||
|
<pointsize>10</pointsize>
|
||||||
|
</font>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Temps</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QLabel" name="totalTime">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>22</x>
|
||||||
|
<y>143</y>
|
||||||
|
<width>151</width>
|
||||||
|
<height>31</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="font">
|
||||||
|
<font>
|
||||||
|
<pointsize>24</pointsize>
|
||||||
|
</font>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>0 minutes</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QPushButton" name="cancelButton">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>190</x>
|
||||||
|
<y>156</y>
|
||||||
|
<width>113</width>
|
||||||
|
<height>21</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Annuler</string>
|
||||||
|
</property>
|
||||||
|
<property name="autoDefault">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</widget>
|
||||||
|
<resources/>
|
||||||
|
<connections>
|
||||||
|
<connection>
|
||||||
|
<sender>validateButton</sender>
|
||||||
|
<signal>clicked()</signal>
|
||||||
|
<receiver>BreakDialog</receiver>
|
||||||
|
<slot>accept()</slot>
|
||||||
|
<hints>
|
||||||
|
<hint type="sourcelabel">
|
||||||
|
<x>246</x>
|
||||||
|
<y>160</y>
|
||||||
|
</hint>
|
||||||
|
<hint type="destinationlabel">
|
||||||
|
<x>159</x>
|
||||||
|
<y>93</y>
|
||||||
|
</hint>
|
||||||
|
</hints>
|
||||||
|
</connection>
|
||||||
|
<connection>
|
||||||
|
<sender>cancelButton</sender>
|
||||||
|
<signal>clicked()</signal>
|
||||||
|
<receiver>BreakDialog</receiver>
|
||||||
|
<slot>reject()</slot>
|
||||||
|
<hints>
|
||||||
|
<hint type="sourcelabel">
|
||||||
|
<x>246</x>
|
||||||
|
<y>166</y>
|
||||||
|
</hint>
|
||||||
|
<hint type="destinationlabel">
|
||||||
|
<x>159</x>
|
||||||
|
<y>93</y>
|
||||||
|
</hint>
|
||||||
|
</hints>
|
||||||
|
</connection>
|
||||||
|
</connections>
|
||||||
|
</ui>
|
||||||
221
ui/configurationdialog.ui
Normal file
221
ui/configurationdialog.ui
Normal file
@@ -0,0 +1,221 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<ui version="4.0">
|
||||||
|
<class>ConfigurationDialog</class>
|
||||||
|
<widget class="QDialog" name="ConfigurationDialog">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<width>400</width>
|
||||||
|
<height>269</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>400</width>
|
||||||
|
<height>269</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="maximumSize">
|
||||||
|
<size>
|
||||||
|
<width>400</width>
|
||||||
|
<height>269</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="windowTitle">
|
||||||
|
<string>Dialog</string>
|
||||||
|
</property>
|
||||||
|
<widget class="QLabel" name="label">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>10</x>
|
||||||
|
<y>20</y>
|
||||||
|
<width>141</width>
|
||||||
|
<height>16</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="font">
|
||||||
|
<font>
|
||||||
|
<weight>75</weight>
|
||||||
|
<bold>true</bold>
|
||||||
|
</font>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Sauvegarde Cloud</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="Line" name="line">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>140</x>
|
||||||
|
<y>24</y>
|
||||||
|
<width>251</width>
|
||||||
|
<height>20</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QLineEdit" name="cloud_url">
|
||||||
|
<property name="enabled">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>164</x>
|
||||||
|
<y>86</y>
|
||||||
|
<width>221</width>
|
||||||
|
<height>21</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QLabel" name="label_2">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>13</x>
|
||||||
|
<y>87</y>
|
||||||
|
<width>101</width>
|
||||||
|
<height>20</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Serveur</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QCheckBox" name="cloud_enable">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>10</x>
|
||||||
|
<y>50</y>
|
||||||
|
<width>371</width>
|
||||||
|
<height>20</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Utiliser la sauvegarde en ligne</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QLineEdit" name="cloud_Email">
|
||||||
|
<property name="enabled">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>164</x>
|
||||||
|
<y>118</y>
|
||||||
|
<width>221</width>
|
||||||
|
<height>21</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QLabel" name="label_3">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>13</x>
|
||||||
|
<y>119</y>
|
||||||
|
<width>101</width>
|
||||||
|
<height>20</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Email</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QLineEdit" name="cloud_password">
|
||||||
|
<property name="enabled">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>164</x>
|
||||||
|
<y>150</y>
|
||||||
|
<width>221</width>
|
||||||
|
<height>21</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="echoMode">
|
||||||
|
<enum>QLineEdit::Password</enum>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QLabel" name="label_4">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>13</x>
|
||||||
|
<y>151</y>
|
||||||
|
<width>101</width>
|
||||||
|
<height>20</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Mot de passe</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QLineEdit" name="cloud_agent">
|
||||||
|
<property name="enabled">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>164</x>
|
||||||
|
<y>183</y>
|
||||||
|
<width>171</width>
|
||||||
|
<height>21</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="inputMask">
|
||||||
|
<string/>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string><default></string>
|
||||||
|
</property>
|
||||||
|
<property name="echoMode">
|
||||||
|
<enum>QLineEdit::Normal</enum>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QLabel" name="label_5">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>13</x>
|
||||||
|
<y>184</y>
|
||||||
|
<width>151</width>
|
||||||
|
<height>20</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Agent de sauvegarde</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QPushButton" name="cloud_agent_btn">
|
||||||
|
<property name="enabled">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>339</x>
|
||||||
|
<y>178</y>
|
||||||
|
<width>51</width>
|
||||||
|
<height>32</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>...</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QPushButton" name="close">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>280</x>
|
||||||
|
<y>230</y>
|
||||||
|
<width>113</width>
|
||||||
|
<height>32</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Fermer</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</widget>
|
||||||
|
<resources/>
|
||||||
|
<connections/>
|
||||||
|
</ui>
|
||||||
2828
ui/mainwindow.ui
2828
ui/mainwindow.ui
File diff suppressed because it is too large
Load Diff
@@ -10,19 +10,19 @@
|
|||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>419</width>
|
<width>419</width>
|
||||||
<height>192</height>
|
<height>447</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="minimumSize">
|
<property name="minimumSize">
|
||||||
<size>
|
<size>
|
||||||
<width>419</width>
|
<width>419</width>
|
||||||
<height>192</height>
|
<height>447</height>
|
||||||
</size>
|
</size>
|
||||||
</property>
|
</property>
|
||||||
<property name="maximumSize">
|
<property name="maximumSize">
|
||||||
<size>
|
<size>
|
||||||
<width>419</width>
|
<width>419</width>
|
||||||
<height>192</height>
|
<height>447</height>
|
||||||
</size>
|
</size>
|
||||||
</property>
|
</property>
|
||||||
<property name="windowTitle">
|
<property name="windowTitle">
|
||||||
@@ -34,9 +34,9 @@
|
|||||||
<widget class="QPushButton" name="pushButton">
|
<widget class="QPushButton" name="pushButton">
|
||||||
<property name="geometry">
|
<property name="geometry">
|
||||||
<rect>
|
<rect>
|
||||||
<x>210</x>
|
<x>10</x>
|
||||||
<y>130</y>
|
<y>410</y>
|
||||||
<width>181</width>
|
<width>191</width>
|
||||||
<height>23</height>
|
<height>23</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
@@ -44,15 +44,21 @@
|
|||||||
<string notr="true">font-size: 12px</string>
|
<string notr="true">font-size: 12px</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Enregistrer la modification</string>
|
<string>Valider</string>
|
||||||
|
</property>
|
||||||
|
<property name="autoDefault">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
<property name="default">
|
||||||
|
<bool>true</bool>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
<widget class="QTimeEdit" name="start_edit">
|
<widget class="QTimeEdit" name="start_edit">
|
||||||
<property name="geometry">
|
<property name="geometry">
|
||||||
<rect>
|
<rect>
|
||||||
<x>36</x>
|
<x>210</x>
|
||||||
<y>69</y>
|
<y>16</y>
|
||||||
<width>91</width>
|
<width>191</width>
|
||||||
<height>31</height>
|
<height>31</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
@@ -62,6 +68,9 @@
|
|||||||
<property name="buttonSymbols">
|
<property name="buttonSymbols">
|
||||||
<enum>QAbstractSpinBox::NoButtons</enum>
|
<enum>QAbstractSpinBox::NoButtons</enum>
|
||||||
</property>
|
</property>
|
||||||
|
<property name="correctionMode">
|
||||||
|
<enum>QAbstractSpinBox::CorrectToNearestValue</enum>
|
||||||
|
</property>
|
||||||
<property name="time">
|
<property name="time">
|
||||||
<time>
|
<time>
|
||||||
<hour>9</hour>
|
<hour>9</hour>
|
||||||
@@ -73,9 +82,9 @@
|
|||||||
<widget class="QTimeEdit" name="end_edit">
|
<widget class="QTimeEdit" name="end_edit">
|
||||||
<property name="geometry">
|
<property name="geometry">
|
||||||
<rect>
|
<rect>
|
||||||
<x>296</x>
|
<x>210</x>
|
||||||
<y>69</y>
|
<y>310</y>
|
||||||
<width>91</width>
|
<width>191</width>
|
||||||
<height>31</height>
|
<height>31</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
@@ -85,6 +94,9 @@
|
|||||||
<property name="buttonSymbols">
|
<property name="buttonSymbols">
|
||||||
<enum>QAbstractSpinBox::NoButtons</enum>
|
<enum>QAbstractSpinBox::NoButtons</enum>
|
||||||
</property>
|
</property>
|
||||||
|
<property name="correctionMode">
|
||||||
|
<enum>QAbstractSpinBox::CorrectToNearestValue</enum>
|
||||||
|
</property>
|
||||||
<property name="time">
|
<property name="time">
|
||||||
<time>
|
<time>
|
||||||
<hour>17</hour>
|
<hour>17</hour>
|
||||||
@@ -93,47 +105,63 @@
|
|||||||
</time>
|
</time>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
<widget class="QDoubleSpinBox" name="break_edit">
|
|
||||||
<property name="geometry">
|
|
||||||
<rect>
|
|
||||||
<x>166</x>
|
|
||||||
<y>69</y>
|
|
||||||
<width>91</width>
|
|
||||||
<height>31</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
<property name="alignment">
|
|
||||||
<set>Qt::AlignCenter</set>
|
|
||||||
</property>
|
|
||||||
<property name="buttonSymbols">
|
|
||||||
<enum>QAbstractSpinBox::NoButtons</enum>
|
|
||||||
</property>
|
|
||||||
<property name="value">
|
|
||||||
<double>0.450000000000000</double>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
<widget class="QLabel" name="label">
|
<widget class="QLabel" name="label">
|
||||||
<property name="geometry">
|
<property name="geometry">
|
||||||
<rect>
|
<rect>
|
||||||
<x>36</x>
|
<x>10</x>
|
||||||
<y>29</y>
|
<y>16</y>
|
||||||
<width>91</width>
|
<width>181</width>
|
||||||
<height>31</height>
|
<height>31</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Arrivé</string>
|
<string>Arrivée au bureau</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="alignment">
|
<property name="alignment">
|
||||||
<set>Qt::AlignCenter</set>
|
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QLabel" name="label_3">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>10</x>
|
||||||
|
<y>310</y>
|
||||||
|
<width>181</width>
|
||||||
|
<height>31</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Fin de journée</string>
|
||||||
|
</property>
|
||||||
|
<property name="alignment">
|
||||||
|
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QPushButton" name="validateButton">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>220</x>
|
||||||
|
<y>410</y>
|
||||||
|
<width>191</width>
|
||||||
|
<height>23</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="styleSheet">
|
||||||
|
<string notr="true">font-size: 12px</string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Approuver</string>
|
||||||
|
</property>
|
||||||
|
<property name="autoDefault">
|
||||||
|
<bool>false</bool>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
<widget class="QLabel" name="label_2">
|
<widget class="QLabel" name="label_2">
|
||||||
<property name="geometry">
|
<property name="geometry">
|
||||||
<rect>
|
<rect>
|
||||||
<x>166</x>
|
<x>10</x>
|
||||||
<y>29</y>
|
<y>150</y>
|
||||||
<width>91</width>
|
<width>181</width>
|
||||||
<height>31</height>
|
<height>31</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
@@ -141,64 +169,98 @@
|
|||||||
<string>Pause</string>
|
<string>Pause</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="alignment">
|
<property name="alignment">
|
||||||
<set>Qt::AlignCenter</set>
|
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
<widget class="QLabel" name="label_3">
|
<widget class="QPushButton" name="addBreakButton">
|
||||||
<property name="geometry">
|
<property name="geometry">
|
||||||
<rect>
|
<rect>
|
||||||
<x>296</x>
|
<x>360</x>
|
||||||
<y>29</y>
|
<y>270</y>
|
||||||
<width>91</width>
|
<width>41</width>
|
||||||
<height>31</height>
|
<height>21</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Départ</string>
|
<string>+</string>
|
||||||
</property>
|
</property>
|
||||||
<property name="alignment">
|
<property name="autoDefault">
|
||||||
<set>Qt::AlignCenter</set>
|
<bool>false</bool>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
<widget class="QWidget" name="layoutWidget">
|
<widget class="QPushButton" name="removeBreakButton">
|
||||||
|
<property name="enabled">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
<property name="geometry">
|
<property name="geometry">
|
||||||
<rect>
|
<rect>
|
||||||
<x>36</x>
|
<x>320</x>
|
||||||
<y>123</y>
|
<y>270</y>
|
||||||
<width>143</width>
|
<width>41</width>
|
||||||
<height>61</height>
|
<height>20</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
<property name="text">
|
||||||
<item>
|
<string>-</string>
|
||||||
<widget class="QFrame" name="frame">
|
|
||||||
<property name="minimumSize">
|
|
||||||
<size>
|
|
||||||
<width>59</width>
|
|
||||||
<height>59</height>
|
|
||||||
</size>
|
|
||||||
</property>
|
</property>
|
||||||
<property name="maximumSize">
|
<property name="autoDefault">
|
||||||
<size>
|
<bool>false</bool>
|
||||||
<width>59</width>
|
</property>
|
||||||
<height>59</height>
|
</widget>
|
||||||
</size>
|
<widget class="Line" name="line">
|
||||||
</property>
|
<property name="geometry">
|
||||||
<property name="styleSheet">
|
<rect>
|
||||||
<string notr="true">border-image: url(:/clock/pictures/clock-8-128.png) 0 0 0 0 stretch stretch;</string>
|
<x>0</x>
|
||||||
</property>
|
<y>380</y>
|
||||||
<property name="frameShape">
|
<width>421</width>
|
||||||
<enum>QFrame::StyledPanel</enum>
|
<height>20</height>
|
||||||
</property>
|
</rect>
|
||||||
<property name="frameShadow">
|
</property>
|
||||||
<enum>QFrame::Raised</enum>
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QListWidget" name="breakList">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>210</x>
|
||||||
|
<y>60</y>
|
||||||
|
<width>191</width>
|
||||||
|
<height>201</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="styleSheet">
|
||||||
|
<string notr="true">background-color: rgba(0, 0, 0, 0);
|
||||||
|
color: rgb(255, 255, 255);</string>
|
||||||
|
</property>
|
||||||
|
<property name="frameShape">
|
||||||
|
<enum>QFrame::Panel</enum>
|
||||||
|
</property>
|
||||||
|
<property name="frameShadow">
|
||||||
|
<enum>QFrame::Plain</enum>
|
||||||
|
</property>
|
||||||
|
<property name="autoScroll">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
<property name="editTriggers">
|
||||||
|
<set>QAbstractItemView::NoEditTriggers</set>
|
||||||
|
</property>
|
||||||
|
<property name="showDropIndicator" stdset="0">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
<property name="defaultDropAction">
|
||||||
|
<enum>Qt::IgnoreAction</enum>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<layout class="QVBoxLayout" name="verticalLayout">
|
|
||||||
<item>
|
|
||||||
<widget class="QLabel" name="label_4">
|
<widget class="QLabel" name="label_4">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>10</x>
|
||||||
|
<y>370</y>
|
||||||
|
<width>91</width>
|
||||||
|
<height>19</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
<property name="styleSheet">
|
<property name="styleSheet">
|
||||||
<string notr="true">font-size: 14px;</string>
|
<string notr="true">font-size: 14px;</string>
|
||||||
</property>
|
</property>
|
||||||
@@ -206,9 +268,15 @@
|
|||||||
<string>Temps total</string>
|
<string>Temps total</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<widget class="QLabel" name="total_label">
|
<widget class="QLabel" name="total_label">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>100</x>
|
||||||
|
<y>360</y>
|
||||||
|
<width>101</width>
|
||||||
|
<height>31</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
<property name="styleSheet">
|
<property name="styleSheet">
|
||||||
<string notr="true">font-size: 28px;
|
<string notr="true">font-size: 28px;
|
||||||
color: white;</string>
|
color: white;</string>
|
||||||
@@ -217,170 +285,20 @@ color: white;</string>
|
|||||||
<string>0h</string>
|
<string>0h</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
<widget class="QCheckBox" name="notWorkingCheckbox">
|
||||||
</layout>
|
|
||||||
</item>
|
|
||||||
</layout>
|
|
||||||
</widget>
|
|
||||||
<widget class="QPushButton" name="validateButton">
|
|
||||||
<property name="geometry">
|
<property name="geometry">
|
||||||
<rect>
|
<rect>
|
||||||
<x>210</x>
|
<x>210</x>
|
||||||
<y>160</y>
|
<y>350</y>
|
||||||
<width>181</width>
|
<width>191</width>
|
||||||
<height>23</height>
|
<height>23</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="styleSheet">
|
|
||||||
<string notr="true">font-size: 12px</string>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Définir l'horaire comme valide</string>
|
<string>Jour non travaillé</string>
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
<widget class="QFrame" name="titleBar">
|
|
||||||
<property name="geometry">
|
|
||||||
<rect>
|
|
||||||
<x>0</x>
|
|
||||||
<y>0</y>
|
|
||||||
<width>419</width>
|
|
||||||
<height>21</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
<property name="styleSheet">
|
|
||||||
<string notr="true">background-color: qlineargradient(spread:pad, x1:0, y1:1, x2:1, y2:1, stop:0 rgba(204, 22, 0, 255), stop:1 rgba(217, 0, 112, 255));</string>
|
|
||||||
</property>
|
|
||||||
<property name="frameShape">
|
|
||||||
<enum>QFrame::StyledPanel</enum>
|
|
||||||
</property>
|
|
||||||
<property name="frameShadow">
|
|
||||||
<enum>QFrame::Raised</enum>
|
|
||||||
</property>
|
|
||||||
<widget class="QLabel" name="window_title">
|
|
||||||
<property name="geometry">
|
|
||||||
<rect>
|
|
||||||
<x>10</x>
|
|
||||||
<y>-1</y>
|
|
||||||
<width>281</width>
|
|
||||||
<height>21</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
<property name="styleSheet">
|
|
||||||
<string notr="true">color: rgb(255, 255, 255);
|
|
||||||
font-size: 11px;
|
|
||||||
background: none;</string>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
|
||||||
<string>TextLabel</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</widget>
|
|
||||||
<widget class="QPushButton" name="closeButton">
|
|
||||||
<property name="geometry">
|
|
||||||
<rect>
|
|
||||||
<x>377</x>
|
|
||||||
<y>0</y>
|
|
||||||
<width>41</width>
|
|
||||||
<height>21</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
<property name="font">
|
|
||||||
<font>
|
|
||||||
<family>Segoe MDL2 Assets</family>
|
|
||||||
</font>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
|
||||||
<string></string>
|
|
||||||
</property>
|
|
||||||
<property name="flat">
|
|
||||||
<bool>true</bool>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
<widget class="Line" name="window_border_left">
|
|
||||||
<property name="geometry">
|
|
||||||
<rect>
|
|
||||||
<x>0</x>
|
|
||||||
<y>0</y>
|
|
||||||
<width>2</width>
|
|
||||||
<height>192</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
<property name="styleSheet">
|
|
||||||
<string notr="true">border: none;
|
|
||||||
background-color: rgba(204, 22, 0, 255);</string>
|
|
||||||
</property>
|
|
||||||
<property name="orientation">
|
|
||||||
<enum>Qt::Vertical</enum>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
<widget class="Line" name="window_border_bottom">
|
|
||||||
<property name="geometry">
|
|
||||||
<rect>
|
|
||||||
<x>0</x>
|
|
||||||
<y>190</y>
|
|
||||||
<width>419</width>
|
|
||||||
<height>2</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
<property name="styleSheet">
|
|
||||||
<string notr="true">border: none;
|
|
||||||
background-color: qlineargradient(spread:pad, x1:0, y1:1, x2:1, y2:1, stop:0 rgba(204, 22, 0, 255), stop:1 rgba(217, 0, 112, 255));</string>
|
|
||||||
</property>
|
|
||||||
<property name="orientation">
|
|
||||||
<enum>Qt::Horizontal</enum>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
<widget class="Line" name="window_border_right">
|
|
||||||
<property name="geometry">
|
|
||||||
<rect>
|
|
||||||
<x>417</x>
|
|
||||||
<y>0</y>
|
|
||||||
<width>2</width>
|
|
||||||
<height>192</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
<property name="styleSheet">
|
|
||||||
<string notr="true">border: none;
|
|
||||||
background-color: rgba(217, 0, 112, 255);</string>
|
|
||||||
</property>
|
|
||||||
<property name="orientation">
|
|
||||||
<enum>Qt::Vertical</enum>
|
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</widget>
|
</widget>
|
||||||
<resources/>
|
<resources/>
|
||||||
<connections>
|
<connections/>
|
||||||
<connection>
|
|
||||||
<sender>pushButton</sender>
|
|
||||||
<signal>clicked()</signal>
|
|
||||||
<receiver>SetDayDialog</receiver>
|
|
||||||
<slot>accept()</slot>
|
|
||||||
<hints>
|
|
||||||
<hint type="sourcelabel">
|
|
||||||
<x>357</x>
|
|
||||||
<y>151</y>
|
|
||||||
</hint>
|
|
||||||
<hint type="destinationlabel">
|
|
||||||
<x>209</x>
|
|
||||||
<y>88</y>
|
|
||||||
</hint>
|
|
||||||
</hints>
|
|
||||||
</connection>
|
|
||||||
<connection>
|
|
||||||
<sender>closeButton</sender>
|
|
||||||
<signal>clicked()</signal>
|
|
||||||
<receiver>SetDayDialog</receiver>
|
|
||||||
<slot>close()</slot>
|
|
||||||
<hints>
|
|
||||||
<hint type="sourcelabel">
|
|
||||||
<x>397</x>
|
|
||||||
<y>10</y>
|
|
||||||
</hint>
|
|
||||||
<hint type="destinationlabel">
|
|
||||||
<x>209</x>
|
|
||||||
<y>95</y>
|
|
||||||
</hint>
|
|
||||||
</hints>
|
|
||||||
</connection>
|
|
||||||
</connections>
|
|
||||||
</ui>
|
</ui>
|
||||||
|
|||||||
161
ui/weekoption.ui
Normal file
161
ui/weekoption.ui
Normal file
@@ -0,0 +1,161 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<ui version="4.0">
|
||||||
|
<class>WeekOption</class>
|
||||||
|
<widget class="QDialog" name="WeekOption">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<width>372</width>
|
||||||
|
<height>159</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>372</width>
|
||||||
|
<height>159</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="maximumSize">
|
||||||
|
<size>
|
||||||
|
<width>372</width>
|
||||||
|
<height>159</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="windowTitle">
|
||||||
|
<string>Options</string>
|
||||||
|
</property>
|
||||||
|
<widget class="QSpinBox" name="time_delta_spinbox">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>260</x>
|
||||||
|
<y>40</y>
|
||||||
|
<width>101</width>
|
||||||
|
<height>27</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="suffix">
|
||||||
|
<string> min</string>
|
||||||
|
</property>
|
||||||
|
<property name="minimum">
|
||||||
|
<number>-1000000</number>
|
||||||
|
</property>
|
||||||
|
<property name="maximum">
|
||||||
|
<number>1000000</number>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QLabel" name="label">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>10</x>
|
||||||
|
<y>10</y>
|
||||||
|
<width>111</width>
|
||||||
|
<height>18</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="font">
|
||||||
|
<font>
|
||||||
|
<weight>75</weight>
|
||||||
|
<bold>true</bold>
|
||||||
|
</font>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Réalignement</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QLabel" name="label_2">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>10</x>
|
||||||
|
<y>44</y>
|
||||||
|
<width>161</width>
|
||||||
|
<height>18</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Delta (en minutes)</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QPushButton" name="validate_button">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>270</x>
|
||||||
|
<y>120</y>
|
||||||
|
<width>88</width>
|
||||||
|
<height>26</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Valider</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="Line" name="line">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>172</x>
|
||||||
|
<y>52</y>
|
||||||
|
<width>81</width>
|
||||||
|
<height>20</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="lineWidth">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="midLineWidth">
|
||||||
|
<number>1</number>
|
||||||
|
</property>
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="Line" name="line_2">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>130</x>
|
||||||
|
<y>16</y>
|
||||||
|
<width>231</width>
|
||||||
|
<height>20</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QLabel" name="total_label">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>10</x>
|
||||||
|
<y>107</y>
|
||||||
|
<width>152</width>
|
||||||
|
<height>41</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="styleSheet">
|
||||||
|
<string notr="true">font-size: 28px;
|
||||||
|
color: white;</string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>0h</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</widget>
|
||||||
|
<resources/>
|
||||||
|
<connections>
|
||||||
|
<connection>
|
||||||
|
<sender>validate_button</sender>
|
||||||
|
<signal>clicked()</signal>
|
||||||
|
<receiver>WeekOption</receiver>
|
||||||
|
<slot>accept()</slot>
|
||||||
|
<hints>
|
||||||
|
<hint type="sourcelabel">
|
||||||
|
<x>313</x>
|
||||||
|
<y>132</y>
|
||||||
|
</hint>
|
||||||
|
<hint type="destinationlabel">
|
||||||
|
<x>185</x>
|
||||||
|
<y>79</y>
|
||||||
|
</hint>
|
||||||
|
</hints>
|
||||||
|
</connection>
|
||||||
|
</connections>
|
||||||
|
</ui>
|
||||||
127
ui/welcome.ui
127
ui/welcome.ui
@@ -45,7 +45,7 @@
|
|||||||
<x>25</x>
|
<x>25</x>
|
||||||
<y>37</y>
|
<y>37</y>
|
||||||
<width>261</width>
|
<width>261</width>
|
||||||
<height>201</height>
|
<height>202</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="font">
|
<property name="font">
|
||||||
@@ -347,115 +347,6 @@ color: white;</string>
|
|||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
<widget class="QFrame" name="titleBar">
|
|
||||||
<property name="geometry">
|
|
||||||
<rect>
|
|
||||||
<x>0</x>
|
|
||||||
<y>0</y>
|
|
||||||
<width>516</width>
|
|
||||||
<height>21</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
<property name="styleSheet">
|
|
||||||
<string notr="true">background-color: qlineargradient(spread:pad, x1:0, y1:1, x2:1, y2:1, stop:0 rgba(204, 22, 0, 255), stop:1 rgba(217, 0, 112, 255));</string>
|
|
||||||
</property>
|
|
||||||
<property name="frameShape">
|
|
||||||
<enum>QFrame::StyledPanel</enum>
|
|
||||||
</property>
|
|
||||||
<property name="frameShadow">
|
|
||||||
<enum>QFrame::Raised</enum>
|
|
||||||
</property>
|
|
||||||
<widget class="QLabel" name="window_title">
|
|
||||||
<property name="geometry">
|
|
||||||
<rect>
|
|
||||||
<x>10</x>
|
|
||||||
<y>-1</y>
|
|
||||||
<width>371</width>
|
|
||||||
<height>21</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
<property name="styleSheet">
|
|
||||||
<string notr="true">color: rgb(255, 255, 255);
|
|
||||||
font-size: 11px;
|
|
||||||
background: none;</string>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
|
||||||
<string>TextLabel</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</widget>
|
|
||||||
<widget class="Line" name="window_border_right">
|
|
||||||
<property name="geometry">
|
|
||||||
<rect>
|
|
||||||
<x>514</x>
|
|
||||||
<y>0</y>
|
|
||||||
<width>2</width>
|
|
||||||
<height>276</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
<property name="styleSheet">
|
|
||||||
<string notr="true">border: none;
|
|
||||||
background-color: rgba(217, 0, 112, 255);</string>
|
|
||||||
</property>
|
|
||||||
<property name="orientation">
|
|
||||||
<enum>Qt::Vertical</enum>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
<widget class="Line" name="window_border_left">
|
|
||||||
<property name="geometry">
|
|
||||||
<rect>
|
|
||||||
<x>0</x>
|
|
||||||
<y>0</y>
|
|
||||||
<width>2</width>
|
|
||||||
<height>276</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
<property name="styleSheet">
|
|
||||||
<string notr="true">border: none;
|
|
||||||
background-color: rgba(204, 22, 0, 255);</string>
|
|
||||||
</property>
|
|
||||||
<property name="orientation">
|
|
||||||
<enum>Qt::Vertical</enum>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
<widget class="Line" name="window_border_bottom">
|
|
||||||
<property name="geometry">
|
|
||||||
<rect>
|
|
||||||
<x>0</x>
|
|
||||||
<y>274</y>
|
|
||||||
<width>516</width>
|
|
||||||
<height>2</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
<property name="styleSheet">
|
|
||||||
<string notr="true">border: none;
|
|
||||||
background-color: qlineargradient(spread:pad, x1:0, y1:1, x2:1, y2:1, stop:0 rgba(204, 22, 0, 255), stop:1 rgba(217, 0, 112, 255));</string>
|
|
||||||
</property>
|
|
||||||
<property name="orientation">
|
|
||||||
<enum>Qt::Horizontal</enum>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
<widget class="QPushButton" name="closeButton">
|
|
||||||
<property name="geometry">
|
|
||||||
<rect>
|
|
||||||
<x>473</x>
|
|
||||||
<y>0</y>
|
|
||||||
<width>41</width>
|
|
||||||
<height>21</height>
|
|
||||||
</rect>
|
|
||||||
</property>
|
|
||||||
<property name="font">
|
|
||||||
<font>
|
|
||||||
<family>Segoe MDL2 Assets</family>
|
|
||||||
</font>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
|
||||||
<string></string>
|
|
||||||
</property>
|
|
||||||
<property name="flat">
|
|
||||||
<bool>true</bool>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</widget>
|
</widget>
|
||||||
<resources/>
|
<resources/>
|
||||||
<connections>
|
<connections>
|
||||||
@@ -475,21 +366,5 @@ background-color: qlineargradient(spread:pad, x1:0, y1:1, x2:1, y2:1, stop:0 rgb
|
|||||||
</hint>
|
</hint>
|
||||||
</hints>
|
</hints>
|
||||||
</connection>
|
</connection>
|
||||||
<connection>
|
|
||||||
<sender>closeButton</sender>
|
|
||||||
<signal>clicked()</signal>
|
|
||||||
<receiver>Welcome</receiver>
|
|
||||||
<slot>close()</slot>
|
|
||||||
<hints>
|
|
||||||
<hint type="sourcelabel">
|
|
||||||
<x>493</x>
|
|
||||||
<y>10</y>
|
|
||||||
</hint>
|
|
||||||
<hint type="destinationlabel">
|
|
||||||
<x>257</x>
|
|
||||||
<y>137</y>
|
|
||||||
</hint>
|
|
||||||
</hints>
|
|
||||||
</connection>
|
|
||||||
</connections>
|
</connections>
|
||||||
</ui>
|
</ui>
|
||||||
|
|||||||
Reference in New Issue
Block a user