This commit is contained in:
Markus
2020-06-26 11:01:32 +02:00
parent 7aeeab418d
commit acc1f165bb
306 changed files with 50735 additions and 5145 deletions

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject>
<!-- Written by QtCreator 4.8.1, 2019-06-10T20:58:06. -->
<!-- Written by QtCreator 4.8.2, 2020-04-28T18:29:25. -->
<qtcreator>
<data>
<variable>EnvironmentId</variable>

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject>
<!-- Written by QtCreator 4.8.1, 2019-06-06T18:59:52. -->
<!-- Written by QtCreator 4.11.0, 2020-06-18T20:32:31. -->
<qtcreator>
<data>
<variable>EnvironmentId</variable>
@@ -73,8 +73,6 @@
<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>
@@ -84,8 +82,6 @@
</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>
@@ -95,14 +91,12 @@
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Erstellen</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Erstellen</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>
@@ -112,25 +106,21 @@
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Bereinigen</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Bereinigen</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/markus/Qt/ALT/build-FliegerGame-Desktop-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>
@@ -140,8 +130,6 @@
</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>
@@ -151,14 +139,12 @@
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Erstellen</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Erstellen</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>
@@ -168,25 +154,21 @@
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Bereinigen</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Bereinigen</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/markus/Qt/ALT/build-FliegerGame-Desktop-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>
@@ -196,8 +178,6 @@
</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>
@@ -207,14 +187,12 @@
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Erstellen</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Erstellen</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>
@@ -224,34 +202,47 @@
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Bereinigen</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Bereinigen</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">Deployment</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Deploy</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deployment-Konfiguration</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="QString" key="Analyzer.Perf.CallgraphMode">dwarf</value>
<valuelist type="QVariantList" key="Analyzer.Perf.Events">
<value type="QString">cpu-cycles</value>
</valuelist>
<valuelist type="QVariantList" key="Analyzer.Perf.ExtraArguments"/>
<value type="int" key="Analyzer.Perf.Frequency">250</value>
<valuelist type="QVariantList" key="Analyzer.Perf.RecordArguments">
<value type="QString">-e</value>
<value type="QString">cpu-cycles</value>
<value type="QString">--call-graph</value>
<value type="QString">dwarf,4096</value>
<value type="QString">-F</value>
<value type="QString">250</value>
</valuelist>
<value type="QString" key="Analyzer.Perf.SampleMode">-F</value>
<value type="bool" key="Analyzer.Perf.Settings.UseGlobalSettings">true</value>
<value type="int" key="Analyzer.Perf.StackSize">4096</value>
<value type="bool" key="Analyzer.QmlProfiler.AggregateTraces">false</value>
<value type="bool" key="Analyzer.QmlProfiler.FlushEnabled">false</value>
<value type="uint" key="Analyzer.QmlProfiler.FlushInterval">1000</value>
@@ -266,6 +257,7 @@
<value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value>
<value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value>
<value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value>
<value type="QString" key="Analyzer.Valgrind.KCachegrindExecutable">kcachegrind</value>
<value type="int" key="Analyzer.Valgrind.LeakCheckOnFinish">1</value>
<value type="int" key="Analyzer.Valgrind.NumCallers">25</value>
<valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/>
@@ -293,12 +285,11 @@
</valuelist>
<value type="int" key="PE.EnvironmentAspect.Base">2</value>
<valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">FliegerGame</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:/home/markus/Qt/ALT/FliegerGame/FliegerGame.pro</value>
<value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.ProFile">FliegerGame.pro</value>
<value type="QString" key="ProjectExplorer.RunConfiguration.BuildKey">/home/markus/Qt/ALT/FliegerGame/FliegerGame.pro</value>
<value type="QString" key="RunConfiguration.Arguments"></value>
<value type="uint" key="RunConfiguration.QmlDebugServerPort">3768</value>
<value type="bool" key="RunConfiguration.Arguments.multi">false</value>
<value type="QString" key="RunConfiguration.OverrideDebuggerStartup"></value>
<value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
<value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
<value type="bool" key="RunConfiguration.UseLibrarySearchPath">true</value>
@@ -317,10 +308,10 @@
</data>
<data>
<variable>ProjectExplorer.Project.Updater.FileVersion</variable>
<value type="int">20</value>
<value type="int">22</value>
</data>
<data>
<variable>Version</variable>
<value type="int">20</value>
<value type="int">22</value>
</data>
</qtcreator>

View File

@@ -0,0 +1,326 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject>
<!-- Written by QtCreator 4.8.1, 2019-06-06T18:59:52. -->
<qtcreator>
<data>
<variable>EnvironmentId</variable>
<value type="QByteArray">{b70b24f1-46ad-4dd1-a8b9-3130fc5cbcc1}</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">Desktop</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">{f2adeb15-5e8d-4d85-a687-94c91141f754}</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/markus/Qt/ALT/build-FliegerGame-Desktop-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">Erstellen</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">Bereinigen</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/markus/Qt/ALT/build-FliegerGame-Desktop-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">Erstellen</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">Bereinigen</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/markus/Qt/ALT/build-FliegerGame-Desktop-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">Erstellen</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">Bereinigen</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">Deployment</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">Deployment-Konfiguration</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">FliegerGame</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:/home/markus/Qt/ALT/FliegerGame/FliegerGame.pro</value>
<value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.ProFile">FliegerGame.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/markus/Qt/ALT/build-FliegerGame-Desktop-Debug</value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.TargetCount</variable>
<value type="int">1</value>
</data>
<data>
<variable>ProjectExplorer.Project.Updater.FileVersion</variable>
<value type="int">20</value>
</data>
<data>
<variable>Version</variable>
<value type="int">20</value>
</data>
</qtcreator>

View File

@@ -1,13 +1,15 @@
#############################################################################
# Makefile for building: FliegerGame
# Generated by qmake (3.1) (Qt 5.12.0)
# Generated by qmake (3.1) (Qt 5.12.8)
# Project: ../FliegerGame/FliegerGame.pro
# Template: app
# Command: /usr/bin/qmake -o Makefile ../FliegerGame/FliegerGame.pro -spec linux-g++ CONFIG+=debug CONFIG+=qml_debug
# Command: /usr/lib/qt5/bin/qmake -o Makefile ../FliegerGame/FliegerGame.pro -spec linux-g++ CONFIG+=debug CONFIG+=qml_debug
#############################################################################
MAKEFILE = Makefile
EQ = =
####### Compiler, tools and options
CC = gcc
@@ -15,8 +17,8 @@ CXX = g++
DEFINES = -DQT_DEPRECATED_WARNINGS -DQT_QML_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB
CFLAGS = -pipe -g -Wall -W -D_REENTRANT -fPIC $(DEFINES)
CXXFLAGS = -pipe -g -Wall -W -D_REENTRANT -fPIC $(DEFINES)
INCPATH = -I../FliegerGame -I. -isystem /usr/include/qt -isystem /usr/include/qt/QtWidgets -isystem /usr/include/qt/QtGui -isystem /usr/include/qt/QtCore -I. -isystem /usr/include/libdrm -I/usr/lib/qt/mkspecs/linux-g++
QMAKE = /usr/bin/qmake
INCPATH = -I../FliegerGame -I. -isystem /usr/include/x86_64-linux-gnu/qt5 -isystem /usr/include/x86_64-linux-gnu/qt5/QtWidgets -isystem /usr/include/x86_64-linux-gnu/qt5/QtGui -isystem /usr/include/x86_64-linux-gnu/qt5/QtCore -I. -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++
QMAKE = /usr/lib/qt5/bin/qmake
DEL_FILE = rm -f
CHK_DIR_EXISTS= test -d
MKDIR = mkdir -p
@@ -26,8 +28,8 @@ COPY_DIR = cp -f -R
INSTALL_FILE = install -m 644 -p
INSTALL_PROGRAM = install -m 755 -p
INSTALL_DIR = cp -f -R
QINSTALL = /usr/bin/qmake -install qinstall
QINSTALL_PROGRAM = /usr/bin/qmake -install qinstall -exe
QINSTALL = /usr/lib/qt5/bin/qmake -install qinstall
QINSTALL_PROGRAM = /usr/lib/qt5/bin/qmake -install qinstall -exe
DEL_FILE = rm -f
SYMLINK = ln -f -s
DEL_DIR = rmdir
@@ -35,10 +37,10 @@ MOVE = mv -f
TAR = tar -cf
COMPRESS = gzip -9f
DISTNAME = FliegerGame1.0.0
DISTDIR = /home/markus/Qt/build-FliegerGame-Desktop-Debug/.tmp/FliegerGame1.0.0
DISTDIR = /home/markus/Qt/ALT/build-FliegerGame-Desktop-Debug/.tmp/FliegerGame1.0.0
LINK = g++
LFLAGS =
LIBS = $(SUBLIBS) -lQt5Widgets -lQt5Gui -lQt5Core -lGL -lpthread
LIBS = $(SUBLIBS) /usr/lib/x86_64-linux-gnu/libQt5Widgets.so /usr/lib/x86_64-linux-gnu/libQt5Gui.so /usr/lib/x86_64-linux-gnu/libQt5Core.so /usr/lib/x86_64-linux-gnu/libGL.so -lpthread
AR = ar cqs
RANLIB =
SED = sed
@@ -71,202 +73,97 @@ OBJECTS = Bullet.o \
moc_Bullet.o \
moc_Enemy.o \
moc_Player.o
DIST = /usr/lib/qt/mkspecs/features/spec_pre.prf \
/usr/lib/qt/mkspecs/common/unix.conf \
/usr/lib/qt/mkspecs/common/linux.conf \
/usr/lib/qt/mkspecs/common/sanitize.conf \
/usr/lib/qt/mkspecs/common/gcc-base.conf \
/usr/lib/qt/mkspecs/common/gcc-base-unix.conf \
/usr/lib/qt/mkspecs/common/g++-base.conf \
/usr/lib/qt/mkspecs/common/g++-unix.conf \
/usr/lib/qt/mkspecs/qconfig.pri \
/usr/lib/qt/mkspecs/modules/qt_KAuth.pri \
/usr/lib/qt/mkspecs/modules/qt_KCoreAddons.pri \
/usr/lib/qt/mkspecs/modules/qt_KItemModels.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_3danimation.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_3danimation_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_3dcore.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_3dcore_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_3dextras.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_3dextras_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_3dinput.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_3dinput_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_3dlogic.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_3dlogic_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_3dquick.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_3dquick_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_3dquickanimation.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_3dquickanimation_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_3dquickextras.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_3dquickextras_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_3dquickinput.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_3dquickinput_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_3dquickrender.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_3dquickrender_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_3dquickscene2d.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_3dquickscene2d_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_3drender.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_3drender_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_accessibility_support_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_bluetooth.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_bluetooth_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_bootstrap_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_charts.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_charts_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_concurrent.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_concurrent_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_core.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_core_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_datavisualization.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_datavisualization_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_dbus.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_dbus_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_designer.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_designer_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_designercomponents_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_devicediscovery_support_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_edid_support_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_egl_support_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_eglfs_kms_support_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_eglfsdeviceintegration_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_eventdispatcher_support_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_fb_support_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_fontdatabase_support_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_gamepad.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_gamepad_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_glx_support_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_gui.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_gui_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_help.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_help_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_hunspellinputmethod_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_input_support_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_kms_support_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_linuxaccessibility_support_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_location.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_location_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_multimedia.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_multimedia_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_multimediagsttools_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_multimediawidgets.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_multimediawidgets_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_network.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_network_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_networkauth.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_networkauth_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_nfc.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_nfc_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_opengl.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_opengl_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_openglextensions.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_openglextensions_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_packetprotocol_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_platformcompositor_support_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_positioning.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_positioning_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_positioningquick.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_positioningquick_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_printsupport.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_printsupport_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_qml.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_qml_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_qmldebug_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_qmldevtools_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_qmltest.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_qmltest_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_qtmultimediaquicktools_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_quick.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_quick_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_quickcontrols2.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_quickcontrols2_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_quickparticles_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_quickshapes_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_quicktemplates2_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_quickwidgets.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_quickwidgets_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_remoteobjects.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_remoteobjects_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_repparser.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_repparser_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_script.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_script_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_scripttools.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_scripttools_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_scxml.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_scxml_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_sensors.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_sensors_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_serialbus.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_serialbus_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_serialport.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_serialport_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_service_support_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_sql.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_sql_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_svg.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_svg_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_testlib.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_testlib_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_texttospeech.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_texttospeech_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_theme_support_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_uiplugin.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_uitools.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_uitools_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_virtualkeyboard.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_virtualkeyboard_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_vulkan_support_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_waylandclient.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_waylandclient_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_waylandcompositor.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_waylandcompositor_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_webchannel.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_webchannel_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_webengine.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_webengine_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_webenginecore.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_webenginecore_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_webenginecoreheaders_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_webenginewidgets.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_webenginewidgets_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_webkit.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_webkitwidgets.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_websockets.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_websockets_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_webview.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_webview_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_widgets.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_widgets_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_x11extras.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_x11extras_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_xcb_qpa_lib_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_xml.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_xml_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_xmlpatterns.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_xmlpatterns_private.pri \
/usr/lib/qt/mkspecs/features/qt_functions.prf \
/usr/lib/qt/mkspecs/features/qt_config.prf \
/usr/lib/qt/mkspecs/linux-g++/qmake.conf \
/usr/lib/qt/mkspecs/features/spec_post.prf \
/usr/lib/qt/mkspecs/features/exclusive_builds.prf \
/usr/lib/qt/mkspecs/features/toolchain.prf \
/usr/lib/qt/mkspecs/features/default_pre.prf \
/usr/lib/qt/mkspecs/features/resolve_config.prf \
/usr/lib/qt/mkspecs/features/default_post.prf \
/usr/lib/qt/mkspecs/features/qml_debug.prf \
/usr/lib/qt/mkspecs/features/warn_on.prf \
/usr/lib/qt/mkspecs/features/qt.prf \
/usr/lib/qt/mkspecs/features/resources.prf \
/usr/lib/qt/mkspecs/features/moc.prf \
/usr/lib/qt/mkspecs/features/unix/opengl.prf \
/usr/lib/qt/mkspecs/features/uic.prf \
/usr/lib/qt/mkspecs/features/unix/thread.prf \
/usr/lib/qt/mkspecs/features/qmake_use.prf \
/usr/lib/qt/mkspecs/features/file_copies.prf \
/usr/lib/qt/mkspecs/features/testcase_targets.prf \
/usr/lib/qt/mkspecs/features/exceptions.prf \
/usr/lib/qt/mkspecs/features/yacc.prf \
/usr/lib/qt/mkspecs/features/lex.prf \
DIST = /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/spec_pre.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/unix.conf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/linux.conf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/sanitize.conf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/gcc-base.conf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/gcc-base-unix.conf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/g++-base.conf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/g++-unix.conf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/qconfig.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_accessibility_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_bootstrap_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_concurrent.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_concurrent_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_core.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_core_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_datavisualization.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dbus.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dbus_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_devicediscovery_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_edid_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_egl_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_eglfs_kms_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_eglfsdeviceintegration_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_eventdispatcher_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_fb_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_fontdatabase_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_glx_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_gui.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_gui_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_input_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_kms_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_linuxaccessibility_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_multimedia.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_multimediawidgets.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_network.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_network_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_networkauth.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_opengl.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_opengl_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_openglextensions.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_openglextensions_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_platformcompositor_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_printsupport.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_printsupport_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qml.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qmltest.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_quick.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_quickwidgets.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_service_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_sql.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_sql_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_testlib.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_testlib_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_theme_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_vulkan_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_waylandclient.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_waylandcompositor.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_webchannel.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_webkit.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_webkitwidgets.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_websockets.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_webview.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_widgets.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_widgets_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xcb_qpa_lib_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xml.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xml_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_Qt5Keychain.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qt_functions.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qt_config.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++/qmake.conf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/spec_post.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/exclusive_builds.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/toolchain.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/default_pre.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/resolve_config.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/default_post.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qml_debug.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/warn_on.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qt.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/resources.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/moc.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/unix/opengl.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/uic.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/unix/thread.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qmake_use.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/file_copies.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/testcase_targets.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/exceptions.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/yacc.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/lex.prf \
../FliegerGame/FliegerGame.pro ../FliegerGame/Bullet.h \
../FliegerGame/Enemy.h \
../FliegerGame/Game.h \
@@ -290,409 +187,193 @@ first: all
FliegerGame: $(OBJECTS)
$(LINK) $(LFLAGS) -o $(TARGET) $(OBJECTS) $(OBJCOMP) $(LIBS)
Makefile: ../FliegerGame/FliegerGame.pro /usr/lib/qt/mkspecs/linux-g++/qmake.conf /usr/lib/qt/mkspecs/features/spec_pre.prf \
/usr/lib/qt/mkspecs/common/unix.conf \
/usr/lib/qt/mkspecs/common/linux.conf \
/usr/lib/qt/mkspecs/common/sanitize.conf \
/usr/lib/qt/mkspecs/common/gcc-base.conf \
/usr/lib/qt/mkspecs/common/gcc-base-unix.conf \
/usr/lib/qt/mkspecs/common/g++-base.conf \
/usr/lib/qt/mkspecs/common/g++-unix.conf \
/usr/lib/qt/mkspecs/qconfig.pri \
/usr/lib/qt/mkspecs/modules/qt_KAuth.pri \
/usr/lib/qt/mkspecs/modules/qt_KCoreAddons.pri \
/usr/lib/qt/mkspecs/modules/qt_KItemModels.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_3danimation.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_3danimation_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_3dcore.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_3dcore_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_3dextras.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_3dextras_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_3dinput.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_3dinput_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_3dlogic.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_3dlogic_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_3dquick.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_3dquick_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_3dquickanimation.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_3dquickanimation_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_3dquickextras.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_3dquickextras_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_3dquickinput.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_3dquickinput_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_3dquickrender.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_3dquickrender_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_3dquickscene2d.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_3dquickscene2d_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_3drender.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_3drender_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_accessibility_support_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_bluetooth.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_bluetooth_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_bootstrap_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_charts.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_charts_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_concurrent.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_concurrent_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_core.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_core_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_datavisualization.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_datavisualization_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_dbus.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_dbus_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_designer.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_designer_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_designercomponents_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_devicediscovery_support_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_edid_support_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_egl_support_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_eglfs_kms_support_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_eglfsdeviceintegration_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_eventdispatcher_support_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_fb_support_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_fontdatabase_support_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_gamepad.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_gamepad_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_glx_support_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_gui.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_gui_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_help.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_help_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_hunspellinputmethod_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_input_support_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_kms_support_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_linuxaccessibility_support_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_location.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_location_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_multimedia.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_multimedia_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_multimediagsttools_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_multimediawidgets.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_multimediawidgets_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_network.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_network_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_networkauth.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_networkauth_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_nfc.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_nfc_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_opengl.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_opengl_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_openglextensions.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_openglextensions_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_packetprotocol_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_platformcompositor_support_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_positioning.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_positioning_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_positioningquick.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_positioningquick_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_printsupport.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_printsupport_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_qml.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_qml_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_qmldebug_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_qmldevtools_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_qmltest.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_qmltest_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_qtmultimediaquicktools_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_quick.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_quick_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_quickcontrols2.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_quickcontrols2_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_quickparticles_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_quickshapes_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_quicktemplates2_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_quickwidgets.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_quickwidgets_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_remoteobjects.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_remoteobjects_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_repparser.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_repparser_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_script.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_script_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_scripttools.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_scripttools_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_scxml.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_scxml_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_sensors.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_sensors_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_serialbus.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_serialbus_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_serialport.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_serialport_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_service_support_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_sql.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_sql_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_svg.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_svg_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_testlib.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_testlib_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_texttospeech.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_texttospeech_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_theme_support_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_uiplugin.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_uitools.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_uitools_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_virtualkeyboard.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_virtualkeyboard_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_vulkan_support_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_waylandclient.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_waylandclient_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_waylandcompositor.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_waylandcompositor_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_webchannel.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_webchannel_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_webengine.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_webengine_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_webenginecore.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_webenginecore_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_webenginecoreheaders_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_webenginewidgets.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_webenginewidgets_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_webkit.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_webkitwidgets.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_websockets.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_websockets_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_webview.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_webview_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_widgets.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_widgets_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_x11extras.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_x11extras_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_xcb_qpa_lib_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_xml.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_xml_private.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_xmlpatterns.pri \
/usr/lib/qt/mkspecs/modules/qt_lib_xmlpatterns_private.pri \
/usr/lib/qt/mkspecs/features/qt_functions.prf \
/usr/lib/qt/mkspecs/features/qt_config.prf \
/usr/lib/qt/mkspecs/linux-g++/qmake.conf \
/usr/lib/qt/mkspecs/features/spec_post.prf \
/usr/lib/qt/mkspecs/features/exclusive_builds.prf \
/usr/lib/qt/mkspecs/features/toolchain.prf \
/usr/lib/qt/mkspecs/features/default_pre.prf \
/usr/lib/qt/mkspecs/features/resolve_config.prf \
/usr/lib/qt/mkspecs/features/default_post.prf \
/usr/lib/qt/mkspecs/features/qml_debug.prf \
/usr/lib/qt/mkspecs/features/warn_on.prf \
/usr/lib/qt/mkspecs/features/qt.prf \
/usr/lib/qt/mkspecs/features/resources.prf \
/usr/lib/qt/mkspecs/features/moc.prf \
/usr/lib/qt/mkspecs/features/unix/opengl.prf \
/usr/lib/qt/mkspecs/features/uic.prf \
/usr/lib/qt/mkspecs/features/unix/thread.prf \
/usr/lib/qt/mkspecs/features/qmake_use.prf \
/usr/lib/qt/mkspecs/features/file_copies.prf \
/usr/lib/qt/mkspecs/features/testcase_targets.prf \
/usr/lib/qt/mkspecs/features/exceptions.prf \
/usr/lib/qt/mkspecs/features/yacc.prf \
/usr/lib/qt/mkspecs/features/lex.prf \
Makefile: ../FliegerGame/FliegerGame.pro /usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++/qmake.conf /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/spec_pre.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/unix.conf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/linux.conf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/sanitize.conf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/gcc-base.conf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/gcc-base-unix.conf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/g++-base.conf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/g++-unix.conf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/qconfig.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_accessibility_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_bootstrap_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_concurrent.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_concurrent_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_core.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_core_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_datavisualization.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dbus.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dbus_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_devicediscovery_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_edid_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_egl_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_eglfs_kms_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_eglfsdeviceintegration_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_eventdispatcher_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_fb_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_fontdatabase_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_glx_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_gui.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_gui_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_input_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_kms_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_linuxaccessibility_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_multimedia.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_multimediawidgets.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_network.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_network_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_networkauth.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_opengl.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_opengl_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_openglextensions.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_openglextensions_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_platformcompositor_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_printsupport.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_printsupport_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qml.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qmltest.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_quick.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_quickwidgets.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_service_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_sql.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_sql_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_testlib.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_testlib_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_theme_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_vulkan_support_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_waylandclient.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_waylandcompositor.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_webchannel.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_webkit.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_webkitwidgets.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_websockets.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_webview.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_widgets.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_widgets_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xcb_qpa_lib_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xml.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xml_private.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_Qt5Keychain.pri \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qt_functions.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qt_config.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++/qmake.conf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/spec_post.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/exclusive_builds.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/toolchain.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/default_pre.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/resolve_config.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/default_post.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qml_debug.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/warn_on.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qt.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/resources.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/moc.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/unix/opengl.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/uic.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/unix/thread.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qmake_use.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/file_copies.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/testcase_targets.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/exceptions.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/yacc.prf \
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/lex.prf \
../FliegerGame/FliegerGame.pro \
../FliegerGame/resourcen.qrc \
/usr/lib/libQt5Widgets.prl \
/usr/lib/libQt5Gui.prl \
/usr/lib/libQt5Core.prl
../FliegerGame/resourcen.qrc
$(QMAKE) -o Makefile ../FliegerGame/FliegerGame.pro -spec linux-g++ CONFIG+=debug CONFIG+=qml_debug
/usr/lib/qt/mkspecs/features/spec_pre.prf:
/usr/lib/qt/mkspecs/common/unix.conf:
/usr/lib/qt/mkspecs/common/linux.conf:
/usr/lib/qt/mkspecs/common/sanitize.conf:
/usr/lib/qt/mkspecs/common/gcc-base.conf:
/usr/lib/qt/mkspecs/common/gcc-base-unix.conf:
/usr/lib/qt/mkspecs/common/g++-base.conf:
/usr/lib/qt/mkspecs/common/g++-unix.conf:
/usr/lib/qt/mkspecs/qconfig.pri:
/usr/lib/qt/mkspecs/modules/qt_KAuth.pri:
/usr/lib/qt/mkspecs/modules/qt_KCoreAddons.pri:
/usr/lib/qt/mkspecs/modules/qt_KItemModels.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_3danimation.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_3danimation_private.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_3dcore.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_3dcore_private.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_3dextras.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_3dextras_private.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_3dinput.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_3dinput_private.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_3dlogic.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_3dlogic_private.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_3dquick.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_3dquick_private.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_3dquickanimation.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_3dquickanimation_private.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_3dquickextras.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_3dquickextras_private.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_3dquickinput.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_3dquickinput_private.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_3dquickrender.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_3dquickrender_private.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_3dquickscene2d.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_3dquickscene2d_private.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_3drender.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_3drender_private.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_accessibility_support_private.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_bluetooth.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_bluetooth_private.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_bootstrap_private.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_charts.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_charts_private.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_concurrent.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_concurrent_private.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_core.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_core_private.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_datavisualization.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_datavisualization_private.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_dbus.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_dbus_private.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_designer.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_designer_private.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_designercomponents_private.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_devicediscovery_support_private.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_edid_support_private.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_egl_support_private.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_eglfs_kms_support_private.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_eglfsdeviceintegration_private.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_eventdispatcher_support_private.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_fb_support_private.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_fontdatabase_support_private.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_gamepad.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_gamepad_private.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_glx_support_private.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_gui.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_gui_private.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_help.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_help_private.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_hunspellinputmethod_private.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_input_support_private.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_kms_support_private.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_linuxaccessibility_support_private.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_location.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_location_private.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_multimedia.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_multimedia_private.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_multimediagsttools_private.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_multimediawidgets.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_multimediawidgets_private.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_network.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_network_private.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_networkauth.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_networkauth_private.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_nfc.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_nfc_private.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_opengl.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_opengl_private.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_openglextensions.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_openglextensions_private.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_packetprotocol_private.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_platformcompositor_support_private.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_positioning.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_positioning_private.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_positioningquick.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_positioningquick_private.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_printsupport.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_printsupport_private.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_qml.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_qml_private.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_qmldebug_private.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_qmldevtools_private.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_qmltest.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_qmltest_private.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_qtmultimediaquicktools_private.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_quick.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_quick_private.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_quickcontrols2.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_quickcontrols2_private.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_quickparticles_private.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_quickshapes_private.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_quicktemplates2_private.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_quickwidgets.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_quickwidgets_private.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_remoteobjects.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_remoteobjects_private.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_repparser.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_repparser_private.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_script.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_script_private.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_scripttools.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_scripttools_private.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_scxml.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_scxml_private.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_sensors.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_sensors_private.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_serialbus.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_serialbus_private.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_serialport.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_serialport_private.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_service_support_private.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_sql.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_sql_private.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_svg.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_svg_private.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_testlib.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_testlib_private.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_texttospeech.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_texttospeech_private.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_theme_support_private.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_uiplugin.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_uitools.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_uitools_private.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_virtualkeyboard.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_virtualkeyboard_private.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_vulkan_support_private.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_waylandclient.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_waylandclient_private.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_waylandcompositor.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_waylandcompositor_private.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_webchannel.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_webchannel_private.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_webengine.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_webengine_private.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_webenginecore.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_webenginecore_private.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_webenginecoreheaders_private.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_webenginewidgets.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_webenginewidgets_private.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_webkit.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_webkitwidgets.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_websockets.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_websockets_private.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_webview.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_webview_private.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_widgets.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_widgets_private.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_x11extras.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_x11extras_private.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_xcb_qpa_lib_private.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_xml.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_xml_private.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_xmlpatterns.pri:
/usr/lib/qt/mkspecs/modules/qt_lib_xmlpatterns_private.pri:
/usr/lib/qt/mkspecs/features/qt_functions.prf:
/usr/lib/qt/mkspecs/features/qt_config.prf:
/usr/lib/qt/mkspecs/linux-g++/qmake.conf:
/usr/lib/qt/mkspecs/features/spec_post.prf:
/usr/lib/qt/mkspecs/features/exclusive_builds.prf:
/usr/lib/qt/mkspecs/features/toolchain.prf:
/usr/lib/qt/mkspecs/features/default_pre.prf:
/usr/lib/qt/mkspecs/features/resolve_config.prf:
/usr/lib/qt/mkspecs/features/default_post.prf:
/usr/lib/qt/mkspecs/features/qml_debug.prf:
/usr/lib/qt/mkspecs/features/warn_on.prf:
/usr/lib/qt/mkspecs/features/qt.prf:
/usr/lib/qt/mkspecs/features/resources.prf:
/usr/lib/qt/mkspecs/features/moc.prf:
/usr/lib/qt/mkspecs/features/unix/opengl.prf:
/usr/lib/qt/mkspecs/features/uic.prf:
/usr/lib/qt/mkspecs/features/unix/thread.prf:
/usr/lib/qt/mkspecs/features/qmake_use.prf:
/usr/lib/qt/mkspecs/features/file_copies.prf:
/usr/lib/qt/mkspecs/features/testcase_targets.prf:
/usr/lib/qt/mkspecs/features/exceptions.prf:
/usr/lib/qt/mkspecs/features/yacc.prf:
/usr/lib/qt/mkspecs/features/lex.prf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/spec_pre.prf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/unix.conf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/linux.conf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/sanitize.conf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/gcc-base.conf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/gcc-base-unix.conf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/g++-base.conf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/common/g++-unix.conf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/qconfig.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_accessibility_support_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_bootstrap_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_concurrent.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_concurrent_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_core.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_core_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_datavisualization.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dbus.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_dbus_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_devicediscovery_support_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_edid_support_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_egl_support_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_eglfs_kms_support_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_eglfsdeviceintegration_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_eventdispatcher_support_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_fb_support_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_fontdatabase_support_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_glx_support_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_gui.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_gui_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_input_support_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_kms_support_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_linuxaccessibility_support_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_multimedia.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_multimediawidgets.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_network.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_network_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_networkauth.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_opengl.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_opengl_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_openglextensions.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_openglextensions_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_platformcompositor_support_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_printsupport.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_printsupport_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qml.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_qmltest.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_quick.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_quickwidgets.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_service_support_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_sql.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_sql_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_testlib.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_testlib_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_theme_support_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_vulkan_support_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_waylandclient.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_waylandcompositor.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_webchannel.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_webkit.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_webkitwidgets.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_websockets.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_webview.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_widgets.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_widgets_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xcb_qpa_lib_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xml.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_lib_xml_private.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/modules/qt_Qt5Keychain.pri:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qt_functions.prf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qt_config.prf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++/qmake.conf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/spec_post.prf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/exclusive_builds.prf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/toolchain.prf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/default_pre.prf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/resolve_config.prf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/default_post.prf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qml_debug.prf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/warn_on.prf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qt.prf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/resources.prf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/moc.prf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/unix/opengl.prf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/uic.prf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/unix/thread.prf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/qmake_use.prf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/file_copies.prf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/testcase_targets.prf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/exceptions.prf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/yacc.prf:
/usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/lex.prf:
../FliegerGame/FliegerGame.pro:
../FliegerGame/resourcen.qrc:
/usr/lib/libQt5Widgets.prl:
/usr/lib/libQt5Gui.prl:
/usr/lib/libQt5Core.prl:
qmake: FORCE
@$(QMAKE) -o Makefile ../FliegerGame/FliegerGame.pro -spec linux-g++ CONFIG+=debug CONFIG+=qml_debug
@@ -708,7 +389,7 @@ distdir: FORCE
@test -d $(DISTDIR) || mkdir -p $(DISTDIR)
$(COPY_FILE) --parents $(DIST) $(DISTDIR)/
$(COPY_FILE) --parents ../FliegerGame/resourcen.qrc $(DISTDIR)/
$(COPY_FILE) --parents /usr/lib/qt/mkspecs/features/data/dummy.cpp $(DISTDIR)/
$(COPY_FILE) --parents /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/data/dummy.cpp $(DISTDIR)/
$(COPY_FILE) --parents ../FliegerGame/Bullet.h ../FliegerGame/Enemy.h ../FliegerGame/Game.h ../FliegerGame/Health.h ../FliegerGame/Player.h ../FliegerGame/Score.h $(DISTDIR)/
$(COPY_FILE) --parents ../FliegerGame/Bullet.cpp ../FliegerGame/Enemy.cpp ../FliegerGame/Game.cpp ../FliegerGame/Health.cpp ../FliegerGame/Player.cpp ../FliegerGame/Score.cpp ../FliegerGame/main.cpp $(DISTDIR)/
@@ -738,7 +419,7 @@ compiler_rcc_make_all: qrc_resourcen.cpp
compiler_rcc_clean:
-$(DEL_FILE) qrc_resourcen.cpp
qrc_resourcen.cpp: ../FliegerGame/resourcen.qrc \
/usr/bin/rcc \
/usr/lib/qt5/bin/rcc \
../FliegerGame/an.png \
../FliegerGame/Enemy.png \
../FliegerGame/s.jpeg \
@@ -746,33 +427,33 @@ qrc_resourcen.cpp: ../FliegerGame/resourcen.qrc \
../FliegerGame/hkm.mp3 \
../FliegerGame/gun1.mp3 \
../FliegerGame/boom.mp3
/usr/bin/rcc -name resourcen ../FliegerGame/resourcen.qrc -o qrc_resourcen.cpp
/usr/lib/qt5/bin/rcc -name resourcen ../FliegerGame/resourcen.qrc -o qrc_resourcen.cpp
compiler_moc_predefs_make_all: moc_predefs.h
compiler_moc_predefs_clean:
-$(DEL_FILE) moc_predefs.h
moc_predefs.h: /usr/lib/qt/mkspecs/features/data/dummy.cpp
g++ -pipe -g -Wall -W -dM -E -o moc_predefs.h /usr/lib/qt/mkspecs/features/data/dummy.cpp
moc_predefs.h: /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/data/dummy.cpp
g++ -pipe -g -Wall -W -dM -E -o moc_predefs.h /usr/lib/x86_64-linux-gnu/qt5/mkspecs/features/data/dummy.cpp
compiler_moc_header_make_all: moc_Bullet.cpp moc_Enemy.cpp moc_Player.cpp
compiler_moc_header_clean:
-$(DEL_FILE) moc_Bullet.cpp moc_Enemy.cpp moc_Player.cpp
moc_Bullet.cpp: ../FliegerGame/Bullet.h \
moc_predefs.h \
/usr/bin/moc
/usr/bin/moc $(DEFINES) --include /home/markus/Qt/build-FliegerGame-Desktop-Debug/moc_predefs.h -I/usr/lib/qt/mkspecs/linux-g++ -I/home/markus/Qt/FliegerGame -I/usr/include/qt -I/usr/include/qt/QtWidgets -I/usr/include/qt/QtGui -I/usr/include/qt/QtCore -I. -I/usr/include/c++/8.2.1 -I/usr/include/c++/8.2.1/x86_64-pc-linux-gnu -I/usr/include/c++/8.2.1/backward -I/usr/lib/gcc/x86_64-pc-linux-gnu/8.2.1/include -I/usr/local/include -I/usr/lib/gcc/x86_64-pc-linux-gnu/8.2.1/include-fixed -I/usr/include ../FliegerGame/Bullet.h -o moc_Bullet.cpp
/usr/lib/qt5/bin/moc
/usr/lib/qt5/bin/moc $(DEFINES) --include /home/markus/Qt/ALT/build-FliegerGame-Desktop-Debug/moc_predefs.h -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -I/home/markus/Qt/ALT/FliegerGame -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I. -I/usr/include/c++/9 -I/usr/include/x86_64-linux-gnu/c++/9 -I/usr/include/c++/9/backward -I/usr/lib/gcc/x86_64-linux-gnu/9/include -I/usr/local/include -I/usr/include/x86_64-linux-gnu -I/usr/include ../FliegerGame/Bullet.h -o moc_Bullet.cpp
moc_Enemy.cpp: ../FliegerGame/Enemy.h \
moc_predefs.h \
/usr/bin/moc
/usr/bin/moc $(DEFINES) --include /home/markus/Qt/build-FliegerGame-Desktop-Debug/moc_predefs.h -I/usr/lib/qt/mkspecs/linux-g++ -I/home/markus/Qt/FliegerGame -I/usr/include/qt -I/usr/include/qt/QtWidgets -I/usr/include/qt/QtGui -I/usr/include/qt/QtCore -I. -I/usr/include/c++/8.2.1 -I/usr/include/c++/8.2.1/x86_64-pc-linux-gnu -I/usr/include/c++/8.2.1/backward -I/usr/lib/gcc/x86_64-pc-linux-gnu/8.2.1/include -I/usr/local/include -I/usr/lib/gcc/x86_64-pc-linux-gnu/8.2.1/include-fixed -I/usr/include ../FliegerGame/Enemy.h -o moc_Enemy.cpp
/usr/lib/qt5/bin/moc
/usr/lib/qt5/bin/moc $(DEFINES) --include /home/markus/Qt/ALT/build-FliegerGame-Desktop-Debug/moc_predefs.h -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -I/home/markus/Qt/ALT/FliegerGame -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I. -I/usr/include/c++/9 -I/usr/include/x86_64-linux-gnu/c++/9 -I/usr/include/c++/9/backward -I/usr/lib/gcc/x86_64-linux-gnu/9/include -I/usr/local/include -I/usr/include/x86_64-linux-gnu -I/usr/include ../FliegerGame/Enemy.h -o moc_Enemy.cpp
moc_Player.cpp: ../FliegerGame/Bullet.h \
moc_Player.cpp: ../FliegerGame/Player.h \
../FliegerGame/Bullet.h \
../FliegerGame/Enemy.h \
../FliegerGame/Player.h \
moc_predefs.h \
/usr/bin/moc
/usr/bin/moc $(DEFINES) --include /home/markus/Qt/build-FliegerGame-Desktop-Debug/moc_predefs.h -I/usr/lib/qt/mkspecs/linux-g++ -I/home/markus/Qt/FliegerGame -I/usr/include/qt -I/usr/include/qt/QtWidgets -I/usr/include/qt/QtGui -I/usr/include/qt/QtCore -I. -I/usr/include/c++/8.2.1 -I/usr/include/c++/8.2.1/x86_64-pc-linux-gnu -I/usr/include/c++/8.2.1/backward -I/usr/lib/gcc/x86_64-pc-linux-gnu/8.2.1/include -I/usr/local/include -I/usr/lib/gcc/x86_64-pc-linux-gnu/8.2.1/include-fixed -I/usr/include ../FliegerGame/Player.h -o moc_Player.cpp
/usr/lib/qt5/bin/moc
/usr/lib/qt5/bin/moc $(DEFINES) --include /home/markus/Qt/ALT/build-FliegerGame-Desktop-Debug/moc_predefs.h -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -I/home/markus/Qt/ALT/FliegerGame -I/usr/include/x86_64-linux-gnu/qt5 -I/usr/include/x86_64-linux-gnu/qt5/QtWidgets -I/usr/include/x86_64-linux-gnu/qt5/QtGui -I/usr/include/x86_64-linux-gnu/qt5/QtCore -I. -I/usr/include/c++/9 -I/usr/include/x86_64-linux-gnu/c++/9 -I/usr/include/c++/9/backward -I/usr/lib/gcc/x86_64-linux-gnu/9/include -I/usr/local/include -I/usr/include/x86_64-linux-gnu -I/usr/include ../FliegerGame/Player.h -o moc_Player.cpp
compiler_moc_objc_header_make_all:
compiler_moc_objc_header_clean:

