- initial commit:
- basic functionality implemented
42
DigitalRockRanking.pro
Normal file
|
@ -0,0 +1,42 @@
|
|||
QT += quick qml quickcontrols2
|
||||
CONFIG += c++11
|
||||
|
||||
android {
|
||||
QT += androidextras
|
||||
ANDROID_PACKAGE_SOURCE_DIR = $$PWD/android-sources
|
||||
}
|
||||
|
||||
# The following define makes your compiler emit warnings if you use
|
||||
# any Qt feature that has been marked deprecated (the exact warnings
|
||||
# depend on your compiler). Refer to the documentation for the
|
||||
# deprecated API to know how to port your code away from it.
|
||||
DEFINES += QT_DEPRECATED_WARNINGS
|
||||
|
||||
# You can also make your code fail to compile if it uses deprecated APIs.
|
||||
# In order to do so, uncomment the following line.
|
||||
# You can also select to disable deprecated APIs only up to a certain version of Qt.
|
||||
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
|
||||
|
||||
SOURCES += \
|
||||
sources/main.cpp \
|
||||
sources/serverconn.cpp
|
||||
|
||||
RESOURCES += resources/qml/qml.qrc \
|
||||
resources/shared/shared.qrc
|
||||
|
||||
# Additional import path used to resolve QML modules in Qt Creator's code model
|
||||
QML_IMPORT_PATH =
|
||||
|
||||
# Additional import path used to resolve QML modules just for Qt Quick Designer
|
||||
QML_DESIGNER_IMPORT_PATH =
|
||||
|
||||
# Default rules for deployment.
|
||||
qnx: target.path = /tmp/$${TARGET}/bin
|
||||
else: unix:!android: target.path = /opt/$${TARGET}/bin
|
||||
!isEmpty(target.path): INSTALLS += target
|
||||
|
||||
HEADERS += \
|
||||
headers/serverconn.h
|
||||
|
||||
DISTFILES += \
|
||||
android-sources/AndroidManifest.xml
|
635
DigitalRockRanking.pro.user
Normal file
|
@ -0,0 +1,635 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE QtCreatorProject>
|
||||
<!-- Written by QtCreator 4.8.2, 2019-04-20T22:54:55. -->
|
||||
<qtcreator>
|
||||
<data>
|
||||
<variable>EnvironmentId</variable>
|
||||
<value type="QByteArray">{73fd4d96-a4f7-426d-9695-506509aacee9}</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="bool" key="ClangCodeModel.UseGlobalConfig">true</value>
|
||||
</valuemap>
|
||||
</data>
|
||||
<data>
|
||||
<variable>ProjectExplorer.Project.Target.0</variable>
|
||||
<valuemap type="QVariantMap">
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Android for armeabi-v7a (Clang Qt 5.11.3 for Android ARMv7)</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Android for armeabi-v7a (Clang Qt 5.11.3 for Android ARMv7)</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">{0c845c7b-f333-4cf9-be32-0bca6d080fce}</value>
|
||||
<value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</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="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/dorian/builds/build-DigitalRockRanking-Android_for_armeabi_v7a_Clang_Qt_5_11_3_for_Android_ARMv7-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.DefaultDisplayName">qmake</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
|
||||
<value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">true</value>
|
||||
<value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
|
||||
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
|
||||
<value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">false</value>
|
||||
<value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">false</value>
|
||||
</valuemap>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
|
||||
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></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>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.2">
|
||||
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Copy application data</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.AndroidPackageInstallationStep</value>
|
||||
</valuemap>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.3">
|
||||
<value type="QString" key="BuildTargetSdk">android-28</value>
|
||||
<value type="QString" key="KeystoreLocation"></value>
|
||||
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build Android APK</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QmakeProjectManager.AndroidBuildApkStep</value>
|
||||
<value type="bool" key="UseMinistro">false</value>
|
||||
<value type="bool" key="VerboseOutput">false</value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">4</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></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.DefaultDisplayName">Make</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></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"></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.DefaultDisplayName">Debug</value>
|
||||
<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="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
|
||||
</valuemap>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
|
||||
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/dorian/builds/build-DigitalRockRanking-Android_for_armeabi_v7a_Clang_Qt_5_11_3_for_Android_ARMv7-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.DefaultDisplayName">qmake</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
|
||||
<value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">false</value>
|
||||
<value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
|
||||
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
|
||||
<value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">false</value>
|
||||
<value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">true</value>
|
||||
</valuemap>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
|
||||
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></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>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.2">
|
||||
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Copy application data</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.AndroidPackageInstallationStep</value>
|
||||
</valuemap>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.3">
|
||||
<value type="QString" key="BuildTargetSdk">android-28</value>
|
||||
<value type="QString" key="KeystoreLocation"></value>
|
||||
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build Android APK</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QmakeProjectManager.AndroidBuildApkStep</value>
|
||||
<value type="bool" key="UseMinistro">false</value>
|
||||
<value type="bool" key="VerboseOutput">false</value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">4</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></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.DefaultDisplayName">Make</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></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"></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.DefaultDisplayName">Release</value>
|
||||
<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="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
|
||||
</valuemap>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.2">
|
||||
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/dorian/builds/build-DigitalRockRanking-Android_for_armeabi_v7a_Clang_Qt_5_11_3_for_Android_ARMv7-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.DefaultDisplayName">qmake</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
|
||||
<value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">true</value>
|
||||
<value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
|
||||
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
|
||||
<value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">true</value>
|
||||
<value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">true</value>
|
||||
</valuemap>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
|
||||
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></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>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.2">
|
||||
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Copy application data</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.AndroidPackageInstallationStep</value>
|
||||
</valuemap>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.3">
|
||||
<value type="QString" key="BuildTargetSdk">android-28</value>
|
||||
<value type="QString" key="KeystoreLocation"></value>
|
||||
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build Android APK</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QmakeProjectManager.AndroidBuildApkStep</value>
|
||||
<value type="bool" key="UseMinistro">false</value>
|
||||
<value type="bool" key="VerboseOutput">false</value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">4</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></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.DefaultDisplayName">Make</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></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"></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.DefaultDisplayName">Profile</value>
|
||||
<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="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</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">
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
|
||||
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy to Android device</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.AndroidDeployQtStep</value>
|
||||
<value type="bool" key="UninstallPreviousPackage">false</value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy to Android device</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.AndroidDeployConfiguration2</value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.Target.PluginSettings">
|
||||
<value type="QString" key="AndroidDeviceSerialNumber">MWS0216A15001488</value>
|
||||
<value type="int" key="AndroidVersion.ApiLevel">24</value>
|
||||
</valuemap>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
|
||||
<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="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="QString" key="Android.AmStartArgsKey"></value>
|
||||
<valuelist type="QVariantList" key="Android.PostStartShellCmdListKey"/>
|
||||
<valuelist type="QVariantList" key="Android.PreStartShellCmdListKey"/>
|
||||
<value type="int" key="PE.EnvironmentAspect.Base">0</value>
|
||||
<valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">DigitalRockRanking</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">DigitalRockRanking</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.AndroidRunConfiguration:/home/dorian/DigitalRockRanking/DigitalRockRanking.pro</value>
|
||||
<value type="QString" key="RunConfiguration.Arguments"></value>
|
||||
<value type="uint" key="RunConfiguration.QmlDebugServerPort">3768</value>
|
||||
<value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
|
||||
<value type="bool" key="RunConfiguration.UseCppDebuggerAuto">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>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
|
||||
</valuemap>
|
||||
</data>
|
||||
<data>
|
||||
<variable>ProjectExplorer.Project.Target.1</variable>
|
||||
<valuemap type="QVariantMap">
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop Qt 5.11.3 GCC 64bit</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop Qt 5.11.3 GCC 64bit</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">qt.qt5.5113.gcc_64_kit</value>
|
||||
<value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</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="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/dorian/builds/build-DigitalRockRanking-Desktop_Qt_5_11_3_GCC_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.DefaultDisplayName">qmake</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
|
||||
<value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">true</value>
|
||||
<value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
|
||||
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
|
||||
<value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">false</value>
|
||||
<value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">false</value>
|
||||
</valuemap>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
|
||||
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></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"></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.DefaultDisplayName">Make</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></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"></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.DefaultDisplayName">Debug</value>
|
||||
<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="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
|
||||
</valuemap>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
|
||||
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/dorian/builds/build-DigitalRockRanking-Desktop_Qt_5_11_3_GCC_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.DefaultDisplayName">qmake</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
|
||||
<value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">false</value>
|
||||
<value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
|
||||
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
|
||||
<value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">false</value>
|
||||
<value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">true</value>
|
||||
</valuemap>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
|
||||
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></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"></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.DefaultDisplayName">Make</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></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"></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.DefaultDisplayName">Release</value>
|
||||
<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="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
|
||||
</valuemap>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.2">
|
||||
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/dorian/builds/build-DigitalRockRanking-Desktop_Qt_5_11_3_GCC_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.DefaultDisplayName">qmake</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
|
||||
<value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">true</value>
|
||||
<value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
|
||||
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
|
||||
<value type="bool" key="QtProjectManager.QMakeBuildStep.SeparateDebugInfo">true</value>
|
||||
<value type="bool" key="QtProjectManager.QMakeBuildStep.UseQtQuickCompiler">true</value>
|
||||
</valuemap>
|
||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
|
||||
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></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"></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.DefaultDisplayName">Make</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></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"></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.DefaultDisplayName">Profile</value>
|
||||
<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="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</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"></value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy Configuration</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></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="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="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.DefaultDisplayName">DigitalRockRanking</value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:/home/dorian/DigitalRockRanking/DigitalRockRanking.pro</value>
|
||||
<value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.ProFile">DigitalRockRanking.pro</value>
|
||||
<value type="QString" key="RunConfiguration.Arguments"></value>
|
||||
<value type="uint" key="RunConfiguration.QmlDebugServerPort">3768</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">/home/dorian/builds/build-DigitalRockRanking-Desktop_Qt_5_11_3_GCC_64bit-Debug</value>
|
||||
</valuemap>
|
||||
<value type="int" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
|
||||
</valuemap>
|
||||
</data>
|
||||
<data>
|
||||
<variable>ProjectExplorer.Project.TargetCount</variable>
|
||||
<value type="int">2</value>
|
||||
</data>
|
||||
<data>
|
||||
<variable>ProjectExplorer.Project.Updater.FileVersion</variable>
|
||||
<value type="int">20</value>
|
||||
</data>
|
||||
<data>
|
||||
<variable>Version</variable>
|
||||
<value type="int">20</value>
|
||||
</data>
|
||||
</qtcreator>
|
BIN
Questions.odt
Normal file
82
android-sources/AndroidManifest.xml
Normal file
|
@ -0,0 +1,82 @@
|
|||
<?xml version="1.0"?>
|
||||
<manifest package="com.itsblue.drRanking" xmlns:android="http://schemas.android.com/apk/res/android" android:versionName="0.01b" android:versionCode="1" android:installLocation="auto">
|
||||
<application android:hardwareAccelerated="true" android:name="org.qtproject.qt5.android.bindings.QtApplication" android:label="DigitalRockRanking" android:icon="@drawable/icon">
|
||||
<activity android:configChanges="orientation|uiMode|screenLayout|screenSize|smallestScreenSize|layoutDirection|locale|fontScale|keyboard|keyboardHidden|navigation" android:name="org.qtproject.qt5.android.bindings.QtActivity" android:label="DigitalRockRanking" android:screenOrientation="unspecified" android:launchMode="singleTop">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN"/>
|
||||
<category android:name="android.intent.category.LAUNCHER"/>
|
||||
</intent-filter>
|
||||
|
||||
<!-- Application arguments -->
|
||||
<!-- meta-data android:name="android.app.arguments" android:value="arg1 arg2 arg3"/ -->
|
||||
<!-- Application arguments -->
|
||||
|
||||
<meta-data android:name="android.app.lib_name" android:value="DigitalRockRanking"/>
|
||||
<meta-data android:name="android.app.qt_sources_resource_id" android:resource="@array/qt_sources"/>
|
||||
<meta-data android:name="android.app.repository" android:value="default"/>
|
||||
<meta-data android:name="android.app.qt_libs_resource_id" android:resource="@array/qt_libs"/>
|
||||
<meta-data android:name="android.app.bundled_libs_resource_id" android:resource="@array/bundled_libs"/>
|
||||
<!-- Deploy Qt libs as part of package -->
|
||||
<meta-data android:name="android.app.bundle_local_qt_libs" android:value="1"/>
|
||||
<meta-data android:name="android.app.bundled_in_lib_resource_id" android:resource="@array/bundled_in_lib"/>
|
||||
<meta-data android:name="android.app.bundled_in_assets_resource_id" android:resource="@array/bundled_in_assets"/>
|
||||
<!-- Run with local libs -->
|
||||
<meta-data android:name="android.app.use_local_qt_libs" android:value="1"/>
|
||||
<meta-data android:name="android.app.libs_prefix" android:value="/data/local/tmp/qt/"/>
|
||||
<meta-data android:name="android.app.load_local_libs" android:value="plugins/platforms/android/libqtforandroid.so:plugins/bearer/libqandroidbearer.so:lib/libQt5QuickParticles.so"/>
|
||||
<meta-data android:name="android.app.load_local_jars" android:value="jar/QtAndroid.jar:jar/QtAndroidBearer.jar:jar/QtAndroidExtras.jar"/>
|
||||
<meta-data android:name="android.app.static_init_classes" android:value=""/>
|
||||
<!-- Used to specify custom system library path to run with local system libs -->
|
||||
<!-- <meta-data android:name="android.app.system_libs_prefix" android:value="/system/lib/"/> -->
|
||||
<!-- Messages maps -->
|
||||
<meta-data android:value="@string/ministro_not_found_msg" android:name="android.app.ministro_not_found_msg"/>
|
||||
<meta-data android:value="@string/ministro_needed_msg" android:name="android.app.ministro_needed_msg"/>
|
||||
<meta-data android:value="@string/fatal_error_msg" android:name="android.app.fatal_error_msg"/>
|
||||
<!-- Messages maps -->
|
||||
|
||||
<!-- Splash screen -->
|
||||
<!-- meta-data android:name="android.app.splash_screen_drawable" android:resource="@drawable/logo"/ -->
|
||||
<!-- meta-data android:name="android.app.splash_screen_sticky" android:value="true"/ -->
|
||||
<!-- Splash screen -->
|
||||
|
||||
<!-- Background running -->
|
||||
<!-- Warning: changing this value to true may cause unexpected crashes if the
|
||||
application still try to draw after
|
||||
"applicationStateChanged(Qt::ApplicationSuspended)"
|
||||
signal is sent! -->
|
||||
<meta-data android:name="android.app.background_running" android:value="false"/>
|
||||
<!-- Background running -->
|
||||
|
||||
<!-- auto screen scale factor -->
|
||||
<meta-data android:name="android.app.auto_screen_scale_factor" android:value="false"/>
|
||||
<!-- auto screen scale factor -->
|
||||
|
||||
<!-- extract android style -->
|
||||
<!-- available android:values :
|
||||
* full - useful QWidget & Quick Controls 1 apps
|
||||
* minimal - useful for Quick Controls 2 apps, it is much faster than "full"
|
||||
* none - useful for apps that don't use any of the above Qt modules
|
||||
-->
|
||||
<meta-data android:name="android.app.extract_android_style" android:value="full"/>
|
||||
<!-- extract android style -->
|
||||
</activity>
|
||||
|
||||
<!-- For adding service(s) please check: https://wiki.qt.io/AndroidServices -->
|
||||
|
||||
</application>
|
||||
|
||||
<uses-sdk android:minSdkVersion="16" android:targetSdkVersion="28"/>
|
||||
<supports-screens android:largeScreens="true" android:normalScreens="true" android:anyDensity="true" android:smallScreens="true"/>
|
||||
|
||||
<!-- The following comment will be replaced upon deployment with default permissions based on the dependencies of the application.
|
||||
Remove the comment if you do not require these default permissions. -->
|
||||
<uses-permission android:name="android.permission.INTERNET"/>
|
||||
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
|
||||
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
|
||||
|
||||
|
||||
<!-- The following comment will be replaced upon deployment with default features based on the dependencies of the application.
|
||||
Remove the comment if you do not require these default features. -->
|
||||
<uses-feature android:glEsVersion="0x00020000" android:required="true"/>
|
||||
|
||||
</manifest>
|
BIN
android-sources/libs/armeabi-v7a/libcrypto.so
Normal file
BIN
android-sources/libs/armeabi-v7a/libssl.so
Normal file
BIN
android-sources/libs/x86/libcrypto.so
Normal file
BIN
android-sources/libs/x86/libssl.so
Normal file
BIN
android-sources/res/drawable-hdpi/icon.png
Normal file
After Width: | Height: | Size: 85 KiB |
BIN
android-sources/res/drawable-ldpi/icon.png
Normal file
After Width: | Height: | Size: 85 KiB |
BIN
android-sources/res/drawable-mdpi/icon.png
Normal file
After Width: | Height: | Size: 85 KiB |
36
headers/serverconn.h
Normal file
|
@ -0,0 +1,36 @@
|
|||
#ifndef SERVERCONN_H
|
||||
#define SERVERCONN_H
|
||||
|
||||
#include <QObject>
|
||||
#include <QtNetwork>
|
||||
#include <QEventLoop>
|
||||
#include <QTimer>
|
||||
#include <QUrl>
|
||||
|
||||
class ServerConn : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
Q_PROPERTY(QVariant foodplan READ getFoodplan NOTIFY foodplanChanged)
|
||||
public:
|
||||
explicit ServerConn(QObject *parent = nullptr);
|
||||
|
||||
private:
|
||||
QVariantMap senddata(QUrl serviceUrl, QUrlQuery pdata = QUrlQuery());
|
||||
|
||||
// variables
|
||||
QVariant foodplan;
|
||||
|
||||
signals:
|
||||
void foodplanChanged();
|
||||
|
||||
public slots:
|
||||
void refreshFoodplan();
|
||||
|
||||
QVariant getCalendar(QString nation);
|
||||
QVariant getRanking(int competitionId, int categoryId, bool registrationData = false, const int routeNumber = -2);
|
||||
|
||||
// functions for qml
|
||||
QVariant getFoodplan();
|
||||
};
|
||||
|
||||
#endif // SERVERCONN_H
|
94
resources/qml/Components/AppToolBar.qml
Normal file
|
@ -0,0 +1,94 @@
|
|||
import QtQuick 2.6
|
||||
import QtQuick.Controls 2.1
|
||||
import QtGraphicalEffects 1.0
|
||||
import QtQuick.Controls.Material 2.3
|
||||
|
||||
Item {
|
||||
id: control
|
||||
height: 50
|
||||
property bool showErrorBar: true
|
||||
|
||||
RectangularGlow {
|
||||
id: toolBarEffect
|
||||
glowRadius: 3
|
||||
spread: 0.2
|
||||
color: "black"
|
||||
opacity: 0.3
|
||||
anchors.fill: toolBar
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
id: toolBar
|
||||
color: "white"
|
||||
anchors.fill: parent
|
||||
|
||||
|
||||
// anchors {
|
||||
// top: parent.top
|
||||
// left: parent.left
|
||||
// right: parent.right
|
||||
// topMargin: -60
|
||||
// }
|
||||
|
||||
Rectangle {
|
||||
id: errorField
|
||||
width: parent.width
|
||||
height: 30
|
||||
enabled: app.is_error & app.state !== "notLoggedIn" & control.showErrorBar
|
||||
anchors.top: parent.bottom
|
||||
|
||||
color: "red"
|
||||
onEnabledChanged: {
|
||||
if(enabled){
|
||||
toolBar.state = 'moveIn'
|
||||
}
|
||||
else {
|
||||
toolBar.state = 'moveOut'
|
||||
}
|
||||
}
|
||||
|
||||
MouseArea { anchors.fill: parent; onClicked: {
|
||||
toolBar.state = 'moveOut'
|
||||
|
||||
console.log("clicked")
|
||||
}
|
||||
}
|
||||
|
||||
Text {
|
||||
anchors {
|
||||
horizontalCenter: parent.horizontalCenter
|
||||
verticalCenter: parent.verticalCenter
|
||||
}
|
||||
|
||||
id: errorText
|
||||
font.family: "Helvetica"
|
||||
color: "White"
|
||||
font.pointSize: 8
|
||||
visible: parent.height !== 0
|
||||
text: ""
|
||||
}
|
||||
}
|
||||
|
||||
states: [
|
||||
State {
|
||||
name: "moveOut"
|
||||
PropertyChanges { target: errorField; height: 0 }
|
||||
},
|
||||
State {
|
||||
name: "moveIn"
|
||||
PropertyChanges { target: errorField; height: 30 }
|
||||
}
|
||||
]
|
||||
|
||||
transitions: [
|
||||
Transition {
|
||||
to: "moveOut"
|
||||
NumberAnimation { properties: "height"; easing.type: Easing.InOutQuad; duration: 200 }
|
||||
},
|
||||
Transition {
|
||||
to: "moveIn"
|
||||
NumberAnimation { properties: "height"; easing.type: Easing.InOutQuad; duration: 200 }
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
50
resources/qml/Components/DataListView.qml
Normal file
|
@ -0,0 +1,50 @@
|
|||
import QtQuick 2.9
|
||||
import QtQuick.Controls 2.4
|
||||
|
||||
ListView {
|
||||
id: control
|
||||
|
||||
property int status: -1
|
||||
|
||||
signal refresh()
|
||||
|
||||
anchors.margins: 10
|
||||
anchors.rightMargin: 14
|
||||
|
||||
ScrollBar.vertical: ScrollBar {
|
||||
parent: control.parent
|
||||
|
||||
anchors {
|
||||
top: control.top
|
||||
left: control.right
|
||||
margins: 10
|
||||
leftMargin: 3
|
||||
bottom: control.bottom
|
||||
}
|
||||
|
||||
width: 8
|
||||
|
||||
active: true
|
||||
}
|
||||
|
||||
onContentYChanged: {
|
||||
if(contentY < -125){
|
||||
control.refresh()
|
||||
}
|
||||
}
|
||||
|
||||
InfoArea {
|
||||
id: infoArea
|
||||
|
||||
anchors {
|
||||
left: control.left
|
||||
right: control.right
|
||||
top: control.top
|
||||
margins: app.landscape() ? control.width * 0.4:control.width * 0.3
|
||||
topMargin: control.height*( status === 901 ? 0.6:0.5) - height * 0.8
|
||||
}
|
||||
|
||||
excludedCodes: [200, 902]
|
||||
errorCode: control.status
|
||||
}
|
||||
}
|
95
resources/qml/Components/FancyBusyIndicator.qml
Normal file
|
@ -0,0 +1,95 @@
|
|||
import QtQuick 2.3
|
||||
import QtQuick.Controls 2.4
|
||||
import QtQuick.Controls.Styles 1.2
|
||||
|
||||
BusyIndicator {
|
||||
id: control
|
||||
|
||||
property double animationSpeed: 0.5
|
||||
|
||||
contentItem: Item {
|
||||
implicitWidth: 64
|
||||
implicitHeight: 64
|
||||
|
||||
Item {
|
||||
id: item
|
||||
|
||||
x: parent.width / 2 - 32
|
||||
y: parent.height / 2 - 32
|
||||
|
||||
width: 64
|
||||
height: 64
|
||||
|
||||
opacity: control.running ? 1 : 0
|
||||
|
||||
property int currentHeight: 0
|
||||
|
||||
onCurrentHeightChanged: {
|
||||
}
|
||||
|
||||
Behavior on opacity {
|
||||
OpacityAnimator {
|
||||
duration: 250
|
||||
}
|
||||
}
|
||||
|
||||
SequentialAnimation {
|
||||
loops: Animation.Infinite
|
||||
|
||||
running: true
|
||||
|
||||
NumberAnimation {
|
||||
target: item
|
||||
|
||||
duration: 2000 * 1/control.animationSpeed
|
||||
|
||||
to: 1000
|
||||
|
||||
properties: "currentHeight"
|
||||
|
||||
easing.type: Easing.InOutQuad
|
||||
|
||||
}
|
||||
|
||||
NumberAnimation {
|
||||
target: item
|
||||
|
||||
duration: 2000 * 1/control.animationSpeed
|
||||
|
||||
to: 0
|
||||
|
||||
properties: "currentHeight"
|
||||
|
||||
easing.type: Easing.InOutQuad
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
Row {
|
||||
|
||||
anchors.fill: parent
|
||||
|
||||
spacing: item.width / 9
|
||||
|
||||
Repeater {
|
||||
id: repeater
|
||||
model: 5
|
||||
|
||||
Rectangle {
|
||||
|
||||
property double heightMultiplier: Math.abs( Math.sin(( (item.currentHeight + (index*20))*0.01) * (Math.PI/2) ) )
|
||||
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
|
||||
width: item.width / 9
|
||||
height: ( heightMultiplier ) * ( item.height - 1 ) + 1
|
||||
|
||||
radius: width * 0.5
|
||||
|
||||
color: "#21be2b"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
88
resources/qml/Components/FancyButton.qml
Normal file
|
@ -0,0 +1,88 @@
|
|||
import QtQuick 2.9
|
||||
import QtQuick.Controls 2.4
|
||||
import QtGraphicalEffects 1.0
|
||||
|
||||
Button {
|
||||
id: control
|
||||
|
||||
property string image
|
||||
property color backgroundColor: "white"
|
||||
property color textColor: "black"
|
||||
property real imageScale: 1
|
||||
property double glowRadius: 0.001
|
||||
property double glowSpread: 0.2
|
||||
property bool glowVisible: true
|
||||
property double glowScale: 0.75
|
||||
property double glowOpacity: 1
|
||||
|
||||
scale: control.pressed ? 0.8:1
|
||||
|
||||
Behavior on scale {
|
||||
PropertyAnimation {
|
||||
duration: 100
|
||||
}
|
||||
}
|
||||
|
||||
Behavior on backgroundColor {
|
||||
ColorAnimation {
|
||||
duration: 200
|
||||
}
|
||||
}
|
||||
|
||||
contentItem: Text {
|
||||
visible: false
|
||||
}
|
||||
|
||||
Text {
|
||||
id: conetntText
|
||||
text: qsTr(control.text)
|
||||
anchors.centerIn: parent
|
||||
font: parent.font
|
||||
color: control.textColor
|
||||
opacity: control.enabled ? 1:0.4
|
||||
}
|
||||
|
||||
background: Item {
|
||||
id: controlBackgroundContainer
|
||||
|
||||
RectangularGlow {
|
||||
id: effect
|
||||
glowRadius: control.glowRadius
|
||||
spread: control.glowSpread
|
||||
color: "black"
|
||||
|
||||
visible: control.glowVisible
|
||||
|
||||
cornerRadius: controlBackground.radius
|
||||
anchors.fill: controlBackground
|
||||
scale: control.glowScale
|
||||
opacity: control.glowOpacity
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
id: controlBackground
|
||||
|
||||
anchors.fill: parent
|
||||
|
||||
radius: height * 0.5
|
||||
|
||||
color: control.backgroundColor
|
||||
|
||||
Image {
|
||||
id: buttonIcon
|
||||
source: control.image
|
||||
|
||||
anchors.centerIn: parent
|
||||
height: parent.height * 0.5
|
||||
width: height
|
||||
|
||||
mipmap: true
|
||||
|
||||
fillMode: Image.PreserveAspectFit
|
||||
|
||||
scale: control.imageScale
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
98
resources/qml/Components/InfoArea.qml
Normal file
|
@ -0,0 +1,98 @@
|
|||
/*
|
||||
Fannyapp - Application to view the cover plan of the Fanny-Leicht-Gymnasium ins Stuttgart Vaihingen, Germany
|
||||
Copyright (C) 2019 Itsblue Development <development@itsblue.de>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Affero General Public License as published
|
||||
by the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Affero General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Affero General Public License
|
||||
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
import QtQuick 2.9
|
||||
import QtQuick.Controls 2.4
|
||||
|
||||
Item {
|
||||
id: infoArea
|
||||
|
||||
property int alertLevel: app.getErrorInfo(infoArea.errorCode)[0]
|
||||
// 0 - ok
|
||||
// 1 - info
|
||||
// 2 - error
|
||||
property int errorCode: -1
|
||||
property var excludedCodes: []
|
||||
|
||||
visible: !(excludedCodes.indexOf(errorCode) >= 0)
|
||||
|
||||
height: childrenRect.height
|
||||
|
||||
Rectangle {
|
||||
|
||||
radius: height * 0.5
|
||||
width: parent.width
|
||||
height: width
|
||||
|
||||
color: "transparent"
|
||||
border.width: 5
|
||||
border.color: infoArea.alertLevel > 0 ? infoArea.alertLevel > 1 ? "red":"grey" : "green"
|
||||
|
||||
opacity: infoArea.errorCode !== 200 && infoArea.errorCode !== (-1) ? 1:0
|
||||
|
||||
Behavior on opacity {
|
||||
NumberAnimation {
|
||||
duration: 500
|
||||
}
|
||||
}
|
||||
|
||||
Label {
|
||||
anchors.centerIn: parent
|
||||
font.pixelSize: parent.height * 0.8
|
||||
text: infoArea.alertLevel > 1 ? "!":"i"
|
||||
color: infoArea.alertLevel > 0 ? infoArea.alertLevel > 1 ? "red":"grey" : "green"
|
||||
}
|
||||
|
||||
Label {
|
||||
id: errorShortDescription
|
||||
anchors {
|
||||
horizontalCenter: parent.horizontalCenter
|
||||
top: parent.bottom
|
||||
margins: parent.height * 0.1
|
||||
}
|
||||
|
||||
width: app.width * 0.8
|
||||
|
||||
wrapMode: Label.Wrap
|
||||
|
||||
horizontalAlignment: Label.AlignHCenter
|
||||
|
||||
font.pixelSize: errorLongDescription.font.pixelSize * 1.8
|
||||
text: app.getErrorInfo(infoArea.errorCode)[1]
|
||||
}
|
||||
|
||||
Label {
|
||||
id: errorLongDescription
|
||||
anchors {
|
||||
horizontalCenter: parent.horizontalCenter
|
||||
top: errorShortDescription.bottom
|
||||
margins: parent.height * 0.1
|
||||
}
|
||||
|
||||
width: app.width * 0.8
|
||||
|
||||
wrapMode: Label.Wrap
|
||||
|
||||
horizontalAlignment: Label.AlignHCenter
|
||||
|
||||
text: app.getErrorInfo(infoArea.errorCode)[2]
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
274
resources/qml/Components/RankingView.qml
Normal file
|
@ -0,0 +1,274 @@
|
|||
import QtQuick 2.0
|
||||
import QtQuick.Controls 2.4
|
||||
|
||||
DataListView {
|
||||
id: control
|
||||
|
||||
property var listData: ({})
|
||||
|
||||
onListDataChanged: {
|
||||
model = listData[ root.listKey ] === undefined ? 0:listData[ root.listKey ].length
|
||||
}
|
||||
|
||||
model: listData[ root.listKey ] === undefined ? 0:listData[ root.listKey ].length
|
||||
|
||||
delegate: ItemDelegate {
|
||||
id: partDel
|
||||
|
||||
property int ind: index
|
||||
|
||||
width: parent.width
|
||||
height: 70
|
||||
|
||||
text: ""
|
||||
|
||||
Rectangle {
|
||||
anchors.fill: parent
|
||||
|
||||
width: partDel.width
|
||||
|
||||
color: partDel.ind % 2 == 0 ? "white":"lightgrey"
|
||||
|
||||
opacity: 0.2
|
||||
}
|
||||
|
||||
Column {
|
||||
id: partDelCol
|
||||
|
||||
anchors.fill: parent
|
||||
anchors.margins: 5
|
||||
|
||||
Row {
|
||||
id: partDelFirstRow
|
||||
|
||||
width: parent.width
|
||||
height: parent.height - partDelSecondRow.height
|
||||
|
||||
Label {
|
||||
height: parent.height
|
||||
width: parent.width * 0.1
|
||||
|
||||
fontSizeMode: Text.Fit
|
||||
font.bold: true
|
||||
font.pixelSize: Math.abs( partDelSecondRow.height > 0 ? height * 0.6:height * 0.4 )
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
|
||||
text: listData[ "participants" ][index]["result_rank"]
|
||||
}
|
||||
|
||||
Label {
|
||||
height: parent.height
|
||||
width: parent.width * 0.5
|
||||
|
||||
fontSizeMode: Text.Fit
|
||||
font.bold: true
|
||||
font.pixelSize: Math.abs( partDelSecondRow.height > 0 ? height * 0.6:height * 0.4 )
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
horizontalAlignment: Text.AlignLeft
|
||||
|
||||
text: listData[ "participants" ][index]["firstname"] + " " + listData[ "participants" ][index]["lastname"]
|
||||
}
|
||||
|
||||
Label {
|
||||
height: parent.height
|
||||
width: parent.width * 0.4
|
||||
|
||||
fontSizeMode: Text.Fit
|
||||
font.bold: false
|
||||
font.pixelSize: Math.abs( partDelSecondRow.height > 0 ? height * 0.4:height * 0.3 )
|
||||
minimumPixelSize: 0
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
|
||||
text: "<html>(<a href=\"" + (listData[ "participants" ][index]["fed_url"] === undefined ? "":listData[ "participants" ][index]["fed_url"]).toString() + "\">" + (listData[ "display_athlete" ] === "nation" ? listData[ "participants" ][index]["nation"] : listData[ "participants" ][index]["federation"]) + "</a>)</html>"
|
||||
|
||||
onLinkActivated: {
|
||||
Qt.openUrlExternally(link)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Row {
|
||||
id: partDelSecondRow
|
||||
|
||||
width: parent.width
|
||||
height: multiResRow.enabled || multiGenResRow.enabled || resultLa.enabled ? parent.height / 2:0
|
||||
|
||||
Row {
|
||||
id: multiResRow
|
||||
|
||||
height: parent.height
|
||||
width: enabled ? parent.width * 0.75:0
|
||||
|
||||
enabled: parseInt(listData[ "route_order" ]) > -1 && boulderResRep.model > 0
|
||||
|
||||
Repeater {
|
||||
id: boulderResRep
|
||||
|
||||
model: parseInt(listData[ "route_num_problems" ])
|
||||
|
||||
delegate: Item {
|
||||
id: boulderResItm
|
||||
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
|
||||
width: parent.width / ( boulderResRep.model )
|
||||
height: parent.height
|
||||
|
||||
Rectangle {
|
||||
anchors {
|
||||
left: parent.left
|
||||
}
|
||||
|
||||
width: 1
|
||||
height: parent.height
|
||||
|
||||
visible: index === 0
|
||||
|
||||
color: "grey"
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
anchors {
|
||||
right: parent.right
|
||||
}
|
||||
|
||||
width: 1
|
||||
height: parent.height
|
||||
|
||||
color: "grey"
|
||||
}
|
||||
|
||||
Label {
|
||||
anchors.centerIn: parent
|
||||
|
||||
height: parent.height
|
||||
width: parent.width * 0.9
|
||||
|
||||
fontSizeMode: Text.Fit
|
||||
font.pixelSize: Math.abs( height * 0.6 )
|
||||
minimumPixelSize: 0
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
|
||||
text: listData[ "participants" ][partDel.ind]["boulder"+(index+1)] === undefined ? "":listData[ "participants" ][partDel.ind]["boulder"+(index+1)]
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Row {
|
||||
id: multiGenResRow
|
||||
|
||||
height: parent.height
|
||||
width: enabled ? parent.width - resultLa.width:0
|
||||
|
||||
enabled: ((parseInt(listData[ "route_order" ]) === -1) && (generalResRep.model > 0)) ? true:false
|
||||
|
||||
Repeater {
|
||||
id: generalResRep
|
||||
|
||||
property var routes: getRoutes()
|
||||
model: routes.length
|
||||
|
||||
function getRoutes() {
|
||||
|
||||
var obj = listData["route_names"]
|
||||
var routes = []
|
||||
|
||||
for(var prop in obj) {
|
||||
// go through the whole array and search for data keys
|
||||
if (obj.hasOwnProperty(prop) && prop > -1) {
|
||||
routes.push([prop, obj[prop]])
|
||||
//console.log("found " + obj[prop] + " at index " + prop)
|
||||
}
|
||||
}
|
||||
|
||||
routes.sort(function(a, b) {
|
||||
return a[0] - b[0];
|
||||
});
|
||||
|
||||
return routes
|
||||
}
|
||||
|
||||
delegate: Item {
|
||||
id: boulderGenResItm
|
||||
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
|
||||
width: parent.width / ( generalResRep.model )
|
||||
height: parent.height
|
||||
|
||||
visible: boulderGenResLa.text != ""
|
||||
|
||||
Rectangle {
|
||||
|
||||
anchors {
|
||||
left: parent.left
|
||||
}
|
||||
|
||||
width: 1
|
||||
height: parent.height
|
||||
|
||||
visible: index === 0
|
||||
|
||||
color: "grey"
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
anchors {
|
||||
right: parent.right
|
||||
}
|
||||
|
||||
width: 1
|
||||
height: parent.height
|
||||
|
||||
color: "grey"
|
||||
}
|
||||
|
||||
Label {
|
||||
id: boulderGenResLa
|
||||
anchors.centerIn: parent
|
||||
|
||||
height: parent.height
|
||||
width: parent.width * 0.9
|
||||
|
||||
fontSizeMode: Text.Fit
|
||||
font.pixelSize: Math.abs( height * 0.6 )
|
||||
minimumPixelSize: 0
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
|
||||
text: listData[ "participants" ][partDel.ind]["result"+(generalResRep.routes[index][0])] === undefined ? "":listData[ "participants" ][partDel.ind]["result"+(generalResRep.routes[index][0])]
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
Label {
|
||||
id: resultLa
|
||||
|
||||
width: enabled ? parent.width * 0.25:0
|
||||
height: enabled ? parent.height:0
|
||||
|
||||
enabled: ( boulderResRep.model > 0 || listData["discipline"] !== "boulder" ) && parseInt(listData[ "route_order" ]) > -1
|
||||
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
|
||||
fontSizeMode: Text.Fit
|
||||
font.pixelSize: Math.abs( height * 0.6 )
|
||||
minimumPixelSize: 0
|
||||
|
||||
text: listData[ "participants" ][partDel.ind]["result"] === undefined ? "":listData[ "participants" ][partDel.ind]["result"]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
45
resources/qml/Components/RegistrationView.qml
Normal file
|
@ -0,0 +1,45 @@
|
|||
import QtQuick 2.0
|
||||
import QtQuick.Controls 2.4
|
||||
|
||||
DataListView {
|
||||
id: control
|
||||
|
||||
property var listData: ({})
|
||||
|
||||
model: listData[ root.listKey ] === undefined ? 0:listData[ root.listKey ].length
|
||||
|
||||
delegate: ItemDelegate {
|
||||
id: partDel
|
||||
|
||||
width: parent.width
|
||||
|
||||
text: control.getText(index)
|
||||
}
|
||||
|
||||
function getText(index){
|
||||
|
||||
// ----------------------------
|
||||
// if we have registration data
|
||||
|
||||
var fedName // federation name
|
||||
|
||||
if(listData["federations"] !== undefined){
|
||||
// not an international competition -> get name of federation
|
||||
|
||||
for(var i = 0; i < listData["federations"].length; i ++ ){
|
||||
//console.log("checking " + i + ": cat: " + parseInt(listData["categorys"][i]["GrpId"]) + " searched cat: " + root.catId)
|
||||
if(listData["federations"][i]["fed_id"] === listData[ root.listKey ][index]["reg_fed_id"]){
|
||||
fedName = listData["federations"][i]["shortcut"]
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
// an international competition -> get nation
|
||||
|
||||
fedName = listData[ root.listKey ][index]["nation"]
|
||||
}
|
||||
|
||||
return listData[ "athletes" ][index]["firstname"] + " " + listData[ "athletes" ][index]["lastname"] + " (" + fedName + ")"
|
||||
}
|
||||
|
||||
}
|
183
resources/qml/Pages/CompetitionCalendarPage.qml
Normal file
|
@ -0,0 +1,183 @@
|
|||
import QtQuick 2.0
|
||||
import QtQuick.Controls 2.4
|
||||
import QtQuick.Controls.Material 2.3
|
||||
|
||||
import "../Components"
|
||||
|
||||
Page {
|
||||
id: root
|
||||
|
||||
title: "calendar"
|
||||
|
||||
property string nation: ""
|
||||
property int status: -1
|
||||
|
||||
Component.onCompleted: {
|
||||
var ret = serverConn.getCalendar(nation)
|
||||
|
||||
if(ret["status"] === 200){
|
||||
root.status = 200
|
||||
calendarList.listData = ret["data"]["competitions"]
|
||||
}
|
||||
else {
|
||||
root.status = ret["status"]
|
||||
calendarList.listData = {}
|
||||
}
|
||||
}
|
||||
|
||||
InfoArea {
|
||||
id: infoArea
|
||||
|
||||
anchors {
|
||||
left: parent.left
|
||||
right: parent.right
|
||||
top: parent.top
|
||||
margins: app.landscape() ? parent.width * 0.4:parent.width * 0.3
|
||||
topMargin: parent.height*( status === 901 ? 0.6:0.5) - height * 0.8
|
||||
}
|
||||
|
||||
excludedCodes: [200, 902]
|
||||
errorCode: root.status
|
||||
}
|
||||
|
||||
ListView {
|
||||
id: calendarList
|
||||
|
||||
property var listData
|
||||
|
||||
anchors.fill: parent
|
||||
|
||||
boundsBehavior: Flickable.StopAtBounds
|
||||
|
||||
model: listData.length
|
||||
|
||||
delegate: ItemDelegate {
|
||||
id: competitionDel
|
||||
|
||||
property string name: calendarList.listData[index]["name"]
|
||||
property string date: calendarList.listData[index]["date_span"]
|
||||
property var cats: calendarList.listData[index]["cats"]
|
||||
property int catId: calendarList.listData[index]["cat_id"]
|
||||
|
||||
width: parent.width
|
||||
height: compDelCol.height + 10
|
||||
|
||||
onClicked: {
|
||||
catSelectPu.appear(index)
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
id: delBackroundRect
|
||||
|
||||
anchors.fill: parent
|
||||
|
||||
opacity: 0.5
|
||||
|
||||
color: app.competitionCategoryColors[catId]
|
||||
|
||||
}
|
||||
|
||||
Column {
|
||||
id: compDelCol
|
||||
|
||||
anchors.centerIn: parent
|
||||
|
||||
width: parent.width * 0.97
|
||||
|
||||
spacing: 10
|
||||
|
||||
Label {
|
||||
id: nameLa
|
||||
|
||||
width: parent.width
|
||||
|
||||
font.bold: true
|
||||
|
||||
wrapMode: Text.WordWrap
|
||||
|
||||
text: name
|
||||
}
|
||||
|
||||
Label {
|
||||
id: dateLa
|
||||
|
||||
color: "grey"
|
||||
|
||||
text: date
|
||||
}
|
||||
|
||||
Label {
|
||||
id: catIdLa
|
||||
|
||||
color: "grey"
|
||||
|
||||
text: catId
|
||||
}
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
id: bottomLineRa
|
||||
|
||||
anchors {
|
||||
bottom: parent.bottom
|
||||
left: parent.left
|
||||
right: parent.right
|
||||
}
|
||||
|
||||
height: 1
|
||||
|
||||
color: "lightgrey"
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Dialog {
|
||||
id: catSelectPu
|
||||
|
||||
property int index: -1
|
||||
property var catObj: calendarList.listData[catSelectPu.index] !== undefined ? calendarList.listData[catSelectPu.index]["cats"]:undefined
|
||||
|
||||
x: root.width / 2 - width / 2
|
||||
y: root.height / 2 - height / 2
|
||||
|
||||
width: root.width * 0.8
|
||||
height: root.height * 0.6
|
||||
|
||||
modal: true
|
||||
focus: true
|
||||
|
||||
title: qsTr("select category")
|
||||
|
||||
function appear(index) {
|
||||
catSelectPu.open()
|
||||
catSelectPu.index = index
|
||||
}
|
||||
|
||||
contentItem: ListView {
|
||||
id: catsLv
|
||||
|
||||
width: parent.width
|
||||
height: root.height * 0.6
|
||||
|
||||
model: catSelectPu.catObj !== undefined ? catSelectPu.catObj.length:0
|
||||
|
||||
delegate: Button {
|
||||
id: catBt
|
||||
|
||||
width: parent.width
|
||||
|
||||
flat: true
|
||||
|
||||
text: catSelectPu.catObj[index]["name"]
|
||||
|
||||
onClicked: {
|
||||
catSelectPu.close()
|
||||
app.openResults(calendarList.listData[catSelectPu.index]["WetId"], catSelectPu.catObj[index]["GrpId"], (catSelectPu.catObj[index]["status"] === 4 || catSelectPu.catObj[index]["status"] === undefined))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
236
resources/qml/Pages/RankingPage.qml
Normal file
|
@ -0,0 +1,236 @@
|
|||
import QtQuick 2.0
|
||||
import QtQuick.Controls 2.4
|
||||
import QtGraphicalEffects 1.0
|
||||
|
||||
import "../Components"
|
||||
|
||||
Page {
|
||||
id: root
|
||||
|
||||
title: root.rankingData[compNameKey]
|
||||
property string subTitle: getSubtitle()
|
||||
property bool titleIsPageTitle: true
|
||||
|
||||
property int status: -1
|
||||
|
||||
property bool debug: true
|
||||
|
||||
property int comId: -1
|
||||
property int catId: -1
|
||||
property int routeNumber: -2
|
||||
property bool reg: false
|
||||
|
||||
property var rankingData
|
||||
|
||||
property string listKey: root.reg ? "athletes":"participants"
|
||||
property string compNameKey: root.reg ? "name":"comp_name"
|
||||
|
||||
Component.onCompleted: {
|
||||
root.loadData(root.comId, root.catId, root.reg, root.routeNumber)
|
||||
}
|
||||
|
||||
function loadData(comp, cat, reg, route){
|
||||
loadingDl.open()
|
||||
console.log("[info][QML] getting ranking data of comp: " + comp + " and cat: " + cat + " reg: " + reg)
|
||||
var ret = serverConn.getRanking(comp, cat, reg, route)
|
||||
|
||||
root.status = ret["status"]
|
||||
|
||||
if(parseInt(ret["status"]) === 200){
|
||||
// request was successfull -> prepare data
|
||||
if(root.reg){
|
||||
// if the data i sregistration data, athletes of other cats need to be removed
|
||||
|
||||
var validAthletes = []
|
||||
|
||||
for(var i = 0; i < ret["data"]["athletes"].length; i++){
|
||||
if(parseInt(ret["data"]["athletes"][i]["cat"]) === cat){
|
||||
//console.log("found matching athlete at " + i)
|
||||
validAthletes.push(ret["data"]["athletes"][i])
|
||||
}
|
||||
}
|
||||
ret["data"]["athletes"] = validAthletes
|
||||
|
||||
root.rankingData = ret["data"]
|
||||
}
|
||||
else {
|
||||
root.rankingData = ret["data"]
|
||||
root.routeNumber = root.rankingData["route_order"] === undefined ? -2:root.rankingData["route_order"]
|
||||
}
|
||||
}
|
||||
else {
|
||||
root.rankingData = {}
|
||||
}
|
||||
|
||||
|
||||
if(ret["data"][ root.listKey ] === undefined || ret["data"][ root.listKey ].length < 1){
|
||||
root.status = 901
|
||||
}
|
||||
|
||||
console.log("done! status: " + root.status)
|
||||
loadingDl.close()
|
||||
}
|
||||
|
||||
function getSubtitle() {
|
||||
var titleString
|
||||
|
||||
//console.log("getting title, reg: " + root.reg)
|
||||
|
||||
if(reg){
|
||||
for(var i = 0; i < root.rankingData["categorys"].length; i ++ ){
|
||||
//console.log("checking " + i + ": cat: " + parseInt(root.rankingData["categorys"][i]["GrpId"]) + " searched cat: " + root.catId)
|
||||
if(parseInt(root.rankingData["categorys"][i]["GrpId"]) === root.catId){
|
||||
titleString = root.rankingData["categorys"][i]["name"]
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
titleString = root.rankingData["route_name"]
|
||||
}
|
||||
|
||||
return titleString
|
||||
|
||||
}
|
||||
|
||||
Item {
|
||||
id: regItm
|
||||
// item for registration view
|
||||
|
||||
anchors.fill: parent
|
||||
|
||||
visible: root.reg
|
||||
|
||||
RegistrationView {
|
||||
id: regViewRv
|
||||
|
||||
anchors.fill: parent
|
||||
|
||||
status: root.status
|
||||
|
||||
listData: root.reg ? root.rankingData:({})
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
Item {
|
||||
id: rankItm
|
||||
// item for ranking data
|
||||
|
||||
anchors.fill: parent
|
||||
|
||||
visible: !root.reg
|
||||
|
||||
RankingView {
|
||||
id: rankViewRv
|
||||
|
||||
anchors {
|
||||
left: parent.left
|
||||
right: parent.right
|
||||
top: parent.top
|
||||
bottom: routeSelectTb.top
|
||||
}
|
||||
|
||||
height: root.height - routeSelectTb.height
|
||||
|
||||
status: root.status
|
||||
|
||||
listData: root.reg ? ({}):root.rankingData
|
||||
|
||||
onListDataChanged: {
|
||||
console.log("list data changed")
|
||||
}
|
||||
}
|
||||
|
||||
RectangularGlow {
|
||||
id: toolBarEffect
|
||||
glowRadius: 3
|
||||
spread: 0.2
|
||||
color: "black"
|
||||
opacity: 0.3
|
||||
anchors.fill: routeSelectTb
|
||||
}
|
||||
|
||||
TabBar {
|
||||
id: routeSelectTb
|
||||
|
||||
property var tabs: getTabs()
|
||||
property var tabIndexes: []
|
||||
|
||||
anchors {
|
||||
left: parent.left
|
||||
right: parent.right
|
||||
bottom: parent.bottom
|
||||
}
|
||||
|
||||
height: tabs.length > 0 ? 50:0
|
||||
|
||||
position: TabBar.Footer
|
||||
|
||||
Component.onCompleted: {
|
||||
//currentIndex = getIndex(root.routeNumber)
|
||||
setCurrentIndex(getIndex(root.routeNumber))
|
||||
}
|
||||
|
||||
function getTabs() {
|
||||
|
||||
var obj = root.rankingData["route_names"]
|
||||
var buttonData = []
|
||||
|
||||
for(var prop in obj) {
|
||||
// go through the whole array and search for data keys
|
||||
if (obj.hasOwnProperty(prop)) {
|
||||
buttonData.push([prop, obj[prop]])
|
||||
console.log("found " + obj[prop] + " at index " + prop)
|
||||
}
|
||||
}
|
||||
|
||||
buttonData.sort(function(a, b) {
|
||||
return a[0] - b[0];
|
||||
});
|
||||
|
||||
return buttonData
|
||||
}
|
||||
|
||||
function getIndex(routeNumber) {
|
||||
console.log("getting index for route number: " + routeNumber)
|
||||
|
||||
for(var i = 0; i < tabs.length; i++){
|
||||
//console.log(tabs[i])
|
||||
if(parseInt(tabs[i][0]) === routeNumber){
|
||||
console.log("found index: " + i)
|
||||
return i
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
Repeater {
|
||||
id: routeSelectButtonRep
|
||||
|
||||
model: routeSelectTb.tabs.length
|
||||
|
||||
onModelChanged: {
|
||||
routeSelectTb.setCurrentIndex(routeSelectTb.getIndex(root.routeNumber))
|
||||
}
|
||||
|
||||
delegate: TabButton {
|
||||
text: routeSelectTb.tabs[index][1]
|
||||
|
||||
width: Math.max(150, routeSelectTb.width / routeSelectButtonRep.model) //text.length * font.pixelSize
|
||||
|
||||
|
||||
|
||||
onClicked: {
|
||||
console.log("changing to index: " + index + " (" + routeSelectTb.tabs[index][0] + ", " + routeSelectTb.tabs[index][1] + ")")
|
||||
if(root.routeNumber !== routeSelectTb.tabs[index][0]){
|
||||
root.routeNumber = routeSelectTb.tabs[index][0]
|
||||
root.loadData(root.comId, root.catId, root.reg, root.routeNumber)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
67
resources/qml/Pages/StartPage.qml
Normal file
|
@ -0,0 +1,67 @@
|
|||
import QtQuick 2.0
|
||||
import QtQuick.Controls 2.4
|
||||
|
||||
import "../Components"
|
||||
|
||||
Page {
|
||||
id: root
|
||||
|
||||
title: "start"
|
||||
|
||||
Grid {
|
||||
id: menuGr
|
||||
|
||||
anchors.centerIn: parent
|
||||
|
||||
rows: app.landscape() ? 1:3
|
||||
columns: app.landscape() ? 3:1
|
||||
|
||||
spacing: app.landscape() ? parent.height * 0.1:parent.width * 0.1
|
||||
|
||||
property int buttonSize: app.landscape() ? parent.width * 0.2:parent.height * 0.2
|
||||
|
||||
FancyButton {
|
||||
id: ifscBt
|
||||
|
||||
height: menuGr.buttonSize
|
||||
width: height
|
||||
|
||||
image: "qrc:/icons/ifsc.png"
|
||||
|
||||
onClicked: {
|
||||
app.openCalendar("")
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
FancyButton {
|
||||
id: davBt
|
||||
|
||||
height: menuGr.buttonSize
|
||||
width: height
|
||||
|
||||
image: "qrc:/icons/dav.png"
|
||||
|
||||
onClicked: {
|
||||
app.openCalendar("GER")
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
FancyButton {
|
||||
id: sacBt
|
||||
|
||||
height: menuGr.buttonSize
|
||||
width: height
|
||||
|
||||
image: "qrc:/icons/sac.png"
|
||||
|
||||
onClicked: {
|
||||
app.openCalendar("SUI")
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
351
resources/qml/main.qml
Normal file
|
@ -0,0 +1,351 @@
|
|||
import QtQuick 2.9
|
||||
import QtQuick.Window 2.2
|
||||
import QtQuick.Controls 2.4
|
||||
|
||||
import com.itsblue.digitalRockRanking 1.0
|
||||
|
||||
import "./Pages"
|
||||
import "./Components"
|
||||
|
||||
Window {
|
||||
visible: true
|
||||
width: 540
|
||||
height: 960
|
||||
title: qsTr("Digital Rock Ranking")
|
||||
|
||||
Page {
|
||||
id: app
|
||||
|
||||
property var competitionCategoryColors: {
|
||||
"61": "lightgrey",
|
||||
"58": "lightgreen",
|
||||
|
||||
"69": "#B8C8FF",
|
||||
"70": "#F0F0F0",
|
||||
"71": "#D8E8FF",
|
||||
"256": "#D8E8FF"
|
||||
}
|
||||
|
||||
anchors.fill: parent
|
||||
|
||||
Shortcut {
|
||||
sequences: ["Esc", "Back"]
|
||||
enabled: mainStack.depth > 1
|
||||
onActivated: {
|
||||
if(!mainStack.currentItem.locked){
|
||||
mainStack.pop()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ServerConn {
|
||||
id: serverConn
|
||||
|
||||
Component.onCompleted: {
|
||||
//serverConn.refreshFoodplan()
|
||||
}
|
||||
}
|
||||
|
||||
StackView {
|
||||
id: mainStack
|
||||
|
||||
anchors {
|
||||
top: toolBar.bottom
|
||||
left: parent.left
|
||||
right: parent.right
|
||||
bottom: parent.bottom
|
||||
}
|
||||
|
||||
initialItem: startPgComp
|
||||
|
||||
Component {
|
||||
id: startPgComp
|
||||
StartPage {}
|
||||
}
|
||||
|
||||
popEnter: Transition {
|
||||
XAnimator {
|
||||
from: (mainStack.mirrored ? -1 : 1) * -mainStack.width
|
||||
to: 0
|
||||
duration: 500
|
||||
easing.type: Easing.OutCubic
|
||||
}
|
||||
}
|
||||
|
||||
popExit: Transition {
|
||||
XAnimator {
|
||||
from: 0
|
||||
to: (mainStack.mirrored ? -1 : 1) * mainStack.width
|
||||
duration: 500
|
||||
easing.type: Easing.OutCubic
|
||||
}
|
||||
}
|
||||
|
||||
pushEnter: Transition {
|
||||
XAnimator {
|
||||
from: (mainStack.mirrored ? -1 : 1) * mainStack.width
|
||||
to: 0
|
||||
duration: 500
|
||||
easing.type: Easing.OutCubic
|
||||
}
|
||||
}
|
||||
|
||||
pushExit: Transition {
|
||||
XAnimator {
|
||||
from: 0
|
||||
to: (mainStack.mirrored ? -1 : 1) * -mainStack.width
|
||||
duration: 500
|
||||
easing.type: Easing.OutCubic
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
AppToolBar {
|
||||
id: toolBar
|
||||
|
||||
anchors {
|
||||
top: parent.top
|
||||
left: parent.left
|
||||
right: parent.right
|
||||
topMargin: -60
|
||||
}
|
||||
|
||||
height: 50
|
||||
|
||||
Button {
|
||||
id:toolButton
|
||||
enabled: true
|
||||
anchors {
|
||||
left: parent.left
|
||||
verticalCenter: parent.verticalCenter
|
||||
leftMargin: parent.width *0.02
|
||||
}
|
||||
height: parent.height - parent.height * 0.5
|
||||
width: height
|
||||
|
||||
onClicked: {
|
||||
if(!mainStack.currentItem.locked){
|
||||
mainStack.pop()
|
||||
}
|
||||
}
|
||||
|
||||
onPressed: toolButton.scale = 0.9
|
||||
onReleased: toolButton.scale = 1.0
|
||||
|
||||
background: Image {
|
||||
source: "qrc:/icons/backDark.png"
|
||||
height: parent.height
|
||||
width: parent.width
|
||||
fillMode: Image.PreserveAspectFit
|
||||
Behavior on scale {
|
||||
PropertyAnimation {
|
||||
duration: 100
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Label {
|
||||
id: toolBarTitleLa
|
||||
|
||||
|
||||
anchors {
|
||||
verticalCenter: parent.verticalCenter
|
||||
verticalCenterOffset: -toolBarSubTitleLa.anchors.verticalCenterOffset
|
||||
left: toolButton.right
|
||||
leftMargin: parent.width * 0.02
|
||||
right: parent.right
|
||||
}
|
||||
|
||||
elide: "ElideRight"
|
||||
|
||||
font.bold: true
|
||||
|
||||
color: "black"
|
||||
|
||||
text: getText()
|
||||
|
||||
function getText(){
|
||||
var titleString = "";
|
||||
|
||||
if(!mainStack.currentItem.titleIsPageTitle){
|
||||
for(var i=1; i<mainStack.depth; i++){
|
||||
if(i > 1){
|
||||
titleString += " > "
|
||||
}
|
||||
|
||||
titleString += mainStack.get(i).title
|
||||
}
|
||||
}
|
||||
else {
|
||||
titleString = mainStack.currentItem.title
|
||||
}
|
||||
|
||||
return(titleString)
|
||||
}
|
||||
}
|
||||
|
||||
Label {
|
||||
id: toolBarSubTitleLa
|
||||
|
||||
anchors {
|
||||
verticalCenter: parent.verticalCenter
|
||||
verticalCenterOffset: toolBarSubTitleLa.text !== "" ? height/2:0
|
||||
left: toolButton.right
|
||||
leftMargin: parent.width * 0.02
|
||||
right: parent.right
|
||||
}
|
||||
|
||||
elide: "ElideRight"
|
||||
|
||||
font.bold: false
|
||||
|
||||
color: "black"
|
||||
|
||||
text: getText()
|
||||
|
||||
function getText(){
|
||||
var titleString = "";
|
||||
|
||||
if(mainStack.currentItem.subTitle !== undefined){
|
||||
titleString = mainStack.currentItem.subTitle
|
||||
}
|
||||
|
||||
return(titleString)
|
||||
}
|
||||
}
|
||||
|
||||
Behavior on anchors.topMargin {
|
||||
NumberAnimation {
|
||||
duration: 500
|
||||
easing.type: Easing.OutCubic
|
||||
}
|
||||
}
|
||||
|
||||
states: [
|
||||
State {
|
||||
name: "closed"
|
||||
when: mainStack.depth === 1
|
||||
PropertyChanges {
|
||||
target: toolBar
|
||||
anchors.topMargin: -60
|
||||
}
|
||||
},
|
||||
State {
|
||||
name: "open"
|
||||
when: mainStack.depth > 1
|
||||
PropertyChanges {
|
||||
target: toolBar
|
||||
anchors.topMargin: 0
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
Dialog {
|
||||
id: loadingDl
|
||||
|
||||
x: ( app.width - width ) / 2
|
||||
y: ( app.height - height ) / 2
|
||||
|
||||
modal: true
|
||||
closePolicy: Dialog.NoAutoClose
|
||||
|
||||
contentItem: Column {
|
||||
FancyBusyIndicator {
|
||||
running: true
|
||||
}
|
||||
|
||||
Label {
|
||||
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
|
||||
font.bold: true
|
||||
|
||||
text: "loading..."
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
function landscape(){
|
||||
return app.height < app.width
|
||||
}
|
||||
|
||||
function openCalendar(nation){
|
||||
loadingDl.open()
|
||||
mainStack.push(Qt.createComponent("qrc:/Pages/CompetitionCalendarPage.qml").createObject(null, {"nation": nation}))
|
||||
loadingDl.close()
|
||||
}
|
||||
|
||||
function openResults(comp, cat, reg){
|
||||
// comp: (int) competiotion ID
|
||||
// cat: (int) category ID
|
||||
// reg: (bool) false: results; true: registrations
|
||||
|
||||
//loadingDl.open()
|
||||
mainStack.push(Qt.createComponent("qrc:/Pages/RankingPage.qml").createObject(null, {"comId": comp, "catId": cat, "reg": reg}))
|
||||
//loadingDl.close()
|
||||
}
|
||||
|
||||
function getErrorInfo(errorCode) {
|
||||
|
||||
var infoLevel
|
||||
// 0 - ok
|
||||
// 1 - info
|
||||
// 2 - error
|
||||
|
||||
var errorString
|
||||
var errorDescription
|
||||
|
||||
switch(errorCode) {
|
||||
case 0:
|
||||
infoLevel = 2
|
||||
errorString = "No connection to server"
|
||||
errorDescription = "Please check your internet connection and try again."
|
||||
break
|
||||
case 401:
|
||||
infoLevel = 2
|
||||
errorString = "Authentication required"
|
||||
errorDescription = "The server asked for user credentinals, please chack them and try again"
|
||||
break
|
||||
case 500:
|
||||
infoLevel = 2
|
||||
errorString = "Internal server error"
|
||||
errorDescription = "The server was unable to process this request, this is probaply the servers vault. Please try again later."
|
||||
break
|
||||
case 900:
|
||||
infoLevel = 2
|
||||
errorString = "Internal processing error"
|
||||
errorDescription = "The server has sent some data that could ot be processed. Please try again later"
|
||||
break
|
||||
case 901:
|
||||
infoLevel = 1
|
||||
errorString = "No Data"
|
||||
errorDescription = "There is currently no data available. Please try again later."
|
||||
break
|
||||
case 902:
|
||||
infoLevel = 1
|
||||
errorString = "Alte Daten"
|
||||
errorDescription = "Es konnte keine Verbindung zum Server hergestellt werden, aber es sind noch alte Daten gespeichert."
|
||||
break
|
||||
case 903:
|
||||
infoLevel = 1
|
||||
errorString = "Ungültiger Aufruf"
|
||||
errorDescription = "Die aufgerufene Funktion ist momentan nicht verfügbar, bitte versuche es später erneut."
|
||||
break
|
||||
case 904:
|
||||
infoLevel = 2
|
||||
errorString = "Incompatible API"
|
||||
errorDescription = "Please make shure that you are using the latest version of this app and try again."
|
||||
break
|
||||
default:
|
||||
infoLevel = 2
|
||||
errorString = "Unexpected error ("+errorCode+")"
|
||||
errorDescription = "Unexpected error while getting data from the server. Please try again later."
|
||||
}
|
||||
|
||||
return([infoLevel, errorString, errorDescription])
|
||||
}
|
||||
}
|
||||
}
|
15
resources/qml/qml.qrc
Normal file
|
@ -0,0 +1,15 @@
|
|||
<RCC>
|
||||
<qresource prefix="/">
|
||||
<file>main.qml</file>
|
||||
<file>Pages/CompetitionCalendarPage.qml</file>
|
||||
<file>Pages/RankingPage.qml</file>
|
||||
<file>Pages/StartPage.qml</file>
|
||||
<file>Components/FancyButton.qml</file>
|
||||
<file>Components/AppToolBar.qml</file>
|
||||
<file>Components/FancyBusyIndicator.qml</file>
|
||||
<file>Components/InfoArea.qml</file>
|
||||
<file>Components/DataListView.qml</file>
|
||||
<file>Components/RankingView.qml</file>
|
||||
<file>Components/RegistrationView.qml</file>
|
||||
</qresource>
|
||||
</RCC>
|
BIN
resources/shared/icons/back.png
Normal file
After Width: | Height: | Size: 2.5 KiB |
BIN
resources/shared/icons/backDark.png
Normal file
After Width: | Height: | Size: 289 B |
BIN
resources/shared/icons/dav.png
Normal file
After Width: | Height: | Size: 10 KiB |
BIN
resources/shared/icons/dig_rock.klein.jpg
Normal file
After Width: | Height: | Size: 5.3 KiB |
BIN
resources/shared/icons/dig_rock.klein.png
Normal file
After Width: | Height: | Size: 29 KiB |
BIN
resources/shared/icons/favicon.png
Normal file
After Width: | Height: | Size: 85 KiB |
BIN
resources/shared/icons/favicon.xcf
Normal file
BIN
resources/shared/icons/ifsc.png
Normal file
After Width: | Height: | Size: 10 KiB |
1
resources/shared/icons/json.php.json
Normal file
BIN
resources/shared/icons/sac.png
Normal file
After Width: | Height: | Size: 4.4 KiB |
9
resources/shared/shared.qrc
Normal file
|
@ -0,0 +1,9 @@
|
|||
<RCC>
|
||||
<qresource prefix="/">
|
||||
<file>icons/dav.png</file>
|
||||
<file>icons/ifsc.png</file>
|
||||
<file>icons/sac.png</file>
|
||||
<file>icons/back.png</file>
|
||||
<file>icons/backDark.png</file>
|
||||
</qresource>
|
||||
</RCC>
|
24
sources/main.cpp
Normal file
|
@ -0,0 +1,24 @@
|
|||
#include <QQuickStyle>
|
||||
#include <QGuiApplication>
|
||||
#include <QtQml/QQmlContext>
|
||||
#include <QQmlApplicationEngine>
|
||||
|
||||
#include "headers/serverconn.h"
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
|
||||
|
||||
QGuiApplication app(argc, argv);
|
||||
|
||||
QQuickStyle::setStyle("Material");
|
||||
|
||||
qmlRegisterType<ServerConn>("com.itsblue.digitalRockRanking", 1, 0, "ServerConn");
|
||||
|
||||
QQmlApplicationEngine engine;
|
||||
engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
|
||||
if (engine.rootObjects().isEmpty())
|
||||
return -1;
|
||||
|
||||
return app.exec();
|
||||
}
|
134
sources/serverconn.cpp
Normal file
|
@ -0,0 +1,134 @@
|
|||
#include "headers/serverconn.h"
|
||||
|
||||
ServerConn::ServerConn(QObject *parent) : QObject(parent)
|
||||
{
|
||||
}
|
||||
|
||||
void ServerConn::refreshFoodplan() {
|
||||
QVariant tmpFoodplan;
|
||||
|
||||
QVariantMap ret = this->senddata(QUrl("http://egw.ifsc-climbing.org/egw/ranking/json.php"));
|
||||
|
||||
if(ret["status"] != 200){
|
||||
// request was a failure
|
||||
return;
|
||||
}
|
||||
|
||||
QJsonDocument jsonReply = QJsonDocument::fromJson(ret["text"].toString().toUtf8());
|
||||
|
||||
this->foodplan = jsonReply.toVariant();
|
||||
|
||||
//qDebug() << this->foodplan;
|
||||
|
||||
emit this->foodplanChanged();
|
||||
}
|
||||
|
||||
QVariant ServerConn::getCalendar(QString nation){
|
||||
QVariantMap ret = this->senddata(QUrl("http://egw.ifsc-climbing.org/egw/ranking/json.php?year=2018&nation=" + nation));
|
||||
|
||||
if(ret["status"] != 200){
|
||||
// request was a failure
|
||||
return QVariantMap({{"status", ret["status"]}, {"data", ""}});
|
||||
}
|
||||
|
||||
QJsonDocument jsonReply = QJsonDocument::fromJson(ret["text"].toString().toUtf8());
|
||||
|
||||
QVariantMap rankingData = {{"status", 200}, {"data", jsonReply.toVariant()}};
|
||||
|
||||
return rankingData;
|
||||
}
|
||||
|
||||
QVariant ServerConn::getRanking(int competiotionId, int categoryId, bool registrationData, int routeNumber) {
|
||||
|
||||
QString requestUrl = "http://egw.ifsc-climbing.org/egw/ranking/json.php?comp="+ QString::number( competiotionId ) +"&cat="+ QString::number( categoryId ) + (registrationData ? "&type=starters":"") + "&route=" + ((routeNumber == -2) ? "":QString::number(routeNumber));
|
||||
|
||||
qDebug() << requestUrl;
|
||||
|
||||
QVariantMap ret = this->senddata(QUrl(requestUrl));
|
||||
|
||||
if(ret["status"] != 200){
|
||||
// request was a failure
|
||||
return QVariantMap({{"status", ret["status"]}, {"data", ""}});
|
||||
}
|
||||
|
||||
QJsonDocument jsonReply = QJsonDocument::fromJson(ret["text"].toString().toUtf8());
|
||||
|
||||
QVariantMap rankingData = {{"status", 200}, {"data", jsonReply.toVariant()}};
|
||||
|
||||
return rankingData;
|
||||
}
|
||||
|
||||
// ------------------------
|
||||
// --- Helper functions ---
|
||||
// ------------------------
|
||||
|
||||
QVariantMap ServerConn::senddata(QUrl serviceUrl, QUrlQuery pdata)
|
||||
{
|
||||
// create network manager
|
||||
QNetworkAccessManager * networkManager = new QNetworkAccessManager();
|
||||
|
||||
QVariantMap ret; //this is a custom type to store the return-data
|
||||
|
||||
// Create network request
|
||||
QNetworkRequest request(serviceUrl);
|
||||
request.setHeader(QNetworkRequest::ContentTypeHeader,
|
||||
"application/x-www-form-urlencoded");
|
||||
|
||||
QSslConfiguration config = QSslConfiguration::defaultConfiguration();
|
||||
config.setProtocol(QSsl::TlsV1_2);
|
||||
request.setSslConfiguration(config);
|
||||
|
||||
//send a POST request with the given url and data to the server
|
||||
|
||||
QNetworkReply *reply;
|
||||
|
||||
if(pdata.isEmpty()){
|
||||
// if no post data is given -> send a GET request
|
||||
reply = networkManager->get(request);
|
||||
}
|
||||
else {
|
||||
// if post data is given -> send POST request
|
||||
reply = networkManager->post(request, pdata.toString(QUrl::FullyEncoded).toUtf8());
|
||||
}
|
||||
|
||||
// loop to wait until the request has finished before processing the data
|
||||
QEventLoop loop;
|
||||
// timer to cancel the request after 3 seconds
|
||||
QTimer timer;
|
||||
timer.setSingleShot(true);
|
||||
|
||||
// quit the loop when the request finised
|
||||
loop.connect(networkManager, SIGNAL(finished(QNetworkReply*)), SLOT(quit()));
|
||||
// or the timer timed out
|
||||
loop.connect(&timer, SIGNAL(timeout()), &loop, SLOT(quit()));
|
||||
// start the timer
|
||||
timer.start(10000);
|
||||
// start the loop
|
||||
loop.exec();
|
||||
|
||||
//get the status code
|
||||
QVariant status_code = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute);
|
||||
|
||||
ret.insert("status", status_code.toInt());
|
||||
|
||||
//get the full text response
|
||||
ret.insert("text", QString::fromUtf8(reply->readAll()));
|
||||
|
||||
// delete the reply object
|
||||
delete reply;
|
||||
|
||||
// delete the newtwork access manager object
|
||||
delete networkManager;
|
||||
|
||||
//return the data
|
||||
return(ret);
|
||||
}
|
||||
|
||||
// -------------------------
|
||||
// --- Functions for QML ---
|
||||
// -------------------------
|
||||
|
||||
QVariant ServerConn::getFoodplan() {
|
||||
return this->foodplan;
|
||||
}
|
||||
|