Home view, timeline view, user profile and notifications
This commit is contained in:
parent
d8b1341d78
commit
47a56a9580
23 changed files with 2881 additions and 288 deletions
|
@ -19,6 +19,11 @@ SOURCES += src/harbour-tooter.cpp
|
||||||
OTHER_FILES += qml/harbour-tooter.qml \
|
OTHER_FILES += qml/harbour-tooter.qml \
|
||||||
qml/cover/CoverPage.qml \
|
qml/cover/CoverPage.qml \
|
||||||
qml/pages/SecondPage.qml \
|
qml/pages/SecondPage.qml \
|
||||||
|
qml/pages/MainPage.qml \
|
||||||
|
qml/pages/LoginPage.qml \
|
||||||
|
qml/pages/components/MyList.qml \
|
||||||
|
qml/pages/components/JSONListModel.qml \
|
||||||
|
qml/pages/components/Navigation.qml \
|
||||||
rpm/harbour-tooter.changes.in \
|
rpm/harbour-tooter.changes.in \
|
||||||
rpm/harbour-tooter.spec \
|
rpm/harbour-tooter.spec \
|
||||||
rpm/harbour-tooter.yaml \
|
rpm/harbour-tooter.yaml \
|
||||||
|
@ -39,7 +44,16 @@ TRANSLATIONS += translations/harbour-tooter-de.ts
|
||||||
|
|
||||||
DISTFILES += \
|
DISTFILES += \
|
||||||
qml/lib/API.js \
|
qml/lib/API.js \
|
||||||
qml/pages/MainPage.qml \
|
qml/lib/jsonpath.js \
|
||||||
qml/pages/LoginPage.qml \
|
qml/images/notification.svg \
|
||||||
qml/pages/JSONListModel.qml \
|
qml/images/home.svg \
|
||||||
qml/lib/jsonpath.js
|
qml/images/mesagess.svg \
|
||||||
|
qml/images/search.svg \
|
||||||
|
qml/images/verified.svg \
|
||||||
|
qml/lib/Mastodon.js \
|
||||||
|
qml/lib/Worker.js \
|
||||||
|
qml/pages/components/Toot.qml \
|
||||||
|
qml/pages/Browser.qml \
|
||||||
|
qml/pages/Profile.qml \
|
||||||
|
qml/pages/components/ProfileHeader.qml \
|
||||||
|
qml/pages/components/Notification.qml
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<!DOCTYPE QtCreatorProject>
|
<!DOCTYPE QtCreatorProject>
|
||||||
<!-- Written by QtCreator 4.0.1, 2017-06-02T15:45:28. -->
|
<!-- Written by QtCreator 4.0.1, 2017-06-07T07:55:20. -->
|
||||||
<qtcreator>
|
<qtcreator>
|
||||||
<data>
|
<data>
|
||||||
<variable>EnvironmentId</variable>
|
<variable>EnvironmentId</variable>
|
||||||
<value type="QByteArray">{25497605-1bff-4134-a878-76c1475dd8e3}</value>
|
<value type="QByteArray">{41ec03ca-9430-48f3-b421-990d428b2838}</value>
|
||||||
</data>
|
</data>
|
||||||
<data>
|
<data>
|
||||||
<variable>ProjectExplorer.Project.ActiveTarget</variable>
|
<variable>ProjectExplorer.Project.ActiveTarget</variable>
|
||||||
|
@ -61,12 +61,12 @@
|
||||||
<valuemap type="QVariantMap">
|
<valuemap type="QVariantMap">
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">MerSDK-SailfishOS-i486</value>
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">MerSDK-SailfishOS-i486</value>
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">MerSDK-SailfishOS-i486</value>
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">MerSDK-SailfishOS-i486</value>
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">{f49c1b5a-d715-401a-9a10-0e5fe9e5b72a}</value>
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">{fd18ca89-dfc9-4054-9c53-c67be7689951}</value>
|
||||||
<value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
|
<value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
|
||||||
<value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">2</value>
|
<value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">2</value>
|
||||||
<value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
|
<value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
|
||||||
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
|
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
|
||||||
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">C:/Users/dysko/SF/build-harbour-tooter-MerSDK_SailfishOS_i486-Debug</value>
|
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/Users/dysko/GIT/build-harbour-tooter-MerSDK_SailfishOS_i486-Debug</value>
|
||||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
|
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
|
||||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
|
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
|
||||||
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||||
|
@ -138,7 +138,7 @@
|
||||||
<value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
|
<value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
|
||||||
</valuemap>
|
</valuemap>
|
||||||
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
|
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
|
||||||
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">C:/Users/dysko/SF/build-harbour-tooter-MerSDK_SailfishOS_i486-Release</value>
|
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/Users/dysko/GIT/build-harbour-tooter-MerSDK_SailfishOS_i486-Release</value>
|
||||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
|
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
|
||||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
|
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
|
||||||
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||||
|
@ -210,7 +210,7 @@
|
||||||
<value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
|
<value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
|
||||||
</valuemap>
|
</valuemap>
|
||||||
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.2">
|
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.2">
|
||||||
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">C:/Users/dysko/SF/build-harbour-tooter-MerSDK_SailfishOS_i486-Profile</value>
|
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/Users/dysko/GIT/build-harbour-tooter-MerSDK_SailfishOS_i486-Profile</value>
|
||||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
|
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
|
||||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
|
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
|
||||||
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||||
|
@ -396,7 +396,7 @@
|
||||||
<value type="int">13</value>
|
<value type="int">13</value>
|
||||||
<value type="int">14</value>
|
<value type="int">14</value>
|
||||||
</valuelist>
|
</valuelist>
|
||||||
<value type="QString" key="MerRunConfiguration.QmlLiveBenchWorkspace">C:/Users/dysko/SF/harbour-tooter</value>
|
<value type="QString" key="MerRunConfiguration.QmlLiveBenchWorkspace">/Users/dysko/GIT/harbour-tooter</value>
|
||||||
<value type="bool" key="MerRunConfiguration.QmlLiveEnabled">false</value>
|
<value type="bool" key="MerRunConfiguration.QmlLiveEnabled">false</value>
|
||||||
<value type="int" key="MerRunConfiguration.QmlLiveIpcPort">10234</value>
|
<value type="int" key="MerRunConfiguration.QmlLiveIpcPort">10234</value>
|
||||||
<value type="int" key="MerRunConfiguration.QmlLiveOptions">3</value>
|
<value type="int" key="MerRunConfiguration.QmlLiveOptions">3</value>
|
||||||
|
@ -426,12 +426,12 @@
|
||||||
<valuemap type="QVariantMap">
|
<valuemap type="QVariantMap">
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">MerSDK-SailfishOS-armv7hl</value>
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">MerSDK-SailfishOS-armv7hl</value>
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">MerSDK-SailfishOS-armv7hl</value>
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">MerSDK-SailfishOS-armv7hl</value>
|
||||||
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">{588087e2-ecc1-41aa-b652-86f16cba9351}</value>
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">{f895389d-b51a-4d4f-8b03-5ec64bda6f66}</value>
|
||||||
<value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
|
<value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
|
||||||
<value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">2</value>
|
<value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">2</value>
|
||||||
<value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
|
<value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
|
||||||
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
|
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
|
||||||
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">C:/Users/dysko/SF/build-harbour-tooter-MerSDK_SailfishOS_armv7hl-Debug</value>
|
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/Users/dysko/GIT/build-harbour-tooter-MerSDK_SailfishOS_armv7hl-Debug</value>
|
||||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
|
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
|
||||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
|
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
|
||||||
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||||
|
@ -503,7 +503,7 @@
|
||||||
<value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
|
<value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
|
||||||
</valuemap>
|
</valuemap>
|
||||||
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
|
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
|
||||||
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">C:/Users/dysko/SF/build-harbour-tooter-MerSDK_SailfishOS_armv7hl-Release</value>
|
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/Users/dysko/GIT/build-harbour-tooter-MerSDK_SailfishOS_armv7hl-Release</value>
|
||||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
|
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
|
||||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
|
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
|
||||||
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||||
|
@ -575,7 +575,7 @@
|
||||||
<value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
|
<value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
|
||||||
</valuemap>
|
</valuemap>
|
||||||
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.2">
|
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.2">
|
||||||
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">C:/Users/dysko/SF/build-harbour-tooter-MerSDK_SailfishOS_armv7hl-Profile</value>
|
<value type="QString" key="ProjectExplorer.BuildConfiguration.BuildDirectory">/Users/dysko/GIT/build-harbour-tooter-MerSDK_SailfishOS_armv7hl-Profile</value>
|
||||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
|
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
|
||||||
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
|
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
|
||||||
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||||
|
@ -761,7 +761,7 @@
|
||||||
<value type="int">13</value>
|
<value type="int">13</value>
|
||||||
<value type="int">14</value>
|
<value type="int">14</value>
|
||||||
</valuelist>
|
</valuelist>
|
||||||
<value type="QString" key="MerRunConfiguration.QmlLiveBenchWorkspace">C:/Users/dysko/SF/harbour-tooter</value>
|
<value type="QString" key="MerRunConfiguration.QmlLiveBenchWorkspace">/Users/dysko/GIT/harbour-tooter</value>
|
||||||
<value type="bool" key="MerRunConfiguration.QmlLiveEnabled">false</value>
|
<value type="bool" key="MerRunConfiguration.QmlLiveEnabled">false</value>
|
||||||
<value type="int" key="MerRunConfiguration.QmlLiveIpcPort">10234</value>
|
<value type="int" key="MerRunConfiguration.QmlLiveIpcPort">10234</value>
|
||||||
<value type="int" key="MerRunConfiguration.QmlLiveOptions">3</value>
|
<value type="int" key="MerRunConfiguration.QmlLiveOptions">3</value>
|
||||||
|
@ -779,7 +779,7 @@
|
||||||
<value type="uint" key="RunConfiguration.QmlDebugServerPort">3768</value>
|
<value type="uint" key="RunConfiguration.QmlDebugServerPort">3768</value>
|
||||||
<value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
|
<value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
|
||||||
<value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
|
<value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
|
||||||
<value type="bool" key="RunConfiguration.UseMultiProcess">false</value>
|
<value type="bool" key="RunConfiguration.UseMultiProcess">true</value>
|
||||||
<value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
|
<value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
|
||||||
<value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
|
<value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
|
||||||
</valuemap>
|
</valuemap>
|
||||||
|
|
801
harbour-tooter.pro.user.2549760
Normal file
801
harbour-tooter.pro.user.2549760
Normal file
|
@ -0,0 +1,801 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE QtCreatorProject>
|
||||||
|
<!-- Written by QtCreator 4.0.1, 2017-06-02T15:45:28. -->
|
||||||
|
<qtcreator>
|
||||||
|
<data>
|
||||||
|
<variable>EnvironmentId</variable>
|
||||||
|
<value type="QByteArray">{25497605-1bff-4134-a878-76c1475dd8e3}</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"/>
|
||||||
|
</data>
|
||||||
|
<data>
|
||||||
|
<variable>ProjectExplorer.Project.Target.0</variable>
|
||||||
|
<valuemap type="QVariantMap">
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">MerSDK-SailfishOS-i486</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">MerSDK-SailfishOS-i486</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">{f49c1b5a-d715-401a-9a10-0e5fe9e5b72a}</value>
|
||||||
|
<value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
|
||||||
|
<value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">2</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">C:/Users/dysko/SF/build-harbour-tooter-MerSDK_SailfishOS_i486-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">Start SDK</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></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.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.2">
|
||||||
|
<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.AutomaticallyAddedMakeArguments">
|
||||||
|
<value type="QString">-w</value>
|
||||||
|
<value type="QString">-r</value>
|
||||||
|
</valuelist>
|
||||||
|
<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>
|
||||||
|
</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"></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">Start SDK</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></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.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.AutomaticallyAddedMakeArguments">
|
||||||
|
<value type="QString">-w</value>
|
||||||
|
<value type="QString">-r</value>
|
||||||
|
</valuelist>
|
||||||
|
<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>
|
||||||
|
</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"></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"></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">C:/Users/dysko/SF/build-harbour-tooter-MerSDK_SailfishOS_i486-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">Start SDK</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></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.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.2">
|
||||||
|
<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.AutomaticallyAddedMakeArguments">
|
||||||
|
<value type="QString">-w</value>
|
||||||
|
<value type="QString">-r</value>
|
||||||
|
</valuelist>
|
||||||
|
<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>
|
||||||
|
</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"></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">Start SDK</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></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.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.AutomaticallyAddedMakeArguments">
|
||||||
|
<value type="QString">-w</value>
|
||||||
|
<value type="QString">-r</value>
|
||||||
|
</valuelist>
|
||||||
|
<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>
|
||||||
|
</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"></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"></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">C:/Users/dysko/SF/build-harbour-tooter-MerSDK_SailfishOS_i486-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">Start SDK</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></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.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">false</value>
|
||||||
|
</valuemap>
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.2">
|
||||||
|
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">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.AutomaticallyAddedMakeArguments">
|
||||||
|
<value type="QString">-w</value>
|
||||||
|
<value type="QString">-r</value>
|
||||||
|
</valuelist>
|
||||||
|
<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>
|
||||||
|
</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"></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">Start SDK</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></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.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.AutomaticallyAddedMakeArguments">
|
||||||
|
<value type="QString">-w</value>
|
||||||
|
<value type="QString">-r</value>
|
||||||
|
</valuelist>
|
||||||
|
<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>
|
||||||
|
</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"></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"></value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
|
||||||
|
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
|
||||||
|
<value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
|
||||||
|
</valuemap>
|
||||||
|
<value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">3</value>
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
|
||||||
|
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">RPM</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QmakeProjectManager.MerRpmBuildStep</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">RPM Validation</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QmakeProjectManager.MerRpmValidationStep</value>
|
||||||
|
</valuemap>
|
||||||
|
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
|
||||||
|
</valuemap>
|
||||||
|
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy By Building An RPM Package</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QmakeProjectManager.MerMb2RpmBuildConfiguration</value>
|
||||||
|
</valuemap>
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.1">
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
|
||||||
|
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Prepare Target</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QmakeProjectManager.MerPrepareTargetStep</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">Rsync</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QmakeProjectManager.MerRsyncDeployStep</value>
|
||||||
|
</valuemap>
|
||||||
|
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
|
||||||
|
</valuemap>
|
||||||
|
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy By Copying Binaries</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QmakeProjectManager.MerRSyncDeployConfiguration</value>
|
||||||
|
</valuemap>
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.2">
|
||||||
|
<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">Prepare Target</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QmakeProjectManager.MerPrepareTargetStep</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">RPM</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QmakeProjectManager.MerRpmDeployStep</value>
|
||||||
|
</valuemap>
|
||||||
|
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
|
||||||
|
</valuemap>
|
||||||
|
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy As RPM Package</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QmakeProjectManager.MerRpmDeployConfiguration</value>
|
||||||
|
</valuemap>
|
||||||
|
<value type="int" key="ProjectExplorer.Target.DeployConfigurationCount">3</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="QString" key="MerRunConfiguration.QmlLiveBenchWorkspace">C:/Users/dysko/SF/harbour-tooter</value>
|
||||||
|
<value type="bool" key="MerRunConfiguration.QmlLiveEnabled">false</value>
|
||||||
|
<value type="int" key="MerRunConfiguration.QmlLiveIpcPort">10234</value>
|
||||||
|
<value type="int" key="MerRunConfiguration.QmlLiveOptions">3</value>
|
||||||
|
<value type="QString" key="MerRunConfiguration.QmlLiveTargetWorkspace"></value>
|
||||||
|
<value type="int" key="PE.EnvironmentAspect.Base">1</value>
|
||||||
|
<valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">harbour-tooter (on Remote Device)</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QmakeProjectManager.MerRunConfiguration:harbour-tooter</value>
|
||||||
|
<value type="QString" key="Qt4ProjectManager.MaemoRunConfiguration.Arguments"></value>
|
||||||
|
<value type="QString" key="Qt4ProjectManager.MaemoRunConfiguration.TargetName">harbour-tooter</value>
|
||||||
|
<value type="QString" key="RemoteLinux.RunConfig.AlternateRemoteExecutable"></value>
|
||||||
|
<value type="bool" key="RemoteLinux.RunConfig.UseAlternateRemoteExecutable">false</value>
|
||||||
|
<value type="QString" key="RemoteLinux.RunConfig.WorkingDirectory"></value>
|
||||||
|
<value type="uint" key="RunConfiguration.QmlDebugServerPort">3768</value>
|
||||||
|
<value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
|
||||||
|
<value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
|
||||||
|
<value type="bool" key="RunConfiguration.UseMultiProcess">false</value>
|
||||||
|
<value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
|
||||||
|
<value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
|
||||||
|
</valuemap>
|
||||||
|
<value type="int" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
|
||||||
|
</valuemap>
|
||||||
|
</data>
|
||||||
|
<data>
|
||||||
|
<variable>ProjectExplorer.Project.Target.1</variable>
|
||||||
|
<valuemap type="QVariantMap">
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">MerSDK-SailfishOS-armv7hl</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">MerSDK-SailfishOS-armv7hl</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">{588087e2-ecc1-41aa-b652-86f16cba9351}</value>
|
||||||
|
<value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
|
||||||
|
<value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">2</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">C:/Users/dysko/SF/build-harbour-tooter-MerSDK_SailfishOS_armv7hl-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">Start SDK</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></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.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.2">
|
||||||
|
<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.AutomaticallyAddedMakeArguments">
|
||||||
|
<value type="QString">-w</value>
|
||||||
|
<value type="QString">-r</value>
|
||||||
|
</valuelist>
|
||||||
|
<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>
|
||||||
|
</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"></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">Start SDK</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></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.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.AutomaticallyAddedMakeArguments">
|
||||||
|
<value type="QString">-w</value>
|
||||||
|
<value type="QString">-r</value>
|
||||||
|
</valuelist>
|
||||||
|
<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>
|
||||||
|
</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"></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"></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">C:/Users/dysko/SF/build-harbour-tooter-MerSDK_SailfishOS_armv7hl-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">Start SDK</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></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.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.2">
|
||||||
|
<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.AutomaticallyAddedMakeArguments">
|
||||||
|
<value type="QString">-w</value>
|
||||||
|
<value type="QString">-r</value>
|
||||||
|
</valuelist>
|
||||||
|
<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>
|
||||||
|
</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"></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">Start SDK</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></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.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.AutomaticallyAddedMakeArguments">
|
||||||
|
<value type="QString">-w</value>
|
||||||
|
<value type="QString">-r</value>
|
||||||
|
</valuelist>
|
||||||
|
<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>
|
||||||
|
</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"></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"></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">C:/Users/dysko/SF/build-harbour-tooter-MerSDK_SailfishOS_armv7hl-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">Start SDK</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></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.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">false</value>
|
||||||
|
</valuemap>
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.2">
|
||||||
|
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">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.AutomaticallyAddedMakeArguments">
|
||||||
|
<value type="QString">-w</value>
|
||||||
|
<value type="QString">-r</value>
|
||||||
|
</valuelist>
|
||||||
|
<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>
|
||||||
|
</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"></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">Start SDK</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></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.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.AutomaticallyAddedMakeArguments">
|
||||||
|
<value type="QString">-w</value>
|
||||||
|
<value type="QString">-r</value>
|
||||||
|
</valuelist>
|
||||||
|
<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>
|
||||||
|
</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"></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"></value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
|
||||||
|
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
|
||||||
|
<value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
|
||||||
|
</valuemap>
|
||||||
|
<value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">3</value>
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
|
||||||
|
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">RPM</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QmakeProjectManager.MerRpmBuildStep</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">RPM Validation</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QmakeProjectManager.MerRpmValidationStep</value>
|
||||||
|
</valuemap>
|
||||||
|
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
|
||||||
|
</valuemap>
|
||||||
|
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy By Building An RPM Package</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QmakeProjectManager.MerMb2RpmBuildConfiguration</value>
|
||||||
|
</valuemap>
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.1">
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
|
||||||
|
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Prepare Target</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QmakeProjectManager.MerPrepareTargetStep</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">Rsync</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QmakeProjectManager.MerRsyncDeployStep</value>
|
||||||
|
</valuemap>
|
||||||
|
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
|
||||||
|
</valuemap>
|
||||||
|
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy By Copying Binaries</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QmakeProjectManager.MerRSyncDeployConfiguration</value>
|
||||||
|
</valuemap>
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.2">
|
||||||
|
<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">Prepare Target</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QmakeProjectManager.MerPrepareTargetStep</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">RPM</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QmakeProjectManager.MerRpmDeployStep</value>
|
||||||
|
</valuemap>
|
||||||
|
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
|
||||||
|
</valuemap>
|
||||||
|
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Deploy As RPM Package</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QmakeProjectManager.MerRpmDeployConfiguration</value>
|
||||||
|
</valuemap>
|
||||||
|
<value type="int" key="ProjectExplorer.Target.DeployConfigurationCount">3</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="QString" key="MerRunConfiguration.QmlLiveBenchWorkspace">C:/Users/dysko/SF/harbour-tooter</value>
|
||||||
|
<value type="bool" key="MerRunConfiguration.QmlLiveEnabled">false</value>
|
||||||
|
<value type="int" key="MerRunConfiguration.QmlLiveIpcPort">10234</value>
|
||||||
|
<value type="int" key="MerRunConfiguration.QmlLiveOptions">3</value>
|
||||||
|
<value type="QString" key="MerRunConfiguration.QmlLiveTargetWorkspace"></value>
|
||||||
|
<value type="int" key="PE.EnvironmentAspect.Base">1</value>
|
||||||
|
<valuelist type="QVariantList" key="PE.EnvironmentAspect.Changes"/>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">harbour-tooter (on Remote Device)</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QmakeProjectManager.MerRunConfiguration:harbour-tooter</value>
|
||||||
|
<value type="QString" key="Qt4ProjectManager.MaemoRunConfiguration.Arguments"></value>
|
||||||
|
<value type="QString" key="Qt4ProjectManager.MaemoRunConfiguration.TargetName">harbour-tooter</value>
|
||||||
|
<value type="QString" key="RemoteLinux.RunConfig.AlternateRemoteExecutable"></value>
|
||||||
|
<value type="bool" key="RemoteLinux.RunConfig.UseAlternateRemoteExecutable">false</value>
|
||||||
|
<value type="QString" key="RemoteLinux.RunConfig.WorkingDirectory"></value>
|
||||||
|
<value type="uint" key="RunConfiguration.QmlDebugServerPort">3768</value>
|
||||||
|
<value type="bool" key="RunConfiguration.UseCppDebugger">false</value>
|
||||||
|
<value type="bool" key="RunConfiguration.UseCppDebuggerAuto">true</value>
|
||||||
|
<value type="bool" key="RunConfiguration.UseMultiProcess">false</value>
|
||||||
|
<value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
|
||||||
|
<value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
|
||||||
|
</valuemap>
|
||||||
|
<value type="int" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
|
||||||
|
</valuemap>
|
||||||
|
</data>
|
||||||
|
<data>
|
||||||
|
<variable>ProjectExplorer.Project.TargetCount</variable>
|
||||||
|
<value type="int">2</value>
|
||||||
|
</data>
|
||||||
|
<data>
|
||||||
|
<variable>ProjectExplorer.Project.Updater.FileVersion</variable>
|
||||||
|
<value type="int">18</value>
|
||||||
|
</data>
|
||||||
|
<data>
|
||||||
|
<variable>Version</variable>
|
||||||
|
<value type="int">18</value>
|
||||||
|
</data>
|
||||||
|
</qtcreator>
|
|
@ -45,7 +45,7 @@ CoverBackground {
|
||||||
CoverAction {
|
CoverAction {
|
||||||
iconSource: "image://theme/icon-cover-next"
|
iconSource: "image://theme/icon-cover-next"
|
||||||
onTriggered: {
|
onTriggered: {
|
||||||
label.text = Logic.test
|
label.text = Logic.modelTLhome.count
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
32
qml/images/home.svg
Normal file
32
qml/images/home.svg
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||||
|
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||||
|
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||||
|
width="48px" height="48px" viewBox="0 0 48 48" enable-background="new 0 0 48 48" xml:space="preserve">
|
||||||
|
<g>
|
||||||
|
<path fill="none" stroke="#FFFFFF" stroke-width="2.2" stroke-miterlimit="10" stroke-opacity="0.9" d="M45.45,22.493
|
||||||
|
c0.311,0.208,0.521,0.468,0.623,0.779c0.104,0.312,0.172,0.623,0.206,0.938c0.035,0.311-0.008,0.631-0.13,0.959
|
||||||
|
c-0.12,0.329-0.283,0.617-0.493,0.858c-0.175,0.139-0.319,0.25-0.44,0.338c-0.123,0.086-0.271,0.165-0.44,0.232
|
||||||
|
c-0.176,0.071-0.339,0.121-0.494,0.156c-0.157,0.035-0.339,0.053-0.546,0.053c-0.105,0-0.244-0.009-0.417-0.027
|
||||||
|
c-0.173-0.016-0.319-0.061-0.442-0.13c-0.123-0.07-0.26-0.138-0.416-0.207c-0.154-0.068-0.268-0.173-0.336-0.312l-1.455-1.301
|
||||||
|
l-4.625,17.876c-0.103,0.279-0.227,0.533-0.364,0.757c-0.14,0.225-0.32,0.415-0.546,0.571c-0.225,0.154-0.459,0.284-0.701,0.39
|
||||||
|
c-0.243,0.104-0.52,0.157-0.831,0.157H14.422c-0.313,0-0.592-0.055-0.832-0.157c-0.244-0.104-0.486-0.234-0.729-0.39
|
||||||
|
c-0.241-0.156-0.424-0.348-0.546-0.571s-0.253-0.478-0.389-0.757L7.35,24.83l-1.453,1.301c-0.209,0.242-0.477,0.424-0.805,0.544
|
||||||
|
c-0.331,0.123-0.652,0.174-0.961,0.156c-0.313-0.019-0.625-0.093-0.938-0.233c-0.31-0.138-0.571-0.328-0.778-0.57
|
||||||
|
c-0.277-0.241-0.459-0.529-0.545-0.858c-0.088-0.328-0.141-0.649-0.158-0.959c-0.017-0.313,0.055-0.625,0.209-0.938
|
||||||
|
c0.156-0.312,0.34-0.57,0.547-0.779L22.321,4.095c0.207-0.243,0.469-0.417,0.779-0.52c0.313-0.104,0.615-0.156,0.908-0.156
|
||||||
|
s0.602,0.052,0.913,0.156c0.312,0.104,0.572,0.276,0.776,0.52L45.45,22.493L45.45,22.493z"/>
|
||||||
|
<path opacity="0.4" fill="#FFFFFF" d="M23.834,25.396c0.727,0.034,1.385-0.095,1.975-0.389c0.588-0.295,1.117-0.658,1.584-1.092
|
||||||
|
c0.468-0.434,0.833-0.962,1.09-1.584c0.262-0.625,0.409-1.266,0.443-1.923c-0.034-0.729-0.182-1.388-0.443-1.976
|
||||||
|
c-0.257-0.589-0.622-1.118-1.09-1.586c-0.467-0.468-0.996-0.831-1.584-1.09c-0.59-0.261-1.248-0.408-1.975-0.442
|
||||||
|
c-0.658,0.034-1.301,0.182-1.924,0.442c-0.623,0.259-1.162,0.622-1.609,1.09c-0.452,0.468-0.816,0.997-1.096,1.586
|
||||||
|
c-0.274,0.588-0.396,1.246-0.361,1.976c-0.035,0.657,0.087,1.298,0.361,1.923c0.278,0.622,0.644,1.15,1.096,1.584
|
||||||
|
c0.447,0.435,0.986,0.797,1.609,1.092C22.536,25.301,23.176,25.43,23.834,25.396z"/>
|
||||||
|
<path opacity="0.4" fill="#FFFFFF" d="M23.886,35.479c0.311-0.032,0.625-0.112,0.935-0.231c0.313-0.123,0.58-0.307,0.807-0.549
|
||||||
|
s0.406-0.51,0.545-0.804s0.19-0.632,0.154-1.013c0.036-0.278-0.017-0.583-0.154-0.911c-0.139-0.328-0.318-0.599-0.545-0.805
|
||||||
|
c-0.227-0.21-0.494-0.394-0.807-0.547c-0.311-0.157-0.625-0.217-0.935-0.184c-0.384-0.033-0.72,0.025-1.013,0.184
|
||||||
|
c-0.297,0.153-0.564,0.337-0.808,0.547c-0.241,0.206-0.415,0.468-0.521,0.776c-0.104,0.313-0.174,0.625-0.209,0.938
|
||||||
|
c0.035,0.347,0.105,0.676,0.209,0.987c0.104,0.309,0.279,0.578,0.521,0.805c0.242,0.223,0.511,0.406,0.808,0.547
|
||||||
|
c0.293,0.138,0.629,0.205,1.013,0.205V35.479z"/>
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 3.1 KiB |
17
qml/images/mesagess.svg
Normal file
17
qml/images/mesagess.svg
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||||
|
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||||
|
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||||
|
width="48px" height="48px" viewBox="0 0 48 48" enable-background="new 0 0 48 48" xml:space="preserve">
|
||||||
|
<path fill="none" stroke="#FFFFFF" stroke-width="2.2" stroke-linejoin="round" stroke-opacity="0.9" enable-background="new " d="
|
||||||
|
M25.6,24.084L45.965,7.673c0,0.065,0.008,0.1,0.023,0.1c0.018,0,0.025,0.034,0.025,0.101v0.1v21.364c0,0.635-0.117,1.2-0.353,1.7
|
||||||
|
c-0.229,0.501-0.539,0.959-0.925,1.377c-0.385,0.416-0.842,0.726-1.375,0.925c-0.534,0.2-1.102,0.316-1.702,0.35l-24.464-0.049
|
||||||
|
L6.338,43.745c-0.1,0.101-0.225,0.2-0.374,0.299c-0.151,0.103-0.302,0.169-0.451,0.202c-0.15,0.033-0.301,0.074-0.45,0.124
|
||||||
|
c-0.15,0.052-0.309,0.06-0.476,0.024c-0.067,0.035-0.15,0.043-0.25,0.026c-0.1-0.019-0.191-0.026-0.275-0.026
|
||||||
|
c-0.083,0-0.167-0.024-0.251-0.074c-0.083-0.049-0.157-0.074-0.225-0.074c-0.233-0.135-0.45-0.276-0.65-0.426
|
||||||
|
c-0.2-0.15-0.366-0.334-0.499-0.551c-0.135-0.217-0.234-0.439-0.302-0.674c-0.065-0.234-0.1-0.484-0.1-0.752l-0.05-10.556V7.922
|
||||||
|
v-0.1l0.05-0.1l20.362,16.361c0,0,0.676,0.703,1.602,0.703C24.926,24.787,25.6,24.084,25.6,24.084z"/>
|
||||||
|
<path fill="#FFFFFF" fill-opacity="0.4" d="M24,18.779L5.289,3.72c0.066-0.034,0.149-0.059,0.249-0.075
|
||||||
|
c0.1-0.017,0.192-0.034,0.275-0.051C5.897,3.578,5.981,3.57,6.064,3.57s0.175,0,0.274,0H41.66c0.102,0,0.193,0,0.275,0
|
||||||
|
c0.084,0,0.168,0.008,0.25,0.023c0.084,0.018,0.176,0.034,0.274,0.051c0.103,0.017,0.187,0.041,0.252,0.075L24,18.779z"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 1.7 KiB |
13
qml/images/notification.svg
Normal file
13
qml/images/notification.svg
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||||
|
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||||
|
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||||
|
viewBox="0 0 48 48" enable-background="new 0 0 48 48" xml:space="preserve">
|
||||||
|
<g>
|
||||||
|
<path fill="none" stroke="#FFFFFF" stroke-width="2.2" stroke-linecap="round" stroke-miterlimit="10" d="M19.6,45
|
||||||
|
C20.2,31.5-7,22.5,7.1,7.6H7C21.6-6.8,31.2,20.2,44.7,19.3"/>
|
||||||
|
|
||||||
|
<path opacity="0.4" fill="none" stroke="#FFFFFF" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" enable-background="new " d="
|
||||||
|
M44.7,19.3L36.3,28c2.3,2.3,2.3,6,0,8.4c-2.3,2.4-6,2.3-8.4,0L19.5,45"/>
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 875 B |
14
qml/images/search.svg
Normal file
14
qml/images/search.svg
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||||
|
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||||
|
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||||
|
width="64px" height="64px" viewBox="0 0 64 64" enable-background="new 0 0 64 64" xml:space="preserve">
|
||||||
|
<path opacity="0.6" fill="#FFFFFF" enable-background="new " d="M27.414,46c-9.926,0-18.001-8.074-18.001-18
|
||||||
|
c0-9.926,8.075-18,18.001-18c9.925,0,17.999,8.075,17.999,18C45.413,37.925,37.339,46,27.414,46z M27.414,12
|
||||||
|
c-8.823,0-16.001,7.178-16.001,16c0,8.821,7.178,16,16.001,16c8.822,0,15.999-7.179,15.999-16C43.413,19.178,36.236,12,27.414,12z"
|
||||||
|
/>
|
||||||
|
<path fill="#FFFFFF" d="M51.162,55.485c-0.039,0-0.079,0-0.118-0.002c-1.037-0.029-2.021-0.457-2.765-1.203L37.243,43.245
|
||||||
|
l1.414-1.414l11.036,11.036c0.384,0.383,0.884,0.603,1.408,0.618c0.492-0.006,0.963-0.162,1.299-0.498
|
||||||
|
c0.713-0.713,0.658-1.926-0.121-2.707L41.243,39.245l1.414-1.414l11.036,11.036c1.56,1.561,1.613,4.043,0.121,5.534
|
||||||
|
C53.113,55.104,52.176,55.485,51.162,55.485z"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 1.2 KiB |
26
qml/images/verified.svg
Normal file
26
qml/images/verified.svg
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||||
|
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||||
|
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||||
|
viewBox="0 0 48 48" enable-background="new 0 0 48 48" xml:space="preserve">
|
||||||
|
<path fill="#FFFFFF" d="M47.7,22.5c-0.2-0.8-0.5-1.6-1-2.3c-0.5-0.7-1-1.3-1.6-1.9s-1.3-1-2.1-1.4c0.1-0.2,0.2-0.5,0.3-0.7
|
||||||
|
c0-0.3,0.1-0.5,0.2-0.8s0.1-0.5,0.1-0.8s0-0.6,0.1-0.8c0-1.3-0.3-2.5-0.7-3.6c-0.4-1.1-1-2.1-1.9-2.9s-1.7-1.5-2.8-2
|
||||||
|
c-1-0.5-2.2-0.7-3.4-0.7c-0.3,0-0.5,0-0.8,0c-0.3,0-0.5,0.1-0.8,0.1c-0.2,0-0.5,0.1-0.8,0.2S32.1,5,31.9,5.1
|
||||||
|
c-0.4-0.8-0.9-1.4-1.4-2.1s-1.1-1.2-1.8-1.6s-1.4-0.8-2.2-1C25.7,0.1,24.9,0,24,0c-0.8,0-1.7,0.1-2.5,0.4S20,1,19.3,1.4
|
||||||
|
c-0.7,0.4-1.3,1-1.8,1.6c-0.6,0.6-1,1.3-1.3,2.1c-0.3-0.1-0.5-0.2-0.8-0.2c-0.2-0.1-0.5-0.1-0.8-0.2c-0.3,0-0.5-0.1-0.8-0.1
|
||||||
|
c-0.2,0-0.5,0-0.8,0c-1.1,0-2.3,0.2-3.4,0.7c-1.1,0.5-2,1.1-2.8,2S5.5,9,5,10.1s-0.7,2.3-0.7,3.6c0,0.3,0,0.5,0,0.8s0.1,0.6,0.1,0.8
|
||||||
|
c0,0.3,0.1,0.5,0.2,0.8c0.1,0.3,0.2,0.5,0.2,0.7c-0.7,0.4-1.3,0.9-2,1.4s-1.2,1.2-1.6,1.9c-0.4,0.7-0.7,1.5-1,2.3
|
||||||
|
C0.1,23.4,0,24.3,0,25.2c0,0.8,0.1,1.7,0.3,2.5s0.5,1.5,0.9,2.2s0.8,1.3,1.4,1.9s1.2,1,1.8,1.4c0,0.1,0,0.2,0,0.3s-0.1,0.2,0,0.3
|
||||||
|
c0,0.1,0,0.2,0,0.3c0,0.1,0,0.2,0,0.3c0,1.2,0.2,2.4,0.7,3.5C5.5,39,6.2,40,6.9,40.8s1.7,1.5,2.8,2s2.2,0.7,3.4,0.7
|
||||||
|
c0.3,0,0.6,0,0.8,0c0.2,0,0.5-0.1,0.8-0.1c0.3,0,0.5-0.1,0.8-0.2c0.2-0.1,0.5-0.2,0.8-0.3c0.3,0.8,0.7,1.5,1.3,2.1
|
||||||
|
c0.6,0.6,1.2,1.2,1.8,1.6c0.7,0.5,1.4,0.8,2.2,1.1s1.6,0.4,2.5,0.4c0.9,0,1.7-0.1,2.5-0.4c0.8-0.2,1.5-0.6,2.2-1.1s1.3-1,1.8-1.6
|
||||||
|
c0.5-0.6,1-1.3,1.4-2.1c0.2,0.1,0.5,0.2,0.7,0.3c0.3,0.1,0.5,0.2,0.8,0.2c0.2,0,0.5,0.1,0.8,0.1c0.3,0,0.5,0,0.8,0
|
||||||
|
c1.2,0,2.4-0.2,3.4-0.7s2-1.1,2.8-2s1.4-1.8,1.9-2.9c0.4-1.1,0.7-2.3,0.7-3.5c0-0.1-0.1-0.2,0-0.3s0-0.2,0-0.3c0-0.1,0-0.2,0-0.3
|
||||||
|
s0-0.2-0.1-0.3c0.7-0.4,1.3-0.9,1.9-1.4c0.5-0.6,1-1.2,1.4-1.9c0.4-0.7,0.7-1.4,0.9-2.2c0.2-0.8,0.3-1.6,0.3-2.5
|
||||||
|
C48,24.3,47.9,23.4,47.7,22.5z M35.8,18.5c-0.2,0.3-0.3,0.6-0.5,0.8h-0.1L22,32.6c0,0-0.1,0,0,0s0,0,0,0c-0.1,0.1-0.2,0.2-0.4,0.3
|
||||||
|
c-0.2,0.1-0.3,0.2-0.4,0.2c-0.1,0-0.3,0.1-0.5,0.1c-0.2,0-0.3,0.1-0.4,0.1c-0.2,0-0.4,0-0.5-0.1c-0.1,0-0.3-0.1-0.5-0.1
|
||||||
|
c-0.2,0-0.3-0.1-0.4-0.2c-0.1-0.1-0.3-0.2-0.4-0.3l-5.7-5.8c-0.3-0.2-0.5-0.5-0.6-0.8c-0.1-0.3-0.2-0.6-0.2-0.9c0-0.3,0-0.6,0.2-0.9
|
||||||
|
c0.2-0.3,0.3-0.6,0.5-0.9c0.3-0.2,0.6-0.4,0.9-0.5s0.6-0.2,0.9-0.2c0.4,0,0.7,0.1,0.9,0.2c0.3,0.1,0.6,0.3,0.9,0.5l3.9,4l11.7-11.6
|
||||||
|
c0.2-0.2,0.4-0.4,0.8-0.5s0.7-0.2,0.9-0.2s0.6,0.1,0.9,0.2s0.6,0.3,0.8,0.5c0.3,0.3,0.5,0.6,0.6,0.9c0.1,0.3,0.2,0.6,0.2,0.9
|
||||||
|
C36.1,17.9,36,18.2,35.8,18.5z"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 2.7 KiB |
240
qml/lib/API.js
240
qml/lib/API.js
|
@ -103,245 +103,13 @@ var tootParser = function(data){
|
||||||
|
|
||||||
console.log(ret)
|
console.log(ret)
|
||||||
}
|
}
|
||||||
|
|
||||||
// by @kirschn@pleasehug.me 2017
|
|
||||||
// no fucking copyright
|
|
||||||
// do whatever you want with it
|
|
||||||
// but please don't hurt it (and keep this header)
|
|
||||||
var test = 1;
|
var test = 1;
|
||||||
var MastodonAPI = function(config) {
|
|
||||||
var apiBase = config.instance + "/api/v1/";
|
|
||||||
return {
|
|
||||||
setConfig: function (key, value) {
|
|
||||||
// modify initial config afterwards
|
|
||||||
config[key] = value;
|
|
||||||
},
|
|
||||||
getConfig: function(key) {
|
|
||||||
//get config key
|
|
||||||
return config[key];
|
|
||||||
},
|
|
||||||
get: function (endpoint) {
|
|
||||||
// for GET API calls
|
|
||||||
// can be called with two or three parameters
|
|
||||||
// endpoint, callback
|
|
||||||
// or
|
|
||||||
// endpoint, queryData, callback
|
|
||||||
// where querydata is an object {["paramname1", "paramvalue1], ["paramname2","paramvalue2"]}
|
|
||||||
|
|
||||||
// variables
|
Qt.include("Mastodon.js")
|
||||||
var queryData, callback,
|
|
||||||
queryStringAppend = "?";
|
|
||||||
|
|
||||||
// check with which arguments we're supplied
|
var modelTLhome = Qt.createQmlObject('import QtQuick 2.0; ListModel { }', Qt.application, 'InternalQmlObject');
|
||||||
if (typeof arguments[1] === "function") {
|
var modelTLpublic = Qt.createQmlObject('import QtQuick 2.0; ListModel { }', Qt.application, 'InternalQmlObject');
|
||||||
queryData = {};
|
var modelTLnotifications = Qt.createQmlObject('import QtQuick 2.0; ListModel { }', Qt.application, 'InternalQmlObject');
|
||||||
callback = arguments[1];
|
|
||||||
} else {
|
|
||||||
queryData = arguments[1];
|
|
||||||
callback = arguments[2];
|
|
||||||
}
|
|
||||||
// build queryData Object into a URL Query String
|
|
||||||
for (var i in queryData) {
|
|
||||||
if (queryData.hasOwnProperty(i)) {
|
|
||||||
if (typeof queryData[i] === "string") {
|
|
||||||
queryStringAppend += queryData[i] + "&";
|
|
||||||
} else if (typeof queryData[i] === "object") {
|
|
||||||
queryStringAppend += queryData[i].name + "="+ queryData[i].data + "&";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// ajax function
|
|
||||||
var http = new XMLHttpRequest()
|
|
||||||
var url = apiBase + endpoint;
|
|
||||||
http.open("GET", apiBase + endpoint + queryStringAppend, true);
|
|
||||||
|
|
||||||
// Send the proper header information along with the request
|
|
||||||
http.setRequestHeader("Authorization", "Bearer " + config.api_user_token);
|
|
||||||
http.setRequestHeader("Content-Type", "application/json");
|
|
||||||
http.setRequestHeader("Connection", "close");
|
|
||||||
|
|
||||||
http.onreadystatechange = function() { // Call a function when the state changes.
|
|
||||||
if (http.readyState == 4) {
|
|
||||||
if (http.status == 200) {
|
|
||||||
console.log("Successful GET API request to " +apiBase+endpoint);
|
|
||||||
callback(JSON.parse(http.response),http.status)
|
|
||||||
} else {
|
|
||||||
console.log("error: " + http.status)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
http.send();
|
|
||||||
},
|
|
||||||
post: function (endpoint) {
|
|
||||||
// for POST API calls
|
|
||||||
var postData, callback;
|
|
||||||
// check with which arguments we're supplied
|
|
||||||
if (typeof arguments[1] === "function") {
|
|
||||||
postData = {};
|
|
||||||
callback = arguments[1];
|
|
||||||
} else {
|
|
||||||
postData = arguments[1];
|
|
||||||
callback = arguments[2];
|
|
||||||
}
|
|
||||||
|
|
||||||
var http = new XMLHttpRequest()
|
|
||||||
var url = apiBase + endpoint;
|
|
||||||
var params = JSON.stringify(postData);
|
|
||||||
http.open("POST", url, true);
|
|
||||||
|
|
||||||
// Send the proper header information along with the request
|
|
||||||
http.setRequestHeader("Authorization", "Bearer " + config.api_user_token);
|
|
||||||
http.setRequestHeader("Content-Type", "application/json");
|
|
||||||
http.setRequestHeader("Content-length", params.length);
|
|
||||||
http.setRequestHeader("Connection", "close");
|
|
||||||
|
|
||||||
http.onreadystatechange = function() { // Call a function when the state changes.
|
|
||||||
if (http.readyState == 4) {
|
|
||||||
if (http.status == 200) {
|
|
||||||
console.log("Successful POST API request to " +apiBase+endpoint);
|
|
||||||
callback(http.response,http.status)
|
|
||||||
} else {
|
|
||||||
console.log("error: " + http.status)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
http.send(params);
|
|
||||||
|
|
||||||
/*$.ajax({
|
|
||||||
url: apiBase + endpoint,
|
|
||||||
type: "POST",
|
|
||||||
data: postData,
|
|
||||||
headers: {"Authorization": "Bearer " + config.api_user_token},
|
|
||||||
success: function(data, textStatus) {
|
|
||||||
console.log("Successful POST API request to " +apiBase+endpoint);
|
|
||||||
callback(data,textStatus)
|
|
||||||
}
|
|
||||||
});*/
|
|
||||||
},
|
|
||||||
delete: function (endpoint, callback) {
|
|
||||||
// for DELETE API calls.
|
|
||||||
$.ajax({
|
|
||||||
url: apiBase + endpoint,
|
|
||||||
type: "DELETE",
|
|
||||||
headers: {"Authorization": "Bearer " + config.api_user_token},
|
|
||||||
success: function(data, textStatus) {
|
|
||||||
console.log("Successful DELETE API request to " +apiBase+endpoint);
|
|
||||||
callback(data,textStatus)
|
|
||||||
}
|
|
||||||
});
|
|
||||||
},
|
|
||||||
stream: function (streamType, onData) {
|
|
||||||
// Event Stream Support
|
|
||||||
// websocket streaming is undocumented. i had to reverse engineer the fucking web client.
|
|
||||||
// streamType is either
|
|
||||||
// user for your local home TL and notifications
|
|
||||||
// public for your federated TL
|
|
||||||
// public:local for your home TL
|
|
||||||
// hashtag&tag=fuckdonaldtrump for the stream of #fuckdonaldtrump
|
|
||||||
// callback gets called whenever new data ist recieved
|
|
||||||
// callback { event: (eventtype), payload: {mastodon object as described in the api docs} }
|
|
||||||
// eventtype could be notification (=notification) or update (= new toot in TL)
|
|
||||||
//return "wss://" + apiBase.substr(8) +"streaming?access_token=" + config.api_user_token + "&stream=" + streamType
|
|
||||||
|
|
||||||
var es = new WebSocket("wss://" + apiBase.substr(8)
|
|
||||||
+"streaming?access_token=" + config.api_user_token + "&stream=" + streamType);
|
|
||||||
var listener = function (event) {
|
|
||||||
console.log("Got Data from Stream " + streamType);
|
|
||||||
event = JSON.parse(event.data);
|
|
||||||
event.payload = JSON.parse(event.payload);
|
|
||||||
onData(event);
|
|
||||||
};
|
|
||||||
es.onmessage = listener;
|
|
||||||
|
|
||||||
|
|
||||||
},
|
|
||||||
registerApplication: function (client_name, redirect_uri, scopes, website, callback) {
|
|
||||||
//register a new application
|
|
||||||
|
|
||||||
// OAuth Auth flow:
|
|
||||||
// First register the application
|
|
||||||
// 2) get a access code from a user (using the link, generation function below!)
|
|
||||||
// 3) insert the data you got from the application and the code from the user into
|
|
||||||
// getAccessTokenFromAuthCode. Note: scopes has to be an array, every time!
|
|
||||||
// For example ["read", "write"]
|
|
||||||
|
|
||||||
//determine which parameters we got
|
|
||||||
if (website === null) {
|
|
||||||
website = "";
|
|
||||||
}
|
|
||||||
// build scope array to string for the api request
|
|
||||||
var scopeBuild = "";
|
|
||||||
if (typeof scopes !== "string") {
|
|
||||||
scopes = scopes.join(" ");
|
|
||||||
}
|
|
||||||
|
|
||||||
var http = new XMLHttpRequest()
|
|
||||||
var url = apiBase + "apps";
|
|
||||||
var params = 'client_name=' + client_name + '&redirect_uris=' + redirect_uri + '&scopes=' + scopes + '&website=' + website;
|
|
||||||
console.log(params)
|
|
||||||
http.open("POST", url, true);
|
|
||||||
|
|
||||||
// Send the proper header information along with the request
|
|
||||||
http.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
|
|
||||||
|
|
||||||
http.onreadystatechange = function() { // Call a function when the state changes.
|
|
||||||
if (http.readyState == 4) {
|
|
||||||
if (http.status == 200) {
|
|
||||||
console.log("Registered Application: " + http.response);
|
|
||||||
callback(http.response)
|
|
||||||
} else {
|
|
||||||
console.log("error: " + http.status)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
http.send(params);
|
|
||||||
},
|
|
||||||
generateAuthLink: function (client_id, redirect_uri, responseType, scopes) {
|
|
||||||
return config.instance + "/oauth/authorize?client_id=" + client_id + "&redirect_uri=" + redirect_uri +
|
|
||||||
"&response_type=" + responseType + "&scope=" + scopes.join("+");
|
|
||||||
},
|
|
||||||
getAccessTokenFromAuthCode: function (client_id, client_secret, redirect_uri, code, callback) {
|
|
||||||
/*$.ajax({
|
|
||||||
url: config.instance + "/oauth/token",
|
|
||||||
type: "POST",
|
|
||||||
data: {
|
|
||||||
client_id: client_id,
|
|
||||||
client_secret: client_secret,
|
|
||||||
redirect_uri: redirect_uri,
|
|
||||||
grant_type: "authorization_code",
|
|
||||||
code: code
|
|
||||||
},
|
|
||||||
success: function (data, textStatus) {
|
|
||||||
console.log("Got Token: " + data);
|
|
||||||
callback(data);
|
|
||||||
}
|
|
||||||
});*/
|
|
||||||
var http = new XMLHttpRequest()
|
|
||||||
var url = config.instance + "/oauth/token";
|
|
||||||
var params = 'client_id=' + client_id + '&client_secret=' + client_secret + '&redirect_uri=' + redirect_uri + '&grant_type=authorization_code&code=' + code;
|
|
||||||
console.log(params)
|
|
||||||
http.open("POST", url, true);
|
|
||||||
|
|
||||||
// Send the proper header information along with the request
|
|
||||||
http.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
|
|
||||||
|
|
||||||
http.onreadystatechange = function() { // Call a function when the state changes.
|
|
||||||
if (http.readyState == 4) {
|
|
||||||
if (http.status == 200) {
|
|
||||||
console.log("Got Token: " + http.response);
|
|
||||||
callback(http.response)
|
|
||||||
} else {
|
|
||||||
console.log("error: " + http.status)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
http.send(params);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
// node.js
|
|
||||||
if (typeof module !== 'undefined') { module.exports = MastodonAPI; };
|
|
||||||
|
|
||||||
|
|
||||||
var api;
|
var api;
|
||||||
|
|
247
qml/lib/Mastodon.js
Normal file
247
qml/lib/Mastodon.js
Normal file
|
@ -0,0 +1,247 @@
|
||||||
|
// by @kirschn@pleasehug.me 2017
|
||||||
|
// no fucking copyright
|
||||||
|
// do whatever you want with it
|
||||||
|
// but please don't hurt it (and keep this header)
|
||||||
|
|
||||||
|
var MastodonAPI = function(config) {
|
||||||
|
var apiBase = config.instance + "/api/v1/";
|
||||||
|
return {
|
||||||
|
setConfig: function (key, value) {
|
||||||
|
// modify initial config afterwards
|
||||||
|
config[key] = value;
|
||||||
|
},
|
||||||
|
getConfig: function(key) {
|
||||||
|
//get config key
|
||||||
|
return config[key];
|
||||||
|
},
|
||||||
|
get: function (endpoint) {
|
||||||
|
// for GET API calls
|
||||||
|
// can be called with two or three parameters
|
||||||
|
// endpoint, callback
|
||||||
|
// or
|
||||||
|
// endpoint, queryData, callback
|
||||||
|
// where querydata is an object {["paramname1", "paramvalue1], ["paramname2","paramvalue2"]}
|
||||||
|
|
||||||
|
// variables
|
||||||
|
var queryData, callback,
|
||||||
|
queryStringAppend = "?";
|
||||||
|
|
||||||
|
// check with which arguments we're supplied
|
||||||
|
if (typeof arguments[1] === "function") {
|
||||||
|
queryData = {};
|
||||||
|
callback = arguments[1];
|
||||||
|
} else {
|
||||||
|
queryData = arguments[1];
|
||||||
|
callback = arguments[2];
|
||||||
|
}
|
||||||
|
// build queryData Object into a URL Query String
|
||||||
|
for (var i in queryData) {
|
||||||
|
if (queryData.hasOwnProperty(i)) {
|
||||||
|
if (typeof queryData[i] === "string") {
|
||||||
|
queryStringAppend += queryData[i] + "&";
|
||||||
|
} else if (typeof queryData[i] === "object") {
|
||||||
|
queryStringAppend += queryData[i].name + "="+ queryData[i].data + "&";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// ajax function
|
||||||
|
var http = new XMLHttpRequest()
|
||||||
|
var url = apiBase + endpoint;
|
||||||
|
console.log(queryStringAppend)
|
||||||
|
http.open("GET", apiBase + endpoint + queryStringAppend, true);
|
||||||
|
|
||||||
|
// Send the proper header information along with the request
|
||||||
|
http.setRequestHeader("Authorization", "Bearer " + config.api_user_token);
|
||||||
|
http.setRequestHeader("Content-Type", "application/json");
|
||||||
|
http.setRequestHeader("Connection", "close");
|
||||||
|
|
||||||
|
http.onreadystatechange = function() { // Call a function when the state changes.
|
||||||
|
if (http.readyState == 4) {
|
||||||
|
if (http.status == 200) {
|
||||||
|
console.log("Successful GET API request to " +apiBase+endpoint);
|
||||||
|
callback(JSON.parse(http.response),http.status)
|
||||||
|
} else {
|
||||||
|
console.log("error: " + http.status)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
http.send();
|
||||||
|
},
|
||||||
|
post: function (endpoint) {
|
||||||
|
// for POST API calls
|
||||||
|
var postData, callback;
|
||||||
|
// check with which arguments we're supplied
|
||||||
|
if (typeof arguments[1] === "function") {
|
||||||
|
postData = {};
|
||||||
|
callback = arguments[1];
|
||||||
|
} else {
|
||||||
|
postData = arguments[1];
|
||||||
|
callback = arguments[2];
|
||||||
|
}
|
||||||
|
|
||||||
|
var http = new XMLHttpRequest()
|
||||||
|
var url = apiBase + endpoint;
|
||||||
|
var params = JSON.stringify(postData);
|
||||||
|
http.open("POST", url, true);
|
||||||
|
|
||||||
|
// Send the proper header information along with the request
|
||||||
|
http.setRequestHeader("Authorization", "Bearer " + config.api_user_token);
|
||||||
|
http.setRequestHeader("Content-Type", "application/json");
|
||||||
|
http.setRequestHeader("Content-length", params.length);
|
||||||
|
http.setRequestHeader("Connection", "close");
|
||||||
|
|
||||||
|
http.onreadystatechange = function() { // Call a function when the state changes.
|
||||||
|
if (http.readyState == 4) {
|
||||||
|
if (http.status == 200) {
|
||||||
|
console.log("Successful POST API request to " +apiBase+endpoint);
|
||||||
|
callback(JSON.parse(http.response),http.status)
|
||||||
|
} else {
|
||||||
|
console.log("error: " + http.status)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
http.send(params);
|
||||||
|
|
||||||
|
/*$.ajax({
|
||||||
|
url: apiBase + endpoint,
|
||||||
|
type: "POST",
|
||||||
|
data: postData,
|
||||||
|
headers: {"Authorization": "Bearer " + config.api_user_token},
|
||||||
|
success: function(data, textStatus) {
|
||||||
|
console.log("Successful POST API request to " +apiBase+endpoint);
|
||||||
|
callback(data,textStatus)
|
||||||
|
}
|
||||||
|
});*/
|
||||||
|
},
|
||||||
|
delete: function (endpoint, callback) {
|
||||||
|
// for DELETE API calls.
|
||||||
|
$.ajax({
|
||||||
|
url: apiBase + endpoint,
|
||||||
|
type: "DELETE",
|
||||||
|
headers: {"Authorization": "Bearer " + config.api_user_token},
|
||||||
|
success: function(data, textStatus) {
|
||||||
|
console.log("Successful DELETE API request to " +apiBase+endpoint);
|
||||||
|
callback(data,textStatus)
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
stream: function (streamType, onData) {
|
||||||
|
// Event Stream Support
|
||||||
|
// websocket streaming is undocumented. i had to reverse engineer the fucking web client.
|
||||||
|
// streamType is either
|
||||||
|
// user for your local home TL and notifications
|
||||||
|
// public for your federated TL
|
||||||
|
// public:local for your home TL
|
||||||
|
// hashtag&tag=fuckdonaldtrump for the stream of #fuckdonaldtrump
|
||||||
|
// callback gets called whenever new data ist recieved
|
||||||
|
// callback { event: (eventtype), payload: {mastodon object as described in the api docs} }
|
||||||
|
// eventtype could be notification (=notification) or update (= new toot in TL)
|
||||||
|
//return "wss://" + apiBase.substr(8) +"streaming?access_token=" + config.api_user_token + "&stream=" + streamType
|
||||||
|
|
||||||
|
var es = new WebSocket("wss://" + apiBase.substr(8)
|
||||||
|
+"streaming?access_token=" + config.api_user_token + "&stream=" + streamType);
|
||||||
|
var listener = function (event) {
|
||||||
|
console.log("Got Data from Stream " + streamType);
|
||||||
|
event = JSON.parse(event.data);
|
||||||
|
event.payload = JSON.parse(event.payload);
|
||||||
|
onData(event);
|
||||||
|
};
|
||||||
|
es.onmessage = listener;
|
||||||
|
|
||||||
|
|
||||||
|
},
|
||||||
|
registerApplication: function (client_name, redirect_uri, scopes, website, callback) {
|
||||||
|
//register a new application
|
||||||
|
|
||||||
|
// OAuth Auth flow:
|
||||||
|
// First register the application
|
||||||
|
// 2) get a access code from a user (using the link, generation function below!)
|
||||||
|
// 3) insert the data you got from the application and the code from the user into
|
||||||
|
// getAccessTokenFromAuthCode. Note: scopes has to be an array, every time!
|
||||||
|
// For example ["read", "write"]
|
||||||
|
|
||||||
|
//determine which parameters we got
|
||||||
|
if (website === null) {
|
||||||
|
website = "";
|
||||||
|
}
|
||||||
|
// build scope array to string for the api request
|
||||||
|
var scopeBuild = "";
|
||||||
|
if (typeof scopes !== "string") {
|
||||||
|
scopes = scopes.join(" ");
|
||||||
|
}
|
||||||
|
|
||||||
|
var http = new XMLHttpRequest()
|
||||||
|
var url = apiBase + "apps";
|
||||||
|
var params = 'client_name=' + client_name + '&redirect_uris=' + redirect_uri + '&scopes=' + scopes + '&website=' + website;
|
||||||
|
console.log(params)
|
||||||
|
http.open("POST", url, true);
|
||||||
|
|
||||||
|
// Send the proper header information along with the request
|
||||||
|
http.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
|
||||||
|
|
||||||
|
http.onreadystatechange = function() { // Call a function when the state changes.
|
||||||
|
if (http.readyState == 4) {
|
||||||
|
if (http.status == 200) {
|
||||||
|
console.log("Registered Application: " + http.response);
|
||||||
|
callback(http.response)
|
||||||
|
} else {
|
||||||
|
console.log("error: " + http.status)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
http.send(params);
|
||||||
|
},
|
||||||
|
generateAuthLink: function (client_id, redirect_uri, responseType, scopes) {
|
||||||
|
return config.instance + "/oauth/authorize?client_id=" + client_id + "&redirect_uri=" + redirect_uri +
|
||||||
|
"&response_type=" + responseType + "&scope=" + scopes.join("+");
|
||||||
|
},
|
||||||
|
getAccessTokenFromAuthCode: function (client_id, client_secret, redirect_uri, code, callback) {
|
||||||
|
/*$.ajax({
|
||||||
|
url: config.instance + "/oauth/token",
|
||||||
|
type: "POST",
|
||||||
|
data: {
|
||||||
|
client_id: client_id,
|
||||||
|
client_secret: client_secret,
|
||||||
|
redirect_uri: redirect_uri,
|
||||||
|
grant_type: "authorization_code",
|
||||||
|
code: code
|
||||||
|
},
|
||||||
|
success: function (data, textStatus) {
|
||||||
|
console.log("Got Token: " + data);
|
||||||
|
callback(data);
|
||||||
|
}
|
||||||
|
});*/
|
||||||
|
var http = new XMLHttpRequest()
|
||||||
|
var url = config.instance + "/oauth/token";
|
||||||
|
var params = 'client_id=' + client_id + '&client_secret=' + client_secret + '&redirect_uri=' + redirect_uri + '&grant_type=authorization_code&code=' + code;
|
||||||
|
console.log(params)
|
||||||
|
http.open("POST", url, true);
|
||||||
|
|
||||||
|
// Send the proper header information along with the request
|
||||||
|
http.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
|
||||||
|
|
||||||
|
http.onreadystatechange = function() { // Call a function when the state changes.
|
||||||
|
if (http.readyState == 4) {
|
||||||
|
if (http.status == 200) {
|
||||||
|
console.log("Got Token: " + http.response);
|
||||||
|
callback(http.response)
|
||||||
|
} else {
|
||||||
|
console.log("error: " + http.status)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
http.send(params);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
// node.js
|
||||||
|
if (typeof module !== 'undefined') { module.exports = MastodonAPI; };
|
||||||
|
|
||||||
|
String.prototype.replaceAll = function(search, replacement) {
|
||||||
|
var target = this;
|
||||||
|
return target.replace(new RegExp(search, 'g'), replacement);
|
||||||
|
};
|
||||||
|
|
||||||
|
(function(){var k=[].slice;String.prototype.autoLink=function(){var d,b,g,a,e,f,h;e=1<=arguments.length?k.call(arguments,0):[];f=/(^|[\s\n]|<[A-Za-z]*\/?>)((?:https?|ftp):\/\/[\-A-Z0-9+\u0026\u2019@#\/%?=()~_|!:,.;]*[\-A-Z0-9+\u0026@#\/%=~()_|])/gi;if(!(0<e.length))return this.replace(f,"$1<a href='$2'>$2</a>");a=e[0];d=a.callback;g=function(){var c;c=[];for(b in a)h=a[b],"callback"!==b&&c.push(" "+b+"='"+h+"'");return c}().join("");return this.replace(f,function(c,b,a){c=("function"===typeof d?d(a):
|
||||||
|
void 0)||"<a href='"+a+"'"+g+">"+a+"</a>";return""+b+c})}}).call(this);
|
157
qml/lib/Worker.js
Normal file
157
qml/lib/Worker.js
Normal file
|
@ -0,0 +1,157 @@
|
||||||
|
Qt.include("Mastodon.js")
|
||||||
|
WorkerScript.onMessage = function(msg) {
|
||||||
|
console.log("Action > " + msg.action)
|
||||||
|
console.log("Model > " + msg.model)
|
||||||
|
console.log("Mode > " + msg.mode)
|
||||||
|
console.log("Conf > " + JSON.stringify(msg.conf))
|
||||||
|
console.log("Params > " + JSON.stringify(msg.params))
|
||||||
|
if (!msg.conf.login){
|
||||||
|
console.log("Not loggedin")
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var API = MastodonAPI({ instance: msg.conf.instance, api_user_token: msg.conf.api_user_token});
|
||||||
|
if (msg.method === "POST"){
|
||||||
|
API.post(msg.action, msg.params, function(data) {
|
||||||
|
for (var i in data) {
|
||||||
|
if (data.hasOwnProperty(i)) {
|
||||||
|
console.log(JSON.stringify(data[i]))
|
||||||
|
WorkerScript.sendMessage({ 'action': msg.action, 'success': true, key: i, "data": data[i]})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
API.get(msg.action, msg.params, function(data) {
|
||||||
|
var items = [];
|
||||||
|
for (var i in data) {
|
||||||
|
if (data.hasOwnProperty(i)) {
|
||||||
|
if(msg.action === "notifications") {
|
||||||
|
console.log("Is notification... parsing...")
|
||||||
|
var item = parseNotification(data[i]);
|
||||||
|
items.push(item)
|
||||||
|
} else if (data[i].hasOwnProperty("content")){
|
||||||
|
console.log("Is toot... parsing...")
|
||||||
|
var item = parseToot(data[i]);
|
||||||
|
items.push(item)
|
||||||
|
} else {
|
||||||
|
WorkerScript.sendMessage({ 'action': msg.action, 'success': true, key: i, "data": data[i]})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(msg.model)
|
||||||
|
addDataToModel(msg.model, msg.mode, items)
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
//WorkerScript.sendMessage({ 'notifyNewItems': length - i })
|
||||||
|
function addDataToModel (model, mode, items){
|
||||||
|
var length = items.length;
|
||||||
|
console.log("Fetched > " +length)
|
||||||
|
|
||||||
|
if (mode === "append") {
|
||||||
|
model.append(items)
|
||||||
|
} else if (mode === "prepend") {
|
||||||
|
for(var i = length-1; i >= 0 ; i--){
|
||||||
|
model.insert(0,items[i])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
model.sync()
|
||||||
|
}
|
||||||
|
function parseNotification(data){
|
||||||
|
var item = {
|
||||||
|
id: data.id,
|
||||||
|
type: data.type,
|
||||||
|
created_at: data.created_at,
|
||||||
|
account_id: data.account.id,
|
||||||
|
account_acct: data.account.acct,
|
||||||
|
account_username: data.account.username,
|
||||||
|
account_display_name: data.account.display_name,
|
||||||
|
account_avatar: data.account.avatar,
|
||||||
|
account_locked: data.account.locked
|
||||||
|
};
|
||||||
|
switch (item['type']){
|
||||||
|
case "mention":
|
||||||
|
item['typeIcon'] = "image://theme/icon-s-alarm"
|
||||||
|
break;
|
||||||
|
case "reblog":
|
||||||
|
item['typeIcon'] = "image://theme/icon-s-retweet"
|
||||||
|
break;
|
||||||
|
case "favourite":
|
||||||
|
item['typeIcon'] = "image://theme/icon-s-favorite"
|
||||||
|
break;
|
||||||
|
case "follow":
|
||||||
|
item['typeIcon'] = "image://theme/icon-s-installed"
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
item['typeIcon'] = "image://theme/icon-s-sailfish"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
return item;
|
||||||
|
}
|
||||||
|
|
||||||
|
function parseToot (data){
|
||||||
|
//console.log(JSON.stringify(data))
|
||||||
|
var item = {};
|
||||||
|
item['username'] = "Mjau"
|
||||||
|
|
||||||
|
item['retweetScreenName'] = '';
|
||||||
|
item['isVerified'] = false;
|
||||||
|
item['isReblog'] = false;
|
||||||
|
item['favourited'] = data['favourited'];
|
||||||
|
item['reblogged'] = data['reblogged'];
|
||||||
|
item['muted'] = data['muted'];
|
||||||
|
item['reblogs_count'] = data['reblogs_count'];
|
||||||
|
item['favourites_count'] = data['favourites_count'];
|
||||||
|
|
||||||
|
if(data['id']){
|
||||||
|
item['id'] = data['id'];
|
||||||
|
}
|
||||||
|
if(data['created_at']){
|
||||||
|
item['created_at'] = data['created_at'];
|
||||||
|
}
|
||||||
|
if(data['account']){
|
||||||
|
item['account_id'] = data['account']['id'];
|
||||||
|
item['username'] = data['account']['username'];
|
||||||
|
item['displayname'] = data['account']['display_name'];
|
||||||
|
item['account_locked'] = data['account']['locked'];
|
||||||
|
item['account_avatar'] = data['account']['avatar'];
|
||||||
|
}
|
||||||
|
if(data['reblog']){
|
||||||
|
item['isReblog'] = true;
|
||||||
|
item['retweetScreenName'] = data['account']['username'];
|
||||||
|
item['reblog_id'] = data['reblog']['id'];
|
||||||
|
item['account_id'] = data['reblog']['account']['id'];
|
||||||
|
item['username'] = data['reblog']['account']['username'];
|
||||||
|
item['displayname'] = data['reblog']['account']['display_name'];
|
||||||
|
item['account_locked'] = data['reblog']['account']['locked'];
|
||||||
|
item['account_avatar'] = data['reblog']['account']['avatar'];
|
||||||
|
|
||||||
|
item['reblogs_count'] = data['reblog']['reblogs_count'];
|
||||||
|
item['favourites_count'] = data['reblog']['favourites_count'];
|
||||||
|
item['favourited'] = data['reblog']['favourited'];
|
||||||
|
item['reblogged'] = data['reblog']['reblogged'];
|
||||||
|
item['muted'] = data['reblog']['muted'];
|
||||||
|
}
|
||||||
|
|
||||||
|
item['content'] = data['content'].replace(/(<([^>]+)>)/ig,"");
|
||||||
|
item['content'] = item['content'].split(" ")
|
||||||
|
for(var i = 0; i < item['content'].length ; i++){
|
||||||
|
if(item['content'][i][0] === "#"){
|
||||||
|
item['content'][i] = '<a href="#'+item['content'][i]+'">'+item['content'][i]+'</a>';
|
||||||
|
}
|
||||||
|
if(item['content'][i][0] === "@"){
|
||||||
|
item['content'][i] = '<a href="@'+item['content'][i]+'">'+item['content'][i]+'</a>';
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log(item['content'][i])
|
||||||
|
}
|
||||||
|
item['content'] = item['content'].join(" ").autoLink()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
return item;
|
||||||
|
}
|
282
qml/pages/Browser.qml
Normal file
282
qml/pages/Browser.qml
Normal file
|
@ -0,0 +1,282 @@
|
||||||
|
/****************************************************************************************
|
||||||
|
**
|
||||||
|
** Copyright (C) 2013 Jolla Ltd.
|
||||||
|
** Contact: Raine Makelainen <raine.makelainen@jollamobile.com>
|
||||||
|
** All rights reserved.
|
||||||
|
**
|
||||||
|
** This file is part of Sailfish Silica UI component package.
|
||||||
|
**
|
||||||
|
** You may use this file under the terms of 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 Jolla 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 HOLDERS 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.
|
||||||
|
**
|
||||||
|
****************************************************************************************/
|
||||||
|
|
||||||
|
import QtQuick 2.0
|
||||||
|
import QtWebKit 3.0
|
||||||
|
import Sailfish.Silica 1.0
|
||||||
|
|
||||||
|
Page {
|
||||||
|
id: browser
|
||||||
|
property string href;
|
||||||
|
property bool screenReaderMode: true
|
||||||
|
property bool loaded: false
|
||||||
|
property string articleContent: ""
|
||||||
|
property string articleTitle: ""
|
||||||
|
property string articleDate: ""
|
||||||
|
property string articleImage: ""
|
||||||
|
onLoadedChanged: {
|
||||||
|
pullDownMenu.busy = pullDownMenu2.busy = !loaded
|
||||||
|
}
|
||||||
|
onStatusChanged: {
|
||||||
|
if (status === PageStatus.Active) {
|
||||||
|
fetchData();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
onScreenReaderModeChanged: {
|
||||||
|
loaded = false;
|
||||||
|
fetchData();
|
||||||
|
}
|
||||||
|
|
||||||
|
allowedOrientations: Orientation.All
|
||||||
|
function fetchData(){
|
||||||
|
var xhr = new XMLHttpRequest();
|
||||||
|
xhr.open("GET", "https://mercury.postlight.com/parser?url="+href, true);
|
||||||
|
xhr.onreadystatechange = function() {
|
||||||
|
if ( xhr.readyState === xhr.DONE ) {
|
||||||
|
if ( xhr.status === 200 ) {
|
||||||
|
console.log(xhr.responseText)
|
||||||
|
var response = JSON.parse(xhr.responseText);
|
||||||
|
if (response.date_published)
|
||||||
|
//articleDate = new Date(response.date_published.replace(/^(\w+) (\w+) (\d+) ([\d:]+) \+0000 (\d+)$/,"$1, $2 $3 $5 $4 GMT"));
|
||||||
|
if (response.title)
|
||||||
|
articleTitle = response.title;
|
||||||
|
if (response.lead_image_url)
|
||||||
|
articleImage = response.lead_image_url
|
||||||
|
if (response.content)
|
||||||
|
articleContent = response.content;
|
||||||
|
if (response.content && response.lead_image_url)
|
||||||
|
articleContent = articleContent.replace(articleImage, "")
|
||||||
|
} else {
|
||||||
|
|
||||||
|
}
|
||||||
|
loaded = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
xhr.setRequestHeader("Content-Type", 'application/json');
|
||||||
|
xhr.setRequestHeader("x-api-key", 'uakC11NlSubREs1r5NjkOCS1NJEkwti6DnDutcYC');
|
||||||
|
|
||||||
|
if (screenReaderMode)
|
||||||
|
xhr.send();
|
||||||
|
else
|
||||||
|
webView.url = 'https://mercury.postlight.com/amp?url='+href
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
BusyIndicator {
|
||||||
|
id: loading
|
||||||
|
size: BusyIndicatorSize.Large
|
||||||
|
anchors.centerIn: parent
|
||||||
|
running: !loaded
|
||||||
|
}
|
||||||
|
|
||||||
|
SilicaWebView {
|
||||||
|
enabled: !screenReaderMode
|
||||||
|
visible: !screenReaderMode
|
||||||
|
id: webView
|
||||||
|
anchors {
|
||||||
|
fill: parent
|
||||||
|
}
|
||||||
|
|
||||||
|
PullDownMenu {
|
||||||
|
id: pullDownMenu
|
||||||
|
MenuItem {
|
||||||
|
text: qsTr("Open in Browser")
|
||||||
|
onClicked: {
|
||||||
|
Qt.openUrlExternally(href);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
MenuItem {
|
||||||
|
text: screenReaderMode ? qsTr("Web mode") : qsTr("Reading mode")
|
||||||
|
onClicked: {
|
||||||
|
screenReaderMode = !screenReaderMode
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
opacity: 0
|
||||||
|
onLoadingChanged: {
|
||||||
|
switch (loadRequest.status)
|
||||||
|
{
|
||||||
|
case WebView.LoadSucceededStatus:
|
||||||
|
opacity = 1
|
||||||
|
loaded = true;
|
||||||
|
break
|
||||||
|
case WebView.LoadFailedStatus:
|
||||||
|
opacity = 0
|
||||||
|
loaded = true;
|
||||||
|
viewPlaceHolder.errorString = loadRequest.errorString
|
||||||
|
break
|
||||||
|
default:
|
||||||
|
opacity = 0
|
||||||
|
loaded = false;
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
FadeAnimation on opacity {}
|
||||||
|
}
|
||||||
|
ViewPlaceholder {
|
||||||
|
id: viewPlaceHolder
|
||||||
|
property string errorString
|
||||||
|
enabled: webView.opacity === 0 && loaded && !screenReaderMode
|
||||||
|
text: errorString
|
||||||
|
hintText: "Check network connectivity and pull down to reload"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
SilicaFlickable {
|
||||||
|
visible: screenReaderMode
|
||||||
|
enabled: screenReaderMode
|
||||||
|
anchors {
|
||||||
|
fill: parent
|
||||||
|
}
|
||||||
|
contentHeight: article.height
|
||||||
|
VerticalScrollDecorator {}
|
||||||
|
PullDownMenu {
|
||||||
|
id: pullDownMenu2
|
||||||
|
MenuItem {
|
||||||
|
text: qsTr("Open in Browser")
|
||||||
|
onClicked: {
|
||||||
|
Qt.openUrlExternally(href);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
MenuItem {
|
||||||
|
text: screenReaderMode ? qsTr("Web mode") : qsTr("Reading mode")
|
||||||
|
onClicked: {
|
||||||
|
screenReaderMode = !screenReaderMode
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Column {
|
||||||
|
|
||||||
|
id: article
|
||||||
|
width: parent.width
|
||||||
|
|
||||||
|
Rectangle {
|
||||||
|
height: Theme.itemSizeExtraSmall/3
|
||||||
|
width: parent.width
|
||||||
|
opacity: 0
|
||||||
|
}
|
||||||
|
|
||||||
|
Label {
|
||||||
|
id: title
|
||||||
|
text: articleTitle
|
||||||
|
font.pixelSize: Theme.fontSizeLarge
|
||||||
|
color: Theme.highlightColor
|
||||||
|
textFormat: Text.StyledText
|
||||||
|
wrapMode: Text.WordWrap
|
||||||
|
font.bold: true
|
||||||
|
anchors {
|
||||||
|
left: parent.left
|
||||||
|
right: parent.right
|
||||||
|
leftMargin: Theme.paddingLarge
|
||||||
|
rightMargin: Theme.paddingLarge
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Label {
|
||||||
|
id: date
|
||||||
|
visible: articleDate !== ""
|
||||||
|
text: articleDate
|
||||||
|
font.pixelSize: Theme.fontSizeExtraSmall
|
||||||
|
color: Theme.secondaryColor
|
||||||
|
anchors {
|
||||||
|
left: parent.left
|
||||||
|
right: parent.right
|
||||||
|
topMargin: Theme.paddingSmall
|
||||||
|
bottomMargin: Theme.paddingSmall
|
||||||
|
leftMargin: Theme.paddingLarge
|
||||||
|
rightMargin: Theme.paddingLarge
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Rectangle {
|
||||||
|
height: image.visible ? Theme.itemSizeExtraSmall/3 : 0
|
||||||
|
width: parent.width
|
||||||
|
opacity: 0
|
||||||
|
}
|
||||||
|
Image {
|
||||||
|
id: image
|
||||||
|
visible: articleImage !== "" ? true : false
|
||||||
|
source: articleImage
|
||||||
|
width: parent.width
|
||||||
|
height: Theme.itemSizeExtraLarge
|
||||||
|
fillMode: Image.PreserveAspectCrop
|
||||||
|
anchors {
|
||||||
|
left: parent.left
|
||||||
|
right: parent.right
|
||||||
|
}
|
||||||
|
BusyIndicator {
|
||||||
|
size: BusyIndicatorSize.Small
|
||||||
|
anchors.centerIn: parent
|
||||||
|
running: parent.status != Image.Ready
|
||||||
|
}
|
||||||
|
|
||||||
|
onStatusChanged: if (image.status === Image.Ready) {
|
||||||
|
var ratio = image.sourceSize.width/image.sourceSize.height
|
||||||
|
height = width / ratio
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Rectangle {
|
||||||
|
height: image.visible ? Theme.itemSizeExtraSmall/3 : 0
|
||||||
|
width: parent.width
|
||||||
|
opacity: 0
|
||||||
|
}
|
||||||
|
Label {
|
||||||
|
id: content
|
||||||
|
readonly property string _linkStyle: "<style>a:link { color: " + Theme.primaryColor + "; } h1, h2, h3, h4 { color: " + Theme.highlightColor + "; } img { margin: "+Theme.paddingLarge+" 0; width: 100\%}</style>"
|
||||||
|
textFormat: Text.RichText
|
||||||
|
text: _linkStyle + articleContent;
|
||||||
|
font.pixelSize: Theme.fontSizeSmall
|
||||||
|
color: Theme.secondaryColor
|
||||||
|
wrapMode: Text.WordWrap
|
||||||
|
anchors {
|
||||||
|
left: parent.left
|
||||||
|
right: parent.right
|
||||||
|
topMargin: image.visible ? Theme.paddingSmall : Theme.paddingLarge
|
||||||
|
leftMargin: Theme.paddingLarge
|
||||||
|
rightMargin: Theme.paddingLarge
|
||||||
|
bottomMargin: Theme.paddingLarge
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
Rectangle {
|
||||||
|
height: Theme.itemSizeExtraSmall/3
|
||||||
|
width: parent.width
|
||||||
|
opacity: 0
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -31,6 +31,7 @@
|
||||||
import QtQuick 2.0
|
import QtQuick 2.0
|
||||||
import Sailfish.Silica 1.0
|
import Sailfish.Silica 1.0
|
||||||
import "../lib/API.js" as Logic
|
import "../lib/API.js" as Logic
|
||||||
|
import "./components/"
|
||||||
|
|
||||||
|
|
||||||
Page {
|
Page {
|
||||||
|
@ -39,42 +40,97 @@ Page {
|
||||||
// The effective value will be restricted by ApplicationWindow.allowedOrientations
|
// The effective value will be restricted by ApplicationWindow.allowedOrientations
|
||||||
allowedOrientations: Orientation.All
|
allowedOrientations: Orientation.All
|
||||||
|
|
||||||
// To enable PullDownMenu, place our content in a SilicaFlickable
|
DockedPanel {
|
||||||
SilicaFlickable {
|
id: infoPanel
|
||||||
anchors.fill: parent
|
open: true
|
||||||
|
width: mainPage.isPortrait ? parent.width : Theme.itemSizeLarge
|
||||||
PageHeader {
|
height: mainPage.isPortrait ? Theme.itemSizeLarge : parent.height
|
||||||
title: "Tooter"
|
dock: mainPage.isPortrait ? Dock.Bottom : Dock.Right
|
||||||
}
|
Navigation {
|
||||||
|
id: navigation
|
||||||
// PullDownMenu and PushUpMenu must be declared in SilicaFlickable, SilicaListView or SilicaGridView
|
isPortrait: !mainPage.isPortrait
|
||||||
PullDownMenu {
|
onSlideshowShow: {
|
||||||
MenuItem {
|
console.log(vIndex)
|
||||||
text: Logic.conf['login'] ? qsTrId("Logout"): qsTrId("Login")
|
slideshow.positionViewAtIndex(vIndex, ListView.SnapToItem)
|
||||||
onClicked: {
|
|
||||||
if (Logic.conf['login']) {
|
|
||||||
Logic.conf['login'] = false
|
|
||||||
Logic.conf['instance'] = null;
|
|
||||||
Logic.conf['api_user_token'] = null;
|
|
||||||
Logic.conf['dysko'] = null;
|
|
||||||
} else {
|
|
||||||
Logic.conf['login'] = true
|
|
||||||
Logic.conf['instance'] = "https://mastodon.social";
|
|
||||||
Logic.conf['api_user_token'] = '6d8cb23e3ebf3c7a97dd9adf204e47ad159f1a3d07dbbd0325e98981368d8c51';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
MenuItem {
|
|
||||||
text: qsTr("Show Page 2")
|
|
||||||
onClicked: pageStack.push(Qt.resolvedUrl("SecondPage.qml"))
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
SlideshowView {
|
||||||
|
id: slideshow
|
||||||
|
width: parent.width
|
||||||
|
height: parent.height
|
||||||
|
itemWidth: parent.width
|
||||||
|
clip: true
|
||||||
|
onCurrentIndexChanged: {
|
||||||
|
navigation.slideshowIndexChanged(currentIndex)
|
||||||
|
}
|
||||||
|
|
||||||
|
anchors {
|
||||||
|
fill: parent
|
||||||
|
leftMargin: 0
|
||||||
|
top: parent.top
|
||||||
|
topMargin: 0
|
||||||
|
rightMargin: mainPage.isPortrait ? 0 : infoPanel.visibleSize
|
||||||
|
bottomMargin: mainPage.isPortrait ? infoPanel.visibleSize : 0
|
||||||
|
}
|
||||||
|
model: VisualItemModel {
|
||||||
|
MyList{
|
||||||
|
id: tlHome;
|
||||||
|
title: qsTr("Home")
|
||||||
|
type: "timelines/home"
|
||||||
|
mdl: Logic.modelTLhome
|
||||||
|
width: parent.width
|
||||||
|
height: parent.height
|
||||||
|
onOpenDrawer: infoPanel.open = setDrawer
|
||||||
|
}
|
||||||
|
MyList{
|
||||||
|
id: tlPublic;
|
||||||
|
title: qsTr("Timeline")
|
||||||
|
type: "timelines/public"
|
||||||
|
mdl: Logic.modelTLpublic
|
||||||
|
width: parent.width
|
||||||
|
height: parent.height
|
||||||
|
onOpenDrawer: infoPanel.open = setDrawer
|
||||||
|
}
|
||||||
|
MyList{
|
||||||
|
id: tlNotifications;
|
||||||
|
title: qsTr("Notifications")
|
||||||
|
type: "notifications"
|
||||||
|
mdl: Logic.modelTLnotifications
|
||||||
|
width: parent.width
|
||||||
|
height: parent.height
|
||||||
|
onOpenDrawer: infoPanel.open = setDrawer
|
||||||
|
delegate: Notification {}
|
||||||
|
}
|
||||||
|
/*
|
||||||
|
MyList{
|
||||||
|
id: timeline2;
|
||||||
|
width: parent.width
|
||||||
|
height: parent.height
|
||||||
|
model: 0
|
||||||
|
onOpenDrawer: infoPanel.open = setDrawer
|
||||||
|
}
|
||||||
|
MyList{
|
||||||
|
id: timeline3;
|
||||||
|
width: parent.width
|
||||||
|
height: parent.height
|
||||||
|
model: 30
|
||||||
|
onOpenDrawer: infoPanel.open = setDrawer
|
||||||
|
}
|
||||||
|
MyList{
|
||||||
|
id: timeline4;
|
||||||
|
width: parent.width
|
||||||
|
height: parent.height
|
||||||
|
model: 4
|
||||||
|
onOpenDrawer: infoPanel.open = setDrawer
|
||||||
|
}*/
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
Component.onCompleted: {
|
Component.onCompleted: {
|
||||||
/*Mastodon.api.post("statuses", {status:"First toot by Tooter - Mastodon client for #SailfishOS"}, function (data) {
|
/*Mastodon.api.post("statuses", {status:"First toot by Tooter - Mastodon client for #SailfishOS"}, function (data) {
|
||||||
console.log(JSON.stringify(data))
|
console.log(JSON.stringify(data))
|
||||||
|
|
219
qml/pages/Profile.qml
Normal file
219
qml/pages/Profile.qml
Normal file
|
@ -0,0 +1,219 @@
|
||||||
|
import QtQuick 2.0
|
||||||
|
import Sailfish.Silica 1.0
|
||||||
|
import "../lib/API.js" as Logic
|
||||||
|
import "./components/"
|
||||||
|
import QtGraphicalEffects 1.0
|
||||||
|
|
||||||
|
Page {
|
||||||
|
property ListModel tweets;
|
||||||
|
property string displayname : "";
|
||||||
|
property string username : "";
|
||||||
|
property string profileImage : "";
|
||||||
|
property int user_id;
|
||||||
|
property int statuses_count;
|
||||||
|
property int following_count;
|
||||||
|
property int followers_count;
|
||||||
|
property int favourites_count;
|
||||||
|
property int count_moments;
|
||||||
|
property string profile_background : "";
|
||||||
|
property string note: "";
|
||||||
|
|
||||||
|
property bool locked : false;
|
||||||
|
property date created_at;
|
||||||
|
property bool following : false;
|
||||||
|
property bool requested : false;
|
||||||
|
property bool followed_by : false;
|
||||||
|
property bool blocking : false;
|
||||||
|
property bool muting : false;
|
||||||
|
property bool domain_blocking : false;
|
||||||
|
|
||||||
|
|
||||||
|
WorkerScript {
|
||||||
|
id: worker
|
||||||
|
source: "../lib/Worker.js"
|
||||||
|
onMessage: {
|
||||||
|
console.log(JSON.stringify(messageObject))
|
||||||
|
if(messageObject.action === "accounts/relationships/"){
|
||||||
|
console.log(JSON.stringify(messageObject))
|
||||||
|
following= messageObject.data.following
|
||||||
|
requested= messageObject.data.requested
|
||||||
|
followed_by= messageObject.data.followed_by
|
||||||
|
blocking= messageObject.data.blocking
|
||||||
|
muting= messageObject.data.muting
|
||||||
|
domain_blocking= messageObject.data.domain_blocking
|
||||||
|
}
|
||||||
|
switch (messageObject.key) {
|
||||||
|
case 'followers_count':
|
||||||
|
followers_count = messageObject.data
|
||||||
|
break;
|
||||||
|
case 'following_count':
|
||||||
|
following_count = messageObject.data
|
||||||
|
break;
|
||||||
|
case 'acct':
|
||||||
|
username = messageObject.data
|
||||||
|
break;
|
||||||
|
case 'locked':
|
||||||
|
locked = messageObject.data
|
||||||
|
break;
|
||||||
|
case 'created_at':
|
||||||
|
created_at = messageObject.data
|
||||||
|
break;
|
||||||
|
case 'statuses_count':
|
||||||
|
statuses_count = messageObject.data
|
||||||
|
break;
|
||||||
|
case 'note':
|
||||||
|
note = messageObject.data
|
||||||
|
break;
|
||||||
|
case 'following':
|
||||||
|
following = messageObject.data
|
||||||
|
followers_count = followers_count + (following ? 1 : - 1)
|
||||||
|
break;
|
||||||
|
case 'muting':
|
||||||
|
muting = messageObject.data
|
||||||
|
break;
|
||||||
|
case 'muting':
|
||||||
|
muting = messageObject.data
|
||||||
|
break;
|
||||||
|
case 'blocking':
|
||||||
|
blocking = messageObject.data
|
||||||
|
followers_count = followers_count + (blocking ? -1 : 0)
|
||||||
|
break;
|
||||||
|
case 'followed_by':
|
||||||
|
followed_by = messageObject.data
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// The effective value will be restricted by ApplicationWindow.allowedOrientations
|
||||||
|
allowedOrientations: Orientation.All
|
||||||
|
Component.onCompleted: {
|
||||||
|
var msg = {
|
||||||
|
'action' : "accounts/relationships/",
|
||||||
|
'params' : [ {name: "id", data: user_id}],
|
||||||
|
'conf' : Logic.conf
|
||||||
|
};
|
||||||
|
worker.sendMessage(msg);
|
||||||
|
msg = {
|
||||||
|
'action' : "accounts/"+user_id,
|
||||||
|
'conf' : Logic.conf
|
||||||
|
};
|
||||||
|
worker.sendMessage(msg);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
MyList {
|
||||||
|
header: ProfileHeader {
|
||||||
|
id: header
|
||||||
|
title: displayname
|
||||||
|
description: '@'+username
|
||||||
|
image: profileImage
|
||||||
|
}
|
||||||
|
|
||||||
|
anchors {
|
||||||
|
top: parent.top
|
||||||
|
bottom: expander.top
|
||||||
|
left: parent.left
|
||||||
|
right: parent.right
|
||||||
|
}
|
||||||
|
clip: true
|
||||||
|
|
||||||
|
model: ListModel {}
|
||||||
|
type: "accounts/"+user_id+"/statuses"
|
||||||
|
vars: {}
|
||||||
|
conf: Logic.getConfTW()
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
ExpandingSectionGroup {
|
||||||
|
id: expander
|
||||||
|
//currentIndex: 0
|
||||||
|
anchors {
|
||||||
|
bottom: parent.bottom
|
||||||
|
left: parent.left
|
||||||
|
right: parent.right
|
||||||
|
}
|
||||||
|
ExpandingSection {
|
||||||
|
title: qsTr("Summary")
|
||||||
|
content.sourceComponent: Column {
|
||||||
|
spacing: Theme.paddingMedium
|
||||||
|
anchors.bottomMargin: Theme.paddingLarge
|
||||||
|
DetailItem {
|
||||||
|
visible: followers_count ? true : false
|
||||||
|
label: qsTr("Followers")
|
||||||
|
value: followers_count
|
||||||
|
}
|
||||||
|
DetailItem {
|
||||||
|
visible: following_count ? true : false
|
||||||
|
label: qsTr("Following")
|
||||||
|
value: (following_count)
|
||||||
|
}
|
||||||
|
DetailItem {
|
||||||
|
visible: statuses_count ? true : false
|
||||||
|
label: qsTr("Statuses")
|
||||||
|
value: (statuses_count)
|
||||||
|
}
|
||||||
|
DetailItem {
|
||||||
|
visible: favourites_count ? true : false
|
||||||
|
label: qsTr("Favourites")
|
||||||
|
value: (favourites_count)
|
||||||
|
}
|
||||||
|
|
||||||
|
Column {
|
||||||
|
spacing: Theme.paddingMedium
|
||||||
|
anchors.horizontalCenter: parent.horizontalCenter
|
||||||
|
Button {
|
||||||
|
id: btnFollow
|
||||||
|
text: (following ? qsTr("Unfollow") : (requested ? qsTr("Follow request sent!") : qsTr("Follow")))
|
||||||
|
onClicked: {
|
||||||
|
var msg = {
|
||||||
|
'method' : 'POST',
|
||||||
|
'params' : [],
|
||||||
|
'action' : "accounts/" + user_id + (following ? '/unfollow':'/follow'),
|
||||||
|
'conf' : Logic.conf
|
||||||
|
};
|
||||||
|
worker.sendMessage(msg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Button {
|
||||||
|
id: btnMute
|
||||||
|
text: (muting ? qsTr("Unmute") : qsTr("Mute"))
|
||||||
|
onClicked: {
|
||||||
|
var msg = {
|
||||||
|
'method' : 'POST',
|
||||||
|
'params' : [],
|
||||||
|
'action' : "accounts/" + user_id + (muting ? '/unmute':'/mute'),
|
||||||
|
'conf' : Logic.conf
|
||||||
|
};
|
||||||
|
worker.sendMessage(msg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Button {
|
||||||
|
id: btnBlock
|
||||||
|
text: (blocking ? qsTr("Unblock") : qsTr("Block") )
|
||||||
|
onClicked: {
|
||||||
|
var msg = {
|
||||||
|
'method' : 'POST',
|
||||||
|
'params' : [],
|
||||||
|
'action' : "accounts/" + user_id + (blocking ? '/unblock':'/block'),
|
||||||
|
'conf' : Logic.conf
|
||||||
|
};
|
||||||
|
worker.sendMessage(msg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Label {
|
||||||
|
text: " "
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
/*ExpandingSection {
|
||||||
|
title: "Tweets"
|
||||||
|
|
||||||
|
}*/
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
183
qml/pages/components/MyList.qml
Normal file
183
qml/pages/components/MyList.qml
Normal file
|
@ -0,0 +1,183 @@
|
||||||
|
import QtQuick 2.0
|
||||||
|
import Sailfish.Silica 1.0
|
||||||
|
import "../../lib/API.js" as Logic
|
||||||
|
import "."
|
||||||
|
|
||||||
|
|
||||||
|
SilicaListView {
|
||||||
|
id: myList
|
||||||
|
property string type;
|
||||||
|
property string title
|
||||||
|
property string description
|
||||||
|
property ListModel mdl: []
|
||||||
|
property variant params: []
|
||||||
|
property var locale: Qt.locale()
|
||||||
|
property bool loadStarted : false;
|
||||||
|
property int scrollOffset;
|
||||||
|
property string action: ""
|
||||||
|
property variant vars
|
||||||
|
property variant conf
|
||||||
|
model: mdl
|
||||||
|
signal notify (string what, int num)
|
||||||
|
onNotify: {
|
||||||
|
console.log(what + " - " + num)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
signal openDrawer (bool setDrawer)
|
||||||
|
onOpenDrawer: {
|
||||||
|
//console.log("Open drawer: " + setDrawer)
|
||||||
|
}
|
||||||
|
signal send (string notice)
|
||||||
|
onSend: {
|
||||||
|
console.log("LIST send signal emitted with notice: " + notice)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
BusyIndicator {
|
||||||
|
size: BusyIndicatorSize.Large
|
||||||
|
running: myList.model.count === 0 && !viewPlaceHolder.visible
|
||||||
|
anchors.centerIn: parent
|
||||||
|
}
|
||||||
|
|
||||||
|
header: PageHeader {
|
||||||
|
title: myList.title
|
||||||
|
description: myList.description
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
ViewPlaceholder {
|
||||||
|
id: viewPlaceHolder
|
||||||
|
enabled: model.count === 0
|
||||||
|
text: ""
|
||||||
|
hintText: ""
|
||||||
|
}
|
||||||
|
|
||||||
|
PullDownMenu {
|
||||||
|
MenuItem {
|
||||||
|
text: Logic.conf['login'] ? qsTrId("Logout"): qsTrId("Login")
|
||||||
|
onClicked: {
|
||||||
|
if (Logic.conf['login']) {
|
||||||
|
Logic.conf['login'] = false
|
||||||
|
Logic.conf['instance'] = null;
|
||||||
|
Logic.conf['api_user_token'] = null;
|
||||||
|
Logic.conf['dysko'] = null;
|
||||||
|
} else {
|
||||||
|
Logic.conf['login'] = true
|
||||||
|
Logic.conf['instance'] = "https://mastodon.social";
|
||||||
|
Logic.conf['api_user_token'] = '6d8cb23e3ebf3c7a97dd9adf204e47ad159f1a3d07dbbd0325e98981368d8c51';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
MenuItem {
|
||||||
|
text: qsTr("Load more")
|
||||||
|
onClicked: {
|
||||||
|
loadData("prepend")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
PushUpMenu {
|
||||||
|
MenuItem {
|
||||||
|
text: qsTr("Load more")
|
||||||
|
onClicked: {
|
||||||
|
loadData("append")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
clip: true
|
||||||
|
section {
|
||||||
|
property: 'section'
|
||||||
|
criteria: ViewSection.FullString
|
||||||
|
delegate: SectionHeader {
|
||||||
|
text: {
|
||||||
|
var dat = Date.fromLocaleDateString(locale, section);
|
||||||
|
dat = Format.formatDate(dat, Formatter.TimepointRelativeCurrentDay)
|
||||||
|
if (dat === "00:00:00" || dat === "00:00") {
|
||||||
|
visible = false;
|
||||||
|
height = 0;
|
||||||
|
return " ";
|
||||||
|
}else {
|
||||||
|
return dat;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
delegate: Toot {}
|
||||||
|
|
||||||
|
add: Transition {
|
||||||
|
NumberAnimation { property: "opacity"; from: 0; to: 1.0; duration: 800 }
|
||||||
|
NumberAnimation { property: "x"; duration: 800; easing.type: Easing.InOutBack }
|
||||||
|
}
|
||||||
|
|
||||||
|
displaced: Transition {
|
||||||
|
NumberAnimation { properties: "x,y"; duration: 800; easing.type: Easing.InOutBack }
|
||||||
|
}
|
||||||
|
|
||||||
|
onCountChanged: {
|
||||||
|
contentY = scrollOffset
|
||||||
|
console.log("CountChanged!")
|
||||||
|
|
||||||
|
//last_id_MN
|
||||||
|
|
||||||
|
}
|
||||||
|
onContentYChanged: {
|
||||||
|
|
||||||
|
if (contentY > scrollOffset) {
|
||||||
|
openDrawer(false)
|
||||||
|
|
||||||
|
} else {
|
||||||
|
if (contentY < 100 && !loadStarted){
|
||||||
|
}
|
||||||
|
openDrawer(true)
|
||||||
|
}
|
||||||
|
scrollOffset = contentY
|
||||||
|
}
|
||||||
|
VerticalScrollDecorator {}
|
||||||
|
|
||||||
|
WorkerScript {
|
||||||
|
id: worker
|
||||||
|
source: "../../lib/Worker.js"
|
||||||
|
onMessage: {
|
||||||
|
if (messageObject.error){
|
||||||
|
console.log(JSON.stringify(messageObject))
|
||||||
|
}
|
||||||
|
if (messageObject.notifyNewItems){
|
||||||
|
console.log(JSON.stringify(messageObject.notifyNewItems))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Component.onCompleted: {
|
||||||
|
var msg = {
|
||||||
|
'action' : type,
|
||||||
|
'params' : [ ],
|
||||||
|
'model' : model,
|
||||||
|
'mode' : "append",
|
||||||
|
'conf' : Logic.conf
|
||||||
|
};
|
||||||
|
worker.sendMessage(msg);
|
||||||
|
}
|
||||||
|
function loadData(mode){
|
||||||
|
var p = [];
|
||||||
|
if (mode === "append" && model.count){
|
||||||
|
p.push({name: 'max_id', data: model.get(model.count-1).id});
|
||||||
|
}
|
||||||
|
if (mode === "prepend" && model.count){
|
||||||
|
p.push({name:'since_id', data: model.get(0).id});
|
||||||
|
}
|
||||||
|
|
||||||
|
var msg = {
|
||||||
|
'action' : type,
|
||||||
|
'params' : p,
|
||||||
|
'model' : model,
|
||||||
|
'mode' : mode,
|
||||||
|
'conf' : Logic.conf
|
||||||
|
};
|
||||||
|
worker.sendMessage(msg);
|
||||||
|
}
|
||||||
|
}
|
164
qml/pages/components/Navigation.qml
Normal file
164
qml/pages/components/Navigation.qml
Normal file
|
@ -0,0 +1,164 @@
|
||||||
|
import QtQuick 2.0
|
||||||
|
import Sailfish.Silica 1.0
|
||||||
|
import QtGraphicalEffects 1.0
|
||||||
|
|
||||||
|
SilicaGridView {
|
||||||
|
signal slideshowShow(int vIndex);
|
||||||
|
signal slideshowIndexChanged(int vIndex);
|
||||||
|
onSlideshowIndexChanged: {
|
||||||
|
navigateTo(vIndex)
|
||||||
|
}
|
||||||
|
|
||||||
|
id: gridView
|
||||||
|
property bool isPortrait: false
|
||||||
|
ListModel {
|
||||||
|
id: listModel
|
||||||
|
ListElement {
|
||||||
|
icon: "../../images/home.svg"
|
||||||
|
slug: "timeline"
|
||||||
|
name: "Timeline"
|
||||||
|
active: true
|
||||||
|
unread: false
|
||||||
|
}
|
||||||
|
ListElement {
|
||||||
|
icon: "../../images/home.svg"
|
||||||
|
slug: "mentions"
|
||||||
|
name: "Mentions"
|
||||||
|
active: false
|
||||||
|
unread: false
|
||||||
|
}
|
||||||
|
ListElement {
|
||||||
|
icon: "../../images/notification.svg"
|
||||||
|
slug: "msgs"
|
||||||
|
name: "Messagess"
|
||||||
|
active: false
|
||||||
|
}
|
||||||
|
ListElement {
|
||||||
|
icon: "../../images/search.svg"
|
||||||
|
slug: "search"
|
||||||
|
name: "Search"
|
||||||
|
active: false
|
||||||
|
unread: false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
model: listModel
|
||||||
|
anchors.fill: parent
|
||||||
|
currentIndex: -1
|
||||||
|
|
||||||
|
cellWidth: isPortrait ? gridView.width : gridView.width / listModel.count
|
||||||
|
cellHeight: isPortrait ? gridView.height/listModel.count : gridView.height
|
||||||
|
|
||||||
|
|
||||||
|
delegate: BackgroundItem {
|
||||||
|
clip: true
|
||||||
|
id: rectangle
|
||||||
|
width: gridView.cellWidth
|
||||||
|
height: gridView.cellHeight
|
||||||
|
GridView.onAdd: AddAnimation {
|
||||||
|
target: rectangle
|
||||||
|
}
|
||||||
|
GridView.onRemove: RemoveAnimation {
|
||||||
|
target: rectangle
|
||||||
|
}
|
||||||
|
GlassItem {
|
||||||
|
id: effect
|
||||||
|
visible: !isPortrait && unread
|
||||||
|
width: Theme.itemSizeMedium
|
||||||
|
height: Theme.itemSizeMedium
|
||||||
|
dimmed: true
|
||||||
|
anchors.bottom: parent.bottom
|
||||||
|
anchors.bottomMargin: -height/2
|
||||||
|
anchors.horizontalCenter: parent.horizontalCenter
|
||||||
|
color: Theme.highlightColor
|
||||||
|
}
|
||||||
|
|
||||||
|
GlassItem {
|
||||||
|
id: effect2
|
||||||
|
visible: isPortrait && unread
|
||||||
|
width: Theme.itemSizeMedium
|
||||||
|
height: Theme.itemSizeMedium
|
||||||
|
dimmed: false
|
||||||
|
anchors.right: parent.right;
|
||||||
|
anchors.rightMargin: -height/2;
|
||||||
|
anchors.verticalCenter: parent.verticalCenter
|
||||||
|
color: Theme.highlightColor
|
||||||
|
}
|
||||||
|
|
||||||
|
OpacityRampEffect {
|
||||||
|
sourceItem: label
|
||||||
|
offset: 0.5
|
||||||
|
}
|
||||||
|
|
||||||
|
/*Image {
|
||||||
|
source: model.icon + (highlighted
|
||||||
|
? Theme.highlightColor
|
||||||
|
: (model.active ? Theme.primaryColor : Theme.secondaryHighlightColor))
|
||||||
|
anchors.centerIn: parent
|
||||||
|
}*/
|
||||||
|
Image {
|
||||||
|
id: image
|
||||||
|
source: model.icon + (highlighted
|
||||||
|
? Theme.highlightColor
|
||||||
|
: (model.active ? Theme.primaryColor : Theme.secondaryHighlightColor))
|
||||||
|
anchors.centerIn: parent
|
||||||
|
smooth: true
|
||||||
|
visible: false
|
||||||
|
}
|
||||||
|
ColorOverlay {
|
||||||
|
anchors.fill: image
|
||||||
|
source: image
|
||||||
|
color: (highlighted
|
||||||
|
? Theme.highlightColor
|
||||||
|
: (model.active ? Theme.primaryColor : Theme.secondaryHighlightColor))
|
||||||
|
}
|
||||||
|
Text {
|
||||||
|
anchors.centerIn: parent
|
||||||
|
visible: false
|
||||||
|
text: model.icon
|
||||||
|
color: (highlighted
|
||||||
|
? Theme.highlightColor
|
||||||
|
: (model.active ? Theme.primaryColor : Theme.secondaryHighlightColor))
|
||||||
|
}
|
||||||
|
|
||||||
|
Label {
|
||||||
|
id: label
|
||||||
|
visible: false
|
||||||
|
anchors {
|
||||||
|
bottom: parent.bottom
|
||||||
|
}
|
||||||
|
horizontalAlignment : Text.AlignHCente
|
||||||
|
width: parent.width
|
||||||
|
color: (highlighted ? Theme.highlightColor : Theme.secondaryHighlightColor)
|
||||||
|
|
||||||
|
text: {
|
||||||
|
return model.name.toUpperCase();
|
||||||
|
}
|
||||||
|
|
||||||
|
font {
|
||||||
|
pixelSize: Theme.fontSizeExtraSmall
|
||||||
|
family: Theme.fontFamilyHeading
|
||||||
|
}
|
||||||
|
}
|
||||||
|
onClicked: {
|
||||||
|
slideshowShow(index)
|
||||||
|
console.log(index)
|
||||||
|
navigateTo(model.slug)
|
||||||
|
effect.state = "right"
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
function navigateTo(slug){
|
||||||
|
for(var i = 0; i < listModel.count; i++){
|
||||||
|
if (listModel.get(i).slug === slug || i===slug)
|
||||||
|
listModel.setProperty(i, 'active', true);
|
||||||
|
else
|
||||||
|
listModel.setProperty(i, 'active', false);
|
||||||
|
}
|
||||||
|
console.log(slug)
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
VerticalScrollDecorator {}
|
||||||
|
}
|
158
qml/pages/components/Notification.qml
Normal file
158
qml/pages/components/Notification.qml
Normal file
|
@ -0,0 +1,158 @@
|
||||||
|
import QtQuick 2.0
|
||||||
|
import Sailfish.Silica 1.0
|
||||||
|
import QtGraphicalEffects 1.0
|
||||||
|
|
||||||
|
BackgroundItem {
|
||||||
|
signal send (string notice)
|
||||||
|
|
||||||
|
id: delegate
|
||||||
|
//property string text: "0"
|
||||||
|
width: parent.width
|
||||||
|
signal navigateTo(string link)
|
||||||
|
height: lblText.paintedHeight + (lblText.text.length > 0 ? Theme.paddingLarge : 0 )+ lblName.paintedHeight + Theme.paddingLarge
|
||||||
|
|
||||||
|
Image {
|
||||||
|
id: avatar
|
||||||
|
x: Theme.horizontalPageMargin
|
||||||
|
y: Theme.paddingLarge
|
||||||
|
asynchronous: true
|
||||||
|
width: Theme.iconSizeMedium
|
||||||
|
height: width
|
||||||
|
smooth: true
|
||||||
|
source: account_avatar
|
||||||
|
visible: true
|
||||||
|
MouseArea {
|
||||||
|
anchors.fill: parent
|
||||||
|
onClicked: {
|
||||||
|
pageStack.push(Qt.resolvedUrl("../Profile.qml"), {
|
||||||
|
"user_id": account_id,
|
||||||
|
"displayname": account_display_name,
|
||||||
|
"username": account_acct,
|
||||||
|
"profileImage": account_avatar
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
Label {
|
||||||
|
id: lblName
|
||||||
|
anchors {
|
||||||
|
top: avatar.top
|
||||||
|
topMargin: 0
|
||||||
|
left: avatar.right
|
||||||
|
leftMargin: Theme.paddingMedium
|
||||||
|
}
|
||||||
|
text: account_display_name
|
||||||
|
font.weight: Font.Bold
|
||||||
|
font.pixelSize: Theme.fontSizeSmall
|
||||||
|
color: (pressed ? Theme.highlightColor : Theme.primaryColor)
|
||||||
|
}
|
||||||
|
|
||||||
|
Image {
|
||||||
|
id: iconVerified
|
||||||
|
y: Theme.paddingLarge
|
||||||
|
anchors {
|
||||||
|
left: lblName.right
|
||||||
|
leftMargin: Theme.paddingSmall
|
||||||
|
verticalCenter: lblName.verticalCenter
|
||||||
|
}
|
||||||
|
visible: account_locked
|
||||||
|
width: account_locked ? Theme.iconSizeExtraSmall*0.8 : 0
|
||||||
|
opacity: 0.8
|
||||||
|
height: width
|
||||||
|
source: "image://theme/icon-s-secure?" + (pressed
|
||||||
|
? Theme.highlightColor
|
||||||
|
: Theme.primaryColor)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Label {
|
||||||
|
id: lblScreenName
|
||||||
|
anchors {
|
||||||
|
left: iconVerified.right
|
||||||
|
right: lblDate.left
|
||||||
|
leftMargin: Theme.paddingMedium
|
||||||
|
baseline: lblName.baseline
|
||||||
|
}
|
||||||
|
truncationMode: TruncationMode.Fade
|
||||||
|
text: '@'+account_acct
|
||||||
|
font.pixelSize: Theme.fontSizeExtraSmall
|
||||||
|
color: (pressed ? Theme.secondaryHighlightColor : Theme.secondaryColor)
|
||||||
|
}
|
||||||
|
Label {
|
||||||
|
function timestamp() {
|
||||||
|
var txt = Format.formatDate(created_at, Formatter.Timepoint)
|
||||||
|
var elapsed = Format.formatDate(created_at, Formatter.DurationElapsedShort)
|
||||||
|
return (elapsed ? elapsed : txt )
|
||||||
|
}
|
||||||
|
id: lblDate
|
||||||
|
color: (pressed ? Theme.highlightColor : Theme.primaryColor)
|
||||||
|
text: Format.formatDate(created_at, new Date() - created_at < 60*60*1000 ? Formatter.DurationElapsedShort : Formatter.TimeValueTwentyFourHours)
|
||||||
|
font.pixelSize: Theme.fontSizeExtraSmall
|
||||||
|
horizontalAlignment: Text.AlignRight
|
||||||
|
anchors {
|
||||||
|
right: parent.right
|
||||||
|
baseline: lblName.baseline
|
||||||
|
rightMargin: Theme.paddingLarge
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Label {
|
||||||
|
id: lblText
|
||||||
|
anchors {
|
||||||
|
left: lblName.left
|
||||||
|
right: parent.right
|
||||||
|
top: lblScreenName.bottom
|
||||||
|
topMargin: Theme.paddingSmall
|
||||||
|
rightMargin: Theme.paddingLarge
|
||||||
|
}
|
||||||
|
height: content.length ? paintedHeight : 0
|
||||||
|
onLinkActivated: {
|
||||||
|
console.log(link)
|
||||||
|
if (link[0] === "@") {
|
||||||
|
pageStack.push(Qt.resolvedUrl("../Profile.qml"), {
|
||||||
|
"name": "",
|
||||||
|
"username": link.substring(1),
|
||||||
|
"profileImage": ""
|
||||||
|
})
|
||||||
|
} else if (link[0] === "#") {
|
||||||
|
|
||||||
|
pageStack.pop(pageStack.find(function(page) {
|
||||||
|
var check = page.isFirstPage === true;
|
||||||
|
if (check)
|
||||||
|
page.onLinkActivated(link)
|
||||||
|
return check;
|
||||||
|
}));
|
||||||
|
|
||||||
|
send(link)
|
||||||
|
} else {
|
||||||
|
pageStack.push(Qt.resolvedUrl("../Browser.qml"), {"href" : link})
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
text: {
|
||||||
|
switch (type){
|
||||||
|
case "mention":
|
||||||
|
return qsTr("metioned you")
|
||||||
|
case "reblog":
|
||||||
|
return qsTr("boosted your status")
|
||||||
|
case "favourite":
|
||||||
|
return qsTr("favourited your status")
|
||||||
|
case "follow":
|
||||||
|
return qsTr("followed you")
|
||||||
|
default:
|
||||||
|
return type
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
textFormat: Text.StyledText
|
||||||
|
linkColor : Theme.highlightColor
|
||||||
|
wrapMode: Text.Wrap
|
||||||
|
maximumLineCount: 6
|
||||||
|
font.pixelSize: Theme.fontSizeSmall
|
||||||
|
color: (pressed ? Theme.highlightColor : Theme.primaryColor)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
73
qml/pages/components/ProfileHeader.qml
Normal file
73
qml/pages/components/ProfileHeader.qml
Normal file
|
@ -0,0 +1,73 @@
|
||||||
|
import QtQuick 2.0
|
||||||
|
import Sailfish.Silica 1.0
|
||||||
|
|
||||||
|
Item {
|
||||||
|
id: header
|
||||||
|
property int value: 0;
|
||||||
|
property string title: "";
|
||||||
|
property string description: "";
|
||||||
|
property string image: "";
|
||||||
|
property string bg: "";
|
||||||
|
width: parent.width
|
||||||
|
height: icon.height + Theme.paddingLarge*2
|
||||||
|
/*Image {
|
||||||
|
anchors.fill: parent
|
||||||
|
asynchronous: true
|
||||||
|
fillMode: Image.PreserveAspectCrop
|
||||||
|
source: bg
|
||||||
|
opacity: 0.3
|
||||||
|
}*/
|
||||||
|
Rectangle {
|
||||||
|
anchors.fill: parent
|
||||||
|
opacity: 0.1
|
||||||
|
gradient: Gradient {
|
||||||
|
GradientStop { position: 0.0; color: Theme.highlightBackgroundColor }
|
||||||
|
GradientStop { position: 1.0; color: Theme.highlightBackgroundColor }
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
Image {
|
||||||
|
id: icon
|
||||||
|
anchors {
|
||||||
|
left: parent.left
|
||||||
|
leftMargin: Theme.paddingLarge
|
||||||
|
top: parent.top
|
||||||
|
topMargin: Theme.paddingLarge
|
||||||
|
}
|
||||||
|
asynchronous: true
|
||||||
|
width: description === "" ? Theme.iconSizeMedium : Theme.iconSizeLarge
|
||||||
|
height: width
|
||||||
|
source: image
|
||||||
|
}
|
||||||
|
Column {
|
||||||
|
anchors {
|
||||||
|
left: icon.left
|
||||||
|
leftMargin: Theme.paddingLarge
|
||||||
|
right: parent.right
|
||||||
|
rightMargin: Theme.paddingLarge
|
||||||
|
verticalCenter: parent.verticalCenter
|
||||||
|
}
|
||||||
|
Label {
|
||||||
|
id: ttl
|
||||||
|
text: title
|
||||||
|
height: contentHeight
|
||||||
|
color: Theme.highlightColor
|
||||||
|
font.pixelSize: Theme.fontSizeLarge
|
||||||
|
font.family: Theme.fontFamilyHeading
|
||||||
|
horizontalAlignment: Text.AlignRight
|
||||||
|
truncationMode: TruncationMode.Fade
|
||||||
|
width: parent.width
|
||||||
|
}
|
||||||
|
Label {
|
||||||
|
height: description === "" ? 0 : contentHeight
|
||||||
|
text: description
|
||||||
|
color: Theme.secondaryHighlightColor
|
||||||
|
font.pixelSize: Theme.fontSizeSmall
|
||||||
|
font.family: Theme.fontFamilyHeading
|
||||||
|
horizontalAlignment: Text.AlignRight
|
||||||
|
truncationMode: TruncationMode.Fade
|
||||||
|
width: parent.width
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
165
qml/pages/components/Toot.qml
Normal file
165
qml/pages/components/Toot.qml
Normal file
|
@ -0,0 +1,165 @@
|
||||||
|
import QtQuick 2.0
|
||||||
|
import Sailfish.Silica 1.0
|
||||||
|
import QtGraphicalEffects 1.0
|
||||||
|
|
||||||
|
BackgroundItem {
|
||||||
|
signal send (string notice)
|
||||||
|
|
||||||
|
id: delegate
|
||||||
|
//property string text: "0"
|
||||||
|
width: parent.width
|
||||||
|
signal navigateTo(string link)
|
||||||
|
height: lblText.paintedHeight + (lblText.text.length > 0 ? Theme.paddingLarge : 0 )+ lblName.paintedHeight + (isReblog ? Theme.paddingLarge + iconRT.height : 0) + Theme.paddingLarge
|
||||||
|
Image {
|
||||||
|
id: iconRT
|
||||||
|
y: Theme.paddingLarge
|
||||||
|
anchors {
|
||||||
|
right: avatar.right
|
||||||
|
}
|
||||||
|
visible: isReblog
|
||||||
|
width: Theme.iconSizeExtraSmall
|
||||||
|
height: width
|
||||||
|
source: "image://theme/icon-s-retweet?" + (pressed ? Theme.primaryColor : Theme.secondaryColor)
|
||||||
|
}
|
||||||
|
Label {
|
||||||
|
id: lblRtByName
|
||||||
|
visible: isReblog
|
||||||
|
anchors {
|
||||||
|
left: lblName.left
|
||||||
|
bottom: iconRT.bottom
|
||||||
|
}
|
||||||
|
text: '@' + retweetScreenName + ' boosted'
|
||||||
|
font.pixelSize: Theme.fontSizeExtraSmall
|
||||||
|
color: Theme.secondaryColor
|
||||||
|
}
|
||||||
|
Image {
|
||||||
|
id: avatar
|
||||||
|
x: Theme.horizontalPageMargin
|
||||||
|
y: Theme.paddingLarge + (isReblog ? iconRT.height+Theme.paddingMedium : 0)
|
||||||
|
asynchronous: true
|
||||||
|
width: Theme.iconSizeMedium
|
||||||
|
height: width
|
||||||
|
smooth: true
|
||||||
|
source: account_avatar
|
||||||
|
visible: true
|
||||||
|
MouseArea {
|
||||||
|
anchors.fill: parent
|
||||||
|
onClicked: {
|
||||||
|
pageStack.push(Qt.resolvedUrl("../Profile.qml"), {
|
||||||
|
"user_id": account_id,
|
||||||
|
"displayname": displayname,
|
||||||
|
"username": username,
|
||||||
|
"profileImage": account_avatar
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
Label {
|
||||||
|
id: lblName
|
||||||
|
anchors {
|
||||||
|
top: avatar.top
|
||||||
|
topMargin: 0
|
||||||
|
left: avatar.right
|
||||||
|
leftMargin: Theme.paddingMedium
|
||||||
|
}
|
||||||
|
text: displayname
|
||||||
|
font.weight: Font.Bold
|
||||||
|
font.pixelSize: Theme.fontSizeSmall
|
||||||
|
color: (pressed ? Theme.highlightColor : Theme.primaryColor)
|
||||||
|
}
|
||||||
|
|
||||||
|
Image {
|
||||||
|
id: iconVerified
|
||||||
|
y: Theme.paddingLarge
|
||||||
|
anchors {
|
||||||
|
left: lblName.right
|
||||||
|
leftMargin: Theme.paddingSmall
|
||||||
|
verticalCenter: lblName.verticalCenter
|
||||||
|
}
|
||||||
|
visible: account_locked
|
||||||
|
width: account_locked ? Theme.iconSizeExtraSmall*0.8 : 0
|
||||||
|
opacity: 0.8
|
||||||
|
height: width
|
||||||
|
source: "image://theme/icon-s-secure?" + (pressed
|
||||||
|
? Theme.highlightColor
|
||||||
|
: Theme.primaryColor)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Label {
|
||||||
|
id: lblScreenName
|
||||||
|
anchors {
|
||||||
|
left: iconVerified.right
|
||||||
|
right: lblDate.left
|
||||||
|
leftMargin: Theme.paddingMedium
|
||||||
|
baseline: lblName.baseline
|
||||||
|
}
|
||||||
|
truncationMode: TruncationMode.Fade
|
||||||
|
text: '@'+username
|
||||||
|
font.pixelSize: Theme.fontSizeExtraSmall
|
||||||
|
color: (pressed ? Theme.secondaryHighlightColor : Theme.secondaryColor)
|
||||||
|
}
|
||||||
|
Label {
|
||||||
|
function timestamp() {
|
||||||
|
var txt = Format.formatDate(created_at, Formatter.Timepoint)
|
||||||
|
var elapsed = Format.formatDate(created_at, Formatter.DurationElapsedShort)
|
||||||
|
return (elapsed ? elapsed : txt )
|
||||||
|
}
|
||||||
|
id: lblDate
|
||||||
|
color: (pressed ? Theme.highlightColor : Theme.primaryColor)
|
||||||
|
text: Format.formatDate(created_at, new Date() - created_at < 60*60*1000 ? Formatter.DurationElapsedShort : Formatter.TimeValueTwentyFourHours)
|
||||||
|
font.pixelSize: Theme.fontSizeExtraSmall
|
||||||
|
horizontalAlignment: Text.AlignRight
|
||||||
|
anchors {
|
||||||
|
right: parent.right
|
||||||
|
baseline: lblName.baseline
|
||||||
|
rightMargin: Theme.paddingLarge
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Label {
|
||||||
|
id: lblText
|
||||||
|
anchors {
|
||||||
|
left: lblName.left
|
||||||
|
right: parent.right
|
||||||
|
top: lblScreenName.bottom
|
||||||
|
topMargin: Theme.paddingSmall
|
||||||
|
rightMargin: Theme.paddingLarge
|
||||||
|
}
|
||||||
|
height: content.length ? paintedHeight : 0
|
||||||
|
onLinkActivated: {
|
||||||
|
console.log(link)
|
||||||
|
if (link[0] === "@") {
|
||||||
|
pageStack.push(Qt.resolvedUrl("../Profile.qml"), {
|
||||||
|
"name": "",
|
||||||
|
"username": link.substring(1),
|
||||||
|
"profileImage": ""
|
||||||
|
})
|
||||||
|
} else if (link[0] === "#") {
|
||||||
|
|
||||||
|
pageStack.pop(pageStack.find(function(page) {
|
||||||
|
var check = page.isFirstPage === true;
|
||||||
|
if (check)
|
||||||
|
page.onLinkActivated(link)
|
||||||
|
return check;
|
||||||
|
}));
|
||||||
|
|
||||||
|
send(link)
|
||||||
|
} else {
|
||||||
|
pageStack.push(Qt.resolvedUrl("../Browser.qml"), {"href" : link})
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
text: content
|
||||||
|
textFormat: Text.StyledText
|
||||||
|
linkColor : Theme.highlightColor
|
||||||
|
wrapMode: Text.Wrap
|
||||||
|
maximumLineCount: 6
|
||||||
|
font.pixelSize: Theme.fontSizeSmall
|
||||||
|
color: (pressed ? Theme.highlightColor : Theme.primaryColor)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -12,11 +12,111 @@
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
|
<context>
|
||||||
|
<name>Browser</name>
|
||||||
|
<message>
|
||||||
|
<source>Open in Browser</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Web mode</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Reading mode</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>MainPage</name>
|
<name>MainPage</name>
|
||||||
<message>
|
<message>
|
||||||
<source>Show Page 2</source>
|
<source>Timeline</source>
|
||||||
<translation type="unfinished">Zur Seite 2</translation>
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Home</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Notifications</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
</context>
|
||||||
|
<context>
|
||||||
|
<name>MyList</name>
|
||||||
|
<message>
|
||||||
|
<source>Load more</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
</context>
|
||||||
|
<context>
|
||||||
|
<name>Notification</name>
|
||||||
|
<message>
|
||||||
|
<source>metioned you</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>boosted your status</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>favourited your status</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>followed you</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
</context>
|
||||||
|
<context>
|
||||||
|
<name>Profile</name>
|
||||||
|
<message>
|
||||||
|
<source>Unfollow</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Follow request sent!</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Following</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Mute</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Unmute</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Unblock</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Block</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Statuses</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Favourites</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Follow</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Summary</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Followers</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
|
|
|
@ -5,14 +5,118 @@
|
||||||
<name></name>
|
<name></name>
|
||||||
<message id="Logout">
|
<message id="Logout">
|
||||||
<source></source>
|
<source></source>
|
||||||
<translation>Tooter</translation>
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message id="Login">
|
||||||
|
<source></source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>Settings</name>
|
<name>Browser</name>
|
||||||
|
<message>
|
||||||
|
<source>Open in Browser</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Web mode</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Reading mode</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
</context>
|
||||||
|
<context>
|
||||||
|
<name>MainPage</name>
|
||||||
|
<message>
|
||||||
|
<source>Timeline</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Home</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Notifications</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
</context>
|
||||||
|
<context>
|
||||||
|
<name>MyList</name>
|
||||||
<message>
|
<message>
|
||||||
<source>Load more</source>
|
<source>Load more</source>
|
||||||
<translation>Cargar más</translation>
|
<translation type="unfinished">Cargar más</translation>
|
||||||
|
</message>
|
||||||
|
</context>
|
||||||
|
<context>
|
||||||
|
<name>Notification</name>
|
||||||
|
<message>
|
||||||
|
<source>metioned you</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>boosted your status</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>favourited your status</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>followed you</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
</context>
|
||||||
|
<context>
|
||||||
|
<name>Profile</name>
|
||||||
|
<message>
|
||||||
|
<source>Unfollow</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Follow request sent!</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Following</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Mute</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Unmute</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Unblock</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Block</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Statuses</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Favourites</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Follow</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Summary</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Followers</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
|
|
Loading…
Reference in a new issue