View File

@@ -1,7 +1,7 @@
/****************************************************************************
** Meta object code from reading C++ file 'Bullet.h'
**
** Created by: The Qt Meta Object Compiler version 67 (Qt 5.12.0)
** Created by: The Qt Meta Object Compiler version 67 (Qt 5.12.8)
**
** WARNING! All changes made in this file will be lost!
*****************************************************************************/
@@ -12,7 +12,7 @@
#if !defined(Q_MOC_OUTPUT_REVISION)
#error "The header file 'Bullet.h' doesn't include <QObject>."
#elif Q_MOC_OUTPUT_REVISION != 67
#error "This file was generated using the moc from 5.12.0. It"
#error "This file was generated using the moc from 5.12.8. It"
#error "cannot be used with the include files from this version of Qt."
#error "(The moc has changed too much.)"
#endif
@@ -65,7 +65,7 @@ static const uint qt_meta_data_Bullet[] = {
void Bullet::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a)
{
if (_c == QMetaObject::InvokeMetaMethod) {
Bullet *_t = static_cast<Bullet *>(_o);
auto *_t = static_cast<Bullet *>(_o);
Q_UNUSED(_t)
switch (_id) {
case 0: _t->move(); break;

View File

@@ -1,7 +1,7 @@
/****************************************************************************
** Meta object code from reading C++ file 'Enemy.h'
**
** Created by: The Qt Meta Object Compiler version 67 (Qt 5.12.0)
** Created by: The Qt Meta Object Compiler version 67 (Qt 5.12.8)
**
** WARNING! All changes made in this file will be lost!
*****************************************************************************/
@@ -12,7 +12,7 @@
#if !defined(Q_MOC_OUTPUT_REVISION)
#error "The header file 'Enemy.h' doesn't include <QObject>."
#elif Q_MOC_OUTPUT_REVISION != 67
#error "This file was generated using the moc from 5.12.0. It"
#error "This file was generated using the moc from 5.12.8. It"
#error "cannot be used with the include files from this version of Qt."
#error "(The moc has changed too much.)"
#endif
@@ -65,7 +65,7 @@ static const uint qt_meta_data_Enemy[] = {
void Enemy::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a)
{
if (_c == QMetaObject::InvokeMetaMethod) {
Enemy *_t = static_cast<Enemy *>(_o);
auto *_t = static_cast<Enemy *>(_o);
Q_UNUSED(_t)
switch (_id) {
case 0: _t->move(); break;

View File

@@ -1,7 +1,7 @@
/****************************************************************************
** Meta object code from reading C++ file 'Player.h'
**
** Created by: The Qt Meta Object Compiler version 67 (Qt 5.12.0)
** Created by: The Qt Meta Object Compiler version 67 (Qt 5.12.8)
**
** WARNING! All changes made in this file will be lost!
*****************************************************************************/
@@ -12,7 +12,7 @@
#if !defined(Q_MOC_OUTPUT_REVISION)
#error "The header file 'Player.h' doesn't include <QObject>."
#elif Q_MOC_OUTPUT_REVISION != 67
#error "This file was generated using the moc from 5.12.0. It"
#error "This file was generated using the moc from 5.12.8. It"
#error "cannot be used with the include files from this version of Qt."
#error "(The moc has changed too much.)"
#endif
@@ -65,7 +65,7 @@ static const uint qt_meta_data_Player[] = {
void Player::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a)
{
if (_c == QMetaObject::InvokeMetaMethod) {
Player *_t = static_cast<Player *>(_o);
auto *_t = static_cast<Player *>(_o);
Q_UNUSED(_t)
switch (_id) {
case 0: _t->spawn(); break;

View File

@@ -31,6 +31,7 @@
#define __unix__ 1
#define __cpp_binary_literals 201304
#define __FLT64_DECIMAL_DIG__ 17
#define __CET__ 3
#define __GCC_ATOMIC_CHAR32_T_LOCK_FREE 2
#define __x86_64 1
#define __cpp_variadic_templates 200704
@@ -39,9 +40,10 @@
#define __DBL_MIN_10_EXP__ (-307)
#define __FINITE_MATH_ONLY__ 0
#define __cpp_variable_templates 201304
#define __GNUC_PATCHLEVEL__ 1
#define __GNUC_PATCHLEVEL__ 0
#define __FLT32_HAS_DENORM__ 1
#define __UINT_FAST8_MAX__ 0xff
#define __cpp_rvalue_reference 200610
#define __has_include(STR) __has_include__(STR)
#define __DEC64_MAX_EXP__ 385
#define __INT8_C(c) c
@@ -105,7 +107,7 @@
#define __FLT64X_MIN_10_EXP__ (-4931)
#define __LDBL_HAS_QUIET_NAN__ 1
#define __FLT64_MANT_DIG__ 53
#define __GNUC__ 8
#define __GNUC__ 9
#define __GXX_RTTI 1
#define __pie__ 2
#define __MMX__ 1
@@ -120,6 +122,7 @@
#define __cpp_raw_strings 200710
#define __INT_FAST32_MAX__ 0x7fffffffffffffffL
#define __DBL_HAS_INFINITY__ 1
#define __HAVE_SPECULATION_SAFE_VALUE 1
#define __DEC32_MIN_EXP__ (-94)
#define __INTPTR_WIDTH__ 64
#define __FLT32X_HAS_DENORM__ 1
@@ -142,10 +145,9 @@
#define __amd64 1
#define __ATOMIC_HLE_ACQUIRE 65536
#define __FLT32_HAS_QUIET_NAN__ 1
#define __GNUG__ 8
#define __GNUG__ 9
#define __LONG_LONG_MAX__ 0x7fffffffffffffffLL
#define __SIZEOF_SIZE_T__ 8
#define __cpp_rvalue_reference 200610
#define __cpp_nsdmi 200809
#define __FLT64X_MIN_EXP__ (-16381)
#define __SIZEOF_WINT_T__ 4
@@ -171,13 +173,12 @@
#define __DEC128_MIN__ 1E-6143DL
#define __REGISTER_PREFIX__
#define __UINT16_MAX__ 0xffff
#define __DBL_HAS_DENORM__ 1
#define __FLT32_MIN__ 1.17549435082228750796873653722224568e-38F32
#define __UINT8_TYPE__ unsigned char
#define __NO_INLINE__ 1
#define __FLT_MANT_DIG__ 24
#define __LDBL_DECIMAL_DIG__ 21
#define __VERSION__ "8.2.1 20181127"
#define __VERSION__ "9.3.0"
#define __UINT64_C(c) c ## UL
#define __cpp_unicode_characters 200704
#define _STDC_PREDEF_H 1
@@ -199,6 +200,7 @@
#define __UINT_LEAST16_TYPE__ short unsigned int
#define __FLT64X_HAS_INFINITY__ 1
#define unix 1
#define __DBL_HAS_DENORM__ 1
#define __INT16_MAX__ 0x7fff
#define __cpp_rtti 199711
#define __SIZE_TYPE__ long unsigned int
@@ -349,7 +351,7 @@
#define __DEC128_MAX_EXP__ 6145
#define __FLT32X_HAS_QUIET_NAN__ 1
#define __ATOMIC_CONSUME 1
#define __GNUC_MINOR__ 2
#define __GNUC_MINOR__ 3
#define __GLIBCXX_TYPE_INT_N_0 __int128
#define __INT_FAST16_WIDTH__ 64
#define __UINTMAX_MAX__ 0xffffffffffffffffUL

View File

@@ -0,0 +1,95 @@
/****************************************************************************
**
** Copyright (C) 2016 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the examples of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:BSD$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** BSD License Usage
** Alternatively, you may use this file under the terms of the BSD license
** as follows:
**
** "Redistribution and use in source and binary forms, with or without
** modification, are permitted provided that the following conditions are
** met:
** * Redistributions of source code must retain the above copyright
** notice, this list of conditions and the following disclaimer.
** * Redistributions in binary form must reproduce the above copyright
** notice, this list of conditions and the following disclaimer in
** the documentation and/or other materials provided with the
** distribution.
** * Neither the name of The Qt Company Ltd nor the names of its
** contributors may be used to endorse or promote products derived
** from this software without specific prior written permission.
**
**
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
**
** $QT_END_LICENSE$
**
****************************************************************************/
#include "graphicsview.h"
#include <QScrollBar>
#include <QTouchEvent>
GraphicsView::GraphicsView(QGraphicsScene *scene, QWidget *parent)
: QGraphicsView(scene, parent), totalScaleFactor(1)
{
viewport()->setAttribute(Qt::WA_AcceptTouchEvents);
setDragMode(ScrollHandDrag);
}
bool GraphicsView::viewportEvent(QEvent *event)
{
switch (event->type()) {
case QEvent::TouchBegin:
case QEvent::TouchUpdate:
case QEvent::TouchEnd:
{
QTouchEvent *touchEvent = static_cast<QTouchEvent *>(event);
QList<QTouchEvent::TouchPoint> touchPoints = touchEvent->touchPoints();
if (touchPoints.count() == 2) {
// determine scale factor
const QTouchEvent::TouchPoint &touchPoint0 = touchPoints.first();
const QTouchEvent::TouchPoint &touchPoint1 = touchPoints.last();
qreal currentScaleFactor =
QLineF(touchPoint0.pos(), touchPoint1.pos()).length()
/ QLineF(touchPoint0.startPos(), touchPoint1.startPos()).length();
if (touchEvent->touchPointStates() & Qt::TouchPointReleased) {
// if one of the fingers is released, remember the current scale
// factor so that adding another finger later will continue zooming
// by adding new scale factor to the existing remembered value.
totalScaleFactor *= currentScaleFactor;
currentScaleFactor = 1;
}
setTransform(QTransform().scale(totalScaleFactor * currentScaleFactor,
totalScaleFactor * currentScaleFactor));
}
return true;
}
default:
break;
}
return QGraphicsView::viewportEvent(event);
}

View File

@@ -0,0 +1,65 @@
/****************************************************************************
**
** Copyright (C) 2016 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the examples of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:BSD$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** BSD License Usage
** Alternatively, you may use this file under the terms of the BSD license
** as follows:
**
** "Redistribution and use in source and binary forms, with or without
** modification, are permitted provided that the following conditions are
** met:
** * Redistributions of source code must retain the above copyright
** notice, this list of conditions and the following disclaimer.
** * Redistributions in binary form must reproduce the above copyright
** notice, this list of conditions and the following disclaimer in
** the documentation and/or other materials provided with the
** distribution.
** * Neither the name of The Qt Company Ltd nor the names of its
** contributors may be used to endorse or promote products derived
** from this software without specific prior written permission.
**
**
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
**
** $QT_END_LICENSE$
**
****************************************************************************/
#pragma once
#include <QGraphicsView>
class GraphicsView : public QGraphicsView
{
Q_OBJECT
public:
GraphicsView(QGraphicsScene *scene = 0, QWidget *parent = 0);
bool viewportEvent(QEvent *event) override;
private:
qreal totalScaleFactor;
};

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

95
ALT/pinchzoom/main.cpp Normal file
View File

@@ -0,0 +1,95 @@
/****************************************************************************
**
** Copyright (C) 2016 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the examples of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:BSD$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** BSD License Usage
** Alternatively, you may use this file under the terms of the BSD license
** as follows:
**
** "Redistribution and use in source and binary forms, with or without
** modification, are permitted provided that the following conditions are
** met:
** * Redistributions of source code must retain the above copyright
** notice, this list of conditions and the following disclaimer.
** * Redistributions in binary form must reproduce the above copyright
** notice, this list of conditions and the following disclaimer in
** the documentation and/or other materials provided with the
** distribution.
** * Neither the name of The Qt Company Ltd nor the names of its
** contributors may be used to endorse or promote products derived
** from this software without specific prior written permission.
**
**
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
**
** $QT_END_LICENSE$
**
****************************************************************************/
#include "graphicsview.h"
#include "mouse.h"
#include <QtWidgets>
#include <math.h>
static const int MouseCount = 7;
//! [0]
int main(int argc, char **argv)
{
QApplication app(argc, argv);
//! [0]
//! [1]
QGraphicsScene scene;
scene.setSceneRect(-300, -300, 600, 600);
//! [1] //! [2]
scene.setItemIndexMethod(QGraphicsScene::NoIndex);
//! [2]
//! [3]
for (int i = 0; i < MouseCount; ++i) {
Mouse *mouse = new Mouse;
mouse->setPos(::sin((i * 6.28) / MouseCount) * 200,
::cos((i * 6.28) / MouseCount) * 200);
scene.addItem(mouse);
}
//! [3]
//! [4]
GraphicsView view(&scene);
view.setRenderHint(QPainter::Antialiasing);
view.setBackgroundBrush(QPixmap(":/images/cheese.jpg"));
//! [4] //! [5]
view.setCacheMode(QGraphicsView::CacheBackground);
view.setViewportUpdateMode(QGraphicsView::BoundingRectViewportUpdate);
//! [5] //! [6]
view.setWindowTitle(QT_TRANSLATE_NOOP(QGraphicsView, "Colliding Mice"));
view.showMaximized();
return app.exec();
}
//! [6]

5
ALT/pinchzoom/mice.qrc Normal file
View File

@@ -0,0 +1,5 @@
<RCC>
<qresource prefix="/" >
<file>images/cheese.jpg</file>
</qresource>
</RCC>

205
ALT/pinchzoom/mouse.cpp Normal file
View File

@@ -0,0 +1,205 @@
/****************************************************************************
**
** Copyright (C) 2016 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the examples of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:BSD$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** BSD License Usage
** Alternatively, you may use this file under the terms of the BSD license
** as follows:
**
** "Redistribution and use in source and binary forms, with or without
** modification, are permitted provided that the following conditions are
** met:
** * Redistributions of source code must retain the above copyright
** notice, this list of conditions and the following disclaimer.
** * Redistributions in binary form must reproduce the above copyright
** notice, this list of conditions and the following disclaimer in
** the documentation and/or other materials provided with the
** distribution.
** * Neither the name of The Qt Company Ltd nor the names of its
** contributors may be used to endorse or promote products derived
** from this software without specific prior written permission.
**
**
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
**
** $QT_END_LICENSE$
**
****************************************************************************/
#include "mouse.h"
#include <QGraphicsScene>
#include <QPainter>
#include <QRandomGenerator>
#include <QStyleOption>
#include <qmath.h>
const qreal Pi = M_PI;
const qreal TwoPi = 2 * M_PI;
static qreal normalizeAngle(qreal angle)
{
while (angle < 0)
angle += TwoPi;
while (angle > TwoPi)
angle -= TwoPi;
return angle;
}
//! [0]
Mouse::Mouse()
: angle(0), speed(0), mouseEyeDirection(0),
color(QRandomGenerator::global()->bounded(256), QRandomGenerator::global()->bounded(256), QRandomGenerator::global()->bounded(256))
{
setTransform(QTransform().rotate(QRandomGenerator::global()->bounded(360 * 16)), true);
startTimer(1000 / 33);
}
//! [0]
//! [1]
QRectF Mouse::boundingRect() const
{
qreal adjust = 0.5;
return QRectF(-18 - adjust, -22 - adjust,
36 + adjust, 60 + adjust);
}
//! [1]
//! [2]
QPainterPath Mouse::shape() const
{
QPainterPath path;
path.addRect(-10, -20, 20, 40);
return path;
}
//! [2]
//! [3]
void Mouse::paint(QPainter *painter, const QStyleOptionGraphicsItem *, QWidget *)
{
// Body
painter->setBrush(color);
painter->drawEllipse(-10, -20, 20, 40);
// Eyes
painter->setBrush(Qt::white);
painter->drawEllipse(-10, -17, 8, 8);
painter->drawEllipse(2, -17, 8, 8);
// Nose
painter->setBrush(Qt::black);
painter->drawEllipse(QRectF(-2, -22, 4, 4));
// Pupils
painter->drawEllipse(QRectF(-8.0 + mouseEyeDirection, -17, 4, 4));
painter->drawEllipse(QRectF(4.0 + mouseEyeDirection, -17, 4, 4));
// Ears
painter->setBrush(scene()->collidingItems(this).isEmpty() ? Qt::darkYellow : Qt::red);
painter->drawEllipse(-17, -12, 16, 16);
painter->drawEllipse(1, -12, 16, 16);
// Tail
QPainterPath path(QPointF(0, 20));
path.cubicTo(-5, 22, -5, 22, 0, 25);
path.cubicTo(5, 27, 5, 32, 0, 30);
path.cubicTo(-5, 32, -5, 42, 0, 35);
painter->setBrush(Qt::NoBrush);
painter->drawPath(path);
}
//! [3]
//! [4]
void Mouse::timerEvent(QTimerEvent *)
{
//! [4]
// Don't move too far away
//! [5]
QLineF lineToCenter(QPointF(0, 0), mapFromScene(0, 0));
if (lineToCenter.length() > 150) {
qreal angleToCenter = std::atan2(lineToCenter.dy(), lineToCenter.dx());
angleToCenter = normalizeAngle((Pi - angleToCenter) + Pi / 2);
if (angleToCenter < Pi && angleToCenter > Pi / 4) {
// Rotate left
angle += (angle < -Pi / 2) ? 0.25 : -0.25;
} else if (angleToCenter >= Pi && angleToCenter < (Pi + Pi / 2 + Pi / 4)) {
// Rotate right
angle += (angle < Pi / 2) ? 0.25 : -0.25;
}
} else if (::sin(angle) < 0) {
angle += 0.25;
} else if (::sin(angle) > 0) {
angle -= 0.25;
//! [5] //! [6]
}
//! [6]
// Try not to crash with any other mice
//! [7]
QList<QGraphicsItem *> dangerMice = scene()->items(QPolygonF()
<< mapToScene(0, 0)
<< mapToScene(-30, -50)
<< mapToScene(30, -50));
foreach (QGraphicsItem *item, dangerMice) {
if (item == this)
continue;
QLineF lineToMouse(QPointF(0, 0), mapFromItem(item, 0, 0));
qreal angleToMouse = std::atan2(lineToMouse.dy(), lineToMouse.dx());
angleToMouse = normalizeAngle((Pi - angleToMouse) + Pi / 2);
if (angleToMouse >= 0 && angleToMouse < Pi / 2) {
// Rotate right
angle += 0.5;
} else if (angleToMouse <= TwoPi && angleToMouse > (TwoPi - Pi / 2)) {
// Rotate left
angle -= 0.5;
//! [7] //! [8]
}
//! [8] //! [9]
}
//! [9]
// Add some random movement
//! [10]
if (dangerMice.size() > 1 && QRandomGenerator::global()->bounded(10) == 0) {
if (QRandomGenerator::global()->bounded(1))
angle += QRandomGenerator::global()->bounded(1 / 500.0);
else
angle -= QRandomGenerator::global()->bounded(1 / 500.0);
}
//! [10]
//! [11]
speed += (-50 + QRandomGenerator::global()->bounded(100)) / 100.0;
qreal dx = ::sin(angle) * 10;
mouseEyeDirection = (qAbs(dx / 5) < 1) ? 0 : dx / 5;
setTransform(QTransform().rotate(dx), true);
setPos(mapToParent(0, -(3 + sin(speed) * 3)));
}
//! [11]

80
ALT/pinchzoom/mouse.h Normal file
View File

@@ -0,0 +1,80 @@
/****************************************************************************
**
** Copyright (C) 2016 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the examples of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:BSD$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** BSD License Usage
** Alternatively, you may use this file under the terms of the BSD license
** as follows:
**
** "Redistribution and use in source and binary forms, with or without
** modification, are permitted provided that the following conditions are
** met:
** * Redistributions of source code must retain the above copyright
** notice, this list of conditions and the following disclaimer.
** * Redistributions in binary form must reproduce the above copyright
** notice, this list of conditions and the following disclaimer in
** the documentation and/or other materials provided with the
** distribution.
** * Neither the name of The Qt Company Ltd nor the names of its
** contributors may be used to endorse or promote products derived
** from this software without specific prior written permission.
**
**
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
**
** $QT_END_LICENSE$
**
****************************************************************************/
#ifndef MOUSE_H
#define MOUSE_H
#include <QGraphicsObject>
//! [0]
class Mouse : public QGraphicsObject
{
Q_OBJECT
public:
Mouse();
QRectF boundingRect() const override;
QPainterPath shape() const override;
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option,
QWidget *widget) override;
protected:
void timerEvent(QTimerEvent *event) override;
private:
qreal angle;
qreal speed;
qreal mouseEyeDirection;
QColor color;
};
//! [0]
#endif

BIN
ALT/pinchzoom/pinchzoom Executable file

Binary file not shown.

View File

@@ -0,0 +1,16 @@
QT += widgets
HEADERS += \
mouse.h \
graphicsview.h
SOURCES += \
main.cpp \
mouse.cpp \
graphicsview.cpp
RESOURCES += \
mice.qrc
# install
target.path = $$[QT_INSTALL_EXAMPLES]/widgets/touch/pinchzoom
INSTALLS += target

View File

@@ -0,0 +1,317 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject>
<!-- Written by QtCreator 4.11.0, 2020-06-22T19:24:43. -->
<qtcreator>
<data>
<variable>EnvironmentId</variable>
<value type="QByteArray">{b70b24f1-46ad-4dd1-a8b9-3130fc5cbcc1}</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">Desktop</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">{f2adeb15-5e8d-4d85-a687-94c91141f754}</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/markus/Qt/ALT/build-pinchzoom-Desktop-Debug</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
<value type="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.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">Erstellen</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Erstellen</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
<value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Bereinigen</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Bereinigen</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Debug</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">2</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/markus/Qt/ALT/build-pinchzoom-Desktop-Release</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
<value type="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.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">Erstellen</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Erstellen</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
<value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Bereinigen</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Bereinigen</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Release</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.2">
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/markus/Qt/ALT/build-pinchzoom-Desktop-Profile</value>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
<value type="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.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">Erstellen</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Erstellen</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
</valuemap>
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.BuildTargets"/>
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
<value type="bool" key="Qt4ProjectManager.MakeStep.OverrideMakeflags">false</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Bereinigen</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Bereinigen</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Profile</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">3</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Deploy</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.PluginSettings"/>
<valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
<value type="QString" key="Analyzer.Perf.CallgraphMode">dwarf</value>
<valuelist type="QVariantList" key="Analyzer.Perf.Events">
<value type="QString">cpu-cycles</value>
</valuelist>
<valuelist type="QVariantList" key="Analyzer.Perf.ExtraArguments"/>
<value type="int" key="Analyzer.Perf.Frequency">250</value>
<valuelist type="QVariantList" key="Analyzer.Perf.RecordArguments">
<value type="QString">-e</value>
<value type="QString">cpu-cycles</value>
<value type="QString">--call-graph</value>
<value type="QString">dwarf,4096</value>
<value type="QString">-F</value>
<value type="QString">250</value>
</valuelist>
<value type="QString" key="Analyzer.Perf.SampleMode">-F</value>
<value type="bool" key="Analyzer.Perf.Settings.UseGlobalSettings">true</value>
<value type="int" key="Analyzer.Perf.StackSize">4096</value>
<value type="bool" key="Analyzer.QmlProfiler.AggregateTraces">false</value>
<value type="bool" key="Analyzer.QmlProfiler.FlushEnabled">false</value>
<value type="uint" key="Analyzer.QmlProfiler.FlushInterval">1000</value>
<value type="QString" key="Analyzer.QmlProfiler.LastTraceFile"></value>
<value type="bool" key="Analyzer.QmlProfiler.Settings.UseGlobalSettings">true</value>
<valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/>
<value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value>
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value>
<value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value>
<value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value>
<value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value>
<value type="QString" key="Analyzer.Valgrind.KCachegrindExecutable">kcachegrind</value>
<value type="int" key="Analyzer.Valgrind.LeakCheckOnFinish">1</value>
<value type="int" key="Analyzer.Valgrind.NumCallers">25</value>
<valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/>
<value type="int" key="Analyzer.Valgrind.SelfModifyingCodeDetection">1</value>
<value type="bool" key="Analyzer.Valgrind.Settings.UseGlobalSettings">true</value>
<value type="bool" key="Analyzer.Valgrind.ShowReachable">false</value>
<value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value>
<value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value>
<valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds">
<value type="int">0</value>
<value type="int">1</value>
<value type="int">2</value>
<value type="int">3</value>
<value type="int">4</value>
<value type="int">5</value>
<value type="int">6</value>
<value type="int">7</value>
<value type="int">8</value>
<value type="int">9</value>
<value type="int">10</value>
<value type="int">11</value>
<value type="int">12</value>
<value type="int">13</value>
<value type="int">14</value>
</valuelist>
<value type="int" key="PE.EnvironmentAspect.Base">2</value>
<valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:/home/markus/Qt/ALT/pinchzoom/pinchzoom.pro</value>
<value type="QString" key="ProjectExplorer.RunConfiguration.BuildKey">/home/markus/Qt/ALT/pinchzoom/pinchzoom.pro</value>
<value type="QString" key="RunConfiguration.Arguments"></value>
<value type="bool" key="RunConfiguration.Arguments.multi">false</value>
<value type="QString" key="RunConfiguration.OverrideDebuggerStartup"></value>
<value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
<value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
<value type="bool" key="RunConfiguration.UseLibrarySearchPath">true</value>
<value type="bool" key="RunConfiguration.UseMultiProcess">false</value>
<value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
<value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
<value type="QString" key="RunConfiguration.WorkingDirectory"></value>
<value type="QString" key="RunConfiguration.WorkingDirectory.default">/home/markus/Qt/ALT/build-pinchzoom-Desktop-Debug</value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.TargetCount</variable>
<value type="int">1</value>
</data>
<data>
<variable>ProjectExplorer.Project.Updater.FileVersion</variable>
<value type="int">22</value>
</data>
<data>
<variable>Version</variable>
<value type="int">22</value>
</data>
</qtcreator>

View File

@@ -0,0 +1,326 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject>
<!-- Written by QtCreator 4.8.2, 2020-03-10T19:03:40. -->
<qtcreator>
<data>
<variable>EnvironmentId</variable>
<value type="QByteArray">{b70b24f1-46ad-4dd1-a8b9-3130fc5cbcc1}</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">Desktop</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">{f2adeb15-5e8d-4d85-a687-94c91141f754}</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/markus/Qt/build-ChatSystem-Desktop-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">Erstellen</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">Bereinigen</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/markus/Qt/build-ChatSystem-Desktop-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">Erstellen</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">Bereinigen</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/markus/Qt/build-ChatSystem-Desktop-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">Erstellen</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">Bereinigen</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">Deployment</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">Deployment-Konfiguration</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">ChatSystem</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:/home/markus/Qt/ChatSystem/ChatSystem.pro</value>
<value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.ProFile">ChatSystem.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/markus/Qt/build-ChatSystem-Desktop-Debug</value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.TargetCount</variable>
<value type="int">1</value>
</data>
<data>
<variable>ProjectExplorer.Project.Updater.FileVersion</variable>
<value type="int">20</value>
</data>
<data>
<variable>Version</variable>
<value type="int">20</value>
</data>
</qtcreator>

View File

@@ -1,24 +1,94 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>MainWindow</class>
<widget class="QMainWindow" name="MainWindow" >
<property name="geometry" >
<widget class="QMainWindow" name="MainWindow">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>400</width>
<height>300</height>
<width>720</width>
<height>481</height>
</rect>
</property>
<property name="windowTitle" >
<property name="windowTitle">
<string>MainWindow</string>
</property>
<widget class="QMenuBar" name="menuBar" />
<widget class="QToolBar" name="mainToolBar" />
<widget class="QWidget" name="centralWidget" />
<widget class="QStatusBar" name="statusBar" />
<widget class="QWidget" name="centralWidget">
<widget class="QPushButton" name="pushButton">
<property name="geometry">
<rect>
<x>460</x>
<y>380</y>
<width>81</width>
<height>27</height>
</rect>
</property>
<property name="text">
<string>Enter</string>
</property>
</widget>
<widget class="QLineEdit" name="lineEdit">
<property name="geometry">
<rect>
<x>80</x>
<y>380</y>
<width>361</width>
<height>27</height>
</rect>
</property>
</widget>
<widget class="QTextEdit" name="textEdit">
<property name="geometry">
<rect>
<x>240</x>
<y>140</y>
<width>104</width>
<height>78</height>
</rect>
</property>
</widget>
<widget class="QPlainTextEdit" name="plainTextEdit">
<property name="geometry">
<rect>
<x>250</x>
<y>40</y>
<width>104</width>
<height>78</height>
</rect>
</property>
</widget>
<widget class="QTextBrowser" name="textBrowser">
<property name="geometry">
<rect>
<x>410</x>
<y>50</y>
<width>256</width>
<height>192</height>
</rect>
</property>
</widget>
</widget>
<widget class="QMenuBar" name="menuBar">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>720</width>
<height>25</height>
</rect>
</property>
</widget>
<widget class="QToolBar" name="mainToolBar">
<attribute name="toolBarArea">
<enum>TopToolBarArea</enum>
</attribute>
<attribute name="toolBarBreak">
<bool>false</bool>
</attribute>
</widget>
<widget class="QStatusBar" name="statusBar"/>
</widget>
<layoutDefault spacing="6" margin="11" />
<pixmapfunction></pixmapfunction>
<layoutdefault spacing="6" margin="11"/>
<resources/>
<connections/>
</ui>

View File

@@ -17,6 +17,14 @@ DEFINES += QT_DEPRECATED_WARNINGS
SOURCES += \
main.cpp
INCLUDEPATH += $$PWD/../My_LIB_TCP_V2/ \
$$PWD/../My_LIB_TCP_SERVER_V2/
HEADERS += $$PWD/../My_LIB_TCP_V2/my_tcp_lib.h \
$$PWD/../My_LIB_TCP_SERVER_V2/server_tcp_lib.h
SOURCES += $$PWD/../My_LIB_TCP_V2/my_tcp_lib.cpp \
$$PWD/../My_LIB_TCP_SERVER_V2/server_tcp_lib.cpp
# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin

View File

@@ -1,8 +1,53 @@
#include <QCoreApplication>
#include "my_tcp_lib.h"
#include "server_tcp_lib.h"
#include <pthread.h>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
return a.exec();
/* 1. Start Server
* 2. Create in Loop Threads, which try to connect(QThread, which can emit signals && timeout system)
* -> pushpack to vector
* 3. Accept incomming connection with reconnect request
*/
TCP_SERVER server;
server.startListening(4001);
return 0;
}

View File

@@ -23,7 +23,7 @@ tags
.DS_Store
.directory
*.debug
Makefile*
Makefile?*
*.prl
*.app
moc_*.cpp
@@ -71,3 +71,8 @@ Thumbs.db
*.dll
*.exe
#Own adds:
g++/
Makefile
S_New4

View File

@@ -2,7 +2,7 @@
ConnetionsManager::ConnetionsManager()
: stop(false)
: isAdmin(false), stop(false)
{
server = new TCP_SERVER();
server->autoCleanUpInTheEnd = false;
@@ -17,15 +17,15 @@ ConnetionsManager::~ConnetionsManager()
this->quit();
if( ! this->wait(500) ) {
this->terminate();
if( ! this->wait(3000) ) {
if( ! this->wait(3000) )
std::cout << " Stop connectionmanager thread failed" << std::endl;
}
}
}
//stop server
if( server->stopListening() != 0 )
std::cout << "Stop server failed: " << server->getLastError() << std::endl;
if( server->isListening() )
if( server->stopListening() != 0 )
std::cout << "Stop server failed: " << server->getLastError() << std::endl;
//delete server
delete server;
@@ -63,30 +63,24 @@ int ConnetionsManager::start_Thread(bool PORT_BASED, std::vector<ConnetionsManag
void ConnetionsManager::run()
{
if(startServer() != 0) {
emit showMSG("Fatal Error in startServer()");
return;
}
//Start Server
if(startServer() != 0)
return emit showMSG("Fatal Error in startServer()");
if(startAllTryConnector() != 0) {
emit showMSG("Fatal Error in startAllTryConnector()");
return;
}
//Nur noch accepten
while ( ! stop ) {
if(acceptClient() != 0) {
emit showMSG("Fatal Error in acceptClient()");
return;
}
}
//TryConnnect to All Peers in List
else if(startAllTryConnector() != 0)
return emit showMSG("Fatal Error in startAllTryConnector()");
//Accept all new Peers
while ( ! stop )
if(acceptClient() != 0)
return emit showMSG("Fatal Error in acceptClient()");
}
int ConnetionsManager::startAllTryConnector()
{
for (auto &pc : computers) {
// std::cout << "Start tryconnect to: " << pc.ip << ":" << pc.port << std::endl;
std::cout << "Start tryconnect to: " << pc.ip << ":" << pc.port << std::endl;
TryConnector * newTryConnector = new TryConnector();
newTryConnector->deleteLater(); ///<--------------------------------Test--------------------------------------------
@@ -110,11 +104,14 @@ int ConnetionsManager::startServer()
sleep(3);
}
emit showMSG("SERVER gestartet: @" + QString::fromStdString(server->getHostName()) + ":" + QString::number(computers.at(0).port));
std::cout << "Server gestartet auf Port: " << computers.at(0).port << std::endl;
//clear
computers.erase(computers.begin());
std::string hostname = server->getHostName();
//remove own ip, so that you don't connect to your own server
for ( unsigned i = 0; i < computers.size(); ++i)
if(computers.at(i).ip == hostname)
computers.erase(computers.begin() + i);
@@ -180,7 +177,7 @@ int ConnetionsManager::acceptClient()
}
//Send name, port, ip ...
newPeer->sendInfoData(server->getListeningPort());
newPeer->sendInfoData(server->getListeningPort(), isAdmin);
emit ConnectionsListChanged();
//emit showMSG(QString::fromStdString(" -> New Client: " + newCLIENT.getIpAddress() + ":" + std::to_string(newCLIENT.getPort())));
@@ -211,12 +208,12 @@ void ConnetionsManager::TryConnectorFinished(TryConnector *who)
}
//Send name, port, ip ...
newPeer->sendInfoData(server->getListeningPort());
newPeer->sendInfoData(server->getListeningPort(), isAdmin);
emit ConnectionsListChanged();
//emit showMSG(QString::fromStdString(" -> New Client: " + who->getIp() + ":" + std::to_string(who->getPort())));
} else if (who->getState() == STATE::TIME_OUT_TRY_OUT) {
std::cout << "-> Connect to " << who->getIp() << ":" << who->getPort() << " timedout." << std::endl;
// } else if (who->getState() == STATE::TIME_OUT_TRY_OUT) {
// std::cout << "-> Connect to " << who->getIp() << ":" << who->getPort() << " timedout." << std::endl;
} else if(who->getState() == STATE::UNDEFINED) {
std::cout << "-> Thread for Connecting to " << who->getIp() << ":" << who->getPort() << " never started." << std::endl;
@@ -243,7 +240,7 @@ void ConnetionsManager::PeerConnectionGetsError(Peer *who)
for (unsigned i = 0; i < Connections.size(); ++i) {
if(Connections.at(i) == who && (++check)) {
Connections.erase(Connections.begin() + i);
std::cout << "DEBUG: Delete Peer, cause getError, with Port: " << who->getPort() << std::endl;
//std::cout << "DEBUG: Delete Peer, cause getError, with Port: " << who->getPort() << std::endl;
delete who;//->deleteLater();
}
}

View File

@@ -28,6 +28,8 @@ public:
void sendtoAllPeers(QString msg);
std::vector<Peer *> &getConnectionList();
bool isAdmin;
private:
void run();
@@ -43,6 +45,8 @@ private:
signals:
void showMSG(QString msg);
void ConnectionsListChanged();

View File

@@ -0,0 +1,166 @@
#include "peer.h"
Peer::Peer(const CLIENT &cli)
: cli_v1(cli), isCLIENT(true), stop(false), is_Admin(false), name("UNKNOWN")
{
this->cli_v1.autoCleanUpInTheEnd = false;
this->cli_v2.autoCleanUpInTheEnd = false;
//Save ip in var, which will be deletet after disconnect...
this->ip_connectedTo = cli.getIpAddress();
}
Peer::Peer(const client_TCP_Lib &cli, std::string ip_connectedTo, unsigned short port_connectedTo)
: cli_v2(cli), isCLIENT(false), stop(false), is_Admin(false), port_connectedTo(port_connectedTo), name("UNKNOWN"), ip_connectedTo(ip_connectedTo)
{
this->cli_v1.autoCleanUpInTheEnd = false;
this->cli_v2.autoCleanUpInTheEnd = false;
}
Peer::~Peer()
{
std::cout << "~Peer(): port: " << getPort() << std::endl;
if(this->isRunning()) {
this->quit();
if( ! this->wait(500) ) {
this->terminate();
if( ! this->wait(3000) )
std::cout << "Terminating Thread timeouted: " << __func__ << std::endl;
}
}
if( this->isConnected() && this->closeSocket() != 0)
std::cout << "!-> CloseSocket failed: " << cli_v1.getLastError() << std::endl;
}
void Peer::send_to(QString msg)
{
msg.push_back('|');
if( ((isCLIENT) ? cli_v1.send_(msg.toStdString().c_str(), static_cast<unsigned>(msg.toStdString().length()) ) :
send(cli_v2.getConnectionSocket(), msg.toStdString().c_str(), static_cast<unsigned>(msg.toStdString().length()), 0)) <= 0 ) {
std::cerr << "DEBUG: emit -> send failed to: " << this->getFullName().toStdString() << std::endl;
emit sendFailed(this);
}
}
int Peer::startReciver()
{
if(this->isRunning())
return -1;
this->start();
return this->isRunning() ? 0 : 1;
}
void Peer::sendInfoData(const unsigned short ownServerListeningPort, bool adminstate)
{
this->send_to("PORT=" + QString::number(ownServerListeningPort));
this->send_to("JOIN_TIME=" + QTime::currentTime().toString() );
this->send_to("JOINED=" + getUserName() );
this->send_to("VERSION=" + QString::number(VERSION) );
this->send_to("adminstatus=" + QString(adminstate ? "true" : "false"));
}
int Peer::closeSocket()
{
return (isCLIENT) ? cli_v1.closeSocket() : cli_v2.closeSocket();
}
bool Peer::isConnected()
{
return (isCLIENT) ? cli_v1.isConnected() : cli_v2.isConnected();
}
std::string Peer::getIp() const
{
return ip_connectedTo;
}
std::string Peer::getLastError()
{
return (isCLIENT) ? cli_v1.getLastError() : cli_v2.getLastError();
}
unsigned short Peer::getPort() const
{
return port_connectedTo;
}
QString Peer::getName() const
{
return QString::fromStdString(name);
}
QString Peer::getUserName() const
{
return ( (qgetenv("USER").isEmpty()) ? qgetenv("USERNAME") : qgetenv("USER") );
}
QString Peer::getFullName() const
{
return QString("<" + getName() + "@" + QString::fromStdString(getIp()) + ":" + QString::number(getPort()) + ">");
}
QString Peer::getJoinTime() const
{
return QString::fromStdString(joinTime);
}
bool Peer::isAdmin() const
{
return is_Admin;
}
void Peer::set_isAdmin(bool state)
{
is_Admin = state;
}
void Peer::setConnectedToPort(unsigned short port)
{
port_connectedTo = port;
}
void Peer::setName(std::string name)
{
this->name = name;
}
void Peer::setJoinTime(std::string time)
{
joinTime = time;
}
void Peer::run()
{
std::vector<char> buffer;
std::string stringBuffer;
char c;
while ( ! stop ) {
buffer.clear();
do {
if( ( ( isCLIENT ) ? cli_v1.recv_(&c, 1) : recv(cli_v2.getConnectionSocket(), &c, 1, 0) ) <= 0) {
std::cerr << "DEBUG: emit -> rev failed from: " << this->getFullName().toStdString() << std::endl;
return emit recvdFailed(this);
} else
buffer.push_back(c);
} while (c != '|' && ! stop);
if(buffer.data() && buffer.size() > 0) {
buffer.pop_back();
buffer.push_back('\0');
if( (stringBuffer = std::string(buffer.data())) .find("=") == std::string::npos) {
std::cout << "INVALID MSG: '" << buffer.data() << "'" << std::endl;
continue;
} else
emit recvdMessage(this, QString::fromStdString(stringBuffer));
}
}
emit recvdFailed(this);
}

View File

@@ -6,7 +6,7 @@
#include <QTime>
#include <QThread>
#define VERSION "2.2"
#define VERSION 2
class Peer : public QThread
@@ -19,7 +19,7 @@ public:
void send_to(QString msg);
int startReciver();
void sendInfoData(const unsigned short ownServerListeningPort);
void sendInfoData(const unsigned short ownServerListeningPort, bool adminstate);
int closeSocket();
bool isConnected();
@@ -32,6 +32,9 @@ public:
QString getFullName() const;
QString getJoinTime() const;
bool isAdmin() const;
void set_isAdmin(bool state);
void setConnectedToPort(unsigned short port);
void setName(std::string name);
void setJoinTime(std::string time);
@@ -45,7 +48,7 @@ private:
client_TCP_Lib cli_v2;
const bool isCLIENT;
bool stop;
bool stop, is_Admin;
unsigned short port_connectedTo;
std::string name, ip_connectedTo, joinTime;

View File

@@ -0,0 +1,164 @@
#include "tryconnector.h"
/*
Connector::Connector()
: returnValue(-1)
{
client.autoCleanUpInTheEnd = false;
}
Connector::~Connector()
{
//std::cout << "~Connector()" << std::endl;
if(this->isRunning()) {
this->quit();
if( ! this->wait(500) ) {
this->terminate();
if( ! this->wait(3000) ) {
std::cout << "Terminating Thread timeouted: " << __func__ << std::endl;
}
}
}
}
int Connector::ConnectTo()
{
if(this->isRunning())
return -1;
this->start();
return this->isRunning() ? 0 : 1;
}
int Connector::getReturnValue()
{
return returnValue;
}
void Connector::run()
{
returnValue = client.connectTo(client.getIpByName(ip), port);
}
*/
///----------------------------------------------------------------------------------------->
TryConnector::TryConnector(void)
: state(UNDEFINED)
{
client_.autoCleanUpInTheEnd = false;
}
TryConnector::~TryConnector()
{
//std::cout << "~TryConnector()" << std::endl;
if(this->isRunning()) {
this->quit();
if( ! this->wait(500) ) {
this->terminate();
if( ! this->wait(3000) )
std::cout << "Terminating Thread timeouted: " << __func__ << std::endl;
}
}
}
int TryConnector::tryConnectTo(std::string ip, unsigned short port)
{
if(this->isRunning())
return -1;
//this->connector.ip = ip;
//this->connector.port = port;
this->ip = ip;
this->port = port;
this->start();
return this->isRunning() ? 0 : 1;
}
const client_TCP_Lib &TryConnector::client()
{
return client_;
}
const STATE &TryConnector::getState()
{
return this->state;
}
const std::string &TryConnector::getIp()
{
return ip;
}
const unsigned short &TryConnector::getPort()
{
return port;
}
void TryConnector::run()
{
this->state = STATE::UNDEFINED;
this->state = (client_.connectTo(ip, port, 200, 3) == 0) ? STATE::OK : STATE::UNDEFINED_ERROR;
emit finished(this);
return;
/*
this->state = STATE::UNDEFINED;
if(connector.ConnectTo() != 0) {
this->state = STATE::UNDEFINED_ERROR;
} else {
unsigned timeout_HectSec = 200;
// 3 Versuche bei Timeout
for (int Try = 1; Try <= 3; ++Try) {
for (unsigned time = 1; time <= timeout_HectSec; ++time) {
if(connector.isRunning()) {
usleep(10000); // sleep 0,01s
if(time > 100)
std::cout << ( "\33[2K\r" "Waited " + std::to_string(static_cast<double>(time) / 100 ) + "sec..." ) << std::flush;
} else {
this->state = (this->connector.getReturnValue() == 0) ? STATE::OK : STATE::UNDEFINED_ERROR;
//std::cout << "Thread finished mit res = " << connector.getReturnValue() << std::endl;
break;
}
if(time == timeout_HectSec) {
this->state = TIME_OUT_TRY_OUT;
std::cout << "Connect to "<<connector.ip << ":" <<connector.port << " failed: TIMEOUT." << std::endl;
if(connector.isRunning()) {
connector.quit();
if( ! connector.wait(500) ) {
connector.terminate();
if( ! connector.wait(3000) )
std::cout << "Terminating Connector Thread timeouted: " << __func__ << std::endl;
}
}
}
}
if(this->state != STATE::TIME_OUT_TRY_OUT)
break;
else {
if(connector.ConnectTo() != 0) {
this->state = STATE::UNDEFINED_ERROR;
std::cout << "Failed to start Connector Thread" << std::endl;
break;
}
std::cout << "WARNUNG: " << Try << ". Versuch von 3 bei TryConnect." << std::endl;
}
}
}
emit finished(this);
*/
}

View File

@@ -12,10 +12,9 @@ enum STATE {
OK = 0,
UNDEFINED = 1,
UNDEFINED_ERROR = 2,
TIME_OUT_TRY_OUT = 3
};
/*
class Connector : public QThread
{
@@ -36,7 +35,7 @@ private:
int returnValue;
};
*/
class TryConnector: public QThread
{
@@ -48,15 +47,22 @@ public:
int tryConnectTo(std::string ip, unsigned short port);
const STATE &getState();
const std::string &getIp();
const unsigned short &getPort();
const client_TCP_Lib &client();
private:
void run();
STATE state;
Connector connector;
//Connector connector;
std::string ip;
unsigned short port;
client_TCP_Lib client_;
signals:
void finished(TryConnector * who);

View File

@@ -5,26 +5,45 @@
#-------------------------------------------------
SOURCES += \
connetionsmanager.cpp \
peer.cpp \
tryconnector.cpp \
chatwidget.cpp
HEADERS += connetionsmanager.h \
peer.h \
tryconnector.h \
chatwidget.h
ConnectionsStuff/connetionsmanager.cpp \
ConnectionsStuff/peer.cpp \
ConnectionsStuff/tryconnector.cpp \
chatwidget.cpp \
wormio_game/enemy.cpp \
wormio_game/enemymanager.cpp \
wormio_game/game.cpp \
wormio_game/player.cpp \
wormio_game/wormio_scene.cpp \
wormio_game/wormpart.cpp
INCLUDEPATH += $$PWD/../My_LIB_TCP_V2/ \
$$PWD/../My_LIB_TCP_SERVER_V2/
HEADERS += \
ConnectionsStuff/connetionsmanager.h \
ConnectionsStuff/peer.h \
ConnectionsStuff/tryconnector.h \
chatwidget.h \
wormio_game/enemy.h \
wormio_game/enemymanager.h \
wormio_game/game.h \
wormio_game/player.h \
wormio_game/wormio_graphicsview.h \
wormio_game/wormio_scene.h \
wormio_game/wormpart.h
HEADERS += $$PWD/../My_LIB_TCP_V2/my_tcp_lib.h \
$$PWD/../My_LIB_TCP_SERVER_V2/server_tcp_lib.h
SOURCES += $$PWD/../My_LIB_TCP_V2/my_tcp_lib.cpp \
$$PWD/../My_LIB_TCP_SERVER_V2/server_tcp_lib.cpp
INCLUDEPATH += $$PWD/../TCP_LIB_CLIENT_V2/ \
$$PWD/../TCP_LIB_SERVER_V2/
HEADERS += $$PWD/../TCP_LIB_CLIENT_V2/my_tcp_lib.h \
$$PWD/../TCP_LIB_SERVER_V2/server_tcp_lib.h
SOURCES += $$PWD/../TCP_LIB_CLIENT_V2/my_tcp_lib.cpp \
$$PWD/../TCP_LIB_SERVER_V2/server_tcp_lib.cpp
QT += core gui
win32-msvc* {
LIBS+= -lws2_32
}
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = DezChat
@@ -57,3 +76,6 @@ FORMS += \
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target
RESOURCES += \
resources.qrc

View File

@@ -1,10 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject>
<!-- Written by QtCreator 4.8.2, 2020-04-04T20:29:56. -->
<!-- Written by QtCreator 4.11.0, 2020-06-25T22:08:40. -->
<qtcreator>
<data>
<variable>EnvironmentId</variable>
<value type="QByteArray">{b70b24f1-46ad-4dd1-a8b9-3130fc5cbcc1}</value>
<value type="QByteArray">{eb4bb7e5-aff6-46e2-a25b-e6924c782e77}</value>
</data>
<data>
<variable>ProjectExplorer.Project.ActiveTarget</variable>
@@ -64,17 +64,15 @@
<valuemap type="QVariantMap">
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">{f2adeb15-5e8d-4d85-a687-94c91141f754}</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">{fa846b3f-39f5-424e-9853-7a4271f9e064}</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/markus/Qt/build-DezChat-Desktop-Debug</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/markus/Downloads/Qt/build-DezChat-Desktop-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>
@@ -84,8 +82,6 @@
</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>
@@ -95,14 +91,12 @@
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Erstellen</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Erstellen</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>
@@ -112,36 +106,30 @@
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Bereinigen</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Bereinigen</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/markus/Qt/build-DezChat-Desktop-Release</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/markus/Downloads/Qt/build-DezChat-Desktop-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>
<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>
@@ -151,14 +139,12 @@
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Erstellen</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Erstellen</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>
@@ -168,36 +154,30 @@
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Bereinigen</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Bereinigen</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/markus/Qt/build-DezChat-Desktop-Profile</value>
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/markus/Downloads/Qt/build-DezChat-Desktop-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>
<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>
@@ -207,14 +187,12 @@
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Erstellen</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Erstellen</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>
@@ -224,34 +202,47 @@
</valuemap>
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Bereinigen</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Bereinigen</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">Deployment</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Deploy</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
</valuemap>
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deployment-Konfiguration</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="QString" key="Analyzer.Perf.CallgraphMode">dwarf</value>
<valuelist type="QVariantList" key="Analyzer.Perf.Events">
<value type="QString">cpu-cycles</value>
</valuelist>
<valuelist type="QVariantList" key="Analyzer.Perf.ExtraArguments"/>
<value type="int" key="Analyzer.Perf.Frequency">250</value>
<valuelist type="QVariantList" key="Analyzer.Perf.RecordArguments">
<value type="QString">-e</value>
<value type="QString">cpu-cycles</value>
<value type="QString">--call-graph</value>
<value type="QString">dwarf,4096</value>
<value type="QString">-F</value>
<value type="QString">250</value>
</valuelist>
<value type="QString" key="Analyzer.Perf.SampleMode">-F</value>
<value type="bool" key="Analyzer.Perf.Settings.UseGlobalSettings">true</value>
<value type="int" key="Analyzer.Perf.StackSize">4096</value>
<value type="bool" key="Analyzer.QmlProfiler.AggregateTraces">false</value>
<value type="bool" key="Analyzer.QmlProfiler.FlushEnabled">false</value>
<value type="uint" key="Analyzer.QmlProfiler.FlushInterval">1000</value>
@@ -266,6 +257,7 @@
<value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value>
<value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value>
<value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value>
<value type="QString" key="Analyzer.Valgrind.KCachegrindExecutable">kcachegrind</value>
<value type="int" key="Analyzer.Valgrind.LeakCheckOnFinish">1</value>
<value type="int" key="Analyzer.Valgrind.NumCallers">25</value>
<valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/>
@@ -293,12 +285,11 @@
</valuelist>
<value type="int" key="PE.EnvironmentAspect.Base">2</value>
<valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">DezChat</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:/home/markus/Qt/DezChat/DezChat.pro</value>
<value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.ProFile">DezChat.pro</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:/home/markus/Downloads/Qt/DezChat/DezChat.pro</value>
<value type="QString" key="ProjectExplorer.RunConfiguration.BuildKey">/home/markus/Downloads/Qt/DezChat/DezChat.pro</value>
<value type="QString" key="RunConfiguration.Arguments"></value>
<value type="uint" key="RunConfiguration.QmlDebugServerPort">3768</value>
<value type="bool" key="RunConfiguration.Arguments.multi">false</value>
<value type="QString" key="RunConfiguration.OverrideDebuggerStartup"></value>
<value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
<value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
<value type="bool" key="RunConfiguration.UseLibrarySearchPath">true</value>
@@ -306,217 +297,21 @@
<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/markus/Qt/build-DezChat-Desktop-Debug</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">Qt4</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Qt4</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">{7ef5ec43-5dd3-4614-856e-b0a88843bee2}</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/markus/Qt/build-DezChat-Qt4-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">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">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">Erstellen</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">Bereinigen</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/markus/Qt/build-DezChat-Qt4-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">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">Erstellen</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">Bereinigen</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>
<value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">2</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">Deployment</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">Deployment-Konfiguration</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">DezChat</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:/home/markus/Qt/DezChat/DezChat.pro</value>
<value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.ProFile">DezChat.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"></value>
<value type="QString" key="RunConfiguration.WorkingDirectory.default">/home/markus/Downloads/Qt/build-DezChat-Desktop-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>
<value type="int">1</value>
</data>
<data>
<variable>ProjectExplorer.Project.Updater.FileVersion</variable>
<value type="int">20</value>
<value type="int">22</value>
</data>
<data>
<variable>Version</variable>
<value type="int">20</value>
<value type="int">22</value>
</data>
</qtcreator>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1,47 +0,0 @@
#ifndef PEER_H
#define PEER_H
#include "my_tcp_lib.h"
#include "server_tcp_lib.h"
#include <QThread>
class TryConnector: public QThread
{
public:
enum STATE {
UNDEFINED,
CONNECTING,
OK,
UNKNOWN_ERROR,
TIMEOUT
};
TryConnector();
int tryConnectTo(std::string ip, unsigned short port);
STATE getState();
std::string getIp();
unsigned short getPort();
client_TCP_Lib client;
private:
void run();
std::string ip;
unsigned short port;
STATE state;
signals:
void finished();
void startConnecting();
};
#endif // PEER_H

View File

@@ -1,48 +0,0 @@
#ifndef CONNETIONSMANAGER_H
#define CONNETIONSMANAGER_H
#include "TryConnector.h"
#include <vector>
#include <QThread>
class ConnetionsManager : public QThread
{
public:
std::string replace(std::string str, std::string substr1, std::string substr2);
struct PC {
std::string ip;
unsigned short port;
};
ConnetionsManager();
int start(std::vector<PC> computers);
private:
TCP_SERVER * server;
std::vector<TryConnector*> Connections;
std::vector<PC> computers;
int startServer();
int startTryConnectThreads();
void run();
struct ThreadData {
ThreadData(std::vector<Peer*> *clients) { this->clients = clients; }
std::vector<Peer*> *clients;
};
signals:
void showMSG(QString msg);
};
#endif // CONNETIONSMANAGER_H

View File

@@ -1,51 +0,0 @@
#ifndef CONNETIONSMANAGER_H
#define CONNETIONSMANAGER_H
#include "peer.h"
#include "tryconnector.h"
#include <vector>
#include <QThread>
class ConnetionsManager : public QThread
{
Q_OBJECT
public:
struct PC {
PC();
PC(std::string ip, unsigned short port) : ip(ip), port(port) {}
std::string ip;
unsigned short port;
};
ConnetionsManager();
int start(std::vector<PC> computers);
private:
TCP_SERVER * server;
std::vector<Peer*> Connections;
std::vector<PC> computers;
void run();
struct ThreadData {
ThreadData(std::vector<Peer*> *clients) { this->clients = clients; }
std::vector<Peer*> *clients;
};
signals:
void showMSG(QString msg);
public slots:
void TryConnectorFinished(TryConnector * who);
void TryConnectorStartedConnecting(TryConnector * who);
};
#endif // CONNETIONSMANAGER_H

View File

@@ -1,103 +0,0 @@
#include "connetionsmanager.h"
ConnetionsManager::ConnetionsManager()
{
}
int ConnetionsManager::start_Thread(std::vector<ConnetionsManager::PC> computers)
{
this->computers = computers;
if(this->isRunning())
return -1;
this->start();
return this->isRunning() ? 1 : 0;
}
void ConnetionsManager::run()
{
/*
* 1. Start Server
* 2. Create in Loop Threads, which try to connect(QThread, which can emit signals && timeout system)
* -> pushpack to vector
* 3. Accept incomming connection with NOOOO reconnect request
*
*
*Bei Start versucht jeder Mit allen eine Verbingung aufzubauen =>
*
*/
//Server Starten
for (int i = 0; i < 6; ++i) {
if(i == 5)
return;
if( server.startListening(computers.at(i).port) != 0 ) {
std::cout << "Start Server failed:" << server.getLastError() << std::endl;
// return;
} else {
computers.erase(computers.begin() + i);
break;
}
}
//Start Try- Verbindungsaufbau
for (unsigned pcID = 1; pcID < computers.size(); ++pcID) {
TryConnector * newTryConnector = new TryConnector();
if( newTryConnector->tryConnectTo(computers.at(pcID).ip, computers.at(pcID).port) ) {
std::cout << "Tryconnect failed to: " << computers.at(pcID).ip << ":" << computers.at(pcID).port << std::endl;
}
//
connect(newTryConnector, SIGNAL(finished(TryConnector*)), this, SLOT(TryConnectorFinished(TryConnector*)));
connect(newTryConnector, SIGNAL(startConnecting(TryConnector*)), this, SLOT(TryConnectorStartedConnecting(TryConnector*)));
}
//Nur noch accepten
while (true) {
CLIENT newCLIENT;
if( server.acceptClient(newCLIENT) != 0) {
std::cout << "accept failed:" << server.getLastError() << std::endl;
continue;
}
Peer * newPeer = new Peer(newCLIENT);
Connections.push_back(newPeer);
std::cout << "Accpedted: " << newCLIENT.getIpAddress() << std::endl;
}
}
void ConnetionsManager::TryConnectorFinished(TryConnector *who)
{
disconnect(who, SIGNAL(finished(TryConnector*)), this, SLOT(TryConnectorFinished(TryConnector*)));
emit showMSG(who->getState() == who->OK ? "OK" : "NON OK");
std::cout << who->getIp() << ": State: " << who->getState() << std::endl;
std::cout << who->getIp() << ": lError: " << who->client.getLastError() << std::endl;
if(who->getState() == who->OK) {
Peer * newPeer = new Peer(who->client);
Connections.push_back(newPeer);
}
delete who;
}
void ConnetionsManager::TryConnectorStartedConnecting(TryConnector *who)
{
connect(who, SIGNAL(startConnecting(TryConnector*)), this, SLOT(TryConnectorStartedConnecting(TryConnector*)));
emit showMSG(who->getState() == who->CONNECTING ? "Connecting...." + QString::fromStdString("who->client.getLastError()") : "NON OK...");
std::cout << "Starting connecting to: " << who->getIp() << std::endl;
}

View File

@@ -1,108 +0,0 @@
#include "connetionsmanager.h"
ConnetionsManager::ConnetionsManager()
{
}
int ConnetionsManager::start_Thread(std::vector<ConnetionsManager::PC> computers)
{
this->computers = computers;
if(this->isRunning())
return -1;
this->start();
return this->isRunning() ? 1 : 0;
}
#include <QApplication>
void ConnetionsManager::run()
{
/*
* 1. Start Server
* 2. Create in Loop Threads, which try to connect(QThread, which can emit signals && timeout system)
* -> pushpack to vector
* 3. Accept incomming connection with NOOOO reconnect request
*
*
*Bei Start versucht jeder Mit allen eine Verbingung aufzubauen =>
*
*/
//Server Starten
for (unsigned i = 0; i < 6; ++i) {
if(i == 5)
return;
if( server.startListening(computers.at(i).port) != 0 ) {
std::cout << "Start Server failed:" << server.getLastError() << std::endl;
// return;
} else {
std::cout << "Connected to: " << computers.at(i).ip << ":" << computers.at(i).port << std::endl;
computers.erase(computers.begin() + i);
for ( auto &e : computers)
std::cout << " => Rest: " << e.ip << ":" << e.port << std::endl;
break;
}
}
//Start Try- Verbindungsaufbau
for (unsigned pcID = 0; pcID < computers.size(); ++pcID) {
TryConnector * newTryConnector = new TryConnector();
if( newTryConnector->tryConnectTo(computers.at(pcID).ip, computers.at(pcID).port) ) {
std::cout << "Tryconnect failed to: " << computers.at(pcID).ip << ":" << computers.at(pcID).port << std::endl;
}
//
connect(newTryConnector, SIGNAL(finished(TryConnector*)), this, SLOT(TryConnectorFinished(TryConnector*)));
connect(newTryConnector, SIGNAL(startConnecting(TryConnector*)), this, SLOT(TryConnectorStartedConnecting(TryConnector*)));
}
//Nur noch accepten
while (QApplication::exec()) {
CLIENT newCLIENT;
if( server.acceptClient(newCLIENT) != 0) {
std::cout << "accept failed:" << server.getLastError() << std::endl;
continue;
}
Peer * newPeer = new Peer(newCLIENT);
Connections.push_back(newPeer);
std::cout << " -> Accpedted: " << newCLIENT.getIpAddress() << std::endl;
}
}
void ConnetionsManager::TryConnectorFinished(TryConnector *who)
{
disconnect(who, SIGNAL(finished(TryConnector*)), this, SLOT(TryConnectorFinished(TryConnector*)));
emit showMSG(who->getState() == who->OK ? "OK" : "NON OK");
//std::cout << who->getIp() << ": State: " << who->getState() << std::endl;
std::cout << who->getIp() << ": lError: " << who->client.getLastError() << std::endl;
if(who->getState() == who->OK) {
Peer * newPeer = new Peer(who->client);
Connections.push_back(newPeer);
}
delete who;
}
void ConnetionsManager::TryConnectorStartedConnecting(TryConnector *who)
{
connect(who, SIGNAL(startConnecting(TryConnector*)), this, SLOT(TryConnectorStartedConnecting(TryConnector*)));
emit showMSG(who->getState() == who->CONNECTING ? "Connecting...." + QString::fromStdString("who->client.getLastError()") : "NON OK...");
//std::cout << "Starting connecting to: " << who->getIp() << std::endl;
}

View File

@@ -1,126 +0,0 @@
#include "connetionsmanager.h"
ConnetionsManager::ConnetionsManager()
: stop(false)
{
server = new TCP_SERVER();
}
ConnetionsManager::~ConnetionsManager()
{
stop = true;
if(this->isRunning()) {
//this->quit();
if( ! this->wait(500) ) {
//this->terminate();
if( ! this->wait(10000) ) {
std::cout << " Stop connectionmanager thread failed" << std::endl;
}
}
}
delete server;
for( auto &e : Connections)
delete e;
}
int ConnetionsManager::start_Thread(std::vector<ConnetionsManager::PC> computers)
{
this->computers = computers;
if(this->isRunning())
return -1;
this->start();
return this->isRunning() ? 1 : 0;
}
#include <QApplication>
void ConnetionsManager::run()
{
/*
* 1. Start Server
* 2. Create in Loop Threads, which try to connect(QThread, which can emit signals && timeout system)
* -> pushpack to vector
* 3. Accept incomming connection with NOOOO reconnect request
*
*
*Bei Start versucht jeder Mit allen eine Verbingung aufzubauen =>
*
*/
//Server Starten
for (unsigned i = 0; i < 6; ++i) {
if(i == 5)
return;
if( server->startListening(computers.at(i).port) != 0 ) {
std::cout << "Start Server failed:" << server->getLastError() << std::endl;
// return;
} else {
std::cout << "Connected to: " << computers.at(i).ip << ":" << computers.at(i).port << std::endl;
computers.erase(computers.begin() + i);
for ( auto &e : computers)
std::cout << " => Rest: " << e.ip << ":" << e.port << std::endl;
break;
}
}
//Start Try- Verbindungsaufbau
for (unsigned pcID = 0; pcID < computers.size(); ++pcID) {
TryConnector * newTryConnector = new TryConnector();
if( newTryConnector->tryConnectTo(computers.at(pcID).ip, computers.at(pcID).port) ) {
std::cout << "Tryconnect failed to: " << computers.at(pcID).ip << ":" << computers.at(pcID).port << std::endl;
}
//
connect(newTryConnector, SIGNAL(finished(TryConnector*)), this, SLOT(TryConnectorFinished(TryConnector*)));
connect(newTryConnector, SIGNAL(startConnecting(TryConnector*)), this, SLOT(TryConnectorStartedConnecting(TryConnector*)));
}
//Nur noch accepten
while ( ! stop ) {
CLIENT newCLIENT;
if( server->acceptClient(newCLIENT) != 0) {
std::cout << "accept failed:" << server->getLastError() << std::endl;
continue;
}
Peer * newPeer = new Peer(newCLIENT);
Connections.push_back(newPeer);
std::cout << " -> Accpedted: " << newCLIENT.getIpAddress() << std::endl;
}
}
void ConnetionsManager::TryConnectorFinished(TryConnector *who)
{
disconnect(who, SIGNAL(finished(TryConnector*)), this, SLOT(TryConnectorFinished(TryConnector*)));
emit showMSG(who->getState() == who->OK ? "OK" : "NON OK");
//std::cout << who->getIp() << ": State: " << who->getState() << std::endl;
std::cout << who->getIp() << ": lError: " << who->client.getLastError() << std::endl;
if(who->getState() == who->OK) {
Peer * newPeer = new Peer(who->client);
Connections.push_back(newPeer);
}
delete who;
}
void ConnetionsManager::TryConnectorStartedConnecting(TryConnector *who)
{
connect(who, SIGNAL(startConnecting(TryConnector*)), this, SLOT(TryConnectorStartedConnecting(TryConnector*)));
emit showMSG(who->getState() == who->CONNECTING ? "Connecting...." + QString::fromStdString("who->client.getLastError()") : "NON OK...");
//std::cout << "Starting connecting to: " << who->getIp() << std::endl;
}

View File

@@ -1,147 +0,0 @@
#include "connetionsmanager.h"
ConnetionsManager::ConnetionsManager()
: stop(false)
{
server = new TCP_SERVER();
}
ConnetionsManager::~ConnetionsManager()
{
stop = true;
if(this->isRunning()) {
this->quit();
if( ! this->wait(500) ) {
this->terminate();
if( ! this->wait(3000) ) {
std::cout << " Stop connectionmanager thread failed" << std::endl;
}
}
}
if( ! server->stopListening() ) {
std::cout << "Stop server failed" << std::endl;
}
delete server;
for( auto &e : Connections)
delete e;
}
int ConnetionsManager::start_Thread(std::vector<ConnetionsManager::PC> computers)
{
this->computers = computers;
if(this->isRunning())
return -1;
this->start();
return this->isRunning() ? 1 : 0;
}
#include <QApplication>
void ConnetionsManager::run()
{
/*
* 1. Start Server
* 2. Create in Loop Threads, which try to connect(QThread, which can emit signals && timeout system)
* -> pushpack to vector
* 3. Accept incomming connection with NOOOO reconnect request
*
*
*Bei Start versucht jeder Mit allen eine Verbingung aufzubauen =>
*
*/
//Server Starten
for (unsigned i = 0; i < 6; ++i) {
if(i == 5)
return;
if( server->startListening(computers.at(i).port) != 0 ) {
std::cout << "Start Server failed:" << server->getLastError() << std::endl;
// return;
} else {
emit showMSG("SERVER: " + QString::fromStdString(computers.at(i).ip) + ":" + QString::number(computers.at(i).port));
std::cout << "Connected to: " << computers.at(i).ip << ":" << computers.at(i).port << std::endl;
computers.erase(computers.begin() + i);
for ( auto &e : computers)
std::cout << " => Rest: " << e.ip << ":" << e.port << std::endl;
break;
}
}
//Start Try- Verbindungsaufbau
for (unsigned pcID = 0; pcID < computers.size(); ++pcID) {
TryConnector * newTryConnector = new TryConnector();
if( newTryConnector->tryConnectTo(computers.at(pcID).ip, computers.at(pcID).port) ) {
std::cout << "Tryconnect failed to: " << computers.at(pcID).ip << ":" << computers.at(pcID).port << std::endl;
}
//
connect(newTryConnector, SIGNAL(finished(TryConnector*)), this, SLOT(TryConnectorFinished(TryConnector*)));
connect(newTryConnector, SIGNAL(startConnecting(TryConnector*)), this, SLOT(TryConnectorStartedConnecting(TryConnector*)));
}
//Nur noch accepten
while ( ! stop ) {
CLIENT newCLIENT;
if( server->acceptClient(newCLIENT) != 0) {
std::cout << "accept failed:" << server->getLastError() << std::endl;
continue;
}
Peer * newPeer = new Peer(newCLIENT);
connect(newPeer, SIGNAL(recvdMessage(Peer*,QString)), this, SLOT(MessageWeiterLeitung(Peer*,QString)));
Connections.push_back(newPeer);
emit ConnectionsListChanged();
emit showMSG(QString::fromStdString(" -> New Client: " + newCLIENT.getIpAddress() + ":" + std::to_string(newCLIENT.getPort())));
std::cout << " -> Accpedted: " << newCLIENT.getIpAddress() << std::endl;
}
}
void ConnetionsManager::TryConnectorFinished(TryConnector *who)
{
disconnect(who, SIGNAL(finished(TryConnector*)), this, SLOT(TryConnectorFinished(TryConnector*)));
emit showMSG(QString::fromStdString(who->client.getLastError()));
//std::cout << who->getIp() << ": State: " << who->getState() << std::endl;
std::cout << who->getIp() << ": lError: " << who->client.getLastError() << std::endl;
if(who->getState() == who->OK) {
Peer * newPeer = new Peer(who->client);
connect(newPeer, SIGNAL(recvdMessage(Peer*,QString)), this, SLOT(MessageWeiterLeitung(Peer*,QString)));
Connections.push_back(newPeer);
emit ConnectionsListChanged();
emit showMSG(QString::fromStdString(" -> New Client: " + who->getIp() + ":" + std::to_string(who->getPort())));
}
delete who;
}
void ConnetionsManager::TryConnectorStartedConnecting(TryConnector *who)
{
connect(who, SIGNAL(startConnecting(TryConnector*)), this, SLOT(TryConnectorStartedConnecting(TryConnector*)));
//emit showMSG(who->getState() == who->CONNECTING ? "Connecting...." + QString::fromStdString("who->client.getLastError()") : "NON OK...");
//std::cout << "Starting connecting to: " << who->getIp() << std::endl;
}
void ConnetionsManager::MessageWeiterLeitung(Peer *who, QString msg)
{
emit sendMessageWeiterLeitung(who, msg);
}

View File

@@ -1,154 +0,0 @@
#include "connetionsmanager.h"
ConnetionsManager::ConnetionsManager()
: stop(false)
{
server = new TCP_SERVER();
server->autoCleanUpInTheEnd = false;
}
ConnetionsManager::~ConnetionsManager()
{
stop = true;
if(this->isRunning()) {
this->quit();
if( ! this->wait(500) ) {
this->terminate();
if( ! this->wait(3000) ) {
std::cout << " Stop connectionmanager thread failed" << std::endl;
}
}
}
if( ! server->stopListening() ) {
std::cout << "Stop server failed" << std::endl;
}
delete server;
for( auto &e : Connections)
delete e;
}
int ConnetionsManager::start_Thread(std::vector<ConnetionsManager::PC> computers)
{
this->computers = computers;
if(this->isRunning())
return -1;
this->start();
return this->isRunning() ? 1 : 0;
}
#include <QApplication>
void ConnetionsManager::run()
{
//bei schule dann anderes.. ip anders port same
if(/*schule*/ false ) {
while ( ! server->startListening(computers.at(0).port) ) {
emit showMSG("Error: Server konnte nicht gestartet werden: '"
+ QString::fromStdString(server->getLastError())
+ "' -> Läuft das Program vielleicht bereits? - Retry in 10 Sekunden.");
sleep(10);
} computers.erase(computers.begin());
} else {
//Server Starten
for ( unsigned i = 0; i < computers.size(); ++i) {
if( server->startListening(computers.at(i).port) != 0 ) {
std::cout << "Start Server failed:" << server->getLastError() << std::endl;
if(i == )
} else {
emit showMSG("SERVER: " + QString::fromStdString(computers.at(i).ip) + ":" + QString::number(computers.at(i).port));
std::cout << "Connected to: " << computers.at(i).ip << ":" << computers.at(i).port << std::endl;
computers.erase(computers.begin() + i);
break;
}
}
}
//Start Try- Verbindungsaufbau
for (unsigned pcID = 0; pcID < computers.size(); ++pcID) {
TryConnector * newTryConnector = new TryConnector();
if( newTryConnector->tryConnectTo(computers.at(pcID).ip, computers.at(pcID).port) ) {
std::cout << "Tryconnect failed to: " << computers.at(pcID).ip << ":" << computers.at(pcID).port << std::endl;
}
//
connect(newTryConnector, SIGNAL(finished(TryConnector*)), this, SLOT(TryConnectorFinished(TryConnector*)));
connect(newTryConnector, SIGNAL(startConnecting(TryConnector*)), this, SLOT(TryConnectorStartedConnecting(TryConnector*)));
}
//Nur noch accepten
while ( ! stop ) {
CLIENT newCLIENT;
newCLIENT.autoCleanUpInTheEnd = false; // not auto clossocket in destruktor
if( server->acceptClient(newCLIENT) != 0) {
std::cout << "accept failed:" << server->getLastError() << std::endl;
continue;
}
Peer * newPeer = new Peer(newCLIENT);
connect(newPeer, SIGNAL(recvdMessage(Peer*,QString)), this, SLOT(MessageWeiterLeitung(Peer*,QString)));
Connections.push_back(newPeer);
if( newPeer->startReciver() != 0 ) {
std::cout << "Start recver from pper failed" << std::endl;
}
emit ConnectionsListChanged();
emit showMSG(QString::fromStdString(" -> New Client: " + newCLIENT.getIpAddress() + ":" + std::to_string(newCLIENT.getPort())));
std::cout << " -> Accpedted: " << newCLIENT.getIpAddress() << std::endl;
}
}
void ConnetionsManager::TryConnectorFinished(TryConnector *who)
{
disconnect(who, SIGNAL(finished(TryConnector*)), this, SLOT(TryConnectorFinished(TryConnector*)));
emit showMSG(QString::fromStdString(who->client.getLastError()));
//std::cout << who->getIp() << ": State: " << who->getState() << std::endl;
std::cout << who->getIp() << ": lError: " << who->client.getLastError() << std::endl;
if(who->getState() == who->OK) {
Peer * newPeer = new Peer(who->client);
connect(newPeer, SIGNAL(recvdMessage(Peer*,QString)), this, SLOT(MessageWeiterLeitung(Peer*,QString)));
if( newPeer->startReciver() != 0 ) {
std::cout << "Start recver from pper failed" << std::endl;
}
Connections.push_back(newPeer);
emit ConnectionsListChanged();
emit showMSG(QString::fromStdString(" -> New Client: " + who->getIp() + ":" + std::to_string(who->getPort())));
}
delete who;
}
void ConnetionsManager::TryConnectorStartedConnecting(TryConnector *who)
{
connect(who, SIGNAL(startConnecting(TryConnector*)), this, SLOT(TryConnectorStartedConnecting(TryConnector*)));
//emit showMSG(who->getState() == who->CONNECTING ? "Connecting...." + QString::fromStdString("who->client.getLastError()") : "NON OK...");
//std::cout << "Starting connecting to: " << who->getIp() << std::endl;
}
void ConnetionsManager::MessageWeiterLeitung(Peer *who, QString msg)
{
emit sendMessageWeiterLeitung(who, msg);
}

View File

@@ -1,36 +0,0 @@
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
connect(&manager, SIGNAL(showMSG(QString)), this, SLOT(printInfo(QString)));
std::vector<ConnetionsManager::PC> pcs;
pcs.push_back(ConnetionsManager::PC("127.0.0.1", 4000));
pcs.push_back(ConnetionsManager::PC("127.0.0.1", 4001));
pcs.push_back(ConnetionsManager::PC("127.0.0.1", 4002));
pcs.push_back(ConnetionsManager::PC("127.0.0.1", 4003));
pcs.push_back(ConnetionsManager::PC("127.0.0.1", 4004));
pcs.push_back(ConnetionsManager::PC("127.0.0.1", 4005));
manager.start(pcs);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_lineEdit_returnPressed()
{
printInfo(ui->lineEdit->text());
}
void MainWindow::printInfo(QString str)
{
ui->statusBar->showMessage(str, 4000);
}

View File

@@ -1,49 +0,0 @@
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow), manager(new ConnetionsManager)
{
ui->setupUi(this);
connect(manager, SIGNAL(showMSG(QString)), this, SLOT(printInfo(QString)));
connect(manager, SIGNAL(ConnectionsListChanged()), this, SLOT(updateClientList()));
std::vector<ConnetionsManager::PC> pcs;
pcs.push_back(ConnetionsManager::PC("127.0.0.1", 4200));
pcs.push_back(ConnetionsManager::PC("127.0.0.1", 4201));
pcs.push_back(ConnetionsManager::PC("127.0.0.1", 4202));
pcs.push_back(ConnetionsManager::PC("127.0.0.1", 4203));
pcs.push_back(ConnetionsManager::PC("127.0.0.1", 4204));
pcs.push_back(ConnetionsManager::PC("127.0.0.1", 4205));
if( ! manager->start_Thread(pcs) )
exit(-1);
}
MainWindow::~MainWindow()
{
delete manager;
delete ui;
}
void MainWindow::printInfo(QString str)
{
ui->chat->append(str + "\n");
std::cout << "add: " << str.toStdString() << std::endl;
}
void MainWindow::updateClientList()
{
this->ui->Connections->clear();
for( auto &e : manager->Connections)
this->ui->Connections->addItem(QString("<PeerName>@" + QString::fromStdString(e->getIp()) + ":" + QString::number(e->getPort())));
}
void MainWindow::on_inputLine_returnPressed()
{
printInfo(ui->inputLine->text());
ui->inputLine->clear();
}

View File

@@ -1,66 +0,0 @@
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow), manager(new ConnetionsManager)
{
ui->setupUi(this);
connect(manager, SIGNAL(showMSG(QString)), this, SLOT(printInfo(QString)));
connect(manager, SIGNAL(ConnectionsListChanged()), this, SLOT(updateClientList()));
connect(manager, SIGNAL(sendMessageWeiterLeitung(Peer *,QString)), this, SLOT(recvedMSG(Peer *,QString)));
std::vector<ConnetionsManager::PC> pcs;
pcs.push_back(ConnetionsManager::PC("127.0.0.1", 4000));
pcs.push_back(ConnetionsManager::PC("127.0.0.1", 4001));
pcs.push_back(ConnetionsManager::PC("127.0.0.1", 4002));
pcs.push_back(ConnetionsManager::PC("127.0.0.1", 4003));
pcs.push_back(ConnetionsManager::PC("127.0.0.1", 4004));
pcs.push_back(ConnetionsManager::PC("127.0.0.1", 4005));
if( ! manager->start_Thread(pcs) )
exit(-1);
}
MainWindow::~MainWindow()
{
delete manager;
delete ui;
}
void MainWindow::printInfo(QString str)
{
ui->chat->append("<PROGRAM>: " + str);
std::cout << "add: " << str.toStdString() << std::endl;
}
void MainWindow::recvedMSG(Peer *who, QString msg)
{
ui->chat->append(QString::fromStdString("<" + who->getName() + ">: ") + msg);
}
void MainWindow::updateClientList()
{
this->ui->Connections->clear();
for( auto &e : manager->Connections)
this->ui->Connections->addItem(QString("<PeerName>@" + QString::fromStdString(e->getIp()) + ":" + QString::number(e->getPort())));
}
void MainWindow::on_inputLine_returnPressed()
{
ui->chat->append("<ICH>: " + ui->inputLine->text());
//sending....
for (auto &e : manager->Connections) {
if( e->send_to(ui->inputLine->text()) <= 0) {
std::cout << "sendfailed: " << e->getLastError() << std::endl;
}
}
ui->inputLine->clear();
}

View File

@@ -1,68 +0,0 @@
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow), manager(new ConnetionsManager)
{
ui->setupUi(this);
connect(manager, SIGNAL(showMSG(QString)), this, SLOT(printInfo(QString)));
connect(manager, SIGNAL(ConnectionsListChanged()), this, SLOT(updateClientList()));
connect(manager, SIGNAL(sendMessageWeiterLeitung(Peer *,QString)), this, SLOT(recvedMSG(Peer *,QString)));
std::vector<ConnetionsManager::PC> pcs;
pcs.push_back(ConnetionsManager::PC("127.0.0.1", 4000));
pcs.push_back(ConnetionsManager::PC("127.0.0.1", 4001));
pcs.push_back(ConnetionsManager::PC("127.0.0.1", 4002));
pcs.push_back(ConnetionsManager::PC("127.0.0.1", 4003));
pcs.push_back(ConnetionsManager::PC("127.0.0.1", 4004));
pcs.push_back(ConnetionsManager::PC("127.0.0.1", 4005));
if( ! manager->start_Thread(pcs) )
exit(-1);
}
MainWindow::~MainWindow()
{
delete manager;
delete ui;
}
void MainWindow::printInfo(QString str)
{
ui->chat->append("<PROGRAM>: " + str);
std::cout << "add: " << str.toStdString() << std::endl;
}
void MainWindow::recvedMSG(Peer *who, QString msg)
{
ui->chat->append(QString::fromStdString("<" + who->getName() + ">: ") + msg);
}
void MainWindow::updateClientList()
{
this->ui->Connections->clear();
for( auto &e : manager->Connections)
this->ui->Connections->addItem(QString("<PeerName>@" + QString::fromStdString(e->getIp()) + ":" + QString::number(e->getPort())));
}
void MainWindow::on_inputLine_returnPressed()
{
ui->chat->append("<ICH>: " + ui->inputLine->text());
//sending....
for (auto &e : manager->Connections) {
if( e->send_to(ui->inputLine->text()) <= 0) {
perror("sendfailed");
std::cout << "sendfailed: " << e->getLastError() << std::endl;
}
}
ui->inputLine->clear();
}

View File

@@ -1,18 +0,0 @@
#include "peer.h"
Peer::Peer(CLIENT cli)
: isCLIENT(true)
{
}
Peer::Peer(client_TCP_Lib cli)
: isCLIENT(true)
{
}
void Peer::run()
{
}

View File

@@ -1,23 +0,0 @@
#ifndef PEER_H
#define PEER_H
#include "my_tcp_lib.h"
#include "server_tcp_lib.h"
#include <QThread>
class Peer : QThread
{
public:
Peer(CLIENT cli);
Peer(client_TCP_Lib cli);
const bool isCLIENT;
private:
void run();
};
#endif // PEER_H

View File

@@ -1,47 +0,0 @@
#ifndef TRYCONNECTOR_H
#define TRYCONNECTOR_H
#include "my_tcp_lib.h"
#include "server_tcp_lib.h"
#include <QThread>
class TryConnector: public QThread
{
Q_OBJECT
public:
enum STATE {
UNDEFINED,
CONNECTING,
OK,
UNKNOWN_ERROR,
TIMEOUT
};
TryConnector();
int tryConnectTo(std::string ip, unsigned short port);
STATE getState();
std::string getIp();
unsigned short getPort();
client_TCP_Lib client;
private:
void run();
std::string ip;
unsigned short port;
STATE state;
signals:
void finished(TryConnector * who);
void startConnecting(TryConnector * who);
};
#endif // TRYCONNECTOR_H

0
DezChat/README.md Normal file
View File

View File

@@ -11,8 +11,7 @@ ChatWidget::ChatWidget(QWidget *widget)
}
void ChatWidget::addMsgOldStyle(QString msg, const Peer *who, Qt::Alignment alignment, const QColor &color)
void ChatWidget::addMsg(QString msg, Qt::Alignment alignment, const QColor &color, const Peer *colorByPeer)
{
if (msg.isEmpty())
return;
@@ -22,7 +21,7 @@ void ChatWidget::addMsgOldStyle(QString msg, const Peer *who, Qt::Alignment alig
//save old color + set new color
QColor color_ = this->textColor();
this->setTextColor( (color == Qt::white) ? getColorByPeer(who) : color );
this->setTextColor( (colorByPeer) ? getColorByPeer(colorByPeer) : color );
//print msg + set aligment
this->append(msg);
@@ -31,51 +30,19 @@ void ChatWidget::addMsgOldStyle(QString msg, const Peer *who, Qt::Alignment alig
//set old color + scroll down
this->setTextColor(color_);
this->verticalScrollBar()->setValue(this->verticalScrollBar()->maximum());
}
void ChatWidget::addMsg(QString msg, Qt::Alignment alignment, const QColor &color)
void ChatWidget::addSenderNameAndMSG(const Peer *who, QString msg, QString cusomMsg)
{
if (msg.isEmpty())
return;
//Wichtig, da sonst die ausgewählte stelle gefärbt und verschoben wird
this->moveCursor(QTextCursor::End);
//print msg + set aligment
this->append(msg);
this->setAlignment( alignment );
//set default QTextFormat
this->moveCursor(QTextCursor::End);
QTextCursor cursor(this->textCursor());
cursor.select(QTextCursor::SelectionType::LineUnderCursor);
cursor.setCharFormat(QTextCharFormat());
this->moveCursor(QTextCursor::End);
moveCursor(QTextCursor::MoveOperation::Up);
//save old color + set new color
QColor color_ = this->textColor();
this->setTextColor( color );
moveCursor(QTextCursor::MoveOperation::End);
//set old color + scroll down
this->setTextColor(color_);
this->verticalScrollBar()->setValue(this->verticalScrollBar()->maximum());
}
void ChatWidget::addSenderName(const Peer *who, QString customText)
{
this->moveCursor(QTextCursor::End);
///---->Name + Time
QColor color_ = this->textColor();
this->setTextColor( getColorByPeer(who) );
//print msg + set aligment
this->append(QTime::currentTime().toString("hh:mm") + ((who) ? (" ~" + who->getName()) : " Du") + customText +":");
this->append(QTime::currentTime().toString("hh:mm") + ((who) ? (" ~" + who->getName()) : " Du") + cusomMsg +":");
this->setAlignment( (who) ? Qt::AlignLeft : Qt::AlignRight );
this->moveCursor(QTextCursor::End);
@@ -88,22 +55,31 @@ void ChatWidget::addSenderName(const Peer *who, QString customText)
//set old color + scroll down
this->setTextColor(color_);
///<----
///---> Message
//print msg + set aligment
this->append(msg);
//set default QTextFormat
this->moveCursor(QTextCursor::End);
cursor.select(QTextCursor::SelectionType::LineUnderCursor);
cursor.setCharFormat(QTextCharFormat());
///<----
this->verticalScrollBar()->setValue(this->verticalScrollBar()->maximum());
}
QColor ChatWidget::getColorByPeer(const Peer *peer)
{
if( ! colorMap.contains(peer) )
setNewColorToPeer(peer);
return colorMap[peer];
return ( colorMap.contains(peer) ) ? colorMap[peer] : setNewColorToPeer(peer);
}
void ChatWidget::setNewColorToPeer(const Peer *peer)
QColor ChatWidget::setNewColorToPeer(const Peer *peer)
{
size_t ColorListLength = (sizeof(colorList)/sizeof(*colorList));
colorMap.insert(peer, colorList[ ( colorCounter % ColorListLength ) ] );
colorCounter++;
return colorMap.insert(peer, colorList[ ( ( colorCounter ++ ) % (sizeof(colorList)/sizeof(*colorList)) ) ] ).value();
}

View File

@@ -5,7 +5,7 @@
#include <QMap>
#include <QScrollBar>
#include "peer.h"
#include "ConnectionsStuff/peer.h"
class ChatWidget : public QTextEdit
@@ -13,14 +13,13 @@ class ChatWidget : public QTextEdit
Q_OBJECT
public:
ChatWidget(QWidget * widget);
void addMsgOldStyle(QString msg, const Peer *who,Qt::Alignment alignment = Qt::AlignLeft, const QColor &color = Qt::white);
void addMsg(QString msg, Qt::Alignment alignment = Qt::AlignLeft, const QColor &color = Qt::black);
void addSenderName(const Peer *who, QString customText = "");
void addMsg(QString msg, Qt::Alignment alignment = Qt::AlignLeft, const QColor &color = Qt::black, const Peer *colorByPeer = nullptr);
void addSenderNameAndMSG(const Peer *who, QString msg, QString customText = "");
QColor getColorByPeer(const Peer *peer);
private:
void setNewColorToPeer(const Peer *peer);
QColor setNewColorToPeer(const Peer *peer);
const QColor colorList[14] = { Qt::black, Qt::blue, Qt::darkBlue, Qt::green, Qt::darkGreen,
Qt::darkCyan, Qt::red, Qt::darkRed,

View File

@@ -17,19 +17,35 @@ MainWindow::MainWindow(QWidget *parent) :
if(/* DISABLES CODE: Schul-Version */ Port_Home_Version) {
for (unsigned short i = 0; i < 32; ++i)
pcs.push_back(ConnetionsManager::PC("127.0.0.1", 4100 + i));
pcs.push_back(ConnetionsManager::PC("127.0.0.1", 5000 + i));
} else {
pcs.push_back(ConnetionsManager::PC("SERVER_PORT", 4000));
for (int i = 0; i < 34; ++i)
pcs.push_back(ConnetionsManager::PC("CR01-PC" + std::string((i < 10) ? "0" : "") + std::to_string(i), 4000));
}
pcs.push_back(ConnetionsManager::PC("SERVER_PORT", 5000));
for (int i = 0; i < 35; ++i) {
pcs.push_back(ConnetionsManager::PC("CR01-PC" + std::string((i < 10) ? "0" : "") + std::to_string(i), 5000));
//pcs.push_back(ConnetionsManager::PC("CR02-PC" + std::string((i < 10) ? "0" : "") + std::to_string(i), 5000));
}
}
if( ! manager->start_Thread(Port_Home_Version, pcs) )
exit(-1);
updateClientList();
timerID = startTimer(100);
timerID = startTimer(100); // 100
//------------------>Game View
game = new Game(this);
game->hide();
this->joinGame();
//setMouseTracking(true);
//view.scene->installEventFilter(this);
}
MainWindow::~MainWindow()
@@ -40,10 +56,11 @@ MainWindow::~MainWindow()
delete ui;
}
void MainWindow::timerEvent(QTimerEvent *)
void MainWindow::timerEvent(QTimerEvent * e)
{
manager->sendtoAllPeers("PING=" + QString::number(manager->getConnectionList().size()) );
timerForWarningMSG++;
game->player->Worm.at(0)->timerEvent(e);
}
@@ -64,18 +81,13 @@ void MainWindow::recvedMSG(Peer *who, QString msg)
wrongClientCountCounter++;
if(timerForWarningMSG > 100 && (timerForWarningMSG = 0) == 0)
if(wrongClientCountCounter > 10 && (wrongClientCountCounter = 0) == 0)
ui->chat->addMsg(QString::fromStdString("<WARNUNG> Anzahl Verbindungen stimmt nicht überein...Bitte Starte das Programm neu."), Qt::AlignCenter, "orange" );
ui->chat->addMsg("<WARNUNG> Anzahl Verbindungen stimmt nicht überein...Bitte Starte das Programm neu.", Qt::AlignCenter, "orange" );
} else if(what == "MSG") {
//ui->chat->append(QString::fromStdString("<" + who->name + ">: " + value) );
//std::cout << "Recied MSG: " << value << std::endl;
if(oldPrintStyle)
ui->chat->addMsgOldStyle( who->getFullName() + " " + QString::fromStdString(value), who );
else {
ui->chat->addSenderName(who);
ui->chat->addMsg(QString::fromStdString(value));
}
ui->chat->addMsg( who->getFullName() + " " + QString::fromStdString(value), Qt::AlignLeft, nullptr, who );
else
ui->chat->addSenderNameAndMSG(who, QString::fromStdString(value));
} else if(what == "JOINED") {
who->setName(value);
@@ -90,12 +102,24 @@ void MainWindow::recvedMSG(Peer *who, QString msg)
updateClientList();
} else if(what == "PRIVATE_MSG") {
if(oldPrintStyle)
ui->chat->addMsgOldStyle( "</MSG> " + who->getFullName() + QString::fromStdString(value), who );
else {
ui->chat->addSenderName(who, " > flüstert dir zu");
ui->chat->addMsg(QString::fromStdString(value), Qt::AlignLeft, Qt::darkGray);
size_t pos1 = value.find("#");
if(pos1 == std::string::npos) {
std::cout << "-> Error: PRIVATE_MSG_MESSAGE is invalid: no # found" << std::endl;
return;
}
size_t pos2 = value.find("#", pos1 + 1);
if(pos2 == std::string::npos) {
std::cout << "-> Error: PRIVATE_MSG_MESSAGE is invalid: no second # found" << std::endl;
return;
}
std::string toWho = value.substr(pos1 + 1, pos2 - pos1 - 1);
value.erase(pos1, pos2 +1);
if(oldPrintStyle)
ui->chat->addMsg( "</MSG> " + who->getFullName() + " -> " + QString::fromStdString(toWho) + ": " + QString::fromStdString(value), Qt::AlignLeft, nullptr, who);
else
ui->chat->addSenderNameAndMSG(who, QString::fromStdString(value)," > flüstert " + QString::fromStdString(toWho) +" zu" + ((toWho == "dir") ? "" : " (ADMIN CATCHED)"));
} else if(what == "JOIN_TIME") {
who->setJoinTime(value);
@@ -104,23 +128,40 @@ void MainWindow::recvedMSG(Peer *who, QString msg)
ui->chat->addMsg(QString::fromStdString("<DEBUG>: " + value), Qt::AlignCenter, "gray" );
} else if(what == "VERSION") {
if(value != VERSION) {
if( stoi(value) != VERSION ) {
ui->chat->addMsg("<ERROR> Falsche Programmversion: Client " + who->getFullName() + ": '" +
QString::fromStdString( value + "' ungleich eigener: '" + VERSION + "'"), Qt::AlignCenter, "orange" );
who->send_to("=" ); // SOLANGE KEIN PING PONG => UPDATE TCP
if( who->closeSocket() != 0)
perror("Closesocket failed.");
return;
QString::fromStdString( value + "' ungleich eigener: '" + std::to_string(VERSION) + "'"), Qt::AlignCenter, "red" );
if(stoi(value) < VERSION) {
std::cout << " -> Selber höhere Version => Closesocket to " << who->getFullName().toStdString() << std::endl;
if(who->isConnected()) {
if(who->closeSocket() != 0)
perror("Closesocket failed.");
} else
perror("couldn't Closesocket from wrong version client: not connected");
} else
std::cout << " -> Selber niedrigere Version => Wait for Closesocket from " << who->getFullName().toStdString() << std::endl;
}
} else if(what == "") {
std::cout << "INVALID MSG: '" << msg.toStdString() << "'" << std::endl;
} else if(what == "adminstatus") {
if (value == "true") {
who->set_isAdmin(true);
if(manager->isAdmin) {
ui->chat->addMsg( who->getName() + " hat sich zum Admin befördert.", Qt::AlignCenter, "orange");
}
} else if ( value == "gofalse") {
who->set_isAdmin(false);
if(manager->isAdmin) {
ui->chat->addMsg( who->getName() + " hat sich vom Admin degratiert.", Qt::AlignCenter, "orange");
}
}
} else {
std::cout << "ERROR: UNKNOWN MSG: '" << msg.toStdString() << std::endl;
ui->chat->addMsg(QString::fromStdString("<ERROR> Unbekannter Nachrichtentype: '"+ what +"' mit value='" + value + "'"), Qt::AlignCenter, "red" );
}
}
void MainWindow::updateClientList()
@@ -138,7 +179,13 @@ void MainWindow::on_inputLine_returnPressed()
QString line = ui->inputLine->text();
ui->inputLine->clear();
if(line.startsWith('/')) {
if( line == "lol" ) {
this->joinGame();
return;
} else if(line.startsWith('/')) {
ui->chat->addMsg("Executing: '" + line + "'...");
if(line.startsWith("/clear", Qt::CaseInsensitive)) {
@@ -151,34 +198,32 @@ void MainWindow::on_inputLine_returnPressed()
+ manager->getConnectionList().at(i)->getJoinTime() + " VectorIndex: " + QString::number(i));
}
} else if (line.startsWith("/-1", Qt::CaseInsensitive)) {
if(manager->getConnectionList().size())
this->manager->getConnectionList().at(0)->closeSocket();
} else if (line.startsWith("/-", Qt::CaseInsensitive)) {
} else if (line.startsWith("/msg <", Qt::CaseInsensitive)) {
line.remove(0, 5);
int pos = line.indexOf("> ");
if(pos == -1) {
ui->chat->addMsg("<Console>: Error: Ungültiger Client: '" + line + "'", Qt::AlignCenter, "red");
return;
}
if(pos == -1)
return ui->chat->addMsg("<Console>: Error: Ungültiger Client: '" + line + "'", Qt::AlignCenter, "red");
QString recver = line.left(pos + 1);
line.remove(0, pos + 2);
bool ok = false;
for( auto &c : manager->getConnectionList() ) {
if( recver == c->getFullName() ) {
c->send_to( "PRIVATE_MSG=" + line );
ok = true;
if( recver == c->getFullName() || c->isAdmin() ) {
//Wenn empfänger überinstimmt auch wenn dieser admin ist, dann verwende "dir"
c->send_to( "PRIVATE_MSG=#" + QString( ( (recver == c->getFullName()) ? "dir" : recver ) ) + "#" + line );
//Nur wenn ein nicht admin empfänger gefunden worden ist, setze on auf true, sonst kommt keine "kein passender client" nachricht
if( recver == c->getFullName() )
ok = true;
}
}
if( !ok ) {
ui->chat->addMsg("<Console>: Error: Unbekannter Client: '" + recver + "'", Qt::AlignCenter, "red");
return;
}
if( !ok )
return ui->chat->addMsg("<Console>: Error: Unbekannter Client: '" + recver + "'", Qt::AlignCenter, "red");
} else if (line.startsWith("/setPrintStyle ", Qt::CaseInsensitive)) {
if(line.length() > 15) {
@@ -187,18 +232,33 @@ void MainWindow::on_inputLine_returnPressed()
else if (line[15] == '2')
oldPrintStyle = false;
else
ui->chat->addMsg("<Console>: Error: Unbekannter StyleSheet: " + QString(line.at(15)), Qt::AlignCenter, Qt::red);
ui->chat->addMsg("<Console>: Error: Unbekannter StyleSheet: " + QString(line.at(15)), Qt::AlignCenter, "red");
} else
ui->chat->addMsg("<Console>: Error: StyleSheet ID fehlt.", Qt::AlignCenter, Qt::red);
ui->chat->addMsg("<Console>: Error: StyleSheet ID fehlt.", Qt::AlignCenter, "red");
} else if (line.startsWith("/help", Qt::CaseInsensitive)) {
ui->chat->addMsg("Liste:\t/help\t\t-> Gibt diese Liste aus.");
ui->chat->addMsg("\t/clear\t\t-> Löscht den Chat (nur bei dir).");
ui->chat->addMsg("\t/msg <Client> <msg>\t-> Privatnachricht an diesen Client");
ui->chat->addMsg("\t\t\t Tip: Doppelklick auf den Namen rechts in der Liste.");
ui->chat->addMsg("\t/setPrintStyle <1/2>\t -> AusgabeAussehen: Style 1 oder 2.");
ui->chat->addMsg("\t/setPrintStyle <1/2>\t-> AusgabeAussehen: Style 1 oder 2.");
} else if (line.startsWith("/login ", Qt::CaseInsensitive)) {
line.remove(0, 7);
if (line.contains("admin")){
manager->sendtoAllPeers("adminstatus=true");
manager->isAdmin = true;
ui->chat->addMsg("<Console> Adminstatus confirmed", Qt::AlignCenter, "red");
}
} else if (line.startsWith("/logout", Qt::CaseInsensitive)) {
if(manager->isAdmin) {
manager->sendtoAllPeers("adminstatus=gofalse");
manager->isAdmin = false;
ui->chat->addMsg("<Console> Adminstatus removed", Qt::AlignCenter, "red");
}
} else {
ui->chat->addMsg("<Console>: Error: Unbekannter Befehl: '" + line + "'", Qt::AlignCenter, "red");
}
@@ -206,21 +266,85 @@ void MainWindow::on_inputLine_returnPressed()
} else {
if(oldPrintStyle)
ui->chat->addMsgOldStyle("<ICH>: " + line, nullptr, Qt::AlignRight );
else {
ui->chat->addSenderName(nullptr);
ui->chat->addMsg(line, Qt::AlignRight);
}
ui->chat->addMsg("<ICH>: " + line, Qt::AlignRight );
else
ui->chat->addSenderNameAndMSG(nullptr, line);
//--------------> SEND MESSAGES
manager->sendtoAllPeers("MSG=" + line);
}
}
void MainWindow::on_Connections_itemDoubleClicked(QListWidgetItem *item)
{
//std::cout << "Item gedoppelklickt: "<<item->text().toStdString() << std::endl;
ui->inputLine->setText("/msg " + item->text() + " ");
}
void MainWindow::joinGame()
{
this->setFixedSize(1200, 800);
game->setGeometry( 10, 10, this->width() - 20, this->height() - 20);
//set chat things invisible
this->ui->chat->hide();
this->ui->Connections->hide();
this->ui->inputLine->hide();
this->ui->label->hide();
//set game visible
this->game->show();
this->game->setFocus();
}
void MainWindow::leaveGame()
{
//make game invisible
this->game->hide();
//set old things visible
this->ui->chat->hide();
this->ui->Connections->hide();
this->ui->inputLine->hide();
this->ui->label->hide();
}
/*
bool MainWindow::eventFilter(QObject *watched, QEvent *event)
{
std::cout << "got evet" << std::endl;
// this->view.scene->updateTest(e->x(), e->y());
if(watched == view.scene){
// press event
QGraphicsSceneMouseEvent *mouseSceneEvent;
if(event->type() == QEvent::GraphicsSceneMousePress){
mouseSceneEvent = static_cast<QGraphicsSceneMouseEvent *>(event);
qDebug() << mouseSceneEvent->scenePos()<<mouseSceneEvent->lastScenePos();
// your logic here
}
// move event
else if (event->type() == QEvent::GraphicsSceneMouseMove) {
mouseSceneEvent = static_cast<QGraphicsSceneMouseEvent *>(event);
qDebug() << mouseSceneEvent->scenePos()<<mouseSceneEvent->lastScenePos();
// your logic here
std::cout << "Moved to: " << mouseSceneEvent->scenePos().x() << " " << mouseSceneEvent->scenePos().y() << std::endl;
}
// release event
else if (event->type() == QEvent::GraphicsSceneMouseRelease) {
mouseSceneEvent = static_cast<QGraphicsSceneMouseEvent *>(event);
qDebug() << mouseSceneEvent->scenePos()<<mouseSceneEvent->lastScenePos();
// your logic here
}
}
return QMainWindow::eventFilter(watched, event);
}
*/

View File

@@ -3,7 +3,13 @@
#include <QListWidget>
#include <QMainWindow>
#include "connetionsmanager.h"
#include "ConnectionsStuff/connetionsmanager.h"
#include "wormio_game/game.h"
#include <iostream>
#include <qdebug.h>
@@ -18,8 +24,8 @@ class MainWindow : public QMainWindow
public:
explicit MainWindow(QWidget *parent = nullptr);
~MainWindow();
void timerEvent(QTimerEvent *);
void timerEvent(QTimerEvent * e);
private slots:
void printInfo(QString str);
void recvedMSG(Peer *who, QString msg);
@@ -33,6 +39,18 @@ private:
ConnetionsManager *manager;
int timerID, timerForWarningMSG, wrongClientCountCounter;
bool oldPrintStyle;
//Game
public:
void joinGame();
void leaveGame();
Game * game;
};
#endif // MAINWINDOW_H

View File

@@ -16,6 +16,12 @@
<height>550</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>1000</width>
<height>550</height>
</size>
</property>
<property name="windowTitle">
<string>Serverloser Chat Version 2.0</string>
</property>
@@ -48,7 +54,7 @@
<item>
<widget class="QLabel" name="label">
<property name="text">
<string>Message:</string>
<string>Neu Nachricht:</string>
</property>
</widget>
</item>

View File

@@ -1,193 +0,0 @@
#include "peer.h"
Peer::Peer(const CLIENT &cli)
: cli_v1(cli), isCLIENT(true), stop(false), name("UNKNOWN")
{
this->cli_v1.autoCleanUpInTheEnd = false;
this->cli_v2.autoCleanUpInTheEnd = false;
}
Peer::Peer(const client_TCP_Lib &cli, std::string ip_connectedTo, unsigned short port_connectedTo)
: cli_v2(cli), isCLIENT(false), stop(false), port_connectedTo(port_connectedTo), name("UNKNOWN"), ip_connectedTo(ip_connectedTo)
{
this->cli_v1.autoCleanUpInTheEnd = false;
this->cli_v2.autoCleanUpInTheEnd = false;
}
Peer::~Peer()
{
std::cout << "~Peer(): port: " << getPort() << std::endl;
if(this->isRunning()) {
this->quit();
if( ! this->wait(500) ) {
this->terminate();
if( ! this->wait(3000) ) {
std::cout << "Terminating Thread timeouted: " << __func__ << std::endl;
}
}
}
if(this->isConnected())
if( this->closeSocket() != 0)
std::cout << "!-> CloseSocket failed: " << cli_v1.getLastError() << std::endl;
}
void Peer::send_to(QString msg)
{
msg.push_back('|');
if(isCLIENT) {
//std::cout << "send to socket: " << cli_v1.getSocket() << std::endl;
if( cli_v1.send_(msg.toStdString().c_str(), static_cast<unsigned>(msg.toStdString().length()) ) <= 0) {
std::cout << "emit -> sned failed" << std::endl;
emit sendFailed(this);
return;
}
} else {
//std::cout << "send to socket: " << cli_v2.getConnectionSocket() << std::endl;
if( send(cli_v2.getConnectionSocket(), msg.toStdString().c_str(), static_cast<unsigned>(msg.toStdString().length()), 0) <= 0) {
std::cout << "emit -> sned failed" << std::endl;
emit sendFailed(this);
return;
}
}
}
int Peer::closeSocket()
{
if(isCLIENT)
return cli_v1.closeSocket();
else
return cli_v2.closeSocket();
}
bool Peer::isConnected()
{
if(isCLIENT)
return cli_v1.isConnected();
else
return cli_v2.isConnected();
}
int Peer::startReciver()
{
if(this->isRunning())
return -1;
this->start();
return this->isRunning() ? 0 : 1;
}
void Peer::sendInfoData(const unsigned short ownServerListeningPort)
{
this->send_to("PORT=" + QString::number(ownServerListeningPort));
this->send_to("VERSION=" + QString(VERSION) );
this->send_to("JOIN_TIME=" + QTime::currentTime().toString() );
this->send_to("JOINED=" + getUserName() );
}
std::string Peer::getIp() const
{
if(isCLIENT) {
return cli_v1.getIpAddress();
} else {
return ip_connectedTo;
}
}
std::string Peer::getLastError()
{
if(isCLIENT) {
return cli_v1.getLastError();
} else {
return cli_v2.getLastError();
}
}
unsigned short Peer::getPort() const
{
if(isCLIENT) {
return port_connectedTo;
} else {
return port_connectedTo;
}
}
QString Peer::getName() const
{
return QString::fromStdString(name);
}
QString Peer::getUserName() const
{
return ( (qgetenv("USER").isEmpty()) ? qgetenv("USERNAME") : qgetenv("USER") );
}
QString Peer::getFullName() const
{
return QString("<" + getName() + "@" + QString::fromStdString(getIp()) + ":" + QString::number(getPort()) + ">");
}
QString Peer::getJoinTime() const
{
return QString::fromStdString(joinTime);
}
void Peer::setConnectedToPort(unsigned short port)
{
port_connectedTo = port;
}
void Peer::setName(std::string name)
{
this->name = name;
}
void Peer::setJoinTime(std::string time)
{
joinTime = time;
}
void Peer::run()
{
//emit recvdMessage(this, "DEBUG=Start ReciveThread: From: " + QString::fromStdString( this->getIp() )+ ":" + QString::number( this->getPort() ) );
std::vector<char> buffer;
while ( ! stop ) {
buffer.clear();
ssize_t recvedbytes;
char c;
do {
if( isCLIENT )
recvedbytes = cli_v1.recv_(&c, 1);
else
recvedbytes = recv(cli_v2.getConnectionSocket(), &c, 1, 0);
if(recvedbytes <= 0) {
std::cout << "emit -> rev failed" << std::endl;
emit recvdFailed(this);
return;
} else
buffer.push_back(c);
} while (c != '|');
if(buffer.size() > 0)
buffer.pop_back();
buffer.push_back('\0');
std::string stringBuffer;
if(!buffer.data() || (stringBuffer = std::string(buffer.data())) .find("=") == std::string::npos) {
std::cout << "INVALID MSG: '" << buffer.data() << "'" << std::endl;
continue;
}
emit recvdMessage(this, QString::fromStdString(stringBuffer));
}
}

6
DezChat/resources.qrc Normal file
View File

@@ -0,0 +1,6 @@
<RCC>
<qresource prefix="/">
<file>wormio_game/Ressources/test.png</file>
<file>wormio_game/Ressources/slitherio_background_543a4c3cc8.jpg</file>
</qresource>
</RCC>

View File

@@ -1,111 +0,0 @@
#include "tryconnector.h"
Connector::Connector()
: returnValue(-1)
{
client.autoCleanUpInTheEnd = false;
}
Connector::~Connector()
{
//std::cout << "~Connector()" << std::endl;
if(this->isRunning()) {
this->quit();
if( ! this->wait(500) ) {
this->terminate();
if( ! this->wait(3000) ) {
std::cout << "Terminating Thread timeouted: " << __func__ << std::endl;
}
}
}
}
int Connector::ConnectTo()
{
if(this->isRunning())
return -1;
this->start();
return this->isRunning() ? 0 : 1;
}
int Connector::getReturnValue()
{
return returnValue;
}
void Connector::run()
{
returnValue = client.connectTo(client.getIpByName(ip), port);
}
TryConnector::TryConnector(void)
: state(UNDEFINED)
{
}
TryConnector::~TryConnector()
{
//std::cout << "~TryConnector()" << std::endl;
if(this->isRunning()) {
this->quit();
if( ! this->wait(500) ) {
this->terminate();
if( ! this->wait(3000) ) {
std::cout << "Terminating Thread timeouted: " << __func__ << std::endl;
}
}
}
}
int TryConnector::tryConnectTo(std::string ip, unsigned short port)
{
if(this->isRunning())
return -1;
this->connector.ip = ip;
this->connector.port = port;
this->start();
return this->isRunning() ? 0 : 1;
}
const client_TCP_Lib &TryConnector::client() { return connector.client; }
const STATE &TryConnector::getState() { return this->state; }
const std::string &TryConnector::getIp() { return connector.ip; }
const unsigned short &TryConnector::getPort() { return connector.port; }
void TryConnector::run()
{
this->state = STATE::UNDEFINED;
if(connector.ConnectTo() != 0) {
this->state = STATE::UNDEFINED_ERROR;
} else {
unsigned timeout_HectSec = 200;
for (unsigned time = 1; time <= timeout_HectSec; ++time) {
if(connector.isRunning()) {
usleep(10000); // sleep 0,01s
if(time > 100)
std::cout << ( "Waited " + std::to_string(static_cast<double>(time) / 100 ) + "sec...\n" ) << std::flush;
} else {
this->state = (this->connector.getReturnValue() == 0) ? STATE::OK : STATE::UNDEFINED_ERROR;
//std::cout << "Thread finished mit res = " << connector.getReturnValue() << std::endl;
break;
}
if(time == timeout_HectSec) {
this->state = TIME_OUT_TRY_OUT;
std::cout << "Connect to "<<connector.ip << ":" <<connector.port << " failed: TIMEOUT." << std::endl;
}
}
}
emit finished(this);
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

View File

@@ -0,0 +1,7 @@
#include "enemy.h"
Enemy::Enemy(QGraphicsScene *scene)
: scene(scene)
{
}

View File

@@ -0,0 +1,19 @@
#ifndef ENEMY_H
#define ENEMY_H
#include <QPixmap>
#include <QGraphicsPixmapItem>
#include <QGraphicsItem>
#include <QGraphicsScene>
#include <QObject>
class Enemy : public QObject
{
Q_OBJECT
public:
Enemy(QGraphicsScene * scene);
QGraphicsScene * scene;
};
#endif // ENEMY_H

View File

@@ -0,0 +1,8 @@
#include "enemymanager.h"
EnemyManager::EnemyManager(QGraphicsScene *scene)
: scene(scene)
{
}

View File

@@ -0,0 +1,17 @@
#ifndef ENEMYMANAGER_H
#define ENEMYMANAGER_H
#include <QGraphicsScene>
class EnemyManager
{
public:
EnemyManager( QGraphicsScene * scene);
QGraphicsScene *scene;
};
#endif // ENEMYMANAGER_H

View File

@@ -0,0 +1,106 @@
#include "game.h"
Game::Game(QWidget *parant)
: QGraphicsView(parant)
{
//create scene
scene = new QGraphicsScene(this);
//set scene
this->setScene(scene);
//Create Player
player = new Player(scene);
//create enemyManager with Acces on Scene
enemyManager = new EnemyManager(scene);
//create minimap
miniMap = new QGraphicsRectItem();
this->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
this->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
Koords = new QGraphicsSimpleTextItem();
connect(this->scene, SIGNAL(sceneRectChanged(QRectF)), this, SLOT(sceneRectChanged(QRectF)));
Koords->setBrush(Qt::blue);
achsen[0].setLine(-1000, 0, 1000, 0);
achsen[1].setLine(0, -1000, 0, 1000);
scene->addItem(&achsen[0]);
scene->addItem(&achsen[1]);
///achsen[0].setPen(QPen(Qt::white));
///achsen[1].setPen(QPen(Qt::white));
achsen[0].setPen(QPen(Qt::white, 3));
scene->addItem(&achsen[2]);
//achsen[2].setPen(QPen(Qt::white));
this->setMouseTracking(true);
MouseKoords = new QGraphicsSimpleTextItem();
scene->addItem(MouseKoords);
///MouseKoords->setBrush(Qt::white);
//this->scene->setMinimumRenderSize(100);
scene->setSceneRect(0, 0, 500, 500);
mapBorder = new QGraphicsRectItem();
mapBorder->setRect(-500, -500, 4000, 4000);
mapBorder->setPen(QPen(Qt::black, 1000));
scene->addItem(mapBorder);
//this->setBackgroundBrush(QBrush(QColor(Qt::gray)));
setBackgroundBrush(QImage(":/wormio_game/Ressources/slitherio_background_543a4c3cc8.jpg"));
scene->addItem(Koords);
//mini map:
scene->addItem(miniMap);
miniMap->setPen(QPen(Qt::white, 3));
miniMap->setRect(0, 0, 200, 200);
}
#include <QMouseEvent>
#include <iostream>
#include <QGraphicsWidget>
void Game::mouseMoveEvent(QMouseEvent *event)
{
player->rotateHead( mapToScene( event->pos() ), &achsen[2] );
MouseKoords->setText("Mouse-Pos: x" + QString::number(event->x()) + " y=" + QString::number(event->y())
+ "\n -> MaptoScene: x=" + QString::number(mapToScene(event->pos()).x()) + " + y=" + QString::number(mapToScene(event->pos()).y()) );
MouseKoords->setPos(mapToScene(this->pos()).x() + 600, mapToScene(this->pos()).y() + 30);
}
void Game::mousePressEvent(QMouseEvent *event)
{
player->speed ++;
}
void Game::sceneRectChanged(const QRectF &rect)
{
Koords->setText("SceneRect: x=" + QString::number(scene->sceneRect().x()) + " y=" + QString::number(scene->sceneRect().y())
+ " w=" + QString::number(scene->sceneRect().x()) + " h=" + QString::number(scene->sceneRect().x())
+ "\n RectPosMiddle: x=" + QString::number(player->Worm.at(0)->rect().x() + 50 ) + " y=" + QString::number( player->Worm.at(0)->rect().y() + 50 ) );
Koords->setPos(mapToScene(this->pos()).x() + 600, mapToScene(this->pos()).y() );
//re-setpos map:
miniMap->setPos(mapToScene(this->pos()).x() + this->width() - 10 - 230, mapToScene(this->pos()).y() + 10);
}

View File

@@ -0,0 +1,53 @@
#ifndef GAME_H
#define GAME_H
#include <QGraphicsView>
#include <QGraphicsScene>
#include <QGraphicsSimpleTextItem>
#include <QThread>
#include <QGraphicsRectItem>
#include "player.h"
#include "enemymanager.h"
#include <QScrollBar>
class Game : public QGraphicsView
{
Q_OBJECT
public:
Game( QWidget * parant);
//tests
QGraphicsSimpleTextItem * Koords;
QGraphicsSimpleTextItem * MouseKoords;
QGraphicsLineItem achsen[3];
//important/save
QGraphicsScene * scene;
Player * player;
EnemyManager * enemyManager;
QGraphicsRectItem * mapBorder;
QGraphicsRectItem * miniMap;
void mouseMoveEvent(QMouseEvent *event) override;
void mousePressEvent(QMouseEvent *event) override;
public slots:
void sceneRectChanged(const QRectF &rect);
};
#endif // GAME_H

View File

@@ -0,0 +1,108 @@
#include "player.h"
Player::Player(QGraphicsScene *scene)
: scene(scene), isLiving(false)
{
radius = 60;
speed = 10;
initLength = 100;
//init worm
for(int i = 0; i < initLength; i++) {
WormPart * wp = new WormPart(radius);
Worm.prepend( wp );
scene->addItem( wp );
}
moveTimer = new QTimer(this);
moveTimer->setInterval(20);
connect(moveTimer, SIGNAL(timeout()), this, SLOT(move()));
moveTimer->start();
this->startTimer(20);
}
#include <iostream>
#include <QApplication>
void Player::timerEvent(QTimerEvent *event)
{
/*
//move last behind vect(0) && set pos from vec(0)
//move vect 0
Worm.move(Worm.size() - 1, 1);
Worm.at(1)->setPos(Worm.at(0)->rect().x() + radius, Worm.at(0)->rect().y() + radius );
//std::cout << "Worm: " << Worm.at(1)->rect().x() << " " << Worm.at(1)->rect().y() << " - " << Worm.at(0)->rect().x() << " " << Worm.at(0)->rect().y() << std::endl;
//move player
auto & head = Worm.at(0);
//std::cout << "Moved" << std::endl;
double STEP_SIZE = speed;
double theta = head->rotation() - 90;
double dy = STEP_SIZE * qSin(qDegreesToRadians(theta));
double dx = STEP_SIZE * qCos(qDegreesToRadians(theta));
//this->moveBy(dx, dy);
head->setRect(head->rect().x() + dx, head->rect().y() + dy, radius*2, radius*2);
head->setTransformOriginPoint(head->rect().x() + radius, head->rect().y() + radius);
//scene()->setSceneRect(scene()->sceneRect().x() - 1, 100, 100, 100);
scene->setSceneRect(head->sceneBoundingRect());
*/
}
void Player::rotateHead(QPointF mousePos, QGraphicsLineItem * debugLine)
{
QLineF ln(QPointF( this->Worm.at(0)->rect().x() + this->radius ,
this->Worm.at(0)->rect().y() + this->radius ),
mousePos );
debugLine->setLine(ln);
this->Worm.at(0)->setRotation(-1* ln.angle() + 90 );
std::cout << this->Worm.at(0)->rect().x() << " " << this->Worm.at(0)->rect().y() << " - " << this->Worm.at(0)->rect().width() << " " << this->Worm.at(0)->rect().height() << std::endl;
}
void Player::move()
{
//move last behind vect(0) && set pos from vec(0) && move vect 0
Worm.move(Worm.size() - 1, 1);
Worm.at(1)->setPos(Worm.at(0)->pos().x() + radius, Worm.at(0)->pos().y() + radius ); // <-- Kopf is gedreht, rest aber nicht ==> pos != pos => center == center
///QLineF ln(Worm.at(1)->getCenter(), Worm.at(0)->getCenter());
///Worm.at(1)->setPos( Worm.at(1)->getCenter().x() + ln.dx(), Worm.at(1)->getCenter().x() + ln.dy() );
//move player
auto & head = Worm.at(0);
double STEP_SIZE = speed;
double theta = head->rotation() - 90;
double dy = STEP_SIZE * qSin(qDegreesToRadians(theta));
double dx = STEP_SIZE * qCos(qDegreesToRadians(theta));
//this->moveBy(dx, dy);
head->setRect(head->pos().x() + dx, head->pos().y() + dy, radius*2, radius*2);
//head->setPos( head->rect().x() + dx, head->rect().y() + dy );
head->setTransformOriginPoint( head->getCenter() ); // head->rect().x() + radius, head->rect().y() + radius
//set plkayer to mid
scene->setSceneRect(head->rect());
}

View File

@@ -0,0 +1,52 @@
#ifndef PLAYER_H
#define PLAYER_H
#include <QPixmap>
#include <QGraphicsPixmapItem>
#include <QGraphicsItem>
#include <QGraphicsScene>
#include <QMouseEvent>
#include <QObject>
#include <QTimer>
#include <QVector>
#include "wormio_game/wormpart.h"
#include <QtMath>
class Player : public QObject
{
Q_OBJECT
public:
Player(QGraphicsScene * scene);
QGraphicsScene * scene;
QVector <WormPart *> Worm;
void timerEvent(QTimerEvent *event) override;
int radius, speed, length, initLength;
QPointF save;
QTimer * moveTimer;
bool isLiving;
void join();
void rotateHead(QPointF mousePos, QGraphicsLineItem *debugLine);
public slots:
void move();
signals:
void died();
};
#endif // PLAYER_H

View File

@@ -0,0 +1,98 @@
#include "wormio_scene.h"
WormIO_Scene::WormIO_Scene()
{
/* QPolygonF Triangle;
Triangle.append(QPointF(-10.,0));
Triangle.append(QPointF(0.,-10));
Triangle.append(QPointF(10.,0));
Triangle.append(QPointF(-10.,0));
trangle = new QGraphicsPolygonItem(Triangle);
*/
this->addItem( trangle );
//this->setFocus();
//r1.setRect(-100, -100, 100, 100);
// r1.setRect(-300, -300, 300, 300);
// this->addItem(&r1);
// this->addItem(&r2);
// QPointF scenePoint = mapToScene(event->Pos());
/*line = new QGraphicsLineItem( (this->width() / 2) - 1 ,( this->height() / 2) -1, (this->width() / 2) + 1 ,( this->height() / 2) + 1);
this->addItem(line);
line2 = new QGraphicsLineItem( (this->width() / 2) -1 ,( this->height() / 2) + 1 , (this->width() / 2) + 1 ,( this->height() / 2) - 1);
this->addItem(line2);
*/
line3 = new QGraphicsLineItem;
this->addItem(line3);
//line4 = new QGraphicsLineItem;
//this->addItem(line4);
x = 10 ;
y = 10;
circel = new QGraphicsEllipseItem(x -50, y -50, 100, 100 );
this->addItem( circel );
this->setSceneRect(-250, -250, 500, 500);
this->setBackgroundBrush( QBrush(Qt::green) );
this->startTimer(1000);
}
#include <iostream>
#include <qmath.h>
void WormIO_Scene::timerEvent(QTimerEvent *)
{
this->sceneRect().setRect(this->sceneRect().x() + 100, this->sceneRect().y(), this->sceneRect().width(), this->sceneRect().height());
std::cout << "t.." << std::endl;
}
void WormIO_Scene::updateTest(int x_P2, int y_P2)
{
// x = R( r^2 / 1 + m^2 )
double r = 100;
double x_P1 = this->x,
y_P1 = this->y;
double delta_y = ( y_P2 - y_P1 ),
delta_x = ( x_P2 - x_P1 );
if(delta_x == 0) {
delta_x = 1;
delta_y = MAXFLOAT * ((delta_y < 0) ? -1 : 1);
}
double m = ( delta_y / delta_x );
double dx = (( delta_x > 0 ) ? 1 : -1) * sqrt( (r * r) / ( 1 + (m * m) ) );
double dy = m * dx;
double x = x_P1 + dx;
double y = y_P1 + dy;
line3->setLine( x_P1 , y_P1, x, y);
//this->setSceneRect(this->x + dx, this->y + dy, 500, 500);
//trangle->moveBy(x_add, y_add);
}

View File

@@ -0,0 +1,42 @@
#ifndef WORMIO_SCENE_H
#define WORMIO_SCENE_H
#include <QGraphicsScene>
#include <QGraphicsRectItem>
#include <QGraphicsSceneMouseEvent>
#include <QGraphicsEllipseItem>
#include <QGraphicsPolygonItem>
#include <QGraphicsLineItem>
class WormIO_Scene : public QGraphicsScene
{
public:
WormIO_Scene();
QGraphicsEllipseItem * circel;
QGraphicsPolygonItem * trangle;
QGraphicsLineItem * line;
QGraphicsLineItem * line2;
QGraphicsLineItem * line3;
QGraphicsLineItem * line4;
QGraphicsRectItem r1, r2;
void timerEvent(QTimerEvent *) override;
void updateTest(int x_P2, int y_P2);
double x, y;
};
#endif // WORMIO_SCENE_H

View File

@@ -0,0 +1,39 @@
#include "wormpart.h"
#include <iostream>
WormPart::WormPart(int radius, QGraphicsItem *parant)
: QGraphicsEllipseItem(parant), radius(radius)
{
//setPixmap(QPixmap(":/wormio_game/Ressources/test.png"));
//setScale(1);
setRotation(90);
//this->setBrush(Qt::blue);
//this->setPos(500, 300);
this->setRect(0, 0, 120, 120); // size
this->setPos(1500, 100);
this->setBrush(Qt::green);
std::cout << "new wormpart" << std::endl;
this->setPen(QPen(QColor::fromRgb(0, 0, 0, 20))); // Rand transparenter
}
#include <qmath.h>
void WormPart::timerEvent(QTimerEvent *ev)
{
}
QPointF WormPart::getCenter()
{
return QPointF(this->pos().x() + radius, this->pos().y() + radius);
return QPointF(this->rect().x() + radius, this->rect().y() + radius);
}

View File

@@ -0,0 +1,24 @@
#ifndef WORMPART_H
#define WORMPART_H
#include <QObject>
#include <QPixmap>
#include <QGraphicsPixmapItem>
#include <QGraphicsItem>
#include <QGraphicsScene>
class WormPart : public QObject, public QGraphicsEllipseItem
{
Q_OBJECT
public:
WormPart(int radius, QGraphicsItem * parant = nullptr);
void timerEvent(QTimerEvent * ev);
QPointF getCenter();
int radius = 60;
};
#endif // WORMPART_H

View File

@@ -1,40 +0,0 @@
#-------------------------------------------------
#
# Project created by QtCreator 2020-03-07T12:47:53
#
#-------------------------------------------------
QT += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = Dezentraler_Chat
TEMPLATE = app
# The following define makes your compiler emit warnings if you use
# any feature of Qt which has been marked as deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS
# You can also make your code fail to compile if you use 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
CONFIG += c++11
SOURCES += \
main.cpp \
mainwindow.cpp
HEADERS += \
mainwindow.h
FORMS += \
mainwindow.ui
# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target

View File

@@ -0,0 +1,326 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QtCreatorProject>
<!-- Written by QtCreator 4.8.2, 2020-03-07T19:34:30. -->
<qtcreator>
<data>
<variable>EnvironmentId</variable>
<value type="QByteArray">{b70b24f1-46ad-4dd1-a8b9-3130fc5cbcc1}</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">Desktop</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">{f2adeb15-5e8d-4d85-a687-94c91141f754}</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/markus/Qt/build-Dezentraler_Chat-Desktop-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">Erstellen</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">Bereinigen</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/markus/Qt/build-Dezentraler_Chat-Desktop-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">Erstellen</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">Bereinigen</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/markus/Qt/build-Dezentraler_Chat-Desktop-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">Erstellen</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">Bereinigen</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">Deployment</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">Deployment-Konfiguration</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">Dezentraler_Chat</value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:/home/markus/Qt/Dezentraler_Chat/Dezentraler_Chat.pro</value>
<value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.ProFile">Dezentraler_Chat.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/markus/Qt/build-Dezentraler_Chat-Desktop-Debug</value>
</valuemap>
<value type="int" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
</valuemap>
</data>
<data>
<variable>ProjectExplorer.Project.TargetCount</variable>
<value type="int">1</value>
</data>
<data>
<variable>ProjectExplorer.Project.Updater.FileVersion</variable>
<value type="int">20</value>
</data>
<data>
<variable>Version</variable>
<value type="int">20</value>
</data>
</qtcreator>

View File

@@ -1,14 +0,0 @@
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
MainWindow::~MainWindow()
{
delete ui;
}

View File

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

View File

@@ -1,24 +0,0 @@
<ui version="4.0">
<class>MainWindow</class>
<widget class="QMainWindow" name="MainWindow" >
<property name="geometry" >
<rect>
<x>0</x>
<y>0</y>
<width>400</width>
<height>300</height>
</rect>
</property>
<property name="windowTitle" >
<string>MainWindow</string>
</property>
<widget class="QMenuBar" name="menuBar" />
<widget class="QToolBar" name="mainToolBar" />
<widget class="QWidget" name="centralWidget" />
<widget class="QStatusBar" name="statusBar" />
</widget>
<layoutDefault spacing="6" margin="11" />
<pixmapfunction></pixmapfunction>
<resources/>
<connections/>
</ui>

View File

@@ -1,8 +0,0 @@
#include <QCoreApplication>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
return a.exec();
}

View File

@@ -1,6 +0,0 @@
#include "server_tcp_lib.h"
server_TCP_Lib::server_TCP_Lib()
{
}

View File

@@ -1,11 +0,0 @@
#ifndef SERVER_TCP_LIB_H
#define SERVER_TCP_LIB_H
class server_TCP_Lib
{
public:
server_TCP_Lib();
};
#endif // SERVER_TCP_LIB_H

View File

@@ -1,27 +0,0 @@
QT -= gui
CONFIG += c++11 console
CONFIG -= app_bundle
# 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). Please consult the documentation of the
# deprecated API in order 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 += \
main.cpp \
my_tcp_lib.cpp
# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target
HEADERS += \
my_tcp_lib.h

View File

@@ -1,26 +0,0 @@
#include <iostream>
#include "my_tcp_lib.h"
int main(/*int argc, char *argv[]*/)
{
client_TCP_Lib client;
while ( client.connectViaSocks5Proxy("127.0.0.1", 9050, "home.obermui.de", 30356) /*!= 0*/ ) {
std::cout << "Error: Connect to Server failed: " << client.getLastError() << std::endl;
sleep(1);
}
std::cout << "Status: " << client.getLastError() << std::endl;
return 0;
}

View File

@@ -1,288 +0,0 @@
#include "my_tcp_lib.h"
client_TCP_Lib::client_TCP_Lib()
: connectionSocket(-1)
{
//Inizialisieren winsocks
#ifdef __WIN32
WSADATA wsaData;
if (WSAStartup(MAKEWORD(2,2), &wsaData) != 0) {
perror("WSAStartup failed");
exit(15);
}
#endif
#ifdef linux
//Signal Ignorieren: SIGPIPE
signal(SIGPIPE, SIG_IGN); // IGNORE SIGPIPE: if server close Connection, don't stop Program
#endif
}
client_TCP_Lib::~client_TCP_Lib()
{
closeSocket();
//cleanup winsocks
#ifdef __WIN32
WSACleanup();
#endif
}
std::string client_TCP_Lib::getLastError()
{
return this->errorMessage;
}
int client_TCP_Lib::connectTo(const std::string &serverIPv4, const unsigned short &serverPort)
{
if(this->isConnected()) {
this->setErrorMessage("Already connected.");
return 1;
}
// Create a SOCKET for connecting to server
if ( (connectionSocket = socket(AF_INET, SOCK_STREAM , 0)) == -1 ) {
this->setErrorMessage("Creating socket failed", true);
return 2;
}
//Setup SettingsStruckt with protocolltype ip and port
memset(&serverAddress, 0, sizeof (serverAddress));
serverAddress.sin_addr.s_addr = inet_addr(serverIPv4.c_str());
serverAddress.sin_family = AF_INET;
serverAddress.sin_port = htons( serverPort );
//Connect to remote server
if ( connect(connectionSocket , reinterpret_cast< struct sockaddr * >(&serverAddress) , sizeof(serverAddress)) == -1 ) {
this->setErrorMessage("Connect to server '" + serverIPv4 + ":" + std::to_string(serverPort) + "' failed", true, true);
return 3;
}
this->setErrorMessage( ("Connected to: " + serverIPv4 + ":" + std::to_string(serverPort)) );
return 0;
}
int client_TCP_Lib::connectViaSocks4Proxy(const std::string &proxyIPv4, const unsigned short &proxyPort, const std::string &serverIPv4, const unsigned short &serverPort,
const std::string &proxyUserName)
{
int iResult = 0;
size_t nlen;
unsigned char msg[512]; //generally we don't need a big array but domains names can be long some times.
memset(msg, 0, sizeof (msg));
//Connect to Proxy
if( (iResult = connectTo(proxyIPv4, proxyPort)) != 0)
return iResult;
msg[0] = 0x04; // Socks4 Standart
msg[1] = 0x01; // 1 ist die Verbindungsanfrage
msg[2] = static_cast<unsigned char>(serverPort>>8); //Server Port: Split 2 Byte short in 2 * 1Byte UChar
msg[3] = static_cast<unsigned char>(serverPort); //..
size_t pos = 0;
std::string addr = serverIPv4;
addr.push_back('.');
for(int i = 4; i < 8; i++) {
if( (pos = addr.find(".")) == std::string::npos ) {
this->setErrorMessage("Invalid server IPv4 address: '" + serverIPv4 + "'.", false, true);
return 4;
}
msg[i] = static_cast<unsigned char>( atoi(addr.substr(0, pos).c_str()) );
addr.erase(0, pos + 1);
}
strcpy(reinterpret_cast<char*>(&msg[8]), proxyUserName.c_str()); // Caste die array pos 8 in pointer und copy von da weg den Benutzernamen rein; wenn name ="" => copy ""
msg[ 8 + proxyUserName.length() ] = 0x00; // Am ende des benutzernamens füge 0x00 hinzu == ende des namens // wenn name nichts: ann stelle 8;
nlen = 8 + proxyUserName.length() +1 ; // speichere letzte benütze position
//Send server ip, port, username to server
if (send(connectionSocket, reinterpret_cast<char*>( msg ), nlen, 0) == -1) {
this->setErrorMessage("Send data to proxy failed", true, true);
return 5;
}
//Recive Status from Proxy
if( (iResult = static_cast<int>( recv(connectionSocket, reinterpret_cast<char*>( msg ), 8, 0))) == 0) {
this->setErrorMessage("Proxy closed connection while reciving status.", false, true);
return 6;
} else if (iResult < 0) {
this->setErrorMessage("Reciving status from proxy failed", true, true);
return 7;
}
//Check Proxy Reply:
switch (msg[1]) {
case 90:
this->setErrorMessage("Connected via proxy " + proxyIPv4 + ":" + std::to_string(proxyPort) + " to " + serverIPv4 + ":" + std::to_string(serverPort) + ".");
return 0;
case 91:
this->setErrorMessage("Proxy sended error: Request rejected or failed.", false, true);
return 11;
case 92:
this->setErrorMessage("Proxy sended error: Request rejected becasue SOCKS server cannot connect to identd on the client.", false, true);
return 12;
case 93:
this->setErrorMessage("Proxy sended error: Request rejected because the client program and identd report different user-ids.", false, true);
return 13;
default:
this->setErrorMessage("Unknown proxy reply: " + std::to_string(msg[1]), false, true);
return 20;
}
}
int client_TCP_Lib::connectViaSocks5Proxy(const std::string &proxyIPv4, const unsigned short &proxyPort, const std::string &domainName, const unsigned short &serverPort, const std::string &proxyUserName, const std::string &proxyPassword)
{
size_t nlen = 0;
unsigned char msg[512];//generally we don't need a big array but domains names can be long some times.
memset(msg, 0, sizeof (msg));
if( connectTo(proxyIPv4, proxyPort) != 0)
return -1;
//Sending wanted Mehtoden:
msg[0] = 0x05; // Socks 5 Version
msg[1] = 0x02; // Acceptiert 2 Möglichkeiten für Autentifizierung:
msg[2] = 0x00; // 1. Keine Authentifizierung benötigt
msg[3] = 0x02; // 2. Authentifizierung mit Benutzername und Passwort
if ( send(this->connectionSocket, reinterpret_cast<char*>( msg ), 4 /* msg[0->3] */, 0) == -1 ) {
this->setErrorMessage("Send methods to Proxy failed.", false, true);
return 10;
} else if( recv(this->connectionSocket, reinterpret_cast<char*>( msg ), 2, 0) <= 0 ) {
this->setErrorMessage("Recive Methode from Proxy failed.", false, true);
return 11;
}
if(msg[1] == 0xFF) {
this->setErrorMessage("Proxy doesn't accept methode(s).", false, true);
return 12;
} else if (msg[1] == 0x02) { //username/password authentication
msg[0] = 0x01;
msg[1] = static_cast<unsigned char>( proxyUserName.length() );
strcpy(reinterpret_cast<char*>( &msg[2]), proxyUserName.c_str());
nlen = 2 + msg[1];
msg[ nlen++ ] = static_cast<unsigned char>(proxyPassword.length());
strcpy(reinterpret_cast<char*>(&msg[nlen]), proxyPassword.c_str());
nlen += proxyPassword.length();
if (send(this->connectionSocket,reinterpret_cast<char*>(msg), nlen, 0) == -1) {
this->setErrorMessage("Send username and password to proxy failed.", false, true);
return 13;
} else if( recv(this->connectionSocket,reinterpret_cast<char*>( msg ), 8, 0) <= 0) {
this->setErrorMessage("Recive status after sending login data to Proxy failed.", false, true);
return 14;
}
if (msg[1] != 0x00) {
this->setErrorMessage("Authenticating tp proxy with User and Password failed.", false, true);
return 15;
}
}
if (msg[1] == 0x00) { //no authentication or alredy logged in
msg[0] = 0x05;
msg[1] = 0x01;
msg[2] = 0x00;
msg[3] = 0x03;
msg[4] = static_cast<unsigned char>( domainName.length() );
strcpy(reinterpret_cast<char*>( &msg[5] ), domainName.c_str());
nlen = domainName.length() + 5;
msg[nlen++] = static_cast<unsigned char>( serverPort>>8 );
msg[nlen++] = static_cast<unsigned char>( serverPort );
} else {
this->setErrorMessage("Proxy sended unknown methode: " + std::to_string(msg[1]), false, true);
return 16;
}
if (send(this->connectionSocket,reinterpret_cast<char*>( msg ), nlen,0) == -1) {
this->setErrorMessage("Send server address to proxy failed.", false, true);
return 17;
} else if( recv(this->connectionSocket,reinterpret_cast<char*>( msg ), 8, 0) <= 0 ) {
this->setErrorMessage("Recive connect status from Proxy failed.", false, true);
return 18;
}
switch (msg[1]) {
case 0x00:
this->setErrorMessage("Connected via proxy " + proxyIPv4 + ":" + std::to_string(proxyPort) + " to " + domainName + ":" + std::to_string(serverPort) + ".");
return 0;
case 0x01:
this->setErrorMessage("Request rejected or failed.", false, true);
return 21;
case 0x02:
this->setErrorMessage("Connection not allowed by ruleset.", false, true);;
return 22;
case 0x03:
this->setErrorMessage("Network unreachable.", false, true);;
return 23;
case 0x04:
this->setErrorMessage("Host unreachable.", false, true);;
return 24;
case 0x05:
this->setErrorMessage("Connection refused by destination host.", false, true);;
return 25;
case 0x06:
this->setErrorMessage("TTL expired.", false, true);;
return 26;
case 0x07:
this->setErrorMessage("Command not supported / protocol error.", false, true);;
return 27;
case 0x08:
this->setErrorMessage("Address type not supported.", false, true);;
return 28;
default:
this->setErrorMessage("Unknown error: " +std::to_string( msg[1] ), false, true);
return 30;
}
}
int client_TCP_Lib::getConnectionSocket()
{
return connectionSocket;
}
bool client_TCP_Lib::isConnected()
{
return (this->connectionSocket != -1);
}
int client_TCP_Lib::closeSocket()
{
int res;
#ifdef __WIN32
res = closesocket(connectionSocket);
#endif
#ifdef linux
res = close(connectionSocket);
#endif
this->connectionSocket = -1;
return res;
}
std::string client_TCP_Lib::getIpByName(std::string name)
{
struct hostent * record = gethostbyname(name.c_str());
return (record == nullptr) ? "" : inet_ntoa( *reinterpret_cast<in_addr*>(record->h_addr) );
}
std::string client_TCP_Lib::getHostName()
{
char buffer[255];
return ( gethostname(buffer, (sizeof (buffer) / sizeof (char))) == -1) ? "" : buffer;
}
void client_TCP_Lib::setErrorMessage(const std::string &txt, bool withPerrorText, bool closesocket)
{
this->errorMessage = txt + ((withPerrorText) ? ": " + std::string( std::strerror(errno) ) : "");
if(closesocket)
closeSocket();
}

View File

@@ -1,54 +0,0 @@
#ifndef MY_TCP_LIB_H
#define MY_TCP_LIB_H
#include <string>
#include <unistd.h> // close()
#include <cstring> // std::strerror
#ifdef __WIN32
#include <winsock2.h>
#include <windows.h>
#endif
#ifdef linux
#include <sys/socket.h>
#include <arpa/inet.h>
#include <netdb.h> // for hostent ( getIpByName-Func )
#include <signal.h> // für signal() function: ignore SIGPIPE
#endif
class client_TCP_Lib
{
public:
client_TCP_Lib();
~client_TCP_Lib();
int connectTo(const std::string &serverIPv4, const unsigned short &serverPort);
int connectViaSocks4Proxy(const std::string &proxyIPv4, const unsigned short &proxyPort,
const std::string &serverIPv4, const unsigned short &serverPort,
const std::string &proxyUserName = "");
int connectViaSocks5Proxy(const std::string &proxyIPv4, const unsigned short &proxyPort,
const std::string &domainName, const unsigned short &serverPort,
const std::string &proxyUserName = "", const std::string &proxyPassword = "");
int getConnectionSocket();
int closeSocket();
bool isConnected();
std::string getLastError();
std::string getIpByName(std::string name);
std::string getHostName();
private:
std::string errorMessage;
sockaddr_in serverAddress;
int connectionSocket;
void setErrorMessage(const std::string &txt, bool withPerrorText = false, bool closesocket = false);
};
#endif // MY_TCP_LIB_H

View File

@@ -1,5 +1,30 @@
## Changelog
#4.0.4
* Fix Error: Konnte Position von script async= nicht finden
#4.0.2/3
* Entferne /embed bei Vivo und ignoriere Groß-& Kleinschreib. Bei -l & -g
#4.0.1
* Behebe falsche Position von der 0 bei der Zeit im LogFile
#4.0.0
* Füge Architekture ARM v6 hinzu
#3.9.1/2/3
* Behebe Fehler bei der Replace Funktion + Farben bei der LogFile ausgabe
#3.9.0
* Neu: Möglichkeit, mehrere Dateien mit -o anzugeben
* Im DefaultFile: Schreibe nun, wenn nicht verändert mit -o Ausgabe ins LogFile
#3.8.0
* Log System
#3.6.3 -> 3.8
* SIEHE IN GIT COMMITS
### v3.6.2
* Füge ChangeLog Datei hinzu

View File

@@ -12,12 +12,20 @@ Aufruf: S_New4 [Unteroption] [PARAMETER]...
s.to umwandeln.
### Unteroptionen:
"--help" Gibt dieses Helpmenue aus.
"--version" Gibt die Version des Programmes aus.
"--update" Modus um das Programm zu aktualisieren.
Updater funktioniert nur bei: Windows/Linux -
x86 Architekutur - 64 Bit Systemen und Arm6 32 Bit.
"--remove" Modus um Ordner mit Einstellungen/
Zwischengespeicherte-Dateien zu löschen.
"url" Modus um eigene Redirect-Links umzuwandeln.
"default" Modus um Links von Serien zu bekommen.
"search" Modus um Serien zu suchen.
"info" Modus um Infos einer Serien zu bekommen.
"clean" Modus um Cookie-Files zu löschen.
"news" Modus um neusten 75 Folgen auf s.to zu sehen.
"log" Modus um Log Datei zu sehen / leeren.
### Verzeichnisse:
Ordner zum zwischenspeichern der Cookies und der AccountNummer:
@@ -32,7 +40,7 @@ Aufruf: S_New4 [Unteroption] [PARAMETER]...
##### S_New4 hat einen Updater der für folgende Systeme funktioniert:
##### * Windows, 64 Bit Programm ( Die neue Version ist immer 64 Bit ), x86 Architektur
##### * Linux, 64 Bit Programm ( Die neue Version ist immer 64 Bit ), x86 Architektur
##### * Linux, 32 Bit Programm ( Die neue Version ist immer 32 Bit ), ARM v6
@@ -50,7 +58,7 @@ Aufruf: S_New4 [Unteroption] [PARAMETER]...
#### g++
```sh
g++ --std=c++14 accountManager.cpp accountManager.h main.cpp pageManager.cpp pageManager.h parameterManager.cpp parameterManager.h programManager.cpp programManager.h -lcurl -lpthread -o S_New4
g++ --std=c++14 accountManager.cpp accountManager.h main.cpp pageManager.cpp pageManager.h parameterManager.cpp parameterManager.h programManager.cpp programManager.h logger.h logger.cpp -lcurl -lpthread -o S_New4
```
#### QT-Style:
@@ -58,7 +66,7 @@ Aufruf: S_New4 [Unteroption] [PARAMETER]...
qmake && make
```
### Windows: (x86_64 Architekture)
### Windows: (nur x86_64 Architekture, wenn beigefügte Libraries verwendet werden möchten)
##### Abhängigkeiten:

View File

View File

@@ -26,7 +26,8 @@ SOURCES += \
pageManager.cpp \
parameterManager.cpp \
programManager.cpp \
accountManager.cpp
accountManager.cpp \
logger.cpp
# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
@@ -37,4 +38,5 @@ HEADERS += \
pageManager.h \
parameterManager.h \
programManager.h \
accountManager.h
accountManager.h \
logger.h

87
S_New4/src/logger.cpp Normal file
View File

@@ -0,0 +1,87 @@
#include "logger.h"
Logger::Logger(std::string logFilePath)
: filePath(logFilePath)
{
if(openFile(filePath))
exit(234);
}
Logger::~Logger()
{
file.close();
}
std::string Logger::getFilePath()
{
return filePath;
}
int Logger::logCommandLine(std::string logText)
{
std::time_t now = std::time(nullptr);
struct tm *tm_now = localtime(&now);
std::string date((tm_now->tm_mday < 10 ? "0" : "") + std::to_string(tm_now->tm_mday) + "." +
(tm_now->tm_mon +1 < 10 ? "0" : "" ) + std::to_string(tm_now->tm_mon +1) + "." +
std::to_string(1900 + tm_now->tm_year) + " - " +
(tm_now->tm_hour < 10 ? "0" : "" ) + std::to_string(tm_now->tm_hour) + ":" +
(tm_now->tm_min < 10 ? "0" : "" ) + std::to_string(tm_now->tm_min));
return writetoFile( " -> " + date + ": \"" + logText + "\"");
}
int Logger::logSubLine(std::string line)
{
return writetoFile("\t\t" + line);
}
std::string Logger::getLogText()
{
return std::string((std::istreambuf_iterator<char>(file)), std::istreambuf_iterator<char>());
}
int Logger::clearFile()
{
//close it
file.close();
//open it empty + close it
std::ofstream ofs;
ofs.open(filePath, std::ofstream::out | std::ofstream::trunc);
if(!ofs.is_open()) {
perror("Open File for clearing failed");
return 35;
}
ofs.close();
//reopen it
return openFile(filePath);
}
int Logger::writetoFile(std::string t)
{
file << t << std::endl;
return file.good();
}
int Logger::openFile(std::string path)
{
file.open(path, std::ios::in | std::ios::out | std::ios::app);
if(!file.is_open()) {
//Exestiert nicht => Erstelle Datei
std::ofstream ofs(path);
if(!ofs.is_open()) {
perror((" => Error: Konnte LogDatei nicht erstellen: '" + path + "'").c_str());
return (5656);
} else {
ofs.close();
}
file.open(path);
if(!file.is_open()) {
perror((" => Error: Konnte LogDatei nicht öffnen: '" + path + "'").c_str());
return (5657);
}
}
return 0;
}

31
S_New4/src/logger.h Normal file
View File

@@ -0,0 +1,31 @@
#ifndef LOGGER_H
#define LOGGER_H
#include <iostream>
#include <fstream>
#include <string>
#include <streambuf>
#include <ctime> // std::time, localtime ...
class Logger
{
public:
Logger(std::string logFilePath);
~Logger();
std::string getFilePath();
std::fstream file;
int logCommandLine(std::string logText);
int logSubLine(std::string line);
std::string getLogText();
int clearFile();
private:
std::string filePath;
int writetoFile(std::string t);
int openFile(std::string path);
};
#endif // LOGGER_H

View File

@@ -12,6 +12,9 @@ int main(int argc, char *argv[])
std::cout << " => Error: Das Auswerten der Parameter ist fehlgeschlagen!" << std::endl;
return res;
} else {
return mainProgram.start(&settings);
if( (res = mainProgram.start(&settings)) != 0 )
std::cout << (" => Entschuldigung, ein Fehler ist aufgetreten!\n Bei wiederholtem Auftreten verwenden Sie -d, --debug für mehr Infos\n"
" oder --update um, falls vorhanden, auf eine neuere Version des Programms zu wechseln") << std::endl;
return res;
}
}

View File

@@ -49,7 +49,7 @@ static size_t write_data(void *ptr, size_t size, size_t nmemb, void *stream)
return written;
}
Reply PageManager::getServerRequest(std::string Url, bool useCookies, std::string data, bool generateCookieFile)
Reply PageManager::getServerRequest(std::string Url, bool useCookies, std::string data, bool generateCookieFile, bool UrlAfterRedirectOnlyNeeded)
{
CURL *curl;
CURLcode res;
@@ -97,6 +97,27 @@ Reply PageManager::getServerRequest(std::string Url, bool useCookies, std::strin
perror((std::string("\33[2K\r => Error: curl_easy_perform() failed: ") + curl_easy_strerror(res)).c_str());
return Reply("-1");
} else {
//Try to use to (new) url
if(UrlAfterRedirectOnlyNeeded) {
res = curl_easy_getinfo(curl, CURLINFO_EFFECTIVE_URL, &url);
if( res != CURLE_OK || !url ) {
perror((std::string("\33[2K\r => Error: curl_easy_getinfo failed: ") + curl_easy_strerror(res)).c_str());
return Reply("-1");
} else {
if(url != Url) {
if(debugMode)
std::cout << " => WARNING: Use Url after Error getServerRequest, cause it chanced and only url needed" << std::endl;
Url = url; // after curl_easy_cleanup(), url (char * ) == invalid
curl_easy_cleanup(curl);
return Reply("", Url);
} else {
if(debugMode)
std::cout << " => WARNING: Want to Use Url after Error getServerRequest, but url didn't chacnge, too" << std::endl;
}
}
}
std::cout << std::string( "\33[2K\r => Warning: Versuch " + std::to_string(timeout) + " von " + std::to_string(maxTimeout) + ": curl_easy_perform() failed: " + curl_easy_strerror(res) )<< std::flush;
sleep(1);
}
@@ -208,7 +229,9 @@ int PageManager::login(Account account)
if(debugMode)
std::cout << " > Melde mit neuem Account an: Email: " << account.Email << " Passowort: " << account.Password << std::endl;
std::string html = getServerRequest("https://s.to/login", false, std::string("email=" + account.Email + "&password=" + account.Password), true ).html;
auto reply = getServerRequest("https://serienstream.sx/login", false, std::string("email=" + account.Email + "&password=" + account.Password), true );
std::string html = reply.html;
if(html == "" )
return 0;
else if (html.find("Das Feld Email muss eine gültige E-Mail-Adresse enthalten.") != std::string::npos)
@@ -230,19 +253,19 @@ int PageManager::login(Account account)
std::string PageManager::getUrlAfterRedirect(std::string Url)
{
return getServerRequest(Url, true).url;
return getServerRequest(Url, true, "", false, true).url;
}
std::string PageManager::checkName(std::string Name)
{
std::string name = replace(Name, " ", "-");
std::string html = getServerRequest("https://s.to/serie/stream/" + name).html;
std::string html = getServerRequest("https://serienstream.sx/serie/stream/" + name).html;
if(html.find("Die gewünschte Serie wurde nicht gefunden oder ist im Moment deaktiviert.") != std::string::npos) {
std::cout << "\33[2K\r => Error: Die gewünschte Serie wurde nicht gefunden oder ist im Moment deaktiviert: '" << Name << "'" << std::endl;
std::cout << "\33[2K\r => Die gewünschte Serie wurde nicht gefunden oder ist im Moment deaktiviert: '" << Name << "'" << std::endl;
return "-1";
} else if (html.find("404 - Seite nicht gefunden") != std::string::npos) {
std::cout << "\33[2K\r => Error: Ungültiger Name: '" << Name << "'" << std::endl;
std::cout << "\33[2K\r => Ungültiger Name: '" << Name << "'" << std::endl;
return "-1";
} else if (html == "-1" || html == "") {
return "-2";
@@ -255,23 +278,28 @@ std::string PageManager::checkName(std::string Name)
std::string PageManager::getLinks(std::string HTML)
{
//Entderne alles vor den Links
size_t pos = HTML.find("<ul class=\"row\">");
if(pos == std::string::npos) {
std::cout << " => Error: Konnte Position von \"" << "<ul class=\"row\">" << " nicht finden" <<std::endl;
return "";
}
HTML.erase(0,pos);
pos = HTML.find("<script async=");
//Entferne alles nach den Links
//pos = HTML.find("<script async=");
pos = HTML.find("<script data-cfasync=\"");
if(pos == std::string::npos) {
std::cout << " => Error: Konnte Position von \"" << "<script async=" << "\" nicht finden" <<std::endl;
return "";
}
HTML.erase(pos,HTML.length() - pos);
//Erstezte alle NewLine Zeichen durch nichts => 1Ne Zeile
HTML = replace(HTML, "\n", ""); //HTML.replace("\n","").replace("</span>", "\n");
//Erstezte alle </span> Zeichen durch \n => 1 Hoster pro Zeil
HTML = replace(HTML, "</span>", "\n");
//Greppe alle Zeilen mit Hoster
HTML = grep(HTML,"href=\"/redirect/");
std::istringstream iStrStream( HTML + "\n" );
@@ -334,15 +362,6 @@ std::string PageManager::getLinks(std::string HTML)
}
std::string PageManager::replace(std::string str, std::string substr1, std::string substr2)
{
if(substr1 == "")
return str;
size_t index = 0;
for (index = str.find(substr1, index); index != std::string::npos; index = str.find(substr1, index + substr1.length()) )
str.replace(index, substr1.length(), substr2);
return str;
}
int PageManager::counterContains(std::string text, std::string substring_with_prozent_i_for_number, int starte_mit_dieser_Zahl)
{
@@ -446,25 +465,27 @@ int PageManager::compareVersions(std::string Version1, std::string Version2)
}
int PageManager::writeToFile(std::string path, std::string text)
int PageManager::writeToFile(std::vector<std::string> paths, std::string text)
{
if(path == "")
if(paths.size() == 0)
return 0;
std::ofstream of;
of.open(path, std::ios::out | std::ios::app);
if(!of.is_open()) {
perror(" => Error: Konnte Output Datei nicht öffnen");
return -1;
for(auto path : paths) {
of.open(path, std::ios::out | std::ios::app);
if(!of.is_open()) {
perror((" => Error: Konnte Output: '" + path + "' Datei nicht öffnen").c_str());
return -1;
}
of << text << std::endl;
of.close();
}
of << text << std::endl;
of.close();
return 0;
}
std::string PageManager::chooseHosterLink(std::string HosterList, std::string Hoster_with_Highst_Priority_at_First, std::string languages_with_highst_priority_at_first)
std::string PageManager::chooseHosterLink(std::string HosterList, std::string Hoster_with_Highst_Priority_at_First, std::string languages_with_highst_priority_at_first, bool withWarnMsg)
{
std::istringstream SListLang ( replace( languages_with_highst_priority_at_first, ",", "\n") + "\n" );
std::istringstream SListHoster( replace( Hoster_with_Highst_Priority_at_First, ",", "\n") + "\n" );
int LangId = 0;
size_t pos = 0;
@@ -473,13 +494,16 @@ std::string PageManager::chooseHosterLink(std::string HosterList, std::string Ho
//Für jede Sprache:
while (getline(SListLang, langId).good()) {
//Erst in schleife: weil es sonst ein problem wegen dem readdevice beim 2.ten durchlauf gibt
std::istringstream SListHoster( replace( Hoster_with_Highst_Priority_at_First, ",", "\n") + "\n" );
if(langId == "")
continue;
else if ( langId == "GerDub" )
else if ( upper_string( langId ) == "GERDUB" )
LangId=1;
else if ( langId == "Eng" )
else if ( upper_string( langId ) == "ENG" )
LangId=2;
else if ( langId == "GerSub" )
else if ( upper_string( langId ) == "GERSUB" )
LangId=3;
else {
std::cout << " => Error: Unbekannte Sprache: " << langId << std::endl;
@@ -491,17 +515,31 @@ std::string PageManager::chooseHosterLink(std::string HosterList, std::string Ho
//std::cout << "Alle Folgen mi der Sprache " << langId << ":\n'" << LanguageSortedHoster << "'" << std::endl;
//Wenn keine Links zu der Sprache gefunden worden sind
if(LanguageSortedHoster == "")
if(LanguageSortedHoster == "") {
if(withWarnMsg)
std::cout << "Warnung: Es wurden keine Links für die Sprache '" <<langId << "' gefunden." << std::endl;
continue;
}
//Upper all Hoster Name in List:
for (size_t posHoster = LanguageSortedHoster.find("hoster=\""); posHoster != std::string::npos; posHoster = LanguageSortedHoster.find("hoster=\"", posHoster + 8)) {
size_t posNextAnfz = LanguageSortedHoster.find("\"", posHoster + 8);
if(posNextAnfz == std::string::npos) {
std::cout << " => Error: Konnte \" in chooseHosterLink() nicht finden." << std::endl;
break;
} else
LanguageSortedHoster.replace(posHoster + 8, posNextAnfz - posHoster - 8, upper_string(LanguageSortedHoster.substr(posHoster + 8, posNextAnfz - posHoster - 8)) );
}
//Für jeden Angegebenen Hoster:
while (getline(SListHoster, hoster).good()) {
//Wenn es den hoster bei dieser prache nicht gibt, wähle nächsten
if(LanguageSortedHoster.find("hoster=\"" + hoster + "\"") == std::string::npos) {
//std::cout << "Hoster " << hoster << " gibt es bei der sprache" << langId << " nicht " << std::endl;
if(LanguageSortedHoster.find( "hoster=\"" + upper_string(hoster) + "\"" ) == std::string::npos) {
if(withWarnMsg)
std::cout << "Warnung: Hoster " << hoster << " gibt es bei der sprache" << langId << " nicht " << std::endl;
continue;
}
Line = grep(LanguageSortedHoster, ("hoster=\"" + hoster + "\"" ) );
Line = grep(LanguageSortedHoster + "\n", ("hoster=\"" + upper_string(hoster) + "\"" ) );
pos = Line.find("href=\"");
if(pos == std::string::npos) {
std::cout << " => Error: Konnte 'href=\"' in chooseHosterLink() nicht finden." << std::endl;
@@ -518,6 +556,39 @@ std::string PageManager::chooseHosterLink(std::string HosterList, std::string Ho
return Line.erase(pos, Line.length()-pos);
}
if(withWarnMsg) {
std::cout << "Warnung: Die Hoster '" << Hoster_with_Highst_Priority_at_First << "' gab es für die Sprache '" << langId << "' nicht." << std::endl;
std::cout << "INFO: Andere Hoster zu dieser Sprache: \n" << LanguageSortedHoster << std::endl;
}
}
return "";
}
std::string PageManager::getLinkAfterHosterBasedOperation(std::string url)
{
size_t pos1 = 0, pos2 = 0;
if(debugMode)
std::cout << "Convert url: " << url << " ->"<< std::endl;
if((pos1 = url.find("://")) == std::string::npos) {
std::cout << " => Error: Konnte '://' in getLinkAfterHosterBasedOperation() nicht finden." << std::endl;
return "";
} else if((pos2 = url.find(".", pos1 + 3)) == std::string::npos) {
std::cout << " => Error: Konnte '.' nach '://' in getLinkAfterHosterBasedOperation() nicht finden." << std::endl;
return "";
}
std::string hoster = url.substr(pos1 + 3, pos2 - pos1 - 3);
if(hoster == "vivo") {
url = replace(url, "/embed/", "/");
url = replace(url, "http://", "https://");
} else if (hoster == "...") {
}
if(debugMode)
std::cout << " -> zu... " << url << std::endl;
return url;
}

View File

@@ -30,27 +30,27 @@ public:
void setCookieFilePath(std::string path);
void setDebugMode(bool status);
Reply getServerRequest(std::string Url, bool useCookies = false, std::string data = "", bool generateCookieFile = false);
Reply getServerRequest(std::string Url, bool useCookies = false, std::string data = "", bool generateCookieFile = false, bool UrlAfterRedirectOnlyNeeded = false);
int downLoadToFile(std::string filePath, std::string url);
int login(Account account);
std::string getUrlAfterRedirect(std::string Url);
std::string checkName(std::string Name);
std::string getLinks(std::string HTML);
std::string chooseHosterLink(std::string HosterList, std::string Hoster_with_Highst_Priority_at_First, std::string languages_with_highst_priority_at_first);
std::string chooseHosterLink(std::string HosterList, std::string Hoster_with_Highst_Priority_at_First, std::string languages_with_highst_priority_at_first, bool withWarnMsg);
std::string getLinkAfterHosterBasedOperation(std::string url);
std::string replace(std::string str, std::string substr1, std::string substr2);
int counterContains(std::string text, std::string substring_with_prozent_i_for_number, int starte_mit_dieser_Zahl = 1);
std::string grep(std::string text, std::string substring, bool IgnoreCaseSensetifity = false);
std::string upper_string(const std::string& str);
static std::string upper_string(const std::string& str);
size_t getDate();
std::string getExePath();
int compareVersions(std::string Version1, std::string Version2);
int writeToFile(std::string path, std::string text);
int writeToFile(std::vector<std::string> paths, std::string text);
const std::string UrlPraefix = "https://s.to/serie/stream/";
const std::string UrlPraefix = "https://serienstream.sx/serie/stream/";
std::string sock5Proxy;
private:
std::string cookieFilePath;

View File

@@ -38,6 +38,7 @@ int setPaths(Settings &settings)
settings.cookieFilePath = CacheDir + "S_New4_cookies";
settings.accountNumberPath = CacheDir + "Account_Number";
settings.lastUpdateDateFilePath = CacheDir + "LastUpdateDate";
settings.logFilePath = CacheDir + "LogFile";
settings.accountFilePath = SettingsDir + "Accounts";
settings.serienListPath = SettingsDir + "SerienListe";
@@ -69,7 +70,19 @@ int manageParameter(Settings &settings, int argc, char **argv)
return 1;
}
std::vector<std::string> res = compare("help\n--help\ndefault\nurl\n--version\nsearch\ninfo\nclean\nnews\n--update\n--remove", argv[1]);
//LogCommand...
Logger logger(settings.logFilePath);
std::string command;
for (int i = 0; i < argc; ++i)
if(argv[i])
command += std::string(argv[i]) + " ";
if(command.length() > 0)
command.pop_back();
logger.logCommandLine(command);
//Find out right subProgramm
std::vector<std::string> res = compare("help\n--help\ndefault\nurl\n--version\nsearch\ninfo\nclean\nnews\n--update\n--remove\nlog", argv[1]);
if(res.size() != 1) {
if(res.size() == 0)
std::cout << " => Error: Keine Unteroption für " << argv[1] << " gefunden." << std::endl;
@@ -118,6 +131,12 @@ int manageParameter(Settings &settings, int argc, char **argv)
} else if (isSame(argv, "--remove")) {
return unterOption_RemoveSettings_or_CacheDir(&settings, argc, argv);
} else if (isSame(argv, "log")) {
if(unterOption_printLogFile(&settings, argc, argv) != -1)
return 49;
logger.logCommandLine(command);
return -1;
} else {
std::cout << " => Error: Invalid option '" << argv[1] << "', but not detected in compare-Function" << std::endl;
return 3;
@@ -166,7 +185,13 @@ int loadDefaulOptions(Settings &settings)
ofs << "# -> Einstellung gleicht dem Parameter -o [Pfad], --output-file," << std::endl;
ofs << "# falls dieser in der ausgeführeten Unterfunktion vorhanden ist:" << std::endl;
ofs << "#OutputFile=/tmp/a" << std::endl << std::endl;
ofs << "# Hier auch mehrere Pfade Möglich..:" << std::endl;
ofs << "#OutputFile=/tmp/a" << std::endl;
ofs << "#OutputFile=/tmp/b" << std::endl;
ofs << "# -> Log-to-LogFile: Speichere Ausgabe im LogFile - LogFile u.a. beim" << std::endl;
ofs << "# JD2-Renamer Skript nötig. Auch anderer Pfad möglich." << std::endl;
ofs << "OutputFile=" << settings.logFilePath<< std::endl << std::endl;
ofs << "#" << std::endl << "# -> Einstellungen für default Modus:" << std::endl << "#" << std::endl << std::endl;
@@ -268,8 +293,8 @@ int loadDefaulOptions(Settings &settings)
if(!isNumber(data) ) {
std::cout << " => Error_Defaults: Thread-Max Ungültige Zahl: " << data << std::endl;
return 18;
} else if (settings.maxThreads > 10) {
std::cout << " => Error_Defaults: Thread-Max: Zahl größer 10: " << data << std::endl;
} else if (settings.maxThreads > 4) {
std::cout << " => Error_Defaults: Thread-Max: Zahl größer 4: " << data << std::endl;
return 19;
}
if(settings.debugMode)
@@ -300,9 +325,9 @@ int loadDefaulOptions(Settings &settings)
std::cout << " > Defaults: search-AchteAufGroßUndKleinschreibung: " << settings.search_IgnoreUpperLower << std::endl;
} else if (what == "OutputFile") {
settings.outputFilePath = data;
settings.outputFilePaths.push_back(data);
if(settings.debugMode)
std::cout << " > Defaults: OutputFile: " << settings.outputFilePath << std::endl;
std::cout << " > Defaults: OutputFile: " << settings.outputFilePaths.back() << std::endl;
} else if (what == "search_UpdateWarnungNachTagen") {
if(!isNumber(data)) {
@@ -314,11 +339,8 @@ int loadDefaulOptions(Settings &settings)
if(settings.debugMode)
std::cout << " > Defaults: search_UpdateWarnungNachTagen: " << settings.updateWarningDays << std::endl;
} else if (what == "") {
} else if (what == "") {
} else if (what == "") {
} else if (what == "test") {
//test
} else {
std::cout << " => Warnung: Unbekannte Default-Option: '" << what << "'." << std::endl;
@@ -336,7 +358,7 @@ int unterOption_help(Settings &settings)
<< " -> Mit diesem Programm kann man die Download-Urls" << std::endl
<< " oder Informationen von Serien bekommen." << std::endl
<< " -> Mit diesem Programm kann man Redirect-Links von" << std::endl
<< " s.to umwandeln." << std::endl
<< " serienstream.sx umwandeln." << std::endl
<< std::endl;
std::cout << "Unteroptionen:" << std::endl
@@ -344,7 +366,7 @@ int unterOption_help(Settings &settings)
<< "\t\"--version\"\tGibt die Version des Programmes aus." << std::endl
<< "\t\"--update\"\tModus um das Programm zu aktualisieren." << std::endl
<< "\t \tUpdater funktioniert nur bei: Windows/Linux -" << std::endl
<< "\t \tx86 Architekutur - 64 Bit Systemen." << std::endl
<< "\t \tx86 Architekutur - 64 Bit Systemen und ARM v6 Syst." << std::endl
<< "\t\"--remove\"\tModus um Ordner mit Einstellungen/" << std::endl
<< "\t \tZwischengespeicherte-Dateien zu löschen." << std::endl
<< "\t\"url\"\t\tModus um eigene Redirect-Links umzuwandeln." << std::endl
@@ -352,7 +374,8 @@ int unterOption_help(Settings &settings)
<< "\t\"search\"\tModus um Serien zu suchen." << std::endl
<< "\t\"info\"\t\tModus um Infos einer Serien zu bekommen." << std::endl
<< "\t\"clean\"\t\tModus um Cookie-Files zu löschen." << std::endl
<< "\t\"news\"\t\tModus um neusten 75 Folgen auf s.to zu sehen." << std::endl
<< "\t\"news\"\t\tModus um neusten 75 Folgen auf serienstream.sx zu sehen." << std::endl
<< "\t\"log\"\t\tModus um Log Datei zu sehen / leeren." << std::endl
<< std::endl;
std::cout << "Verzeichnisse:" << std::endl
@@ -417,9 +440,9 @@ int unterOption_default(Settings *settings, int argc, char ** argv)
break;
case 'o':
if(optarg)
settings->outputFilePath = optarg;
settings->outputFilePaths.push_back(optarg);
if(settings->debugMode)
std::cout << "Pfad zu Output-Datei: " << settings->outputFilePath << std::endl;
std::cout << "Pfad zu Output-Datei: " << settings->outputFilePaths.back() << std::endl;
break;
case 'e':
@@ -494,8 +517,8 @@ int unterOption_default(Settings *settings, int argc, char ** argv)
if(!isNumber(optarg)) {
std::cout << " => Error: [-t]: Thread-Max: Ungültige Zahl: " << optarg << std::endl;
return 18;
} else if (settings->maxThreads > 10 && !settings->debugMode) {
std::cout << " => Error: [-t]: Thread-Max: Zahl ist größer 10: " << optarg << std::endl;
} else if (settings->maxThreads > 4 && !settings->debugMode) {
std::cout << " => Error: [-t]: Thread-Max: Zahl ist größer 4: " << optarg << std::endl;
return 19;
}
if(settings->debugMode)
@@ -606,8 +629,8 @@ void unterOption_default_help(std::string programName)
<< " Standart: 127.0.0.1:9050 - Port 0 um Proxy zu deaktivieren." << std::endl << std::endl
<< "AUSGABEOPTIONEN:" << std::endl
<< " -o [Pfad], --output-file [Pfad]" << std::endl
<< " Mit diere Option kann man ein (nichtvorhandenes) Text-Datei" << std::endl
<< " angeben, inwelches die umgewandelten Redirect-Links geschrieben" << std::endl
<< " Mit diere Option kann man eine (nichtvorhandene) Text-Datei" << std::endl
<< " angeben, inwelche die umgewandelten Redirect-Links geschrieben" << std::endl
<< " werden. Beachte: Wenn die Datei von -C existiert, dann" << std::endl
<< " schreibt das Programm kein 'Name: ...' in die Datei." << std::endl
<< " -c, --colorless" << std::endl
@@ -650,7 +673,7 @@ void unterOption_default_help(std::string programName)
<< " Thread, bis die angegebene Anzahl an Threads erreicht" << std::endl
<< " wurde. Dannm wartet es auf das Enden der Threads und" << std::endl
<< " beginnt von vorne. Verwende 0 um das Multihreading zu" << std::endl
<< " deaktivieren. Maximal 10 Threads." << std::endl
<< " deaktivieren. Maximal 4 Threads. ( s.to hat bereits Ddos Schutz !!! )" << std::endl
<< " Standart: 0" << std::endl << std::endl
<< "HELPMENUE:" << std::endl
<< " -h, --help" << std::endl
@@ -683,9 +706,9 @@ int unterOption_url(Settings *settings, int argc, char **argv)
break;
case 'o':
if(optarg)
settings->outputFilePath = optarg;
settings->outputFilePaths.push_back(optarg);
if(settings->debugMode)
std::cout << "Pfad zu Output-Datei: " << settings->outputFilePath << std::endl;
std::cout << "Pfad zu Output-Datei: " << settings->outputFilePaths.back() << std::endl;
break;
case 'c':
settings->colorless = true;
@@ -733,8 +756,8 @@ void unterOption_url_help(std::string programName)
std::cout << "Beschreibung:" << std::endl
<< " Mit dieser Unterfunktion von " << programName << " können eigene" << std::endl
<< " Redirect-Links umgewandelt werden. Beispiel:" << std::endl
<< " https://s.to/redirect/44498xy -> https://vivolvox.xy/123xy" << std::endl
<< " Der Link kann folgen Aussehen: {[*]s.to}/redirect/[*]." << std::endl
<< " https://serienstream.sx/redirect/44498xy -> https://vivolvox.xy/123xy" << std::endl
<< " Der Link kann folgen Aussehen: {[*]serienstream.sx}/redirect/[*]." << std::endl
<< " Standartwerte können im Defaultfile geändert werden." << std::endl << std::endl;
std::cout << "OPTIONEN:" << std::endl
@@ -838,10 +861,10 @@ void unterOption_search_help(std::string programName)
<< " " << programName << " search [OPTION]... [{-u, --update}&|/{-l, --last-update}] [Name]" << std::endl << std::endl;
std::cout << "Beschreibung:" << std::endl
<< " Mit dieser Unterfunktion des Programms kann man Serien auf s.to suchen." << std::endl
<< " Mit dieser Unterfunktion des Programms kann man Serien auf serienstream.sx suchen." << std::endl
<< " Tipp: Falls deine Serie nicht gefunden wird, entferne einen Teil" << std::endl
<< " am Ende deines SuchNamens und wiederhole die Suche." << std::endl
<< " Tipp: Wenn deine Serie sehr neu auf s.to ist, und deshalb nicht gefunden" << std::endl
<< " Tipp: Wenn deine Serie sehr neu auf serienstream.sx ist, und deshalb nicht gefunden" << std::endl
<< " wird, verwende die Option -u, um die Liste zu aktualisieren." << std::endl << std::endl;
std::cout << "AKTUALISIERUNG:" << std::endl
@@ -881,6 +904,7 @@ int unterOption_info(Settings *settings, int argc, char **argv)
int c = 0;
const option long_opts[] = {
{"socks5-proxy", required_argument, nullptr, 'p'},
{"output-file", required_argument, nullptr, 'o'},
{"help", no_argument, nullptr, 'h'},
{"colorless", no_argument, nullptr, 'c'},
@@ -891,12 +915,18 @@ int unterOption_info(Settings *settings, int argc, char **argv)
};
while( ( c = getopt_long (argc, argv, "p:hcds", long_opts, nullptr) ) != -1 ) {
while( ( c = getopt_long (argc, argv, "p:o:hcds", long_opts, nullptr) ) != -1 ) {
switch(c) {
case 'p':
if(!optarg || setS5ProxytoSettings(*settings, optarg) != 0)
return 2;
break;
case 'o':
if(optarg)
settings->outputFilePaths.push_back(optarg);
if(settings->debugMode)
std::cout << "Pfad zu Output-Datei: " << settings->outputFilePaths.back() << std::endl;
break;
case 'h':
unterOption_info_help(settings->programName);
return -1;
@@ -958,6 +988,9 @@ void unterOption_info_help(std::string programName)
<< " -s, --skip-episoden-names" << std::endl
<< " Mit dieser Option kann man die Ausgabe der Namen der" << std::endl
<< " einzelnen Folgen ausschalten." << std::endl << std::endl
<< " -o [Pfad], --output-file [Pfad]" << std::endl
<< " Mit diere Option kann man eine (nichtvorhandene) Text-Datei" << std::endl
<< " angeben, inwelche die Infos geschrieben werden." << std::endl
<< " -h, --help" << std::endl
<< " Mit dieser Option wird dieses Helpmenue ausgegeben." << std::endl;
}
@@ -1202,7 +1235,7 @@ void unterOption_news_help(std::string programName)
std::cout << "Aufruf: " << programName << " news [OPTION]..." << std::endl << std::endl;
std::cout << "Beschreibung:" << std::endl
<< " Mit dieser Unterfunktion kann man die neuesten 75 Folgen auf s.to sehen." << std::endl << std::endl;
<< " Mit dieser Unterfunktion kann man die neuesten 75 Folgen auf serienstream.sx sehen." << std::endl << std::endl;
std::cout << "OPTIONEN:" << std::endl
<< " -p [ip:port/ip/port], --socks5-proxy [ip:port/ip/port]" << std::endl
@@ -1426,3 +1459,109 @@ bool isSame(char **argv, std::string FunktionName)
}
return false;
}
int unterOption_printLogFile(Settings *settings, int argc, char **argv)
{
settings->modus = Modus::PRINT_LOG_FILE_MODUS;
int c = 0;
const option long_opts[] = {
{"help", no_argument, nullptr, 'h'},
{"print", no_argument, nullptr, 'p'},
{"clear", no_argument, nullptr, 'C'},
{"colorless", no_argument, nullptr, 'c'},
{nullptr, no_argument, nullptr, 0}
};
bool printMode = false, ClearMode = false;
while( ( c = getopt_long (argc, argv, "hpCc", long_opts, nullptr) ) != -1 ) {
switch(c) {
case 'h':
unterOption_printLogFile(settings->programName);
return -1;
case 'p':
printMode = true;
if(settings->debugMode)
std::cout << "printMode: true" << std::endl;
break;
case 'C':
ClearMode = true;
if(settings->debugMode)
std::cout << "ClearMode: true" << std::endl;
break;
case 'c':
settings->colorless = true;
if(settings->debugMode)
std::cout << "Farblos: true" << std::endl;
break;
default:
std::cout << "Aufruf: " << settings->programName << " log [OPTION]..." << std::endl;
std::cout << "\"" << settings->programName << " log --help\" liefert weitere Informationen." << std::endl;
return 21;
}
}
if(!printMode && !ClearMode) {
std::cout << " => Error: Fehlende Parameter: -p oder -c." << std::endl;
std::cout << "\"" << settings->programName << " log --help\" liefert weitere Informationen." << std::endl;
return 34;
}
// Main-Program:......
std::string clearColor = "\033[0m";
if(printMode && settings->colorless)
std::cout << Logger(settings->logFilePath).getLogText() << std::endl;
else if(printMode) {
std::string text = settings->logFilePath + ":\n" + Logger(settings->logFilePath).getLogText();
//Command Lines
text = replace(text, ": \"", clearColor + ": " + "\033[94m" + "\"");
text = replace(text, "\n -> ", std::string("\n -> ")+ "\033[95m" );
//Good Links
text = replace(text, ": http", clearColor + ": " + "\033[92m" + "http");
text = replace(text, "\nS", std::string("\n" ) + "\033[33m" + "S");
//Names:
text = replace(text, "\nName: ", "\n" + std::string("\033[93m") + "Name: " + std::string("\033[96m"));
//Line/ Text - End
text = replace(text, "\n", "\n" + clearColor);
text.append(clearColor);
std::cout << text << std::endl;
}
if(ClearMode)
if(Logger(settings->logFilePath).clearFile())
return 12;
return -1;
}
void unterOption_printLogFile(std::string programName)
{
std::cout << "Aufruf: " << programName << " log [OPTION]..." << std::endl << std::endl;
std::cout << "Beschreibung:" << std::endl
<< " Mit dieser Unterfunktion kann man die Log Datei sehen/leeren." << std::endl << std::endl;
std::cout << "OPTIONEN:" << std::endl
<< " -p, --print" << std::endl
<< " Mit dieser Option wird das LogFile ausgegeben." << std::endl
<< " -C, --clear" << std::endl
<< " Mit dieser Option wird das LogFile geleert." << std::endl
<< " -c, --colorless" << std::endl
<< " Mit dieser Option kann man die farbige Ausgabe ausstellen." << std::endl << std::endl;
}
std::string replace(std::string str, std::string substr1, std::string substr2)
{
if(substr1 == "")
return str;
size_t index = 0;
for (index = str.find(substr1, index); index != std::string::npos; index = str.find(substr1, index + substr2.length() ) )
str.replace(index, substr1.length(), substr2);
return str;
}

View File

@@ -19,11 +19,14 @@
#include <unistd.h> // readlink()
#include <dirent.h>
#include "logger.h"
#ifdef _WIN32
#include <windows.h>
#endif
#define UpdaterCloudUrlWithPath "https://cloud.obermui.de/s/H47Xoqy2czfJzYp/download?path=%2F&files="
enum Modus {
EXIT = -1,
DEFAULT_MODUS = 0,
@@ -32,11 +35,11 @@ enum Modus {
INFO_MODUS = 3,
NEWS_MODUS = 4,
UPDATE_MODUS = 5,
REMOVE_SETTINGS_AND_CACHE_MODUS = 6
REMOVE_SETTINGS_AND_CACHE_MODUS = 6,
PRINT_LOG_FILE_MODUS
};
struct Settings {
Settings() {}
Settings(std::string name) : name(name) {}
@@ -46,13 +49,13 @@ struct Settings {
#if defined (_X86_) || defined (__amd64__) || defined (_M_IX86)
// Wenn das Betriebsystem LINUX ist und 64 Bit ist:
#if defined (__linux) && ( defined (_LP64) || defined (__LP64__))
const std::string VersionFileUrl = "https://cloud.obermui.de/s/H47Xoqy2czfJzYp/download?path=%2F&files=Version-LINx86.txt";
const std::string ProgrammFileUrl = "https://cloud.obermui.de/s/H47Xoqy2czfJzYp/download?path=%2F&files=S_New4-LINx86";
const std::string VersionFileUrl = UpdaterCloudUrlWithPath + std::string("Version-LINx86.txt");
const std::string ProgrammFileUrl = UpdaterCloudUrlWithPath + std::string("S_New4-LINx86");
#else
//Wenn das Betriebsystem Windows ist und 64 Bit ist
#if defined (_WIN64)
const std::string VersionFileUrl = "https://cloud.obermui.de/s/H47Xoqy2czfJzYp/download?path=%2F&files=Version-WINx86.txt";
const std::string ProgrammFileUrl = "https://cloud.obermui.de/s/H47Xoqy2czfJzYp/download?path=%2F&files=S_New4-WINx86.exe";
const std::string VersionFileUrl = UpdaterCloudUrlWithPath + std::string("Version-WINx86.txt");
const std::string ProgrammFileUrl = UpdaterCloudUrlWithPath + std::string("S_New4-WINx86.exe");
#else
//Ungültiges Betriebsystem => Error
#error Kein Windows oder Linux 64 Bit System: Der Updater Fuktion wird nicht Funktionieren! Remove this Line in the Code to use S_New4 without the Updater. ( But your System must be Windows or Linux )
@@ -63,9 +66,15 @@ struct Settings {
//Nicht x86 Architekture
#else
#error Falsche Architektur: Der Updater Fuktion wird nicht Funktionieren! Remove this Line in the Code to use S_New4 without the Updater. ( But your System must be Windows or Linux )
const std::string VersionFileUrl = "";
const std::string ProgrammFileUrl = "";
//Raspberry Pi -> ARMv6 -> 32Bit
#if defined(__ARM_ARCH_6__) && defined (__linux)
const std::string VersionFileUrl = UpdaterCloudUrlWithPath + std::string("Version-LIN-ARMv6.txt");
const std::string ProgrammFileUrl = UpdaterCloudUrlWithPath + std::string("S_New4-LIN-ARMv6");
#else
#error Falsche Architektur: Der Updater Fuktion wird nicht Funktionieren! Remove this Line in the Code to use S_New4 without the Updater. ( But your System must be Windows or Linux )
const std::string VersionFileUrl = "";
const std::string ProgrammFileUrl = "";
#endif
#endif
std::string name,
@@ -76,17 +85,19 @@ struct Settings {
lastUpdateDateFilePath = "",
configDir="",
cacheDir="",
logFilePath="",
defaultsFilePath = "",
proxy_ip = "127.0.0.1",
languages = "GerDub,GerSub,Eng,",
genaueHoster = "",
version = "3.7.3",
defaultFileVersion="1.7",
outputFilePath = "",
version = "4.1.3",
defaultFileVersion="1.8",
default_checkPath = "",
default_Searchmuster = "S%Staffel%E%Folge%";
std::vector<std::string> outputFilePaths;
Modus modus = Modus::EXIT;
bool colorless = false,
debugMode = false,
@@ -106,6 +117,7 @@ struct Settings {
unsigned maxThreads = 0;
};
std::string replace(std::string str, std::string substr1, std::string substr2);
int manageParameter(Settings &settings, int argc, char ** argv);
int loadDefaulOptions(Settings & settings);
@@ -149,6 +161,9 @@ void unterOption_update_help(std::string programName);
int unterOption_RemoveSettings_or_CacheDir(Settings * settings, int argc, char **argv);
void unterOption_RemoveSettings_or_CacheDire_help(std::string programName);
int unterOption_printLogFile(Settings * settings, int argc, char **argv);
void unterOption_printLogFile(std::string programName);
int setS5ProxytoSettings(Settings &settings, std::string optarg);

File diff suppressed because it is too large Load Diff

Some files were not shown because too many files have changed in this diff Show More