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 \
|
||||
qml/cover/CoverPage.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.spec \
|
||||
rpm/harbour-tooter.yaml \
|
||||
|
@ -39,7 +44,16 @@ TRANSLATIONS += translations/harbour-tooter-de.ts
|
|||
|
||||
DISTFILES += \
|
||||
qml/lib/API.js \
|
||||
qml/pages/MainPage.qml \
|
||||
qml/pages/LoginPage.qml \
|
||||
qml/pages/JSONListModel.qml \
|
||||
qml/lib/jsonpath.js
|
||||
qml/lib/jsonpath.js \
|
||||
qml/images/notification.svg \
|
||||
qml/images/home.svg \
|
||||
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"?>
|
||||
<!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>
|
||||
<data>
|
||||
<variable>EnvironmentId</variable>
|
||||
<value type="QByteArray">{25497605-1bff-4134-a878-76c1475dd8e3}</value>
|
||||
<value type="QByteArray">{41ec03ca-9430-48f3-b421-990d428b2838}</value>
|
||||
</data>
|
||||
<data>
|
||||
<variable>ProjectExplorer.Project.ActiveTarget</variable>
|
||||
|
@ -61,12 +61,12 @@
|
|||
<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="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.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>
|
||||
<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.BuildStepList.Step.0">
|
||||
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||
|
@ -138,7 +138,7 @@
|
|||
<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>
|
||||
<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.BuildStepList.Step.0">
|
||||
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||
|
@ -210,7 +210,7 @@
|
|||
<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>
|
||||
<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.BuildStepList.Step.0">
|
||||
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||
|
@ -396,7 +396,7 @@
|
|||
<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="QString" key="MerRunConfiguration.QmlLiveBenchWorkspace">/Users/dysko/GIT/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>
|
||||
|
@ -426,12 +426,12 @@
|
|||
<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="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.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>
|
||||
<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.BuildStepList.Step.0">
|
||||
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||
|
@ -503,7 +503,7 @@
|
|||
<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>
|
||||
<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.BuildStepList.Step.0">
|
||||
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||
|
@ -575,7 +575,7 @@
|
|||
<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>
|
||||
<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.BuildStepList.Step.0">
|
||||
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||
|
@ -761,7 +761,7 @@
|
|||
<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="QString" key="MerRunConfiguration.QmlLiveBenchWorkspace">/Users/dysko/GIT/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>
|
||||
|
@ -779,7 +779,7 @@
|
|||
<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.UseMultiProcess">true</value>
|
||||
<value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
|
||||
<value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
|
||||
</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 {
|
||||
iconSource: "image://theme/icon-cover-next"
|
||||
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)
|
||||
}
|
||||
|
||||
// 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 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 = "?";
|
||||
Qt.include("Mastodon.js")
|
||||
|
||||
// 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;
|
||||
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 modelTLhome = Qt.createQmlObject('import QtQuick 2.0; ListModel { }', Qt.application, 'InternalQmlObject');
|
||||
var modelTLpublic = Qt.createQmlObject('import QtQuick 2.0; ListModel { }', Qt.application, 'InternalQmlObject');
|
||||
var modelTLnotifications = Qt.createQmlObject('import QtQuick 2.0; ListModel { }', Qt.application, 'InternalQmlObject');
|
||||
|
||||
|
||||
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 Sailfish.Silica 1.0
|
||||
import "../lib/API.js" as Logic
|
||||
import "./components/"
|
||||
|
||||
|
||||
Page {
|
||||
|
@ -39,42 +40,97 @@ Page {
|
|||
// The effective value will be restricted by ApplicationWindow.allowedOrientations
|
||||
allowedOrientations: Orientation.All
|
||||
|
||||
// To enable PullDownMenu, place our content in a SilicaFlickable
|
||||
SilicaFlickable {
|
||||
anchors.fill: parent
|
||||
|
||||
PageHeader {
|
||||
title: "Tooter"
|
||||
}
|
||||
|
||||
// PullDownMenu and PushUpMenu must be declared in SilicaFlickable, SilicaListView or SilicaGridView
|
||||
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';
|
||||
DockedPanel {
|
||||
id: infoPanel
|
||||
open: true
|
||||
width: mainPage.isPortrait ? parent.width : Theme.itemSizeLarge
|
||||
height: mainPage.isPortrait ? Theme.itemSizeLarge : parent.height
|
||||
dock: mainPage.isPortrait ? Dock.Bottom : Dock.Right
|
||||
Navigation {
|
||||
id: navigation
|
||||
isPortrait: !mainPage.isPortrait
|
||||
onSlideshowShow: {
|
||||
console.log(vIndex)
|
||||
slideshow.positionViewAtIndex(vIndex, ListView.SnapToItem)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
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: {
|
||||
/*Mastodon.api.post("statuses", {status:"First toot by Tooter - Mastodon client for #SailfishOS"}, function (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>
|
||||
</message>
|
||||
</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>
|
||||
<name>MainPage</name>
|
||||
<message>
|
||||
<source>Show Page 2</source>
|
||||
<translation type="unfinished">Zur Seite 2</translation>
|
||||
<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>
|
||||
<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>
|
||||
</context>
|
||||
<context>
|
||||
|
|
|
@ -5,14 +5,118 @@
|
|||
<name></name>
|
||||
<message id="Logout">
|
||||
<source></source>
|
||||
<translation>Tooter</translation>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message id="Login">
|
||||
<source></source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</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>
|
||||
<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>
|
||||
</context>
|
||||
<context>
|
||||
|
|
Loading…
Reference in a new issue