BUG FIX: Read all doesnt work as should

This commit is contained in:
muki 2014-09-27 19:12:43 +02:00
parent 4e0cbecfc7
commit 9001548549
9 changed files with 187 additions and 441 deletions

Binary file not shown.

Binary file not shown.

View file

@ -24,14 +24,6 @@
<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>
<source>What&apos;s new</source>
<translation type="obsolete">Co jest nowego</translation>
</message>
<message>
<source>What&apos;s new in this release</source>
<translation type="obsolete">Co nowego w tej wersji</translation>
</message>
<message>
<location filename="../qml/sailfish/AboutPage.qml" line="108"/>
<source>Changelog</source>
@ -45,14 +37,6 @@
<source>Changelog</source>
<translation>Dziennik zmian</translation>
</message>
<message>
<source>1.2.0</source>
<translation type="obsolete">1.2.0</translation>
</message>
<message>
<source>What&apos;s new</source>
<translation type="obsolete">Co jest nowego</translation>
</message>
<message>
<location filename="../qml/sailfish/ChangelogPage.qml" line="58"/>
<source>Multi-Feed widget support</source>
@ -116,7 +100,7 @@
<message>
<location filename="../qml/sailfish/ChangelogPage.qml" line="97"/>
<source>User Guide</source>
<translation type="unfinished"></translation>
<translation type="unfinished">Przewodnik użytkownika</translation>
</message>
<message>
<location filename="../qml/sailfish/ChangelogPage.qml" line="98"/>
@ -140,20 +124,6 @@
</context>
<context>
<name>ControlBar</name>
<message>
<source>Offline mode</source>
<translation type="obsolete">Tryb Offline</translation>
</message>
<message>
<source>Online mode</source>
<translation type="obsolete">Tryb Online</translation>
</message>
<message>
<source>Cannot switch to Online mode
Network connection is unavailable</source>
<translation type="obsolete">Nie można przejść do trybu Online
Brak połączenia sieciowego</translation>
</message>
<message>
<location filename="../qml/sailfish/ControlBar.qml" line="163"/>
<source>Can&apos;t switch to Online mode.
@ -162,41 +132,13 @@ Network connection is unavailable.</source>
Brak połączenia sieciowego.</translation>
</message>
</context>
<context>
<name>ControlBarWebPreview</name>
<message>
<source>Switching to Online mode...</source>
<translation type="obsolete">Tryb Online! </translation>
</message>
<message>
<source>Network connection is unavailable!</source>
<translation type="obsolete">Brak połączenia sieciowego!</translation>
</message>
<message>
<source>Switching to Offline mode...</source>
<translation type="obsolete">Tryb Offline!</translation>
</message>
</context>
<context>
<name>CoverPage</name>
<message>
<source>all read</source>
<translation type="obsolete">wszytkie
przeczytane</translation>
</message>
<message>
<location filename="../qml/sailfish/CoverPage.qml" line="85"/>
<source>Not signed in</source>
<translation>Niezalogowany</translation>
</message>
<message>
<source>Uread</source>
<translation type="obsolete">Nieprze-</translation>
</message>
<message>
<source>items</source>
<translation type="obsolete">czytanych</translation>
</message>
<message>
<location filename="../qml/sailfish/CoverPage.qml" line="123"/>
<location filename="../qml/sailfish/CoverPage.qml" line="143"/>
@ -220,10 +162,6 @@ przeczytane</translation>
<comment>more or equal 5 articles are unread</comment>
<translation>Nieprzeczytanych</translation>
</message>
<message>
<source>Last sync</source>
<translation type="obsolete">Ostatnia aktualizacja</translation>
</message>
<message>
<location filename="../qml/sailfish/CoverPage.qml" line="261"/>
<source>Syncing</source>
@ -275,10 +213,6 @@ przeczytane</translation>
<source>No dashboards</source>
<translation>Brak tablic</translation>
</message>
<message>
<source>Dashboard changed!</source>
<translation type="obsolete">Zmieniono tablicę!</translation>
</message>
</context>
<context>
<name>DashboardPage</name>
@ -295,14 +229,6 @@ przeczytane</translation>
</context>
<context>
<name>EntryDelegate</name>
<message>
<source>Unstar</source>
<translation type="obsolete">Usuń z ulubionych</translation>
</message>
<message>
<source>Star</source>
<translation type="obsolete">Dodaj do ulubionych</translation>
</message>
<message>
<location filename="../qml/sailfish/EntryDelegate.qml" line="359"/>
<source>Unsave</source>
@ -326,16 +252,6 @@ przeczytane</translation>
</context>
<context>
<name>EntryPage</name>
<message>
<source>Network connection is unavailable.
Switching to Offline mode!</source>
<translation type="obsolete">Brak połączenia sieciowego.
Został włączony tryb Offline!</translation>
</message>
<message>
<source>Please wait until Syncing finished</source>
<translation type="obsolete">Zaczekaj do zakończenia aktualizacji</translation>
</message>
<message>
<location filename="../qml/harmattan/EntryPage.qml" line="83"/>
<location filename="../qml/symbian/EntryPage.qml" line="78"/>
@ -400,30 +316,6 @@ Został włączony tryb Offline</translation>
<source>No items</source>
<translation>Brak artykułów</translation>
</message>
<message>
<source>No entries</source>
<translation type="obsolete">Brak artykułów</translation>
</message>
<message>
<source>Items</source>
<translation type="obsolete">Artykuły</translation>
</message>
<message>
<source>All articles</source>
<translation type="obsolete">Wszystkie artykuły</translation>
</message>
<message>
<source>Please wait until current task is complete</source>
<translation type="obsolete">Zaczekaj do zakończenia obecnego zadania</translation>
</message>
<message>
<source>Wait until Sync finish</source>
<translation type="obsolete">Zaczekaj do zakończenia aktualizacji</translation>
</message>
<message>
<source>Pull down to do Sync</source>
<translation type="obsolete">Wykonaj aktualizacje kanałów</translation>
</message>
<message>
<location filename="../qml/sailfish/EntryPage.qml" line="88"/>
<source>All feeds</source>
@ -492,14 +384,6 @@ Został włączony tryb Offline.</translation>
</context>
<context>
<name>FeedPage</name>
<message>
<source>all read</source>
<translation type="obsolete">wszytkie przeczytane</translation>
</message>
<message>
<source>1 unread</source>
<translation type="obsolete">1 nieprzeczytany</translation>
</message>
<message>
<location filename="../qml/harmattan/FeedPage.qml" line="119"/>
<location filename="../qml/sailfish/FeedPage.qml" line="169"/>
@ -514,34 +398,6 @@ Został włączony tryb Offline.</translation>
<source>Mark all as unread</source>
<translation>Oznacz jako nieprzeczytane</translation>
</message>
<message>
<source>%1 unread</source>
<comment>less than 5 articles are unread</comment>
<translation type="obsolete">%1 nieprzeczytane</translation>
</message>
<message>
<source>%1 unread</source>
<comment>more or equal 5 articles are unread</comment>
<translation type="obsolete">%1 nieprzeczytanych</translation>
</message>
<message>
<source>%1 unread</source>
<comment>less than 5 items are unread</comment>
<translation type="obsolete">%1 nieprzeczytane</translation>
</message>
<message>
<source>%1 unread</source>
<comment>more or equal 5 items are unread</comment>
<translation type="obsolete">%1 nieprzeczytanych</translation>
</message>
<message>
<source>Mark as read</source>
<translation type="obsolete">Oznacz jako przeczytane</translation>
</message>
<message>
<source>Mark as unread</source>
<translation type="obsolete">Oznacz jako nieprzeczytane</translation>
</message>
<message>
<location filename="../qml/harmattan/FeedPage.qml" line="100"/>
<location filename="../qml/sailfish/FeedPage.qml" line="190"/>
@ -564,14 +420,6 @@ Został włączony tryb Offline.</translation>
<source>You are not signed in.</source>
<translation>Nie jesteś zalogowany.</translation>
</message>
<message>
<source>Wait until Sync finish</source>
<translation type="obsolete">Zaczekaj do zakończenia aktualizacji</translation>
</message>
<message>
<source>Pull down to do Sync</source>
<translation type="obsolete">Wykonaj aktualizacje kanałów</translation>
</message>
</context>
<context>
<name>FirstPage</name>
@ -685,29 +533,6 @@ If you want to see this guide one more time, click on &apos;Show User Guide&apos
Jeżeli chcesz jeszcze raz zobaczyć ten przewodnik, kliknij na &apos;Pokaż przewodnik użytkownika&apos; na stronie Ustawień.</translation>
</message>
</context>
<context>
<name>MainMenu</name>
<message>
<source>About</source>
<translation type="obsolete">O Programie</translation>
</message>
<message>
<source>Settings</source>
<translation type="obsolete">Ustawienia</translation>
</message>
<message>
<source>Sync</source>
<translation type="obsolete">Aktualizuj</translation>
</message>
<message>
<source>Last sync: %1</source>
<translation type="obsolete">Ostatnia aktualizacja: %1</translation>
</message>
<message>
<source>Not yet synced</source>
<translation type="obsolete">Jeszcze nie aktualizowano</translation>
</message>
</context>
<context>
<name>MainPage</name>
<message>
@ -732,44 +557,8 @@ Network connection is unavailable</source>
Brak połączenia sieciowego</translation>
</message>
</context>
<context>
<name>NoContentPage</name>
<message>
<source>Offline version not available :-(</source>
<translation type="obsolete">Brak kopii Offline :-(</translation>
</message>
<message>
<source>Cannot switch to Online mode
Network connection is unavailable</source>
<translation type="obsolete">Nie można przejść do trybu Online
Brak połączenia sieciowego</translation>
</message>
</context>
<context>
<name>NotSignedCoverPage</name>
<message>
<source>Not signed in</source>
<translation type="obsolete">Niezalogowany</translation>
</message>
</context>
<context>
<name>PageMenu</name>
<message>
<source>Mode: Offline</source>
<translation type="obsolete">Tryb: Offline</translation>
</message>
<message>
<source>Mode: Online</source>
<translation type="obsolete">Tryb: Online</translation>
</message>
<message>
<source>Set to: Online</source>
<translation type="obsolete">Przełącz w tryb: Online </translation>
</message>
<message>
<source>Set to: Offline</source>
<translation type="obsolete">Przełącz w tryb: Offline</translation>
</message>
<message>
<location filename="../qml/sailfish/PageMenu.qml" line="45"/>
<source>About</source>
@ -795,10 +584,6 @@ Brak połączenia sieciowego</translation>
<source>You have never synced</source>
<translation>Jeszcze nie wykonałeś aktualizacji</translation>
</message>
<message>
<source>Syncing...</source>
<translation type="obsolete">Aktualizacja...</translation>
</message>
<message>
<location filename="../qml/sailfish/PageMenu.qml" line="71"/>
<source>Mark all as read</source>
@ -814,10 +599,6 @@ Brak połączenia sieciowego</translation>
<source>Last sync: %1</source>
<translation>Ostatnia aktualizacja: %1</translation>
</message>
<message>
<source>Not yet synced</source>
<translation type="obsolete">Jeszcze nie aktualizowano</translation>
</message>
</context>
<context>
<name>PullBar</name>
@ -950,17 +731,9 @@ Brak połączenia sieciowego</translation>
<translation>Pokazuj obrazki</translation>
</message>
<message>
<location filename="../qml/sailfish/SettingsPage.qml" line="349"/>
<source>Show guide on startup</source>
<translation>Pokazuj przewodnik użytkownika przy starcie</translation>
</message>
<message>
<source>Cache data deleted!</source>
<translation type="obsolete">Lokalna kopia usunięta!</translation>
</message>
<message>
<source>Mode</source>
<translation type="obsolete">Tryb</translation>
<location filename="../qml/sailfish/SettingsPage.qml" line="341"/>
<source>Show User Guide</source>
<translation>Pokaż przewodnik użytkownika</translation>
</message>
<message>
<location filename="../qml/sailfish/SettingsPage.qml" line="182"/>
@ -972,50 +745,6 @@ Brak połączenia sieciowego</translation>
<source>Offline</source>
<translation>Offline</translation>
</message>
<message>
<source>Browsing mode</source>
<translation type="obsolete">Tryb przeglądania</translation>
</message>
<message>
<source>Tabs, Feeds &amp; articles</source>
<translation type="obsolete">Zakładki, Kanały i artykuły</translation>
</message>
<message>
<source>Tabs &amp; feeds &amp; articles</source>
<translation type="obsolete">Zakładki &amp; kanały &amp; artykuły</translation>
</message>
<message>
<source>Tabs &amp; articles</source>
<translation type="obsolete">Zakładki i artykuły</translation>
</message>
<message>
<source>Feeds &amp; articles</source>
<translation type="obsolete">Kanały i artykuły</translation>
</message>
<message>
<source>Only articles</source>
<translation type="obsolete">Tylko artykuły</translation>
</message>
<message>
<source>All articles</source>
<translation type="obsolete">Wszystkie artykuły</translation>
</message>
<message>
<source>Tabs Feeds Items</source>
<translation type="obsolete">Zakładki \u2192 Kanały \u2192 Artykuły</translation>
</message>
<message>
<source>Tabs Items</source>
<translation type="obsolete">Zakładki \u2192 Artykuły</translation>
</message>
<message>
<source>Feeds Items</source>
<translation type="obsolete">Kanały \u2192 Artykuły</translation>
</message>
<message>
<source>Items</source>
<translation type="obsolete">Artykuły</translation>
</message>
<message>
<location filename="../qml/harmattan/SettingsPage.qml" line="143"/>
<location filename="../qml/symbian/SettingsPage.qml" line="136"/>
@ -1117,10 +846,6 @@ Brak połączenia sieciowego</translation>
<source>Dynamic</source>
<translation>Dynamiczna</translation>
</message>
<message>
<source>Auto</source>
<translation type="obsolete">Dynamiczna</translation>
</message>
<message>
<location filename="../qml/sailfish/SettingsPage.qml" line="301"/>
<source>Portrait</source>
@ -1156,19 +881,11 @@ Brak połączenia sieciowego</translation>
<source>Offline mode</source>
<translation>Tryb Offline</translation>
</message>
<message>
<source>Content of articles will be displayed from local cache, without a network usage.</source>
<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="195"/>
<source>Cache articles</source>
<translation>Twórz lokalną kopię</translation>
</message>
<message>
<source>After sync the content of all articles will be downloaded and cached for access in Offline mode.</source>
<translation type="obsolete">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>
</message>
<message>
<location filename="../qml/harmattan/SettingsPage.qml" line="129"/>
<location filename="../qml/sailfish/SettingsPage.qml" line="207"/>
@ -1181,18 +898,6 @@ Brak połączenia sieciowego</translation>
<source>Show only unread articles</source>
<translation>Pokazuj tylko nieprzeczytane artykuły</translation>
</message>
<message>
<source>Show icons</source>
<translation type="obsolete">Pokazuj ikony</translation>
</message>
<message>
<source>Show Tab with saved articles</source>
<translation type="obsolete">Pokazuj zakładkę z zapisanymi artykułami </translation>
</message>
<message>
<source>Show Tab with starred articles</source>
<translation type="obsolete">Pokazuj zakładkę z ulubionymi </translation>
</message>
<message>
<location filename="../qml/sailfish/SettingsPage.qml" line="320"/>
<source>Black</source>
@ -1257,10 +962,6 @@ Brak połączenia sieciowego</translation>
<source>Enter username here!</source>
<translation>Wprowadź nazwę użytkownika!</translation>
</message>
<message>
<source>Netvibes&apos;s username</source>
<translation type="obsolete">Nazwa użytkownika Netvibes</translation>
</message>
<message>
<location filename="../qml/harmattan/SignInDialog.qml" line="80"/>
<location filename="../qml/sailfish/SignInDialog.qml" line="79"/>
@ -1276,17 +977,6 @@ Brak połączenia sieciowego</translation>
<translation>Hasło</translation>
</message>
</context>
<context>
<name>TabModel</name>
<message>
<source>Starred articles</source>
<translation type="obsolete">Ulubione</translation>
</message>
<message>
<source>Saved</source>
<translation type="obsolete">Zapisane</translation>
</message>
</context>
<context>
<name>TabPage</name>
<message>
@ -1304,10 +994,6 @@ Brak połączenia sieciowego</translation>
<source>You are not signed in.</source>
<translation>Nie jesteś zalogowany.</translation>
</message>
<message>
<source>Pull down to do Sync</source>
<translation type="obsolete">Wykonaj aktualizacje kanałów</translation>
</message>
<message>
<location filename="../qml/harmattan/TabPage.qml" line="158"/>
<location filename="../qml/sailfish/TabPage.qml" line="183"/>
@ -1335,10 +1021,6 @@ Brak połączenia sieciowego</translation>
<source>Press button to do first Sync</source>
<translation>Wykonaj pierwszą aktualizacje kanałów</translation>
</message>
<message>
<source>Pull down to do first Sync</source>
<translation type="obsolete">Wykonaj pierwszą aktualizacje kanałów</translation>
</message>
<message>
<location filename="../qml/harmattan/TabPage.qml" line="179"/>
<location filename="../qml/symbian/TabPage.qml" line="144"/>
@ -1446,10 +1128,6 @@ Brak połączenia sieciowego</translation>
<source>Loading page content...</source>
<translation>Wczytywanie artykułu...</translation>
</message>
<message>
<source>Failed to load article from local cache :-(</source>
<translation type="obsolete">Nie udało się pobrać artukułu z lokalnej kopii :-(</translation>
</message>
<message>
<location filename="../qml/sailfish/WebPreviewPage.qml" line="109"/>
<source>Failed to load item from local cache :-(</source>
@ -1496,74 +1174,6 @@ Brak połączenia sieciowego</translation>
</context>
<context>
<name>main</name>
<message>
<source>just now</source>
<translation type="obsolete">przed chwilą</translation>
</message>
<message>
<source>1 second ago</source>
<translation type="obsolete">sekundę temu</translation>
</message>
<message>
<source>1 minute ago</source>
<translation type="obsolete">minutę temu</translation>
</message>
<message>
<source>1 hour ago</source>
<translation type="obsolete">godzinę temu</translation>
</message>
<message>
<source>yesterday</source>
<translation type="obsolete">wczoraj</translation>
</message>
<message>
<source>%1 seconds ago</source>
<comment>less than 5 seconds</comment>
<translation type="obsolete">%1 sekundy temu</translation>
</message>
<message>
<source>%1 seconds ago</source>
<comment>more or equal 5 seconds</comment>
<translation type="obsolete">%1 sekund temu</translation>
</message>
<message>
<source>%1 minutes ago</source>
<comment>less than 5 minutes</comment>
<translation type="obsolete">%1 minuty temu</translation>
</message>
<message>
<source>%1 minutes ago</source>
<comment>more or equal 5 minutes</comment>
<translation type="obsolete">%1 minut temu</translation>
</message>
<message>
<source>%1 hours ago</source>
<comment>less than 5 hours</comment>
<translation type="obsolete">%1 godziny temu</translation>
</message>
<message>
<source>%1 hours ago</source>
<comment>more or equal 5 hours</comment>
<translation type="obsolete">%1 godzin temu</translation>
</message>
<message>
<source>%1 days ago</source>
<comment>less than 5 days</comment>
<translation type="obsolete">%1 dni temu</translation>
</message>
<message>
<source>%1 days ago</source>
<comment>more or equal 5 days</comment>
<translation type="obsolete">%1 dni temu</translation>
</message>
<message>
<source>1 week ago</source>
<translation type="obsolete">tydzień temu</translation>
</message>
<message>
<source>%1 weeks ago</source>
<translation type="obsolete">%1 tygodnie temu</translation>
</message>
<message>
<location filename="../qml/harmattan/main.qml" line="123"/>
<location filename="../qml/symbian/main.qml" line="120"/>
@ -1588,14 +1198,6 @@ Brak połączenia sieciowego</translation>
<source>All done!</source>
<translation>Gotowe!</translation>
</message>
<message>
<source>Caching...</source>
<translation type="obsolete">Pobieranie do lokalnej kopii...</translation>
</message>
<message>
<source>Network connection is unavailable!</source>
<translation type="obsolete">Brak połączenia sieciowego!</translation>
</message>
<message>
<location filename="../qml/harmattan/main.qml" line="90"/>
<location filename="../qml/symbian/main.qml" line="87"/>
@ -1686,18 +1288,6 @@ Brak połączenia sieciowego</translation>
<source>Waiting for network...</source>
<translation>Oczekiwanie na połączenie...</translation>
</message>
<message>
<source>Feeds</source>
<translation type="obsolete">Kanały</translation>
</message>
<message>
<source>Removing cache data...</source>
<translation type="obsolete">Usuwanie kopii lokalnej...</translation>
</message>
<message>
<source>Browsing mode changed!</source>
<translation type="obsolete">Tryb przeglądania został zmieniony!</translation>
</message>
</context>
<context>
<name>test</name>

View file

@ -1057,6 +1057,12 @@ QList<DatabaseManager::StreamModuleTab> DatabaseManager::readStreamModuleTabList
"WHERE ms.module_id=m.id AND m.tab_id='%1';")
.arg(id));
/*bool ret = query.exec(QString("SELECT e.stream_id, m.id, m.tab_id, max(e.published_at) "
"FROM entries as e, module_stream as ms, modules as m "
"WHERE e.stream_id=ms.stream_id AND ms.module_id=m.id AND m.tab_id='%1' "
"GROUP BY e.stream_id;")
.arg(id));*/
if (!ret) {
qWarning() << "SQL error!" << query.lastError().text();
}
@ -1090,6 +1096,12 @@ QList<DatabaseManager::StreamModuleTab> DatabaseManager::readStreamModuleTabList
"WHERE ms.module_id=m.id AND m.tab_id=t.id AND t.dashboard_id='%1';")
.arg(id));
/*bool ret = query.exec(QString("SELECT e.stream_id, m.id, m.tab_id, max(e.published_at) "
"FROM entries as e, module_stream as ms, modules as m, tabs as t "
"WHERE e.stream_id=ms.stream_id AND ms.module_id=m.id AND m.tab_id=t.id AND t.dashboard_id='%1' "
"GROUP BY e.stream_id;")
.arg(id));*/
if (!ret) {
qWarning() << "SQL error!" << query.lastError().text();
}
@ -1124,6 +1136,13 @@ QList<DatabaseManager::StreamModuleTab> DatabaseManager::readSlowStreamModuleTab
"AND t.dashboard_id='%1' AND s.slow=1;")
.arg(id));
/*bool ret = query.exec(QString("SELECT e.stream_id, m.id, m.tab_id, max(e.published_at) "
"FROM entries as e, module_stream as ms, modules as m, tabs as t "
"WHERE e.stream_id=ms.stream_id AND ms.module_id=m.id AND m.tab_id=t.id "
"AND t.dashboard_id='%1' AND s.slow=1 "
"GROUP BY e.stream_id;")
.arg(id));*/
if (!ret) {
qWarning() << "SQL error!" << query.lastError().text();
@ -1817,6 +1836,121 @@ int DatabaseManager::readLastUpdateByTab(const QString &id)
return 0;
}
int DatabaseManager::readLastPublishedAtByTab(const QString &id)
{
if (db.isOpen()) {
QSqlQuery query(db);
/*bool ret = query.exec(QString("SELECT max(s.last_update) FROM streams as s, module_stream as ms, modules as m "
"WHERE ms.stream_id=s.id AND ms.module_id=m.id AND m.tab_id='%1';").arg(id));*/
bool ret = query.exec(QString("SELECT max(e.published_at) "
"FROM entries as e, module_stream as ms, modules as m "
"WHERE e.stream_id=ms.stream_id AND ms.module_id=m.id AND m.tab_id='%1';")
.arg(id));
if (!ret) {
qWarning() << "SQL error!" << query.lastError().text();
}
while(query.next()) {
return query.value(0).toInt();
}
} else {
qWarning() << "DB is not open!";
}
return 0;
}
int DatabaseManager::readLastPublishedAtByDashboard(const QString &id)
{
if (db.isOpen()) {
QSqlQuery query(db);
/*bool ret = query.exec(QString("SELECT max(s.last_update) FROM streams as s, module_stream as ms, modules as m "
"WHERE ms.stream_id=s.id AND ms.module_id=m.id AND m.tab_id='%1';").arg(id));*/
bool ret = query.exec(QString("SELECT max(e.published_at) "
"FROM entries as e, module_stream as ms, modules as m, tabs as t "
"WHERE e.stream_id=ms.stream_id AND ms.module_id=m.id AND m.tab_id=t.id "
"AND t.dashboard_id='%1';")
.arg(id));
if (!ret) {
qWarning() << "SQL error!" << query.lastError().text();
}
while(query.next()) {
return query.value(0).toInt();
}
} else {
qWarning() << "DB is not open!";
}
return 0;
}
int DatabaseManager::readLastPublishedAtSlowByDashboard(const QString &id)
{
if (db.isOpen()) {
QSqlQuery query(db);
/*bool ret = query.exec(QString("SELECT max(s.last_update) FROM streams as s, module_stream as ms, modules as m "
"WHERE ms.stream_id=s.id AND ms.module_id=m.id AND m.tab_id='%1';").arg(id));*/
bool ret = query.exec(QString("SELECT max(e.published_at) "
"FROM entries as e, streams as s, module_stream as ms, modules as m, tabs as t "
"WHERE e.stream_id=s.id AND s.id=ms.stream_id AND ms.module_id=m.id AND m.tab_id=t.id "
"AND t.dashboard_id='%1' AND s.slow=1;")
.arg(id));
if (!ret) {
qWarning() << "SQL error!" << query.lastError().text();
}
while(query.next()) {
return query.value(0).toInt();
}
} else {
qWarning() << "DB is not open!";
}
return 0;
}
int DatabaseManager::readLastPublishedAtByStream(const QString &id)
{
if (db.isOpen()) {
QSqlQuery query(db);
/*bool ret = query.exec(QString("SELECT max(s.last_update) FROM streams as s, module_stream as ms, modules as m "
"WHERE ms.stream_id=s.id AND ms.module_id=m.id AND m.tab_id='%1';").arg(id));*/
bool ret = query.exec(QString("SELECT max(e.published_at) "
"FROM entries as e, module_stream as ms "
"WHERE e.stream_id=ms.stream_id "
"AND e.stream_id='%1';")
.arg(id));
if (!ret) {
qWarning() << "SQL error!" << query.lastError().text();
}
while(query.next()) {
return query.value(0).toInt();
}
} else {
qWarning() << "DB is not open!";
}
return 0;
}
int DatabaseManager::readLastUpdateByDashboard(const QString &id)
{
if (db.isOpen()) {

View file

@ -216,13 +216,19 @@ public:
CacheItem readCacheByOrigUrl(const QString &id);
CacheItem readCacheByEntry(const QString &id);
CacheItem readCacheByFinalUrl(const QString &id);
CacheItem readCacheByCache(const QString &id);//
CacheItem readCacheByCache(const QString &id);
QList<QString> readCacheFinalUrlsByStream(const QString &id, int limit);
QMap<QString,QString> readNotCachedEntries();
int readLastUpdateByTab(const QString &id);
int readLastUpdateByDashboard(const QString &id);
int readLastUpdateByStream(const QString &id);
int readLastPublishedAtByTab(const QString &id);
int readLastPublishedAtByDashboard(const QString &id);
int readLastPublishedAtByStream(const QString &id);
int readLastPublishedAtSlowByDashboard(const QString &id);
void removeStreamsByStream(const QString &id);
void removeEntriesOlderThan(int cacheDate, int limit);
void removeEntriesByStream(const QString &id, int limit);

View file

@ -283,27 +283,34 @@ void DownloadManager::downloadFinished(QNetworkReply *reply)
if (item.type == "text" || item.type == "image") {
QByteArray content = reply->readAll();
if (saveToDisk(hash(url.toString()), content)) {
// Write Cache item to DB
item.id = hash(item.entryId+item.finalUrl);
//qDebug() << "hash(item.finalUrl): " << hash(item.finalUrl);
item.origUrl = hash(item.origUrl);
item.finalUrl = hash(item.finalUrl);
item.date = QDateTime::currentDateTime().toTime_t();
item.flag = 1;
s->db->writeCache(item);
if (item.entryId!="") {
// Scan for other resouces, only text files
//if (item.type == "text")
// scanHtml(content, url);
s->db->updateEntriesCachedFlagByEntry(item.entryId,QDateTime::currentDateTime().toTime_t(),1);
}
// Check if tiny image, we do not want it
if (item.type == "image" && content.size()<minImageSize) {
qDebug() << "Tiny image found:"<<item.finalUrl;
} else {
emit this->error(501);
qWarning() << "Save to disk failed!";
if (saveToDisk(hash(url.toString()), content)) {
// Write Cache item to DB
item.id = hash(item.entryId+item.finalUrl);
//qDebug() << "hash(item.finalUrl): " << hash(item.finalUrl);
item.origUrl = hash(item.origUrl);
item.finalUrl = hash(item.finalUrl);
item.date = QDateTime::currentDateTime().toTime_t();
item.flag = 1;
s->db->writeCache(item);
if (item.entryId!="") {
// Scan for other resouces, only text files
//if (item.type == "text")
// scanHtml(content, url);
s->db->updateEntriesCachedFlagByEntry(item.entryId,QDateTime::currentDateTime().toTime_t(),1);
}
} else {
emit this->error(501);
qWarning() << "Save to disk failed!";
}
}
}
}

View file

@ -158,6 +158,7 @@ private:
static const int entriesLimit = 200;
static const int cacheRetencyFeedLimit = 20;
static const int maxCacheRetency = 604800; // 1 week
static const int minImageSize = 100;
QNetworkAccessManager manager;
QList<DatabaseManager::CacheItem> queue;

View file

@ -44,7 +44,7 @@
#include "iconprovider.h"
static const char *APP_NAME = "Kaktus";
static const char *AUTHOR = "Michał Kościesza <michal@mkiol.net>";
static const char *AUTHOR = "Michal Kosciesza <michal@mkiol.net>";
static const char *PAGE = "https://github/mkiol/kaktus";
static const char *VERSION = "1.2.0";

View file

@ -336,7 +336,7 @@ void NetvibesFetcher::set()
Settings *s = Settings::instance();
QString actions = "[";
if (action.type == DatabaseManager::SetTabReadAll||
if (action.type == DatabaseManager::SetTabReadAll ||
action.type == DatabaseManager::UnSetTabReadAll) {
QList<DatabaseManager::StreamModuleTab> list = s->db->readStreamModuleTabListByTab(action.id1);
@ -347,7 +347,9 @@ void NetvibesFetcher::set()
return;
}
actions += "{\"options\":{},\"streams\":[";
int lastPublishedAt = s->db->readLastPublishedAtByTab(action.id1)+1;
actions += QString("{\"options\":{\"publishedBeforeDate\":%1},\"streams\":[").arg(lastPublishedAt);
QList<DatabaseManager::StreamModuleTab>::iterator i = list.begin();
while (i != list.end()) {
@ -373,7 +375,9 @@ void NetvibesFetcher::set()
return;
}
actions += "{\"options\":{},\"streams\":[";
int lastPublishedAt = s->db->readLastPublishedAtByDashboard(s->getDashboardInUse())+1;
actions += QString("{\"options\":{\"publishedBeforeDate\":%1},\"streams\":[").arg(lastPublishedAt);
QList<DatabaseManager::StreamModuleTab>::iterator i = list.begin();
while (i != list.end()) {
@ -399,7 +403,9 @@ void NetvibesFetcher::set()
return;
}
actions += "{\"options\":{},\"streams\":[";
int lastPublishedAt = s->db->readLastPublishedAtSlowByDashboard(s->getDashboardInUse())+1;
actions += QString("{\"options\":{\"publishedBeforeDate\":%1},\"streams\":[").arg(lastPublishedAt);
QList<DatabaseManager::StreamModuleTab>::iterator i = list.begin();
while (i != list.end()) {
@ -417,7 +423,9 @@ void NetvibesFetcher::set()
if (action.type == DatabaseManager::SetStreamReadAll ||
action.type == DatabaseManager::UnSetStreamReadAll) {
actions += "{\"options\":{},\"streams\":[";
int lastPublishedAt = s->db->readLastPublishedAtByStream(action.id1)+1;
actions += QString("{\"options\":{\"publishedBeforeDate\":%1},\"streams\":[").arg(lastPublishedAt);
actions += QString("{\"id\":\"%1\"}").arg(action.id1);
actions += "]}";
}
@ -438,7 +446,7 @@ void NetvibesFetcher::set()
actions += "]";
//qDebug() << "actions=" << actions;
//qDebug() << "action.type="<<action.type<<"actions=" << actions;
QString content = "actions="+QUrl::toPercentEncoding(actions)+"&pageId="+s->getDashboardInUse();
//qDebug() << "content=" << content;