[-]
[+]
|
Changed |
_service:tar_git:harbour-sailtrix.spec
|
|
[-]
[+]
|
Changed |
_service
^
|
@@ -2,6 +2,6 @@
<service name="tar_git">
<param name="url">https://gitlab.com/HengYeDev/harbour-sailtrix</param>
<param name="branch">master</param>
- <param name="revision">1.3.6</param>
+ <param name="revision">1.3.7.1</param>
</service>
</services>
|
[-]
[+]
|
Deleted |
_service:tar_git:harbour-sailtrix-1.3.6.tar.bz2/Sailtrix.pro.user
^
|
@@ -1,1607 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE QtCreatorProject>
-<!-- Written by QtCreator 4.12.2, 2021-05-30T15:21:52. -->
-<qtcreator>
- <data>
- <variable>EnvironmentId</variable>
- <value type="QByteArray">{627b675c-f9b8-4e6d-9a7f-bd2b467a41da}</value>
- </data>
- <data>
- <variable>ProjectExplorer.Project.ActiveTarget</variable>
- <value type="int">1</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>
- <value type="QString" key="ClangCodeModel.WarningConfigId">Builtin.Questionable</value>
- <valuemap type="QVariantMap" key="ClangTools">
- <value type="bool" key="ClangTools.BuildBeforeAnalysis">true</value>
- <value type="QString" key="ClangTools.DiagnosticConfig">Builtin.DefaultTidyAndClazy</value>
- <value type="int" key="ClangTools.ParallelJobs">8</value>
- <valuelist type="QVariantList" key="ClangTools.SelectedDirs"/>
- <valuelist type="QVariantList" key="ClangTools.SelectedFiles"/>
- <valuelist type="QVariantList" key="ClangTools.SuppressedDiagnostics"/>
- <value type="bool" key="ClangTools.UseGlobalSettings">true</value>
- </valuemap>
- </valuemap>
- </data>
- <data>
- <variable>ProjectExplorer.Project.Target.0</variable>
- <valuemap type="QVariantMap">
- <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">SailfishOS-4.0.1.48-aarch64 (in Sailfish OS Build Engine)</value>
- <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">SailfishOS-4.0.1.48-aarch64 (in Sailfish OS Build Engine)</value>
- <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">{41dd6df4-5bf2-4276-97b7-a93be75d4728}</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="bool">true</value>
- <value type="int" key="EnableQmlDebugging">0</value>
- <value type="QString" key="MerSfdkConfigurationAspect.Options"></value>
- <value type="QString" key="MerSpecFileAspect.Path"></value>
- <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/heng/ssd-data/SailfishApps/build-Sailtrix-SailfishOS_4_0_1_48_aarch64_in_Sailfish_OS_Build_Engine-Debug</value>
- <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">/home/heng/ssd-data/SailfishApps/build-Sailtrix-SailfishOS_4_0_1_48_aarch64_in_Sailfish_OS_Build_Engine-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">Mer.MerSdkStartStep</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">QtProjectManager.QMakeBuildStep</value>
- <value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
- <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
- <valuelist type="QVariantList" key="QtProjectManager.QMakeBuildStep.SelectedAbis"/>
- </valuemap>
- <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.2">
- <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">3</value>
- <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
- <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Build</value>
- <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
- </valuemap>
- <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
- <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
- <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
- <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Mer.MerSdkStartStep</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">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">2</value>
- <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
- <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Clean</value>
- <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
- </valuemap>
- <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
- <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
- <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
- <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Debug</value>
- <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
- <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">2</value>
- <value type="int" key="QtQuickCompiler">2</value>
- <value type="int" key="SeparateDebugInfo">2</value>
- </valuemap>
- <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
- <value type="bool">true</value>
- <value type="int" key="EnableQmlDebugging">2</value>
- <value type="QString" key="MerSfdkConfigurationAspect.Options"></value>
- <value type="QString" key="MerSpecFileAspect.Path"></value>
- <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/heng/ssd-data/SailfishApps/build-Sailtrix-SailfishOS_4_0_1_48_aarch64_in_Sailfish_OS_Build_Engine-Release</value>
- <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">/home/heng/ssd-data/SailfishApps/build-Sailtrix-SailfishOS_4_0_1_48_aarch64_in_Sailfish_OS_Build_Engine-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">Mer.MerSdkStartStep</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">QtProjectManager.QMakeBuildStep</value>
- <value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
- <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
- <valuelist type="QVariantList" key="QtProjectManager.QMakeBuildStep.SelectedAbis"/>
- </valuemap>
- <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.2">
- <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">3</value>
- <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
- <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Build</value>
- <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
- </valuemap>
- <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
- <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
- <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
- <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Mer.MerSdkStartStep</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">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">2</value>
- <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
- <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Clean</value>
- <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
- </valuemap>
- <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
- <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
- <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
- <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Release</value>
- <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
- <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
|
[-]
[+]
|
Deleted |
_service:tar_git:harbour-sailtrix-1.3.6.tar.bz2/harbour-sailtrix.pro.user
^
|
@@ -1,1528 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE QtCreatorProject>
-<!-- Written by QtCreator 4.15.2, 2021-11-14T09:06:09. -->
-<qtcreator>
- <data>
- <variable>EnvironmentId</variable>
- <value type="QByteArray">{627b675c-f9b8-4e6d-9a7f-bd2b467a41da}</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.PreferSingleLineComments">false</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="bool" key="EditorConfiguration.UseIndenter">false</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="QString" key="EditorConfiguration.ignoreFileTypes">*.md, *.MD, Makefile</value>
- <value type="bool" key="EditorConfiguration.inEntireDocument">false</value>
- <value type="bool" key="EditorConfiguration.skipTrailingWhitespace">true</value>
- </valuemap>
- </data>
- <data>
- <variable>ProjectExplorer.Project.PluginSettings</variable>
- <valuemap type="QVariantMap">
- <valuemap type="QVariantMap" key="AutoTest.ActiveFrameworks">
- <value type="bool" key="AutoTest.Framework.Boost">true</value>
- <value type="bool" key="AutoTest.Framework.CTest">false</value>
- <value type="bool" key="AutoTest.Framework.Catch">true</value>
- <value type="bool" key="AutoTest.Framework.GTest">true</value>
- <value type="bool" key="AutoTest.Framework.QtQuickTest">true</value>
- <value type="bool" key="AutoTest.Framework.QtTest">true</value>
- </valuemap>
- <valuemap type="QVariantMap" key="AutoTest.CheckStates"/>
- <value type="int" key="AutoTest.RunAfterBuild">0</value>
- <value type="bool" key="AutoTest.UseGlobal">true</value>
- <valuelist type="QVariantList" key="ClangCodeModel.CustomCommandLineKey"/>
- <value type="bool" key="ClangCodeModel.UseGlobalConfig">true</value>
- <value type="QString" key="ClangCodeModel.WarningConfigId">Builtin.BuildSystem</value>
- <valuemap type="QVariantMap" key="ClangTools">
- <value type="bool" key="ClangTools.AnalyzeOpenFiles">true</value>
- <value type="bool" key="ClangTools.BuildBeforeAnalysis">true</value>
- <value type="QString" key="ClangTools.DiagnosticConfig">Builtin.DefaultTidyAndClazy</value>
- <value type="int" key="ClangTools.ParallelJobs">8</value>
- <valuelist type="QVariantList" key="ClangTools.SelectedDirs"/>
- <valuelist type="QVariantList" key="ClangTools.SelectedFiles"/>
- <valuelist type="QVariantList" key="ClangTools.SuppressedDiagnostics"/>
- <value type="bool" key="ClangTools.UseGlobalSettings">true</value>
- </valuemap>
- </valuemap>
- </data>
- <data>
- <variable>ProjectExplorer.Project.Target.0</variable>
- <valuemap type="QVariantMap">
- <value type="QString" key="DeviceType">Mer.Device.Type</value>
- <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">SailfishOS-3.4.0.24-i486 (in Sailfish SDK Build Engine)</value>
- <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">SailfishOS-3.4.0.24-i486 (in Sailfish SDK Build Engine)</value>
- <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">SailfishOS-3.4.0.24-i486.default</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="int" key="EnableQmlDebugging">0</value>
- <value type="bool" key="MerBuildConfiguration.SignPackages">false</value>
- <value type="QString" key="MerBuildConfiguration.SigningPassphraseFile"></value>
- <value type="QString" key="MerBuildConfiguration.SigningUser"></value>
- <value type="QString" key="MerSfdkConfigurationAspect.Options"></value>
- <value type="QString" key="MerSpecFileAspect.Path"></value>
- <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/heng/ssd-data/SailfishApps/build-harbour-sailtrix-SailfishOS_3_4_0_24_i486_in_Sailfish_SDK_Build_Engine-Debug</value>
- <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">/home/heng/ssd-data/SailfishApps/build-harbour-sailtrix-SailfishOS_3_4_0_24_i486_in_Sailfish_SDK_Build_Engine-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">Mer.MerSdkStartStep</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">QtProjectManager.QMakeBuildStep</value>
- <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
- <valuelist type="QVariantList" key="QtProjectManager.QMakeBuildStep.SelectedAbis"/>
- </valuemap>
- <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.2">
- <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
- <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
- </valuemap>
- <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">3</value>
- <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
- <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Build</value>
- <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
- </valuemap>
- <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
- <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
- <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
- <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Mer.MerSdkStartStep</value>
- </valuemap>
- <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
- <value type="QString" key="MerClearBuildEnvironmentStep.Arguments">reset</value>
- <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
- <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Mer.MerClearBuildEnvironmentStep</value>
- </valuemap>
- <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.2">
- <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
- <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
- <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
- </valuemap>
- <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">3</value>
- <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Clean</value>
- <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Clean</value>
- <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
- </valuemap>
- <value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
- <value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
- <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.CustomParsers"/>
- <valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
- <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Debug</value>
- <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
- <value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">2</value>
- <value type="int" key="RunSystemFunction">1</value>
- </valuemap>
- <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
- <value type="bool" key="MerBuildConfiguration.SignPackages">false</value>
- <value type="QString" key="MerBuildConfiguration.SigningPassphraseFile"></value>
- <value type="QString" key="MerBuildConfiguration.SigningUser"></value>
- <value type="QString" key="MerSfdkConfigurationAspect.Options"></value>
- <value type="QString" key="MerSpecFileAspect.Path"></value>
- <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/home/heng/ssd-data/SailfishApps/build-harbour-sailtrix-SailfishOS_3_4_0_24_i486_in_Sailfish_SDK_Build_Engine-Release</value>
- <value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory.shadowDir">/home/heng/ssd-data/SailfishApps/build-harbour-sailtrix-SailfishOS_3_4_0_24_i486_in_Sailfish_SDK_Build_Engine-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">Mer.MerSdkStartStep</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">QtProjectManager.QMakeBuildStep</value>
- <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
- <valuelist type="QVariantList" key="QtProjectManager.QMakeBuildStep.SelectedAbis"/>
- </valuemap>
- <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.2">
- <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
- <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
- </valuemap>
- <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">3</value>
- <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Build</value>
- <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Build</value>
- <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
- </valuemap>
- <valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
- <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
- <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
- <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Mer.MerSdkStartStep</value>
- </valuemap>
- <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
- <value type="QString" key="MerClearBuildEnvironmentStep.Arguments">reset</value>
- <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
- <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Mer.MerClearBuildEnvironmentStep</value>
- </valuemap>
- <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.2">
- <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
- <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
- <value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
- </valuemap>
- <value type="int" key="ProjectExplorer.BuildStepList.StepsCount">3</value>
|
[-]
[+]
|
Changed |
_service:tar_git:harbour-sailtrix-1.3.7.1.tar.bz2/harbour-sailtrix.desktop
^
|
@@ -10,6 +10,6 @@
#[X-Sailjail]
-#Permissions=Internet;Audio;Documents;Downloads;UserDirs;Pictures;Videos;Music;RemovableMedia
+#Permissions=Internet;Audio;Documents;Downloads;PublicDir;Pictures;Videos;Music;RemovableMedia
#OrganizationName=org.yeheng
#ApplicationName=sailtrix
|
[-]
[+]
|
Changed |
_service:tar_git:harbour-sailtrix-1.3.7.1.tar.bz2/harbour-sailtrix.pro
^
|
@@ -123,6 +123,7 @@
qml/pages/JoinPublicRoom.qml \
qml/pages/LoginDialog.qml \
qml/pages/LoginWaiting.qml \
+ qml/pages/MessageSource.qml \
qml/pages/Messages.qml \
qml/pages/PictureDisplay.qml \
qml/pages/RoomDirectory.qml \
|
[-]
[+]
|
Changed |
_service:tar_git:harbour-sailtrix-1.3.7.1.tar.bz2/qml/cover/LoggedInCover.qml
^
|
@@ -2,7 +2,47 @@
import Sailfish.Silica 1.0
CoverBackground {
- CoverPlaceholder {
- text: "Sailtrix"
+ property int numNotifs;
+
+ Image {
+ source: "/usr/share/icons/hicolor/172x172/apps/harbour-sailtrix.png"
+ anchors {
+ left: parent.left
+ rightMargin: - (parent.width / 3)
+ top: parent.top
+ topMargin: - (parent.height / 4)
+
+ right: parent.right
+ leftMargin: (parent.width / 4)
+ bottom: parent.bottom
+ bottomMargin: (parent.height / 2)
+ }
+ fillMode: Image.PreserveAspectFit
+ opacity: 0.2
+ }
+
+ Column {
+ anchors.centerIn: parent
+ anchors.top: parent.top
+ anchors.topMargin: parent.height / 4
+
+
+ Label {
+ font.pixelSize: Theme.fontSizeLarge
+ text: "Sailtrix"
+ }
+
+ Row {
+ Label {
+ font.pixelSize: Theme.fontSizeLarge
+ text: numNotifs
+ }
+
+ Label {
+ font.pixelSize: Theme.fontSizeSmall
+ text: qsTr(" notifications")
+ anchors.bottom: parent.bottom
+ }
+ }
}
}
|
[-]
[+]
|
Changed |
_service:tar_git:harbour-sailtrix-1.3.7.1.tar.bz2/qml/custom/RoomsDisplay.qml
^
|
@@ -28,7 +28,6 @@
onContentYChanged: {
- console.log(contentY)
if (contentY != 0)
savedY = contentY
@@ -61,11 +60,7 @@
section.criteria: ViewSection.FullString
section.delegate: sectionHeading
- ViewPlaceholder {
- visible: parent.count == 0
- text: qsTr("No ") + type;
- hintText: type === "Rooms" ? "Pull down to join new rooms" : undefined
- }
+ onCountChanged: console.log("COUNT CHANGED: " + count)
delegate: ListItem {
id: item
@@ -79,6 +74,18 @@
menu: ContextMenu {
MenuItem {
+ text: (section_name === "Favorites") ? qsTr("Remove from Favorites") : qsTr("Favorite")
+ onClicked: {
+ if (section_name === "Favorites") {
+ rooms.unFavorite(rid)
+ } else {
+ rooms.setFavorite(rid)
+ }
+ }
+
+ }
+
+ MenuItem {
text: qsTr("Leave")
onClicked: item.remorseDelete(function() { rooms.leave(rid); });
}
@@ -117,11 +124,8 @@
}
}
}
-
-
-
- onSourceChanged: console.log(source);
}
+
Label {
id: roomName
text: unread > 0 ? "(" + unread + ") " + name : name
|
[-]
[+]
|
Changed |
_service:tar_git:harbour-sailtrix-1.3.7.1.tar.bz2/qml/harbour-sailtrix.qml
^
|
@@ -20,6 +20,12 @@
enabledOnPage: "Rooms"
DockedTabButton {
+ icon.source: "image://theme/icon-m-favorite-selected"
+ label: "Favorites"
+ fontSize: Theme.fontSizeTiny
+ }
+
+ DockedTabButton {
icon.source: "image://theme/icon-m-chat"
label: "Rooms"
fontSize: Theme.fontSizeTiny
|
[-]
[+]
|
Changed |
_service:tar_git:harbour-sailtrix-1.3.7.1.tar.bz2/qml/logged-in.qml
^
|
@@ -2,11 +2,25 @@
import Sailfish.Silica 1.0
import "pages"
import "sf-docked-tab-bar"
+import "cover"
ApplicationWindow
{
- initialPage: Component { Rooms { } }
- cover: Qt.resolvedUrl("cover/LoggedInCover.qml")
+ property int numNotif;
+
+ Rooms {
+ id: rooms
+ }
+
+ initialPage: rooms
+
+
+ LoggedInCover {
+ id: cover
+ numNotifs: rooms.notifs
+ }
+
+ cover: cover
allowedOrientations: defaultAllowedOrientations
property alias tabBar: tabbar
@@ -18,6 +32,12 @@
enabledOnPage: "Rooms"
DockedTabButton {
+ icon.source: "image://theme/icon-m-favorite-selected"
+ label: "Favorites"
+ fontSize: Theme.fontSizeTiny
+ }
+
+ DockedTabButton {
icon.source: "image://theme/icon-m-chat"
label: "Rooms"
fontSize: Theme.fontSizeTiny
|
[-]
[+]
|
Changed |
_service:tar_git:harbour-sailtrix-1.3.7.1.tar.bz2/qml/pages/CreateRoom.qml
^
|
@@ -12,6 +12,8 @@
property string alias_text;
property bool e2ee_enabled;
+ title: "Create Room"
+
CreateRoomBackend {
id: backend
|
[-]
[+]
|
Changed |
_service:tar_git:harbour-sailtrix-1.3.7.1.tar.bz2/qml/pages/Credits.qml
^
|
@@ -18,7 +18,7 @@
spacing: Theme.paddingLarge
Label {
- text: "Sailtrix 1.3.6"
+ text: "Sailtrix 1.3.7"
color: Theme.highlightColor
font.family: Theme.fontFamilyHeading
font.pixelSize: Theme.fontSizeLarge
|
[-]
[+]
|
Added |
_service:tar_git:harbour-sailtrix-1.3.7.1.tar.bz2/qml/pages/MessageSource.qml
^
|
@@ -0,0 +1,71 @@
+import QtQuick 2.0
+import Sailfish.Silica 1.0
+
+Page {
+ id: page
+
+ property string messageSource
+ property string roomId
+ property string eventId
+ property var ts;
+
+
+ allowedOrientations: Orientation.All
+
+ PageHeader {
+ title: qsTr("View Source")
+ id: header
+ }
+
+ function formatTimestamp(timestamp) {
+ var date = new Date(timestamp);
+
+ return date.toLocaleString();
+ }
+
+ SilicaFlickable {
+ anchors.fill: parent
+ contentWidth: column.width
+ contentHeight: column.height
+ leftMargin: Theme.horizontalPageMargin
+ rightMargin: Theme.horizontalPageMargin
+ topMargin: header.height
+
+ VerticalScrollDecorator{}
+ HorizontalScrollDecorator{}
+
+ Column {
+ id: column
+
+ Label {
+ textFormat: Text.StyledText
+ text: "Room ID: <pre>" + roomId + "</pre>"
+ color: Theme.highlightColor
+ }
+
+ Label {
+ textFormat: Text.StyledText
+ text: "Event ID: <pre>" + eventId + "</pre>"
+ color: Theme.highlightColor
+ }
+
+ Label {
+ textFormat: Text.StyledText
+ text: "Time: " + formatTimestamp(ts) + "<br>"
+ color: Theme.highlightColor
+ }
+
+ Label {
+ text: "Original event source:"
+ width: page.width
+ color: Theme.highlightColor
+ }
+
+ Label {
+ font.family: "Monospace"
+ text: messageSource
+ textFormat: Text.PlainText
+ }
+ }
+ }
+}
|
[-]
[+]
|
Changed |
_service:tar_git:harbour-sailtrix-1.3.7.1.tar.bz2/qml/pages/Messages.qml
^
|
@@ -162,6 +162,11 @@
}
MenuItem {
+ text: qsTr("View Source")
+ onClicked: pageStack.push("MessageSource.qml", { roomId: room_id, eventId: event_id, messageSource: messageSrc, ts: timestamp})
+ }
+
+ MenuItem {
text: qsTr("Delete")
onClicked: item.remorseDelete(function() { backend.redact(event_id);
texts.text = "<b>" + (display_name ? display_name : user_id) + "</b><br>🗑️ Message deleted"; } );
|
[-]
[+]
|
Changed |
_service:tar_git:harbour-sailtrix-1.3.7.1.tar.bz2/qml/pages/PictureDisplay.qml
^
|
@@ -74,9 +74,9 @@
}
}
- PageBusyIndicator {
+ /* PageBusyIndicator {
running: !backend.path || saving
- }
+ } */
}
Component.onCompleted: {
|
[-]
[+]
|
Changed |
_service:tar_git:harbour-sailtrix-1.3.7.1.tar.bz2/qml/pages/Rooms.qml
^
|
@@ -10,12 +10,18 @@
allowedOrientations: Orientation.All
property string active_room;
+ property int notifs;
+
objectName: "Rooms"
RoomsBackend {
id: rooms
+
+ onNotifCountChanged: notifs = notifCount
}
+
+
Connections {
target: sailtrixSignals
onRoomOpenCommand: {
@@ -56,11 +62,34 @@
Item {
width: parent.width
height: parent.height
+
+ RoomsDisplay {
+ id: favorites
+ model: rooms.favorites
+ type: "Favorites"
+ }
+
+ ViewPlaceholder {
+ enabled: favorites.count == 0
+ text: qsTr("No Favorites")
+ hintText: "Add favorites by long-pressing rooms"
+ }
+ }
+
+ Item {
+ width: parent.width
+ height: parent.height
RoomsDisplay {
id: reg_rooms
model: rooms.regularRooms
type: "Rooms"
}
+
+ ViewPlaceholder {
+ enabled: reg_rooms.count == 0
+ text: qsTr("No Rooms")
+ hintText: "Join some rooms"
+ }
}
Item {
@@ -71,6 +100,11 @@
model: rooms.directRooms
type: "Direct Messages"
}
+
+ ViewPlaceholder {
+ enabled: direct_rooms.count == 0
+ text: qsTr("No Direct Messages")
+ }
}
Item {
@@ -82,7 +116,10 @@
type: "Invites"
}
-
+ ViewPlaceholder {
+ enabled: invites_display.count == 0
+ text: qsTr("No Invites")
+ }
}
}
|
[-]
[+]
|
Changed |
_service:tar_git:harbour-sailtrix-1.3.7.1.tar.bz2/src/dbus/notifications.cpp
^
|
@@ -1,9 +1,9 @@
-#include <QJsonDocument>
#include <QJsonArray>
#include <QTimer>
#include <QNetworkRequest>
#include <QNetworkReply>
#include <QFile>
+#include <QFileInfo>
#include <QStandardPaths>
#include <nemonotifications-qt5/notification.h>
#include <keepalive/backgroundactivity.h>
@@ -14,7 +14,7 @@
Notifications::Notifications(QObject *parent, SailtrixSignals* _sig) : QObject(parent), manager { new QNetworkAccessManager(this) }, activity { new BackgroundActivity(this) }, sig { _sig }
{
- connect(activity, &BackgroundActivity::running, this, &Notifications::every30Seconds);
+ connect(activity, &BackgroundActivity::running, this, &Notifications::startRun);
connect(manager, &QNetworkAccessManager::finished, this, &Notifications::processNotifications);
connect(sig, &SailtrixSignals::notificationsDisabled, this, &Notifications::disable);
connect(sig, &SailtrixSignals::notificationsEnabled, this, &Notifications::enable);
@@ -103,15 +103,38 @@
}
}
-void Notifications::every30Seconds() {
+void Notifications::startRun() {
if (m_disabled) {
return;
}
if (!manager->networkAccessible()) {
+ activity->wait(freq);
return;
}
+ {
+ QFile cache_file(QStandardPaths::writableLocation(QStandardPaths::CacheLocation) + "/org.yeheng/sailtrix/matrix-rooms.cache.json");
+ QDateTime cache_file_time = QFileInfo(cache_file).lastModified();
+ if (rooms_cache.isNull() || (cache_file_time.isValid() && cache_file_time > rooms_cache_time)) {
+ if (cache_file.open(QFile::ReadOnly)) {
+ rooms_cache = QJsonDocument::fromJson(cache_file.readAll());
+ }
+ rooms_cache_time = cache_file_time;
+ }
+ }
+
+ {
+ QFile cache_file(QStandardPaths::writableLocation(QStandardPaths::CacheLocation) + "/org.yeheng/sailtrix/users.json");
+ QDateTime cache_file_time = QFileInfo(cache_file).lastModified();
+ if (users_cache.isNull() || (cache_file_time.isValid() && cache_file_time > users_cache_time)) {
+ if (cache_file.open(QFile::ReadOnly)) {
+ users_cache = QJsonDocument::fromJson(cache_file.readAll());
+ }
+ users_cache_time = cache_file_time;
+ }
+ }
+
QByteArray secret_stored = get_secret(&m_secretManager, config_secret_id());
if (secret_stored != nullptr) {
QJsonDocument document = QJsonDocument::fromJson(secret_stored);
@@ -122,12 +145,14 @@
}
qDebug() << "Polling for notifications";
- QString url(m_hs_url + "/_matrix/client/r0/notifications?limit=2");
+ QString url(m_hs_url + "/_matrix/client/r0/notifications?");
- /* if (!next.isNull() && !next.isEmpty()) {
- url.append("&from=" + next);
+ if (next.isEmpty()) {
+ url.append("limit=2");
+ } else {
+ url.append("limit=4&from=" + next);
qDebug() << "From:" << next;
- } */
+ }
QNetworkRequest req(url);
req.setRawHeader(QByteArray("Authorization"), (QString("Bearer " + m_access_token).toUtf8()));
@@ -136,21 +161,21 @@
}
void Notifications::processNotifications(QNetworkReply* reply) {
+ reply->deleteLater();
+
if (m_disabled) {
- reply->deleteLater();
return;
}
- if (reply->error() == QNetworkReply::NoError) {
+ if (reply->error() != QNetworkReply::NoError) {
+ qWarning() << "Get notifications failed:" << reply->error() << reply->errorString() << reply->readAll();
+ } else {
QJsonDocument doc = QJsonDocument::fromJson(reply->readAll());
qDebug() << "Received notifications object:" << doc;
QJsonObject notif_obj = doc.object();
QJsonArray notifications = notif_obj.value("notifications").toArray();
- bool has_notif = false;
- int num = 0;
-
- QJsonObject top_notif;
+ qint64 notif_time = start_time;
for (QJsonValue notif : notifications) {
QJsonObject this_notif = notif.toObject();
@@ -160,84 +185,99 @@
|| this_notif.value("actions").toString() == QStringLiteral("notify")
|| this_notif.value("actions").toString() == QStringLiteral("coalesce")) {
-
QString room_id = this_notif.value("room_id").toString();
QJsonObject event = this_notif.value("event").toObject();
- qint64 notif_time = this_notif.value("ts").toVariant().toULongLong();
+ notif_time = this_notif.value("ts").toVariant().toULongLong();
if (notif_time > start_time) {
qDebug() << "Received notification:" << event.value("content").toObject();
- has_notif = true;
- top_notif = this_notif;
- ++num;
- }
- }
- }
- if (has_notif) {
- Notification *n = new Notification();
- n->setAppIcon("harbour-sailtrix");
- n->setAppName("Sailtrix");
- n->setCategory("x-nemo.messaging.im");
- n->setSummary(num > 1 ? "New messages" : "New message");
-
- QString body = num > 1 ? "Multiple new messages" : "";
-
- if (num == 1) {
- QFile cache_file(QStandardPaths::writableLocation(QStandardPaths::CacheLocation) + "/org.yeheng/sailtrix/matrix-rooms.cache.json");
- if (cache_file.open(QFile::ReadOnly)) {
- QJsonDocument doc = QJsonDocument::fromJson(cache_file.readAll());
- QString room_name = doc.object().value("rooms_list")
- .toObject()
- .value(top_notif.value("room_id").toString()).toObject().value("name").toString();
+ Notification* n;
- body = "New message in " + room_name;
+ QMap<QString, Notification*>::iterator iter = notifications_map.find(room_id);
+ if (iter != notifications_map.end()) {
+ n = iter.value();
+ n->setItemCount(n->itemCount() + 1);
+ } else {
+ n = new Notification;
+ n->setAppIcon("harbour-sailtrix");
+ n->setAppName("Sailtrix");
+ n->setCategory("x-nemo.messaging.im");
+
+ QString summary = "New Message";
+ QString icon = "image://theme/icon-lock-chat";
+
+ if (!rooms_cache.isNull()) {
+ QString iconPath = rooms_cache.object().value("rooms_list").toObject().value(room_id).toObject().value("avatar").toString();
+ if (iconPath.startsWith("/")) {
+ icon = iconPath;
+ }
+
+ summary = rooms_cache.object().value("rooms_list")
+ .toObject()
+ .value(room_id).toObject().value("name").toString();
+ }
- QString icon = doc.object().value("rooms_list").toObject().value(top_notif.value("room_id").toString()).toObject().value("avatar").toString();
- if (icon.startsWith("/")) {
n->setIcon(icon);
- } else {
- n->setIcon("image://theme/icon-lock-chat");
- }
- }
+ n->setSummary(summary);
+ n->setItemCount(1);
- QVariantList args;
- args.append(top_notif.value("room_id").toString());
+ QVariantList args;
+ args.append(this_notif.value("room_id").toString());
- QVariantList actions;
- actions.append(Notification::remoteAction(QStringLiteral("default"), QStringLiteral("showRoom"), QStringLiteral("org.yeheng.sailtrix"), QStringLiteral("/org/yeheng/sailtrix"), QStringLiteral("org.yeheng.sailtrix"), QStringLiteral("showRoom"), args));
- n->setRemoteActions(actions);
- } else {
- QVariantList actions;
- actions.append(Notification::remoteAction(QStringLiteral("default"),
- QStringLiteral("open"),
- QStringLiteral("org.yeheng.sailtrix"),
- QStringLiteral("/org/yeheng/sailtrix"),
- QStringLiteral("org.yeheng.sailtrix"),
- QStringLiteral("open")));
- n->setRemoteActions(actions);
- n->setIcon("image://theme/icon-lock-chat");
- }
+ QVariantList actions;
+ actions.append(Notification::remoteAction(QStringLiteral("default"), QStringLiteral("showRoom"), QStringLiteral("org.yeheng.sailtrix"), QStringLiteral("/org/yeheng/sailtrix"), QStringLiteral("org.yeheng.sailtrix"), QStringLiteral("showRoom"), args));
|
[-]
[+]
|
Changed |
_service:tar_git:harbour-sailtrix-1.3.7.1.tar.bz2/src/dbus/notifications.h
^
|
@@ -4,7 +4,10 @@
#include <QObject>
#include <QNetworkAccessManager>
#include <QTimer>
-#include <QList>
+#include <QMap>
+#include <QString>
+#include <QSet>
+#include <QJsonDocument>
#include <Sailfish/Secrets/secretmanager.h>
#include <keepalive/backgroundactivity.h>
#include <nemonotifications-qt5/notification.h>
@@ -31,13 +34,18 @@
qint64 start_time;
BackgroundActivity::Frequency freq = BackgroundActivity::ThirtySeconds;
bool m_disabled = false;
- QList<Notification*> notification_list;
+ QMap<QString, Notification*> notifications_map;
+ QSet<Notification*> new_notifications;
+ QJsonDocument rooms_cache;
+ QDateTime rooms_cache_time;
+ QJsonDocument users_cache;
+ QDateTime users_cache_time;
public slots:
void disable();
void enable();
void changeFrequency(int new_freq);
private slots:
- void every30Seconds();
+ void startRun();
void processNotifications(QNetworkReply* reply);
};
|
[-]
[+]
|
Changed |
_service:tar_git:harbour-sailtrix-1.3.7.1.tar.bz2/src/messages.cpp
^
|
@@ -210,7 +210,7 @@
for_this_row.insert("is_file", m_messages->data(m_messages->index(i, 0), MessagesModel::is_file).toBool());
for_this_row.insert("is_event", m_messages->data(m_messages->index(i, 0), MessagesModel::is_event).toBool());
for_this_row.insert("timestamp", m_messages->data(m_messages->index(i, 0), MessagesModel::timestamp).toLongLong());
-
+ for_this_row.insert("src", m_messages->data(m_messages->index(i, 0), MessagesModel::src).toString());
arr.append(for_this_row);
}
@@ -341,6 +341,8 @@
this_row->setData(this_message.value("is_file").toBool(), MessagesModel::is_file);
this_row->setData(this_message.value("timestamp").toVariant().toLongLong(), MessagesModel::timestamp);
this_row->setData(this_message.value("is_event").toBool(), MessagesModel::is_event);
+ this_row->setData(this_message.value("src").toString(), MessagesModel::src);
+
if (m_messages->data(m_messages->index(m_messages->rowCount()-1,0), MessagesModel::user_id).toString() == this_message.value("user_id").toString()) {
this_row->setData(true, MessagesModel::is_grouped);
@@ -1138,6 +1140,7 @@
} else {
QStandardItem* item = new QStandardItem();
item->setData(event_obj.value("sender").toString(), MessagesModel::user_id);
+ item->setData(QJsonDocument(event_obj).toJson(), MessagesModel::src);
qDebug() << "Processing message of type" << content.value("msgtype").toString();
if (content.value("msgtype").toString() == QString("m.image") || content.value("msgtype").toString() == QString("m.audio") || content.value("msgtype").toString() == QString("m.video") || content.value("msgtype").toString() == QString("m.file")) {
@@ -1157,7 +1160,9 @@
item->setData(url, MessagesModel::img_url);
item->setData(key, MessagesModel::key);
item->setData(iv, MessagesModel::iv);
- item->setData(content.value("file").toObject().value("mimetype").toString(), MessagesModel::mime_type);
+ item->setData(content.value("info").toObject().value("mimetype").toString(), MessagesModel::mime_type);
+
+ qDebug() << "Mimetype: " << content.value("file").toObject().value("mimetype").toString();
item->setData(content.value("file").toObject().value("hashes").toObject().value("sha256").toString(), MessagesModel::sha256hash);
if (content.value("msgtype").toString() == QString("m.image")) {
@@ -1280,6 +1285,7 @@
} else if (event_obj.value("type").toString() == QStringLiteral("m.room.member")) {
qDebug() << "Got a member event";
QStandardItem* item = new QStandardItem();
+ item->setData(QJsonDocument(event_obj).toJson(), MessagesModel::src);
item->setData(true, MessagesModel::is_event);
QJsonObject content = event_obj.value("content").toObject();
QJsonObject prev_content = event_obj.value("unsigned").toObject().value("prev_content").toObject();
@@ -2165,7 +2171,9 @@
qDebug() << "Found image!";
m_messages->setData(m_messages->index(i,0), out_path, MessagesModel::image_path);
m_messages->setData(m_messages->index(i, 0), image.width(), MessagesModel::image_width);
+ m_messages->setData(m_messages->index(i, 0), true, MessagesModel::is_image);
+ qDebug() << "Saving image path: " << out_path;
emit messagesChanged();
write_cache();
}
@@ -2222,7 +2230,8 @@
for (int i = 0; i < m_messages->rowCount(); i++) {
if (m_messages->data(m_messages->index(i, 0), MessagesModel::is_image).toBool() ||
m_messages->data(m_messages->index(i, 0), MessagesModel::is_video).toBool() ||
- m_messages->data(m_messages->index(i, 0), MessagesModel::is_audio).toBool()) {
+ m_messages->data(m_messages->index(i, 0), MessagesModel::is_audio).toBool() ||
+ m_messages->data(m_messages->index(i, 0), MessagesModel::is_file).toBool()) {
QUrl img_mxc(m_messages->data(m_messages->index(i,0), MessagesModel::img_url).toString());
if (img_mxc.host() == hostname && img_mxc.fileName() == media_id) {
QString key = m_messages->data(m_messages->index(i, 0), MessagesModel::key).toString();
@@ -2230,6 +2239,9 @@
QString sha256hash = m_messages->data(m_messages->index(i, 0), MessagesModel::sha256hash).toString();
QByteArray ciphertext = reply->readAll();
+ qDebug() << "Decrypting file...";
+
+
QByteArray decrypted = file_dec2(&m_cryptoManager, ciphertext, QByteArray::fromBase64(key.toUtf8(), QByteArray::Base64UrlEncoding), QByteArray::fromBase64(iv.toUtf8()));
QByteArray hash_of_ciphertext = QCryptographicHash::hash(ciphertext, QCryptographicHash::Sha256);
@@ -2241,12 +2253,15 @@
m_messages->setData(m_messages->index(i, 0), "Unable to decrypt file: hash mismatch", MessagesModel::content);
m_messages->setData(m_messages->index(i, 0), "Unable to decrypt file: hash mismatch", MessagesModel::orig_body);
+
+ qWarning() << "Unable to decrypt file: hash mismatch";
emit messagesChanged();
return;
}
ext = db.mimeTypeForName(m_messages->data(m_messages->index(i, 0), MessagesModel::mime_type).toString()).preferredSuffix();
+ qDebug() << "Extension:" << ext;
QString out_path(QStandardPaths::writableLocation(QStandardPaths::CacheLocation) + "/org.yeheng/sailtrix/files/" + hostname + "/" + media_id + "." + ext);
QFile output(out_path);
QDir output_dir(QStandardPaths::writableLocation(QStandardPaths::CacheLocation) + "/org.yeheng/sailtrix/files/" + hostname);
@@ -2355,6 +2370,7 @@
QString to_replace = m.captured();
new_string = orig.replace(to_replace, QStringLiteral("<a href=\"mailto:") + to_replace + QStringLiteral("\">") + to_replace + "</a>");
}
+
return new_string;
}
|
[-]
[+]
|
Changed |
_service:tar_git:harbour-sailtrix-1.3.7.1.tar.bz2/src/messagesmodel.cpp
^
|
@@ -26,6 +26,7 @@
list[timestamp] = "timestamp";
list[is_grouped] = "grouped";
list[is_event] = "is_event";
+ list[src] = "messageSrc";
return list;
|
[-]
[+]
|
Changed |
_service:tar_git:harbour-sailtrix-1.3.7.1.tar.bz2/src/messagesmodel.h
^
|
@@ -33,7 +33,8 @@
is_file,
timestamp,
is_grouped,
- is_event
+ is_event,
+ src
};
explicit MessagesModel(QObject * parent = 0): QStandardItemModel(parent) {}
|
[-]
[+]
|
Changed |
_service:tar_git:harbour-sailtrix-1.3.7.1.tar.bz2/src/picturedisplaybackend.cpp
^
|
@@ -25,9 +25,11 @@
void PictureDisplayBackend::load(QString mxc) {
QUrl mxc_url(mxc);
- QString out_path(QStandardPaths::writableLocation(QStandardPaths::CacheLocation) + "/org.yeheng/sailtrix/images/" + mxc_url.host());
+ QString out_path(QStandardPaths::writableLocation(QStandardPaths::CacheLocation) + "/org.yeheng/sailtrix/files/" + mxc_url.host());
if (QDir(out_path).exists()) {
for (QString str : QDir(out_path).entryList()) {
+ qDebug() << "Found possible image" << str;
+
if (str.startsWith(mxc_url.fileName() + ".")) {
p = out_path + "/" + str;
emit loaded();
|
[-]
[+]
|
Changed |
_service:tar_git:harbour-sailtrix-1.3.7.1.tar.bz2/src/rooms.cpp
^
|
@@ -22,7 +22,6 @@
QFile settings(QStandardPaths::writableLocation(QStandardPaths::ConfigLocation) + "/org.yeheng/sailtrix/settings.json");
if (settings.open(QFile::ReadOnly)) {
QJsonDocument doc = QJsonDocument::fromJson(settings.readAll());
- qDebug() << "Reloading:" << doc;
if (doc.object().value("sort_type").toInt() == 1) {
sort_by_alphabet = true;
}
@@ -53,7 +52,7 @@
}
}
-Rooms::Rooms() : m_rooms{ new RoomsModel }, m_direct_rooms { new QSortFilterProxyModel }, m_regular_rooms { new QSortFilterProxyModel }, m_invites { new QSortFilterProxyModel }, m_master_obj {new QJsonObject }, olm_sessions { new QJsonObject}, megolm_sessions {new QJsonObject} , m_reply { nullptr }, message_index { 0 }, get_all { false } , load_finished { false }, m_invite_total {0}, m_direct_total {0} {
+Rooms::Rooms() : m_rooms{ new RoomsModel }, m_direct_rooms { new QSortFilterProxyModel }, m_regular_rooms { new QSortFilterProxyModel }, m_invites { new QSortFilterProxyModel }, m_favorites { new QSortFilterProxyModel }, m_master_obj {new QJsonObject }, olm_sessions { new QJsonObject}, megolm_sessions {new QJsonObject} , m_reply { nullptr }, message_index { 0 }, get_all { false } , load_finished { false }, m_invite_total {0}, m_direct_total {0} {
bool sort_by_alphabet = false;
QFile settings(QStandardPaths::writableLocation(QStandardPaths::ConfigLocation) + "/org.yeheng/sailtrix/settings.json");
@@ -108,6 +107,15 @@
m_invites->sort(0);
m_invites->setSortCaseSensitivity(Qt::CaseInsensitive);
+ m_favorites->setSourceModel(m_rooms);
+ m_favorites->setFilterRole(RoomsModel::section_name);
+ m_favorites->setFilterKeyColumn(0);
+ m_favorites->setFilterFixedString(QStringLiteral("Favorites"));
+ m_favorites->setSortRole(RoomsModel::name);
+ m_favorites->sort(0);
+ m_favorites->setSortCaseSensitivity(Qt::CaseInsensitive);
+
+
connect(this, &Rooms::roomsChanged, this, &Rooms::onRoomsChanged);
};
@@ -115,8 +123,12 @@
emit directRoomsChanged();
emit regularRoomsChanged();
emit invitesChanged();
+ emit favoritesChanged();
}
+QSortFilterProxyModel* Rooms::favorites() {
+ return m_favorites;
+}
Rooms::~Rooms() {
qDebug() << "Deleting Rooms";
@@ -170,13 +182,13 @@
qDebug() << "Not Using Filter";
if (next_batch.isNull() || next_batch.isEmpty()) {
- return QUrl(hs_url + "/_matrix/client/r0/sync?filter={ \"account_data\": { \"types\" : [\"m.direct\",\"m.ignored_user_list\"] }, \"room\": { \"account_data\": { \"types\" : []}, \"state\": {\"lazy_load_members\": true, \"types\": [\"m.room.name\", \"m.room.avatar\", \"m.room.encrypted\",\"m.room.member\"] , \"limit\" : 1}, \"ephemeral\": { \"types\": [], \"limit\" : 1}, \"timeline\":{\"lazy_load_members\": true,\"types\":[\"m.room.message\",\"m.room.encrypted\"],\"limit\":1}}}&timeout=30000");
+ return QUrl(hs_url + "/_matrix/client/r0/sync?filter={ \"account_data\": { \"types\" : [\"m.direct\",\"m.ignored_user_list\"] }, \"room\": { \"account_data\": { \"types\" : [\"m.tag\"]}, \"state\": {\"lazy_load_members\": true, \"types\": [\"m.room.name\", \"m.room.avatar\", \"m.room.encrypted\",\"m.room.member\"] , \"limit\" : 1}, \"ephemeral\": { \"types\": [], \"limit\" : 1}, \"timeline\":{\"lazy_load_members\": true,\"types\":[\"m.room.message\",\"m.room.encrypted\"],\"limit\":1}}}&timeout=30000");
}
- return QUrl(hs_url + "/_matrix/client/r0/sync?filter={\"lazy_load_members\":true, \"account_data\": { \"types\" : [ \"m.direct\",\"m.ignored_user_list\"] }, \"room\": { \"account_data\": { \"types\" : []}, \"state\": { \"lazy_load_members\": true,\"types\": [\"m.room.name\", \"m.room.avatar\", \"m.room.encrypted\",\"m.room.member\"] , \"limit\" : 1}, \"ephemeral\": { \"types\": [], \"limit\" : 1}, \"timeline\":{\"lazy_load_members\": true,\"types\":[\"m.room.message\",\"m.room.encrypted\"],\"limit\":1}}}&since=" + next_batch + "&timeout=30000");
+ return QUrl(hs_url + "/_matrix/client/r0/sync?filter={\"lazy_load_members\":true, \"account_data\": { \"types\" : [ \"m.direct\",\"m.ignored_user_list\"] }, \"room\": { \"account_data\": { \"types\" : [\"m.tag\"]}, \"state\": { \"lazy_load_members\": true,\"types\": [\"m.room.name\", \"m.room.avatar\", \"m.room.encrypted\",\"m.room.member\"] , \"limit\" : 1}, \"ephemeral\": { \"types\": [], \"limit\" : 1}, \"timeline\":{\"lazy_load_members\": true,\"types\":[\"m.room.message\",\"m.room.encrypted\"],\"limit\":1}}}&since=" + next_batch + "&timeout=30000");
}
QString Rooms::get_filter_json() {
- return QString("{\"account_data\": { \"types\" : [\"m.direct\",\"m.ignored_user_list\"] }, \"room\": { \"account_data\": { \"types\" : []}, \"state\": {\"lazy_load_members\": true, \"types\": [\"m.room.name\", \"m.room.avatar\",\"m.room.member\"] , \"limit\" : 1}, \"ephemeral\": { \"types\": [], \"limit\" : 1}, \"timeline\":{\"lazy_load_members\": true, \"types\":[\"m.room.message\",\"m.room.encrypted\"],\"limit\":1}}}");
+ return QString("{\"account_data\": { \"types\" : [\"m.direct\",\"m.ignored_user_list\"] }, \"room\": { \"account_data\": { \"types\" : [\"m.tag\"]}, \"state\": {\"lazy_load_members\": true, \"types\": [\"m.room.name\", \"m.room.avatar\",\"m.room.member\"] , \"limit\" : 1}, \"ephemeral\": { \"types\": [], \"limit\" : 1}, \"timeline\":{\"lazy_load_members\": true, \"types\":[\"m.room.message\",\"m.room.encrypted\"],\"limit\":1}}}");
}
void Rooms::write_cache() {
@@ -213,7 +225,6 @@
uint8_t* otk_arr = (uint8_t*) malloc(olm_account_one_time_keys_length(account));
size_t otk_json_len = olm_account_one_time_keys(account, otk_arr, olm_account_one_time_keys_length(account));
QString otk_str = QString::fromUtf8((char*) otk_arr, otk_json_len);
- qDebug() << otk_str;
QJsonObject one_time_keys_obj;
QJsonDocument otk_doc = QJsonDocument::fromJson(otk_str.toUtf8());
@@ -295,11 +306,13 @@
key_uploader = new QNetworkAccessManager(this);
account_data_getter = new QNetworkAccessManager(this);
user_info_getter = new QNetworkAccessManager(this);
+ tagger = new QNetworkAccessManager(this);
connect(manager, &QNetworkAccessManager::finished, this, &Rooms::handleRooms);
connect(key_uploader, &QNetworkAccessManager::finished, this, &Rooms::uploadKeysDone);
connect(account_data_getter, &QNetworkAccessManager::finished, this, &Rooms::processAccountData);
connect(user_info_getter, &QNetworkAccessManager::finished, this, &Rooms::processUserInfo);
+ connect(tagger, &QNetworkAccessManager::finished, this, &Rooms::setTagDone);
m_local_key = get_key(&m_cryptoManager, file_key());
@@ -313,7 +326,6 @@
QByteArray decrypted = decrypt_bytes(&m_cryptoManager, m_local_key, pickle_file.readAll());
QJsonDocument pickle_doc = QJsonDocument::fromJson(decrypted);
QString pickle_str = pickle_doc.object().value("pickle").toString();
- qDebug() << pickle_str;
account = (OlmAccount*) malloc(olm_account_size());
account = olm_account(account);
@@ -411,7 +423,6 @@
QString type = reply->url().fileName();
if (type == QString("m.direct")) {
QJsonObject obj = QJsonDocument::fromJson(reply->readAll()).object();
- qDebug() << "Got m.direct:" << obj;
if (!obj.isEmpty()) {
QFile direct_file(QStandardPaths::writableLocation(QStandardPaths::CacheLocation) + "/org.yeheng/sailtrix/direct.json");
if (direct_file.open(QFile::WriteOnly)) {
@@ -444,9 +455,6 @@
QJsonObject leftRooms = rooms.value("leave").toObject();
QJsonObject inviteRooms = rooms.value("invite").toObject();
- qDebug() << "ROOMS" << rooms;
- qDebug() << "Left rooms:" << leftRooms;
-
next_batch = replyObj.value("next_batch").toString();
qDebug() << "Next batch:" << next_batch;
@@ -459,7 +467,6 @@
// save DMs
QJsonArray dms = replyObj.value("account_data").toObject().value("events").toArray();
- qDebug() << "Account data:" << dms;
bool dm_changed = false;
for (QJsonValue value : dms) {
@@ -667,6 +674,7 @@
item->setData(true, RoomsModel::is_invite);
m_rooms->insertRow(m_invite_total, item);
+ emit notifCountChanged();
m_invite_total++;
} else {
if (has_name) {
@@ -688,6 +696,8 @@
rooms_cache.insert(m_rooms->data(m_rooms->index(row,0), RoomsModel::roomId).toString(), thisRoom);
+ emit notifCountChanged();
+
++invite_index;
}
@@ -743,9 +753,7 @@
bool is_direct = false;
- //if (!has_name) {
int j = 0;
- qDebug() << "Value of DM_OBJ when Detecting DMs:" << dm_obj;
qDebug() << "I am looking for room id:" << room_id;
for (QJsonValue value : dm_obj) {
@@ -775,7 +783,6 @@
j++;
}
- //}
if (!has_name) {
room_name = "Unnamed room";
@@ -785,6 +792,32 @@
avatar_mxc_url = "image://theme/icon-m-chat";
}
+ int is_favorite = -1; // -1=Undeterminate 0=No 1=Yes
+
+ QJsonArray accountDataEvents = individualRoom.value("account_data").toObject().value("events").toArray();
+
+ qDebug() << "Receive accountDataEvents for room: " << room_name << "=" << accountDataEvents;
+
+ for (QJsonValue accountDataEvent : accountDataEvents) {
+ if (accountDataEvent.toObject().value("type").toString() == QStringLiteral("m.tag")) {
+ QJsonObject tags = accountDataEvent.toObject().value("content").toObject().value("tags").toObject();
+
+ bool found = false;
+
+ for (QString tag : tags.keys()) {
+ if (tag == QStringLiteral("m.favourite")) {
+ found = true;
+ }
+ }
+
+ if (found) {
+ is_favorite = 1;
+ } else {
+ is_favorite = 0;
+ }
+ }
+ }
+
QJsonObject latestMessage = individualRoom.value("timeline")
.toObject()
@@ -833,6 +866,8 @@
QString orig_mediaId = m_rooms->data(m_rooms->index(j,0), RoomsModel::mxcUrl).toString();
bool was_direct_invite = m_rooms->data(m_rooms->index(j, 0), RoomsModel::is_direct).toBool();
bool was_invite = m_rooms->data(m_rooms->index(j, 0), RoomsModel::is_invite).toBool();
+ bool was_favorite = m_rooms->data(m_rooms->index(j, 0), RoomsModel::section_name).toString() == QStringLiteral("Favorites");
+
m_rooms->setData(m_rooms->index(j, 0), room_name.isEmpty() || !has_preferred_name ? orig_name : room_name, RoomsModel::name);
m_rooms->setData(m_rooms->index(j, 0), lastest_msg_text, RoomsModel::firstMessage);
@@ -859,6 +894,18 @@
m_rooms->appendRow(row);
}
}
|
[-]
[+]
|
Changed |
_service:tar_git:harbour-sailtrix-1.3.7.1.tar.bz2/src/rooms.h
^
|
@@ -23,8 +23,11 @@
Q_PROPERTY(QSortFilterProxyModel* directRooms READ directRooms NOTIFY directRoomsChanged)
Q_PROPERTY(QSortFilterProxyModel* regularRooms READ regularRooms NOTIFY regularRoomsChanged)
Q_PROPERTY(QSortFilterProxyModel* invites READ invites NOTIFY invitesChanged)
+ Q_PROPERTY(QSortFilterProxyModel* favorites READ favorites NOTIFY favoritesChanged)
+
Q_PROPERTY(bool done READ done NOTIFY done_chg )
+ Q_PROPERTY(int notifCount READ notifCount NOTIFY notifCountChanged)
public:
Rooms();
@@ -35,6 +38,8 @@
QSortFilterProxyModel* directRooms();
QSortFilterProxyModel* regularRooms();
QSortFilterProxyModel* invites();
+ QSortFilterProxyModel* favorites();
+
void setRooms(RoomsModel* roomsModel);
Q_INVOKABLE void pause();
@@ -43,7 +48,11 @@
Q_INVOKABLE void mark_read(QString room_id);
Q_INVOKABLE QString get_name(QString room_id);
Q_INVOKABLE void reloadSettings();
+ Q_INVOKABLE void setFavorite(QString room_id);
+ Q_INVOKABLE void unFavorite(QString room_id);
bool done();
+ int notifCount();
+
signals:
void roomsChanged();
@@ -52,6 +61,8 @@
void directRoomsChanged();
void regularRoomsChanged();
void invitesChanged();
+ void notifCountChanged();
+ void favoritesChanged();
private:
QNetworkAccessManager* manager = nullptr;
QNetworkAccessManager* imageDownloader = nullptr;
@@ -60,10 +71,12 @@
QNetworkAccessManager* key_uploader = nullptr;
QNetworkAccessManager* account_data_getter = nullptr;
QNetworkAccessManager* user_info_getter = nullptr;
+ QNetworkAccessManager* tagger = nullptr;
RoomsModel* m_rooms = nullptr;
QSortFilterProxyModel* m_direct_rooms = nullptr;
QSortFilterProxyModel* m_regular_rooms = nullptr;
QSortFilterProxyModel* m_invites = nullptr;
+ QSortFilterProxyModel* m_favorites = nullptr;
QJsonObject* m_master_obj = nullptr;
QJsonObject* olm_sessions = nullptr;
@@ -104,6 +117,7 @@
void processAccountData(QNetworkReply* reply);
void processUserInfo(QNetworkReply* reply);
void onRoomsChanged();
+ void setTagDone(QNetworkReply* reply);
QUrl getUrl();
};
|
[-]
[+]
|
Added |
_service:tar_git:harbour-sailtrix-1.3.7.1.tar.bz2/translations/harbour-sailtrix-fr.ts
^
|
@@ -0,0 +1,551 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1">
+<context>
+ <name>CreateRoom</name>
+ <message>
+ <location filename="../qml/pages/CreateRoom.qml" line="50"/>
+ <source>Create Room</source>
+ <translation type="unfinished">Créer un salon</translation>
+ </message>
+ <message>
+ <location filename="../qml/pages/CreateRoom.qml" line="51"/>
+ <source>Create</source>
+ <translation type="unfinished">Créer</translation>
+ </message>
+ <message>
+ <location filename="../qml/pages/CreateRoom.qml" line="56"/>
+ <source>Visibility</source>
+ <translation type="unfinished">Visibilité</translation>
+ </message>
+ <message>
+ <location filename="../qml/pages/CreateRoom.qml" line="58"/>
+ <source>Private</source>
+ <translation type="unfinished">Privé</translation>
+ </message>
+ <message>
+ <location filename="../qml/pages/CreateRoom.qml" line="59"/>
+ <source>Public</source>
+ <translation type="unfinished">Public</translation>
+ </message>
+ <message>
+ <location filename="../qml/pages/CreateRoom.qml" line="70"/>
+ <location filename="../qml/pages/CreateRoom.qml" line="71"/>
+ <source>Name</source>
+ <translation type="unfinished">Nom</translation>
+ </message>
+ <message>
+ <location filename="../qml/pages/CreateRoom.qml" line="79"/>
+ <source>Topic</source>
+ <translation type="unfinished">Sujet</translation>
+ </message>
+ <message>
+ <location filename="../qml/pages/CreateRoom.qml" line="80"/>
+ <source>Topic (optional)</source>
+ <translation type="unfinished">Sujet (optional)</translation>
+ </message>
+ <message>
+ <location filename="../qml/pages/CreateRoom.qml" line="101"/>
+ <location filename="../qml/pages/CreateRoom.qml" line="102"/>
+ <source>Room alias</source>
+ <translation type="unfinished">Alias du salon</translation>
+ </message>
+ <message>
+ <location filename="../qml/pages/CreateRoom.qml" line="119"/>
+ <source>Enable end-to-end encryption</source>
+ <translation type="unfinished">Activer le chiffrement end-to-end</translation>
+ </message>
+ <message>
+ <location filename="../qml/pages/CreateRoom.qml" line="120"/>
+ <source>Bridges and most bots won't work yet.</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>Credits</name>
+ <message>
+ <location filename="../qml/pages/Credits.qml" line="10"/>
+ <source>Credits</source>
+ <translation type="unfinished">Crédits</translation>
+ </message>
+</context>
+<context>
+ <name>Invite</name>
+ <message>
+ <location filename="../qml/pages/Invite.qml" line="15"/>
+ <source>Invite</source>
+ <translation type="unfinished">Inviter</translation>
+ </message>
+ <message>
+ <location filename="../qml/pages/Invite.qml" line="35"/>
+ <source>You've been invited to</source>
+ <translation type="unfinished">On vous a invité à</translation>
+ </message>
+ <message>
+ <location filename="../qml/pages/Invite.qml" line="35"/>
+ <source> chat with</source>
+ <translation type="unfinished"> charrer avec</translation>
+ </message>
+ <message>
+ <location filename="../qml/pages/Invite.qml" line="51"/>
+ <source>Join</source>
+ <translation type="unfinished">Rejoindre</translation>
+ </message>
+ <message>
+ <location filename="../qml/pages/Invite.qml" line="65"/>
+ <source>Reject</source>
+ <translation type="unfinished">Rejeter</translation>
+ </message>
+</context>
+<context>
+ <name>JoinPublicRoom</name>
+ <message>
+ <location filename="../qml/pages/JoinPublicRoom.qml" line="19"/>
+ <source>Join Room</source>
+ <translation type="unfinished">Rejoindre le salon</translation>
+ </message>
+ <message>
+ <location filename="../qml/pages/JoinPublicRoom.qml" line="20"/>
+ <source>Join</source>
+ <translation type="unfinished">Rejoindre</translation>
+ </message>
+ <message>
+ <location filename="../qml/pages/JoinPublicRoom.qml" line="78"/>
+ <source> members</source>
+ <translation type="unfinished"> membres</translation>
+ </message>
+</context>
+<context>
+ <name>LoginDialog</name>
+ <message>
+ <location filename="../qml/pages/LoginDialog.qml" line="28"/>
+ <source>Login</source>
+ <translation type="unfinished">Identifiant</translation>
+ </message>
+ <message>
+ <location filename="../qml/pages/LoginDialog.qml" line="32"/>
+ <source>Homeserver</source>
+ <translation type="unfinished">Homeserver</translation>
+ </message>
+ <message>
+ <location filename="../qml/pages/LoginDialog.qml" line="33"/>
+ <source>Homeserver URL (matrix.org)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qml/pages/LoginDialog.qml" line="41"/>
+ <source>Username</source>
+ <translation type="unfinished">Nom d’utilisateur</translation>
+ </message>
+ <message>
+ <location filename="../qml/pages/LoginDialog.qml" line="42"/>
+ <source>Username (user1)</source>
+ <translation type="unfinished">Nom d’utilisateur (usagé1)</translation>
+ </message>
+ <message>
+ <location filename="../qml/pages/LoginDialog.qml" line="50"/>
+ <source>Password</source>
+ <translation type="unfinished">Mot de passe</translation>
+ </message>
+</context>
+<context>
+ <name>Messages</name>
+ <message>
+ <location filename="../qml/pages/Messages.qml" line="36"/>
+ <location filename="../qml/pages/Messages.qml" line="39"/>
+ <source>File saved</source>
+ <translation type="unfinished">Fichier enregistré</translation>
+ </message>
+ <message>
+ <location filename="../qml/pages/Messages.qml" line="37"/>
+ <source>File saved to Downloads directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qml/pages/Messages.qml" line="125"/>
+ <source>Copy</source>
+ <translation type="unfinished">Copier</translation>
+ </message>
+ <message>
+ <location filename="../qml/pages/Messages.qml" line="131"/>
+ <source>Reply</source>
+ <translation type="unfinished">Répondre</translation>
+ </message>
+ <message>
+ <location filename="../qml/pages/Messages.qml" line="134"/>
+ <source>Replying to </source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qml/pages/Messages.qml" line="147"/>
+ <source>Edit</source>
+ <translation type="unfinished">Modifier</translation>
+ </message>
+ <message>
+ <location filename="../qml/pages/Messages.qml" line="165"/>
+ <source>Delete</source>
+ <translation type="unfinished">Supprimer</translation>
+ </message>
+ <message>
+ <location filename="../qml/pages/Messages.qml" line="255"/>
+ <source>Download audio</source>
+ <translation type="unfinished">Télécharger audio</translation>
+ </message>
+ <message>
+ <location filename="../qml/pages/Messages.qml" line="287"/>
+ <location filename="../qml/pages/Messages.qml" line="307"/>
+ <source>View video</source>
+ <translation type="unfinished">Voir la vidéo</translation>
+ </message>
|
[-]
[+]
|
Changed |
_service:tar_git:harbour-sailtrix-1.3.7.1.tar.bz2/translations/harbour-sailtrix.ts
^
|
@@ -4,59 +4,59 @@
<context>
<name>CreateRoom</name>
<message>
- <location filename="../qml/pages/CreateRoom.qml" line="50"/>
+ <location filename="../qml/pages/CreateRoom.qml" line="52"/>
<source>Create Room</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../qml/pages/CreateRoom.qml" line="51"/>
+ <location filename="../qml/pages/CreateRoom.qml" line="53"/>
<source>Create</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../qml/pages/CreateRoom.qml" line="56"/>
+ <location filename="../qml/pages/CreateRoom.qml" line="58"/>
<source>Visibility</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../qml/pages/CreateRoom.qml" line="58"/>
+ <location filename="../qml/pages/CreateRoom.qml" line="60"/>
<source>Private</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../qml/pages/CreateRoom.qml" line="59"/>
+ <location filename="../qml/pages/CreateRoom.qml" line="61"/>
<source>Public</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../qml/pages/CreateRoom.qml" line="70"/>
- <location filename="../qml/pages/CreateRoom.qml" line="71"/>
+ <location filename="../qml/pages/CreateRoom.qml" line="72"/>
+ <location filename="../qml/pages/CreateRoom.qml" line="73"/>
<source>Name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../qml/pages/CreateRoom.qml" line="79"/>
+ <location filename="../qml/pages/CreateRoom.qml" line="81"/>
<source>Topic</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../qml/pages/CreateRoom.qml" line="80"/>
+ <location filename="../qml/pages/CreateRoom.qml" line="82"/>
<source>Topic (optional)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../qml/pages/CreateRoom.qml" line="101"/>
- <location filename="../qml/pages/CreateRoom.qml" line="102"/>
+ <location filename="../qml/pages/CreateRoom.qml" line="103"/>
+ <location filename="../qml/pages/CreateRoom.qml" line="104"/>
<source>Room alias</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../qml/pages/CreateRoom.qml" line="119"/>
+ <location filename="../qml/pages/CreateRoom.qml" line="121"/>
<source>Enable end-to-end encryption</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../qml/pages/CreateRoom.qml" line="120"/>
+ <location filename="../qml/pages/CreateRoom.qml" line="122"/>
<source>Bridges and most bots won't work yet.</source>
<translation type="unfinished"></translation>
</message>
@@ -116,6 +116,14 @@
</message>
</context>
<context>
+ <name>LoggedInCover</name>
+ <message>
+ <location filename="../qml/cover/LoggedInCover.qml" line="43"/>
+ <source> notifications</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
<name>LoginDialog</name>
<message>
<location filename="../qml/pages/LoginDialog.qml" line="28"/>
@@ -149,6 +157,14 @@
</message>
</context>
<context>
+ <name>MessageSource</name>
+ <message>
+ <location filename="../qml/pages/MessageSource.qml" line="16"/>
+ <source>View Source</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
<name>Messages</name>
<message>
<location filename="../qml/pages/Messages.qml" line="36"/>
@@ -183,62 +199,67 @@
</message>
<message>
<location filename="../qml/pages/Messages.qml" line="165"/>
+ <source>View Source</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qml/pages/Messages.qml" line="170"/>
<source>Delete</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../qml/pages/Messages.qml" line="255"/>
+ <location filename="../qml/pages/Messages.qml" line="260"/>
<source>Download audio</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../qml/pages/Messages.qml" line="287"/>
- <location filename="../qml/pages/Messages.qml" line="307"/>
+ <location filename="../qml/pages/Messages.qml" line="292"/>
+ <location filename="../qml/pages/Messages.qml" line="312"/>
<source>View video</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../qml/pages/Messages.qml" line="287"/>
+ <location filename="../qml/pages/Messages.qml" line="292"/>
<source>Download</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../qml/pages/Messages.qml" line="316"/>
+ <location filename="../qml/pages/Messages.qml" line="321"/>
<source>Download file</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../qml/pages/Messages.qml" line="409"/>
+ <location filename="../qml/pages/Messages.qml" line="414"/>
<source>Message</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../qml/pages/Messages.qml" line="410"/>
+ <location filename="../qml/pages/Messages.qml" line="415"/>
<source>Send message to room</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../qml/pages/Messages.qml" line="440"/>
+ <location filename="../qml/pages/Messages.qml" line="445"/>
<source>New Messages</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../qml/pages/Messages.qml" line="461"/>
+ <location filename="../qml/pages/Messages.qml" line="466"/>
<source>Send file</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/messages.cpp" line="1288"/>
+ <location filename="../src/messages.cpp" line="1294"/>
<source> invited </source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/messages.cpp" line="1292"/>
+ <location filename="../src/messages.cpp" line="1298"/>
<source> changed their profile</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../src/messages.cpp" line="1294"/>
+ <location filename="../src/messages.cpp" line="1300"/>
<source> joined</source>
<translation type="unfinished"></translation>
</message>
@@ -322,29 +343,57 @@
</message>
</context>
<context>
+ <name>Rooms</name>
+ <message>
+ <location filename="../qml/pages/Rooms.qml" line="74"/>
+ <source>No Favorites</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qml/pages/Rooms.qml" line="90"/>
+ <source>No Rooms</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../qml/pages/Rooms.qml" line="106"/>
|
[-]
[+]
|
Changed |
_service:tar_git:harbour-sailtrix.yaml
^
|
@@ -1,6 +1,6 @@
Name: harbour-sailtrix
Summary: Matrix client for SailfishOS
-Version: 1.3.6
+Version: 1.3.7.1
Release: 1
# The contents of the Group field should be one of the groups listed here:
# https://github.com/mer-tools/spectacle/blob/master/data/GROUPS
|