Downloading improvements

This commit is contained in:
muki 2014-09-06 14:24:31 +02:00
parent 4ecab14ea4
commit 321f629a9b
29 changed files with 814 additions and 287 deletions

Binary file not shown.

View file

@ -5,28 +5,28 @@
<name>AboutPage</name>
<message>
<location filename="../qml/harmattan/AboutPage.qml" line="42"/>
<location filename="../qml/sailfish/AboutPage.qml" line="45"/>
<location filename="../qml/sailfish/AboutPage.qml" line="54"/>
<location filename="../qml/symbian/AboutPage.qml" line="40"/>
<source>About</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/harmattan/AboutPage.qml" line="82"/>
<location filename="../qml/sailfish/AboutPage.qml" line="66"/>
<location filename="../qml/sailfish/AboutPage.qml" line="75"/>
<location filename="../qml/symbian/AboutPage.qml" line="80"/>
<source>Version: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/harmattan/AboutPage.qml" line="93"/>
<location filename="../qml/sailfish/AboutPage.qml" line="74"/>
<location filename="../qml/sailfish/AboutPage.qml" line="83"/>
<location filename="../qml/symbian/AboutPage.qml" line="91"/>
<source>An unofficial Netvibes feed reader, specially designed to work offline.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/sailfish/AboutPage.qml" line="100"/>
<source>What&apos;s new</source>
<location filename="../qml/sailfish/AboutPage.qml" line="109"/>
<source>What&apos;s new in this release</source>
<translation type="unfinished"></translation>
</message>
</context>
@ -38,38 +38,63 @@
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/sailfish/ChangelogPage.qml" line="58"/>
<source>Netvibes &quot;Multi-Feed&quot; widget support</source>
<location filename="../qml/sailfish/ChangelogPage.qml" line="54"/>
<source>Multi-Feed widget support</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/sailfish/ChangelogPage.qml" line="62"/>
<source>Double-click marks article as read/unread</source>
<location filename="../qml/sailfish/ChangelogPage.qml" line="55"/>
<source>Kaktus can also read Feeds, which are aggregated in the Netvibes Multi-Feed widget.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/sailfish/ChangelogPage.qml" line="66"/>
<source>Option to show all feeds in one list (see &quot;Browsing Mode option&quot;)</source>
<location filename="../qml/sailfish/ChangelogPage.qml" line="65"/>
<source>There are new Browsing Modes. It is possible to show all articles in the one list or group by Tabs or Feeds.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/sailfish/ChangelogPage.qml" line="70"/>
<source>Indicator for articles that have been added since last sync</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/sailfish/ChangelogPage.qml" line="74"/>
<source>Option to delete cache data (see &quot;Cache size&quot; option)</source>
<location filename="../qml/sailfish/ChangelogPage.qml" line="72"/>
<source>Articles, that have been added since last sync, are marked with small dash on the right side of the list.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/sailfish/ChangelogPage.qml" line="78"/>
<source>Improved display of images</source>
<source>Cache data can be deleted manually. The option is located on the settings page.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/sailfish/ChangelogPage.qml" line="82"/>
<source>Many UI improvements</source>
<source>Image caching improvements</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/sailfish/ChangelogPage.qml" line="83"/>
<source>Caching mechanism for images are improved. Files with images are downloaded more effectively.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/sailfish/ChangelogPage.qml" line="60"/>
<source>In addition to the context menu option, marking as read/unread can be done by double-click.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/sailfish/ChangelogPage.qml" line="64"/>
<source>New Browsing Modes</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/sailfish/ChangelogPage.qml" line="71"/>
<source>Indicator for new articles</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/sailfish/ChangelogPage.qml" line="77"/>
<source>Option to delete cache data</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/sailfish/ChangelogPage.qml" line="59"/>
<source>Double-click marks article as read/unread</source>
<translation type="unfinished"></translation>
</message>
</context>
@ -150,12 +175,12 @@ Network connection is unavailable</source>
<context>
<name>DashboardDialog</name>
<message>
<location filename="../qml/sailfish/DashboardDialog.qml" line="47"/>
<location filename="../qml/sailfish/DashboardDialog.qml" line="56"/>
<source>Dashboards</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/sailfish/DashboardDialog.qml" line="48"/>
<location filename="../qml/sailfish/DashboardDialog.qml" line="57"/>
<source>Change</source>
<translation type="unfinished"></translation>
</message>
@ -167,7 +192,7 @@ Network connection is unavailable</source>
</message>
<message>
<location filename="../qml/harmattan/DashboardDialog.qml" line="73"/>
<location filename="../qml/sailfish/DashboardDialog.qml" line="81"/>
<location filename="../qml/sailfish/DashboardDialog.qml" line="90"/>
<location filename="../qml/symbian/DashboardDialog.qml" line="71"/>
<source>No dashboards</source>
<translation type="unfinished"></translation>
@ -176,12 +201,12 @@ Network connection is unavailable</source>
<context>
<name>DashboardPage</name>
<message>
<location filename="../qml/sailfish/DashboardPage.qml" line="55"/>
<location filename="../qml/sailfish/DashboardPage.qml" line="51"/>
<source>Dashboards</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/sailfish/DashboardPage.qml" line="87"/>
<location filename="../qml/sailfish/DashboardPage.qml" line="83"/>
<source>No dashboards</source>
<translation type="unfinished"></translation>
</message>
@ -213,7 +238,6 @@ Network connection is unavailable</source>
<name>EntryPage</name>
<message>
<location filename="../qml/harmattan/EntryPage.qml" line="83"/>
<location filename="../qml/sailfish/EntryPage.qml" line="125"/>
<location filename="../qml/symbian/EntryPage.qml" line="78"/>
<source>Please wait until Sync finishes</source>
<translation type="unfinished"></translation>
@ -283,6 +307,21 @@ Switching to Offline mode</source>
<source>All articles</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/sailfish/EntryPage.qml" line="125"/>
<source>Please wait until current task is complete</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/sailfish/EntryPage.qml" line="192"/>
<source>Wait until Sync finish</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/sailfish/EntryPage.qml" line="192"/>
<source>Pull down to do Sync</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ErrorPage</name>
@ -325,6 +364,16 @@ Switching to Offline mode</source>
<source>Feeds</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/sailfish/FeedPage.qml" line="202"/>
<source>Wait until Sync finish</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/sailfish/FeedPage.qml" line="202"/>
<source>Pull down to do Sync</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>MainPage</name>
@ -378,7 +427,7 @@ Network connection is unavailable</source>
</message>
<message>
<location filename="../qml/sailfish/PageMenu.qml" line="63"/>
<source>Syncing...</source>
<source>Busy...</source>
<translation type="unfinished"></translation>
</message>
<message>
@ -460,68 +509,63 @@ Network connection is unavailable</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/sailfish/SettingsPage.qml" line="174"/>
<source>Cache data deleted!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/sailfish/SettingsPage.qml" line="195"/>
<location filename="../qml/sailfish/SettingsPage.qml" line="196"/>
<source>Mode</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/sailfish/SettingsPage.qml" line="199"/>
<location filename="../qml/sailfish/SettingsPage.qml" line="200"/>
<source>Online</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/sailfish/SettingsPage.qml" line="200"/>
<location filename="../qml/sailfish/SettingsPage.qml" line="201"/>
<source>Offline</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/sailfish/SettingsPage.qml" line="212"/>
<location filename="../qml/sailfish/SettingsPage.qml" line="213"/>
<source>Cache articles</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/sailfish/SettingsPage.qml" line="228"/>
<location filename="../qml/sailfish/SettingsPage.qml" line="229"/>
<source>Browsing mode</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/sailfish/SettingsPage.qml" line="232"/>
<source>Tabs &amp; feeds &amp; articles</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/sailfish/SettingsPage.qml" line="233"/>
<source>Tabs &amp; articles</source>
<source>Tabs, Feeds &amp; articles</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/sailfish/SettingsPage.qml" line="234"/>
<source>Feeds &amp; articles</source>
<source>Tabs &amp; articles</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/sailfish/SettingsPage.qml" line="235"/>
<source>Feeds &amp; articles</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/sailfish/SettingsPage.qml" line="236"/>
<source>Only articles</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/sailfish/SettingsPage.qml" line="253"/>
<location filename="../qml/sailfish/SettingsPage.qml" line="254"/>
<source>Show only unread articles</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/sailfish/SettingsPage.qml" line="273"/>
<location filename="../qml/sailfish/SettingsPage.qml" line="274"/>
<source>Show Tab with saved articles</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/harmattan/SettingsPage.qml" line="143"/>
<location filename="../qml/sailfish/SettingsPage.qml" line="263"/>
<location filename="../qml/sailfish/SettingsPage.qml" line="264"/>
<location filename="../qml/symbian/SettingsPage.qml" line="136"/>
<source>Show icons &amp; images</source>
<translation type="unfinished"></translation>
@ -600,7 +644,7 @@ Network connection is unavailable</source>
</message>
<message>
<location filename="../qml/harmattan/SettingsPage.qml" line="119"/>
<location filename="../qml/sailfish/SettingsPage.qml" line="213"/>
<location filename="../qml/sailfish/SettingsPage.qml" line="214"/>
<location filename="../qml/symbian/SettingsPage.qml" line="112"/>
<source>After sync the content of all items will be downloaded and cached for access in Offline mode.</source>
<translation type="unfinished"></translation>
@ -619,61 +663,61 @@ Network connection is unavailable</source>
</message>
<message>
<location filename="../qml/harmattan/SettingsPage.qml" line="163"/>
<location filename="../qml/sailfish/SettingsPage.qml" line="283"/>
<location filename="../qml/sailfish/SettingsPage.qml" line="284"/>
<location filename="../qml/symbian/SettingsPage.qml" line="156"/>
<source>Power save mode</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/harmattan/SettingsPage.qml" line="164"/>
<location filename="../qml/sailfish/SettingsPage.qml" line="284"/>
<location filename="../qml/sailfish/SettingsPage.qml" line="285"/>
<location filename="../qml/symbian/SettingsPage.qml" line="157"/>
<source>When the phone or app goes to the idle state, all opened web pages will be closed to lower power consumption.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/sailfish/SettingsPage.qml" line="309"/>
<location filename="../qml/sailfish/SettingsPage.qml" line="310"/>
<source>Dynamic</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/harmattan/SettingsPage.qml" line="129"/>
<location filename="../qml/sailfish/SettingsPage.qml" line="223"/>
<location filename="../qml/sailfish/SettingsPage.qml" line="224"/>
<location filename="../qml/symbian/SettingsPage.qml" line="122"/>
<source>UI</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/harmattan/SettingsPage.qml" line="184"/>
<location filename="../qml/sailfish/SettingsPage.qml" line="305"/>
<location filename="../qml/sailfish/SettingsPage.qml" line="306"/>
<location filename="../qml/symbian/SettingsPage.qml" line="177"/>
<source>Orientation</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/sailfish/SettingsPage.qml" line="310"/>
<location filename="../qml/sailfish/SettingsPage.qml" line="311"/>
<source>Portrait</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/sailfish/SettingsPage.qml" line="311"/>
<location filename="../qml/sailfish/SettingsPage.qml" line="312"/>
<source>Landscape</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/harmattan/SettingsPage.qml" line="199"/>
<location filename="../qml/sailfish/SettingsPage.qml" line="319"/>
<location filename="../qml/sailfish/SettingsPage.qml" line="320"/>
<location filename="../qml/symbian/SettingsPage.qml" line="192"/>
<source>Offline viewer style</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/sailfish/SettingsPage.qml" line="329"/>
<location filename="../qml/sailfish/SettingsPage.qml" line="330"/>
<source>Black</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/sailfish/SettingsPage.qml" line="330"/>
<location filename="../qml/sailfish/SettingsPage.qml" line="331"/>
<source>White</source>
<translation type="unfinished"></translation>
</message>
@ -754,6 +798,11 @@ Network connection is unavailable</source>
<source>Tabs</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/sailfish/TabPage.qml" line="274"/>
<source>Pull down to do Sync</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/harmattan/TabPage.qml" line="158"/>
<location filename="../qml/sailfish/TabPage.qml" line="246"/>
@ -781,11 +830,6 @@ Network connection is unavailable</source>
<source>Press button to do first Sync</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/sailfish/TabPage.qml" line="274"/>
<source>Pull down to do first Sync</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/harmattan/TabPage.qml" line="179"/>
<location filename="../qml/sailfish/TabPage.qml" line="274"/>
@ -931,7 +975,7 @@ Network connection is unavailable</source>
<name>main</name>
<message>
<location filename="../qml/harmattan/main.qml" line="123"/>
<location filename="../qml/sailfish/main.qml" line="142"/>
<location filename="../qml/sailfish/main.qml" line="152"/>
<location filename="../qml/symbian/main.qml" line="120"/>
<source>An unknown error occurred! :-(</source>
<translation type="unfinished"></translation>
@ -967,7 +1011,7 @@ Network connection is unavailable</source>
</message>
<message>
<location filename="../qml/harmattan/main.qml" line="107"/>
<location filename="../qml/sailfish/main.qml" line="126"/>
<location filename="../qml/sailfish/main.qml" line="136"/>
<location filename="../qml/symbian/main.qml" line="104"/>
<source>Sync failed
Network connection is unavailable</source>
@ -976,8 +1020,8 @@ Network connection is unavailable</source>
<message>
<location filename="../qml/harmattan/main.qml" line="118"/>
<location filename="../qml/harmattan/main.qml" line="128"/>
<location filename="../qml/sailfish/main.qml" line="137"/>
<location filename="../qml/sailfish/main.qml" line="147"/>
<location filename="../qml/sailfish/main.qml" line="157"/>
<location filename="../qml/symbian/main.qml" line="115"/>
<location filename="../qml/symbian/main.qml" line="125"/>
<source>User &amp; Password do not match!</source>
@ -985,28 +1029,28 @@ Network connection is unavailable</source>
</message>
<message>
<location filename="../qml/harmattan/main.qml" line="132"/>
<location filename="../qml/sailfish/main.qml" line="151"/>
<location filename="../qml/sailfish/main.qml" line="161"/>
<location filename="../qml/symbian/main.qml" line="129"/>
<source>Successfully Signed In!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/harmattan/main.qml" line="137"/>
<location filename="../qml/sailfish/main.qml" line="155"/>
<location filename="../qml/sailfish/main.qml" line="165"/>
<location filename="../qml/symbian/main.qml" line="134"/>
<source>Receiving data... </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/harmattan/main.qml" line="150"/>
<location filename="../qml/sailfish/main.qml" line="170"/>
<location filename="../qml/sailfish/main.qml" line="180"/>
<location filename="../qml/symbian/main.qml" line="147"/>
<source>Initiating...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/harmattan/main.qml" line="154"/>
<location filename="../qml/sailfish/main.qml" line="174"/>
<location filename="../qml/sailfish/main.qml" line="184"/>
<location filename="../qml/symbian/main.qml" line="151"/>
<source>Updating...</source>
<translation type="unfinished"></translation>
@ -1033,14 +1077,14 @@ Network connection is unavailable</source>
</message>
<message>
<location filename="../qml/harmattan/main.qml" line="143"/>
<location filename="../qml/sailfish/main.qml" line="160"/>
<location filename="../qml/sailfish/main.qml" line="170"/>
<location filename="../qml/symbian/main.qml" line="140"/>
<source>Sending data to Netvibes...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/harmattan/main.qml" line="158"/>
<location filename="../qml/sailfish/main.qml" line="178"/>
<location filename="../qml/sailfish/main.qml" line="188"/>
<location filename="../qml/symbian/main.qml" line="155"/>
<source>Signing in...</source>
<translation type="unfinished"></translation>
@ -1049,9 +1093,9 @@ Network connection is unavailable</source>
<location filename="../qml/harmattan/main.qml" line="162"/>
<location filename="../qml/harmattan/main.qml" line="166"/>
<location filename="../qml/harmattan/main.qml" line="170"/>
<location filename="../qml/sailfish/main.qml" line="182"/>
<location filename="../qml/sailfish/main.qml" line="186"/>
<location filename="../qml/sailfish/main.qml" line="190"/>
<location filename="../qml/sailfish/main.qml" line="192"/>
<location filename="../qml/sailfish/main.qml" line="196"/>
<location filename="../qml/sailfish/main.qml" line="200"/>
<location filename="../qml/symbian/main.qml" line="159"/>
<location filename="../qml/symbian/main.qml" line="163"/>
<location filename="../qml/symbian/main.qml" line="167"/>
@ -1064,8 +1108,8 @@ Network connection is unavailable</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/sailfish/main.qml" line="66"/>
<source>Browsing mode changed!</source>
<location filename="../qml/sailfish/main.qml" line="235"/>
<source>Removing cache data...</source>
<translation type="unfinished"></translation>
</message>
</context>

Binary file not shown.

View file

@ -5,29 +5,33 @@
<name>AboutPage</name>
<message>
<location filename="../qml/harmattan/AboutPage.qml" line="42"/>
<location filename="../qml/sailfish/AboutPage.qml" line="45"/>
<location filename="../qml/sailfish/AboutPage.qml" line="54"/>
<location filename="../qml/symbian/AboutPage.qml" line="40"/>
<source>About</source>
<translation>O Programie</translation>
</message>
<message>
<location filename="../qml/harmattan/AboutPage.qml" line="82"/>
<location filename="../qml/sailfish/AboutPage.qml" line="66"/>
<location filename="../qml/sailfish/AboutPage.qml" line="75"/>
<location filename="../qml/symbian/AboutPage.qml" line="80"/>
<source>Version: %1</source>
<translation>Wersja: %1</translation>
</message>
<message>
<location filename="../qml/harmattan/AboutPage.qml" line="93"/>
<location filename="../qml/sailfish/AboutPage.qml" line="74"/>
<location filename="../qml/sailfish/AboutPage.qml" line="83"/>
<location filename="../qml/symbian/AboutPage.qml" line="91"/>
<source>An unofficial Netvibes feed reader, specially designed to work offline.</source>
<translation>Nieoficjalny czytnik kanałów RSS dla serwisu Netvibes.com. </translation>
</message>
<message>
<location filename="../qml/sailfish/AboutPage.qml" line="100"/>
<source>What&apos;s new</source>
<translation>Co jest nowego</translation>
<translation type="obsolete">Co jest nowego</translation>
</message>
<message>
<location filename="../qml/sailfish/AboutPage.qml" line="109"/>
<source>What&apos;s new in this release</source>
<translation>Co nowego w tej wersji</translation>
</message>
</context>
<context>
@ -46,38 +50,63 @@
<translation>Co jest nowego</translation>
</message>
<message>
<location filename="../qml/sailfish/ChangelogPage.qml" line="58"/>
<source>Netvibes &quot;Multi-Feed&quot; widget support</source>
<location filename="../qml/sailfish/ChangelogPage.qml" line="54"/>
<source>Multi-Feed widget support</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/sailfish/ChangelogPage.qml" line="62"/>
<source>Double-click marks article as read/unread</source>
<location filename="../qml/sailfish/ChangelogPage.qml" line="55"/>
<source>Kaktus can also read Feeds, which are aggregated in the Netvibes Multi-Feed widget.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/sailfish/ChangelogPage.qml" line="66"/>
<source>Option to show all feeds in one list (see &quot;Browsing Mode option&quot;)</source>
<location filename="../qml/sailfish/ChangelogPage.qml" line="65"/>
<source>There are new Browsing Modes. It is possible to show all articles in the one list or group by Tabs or Feeds.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/sailfish/ChangelogPage.qml" line="70"/>
<source>Indicator for articles that have been added since last sync</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/sailfish/ChangelogPage.qml" line="74"/>
<source>Option to delete cache data (see &quot;Cache size&quot; option)</source>
<location filename="../qml/sailfish/ChangelogPage.qml" line="72"/>
<source>Articles, that have been added since last sync, are marked with small dash on the right side of the list.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/sailfish/ChangelogPage.qml" line="78"/>
<source>Improved display of images</source>
<source>Cache data can be deleted manually. The option is located on the settings page.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/sailfish/ChangelogPage.qml" line="82"/>
<source>Many UI improvements</source>
<source>Image caching improvements</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/sailfish/ChangelogPage.qml" line="83"/>
<source>Caching mechanism for images are improved. Files with images are downloaded more effectively.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/sailfish/ChangelogPage.qml" line="60"/>
<source>In addition to the context menu option, marking as read/unread can be done by double-click.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/sailfish/ChangelogPage.qml" line="64"/>
<source>New Browsing Modes</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/sailfish/ChangelogPage.qml" line="71"/>
<source>Indicator for new articles</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/sailfish/ChangelogPage.qml" line="77"/>
<source>Option to delete cache data</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../qml/sailfish/ChangelogPage.qml" line="59"/>
<source>Double-click marks article as read/unread</source>
<translation type="unfinished"></translation>
</message>
</context>
@ -199,12 +228,12 @@ przeczytane</translation>
<context>
<name>DashboardDialog</name>
<message>
<location filename="../qml/sailfish/DashboardDialog.qml" line="47"/>
<location filename="../qml/sailfish/DashboardDialog.qml" line="56"/>
<source>Dashboards</source>
<translation>Tablice</translation>
</message>
<message>
<location filename="../qml/sailfish/DashboardDialog.qml" line="48"/>
<location filename="../qml/sailfish/DashboardDialog.qml" line="57"/>
<source>Change</source>
<translation>Zmień</translation>
</message>
@ -216,7 +245,7 @@ przeczytane</translation>
</message>
<message>
<location filename="../qml/harmattan/DashboardDialog.qml" line="73"/>
<location filename="../qml/sailfish/DashboardDialog.qml" line="81"/>
<location filename="../qml/sailfish/DashboardDialog.qml" line="90"/>
<location filename="../qml/symbian/DashboardDialog.qml" line="71"/>
<source>No dashboards</source>
<translation>Brak tablic</translation>
@ -229,12 +258,12 @@ przeczytane</translation>
<context>
<name>DashboardPage</name>
<message>
<location filename="../qml/sailfish/DashboardPage.qml" line="55"/>
<location filename="../qml/sailfish/DashboardPage.qml" line="51"/>
<source>Dashboards</source>
<translation>Tablice</translation>
</message>
<message>
<location filename="../qml/sailfish/DashboardPage.qml" line="87"/>
<location filename="../qml/sailfish/DashboardPage.qml" line="83"/>
<source>No dashboards</source>
<translation>Brak tablic</translation>
</message>
@ -284,7 +313,6 @@ Został włączony tryb Offline!</translation>
</message>
<message>
<location filename="../qml/harmattan/EntryPage.qml" line="83"/>
<location filename="../qml/sailfish/EntryPage.qml" line="125"/>
<location filename="../qml/symbian/EntryPage.qml" line="78"/>
<source>Please wait until Sync finishes</source>
<translation>Zaczekaj do zakończenia aktualizacji</translation>
@ -363,6 +391,21 @@ Został włączony tryb Offline</translation>
<source>All articles</source>
<translation>Wszystkie artykuły</translation>
</message>
<message>
<location filename="../qml/sailfish/EntryPage.qml" line="125"/>
<source>Please wait until current task is complete</source>
<translation>Zaczekaj do zakończenia obecnego zadania</translation>
</message>
<message>
<location filename="../qml/sailfish/EntryPage.qml" line="192"/>
<source>Wait until Sync finish</source>
<translation>Zaczekaj do zakończenia aktualizacji</translation>
</message>
<message>
<location filename="../qml/sailfish/EntryPage.qml" line="192"/>
<source>Pull down to do Sync</source>
<translation>Wykonaj aktualizacje kanałów</translation>
</message>
</context>
<context>
<name>ErrorPage</name>
@ -441,6 +484,16 @@ Został włączony tryb Offline</translation>
<source>Feeds</source>
<translation>Kanały</translation>
</message>
<message>
<location filename="../qml/sailfish/FeedPage.qml" line="202"/>
<source>Wait until Sync finish</source>
<translation>Zaczekaj do zakończenia aktualizacji</translation>
</message>
<message>
<location filename="../qml/sailfish/FeedPage.qml" line="202"/>
<source>Pull down to do Sync</source>
<translation>Wykonaj aktualizacje kanałów</translation>
</message>
</context>
<context>
<name>MainMenu</name>
@ -546,8 +599,12 @@ Brak połączenia sieciowego</translation>
</message>
<message>
<location filename="../qml/sailfish/PageMenu.qml" line="63"/>
<source>Busy...</source>
<translation>Zajęty...</translation>
</message>
<message>
<source>Syncing...</source>
<translation>Aktualizacja...</translation>
<translation type="obsolete">Aktualizacja...</translation>
</message>
<message>
<location filename="../qml/sailfish/PageMenu.qml" line="73"/>
@ -628,47 +685,50 @@ Brak połączenia sieciowego</translation>
<translation>Usuń lokalną kopię</translation>
</message>
<message>
<location filename="../qml/sailfish/SettingsPage.qml" line="174"/>
<source>Cache data deleted!</source>
<translation>Lokalna kopia usunięta!</translation>
<translation type="obsolete">Lokalna kopia usunięta!</translation>
</message>
<message>
<location filename="../qml/sailfish/SettingsPage.qml" line="195"/>
<location filename="../qml/sailfish/SettingsPage.qml" line="196"/>
<source>Mode</source>
<translation>Tryb</translation>
</message>
<message>
<location filename="../qml/sailfish/SettingsPage.qml" line="199"/>
<location filename="../qml/sailfish/SettingsPage.qml" line="200"/>
<source>Online</source>
<translation>Online</translation>
</message>
<message>
<location filename="../qml/sailfish/SettingsPage.qml" line="200"/>
<location filename="../qml/sailfish/SettingsPage.qml" line="201"/>
<source>Offline</source>
<translation>Offline</translation>
</message>
<message>
<location filename="../qml/sailfish/SettingsPage.qml" line="228"/>
<location filename="../qml/sailfish/SettingsPage.qml" line="229"/>
<source>Browsing mode</source>
<translation>Tryb przeglądania</translation>
</message>
<message>
<location filename="../qml/sailfish/SettingsPage.qml" line="232"/>
<source>Tabs &amp; feeds &amp; articles</source>
<translation>Zakładki &amp; kanały &amp; artykuły</translation>
<location filename="../qml/sailfish/SettingsPage.qml" line="233"/>
<source>Tabs, Feeds &amp; articles</source>
<translation>Zakładki, Kanały i artykuły</translation>
</message>
<message>
<location filename="../qml/sailfish/SettingsPage.qml" line="233"/>
<source>Tabs &amp; articles</source>
<translation>Zakładki &amp; artykuły</translation>
<source>Tabs &amp; feeds &amp; articles</source>
<translation type="obsolete">Zakładki &amp; kanały &amp; artykuły</translation>
</message>
<message>
<location filename="../qml/sailfish/SettingsPage.qml" line="234"/>
<source>Feeds &amp; articles</source>
<translation>Kanały &amp; artykuły</translation>
<source>Tabs &amp; articles</source>
<translation>Zakładki i artykuły</translation>
</message>
<message>
<location filename="../qml/sailfish/SettingsPage.qml" line="235"/>
<source>Feeds &amp; articles</source>
<translation>Kanały i artykuły</translation>
</message>
<message>
<location filename="../qml/sailfish/SettingsPage.qml" line="236"/>
<source>Only articles</source>
<translation>Tylko artykuły</translation>
</message>
@ -694,7 +754,7 @@ Brak połączenia sieciowego</translation>
</message>
<message>
<location filename="../qml/harmattan/SettingsPage.qml" line="143"/>
<location filename="../qml/sailfish/SettingsPage.qml" line="263"/>
<location filename="../qml/sailfish/SettingsPage.qml" line="264"/>
<location filename="../qml/symbian/SettingsPage.qml" line="136"/>
<source>Show icons &amp; images</source>
<translation>Pokazuj ikony i obrazki</translation>
@ -753,7 +813,7 @@ Brak połączenia sieciowego</translation>
</message>
<message>
<location filename="../qml/harmattan/SettingsPage.qml" line="119"/>
<location filename="../qml/sailfish/SettingsPage.qml" line="213"/>
<location filename="../qml/sailfish/SettingsPage.qml" line="214"/>
<location filename="../qml/symbian/SettingsPage.qml" line="112"/>
<source>After sync the content of all items will be downloaded and cached for access in Offline mode.</source>
<translation>Każdorazowa podczas aktualizacji treść aktykułów będzie pobierana i zapisywana lokalnie, tak aby była dostępna podczas pracy w trybie Offline.</translation>
@ -772,27 +832,27 @@ Brak połączenia sieciowego</translation>
</message>
<message>
<location filename="../qml/harmattan/SettingsPage.qml" line="163"/>
<location filename="../qml/sailfish/SettingsPage.qml" line="283"/>
<location filename="../qml/sailfish/SettingsPage.qml" line="284"/>
<location filename="../qml/symbian/SettingsPage.qml" line="156"/>
<source>Power save mode</source>
<translation>Tryb oszczędności energii</translation>
</message>
<message>
<location filename="../qml/harmattan/SettingsPage.qml" line="164"/>
<location filename="../qml/sailfish/SettingsPage.qml" line="284"/>
<location filename="../qml/sailfish/SettingsPage.qml" line="285"/>
<location filename="../qml/symbian/SettingsPage.qml" line="157"/>
<source>When the phone or app goes to the idle state, all opened web pages will be closed to lower power consumption.</source>
<translation>Gdy aplikacja przełączy się w tryb nieaktywny, wszystkie otwarte strony internetowe zostaną zamknięte aby zmniejszyć zużycie energii. </translation>
</message>
<message>
<location filename="../qml/harmattan/SettingsPage.qml" line="184"/>
<location filename="../qml/sailfish/SettingsPage.qml" line="305"/>
<location filename="../qml/sailfish/SettingsPage.qml" line="306"/>
<location filename="../qml/symbian/SettingsPage.qml" line="177"/>
<source>Orientation</source>
<translation>Orientacja</translation>
</message>
<message>
<location filename="../qml/sailfish/SettingsPage.qml" line="309"/>
<location filename="../qml/sailfish/SettingsPage.qml" line="310"/>
<source>Dynamic</source>
<translation>Dynamiczna</translation>
</message>
@ -801,12 +861,12 @@ Brak połączenia sieciowego</translation>
<translation type="obsolete">Dynamiczna</translation>
</message>
<message>
<location filename="../qml/sailfish/SettingsPage.qml" line="310"/>
<location filename="../qml/sailfish/SettingsPage.qml" line="311"/>
<source>Portrait</source>
<translation>Pionowa</translation>
</message>
<message>
<location filename="../qml/sailfish/SettingsPage.qml" line="311"/>
<location filename="../qml/sailfish/SettingsPage.qml" line="312"/>
<source>Landscape</source>
<translation>Pozioma</translation>
</message>
@ -839,7 +899,7 @@ Brak połączenia sieciowego</translation>
<translation type="obsolete">Treść aktykułów będzie pobierana z lokalnej kopi, czyli bez użycia połączenia internetowego.</translation>
</message>
<message>
<location filename="../qml/sailfish/SettingsPage.qml" line="212"/>
<location filename="../qml/sailfish/SettingsPage.qml" line="213"/>
<source>Cache articles</source>
<translation>Twórz lokalną kopię</translation>
</message>
@ -849,13 +909,13 @@ Brak połączenia sieciowego</translation>
</message>
<message>
<location filename="../qml/harmattan/SettingsPage.qml" line="129"/>
<location filename="../qml/sailfish/SettingsPage.qml" line="223"/>
<location filename="../qml/sailfish/SettingsPage.qml" line="224"/>
<location filename="../qml/symbian/SettingsPage.qml" line="122"/>
<source>UI</source>
<translation>Interfejs</translation>
</message>
<message>
<location filename="../qml/sailfish/SettingsPage.qml" line="253"/>
<location filename="../qml/sailfish/SettingsPage.qml" line="254"/>
<source>Show only unread articles</source>
<translation>Pokazuj tylko nieprzeczytane artykuły</translation>
</message>
@ -864,7 +924,7 @@ Brak połączenia sieciowego</translation>
<translation type="obsolete">Pokazuj ikony</translation>
</message>
<message>
<location filename="../qml/sailfish/SettingsPage.qml" line="273"/>
<location filename="../qml/sailfish/SettingsPage.qml" line="274"/>
<source>Show Tab with saved articles</source>
<translation>Pokazuj zakładkę z zapisanymi artykułami </translation>
</message>
@ -873,18 +933,18 @@ Brak połączenia sieciowego</translation>
<translation type="obsolete">Pokazuj zakładkę z ulubionymi </translation>
</message>
<message>
<location filename="../qml/sailfish/SettingsPage.qml" line="329"/>
<location filename="../qml/sailfish/SettingsPage.qml" line="330"/>
<source>Black</source>
<translation>Czarny</translation>
</message>
<message>
<location filename="../qml/sailfish/SettingsPage.qml" line="330"/>
<location filename="../qml/sailfish/SettingsPage.qml" line="331"/>
<source>White</source>
<translation>Biały</translation>
</message>
<message>
<location filename="../qml/harmattan/SettingsPage.qml" line="199"/>
<location filename="../qml/sailfish/SettingsPage.qml" line="319"/>
<location filename="../qml/sailfish/SettingsPage.qml" line="320"/>
<location filename="../qml/symbian/SettingsPage.qml" line="192"/>
<source>Offline viewer style</source>
<translation>Styl wyświetlania w trybie Offline</translation>
@ -974,6 +1034,11 @@ Brak połączenia sieciowego</translation>
<source>Tabs</source>
<translation>Zakładki</translation>
</message>
<message>
<location filename="../qml/sailfish/TabPage.qml" line="274"/>
<source>Pull down to do Sync</source>
<translation>Wykonaj aktualizacje kanałów</translation>
</message>
<message>
<location filename="../qml/harmattan/TabPage.qml" line="158"/>
<location filename="../qml/sailfish/TabPage.qml" line="246"/>
@ -1002,9 +1067,8 @@ Brak połączenia sieciowego</translation>
<translation>Wykonaj pierwszą aktualizacje kanałów</translation>
</message>
<message>
<location filename="../qml/sailfish/TabPage.qml" line="274"/>
<source>Pull down to do first Sync</source>
<translation>Wykonaj pierwszą aktualizacje kanałów</translation>
<translation type="obsolete">Wykonaj pierwszą aktualizacje kanałów</translation>
</message>
<message>
<location filename="../qml/harmattan/TabPage.qml" line="179"/>
@ -1224,7 +1288,7 @@ Brak połączenia sieciowego</translation>
</message>
<message>
<location filename="../qml/harmattan/main.qml" line="123"/>
<location filename="../qml/sailfish/main.qml" line="142"/>
<location filename="../qml/sailfish/main.qml" line="152"/>
<location filename="../qml/symbian/main.qml" line="120"/>
<source>An unknown error occurred! :-(</source>
<translation>Wystąpił nieznany błąd! :-(</translation>
@ -1269,7 +1333,7 @@ Brak połączenia sieciowego</translation>
</message>
<message>
<location filename="../qml/harmattan/main.qml" line="107"/>
<location filename="../qml/sailfish/main.qml" line="126"/>
<location filename="../qml/sailfish/main.qml" line="136"/>
<location filename="../qml/symbian/main.qml" line="104"/>
<source>Sync failed
Network connection is unavailable</source>
@ -1279,8 +1343,8 @@ Brak połączenia sieciowego</translation>
<message>
<location filename="../qml/harmattan/main.qml" line="118"/>
<location filename="../qml/harmattan/main.qml" line="128"/>
<location filename="../qml/sailfish/main.qml" line="137"/>
<location filename="../qml/sailfish/main.qml" line="147"/>
<location filename="../qml/sailfish/main.qml" line="157"/>
<location filename="../qml/symbian/main.qml" line="115"/>
<location filename="../qml/symbian/main.qml" line="125"/>
<source>User &amp; Password do not match!</source>
@ -1288,28 +1352,28 @@ Brak połączenia sieciowego</translation>
</message>
<message>
<location filename="../qml/harmattan/main.qml" line="132"/>
<location filename="../qml/sailfish/main.qml" line="151"/>
<location filename="../qml/sailfish/main.qml" line="161"/>
<location filename="../qml/symbian/main.qml" line="129"/>
<source>Successfully Signed In!</source>
<translation>Zalogowano!</translation>
</message>
<message>
<location filename="../qml/harmattan/main.qml" line="137"/>
<location filename="../qml/sailfish/main.qml" line="155"/>
<location filename="../qml/sailfish/main.qml" line="165"/>
<location filename="../qml/symbian/main.qml" line="134"/>
<source>Receiving data... </source>
<translation>Pobieranie danych...</translation>
</message>
<message>
<location filename="../qml/harmattan/main.qml" line="150"/>
<location filename="../qml/sailfish/main.qml" line="170"/>
<location filename="../qml/sailfish/main.qml" line="180"/>
<location filename="../qml/symbian/main.qml" line="147"/>
<source>Initiating...</source>
<translation>Pierwsza aktualizacja...</translation>
</message>
<message>
<location filename="../qml/harmattan/main.qml" line="154"/>
<location filename="../qml/sailfish/main.qml" line="174"/>
<location filename="../qml/sailfish/main.qml" line="184"/>
<location filename="../qml/symbian/main.qml" line="151"/>
<source>Updating...</source>
<translation>Aktualizacja...</translation>
@ -1336,14 +1400,14 @@ Brak połączenia sieciowego</translation>
</message>
<message>
<location filename="../qml/harmattan/main.qml" line="143"/>
<location filename="../qml/sailfish/main.qml" line="160"/>
<location filename="../qml/sailfish/main.qml" line="170"/>
<location filename="../qml/symbian/main.qml" line="140"/>
<source>Sending data to Netvibes...</source>
<translation>Wysyłanie danych do Netvibes...</translation>
</message>
<message>
<location filename="../qml/harmattan/main.qml" line="158"/>
<location filename="../qml/sailfish/main.qml" line="178"/>
<location filename="../qml/sailfish/main.qml" line="188"/>
<location filename="../qml/symbian/main.qml" line="155"/>
<source>Signing in...</source>
<translation>Logowanie...</translation>
@ -1352,9 +1416,9 @@ Brak połączenia sieciowego</translation>
<location filename="../qml/harmattan/main.qml" line="162"/>
<location filename="../qml/harmattan/main.qml" line="166"/>
<location filename="../qml/harmattan/main.qml" line="170"/>
<location filename="../qml/sailfish/main.qml" line="182"/>
<location filename="../qml/sailfish/main.qml" line="186"/>
<location filename="../qml/sailfish/main.qml" line="190"/>
<location filename="../qml/sailfish/main.qml" line="192"/>
<location filename="../qml/sailfish/main.qml" line="196"/>
<location filename="../qml/sailfish/main.qml" line="200"/>
<location filename="../qml/symbian/main.qml" line="159"/>
<location filename="../qml/symbian/main.qml" line="163"/>
<location filename="../qml/symbian/main.qml" line="167"/>
@ -1367,9 +1431,13 @@ Brak połączenia sieciowego</translation>
<translation>Kanały</translation>
</message>
<message>
<location filename="../qml/sailfish/main.qml" line="66"/>
<location filename="../qml/sailfish/main.qml" line="235"/>
<source>Removing cache data...</source>
<translation>Usuwanie kopii lokalnej...</translation>
</message>
<message>
<source>Browsing mode changed!</source>
<translation>Tryb przeglądania został zmieniony!</translation>
<translation type="obsolete">Tryb przeglądania został zmieniony!</translation>
</message>
</context>
<context>

View file

@ -36,7 +36,16 @@ Page {
}
SilicaListView {
anchors.fill: parent
anchors { top: parent.top; left: parent.left; right: parent.right }
clip: true
height: {
if (dm.busy||fetcher.busy||dm.removerBusy)
return isPortrait ? app.height-Theme.itemSizeMedium : app.width-0.8*Theme.itemSizeMedium;
return isPortrait ? app.height : app.width;
}
anchors.leftMargin: Theme.paddingLarge
anchors.rightMargin: Theme.paddingLarge
spacing: Theme.paddingLarge
@ -97,7 +106,7 @@ Page {
}
Button {
text: qsTr("What's new")
text: qsTr("What's new in this release")
anchors.horizontalCenter: parent.horizontalCenter
onClicked: pageStack.push(Qt.resolvedUrl("ChangelogPage.qml"))
}

View file

@ -50,36 +50,41 @@ Page {
model: VisualItemModel {
SectionHeader {
text: "1.2.0"
LogItem {
title: qsTr('Multi-Feed widget support')
description: qsTr('Kaktus can also read Feeds, which are aggregated in the Netvibes Multi-Feed widget.')
}
LogItem {
text: qsTr('Netvibes "Multi-Feed" widget support')
title: qsTr('Double-click marks article as read/unread')
description: qsTr('In addition to the context menu option, marking as read/unread can be done by double-click.')
}
LogItem {
text: qsTr('Double-click marks article as read/unread')
title: qsTr('New Browsing Modes')
description: qsTr('There are new Browsing Modes. '+
'It is possible to show all articles in the one list '+
'or group by Tabs or Feeds.')
}
LogItem {
text: qsTr('Option to show all feeds in one list (see "Browsing Mode option")')
title: qsTr('Indicator for new articles')
description: qsTr('Articles, that have been added since last sync, '+
'are marked with small dash on the right side of the list.')
}
LogItem {
text: qsTr('Indicator for articles that have been added since last sync')
title: qsTr('Option to delete cache data')
description: qsTr('Cache data can be deleted manually. The option is located on the settings page.')
}
LogItem {
text: qsTr('Option to delete cache data (see "Cache size" option)')
title: qsTr('Image caching improvements')
description: qsTr('Caching mechanism for images are improved. Files with images are downloaded more effectively.')
}
LogItem {
text: qsTr('Improved display of images')
}
LogItem {
text: qsTr('Many UI improvements')
Item {
height: Theme.paddingMedium
}
}

View file

@ -39,7 +39,16 @@ Dialog {
SilicaListView {
id: listView
anchors.fill: parent
anchors { top: parent.top; left: parent.left; right: parent.right }
clip: true
height: {
if (dm.busy||fetcher.busy||dm.removerBusy)
return isPortrait ? app.height-Theme.itemSizeMedium : app.width-0.8*Theme.itemSizeMedium;
return isPortrait ? app.height : app.width;
}
spacing: Theme.paddingMedium
model: dashboardModel

View file

@ -39,14 +39,10 @@ Page {
model: dashboardModel
anchors { top: parent.top; left: parent.left; right: parent.right }
clip:true
clip: true
height: {
if ((dm.busy||fetcher.busy) && bar.open)
return isPortrait ? app.height-Theme.itemSizeMedium : app.width-1.6*Theme.itemSizeMedium;
if (dm.busy||fetcher.busy)
return isPortrait ? app.height-Theme.itemSizeMedium : app.width-0.8*Theme.itemSizeMedium;
if (bar.open)
if (dm.busy||fetcher.busy||dm.removerBusy)
return isPortrait ? app.height-Theme.itemSizeMedium : app.width-0.8*Theme.itemSizeMedium;
return isPortrait ? app.height : app.width;
}

View file

@ -46,7 +46,7 @@ Page {
clip:true
height: {
if (dm.busy||fetcher.busy)
if (dm.busy||fetcher.busy||dm.removerBusy)
return isPortrait ? app.height-Theme.itemSizeMedium : app.width-0.8*Theme.itemSizeMedium;
return isPortrait ? app.height : app.width;
}
@ -121,8 +121,8 @@ Page {
// One click
// Not allowed while Syncing
if (dm.busy || fetcher.busy) {
notification.show(qsTr("Please wait until Sync finishes"));
if (dm.busy || fetcher.busy || dm.removerBusy) {
notification.show(qsTr("Please wait until current task is complete"));
return;
}
@ -183,6 +183,15 @@ Page {
ViewPlaceholder {
enabled: listView.count == 0
text: settings.showOnlyUnread ? qsTr("No unread items") : qsTr("No items")
Label {
anchors.horizontalCenter: parent.horizontalCenter
anchors.bottom: parent.bottom
font.pixelSize: Theme.fontSizeSmall
color: Theme.secondaryHighlightColor
text: fetcher.busy ? qsTr("Wait until Sync finish") : qsTr("Pull down to do Sync")
visible: settings.viewMode==3
}
}
VerticalScrollDecorator {

View file

@ -53,7 +53,7 @@ Page {
height: {
/*if ((dm.busy||fetcher.busy) && bar.open)
return isPortrait ? app.height-Theme.itemSizeMedium : app.width-1.6*Theme.itemSizeMedium;*/
if (dm.busy||fetcher.busy)
if (dm.busy||fetcher.busy||dm.removerBusy)
return isPortrait ? app.height-Theme.itemSizeMedium : app.width-0.8*Theme.itemSizeMedium;
/*if (bar.open)
return isPortrait ? app.height-Theme.itemSizeMedium : app.width-0.8*Theme.itemSizeMedium;*/
@ -193,6 +193,15 @@ Page {
ViewPlaceholder {
enabled: listView.count == 0
text: qsTr("No feeds")
Label {
anchors.horizontalCenter: parent.horizontalCenter
anchors.bottom: parent.bottom
font.pixelSize: Theme.fontSizeSmall
color: Theme.secondaryHighlightColor
text: fetcher.busy ? qsTr("Wait until Sync finish") : qsTr("Pull down to do Sync")
visible: settings.viewMode==2
}
}
VerticalScrollDecorator {

View file

@ -23,21 +23,45 @@ import Sailfish.Silica 1.0
Row {
id: root
property alias text: label.text
property alias title: label1.text
property alias description: label2.text
anchors.left: parent.left; anchors.right: parent.right
anchors.leftMargin: Theme.paddingLarge; anchors.rightMargin: Theme.paddingLarge
spacing: 1.5*Theme.paddingLarge
spacing: 1.0*Theme.paddingLarge
Image {
width: Theme.iconSizeSmall; height: width
source: "image://theme/icon-s-new"
anchors.top: parent.top
}
Label {
id: label
Column {
spacing: Theme.paddingSmall
anchors.top: parent.top
width: parent.width-3*Theme.paddingLarge
wrapMode: Text.WordWrap
font.pixelSize: Theme.fontSizeSmall
Label {
id: label1
width: parent.width
wrapMode: Text.WordWrap
font.pixelSize: Theme.fontSizeSmall
color: Theme.primaryColor
font.bold: true
}
Label {
id: label2
width: parent.width
wrapMode: Text.WordWrap
font.pixelSize: Theme.fontSizeSmall
color: Theme.primaryColor
}
Item {
height: Theme.paddingMedium
width: parent.width
}
}
}

View file

@ -60,11 +60,11 @@ PullDownMenu {
}
MenuItem {
text: enabled ? qsTr("Sync") : qsTr("Syncing...")
text: enabled ? qsTr("Sync") : qsTr("Busy...")
visible: root.showSync
onClicked: fetcher.update()
enabled: !fetcher.busy && !dm.busy
enabled: !fetcher.busy && !dm.busy && !dm.removerBusy
}

View file

@ -40,17 +40,12 @@ Item {
Behavior on opacity { FadeAnimation {} }
Rectangle {
/*Rectangle {
anchors.fill: parent
visible: root.transparent
/*gradient: Gradient {
GradientStop { position: 0.0; color: Theme.rgba(Theme.highlightColor, 0.1) }
GradientStop { position: 1.0; color: Theme.rgba(Theme.highlightColor, 0.2) }
}*/
color: Theme.rgba(Theme.highlightColor, 0.2)
}
}*/
Rectangle {
anchors.fill: parent
@ -69,10 +64,15 @@ Item {
}
Image {
anchors.fill: parent
anchors.left: parent.left; anchors.right: parent.right
//anchors.fill: parent
//fillMode: Image.PreserveAspectFit
source: "image://theme/graphic-gradient-home-top"
source: "image://theme/graphic-gradient-home-top?"+Theme.highlightBackgroundColor
//source: "image://theme/graphic-gradient-home-bottom?"+Theme.highlightBackgroundColor
//source: "image://theme/graphic-gradient-edge?"+Theme.highlightBackgroundColor
//source: "image://theme/graphic-keyboard-highlight-top?"+Theme.highlightBackgroundColor
visible: root.transparent
opacity: 0.3
}
Rectangle {

View file

@ -39,7 +39,7 @@ Page {
clip: true
height: {
if (dm.busy||fetcher.busy)
if (dm.busy||fetcher.busy||dm.removerBusy)
return isPortrait ? app.height-Theme.itemSizeMedium : app.width-0.8*Theme.itemSizeMedium;
return isPortrait ? app.height : app.width;
}
@ -171,9 +171,10 @@ Page {
text: qsTr("Delete cache")
onClicked: {
//dm.cleanCache();
notification.show(qsTr("Cache data deleted!"));
//notification.show(qsTr("Cache data deleted!"));
fetcher.cancel(); dm.cancel();
db.newInit();
dm.removeCache();
//db.newInit();
}
}
}
@ -229,7 +230,7 @@ Page {
currentIndex: settings.viewMode
menu: ContextMenu {
MenuItem { text: qsTr("Tabs & feeds & articles") }
MenuItem { text: qsTr("Tabs, Feeds & articles") }
MenuItem { text: qsTr("Tabs & articles") }
MenuItem { text: qsTr("Feeds & articles") }
MenuItem { text: qsTr("Only articles") }

View file

@ -47,7 +47,7 @@ Page {
height: {
/*if ((dm.busy||fetcher.busy) && bar.open)
return isPortrait ? app.height-Theme.itemSizeMedium : app.width-1.6*Theme.itemSizeMedium;*/
if (dm.busy||fetcher.busy)
if (dm.busy||fetcher.busy||dm.removerBusy)
return isPortrait ? app.height-Theme.itemSizeMedium : app.width-0.8*Theme.itemSizeMedium;
/*if (bar.open)
return isPortrait ? app.height-Theme.itemSizeMedium : app.width-0.8*Theme.itemSizeMedium;*/
@ -271,7 +271,7 @@ Page {
anchors.bottom: parent.bottom
font.pixelSize: Theme.fontSizeSmall
color: Theme.secondaryHighlightColor
text: fetcher.busy ? qsTr("Wait until Sync finish") : qsTr("Pull down to do first Sync")
text: fetcher.busy ? qsTr("Wait until Sync finish") : qsTr("Pull down to do Sync")
}
}

View file

@ -63,7 +63,7 @@ ApplicationWindow {
onViewModeChanged: {
resetView();
notification.show(qsTr("Browsing mode changed!"));
//notification.show(qsTr("Browsing mode changed!"));
}
}
@ -109,6 +109,16 @@ ApplicationWindow {
if (dm.busy && bar.open)
bar.open = false;
}
onRemoverBusyChanged: {
if (dm.removerBusy && bar.open)
bar.open = false;
}
onRemoverProgressChanged: {
//console.log("Remover progress: " + current / total);
progressPanelRemover.progress = current / total;
}
}
Connections {
@ -211,6 +221,20 @@ ApplicationWindow {
x: app.orientation==Orientation.Portrait ? 0 : height
}
ProgressPanel {
id: progressPanelRemover
open: dm.removerBusy
onCloseClicked: dm.removerCancel();
rotation: app.orientation==Orientation.Portrait ? 0 : 90
transformOrigin: Item.TopLeft
height: app.orientation==Orientation.Portrait ? Theme.itemSizeMedium : 0.8*Theme.itemSizeMedium
width: app.orientation==Orientation.Portrait ? app.width : app.height
y: app.orientation==Orientation.Portrait ? app.height-height : 0
x: app.orientation==Orientation.Portrait ? 0 : height
text: qsTr("Removing cache data...");
}
ProgressPanel {
id: progressPanelDm
open: dm.busy && !fetcher.busy

View file

@ -14,7 +14,7 @@ Name: harbour-kaktus
%{?qtc_builddir:%define _builddir %qtc_builddir}
Summary: Kaktus
Version: 1.2.0
Release: 2
Release: 3
Group: Qt/Qt
License: LICENSE
URL: https://github.com/mkiol/kaktus
@ -76,6 +76,9 @@ desktop-file-install --delete-original \
%changelog
* Sat Sep 06 2014 Michal Kosciesza 1.2.0-3
- Caching and downloading improvements
* Tue Sep 02 2014 Michal Kosciesza 1.2.0-2
- Netvibes Multi-Feed widget (initial) support
- Improved display of images

View file

@ -0,0 +1,4 @@
[Dolphin]
PreviewsShown=true
Timestamp=2014,8,12,22,49,0
Version=3

Binary file not shown.

Before

Width:  |  Height:  |  Size: 545 KiB

After

Width:  |  Height:  |  Size: 512 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 408 KiB

After

Width:  |  Height:  |  Size: 277 KiB

View file

@ -1588,8 +1588,7 @@ QList<DatabaseManager::Entry> DatabaseManager::readEntriesUnreadByTab(const QStr
//(e.read=0 OR e.readlater=1)
if (!ret) {
qWarning() << "SQL error!";
qWarning() << query.lastError();
qWarning() << "SQL error!" << query.lastError();
}
while(query.next()) {
@ -1785,6 +1784,29 @@ QList<QString> DatabaseManager::readCacheFinalUrlOlderThan(int cacheDate, int li
return list;
}
bool DatabaseManager::removeAllCacheItems()
{
bool ret = false;
if (_db.isOpen()) {
QSqlQuery query(_db);
ret = query.exec(QString("DELETE FROM cache;"));
if (!ret) {
qWarning() << "SQL error!" << query.lastError().text();
}
ret = query.exec(QString("UPDATE entries SET cached=0;"));
if (!ret) {
qWarning() << "SQL error!" << query.lastError().text();
}
}
return ret;
}
bool DatabaseManager::removeEntriesOlderThan(int cacheDate, int limit)
{
bool ret = false;

View file

@ -33,6 +33,8 @@
#include "settings.h"
//typedef DatabaseManager::CacheItem Cache;
class DatabaseManager : public QObject
{
Q_OBJECT
@ -217,7 +219,7 @@ public:
int readTabLastUpadate(const QString &tabId);
bool removeFeed(const QString &feedId);
//bool removeCacheItems(const QString &feedId);
bool removeAllCacheItems();
bool removeEntriesOlderThan(int cacheDate, int limit);
//bool removeCacheItemsOlderThan(int cacheDate, int limit);
bool removeAction(const QString &entryId);
@ -269,4 +271,6 @@ private:
void decodeBase64(const QVariant &source, QString &result);
};
Q_DECLARE_METATYPE(DatabaseManager::CacheItem)
#endif // DATABASEMANAGER_H

View file

@ -38,7 +38,7 @@
DownloadManager::DownloadManager(QObject *parent) :
QObject(parent)
{
qDebug() << "0";
/*QList<QNetworkConfiguration> activeConfigs = ncm.allConfigurations(QNetworkConfiguration::Active);
QList<QNetworkConfiguration>::iterator i = activeConfigs.begin();
while (i != activeConfigs.end()) {
@ -46,7 +46,9 @@ DownloadManager::DownloadManager(QObject *parent) :
++i;
}*/
connect(&cleaner, SIGNAL(ready()), this, SLOT(cacheCleaningFinished()));
connect(&cleaner, SIGNAL(finished()), this, SLOT(cacheCleaningFinished()));
connect(&remover, SIGNAL(finished()), this, SLOT(cacheRemoverFinished()));
connect(&remover, SIGNAL(progressChanged(int,int)), this, SLOT(cacheRemoverProgressChanged(int,int)));
#ifdef ONLINE_CHECK
connect(&ncm, SIGNAL(onlineStateChanged(bool)), this, SLOT(onlineStateChanged(bool)));
#endif
@ -54,6 +56,7 @@ DownloadManager::DownloadManager(QObject *parent) :
this, SLOT(downloadFinished(QNetworkReply*)));
connect(&manager, SIGNAL(networkAccessibleChanged(QNetworkAccessManager::NetworkAccessibility)),
this, SLOT(networkAccessibleChanged(QNetworkAccessManager::NetworkAccessibility)));
connect(&adder, SIGNAL(addDownload(DatabaseManager::CacheItem)), this, SLOT(addDownload(DatabaseManager::CacheItem)));
}
bool DownloadManager::isOnline()
@ -72,6 +75,11 @@ void DownloadManager::onlineStateChanged(bool isOnline)
emit onlineChanged();
}
void DownloadManager::removerCancel()
{
remover.cancel();
}
int DownloadManager::getCacheSize()
{
int size = 0;
@ -87,18 +95,31 @@ int DownloadManager::getCacheSize()
void DownloadManager::cleanCache()
{
cleaner.start();
cleaner.start(QThread::IdlePriority);
}
void DownloadManager::cacheCleaningFinished()
{
qDebug() << "Cache cleaning finished!";
//qDebug() << "Cache cleaning finished!";
emit cacheSizeChanged();
}
void DownloadManager::cacheRemoverProgressChanged(int current, int total)
{
//qDebug() << "Cache remover progress changed!";
emit removerProgressChanged(current, total);
}
void DownloadManager::cacheRemoverFinished()
{
qDebug() << "Cache remover finished!";
emit removerBusyChanged();
emit cacheSizeChanged();
}
void DownloadManager::removeCache()
{
Settings *s = Settings::instance();
/*Settings *s = Settings::instance();
QDir cache(s->getDmCacheDir());
#if QT_VERSION >= QT_VERSION_CHECK(5,0,0)
if (!cache.removeRecursively()) {
@ -106,7 +127,16 @@ void DownloadManager::removeCache()
if (!Utils::removeDir(cache.absolutePath())) {
#endif
qWarning() << "Unable to remove " << s->getDmCacheDir();
}
}*/
if (isRemoverBusy())
return;
Settings *s = Settings::instance();
s->db->removeAllCacheItems();
//remover.start(QThread::IdlePriority);
remover.start(QThread::LowestPriority);
emit removerBusyChanged();
}
void DownloadManager::networkAccessibleChanged(QNetworkAccessManager::NetworkAccessibility accessible)
@ -159,6 +189,7 @@ void DownloadManager::addNextDownload()
emit progress(0);
emit ready();
emit busyChanged();
emit cacheSizeChanged();
return;
}
@ -379,10 +410,13 @@ void DownloadManager::sslErrors(const QList<QSslError> &sslErrors)
void DownloadManager::addDownload(DatabaseManager::CacheItem item)
{
Settings *s = Settings::instance();
bool busy = isBusy();
if (downloads.count() < s->getDmConnections()) {
doDownload(item);
emit busyChanged();
emit cacheSizeChanged();
if (!busy)
emit busyChanged();
//emit cacheSizeChanged();
} else {
queue.append(item);
}
@ -437,16 +471,10 @@ void Checker::metaDataChanged()
}
}
bool DownloadManager::startFeedDownload()
void DownloadManager::startFeedDownload()
{
/*bool busy = !downloads.isEmpty() || !queue.isEmpty();
if (busy) {
qWarning() << "Download Manager is busy!";
return;
}*/
#if defined(Q_OS_SYMBIAN) || defined(Q_WS_SIMULATOR)
//cleanCache();
cleanCache();
#else
cleanCache();
#endif
@ -457,31 +485,7 @@ bool DownloadManager::startFeedDownload()
//return false;
}
Settings *s = Settings::instance();
QMap<QString,QString> list = s->db->readNotCachedEntries();
//qDebug() << "startFeedDownload, list.count=" << list.count();
if (list.count() == 0) {
qWarning() << "No feeds to download!";
return false;
}
//replyToCachedItemMap.clear();
//replyToCheckerMap.clear();
QMap<QString,QString>::iterator i = list.begin();
while (i != list.end()) {
DatabaseManager::CacheItem item;
item.entryId = i.key();
item.origUrl = i.value();
item.finalUrl = i.value();
addDownload(item);
++i;
}
return true;
adder.start();
}
QString DownloadManager::hash(const QString &url)
@ -519,7 +523,11 @@ bool DownloadManager::isBusy()
return true;
}
//void CacheCleaner::run() Q_DECL_OVERRIDE {
bool DownloadManager::isRemoverBusy()
{
return remover.isRunning();
}
void CacheCleaner::run() {
Settings *s = Settings::instance();
@ -538,7 +546,7 @@ void CacheCleaner::run() {
}
}
++iii;
QThread::msleep(100);
QThread::msleep(10);
}
s->db->removeEntriesByLimit(*ii, entriesLimit);
@ -546,5 +554,97 @@ void CacheCleaner::run() {
++ii;
}
emit ready();
//emit ready();
}
CacheRemover::CacheRemover(QObject *parent) : QThread(parent)
{
total = 100;
current = 0;
doCancel = false;
}
/*
* Copyright (c) 2009 John Schember <john@nachtimwald.com>
* http://john.nachtimwald.com/2010/06/08/qt-remove-directory-and-its-contents/
*/
bool CacheRemover::removeDir(const QString &dirName)
{
bool result = true;
QDir dir(dirName);
emit progressChanged(0,total);
if (dir.exists(dirName)) {
QFileInfoList infoList = dir.entryInfoList(QDir::NoDotAndDotDot | QDir::System | QDir::Hidden | QDir::AllDirs | QDir::Files, QDir::DirsFirst);
total = infoList.count();
Q_FOREACH(QFileInfo info, infoList) {
if (doCancel)
return result;
if (info.isDir()) {
result = removeDir(info.absoluteFilePath());
}
else {
result = QFile::remove(info.absoluteFilePath());
++current;
if (current % 10 == 0)
emit progressChanged(++current,total);
}
if (!result) {
return result;
}
//qDebug() << "File" << info.absoluteFilePath() << "removed. Result:" << result;
//QThread::msleep(5);
}
result = dir.rmdir(dirName);
}
emit progressChanged(total,total);
return result;
}
void CacheRemover::run()
{
current=0; total = 100; doCancel = false;
Settings *s = Settings::instance();
if (!removeDir(s->getDmCacheDir())) {
qWarning() << "Unable to remove " << s->getDmCacheDir();
}
//emit ready();
}
void CacheRemover::cancel()
{
doCancel = true;
}
DownloadAdder::DownloadAdder(QObject *parent) : QThread(parent)
{}
void DownloadAdder::run()
{
Settings *s = Settings::instance();
QMap<QString,QString> list = s->db->readNotCachedEntries();
//qDebug() << "startFeedDownload, list.count=" << list.count();
if (list.count() == 0) {
qWarning() << "No feeds to download!";
return;
}
QMap<QString,QString>::iterator i = list.begin();
while (i != list.end()) {
DatabaseManager::CacheItem item;
item.entryId = i.key();
item.origUrl = i.value();
item.finalUrl = i.value();
emit addDownload(item);
++i;
}
}

View file

@ -37,6 +37,40 @@
class QSslError;
class DownloadAdder : public QThread
{
Q_OBJECT
public:
DownloadAdder(QObject * parent = 0);
protected:
void run();
signals:
void addDownload(DatabaseManager::CacheItem item);
};
class CacheRemover : public QThread
{
Q_OBJECT
public:
CacheRemover(QObject * parent = 0);
void cancel();
protected:
void run();
signals:
//void ready();
void progressChanged(int current, int total);
private:
bool removeDir(const QString &dirName);
int total;
int current;
bool doCancel;
};
class CacheCleaner : public QThread
{
Q_OBJECT
@ -44,8 +78,8 @@ class CacheCleaner : public QThread
protected:
void run();
signals:
void ready();
/*signals:
void ready();*/
private:
static const int entriesLimit = 100;
@ -76,19 +110,21 @@ class DownloadManager: public QObject
Q_PROPERTY (bool online READ isOnline NOTIFY onlineChanged)
Q_PROPERTY (bool busy READ isBusy NOTIFY busyChanged)
Q_PROPERTY (int cacheSize READ getCacheSize NOTIFY cacheSizeChanged)
Q_PROPERTY (bool removerBusy READ isRemoverBusy NOTIFY removerBusyChanged)
public:
DownloadManager(QObject *parent = 0);
void addDownload(DatabaseManager::CacheItem item);
Q_INVOKABLE void cancel();
Q_INVOKABLE void removerCancel();
Q_INVOKABLE int itemsToDownloadCount();
Q_INVOKABLE bool startFeedDownload();
Q_INVOKABLE void startFeedDownload();
Q_INVOKABLE void cleanCache();
bool isBusy();
bool isOnline();
int getCacheSize();
bool isRemoverBusy();
signals:
void cacheSizeChanged();
@ -97,6 +133,8 @@ signals:
void networkNotAccessible();
void onlineChanged();
void canceled();
void removerBusyChanged();
void removerProgressChanged(int current, int total);
/*
500 - Unknown error
501 - Save to disk error
@ -105,6 +143,7 @@ signals:
void progress(int remaining);
public slots:
void addDownload(DatabaseManager::CacheItem item);
void downloadFinished(QNetworkReply *reply);
void sslErrors(const QList<QSslError> &errors);
void error(QNetworkReply::NetworkError code);
@ -112,6 +151,8 @@ public slots:
void removeCache();
void onlineStateChanged(bool isOnline);
void cacheCleaningFinished();
void cacheRemoverFinished();
void cacheRemoverProgressChanged(int current, int total);
private:
static const int entriesLimit = 200;
@ -125,6 +166,8 @@ private:
QMap<QNetworkReply*,Checker*> replyToCheckerMap;
QNetworkConfigurationManager ncm;
CacheCleaner cleaner;
CacheRemover remover;
DownloadAdder adder;
void doDownload(DatabaseManager::CacheItem item);
bool saveToDisk(const QString &filename, const QByteArray &content);

View file

@ -63,6 +63,8 @@ Q_DECL_EXPORT int main(int argc, char *argv[])
view.rootContext()->setContextProperty("AUTHOR", AUTHOR);
view.rootContext()->setContextProperty("PAGE", PAGE);
qRegisterMetaType<DatabaseManager::CacheItem>("CacheItem");
QTranslator *appTranslator = new QTranslator;
appTranslator->load(":/i18n/kaktus_" + QLocale::system().name() + ".qm");
app->installTranslator(appTranslator);
@ -107,6 +109,8 @@ Q_DECL_EXPORT int main(int argc, char *argv[])
view->rootContext()->setContextProperty("AUTHOR", AUTHOR);
view->rootContext()->setContextProperty("PAGE", PAGE);
qRegisterMetaType<DatabaseManager::CacheItem>("CacheItem");
QTranslator *appTranslator = new QTranslator;
appTranslator->load(":/i18n/kaktus_" + QLocale::system().name() + ".qm");
app->installTranslator(appTranslator);
@ -114,12 +118,14 @@ Q_DECL_EXPORT int main(int argc, char *argv[])
Settings* settings = Settings::instance();
settings->view = view.data();
DatabaseManager db; settings->db = &db;
DownloadManager dm; settings->dm = &dm;
DownloadManager dm;
settings->dm = &dm;
CacheServer cache(&db); settings->cache = &cache;
NetvibesFetcher fetcher; settings->fetcher = &fetcher;
Utils utils;
QObject::connect(&fetcher, SIGNAL(ready()), &utils, SLOT(updateModels()));
//QObject::connect(&fetcher, SIGNAL(ready()), &utils, SLOT(updateModels()));
QObject::connect(view->engine(), SIGNAL(quit()), QCoreApplication::instance(), SLOT(quit()));
view->rootContext()->setContextProperty("db", &db);

View file

@ -39,14 +39,18 @@
#include "netvibesfetcher.h"
NetvibesFetcher::NetvibesFetcher(QObject *parent) :
QObject(parent)
QThread(parent)
{
_currentReply = NULL;
_busy = false;
_busyType = Unknown;
Settings *s = Settings::instance();
connect(&_manager, SIGNAL(networkAccessibleChanged(QNetworkAccessManager::NetworkAccessibility)),
this, SLOT(networkAccessibleChanged(QNetworkAccessManager::NetworkAccessibility)));
connect(this, SIGNAL(addDownload(DatabaseManager::CacheItem)), s->dm, SLOT(addDownload(DatabaseManager::CacheItem)));
}
bool NetvibesFetcher::delayedUpdate(bool state)
@ -663,9 +667,10 @@ bool NetvibesFetcher::parse()
return true;
}
void NetvibesFetcher::storeTabs(const QString &dashboardId)
void NetvibesFetcher::storeTabs()
{
Settings *s = Settings::instance();
QString dashboardId = _dashboardList.takeFirst();
#if QT_VERSION >= QT_VERSION_CHECK(5,0,0)
if (_jsonObj["userData"].toObject()["tabs"].isArray()) {
@ -695,7 +700,8 @@ void NetvibesFetcher::storeTabs(const QString &dashboardId)
DatabaseManager::CacheItem item;
item.origUrl = t.icon;
item.finalUrl = t.icon;
s->dm->addDownload(item);
emit addDownload(item);
//s->dm->addDownload(item);
//qDebug() << "icon:" << t.icon;
}
@ -806,10 +812,10 @@ void NetvibesFetcher::storeFeeds()
DatabaseManager::CacheItem item;
item.origUrl = f.icon;
item.finalUrl = f.icon;
s->dm->addDownload(item);
//s->dm->addDownload(item);
emit addDownload(item);
//qDebug() << "favicon:" << f.icon;
}
s->db->writeFeed(it.value(), f);
} else {
@ -885,7 +891,8 @@ void NetvibesFetcher::storeEntries()
DatabaseManager::CacheItem item;
item.origUrl = image;
item.finalUrl = image;
s->dm->addDownload(item);
//s->dm->addDownload(item);
emit addDownload(item);
}
} else {
// Checking if content contains image
@ -897,7 +904,8 @@ void NetvibesFetcher::storeEntries()
DatabaseManager::CacheItem item;
item.origUrl = imgSrc;
item.finalUrl = imgSrc;
s->dm->addDownload(item);
//s->dm->addDownload(item);
emit addDownload(item);
}
e.image = imgSrc;
//qDebug() << "cap:" << imgSrc;
@ -1137,8 +1145,6 @@ void NetvibesFetcher::finishedDashboards()
{
//qDebug() << this->_data;
Settings *s = Settings::instance();
if(!parse()) {
qWarning() << "Error parsing Json!";
emit error(600);
@ -1146,7 +1152,12 @@ void NetvibesFetcher::finishedDashboards()
return;
}
storeDashboards();
startJob(StoreDashboards);
}
void NetvibesFetcher::finishedDashboards2()
{
Settings *s = Settings::instance();
if(!_dashboardList.isEmpty()) {
s->db->cleanTabs();
@ -1168,10 +1179,6 @@ void NetvibesFetcher::finishedTabs()
{
//qDebug() << this->_data;
Settings *s = Settings::instance();
int feedsAtOnce = s->getFeedsAtOnce();
int feedsUpdateAtOnce = s->getFeedsUpdateAtOnce();
if(!parse()) {
qWarning() << "Error parsing Json!";
emit error(600);
@ -1179,9 +1186,17 @@ void NetvibesFetcher::finishedTabs()
return;
}
QString dashboardId = _dashboardList.takeFirst();
//QString dashboardId = _dashboardList.takeFirst();
//storeTabs(dashboardId);
storeTabs(dashboardId);
startJob(StoreTabs);
}
void NetvibesFetcher::finishedTabs2()
{
Settings *s = Settings::instance();
int feedsAtOnce = s->getFeedsAtOnce();
int feedsUpdateAtOnce = s->getFeedsUpdateAtOnce();
// Set current entries as not fresh
s->db->updateAllEntriesFreshFlag(0);
@ -1275,10 +1290,6 @@ void NetvibesFetcher::finishedFeeds()
{
//qDebug() << this->_data;
Settings *s = Settings::instance();
int feedsAtOnce = s->getFeedsAtOnce();
int feedsUpdateAtOnce = s->getFeedsUpdateAtOnce();
if(!parse()) {
qWarning() << "Error parsing Json!";
emit error(600);
@ -1286,8 +1297,14 @@ void NetvibesFetcher::finishedFeeds()
return;
}
storeFeeds();
storeEntries();
startJob(StoreFeeds);
}
void NetvibesFetcher::finishedFeeds2()
{
Settings *s = Settings::instance();
int feedsAtOnce = s->getFeedsAtOnce();
int feedsUpdateAtOnce = s->getFeedsUpdateAtOnce();
emit progress(_total-((_feedList.count()/feedsAtOnce)+(_feedUpdateList.count()/feedsUpdateAtOnce)),_total);
@ -1308,6 +1325,44 @@ void NetvibesFetcher::finishedFeeds()
}
}
/*void NetvibesFetcher::finishedFeeds()
{
//qDebug() << this->_data;
Settings *s = Settings::instance();
int feedsAtOnce = s->getFeedsAtOnce();
int feedsUpdateAtOnce = s->getFeedsUpdateAtOnce();
if(!parse()) {
qWarning() << "Error parsing Json!";
emit error(600);
setBusy(false);
return;
}
storeFeeds();
//storeEntries();
entriesStorer.start(QThread::IdlePriority);
emit progress(_total-((_feedList.count()/feedsAtOnce)+(_feedUpdateList.count()/feedsUpdateAtOnce)),_total);
if (_feedList.isEmpty()) {
if(_busyType == Updating) {
_feedUpdateList = s->db->readFeedsFirstUpdate();
fetchFeedsUpdate();
}
if(_busyType == Initiating) {
offset = 0;
fetchFeedsReadlater();
}
} else {
fetchFeeds();
}
}*/
void NetvibesFetcher::finishedFeedsReadlater()
{
//qDebug() << this->_data;
@ -1321,7 +1376,13 @@ void NetvibesFetcher::finishedFeedsReadlater()
++offset;
if (storeEntriesMerged())
moreReadlaterEntries = false;
startJob(StoreFeedsReadlater);
}
void NetvibesFetcher::finishedFeedsReadlater2()
{
if (moreReadlaterEntries)
fetchFeedsReadlater();
else
taskEnd();
@ -1342,6 +1403,10 @@ void NetvibesFetcher::finishedFeedsInfo()
setBusy(false);
}
void NetvibesFetcher::finishedFeedsInfo2()
{
}
void NetvibesFetcher::finishedSet()
{
//qDebug() << this->_data;
@ -1382,9 +1447,6 @@ void NetvibesFetcher::finishedFeedsUpdate()
{
//qDebug() << this->_data;
Settings *s = Settings::instance();
int feedsUpdateAtOnce = s->getFeedsUpdateAtOnce();
if(!parse()) {
qWarning() << "Error parsing Json!";
emit error(600);
@ -1392,8 +1454,13 @@ void NetvibesFetcher::finishedFeedsUpdate()
return;
}
storeFeeds();
storeEntries();
startJob(StoreFeedsUpdate);
}
void NetvibesFetcher::finishedFeedsUpdate2()
{
Settings *s = Settings::instance();
int feedsUpdateAtOnce = s->getFeedsUpdateAtOnce();
emit progress(_total-qCeil(_feedUpdateList.count()/feedsUpdateAtOnce),_total);
@ -1464,3 +1531,64 @@ QString NetvibesFetcher::hash(const QString &url)
QByteArray data; data.append(url);
return QString(QCryptographicHash::hash(data, QCryptographicHash::Md5).toHex());
}
void NetvibesFetcher::run() {
switch (currentJob) {
case StoreFeeds:
case StoreFeedsUpdate:
storeFeeds();
storeEntries();
break;
case StoreDashboards:
storeDashboards();
break;
case StoreTabs:
storeTabs();
break;
case StoreFeedsInfo:
break;
case StoreFeedsReadlater:
moreReadlaterEntries = storeEntriesMerged();
break;
default:
break;
}
}
void NetvibesFetcher::startJob(Job job)
{
if (isRunning()) {
qWarning() << "Job is running";
return;
}
disconnect(this, SIGNAL(finished()), 0, 0);
currentJob = job;
switch (job) {
case StoreDashboards:
connect(this, SIGNAL(finished()), this, SLOT(finishedDashboards2()));
break;
case StoreTabs:
connect(this, SIGNAL(finished()), this, SLOT(finishedTabs2()));
break;
case StoreFeeds:
connect(this, SIGNAL(finished()), this, SLOT(finishedFeeds2()));
break;
case StoreFeedsInfo:
connect(this, SIGNAL(finished()), this, SLOT(finishedFeedsInfo2()));
break;
case StoreFeedsUpdate:
connect(this, SIGNAL(finished()), this, SLOT(finishedFeedsUpdate2()));
break;
case StoreFeedsReadlater:
connect(this, SIGNAL(finished()), this, SLOT(finishedFeedsReadlater2()));
break;
default:
break;
}
//start(QThread::IdlePriority);
start();
}

View file

@ -28,6 +28,7 @@
#include <QMap>
#include <QStringList>
#include <QNetworkConfigurationManager>
#include <QThread>
#if QT_VERSION >= QT_VERSION_CHECK(5,0,0)
#include <QJsonObject>
@ -38,7 +39,7 @@
#include "databasemanager.h"
#include "downloadmanager.h"
class NetvibesFetcher: public QObject
class NetvibesFetcher : public QThread
{
Q_OBJECT
Q_ENUMS(BusyType)
@ -66,6 +67,9 @@ public:
BusyType readBusyType();
bool isBusy();
protected:
void run();
signals:
void quit();
void busyChanged();
@ -73,6 +77,7 @@ signals:
void networkNotAccessible();
void uploading();
void checkingCredentials();
void addDownload(DatabaseManager::CacheItem item);
/*
200 - Fether is busy
@ -94,21 +99,30 @@ public slots:
void finishedSignIn();
void finishedSignInOnlyCheck();
void finishedDashboards();
void finishedDashboards2();
void finishedTabs();
void finishedTabs2();
void finishedFeeds();
void finishedFeeds2();
void finishedFeedsInfo();
void finishedFeedsInfo2();
void finishedFeedsUpdate();
void finishedFeedsUpdate2();
void finishedFeedsReadlater();
void finishedFeedsReadlater2();
void finishedSet();
void readyRead();
void networkError(QNetworkReply::NetworkError);
void networkAccessibleChanged (QNetworkAccessManager::NetworkAccessibility accessible);
bool delayedUpdate(bool state);
private:
enum Job { StoreDashboards, StoreTabs, StoreFeeds,
StoreFeedsInfo, StoreFeedsUpdate, StoreFeedsReadlater };
static const int feedsAtOnce = 5;
static const int limitFeeds = 50;
static const int limitFeedsReadlater = 50;
@ -136,13 +150,17 @@ private:
int _total;
QByteArray _cookie;
QNetworkConfigurationManager ncm;
Job currentJob;
bool moreReadlaterEntries;
int offset;
bool parse();
QString hash(const QString &url);
void storeTabs(const QString &dashboardId);
//void storeTabs(const QString &dashboardId);
void storeTabs();
void storeFeeds();
void storeDashboards();
void storeEntries();
@ -164,6 +182,7 @@ private:
void downloadFeeds();
void setBusy(bool busy, BusyType type = Unknown);
void startJob(Job job);
};
#endif // NETVIBESFETCHER_H

View file

@ -44,7 +44,7 @@ Utils::Utils(QObject *parent) :
* Copyright (c) 2009 John Schember <john@nachtimwald.com>
* http://john.nachtimwald.com/2010/06/08/qt-remove-directory-and-its-contents/
*/
bool Utils::removeDir(const QString &dirName)
/*bool Utils::removeDir(const QString &dirName)
{
bool result = true;
QDir dir(dirName);
@ -66,7 +66,7 @@ bool Utils::removeDir(const QString &dirName)
}
return result;
}
}*/
void Utils::copyToClipboard(const QString &text)
{

View file

@ -44,7 +44,7 @@ public:
explicit Utils(QObject *parent = 0);
~Utils();
static bool removeDir(const QString &dirName);
//static bool removeDir(const QString &dirName);
Q_INVOKABLE void setEntryModel(const QString &feedId);
Q_INVOKABLE void setFeedModel(const QString &tabId);