diff --git a/CMakeLists.txt b/CMakeLists.txt
index b27fe9a07..313bfecdb 100755
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -65,8 +65,8 @@ project(rssguard)
set(APP_NAME "RSS Guard")
set(APP_LOW_NAME "rssguard")
-set(APP_VERSION "2.5.3")
-set(FILE_VERSION "2,5,3,0")
+set(APP_VERSION "3.0.0")
+set(FILE_VERSION "3,0,0,0")
set(APP_AUTHOR "Martin Rotter")
set(APP_URL "http://bitbucket.org/skunkos/rssguard")
set(APP_URL_ISSUES "http://bitbucket.org/skunkos/rssguard/issues")
@@ -343,17 +343,18 @@ set(APP_SOURCES
src/qtsingleapplication/qtsinglecoreapplication.cpp
src/qtsingleapplication/qtsingleapplication.cpp
+ # QT-JSON sources.
+ src/qt-json/json.cpp
+
# GUI sources.
src/gui/dialogs/formmain.cpp
src/gui/dialogs/formsettings.cpp
src/gui/dialogs/formabout.cpp
- src/gui/dialogs/formcategorydetails.cpp
- src/gui/dialogs/formfeeddetails.cpp
src/gui/dialogs/formupdate.cpp
- src/gui/dialogs/formimportexport.cpp
src/gui/dialogs/formdatabasecleanup.cpp
src/gui/dialogs/formbackupdatabasesettings.cpp
src/gui/dialogs/formrestoredatabasesettings.cpp
+ src/gui/dialogs/formaddaccount.cpp
src/gui/notifications/notification.cpp
src/gui/systemtrayicon.cpp
src/gui/baselineedit.cpp
@@ -412,14 +413,37 @@ set(APP_SOURCES
src/core/messagesproxymodel.cpp
src/core/feedsmodel.cpp
src/core/feedsproxymodel.cpp
- src/core/category.cpp
- src/core/rootitem.cpp
- src/core/feed.cpp
src/core/parsingfactory.cpp
src/core/feeddownloader.cpp
- src/core/feedsimportexportmodel.cpp
- src/core/recyclebin.cpp
- src/core/feedsselection.cpp
+ src/core/message.cpp
+
+ # ABSTRACT service sources.
+ src/services/abstract/rootitem.cpp
+ src/services/abstract/serviceentrypoint.cpp
+ src/services/abstract/feed.cpp
+ src/services/abstract/category.cpp
+ src/services/abstract/serviceroot.cpp
+ src/services/abstract/recyclebin.cpp
+
+ # STANDARD feed service sources.
+ src/services/standard/gui/formstandardcategorydetails.cpp
+ src/services/standard/gui/formstandardfeeddetails.cpp
+ src/services/standard/gui/formstandardimportexport.cpp
+ src/services/standard/standardfeedsimportexportmodel.cpp
+ src/services/standard/standardserviceentrypoint.cpp
+ src/services/standard/standardcategory.cpp
+ src/services/standard/standardfeed.cpp
+ src/services/standard/standardserviceroot.cpp
+ src/services/standard/standardrecyclebin.cpp
+
+ # TT-RSS feed service sources.
+ src/services/tt-rss/ttrssserviceentrypoint.cpp
+ src/services/tt-rss/ttrssserviceroot.cpp
+ src/services/tt-rss/ttrssfeed.cpp
+ src/services/tt-rss/ttrsscategory.cpp
+ src/services/tt-rss/ttrssrecyclebin.cpp
+ src/services/tt-rss/gui/formeditaccount.cpp
+ src/services/tt-rss/network/ttrssnetworkfactory.cpp
# NETWORK-WEB sources.
src/network-web/basenetworkaccessmanager.cpp
@@ -462,13 +486,11 @@ set(APP_HEADERS
src/gui/dialogs/formmain.h
src/gui/dialogs/formsettings.h
src/gui/dialogs/formabout.h
- src/gui/dialogs/formcategorydetails.h
- src/gui/dialogs/formfeeddetails.h
- src/gui/dialogs/formimportexport.h
src/gui/dialogs/formbackupdatabasesettings.h
src/gui/dialogs/formrestoredatabasesettings.h
src/gui/dialogs/formdatabasecleanup.h
src/gui/dialogs/formupdate.h
+ src/gui/dialogs/formaddaccount.h
src/gui/notifications/notification.h
src/gui/systemtrayicon.h
src/gui/baselineedit.h
@@ -518,7 +540,30 @@ set(APP_HEADERS
src/core/feedsmodel.h
src/core/feedsproxymodel.h
src/core/feeddownloader.h
- src/core/feedsimportexportmodel.h
+
+ # ABSTRACT service headers.
+ src/services/abstract/rootitem.h
+ src/services/abstract/feed.h
+ src/services/abstract/category.h
+ src/services/abstract/serviceroot.h
+ src/services/abstract/recyclebin.h
+
+ # STANDARD service headers.
+ src/services/standard/standardfeedsimportexportmodel.h
+ src/services/standard/gui/formstandardcategorydetails.h
+ src/services/standard/gui/formstandardfeeddetails.h
+ src/services/standard/gui/formstandardimportexport.h
+ src/services/standard/standardcategory.h
+ src/services/standard/standardfeed.h
+ src/services/standard/standardserviceroot.h
+ src/services/standard/standardrecyclebin.h
+
+ # TT-RSS service headers.
+ src/services/tt-rss/ttrssserviceroot.h
+ src/services/tt-rss/ttrssrecyclebin.h;
+ src/services/tt-rss/ttrssfeed.h
+ src/services/tt-rss/ttrsscategory.h
+ src/services/tt-rss/gui/formeditaccount.h
# NETWORK-WEB headers.
src/network-web/webpage.h
@@ -548,13 +593,21 @@ set(APP_FORMS
src/gui/dialogs/formmain.ui
src/gui/dialogs/formsettings.ui
src/gui/dialogs/formabout.ui
- src/gui/dialogs/formcategorydetails.ui
- src/gui/dialogs/formfeeddetails.ui
- src/gui/toolbareditor.ui
- src/gui/dialogs/formimportexport.ui
src/gui/dialogs/formbackupdatabasesettings.ui
src/gui/dialogs/formrestoredatabasesettings.ui
src/gui/dialogs/formdatabasecleanup.ui
+ src/gui/dialogs/formaddaccount.ui
+ src/gui/toolbareditor.ui
+
+ # STANDARD service forms.
+ src/services/standard/gui/formstandardcategorydetails.ui
+ src/services/standard/gui/formstandardfeeddetails.ui
+ src/services/standard/gui/formstandardimportexport.ui
+
+ # TT-RSS service forms.
+ src/services/tt-rss/gui/formeditaccount.ui
+
+ # NETWORK forms.
src/network-web/downloadmanager.ui
src/network-web/downloaditem.ui
diff --git a/README.md b/README.md
index 0ab270a00..5b12953bb 100644
--- a/README.md
+++ b/README.md
@@ -2,7 +2,7 @@ RSS Guard
=========
Welcome to RSS Guard website. You can find here basic information.
-RSS Guard is simple and easy-to-use RSS/ATOM feed aggregator developed using Qt framework.
+RSS Guard is simple and easy-to-use RSS/ATOM feed aggregator developed using Qt framework which supports online feed synchronization.
- - -
Contacts
@@ -66,6 +66,8 @@ RSS Guard is simple (yet powerful) feed reader. It is able to fetch the most kno
RSS Guard is written in C++. It is pretty fast even with tons of messages loaded. The core features are:
+* **support for online feed synchronization via plugins**,
+ * Tiny Tiny RSS (from RSS Guard 3.0.0).
* multiplatformity,
* support for all feed formats,
* simplicity,
@@ -113,10 +115,9 @@ RSS Guard is written in C++. It is pretty fast even with tons of messages loaded
* Qt library is the only dependency,
* open-source development model and friendly author waiting for your feedback,
* no ads, no hidden costs.
+
- - -
Philosophy
----------
-RSS Guard tends to be independent software. It's free, it's open-source. RSS Guard will never depend on other services - this includes online news aggregators like Feedly, The Old Reader and others.
-
-That's why RSS Guard will never integrate those services unless someone else codes support for them on his own. Remember, RSS Guard supports online synchronization via MySQL/MariaDB or you can use Dropbox to synchronize SQLite data storage.
\ No newline at end of file
+RSS Guard tends to be independent software. It's free, it's open-source. RSS Guard accepts donations but only to SUPPORT its development.
\ No newline at end of file
diff --git a/localization/rssguard-cs_CZ.ts b/localization/rssguard-cs_CZ.ts
index b518b6ae4..a089881e9 100644
--- a/localization/rssguard-cs_CZ.ts
+++ b/localization/rssguard-cs_CZ.ts
@@ -1,4 +1,6 @@
-
+
+
+AdBlockAddSubscriptionDialog
@@ -100,7 +102,7 @@ Berte také na paměti, že některé prostředky webových stránek jsou intern
AdBlockIconAdblock
-
+ Show Adblock &settings
@@ -196,25 +198,6 @@ Berte také na paměti, že některé prostředky webových stránek jsou intern
Obnovení nastavení nebylo spuštěno. Ujistěte se, že cílový adresář je zapisovatelný.
-
- Category
-
- %1 (category)%2%3
- Tooltip for standard feed.
- %1 (kategorie)%2%3
-
-
-
-This category does not contain any nested items.
-
-Tato kategorie neobsahuje žádné položky.
-
-
- %n unread message(s).
- Tooltip for "unread" column of feed list.
- %n nepřečtená zpráva.%n nepřečtené zprávy.%n nepřečtených zpráv.
-
-DatabaseCleaner
@@ -292,10 +275,14 @@ Tato kategorie neobsahuje žádné položky.
Click me to add feeds from this website.
This website contains %n feed(s).
- Pro přidání kanálů z této stránky na mě klikni.
-Tato stránka obsahuje %n kanál.Pro přidání kanálů z této stránky na mě klikni.
-Tato stránka obsahuje %n kanály.Pro přidání kanálů z této stránky na mě klikni.
-Tato stránka obsahuje %n kanálů.
+
+ Pro přidání kanálů z této stránky na mě klikni.
+Tato stránka obsahuje %n kanál.
+ Pro přidání kanálů z této stránky na mě klikni.
+Tato stránka obsahuje %n kanály.
+ Pro přidání kanálů z této stránky na mě klikni.
+Tato stránka obsahuje %n kanálů.
+
@@ -373,14 +360,14 @@ Tato stránka obsahuje %n kanálů.
Stahování dokončeno
- File '%1' is downloaded.
+ File '%1' is downloaded.
Click here to open parent directory.Soubor '%1' je stažen.
Klikněte sem pro otevření nadřazeného adresáře.URL: %1
-
+ Local file: %1
@@ -399,11 +386,19 @@ Klikněte sem pro otevření nadřazeného adresáře.
%n minutes remaining
- %n minuta do konce%n minuty do konce%n minut do konce
+
+ %n minuta do konce
+ %n minuty do konce
+ %n minut do konce
+ %n seconds remaining
- %n vteřina do konce%n vteřiny do konce%n vteřin do konce
+
+ %n vteřina do konce
+ %n vteřiny do konce
+ %n vteřin do konce
+ bytes
@@ -411,63 +406,23 @@ Klikněte sem pro otevření nadřazeného adresáře.
kB
-
+ MB
-
+ GB
-
+ Downloading %n file(s)...
- Stahuji %n soubor...Stahuji %n soubory...Stahuji %n souborů...
-
-
-
- Feed
-
- does not use auto-update
- Describes feed auto-update status.
- nepoužívá auto-aktualizace
-
-
- uses global settings
- Describes feed auto-update status.
- používá globální nastavení
-
-
- uses specific settings (%n minute(s) to next auto-update)
- Describes feed auto-update status.
- používá specifické nastavení (%n minuta do další aktualizace)používá specifické nastavení (%n minuty do další aktualizace)používá specifické nastavení (%n minut do další aktualizace)
-
-
- %1 (%2)%3
-
-Network status: %6
-Encoding: %4
-Auto-update status: %5
- Tooltip for feed.
- %1 (%2)%3
-
-Síťový status: %6
-Kódování: %4
-Automatický update: %5
-
-
- %n unread message(s).
- Tooltip for "unread" column of feed list.
- %n nepřečtená zpráva.%n nepřečtené zprávy.%n nepřečtených zpráv.
-
-
- Metadata not fetched
- Metadata nezískána
-
-
- Metadata was not fetched because: %1
- Metadata nezískána, protože: %1
+
+ Stahuji %n soubor...
+ Stahuji %n soubory...
+ Stahuji %n souborů...
+
@@ -476,24 +431,10 @@ Automatický update: %5
Toolbar for messagesPanel zpráv
-
- Feed update started
- Text display in status bar when feed update is started.
- Spuštěn update kanálů
-
-
- Updated feed '%1'
- Text display in status bar when particular feed is updated.
- Aktualizován kanál '%1'
- Toolbar for feedsPanel kanálů
-
- Error when loading initial feeds
- Chyba při načítání úvodních kanálů
- Cannot cleanup databaseNelze vyčistit databázi
@@ -502,18 +443,6 @@ Automatický update: %5
Cannot cleanup database, because another critical action is running.Databázi nelze v současné době vyčistit, protože běží jiná kritická akce. Zkuste to později.
-
- Cannot update all items
- Nelze aktualizovat všechny položky
-
-
- You cannot update all items because another another critical operation is ongoing.
- Nelze aktualizovat všechny položky, protože už běží jiná kritická operace.
-
-
- New messages downloaded
- Staženy nové zprávy
- FeedsImportExportModel
@@ -550,25 +479,47 @@ Automatický update: %5
Name of root item of feed list which can be seen in feed add/edit dialog.Kořen
-
- Invalid tree data.
- Chybná data stromu.
-
-
- Import successfull, but some feeds/categories were not imported due to error.
- Import byl úspěšný, ale některé kanály či kategorie nebyly importovány kvůli chybě.
-
-
- Import was completely successfull.
- Import byl zcela úspěšný.
- Starting auto-update of some feedsZahajuji auto-update některých kanálůI will auto-update %n feed(s).
- Budu aktualizovat %n kanál.Budu aktualizovat %n kanály.Budu aktualizovat %n kanálů.
+
+ Budu aktualizovat %n kanál.
+ Budu aktualizovat %n kanály.
+ Budu aktualizovat %n kanálů.
+
+
+
+ Cannot update all items
+ Nelze aktualizovat všechny položky
+
+
+ You cannot update all items because another another critical operation is ongoing.
+ Nelze aktualizovat všechny položky, protože už běží jiná kritická operace.
+
+
+ Feed update started
+ Text display in status bar when feed update is started.
+ Spuštěn update kanálů
+
+
+ Updated feed '%1'
+ Text display in status bar when particular feed is updated.
+ Aktualizován kanál '%1'
+
+
+ New messages downloaded
+ Staženy nové zprávy
+
+
+ You can't transfer dragged item into different account, this is not supported.
+ Tažené položky nelze přesouvat mezi účty, toto není podporováno.
+
+
+ Cannot perform drag & drop operation
+ Operaci drag & drop nelze vykonat
@@ -580,14 +531,6 @@ Automatický update: %5
FeedsView
-
- Cannot add standard category
- Nelze přidat standardní kategorii
-
-
- Cannot add standard feed
- Nelze přidat standardní kanál
- Cannot edit itemNelze upravit položku
@@ -596,50 +539,10 @@ Automatický update: %5
Cannot delete itemNelze smazat položku
-
- You are about to delete selected feed or category.
- Právě se chystáte smazat vybraný kanál či kategorii.
-
-
- Deletion of item failed.
- Mazání položky selhalo.
-
-
- Selected item was not deleted due to error.
- Vybraná položka nebyla smazána kvůli chybě.
-
-
- Do you really want to delete selected item?
- Opravdu chcete vybranou položku smazat?
-
-
- Permanently delete messages
- Trvalé smazání zpráv
-
-
- You are about to permanenty delete all messages from your recycle bin.
- Chystáte se vysypat koš.
-
-
- Do you really want to empty your recycle bin?
- Opravdu chcete koš vysypat?
- Context menu for empty spaceKontextové menu pro prázdný prostor
-
- Context menu for recycle bin
- Kontextové menu pro koš
-
-
- You cannot add new standard category now because another critical operation is ongoing.
- Nelze přidat novou kategorii, protože už běží jiná kritická operace.
-
-
- You cannot add new standard feed now because another critical operation is ongoing.
- Nelze přidat nový kanál, protože už běží jiná kritická operace.
- Selected item cannot be edited because another critical operation is ongoing.Nelze editovat vybranou položku, protože už běží jiná kritická operace.
@@ -648,14 +551,44 @@ Automatický update: %5
Selected item cannot be deleted because another critical operation is ongoing.Nelze smazat vybranou položku, protože už běží jiná kritická operace.
-
- Delete feed/category
- Smazat kanál/kategorii
- Context menu for categoriesKontextové menu pro kategorie
+
+ Selected item cannot be edited, this is not (yet?) supported.
+ Vybraná položka nemůže být upravena, toto není podporováno.
+
+
+ Deleting "%1"
+ Maži "%1"
+
+
+ You are about to completely delete item "%1".
+ Chystáte se zcela vymazat položku "%1".
+
+
+ Are you sure?
+ Jste si jistý?
+
+
+ Cannot delete "%1"
+ Nelze smazat "%1"
+
+
+ This item cannot be deleted because something critically failed. Submit bug report.
+ Tuto položku nelze smazat, protože se něco kriticky porouchalo, nahlašte tuto chybu.
+
+
+ This item cannot be deleted, because it does not support it
+or this functionality is not implemented yet.
+ Tuto položku nelze smazat, protože to nepodporuje
+nebo tato funkcionality dosud není implementována.
+
+
+ Context menu for other items
+ Kontextové menu pro ostatní položky
+ FormAbout
@@ -703,10 +636,6 @@ Automatický update: %5
<b>%8</b><br><b>Version:</b> %1 (build on %2 with CMake %3)<br><b>Revision:</b> %4<br><b>Build date:</b> %5<br><b>Qt:</b> %6 (compiled against %7)<br><b>%8</b><br><b>Verze:</b> %1 (při sestavování použit OS %2 a CMake %3)<br><b>Revize:</b> %4<br><b>Datum sestavení:</b> %5<br><b>Qt:</b> %6 (při kompilaci %7)<br>
-
- <body>%5 is a (very) tiny feed reader.<br><br>This software is distributed under the terms of GNU General Public License, version 3.<br><br>Contacts:<ul><li><a href="mailto://%1">%1</a> ~email</li><li><a href="%2">%2</a> ~website</li></ul>You can obtain source code for %5 from its website.<br><br><br>Copyright (C) 2011-%3 %4</body>
- <body>%5 je (velmi) jednoduduchá čtečka kanálů.<br><br>Tato aplikace je šířena pod podmínkami licence GNU General Public License, verze 3.<br><br>Kontakty:<ul><li><a href="mailto://%1">%1</a> ~email</li><li><a href="%2">%2</a> ~web</li></ul>Zdrojové kódy pro %5 je možné získat z jeho webu.<br><br><br>Copyright (C) 2011-%3 %4</body>
- About %1About RSS Guard dialog title.
@@ -736,6 +665,49 @@ Automatický update: %5
ResourcesZdroje
+
+ <body>%5 is a (very) tiny feed reader.<br><br>This software is distributed under the terms of GNU General Public License, version 3.<br><br>Contacts:<ul><li><a href="mailto://%1">%1</a> ~e-mail</li><li><a href="%2">%2</a> ~website</li></ul>You can obtain source code for %5 from its website.<br><br><br>Copyright (C) 2011-%3 %4</body>
+ <body>%5 je (velmi) lehkotonážní prohlížeč kanálů.<br><br>Tento software je distribuován pod licencí GNU General Public License, verze 3.<br><br>Kontakty:<ul><li><a href="mailto://%1">%1</a> ~e-mail</li><li><a href="%2">%2</a> ~web</li></ul>Zdrojový kór pro %5 lze získat na jeho webu.<br><br><br>Copyright (C) 2011-%3 %4</body>
+
+
+
+ FormAddAccount
+
+ Add new account
+ Přidat nový účet
+
+
+ Details
+ Detaily
+
+
+ Name
+ Název
+
+
+ Version
+ Verze
+
+
+ Author
+ Autor
+
+
+ Description
+ Popis
+
+
+ Cannot add account
+ Účet nelze přidat
+
+
+ Some critical error occurred, report this to developers.
+ Vyskytla se kritická chyba, nahlaště problém vývojářům.
+
+
+ This account can be added only once.
+ Tento účet může být přidán pouze jednou.
+ FormBackupDatabaseSettings
@@ -812,134 +784,6 @@ Automatický update: %5
Je zvolen vhodný výstupní adresář.
-
- FormCategoryDetails
-
- Parent category
- Nadřazená kategorie
-
-
- Select parent item for your category.
- Zvolte nadřazenou kategorii pro Vaši kategorii.
-
-
- Title
- Nadpis
-
-
- Description
- Popis
-
-
- Icon
- Ikona
-
-
- Select icon for your category.
- Zvolte ikonu pro Vaši kategorii.
-
-
- Add new category
- Přidat novou kategorii
-
-
- Edit existing category
- Upravit existující kategorii
-
-
- Cannot add category
- Nelze přidat kategorii
-
-
- Category was not added due to error.
- Kategorie nebyla přidána kvůli chybě.
-
-
- Cannot edit category
- Nelze upravit kategorii
-
-
- Category was not edited due to error.
- Kategorie nebyla upravena kvůli chybě.
-
-
- Category name is ok.
- Název kategorie je v pořádku.
-
-
- Category name is too short.
- Název kategorie je příliš krátký.
-
-
- Description is empty.
- Popis je prázdný.
-
-
- Select icon file for the category
- Zvolte ikonu pro Vaši kategorii
-
-
- Images (*.bmp *.jpg *.jpeg *.png *.svg *.tga)
- Obrázky (*.bmp *.jpg *.jpeg *.png *.svg *.tga)
-
-
- Select icon
- Vybrat ikonu
-
-
- Cancel
- Zrušit
-
-
- Look in:
- Label to describe the folder for icon file selection dialog.
- Hledat v:
-
-
- Icon name:
- Název ikony:
-
-
- Icon type:
- Typ ikony:
-
-
- Category title
- Název kategorie
-
-
- Set title for your category.
- Zvolte název pro Vaši kategorii.
-
-
- Category description
- Popis kategorie
-
-
- Set description for your category.
- Zvolte popis Vaší kategorie.
-
-
- Icon selection
- Vybrat ikonu
-
-
- Load icon from file...
- Načíst ikonu ze souboru...
-
-
- Do not use icon
- Nepoužít ikonu
-
-
- Use default icon
- Použít výchozí ikonu
-
-
- The description is ok.
- Popis je v pořádku.
-
-FormDatabaseCleanup
@@ -952,7 +796,11 @@ Automatický update: %5
day(s)
- den dny dnů
+
+ den
+ dny
+ dnů
+ Shrink database file
@@ -1007,389 +855,6 @@ Automatický update: %5
Vymazat všechny důležité zprávy (včetně těch z koše)
-
- FormFeedDetails
-
- Parent category
- Nadřazená kategorie
-
-
- Select parent item for your feed.
- Zvolte nadřazenou kategorii pro Váš kanál.
-
-
- Type
- Typ
-
-
- Select type of the standard feed.
- Zvolte typ standardního kanálu.
-
-
- Encoding
- Kódování
-
-
- Select encoding of the standard feed. If you are unsure about the encoding, then select "UTF-8" encoding.
- Zvolte kódování kanálu. Pokud si nejste jisti, tak zvolte kódování "UTF-8".
-
-
- Auto-update
- Auto-aktualizace
-
-
- Select the auto-update strategy for this feed. Default auto-update strategy means that the feed will be update in time intervals set in application settings.
- Zvolte strategii auto-aktualizací tohoto kanálu. Výchozí strategorie auto-aktualizace znamená, že kanál bude aktualizován v intervalech udaných v nastavení aplikace.
-
-
- minutes
- minut
-
-
- Title
- Nadpis
-
-
- Description
- Popis
-
-
- URL
-
-
-
- Fetch it now
- Načíst nyní
-
-
- Icon
- Ikona
-
-
- Select icon for your feed.
- Zvolte ikonu pro Váš kanál.
-
-
- Some feeds require authentication, including GMail feeds. BASIC, NTLM-2 and DIGEST-MD5 authentication schemes are supported.
- Některé kanály vyžaduje autentizaci, a to včetně kanálů pro GMail. Je podporována autentizace BASIC, NTLM-2 a DIGEST-MD5.
-
-
- Requires authentication
- Vyžaduje autentizaci
-
-
- Username
- Uživatelské jméno
-
-
- Password
- Heslo
-
-
- Fetch metadata
- Načíst metadata
-
-
- Add new feed
- Přidat nový kanál
-
-
- Edit existing feed
- Upravit existující kanál
-
-
- Feed name is ok.
- Název kanálu je v pořádku.
-
-
- Feed name is too short.
- Název kanálu je příliš krátký.
-
-
- Description is empty.
- Popis je prázdný.
-
-
- The url is ok.
- Url je v pořádku.
-
-
- The url does not meet standard pattern. Does your url start with "http://" or "https://" prefix.
- Url neobsahuje standardní schéma. Začíná Vaše url schématem "http://" nebo "https://".
-
-
- The url is empty.
- Url je prázdné.
-
-
- Username is ok or it is not needed.
- Uživatelské jméno je v pořádku nebo není třeba.
-
-
- Username is empty.
- Uživatelské jméno je prázdné.
-
-
- Password is ok or it is not needed.
- Heslo je v pořádku nebo není třeba.
-
-
- Password is empty.
- Heslo je prázdné.
-
-
- Select icon file for the feed
- Vybrat ikonu pro kanál
-
-
- Images (*.bmp *.jpg *.jpeg *.png *.svg *.tga)
- Obrázky (*.bmp *.jpg *.jpeg *.png *.svg *.tga)
-
-
- Select icon
- Vybrat ikonu
-
-
- Cancel
- Zrušit
-
-
- Look in:
- Label for field with icon file name textbox for selection dialog.
- Hledat v:
-
-
- Icon name:
- Název ikony:
-
-
- Icon type:
- Typ ikony:
-
-
- Cannot add feed
- Nelze přidat kanál
-
-
- Feed was not added due to error.
- Kanál nepřidán kvůli chybě.
-
-
- Cannot edit feed
- Nelze upravit kanál
-
-
- All metadata fetched successfully.
- Metadata stažena úspěšně.
-
-
- Feed and icon metadata fetched.
- Metadata a ikona staženy.
-
-
- Result: %1.
- Výsledek: %1.
-
-
- Feed or icon metatada not fetched.
- Metadata nebo ikona nestaženy.
-
-
- Error: %1.
- Chyba: %1.
-
-
- No metadata fetched.
- Žádná metadata nestažena.
-
-
- Feed title
- Název kanálu
-
-
- Set title for your feed.
- Zvolte název pro Váš kanál.
-
-
- Feed description
- Popis kanálu
-
-
- Set description for your feed.
- Zvolte popis Vašeho kanálu.
-
-
- Full feed url including scheme
- Plné url kanálu včetně schématu
-
-
- Set url for your feed.
- Zvolte url Vašeho kanálu.
-
-
- Set username to access the feed.
- Nastavte uživatelské jméno pro tento kanál.
-
-
- Set password to access the feed.
- Nastavte heslo pro tento kanál.
-
-
- Icon selection
- Vybrat ikonu
-
-
- Load icon from file...
- Načíst ikonu ze souboru...
-
-
- Do not use icon
- Nepoužít ikonu
-
-
- Use default icon
- Použít výchozí ikonu
-
-
- No metadata fetched so far.
- Metadata doposud nenačtena.
-
-
- Auto-update using global interval
- Auto-aktualizovat dle hlavního nastavení
-
-
- Auto-update every
- Auto-aktualizovat každých
-
-
- Do not auto-update at all
- Zakázat auto-aktualizace
-
-
- The description is ok.
- Popis je v pořádku.
-
-
- Feed was not edited due to error.
- Kanál nebyl upraven kvůli chybě.
-
-
- Icon fetched successfully.
- Ikona úspěšně stažena.
-
-
- Icon metadata fetched.
- Metadata ikony načtena.
-
-
- Icon metatada not fetched.
- Metadata ikony nenačtena.
-
-
- No icon fetched.
- Ikona nestažena.
-
-
- Fetch icon from feed
- Stáhnout ikonu online z kanálu
-
-
-
- FormImportExport
-
- &Select file
- &Zvolit soubor
-
-
- Operation results
- Výsledky operací
-
-
- No file is selected.
- Nevybrán žádný soubor.
-
-
- No operation executed yet.
- Doposud neprovedena žádná operace.
-
-
- Export feeds
- Exportovat kanály
-
-
- Destination file
- Cílový soubor
-
-
- Source feeds && categories
- Zdrojové kanály && kategorie
-
-
- Source file
- Zdrojový soubor
-
-
- Target feeds && categories
- Cílové kanály && kategorie
-
-
- Import feeds
- Importovat kanály
-
-
- OPML 2.0 files (*.opml)
- soubory OPML 2.0 (*.opml)
-
-
- Select file for feeds export
- Zvolit soubor pro export kanálů
-
-
- File is selected.
- Soubor je vybrán.
-
-
- Select file for feeds import
- Zvolit soubot pro import kanálů
-
-
- Cannot open source file.
- Zdrojový soubor nelze otevřít.
-
-
- Feeds were loaded.
- Kanály načteny.
-
-
- Error, file is not well-formed. Select another file.
- Chyba, soubor nemá správný formát, zvolte jiný.
-
-
- Error occurred. File is not well-formed. Select another file.
- Chyba, soubor nemá správný formát, zvolte jiný.
-
-
- Feeds were exported successfully.
- Kanály byly úspěšně exportovány.
-
-
- Cannot write into destination file.
- Do cílového souboru nelze zapisovat.
-
-
- Critical error occurred.
- Vyskytla se kritická chyba.
-
-
- &Check all items
- &Označit vše
-
-
- &Uncheck all items
- O&dznačit vše
-
-FormMain
@@ -1464,22 +929,6 @@ Automatický update: %5
No actions are available right now.Žádná akce není právě dostupná.
-
- Fee&ds && categories
- Kanály && ka&tegorie
-
-
- Mark all messages (without message filters) from selected feeds as read.
- Označit všechny zprávy (i přes filtry zpráv) z vybraných kanálů jako přečtené.
-
-
- Mark all messages (without message filters) from selected feeds as unread.
- Označit všechny zprávy (i přes filtry zpráv) z vybraných kanálů jako nepřečtené.
-
-
- Displays all messages from selected feeds/categories in a new "newspaper mode" tab. Note that messages are not set as read automatically.
- Zobrazí všechny zprávy z vybraných kanálů/kategorií v "novinovém" náhledu. Všechny zprávy budou automaticky označeny jako přečtené.
- Hides main window if it is visible and shows it if it is hidden.Skryje hlavní ikno, je-li aktuálně viditelné. Jinak jej zobrazí.
@@ -1504,34 +953,6 @@ Automatický update: %5
&Delete selected messagesSma&zat vybrané zprávy
-
- Deletes all messages from selected feeds.
- Smaže všechny zprávy z vybraných kanálů.
-
-
- Marks all messages in all feeds read. This does not take message filters into account.
- Označí všechny zprávy ve všech kanálech jako přečtené. Tato funkce nemusí brát v potaz případně filtry zpráv.
-
-
- Deletes all messages from all feeds.
- Smaže všechny zprávy ze všech kanálů.
-
-
- Update &all feeds
- Aktualizovat všechny k&anály
-
-
- Update &selected feeds
- Aktualizovat vy&brané kanály
-
-
- &Edit selected feed/category
- Up&ravit vybraný kanál/kategorii
-
-
- &Delete selected feed/category
- Smazat vybraný kaná&l/kategorii
- SettingsNastavení
@@ -1540,10 +961,6 @@ Automatický update: %5
Hides or displays the main menu.Skryje či zobrazí hlavní menu.
-
- Add &new feed/category
- &Přidat novou položku
- &Close all tabs except current one&Zavřít všechny taby až na ten aktivní
@@ -1560,18 +977,6 @@ Automatický update: %5
Mark &selected messages as &unreadOznačit vybrané zprávy jako &nepřečtené
-
- &Mark selected feeds as read
- Označit vybrané kanály jako &přečtené
-
-
- &Mark selected feeds as unread
- Označit vybrané kanály jako &nepřečtené
-
-
- &Clean selected feeds
- &Vyčistit vybrané kanály
- Open selected source articles in &external browser&Otevřít vybrané zdrojové články v externím prohlížeči
@@ -1584,26 +989,6 @@ Automatický update: %5
Open selected source articles in &internal browser&Otevřít vybrané zdrojové články v interním prohlížeči
-
- &Mark all feeds as &read
- Označit všechny kanály jako &přečtené
-
-
- View selected feeds in &newspaper mode
- Zobrazit vybrané kanály v &novinovém náhledu
-
-
- &Clean all feeds
- &Vyčistit všechny kanály
-
-
- Select &next feed/category
- Vybrat &další kanál/kategorii
-
-
- Select &previous feed/category
- Vybrat &předchozí kanál/kategorii
- Select &next messageVybrat &další zprávu
@@ -1656,22 +1041,6 @@ Automatický update: %5
Cannot open external browser. Navigate to application website manually.Externí webový prohlížeč nelze otevřít. Zkontrolujte aktualizace ručně na webu programu.
-
- New &feed
- Nový &kanál
-
-
- Add new feed.
- Přidat nový kanál.
-
-
- New &category
- No&vá kategorie
-
-
- Add new category.
- Přidat novou kategorii.
- &Toolbars&Nástrojové lišty
@@ -1684,30 +1053,10 @@ Automatický update: %5
&Feed/message list headers&Hlavičky seznamů zpráv/kanálů
-
- &Import feeds
- &Importovat kanály
-
-
- Imports feeds you want from selected file.
- Importuje kanály ze souboru.
-
-
- &Export feeds
- &Exportovat kanály
-
-
- Exports feeds you want to selected file.
- Exportuje kanály do souboru.
- Close all tabs except current one.Zavřít všechny taby kromě aktivního.
-
- &Recycle bin
- &Koš
- Report a &bug (GitHub)...Nahlásit &chybu (GitHub)...
@@ -1724,18 +1073,6 @@ Automatický update: %5
Display &wikiZobrazit &wiki
-
- &Empty recycle bin
- &Vysypat koš
-
-
- &Restore all messages
- &Obnovit všechny zprávy z koše
-
-
- Restore &selected messages
- Obnovit &vybrané zprávy z koše
- &Restart&Restartovat
@@ -1765,16 +1102,132 @@ Automatický update: %5
&Vyčistit databázi
- Show only unread feeds/categories
- Zobrazit pouze nepřečtené kanály/kategorie
+ Add &new item
+ Přidat &novou položku
- &Fetch feed metadata
- &Získat metadata kanálu
+ Update &all items
+ Aktualizovat &všechny položky
- &Expand/collapse selected feed/category
- &Expandovat/složit vybraný kanál/kategorii
+ Update &selected items
+ Aktualizovat &vybrané položky
+
+
+ &Edit selected item
+ &Upravit vybranou položku
+
+
+ &Delete selected item
+ Smazat &vybranou položku
+
+
+ &Mark selected items as read
+ Označit vybrané položky jako &přečtené
+
+
+ Mark all messages (without message filters) from selected items as read.
+ Označí všechny zprávy (vyjma zprávových filtrů) z vybraných položek jako přečtené.
+
+
+ &Mark selected items as unread
+ Označit vybrané položky jako &nepřečtené
+
+
+ Mark all messages (without message filters) from selected items as unread.
+ Označí všechny zprávy (vyjma zprávových filtrů) z vybraných položek jako nepřečtené.
+
+
+ &Clean selected items
+ &Vyčistit vybrané položky
+
+
+ Deletes all messages from selected items.
+ Smaže všechny zprávy z vybraných položek (umístí je do koše).
+
+
+ &Mark all items as &read
+ Označit všechno jako &přečtené
+
+
+ Marks all messages in all items read. This does not take message filters into account.
+ Označí zcela všechny zprávy (vyjma odpadkových košů) jako přečtené.
+
+
+ View selected items in &newspaper mode
+ Zobrazit vybrané položky v &novinovém náhledu
+
+
+ Displays all messages from selected item in a new "newspaper mode" tab. Note that messages are not set as read automatically.
+ Zobrazí všechny zprávy ze vybraných položek v "novinovém náhledu". Zprávy jsou automaticky označeny jako přečtené.
+
+
+ &Clean all items
+ &Vyčistit všechny položky
+
+
+ Deletes all messages from all items.
+ Smaže zprávy ze všech položek (vyjma odpadkových košů).
+
+
+ Select &next item
+ Vybrat &další položku
+
+
+ Select &previous item
+ Vybrat &předchozí položku
+
+
+ Show only unread items
+ Zobrazit pouze položky s nepřečtenými zprávami
+
+
+ &Expand/collapse selected item
+ &Rozbalit/sbalit položku
+
+
+ &Add new service account
+ &Přidat nový účet
+
+
+ &Restore selected messages
+ &Obnovit vybrané zprávy
+
+
+ No possible actions
+ Žádná možná akce
+
+
+ Feeds && categories && accounts
+ Kanály && zprávy && účty
+
+
+ &Recycle bin(s)
+ &Odpadkové koše
+
+
+ &Restore all recycle bins
+ &Obnovit všechn ze všech odp. košů
+
+
+ &Empty all recycle bins
+ &Vyprázdnit všechny odp. koše
+
+
+ Select next &unread message
+ Vybrat další &nepřečtenou zprávu
+
+
+ No recycle bin
+ Žádný odpadkový koš
+
+
+ Restore recycle bin
+ Obnovit odp. koš
+
+
+ Empty recycle bin
+ Vyprázdnit odp. koš
@@ -1862,7 +1315,7 @@ Automatický update: %5
Proxy
-
+ Icons && skins
@@ -1891,7 +1344,7 @@ Automatický update: %5
Port
-
+ Username
@@ -1925,17 +1378,13 @@ Automatický update: %5
AuthorAutor
-
- Email
-
- Socks5
-
+ Http
-
+ (not supported on this platform)
@@ -2160,7 +1609,7 @@ Autoři této aplikace nenesou žádnou odpovědnost za ztrátu Vašich dat.
ms
-
+ Update all feed on application startup
@@ -2451,7 +1900,7 @@ File filter for external e-mail selection dialog.
Mozilla Thunderbird
-
+ Working database which you have full access to.
@@ -2505,6 +1954,525 @@ File filter for external e-mail selection dialog.
Fancy && modern popup notifications (This uses OS native notifications via D-Bus if available.)Moderní notifikace (Toto používá nativní notifikace přes D-Bus, jsou-li dostupné.)
+
+ E-mail
+
+
+
+ Enable notifications
+ Povolit notifikace
+
+
+
+ FormStandardCategoryDetails
+
+ Parent category
+ Nadřazená kategorie
+
+
+ Select parent item for your category.
+ Zvolte nadřazenou kategorii pro Vaši kategorii.
+
+
+ Title
+ Nadpis
+
+
+ Description
+ Popis
+
+
+ Icon
+ Ikona
+
+
+ Select icon for your category.
+ Zvolte ikonu pro Vaši kategorii.
+
+
+ Add new category
+ Přidat novou kategorii
+
+
+ Edit existing category
+ Upravit existující kategorii
+
+
+ Cannot add category
+ Nelze přidat kategorii
+
+
+ Category was not added due to error.
+ Kategorie nebyla přidána kvůli chybě.
+
+
+ Cannot edit category
+ Nelze upravit kategorii
+
+
+ Category was not edited due to error.
+ Kategorie nebyla upravena kvůli chybě.
+
+
+ Category name is ok.
+ Název kategorie je v pořádku.
+
+
+ Category name is too short.
+ Název kategorie je příliš krátký.
+
+
+ Description is empty.
+ Popis je prázdný.
+
+
+ The description is ok.
+ Popis je v pořádku.
+
+
+ Select icon file for the category
+ Zvolte ikonu pro Vaši kategorii
+
+
+ Images (*.bmp *.jpg *.jpeg *.png *.svg *.tga)
+ Obrázky (*.bmp *.jpg *.jpeg *.png *.svg *.tga)
+
+
+ Select icon
+ Vybrat ikonu
+
+
+ Cancel
+ Zrušit
+
+
+ Look in:
+ Label to describe the folder for icon file selection dialog.
+ Hledat v:
+
+
+ Icon name:
+ Název ikony:
+
+
+ Icon type:
+ Typ ikony:
+
+
+ Category title
+ Název kategorie
+
+
+ Set title for your category.
+ Zvolte název pro Vaši kategorii.
+
+
+ Category description
+ Popis kategorie
+
+
+ Set description for your category.
+ Zvolte popis Vaší kategorie.
+
+
+ Icon selection
+ Vybrat ikonu
+
+
+ Load icon from file...
+ Načíst ikonu ze souboru...
+
+
+ Do not use icon
+ Nepoužít ikonu
+
+
+ Use default icon
+ Použít výchozí ikonu
+
+
+
+ FormStandardFeedDetails
+
+ Parent category
+ Nadřazená kategorie
+
+
+ Select parent item for your feed.
+ Zvolte nadřazenou kategorii pro Váš kanál.
+
+
+ Type
+ Typ
+
+
+ Select type of the standard feed.
+ Zvolte typ standardního kanálu.
+
+
+ Encoding
+ Kódování
+
+
+ Select encoding of the standard feed. If you are unsure about the encoding, then select "UTF-8" encoding.
+ Zvolte kódování kanálu. Pokud si nejste jisti, tak zvolte kódování "UTF-8".
+
+
+ Auto-update
+ Auto-aktualizace
+
+
+ Select the auto-update strategy for this feed. Default auto-update strategy means that the feed will be update in time intervals set in application settings.
+ Zvolte strategii auto-aktualizací tohoto kanálu. Výchozí strategorie auto-aktualizace znamená, že kanál bude aktualizován v intervalech udaných v nastavení aplikace.
+
+
+ minutes
+ minut
+
+
+ Title
+ Nadpis
+
+
+ Description
+ Popis
+
+
+ URL
+
+
+
+ Fetch it now
+ Načíst nyní
+
+
+ Icon
+ Ikona
+
+
+ Select icon for your feed.
+ Zvolte ikonu pro Váš kanál.
+
+
+ Some feeds require authentication, including GMail feeds. BASIC, NTLM-2 and DIGEST-MD5 authentication schemes are supported.
+ Některé kanály vyžaduje autentizaci, a to včetně kanálů pro GMail. Je podporována autentizace BASIC, NTLM-2 a DIGEST-MD5.
+
+
+ Requires authentication
+ Vyžaduje autentizaci
+
+
+ Username
+ Uživatelské jméno
+
+
+ Password
+ Heslo
+
+
+ Fetch metadata
+ Načíst metadata
+
+
+ Add new feed
+ Přidat nový kanál
+
+
+ Edit existing feed
+ Upravit existující kanál
+
+
+ Feed name is ok.
+ Název kanálu je v pořádku.
+
+
+ Feed name is too short.
+ Název kanálu je příliš krátký.
+
+
+ Description is empty.
+ Popis je prázdný.
+
+
+ The description is ok.
+ Popis je v pořádku.
+
+
+ The url is ok.
+ Url je v pořádku.
+
+
+ The url does not meet standard pattern. Does your url start with "http://" or "https://" prefix.
+ Url neobsahuje standardní schéma. Začíná Vaše url schématem "http://" nebo "https://".
+
+
+ The url is empty.
+ Url je prázdné.
+
+
+ Username is ok or it is not needed.
+ Uživatelské jméno je v pořádku nebo není třeba.
+
+
+ Username is empty.
+ Uživatelské jméno je prázdné.
+
+
+ Password is ok or it is not needed.
+ Heslo je v pořádku nebo není třeba.
+
+
+ Password is empty.
+ Heslo je prázdné.
+
+
+ Select icon file for the feed
+ Vybrat ikonu pro kanál
+
+
+ Images (*.bmp *.jpg *.jpeg *.png *.svg *.tga)
+ Obrázky (*.bmp *.jpg *.jpeg *.png *.svg *.tga)
+
+
+ Select icon
+ Vybrat ikonu
+
+
+ Cancel
+ Zrušit
+
+
+ Look in:
+ Label for field with icon file name textbox for selection dialog.
+ Hledat v:
+
+
+ Icon name:
+ Název ikony:
+
+
+ Icon type:
+ Typ ikony:
+
+
+ Cannot add feed
+ Nelze přidat kanál
+
+
+ Feed was not added due to error.
+ Kanál nepřidán kvůli chybě.
+
+
+ Cannot edit feed
+ Nelze upravit kanál
+
+
+ Feed was not edited due to error.
+ Kanál nebyl upraven kvůli chybě.
+
+
+ All metadata fetched successfully.
+ Metadata stažena úspěšně.
+
+
+ Feed and icon metadata fetched.
+ Metadata a ikona staženy.
+
+
+ Result: %1.
+ Výsledek: %1.
+
+
+ Feed or icon metatada not fetched.
+ Metadata nebo ikona nestaženy.
+
+
+ Error: %1.
+ Chyba: %1.
+
+
+ No metadata fetched.
+ Žádná metadata nestažena.
+
+
+ Icon fetched successfully.
+ Ikona úspěšně stažena.
+
+
+ Icon metadata fetched.
+ Metadata ikony načtena.
+
+
+ Icon metatada not fetched.
+ Metadata ikony nenačtena.
+
+
+ No icon fetched.
+ Ikona nestažena.
+
+
+ Feed title
+ Název kanálu
+
+
+ Set title for your feed.
+ Zvolte název pro Váš kanál.
+
+
+ Feed description
+ Popis kanálu
+
+
+ Set description for your feed.
+ Zvolte popis Vašeho kanálu.
+
+
+ Full feed url including scheme
+ Plné url kanálu včetně schématu
+
+
+ Set url for your feed.
+ Zvolte url Vašeho kanálu.
+
+
+ Set username to access the feed.
+ Nastavte uživatelské jméno pro tento kanál.
+
+
+ Set password to access the feed.
+ Nastavte heslo pro tento kanál.
+
+
+ Icon selection
+ Vybrat ikonu
+
+
+ Load icon from file...
+ Načíst ikonu ze souboru...
+
+
+ Do not use icon
+ Nepoužít ikonu
+
+
+ Use default icon
+ Použít výchozí ikonu
+
+
+ Fetch icon from feed
+ Stáhnout ikonu online z kanálu
+
+
+ No metadata fetched so far.
+ Metadata doposud nenačtena.
+
+
+ Auto-update using global interval
+ Auto-aktualizovat dle hlavního nastavení
+
+
+ Auto-update every
+ Auto-aktualizovat každých
+
+
+ Do not auto-update at all
+ Zakázat auto-aktualizace
+
+
+
+ FormStandardImportExport
+
+ &Select file
+ &Zvolit soubor
+
+
+ &Check all items
+ &Označit vše
+
+
+ &Uncheck all items
+ O&dznačit vše
+
+
+ Operation results
+ Výsledky operací
+
+
+ No file is selected.
+ Nevybrán žádný soubor.
+
+
+ No operation executed yet.
+ Doposud neprovedena žádná operace.
+
+
+ Destination file
+ Cílový soubor
+
+
+ Source feeds && categories
+ Zdrojové kanály && kategorie
+
+
+ Export feeds
+ Exportovat kanály
+
+
+ Source file
+ Zdrojový soubor
+
+
+ Target feeds && categories
+ Cílové kanály && kategorie
+
+
+ Import feeds
+ Importovat kanály
+
+
+ OPML 2.0 files (*.opml)
+ soubory OPML 2.0 (*.opml)
+
+
+ Select file for feeds export
+ Zvolit soubor pro export kanálů
+
+
+ File is selected.
+ Soubor je vybrán.
+
+
+ Select file for feeds import
+ Zvolit soubot pro import kanálů
+
+
+ Cannot open source file.
+ Zdrojový soubor nelze otevřít.
+
+
+ Feeds were loaded.
+ Kanály načteny.
+
+
+ Error, file is not well-formed. Select another file.
+ Chyba, soubor nemá správný formát, zvolte jiný.
+
+
+ Error occurred. File is not well-formed. Select another file.
+ Chyba, soubor nemá správný formát, zvolte jiný.
+
+
+ Feeds were exported successfully.
+ Kanály byly úspěšně exportovány.
+
+
+ Cannot write into destination file.
+ Do cílového souboru nelze zapisovat.
+
+
+ Critical error occurred.
+ Vyskytla se kritická chyba.
+ FormUpdate
@@ -2657,7 +2625,7 @@ Přejít na web aplikace a stáhnout jej ručně.
MessagesModelId
-
+ Read
@@ -2681,7 +2649,7 @@ Přejít na web aplikace a stáhnout jej ručně.
Url
-
+ Author
@@ -2751,6 +2719,14 @@ Přejít na web aplikace a stáhnout jej ručně.
List of attachments.Seznam příloh.
+
+ Loading of messages from item '%s' failed.
+ Načítání zpráv z položky '%s' selhalo.
+
+
+ Loading of messages failed, maybe messages could not be downloaded.
+ Načítání zpráv selhalo, možná zprávy nemohly být staženy.
+ MessagesToolBar
@@ -2924,26 +2900,44 @@ Přejít na web aplikace a stáhnout jej ručně.
LANG_EMAILrotter.martinos@gmail.com
-
- Load initial feeds
- Načíst úvodní kanály
-
-
- Do you want to load initial set of feeds?
- Chcete načíst úvodní set kanálů?
- LANG_NAMEName of language, e.g. English.Čeština
-
- You started %1 for the first time, now you can load initial set of feeds.
- Spustili jste %1 poprvé, nyní si můžete zvolit, zda chcete nahrát výchozí sadu kanálů.
+
+
+
++ %n other feeds.
+
+
+
++ %n další kanál.
+
+
++ %n dalších kanálů.
+
+
++ %n kanály.
+
- Welcome to %1 %2.
- Vítá vás %1 %2.
+ Welcome to %1.
+
+Please, check NEW stuff included in this
+version by clicking this popup notification.
+ Vítá Vás %1.
+
+Prosím, zkontrolujte novinky
+klknutím na tuto notifikaci.
+
+
+ Welcome to %1.
+ Vítá vás %1.
+
+
+ Load initial set of feeds
+ Načíst úvodní sadu kanálů
@@ -2964,7 +2958,11 @@ Přejít na web aplikace a stáhnout jej ručně.
%n deleted message(s).
- %n smazaná zpráva.%n smazané zprávy.%n smazaných zpráv.
+
+ %n smazaná zpráva.
+ %n smazané zprávy.
+ %n smazaných zpráv.
+
@@ -2982,6 +2980,141 @@ Přejít na web aplikace a stáhnout jej ručně.
Klikněte a stiskněte novou zkratku.
+
+ StandardCategory
+
+ %1 (category)%2%3
+ Tooltip for standard feed.
+ %1 (kategorie)%2%3
+
+
+
+This category does not contain any nested items.
+
+Tato kategorie neobsahuje žádné položky.
+
+
+ %n unread message(s).
+ Tooltip for "unread" column of feed list.
+
+ %n nepřečtená zpráva.
+ %n nepřečtené zprávy.
+ %n nepřečtených zpráv.
+
+
+
+
+ StandardFeed
+
+ Metadata not fetched
+ Metadata nezískána
+
+
+ Metadata was not fetched because: %1.
+ Metadata nezískána, protože: %1.
+
+
+ does not use auto-update
+ Describes feed auto-update status.
+ nepoužívá auto-aktualizace
+
+
+ uses global settings
+ Describes feed auto-update status.
+ používá globální nastavení
+
+
+ uses specific settings (%n minute(s) to next auto-update)
+ Describes feed auto-update status.
+
+ používá specifické nastavení (%n minuta do další aktualizace)
+ používá specifické nastavení (%n minuty do další aktualizace)
+ používá specifické nastavení (%n minut do další aktualizace)
+
+
+
+ %1 (%2)%3
+
+Network status: %6
+Encoding: %4
+Auto-update status: %5
+ Tooltip for feed.
+ %1 (%2)%3
+
+Síťový status: %6
+Kódování: %4
+Automatický update: %5
+
+
+ %n unread message(s).
+ Tooltip for "unread" column of feed list.
+
+ %n nepřečtená zpráva.
+ %n nepřečtené zprávy.
+ %n nepřečtených zpráv.
+
+
+
+
+ StandardServiceRoot
+
+ This is obligatory service account for standard RSS/RDF/ATOM feeds.
+ Toto je účet pro standardní RSS/RDS/ATOM kanály.
+
+
+ You started %1 for the first time, now you can load initial set of feeds.
+ Spustili jste %1 poprvé, nyní si můžete zvolit, zda chcete nahrát výchozí sadu kanálů.
+
+
+ Do you want to load initial set of feeds?
+ Chcete načíst úvodní set kanálů?
+
+
+ Error when loading initial feeds
+ Chyba při načítání úvodních kanálů
+
+
+ This is service account for standard RSS/RDF/ATOM feeds.
+ Toto je účet pro standardní RSS/RDS/ATOM kanály.
+
+
+ %n unread message(s).
+ Tooltip for "unread" column of feed list.
+
+ %n nepřečtená zpráva.
+ %n nepřečtené zprávy.
+ %n nepřečtených zpráv.
+
+
+
+ Fetch metadata
+ Načíst metadata
+
+
+ Import successfull, but some feeds/categories were not imported due to error.
+ Import byl úspěšný, ale některé kanály či kategorie nebyly importovány kvůli chybě.
+
+
+ Import was completely successfull.
+ Import byl zcela úspěšný.
+
+
+ Add new category
+ Přidat novou kategorii
+
+
+ Add new feed
+ Přidat nový kanál
+
+
+ Export feeds
+ Exportovat kanály
+
+
+ Import feeds
+ Importovat kanály
+
+StatusBar
@@ -3003,6 +3136,10 @@ Přejít na web aplikace a stáhnout jej ručně.
Click the bubble for more information.Klikněte na bublinu pro více informací.
+
+ anonymous
+ anonym
+ SystemTrayIcon
@@ -3110,6 +3247,22 @@ Nepřečtené zprávy: %2
Nejdříve ukončete otevřené modální dialogy.
+
+ TtRssServiceRoot
+
+ This is service account TT-RSS (TinyTiny RSS) server.
+
+
+
+ %n unread message(s).
+ Tooltip for "unread" column of feed list.
+
+ %n nepřečtená zpráva.
+ %n nepřečtené zprávy.
+ %n nepřečtených zpráv.
+
+
+WebBrowser
@@ -3181,6 +3334,14 @@ Nepřečtené zprávy: %2
Stop web page loading.Zastavit načítání aktuální webové stránky.
+
+ Cannot add feed
+ Nelze přidat kanál
+
+
+ You cannot add this feed to %1 because standard RSS/ATOM account is not enabled. Enable it first.
+ Tento kanál neumí %1 přidat, protože standardní RSS/ATOM účet není aktivován. Je třeba jej aktivovat.
+ WebView
@@ -3321,4 +3482,4 @@ Nepřečtené zprávy: %2
Hledat "%1" přes Google...
-
\ No newline at end of file
+
diff --git a/localization/rssguard-de_DE.ts b/localization/rssguard-de_DE.ts
index 78ab710be..15aa182c5 100644
--- a/localization/rssguard-de_DE.ts
+++ b/localization/rssguard-de_DE.ts
@@ -1,170 +1,172 @@
-
+
+
+AdBlockAddSubscriptionDialogAdd subscription
-
+ Another subscription
-
+ Entered title is okay.
-
+ Entered title is empty.
-
+ Entered url is okay.
-
+ Entered url is empty.
-
+ Title
-
+ TitelAddress
-
+ AdBlockCustomListCustom rules
-
+ AdBlockDialogAdblock settings
-
+ Enable Adblock
-
+ Note that Adblock may significantly slow this application down once you activate huge subscriptions. Too many rules is not good for performance. Also, make sure you restart application after you disable Adblock if you wish to have low memory footprint. Adblock is known to use much system memory.
Also note that some resources are cached by internal web browser. Thus, after changing some rules or subscriptions they will fully apply only for new application instances. Make sure you restart RSS Guard for best Adblock experience.
-
+ Options
-
+ Filter rules
-
+ Use only essential part of EasyList (for performance reasons)
-
+ Add rule
-
+ Remove rule
-
+ Add subscription
-
+ Remove subscription
-
+ Update subscriptions
-
+ Rules writing guide
-
+ AdBlockIconAdblock
-
+ Show Adblock &settings
-
+ Disable on %1
-
+ Disable only on this page
-
+ Blocked popup windows
-
+ %1 with (%2)
-
+ No content blocked
-
+ Blocked some content - click to edit rule
-
+ Adblock - up and running
-
+ Adblock - not running
-
+ AdBlockSubscriptionCannot load subscription!
-
+ AdBlockTreeWidgetPlease write your rule here
-
+ %1 (recently updated)
-
+ %1 (error: %2)
-
+ Add rule
-
+ Remove rule
-
+
@@ -175,92 +177,74 @@ Also note that some resources are cached by internal web browser. Thus, after ch
Output directory is not writable.
-
+ Settings file not copied to output directory successfully.
-
+ Database file not copied to output directory successfully.
-
+ Database restoration was not initiated. Make sure that output directory is writable.
-
+ Settings restoration was not initiated. Make sure that output directory is writable.
-
-
-
-
- Category
-
- %1 (category)%2%3
- Tooltip for standard feed.
-
-
-
-
-This category does not contain any nested items.
-
-
-
- %n unread message(s).
- Tooltip for "unread" column of feed list.
-
+ DatabaseCleanerShrinking database file...
-
+ Database file shrinked...
-
+ Removing read messages...
-
+ Read messages purged...
-
+ Recycle bin purged...
-
+ Removing old messages...
-
+ Purging recycle bin...
-
+ Old messages purged...
-
+ DatabaseFactoryMySQL server works as expected.
-
+ No MySQL server is running in the target destination.
-
+ Access denied. Invalid username or password used.Access to MySQL server was denied.
-
+ Unknown error.
@@ -269,15 +253,15 @@ This category does not contain any nested items.
Selected database does not exist (yet).
-
+ MySQL/MariaDB (dedicated database)
-
+ SQLite (embedded database)
-
+
@@ -289,14 +273,17 @@ This category does not contain any nested items.
Click me to add feeds from this website.
This website contains %n feed(s).
-
+
+
+
+ DownloadItemIco
-
+ Filename
@@ -304,103 +291,109 @@ This website contains %n feed(s).
Error opening output file: %1
-
+ &Try again
-
+ &Stop
-
+ &Open file
-
+ Select destination for downloaded file
-
+ Error: %1
-
+ Fehler: %1. {1?}Download directory couldn't be created
-
+ Error when saving file: %1
-
+ %1 of %2 (%3 per second) - %4
-
+ %1 of %2 - download completed
-
+ Open &directory
-
+ Cannot open file
-
+ Cannot open output file. Open it manually.
-
+ Cannot open directory
-
+ Cannot open output directory. Open it manually.
-
+ Download finished
-
+
- File '%1' is downloaded.
+ File '%1' is downloaded.
Click here to open parent directory.
-
+ URL: %1
-
+ Local file: %1
-
+ Selection of local file cancelled.
-
+ DownloadManagerClean up
-
+ %n minutes remaining
-
+
+
+
+ %n seconds remaining
-
+
+
+
+ bytes
-
+ kB
@@ -416,47 +409,10 @@ Click here to open parent directory.
Downloading %n file(s)...
-
-
-
-
- Feed
-
- does not use auto-update
- Describes feed auto-update status.
-
-
-
- uses global settings
- Describes feed auto-update status.
-
-
-
- uses specific settings (%n minute(s) to next auto-update)
- Describes feed auto-update status.
-
-
-
- %1 (%2)%3
-
-Network status: %6
-Encoding: %4
-Auto-update status: %5
- Tooltip for feed.
-
-
-
- %n unread message(s).
- Tooltip for "unread" column of feed list.
-
-
-
- Metadata not fetched
-
-
-
- Metadata was not fetched because: %1
-
+
+
+
+
@@ -465,58 +421,32 @@ Auto-update status: %5
Toolbar for messagesToolbar für Nachrichten
-
- Feed update started
- Text display in status bar when feed update is started.
- Feed update begonnen
-
-
- Updated feed '%1'
- Text display in status bar when particular feed is updated.
- Upgedateter feed '%1'
- Toolbar for feedsToolbar für Feeds
-
- Error when loading initial feeds
-
- Cannot cleanup database
-
+ Cannot cleanup database, because another critical action is running.
-
-
-
- Cannot update all items
-
-
-
- You cannot update all items because another another critical operation is ongoing.
-
-
-
- New messages downloaded
-
+ FeedsImportExportModel (category)
-
+ (feed)
-
+ Category
-
+
@@ -539,25 +469,46 @@ Auto-update status: %5
Name of root item of feed list which can be seen in feed add/edit dialog.Wurzel
-
- Invalid tree data.
-
-
-
- Import successfull, but some feeds/categories were not imported due to error.
-
-
-
- Import was completely successfull.
-
- Starting auto-update of some feeds
-
+ I will auto-update %n feed(s).
-
+
+
+
+
+
+
+ Cannot update all items
+
+
+
+ You cannot update all items because another another critical operation is ongoing.
+
+
+
+ Feed update started
+ Text display in status bar when feed update is started.
+ Feed update begonnen
+
+
+ Updated feed '%1'
+ Text display in status bar when particular feed is updated.
+ Upgedateter feed '%1'
+
+
+ New messages downloaded
+
+
+
+ You can't transfer dragged item into different account, this is not supported.
+
+
+
+ Cannot perform drag & drop operation
+
@@ -569,14 +520,6 @@ Auto-update status: %5
FeedsView
-
- Cannot add standard category
- Kann die Standardkategorie nicht hinzufügen
-
-
- Cannot add standard feed
- Kann den Standard-Feed nicht hinzufügen
- Cannot edit itemKann das Item nicht editieren
@@ -585,65 +528,54 @@ Auto-update status: %5
Cannot delete itemItem kann nicht gelöscht werden
-
- You are about to delete selected feed or category.
-
-
-
- Deletion of item failed.
-
-
-
- Selected item was not deleted due to error.
-
-
-
- Do you really want to delete selected item?
- Möchtest du dieses Item wirklich löschen?
-
-
- Permanently delete messages
- Lösche diese Nachrichten dauerhaft
-
-
- You are about to permanenty delete all messages from your recycle bin.
-
-
-
- Do you really want to empty your recycle bin?
- Möchtest du den Mülleimer wirklich leeren?
- Context menu for empty space
-
-
-
- Context menu for recycle bin
-
-
-
- You cannot add new standard category now because another critical operation is ongoing.
-
-
-
- You cannot add new standard feed now because another critical operation is ongoing.
-
+ Selected item cannot be edited because another critical operation is ongoing.
-
+ Selected item cannot be deleted because another critical operation is ongoing.
-
-
-
- Delete feed/category
-
+ Context menu for categories
-
+
+
+
+ Selected item cannot be edited, this is not (yet?) supported.
+
+
+
+ Deleting "%1"
+
+
+
+ You are about to completely delete item "%1".
+
+
+
+ Are you sure?
+
+
+
+ Cannot delete "%1"
+
+
+
+ This item cannot be deleted because something critically failed. Submit bug report.
+
+
+
+ This item cannot be deleted, because it does not support it
+or this functionality is not implemented yet.
+
+
+
+ Context menu for other items
+
@@ -692,45 +624,84 @@ Auto-update status: %5
<b>%8</b><br><b>Version:</b> %1 (build on %2 with CMake %3)<br><b>Revision:</b> %4<br><b>Build date:</b> %5<br><b>Qt:</b> %6 (compiled against %7)<br><b>%8</b><br><b>Version:</b> %1 (gebildet am %2 mit CMake %3)<br><b>Revision:</b> %4<br><b>Bildungsdatum:</b> %5<br><b>Qt:</b> %6 (kompiliert unter %7)<br>
-
- <body>%5 is a (very) tiny feed reader.<br><br>This software is distributed under the terms of GNU General Public License, version 3.<br><br>Contacts:<ul><li><a href="mailto://%1">%1</a> ~email</li><li><a href="%2">%2</a> ~website</li></ul>You can obtain source code for %5 from its website.<br><br><br>Copyright (C) 2011-%3 %4</body>
-
- About %1About RSS Guard dialog title.
-
+ Settings type
-
+ Settings file
-
+ Database root path
-
+ FULLY portable
-
+ PARTIALLY portable
-
+ Resources
-
+
+
+
+ <body>%5 is a (very) tiny feed reader.<br><br>This software is distributed under the terms of GNU General Public License, version 3.<br><br>Contacts:<ul><li><a href="mailto://%1">%1</a> ~e-mail</li><li><a href="%2">%2</a> ~website</li></ul>You can obtain source code for %5 from its website.<br><br><br>Copyright (C) 2011-%3 %4</body>
+
+
+
+
+ FormAddAccount
+
+ Add new account
+
+
+
+ Details
+
+
+
+ Name
+ Name
+
+
+ Version
+ Version
+
+
+ Author
+ Author
+
+
+ Description
+ Beschreibung
+
+
+ Cannot add account
+
+
+
+ Some critical error occurred, report this to developers.
+
+
+
+ This account can be added only once.
+ FormBackupDatabaseSettingsBackup database/settings
-
+ Backup properties
@@ -750,633 +721,125 @@ Auto-update status: %5
Backup name
-
+ Operation results
-
+ Common name for backup files
-
+ No operation executed yet.
-
+ Backup was created successfully.
-
+ Backup name cannot be empty.
-
+ Backup name looks okay.
-
+ Backup failed.
-
+ Output directory
-
+ &Select directory
-
+ Backup was created successfully and stored in target directory.
-
+ Select destination directory
-
+ Good destination directory is specified.
-
-
-
-
- FormCategoryDetails
-
- Parent category
- Stammkategorie
-
-
- Select parent item for your category.
- Selektieren Sie das Stamm-Item für Ihre Kategorie
-
-
- Title
- Titel
-
-
- Description
- Beschreibung
-
-
- Icon
- Icon
-
-
- Select icon for your category.
- Selektieren Sie das Icon für Ihre Kategorie
-
-
- Add new category
- Füge neue Kategorie hinzu
-
-
- Edit existing category
- Bearbeite bestehende Kategorie
-
-
- Cannot add category
- Kategorie kann nicht hinzugefügt werden
-
-
- Category was not added due to error.
- Kategorie wurde nicht hinzugefügt aufgrund eines Fehler.
-
-
- Cannot edit category
- Kategorie kann nicht editiert werden
-
-
- Category was not edited due to error.
- Kategorie wurde nicht editiert aufgrund eines Fehler.
-
-
- Category name is ok.
- Kategoriename ist okay.
-
-
- Category name is too short.
- Kategoriename ist zu kurz.
-
-
- Description is empty.
- Beschreibung ist leer.
-
-
- Select icon file for the category
- Selektiere die Icon-Datei für die Kategorie
-
-
- Images (*.bmp *.jpg *.jpeg *.png *.svg *.tga)
- Bilder (*.bmp *.jpg *.jpeg *.png *.svg *.tga)
-
-
- Select icon
- Selektiere Icon
-
-
- Cancel
- Abbrechen
-
-
- Look in:
- Label to describe the folder for icon file selection dialog.
- Schauen Sie in:
-
-
- Icon name:
- Icon-Name:
-
-
- Icon type:
- Icon-Typ:
-
-
- Category title
- Kategorietitel
-
-
- Set title for your category.
- Setzen Sie den Titel für die Kategorie.
-
-
- Category description
- Kategoriebeschreibung
-
-
- Set description for your category.
- Setzen Sie die Beschreibung für die Kategorie.
-
-
- Icon selection
- Icon-Selektion
-
-
- Load icon from file...
- Lade Icon aus Datei...
-
-
- Do not use icon
- Icon nicht verwenden
-
-
- Use default icon
- Standard-Icon verwenden
-
-
- The description is ok.
- Die Beschreibung ist OK.
+ FormDatabaseCleanupCleanup database
-
+ Remove all messages older than
-
+ day(s)
-
+
+
+
+ Shrink database file
-
+ Database information
-
+ Database file size
-
+ Database type
-
+ Progress
-
+ I am ready.
-
+ Database cleanup is running.
-
+ Database cleanup is completed.
-
+ Database cleanup failed.
-
+ Cleanup settings (all checked items are completely erased from database)
-
+ Remove all read messages (not those from recycle bin)
-
+ Remove all messages from recycle bin
-
+ Remove all starred messages (including those from recycle bin)
-
-
-
-
- FormFeedDetails
-
- Parent category
- Stammkategorie
-
-
- Select parent item for your feed.
- Selektieren Sie das Stamm-Item für Ihren Feed.
-
-
- Type
- Typ
-
-
- Select type of the standard feed.
- Selektiere den Typ des Standard-Feeds.
-
-
- Encoding
- Enkodierung
-
-
- Select encoding of the standard feed. If you are unsure about the encoding, then select "UTF-8" encoding.
- Selektiere die Enkodierung des Standard-Feeds. Falls Sie unsicher sind wählen einfach die "UTF-8" Enkodierung.
-
-
- Auto-update
- Auto-Update
-
-
- Select the auto-update strategy for this feed. Default auto-update strategy means that the feed will be update in time intervals set in application settings.
-
-
-
- minutes
- Minuten
-
-
- Title
- Titel
-
-
- Description
- Beschreibung
-
-
- URL
- URL
-
-
- Fetch it now
- Jetzt abrufen
-
-
- Icon
- Icon
-
-
- Select icon for your feed.
- Selektieren Sie das Icon für Ihren Feed.
-
-
- Some feeds require authentication, including GMail feeds. BASIC, NTLM-2 and DIGEST-MD5 authentication schemes are supported.
- Gewisse Feeds brauchen eine Authentifizierung, wie z.b. Gmail-Feeds. BASIC, NTLM-2 und DIGEST-MD5 Authentifizierungsmodelle werden unterstützt.
-
-
- Requires authentication
- Benötigt Authentifizierung
-
-
- Username
- Benutzername
-
-
- Password
- Passwort
-
-
- Fetch metadata
- Metadaten abrufen
-
-
- Add new feed
-
-
-
- Edit existing feed
-
-
-
- Feed name is ok.
- Feed-Name ist okay.
-
-
- Feed name is too short.
- Feed-Name ist zu kurz.
-
-
- Description is empty.
- Beschreibung ist leer.
-
-
- The url is ok.
- Die URL ist okay.
-
-
- The url does not meet standard pattern. Does your url start with "http://" or "https://" prefix.
- Die URL entspricht nicht dem Standardmuster. Beginnt Ihre URL mit "http://" oder "https://"?
-
-
- The url is empty.
- Die URL ist leer.
-
-
- Username is ok or it is not needed.
- Benutzername ist okay oder wird nicht benötigt.
-
-
- Username is empty.
- Benutzername ist leer.
-
-
- Password is ok or it is not needed.
- Passwort ist okay oder wird nicht benötigt.
-
-
- Password is empty.
- Passwort ist leer.
-
-
- Select icon file for the feed
- Selektiere die Icon-Datei für den Feed.
-
-
- Images (*.bmp *.jpg *.jpeg *.png *.svg *.tga)
- Bilder (*.bmp *.jpg *.jpeg *.png *.svg *.tga)
-
-
- Select icon
- Selektiere Icon
-
-
- Cancel
- Abbrechen
-
-
- Look in:
- Label for field with icon file name textbox for selection dialog.
- Schauen Sie in:
-
-
- Icon name:
- Icon-Name:
-
-
- Icon type:
- Icon-Typ:
-
-
- Cannot add feed
- Kann Feed nicht hinzufügen
-
-
- Feed was not added due to error.
- Feed wurde nicht hinzugefügt aufgrund eines Fehler.
-
-
- Cannot edit feed
- Feed kann nicht editiert werden
-
-
- All metadata fetched successfully.
- Alle Metadaten wurden erfolgreich abgerufen.
-
-
- Feed and icon metadata fetched.
- Feed- und Icon-Metadaten abgerufen.
-
-
- Result: %1.
- Resultat: %1.
-
-
- Feed or icon metatada not fetched.
- Feed- oder Icon-Metadaten nicht abgerufen.
-
-
- Error: %1.
- Fehler: %1.
-
-
- No metadata fetched.
- Keine Metadaten abgerufen.
-
-
- Feed title
- Feed-Titel
-
-
- Set title for your feed.
- Setzen Sie den Titel für Ihren Feed.
-
-
- Feed description
- Feed-Beschreibung
-
-
- Set description for your feed.
- Setzen Sie die Beschreibung für Ihren Feed.
-
-
- Full feed url including scheme
-
-
-
- Set url for your feed.
- Setze die URL für Ihren Feed.
-
-
- Set username to access the feed.
- Setzen Sie den Benutzernamen um zum Feed zu gelangen.
-
-
- Set password to access the feed.
- Setzen Sie das Passwort um zum Feed zu gelangen.
-
-
- Icon selection
- Icon-Selektion
-
-
- Load icon from file...
- Lade Icon aus Datei...
-
-
- Do not use icon
- Icon nicht verwenden
-
-
- Use default icon
- Standard-Icon verwenden
-
-
- No metadata fetched so far.
- Bisher keine Metadaten abgerufen.
-
-
- Auto-update using global interval
- Auto-Update benutzt globales Intervall
-
-
- Auto-update every
- Auto-Update alle
-
-
- Do not auto-update at all
- Kein Auto-Update ausführen
-
-
- The description is ok.
- Die Beschreibung ist OK.
-
-
- Feed was not edited due to error.
- Feed wurde nicht editiert aufgrund eines Fehler.
-
-
- Icon fetched successfully.
-
-
-
- Icon metadata fetched.
-
-
-
- Icon metatada not fetched.
-
-
-
- No icon fetched.
-
-
-
- Fetch icon from feed
-
-
-
-
- FormImportExport
-
- &Select file
-
-
-
- Operation results
-
-
-
- No file is selected.
- Keine Datei ausgewählt
-
-
- No operation executed yet.
-
-
-
- Export feeds
-
-
-
- Destination file
-
-
-
- Source feeds && categories
-
-
-
- Source file
-
-
-
- Target feeds && categories
-
-
-
- Import feeds
-
-
-
- OPML 2.0 files (*.opml)
-
-
-
- Select file for feeds export
-
-
-
- File is selected.
-
-
-
- Select file for feeds import
-
-
-
- Cannot open source file.
-
-
-
- Feeds were loaded.
-
-
-
- Error, file is not well-formed. Select another file.
-
-
-
- Error occurred. File is not well-formed. Select another file.
-
-
-
- Feeds were exported successfully.
-
-
-
- Cannot write into destination file.
-
-
-
- Critical error occurred.
-
-
-
- &Check all items
-
-
-
- &Uncheck all items
-
+
@@ -1453,22 +916,6 @@ Auto-update status: %5
No actions are available right now.Keine Funktionen verfügbar.
-
- Fee&ds && categories
- Fee&ds && Kategorien
-
-
- Mark all messages (without message filters) from selected feeds as read.
- Markiere alle Nachrichten (ohne Nachrichtenfilter) der selektierten Feeds als gelesen.
-
-
- Mark all messages (without message filters) from selected feeds as unread.
- Markiere alle Nachrichten (ohne Nachrichtenfilter) der selektierten Feeds als ungelesen.
-
-
- Displays all messages from selected feeds/categories in a new "newspaper mode" tab. Note that messages are not set as read automatically.
- Zeige alle Nachrichten der selektierten Feeds/Kategorien in einem neuen Zeitungsmodusreiter an. Bemerke, dass Nachrichten nicht automatisch als gelesen gesetzt werden.
- Hides main window if it is visible and shows it if it is hidden.Hauptfenster verstecken falls es sichtbar was oder sichtbar falls es versteckt war.
@@ -1483,43 +930,15 @@ Auto-update status: %5
&About application
-
+ Displays extra info about this application.
-
+ &Delete selected messages
-
-
-
- Deletes all messages from selected feeds.
-
-
-
- Marks all messages in all feeds read. This does not take message filters into account.
-
-
-
- Deletes all messages from all feeds.
-
-
-
- Update &all feeds
-
-
-
- Update &selected feeds
-
-
-
- &Edit selected feed/category
-
-
-
- &Delete selected feed/category
-
+ Settings
@@ -1527,298 +946,330 @@ Auto-update status: %5
Hides or displays the main menu.
-
-
-
- Add &new feed/category
-
+ &Close all tabs except current one
-
+ &Close current tab
-
+ Mark &selected messages as &read
-
+ Mark &selected messages as &unread
-
-
-
- &Mark selected feeds as read
-
-
-
- &Mark selected feeds as unread
-
-
-
- &Clean selected feeds
-
+ Open selected source articles in &external browser
-
+ Open selected messages in &internal browser
-
+ Open selected source articles in &internal browser
-
-
-
- &Mark all feeds as &read
-
-
-
- View selected feeds in &newspaper mode
-
-
-
- &Clean all feeds
-
-
-
- Select &next feed/category
-
-
-
- Select &previous feed/category
-
+ Select &next message
-
+ Select &previous message
-
+ Check for &updates
-
+ Enable &JavaScript
-
+ Enable external &plugins
-
+ Auto-load &images
-
+ Show/hide
-
+ &Fullscreen
-
+ &Feed list
-
+ &Main menu
-
+ Switch visibility of main &window
-
+ Cannot open external browser
-
+ Cannot open external browser. Navigate to application website manually.
-
-
-
- New &feed
-
-
-
- Add new feed.
-
-
-
- New &category
-
-
-
- Add new category.
-
+ &Toolbars
-
+ Switch visibility of main toolbars.
-
+ &Feed/message list headers
-
-
-
- &Import feeds
-
-
-
- Imports feeds you want from selected file.
-
-
-
- &Export feeds
-
-
-
- Exports feeds you want to selected file.
-
+ Close all tabs except current one.
-
-
-
- &Recycle bin
-
+ Report a &bug (GitHub)...
-
+ Report a bug (BitBucket)...
-
+ &Donate via PayPal
-
+ Display &wiki
-
-
-
- &Empty recycle bin
-
-
-
- &Restore all messages
-
-
-
- Restore &selected messages
-
+ &Restart
-
+ &Restore database/settings
-
+ &Backup database/settings
-
+ Switch message list layout orientation
-
+ &Downloads
-
+ Send selected message via e-mail
-
+ &Cleanup database
-
+
- Show only unread feeds/categories
-
+ Add &new item
+
- &Fetch feed metadata
-
+ Update &all items
+
- &Expand/collapse selected feed/category
-
+ Update &selected items
+
+
+
+ &Edit selected item
+
+
+
+ &Delete selected item
+
+
+
+ &Mark selected items as read
+
+
+
+ Mark all messages (without message filters) from selected items as read.
+
+
+
+ &Mark selected items as unread
+
+
+
+ Mark all messages (without message filters) from selected items as unread.
+
+
+
+ &Clean selected items
+
+
+
+ Deletes all messages from selected items.
+
+
+
+ &Mark all items as &read
+
+
+
+ Marks all messages in all items read. This does not take message filters into account.
+
+
+
+ View selected items in &newspaper mode
+
+
+
+ Displays all messages from selected item in a new "newspaper mode" tab. Note that messages are not set as read automatically.
+
+
+
+ &Clean all items
+
+
+
+ Deletes all messages from all items.
+
+
+
+ Select &next item
+
+
+
+ Select &previous item
+
+
+
+ Show only unread items
+
+
+
+ &Expand/collapse selected item
+
+
+
+ &Add new service account
+
+
+
+ &Restore selected messages
+
+
+
+ No possible actions
+
+
+
+ Feeds && categories && accounts
+
+
+
+ &Recycle bin(s)
+
+
+
+ &Restore all recycle bins
+
+
+
+ &Empty all recycle bins
+
+
+
+ Select next &unread message
+
+
+
+ No recycle bin
+
+
+
+ Restore recycle bin
+
+
+
+ Empty recycle bin
+ FormRestoreDatabaseSettingsRestore database/settings
-
+ Operation results
-
+ Restore database
-
+ Restore settings
-
+ Restart
-
+ No operation executed yet.
-
+ Restoration was initiated. Restart to proceed.
-
+ You need to restart application for restoration process to finish.
-
+ Source directory
-
+ &Select directory
-
+ Database and/or settings were not copied to restoration directory successully.
-
+ Select source directory
-
+ Good source directory is specified.
-
+
@@ -1914,10 +1365,6 @@ Auto-update status: %5
AuthorAuthor
-
- Email
- Email
- Socks5Socks5
@@ -2037,7 +1484,7 @@ Auto-update status: %5
Parameters to executable
-
+ some keyboard shortcuts are not unique
@@ -2087,7 +1534,7 @@ Disadvantages:
<li>application startup and shutdown can take little longer (max. 2 seconds).</li>
</ul>
Authors of this application are NOT responsible for lost data.
-
+ in-memory database switched
@@ -2243,65 +1690,65 @@ Authors of this application are NOT responsible for lost data.
You did not executed any connection test yet.
-
+ Launch %1 on operating system startup
-
+ Enable JavaScript
-
+ Enable external plugins based on NPAPI
-
+ Auto-load images
-
+ <html><head/><body><p>If unchecked, then default system-wide web browser is used.</p></body></html>
-
+ Feeds && categories
-
+ Message count format in feed list
-
+ Enter format for count of messages displayed next to each feed/category in feed list. Use "%all" and "%unread" strings which are placeholders for the actual count of all (or unread) messages.
-
+ custom external browser is not set correctly
-
+ Toolbars
-
+ Toolbar for feeds list
-
+ Toolbar for messages list
-
+ Select toolbar to edit
-
+ Some critical settings were changed and will be applied after the application gets restarted.
You have to restart manually.
-
+ Do you want to restart now?
@@ -2309,70 +1756,70 @@ You have to restart manually.
Check for updates on application startup
-
+ Use custom date/time format (overrides format loaded from active localization)
-
+ Executables (*)File filter for external browser selection dialog.
----------
File filter for external e-mail selection dialog.
-
+ Remove all read messages from all feeds on application exit
-
+ When new message arrives from feed and duplicate exists, then its content is updated and new message is dropped.
-
+ Remove duplicate messages
-
+ Downloads
-
+ Target directory for downloaded files
-
+ Ask for each individual downloaded file
-
+ Target directory where all downloaded files are saved
-
+ &Browse
-
+ Select downloads target directory
-
+ &Show password
-
+ Web browser & e-mail & proxy
-
+ Remove junk Trolltech registry key (HKCU\Software\Trolltech) when application quits (Use at your own risk!)
-
+ Working database
-
+ Mouse gestures work with middle mouse button. Possible gestures are:
@@ -2380,101 +1827,620 @@ File filter for external e-mail selection dialog.
• next web page (drag mouse right),
• reload current web page (drag mouse up),
• open new web browser tab (drag mouse down).
-
+ Use custom external web browser
-
+ External e-mail client
-
+ Use custom external e-mail client
-
+ E-mail client executable
-
+ Executable file of e-mail client
-
+ Select client
-
+ Placeholders:
• %1 - title of selected message,
• %2 - body of selected message.
-
+ Save all downloaded files to
-
+ Select e-mail executable
-
+ Mozilla Thunderbird
-
+ Working database which you have full access to.
-
+ Working database is empty.
-
+ Working database is ok.
-
+ Notification position
-
+ (Tray icon is not available.)
-
+ Bottom-left corner
-
+ Top-left corner
-
+ Bottom-right corner
-
+ Top-right corner
-
+ Internal message browser fonts
-
+ Standard font
-
+ Note that speed of used MySQL server and latency of used connection medium HEAVILY influences the final performance of this application. Using slow database connections leads to bad performance when browsing feeds or messages.
-
+ Fancy && modern popup notifications (This uses OS native notifications via D-Bus if available.)
-
+
+
+
+ E-mail
+
+
+
+ Enable notifications
+
+
+
+
+ FormStandardCategoryDetails
+
+ Parent category
+ Stammkategorie
+
+
+ Select parent item for your category.
+ Selektieren Sie das Stamm-Item für Ihre Kategorie
+
+
+ Title
+ Titel
+
+
+ Description
+ Beschreibung
+
+
+ Icon
+ Icon
+
+
+ Select icon for your category.
+ Selektieren Sie das Icon für Ihre Kategorie
+
+
+ Add new category
+ Füge neue Kategorie hinzu
+
+
+ Edit existing category
+ Bearbeite bestehende Kategorie
+
+
+ Cannot add category
+ Kategorie kann nicht hinzugefügt werden
+
+
+ Category was not added due to error.
+ Kategorie wurde nicht hinzugefügt aufgrund eines Fehler.
+
+
+ Cannot edit category
+ Kategorie kann nicht editiert werden
+
+
+ Category was not edited due to error.
+ Kategorie wurde nicht editiert aufgrund eines Fehler.
+
+
+ Category name is ok.
+ Kategoriename ist okay.
+
+
+ Category name is too short.
+ Kategoriename ist zu kurz.
+
+
+ Description is empty.
+ Beschreibung ist leer.
+
+
+ The description is ok.
+ Die Beschreibung ist OK.
+
+
+ Select icon file for the category
+ Selektiere die Icon-Datei für die Kategorie
+
+
+ Images (*.bmp *.jpg *.jpeg *.png *.svg *.tga)
+ Bilder (*.bmp *.jpg *.jpeg *.png *.svg *.tga)
+
+
+ Select icon
+ Selektiere Icon
+
+
+ Cancel
+ Abbrechen
+
+
+ Look in:
+ Label to describe the folder for icon file selection dialog.
+ Schauen Sie in:
+
+
+ Icon name:
+ Icon-Name:
+
+
+ Icon type:
+ Icon-Typ:
+
+
+ Category title
+ Kategorietitel
+
+
+ Set title for your category.
+ Setzen Sie den Titel für die Kategorie.
+
+
+ Category description
+ Kategoriebeschreibung
+
+
+ Set description for your category.
+ Setzen Sie die Beschreibung für die Kategorie.
+
+
+ Icon selection
+ Icon-Selektion
+
+
+ Load icon from file...
+ Lade Icon aus Datei...
+
+
+ Do not use icon
+ Icon nicht verwenden
+
+
+ Use default icon
+ Standard-Icon verwenden
+
+
+
+ FormStandardFeedDetails
+
+ Parent category
+ Stammkategorie
+
+
+ Select parent item for your feed.
+ Selektieren Sie das Stamm-Item für Ihren Feed.
+
+
+ Type
+ Typ
+
+
+ Select type of the standard feed.
+ Selektiere den Typ des Standard-Feeds.
+
+
+ Encoding
+ Enkodierung
+
+
+ Select encoding of the standard feed. If you are unsure about the encoding, then select "UTF-8" encoding.
+ Selektiere die Enkodierung des Standard-Feeds. Falls Sie unsicher sind wählen einfach die "UTF-8" Enkodierung.
+
+
+ Auto-update
+ Auto-Update
+
+
+ Select the auto-update strategy for this feed. Default auto-update strategy means that the feed will be update in time intervals set in application settings.
+
+
+
+ minutes
+ Minuten
+
+
+ Title
+ Titel
+
+
+ Description
+ Beschreibung
+
+
+ URL
+ URL
+
+
+ Fetch it now
+ Jetzt abrufen
+
+
+ Icon
+ Icon
+
+
+ Select icon for your feed.
+ Selektieren Sie das Icon für Ihren Feed.
+
+
+ Some feeds require authentication, including GMail feeds. BASIC, NTLM-2 and DIGEST-MD5 authentication schemes are supported.
+ Gewisse Feeds brauchen eine Authentifizierung, wie z.b. Gmail-Feeds. BASIC, NTLM-2 und DIGEST-MD5 Authentifizierungsmodelle werden unterstützt.
+
+
+ Requires authentication
+ Benötigt Authentifizierung
+
+
+ Username
+ Benutzername
+
+
+ Password
+ Passwort
+
+
+ Fetch metadata
+ Metadaten abrufen
+
+
+ Add new feed
+
+
+
+ Edit existing feed
+
+
+
+ Feed name is ok.
+ Feed-Name ist okay.
+
+
+ Feed name is too short.
+ Feed-Name ist zu kurz.
+
+
+ Description is empty.
+ Beschreibung ist leer.
+
+
+ The description is ok.
+ Die Beschreibung ist OK.
+
+
+ The url is ok.
+ Die URL ist okay.
+
+
+ The url does not meet standard pattern. Does your url start with "http://" or "https://" prefix.
+ Die URL entspricht nicht dem Standardmuster. Beginnt Ihre URL mit "http://" oder "https://"?
+
+
+ The url is empty.
+ Die URL ist leer.
+
+
+ Username is ok or it is not needed.
+ Benutzername ist okay oder wird nicht benötigt.
+
+
+ Username is empty.
+ Benutzername ist leer.
+
+
+ Password is ok or it is not needed.
+ Passwort ist okay oder wird nicht benötigt.
+
+
+ Password is empty.
+ Passwort ist leer.
+
+
+ Select icon file for the feed
+ Selektiere die Icon-Datei für den Feed.
+
+
+ Images (*.bmp *.jpg *.jpeg *.png *.svg *.tga)
+ Bilder (*.bmp *.jpg *.jpeg *.png *.svg *.tga)
+
+
+ Select icon
+ Selektiere Icon
+
+
+ Cancel
+ Abbrechen
+
+
+ Look in:
+ Label for field with icon file name textbox for selection dialog.
+ Schauen Sie in:
+
+
+ Icon name:
+ Icon-Name:
+
+
+ Icon type:
+ Icon-Typ:
+
+
+ Cannot add feed
+ Kann Feed nicht hinzufügen
+
+
+ Feed was not added due to error.
+ Feed wurde nicht hinzugefügt aufgrund eines Fehler.
+
+
+ Cannot edit feed
+ Feed kann nicht editiert werden
+
+
+ Feed was not edited due to error.
+ Feed wurde nicht editiert aufgrund eines Fehler.
+
+
+ All metadata fetched successfully.
+ Alle Metadaten wurden erfolgreich abgerufen.
+
+
+ Feed and icon metadata fetched.
+ Feed- und Icon-Metadaten abgerufen.
+
+
+ Result: %1.
+ Resultat: %1.
+
+
+ Feed or icon metatada not fetched.
+ Feed- oder Icon-Metadaten nicht abgerufen.
+
+
+ Error: %1.
+ Fehler: %1.
+
+
+ No metadata fetched.
+ Keine Metadaten abgerufen.
+
+
+ Icon fetched successfully.
+
+
+
+ Icon metadata fetched.
+
+
+
+ Icon metatada not fetched.
+
+
+
+ No icon fetched.
+
+
+
+ Feed title
+ Feed-Titel
+
+
+ Set title for your feed.
+ Setzen Sie den Titel für Ihren Feed.
+
+
+ Feed description
+ Feed-Beschreibung
+
+
+ Set description for your feed.
+ Setzen Sie die Beschreibung für Ihren Feed.
+
+
+ Full feed url including scheme
+
+
+
+ Set url for your feed.
+ Setze die URL für Ihren Feed.
+
+
+ Set username to access the feed.
+ Setzen Sie den Benutzernamen um zum Feed zu gelangen.
+
+
+ Set password to access the feed.
+ Setzen Sie das Passwort um zum Feed zu gelangen.
+
+
+ Icon selection
+ Icon-Selektion
+
+
+ Load icon from file...
+ Lade Icon aus Datei...
+
+
+ Do not use icon
+ Icon nicht verwenden
+
+
+ Use default icon
+ Standard-Icon verwenden
+
+
+ Fetch icon from feed
+
+
+
+ No metadata fetched so far.
+ Bisher keine Metadaten abgerufen.
+
+
+ Auto-update using global interval
+ Auto-Update benutzt globales Intervall
+
+
+ Auto-update every
+ Auto-Update alle
+
+
+ Do not auto-update at all
+ Kein Auto-Update ausführen
+
+
+
+ FormStandardImportExport
+
+ &Select file
+
+
+
+ &Check all items
+
+
+
+ &Uncheck all items
+
+
+
+ Operation results
+
+
+
+ No file is selected.
+ Keine Datei ausgewählt
+
+
+ No operation executed yet.
+
+
+
+ Destination file
+
+
+
+ Source feeds && categories
+
+
+
+ Export feeds
+
+
+
+ Source file
+
+
+
+ Target feeds && categories
+
+
+
+ Import feeds
+
+
+
+ OPML 2.0 files (*.opml)
+
+
+
+ Select file for feeds export
+
+
+
+ File is selected.
+
+
+
+ Select file for feeds import
+
+
+
+ Cannot open source file.
+
+
+
+ Feeds were loaded.
+
+
+
+ Error, file is not well-formed. Select another file.
+
+
+
+ Error occurred. File is not well-formed. Select another file.
+
+
+
+ Feeds were exported successfully.
+
+
+
+ Cannot write into destination file.
+
+
+
+ Critical error occurred.
+
@@ -2536,87 +2502,87 @@ die aktuell installierte.
Update
-
+ Download new installation files.
-
+ Checking for updates failed.
-
+ Download installation file for your OS.
-
+ Installation file is not available directly.
Go to application website to obtain it manually.
-
+ No new update available.
-
+ Cannot update application
-
+ Cannot navigate to installation file. Check new installation downloads manually on project website.
-
+ Download update
-
+ Downloaded %1% (update size is %2 kB).
-
+ Downloading update...
-
+ Downloaded successfully
-
+ Package was downloaded successfully.
-
+ Install update
-
+ Error occured
-
+ Error occured during downloading of the package.
-
+ Cannot launch external updater. Update application manually.
-
+ Go to application website
-
+ IOFactoryCannot open file '%1' for reading.
-
+ Cannot open file '%1' for writting.
-
+
@@ -2710,54 +2676,62 @@ Go to application website to obtain it manually.
Permanently deleted
-
+ Is message permanently deleted from recycle bin?
-
+ Attachments
-
+ List of attachments.
-
+
+
+
+ Loading of messages from item '%s' failed.
+
+
+
+ Loading of messages failed, maybe messages could not be downloaded.
+ MessagesToolBarSearch messages
-
+ Message search box
-
+ Menu for highlighting messages
-
+ No extra highlighting
-
+ Highlight unread messages
-
+ Highlight important messages
-
+ Display all messages
-
+ Message highlighter
-
+ Toolbar spacer
@@ -2788,11 +2762,11 @@ Go to application website to obtain it manually.
Problem with starting external e-mail client
-
+ External e-mail client could not be started.
-
+
@@ -2810,22 +2784,22 @@ Go to application website to obtain it manually.
connection refusedNetwork status.
-
+ connection timed outNetwork status.
-
+ SSL handshake failedNetwork status.
-
+ proxy server connection refusedNetwork status.
-
+ temporary failure
@@ -2835,17 +2809,17 @@ Go to application website to obtain it manually.
authentication failedNetwork status.
-
+ proxy authentication requiredNetwork status.
-
+ proxy server not foundNetwork status.
-
+ uknown content
@@ -2865,15 +2839,15 @@ Go to application website to obtain it manually.
no errorsNetwork status.
-
+ access to content was denied
-
+ connection timed out or was cancelled
-
+
@@ -2897,61 +2871,198 @@ Go to application website to obtain it manually.
LANG_EMAILpatlecat@gmail.com
-
- Load initial feeds
-
-
-
- Do you want to load initial set of feeds?
-
- LANG_NAMEName of language, e.g. English.Deutsch
-
- You started %1 for the first time, now you can load initial set of feeds.
-
+
+
+
++ %n other feeds.
+
+
+
+
- Welcome to %1 %2.
-
+ Welcome to %1.
+
+Please, check NEW stuff included in this
+version by clicking this popup notification.
+
+
+
+ Welcome to %1.
+
+
+
+ Load initial set of feeds
+ RecycleBinRecycle bin
-
+ Recycle bin contains all deleted messages from all feeds.
-
+ Recycle bin
%1
-
+ %n deleted message(s).
-
+
+
+
+ ShortcutCatcherReset to original shortcut.
-
+ Clear current shortcut.
-
+ Click and hit new shortcut.
-
+
+
+
+
+ StandardCategory
+
+ %1 (category)%2%3
+ Tooltip for standard feed.
+
+
+
+
+This category does not contain any nested items.
+
+
+
+ %n unread message(s).
+ Tooltip for "unread" column of feed list.
+
+
+
+
+
+
+
+ StandardFeed
+
+ Metadata not fetched
+
+
+
+ Metadata was not fetched because: %1.
+
+
+
+ does not use auto-update
+ Describes feed auto-update status.
+
+
+
+ uses global settings
+ Describes feed auto-update status.
+
+
+
+ uses specific settings (%n minute(s) to next auto-update)
+ Describes feed auto-update status.
+
+
+
+
+
+
+ %1 (%2)%3
+
+Network status: %6
+Encoding: %4
+Auto-update status: %5
+ Tooltip for feed.
+
+
+
+ %n unread message(s).
+ Tooltip for "unread" column of feed list.
+
+
+
+
+
+
+
+ StandardServiceRoot
+
+ This is obligatory service account for standard RSS/RDF/ATOM feeds.
+
+
+
+ You started %1 for the first time, now you can load initial set of feeds.
+
+
+
+ Do you want to load initial set of feeds?
+
+
+
+ Error when loading initial feeds
+
+
+
+ This is service account for standard RSS/RDF/ATOM feeds.
+
+
+
+ %n unread message(s).
+ Tooltip for "unread" column of feed list.
+
+
+
+
+
+
+ Fetch metadata
+ Metadaten abrufen
+
+
+ Import successfull, but some feeds/categories were not imported due to error.
+
+
+
+ Import was completely successfull.
+
+
+
+ Add new category
+ Füge neue Kategorie hinzu
+
+
+ Add new feed
+
+
+
+ Export feeds
+
+
+
+ Import feeds
+
@@ -2962,18 +3073,22 @@ Go to application website to obtain it manually.
Switch application between fulscreen/normal states right from this status bar icon.
-
+ SystemFactoryNew version available
-
+ Click the bubble for more information.
-
+
+
+
+ anonymous
+
@@ -2981,7 +3096,7 @@ Go to application website to obtain it manually.
%1
Unread news: %2
-
+
@@ -3012,42 +3127,42 @@ Unread news: %2
Displays main menu.
-
+ Main menu
-
+ Open new web browser tab.
-
+ Downloads
-
+ ToolBarEditorActivated actions
-
+ Available actions
-
+ Insert separator
-
+ Insert spacer
-
+ Separator
-
+ Toolbar spacer
@@ -3055,23 +3170,23 @@ Unread news: %2
Move action up
-
+ Move action down
-
+ Add selected action
-
+ Delete selected action
-
+ Delete all actions
-
+
@@ -3081,6 +3196,21 @@ Unread news: %2
Schliessen Sie zuerst alle modalen Fenster.
+
+ TtRssServiceRoot
+
+ This is service account TT-RSS (TinyTiny RSS) server.
+
+
+
+ %n unread message(s).
+ Tooltip for "unread" column of feed list.
+
+
+
+
+
+WebBrowser
@@ -3152,6 +3282,14 @@ Unread news: %2
Stop web page loading.Stoppe das laden der Webseite.
+
+ Cannot add feed
+ Kann Feed nicht hinzufügen
+
+
+ You cannot add this feed to %1 because standard RSS/ATOM account is not enabled. Enable it first.
+
+ WebView
@@ -3205,91 +3343,91 @@ Unread news: %2
Copies current selection into the clipboard.
-
+ Copy link url to clipboard.
-
+ Copy image to clipboard.
-
+ Copy image url to clipboard.
-
+ Open this hyperlink in new tab.
-
+ Open the hyperlink in this tab.
-
+ Open this image in this tab.
-
+ Open link in external browser
-
+ Open the hyperlink in external browser.
-
+ Print
-
+ Print current web page.
-
+ HTML web pages (*.html)
-
+ Select destination file for web page
-
+ Cannot save web page
-
+ Web page cannot be saved because destination file is not writtable.
-
+ Save target as...
-
+ Download content from the hyperlink.
-
+ Save page as...
-
+ Save image to disk.
-
+ Save image as...
-
+ source_page
-
+ Search "%1" via Google...
-
+
-
\ No newline at end of file
+
diff --git a/localization/rssguard-en_GB.ts b/localization/rssguard-en_GB.ts
index a85ae6343..e2ca47af6 100644
--- a/localization/rssguard-en_GB.ts
+++ b/localization/rssguard-en_GB.ts
@@ -196,27 +196,6 @@ Also note that some resources are cached by internal web browser. Thus, after ch
-
- Category
-
- %1 (category)%2%3
- Tooltip for standard feed.
-
-
-
-
-This category does not contain any nested items.
-
-
-
- %n unread message(s).
- Tooltip for "unread" column of feed list.
-
-
-
-
-
-DatabaseCleaner
@@ -436,76 +415,16 @@ Click here to open parent directory.
-
- Feed
-
- does not use auto-update
- Describes feed auto-update status.
-
-
-
- uses global settings
- Describes feed auto-update status.
-
-
-
- uses specific settings (%n minute(s) to next auto-update)
- Describes feed auto-update status.
-
-
-
-
-
-
- %1 (%2)%3
-
-Network status: %6
-Encoding: %4
-Auto-update status: %5
- Tooltip for feed.
-
-
-
- %n unread message(s).
- Tooltip for "unread" column of feed list.
-
-
-
-
-
-
- Metadata not fetched
-
-
-
- Metadata was not fetched because: %1
-
-
-FeedMessageViewerToolbar for messages
-
- Feed update started
- Text display in status bar when feed update is started.
-
-
-
- Updated feed '%1'
- Text display in status bar when particular feed is updated.
-
- Toolbar for feeds
-
- Error when loading initial feeds
-
- Cannot cleanup database
@@ -514,18 +433,6 @@ Auto-update status: %5
Cannot cleanup database, because another critical action is running.
-
- Cannot update all items
-
-
-
- You cannot update all items because another another critical operation is ongoing.
-
-
-
- New messages downloaded
-
- FeedsImportExportModel
@@ -562,18 +469,6 @@ Auto-update status: %5
Name of root item of feed list which can be seen in feed add/edit dialog.
-
- Invalid tree data.
-
-
-
- Import successfull, but some feeds/categories were not imported due to error.
-
-
-
- Import was completely successfull.
-
- Starting auto-update of some feeds
@@ -585,6 +480,36 @@ Auto-update status: %5
+
+ Cannot update all items
+
+
+
+ You cannot update all items because another another critical operation is ongoing.
+
+
+
+ Feed update started
+ Text display in status bar when feed update is started.
+
+
+
+ Updated feed '%1'
+ Text display in status bar when particular feed is updated.
+
+
+
+ New messages downloaded
+
+
+
+ You can't transfer dragged item into different account, this is not supported.
+
+
+
+ Cannot perform drag & drop operation
+
+ FeedsToolBar
@@ -595,14 +520,6 @@ Auto-update status: %5
FeedsView
-
- Cannot add standard category
-
-
-
- Cannot add standard feed
-
- Cannot edit item
@@ -611,50 +528,10 @@ Auto-update status: %5
Cannot delete item
-
- You are about to delete selected feed or category.
-
-
-
- Deletion of item failed.
-
-
-
- Selected item was not deleted due to error.
-
-
-
- Do you really want to delete selected item?
-
-
-
- Permanently delete messages
-
-
-
- You are about to permanenty delete all messages from your recycle bin.
-
-
-
- Do you really want to empty your recycle bin?
-
- Context menu for empty space
-
- Context menu for recycle bin
-
-
-
- You cannot add new standard category now because another critical operation is ongoing.
-
-
-
- You cannot add new standard feed now because another critical operation is ongoing.
-
- Selected item cannot be edited because another critical operation is ongoing.
@@ -664,11 +541,40 @@ Auto-update status: %5
- Delete feed/category
+ Context menu for categories
- Context menu for categories
+ Selected item cannot be edited, this is not (yet?) supported.
+
+
+
+ Deleting "%1"
+
+
+
+ You are about to completely delete item "%1".
+
+
+
+ Are you sure?
+
+
+
+ Cannot delete "%1"
+
+
+
+ This item cannot be deleted because something critically failed. Submit bug report.
+
+
+
+ This item cannot be deleted, because it does not support it
+or this functionality is not implemented yet.
+
+
+
+ Context menu for other items
@@ -718,10 +624,6 @@ Auto-update status: %5
<b>%8</b><br><b>Version:</b> %1 (build on %2 with CMake %3)<br><b>Revision:</b> %4<br><b>Build date:</b> %5<br><b>Qt:</b> %6 (compiled against %7)<br>
-
- <body>%5 is a (very) tiny feed reader.<br><br>This software is distributed under the terms of GNU General Public License, version 3.<br><br>Contacts:<ul><li><a href="mailto://%1">%1</a> ~email</li><li><a href="%2">%2</a> ~website</li></ul>You can obtain source code for %5 from its website.<br><br><br>Copyright (C) 2011-%3 %4</body>
-
- About %1About RSS Guard dialog title.
@@ -751,6 +653,49 @@ Auto-update status: %5
Resources
+
+ <body>%5 is a (very) tiny feed reader.<br><br>This software is distributed under the terms of GNU General Public License, version 3.<br><br>Contacts:<ul><li><a href="mailto://%1">%1</a> ~e-mail</li><li><a href="%2">%2</a> ~website</li></ul>You can obtain source code for %5 from its website.<br><br><br>Copyright (C) 2011-%3 %4</body>
+
+
+
+
+ FormAddAccount
+
+ Add new account
+
+
+
+ Details
+
+
+
+ Name
+
+
+
+ Version
+
+
+
+ Author
+
+
+
+ Description
+
+
+
+ Cannot add account
+
+
+
+ Some critical error occurred, report this to developers.
+
+
+
+ This account can be added only once.
+
+ FormBackupDatabaseSettings
@@ -827,134 +772,6 @@ Auto-update status: %5
-
- FormCategoryDetails
-
- Parent category
-
-
-
- Select parent item for your category.
-
-
-
- Title
-
-
-
- Description
-
-
-
- Icon
-
-
-
- Select icon for your category.
-
-
-
- Add new category
-
-
-
- Edit existing category
-
-
-
- Cannot add category
-
-
-
- Category was not added due to error.
-
-
-
- Cannot edit category
-
-
-
- Category was not edited due to error.
-
-
-
- Category name is ok.
-
-
-
- Category name is too short.
-
-
-
- Description is empty.
-
-
-
- Select icon file for the category
-
-
-
- Images (*.bmp *.jpg *.jpeg *.png *.svg *.tga)
-
-
-
- Select icon
-
-
-
- Cancel
-
-
-
- Look in:
- Label to describe the folder for icon file selection dialog.
-
-
-
- Icon name:
-
-
-
- Icon type:
-
-
-
- Category title
-
-
-
- Set title for your category.
-
-
-
- Category description
-
-
-
- Set description for your category.
-
-
-
- Icon selection
-
-
-
- Load icon from file...
-
-
-
- Do not use icon
-
-
-
- Use default icon
-
-
-
- The description is ok.
-
-
-FormDatabaseCleanup
@@ -1025,389 +842,6 @@ Auto-update status: %5
-
- FormFeedDetails
-
- Parent category
-
-
-
- Select parent item for your feed.
-
-
-
- Type
-
-
-
- Select type of the standard feed.
-
-
-
- Encoding
-
-
-
- Select encoding of the standard feed. If you are unsure about the encoding, then select "UTF-8" encoding.
-
-
-
- Auto-update
-
-
-
- Select the auto-update strategy for this feed. Default auto-update strategy means that the feed will be update in time intervals set in application settings.
-
-
-
- minutes
-
-
-
- Title
-
-
-
- Description
-
-
-
- URL
-
-
-
- Fetch it now
-
-
-
- Icon
-
-
-
- Select icon for your feed.
-
-
-
- Some feeds require authentication, including GMail feeds. BASIC, NTLM-2 and DIGEST-MD5 authentication schemes are supported.
-
-
-
- Requires authentication
-
-
-
- Username
-
-
-
- Password
-
-
-
- Fetch metadata
-
-
-
- Add new feed
-
-
-
- Edit existing feed
-
-
-
- Feed name is ok.
-
-
-
- Feed name is too short.
-
-
-
- Description is empty.
-
-
-
- The url is ok.
-
-
-
- The url does not meet standard pattern. Does your url start with "http://" or "https://" prefix.
-
-
-
- The url is empty.
-
-
-
- Username is ok or it is not needed.
-
-
-
- Username is empty.
-
-
-
- Password is ok or it is not needed.
-
-
-
- Password is empty.
-
-
-
- Select icon file for the feed
-
-
-
- Images (*.bmp *.jpg *.jpeg *.png *.svg *.tga)
-
-
-
- Select icon
-
-
-
- Cancel
-
-
-
- Look in:
- Label for field with icon file name textbox for selection dialog.
-
-
-
- Icon name:
-
-
-
- Icon type:
-
-
-
- Cannot add feed
-
-
-
- Feed was not added due to error.
-
-
-
- Cannot edit feed
-
-
-
- All metadata fetched successfully.
-
-
-
- Feed and icon metadata fetched.
-
-
-
- Result: %1.
-
-
-
- Feed or icon metatada not fetched.
-
-
-
- Error: %1.
-
-
-
- No metadata fetched.
-
-
-
- Feed title
-
-
-
- Set title for your feed.
-
-
-
- Feed description
-
-
-
- Set description for your feed.
-
-
-
- Full feed url including scheme
-
-
-
- Set url for your feed.
-
-
-
- Set username to access the feed.
-
-
-
- Set password to access the feed.
-
-
-
- Icon selection
-
-
-
- Load icon from file...
-
-
-
- Do not use icon
-
-
-
- Use default icon
-
-
-
- No metadata fetched so far.
-
-
-
- Auto-update using global interval
-
-
-
- Auto-update every
-
-
-
- Do not auto-update at all
-
-
-
- The description is ok.
-
-
-
- Feed was not edited due to error.
-
-
-
- Icon fetched successfully.
-
-
-
- Icon metadata fetched.
-
-
-
- Icon metatada not fetched.
-
-
-
- No icon fetched.
-
-
-
- Fetch icon from feed
-
-
-
-
- FormImportExport
-
- &Select file
-
-
-
- Operation results
-
-
-
- No file is selected.
-
-
-
- No operation executed yet.
-
-
-
- Export feeds
-
-
-
- Destination file
-
-
-
- Source feeds && categories
-
-
-
- Source file
-
-
-
- Target feeds && categories
-
-
-
- Import feeds
-
-
-
- OPML 2.0 files (*.opml)
-
-
-
- Select file for feeds export
-
-
-
- File is selected.
-
-
-
- Select file for feeds import
-
-
-
- Cannot open source file.
-
-
-
- Feeds were loaded.
-
-
-
- Error, file is not well-formed. Select another file.
-
-
-
- Error occurred. File is not well-formed. Select another file.
-
-
-
- Feeds were exported successfully.
-
-
-
- Cannot write into destination file.
-
-
-
- Critical error occurred.
-
-
-
- &Check all items
-
-
-
- &Uncheck all items
-
-
-FormMain
@@ -1482,22 +916,6 @@ Auto-update status: %5
No actions are available right now.
-
- Fee&ds && categories
-
-
-
- Mark all messages (without message filters) from selected feeds as read.
-
-
-
- Mark all messages (without message filters) from selected feeds as unread.
-
-
-
- Displays all messages from selected feeds/categories in a new "newspaper mode" tab. Note that messages are not set as read automatically.
-
- Hides main window if it is visible and shows it if it is hidden.
@@ -1522,34 +940,6 @@ Auto-update status: %5
&Delete selected messages
-
- Deletes all messages from selected feeds.
-
-
-
- Marks all messages in all feeds read. This does not take message filters into account.
-
-
-
- Deletes all messages from all feeds.
-
-
-
- Update &all feeds
-
-
-
- Update &selected feeds
-
-
-
- &Edit selected feed/category
-
-
-
- &Delete selected feed/category
-
- Settings
@@ -1558,10 +948,6 @@ Auto-update status: %5
Hides or displays the main menu.
-
- Add &new feed/category
-
- &Close all tabs except current one
@@ -1578,18 +964,6 @@ Auto-update status: %5
Mark &selected messages as &unread
-
- &Mark selected feeds as read
-
-
-
- &Mark selected feeds as unread
-
-
-
- &Clean selected feeds
-
- Open selected source articles in &external browser
@@ -1602,26 +976,6 @@ Auto-update status: %5
Open selected source articles in &internal browser
-
- &Mark all feeds as &read
-
-
-
- View selected feeds in &newspaper mode
-
-
-
- &Clean all feeds
-
-
-
- Select &next feed/category
-
-
-
- Select &previous feed/category
-
- Select &next message
@@ -1674,22 +1028,6 @@ Auto-update status: %5
Cannot open external browser. Navigate to application website manually.
-
- New &feed
-
-
-
- Add new feed.
-
-
-
- New &category
-
-
-
- Add new category.
-
- &Toolbars
@@ -1702,30 +1040,10 @@ Auto-update status: %5
&Feed/message list headers
-
- &Import feeds
-
-
-
- Imports feeds you want from selected file.
-
-
-
- &Export feeds
-
-
-
- Exports feeds you want to selected file.
-
- Close all tabs except current one.
-
- &Recycle bin
-
- Report a &bug (GitHub)...
@@ -1742,18 +1060,6 @@ Auto-update status: %5
Display &wiki
-
- &Empty recycle bin
-
-
-
- &Restore all messages
-
-
-
- Restore &selected messages
-
- &Restart
@@ -1783,15 +1089,131 @@ Auto-update status: %5
- Show only unread feeds/categories
+ Add &new item
- &Fetch feed metadata
+ Update &all items
- &Expand/collapse selected feed/category
+ Update &selected items
+
+
+
+ &Edit selected item
+
+
+
+ &Delete selected item
+
+
+
+ &Mark selected items as read
+
+
+
+ Mark all messages (without message filters) from selected items as read.
+
+
+
+ &Mark selected items as unread
+
+
+
+ Mark all messages (without message filters) from selected items as unread.
+
+
+
+ &Clean selected items
+
+
+
+ Deletes all messages from selected items.
+
+
+
+ &Mark all items as &read
+
+
+
+ Marks all messages in all items read. This does not take message filters into account.
+
+
+
+ View selected items in &newspaper mode
+
+
+
+ Displays all messages from selected item in a new "newspaper mode" tab. Note that messages are not set as read automatically.
+
+
+
+ &Clean all items
+
+
+
+ Deletes all messages from all items.
+
+
+
+ Select &next item
+
+
+
+ Select &previous item
+
+
+
+ Show only unread items
+
+
+
+ &Expand/collapse selected item
+
+
+
+ &Add new service account
+
+
+
+ &Restore selected messages
+
+
+
+ No possible actions
+
+
+
+ Feeds && categories && accounts
+
+
+
+ &Recycle bin(s)
+
+
+
+ &Restore all recycle bins
+
+
+
+ &Empty all recycle bins
+
+
+
+ Select next &unread message
+
+
+
+ No recycle bin
+
+
+
+ Restore recycle bin
+
+
+
+ Empty recycle bin
@@ -1943,10 +1365,6 @@ Auto-update status: %5
Author
-
- Email
-
- Socks5
@@ -2503,6 +1921,525 @@ File filter for external e-mail selection dialog.
Fancy && modern popup notifications (This uses OS native notifications via D-Bus if available.)
+
+ E-mail
+
+
+
+ Enable notifications
+
+
+
+
+ FormStandardCategoryDetails
+
+ Parent category
+
+
+
+ Select parent item for your category.
+
+
+
+ Title
+
+
+
+ Description
+
+
+
+ Icon
+
+
+
+ Select icon for your category.
+
+
+
+ Add new category
+
+
+
+ Edit existing category
+
+
+
+ Cannot add category
+
+
+
+ Category was not added due to error.
+
+
+
+ Cannot edit category
+
+
+
+ Category was not edited due to error.
+
+
+
+ Category name is ok.
+
+
+
+ Category name is too short.
+
+
+
+ Description is empty.
+
+
+
+ The description is ok.
+
+
+
+ Select icon file for the category
+
+
+
+ Images (*.bmp *.jpg *.jpeg *.png *.svg *.tga)
+
+
+
+ Select icon
+
+
+
+ Cancel
+
+
+
+ Look in:
+ Label to describe the folder for icon file selection dialog.
+
+
+
+ Icon name:
+
+
+
+ Icon type:
+
+
+
+ Category title
+
+
+
+ Set title for your category.
+
+
+
+ Category description
+
+
+
+ Set description for your category.
+
+
+
+ Icon selection
+
+
+
+ Load icon from file...
+
+
+
+ Do not use icon
+
+
+
+ Use default icon
+
+
+
+
+ FormStandardFeedDetails
+
+ Parent category
+
+
+
+ Select parent item for your feed.
+
+
+
+ Type
+
+
+
+ Select type of the standard feed.
+
+
+
+ Encoding
+
+
+
+ Select encoding of the standard feed. If you are unsure about the encoding, then select "UTF-8" encoding.
+
+
+
+ Auto-update
+
+
+
+ Select the auto-update strategy for this feed. Default auto-update strategy means that the feed will be update in time intervals set in application settings.
+
+
+
+ minutes
+
+
+
+ Title
+
+
+
+ Description
+
+
+
+ URL
+
+
+
+ Fetch it now
+
+
+
+ Icon
+
+
+
+ Select icon for your feed.
+
+
+
+ Some feeds require authentication, including GMail feeds. BASIC, NTLM-2 and DIGEST-MD5 authentication schemes are supported.
+
+
+
+ Requires authentication
+
+
+
+ Username
+
+
+
+ Password
+
+
+
+ Fetch metadata
+
+
+
+ Add new feed
+
+
+
+ Edit existing feed
+
+
+
+ Feed name is ok.
+
+
+
+ Feed name is too short.
+
+
+
+ Description is empty.
+
+
+
+ The description is ok.
+
+
+
+ The url is ok.
+
+
+
+ The url does not meet standard pattern. Does your url start with "http://" or "https://" prefix.
+
+
+
+ The url is empty.
+
+
+
+ Username is ok or it is not needed.
+
+
+
+ Username is empty.
+
+
+
+ Password is ok or it is not needed.
+
+
+
+ Password is empty.
+
+
+
+ Select icon file for the feed
+
+
+
+ Images (*.bmp *.jpg *.jpeg *.png *.svg *.tga)
+
+
+
+ Select icon
+
+
+
+ Cancel
+
+
+
+ Look in:
+ Label for field with icon file name textbox for selection dialog.
+
+
+
+ Icon name:
+
+
+
+ Icon type:
+
+
+
+ Cannot add feed
+
+
+
+ Feed was not added due to error.
+
+
+
+ Cannot edit feed
+
+
+
+ Feed was not edited due to error.
+
+
+
+ All metadata fetched successfully.
+
+
+
+ Feed and icon metadata fetched.
+
+
+
+ Result: %1.
+
+
+
+ Feed or icon metatada not fetched.
+
+
+
+ Error: %1.
+
+
+
+ No metadata fetched.
+
+
+
+ Icon fetched successfully.
+
+
+
+ Icon metadata fetched.
+
+
+
+ Icon metatada not fetched.
+
+
+
+ No icon fetched.
+
+
+
+ Feed title
+
+
+
+ Set title for your feed.
+
+
+
+ Feed description
+
+
+
+ Set description for your feed.
+
+
+
+ Full feed url including scheme
+
+
+
+ Set url for your feed.
+
+
+
+ Set username to access the feed.
+
+
+
+ Set password to access the feed.
+
+
+
+ Icon selection
+
+
+
+ Load icon from file...
+
+
+
+ Do not use icon
+
+
+
+ Use default icon
+
+
+
+ Fetch icon from feed
+
+
+
+ No metadata fetched so far.
+
+
+
+ Auto-update using global interval
+
+
+
+ Auto-update every
+
+
+
+ Do not auto-update at all
+
+
+
+
+ FormStandardImportExport
+
+ &Select file
+
+
+
+ &Check all items
+
+
+
+ &Uncheck all items
+
+
+
+ Operation results
+
+
+
+ No file is selected.
+
+
+
+ No operation executed yet.
+
+
+
+ Destination file
+
+
+
+ Source feeds && categories
+
+
+
+ Export feeds
+
+
+
+ Source file
+
+
+
+ Target feeds && categories
+
+
+
+ Import feeds
+
+
+
+ OPML 2.0 files (*.opml)
+
+
+
+ Select file for feeds export
+
+
+
+ File is selected.
+
+
+
+ Select file for feeds import
+
+
+
+ Cannot open source file.
+
+
+
+ Feeds were loaded.
+
+
+
+ Error, file is not well-formed. Select another file.
+
+
+
+ Error occurred. File is not well-formed. Select another file.
+
+
+
+ Feeds were exported successfully.
+
+
+
+ Cannot write into destination file.
+
+
+
+ Critical error occurred.
+
+ FormUpdate
@@ -2748,6 +2685,14 @@ Go to application website to obtain it manually.
List of attachments.
+
+ Loading of messages from item '%s' failed.
+
+
+
+ Loading of messages failed, maybe messages could not be downloaded.
+
+ MessagesToolBar
@@ -2921,25 +2866,33 @@ Go to application website to obtain it manually.
LANG_EMAILrotter.martinos@gmail.com
-
- Load initial feeds
-
-
-
- Do you want to load initial set of feeds?
-
- LANG_NAMEName of language, e.g. English.
+
+
+
++ %n other feeds.
+
+
+
+
+
- You started %1 for the first time, now you can load initial set of feeds.
+ Welcome to %1.
+
+Please, check NEW stuff included in this
+version by clicking this popup notification.
- Welcome to %1 %2.
+ Welcome to %1.
+
+
+
+ Load initial set of feeds
@@ -2981,6 +2934,132 @@ Go to application website to obtain it manually.
+
+ StandardCategory
+
+ %1 (category)%2%3
+ Tooltip for standard feed.
+
+
+
+
+This category does not contain any nested items.
+
+
+
+ %n unread message(s).
+ Tooltip for "unread" column of feed list.
+
+
+
+
+
+
+
+ StandardFeed
+
+ Metadata not fetched
+
+
+
+ Metadata was not fetched because: %1.
+
+
+
+ does not use auto-update
+ Describes feed auto-update status.
+
+
+
+ uses global settings
+ Describes feed auto-update status.
+
+
+
+ uses specific settings (%n minute(s) to next auto-update)
+ Describes feed auto-update status.
+
+
+
+
+
+
+ %1 (%2)%3
+
+Network status: %6
+Encoding: %4
+Auto-update status: %5
+ Tooltip for feed.
+
+
+
+ %n unread message(s).
+ Tooltip for "unread" column of feed list.
+
+
+
+
+
+
+
+ StandardServiceRoot
+
+ This is obligatory service account for standard RSS/RDF/ATOM feeds.
+
+
+
+ You started %1 for the first time, now you can load initial set of feeds.
+
+
+
+ Do you want to load initial set of feeds?
+
+
+
+ Error when loading initial feeds
+
+
+
+ This is service account for standard RSS/RDF/ATOM feeds.
+
+
+
+ %n unread message(s).
+ Tooltip for "unread" column of feed list.
+
+
+
+
+
+
+ Fetch metadata
+
+
+
+ Import successfull, but some feeds/categories were not imported due to error.
+
+
+
+ Import was completely successfull.
+
+
+
+ Add new category
+
+
+
+ Add new feed
+
+
+
+ Export feeds
+
+
+
+ Import feeds
+
+
+StatusBar
@@ -3002,6 +3081,10 @@ Go to application website to obtain it manually.
Click the bubble for more information.
+
+ anonymous
+
+ SystemTrayIcon
@@ -3108,6 +3191,21 @@ Unread news: %2
+
+ TtRssServiceRoot
+
+ This is service account TT-RSS (TinyTiny RSS) server.
+
+
+
+ %n unread message(s).
+ Tooltip for "unread" column of feed list.
+
+
+
+
+
+WebBrowser
@@ -3179,6 +3277,14 @@ Unread news: %2
Stop web page loading.
+
+ Cannot add feed
+
+
+
+ You cannot add this feed to %1 because standard RSS/ATOM account is not enabled. Enable it first.
+
+ WebView
diff --git a/localization/rssguard-en_US.ts b/localization/rssguard-en_US.ts
index 4ac459cd1..807e83f9a 100644
--- a/localization/rssguard-en_US.ts
+++ b/localization/rssguard-en_US.ts
@@ -1,522 +1,452 @@
-
+
+
+AdBlockAddSubscriptionDialogAdd subscription
-
+ Another subscription
-
+ Entered title is okay.
-
+ Entered title is empty.
-
+ Entered url is okay.
-
+ Entered url is empty.
-
+ Title
-
+ Address
-
+ AdBlockCustomListCustom rules
-
+ AdBlockDialogAdblock settings
-
+ Enable Adblock
-
+ Note that Adblock may significantly slow this application down once you activate huge subscriptions. Too many rules is not good for performance. Also, make sure you restart application after you disable Adblock if you wish to have low memory footprint. Adblock is known to use much system memory.
Also note that some resources are cached by internal web browser. Thus, after changing some rules or subscriptions they will fully apply only for new application instances. Make sure you restart RSS Guard for best Adblock experience.
-
+ Options
-
+ Filter rules
-
+ Use only essential part of EasyList (for performance reasons)
-
+ Add rule
-
+ Remove rule
-
+ Add subscription
-
+ Remove subscription
-
+ Update subscriptions
-
+ Rules writing guide
-
+ AdBlockIconAdblock
-
+ Show Adblock &settings
-
+ Disable on %1
-
+ Disable only on this page
-
+ Blocked popup windows
-
+ %1 with (%2)
-
+ No content blocked
-
+ Blocked some content - click to edit rule
-
+ Adblock - up and running
-
+ Adblock - not running
-
+ AdBlockSubscriptionCannot load subscription!
-
+ AdBlockTreeWidgetPlease write your rule here
-
+ %1 (recently updated)
-
+ %1 (error: %2)
-
+ Add rule
-
+ Remove rule
-
+ ApplicationApplication is already running.
-
+ Output directory is not writable.
-
+ Settings file not copied to output directory successfully.
-
+ Database file not copied to output directory successfully.
-
+ Database restoration was not initiated. Make sure that output directory is writable.
-
+ Settings restoration was not initiated. Make sure that output directory is writable.
-
-
-
-
- Category
-
- %1 (category)%2%3
- Tooltip for standard feed.
-
-
-
-
-This category does not contain any nested items.
-
-
-
- %n unread message(s).
- Tooltip for "unread" column of feed list.
-
+ DatabaseCleanerShrinking database file...
-
+ Database file shrinked...
-
+ Removing read messages...
-
+ Read messages purged...
-
+ Recycle bin purged...
-
+ Removing old messages...
-
+ Purging recycle bin...
-
+ Old messages purged...
-
+ DatabaseFactoryMySQL server works as expected.
-
+ No MySQL server is running in the target destination.
-
+ Access denied. Invalid username or password used.Access to MySQL server was denied.
-
+ Unknown error.Unknown MySQL error arised.
-
+ Selected database does not exist (yet).
-
+ MySQL/MariaDB (dedicated database)
-
+ SQLite (embedded database)
-
+ DiscoverFeedsButtonThis website does not contain any feeds.
-
+ Click me to add feeds from this website.
This website contains %n feed(s).
-
+
+
+
+ DownloadItemIco
-
+ Filename
-
+ Error opening output file: %1
-
+ &Try again
-
+ &Stop
-
+ &Open file
-
+ Select destination for downloaded file
-
+ Error: %1
-
+ Download directory couldn't be created
-
+ Error when saving file: %1
-
+ %1 of %2 (%3 per second) - %4
-
+ %1 of %2 - download completed
-
+ Open &directory
-
+ Cannot open file
-
+ Cannot open output file. Open it manually.
-
+ Cannot open directory
-
+ Cannot open output directory. Open it manually.
-
+ Download finished
-
+
- File '%1' is downloaded.
+ File '%1' is downloaded.
Click here to open parent directory.
-
+ URL: %1
-
+ Local file: %1
-
+ Selection of local file cancelled.
-
+ DownloadManagerClean up
-
+ %n minutes remaining
-
+
+
+
+ %n seconds remaining
-
+
+
+
+ bytes
-
+ kB
-
+ MB
-
+ GB
-
+ Downloading %n file(s)...
-
-
-
-
- Feed
-
- does not use auto-update
- Describes feed auto-update status.
-
-
-
- uses global settings
- Describes feed auto-update status.
-
-
-
- uses specific settings (%n minute(s) to next auto-update)
- Describes feed auto-update status.
-
-
-
- %1 (%2)%3
-
-Network status: %6
-Encoding: %4
-Auto-update status: %5
- Tooltip for feed.
-
-
-
- %n unread message(s).
- Tooltip for "unread" column of feed list.
-
-
-
- Metadata not fetched
-
-
-
- Metadata was not fetched because: %1
-
+
+
+
+ FeedMessageViewerToolbar for messages
-
-
-
- Feed update started
- Text display in status bar when feed update is started.
-
-
-
- Updated feed '%1'
- Text display in status bar when particular feed is updated.
-
+ Toolbar for feeds
-
-
-
- Error when loading initial feeds
-
+ Cannot cleanup database
-
+ Cannot cleanup database, because another critical action is running.
-
-
-
- Cannot update all items
-
-
-
- You cannot update all items because another another critical operation is ongoing.
-
-
-
- New messages downloaded
-
+ FeedsImportExportModel (category)
-
+ (feed)
-
+ Category
-
+
@@ -524,1301 +454,822 @@ Auto-update status: %5
TitleTitle text in the feed list header.
-
+ Titles of feeds/categories.
-
+ Counts of unread/all meesages.
-
+ RootName of root item of feed list which can be seen in feed add/edit dialog.
-
-
-
- Invalid tree data.
-
-
-
- Import successfull, but some feeds/categories were not imported due to error.
-
-
-
- Import was completely successfull.
-
+ Starting auto-update of some feeds
-
+ I will auto-update %n feed(s).
-
+
+
+
+
+
+
+ Cannot update all items
+
+
+
+ You cannot update all items because another another critical operation is ongoing.
+
+
+
+ Feed update started
+ Text display in status bar when feed update is started.
+
+
+
+ Updated feed '%1'
+ Text display in status bar when particular feed is updated.
+
+
+
+ New messages downloaded
+
+
+
+ You can't transfer dragged item into different account, this is not supported.
+
+
+
+ Cannot perform drag & drop operation
+ FeedsToolBarToolbar spacer
-
+ FeedsView
-
- Cannot add standard category
-
-
-
- Cannot add standard feed
-
- Cannot edit item
-
+ Cannot delete item
-
-
-
- You are about to delete selected feed or category.
-
-
-
- Deletion of item failed.
-
-
-
- Selected item was not deleted due to error.
-
-
-
- Do you really want to delete selected item?
-
-
-
- Permanently delete messages
-
-
-
- You are about to permanenty delete all messages from your recycle bin.
-
-
-
- Do you really want to empty your recycle bin?
-
+ Context menu for empty space
-
-
-
- Context menu for recycle bin
-
-
-
- You cannot add new standard category now because another critical operation is ongoing.
-
-
-
- You cannot add new standard feed now because another critical operation is ongoing.
-
+ Selected item cannot be edited because another critical operation is ongoing.
-
+ Selected item cannot be deleted because another critical operation is ongoing.
-
-
-
- Delete feed/category
-
+ Context menu for categories
-
+
+
+
+ Selected item cannot be edited, this is not (yet?) supported.
+
+
+
+ Deleting "%1"
+
+
+
+ You are about to completely delete item "%1".
+
+
+
+ Are you sure?
+
+
+
+ Cannot delete "%1"
+
+
+
+ This item cannot be deleted because something critically failed. Submit bug report.
+
+
+
+ This item cannot be deleted, because it does not support it
+or this functionality is not implemented yet.
+
+
+
+ Context menu for other items
+ FormAboutInformation
-
+ Licenses
-
+ GNU GPL License (applies to RSS Guard source code)
-
+ GNU GPL License
-
+ BSD License (applies to QtSingleApplication source code)
-
+ Licenses page is available only in English language.
-
+ Changelog
-
+ Changelog page is available only in English language.
-
+ License not found.
-
+ Changelog not found.
-
+ <b>%8</b><br><b>Version:</b> %1 (build on %2 with CMake %3)<br><b>Revision:</b> %4<br><b>Build date:</b> %5<br><b>Qt:</b> %6 (compiled against %7)<br>
-
-
-
- <body>%5 is a (very) tiny feed reader.<br><br>This software is distributed under the terms of GNU General Public License, version 3.<br><br>Contacts:<ul><li><a href="mailto://%1">%1</a> ~email</li><li><a href="%2">%2</a> ~website</li></ul>You can obtain source code for %5 from its website.<br><br><br>Copyright (C) 2011-%3 %4</body>
-
+ About %1About RSS Guard dialog title.
-
+ Settings type
-
+ Settings file
-
+ Database root path
-
+ FULLY portable
-
+ PARTIALLY portable
-
+ Resources
-
+
+
+
+ <body>%5 is a (very) tiny feed reader.<br><br>This software is distributed under the terms of GNU General Public License, version 3.<br><br>Contacts:<ul><li><a href="mailto://%1">%1</a> ~e-mail</li><li><a href="%2">%2</a> ~website</li></ul>You can obtain source code for %5 from its website.<br><br><br>Copyright (C) 2011-%3 %4</body>
+
+
+
+
+ FormAddAccount
+
+ Add new account
+
+
+
+ Details
+
+
+
+ Name
+
+
+
+ Version
+
+
+
+ Author
+
+
+
+ Description
+
+
+
+ Cannot add account
+
+
+
+ Some critical error occurred, report this to developers.
+
+
+
+ This account can be added only once.
+ FormBackupDatabaseSettingsBackup database/settings
-
+ Backup properties
-
+ Items to backup
-
+ Database
-
+ Settings
-
+ Backup name
-
+ Operation results
-
+ Common name for backup files
-
+ No operation executed yet.
-
+ Backup was created successfully.
-
+ Backup name cannot be empty.
-
+ Backup name looks okay.
-
+ Backup failed.
-
+ Output directory
-
+ &Select directory
-
+ Backup was created successfully and stored in target directory.
-
+ Select destination directory
-
+ Good destination directory is specified.
-
-
-
-
- FormCategoryDetails
-
- Parent category
-
-
-
- Select parent item for your category.
-
-
-
- Title
-
-
-
- Description
-
-
-
- Icon
-
-
-
- Select icon for your category.
-
-
-
- Add new category
-
-
-
- Edit existing category
-
-
-
- Cannot add category
-
-
-
- Category was not added due to error.
-
-
-
- Cannot edit category
-
-
-
- Category was not edited due to error.
-
-
-
- Category name is ok.
-
-
-
- Category name is too short.
-
-
-
- Description is empty.
-
-
-
- Select icon file for the category
-
-
-
- Images (*.bmp *.jpg *.jpeg *.png *.svg *.tga)
-
-
-
- Select icon
-
-
-
- Cancel
-
-
-
- Look in:
- Label to describe the folder for icon file selection dialog.
-
-
-
- Icon name:
-
-
-
- Icon type:
-
-
-
- Category title
-
-
-
- Set title for your category.
-
-
-
- Category description
-
-
-
- Set description for your category.
-
-
-
- Icon selection
-
-
-
- Load icon from file...
-
-
-
- Do not use icon
-
-
-
- Use default icon
-
-
-
- The description is ok.
-
+ FormDatabaseCleanupCleanup database
-
+ Remove all messages older than
-
+ day(s)
-
+
+
+
+ Shrink database file
-
+ Database information
-
+ Database file size
-
+ Database type
-
+ Progress
-
+ I am ready.
-
+ Database cleanup is running.
-
+ Database cleanup is completed.
-
+ Database cleanup failed.
-
+ Cleanup settings (all checked items are completely erased from database)
-
+ Remove all read messages (not those from recycle bin)
-
+ Remove all messages from recycle bin
-
+ Remove all starred messages (including those from recycle bin)
-
-
-
-
- FormFeedDetails
-
- Parent category
-
-
-
- Select parent item for your feed.
-
-
-
- Type
-
-
-
- Select type of the standard feed.
-
-
-
- Encoding
-
-
-
- Select encoding of the standard feed. If you are unsure about the encoding, then select "UTF-8" encoding.
-
-
-
- Auto-update
-
-
-
- Select the auto-update strategy for this feed. Default auto-update strategy means that the feed will be update in time intervals set in application settings.
-
-
-
- minutes
-
-
-
- Title
-
-
-
- Description
-
-
-
- URL
-
-
-
- Fetch it now
-
-
-
- Icon
-
-
-
- Select icon for your feed.
-
-
-
- Some feeds require authentication, including GMail feeds. BASIC, NTLM-2 and DIGEST-MD5 authentication schemes are supported.
-
-
-
- Requires authentication
-
-
-
- Username
-
-
-
- Password
-
-
-
- Fetch metadata
-
-
-
- Add new feed
-
-
-
- Edit existing feed
-
-
-
- Feed name is ok.
-
-
-
- Feed name is too short.
-
-
-
- Description is empty.
-
-
-
- The url is ok.
-
-
-
- The url does not meet standard pattern. Does your url start with "http://" or "https://" prefix.
-
-
-
- The url is empty.
-
-
-
- Username is ok or it is not needed.
-
-
-
- Username is empty.
-
-
-
- Password is ok or it is not needed.
-
-
-
- Password is empty.
-
-
-
- Select icon file for the feed
-
-
-
- Images (*.bmp *.jpg *.jpeg *.png *.svg *.tga)
-
-
-
- Select icon
-
-
-
- Cancel
-
-
-
- Look in:
- Label for field with icon file name textbox for selection dialog.
-
-
-
- Icon name:
-
-
-
- Icon type:
-
-
-
- Cannot add feed
-
-
-
- Feed was not added due to error.
-
-
-
- Cannot edit feed
-
-
-
- All metadata fetched successfully.
-
-
-
- Feed and icon metadata fetched.
-
-
-
- Result: %1.
-
-
-
- Feed or icon metatada not fetched.
-
-
-
- Error: %1.
-
-
-
- No metadata fetched.
-
-
-
- Feed title
-
-
-
- Set title for your feed.
-
-
-
- Feed description
-
-
-
- Set description for your feed.
-
-
-
- Full feed url including scheme
-
-
-
- Set url for your feed.
-
-
-
- Set username to access the feed.
-
-
-
- Set password to access the feed.
-
-
-
- Icon selection
-
-
-
- Load icon from file...
-
-
-
- Do not use icon
-
-
-
- Use default icon
-
-
-
- No metadata fetched so far.
-
-
-
- Auto-update using global interval
-
-
-
- Auto-update every
-
-
-
- Do not auto-update at all
-
-
-
- The description is ok.
-
-
-
- Feed was not edited due to error.
-
-
-
- Icon fetched successfully.
-
-
-
- Icon metadata fetched.
-
-
-
- Icon metatada not fetched.
-
-
-
- No icon fetched.
-
-
-
- Fetch icon from feed
-
-
-
-
- FormImportExport
-
- &Select file
-
-
-
- Operation results
-
-
-
- No file is selected.
-
-
-
- No operation executed yet.
-
-
-
- Export feeds
-
-
-
- Destination file
-
-
-
- Source feeds && categories
-
-
-
- Source file
-
-
-
- Target feeds && categories
-
-
-
- Import feeds
-
-
-
- OPML 2.0 files (*.opml)
-
-
-
- Select file for feeds export
-
-
-
- File is selected.
-
-
-
- Select file for feeds import
-
-
-
- Cannot open source file.
-
-
-
- Feeds were loaded.
-
-
-
- Error, file is not well-formed. Select another file.
-
-
-
- Error occurred. File is not well-formed. Select another file.
-
-
-
- Feeds were exported successfully.
-
-
-
- Cannot write into destination file.
-
-
-
- Critical error occurred.
-
-
-
- &Check all items
-
-
-
- &Uncheck all items
-
+ FormMain&File
-
+ &Help
-
+ &View
-
+ &Tools
-
+ &Quit
-
+ &Settings
-
+ &Current tab
-
+ &Add tab
-
+ &Messages
-
+ &Web browser
-
+ Switch &importance of selected messages
-
+ Quit the application.
-
+ Display settings of the application.
-
+ Switch fullscreen mode.
-
+ Add new web browser tab.
-
+ Close current web browser tab.
-
+ No actions available
-
+ No actions are available right now.
-
-
-
- Fee&ds && categories
-
-
-
- Mark all messages (without message filters) from selected feeds as read.
-
-
-
- Mark all messages (without message filters) from selected feeds as unread.
-
-
-
- Displays all messages from selected feeds/categories in a new "newspaper mode" tab. Note that messages are not set as read automatically.
-
+ Hides main window if it is visible and shows it if it is hidden.
-
+ Hides or shows the list of feeds/categories.
-
+ Check if new update for the application is available for download.
-
+ &About application
-
+ Displays extra info about this application.
-
+ &Delete selected messages
-
-
-
- Deletes all messages from selected feeds.
-
-
-
- Marks all messages in all feeds read. This does not take message filters into account.
-
-
-
- Deletes all messages from all feeds.
-
-
-
- Update &all feeds
-
-
-
- Update &selected feeds
-
-
-
- &Edit selected feed/category
-
-
-
- &Delete selected feed/category
-
+ Settings
-
+ Hides or displays the main menu.
-
-
-
- Add &new feed/category
-
+ &Close all tabs except current one
-
+ &Close current tab
-
+ Mark &selected messages as &read
-
+ Mark &selected messages as &unread
-
-
-
- &Mark selected feeds as read
-
-
-
- &Mark selected feeds as unread
-
-
-
- &Clean selected feeds
-
+ Open selected source articles in &external browser
-
+ Open selected messages in &internal browser
-
+ Open selected source articles in &internal browser
-
-
-
- &Mark all feeds as &read
-
-
-
- View selected feeds in &newspaper mode
-
-
-
- &Clean all feeds
-
-
-
- Select &next feed/category
-
-
-
- Select &previous feed/category
-
+ Select &next message
-
+ Select &previous message
-
+ Check for &updates
-
+ Enable &JavaScript
-
+ Enable external &plugins
-
+ Auto-load &images
-
+ Show/hide
-
+ &Fullscreen
-
+ &Feed list
-
+ &Main menu
-
+ Switch visibility of main &window
-
+ Cannot open external browser
-
+ Cannot open external browser. Navigate to application website manually.
-
-
-
- New &feed
-
-
-
- Add new feed.
-
-
-
- New &category
-
-
-
- Add new category.
-
+ &Toolbars
-
+ Switch visibility of main toolbars.
-
+ &Feed/message list headers
-
-
-
- &Import feeds
-
-
-
- Imports feeds you want from selected file.
-
-
-
- &Export feeds
-
-
-
- Exports feeds you want to selected file.
-
+ Close all tabs except current one.
-
-
-
- &Recycle bin
-
+ Report a &bug (GitHub)...
-
+ Report a bug (BitBucket)...
-
+ &Donate via PayPal
-
+ Display &wiki
-
-
-
- &Empty recycle bin
-
-
-
- &Restore all messages
-
-
-
- Restore &selected messages
-
+ &Restart
-
+ &Restore database/settings
-
+ &Backup database/settings
-
+ Switch message list layout orientation
-
+ &Downloads
-
+ Send selected message via e-mail
-
+ &Cleanup database
-
+
- Show only unread feeds/categories
-
+ Add &new item
+
- &Fetch feed metadata
-
+ Update &all items
+
- &Expand/collapse selected feed/category
-
+ Update &selected items
+
+
+
+ &Edit selected item
+
+
+
+ &Delete selected item
+
+
+
+ &Mark selected items as read
+
+
+
+ Mark all messages (without message filters) from selected items as read.
+
+
+
+ &Mark selected items as unread
+
+
+
+ Mark all messages (without message filters) from selected items as unread.
+
+
+
+ &Clean selected items
+
+
+
+ Deletes all messages from selected items.
+
+
+
+ &Mark all items as &read
+
+
+
+ Marks all messages in all items read. This does not take message filters into account.
+
+
+
+ View selected items in &newspaper mode
+
+
+
+ Displays all messages from selected item in a new "newspaper mode" tab. Note that messages are not set as read automatically.
+
+
+
+ &Clean all items
+
+
+
+ Deletes all messages from all items.
+
+
+
+ Select &next item
+
+
+
+ Select &previous item
+
+
+
+ Show only unread items
+
+
+
+ &Expand/collapse selected item
+
+
+
+ &Add new service account
+
+
+
+ &Restore selected messages
+
+
+
+ No possible actions
+
+
+
+ Feeds && categories && accounts
+
+
+
+ &Recycle bin(s)
+
+
+
+ &Restore all recycle bins
+
+
+
+ &Empty all recycle bins
+
+
+
+ Select next &unread message
+
+
+
+ No recycle bin
+
+
+
+ Restore recycle bin
+
+
+
+ Empty recycle bin
+ FormRestoreDatabaseSettingsRestore database/settings
-
+ Operation results
-
+ Restore database
-
+ Restore settings
-
+ Restart
-
+ No operation executed yet.
-
+ Restoration was initiated. Restart to proceed.
-
+ You need to restart application for restoration process to finish.
-
+ Source directory
-
+ &Select directory
-
+ Database and/or settings were not copied to restoration directory successully.
-
+ Select source directory
-
+ Good source directory is specified.
-
+
@@ -1826,252 +1277,248 @@ Auto-update status: %5
GeneralGeneral settings section.
-
+ User interface
-
+ Icon theme
-
+ Settings
-
+ Keyboard shortcuts
-
+ LanguageLanguage settings section.
-
+ Proxy
-
+ Icons && skins
-
+ Tray icon
-
+ Start application hidden
-
+ TypeProxy server type.
-
+ Host
-
+ Hostname or IP of your proxy server
-
+ Port
-
+ Username
-
+ Your username for proxy server authentication
-
+ Password
-
+ Your password for proxy server authentication
-
+ Display password
-
+ Code
-
+ Version
-
+ Author
-
-
-
- Email
-
+ Socks5
-
+ Http
-
+ (not supported on this platform)
-
+ Tray area && notifications
-
+ Tabs
-
+ Close tabs with
-
+ Middle mouse button single-click
-
+ Open new tabs with left mouse button double-click on tab bar
-
+ Enable mouse gestures
-
+ Queue new tabs (with hyperlinks) after the active tab
-
+ no icon themeLabel for disabling icon theme.
-
+ Cannot save settings
-
+ Name
-
+ Icons
-
+ Skins
-
+ Active skin:
-
+ Selected skin:
-
+ Hide tab bar if just one tab is visible
-
+ Critical settings were changed
-
+ Feeds & messages
-
+ Some critical settings are not set. You must fix these settings in order confirm new settings.
-
+ Messages
-
+ Web browser executable
-
+ Executable parameters
-
+ Note that "%1" (without quotation marks) is placeholder for URL of selected message.
-
+ Select web browser executable
-
+ Executables (*.*)
-
+ Opera 12 or older
-
+ Executable file of web browser
-
+ Parameters to executable
-
+ some keyboard shortcuts are not unique
-
+ List of errors:
%1.
-
+ List of changes:
%1.
-
+ language changed
-
+ icon theme changed
-
+ skin changed
-
+ Use sample arguments for
-
+ Use in-memory database as the working database
-
+ Usage of in-memory working database has several advantages and pitfalls. Make sure that you are familiar with these before you turn this feature on. Advantages:
@@ -2085,292 +1532,292 @@ Disadvantages:
<li>application startup and shutdown can take little longer (max. 2 seconds).</li>
</ul>
Authors of this application are NOT responsible for lost data.
-
+ in-memory database switched
-
+ Internal web browser
-
+ External web browser
-
+ WARNING: Note that switching to another data storage type will NOT copy existing your data from currently active data storage to newly selected one.
-
+ Database driver
-
+ Hostname
-
+ Test setup
-
+ Right mouse button double-click
-
+ Auto-update all feeds every
-
+ minutes
-
+ Feed connection timeout
-
+ Connection timeout is time interval which is reserved for downloading new messages for the feed. If this time interval elapses, then download process is aborted.
-
+ ms
-
+ Update all feed on application startup
-
+ Data storage
-
+ Hostname of your MySQL server
-
+ Username to login with
-
+ Password for your username
-
+ data storage backend changed
-
+ Hostname is empty.
-
+ Hostname looks ok.
-
+ Username is empty.
-
+ Username looks ok.
-
+ Password is empty.
-
+ Password looks ok.
-
+ Toolbar button style
-
+ Hide main window when it is minimized
-
+ No connection test triggered so far.
-
+ Note that these settings are applied only on newly established connections.
-
+ Select browser
-
+ No proxy
-
+ System proxy
-
+ Icon only
-
+ Text only
-
+ Text beside icon
-
+ Text under icon
-
+ Follow OS style
-
+ Keep message selection in the middle of the message list viewport
-
+ You did not executed any connection test yet.
-
+ Launch %1 on operating system startup
-
+ Enable JavaScript
-
+ Enable external plugins based on NPAPI
-
+ Auto-load images
-
+ <html><head/><body><p>If unchecked, then default system-wide web browser is used.</p></body></html>
-
+ Feeds && categories
-
+ Message count format in feed list
-
+ Enter format for count of messages displayed next to each feed/category in feed list. Use "%all" and "%unread" strings which are placeholders for the actual count of all (or unread) messages.
-
+ custom external browser is not set correctly
-
+ Toolbars
-
+ Toolbar for feeds list
-
+ Toolbar for messages list
-
+ Select toolbar to edit
-
+ Some critical settings were changed and will be applied after the application gets restarted.
You have to restart manually.
-
+ Do you want to restart now?
-
+ Check for updates on application startup
-
+ Use custom date/time format (overrides format loaded from active localization)
-
+ Executables (*)File filter for external browser selection dialog.
----------
File filter for external e-mail selection dialog.
-
+ Remove all read messages from all feeds on application exit
-
+ When new message arrives from feed and duplicate exists, then its content is updated and new message is dropped.
-
+ Remove duplicate messages
-
+ Downloads
-
+ Target directory for downloaded files
-
+ Ask for each individual downloaded file
-
+ Target directory where all downloaded files are saved
-
+ &Browse
-
+ Select downloads target directory
-
+ &Show password
-
+ Web browser & e-mail & proxy
-
+ Remove junk Trolltech registry key (HKCU\Software\Trolltech) when application quits (Use at your own risk!)
-
+ Working database
-
+ Mouse gestures work with middle mouse button. Possible gestures are:
@@ -2378,416 +1825,943 @@ File filter for external e-mail selection dialog.
• next web page (drag mouse right),
• reload current web page (drag mouse up),
• open new web browser tab (drag mouse down).
-
+ Use custom external web browser
-
+ External e-mail client
-
+ Use custom external e-mail client
-
+ E-mail client executable
-
+ Executable file of e-mail client
-
+ Select client
-
+ Placeholders:
• %1 - title of selected message,
• %2 - body of selected message.
-
+ Save all downloaded files to
-
+ Select e-mail executable
-
+ Mozilla Thunderbird
-
+ Working database which you have full access to.
-
+ Working database is empty.
-
+ Working database is ok.
-
+ Notification position
-
+ (Tray icon is not available.)
-
+ Bottom-left corner
-
+ Top-left corner
-
+ Bottom-right corner
-
+ Top-right corner
-
+ Internal message browser fonts
-
+ Standard font
-
+ Note that speed of used MySQL server and latency of used connection medium HEAVILY influences the final performance of this application. Using slow database connections leads to bad performance when browsing feeds or messages.
-
+ Fancy && modern popup notifications (This uses OS native notifications via D-Bus if available.)
-
+
+
+
+ E-mail
+
+
+
+ Enable notifications
+
+
+
+
+ FormStandardCategoryDetails
+
+ Parent category
+
+
+
+ Select parent item for your category.
+
+
+
+ Title
+
+
+
+ Description
+
+
+
+ Icon
+
+
+
+ Select icon for your category.
+
+
+
+ Add new category
+
+
+
+ Edit existing category
+
+
+
+ Cannot add category
+
+
+
+ Category was not added due to error.
+
+
+
+ Cannot edit category
+
+
+
+ Category was not edited due to error.
+
+
+
+ Category name is ok.
+
+
+
+ Category name is too short.
+
+
+
+ Description is empty.
+
+
+
+ The description is ok.
+
+
+
+ Select icon file for the category
+
+
+
+ Images (*.bmp *.jpg *.jpeg *.png *.svg *.tga)
+
+
+
+ Select icon
+
+
+
+ Cancel
+
+
+
+ Look in:
+ Label to describe the folder for icon file selection dialog.
+
+
+
+ Icon name:
+
+
+
+ Icon type:
+
+
+
+ Category title
+
+
+
+ Set title for your category.
+
+
+
+ Category description
+
+
+
+ Set description for your category.
+
+
+
+ Icon selection
+
+
+
+ Load icon from file...
+
+
+
+ Do not use icon
+
+
+
+ Use default icon
+
+
+
+
+ FormStandardFeedDetails
+
+ Parent category
+
+
+
+ Select parent item for your feed.
+
+
+
+ Type
+
+
+
+ Select type of the standard feed.
+
+
+
+ Encoding
+
+
+
+ Select encoding of the standard feed. If you are unsure about the encoding, then select "UTF-8" encoding.
+
+
+
+ Auto-update
+
+
+
+ Select the auto-update strategy for this feed. Default auto-update strategy means that the feed will be update in time intervals set in application settings.
+
+
+
+ minutes
+
+
+
+ Title
+
+
+
+ Description
+
+
+
+ URL
+
+
+
+ Fetch it now
+
+
+
+ Icon
+
+
+
+ Select icon for your feed.
+
+
+
+ Some feeds require authentication, including GMail feeds. BASIC, NTLM-2 and DIGEST-MD5 authentication schemes are supported.
+
+
+
+ Requires authentication
+
+
+
+ Username
+
+
+
+ Password
+
+
+
+ Fetch metadata
+
+
+
+ Add new feed
+
+
+
+ Edit existing feed
+
+
+
+ Feed name is ok.
+
+
+
+ Feed name is too short.
+
+
+
+ Description is empty.
+
+
+
+ The description is ok.
+
+
+
+ The url is ok.
+
+
+
+ The url does not meet standard pattern. Does your url start with "http://" or "https://" prefix.
+
+
+
+ The url is empty.
+
+
+
+ Username is ok or it is not needed.
+
+
+
+ Username is empty.
+
+
+
+ Password is ok or it is not needed.
+
+
+
+ Password is empty.
+
+
+
+ Select icon file for the feed
+
+
+
+ Images (*.bmp *.jpg *.jpeg *.png *.svg *.tga)
+
+
+
+ Select icon
+
+
+
+ Cancel
+
+
+
+ Look in:
+ Label for field with icon file name textbox for selection dialog.
+
+
+
+ Icon name:
+
+
+
+ Icon type:
+
+
+
+ Cannot add feed
+
+
+
+ Feed was not added due to error.
+
+
+
+ Cannot edit feed
+
+
+
+ Feed was not edited due to error.
+
+
+
+ All metadata fetched successfully.
+
+
+
+ Feed and icon metadata fetched.
+
+
+
+ Result: %1.
+
+
+
+ Feed or icon metatada not fetched.
+
+
+
+ Error: %1.
+
+
+
+ No metadata fetched.
+
+
+
+ Icon fetched successfully.
+
+
+
+ Icon metadata fetched.
+
+
+
+ Icon metatada not fetched.
+
+
+
+ No icon fetched.
+
+
+
+ Feed title
+
+
+
+ Set title for your feed.
+
+
+
+ Feed description
+
+
+
+ Set description for your feed.
+
+
+
+ Full feed url including scheme
+
+
+
+ Set url for your feed.
+
+
+
+ Set username to access the feed.
+
+
+
+ Set password to access the feed.
+
+
+
+ Icon selection
+
+
+
+ Load icon from file...
+
+
+
+ Do not use icon
+
+
+
+ Use default icon
+
+
+
+ Fetch icon from feed
+
+
+
+ No metadata fetched so far.
+
+
+
+ Auto-update using global interval
+
+
+
+ Auto-update every
+
+
+
+ Do not auto-update at all
+
+
+
+
+ FormStandardImportExport
+
+ &Select file
+
+
+
+ &Check all items
+
+
+
+ &Uncheck all items
+
+
+
+ Operation results
+
+
+
+ No file is selected.
+
+
+
+ No operation executed yet.
+
+
+
+ Destination file
+
+
+
+ Source feeds && categories
+
+
+
+ Export feeds
+
+
+
+ Source file
+
+
+
+ Target feeds && categories
+
+
+
+ Import feeds
+
+
+
+ OPML 2.0 files (*.opml)
+
+
+
+ Select file for feeds export
+
+
+
+ File is selected.
+
+
+
+ Select file for feeds import
+
+
+
+ Cannot open source file.
+
+
+
+ Feeds were loaded.
+
+
+
+ Error, file is not well-formed. Select another file.
+
+
+
+ Error occurred. File is not well-formed. Select another file.
+
+
+
+ Feeds were exported successfully.
+
+
+
+ Cannot write into destination file.
+
+
+
+ Critical error occurred.
+ FormUpdateCurrent release
-
+ Available release
-
+ Changes
-
+ Status
-
+ unknownUnknown release.
-
+ List with updates was not
downloaded successfully.
-
+ New release available.
-
+ This is new version which can be
downloaded and installed.
-
+ Error: '%1'.
-
+ No new release available.
-
+ This release is not newer than
currently installed one.
-
+ Check for updates
-
+ Update
-
+ Download new installation files.
-
+ Checking for updates failed.
-
+ Download installation file for your OS.
-
+ Installation file is not available directly.
Go to application website to obtain it manually.
-
+ No new update available.
-
+ Cannot update application
-
+ Cannot navigate to installation file. Check new installation downloads manually on project website.
-
+ Download update
-
+ Downloaded %1% (update size is %2 kB).
-
+ Downloading update...
-
+ Downloaded successfully
-
+ Package was downloaded successfully.
-
+ Install update
-
+ Error occured
-
+ Error occured during downloading of the package.
-
+ Cannot launch external updater. Update application manually.
-
+ Go to application website
-
+ IOFactoryCannot open file '%1' for reading.
-
+ Cannot open file '%1' for writting.
-
+ LocationLineEditWebsite address goes here
-
+ MessagesModelId
-
+ Read
-
+ Deleted
-
+ Important
-
+ Feed
-
+ Title
-
+ Url
-
+ Author
-
+ Created on
-
+ Contents
-
+ Id of the message.
-
+ Is message read?
-
+ Is message deleted?
-
+ Is message important?
-
+ Id of feed which this message belongs to.
-
+ Title of the message.
-
+ Url of the message.
-
+ Author of the message.
-
+ Creation date of the message.
-
+ Contents of the message.
-
+ Permanently deleted
-
+ Is message permanently deleted from recycle bin?
-
+ Attachments
-
+ List of attachments.
-
+
+
+
+ Loading of messages from item '%s' failed.
+
+
+
+ Loading of messages failed, maybe messages could not be downloaded.
+ MessagesToolBarSearch messages
-
+ Message search box
-
+ Menu for highlighting messages
-
+ No extra highlighting
-
+ Highlight unread messages
-
+ Highlight important messages
-
+ Display all messages
-
+ Message highlighter
-
+ Toolbar spacer
-
+ MessagesViewContext menu for messages
-
+ Meesage without URL
-
+ Message '%s' does not contain URL.
-
+ Problem with starting external web browser
-
+ External web browser could not be started.
-
+ Problem with starting external e-mail client
-
+ External e-mail client could not be started.
-
+
@@ -2795,80 +2769,80 @@ Go to application website to obtain it manually.
protocol errorNetwork status.
-
+ host not foundNetwork status.
-
+ connection refusedNetwork status.
-
+ connection timed outNetwork status.
-
+ SSL handshake failedNetwork status.
-
+ proxy server connection refusedNetwork status.
-
+ temporary failureNetwork status.
-
+ authentication failedNetwork status.
-
+ proxy authentication requiredNetwork status.
-
+ proxy server not foundNetwork status.
-
+ uknown contentNetwork status.
-
+ content not foundNetwork status.
-
+ unknown errorNetwork status.
-
+ no errorsNetwork status.
-
+ access to content was denied
-
+ connection timed out or was cancelled
-
+
@@ -2886,89 +2860,230 @@ Go to application website to obtain it manually.
LANG_AUTHORName of translator - optional.
-
+ LANG_EMAILrotter.martinos@gmail.com
-
- Load initial feeds
-
-
-
- Do you want to load initial set of feeds?
-
- LANG_NAMEName of language, e.g. English.English (USA)
-
- You started %1 for the first time, now you can load initial set of feeds.
-
+
+
+
++ %n other feeds.
+
+
+
+
- Welcome to %1 %2.
-
+ Welcome to %1.
+
+Please, check NEW stuff included in this
+version by clicking this popup notification.
+
+
+
+ Welcome to %1.
+
+
+
+ Load initial set of feeds
+ RecycleBinRecycle bin
-
+ Recycle bin contains all deleted messages from all feeds.
-
+ Recycle bin
%1
-
+ %n deleted message(s).
-
+
+
+
+ ShortcutCatcherReset to original shortcut.
-
+ Clear current shortcut.
-
+ Click and hit new shortcut.
-
+
+
+
+
+ StandardCategory
+
+ %1 (category)%2%3
+ Tooltip for standard feed.
+
+
+
+
+This category does not contain any nested items.
+
+
+
+ %n unread message(s).
+ Tooltip for "unread" column of feed list.
+
+
+
+
+
+
+
+ StandardFeed
+
+ Metadata not fetched
+
+
+
+ Metadata was not fetched because: %1.
+
+
+
+ does not use auto-update
+ Describes feed auto-update status.
+
+
+
+ uses global settings
+ Describes feed auto-update status.
+
+
+
+ uses specific settings (%n minute(s) to next auto-update)
+ Describes feed auto-update status.
+
+
+
+
+
+
+ %1 (%2)%3
+
+Network status: %6
+Encoding: %4
+Auto-update status: %5
+ Tooltip for feed.
+
+
+
+ %n unread message(s).
+ Tooltip for "unread" column of feed list.
+
+
+
+
+
+
+
+ StandardServiceRoot
+
+ This is obligatory service account for standard RSS/RDF/ATOM feeds.
+
+
+
+ You started %1 for the first time, now you can load initial set of feeds.
+
+
+
+ Do you want to load initial set of feeds?
+
+
+
+ Error when loading initial feeds
+
+
+
+ This is service account for standard RSS/RDF/ATOM feeds.
+
+
+
+ %n unread message(s).
+ Tooltip for "unread" column of feed list.
+
+
+
+
+
+
+ Fetch metadata
+
+
+
+ Import successfull, but some feeds/categories were not imported due to error.
+
+
+
+ Import was completely successfull.
+
+
+
+ Add new category
+
+
+
+ Add new feed
+
+
+
+ Export feeds
+
+
+
+ Import feeds
+ StatusBarFullscreen mode
-
+ Switch application between fulscreen/normal states right from this status bar icon.
-
+ SystemFactoryNew version available
-
+ Click the bubble for more information.
-
+
+
+
+ anonymous
+
@@ -2976,315 +3091,338 @@ Go to application website to obtain it manually.
%1
Unread news: %2
-
+ TabBarClose this tab.
-
+ Close tab
-
+ TabWidgetFeeds
-
+ Browse your feeds and messages
-
+ Web browserWeb browser default tab title.
-
+ Displays main menu.
-
+ Main menu
-
+ Open new web browser tab.
-
+ Downloads
-
+ ToolBarEditorActivated actions
-
+ Available actions
-
+ Insert separator
-
+ Insert spacer
-
+ Separator
-
+ Toolbar spacer
-
+ Move action up
-
+ Move action down
-
+ Add selected action
-
+ Delete selected action
-
+ Delete all actions
-
+ TrayIconMenuClose opened modal dialogs first.
-
+
+
+
+
+ TtRssServiceRoot
+
+ This is service account TT-RSS (TinyTiny RSS) server.
+
+
+
+ %n unread message(s).
+ Tooltip for "unread" column of feed list.
+
+
+
+ WebBrowserNavigation panel
-
+ Back
-
+ Forward
-
+ Reload
-
+ Stop
-
+ Zoom
-
+ No titleWebbrowser tab title when no title is available.
-
+ Decrease zoom.
-
+ Reset zoom to default.
-
+ Increase zoom.
-
+ Written by
-
+ uknown author
-
+ Newspaper view
-
+ Go back.
-
+ Go forward.
-
+ Reload current web page.
-
+ Stop web page loading.
-
+
+
+
+ Cannot add feed
+
+
+
+ You cannot add this feed to %1 because standard RSS/ATOM account is not enabled. Enable it first.
+ WebViewReload web page
-
+ Copy link url
-
+ Copy image
-
+ Copy image url
-
+ Open link in new tab
-
+ Follow link
-
+ Open image in new tab
-
+ Web browser
-
+ Image
-
+ Hyperlink
-
+ Reload current web page.
-
+ Copy selection
-
+ Copies current selection into the clipboard.
-
+ Copy link url to clipboard.
-
+ Copy image to clipboard.
-
+ Copy image url to clipboard.
-
+ Open this hyperlink in new tab.
-
+ Open the hyperlink in this tab.
-
+ Open this image in this tab.
-
+ Open link in external browser
-
+ Open the hyperlink in external browser.
-
+ Print
-
+ Print current web page.
-
+ HTML web pages (*.html)
-
+ Select destination file for web page
-
+ Cannot save web page
-
+ Web page cannot be saved because destination file is not writtable.
-
+ Save target as...
-
+ Download content from the hyperlink.
-
+ Save page as...
-
+ Save image to disk.
-
+ Save image as...
-
+ source_page
-
+ Search "%1" via Google...
-
+
-
\ No newline at end of file
+
diff --git a/localization/rssguard-fr_FR.ts b/localization/rssguard-fr_FR.ts
index d82cc5f24..9d64d2a36 100644
--- a/localization/rssguard-fr_FR.ts
+++ b/localization/rssguard-fr_FR.ts
@@ -1,170 +1,172 @@
-
+
+
+AdBlockAddSubscriptionDialogAdd subscription
-
+ Another subscription
-
+ Entered title is okay.
-
+ Entered title is empty.
-
+ Entered url is okay.
-
+ Entered url is empty.
-
+ Title
-
+ TitreAddress
-
+ AdBlockCustomListCustom rules
-
+ AdBlockDialogAdblock settings
-
+ Enable Adblock
-
+ Note that Adblock may significantly slow this application down once you activate huge subscriptions. Too many rules is not good for performance. Also, make sure you restart application after you disable Adblock if you wish to have low memory footprint. Adblock is known to use much system memory.
Also note that some resources are cached by internal web browser. Thus, after changing some rules or subscriptions they will fully apply only for new application instances. Make sure you restart RSS Guard for best Adblock experience.
-
+ Options
-
+ Filter rules
-
+ Use only essential part of EasyList (for performance reasons)
-
+ Add rule
-
+ Remove rule
-
+ Add subscription
-
+ Remove subscription
-
+ Update subscriptions
-
+ Rules writing guide
-
+ AdBlockIconAdblock
-
+ Show Adblock &settings
-
+ Disable on %1
-
+ Disable only on this page
-
+ Blocked popup windows
-
+ %1 with (%2)
-
+ No content blocked
-
+ Blocked some content - click to edit rule
-
+ Adblock - up and running
-
+ Adblock - not running
-
+ AdBlockSubscriptionCannot load subscription!
-
+ AdBlockTreeWidgetPlease write your rule here
-
+ %1 (recently updated)
-
+ %1 (error: %2)
-
+ Add rule
-
+ Remove rule
-
+
@@ -175,76 +177,58 @@ Also note that some resources are cached by internal web browser. Thus, after ch
Output directory is not writable.
-
+ Settings file not copied to output directory successfully.
-
+ Database file not copied to output directory successfully.
-
+ Database restoration was not initiated. Make sure that output directory is writable.
-
+ Settings restoration was not initiated. Make sure that output directory is writable.
-
-
-
-
- Category
-
- %1 (category)%2%3
- Tooltip for standard feed.
-
-
-
-
-This category does not contain any nested items.
-
-
-
- %n unread message(s).
- Tooltip for "unread" column of feed list.
-
+ DatabaseCleanerShrinking database file...
-
+ Database file shrinked...
-
+ Removing read messages...
-
+ Read messages purged...
-
+ Recycle bin purged...
-
+ Removing old messages...
-
+ Purging recycle bin...
-
+ Old messages purged...
-
+
@@ -269,194 +253,166 @@ This category does not contain any nested items.
Selected database does not exist (yet).
-
+ MySQL/MariaDB (dedicated database)
-
+ SQLite (embedded database)
-
+ DiscoverFeedsButtonThis website does not contain any feeds.
-
+ Click me to add feeds from this website.
This website contains %n feed(s).
-
+
+
+
+ DownloadItemIco
-
+ Filename
-
+ Error opening output file: %1
-
+ &Try again
-
+ &Stop
-
+ &Open file
-
+ Select destination for downloaded file
-
+ Error: %1
-
+ Erreur : %1. {1?}Download directory couldn't be created
-
+ Error when saving file: %1
-
+ %1 of %2 (%3 per second) - %4
-
+ %1 of %2 - download completed
-
+ Open &directory
-
+ Cannot open file
-
+ Cannot open output file. Open it manually.
-
+ Cannot open directory
-
+ Cannot open output directory. Open it manually.
-
+ Download finished
-
+
- File '%1' is downloaded.
+ File '%1' is downloaded.
Click here to open parent directory.
-
+ URL: %1
-
+ Local file: %1
-
+ Selection of local file cancelled.
-
+ DownloadManagerClean up
-
+ %n minutes remaining
-
+
+
+
+ %n seconds remaining
-
+
+
+
+ bytes
-
+ kB
-
+ MB
-
+ GB
-
+ Downloading %n file(s)...
-
-
-
-
- Feed
-
- does not use auto-update
- Describes feed auto-update status.
-
-
-
- uses global settings
- Describes feed auto-update status.
-
-
-
- uses specific settings (%n minute(s) to next auto-update)
- Describes feed auto-update status.
-
-
-
- %1 (%2)%3
-
-Network status: %6
-Encoding: %4
-Auto-update status: %5
- Tooltip for feed.
-
-
-
- %n unread message(s).
- Tooltip for "unread" column of feed list.
-
-
-
- Metadata not fetched
-
-
-
- Metadata was not fetched because: %1
-
+
+
+
+
@@ -465,43 +421,17 @@ Auto-update status: %5
Toolbar for messagesBarre d'outils pour les messages
-
- Feed update started
- Text display in status bar when feed update is started.
- Mise à jour des flux démarrée
-
-
- Updated feed '%1'
- Text display in status bar when particular feed is updated.
- Flux mis à jour '%1'
- Toolbar for feedsBarre d'outils pour les flux
-
- Error when loading initial feeds
-
- Cannot cleanup database
-
+ Cannot cleanup database, because another critical action is running.
-
-
-
- Cannot update all items
-
-
-
- You cannot update all items because another another critical operation is ongoing.
-
-
-
- New messages downloaded
-
+
@@ -516,7 +446,7 @@ Auto-update status: %5
Category
-
+
@@ -539,44 +469,57 @@ Auto-update status: %5
Name of root item of feed list which can be seen in feed add/edit dialog.Racine
-
- Invalid tree data.
-
-
-
- Import successfull, but some feeds/categories were not imported due to error.
-
-
-
- Import was completely successfull.
-
- Starting auto-update of some feeds
-
+ I will auto-update %n feed(s).
-
+
+
+
+
+
+
+ Cannot update all items
+
+
+
+ You cannot update all items because another another critical operation is ongoing.
+
+
+
+ Feed update started
+ Text display in status bar when feed update is started.
+ Mise à jour des flux démarrée
+
+
+ Updated feed '%1'
+ Text display in status bar when particular feed is updated.
+ Flux mis à jour '%1'
+
+
+ New messages downloaded
+
+
+
+ You can't transfer dragged item into different account, this is not supported.
+
+
+
+ Cannot perform drag & drop operation
+ FeedsToolBarToolbar spacer
-
+ FeedsView
-
- Cannot add standard category
- Impossible d'ajouter une catégorie standard
-
-
- Cannot add standard feed
- Impossible d'ajouter un flux standard
- Cannot edit itemImpossible d'éditer l'article
@@ -585,65 +528,54 @@ Auto-update status: %5
Cannot delete itemImpossible de supprimer l'article
-
- You are about to delete selected feed or category.
-
-
-
- Deletion of item failed.
-
-
-
- Selected item was not deleted due to error.
-
-
-
- Do you really want to delete selected item?
-
-
-
- Permanently delete messages
-
-
-
- You are about to permanenty delete all messages from your recycle bin.
-
-
-
- Do you really want to empty your recycle bin?
-
- Context menu for empty space
-
-
-
- Context menu for recycle bin
-
-
-
- You cannot add new standard category now because another critical operation is ongoing.
-
-
-
- You cannot add new standard feed now because another critical operation is ongoing.
-
+ Selected item cannot be edited because another critical operation is ongoing.
-
+ Selected item cannot be deleted because another critical operation is ongoing.
-
-
-
- Delete feed/category
-
+ Context menu for categories
-
+
+
+
+ Selected item cannot be edited, this is not (yet?) supported.
+
+
+
+ Deleting "%1"
+
+
+
+ You are about to completely delete item "%1".
+
+
+
+ Are you sure?
+
+
+
+ Cannot delete "%1"
+
+
+
+ This item cannot be deleted because something critically failed. Submit bug report.
+
+
+
+ This item cannot be deleted, because it does not support it
+or this functionality is not implemented yet.
+
+
+
+ Context menu for other items
+
@@ -692,10 +624,6 @@ Auto-update status: %5
<b>%8</b><br><b>Version:</b> %1 (build on %2 with CMake %3)<br><b>Revision:</b> %4<br><b>Build date:</b> %5<br><b>Qt:</b> %6 (compiled against %7)<br><b>%8</b><br><b>Version :</b> %1 (construit sur %2 avec CMake %3)<br><b>Révision :</b> %4<br><b>Date de création :</b> %5<br><b>Qt:</b> %6 (compilé avec %7)<br>
-
- <body>%5 is a (very) tiny feed reader.<br><br>This software is distributed under the terms of GNU General Public License, version 3.<br><br>Contacts:<ul><li><a href="mailto://%1">%1</a> ~email</li><li><a href="%2">%2</a> ~website</li></ul>You can obtain source code for %5 from its website.<br><br><br>Copyright (C) 2011-%3 %4</body>
- <body>%5 est un lecteur de flux (très) petit.<br><br>Ce logiciel est distribué sous les termes de la licence GNU General Public License, version 3.<br><br>Contacts : <ul><li><a href="mailto://%1">%1</a> ~email</li><li><a href="%2">%2</a> ~site internet</li></ul>Vous pouvez obtenir le code source de %5 depuis le site internet.<br><br><br>Copyright (C) 2011-%3 %4</body>
- About %1About RSS Guard dialog title.
@@ -703,46 +631,89 @@ Auto-update status: %5
Settings type
-
+ Settings file
-
+ Database root path
-
+ FULLY portable
-
+ PARTIALLY portable
-
+ Resources
-
+
+
+
+ <body>%5 is a (very) tiny feed reader.<br><br>This software is distributed under the terms of GNU General Public License, version 3.<br><br>Contacts:<ul><li><a href="mailto://%1">%1</a> ~e-mail</li><li><a href="%2">%2</a> ~website</li></ul>You can obtain source code for %5 from its website.<br><br><br>Copyright (C) 2011-%3 %4</body>
+
+
+
+
+ FormAddAccount
+
+ Add new account
+
+
+
+ Details
+
+
+
+ Name
+ Nom
+
+
+ Version
+ Version
+
+
+ Author
+ Auteur
+
+
+ Description
+ Description
+
+
+ Cannot add account
+
+
+
+ Some critical error occurred, report this to developers.
+
+
+
+ This account can be added only once.
+ FormBackupDatabaseSettingsBackup database/settings
-
+ Backup properties
-
+ Items to backup
-
+ Database
-
+ Settings
@@ -750,633 +721,125 @@ Auto-update status: %5
Backup name
-
+ Operation results
-
+ Common name for backup files
-
+ No operation executed yet.
-
+ Backup was created successfully.
-
+ Backup name cannot be empty.
-
+ Backup name looks okay.
-
+ Backup failed.
-
+ Output directory
-
+ &Select directory
-
+ Backup was created successfully and stored in target directory.
-
+ Select destination directory
-
+ Good destination directory is specified.
-
-
-
-
- FormCategoryDetails
-
- Parent category
- Catégorie parente
-
-
- Select parent item for your category.
- Sélectionner l'article parent pour votre catégorie.
-
-
- Title
- Titre
-
-
- Description
- Description
-
-
- Icon
- Icône
-
-
- Select icon for your category.
- Sélectionner un icône pour votre catégorie
-
-
- Add new category
- Ajouter une nouvelle catégorie
-
-
- Edit existing category
-
-
-
- Cannot add category
- Impossible d'ajouter une catégorie
-
-
- Category was not added due to error.
- La catégorie n'a pas été ajoutée dû à une erreur
-
-
- Cannot edit category
- Impossible d'éditer la catégori
-
-
- Category was not edited due to error.
- La catégorie n'a pas été éditée dû à une erreur.
-
-
- Category name is ok.
- Le nom de la catégorie est correct.
-
-
- Category name is too short.
- Le nom de la catégorie est trop court.
-
-
- Description is empty.
- La description est vide.
-
-
- Select icon file for the category
- Sélectionner un icône pour la catégorie
-
-
- Images (*.bmp *.jpg *.jpeg *.png *.svg *.tga)
- Images (*.bmp *.jpg *.jpeg *.png *.svg *.tga)
-
-
- Select icon
- Sélectionner l'icône
-
-
- Cancel
- Annuler
-
-
- Look in:
- Label to describe the folder for icon file selection dialog.
- Rechercher dans :
-
-
- Icon name:
- Nom de l'icône :
-
-
- Icon type:
- Type d'icône :
-
-
- Category title
- Titre de la catégorie
-
-
- Set title for your category.
- Définir un titre pour votre catégorie
-
-
- Category description
- Description de la catégorie
-
-
- Set description for your category.
- Définir une description pour votre catégorie.
-
-
- Icon selection
- Sélection de l'icône
-
-
- Load icon from file...
- Charger l'icône depuis un fichier...
-
-
- Do not use icon
- Ne pas utiliser les icônes
-
-
- Use default icon
- Utiliser les icônes par défaut
-
-
- The description is ok.
-
+ FormDatabaseCleanupCleanup database
-
+ Remove all messages older than
-
+ day(s)
-
+
+
+
+ Shrink database file
-
+ Database information
-
+ Database file size
-
+ Database type
-
+ Progress
-
+ I am ready.
-
+ Database cleanup is running.
-
+ Database cleanup is completed.
-
+ Database cleanup failed.
-
+ Cleanup settings (all checked items are completely erased from database)
-
+ Remove all read messages (not those from recycle bin)
-
+ Remove all messages from recycle bin
-
+ Remove all starred messages (including those from recycle bin)
-
-
-
-
- FormFeedDetails
-
- Parent category
- Catégorie parente
-
-
- Select parent item for your feed.
- Sélectionner l'article parent pour votre flux.
-
-
- Type
- Type
-
-
- Select type of the standard feed.
- Sélectionner un type pour le flux standard.
-
-
- Encoding
- Encodage
-
-
- Select encoding of the standard feed. If you are unsure about the encoding, then select "UTF-8" encoding.
- Sélectionner un encodage pour le flux standard. Si vous n'êtes pas sûr à propos de l'encodage, sélectionner alors l'encodage "UTF-8".
-
-
- Auto-update
- Mise à jour automatique
-
-
- Select the auto-update strategy for this feed. Default auto-update strategy means that the feed will be update in time intervals set in application settings.
- Sélectionner la stratégie des mises à jour automatique pour ce flux. Par défaut, cette stratégie signifie que le flux sera mis à jour par intervalle de temps défini dans les paramètres de l'application.
-
-
- minutes
- minutes
-
-
- Title
- Titre
-
-
- Description
- Description
-
-
- URL
- URL
-
-
- Fetch it now
- Le chercher maintenant
-
-
- Icon
- Icône
-
-
- Select icon for your feed.
- Sélectionner un icône pour votre flux.
-
-
- Some feeds require authentication, including GMail feeds. BASIC, NTLM-2 and DIGEST-MD5 authentication schemes are supported.
- Certain flux requière une authentification, incluant les flux GMail. Les schémas d'authentification BASIC, NTLM-2 et DIGEST-MD5 sont supportés.
-
-
- Requires authentication
- Authentification requise
-
-
- Username
- Nom d'utilisateur
-
-
- Password
- Mot de passe
-
-
- Fetch metadata
- Chercher les métadonnées
-
-
- Add new feed
- Ajouter un nouveau flux
-
-
- Edit existing feed
-
-
-
- Feed name is ok.
- Le nom du flux est correct.
-
-
- Feed name is too short.
- Le nom du flux est trop court.
-
-
- Description is empty.
- La description est vide.
-
-
- The url is ok.
- L'URL est correct.
-
-
- The url does not meet standard pattern. Does your url start with "http://" or "https://" prefix.
- L'URL ne respecte pas le pattern standard. Votre URL doit commencer avec les préfixe "http://" ou "https://".
-
-
- The url is empty.
- L'URL est vide.
-
-
- Username is ok or it is not needed.
- Le nom d'utilisateur est correct ou non nécessaire.
-
-
- Username is empty.
- Le nom d'utilisateur est vide.
-
-
- Password is ok or it is not needed.
- Le mot de passe est correct ou non nécessaire.
-
-
- Password is empty.
- Le mot de passe est vide.
-
-
- Select icon file for the feed
- Sélectionner un icône pour le flux
-
-
- Images (*.bmp *.jpg *.jpeg *.png *.svg *.tga)
- Images (*.bmp *.jpg *.jpeg *.png *.svg *.tga)
-
-
- Select icon
- Sélectionner l'icône
-
-
- Cancel
- Annuler
-
-
- Look in:
- Label for field with icon file name textbox for selection dialog.
- Rechercher dans :
-
-
- Icon name:
- Nom de l'icône :
-
-
- Icon type:
- Type d'icône :
-
-
- Cannot add feed
- Impossible d'ajouter le flux
-
-
- Feed was not added due to error.
- Le flux n'a pas été ajouté dû à une erreur.
-
-
- Cannot edit feed
- Impossible d'éditer le flux
-
-
- All metadata fetched successfully.
- Tout les méta-datas ont été extraites avec succès.
-
-
- Feed and icon metadata fetched.
- Flux et icône extraits.
-
-
- Result: %1.
- Résultat : %1.
-
-
- Feed or icon metatada not fetched.
- Flux ou icône non extrait.
-
-
- Error: %1.
- Erreur : %1.
-
-
- No metadata fetched.
- Aucune méta-donnée extraite.
-
-
- Feed title
- Titre du flux
-
-
- Set title for your feed.
- Définir un titre pour votre flux.
-
-
- Feed description
- Description du flux
-
-
- Set description for your feed.
- Définir une description pour votre flux.
-
-
- Full feed url including scheme
- URL du flux complet incluant le préfixe
-
-
- Set url for your feed.
- Définir l'URL pour votre flux.
-
-
- Set username to access the feed.
- Définir le nom d'utilisateur pour accéder au flux.
-
-
- Set password to access the feed.
- Définir le mot de passe pour accéder au flux.
-
-
- Icon selection
- Sélection de l'icône
-
-
- Load icon from file...
- Charger l'icône depuis un fichier...
-
-
- Do not use icon
- Ne pas utiliser les icônes
-
-
- Use default icon
- Utiliser les icônes par défaut
-
-
- No metadata fetched so far.
- Pas de métadonnées trouvé aussi loin.
-
-
- Auto-update using global interval
- Mise à jour automatique utilisant l'intervalle global
-
-
- Auto-update every
- Tout mettre à jour
-
-
- Do not auto-update at all
- Ne pas mettre tout à jour automatiquement
-
-
- The description is ok.
-
-
-
- Feed was not edited due to error.
- Le flux n'a pas été édité dû à une erreur.
-
-
- Icon fetched successfully.
-
-
-
- Icon metadata fetched.
-
-
-
- Icon metatada not fetched.
-
-
-
- No icon fetched.
-
-
-
- Fetch icon from feed
-
-
-
-
- FormImportExport
-
- &Select file
-
-
-
- Operation results
-
-
-
- No file is selected.
-
-
-
- No operation executed yet.
-
-
-
- Export feeds
-
-
-
- Destination file
-
-
-
- Source feeds && categories
-
-
-
- Source file
- Fichier source
-
-
- Target feeds && categories
-
-
-
- Import feeds
- Importer des flux
-
-
- OPML 2.0 files (*.opml)
- Fichier OPML 2.0 (*.opml)
-
-
- Select file for feeds export
-
-
-
- File is selected.
- Le fichier est sélectionné
-
-
- Select file for feeds import
-
-
-
- Cannot open source file.
-
-
-
- Feeds were loaded.
-
-
-
- Error, file is not well-formed. Select another file.
-
-
-
- Error occurred. File is not well-formed. Select another file.
-
-
-
- Feeds were exported successfully.
-
-
-
- Cannot write into destination file.
-
-
-
- Critical error occurred.
- Erreur critique rencontrée
-
-
- &Check all items
-
-
-
- &Uncheck all items
-
+
@@ -1453,22 +916,6 @@ Auto-update status: %5
No actions are available right now.Aucune actions disponibles pour le moment.
-
- Fee&ds && categories
- Flux && catégories
-
-
- Mark all messages (without message filters) from selected feeds as read.
- Marquer tout les messages (sans les filtres) de la sélection comme lus.
-
-
- Mark all messages (without message filters) from selected feeds as unread.
- Marquer tout les messages (sans les filtres) de la sélection comme non-lus.
-
-
- Displays all messages from selected feeds/categories in a new "newspaper mode" tab. Note that messages are not set as read automatically.
- Afficher tout les messages depuis les flux/catégories sélectionnées dans un nouvel onglet en mode "journal". Notez que les messages ne sont pas marqué lus automatiquement.
- Hides main window if it is visible and shows it if it is hidden.Cacher la fenêtre principale si il est visible et la montrer si il est cacher.
@@ -1493,34 +940,6 @@ Auto-update status: %5
&Delete selected messages&Supprimer les messages sélectionnés
-
- Deletes all messages from selected feeds.
- Supprimer tout les messages des flux sélectionnés.
-
-
- Marks all messages in all feeds read. This does not take message filters into account.
- Marquer tout les messages dans tout les flux lus. Cela ne tient pas en compte les filtres de messages.
-
-
- Deletes all messages from all feeds.
- Supprimer tout les messages de tout les flux.
-
-
- Update &all feeds
- Mettre à jour &tout les flux
-
-
- Update &selected feeds
- Mettre à jour les flux &sélectionnés
-
-
- &Edit selected feed/category
- &Éditer le flux/catégorie sélectionné
-
-
- &Delete selected feed/category
- &Supprimer le flux/catégorie sélectionné
- SettingsParamètres
@@ -1529,10 +948,6 @@ Auto-update status: %5
Hides or displays the main menu.Cacher ou montrer le menu principal.
-
- Add &new feed/category
- Ajout un &nouveau flux/catégorie
- &Close all tabs except current one&Fermer tout les onglets sauf le courant
@@ -1549,18 +964,6 @@ Auto-update status: %5
Mark &selected messages as &unreadMarquer les messages &sélectionner comme &non lu
-
- &Mark selected feeds as read
- &Marquer les flux sélectionnés comme lus
-
-
- &Mark selected feeds as unread
- &Marquer les flux sélectionnés comme non lus
-
-
- &Clean selected feeds
- &Nettoyer les flux sélectionnés
- Open selected source articles in &external browserOuvrir les sources de l'article sélectionnées dans le navigateur &externe
@@ -1573,26 +976,6 @@ Auto-update status: %5
Open selected source articles in &internal browserOuvrir les sources de l'article sélectionnées dans le navigateur &interne
-
- &Mark all feeds as &read
- &Marquer tout les flux comme &lus
-
-
- View selected feeds in &newspaper mode
- Voir les flux sélectionnés dans le mode &journal
-
-
- &Clean all feeds
- &Nettoyer tout les flux
-
-
- Select &next feed/category
- Sélectionner le flux/catégorie &suivant
-
-
- Select &previous feed/category
- Sélection le flux/catégorie &précédent
- Select &next messageSélectionner le message &suivant
@@ -1635,75 +1018,39 @@ Auto-update status: %5
Switch visibility of main &window
-
+ Cannot open external browser
-
+ Cannot open external browser. Navigate to application website manually.
-
-
-
- New &feed
- Nouveau &flux
-
-
- Add new feed.
- Ajouter un nouveau flux
-
-
- New &category
- Nouvelle &catégorie
-
-
- Add new category.
- Ajouter une nouvelle catégorie
+ &Toolbars
-
+ Switch visibility of main toolbars.
-
+ &Feed/message list headers
-
-
-
- &Import feeds
-
-
-
- Imports feeds you want from selected file.
-
-
-
- &Export feeds
-
-
-
- Exports feeds you want to selected file.
-
+ Close all tabs except current one.
-
-
-
- &Recycle bin
- &Corbeille
+ Report a &bug (GitHub)...
-
+ Report a bug (BitBucket)...
-
+ &Donate via PayPal
@@ -1711,19 +1058,7 @@ Auto-update status: %5
Display &wiki
-
-
-
- &Empty recycle bin
-
-
-
- &Restore all messages
-
-
-
- Restore &selected messages
-
+ &Restart
@@ -1731,94 +1066,210 @@ Auto-update status: %5
&Restore database/settings
-
+ &Backup database/settings
-
+ Switch message list layout orientation
-
+ &Downloads
-
+ Send selected message via e-mail
-
+ &Cleanup database
-
+
- Show only unread feeds/categories
-
+ Add &new item
+
- &Fetch feed metadata
-
+ Update &all items
+
- &Expand/collapse selected feed/category
-
+ Update &selected items
+
+
+
+ &Edit selected item
+
+
+
+ &Delete selected item
+
+
+
+ &Mark selected items as read
+
+
+
+ Mark all messages (without message filters) from selected items as read.
+
+
+
+ &Mark selected items as unread
+
+
+
+ Mark all messages (without message filters) from selected items as unread.
+
+
+
+ &Clean selected items
+
+
+
+ Deletes all messages from selected items.
+
+
+
+ &Mark all items as &read
+
+
+
+ Marks all messages in all items read. This does not take message filters into account.
+
+
+
+ View selected items in &newspaper mode
+
+
+
+ Displays all messages from selected item in a new "newspaper mode" tab. Note that messages are not set as read automatically.
+
+
+
+ &Clean all items
+
+
+
+ Deletes all messages from all items.
+
+
+
+ Select &next item
+
+
+
+ Select &previous item
+
+
+
+ Show only unread items
+
+
+
+ &Expand/collapse selected item
+
+
+
+ &Add new service account
+
+
+
+ &Restore selected messages
+
+
+
+ No possible actions
+
+
+
+ Feeds && categories && accounts
+
+
+
+ &Recycle bin(s)
+
+
+
+ &Restore all recycle bins
+
+
+
+ &Empty all recycle bins
+
+
+
+ Select next &unread message
+
+
+
+ No recycle bin
+
+
+
+ Restore recycle bin
+
+
+
+ Empty recycle bin
+ FormRestoreDatabaseSettingsRestore database/settings
-
+ Operation results
-
+ Restore database
-
+ Restore settings
-
+ Restart
-
+ No operation executed yet.
-
+ Restoration was initiated. Restart to proceed.
-
+ You need to restart application for restoration process to finish.
-
+ Source directory
-
+ &Select directory
-
+ Database and/or settings were not copied to restoration directory successully.
-
+ Select source directory
-
+ Good source directory is specified.
-
+
@@ -1914,10 +1365,6 @@ Auto-update status: %5
AuthorAuteur
-
- Email
- Email
- Socks5Socks5
@@ -2293,25 +1740,25 @@ Les auteurs de cette application NE sont PAS responsable de la perte de données
Toolbars
-
+ Toolbar for feeds list
-
+ Toolbar for messages list
-
+ Select toolbar to edit
-
+ Some critical settings were changed and will be applied after the application gets restarted.
You have to restart manually.
-
+ Do you want to restart now?
@@ -2319,70 +1766,70 @@ You have to restart manually.
Check for updates on application startup
-
+ Use custom date/time format (overrides format loaded from active localization)
-
+ Executables (*)File filter for external browser selection dialog.
----------
File filter for external e-mail selection dialog.
-
+ Remove all read messages from all feeds on application exit
-
+ When new message arrives from feed and duplicate exists, then its content is updated and new message is dropped.
-
+ Remove duplicate messages
-
+ Downloads
-
+ Target directory for downloaded files
-
+ Ask for each individual downloaded file
-
+ Target directory where all downloaded files are saved
-
+ &Browse
-
+ Select downloads target directory
-
+ &Show password
-
+ Web browser & e-mail & proxy
-
+ Remove junk Trolltech registry key (HKCU\Software\Trolltech) when application quits (Use at your own risk!)
-
+ Working database
-
+ Mouse gestures work with middle mouse button. Possible gestures are:
@@ -2390,101 +1837,620 @@ File filter for external e-mail selection dialog.
• next web page (drag mouse right),
• reload current web page (drag mouse up),
• open new web browser tab (drag mouse down).
-
+ Use custom external web browser
-
+ External e-mail client
-
+ Use custom external e-mail client
-
+ E-mail client executable
-
+ Executable file of e-mail client
-
+ Select client
-
+ Placeholders:
• %1 - title of selected message,
• %2 - body of selected message.
-
+ Save all downloaded files to
-
+ Select e-mail executable
-
+ Mozilla Thunderbird
-
+ Working database which you have full access to.
-
+ Working database is empty.
-
+ Working database is ok.
-
+ Notification position
-
+ (Tray icon is not available.)
-
+ Bottom-left corner
-
+ Top-left corner
-
+ Bottom-right corner
-
+ Top-right corner
-
+ Internal message browser fonts
-
+ Standard font
-
+ Note that speed of used MySQL server and latency of used connection medium HEAVILY influences the final performance of this application. Using slow database connections leads to bad performance when browsing feeds or messages.
-
+ Fancy && modern popup notifications (This uses OS native notifications via D-Bus if available.)
-
+
+
+
+ E-mail
+
+
+
+ Enable notifications
+
+
+
+
+ FormStandardCategoryDetails
+
+ Parent category
+ Catégorie parente
+
+
+ Select parent item for your category.
+ Sélectionner l'article parent pour votre catégorie.
+
+
+ Title
+ Titre
+
+
+ Description
+ Description
+
+
+ Icon
+ Icône
+
+
+ Select icon for your category.
+ Sélectionner un icône pour votre catégorie
+
+
+ Add new category
+ Ajouter une nouvelle catégorie
+
+
+ Edit existing category
+
+
+
+ Cannot add category
+ Impossible d'ajouter une catégorie
+
+
+ Category was not added due to error.
+ La catégorie n'a pas été ajoutée dû à une erreur
+
+
+ Cannot edit category
+ Impossible d'éditer la catégori
+
+
+ Category was not edited due to error.
+ La catégorie n'a pas été éditée dû à une erreur.
+
+
+ Category name is ok.
+ Le nom de la catégorie est correct.
+
+
+ Category name is too short.
+ Le nom de la catégorie est trop court.
+
+
+ Description is empty.
+ La description est vide.
+
+
+ The description is ok.
+
+
+
+ Select icon file for the category
+ Sélectionner un icône pour la catégorie
+
+
+ Images (*.bmp *.jpg *.jpeg *.png *.svg *.tga)
+ Images (*.bmp *.jpg *.jpeg *.png *.svg *.tga)
+
+
+ Select icon
+ Sélectionner l'icône
+
+
+ Cancel
+ Annuler
+
+
+ Look in:
+ Label to describe the folder for icon file selection dialog.
+ Rechercher dans :
+
+
+ Icon name:
+ Nom de l'icône :
+
+
+ Icon type:
+ Type d'icône :
+
+
+ Category title
+ Titre de la catégorie
+
+
+ Set title for your category.
+ Définir un titre pour votre catégorie
+
+
+ Category description
+ Description de la catégorie
+
+
+ Set description for your category.
+ Définir une description pour votre catégorie.
+
+
+ Icon selection
+ Sélection de l'icône
+
+
+ Load icon from file...
+ Charger l'icône depuis un fichier...
+
+
+ Do not use icon
+ Ne pas utiliser les icônes
+
+
+ Use default icon
+ Utiliser les icônes par défaut
+
+
+
+ FormStandardFeedDetails
+
+ Parent category
+ Catégorie parente
+
+
+ Select parent item for your feed.
+ Sélectionner l'article parent pour votre flux.
+
+
+ Type
+ Type
+
+
+ Select type of the standard feed.
+ Sélectionner un type pour le flux standard.
+
+
+ Encoding
+ Encodage
+
+
+ Select encoding of the standard feed. If you are unsure about the encoding, then select "UTF-8" encoding.
+ Sélectionner un encodage pour le flux standard. Si vous n'êtes pas sûr à propos de l'encodage, sélectionner alors l'encodage "UTF-8".
+
+
+ Auto-update
+ Mise à jour automatique
+
+
+ Select the auto-update strategy for this feed. Default auto-update strategy means that the feed will be update in time intervals set in application settings.
+ Sélectionner la stratégie des mises à jour automatique pour ce flux. Par défaut, cette stratégie signifie que le flux sera mis à jour par intervalle de temps défini dans les paramètres de l'application.
+
+
+ minutes
+ minutes
+
+
+ Title
+ Titre
+
+
+ Description
+ Description
+
+
+ URL
+ URL
+
+
+ Fetch it now
+ Le chercher maintenant
+
+
+ Icon
+ Icône
+
+
+ Select icon for your feed.
+ Sélectionner un icône pour votre flux.
+
+
+ Some feeds require authentication, including GMail feeds. BASIC, NTLM-2 and DIGEST-MD5 authentication schemes are supported.
+ Certain flux requière une authentification, incluant les flux GMail. Les schémas d'authentification BASIC, NTLM-2 et DIGEST-MD5 sont supportés.
+
+
+ Requires authentication
+ Authentification requise
+
+
+ Username
+ Nom d'utilisateur
+
+
+ Password
+ Mot de passe
+
+
+ Fetch metadata
+ Chercher les métadonnées
+
+
+ Add new feed
+ Ajouter un nouveau flux
+
+
+ Edit existing feed
+
+
+
+ Feed name is ok.
+ Le nom du flux est correct.
+
+
+ Feed name is too short.
+ Le nom du flux est trop court.
+
+
+ Description is empty.
+ La description est vide.
+
+
+ The description is ok.
+
+
+
+ The url is ok.
+ L'URL est correct.
+
+
+ The url does not meet standard pattern. Does your url start with "http://" or "https://" prefix.
+ L'URL ne respecte pas le pattern standard. Votre URL doit commencer avec les préfixe "http://" ou "https://".
+
+
+ The url is empty.
+ L'URL est vide.
+
+
+ Username is ok or it is not needed.
+ Le nom d'utilisateur est correct ou non nécessaire.
+
+
+ Username is empty.
+ Le nom d'utilisateur est vide.
+
+
+ Password is ok or it is not needed.
+ Le mot de passe est correct ou non nécessaire.
+
+
+ Password is empty.
+ Le mot de passe est vide.
+
+
+ Select icon file for the feed
+ Sélectionner un icône pour le flux
+
+
+ Images (*.bmp *.jpg *.jpeg *.png *.svg *.tga)
+ Images (*.bmp *.jpg *.jpeg *.png *.svg *.tga)
+
+
+ Select icon
+ Sélectionner l'icône
+
+
+ Cancel
+ Annuler
+
+
+ Look in:
+ Label for field with icon file name textbox for selection dialog.
+ Rechercher dans :
+
+
+ Icon name:
+ Nom de l'icône :
+
+
+ Icon type:
+ Type d'icône :
+
+
+ Cannot add feed
+ Impossible d'ajouter le flux
+
+
+ Feed was not added due to error.
+ Le flux n'a pas été ajouté dû à une erreur.
+
+
+ Cannot edit feed
+ Impossible d'éditer le flux
+
+
+ Feed was not edited due to error.
+ Le flux n'a pas été édité dû à une erreur.
+
+
+ All metadata fetched successfully.
+ Tout les méta-datas ont été extraites avec succès.
+
+
+ Feed and icon metadata fetched.
+ Flux et icône extraits.
+
+
+ Result: %1.
+ Résultat : %1.
+
+
+ Feed or icon metatada not fetched.
+ Flux ou icône non extrait.
+
+
+ Error: %1.
+ Erreur : %1.
+
+
+ No metadata fetched.
+ Aucune méta-donnée extraite.
+
+
+ Icon fetched successfully.
+
+
+
+ Icon metadata fetched.
+
+
+
+ Icon metatada not fetched.
+
+
+
+ No icon fetched.
+
+
+
+ Feed title
+ Titre du flux
+
+
+ Set title for your feed.
+ Définir un titre pour votre flux.
+
+
+ Feed description
+ Description du flux
+
+
+ Set description for your feed.
+ Définir une description pour votre flux.
+
+
+ Full feed url including scheme
+ URL du flux complet incluant le préfixe
+
+
+ Set url for your feed.
+ Définir l'URL pour votre flux.
+
+
+ Set username to access the feed.
+ Définir le nom d'utilisateur pour accéder au flux.
+
+
+ Set password to access the feed.
+ Définir le mot de passe pour accéder au flux.
+
+
+ Icon selection
+ Sélection de l'icône
+
+
+ Load icon from file...
+ Charger l'icône depuis un fichier...
+
+
+ Do not use icon
+ Ne pas utiliser les icônes
+
+
+ Use default icon
+ Utiliser les icônes par défaut
+
+
+ Fetch icon from feed
+
+
+
+ No metadata fetched so far.
+ Pas de métadonnées trouvé aussi loin.
+
+
+ Auto-update using global interval
+ Mise à jour automatique utilisant l'intervalle global
+
+
+ Auto-update every
+ Tout mettre à jour
+
+
+ Do not auto-update at all
+ Ne pas mettre tout à jour automatiquement
+
+
+
+ FormStandardImportExport
+
+ &Select file
+
+
+
+ &Check all items
+
+
+
+ &Uncheck all items
+
+
+
+ Operation results
+
+
+
+ No file is selected.
+
+
+
+ No operation executed yet.
+
+
+
+ Destination file
+
+
+
+ Source feeds && categories
+
+
+
+ Export feeds
+
+
+
+ Source file
+ Fichier source
+
+
+ Target feeds && categories
+
+
+
+ Import feeds
+ Importer des flux
+
+
+ OPML 2.0 files (*.opml)
+ Fichier OPML 2.0 (*.opml)
+
+
+ Select file for feeds export
+
+
+
+ File is selected.
+ Le fichier est sélectionné
+
+
+ Select file for feeds import
+
+
+
+ Cannot open source file.
+
+
+
+ Feeds were loaded.
+
+
+
+ Error, file is not well-formed. Select another file.
+
+
+
+ Error occurred. File is not well-formed. Select another file.
+
+
+
+ Feeds were exported successfully.
+
+
+
+ Cannot write into destination file.
+
+
+
+ Critical error occurred.
+ Erreur critique rencontrée
@@ -2580,23 +2546,23 @@ Aller sur le site de l'application pour les obtenir manuellement.
Download update
-
+ Downloaded %1% (update size is %2 kB).
-
+ Downloading update...
-
+ Downloaded successfully
-
+ Package was downloaded successfully.
-
+ Install update
@@ -2608,11 +2574,11 @@ Aller sur le site de l'application pour les obtenir manuellement.
Error occured during downloading of the package.
-
+ Cannot launch external updater. Update application manually.
-
+ Go to application website
@@ -2623,11 +2589,11 @@ Aller sur le site de l'application pour les obtenir manuellement.IOFactory
Cannot open file '%1' for reading.
-
+ Cannot open file '%1' for writting.
-
+
@@ -2721,46 +2687,54 @@ Aller sur le site de l'application pour les obtenir manuellement.
Permanently deleted
-
+ Is message permanently deleted from recycle bin?
-
+ Attachments
-
+ List of attachments.
-
+
+
+
+ Loading of messages from item '%s' failed.
+
+
+
+ Loading of messages failed, maybe messages could not be downloaded.
+ MessagesToolBarSearch messages
-
+ Message search box
-
+ Menu for highlighting messages
-
+ No extra highlighting
-
+ Highlight unread messages
-
+ Highlight important messages
-
+ Display all messages
@@ -2768,11 +2742,11 @@ Aller sur le site de l'application pour les obtenir manuellement.
Message highlighter
-
+ Toolbar spacer
-
+
@@ -2799,11 +2773,11 @@ Aller sur le site de l'application pour les obtenir manuellement.
Problem with starting external e-mail client
-
+ External e-mail client could not be started.
-
+
@@ -2880,11 +2854,11 @@ Aller sur le site de l'application pour les obtenir manuellement.
access to content was denied
-
+ connection timed out or was cancelled
-
+
@@ -2908,61 +2882,198 @@ Aller sur le site de l'application pour les obtenir manuellement.LANG_EMAIL
nicolaslegall34@gmail.com
-
- Load initial feeds
-
-
-
- Do you want to load initial set of feeds?
-
- LANG_NAMEName of language, e.g. English.French
-
- You started %1 for the first time, now you can load initial set of feeds.
-
+
+
+
++ %n other feeds.
+
+
+
+
- Welcome to %1 %2.
-
+ Welcome to %1.
+
+Please, check NEW stuff included in this
+version by clicking this popup notification.
+
+
+
+ Welcome to %1.
+
+
+
+ Load initial set of feeds
+ RecycleBinRecycle bin
-
+ Recycle bin contains all deleted messages from all feeds.
-
+ Recycle bin
%1
-
+ %n deleted message(s).
-
+
+
+
+ ShortcutCatcherReset to original shortcut.
-
+ Clear current shortcut.
-
+ Click and hit new shortcut.
-
+
+
+
+
+ StandardCategory
+
+ %1 (category)%2%3
+ Tooltip for standard feed.
+
+
+
+
+This category does not contain any nested items.
+
+
+
+ %n unread message(s).
+ Tooltip for "unread" column of feed list.
+
+
+
+
+
+
+
+ StandardFeed
+
+ Metadata not fetched
+
+
+
+ Metadata was not fetched because: %1.
+
+
+
+ does not use auto-update
+ Describes feed auto-update status.
+
+
+
+ uses global settings
+ Describes feed auto-update status.
+
+
+
+ uses specific settings (%n minute(s) to next auto-update)
+ Describes feed auto-update status.
+
+
+
+
+
+
+ %1 (%2)%3
+
+Network status: %6
+Encoding: %4
+Auto-update status: %5
+ Tooltip for feed.
+
+
+
+ %n unread message(s).
+ Tooltip for "unread" column of feed list.
+
+
+
+
+
+
+
+ StandardServiceRoot
+
+ This is obligatory service account for standard RSS/RDF/ATOM feeds.
+
+
+
+ You started %1 for the first time, now you can load initial set of feeds.
+
+
+
+ Do you want to load initial set of feeds?
+
+
+
+ Error when loading initial feeds
+
+
+
+ This is service account for standard RSS/RDF/ATOM feeds.
+
+
+
+ %n unread message(s).
+ Tooltip for "unread" column of feed list.
+
+
+
+
+
+
+ Fetch metadata
+ Chercher les métadonnées
+
+
+ Import successfull, but some feeds/categories were not imported due to error.
+
+
+
+ Import was completely successfull.
+
+
+
+ Add new category
+ Ajouter une nouvelle catégorie
+
+
+ Add new feed
+ Ajouter un nouveau flux
+
+
+ Export feeds
+
+
+
+ Import feeds
+ Importer des flux
@@ -2980,11 +3091,15 @@ Aller sur le site de l'application pour les obtenir manuellement.SystemFactory
New version available
-
+ Click the bubble for more information.
-
+
+
+
+ anonymous
+
@@ -2992,7 +3107,7 @@ Aller sur le site de l'application pour les obtenir manuellement.
%1
Unread news: %2
-
+
@@ -3023,7 +3138,7 @@ Unread news: %2
Displays main menu.
-
+ Main menu
@@ -3035,14 +3150,14 @@ Unread news: %2
Downloads
-
+ ToolBarEditorActivated actions
-
+ Available actions
@@ -3050,39 +3165,39 @@ Unread news: %2
Insert separator
-
+ Insert spacer
-
+ Separator
-
+ Toolbar spacer
-
+ Move action up
-
+ Move action down
-
+ Add selected action
-
+ Delete selected action
-
+ Delete all actions
-
+
@@ -3092,6 +3207,21 @@ Unread news: %2
Fermer en premier les fenêtres modales ouvertes.
+
+ TtRssServiceRoot
+
+ This is service account TT-RSS (TinyTiny RSS) server.
+
+
+
+ %n unread message(s).
+ Tooltip for "unread" column of feed list.
+
+
+
+
+
+WebBrowser
@@ -3163,6 +3293,14 @@ Unread news: %2
Stop web page loading.Arrêter le chargement de la page
+
+ Cannot add feed
+ Impossible d'ajouter le flux
+
+
+ You cannot add this feed to %1 because standard RSS/ATOM account is not enabled. Enable it first.
+
+ WebView
@@ -3244,63 +3382,63 @@ Unread news: %2
Open link in external browser
-
+ Open the hyperlink in external browser.
-
+ Print
-
+ Print current web page.
-
+ HTML web pages (*.html)
-
+ Select destination file for web page
-
+ Cannot save web page
-
+ Web page cannot be saved because destination file is not writtable.
-
+ Save target as...
-
+ Download content from the hyperlink.
-
+ Save page as...
-
+ Save image to disk.
-
+ Save image as...
-
+ source_page
-
+ Search "%1" via Google...
-
+
-
\ No newline at end of file
+
diff --git a/localization/rssguard-it_IT.ts b/localization/rssguard-it_IT.ts
index 4813b3b44..00592534c 100644
--- a/localization/rssguard-it_IT.ts
+++ b/localization/rssguard-it_IT.ts
@@ -1,4 +1,6 @@
-
+
+
+AdBlockAddSubscriptionDialog
@@ -15,15 +17,15 @@
Entered title is empty.
-
+ Entered url is okay.
-
+ Entered url is empty.
-
+ Title
@@ -55,7 +57,7 @@
Note that Adblock may significantly slow this application down once you activate huge subscriptions. Too many rules is not good for performance. Also, make sure you restart application after you disable Adblock if you wish to have low memory footprint. Adblock is known to use much system memory.
Also note that some resources are cached by internal web browser. Thus, after changing some rules or subscriptions they will fully apply only for new application instances. Make sure you restart RSS Guard for best Adblock experience.
-
+ Options
@@ -63,11 +65,11 @@ Also note that some resources are cached by internal web browser. Thus, after ch
Filter rules
-
+ Use only essential part of EasyList (for performance reasons)
-
+ Add rule
@@ -91,7 +93,7 @@ Also note that some resources are cached by internal web browser. Thus, after ch
Rules writing guide
-
+
@@ -102,11 +104,11 @@ Also note that some resources are cached by internal web browser. Thus, after ch
Show Adblock &settings
-
+ Disable on %1
-
+ Disable only on this page
@@ -114,11 +116,11 @@ Also note that some resources are cached by internal web browser. Thus, after ch
Blocked popup windows
-
+ %1 with (%2)
-
+ No content blocked
@@ -126,37 +128,37 @@ Also note that some resources are cached by internal web browser. Thus, after ch
Blocked some content - click to edit rule
-
+ Adblock - up and running
-
+ Adblock - not running
-
+ AdBlockSubscriptionCannot load subscription!
-
+ AdBlockTreeWidgetPlease write your rule here
-
+ %1 (recently updated)
-
+ %1 (error: %2)
-
+ Add rule
@@ -175,92 +177,74 @@ Also note that some resources are cached by internal web browser. Thus, after ch
Output directory is not writable.
-
+ Settings file not copied to output directory successfully.
-
+ Database file not copied to output directory successfully.
-
+ Database restoration was not initiated. Make sure that output directory is writable.
-
+ Settings restoration was not initiated. Make sure that output directory is writable.
-
-
-
-
- Category
-
- %1 (category)%2%3
- Tooltip for standard feed.
-
-
-
-
-This category does not contain any nested items.
-
-
-
- %n unread message(s).
- Tooltip for "unread" column of feed list.
-
+ DatabaseCleanerShrinking database file...
-
+ Database file shrinked...
-
+ Removing read messages...
-
+ Read messages purged...
-
+ Recycle bin purged...
-
+ Removing old messages...
-
+ Purging recycle bin...
-
+ Old messages purged...
-
+ DatabaseFactoryMySQL server works as expected.
-
+ No MySQL server is running in the target destination.
-
+ Access denied. Invalid username or password used.Access to MySQL server was denied.
-
+ Unknown error.
@@ -269,27 +253,30 @@ This category does not contain any nested items.
Selected database does not exist (yet).
-
+ MySQL/MariaDB (dedicated database)
-
+ SQLite (embedded database)
-
+ DiscoverFeedsButtonThis website does not contain any feeds.
-
+ Click me to add feeds from this website.
This website contains %n feed(s).
-
+
+
+
+
@@ -304,72 +291,72 @@ This website contains %n feed(s).
Error opening output file: %1
-
+ &Try again
-
+ &Stop
-
+ &Open file
-
+ Select destination for downloaded file
-
+ Error: %1
-
+ Errore: %1. {1?}Download directory couldn't be created
-
+ Error when saving file: %1
-
+ %1 of %2 (%3 per second) - %4
-
+ %1 of %2 - download completed
-
+ Open &directory
-
+ Cannot open file
-
+ Cannot open output file. Open it manually.
-
+ Cannot open directory
-
+ Cannot open output directory. Open it manually.
-
+ Download finished
-
+
- File '%1' is downloaded.
+ File '%1' is downloaded.
Click here to open parent directory.
-
+ URL: %1
@@ -377,11 +364,11 @@ Click here to open parent directory.
Local file: %1
-
+ Selection of local file cancelled.
-
+
@@ -392,11 +379,17 @@ Click here to open parent directory.
%n minutes remaining
-
+
+
+
+ %n seconds remaining
-
+
+
+
+ bytes
@@ -416,47 +409,10 @@ Click here to open parent directory.
Downloading %n file(s)...
-
-
-
-
- Feed
-
- does not use auto-update
- Describes feed auto-update status.
-
-
-
- uses global settings
- Describes feed auto-update status.
-
-
-
- uses specific settings (%n minute(s) to next auto-update)
- Describes feed auto-update status.
-
-
-
- %1 (%2)%3
-
-Network status: %6
-Encoding: %4
-Auto-update status: %5
- Tooltip for feed.
-
-
-
- %n unread message(s).
- Tooltip for "unread" column of feed list.
-
-
-
- Metadata not fetched
-
-
-
- Metadata was not fetched because: %1
-
+
+
+
+
@@ -465,58 +421,32 @@ Auto-update status: %5
Toolbar for messagesToolbar per messaggi
-
- Feed update started
- Text display in status bar when feed update is started.
- Aggiornamento feed iniziato
-
-
- Updated feed '%1'
- Text display in status bar when particular feed is updated.
- Feed '%1' aggiornato
- Toolbar for feedsToolbar per i feed
-
- Error when loading initial feeds
-
- Cannot cleanup database
-
+ Cannot cleanup database, because another critical action is running.
-
-
-
- Cannot update all items
-
-
-
- You cannot update all items because another another critical operation is ongoing.
-
-
-
- New messages downloaded
-
+ FeedsImportExportModel (category)
-
+ (feed)
-
+ Category
-
+
@@ -539,25 +469,46 @@ Auto-update status: %5
Name of root item of feed list which can be seen in feed add/edit dialog.Root
-
- Invalid tree data.
-
-
-
- Import successfull, but some feeds/categories were not imported due to error.
-
-
-
- Import was completely successfull.
-
- Starting auto-update of some feeds
-
+ I will auto-update %n feed(s).
-
+
+
+
+
+
+
+ Cannot update all items
+
+
+
+ You cannot update all items because another another critical operation is ongoing.
+
+
+
+ Feed update started
+ Text display in status bar when feed update is started.
+ Aggiornamento feed iniziato
+
+
+ Updated feed '%1'
+ Text display in status bar when particular feed is updated.
+ Feed '%1' aggiornato
+
+
+ New messages downloaded
+
+
+
+ You can't transfer dragged item into different account, this is not supported.
+
+
+
+ Cannot perform drag & drop operation
+
@@ -569,14 +520,6 @@ Auto-update status: %5
FeedsView
-
- Cannot add standard category
- Impossibile aggiungere categoria standard
-
-
- Cannot add standard feed
- Impossibile aggiungere feed standard
- Cannot edit itemImpossibile modificare elemento
@@ -585,65 +528,54 @@ Auto-update status: %5
Cannot delete itemImpossibile eliminare l'elemento
-
- You are about to delete selected feed or category.
-
-
-
- Deletion of item failed.
-
-
-
- Selected item was not deleted due to error.
-
-
-
- Do you really want to delete selected item?
-
-
-
- Permanently delete messages
-
-
-
- You are about to permanenty delete all messages from your recycle bin.
-
-
-
- Do you really want to empty your recycle bin?
-
- Context menu for empty space
-
-
-
- Context menu for recycle bin
-
-
-
- You cannot add new standard category now because another critical operation is ongoing.
-
-
-
- You cannot add new standard feed now because another critical operation is ongoing.
-
+ Selected item cannot be edited because another critical operation is ongoing.
-
+ Selected item cannot be deleted because another critical operation is ongoing.
-
-
-
- Delete feed/category
-
+ Context menu for categories
-
+
+
+
+ Selected item cannot be edited, this is not (yet?) supported.
+
+
+
+ Deleting "%1"
+
+
+
+ You are about to completely delete item "%1".
+
+
+
+ Are you sure?
+
+
+
+ Cannot delete "%1"
+
+
+
+ This item cannot be deleted because something critically failed. Submit bug report.
+
+
+
+ This item cannot be deleted, because it does not support it
+or this functionality is not implemented yet.
+
+
+
+ Context menu for other items
+
@@ -690,11 +622,7 @@ Auto-update status: %5
<b>%8</b><br><b>Version:</b> %1 (build on %2 with CMake %3)<br><b>Revision:</b> %4<br><b>Build date:</b> %5<br><b>Qt:</b> %6 (compiled against %7)<br>
-
-
-
- <body>%5 is a (very) tiny feed reader.<br><br>This software is distributed under the terms of GNU General Public License, version 3.<br><br>Contacts:<ul><li><a href="mailto://%1">%1</a> ~email</li><li><a href="%2">%2</a> ~website</li></ul>You can obtain source code for %5 from its website.<br><br><br>Copyright (C) 2011-%3 %4</body>
- <body>%5 è un (davvero) piccolo lettore di feed.<br><br>Questo software viene distribuito sotto i termini della GNU General Public License, version 3.<br><br>Contatti:<ul><li><a href="mailto://%1">%1</a> ~email</li><li><a href="%2">%2</a> ~website</li></ul>Puoi ottonere il codice sorgente di %5 dal suo sito web.<br><br><br>Copyright (C) 2011-%3 %4</body>
+ About %1
@@ -703,42 +631,85 @@ Auto-update status: %5
Settings type
-
+ Settings file
-
+ Database root path
-
+ FULLY portable
-
+ PARTIALLY portable
-
+ ResourcesRisorse
+
+ <body>%5 is a (very) tiny feed reader.<br><br>This software is distributed under the terms of GNU General Public License, version 3.<br><br>Contacts:<ul><li><a href="mailto://%1">%1</a> ~e-mail</li><li><a href="%2">%2</a> ~website</li></ul>You can obtain source code for %5 from its website.<br><br><br>Copyright (C) 2011-%3 %4</body>
+
+
+
+
+ FormAddAccount
+
+ Add new account
+
+
+
+ Details
+
+
+
+ Name
+ Nome
+
+
+ Version
+ Versione
+
+
+ Author
+ Autore
+
+
+ Description
+ Descrizione
+
+
+ Cannot add account
+
+
+
+ Some critical error occurred, report this to developers.
+
+
+
+ This account can be added only once.
+
+ FormBackupDatabaseSettingsBackup database/settings
-
+ Backup properties
-
+ Items to backup
-
+ Database
@@ -750,218 +721,93 @@ Auto-update status: %5
Backup name
-
+ Operation results
-
+ Common name for backup files
-
+ No operation executed yet.
-
+ Backup was created successfully.
-
+ Backup name cannot be empty.
-
+ Backup name looks okay.
-
+ Backup failed.
-
+ Output directory
-
+ &Select directory
-
+ Backup was created successfully and stored in target directory.
-
+ Select destination directory
-
+ Good destination directory is specified.
-
-
-
-
- FormCategoryDetails
-
- Parent category
-
-
-
- Select parent item for your category.
-
-
-
- Title
- Titolo
-
-
- Description
- Descrizione
-
-
- Icon
- Icona
-
-
- Select icon for your category.
- Seleziona icona per la tua categoria.
-
-
- Add new category
- Aggiungi nuova categoria
-
-
- Edit existing category
- Modifica categoria esistente
-
-
- Cannot add category
- Impossibile aggiungere categria
-
-
- Category was not added due to error.
-
-
-
- Cannot edit category
- Impossibile modificare categoria
-
-
- Category was not edited due to error.
-
-
-
- Category name is ok.
- Il nome della categoria è ok.
-
-
- Category name is too short.
- Il nome della categoria è troppo corto.
-
-
- Description is empty.
- La descrizione è vuota.
-
-
- Select icon file for the category
- Seleziona icona per la categoria
-
-
- Images (*.bmp *.jpg *.jpeg *.png *.svg *.tga)
- Immagini (*.bmp *.jpg *.jpeg *.png *.svg *.tga)
-
-
- Select icon
- Seleziona icona
-
-
- Cancel
- Annulla
-
-
- Look in:
- Label to describe the folder for icon file selection dialog.
-
-
-
- Icon name:
- Nome icona:
-
-
- Icon type:
- Tipo icona:
-
-
- Category title
- Titolo categoria
-
-
- Set title for your category.
- Imposta titolo per la tua categoria.
-
-
- Category description
- Descrizione categoria
-
-
- Set description for your category.
- Imposta descrizione per la tua categoria.
-
-
- Icon selection
- Selezione icona
-
-
- Load icon from file...
- Carica icona dal file...
-
-
- Do not use icon
- Non usare icona
-
-
- Use default icon
- Usa icona di default
-
-
- The description is ok.
-
+ FormDatabaseCleanupCleanup database
-
+ Remove all messages older than
-
+ day(s)
-
+
+
+
+ Shrink database file
-
+ Database information
-
+ Database file size
-
+ Database type
-
+ Progress
-
+ I am ready.
@@ -969,414 +815,31 @@ Auto-update status: %5
Database cleanup is running.
-
+ Database cleanup is completed.
-
+ Database cleanup failed.
-
+ Cleanup settings (all checked items are completely erased from database)
-
+ Remove all read messages (not those from recycle bin)
-
+ Remove all messages from recycle bin
-
+ Remove all starred messages (including those from recycle bin)
-
-
-
-
- FormFeedDetails
-
- Parent category
-
-
-
- Select parent item for your feed.
-
-
-
- Type
- Tipo
-
-
- Select type of the standard feed.
- Seleziona tipo di feed standard.
-
-
- Encoding
-
-
-
- Select encoding of the standard feed. If you are unsure about the encoding, then select "UTF-8" encoding.
-
-
-
- Auto-update
- Auto-aggiorna
-
-
- Select the auto-update strategy for this feed. Default auto-update strategy means that the feed will be update in time intervals set in application settings.
-
-
-
- minutes
- minuti
-
-
- Title
- Titolo
-
-
- Description
- Descrizione
-
-
- URL
- URL
-
-
- Fetch it now
- Recupera adesso
-
-
- Icon
- Icona
-
-
- Select icon for your feed.
- Seleziona icona per il tuo feed.
-
-
- Some feeds require authentication, including GMail feeds. BASIC, NTLM-2 and DIGEST-MD5 authentication schemes are supported.
-
-
-
- Requires authentication
- Richiede autenticazione
-
-
- Username
- Nome utente
-
-
- Password
- Password
-
-
- Fetch metadata
- Recupera metadata
-
-
- Add new feed
- Aggiungi nuovo feed
-
-
- Edit existing feed
- Modifica feed esistente
-
-
- Feed name is ok.
- Il nome feed è ok.
-
-
- Feed name is too short.
- Il nome feed è troppo corto.
-
-
- Description is empty.
- La descrizione è vuota.
-
-
- The url is ok.
- L'url è ok.
-
-
- The url does not meet standard pattern. Does your url start with "http://" or "https://" prefix.
-
-
-
- The url is empty.
- L'url è vuoto.
-
-
- Username is ok or it is not needed.
-
-
-
- Username is empty.
- Nome utente vuoto.
-
-
- Password is ok or it is not needed.
-
-
-
- Password is empty.
- La password è vuota.
-
-
- Select icon file for the feed
- Seleziona icona per il feed
-
-
- Images (*.bmp *.jpg *.jpeg *.png *.svg *.tga)
- Immagini (*.bmp *.jpg *.jpeg *.png *.svg *.tga)
-
-
- Select icon
- Seleziona icona
-
-
- Cancel
- Annulla
-
-
- Look in:
- Label for field with icon file name textbox for selection dialog.
-
-
-
- Icon name:
- Nome icona:
-
-
- Icon type:
- Tipo icona:
-
-
- Cannot add feed
- Impossibile aggiungere feed
-
-
- Feed was not added due to error.
- Feed non aggiunto a causa di un errore.
-
-
- Cannot edit feed
- Impossibile modificare il feed
-
-
- All metadata fetched successfully.
- Tutti i metadata recuperati con successo.
-
-
- Feed and icon metadata fetched.
- Feed e icona metadata recuperati.
-
-
- Result: %1.
- Risultato: %1.
-
-
- Feed or icon metatada not fetched.
- Feed o icona metadata recuperati.
-
-
- Error: %1.
- Errore: %1.
-
-
- No metadata fetched.
- Nessun metadata recuperato.
-
-
- Feed title
- Titolo feed
-
-
- Set title for your feed.
- Imposta titolo per il tuo feed.
-
-
- Feed description
- Descrizione feed
-
-
- Set description for your feed.
- Imposta descrizione del tuo feed.
-
-
- Full feed url including scheme
-
-
-
- Set url for your feed.
- Imposta url per il tuo feed.
-
-
- Set username to access the feed.
- Imposta nome utente per accedere al feed.
-
-
- Set password to access the feed.
- Imposta password per accedere al feed.
-
-
- Icon selection
- Selezione icona
-
-
- Load icon from file...
- Carica icona dal file...
-
-
- Do not use icon
- Non usare icona
-
-
- Use default icon
- Usa icona di default
-
-
- No metadata fetched so far.
-
-
-
- Auto-update using global interval
-
-
-
- Auto-update every
- Auto-aggiorna ogni
-
-
- Do not auto-update at all
-
-
-
- The description is ok.
-
-
-
- Feed was not edited due to error.
- Feed non modificato a coausa di un errore.
-
-
- Icon fetched successfully.
-
-
-
- Icon metadata fetched.
-
-
-
- Icon metatada not fetched.
-
-
-
- No icon fetched.
-
-
-
- Fetch icon from feed
-
-
-
-
- FormImportExport
-
- &Select file
-
-
-
- Operation results
-
-
-
- No file is selected.
-
-
-
- No operation executed yet.
-
-
-
- Export feeds
-
-
-
- Destination file
-
-
-
- Source feeds && categories
-
-
-
- Source file
-
-
-
- Target feeds && categories
-
-
-
- Import feeds
-
-
-
- OPML 2.0 files (*.opml)
-
-
-
- Select file for feeds export
-
-
-
- File is selected.
-
-
-
- Select file for feeds import
-
-
-
- Cannot open source file.
-
-
-
- Feeds were loaded.
-
-
-
- Error, file is not well-formed. Select another file.
-
-
-
- Error occurred. File is not well-formed. Select another file.
-
-
-
- Feeds were exported successfully.
-
-
-
- Cannot write into destination file.
-
-
-
- Critical error occurred.
-
-
-
- &Check all items
-
-
-
- &Uncheck all items
-
+
@@ -1423,7 +886,7 @@ Auto-update status: %5
Switch &importance of selected messages
-
+ Quit the application.
@@ -1453,22 +916,6 @@ Auto-update status: %5
No actions are available right now.Non è disponibile nessuna azione adesso.
-
- Fee&ds && categories
-
-
-
- Mark all messages (without message filters) from selected feeds as read.
-
-
-
- Mark all messages (without message filters) from selected feeds as unread.
-
-
-
- Displays all messages from selected feeds/categories in a new "newspaper mode" tab. Note that messages are not set as read automatically.
-
- Hides main window if it is visible and shows it if it is hidden.Nasconde la finestra principale se è visibile e la mostra se è nascosta.
@@ -1483,7 +930,7 @@ Auto-update status: %5
&About application
-
+ Displays extra info about this application.
@@ -1493,34 +940,6 @@ Auto-update status: %5
&Delete selected messages&Elimina i messaggi selezionati
-
- Deletes all messages from selected feeds.
- Elimina tutti i messaggi dai feed selezionati.
-
-
- Marks all messages in all feeds read. This does not take message filters into account.
-
-
-
- Deletes all messages from all feeds.
- Elimina tutti i messaggi da tutti i feed.
-
-
- Update &all feeds
-
-
-
- Update &selected feeds
-
-
-
- &Edit selected feed/category
-
-
-
- &Delete selected feed/category
-
- SettingsImpostazioni
@@ -1529,13 +948,9 @@ Auto-update status: %5
Hides or displays the main menu.Nascondi o visualizza il menu principale.
-
- Add &new feed/category
-
- &Close all tabs except current one
-
+ &Close current tab
@@ -1543,67 +958,35 @@ Auto-update status: %5
Mark &selected messages as &read
-
+ Mark &selected messages as &unread
-
-
-
- &Mark selected feeds as read
-
-
-
- &Mark selected feeds as unread
-
-
-
- &Clean selected feeds
-
+ Open selected source articles in &external browser
-
+ Open selected messages in &internal browser
-
+ Open selected source articles in &internal browser
-
-
-
- &Mark all feeds as &read
-
-
-
- View selected feeds in &newspaper mode
-
-
-
- &Clean all feeds
-
-
-
- Select &next feed/category
-
-
-
- Select &previous feed/category
-
+ Select &next message
-
+ Select &previous message
-
+ Check for &updates
-
+ Enable &JavaScript
@@ -1623,11 +1006,11 @@ Auto-update status: %5
&Fullscreen
-
+ &Feed list
-
+ &Main menu
@@ -1635,7 +1018,7 @@ Auto-update status: %5
Switch visibility of main &window
-
+ Cannot open external browser
@@ -1643,23 +1026,7 @@ Auto-update status: %5
Cannot open external browser. Navigate to application website manually.
-
-
-
- New &feed
- Nuovo &feed
-
-
- Add new feed.
- Aggiungi nuovo feed.
-
-
- New &category
- Nuova &categoria
-
-
- Add new category.
- Aggiungi nuova categoria.
+ &Toolbars
@@ -1671,154 +1038,238 @@ Auto-update status: %5
&Feed/message list headers
-
-
-
- &Import feeds
-
-
-
- Imports feeds you want from selected file.
-
-
-
- &Export feeds
-
-
-
- Exports feeds you want to selected file.
-
+ Close all tabs except current one.
-
-
-
- &Recycle bin
-
+ Report a &bug (GitHub)...
-
+ Report a bug (BitBucket)...
-
+ &Donate via PayPal
-
+ Display &wiki
-
-
-
- &Empty recycle bin
-
-
-
- &Restore all messages
-
-
-
- Restore &selected messages
-
+ &Restart
-
+ &Restore database/settings
-
+ &Backup database/settings
-
+ Switch message list layout orientation
-
+ &Downloads
-
+ Send selected message via e-mail
-
+ &Cleanup database
-
+
- Show only unread feeds/categories
-
+ Add &new item
+
- &Fetch feed metadata
-
+ Update &all items
+
- &Expand/collapse selected feed/category
-
+ Update &selected items
+
+
+
+ &Edit selected item
+
+
+
+ &Delete selected item
+
+
+
+ &Mark selected items as read
+
+
+
+ Mark all messages (without message filters) from selected items as read.
+
+
+
+ &Mark selected items as unread
+
+
+
+ Mark all messages (without message filters) from selected items as unread.
+
+
+
+ &Clean selected items
+
+
+
+ Deletes all messages from selected items.
+
+
+
+ &Mark all items as &read
+
+
+
+ Marks all messages in all items read. This does not take message filters into account.
+
+
+
+ View selected items in &newspaper mode
+
+
+
+ Displays all messages from selected item in a new "newspaper mode" tab. Note that messages are not set as read automatically.
+
+
+
+ &Clean all items
+
+
+
+ Deletes all messages from all items.
+
+
+
+ Select &next item
+
+
+
+ Select &previous item
+
+
+
+ Show only unread items
+
+
+
+ &Expand/collapse selected item
+
+
+
+ &Add new service account
+
+
+
+ &Restore selected messages
+
+
+
+ No possible actions
+
+
+
+ Feeds && categories && accounts
+
+
+
+ &Recycle bin(s)
+
+
+
+ &Restore all recycle bins
+
+
+
+ &Empty all recycle bins
+
+
+
+ Select next &unread message
+
+
+
+ No recycle bin
+
+
+
+ Restore recycle bin
+
+
+
+ Empty recycle bin
+ FormRestoreDatabaseSettingsRestore database/settings
-
+ Operation results
-
+ Restore database
-
+ Restore settings
-
+ Restart
-
+ No operation executed yet.
-
+ Restoration was initiated. Restart to proceed.
-
+ You need to restart application for restoration process to finish.
-
+ Source directory
-
+ &Select directory
-
+ Database and/or settings were not copied to restoration directory successully.
-
+ Select source directory
-
+ Good source directory is specified.
-
+
@@ -1914,10 +1365,6 @@ Auto-update status: %5
AuthorAutore
-
- Email
- Email
- Socks5Socks5
@@ -1932,7 +1379,7 @@ Auto-update status: %5
Tray area && notifications
-
+ Tabs
@@ -1944,11 +1391,11 @@ Auto-update status: %5
Middle mouse button single-click
-
+ Open new tabs with left mouse button double-click on tab bar
-
+ Enable mouse gestures
@@ -1956,7 +1403,7 @@ Auto-update status: %5
Queue new tabs (with hyperlinks) after the active tab
-
+ no icon theme
@@ -2001,7 +1448,7 @@ Auto-update status: %5
Some critical settings are not set. You must fix these settings in order confirm new settings.
-
+ Messages
@@ -2017,7 +1464,7 @@ Auto-update status: %5
Note that "%1" (without quotation marks) is placeholder for URL of selected message.
-
+ Select web browser executable
@@ -2073,7 +1520,7 @@ Auto-update status: %5
Use in-memory database as the working database
-
+ Usage of in-memory working database has several advantages and pitfalls. Make sure that you are familiar with these before you turn this feature on. Advantages:
@@ -2087,11 +1534,11 @@ Disadvantages:
<li>application startup and shutdown can take little longer (max. 2 seconds).</li>
</ul>
Authors of this application are NOT responsible for lost data.
-
+ in-memory database switched
-
+ Internal web browser
@@ -2103,7 +1550,7 @@ Authors of this application are NOT responsible for lost data.
WARNING: Note that switching to another data storage type will NOT copy existing your data from currently active data storage to newly selected one.
-
+ Database driver
@@ -2115,11 +1562,11 @@ Authors of this application are NOT responsible for lost data.
Test setup
-
+ Right mouse button double-click
-
+ Auto-update all feeds every
@@ -2135,7 +1582,7 @@ Authors of this application are NOT responsible for lost data.
Connection timeout is time interval which is reserved for downloading new messages for the feed. If this time interval elapses, then download process is aborted.
-
+ ms
@@ -2163,7 +1610,7 @@ Authors of this application are NOT responsible for lost data.
data storage backend changed
-
+ Hostname is empty.
@@ -2199,7 +1646,7 @@ Authors of this application are NOT responsible for lost data.
No connection test triggered so far.
-
+ Note that these settings are applied only on newly established connections.
@@ -2239,11 +1686,11 @@ Authors of this application are NOT responsible for lost data.
Keep message selection in the middle of the message list viewport
-
+ You did not executed any connection test yet.
-
+ Launch %1 on operating system startup
@@ -2263,7 +1710,7 @@ Authors of this application are NOT responsible for lost data.
<html><head/><body><p>If unchecked, then default system-wide web browser is used.</p></body></html>
-
+ Feeds && categories
@@ -2275,7 +1722,7 @@ Authors of this application are NOT responsible for lost data.
Enter format for count of messages displayed next to each feed/category in feed list. Use "%all" and "%unread" strings which are placeholders for the actual count of all (or unread) messages.
-
+ custom external browser is not set correctly
@@ -2301,7 +1748,7 @@ Authors of this application are NOT responsible for lost data.
Some critical settings were changed and will be applied after the application gets restarted.
You have to restart manually.
-
+ Do you want to restart now?
@@ -2309,70 +1756,70 @@ You have to restart manually.
Check for updates on application startup
-
+ Use custom date/time format (overrides format loaded from active localization)
-
+ Executables (*)File filter for external browser selection dialog.
----------
File filter for external e-mail selection dialog.
-
+ Remove all read messages from all feeds on application exit
-
+ When new message arrives from feed and duplicate exists, then its content is updated and new message is dropped.
-
+ Remove duplicate messages
-
+ Downloads
-
+ Target directory for downloaded files
-
+ Ask for each individual downloaded file
-
+ Target directory where all downloaded files are saved
-
+ &Browse
-
+ Select downloads target directory
-
+ &Show password
-
+ Web browser & e-mail & proxy
-
+ Remove junk Trolltech registry key (HKCU\Software\Trolltech) when application quits (Use at your own risk!)
-
+ Working database
-
+ Mouse gestures work with middle mouse button. Possible gestures are:
@@ -2380,101 +1827,620 @@ File filter for external e-mail selection dialog.
• next web page (drag mouse right),
• reload current web page (drag mouse up),
• open new web browser tab (drag mouse down).
-
+ Use custom external web browser
-
+ External e-mail client
-
+ Use custom external e-mail client
-
+ E-mail client executable
-
+ Executable file of e-mail client
-
+ Select client
-
+ Placeholders:
• %1 - title of selected message,
• %2 - body of selected message.
-
+ Save all downloaded files to
-
+ Select e-mail executable
-
+ Mozilla Thunderbird
-
+ Working database which you have full access to.
-
+ Working database is empty.
-
+ Working database is ok.
-
+ Notification position
-
+ (Tray icon is not available.)
-
+ Bottom-left corner
-
+ Top-left corner
-
+ Bottom-right corner
-
+ Top-right corner
-
+ Internal message browser fonts
-
+ Standard font
-
+ Note that speed of used MySQL server and latency of used connection medium HEAVILY influences the final performance of this application. Using slow database connections leads to bad performance when browsing feeds or messages.
-
+ Fancy && modern popup notifications (This uses OS native notifications via D-Bus if available.)
-
+
+
+
+ E-mail
+
+
+
+ Enable notifications
+
+
+
+
+ FormStandardCategoryDetails
+
+ Parent category
+
+
+
+ Select parent item for your category.
+
+
+
+ Title
+ Titolo
+
+
+ Description
+ Descrizione
+
+
+ Icon
+ Icona
+
+
+ Select icon for your category.
+ Seleziona icona per la tua categoria.
+
+
+ Add new category
+ Aggiungi nuova categoria
+
+
+ Edit existing category
+ Modifica categoria esistente
+
+
+ Cannot add category
+ Impossibile aggiungere categria
+
+
+ Category was not added due to error.
+
+
+
+ Cannot edit category
+ Impossibile modificare categoria
+
+
+ Category was not edited due to error.
+
+
+
+ Category name is ok.
+ Il nome della categoria è ok.
+
+
+ Category name is too short.
+ Il nome della categoria è troppo corto.
+
+
+ Description is empty.
+ La descrizione è vuota.
+
+
+ The description is ok.
+
+
+
+ Select icon file for the category
+ Seleziona icona per la categoria
+
+
+ Images (*.bmp *.jpg *.jpeg *.png *.svg *.tga)
+ Immagini (*.bmp *.jpg *.jpeg *.png *.svg *.tga)
+
+
+ Select icon
+ Seleziona icona
+
+
+ Cancel
+ Annulla
+
+
+ Look in:
+ Label to describe the folder for icon file selection dialog.
+
+
+
+ Icon name:
+ Nome icona:
+
+
+ Icon type:
+ Tipo icona:
+
+
+ Category title
+ Titolo categoria
+
+
+ Set title for your category.
+ Imposta titolo per la tua categoria.
+
+
+ Category description
+ Descrizione categoria
+
+
+ Set description for your category.
+ Imposta descrizione per la tua categoria.
+
+
+ Icon selection
+ Selezione icona
+
+
+ Load icon from file...
+ Carica icona dal file...
+
+
+ Do not use icon
+ Non usare icona
+
+
+ Use default icon
+ Usa icona di default
+
+
+
+ FormStandardFeedDetails
+
+ Parent category
+
+
+
+ Select parent item for your feed.
+
+
+
+ Type
+ Tipo
+
+
+ Select type of the standard feed.
+ Seleziona tipo di feed standard.
+
+
+ Encoding
+
+
+
+ Select encoding of the standard feed. If you are unsure about the encoding, then select "UTF-8" encoding.
+
+
+
+ Auto-update
+ Auto-aggiorna
+
+
+ Select the auto-update strategy for this feed. Default auto-update strategy means that the feed will be update in time intervals set in application settings.
+
+
+
+ minutes
+ minuti
+
+
+ Title
+ Titolo
+
+
+ Description
+ Descrizione
+
+
+ URL
+ URL
+
+
+ Fetch it now
+ Recupera adesso
+
+
+ Icon
+ Icona
+
+
+ Select icon for your feed.
+ Seleziona icona per il tuo feed.
+
+
+ Some feeds require authentication, including GMail feeds. BASIC, NTLM-2 and DIGEST-MD5 authentication schemes are supported.
+
+
+
+ Requires authentication
+ Richiede autenticazione
+
+
+ Username
+ Nome utente
+
+
+ Password
+ Password
+
+
+ Fetch metadata
+ Recupera metadata
+
+
+ Add new feed
+ Aggiungi nuovo feed
+
+
+ Edit existing feed
+ Modifica feed esistente
+
+
+ Feed name is ok.
+ Il nome feed è ok.
+
+
+ Feed name is too short.
+ Il nome feed è troppo corto.
+
+
+ Description is empty.
+ La descrizione è vuota.
+
+
+ The description is ok.
+
+
+
+ The url is ok.
+ L'url è ok.
+
+
+ The url does not meet standard pattern. Does your url start with "http://" or "https://" prefix.
+
+
+
+ The url is empty.
+ L'url è vuoto.
+
+
+ Username is ok or it is not needed.
+
+
+
+ Username is empty.
+ Nome utente vuoto.
+
+
+ Password is ok or it is not needed.
+
+
+
+ Password is empty.
+ La password è vuota.
+
+
+ Select icon file for the feed
+ Seleziona icona per il feed
+
+
+ Images (*.bmp *.jpg *.jpeg *.png *.svg *.tga)
+ Immagini (*.bmp *.jpg *.jpeg *.png *.svg *.tga)
+
+
+ Select icon
+ Seleziona icona
+
+
+ Cancel
+ Annulla
+
+
+ Look in:
+ Label for field with icon file name textbox for selection dialog.
+
+
+
+ Icon name:
+ Nome icona:
+
+
+ Icon type:
+ Tipo icona:
+
+
+ Cannot add feed
+ Impossibile aggiungere feed
+
+
+ Feed was not added due to error.
+ Feed non aggiunto a causa di un errore.
+
+
+ Cannot edit feed
+ Impossibile modificare il feed
+
+
+ Feed was not edited due to error.
+ Feed non modificato a coausa di un errore.
+
+
+ All metadata fetched successfully.
+ Tutti i metadata recuperati con successo.
+
+
+ Feed and icon metadata fetched.
+ Feed e icona metadata recuperati.
+
+
+ Result: %1.
+ Risultato: %1.
+
+
+ Feed or icon metatada not fetched.
+ Feed o icona metadata recuperati.
+
+
+ Error: %1.
+ Errore: %1.
+
+
+ No metadata fetched.
+ Nessun metadata recuperato.
+
+
+ Icon fetched successfully.
+
+
+
+ Icon metadata fetched.
+
+
+
+ Icon metatada not fetched.
+
+
+
+ No icon fetched.
+
+
+
+ Feed title
+ Titolo feed
+
+
+ Set title for your feed.
+ Imposta titolo per il tuo feed.
+
+
+ Feed description
+ Descrizione feed
+
+
+ Set description for your feed.
+ Imposta descrizione del tuo feed.
+
+
+ Full feed url including scheme
+
+
+
+ Set url for your feed.
+ Imposta url per il tuo feed.
+
+
+ Set username to access the feed.
+ Imposta nome utente per accedere al feed.
+
+
+ Set password to access the feed.
+ Imposta password per accedere al feed.
+
+
+ Icon selection
+ Selezione icona
+
+
+ Load icon from file...
+ Carica icona dal file...
+
+
+ Do not use icon
+ Non usare icona
+
+
+ Use default icon
+ Usa icona di default
+
+
+ Fetch icon from feed
+
+
+
+ No metadata fetched so far.
+
+
+
+ Auto-update using global interval
+
+
+
+ Auto-update every
+ Auto-aggiorna ogni
+
+
+ Do not auto-update at all
+
+
+
+
+ FormStandardImportExport
+
+ &Select file
+
+
+
+ &Check all items
+
+
+
+ &Uncheck all items
+
+
+
+ Operation results
+
+
+
+ No file is selected.
+
+
+
+ No operation executed yet.
+
+
+
+ Destination file
+
+
+
+ Source feeds && categories
+
+
+
+ Export feeds
+
+
+
+ Source file
+
+
+
+ Target feeds && categories
+
+
+
+ Import feeds
+
+
+
+ OPML 2.0 files (*.opml)
+
+
+
+ Select file for feeds export
+
+
+
+ File is selected.
+
+
+
+ Select file for feeds import
+
+
+
+ Cannot open source file.
+
+
+
+ Feeds were loaded.
+
+
+
+ Error, file is not well-formed. Select another file.
+
+
+
+ Error occurred. File is not well-formed. Select another file.
+
+
+
+ Feeds were exported successfully.
+
+
+
+ Cannot write into destination file.
+
+
+
+ Critical error occurred.
+
@@ -2553,7 +2519,7 @@ correntemente installato.
Installation file is not available directly.
Go to application website to obtain it manually.
-
+ No new update available.
@@ -2565,7 +2531,7 @@ Go to application website to obtain it manually.
Cannot navigate to installation file. Check new installation downloads manually on project website.
-
+ Download update
@@ -2573,7 +2539,7 @@ Go to application website to obtain it manually.
Downloaded %1% (update size is %2 kB).
-
+ Downloading update...
@@ -2593,30 +2559,30 @@ Go to application website to obtain it manually.
Error occured
-
+ Error occured during downloading of the package.
-
+ Cannot launch external updater. Update application manually.
-
+ Go to application website
-
+ IOFactoryCannot open file '%1' for reading.
-
+ Cannot open file '%1' for writting.
-
+
@@ -2710,19 +2676,27 @@ Go to application website to obtain it manually.
Permanently deleted
-
+ Is message permanently deleted from recycle bin?
-
+ Attachments
-
+ List of attachments.
-
+
+
+
+ Loading of messages from item '%s' failed.
+
+
+
+ Loading of messages failed, maybe messages could not be downloaded.
+
@@ -2737,19 +2711,19 @@ Go to application website to obtain it manually.
Menu for highlighting messages
-
+ No extra highlighting
-
+ Highlight unread messages
-
+ Highlight important messages
-
+ Display all messages
@@ -2757,7 +2731,7 @@ Go to application website to obtain it manually.
Message highlighter
-
+ Toolbar spacer
@@ -2788,11 +2762,11 @@ Go to application website to obtain it manually.
Problem with starting external e-mail client
-
+ External e-mail client could not be started.
-
+
@@ -2865,15 +2839,15 @@ Go to application website to obtain it manually.
no errorsNetwork status.
-
+ access to content was denied
-
+ connection timed out or was cancelled
-
+
@@ -2897,46 +2871,57 @@ Go to application website to obtain it manually.
LANG_EMAILrotter.martinos@gmail.com
-
- Load initial feeds
-
-
-
- Do you want to load initial set of feeds?
-
- LANG_NAMEName of language, e.g. English.Italiano
-
- You started %1 for the first time, now you can load initial set of feeds.
-
+
+
+
++ %n other feeds.
+
+
+
+
- Welcome to %1 %2.
-
+ Welcome to %1.
+
+Please, check NEW stuff included in this
+version by clicking this popup notification.
+
+
+
+ Welcome to %1.
+
+
+
+ Load initial set of feeds
+ RecycleBinRecycle bin
-
+ Recycle bin contains all deleted messages from all feeds.
-
+ Recycle bin
%1
-
+ %n deleted message(s).
-
+
+
+
+
@@ -2951,7 +2936,133 @@ Go to application website to obtain it manually.
Click and hit new shortcut.
-
+
+
+
+
+ StandardCategory
+
+ %1 (category)%2%3
+ Tooltip for standard feed.
+
+
+
+
+This category does not contain any nested items.
+
+
+
+ %n unread message(s).
+ Tooltip for "unread" column of feed list.
+
+
+
+
+
+
+
+ StandardFeed
+
+ Metadata not fetched
+
+
+
+ Metadata was not fetched because: %1.
+
+
+
+ does not use auto-update
+ Describes feed auto-update status.
+
+
+
+ uses global settings
+ Describes feed auto-update status.
+
+
+
+ uses specific settings (%n minute(s) to next auto-update)
+ Describes feed auto-update status.
+
+
+
+
+
+
+ %1 (%2)%3
+
+Network status: %6
+Encoding: %4
+Auto-update status: %5
+ Tooltip for feed.
+
+
+
+ %n unread message(s).
+ Tooltip for "unread" column of feed list.
+
+
+
+
+
+
+
+ StandardServiceRoot
+
+ This is obligatory service account for standard RSS/RDF/ATOM feeds.
+
+
+
+ You started %1 for the first time, now you can load initial set of feeds.
+
+
+
+ Do you want to load initial set of feeds?
+
+
+
+ Error when loading initial feeds
+
+
+
+ This is service account for standard RSS/RDF/ATOM feeds.
+
+
+
+ %n unread message(s).
+ Tooltip for "unread" column of feed list.
+
+
+
+
+
+
+ Fetch metadata
+ Recupera metadata
+
+
+ Import successfull, but some feeds/categories were not imported due to error.
+
+
+
+ Import was completely successfull.
+
+
+
+ Add new category
+ Aggiungi nuova categoria
+
+
+ Add new feed
+ Aggiungi nuovo feed
+
+
+ Export feeds
+
+
+
+ Import feeds
+
@@ -2962,18 +3073,22 @@ Go to application website to obtain it manually.
Switch application between fulscreen/normal states right from this status bar icon.
-
+ SystemFactoryNew version available
-
+ Click the bubble for more information.
-
+
+
+
+ anonymous
+
@@ -2981,7 +3096,7 @@ Go to application website to obtain it manually.
%1
Unread news: %2
-
+
@@ -3020,11 +3135,11 @@ Unread news: %2
Open new web browser tab.
-
+ Downloads
-
+
@@ -3055,30 +3170,45 @@ Unread news: %2
Move action up
-
+ Move action down
-
+ Add selected action
-
+ Delete selected action
-
+ Delete all actions
-
+ TrayIconMenuClose opened modal dialogs first.
-
+
+
+
+
+ TtRssServiceRoot
+
+ This is service account TT-RSS (TinyTiny RSS) server.
+
+
+
+ %n unread message(s).
+ Tooltip for "unread" column of feed list.
+
+
+
+
@@ -3152,6 +3282,14 @@ Unread news: %2
Stop web page loading.Ferma caricamento pagina web.
+
+ Cannot add feed
+ Impossibile aggiungere feed
+
+
+ You cannot add this feed to %1 because standard RSS/ATOM account is not enabled. Enable it first.
+
+ WebView
@@ -3205,19 +3343,19 @@ Unread news: %2
Copies current selection into the clipboard.
-
+ Copy link url to clipboard.
-
+ Copy image to clipboard.
-
+ Copy image url to clipboard.
-
+ Open this hyperlink in new tab.
@@ -3233,63 +3371,63 @@ Unread news: %2
Open link in external browser
-
+ Open the hyperlink in external browser.
-
+ Print
-
+ Print current web page.
-
+ HTML web pages (*.html)
-
+ Select destination file for web page
-
+ Cannot save web page
-
+ Web page cannot be saved because destination file is not writtable.
-
+ Save target as...
-
+ Download content from the hyperlink.
-
+ Save page as...
-
+ Save image to disk.
-
+ Save image as...
-
+ source_page
-
+ Search "%1" via Google...
-
+
-
\ No newline at end of file
+
diff --git a/localization/rssguard-nl_NL.ts b/localization/rssguard-nl_NL.ts
index f17dcba60..94cb3b1c1 100644
--- a/localization/rssguard-nl_NL.ts
+++ b/localization/rssguard-nl_NL.ts
@@ -1,4 +1,6 @@
-
+
+
+AdBlockAddSubscriptionDialog
@@ -31,7 +33,7 @@
Address
- Adres:
+ Adres
@@ -181,11 +183,11 @@ Merk ook op dat sommige hulpbronnen worden gecached door de interne web browser.
Settings file not copied to output directory successfully.
- Instellingen van bestand niet succesvol gekopieerd naar uitvoermap
+ Instellingen van bestand niet succesvol gekopieerd naar uitvoermap.Database file not copied to output directory successfully.
- Databasebestand niet succesvol gekopieerd naar uitvoermap
+ Databasebestand niet succesvol gekopieerd naar uitvoermap.Database restoration was not initiated. Make sure that output directory is writable.
@@ -196,25 +198,6 @@ Merk ook op dat sommige hulpbronnen worden gecached door de interne web browser.
Herstel van de instellingen werd niet gestart. Zorg ervoor dat de uitvoermap beschrijfbaar is.
-
- Category
-
- %1 (category)%2%3
- Tooltip for standard feed.
- %1 (categorie)%2%3
-
-
-
-This category does not contain any nested items.
-
-Deze categorie bevat geen nested items.
-
-
- %n unread message(s).
- Tooltip for "unread" column of feed list.
- %n ongelezen bericht%n ongelezen berichten.
-
-DatabaseCleaner
@@ -236,7 +219,7 @@ Gelezen berichten gewist...
Recycle bin purged...
- Prullenbak gewist..
+ Prullenbak gewist...Removing old messages...
@@ -293,9 +276,12 @@ Gelezen berichten gewist...
Click me to add feeds from this website.
This website contains %n feed(s).
- Klik hier om feeds van deze website toe tevoegen
-Deze website bevat % n feed.Klik hier om feeds van deze website toe tevoegen
-Deze website bevat % n feed(s).
+
+ Klik hier om feeds van deze website toe tevoegen.
+Deze website bevat %n feed.
+ Klik hier om feeds van deze website toe tevoegen.
+Deze website bevat %n feeds.
+
@@ -373,7 +359,7 @@ Deze website bevat % n feed(s).
Download klaar
- File '%1' is downloaded.
+ File '%1' is downloaded.
Click here to open parent directory.Bestand '%1' is klaar
Klik hier om map te openen.
@@ -399,11 +385,17 @@ Klik hier om map te openen.
%n minutes remaining
- %n resterende minuut%n resterende minuten
+
+ %n resterende minuut
+ %n resterende minuten
+ %n seconds remaining
- %n resterende seconde%n resterende seconden
+
+ %n resterende seconde
+ %n resterende seconden
+ bytes
@@ -423,51 +415,10 @@ Klik hier om map te openen.
Downloading %n file(s)...
- Dowloading %1 bestand...Downloading %n bestanden...
-
-
-
- Feed
-
- does not use auto-update
- Describes feed auto-update status.
- automatisch bijwerken niet gebruiken
-
-
- uses global settings
- Describes feed auto-update status.
- gebruik algemene instellingen
-
-
- uses specific settings (%n minute(s) to next auto-update)
- Describes feed auto-update status.
- gebruik specifieke instellingen (%n minuut voor volgende automatische update)gebruik specifieke instellingen (%n minuten voor volgende automatische update)
-
-
- %1 (%2)%3
-
-Network status: %6
-Encoding: %4
-Auto-update status: %5
- Tooltip for feed.
- %1 (%2)%3
-
-Netwerk status: %6
-Coderen: %4
-Auto-update status: 55
-
-
- %n unread message(s).
- Tooltip for "unread" column of feed list.
- %n ongelezen bericht.%n ongelezen berichten.
-
-
- Metadata not fetched
- Metadata niet opgehaald
-
-
- Metadata was not fetched because: %1
- Metadate niet opgehaald omdat: %1
+
+ Dowloading %n bestand...
+ Downloading %n bestanden...
+
@@ -476,24 +427,10 @@ Auto-update status: 55
Toolbar for messagesWerkbalk voor berichten
-
- Feed update started
- Text display in status bar when feed update is started.
- Bijwerken feed is gestart
-
-
- Updated feed '%1'
- Text display in status bar when particular feed is updated.
- Feed bijwerken '%1'
- Toolbar for feedsWerkbalk voor feeds
-
- Error when loading initial feeds
- Fout bij het laden van de eerste feeds
- Cannot cleanup databaseKan database niet opschonen
@@ -502,18 +439,6 @@ Auto-update status: 55
Cannot cleanup database, because another critical action is running.Je kunt database niet opschonenen omdat een andere kritische operatie gaande is.
-
- Cannot update all items
- Kan alle items niet bijwerken
-
-
- You cannot update all items because another another critical operation is ongoing.
- U kunt niet alle items updaten omdat er een andere bewerking plaats vind.
-
-
- New messages downloaded
- Nieuw bericht gedownload
- FeedsImportExportModel
@@ -550,25 +475,46 @@ Auto-update status: 55
Name of root item of feed list which can be seen in feed add/edit dialog.Root
-
- Invalid tree data.
- Ongeldige structuur gegevens
-
-
- Import successfull, but some feeds/categories were not imported due to error.
- Importeren succesvol, maar sommige feeds / categorieën waren niet goed geïmporteerd door fouten.
-
-
- Import was completely successfull.
- Importeren is helemaal geslaagd.
- Starting auto-update of some feedsBegint met auto-update van sommige feedsI will auto-update %n feed(s).
- Auto-update van %n feedAuto-update van %n feed(s)
+
+ Auto-update van %n feed.
+ Auto-update van %n feeds.
+
+
+
+ Cannot update all items
+ Kan alle items niet bijwerken
+
+
+ You cannot update all items because another another critical operation is ongoing.
+ U kunt niet alle items updaten omdat er een andere bewerking plaats vind.
+
+
+ Feed update started
+ Text display in status bar when feed update is started.
+ Bijwerken feed is gestart
+
+
+ Updated feed '%1'
+ Text display in status bar when particular feed is updated.
+ Feed bijwerken '%1'
+
+
+ New messages downloaded
+ Nieuw bericht gedownload
+
+
+ You can't transfer dragged item into different account, this is not supported.
+ Je kan geen gesleepte item overdragen naar een ander account, dir wordt niet ondersteunt.
+
+
+ Cannot perform drag & drop operation
+ Kan de drag & drop bewerking niet uitvoeren
@@ -580,14 +526,6 @@ Auto-update status: 55
FeedsView
-
- Cannot add standard category
- Kan geen standaard categorie toevoegen
-
-
- Cannot add standard feed
- Kan geen standaard feed toevoegen
- Cannot edit itemKan item niet bewerken
@@ -596,50 +534,10 @@ Auto-update status: 55
Cannot delete itemKan item niet verwijderen
-
- You are about to delete selected feed or category.
- Je gaat geselecteerde feed of categorie verwijderen.
-
-
- Deletion of item failed.
- Verwijdering van Item is mislukt.
-
-
- Selected item was not deleted due to error.
- Geselecteerde item is niet verwijderd door een fout.
-
-
- Do you really want to delete selected item?
- Wil je het geselecteerde item echt verwijderen?
-
-
- Permanently delete messages
- Definitief berichten verwijderen
-
-
- You are about to permanenty delete all messages from your recycle bin.
- Je gaat definitief alle berichten uit de prullenbak verwijderen.
-
-
- Do you really want to empty your recycle bin?
- Wil je de prullenbak echt legen?
- Context menu for empty spaceContextmenu voor lege regels
-
- Context menu for recycle bin
- Contextmenu voor prullenbak
-
-
- You cannot add new standard category now because another critical operation is ongoing.
- U kunt geen nieuwe standaard categorie toevoegen omdat een andere kritieke operatie aan de gang is.
-
-
- You cannot add new standard feed now because another critical operation is ongoing.
- U kunt geen nieuwe standaard feed toevoegen omdat een andere kritieke operatie aan de gang is.
- Selected item cannot be edited because another critical operation is ongoing.Geselecteerde item kunt u niet bewerken omdat een andere kritieke operatie aan de gang is.
@@ -648,14 +546,44 @@ Auto-update status: 55
Selected item cannot be deleted because another critical operation is ongoing.Geselecteerde item kunt u niet verwijderen omdat een andere kritieke operatie aan de gang is.
-
- Delete feed/category
- Verwijder feed/categorie
- Context menu for categoriesContextmenu voor categorieën
+
+ Selected item cannot be edited, this is not (yet?) supported.
+ Geselecteerde item kun je niet bewerken,dit wordt nog (niet) ondersteunt.
+
+
+ Deleting "%1"
+ Verwijder "%1"
+
+
+ You are about to completely delete item "%1".
+ Je staat op het punt om gehele item "%1" te verwijderen.
+
+
+ Are you sure?
+ Weet je het zeker?
+
+
+ Cannot delete "%1"
+ Kan "%1" niet verwijderen
+
+
+ This item cannot be deleted because something critically failed. Submit bug report.
+ Deze item kan niet worden verwijderd omdat het ergens fout ging. Meld deze bug.
+
+
+ This item cannot be deleted, because it does not support it
+or this functionality is not implemented yet.
+ Deze item kan niet worden verwijderd omdat het niet wordt ondersteunt
+of deze functie bestaat nog niet.
+
+
+ Context menu for other items
+ Invoegen van andere items
+ FormAbout
@@ -703,10 +631,6 @@ Auto-update status: 55
<b>%8</b><br><b>Version:</b> %1 (build on %2 with CMake %3)<br><b>Revision:</b> %4<br><b>Build date:</b> %5<br><b>Qt:</b> %6 (compiled against %7)<br><b>%8</b><br><b>Versie:</b> %1 (Gecompileerd onder %2 en Cmake %3)<br><b> Revisie:</b> %4<br><b>Gecompileerd op:</b> %5<br><b>QT versie:</b> %6 (Gecompileerd met %7)<br>
-
- <body>%5 is a (very) tiny feed reader.<br><br>This software is distributed under the terms of GNU General Public License, version 3.<br><br>Contacts:<ul><li><a href="mailto://%1">%1</a> ~email</li><li><a href="%2">%2</a> ~website</li></ul>You can obtain source code for %5 from its website.<br><br><br>Copyright (C) 2011-%3 %4</body>
- <body>%5 is een (zeer) makelijk te gebruiken feed lezer<br><br>Dit programma is beschikbaar onder te termen van de GNU General Public License versie 3.<br><br>Contacts:<ul><li><a href="mailto://%1">%1</a> ~email</li><li><a href="%2">%2</a> ~website</li></ul>U kunt de broncode voor %5 downloaden van de website..<br><br><br>Auteursrecht (C) 2011-%3 %4</body>
- About %1About RSS Guard dialog title.
@@ -736,6 +660,49 @@ Auto-update status: 55
ResourcesHulpbronnen
+
+ <body>%5 is a (very) tiny feed reader.<br><br>This software is distributed under the terms of GNU General Public License, version 3.<br><br>Contacts:<ul><li><a href="mailto://%1">%1</a> ~e-mail</li><li><a href="%2">%2</a> ~website</li></ul>You can obtain source code for %5 from its website.<br><br><br>Copyright (C) 2011-%3 %4</body>
+ <body>%5 is een (zeer) makelijk te gebruiken feed lezer.<br><br>Dit programma is beschikbaar onder te termen van de GNU General Public License, versie 3.<br><br>Contact:<ul><li><a href="mailto://%1">%1</a> ~e-mail</li><li><a href="%2">%2</a> ~Website</li><li>U kunt de broncode voor %5 downloaden van de website.<br><br><br>Auteursrecht (C) 2011-%3 %4</body>
+
+
+
+ FormAddAccount
+
+ Add new account
+ Voeg nieuw account toe
+
+
+ Details
+ Gegevens
+
+
+ Name
+ Naam
+
+
+ Version
+ Versie
+
+
+ Author
+ Auteur
+
+
+ Description
+ Omschrijving
+
+
+ Cannot add account
+ Kan account niet toevoegen
+
+
+ Some critical error occurred, report this to developers.
+ Enkele kritieke fouten opgetreden, vermeld dit bij de ontwikkelaars.
+
+
+ This account can be added only once.
+ Dit account kan maar 1 maal worden toegevoegd.
+ FormBackupDatabaseSettings
@@ -809,135 +776,7 @@ Auto-update status: 55
Good destination directory is specified.
- Juiste bestemmingsmap is opgegeven
-
-
-
- FormCategoryDetails
-
- Parent category
- Oudere categorie
-
-
- Select parent item for your category.
- Kies hoofd item voor je categorie.
-
-
- Title
- Titel
-
-
- Description
- Omschrijving
-
-
- Icon
- Pictogram
-
-
- Select icon for your category.
- Selecteer pictogram voor je categorie.
-
-
- Add new category
- Voeg nieuwe categorie toe
-
-
- Edit existing category
- Bewerk bestaande categorie
-
-
- Cannot add category
- Kan geen categorie toevoegen
-
-
- Category was not added due to error.
- Door een fout is de categorie niet toegevoegd.
-
-
- Cannot edit category
- Kan categorie niet bewerken
-
-
- Category was not edited due to error.
- Door een fout is de categorie niet bewerkt.
-
-
- Category name is ok.
- Categorie naam is ok.
-
-
- Category name is too short.
- Categorie naam is te kort.
-
-
- Description is empty.
- Omschrijving is leeg.
-
-
- Select icon file for the category
- Kies pictogram bestand voor de categorie
-
-
- Images (*.bmp *.jpg *.jpeg *.png *.svg *.tga)
- Afbeeldingen (*.bmp *.jpg *.jpeg *.png *.svg *.tga)
-
-
- Select icon
- Selecteer pictogram
-
-
- Cancel
- Annuleer
-
-
- Look in:
- Label to describe the folder for icon file selection dialog.
- Kijk in:
-
-
- Icon name:
- Pictogram naam:
-
-
- Icon type:
- Type pictogram:
-
-
- Category title
- Titel categorie
-
-
- Set title for your category.
- Stel titel in voor je categorie.
-
-
- Category description
- Categorie omschrijving
-
-
- Set description for your category.
- Stel omschrijving in voor je categorie.
-
-
- Icon selection
- Pictogram selectie
-
-
- Load icon from file...
- Laad pictogram uit een bestand...
-
-
- Do not use icon
- Gebruik geen pictogram
-
-
- Use default icon
- Gebruik standaard pictogram
-
-
- The description is ok.
- Omschrijving is ok.
+ Juiste bestemmingsmap is opgegeven.
@@ -952,7 +791,10 @@ Auto-update status: 55
day(s)
- dagdagen
+
+ dag
+ dagen
+ Shrink database file
@@ -976,7 +818,7 @@ Auto-update status: 55
I am ready.
- Ik ben klaar
+ Het is klaar.Database cleanup is running.
@@ -1007,389 +849,6 @@ Auto-update status: 55
Verwijder alle berichten met ster(niet die van de prullenbak)
-
- FormFeedDetails
-
- Parent category
- Oudere categorie
-
-
- Select parent item for your feed.
- Kies hoofd item voor je feed.
-
-
- Type
- Type
-
-
- Select type of the standard feed.
- Selecteer type van de standaard feed.
-
-
- Encoding
- Coderen
-
-
- Select encoding of the standard feed. If you are unsure about the encoding, then select "UTF-8" encoding.
- Kies codering van de standaard feed. Als je niet zeker bent van de codering, selecteer dan "UTF-8" codering.
-
-
- Auto-update
- Automatische-update
-
-
- Select the auto-update strategy for this feed. Default auto-update strategy means that the feed will be update in time intervals set in application settings.
- Selekteer de automatische bijwerk strategie voor deze feed.Standaard automatische bijwerken strategie betekent dat de feed zal worden bijgewerkt in tijd tussenpauzes ingesteld in RSSguard instelling.
-
-
- minutes
- minuten
-
-
- Title
- Titel
-
-
- Description
- Omschrijving
-
-
- URL
- URL
-
-
- Fetch it now
- Nu ophalen
-
-
- Icon
- Pictogram
-
-
- Select icon for your feed.
- Selecteer pictogram voor je feed.
-
-
- Some feeds require authentication, including GMail feeds. BASIC, NTLM-2 and DIGEST-MD5 authentication schemes are supported.
- Sommige feeds vereisen verificatie,inclusief GMail feeds, BASIC, NTLM-2 en DIGEST-MD5 verificaties schema's worden ondersteund.
-
-
- Requires authentication
- Vereist verificatie
-
-
- Username
- Gebruikersnaam
-
-
- Password
- Paswoord
-
-
- Fetch metadata
- Ophalen van metadata
-
-
- Add new feed
- Voeg nieuw feed toe
-
-
- Edit existing feed
- Bewerk bestaande feed
-
-
- Feed name is ok.
- Feed naam is ok.
-
-
- Feed name is too short.
- Feed naam is te kort.
-
-
- Description is empty.
- Omschrijving is leeg.
-
-
- The url is ok.
- De url is ok.
-
-
- The url does not meet standard pattern. Does your url start with "http://" or "https://" prefix.
- De URL voldoet niet aan het standaard patroon. Start je url met "http://" of "https://" prefix.
-
-
- The url is empty.
- De url is leeg.
-
-
- Username is ok or it is not needed.
- Gebruikersnaam is ok of het is niet nodig.
-
-
- Username is empty.
- Gebruikersnaam is leeg.
-
-
- Password is ok or it is not needed.
- Paswoord is ok of het is niet nodig.
-
-
- Password is empty.
- Paswoord is leeg.
-
-
- Select icon file for the feed
- Selecteer pictogram bestand voor je feed
-
-
- Images (*.bmp *.jpg *.jpeg *.png *.svg *.tga)
- Afbeeldingen (*.bmp *.jpg *.jpeg *.png *.svg *.tga)
-
-
- Select icon
- Selecteer pictogram
-
-
- Cancel
- Annuleer
-
-
- Look in:
- Label for field with icon file name textbox for selection dialog.
- Kijk in:
-
-
- Icon name:
- Pictogram naam:
-
-
- Icon type:
- Type pictogram:
-
-
- Cannot add feed
- Kan geen feed toevoegen
-
-
- Feed was not added due to error.
- Door een fout is de feed niet toegevoegd.
-
-
- Cannot edit feed
- Kan feed niet bewerken
-
-
- All metadata fetched successfully.
- Alle metadata is succesvol opgehaald.
-
-
- Feed and icon metadata fetched.
- Metadata opgehaald voor feed en pictogram.
-
-
- Result: %1.
- Resultaat: %1.
-
-
- Feed or icon metatada not fetched.
- Metadata voor feed en pictogram niet opgehaald.
-
-
- Error: %1.
- Fout: %1.
-
-
- No metadata fetched.
- Geen metadata opgehaald.
-
-
- Feed title
- Feed naam
-
-
- Set title for your feed.
- Stel titel in voor je feed.
-
-
- Feed description
- Feed omschrijving
-
-
- Set description for your feed.
- Stel omschrijving voor feed in.
-
-
- Full feed url including scheme
- Volledige feed url inclusief schema
-
-
- Set url for your feed.
- Stel url in voor je feed.
-
-
- Set username to access the feed.
- Stel gebruikersnaam in voor toegang tot feed.
-
-
- Set password to access the feed.
- Stel paswoord in voor toegang tot feed.
-
-
- Icon selection
- Pictogram selectie
-
-
- Load icon from file...
- Laad pictogram uit een bestand...
-
-
- Do not use icon
- Gebruik geen pictogram
-
-
- Use default icon
- Gebruik standaard pictogram
-
-
- No metadata fetched so far.
- Nog geen metadata opgehaald.
-
-
- Auto-update using global interval
- Automatisch bijwerken met behulp van globale interval
-
-
- Auto-update every
- Automatisch bijwerken elke
-
-
- Do not auto-update at all
- Niet automatisch bijwerken
-
-
- The description is ok.
- Omschrijving is ok.
-
-
- Feed was not edited due to error.
- Door een fout is de feed niet bewerkt.
-
-
- Icon fetched successfully.
- Pictogram met succes opgehaald.
-
-
- Icon metadata fetched.
- Metadata pictogram opgehaald.
-
-
- Icon metatada not fetched.
- Metadata pictogram niet opgehaald.
-
-
- No icon fetched.
- Geen pictogram opgehaald.
-
-
- Fetch icon from feed
- Pictogram opgehaald van feed
-
-
-
- FormImportExport
-
- &Select file
- &Selecteer bestand
-
-
- Operation results
- Resultaten
-
-
- No file is selected.
- Geen bestand geselecteerd.
-
-
- No operation executed yet.
- Nog geen handeling uitgevoerd.
-
-
- Export feeds
- Exporteer feeds
-
-
- Destination file
- Doelbestand
-
-
- Source feeds && categories
- Source Feeds && categorieën
-
-
- Source file
- Source bestand
-
-
- Target feeds && categories
- Doelgroep feeds && categorieën
-
-
- Import feeds
- Importeer feeds.
-
-
- OPML 2.0 files (*.opml)
- OPML 2.0 bestanden (*.opml)
-
-
- Select file for feeds export
- Selecteer bestand voor feed export
-
-
- File is selected.
- Bestand is geselecteerd.
-
-
- Select file for feeds import
- Selecteer bestand voor feed import
-
-
- Cannot open source file.
- Kan source bestand niet openen.
-
-
- Feeds were loaded.
- Feeds zijn geladen.
-
-
- Error, file is not well-formed. Select another file.
- Fout, het bestand is niet goed gevormd. Selecteer een ander bestand.
-
-
- Error occurred. File is not well-formed. Select another file.
- Fout opgetreden. Bestand is niet goed gevormd. Selecteer een ander bestand.
-
-
- Feeds were exported successfully.
- Feeds zijn met succes geëxporteerd.
-
-
- Cannot write into destination file.
- Kan niet schrijven naar doelbestand.
-
-
- Critical error occurred.
- Kritieke fout opgetreden.
-
-
- &Check all items
- &Controleer alle items
-
-
- &Uncheck all items
- &Vinkje bij alle items
-
-FormMain
@@ -1464,22 +923,6 @@ Auto-update status: 55
No actions are available right now.Er zijn geen acties beschikbaar op dit moment.
-
- Fee&ds && categories
- Fee&ds && categorieën
-
-
- Mark all messages (without message filters) from selected feeds as read.
- Markeer alle berichten (zonder berichten filters) van geselecteerde feeds als gelezen.
-
-
- Mark all messages (without message filters) from selected feeds as unread.
- Markeer alle berichten (zonder berichten filters) van geselecteerde feeds als ongelezen.
-
-
- Displays all messages from selected feeds/categories in a new "newspaper mode" tab. Note that messages are not set as read automatically.
- Toon alle berichten van geselecteerde feeds/categorieën in een nieuwe "Krantweergave modus" tabblad. Onthoud dat de berichten niet zijn ingesteld als automatisch gelezen.
- Hides main window if it is visible and shows it if it is hidden.Verberg hoofdvenster als het zichtbaar is en toon het als het verborgen is.
@@ -1504,34 +947,6 @@ Auto-update status: 55
&Delete selected messagesVerwij&der geselecteerde berichten
-
- Deletes all messages from selected feeds.
- Verwijder alle berichten van geselecteerde feeds.
-
-
- Marks all messages in all feeds read. This does not take message filters into account.
- Markeer alle berichten van alle feeds als gelezen. Dit is niet van toepassing op berichten filters in account.
-
-
- Deletes all messages from all feeds.
- Verwijder alle berichten van alle feeds.
-
-
- Update &all feeds
- &Alle feeds bijwerken
-
-
- Update &selected feeds
- Update ge&selecteerde feeds
-
-
- &Edit selected feed/category
- B&ewerk geselecteerde feed/categorie
-
-
- &Delete selected feed/category
- Verwij&der geselecteerde feed/categorie
- SettingsInstellingen
@@ -1540,10 +955,6 @@ Auto-update status: 55
Hides or displays the main menu.Verberg of toon het hoofdmenu.
-
- Add &new feed/category
- Voeg &nieuwe feeds/categorieën toe
- &Close all tabs except current one&Sluit alle tabbladen behalve deze
@@ -1560,18 +971,6 @@ Auto-update status: 55
Mark &selected messages as &unreadMarkeer ge&selecteerde berichten als &ongelezen
-
- &Mark selected feeds as read
- &Markeer geselecteerde feeds als gelezen
-
-
- &Mark selected feeds as unread
- &Markeer geselecteerde bericht als ongelezen
-
-
- &Clean selected feeds
- &Wis geselecteerde feeds
- Open selected source articles in &external browserOpen geselecteerde bron artikelen met &externe webbrowser
@@ -1584,26 +983,6 @@ Auto-update status: 55
Open selected source articles in &internal browserOpen geselecteerde bron artikelen met &ingebouwde webbrowser
-
- &Mark all feeds as &read
- &Markeer alle feeds als &gelezen
-
-
- View selected feeds in &newspaper mode
- Bekijk de geselecteerde items in de kra&ntweergave modus
-
-
- &Clean all feeds
- Alle feeds ops&chonen
-
-
- Select &next feed/category
- Selecteer volge&nde feeds/categorieën
-
-
- Select &previous feed/category
- Selecteer &vorige feeds/categorieën
- Select &next messageSelecteer volge&nd bericht
@@ -1656,22 +1035,6 @@ Auto-update status: 55
Cannot open external browser. Navigate to application website manually.Kan externe webbrowser niet starten, Navigeer handmatig naar RSSguard website.
-
- New &feed
- Nieuw &feed
-
-
- Add new feed.
- Voeg nieuw feed toe.
-
-
- New &category
- Nieuw &categorie
-
-
- Add new category.
- Voeg nieuwe categorie toe.
- &Toolbars&Werkbalk
@@ -1684,38 +1047,17 @@ Auto-update status: 55
&Feed/message list headers&Feed/bericht kopteksten
-
- &Import feeds
- &Importeer feeds
-
-
- Imports feeds you want from selected file.
- Importeer feeds die je wilt van het geselecteerde bestand.
-
-
- &Export feeds
- &Exporteer feeds
-
-
- Exports feeds you want to selected file.
-
-Exporteer feeds die je wilt van het geselecteerde bestand.
- Close all tabs except current one.Sluit alle tabbladen behalve deze.
-
- &Recycle bin
- &Prullenbak
- Report a &bug (GitHub)...Rapporteer een &bug (Github)...Report a bug (BitBucket)...
- Rapporteer een &bug (Bitbucket)...
+ Rapporteer een bug (Bitbucket)...&Donate via PayPal
@@ -1725,18 +1067,6 @@ Exporteer feeds die je wilt van het geselecteerde bestand.
Display &wikiToon &wiki
-
- &Empty recycle bin
- &Prullenbak legen
-
-
- &Restore all messages
- &Herstel alle berichten
-
-
- Restore &selected messages
- Herstel &geselecteerde berichten
- &Restart&Herstart
@@ -1747,7 +1077,7 @@ Exporteer feeds die je wilt van het geselecteerde bestand.
&Backup database/settings
- Backup database/instellingen
+ &Backup database/instellingenSwitch message list layout orientation
@@ -1766,16 +1096,132 @@ Exporteer feeds die je wilt van het geselecteerde bestand.
&database opschonen
- Show only unread feeds/categories
- Toon alleen de ongelezen feeds/categorieën
+ Add &new item
+ Voeg &nieuw item toe
- &Fetch feed metadata
- &Ophalen van de feed metadata
+ Update &all items
+ &Alle items bijwerken
- &Expand/collapse selected feed/category
- &Uitklappen/Inklappen van geselcteerde feed/categorie
+ Update &selected items
+ &Geselecteerde items bijwerken
+
+
+ &Edit selected item
+ &Bewerk geselecteerde item
+
+
+ &Delete selected item
+ &Verwijder geselecteerde item
+
+
+ &Mark selected items as read
+ &Markeer geselecteerde berichten als gelezen
+
+
+ Mark all messages (without message filters) from selected items as read.
+ Markeer alle berichten (zonder berichtenfilters) van geselecteerde items als gelezen.
+
+
+ &Mark selected items as unread
+ &Markeer geselecteerde item als ongelezen
+
+
+ Mark all messages (without message filters) from selected items as unread.
+ Markeer alle berichten (zonder berichtenfilters) van geselecteerde items als ongelezen.
+
+
+ &Clean selected items
+ Geselecteerde items &opschonen
+
+
+ Deletes all messages from selected items.
+ Verwijder alle berichten van geselecteerde items.
+
+
+ &Mark all items as &read
+ &Markeer alle items als &gelezen
+
+
+ Marks all messages in all items read. This does not take message filters into account.
+ Markeer alle berichten in alle items als gelezen. Dit neemt geen berichtenfilters mee in account.
+
+
+ View selected items in &newspaper mode
+ Bekijk geselecteerde items in kra&ntweergave
+
+
+ Displays all messages from selected item in a new "newspaper mode" tab. Note that messages are not set as read automatically.
+ Toon alle berichten van geselecteerde item in een nieuwe "krantweergave" tabblad.Let op dat berichten niet automatisch als gelezen zijn ingesteld.
+
+
+ &Clean all items
+ Alle items &opschonen
+
+
+ Deletes all messages from all items.
+ Verwijder alle berichten van alle items.
+
+
+ Select &next item
+ Selecteer &volgende item
+
+
+ Select &previous item
+ Selecteer &vorige item
+
+
+ Show only unread items
+ Toon alleen ongelezen items
+
+
+ &Expand/collapse selected item
+ &Uitklappen/inklappen geselecteerde item
+
+
+ &Add new service account
+ &Voeg nieuwe service account toe
+
+
+ &Restore selected messages
+ &Herstel geselecteerde berichten
+
+
+ No possible actions
+ Geen mogelijke acties
+
+
+ Feeds && categories && accounts
+ Feeds && categorieën && accounts
+
+
+ &Recycle bin(s)
+ &Prullenbak
+
+
+ &Restore all recycle bins
+ &Hestel alle prullenbakken
+
+
+ &Empty all recycle bins
+ &Leeg alle prullenbakken
+
+
+ Select next &unread message
+ Selecteer volgende &ongelezen bericht
+
+
+ No recycle bin
+ Geeen vuilnisbak
+
+
+ Restore recycle bin
+ Hestel vuilnisbak
+
+
+ Empty recycle bin
+ Leeg vuilnisbak
@@ -1926,10 +1372,6 @@ Exporteer feeds die je wilt van het geselecteerde bestand.
AuthorAuteur
-
- Email
- Email
- Socks5Socks5
@@ -2445,10 +1887,8 @@ Open nieuw webbrowser pagina(sleep muis omlaag).
• %1 - title of selected message,
• %2 - body of selected message.
Plaatshouders:
-
-•% 1 - titel van het geselecteerde bericht,
-
-•% 2 - body van geselecteerde bericht.
+ •.%1 - titel van het geselecteerde bericht,
+ • %2 - body van geselecteerde bericht.
Save all downloaded files to
@@ -2472,7 +1912,7 @@ Open nieuw webbrowser pagina(sleep muis omlaag).
Working database is ok.
- Werkende database is ok
+ Werkende database is ok.Notification position
@@ -2514,6 +1954,525 @@ Open nieuw webbrowser pagina(sleep muis omlaag).
Fancy && modern popup notifications (This uses OS native notifications via D-Bus if available.)Fancy && moderne popup meldingen (Dit gebruikt OS natieve meldingen via D-Bus indien beschikbaar.)
+
+ E-mail
+ E-mail
+
+
+ Enable notifications
+ Meldingen aanzetten
+
+
+
+ FormStandardCategoryDetails
+
+ Parent category
+ Oudere categorie
+
+
+ Select parent item for your category.
+ Kies hoofd item voor je categorie.
+
+
+ Title
+ Titel
+
+
+ Description
+ Omschrijving
+
+
+ Icon
+ Pictogram
+
+
+ Select icon for your category.
+ Selecteer pictogram voor je categorie.
+
+
+ Add new category
+ Voeg nieuwe categorie toe
+
+
+ Edit existing category
+ Bewerk bestaande categorie
+
+
+ Cannot add category
+ Kan geen categorie toevoegen
+
+
+ Category was not added due to error.
+ Door een fout is de categorie niet toegevoegd.
+
+
+ Cannot edit category
+ Kan categorie niet bewerken
+
+
+ Category was not edited due to error.
+ Door een fout is de categorie niet bewerkt.
+
+
+ Category name is ok.
+ Categorie naam is ok.
+
+
+ Category name is too short.
+ Categorie naam is te kort.
+
+
+ Description is empty.
+ Omschrijving is leeg.
+
+
+ The description is ok.
+ Omschrijving is ok.
+
+
+ Select icon file for the category
+ Kies pictogram bestand voor de categorie
+
+
+ Images (*.bmp *.jpg *.jpeg *.png *.svg *.tga)
+ Afbeeldingen (*.bmp *.jpg *.jpeg *.png *.svg *.tga)
+
+
+ Select icon
+ Selecteer pictogram
+
+
+ Cancel
+ Annuleer
+
+
+ Look in:
+ Label to describe the folder for icon file selection dialog.
+ Kijk in:
+
+
+ Icon name:
+ Pictogram naam:
+
+
+ Icon type:
+ Type pictogram:
+
+
+ Category title
+ Titel categorie
+
+
+ Set title for your category.
+ Stel titel in voor je categorie.
+
+
+ Category description
+ Categorie omschrijving
+
+
+ Set description for your category.
+ Stel omschrijving in voor je categorie.
+
+
+ Icon selection
+ Pictogram selectie
+
+
+ Load icon from file...
+ Laad pictogram uit een bestand...
+
+
+ Do not use icon
+ Gebruik geen pictogram
+
+
+ Use default icon
+ Gebruik standaard pictogram
+
+
+
+ FormStandardFeedDetails
+
+ Parent category
+ Oudere categorie
+
+
+ Select parent item for your feed.
+ Kies hoofd item voor je feed.
+
+
+ Type
+ Type
+
+
+ Select type of the standard feed.
+ Selecteer type van de standaard feed.
+
+
+ Encoding
+ Coderen
+
+
+ Select encoding of the standard feed. If you are unsure about the encoding, then select "UTF-8" encoding.
+ Kies codering van de standaard feed. Als je niet zeker bent van de codering, selecteer dan "UTF-8" codering.
+
+
+ Auto-update
+ Automatische-update
+
+
+ Select the auto-update strategy for this feed. Default auto-update strategy means that the feed will be update in time intervals set in application settings.
+ Selekteer de automatische bijwerk strategie voor deze feed.Standaard automatische bijwerken strategie betekent dat de feed zal worden bijgewerkt in tijd tussenpauzes ingesteld in RSSguard instelling.
+
+
+ minutes
+ minuten
+
+
+ Title
+ Titel
+
+
+ Description
+ Omschrijving
+
+
+ URL
+ URL
+
+
+ Fetch it now
+ Nu ophalen
+
+
+ Icon
+ Pictogram
+
+
+ Select icon for your feed.
+ Selecteer pictogram voor je feed.
+
+
+ Some feeds require authentication, including GMail feeds. BASIC, NTLM-2 and DIGEST-MD5 authentication schemes are supported.
+ Sommige feeds vereisen verificatie,inclusief GMail feeds, BASIC, NTLM-2 en DIGEST-MD5 verificaties schema's worden ondersteund.
+
+
+ Requires authentication
+ Vereist verificatie
+
+
+ Username
+ Gebruikersnaam
+
+
+ Password
+ Paswoord
+
+
+ Fetch metadata
+ Ophalen van metadata
+
+
+ Add new feed
+ Voeg nieuw feed toe
+
+
+ Edit existing feed
+ Bewerk bestaande feed
+
+
+ Feed name is ok.
+ Feed naam is ok.
+
+
+ Feed name is too short.
+ Feed naam is te kort.
+
+
+ Description is empty.
+ Omschrijving is leeg.
+
+
+ The description is ok.
+ Omschrijving is ok.
+
+
+ The url is ok.
+ De url is ok.
+
+
+ The url does not meet standard pattern. Does your url start with "http://" or "https://" prefix.
+ De URL voldoet niet aan het standaard patroon. Start je url met "http://" of "https://" prefix.
+
+
+ The url is empty.
+ De url is leeg.
+
+
+ Username is ok or it is not needed.
+ Gebruikersnaam is ok of het is niet nodig.
+
+
+ Username is empty.
+ Gebruikersnaam is leeg.
+
+
+ Password is ok or it is not needed.
+ Paswoord is ok of het is niet nodig.
+
+
+ Password is empty.
+ Paswoord is leeg.
+
+
+ Select icon file for the feed
+ Selecteer pictogram bestand voor je feed
+
+
+ Images (*.bmp *.jpg *.jpeg *.png *.svg *.tga)
+ Afbeeldingen (*.bmp *.jpg *.jpeg *.png *.svg *.tga)
+
+
+ Select icon
+ Selecteer pictogram
+
+
+ Cancel
+ Annuleer
+
+
+ Look in:
+ Label for field with icon file name textbox for selection dialog.
+ Kijk in:
+
+
+ Icon name:
+ Pictogram naam:
+
+
+ Icon type:
+ Type pictogram:
+
+
+ Cannot add feed
+ Kan geen feed toevoegen
+
+
+ Feed was not added due to error.
+ Door een fout is de feed niet toegevoegd.
+
+
+ Cannot edit feed
+ Kan feed niet bewerken
+
+
+ Feed was not edited due to error.
+ Door een fout is de feed niet bewerkt.
+
+
+ All metadata fetched successfully.
+ Alle metadata is succesvol opgehaald.
+
+
+ Feed and icon metadata fetched.
+ Metadata opgehaald voor feed en pictogram.
+
+
+ Result: %1.
+ Resultaat: %1.
+
+
+ Feed or icon metatada not fetched.
+ Metadata voor feed en pictogram niet opgehaald.
+
+
+ Error: %1.
+ Fout: %1.
+
+
+ No metadata fetched.
+ Geen metadata opgehaald.
+
+
+ Icon fetched successfully.
+ Pictogram met succes opgehaald.
+
+
+ Icon metadata fetched.
+ Metadata pictogram opgehaald.
+
+
+ Icon metatada not fetched.
+ Metadata pictogram niet opgehaald.
+
+
+ No icon fetched.
+ Geen pictogram opgehaald.
+
+
+ Feed title
+ Feed naam
+
+
+ Set title for your feed.
+ Stel titel in voor je feed.
+
+
+ Feed description
+ Feed omschrijving
+
+
+ Set description for your feed.
+ Stel omschrijving voor feed in.
+
+
+ Full feed url including scheme
+ Volledige feed url inclusief schema
+
+
+ Set url for your feed.
+ Stel url in voor je feed.
+
+
+ Set username to access the feed.
+ Stel gebruikersnaam in voor toegang tot feed.
+
+
+ Set password to access the feed.
+ Stel paswoord in voor toegang tot feed.
+
+
+ Icon selection
+ Pictogram selectie
+
+
+ Load icon from file...
+ Laad pictogram uit een bestand...
+
+
+ Do not use icon
+ Gebruik geen pictogram
+
+
+ Use default icon
+ Gebruik standaard pictogram
+
+
+ Fetch icon from feed
+ Pictogram opgehaald van feed
+
+
+ No metadata fetched so far.
+ Nog geen metadata opgehaald.
+
+
+ Auto-update using global interval
+ Automatisch bijwerken met behulp van globale interval
+
+
+ Auto-update every
+ Automatisch bijwerken elke
+
+
+ Do not auto-update at all
+ Niet automatisch bijwerken
+
+
+
+ FormStandardImportExport
+
+ &Select file
+ &Selecteer bestand
+
+
+ &Check all items
+ &Controleer alle items
+
+
+ &Uncheck all items
+ &Vinkje bij alle items
+
+
+ Operation results
+ Resultaten
+
+
+ No file is selected.
+ Geen bestand geselecteerd.
+
+
+ No operation executed yet.
+ Nog geen handeling uitgevoerd.
+
+
+ Destination file
+ Doelbestand
+
+
+ Source feeds && categories
+ Source Feeds && categorieën
+
+
+ Export feeds
+ Exporteer feeds
+
+
+ Source file
+ Source bestand
+
+
+ Target feeds && categories
+ Doelgroep feeds && categorieën
+
+
+ Import feeds
+ Importeer feeds
+
+
+ OPML 2.0 files (*.opml)
+ OPML 2.0 bestanden (*.opml)
+
+
+ Select file for feeds export
+ Selecteer bestand voor feed export
+
+
+ File is selected.
+ Bestand is geselecteerd.
+
+
+ Select file for feeds import
+ Selecteer bestand voor feed import
+
+
+ Cannot open source file.
+ Kan source bestand niet openen.
+
+
+ Feeds were loaded.
+ Feeds zijn geladen.
+
+
+ Error, file is not well-formed. Select another file.
+ Fout, het bestand is niet goed gevormd. Selecteer een ander bestand.
+
+
+ Error occurred. File is not well-formed. Select another file.
+ Fout opgetreden. Bestand is niet goed gevormd. Selecteer een ander bestand.
+
+
+ Feeds were exported successfully.
+ Feeds zijn met succes geëxporteerd.
+
+
+ Cannot write into destination file.
+ Kan niet schrijven naar doelbestand.
+
+
+ Critical error occurred.
+ Kritieke fout opgetreden.
+ FormUpdate
@@ -2763,6 +2722,14 @@ Ga naar RRSguard website en download het handmatig.
List of attachments.Bijlagen lijst.
+
+ Loading of messages from item '%s' failed.
+
+
+
+ Loading of messages failed, maybe messages could not be downloaded.
+
+ MessagesToolBar
@@ -2936,26 +2903,41 @@ Ga naar RRSguard website en download het handmatig.
LANG_EMAILelbert.pol@gmail.com
-
- Load initial feeds
- Laad eerste feeds
-
-
- Do you want to load initial set of feeds?
- Wil je de eerste set van feeds laden?
- LANG_NAMEName of language, e.g. English.Nederlands
-
- You started %1 for the first time, now you can load initial set of feeds.
- Je startte %1 voor de eerste keer, nu kun je de eerste set van de feeds laden
+
+
+
++ %n other feeds.
+
+
+
++ %n andere feed.
+
+
++ %n andere feeds.
+
- Welcome to %1 %2.
- Welkom bij %1 %2.
+ Welcome to %1.
+
+Please, check NEW stuff included in this
+version by clicking this popup notification.
+ Welkom bij %1.
+
+Check voor NIEUW materiaal in deze versie
+door te clicken op deze popup melding.
+
+
+ Welcome to %1.
+ Welkom bij %1.
+
+
+ Load initial set of feeds
+ Laad eerste set van de feeds
@@ -2976,7 +2958,10 @@ Ga naar RRSguard website en download het handmatig.
%n deleted message(s).
- %n verwijderde bericht(en).%n verwijderde bericht(en).
+
+ %n verwijderde bericht(en).
+ %n verwijderde bericht(en).
+
@@ -2994,6 +2979,137 @@ Ga naar RRSguard website en download het handmatig.
Klik en raak nieuwe sneltoets.
+
+ StandardCategory
+
+ %1 (category)%2%3
+ Tooltip for standard feed.
+ %1 (categorie)%2%3
+
+
+
+This category does not contain any nested items.
+
+Deze categorie bevat geen nested items.
+
+
+ %n unread message(s).
+ Tooltip for "unread" column of feed list.
+
+ %n ongelezen bericht.
+ %n ongelezen berichten.
+
+
+
+
+ StandardFeed
+
+ Metadata not fetched
+ Metadata niet opgehaald
+
+
+ Metadata was not fetched because: %1.
+ Metadate niet opgehaald omdat: %1.
+
+
+ does not use auto-update
+ Describes feed auto-update status.
+ automatisch bijwerken niet gebruiken
+
+
+ uses global settings
+ Describes feed auto-update status.
+ gebruik algemene instellingen
+
+
+ uses specific settings (%n minute(s) to next auto-update)
+ Describes feed auto-update status.
+
+ gebruik specifieke instellingen (%n minuut voor volgende automatische update)
+ gebruik specifieke instellingen (%n minuten voor volgende automatische update)
+
+
+
+ %1 (%2)%3
+
+Network status: %6
+Encoding: %4
+Auto-update status: %5
+ Tooltip for feed.
+ %1 (%2)%3
+
+Netwerk status: %6
+Coderen: %4
+Auto-update status: %5
+
+
+ %n unread message(s).
+ Tooltip for "unread" column of feed list.
+
+ %n ongelezen bericht.
+ %n ongelezen berichten.
+
+
+
+
+ StandardServiceRoot
+
+ This is obligatory service account for standard RSS/RDF/ATOM feeds.
+ Dit is verplichte service account voor standaard RSS/RDF/ATOM feeds.
+
+
+ You started %1 for the first time, now you can load initial set of feeds.
+ Je start %1 voor de eerste keer, nu kun je de eerste set van de feeds laden.
+
+
+ Do you want to load initial set of feeds?
+ Wil je de eerste set van feeds laden?
+
+
+ Error when loading initial feeds
+ Fout bij het laden van de eerste feeds
+
+
+ This is service account for standard RSS/RDF/ATOM feeds.
+ Dit is verplichte service account voor standaard RSS/RDF/ATOM feeds.
+
+
+ %n unread message(s).
+ Tooltip for "unread" column of feed list.
+
+ %n ongelezen bericht.
+ %n ongelezen berichten.
+
+
+
+ Fetch metadata
+ Ophalen van metadata
+
+
+ Import successfull, but some feeds/categories were not imported due to error.
+ Importeren succesvol, maar sommige feeds / categorieën waren niet goed geïmporteerd door fouten.
+
+
+ Import was completely successfull.
+ Importeren is helemaal geslaagd.
+
+
+ Add new category
+ Voeg nieuwe categorie toe
+
+
+ Add new feed
+ Voeg nieuw feed toe
+
+
+ Export feeds
+ Exporteer feeds
+
+
+ Import feeds
+ Importeer feeds
+
+StatusBar
@@ -3015,6 +3131,10 @@ Ga naar RRSguard website en download het handmatig.
Click the bubble for more information.Klik op luchtbel voor meer informatie.
+
+ anonymous
+ Anoniem
+ SystemTrayIcon
@@ -3123,6 +3243,21 @@ Ongelezen nieuws: %2
Sluit geopende modaal vensters eerst.
+
+ TtRssServiceRoot
+
+ This is service account TT-RSS (TinyTiny RSS) server.
+ Dit is een service account van TT-RSS (TinyTiny RSS) server.
+
+
+ %n unread message(s).
+ Tooltip for "unread" column of feed list.
+
+ %n ongelezen bericht.
+ %n ongelezen berichten.
+
+
+WebBrowser
@@ -3194,6 +3329,14 @@ Ongelezen nieuws: %2
Stop web page loading.Stop het laden van pagina.
+
+ Cannot add feed
+ Kan geen feed toevoegen
+
+
+ You cannot add this feed to %1 because standard RSS/ATOM account is not enabled. Enable it first.
+ Kan geen feed toevoegen aan %1 omdat de standaard RSS/ATOM account niet aanstaat. Zit die eerst aan.
+ WebView
@@ -3279,7 +3422,7 @@ Ongelezen nieuws: %2
Open the hyperlink in external browser.
- Open de hyperlink in externe browser
+ Open de hyperlink in externe browser.Print
@@ -3307,7 +3450,7 @@ Ongelezen nieuws: %2
Save target as...
- Doel opslaan als..
+ Doel opslaan als...Download content from the hyperlink.
@@ -3334,4 +3477,4 @@ Ongelezen nieuws: %2
Zoek "%1" met google...
-
\ No newline at end of file
+
diff --git a/localization/rssguard-sv_SE.ts b/localization/rssguard-sv_SE.ts
index 26e1cc170..0eff502bb 100644
--- a/localization/rssguard-sv_SE.ts
+++ b/localization/rssguard-sv_SE.ts
@@ -1,4 +1,6 @@
-
+
+
+AdBlockAddSubscriptionDialog
@@ -196,25 +198,6 @@ Notera också att vissa resurser cachelagras av den interna webbläsaren. Om du
Inställningsåterställning startades inte. Tillse att utdatamappen är skrivbar.
-
- Category
-
- %1 (category)%2%3
- Tooltip for standard feed.
- %1 (kategori)%2%3
-
-
-
-This category does not contain any nested items.
-
-Denna kategori innehåller inga objekt.
-
-
- %n unread message(s).
- Tooltip for "unread" column of feed list.
- %n oläst meddelande.%n olästa meddelanden.
-
-DatabaseCleaner
@@ -292,9 +275,12 @@ Denna kategori innehåller inga objekt.
Click me to add feeds from this website.
This website contains %n feed(s).
- Klicka för att lägga till flöden från webbsidan.
-Denna webbsida innehåller %1 flöde.Klicka för att lägga till flöden från webbsidan.
-Denna webbsida innehåller %1 flöden.
+
+ Klicka för att lägga till flöden från webbsidan.
+Denna webbsida innehåller %1 flöde.
+ Klicka för att lägga till flöden från webbsidan.
+Denna webbsida innehåller %1 flöden.
+
@@ -372,7 +358,7 @@ Denna webbsida innehåller %1 flöden.
Nedladdning slutförd
- File '%1' is downloaded.
+ File '%1' is downloaded.
Click here to open parent directory.Filen '%1' är nedlladdad.
Klicka här för att öppna målmappen.
@@ -398,11 +384,17 @@ Klicka här för att öppna målmappen.
%n minutes remaining
- %n minut kvar%n minuter kvar
+
+ %n minut kvar
+ %n minuter kvar
+ %n seconds remaining
- %n sekund kvar%n sekunder kvar
+
+ %n sekund kvar
+ %n sekunder kvar
+ bytes
@@ -422,51 +414,10 @@ Klicka här för att öppna målmappen.
Downloading %n file(s)...
- Laddar ner %n fil...Laddar ner %n filer...
-
-
-
- Feed
-
- does not use auto-update
- Describes feed auto-update status.
- uppdateras inte automatiskt
-
-
- uses global settings
- Describes feed auto-update status.
- Globala inställningar
-
-
- uses specific settings (%n minute(s) to next auto-update)
- Describes feed auto-update status.
- Anpassade inställningar. (%n minut till nästa auto-uppdatering)Anpassade inställningar. (%n minuter till nästa auto-uppdatering)
-
-
- %1 (%2)%3
-
-Network status: %6
-Encoding: %4
-Auto-update status: %5
- Tooltip for feed.
- %1 (%2)%3
-
-Nätverksstatus: %6
-Kodning: %4
-Uppdateringsstatus: %5
-
-
- %n unread message(s).
- Tooltip for "unread" column of feed list.
- %n oläst meddelande.%n olästa meddelanden.
-
-
- Metadata not fetched
- Metadata hämtades inte
-
-
- Metadata was not fetched because: %1
- Metadata hämtades inte på grund av: %1
+
+ Laddar ner %n fil...
+ Laddar ner %n filer...
+
@@ -475,24 +426,10 @@ Uppdateringsstatus: %5
Toolbar for messagesVerktygsfält för meddelanden
-
- Feed update started
- Text display in status bar when feed update is started.
- Flödesuppdatering startad
-
-
- Updated feed '%1'
- Text display in status bar when particular feed is updated.
- Uppdaterade flödet '%1'
- Toolbar for feedsVerktygsfält för flöden
-
- Error when loading initial feeds
- Fel vid inläsning av flöden
- Cannot cleanup databaseKan inte rensa databasen
@@ -501,18 +438,6 @@ Uppdateringsstatus: %5
Cannot cleanup database, because another critical action is running.Kan inte rensa databasen, eftersom en annan kritisk åtgärd pågår.
-
- Cannot update all items
- Kan inte uppdatera alla objekt
-
-
- You cannot update all items because another another critical operation is ongoing.
- Du kan inte uppdatera alla objekt, eftersom en annan kritisk åtgärd pågår.
-
-
- New messages downloaded
- Nya meddelanden nedladdade
- FeedsImportExportModel
@@ -549,25 +474,46 @@ Uppdateringsstatus: %5
Name of root item of feed list which can be seen in feed add/edit dialog.Root
-
- Invalid tree data.
- Ogiltig träddata.
-
-
- Import successfull, but some feeds/categories were not imported due to error.
- Importen slutfördes, men vissa flöden/kategorier importerades inte på grund av något fel.
-
-
- Import was completely successfull.
- Importen slutfördes korrekt.
- Starting auto-update of some feedsUppdaterar flöden automatisktI will auto-update %n feed(s).
- Jag uppdaterar %n flöde automatisktJag uppdaterar %n flöden automatiskt
+
+ Jag uppdaterar %n flöde automatiskt
+ Jag uppdaterar %n flöden automatiskt
+
+
+
+ Cannot update all items
+ Kan inte uppdatera alla objekt
+
+
+ You cannot update all items because another another critical operation is ongoing.
+ Du kan inte uppdatera alla objekt, eftersom en annan kritisk åtgärd pågår.
+
+
+ Feed update started
+ Text display in status bar when feed update is started.
+ Flödesuppdatering startad
+
+
+ Updated feed '%1'
+ Text display in status bar when particular feed is updated.
+ Uppdaterade flödet '%1'
+
+
+ New messages downloaded
+ Nya meddelanden nedladdade
+
+
+ You can't transfer dragged item into different account, this is not supported.
+
+
+
+ Cannot perform drag & drop operation
+
@@ -579,14 +525,6 @@ Uppdateringsstatus: %5
FeedsView
-
- Cannot add standard category
- Kan inte lägga till kategori
-
-
- Cannot add standard feed
- Kan inte lägga till flöde
- Cannot edit itemKan inte redigera objektet
@@ -595,50 +533,10 @@ Uppdateringsstatus: %5
Cannot delete itemKan inte bort objektet
-
- You are about to delete selected feed or category.
- Du är på väg att ta bort markerat flöde eller kategori.
-
-
- Deletion of item failed.
- Borttagningen misslyckades.
-
-
- Selected item was not deleted due to error.
- Objektet togs inte bort, på grund av ett fel.
-
-
- Do you really want to delete selected item?
- Vill du verkligen ta bort markerat objekt?
-
-
- Permanently delete messages
- Ta bort meddelanden permanent
-
-
- You are about to permanenty delete all messages from your recycle bin.
- Du är på väg att permanent ta bort alla meddelanden från papperskorgen.
-
-
- Do you really want to empty your recycle bin?
- Vill du verkligen tömma papperskorgen?
- Context menu for empty spaceKontextmeny för tomt utrymme
-
- Context menu for recycle bin
- Kontextmeny för papperskorgen
-
-
- You cannot add new standard category now because another critical operation is ongoing.
- Du kan inte lägga till ny standardkategori nu, eftersom en annan kritisk åtgärd pågår.
-
-
- You cannot add new standard feed now because another critical operation is ongoing.
- Du kan inte lägga till nytt standardflöde nu, eftersom en annan kritisk åtgärd pågår.
- Selected item cannot be edited because another critical operation is ongoing.Markerat objekt kan inte redigeras, eftersom en annan kritisk åtgärd pågår.
@@ -647,14 +545,43 @@ Uppdateringsstatus: %5
Selected item cannot be deleted because another critical operation is ongoing.Markerat objekt kan inte tas bort, eftersom en annan kritisk åtgärd pågår.
-
- Delete feed/category
- Ta bort flöde/kategori
- Context menu for categoriesKontextmeny för kategorier
+
+ Selected item cannot be edited, this is not (yet?) supported.
+
+
+
+ Deleting "%1"
+
+
+
+ You are about to completely delete item "%1".
+
+
+
+ Are you sure?
+
+
+
+ Cannot delete "%1"
+
+
+
+ This item cannot be deleted because something critically failed. Submit bug report.
+
+
+
+ This item cannot be deleted, because it does not support it
+or this functionality is not implemented yet.
+
+
+
+ Context menu for other items
+
+ FormAbout
@@ -702,10 +629,6 @@ Uppdateringsstatus: %5
<b>%8</b><br><b>Version:</b> %1 (build on %2 with CMake %3)<br><b>Revision:</b> %4<br><b>Build date:</b> %5<br><b>Qt:</b> %6 (compiled against %7)<br><b>%8</b><br><b>Version:</b> %1 (byggd på %2 med CMake %3)<br><b>Revision:</b> %4<br><b>Byggdatum:</b> %5<br><b>Qt:</b> %6 (kompilerad mot %7)<br>
-
- <body>%5 is a (very) tiny feed reader.<br><br>This software is distributed under the terms of GNU General Public License, version 3.<br><br>Contacts:<ul><li><a href="mailto://%1">%1</a> ~email</li><li><a href="%2">%2</a> ~website</li></ul>You can obtain source code for %5 from its website.<br><br><br>Copyright (C) 2011-%3 %4</body>
- <body>%5 är en (mycket) lätt flödesläsare.<br><br>Mjukvaran distribueras under villkoren för GNU General Public Licens, version 3.<br><br>Kontakt:<ul><li><a href="mailto://%1">%1</a> ~e-post</li><li><a href="%2">%2</a> ~webbsida</li></ul>Du kan hämmta källkoden för %5 från webbsidan.<br><br><br>Copyright (C) 2011-%3 %4</body>
- About %1About RSS Guard dialog title.
@@ -735,6 +658,49 @@ Uppdateringsstatus: %5
ResourcesResurser
+
+ <body>%5 is a (very) tiny feed reader.<br><br>This software is distributed under the terms of GNU General Public License, version 3.<br><br>Contacts:<ul><li><a href="mailto://%1">%1</a> ~e-mail</li><li><a href="%2">%2</a> ~website</li></ul>You can obtain source code for %5 from its website.<br><br><br>Copyright (C) 2011-%3 %4</body>
+
+
+
+
+ FormAddAccount
+
+ Add new account
+
+
+
+ Details
+
+
+
+ Name
+ Namn
+
+
+ Version
+ Version
+
+
+ Author
+
+
+
+ Description
+ Beskrivning
+
+
+ Cannot add account
+
+
+
+ Some critical error occurred, report this to developers.
+
+
+
+ This account can be added only once.
+
+ FormBackupDatabaseSettings
@@ -811,134 +777,6 @@ Uppdateringsstatus: %5
Målmappen är godkänd.
-
- FormCategoryDetails
-
- Parent category
- Överordnad kategori
-
-
- Select parent item for your category.
- Välj överordnad mapp för kategorin.
-
-
- Title
- Namn
-
-
- Description
- Beskrivning
-
-
- Icon
- Ikon
-
-
- Select icon for your category.
- Välj ikon för kategorin.
-
-
- Add new category
- Lägg till ny kategori
-
-
- Edit existing category
- Redigera befintlig kategori
-
-
- Cannot add category
- Kan inte lägga till kategori
-
-
- Category was not added due to error.
- Kategorin lades inte till, på grund av något fel.
-
-
- Cannot edit category
- Kan inte redigera kategorin
-
-
- Category was not edited due to error.
- Kategorin kan inte redigeras, på grund av något fel.
-
-
- Category name is ok.
- Kategorinamnet är ok.
-
-
- Category name is too short.
- Kategorinamnet är för kort.
-
-
- Description is empty.
- Beskrivning saknas.
-
-
- Select icon file for the category
- Välj ikonfil för kategorin
-
-
- Images (*.bmp *.jpg *.jpeg *.png *.svg *.tga)
- Bilder (*.bmp *.jpg *.jpeg *.png *.svg *.tga)
-
-
- Select icon
- Välj ikon
-
-
- Cancel
- Avbryt
-
-
- Look in:
- Label to describe the folder for icon file selection dialog.
- Sök i:
-
-
- Icon name:
- Ikonnamn:
-
-
- Icon type:
- Ikontyp:
-
-
- Category title
- Kategorinamn
-
-
- Set title for your category.
- Ange namnet på din kategori.
-
-
- Category description
- Kategoribeskrivning
-
-
- Set description for your category.
- Beskriv din kategori.
-
-
- Icon selection
- Ikonval
-
-
- Load icon from file...
- Hämta ikon från fil...
-
-
- Do not use icon
- Använd ingen ikon
-
-
- Use default icon
- Använd standardikon
-
-
- The description is ok.
- Beskrivningen är ok.
-
-FormDatabaseCleanup
@@ -951,7 +789,10 @@ Uppdateringsstatus: %5
day(s)
- dagdagar
+
+ dag
+ dagar
+ Shrink database file
@@ -1006,389 +847,6 @@ Uppdateringsstatus: %5
Ta bort alla stjärnmärkta meddelanden (inklusive dem i papperskorgen)
-
- FormFeedDetails
-
- Parent category
- Överordnad kategori
-
-
- Select parent item for your feed.
- Välj överordnad mapp för flödet.
-
-
- Type
- Typ
-
-
- Select type of the standard feed.
- Välj flödestyp.
-
-
- Encoding
- Kodning
-
-
- Select encoding of the standard feed. If you are unsure about the encoding, then select "UTF-8" encoding.
- Välj flödeskodning. Välj "UTF-8" om du är osäker på kodningen.
-
-
- Auto-update
- Auto-uppdatering
-
-
- Select the auto-update strategy for this feed. Default auto-update strategy means that the feed will be update in time intervals set in application settings.
- Välj uppdateringsstrategi för flödet. Global auto-uppdatering, innebär att flödet kommer att uppdateras med tidsintervall angivna i programinställningarna.
-
-
- minutes
- minuter
-
-
- Title
- Namn
-
-
- Description
- Beskrivning
-
-
- URL
- URL
-
-
- Fetch it now
- Hämta nu
-
-
- Icon
- Ikon
-
-
- Select icon for your feed.
- Välj ikon för flödet.
-
-
- Some feeds require authentication, including GMail feeds. BASIC, NTLM-2 and DIGEST-MD5 authentication schemes are supported.
- Vissa flöden kräver autentisering, inklusive Gmail-flöden. BASIC, NTLM-2 och DIGEST-MD5 autentisering stöds.
-
-
- Requires authentication
- Kräver autentisering
-
-
- Username
- Användarnamn
-
-
- Password
- Lösenord
-
-
- Fetch metadata
- Hämta metadata
-
-
- Add new feed
- Lägg till nytt flöde
-
-
- Edit existing feed
- Redigera befintligt flöde
-
-
- Feed name is ok.
- Flödesnamnet är ok.
-
-
- Feed name is too short.
- Flödesnamnet är för kort.
-
-
- Description is empty.
- Beskrivning saknas.
-
-
- The url is ok.
- Webbadressen är ok.
-
-
- The url does not meet standard pattern. Does your url start with "http://" or "https://" prefix.
- Webbadressen liknar inte standardmönstret. Börjar din URL med prefixet "http://" eller "https://"?.
-
-
- The url is empty.
- URL saknas.
-
-
- Username is ok or it is not needed.
- Användarnamnet är ok, eller behövs inte.
-
-
- Username is empty.
- Användarnamn saknas.
-
-
- Password is ok or it is not needed.
- Lösenordet är ok, eller behövs inte.
-
-
- Password is empty.
- Lösenord saknas.
-
-
- Select icon file for the feed
- Välj ikonfil för flödet
-
-
- Images (*.bmp *.jpg *.jpeg *.png *.svg *.tga)
- bilder (*.bmp *.jpg *.jpeg *.png *.svg *.tga)
-
-
- Select icon
- Välj ikon
-
-
- Cancel
- Avbryt
-
-
- Look in:
- Label for field with icon file name textbox for selection dialog.
- Sök i:
-
-
- Icon name:
- Ikonnamn:
-
-
- Icon type:
- Ikontyp:
-
-
- Cannot add feed
- Kan inte lägga till flöde
-
-
- Feed was not added due to error.
- Flödet lades inte till, på grund av något fel.
-
-
- Cannot edit feed
- Kan inte redigera flödet
-
-
- All metadata fetched successfully.
- All metadata hämtades korrekt.
-
-
- Feed and icon metadata fetched.
- Flödes- och ikonmetadata hämtad.
-
-
- Result: %1.
- Resultat: %1.
-
-
- Feed or icon metatada not fetched.
- Flödes- eller ikonmetadata hämtades inte.
-
-
- Error: %1.
- Fel: %1.
-
-
- No metadata fetched.
- Ingen metadata hämtades.
-
-
- Feed title
- Flödesnamn
-
-
- Set title for your feed.
- Ange flödets namn.
-
-
- Feed description
- Flödesbeskrivning
-
-
- Set description for your feed.
- Beskriv flödet.
-
-
- Full feed url including scheme
- Flödets fullständiga webbadress (URL)
-
-
- Set url for your feed.
- Ange flödets URL.
-
-
- Set username to access the feed.
- Ange användarnamn för att få åtkomst till flödet.
-
-
- Set password to access the feed.
- Ange lösenord för att få åtkomst till flödet.
-
-
- Icon selection
- Ikonval
-
-
- Load icon from file...
- Hämta ikon från fil...
-
-
- Do not use icon
- Använd ingen ikon
-
-
- Use default icon
- Använd standardikon
-
-
- No metadata fetched so far.
- Ingen metadata hämtad.
-
-
- Auto-update using global interval
- Global auto-uppdatering
-
-
- Auto-update every
- Auto-uppdatera varje
-
-
- Do not auto-update at all
- Ingen auto-uppdatering
-
-
- The description is ok.
- Beskrivningen är ok.
-
-
- Feed was not edited due to error.
- Flödet redigerades inte, på grund av något fel.
-
-
- Icon fetched successfully.
- Ikon hämtades.
-
-
- Icon metadata fetched.
- Ikonmetadata hämtad.
-
-
- Icon metatada not fetched.
- Ikonmetadata hämtades inte.
-
-
- No icon fetched.
- Ikon hämtades inte.
-
-
- Fetch icon from feed
- Hämta ikon från flödet
-
-
-
- FormImportExport
-
- &Select file
- &Välj fil
-
-
- Operation results
- Åtgärdsresultat
-
-
- No file is selected.
- Ingen fil har valts.
-
-
- No operation executed yet.
- Ingen åtgärd slutförd än.
-
-
- Export feeds
- Exportera flöden
-
-
- Destination file
- Målfil
-
-
- Source feeds && categories
- Källflöden && -kategorier
-
-
- Source file
- Källfil
-
-
- Target feeds && categories
- Målflöden && -kategorier
-
-
- Import feeds
- Importera flöden
-
-
- OPML 2.0 files (*.opml)
- OPML 2.0-filer (*.opml)
-
-
- Select file for feeds export
- Välj fil för flödesexport
-
-
- File is selected.
- Fil är vald.
-
-
- Select file for feeds import
- Välj fil för flödesimport
-
-
- Cannot open source file.
- Kan inte öppna källfil.
-
-
- Feeds were loaded.
- Flöden lästes in.
-
-
- Error, file is not well-formed. Select another file.
- Fel! Filen är inte rätt formaterad. Välj en annan fil.
-
-
- Error occurred. File is not well-formed. Select another file.
- Ett fel uppstod. Filen är felformaterad. Välj en annan fil.
-
-
- Feeds were exported successfully.
- Flöden exporterades korrekt.
-
-
- Cannot write into destination file.
- Kan inte skriva till målfilen.
-
-
- Critical error occurred.
- Ett allvarligt fel uppstod.
-
-
- &Check all items
- &Markera alla
-
-
- &Uncheck all items
- &Avmarkera alla
-
-FormMain
@@ -1463,22 +921,6 @@ Uppdateringsstatus: %5
No actions are available right now.Inga åtgärder tillgängliga just nu.
-
- Fee&ds && categories
- &Flöden && kategorier
-
-
- Mark all messages (without message filters) from selected feeds as read.
- Markera alla meddelanden från valda flöden, som lästa.
-
-
- Mark all messages (without message filters) from selected feeds as unread.
- Markera alla meddelanden från valda flöden, som olästa.
-
-
- Displays all messages from selected feeds/categories in a new "newspaper mode" tab. Note that messages are not set as read automatically.
- Visa alla meddelanden från markerade flöden/kategorier i en ny flik, som "tidningsvy". Notera att meddelandena inte automatiskt markeras som lästa.
- Hides main window if it is visible and shows it if it is hidden.Dölj programfönstret om det är synligt, och visa det om det är dolt.
@@ -1503,34 +945,6 @@ Uppdateringsstatus: %5
&Delete selected messages&Ta bort markerade meddelanden
-
- Deletes all messages from selected feeds.
- Ta bort alla meddelanden från markerade flöden.
-
-
- Marks all messages in all feeds read. This does not take message filters into account.
- Markera alla meddelanden i samtliga flöden som lästa. Detta åsidosätter eventuella meddelandefilter.
-
-
- Deletes all messages from all feeds.
- Ta bort alla meddelanden från samtliga flöden.
-
-
- Update &all feeds
- Uppdatera &alla flöden
-
-
- Update &selected feeds
- Uppdatera &markerade flöden
-
-
- &Edit selected feed/category
- &Redigera markerat flöde/kategori
-
-
- &Delete selected feed/category
- &Ta bort markerat flöde/kategori
- SettingsInställningar
@@ -1539,10 +953,6 @@ Uppdateringsstatus: %5
Hides or displays the main menu.Dölj/Visa huvudmenyn.
-
- Add &new feed/category
- Lägg till &nytt flöde/kategori
- &Close all tabs except current one&Stäng alla flikar utom den aktuella
@@ -1559,18 +969,6 @@ Uppdateringsstatus: %5
Mark &selected messages as &unreadMärk markerade &meddelanden som &olästa
-
- &Mark selected feeds as read
- &Märk markerade meddelanden som lästa
-
-
- &Mark selected feeds as unread
- &Märk markerade meddelanden som olästa
-
-
- &Clean selected feeds
- &Rensa markerade flöden
- Open selected source articles in &external browserÖppna markerade källartiklar i &extern webbläsare
@@ -1583,26 +981,6 @@ Uppdateringsstatus: %5
Open selected source articles in &internal browserÖppna markerade källartiklar i &intern webbläsare
-
- &Mark all feeds as &read
- &Markera samtliga flöden som &lästa
-
-
- View selected feeds in &newspaper mode
- Visa markerade flöden som &tidningsvy
-
-
- &Clean all feeds
- &Rensa alla flöden
-
-
- Select &next feed/category
- Gå till &nästa flöde/kategori
-
-
- Select &previous feed/category
- Gå till &föregående flöde/kategori
- Select &next messageGå till &nästa meddelande
@@ -1655,22 +1033,6 @@ Uppdateringsstatus: %5
Cannot open external browser. Navigate to application website manually.Kan inte öppna extern webbläsare. Navigera manuellt till programmets webbsida.
-
- New &feed
- Nytt &flöde
-
-
- Add new feed.
- Lägg till nytt flöde.
-
-
- New &category
- Ny &kategori
-
-
- Add new category.
- Lägg till ny kategori.
- &Toolbars&Verktygsfält
@@ -1683,30 +1045,10 @@ Uppdateringsstatus: %5
&Feed/message list headers&Kolumnrubriker
-
- &Import feeds
- &Importera flöden
-
-
- Imports feeds you want from selected file.
- Importera flöden från fil.
-
-
- &Export feeds
- &Exportera flöden
-
-
- Exports feeds you want to selected file.
- Exportera flöden till fil.
- Close all tabs except current one.Stäng alla flikar utom aktuell.
-
- &Recycle bin
- &Papperskorgen
- Report a &bug (GitHub)...Rapportera ett &fel (GitHub)...
@@ -1723,18 +1065,6 @@ Uppdateringsstatus: %5
Display &wikiVisa &wiki
-
- &Empty recycle bin
- &Töm papperskorgen
-
-
- &Restore all messages
- &Återställ alla meddelanden
-
-
- Restore &selected messages
- Återställ &markerade meddelanden
- &Restart&Starta om
@@ -1764,16 +1094,132 @@ Uppdateringsstatus: %5
&Rensa databasen
- Show only unread feeds/categories
- Visa endast olästa flöden/kategorier
+ Add &new item
+
- &Fetch feed metadata
- &Hämta flödesmetadata
+ Update &all items
+
- &Expand/collapse selected feed/category
- &Expandera/Komprimera markerat flöde/kategori
+ Update &selected items
+
+
+
+ &Edit selected item
+
+
+
+ &Delete selected item
+
+
+
+ &Mark selected items as read
+
+
+
+ Mark all messages (without message filters) from selected items as read.
+
+
+
+ &Mark selected items as unread
+
+
+
+ Mark all messages (without message filters) from selected items as unread.
+
+
+
+ &Clean selected items
+
+
+
+ Deletes all messages from selected items.
+
+
+
+ &Mark all items as &read
+
+
+
+ Marks all messages in all items read. This does not take message filters into account.
+
+
+
+ View selected items in &newspaper mode
+
+
+
+ Displays all messages from selected item in a new "newspaper mode" tab. Note that messages are not set as read automatically.
+
+
+
+ &Clean all items
+
+
+
+ Deletes all messages from all items.
+
+
+
+ Select &next item
+
+
+
+ Select &previous item
+
+
+
+ Show only unread items
+
+
+
+ &Expand/collapse selected item
+
+
+
+ &Add new service account
+
+
+
+ &Restore selected messages
+
+
+
+ No possible actions
+
+
+
+ Feeds && categories && accounts
+
+
+
+ &Recycle bin(s)
+
+
+
+ &Restore all recycle bins
+
+
+
+ &Empty all recycle bins
+
+
+
+ Select next &unread message
+
+
+
+ No recycle bin
+
+
+
+ Restore recycle bin
+
+
+
+ Empty recycle bin
+
@@ -1924,10 +1370,6 @@ Uppdateringsstatus: %5
AuthorÖversättare
-
- Email
- E-post
- Socks5Socks5
@@ -2505,6 +1947,525 @@ File filter for external e-mail selection dialog.
Fancy && modern popup notifications (This uses OS native notifications via D-Bus if available.)Tjusiga && moderna popup-aviseringar (Använder systemets integrerade aviseringar via D-Bus, om tillgängligt.)
+
+ E-mail
+
+
+
+ Enable notifications
+
+
+
+
+ FormStandardCategoryDetails
+
+ Parent category
+ Överordnad kategori
+
+
+ Select parent item for your category.
+ Välj överordnad mapp för kategorin.
+
+
+ Title
+
+
+
+ Description
+ Beskrivning
+
+
+ Icon
+ Ikon
+
+
+ Select icon for your category.
+ Välj ikon för kategorin.
+
+
+ Add new category
+ Lägg till ny kategori
+
+
+ Edit existing category
+ Redigera befintlig kategori
+
+
+ Cannot add category
+ Kan inte lägga till kategori
+
+
+ Category was not added due to error.
+ Kategorin lades inte till, på grund av något fel.
+
+
+ Cannot edit category
+ Kan inte redigera kategorin
+
+
+ Category was not edited due to error.
+ Kategorin kan inte redigeras, på grund av något fel.
+
+
+ Category name is ok.
+ Kategorinamnet är ok.
+
+
+ Category name is too short.
+ Kategorinamnet är för kort.
+
+
+ Description is empty.
+ Beskrivning saknas.
+
+
+ The description is ok.
+ Beskrivningen är ok.
+
+
+ Select icon file for the category
+ Välj ikonfil för kategorin
+
+
+ Images (*.bmp *.jpg *.jpeg *.png *.svg *.tga)
+
+
+
+ Select icon
+ Välj ikon
+
+
+ Cancel
+ Avbryt
+
+
+ Look in:
+ Label to describe the folder for icon file selection dialog.
+ Sök i:
+
+
+ Icon name:
+ Ikonnamn:
+
+
+ Icon type:
+ Ikontyp:
+
+
+ Category title
+ Kategorinamn
+
+
+ Set title for your category.
+ Ange namnet på din kategori.
+
+
+ Category description
+ Kategoribeskrivning
+
+
+ Set description for your category.
+ Beskriv din kategori.
+
+
+ Icon selection
+ Ikonval
+
+
+ Load icon from file...
+ Hämta ikon från fil...
+
+
+ Do not use icon
+ Använd ingen ikon
+
+
+ Use default icon
+ Använd standardikon
+
+
+
+ FormStandardFeedDetails
+
+ Parent category
+ Överordnad kategori
+
+
+ Select parent item for your feed.
+ Välj överordnad mapp för flödet.
+
+
+ Type
+ Typ
+
+
+ Select type of the standard feed.
+ Välj flödestyp.
+
+
+ Encoding
+ Kodning
+
+
+ Select encoding of the standard feed. If you are unsure about the encoding, then select "UTF-8" encoding.
+ Välj flödeskodning. Välj "UTF-8" om du är osäker på kodningen.
+
+
+ Auto-update
+ Auto-uppdatering
+
+
+ Select the auto-update strategy for this feed. Default auto-update strategy means that the feed will be update in time intervals set in application settings.
+ Välj uppdateringsstrategi för flödet. Global auto-uppdatering, innebär att flödet kommer att uppdateras med tidsintervall angivna i programinställningarna.
+
+
+ minutes
+ minuter
+
+
+ Title
+
+
+
+ Description
+ Beskrivning
+
+
+ URL
+ URL
+
+
+ Fetch it now
+ Hämta nu
+
+
+ Icon
+ Ikon
+
+
+ Select icon for your feed.
+ Välj ikon för flödet.
+
+
+ Some feeds require authentication, including GMail feeds. BASIC, NTLM-2 and DIGEST-MD5 authentication schemes are supported.
+ Vissa flöden kräver autentisering, inklusive Gmail-flöden. BASIC, NTLM-2 och DIGEST-MD5 autentisering stöds.
+
+
+ Requires authentication
+ Kräver autentisering
+
+
+ Username
+ Användarnamn
+
+
+ Password
+ Lösenord
+
+
+ Fetch metadata
+ Hämta metadata
+
+
+ Add new feed
+ Lägg till nytt flöde
+
+
+ Edit existing feed
+ Redigera befintligt flöde
+
+
+ Feed name is ok.
+ Flödesnamnet är ok.
+
+
+ Feed name is too short.
+ Flödesnamnet är för kort.
+
+
+ Description is empty.
+ Beskrivning saknas.
+
+
+ The description is ok.
+ Beskrivningen är ok.
+
+
+ The url is ok.
+ Webbadressen är ok.
+
+
+ The url does not meet standard pattern. Does your url start with "http://" or "https://" prefix.
+ Webbadressen liknar inte standardmönstret. Börjar din URL med prefixet "http://" eller "https://"?.
+
+
+ The url is empty.
+ URL saknas.
+
+
+ Username is ok or it is not needed.
+ Användarnamnet är ok, eller behövs inte.
+
+
+ Username is empty.
+ Användarnamn saknas.
+
+
+ Password is ok or it is not needed.
+ Lösenordet är ok, eller behövs inte.
+
+
+ Password is empty.
+ Lösenord saknas.
+
+
+ Select icon file for the feed
+ Välj ikonfil för flödet
+
+
+ Images (*.bmp *.jpg *.jpeg *.png *.svg *.tga)
+
+
+
+ Select icon
+ Välj ikon
+
+
+ Cancel
+ Avbryt
+
+
+ Look in:
+ Label for field with icon file name textbox for selection dialog.
+ Sök i:
+
+
+ Icon name:
+ Ikonnamn:
+
+
+ Icon type:
+ Ikontyp:
+
+
+ Cannot add feed
+ Kan inte lägga till flöde
+
+
+ Feed was not added due to error.
+ Flödet lades inte till, på grund av något fel.
+
+
+ Cannot edit feed
+ Kan inte redigera flödet
+
+
+ Feed was not edited due to error.
+ Flödet redigerades inte, på grund av något fel.
+
+
+ All metadata fetched successfully.
+ All metadata hämtades korrekt.
+
+
+ Feed and icon metadata fetched.
+ Flödes- och ikonmetadata hämtad.
+
+
+ Result: %1.
+ Resultat: %1.
+
+
+ Feed or icon metatada not fetched.
+ Flödes- eller ikonmetadata hämtades inte.
+
+
+ Error: %1.
+ Fel: %1.
+
+
+ No metadata fetched.
+ Ingen metadata hämtades.
+
+
+ Icon fetched successfully.
+ Ikon hämtades.
+
+
+ Icon metadata fetched.
+ Ikonmetadata hämtad.
+
+
+ Icon metatada not fetched.
+ Ikonmetadata hämtades inte.
+
+
+ No icon fetched.
+ Ikon hämtades inte.
+
+
+ Feed title
+ Flödesnamn
+
+
+ Set title for your feed.
+ Ange flödets namn.
+
+
+ Feed description
+ Flödesbeskrivning
+
+
+ Set description for your feed.
+ Beskriv flödet.
+
+
+ Full feed url including scheme
+ Flödets fullständiga webbadress (URL)
+
+
+ Set url for your feed.
+ Ange flödets URL.
+
+
+ Set username to access the feed.
+ Ange användarnamn för att få åtkomst till flödet.
+
+
+ Set password to access the feed.
+ Ange lösenord för att få åtkomst till flödet.
+
+
+ Icon selection
+ Ikonval
+
+
+ Load icon from file...
+ Hämta ikon från fil...
+
+
+ Do not use icon
+ Använd ingen ikon
+
+
+ Use default icon
+ Använd standardikon
+
+
+ Fetch icon from feed
+ Hämta ikon från flödet
+
+
+ No metadata fetched so far.
+ Ingen metadata hämtad.
+
+
+ Auto-update using global interval
+ Global auto-uppdatering
+
+
+ Auto-update every
+ Auto-uppdatera varje
+
+
+ Do not auto-update at all
+ Ingen auto-uppdatering
+
+
+
+ FormStandardImportExport
+
+ &Select file
+ &Välj fil
+
+
+ &Check all items
+ &Markera alla
+
+
+ &Uncheck all items
+ &Avmarkera alla
+
+
+ Operation results
+ Åtgärdsresultat
+
+
+ No file is selected.
+ Ingen fil har valts.
+
+
+ No operation executed yet.
+ Ingen åtgärd slutförd än.
+
+
+ Destination file
+ Målfil
+
+
+ Source feeds && categories
+ Källflöden && -kategorier
+
+
+ Export feeds
+ Exportera flöden
+
+
+ Source file
+ Källfil
+
+
+ Target feeds && categories
+ Målflöden && -kategorier
+
+
+ Import feeds
+ Importera flöden
+
+
+ OPML 2.0 files (*.opml)
+ OPML 2.0-filer (*.opml)
+
+
+ Select file for feeds export
+ Välj fil för flödesexport
+
+
+ File is selected.
+ Fil är vald.
+
+
+ Select file for feeds import
+ Välj fil för flödesimport
+
+
+ Cannot open source file.
+ Kan inte öppna källfil.
+
+
+ Feeds were loaded.
+ Flöden lästes in.
+
+
+ Error, file is not well-formed. Select another file.
+ Fel! Filen är inte rätt formaterad. Välj en annan fil.
+
+
+ Error occurred. File is not well-formed. Select another file.
+ Ett fel uppstod. Filen är felformaterad. Välj en annan fil.
+
+
+ Feeds were exported successfully.
+ Flöden exporterades korrekt.
+
+
+ Cannot write into destination file.
+ Kan inte skriva till målfilen.
+
+
+ Critical error occurred.
+ Ett allvarligt fel uppstod.
+ FormUpdate
@@ -2753,6 +2714,14 @@ Gå till programmets hemsida för att hämta den manuellt.
List of attachments.Lista över bilagor.
+
+ Loading of messages from item '%s' failed.
+
+
+
+ Loading of messages failed, maybe messages could not be downloaded.
+
+ MessagesToolBar
@@ -2926,26 +2895,34 @@ Gå till programmets hemsida för att hämta den manuellt.
LANG_EMAILeson57@gmail.com
-
- Load initial feeds
- Läs in flöden
-
-
- Do you want to load initial set of feeds?
- Vill du läsa in flödesuppsättningen?
- LANG_NAMEName of language, e.g. English.Swedish
-
- You started %1 for the first time, now you can load initial set of feeds.
- Du har startat %1 för första gången. Nu kan du läsa in inledande flödesuppsättning.
+
+
+
++ %n other feeds.
+
+
+
+
- Welcome to %1 %2.
- Välkommen till %1 %2.
+ Welcome to %1.
+
+Please, check NEW stuff included in this
+version by clicking this popup notification.
+
+
+
+ Welcome to %1.
+ Välkommen till %1 %2. {1.?}
+
+
+ Load initial set of feeds
+
@@ -2966,7 +2943,10 @@ Gå till programmets hemsida för att hämta den manuellt.
%n deleted message(s).
- %n borttaget meddelande.%n borttagna meddelanden.
+
+ %n borttaget meddelande.
+ %n borttagna meddelanden.
+
@@ -2984,6 +2964,137 @@ Gå till programmets hemsida för att hämta den manuellt.
Klicka och välj ny snabbtangent.
+
+ StandardCategory
+
+ %1 (category)%2%3
+ Tooltip for standard feed.
+ %1 (kategori)%2%3
+
+
+
+This category does not contain any nested items.
+
+Denna kategori innehåller inga objekt.
+
+
+ %n unread message(s).
+ Tooltip for "unread" column of feed list.
+
+ %n oläst meddelande.
+ %n olästa meddelanden.
+
+
+
+
+ StandardFeed
+
+ Metadata not fetched
+ Metadata hämtades inte
+
+
+ Metadata was not fetched because: %1.
+ Metadata hämtades inte på grund av: %1.
+
+
+ does not use auto-update
+ Describes feed auto-update status.
+ uppdateras inte automatiskt
+
+
+ uses global settings
+ Describes feed auto-update status.
+ Globala inställningar
+
+
+ uses specific settings (%n minute(s) to next auto-update)
+ Describes feed auto-update status.
+
+ Anpassade inställningar. (%n minut till nästa auto-uppdatering)
+ Anpassade inställningar. (%n minuter till nästa auto-uppdatering)
+
+
+
+ %1 (%2)%3
+
+Network status: %6
+Encoding: %4
+Auto-update status: %5
+ Tooltip for feed.
+ %1 (%2)%3
+
+Nätverksstatus: %6
+Kodning: %4
+Uppdateringsstatus: %5
+
+
+ %n unread message(s).
+ Tooltip for "unread" column of feed list.
+
+ %n oläst meddelande.
+ %n olästa meddelanden.
+
+
+
+
+ StandardServiceRoot
+
+ This is obligatory service account for standard RSS/RDF/ATOM feeds.
+
+
+
+ You started %1 for the first time, now you can load initial set of feeds.
+ Du har startat %1 för första gången. Nu kan du läsa in inledande flödesuppsättning.
+
+
+ Do you want to load initial set of feeds?
+ Vill du läsa in flödesuppsättningen?
+
+
+ Error when loading initial feeds
+ Fel vid inläsning av flöden
+
+
+ This is service account for standard RSS/RDF/ATOM feeds.
+
+
+
+ %n unread message(s).
+ Tooltip for "unread" column of feed list.
+
+ %n oläst meddelande.
+ %n olästa meddelanden.
+
+
+
+ Fetch metadata
+ Hämta metadata
+
+
+ Import successfull, but some feeds/categories were not imported due to error.
+ Importen slutfördes, men vissa flöden/kategorier importerades inte på grund av något fel.
+
+
+ Import was completely successfull.
+ Importen slutfördes korrekt.
+
+
+ Add new category
+ Lägg till ny kategori
+
+
+ Add new feed
+ Lägg till nytt flöde
+
+
+ Export feeds
+ Exportera flöden
+
+
+ Import feeds
+ Importera flöden
+
+StatusBar
@@ -3005,6 +3116,10 @@ Gå till programmets hemsida för att hämta den manuellt.
Click the bubble for more information.Klicka på detta meddelande för mer information.
+
+ anonymous
+
+ SystemTrayIcon
@@ -3112,6 +3227,21 @@ Olästa nyheter: %2
Stäng öppna dialogrutor först.
+
+ TtRssServiceRoot
+
+ This is service account TT-RSS (TinyTiny RSS) server.
+
+
+
+ %n unread message(s).
+ Tooltip for "unread" column of feed list.
+
+ %n oläst meddelande.
+ %n olästa meddelanden.
+
+
+WebBrowser
@@ -3183,6 +3313,14 @@ Olästa nyheter: %2
Stop web page loading.Stoppa inläsning av webbsidan.
+
+ Cannot add feed
+ Kan inte lägga till flöde
+
+
+ You cannot add this feed to %1 because standard RSS/ATOM account is not enabled. Enable it first.
+
+ WebView
@@ -3323,4 +3461,4 @@ Olästa nyheter: %2
Sök "%1" via Google...
-
\ No newline at end of file
+
diff --git a/resources/graphics/icons/mini-kfaenza/application-ttrss.png b/resources/graphics/icons/mini-kfaenza/application-ttrss.png
new file mode 100755
index 000000000..15c2ac4d4
Binary files /dev/null and b/resources/graphics/icons/mini-kfaenza/application-ttrss.png differ
diff --git a/resources/graphics/icons/mini-kfaenza/item-sync.png b/resources/graphics/icons/mini-kfaenza/item-sync.png
new file mode 100755
index 000000000..4d025c236
Binary files /dev/null and b/resources/graphics/icons/mini-kfaenza/item-sync.png differ
diff --git a/resources/graphics/icons/numix/application-ttrss.png b/resources/graphics/icons/numix/application-ttrss.png
new file mode 100755
index 000000000..15c2ac4d4
Binary files /dev/null and b/resources/graphics/icons/numix/application-ttrss.png differ
diff --git a/resources/misc/db_init_mysql.sql b/resources/misc/db_init_mysql.sql
index fda045d7c..68e397b7c 100644
--- a/resources/misc/db_init_mysql.sql
+++ b/resources/misc/db_init_mysql.sql
@@ -12,17 +12,40 @@ CREATE TABLE IF NOT EXISTS Information (
inf_value TEXT NOT NULL
);
-- !
-INSERT INTO Information VALUES (1, 'schema_version', '3');
+INSERT INTO Information VALUES (1, 'schema_version', '4');
-- !
+CREATE TABLE IF NOT EXISTS Accounts (
+ id INTEGER PRIMARY KEY,
+ type TEXT NOT NULL
+);
+-- !
+INSERT INTO Accounts (type) VALUES ('std-rss');
+-- !
+CREATE TABLE IF NOT EXISTS TtRssAccounts (
+ id INTEGER,
+ username TEXT NOT NULL,
+ password TEXT,
+ auth_protected INTEGER(1) NOT NULL CHECK (auth_protected >= 0 AND auth_protected <= 1) DEFAULT 0,
+ auth_username TEXT,
+ auth_password TEXT,
+ url TEXT NOT NULL,
+ force_update INTEGER(1) NOT NULL CHECK (force_update >= 0 AND force_update <= 1) DEFAULT 0,
+
+ FOREIGN KEY (id) REFERENCES Accounts (id)
+);
DROP TABLE IF EXISTS Categories;
-- !
CREATE TABLE IF NOT EXISTS Categories (
id INTEGER AUTO_INCREMENT PRIMARY KEY,
parent_id INTEGER NOT NULL,
- title VARCHAR(100) NOT NULL UNIQUE CHECK (title != ''),
+ title VARCHAR(100) NOT NULL CHECK (title != ''),
description TEXT,
- date_created BIGINT NOT NULL CHECK (date_created != 0),
- icon BLOB
+ date_created BIGINT,
+ icon BLOB,
+ account_id INTEGER NOT NULL,
+ custom_id TEXT,
+
+ FOREIGN KEY (account_id) REFERENCES Accounts (id)
);
-- !
DROP TABLE IF EXISTS Feeds;
@@ -31,45 +54,40 @@ CREATE TABLE IF NOT EXISTS Feeds (
id INTEGER AUTO_INCREMENT PRIMARY KEY,
title TEXT NOT NULL CHECK (title != ''),
description TEXT,
- date_created BIGINT NOT NULL CHECK (date_created != 0),
+ date_created BIGINT,
icon BLOB,
category INTEGER NOT NULL CHECK (category >= -1),
- encoding TEXT NOT NULL CHECK (encoding != ''),
- url VARCHAR(100) NOT NULL UNIQUE CHECK (url != ''),
+ encoding TEXT,
+ url VARCHAR(100),
protected INTEGER(1) NOT NULL CHECK (protected >= 0 AND protected <= 1),
username TEXT,
password TEXT,
update_type INTEGER(1) NOT NULL CHECK (update_type >= 0),
- update_interval INTEGER NOT NULL DEFAULT 15 CHECK (update_interval >= 5),
- type INTEGER NOT NULL CHECK (type >= 0)
-);
--- !
-DROP TABLE IF EXISTS FeedsData;
--- !
-CREATE TABLE IF NOT EXISTS FeedsData (
- feed_id INTEGER NOT NULL,
- feed_key VARCHAR(100) NOT NULL,
- feed_value TEXT,
+ update_interval INTEGER NOT NULL CHECK (update_interval >= 5) DEFAULT 15,
+ type INTEGER,
+ account_id INTEGER NOT NULL,
+ custom_id TEXT,
- PRIMARY KEY (feed_id, feed_key),
- FOREIGN KEY (feed_id) REFERENCES Feeds (id)
+ FOREIGN KEY (account_id) REFERENCES Accounts (id)
);
-- !
DROP TABLE IF EXISTS Messages;
-- !
CREATE TABLE IF NOT EXISTS Messages (
id INTEGER AUTO_INCREMENT PRIMARY KEY,
- is_read INTEGER(1) NOT NULL DEFAULT 0 CHECK (is_read >= 0 AND is_read <= 1),
- is_deleted INTEGER(1) NOT NULL DEFAULT 0 CHECK (is_deleted >= 0 AND is_deleted <= 1),
- is_important INTEGER(1) NOT NULL DEFAULT 0 CHECK (is_important >= 0 AND is_important <= 1),
- feed INTEGER NOT NULL,
+ is_read INTEGER(1) NOT NULL CHECK (is_read >= 0 AND is_read <= 1) DEFAULT 0,
+ is_deleted INTEGER(1) NOT NULL CHECK (is_deleted >= 0 AND is_deleted <= 1) DEFAULT 0,
+ is_important INTEGER(1) NOT NULL CHECK (is_important >= 0 AND is_important <= 1) DEFAULT 0 ,
+ feed TEXT NOT NULL,
title TEXT NOT NULL CHECK (title != ''),
- url TEXT NOT NULL,
- author TEXT NOT NULL,
+ url TEXT,
+ author TEXT,
date_created BIGINT NOT NULL CHECK (date_created != 0),
contents TEXT,
- is_pdeleted INTEGER(1) NOT NULL DEFAULT 0 CHECK (is_pdeleted >= 0 AND is_pdeleted <= 1),
+ is_pdeleted INTEGER(1) NOT NULL CHECK (is_pdeleted >= 0 AND is_pdeleted <= 1) DEFAULT 0 ,
enclosures TEXT,
+ account_id INTEGER NOT NULL,
+ custom_id TEXT,
- FOREIGN KEY (feed) REFERENCES Feeds (id)
+ FOREIGN KEY (account_id) REFERENCES Accounts (id)
);
\ No newline at end of file
diff --git a/resources/misc/db_init_sqlite.sql b/resources/misc/db_init_sqlite.sql
index d02ba1a99..d4c20de99 100644
--- a/resources/misc/db_init_sqlite.sql
+++ b/resources/misc/db_init_sqlite.sql
@@ -6,17 +6,41 @@ CREATE TABLE IF NOT EXISTS Information (
inf_value TEXT NOT NULL
);
-- !
-INSERT INTO Information VALUES (1, 'schema_version', '3');
+INSERT INTO Information VALUES (1, 'schema_version', '4');
+-- !
+CREATE TABLE IF NOT EXISTS Accounts (
+ id INTEGER PRIMARY KEY,
+ type TEXT NOT NULL
+);
+-- !
+INSERT INTO Accounts (type) VALUES ('std-rss');
+-- !
+CREATE TABLE IF NOT EXISTS TtRssAccounts (
+ id INTEGER,
+ username TEXT NOT NULL,
+ password TEXT,
+ auth_protected INTEGER(1) NOT NULL CHECK (auth_protected >= 0 AND auth_protected <= 1) DEFAULT 0,
+ auth_username TEXT,
+ auth_password TEXT,
+ url TEXT NOT NULL,
+ force_update INTEGER(1) NOT NULL CHECK (force_update >= 0 AND force_update <= 1) DEFAULT 0,
+
+ FOREIGN KEY (id) REFERENCES Accounts (id)
+);
-- !
DROP TABLE IF EXISTS Categories;
-- !
CREATE TABLE IF NOT EXISTS Categories (
id INTEGER PRIMARY KEY,
parent_id INTEGER NOT NULL,
- title TEXT NOT NULL UNIQUE CHECK (title != ''),
+ title TEXT NOT NULL CHECK (title != ''),
description TEXT,
- date_created INTEGER NOT NULL CHECK (date_created != 0),
- icon BLOB
+ date_created INTEGER,
+ icon BLOB,
+ account_id INTEGER NOT NULL,
+ custom_id TEXT,
+
+ FOREIGN KEY (account_id) REFERENCES Accounts (id)
);
-- !
DROP TABLE IF EXISTS Feeds;
@@ -25,45 +49,40 @@ CREATE TABLE IF NOT EXISTS Feeds (
id INTEGER PRIMARY KEY,
title TEXT NOT NULL CHECK (title != ''),
description TEXT,
- date_created INTEGER NOT NULL CHECK (date_created != 0),
+ date_created INTEGER,
icon BLOB,
category INTEGER NOT NULL CHECK (category >= -1),
- encoding TEXT NOT NULL CHECK (encoding != ''),
- url TEXT NOT NULL UNIQUE CHECK (url != ''),
+ encoding TEXT,
+ url TEXT,
protected INTEGER(1) NOT NULL CHECK (protected >= 0 AND protected <= 1),
username TEXT,
password TEXT,
update_type INTEGER(1) NOT NULL CHECK (update_type >= 0),
update_interval INTEGER NOT NULL CHECK (update_interval >= 5) DEFAULT 15,
- type INTEGER NOT NULL CHECK (type >= 0)
-);
--- !
-DROP TABLE IF EXISTS FeedsData;
--- !
-CREATE TABLE IF NOT EXISTS FeedsData (
- feed_id INTEGER NOT NULL,
- feed_key TEXT NOT NULL,
- feed_value TEXT,
+ type INTEGER,
+ account_id INTEGER NOT NULL,
+ custom_id TEXT,
- PRIMARY KEY (feed_id, feed_key),
- FOREIGN KEY (feed_id) REFERENCES Feeds (id)
+ FOREIGN KEY (account_id) REFERENCES Accounts (id)
);
-- !
DROP TABLE IF EXISTS Messages;
-- !
CREATE TABLE IF NOT EXISTS Messages (
id INTEGER PRIMARY KEY,
- is_read INTEGER(1) NOT NULL CHECK (is_read >= 0 AND is_read <= 1) DEFAULT (0),
- is_deleted INTEGER(1) NOT NULL CHECK (is_deleted >= 0 AND is_deleted <= 1) DEFAULT (0),
- is_important INTEGER(1) NOT NULL CHECK (is_important >= 0 AND is_important <= 1) DEFAULT (0),
- feed INTEGER NOT NULL,
+ is_read INTEGER(1) NOT NULL CHECK (is_read >= 0 AND is_read <= 1) DEFAULT 0,
+ is_deleted INTEGER(1) NOT NULL CHECK (is_deleted >= 0 AND is_deleted <= 1) DEFAULT 0,
+ is_important INTEGER(1) NOT NULL CHECK (is_important >= 0 AND is_important <= 1) DEFAULT 0,
+ feed TEXT NOT NULL,
title TEXT NOT NULL CHECK (title != ''),
- url TEXT NOT NULL,
- author TEXT NOT NULL,
+ url TEXT,
+ author TEXT,
date_created INTEGER NOT NULL CHECK (date_created != 0),
contents TEXT,
- is_pdeleted INTEGER(1) NOT NULL DEFAULT 0 CHECK (is_pdeleted >= 0 AND is_pdeleted <= 1),
+ is_pdeleted INTEGER(1) NOT NULL CHECK (is_pdeleted >= 0 AND is_pdeleted <= 1) DEFAULT 0,
enclosures TEXT,
+ account_id INTEGER NOT NULL,
+ custom_id TEXT,
- FOREIGN KEY (feed) REFERENCES Feeds (id)
+ FOREIGN KEY (account_id) REFERENCES Accounts (id)
);
\ No newline at end of file
diff --git a/resources/misc/db_update_mysql_3_4.sql b/resources/misc/db_update_mysql_3_4.sql
new file mode 100644
index 000000000..f2c27f644
--- /dev/null
+++ b/resources/misc/db_update_mysql_3_4.sql
@@ -0,0 +1,68 @@
+CREATE TABLE Accounts (
+ id INTEGER PRIMARY KEY,
+ type TEXT NOT NULL
+);
+-- !
+INSERT INTO Accounts (type) VALUES ('std-rss');
+-- !
+DROP TABLE IF EXISTS FeedsData;
+-- !
+CREATE TABLE TtRssAccounts (
+ id INTEGER,
+ username TEXT NOT NULL,
+ password TEXT,
+ auth_protected INTEGER(1) NOT NULL CHECK (auth_protected >= 0 AND auth_protected <= 1) DEFAULT 0,
+ auth_username TEXT,
+ auth_password TEXT,
+ url TEXT NOT NULL,
+ force_update INTEGER(1) NOT NULL CHECK (force_update >= 0 AND force_update <= 1) DEFAULT 0,
+
+ FOREIGN KEY (id) REFERENCES Accounts (id)
+);
+-- !
+ALTER TABLE Messages
+ADD COLUMN account_id INTEGER NOT NULL DEFAULT 1;
+-- !
+ALTER TABLE Messages
+ADD COLUMN custom_id TEXT;
+-- !
+ALTER TABLE Messages
+DROP FOREIGN KEY feed;
+-- !
+ALTER TABLE Messages
+MODIFY feed TEXT NOT NULL;
+-- !
+ALTER TABLE Messages
+MODIFY author TEXT;
+-- !
+ALTER TABLE Messages
+MODIFY url TEXT;
+-- !
+ALTER TABLE Feeds
+ADD COLUMN account_id INTEGER NOT NULL DEFAULT 1;
+-- !
+ALTER TABLE Feeds
+ADD COLUMN custom_id TEXT;
+-- !
+ALTER TABLE Feeds
+MODIFY date_created BIGINT;
+-- !
+ALTER TABLE Feeds
+MODIFY encoding TEXT;
+-- !
+ALTER TABLE Feeds
+MODIFY url VARCHAR(100);
+-- !
+ALTER TABLE Feeds
+MODIFY type INTEGER;
+-- !
+ALTER TABLE Categories
+ADD COLUMN account_id INTEGER NOT NULL DEFAULT 1;
+-- !
+ALTER TABLE Categories
+ADD COLUMN custom_id TEXT;
+-- !
+ALTER TABLE Categories
+MODIFY date_created BIGINT;
+-- !
+UPDATE Information SET inf_value = '4' WHERE inf_key = 'schema_version';
\ No newline at end of file
diff --git a/resources/misc/db_update_sqlite_3_4.sql b/resources/misc/db_update_sqlite_3_4.sql
new file mode 100644
index 000000000..7366f1b5e
--- /dev/null
+++ b/resources/misc/db_update_sqlite_3_4.sql
@@ -0,0 +1,103 @@
+CREATE TABLE Accounts (
+ id INTEGER PRIMARY KEY,
+ type TEXT NOT NULL
+);
+-- !
+INSERT INTO Accounts (type) VALUES ('std-rss');
+-- !
+DROP TABLE IF EXISTS FeedsData;
+-- !
+CREATE TABLE TtRssAccounts (
+ id INTEGER,
+ username TEXT NOT NULL,
+ password TEXT,
+ auth_protected INTEGER(1) NOT NULL CHECK (auth_protected >= 0 AND auth_protected <= 1) DEFAULT 0,
+ auth_username TEXT,
+ auth_password TEXT,
+ url TEXT NOT NULL,
+ force_update INTEGER(1) NOT NULL CHECK (force_update >= 0 AND force_update <= 1) DEFAULT 0,
+
+ FOREIGN KEY (id) REFERENCES Accounts (id)
+);
+-- !
+CREATE TABLE backup_Messages AS SELECT * FROM Messages;
+-- !
+DROP TABLE Messages;
+-- !
+CREATE TABLE Messages (
+ id INTEGER PRIMARY KEY,
+ is_read INTEGER(1) NOT NULL CHECK (is_read >= 0 AND is_read <= 1) DEFAULT 0,
+ is_deleted INTEGER(1) NOT NULL CHECK (is_deleted >= 0 AND is_deleted <= 1) DEFAULT 0,
+ is_important INTEGER(1) NOT NULL CHECK (is_important >= 0 AND is_important <= 1) DEFAULT 0,
+ feed TEXT NOT NULL,
+ title TEXT NOT NULL CHECK (title != ''),
+ url TEXT,
+ author TEXT,
+ date_created INTEGER NOT NULL CHECK (date_created != 0),
+ contents TEXT,
+ is_pdeleted INTEGER(1) NOT NULL CHECK (is_pdeleted >= 0 AND is_pdeleted <= 1) DEFAULT 0,
+ enclosures TEXT,
+ account_id INTEGER NOT NULL,
+ custom_id TEXT,
+
+ FOREIGN KEY (account_id) REFERENCES Accounts (id)
+);
+-- !
+INSERT INTO Messages (id, is_read, is_deleted, is_important, feed, title, url, author, date_created, contents, is_pdeleted, enclosures, account_id)
+SELECT id, is_read, is_deleted, is_important, feed, title, url, author, date_created, contents, is_pdeleted, enclosures, 1 FROM backup_Messages;
+-- !
+DROP TABLE backup_Messages;
+-- !
+CREATE TABLE backup_Feeds AS SELECT * FROM Feeds;
+-- !
+DROP TABLE Feeds;
+-- !
+CREATE TABLE Feeds (
+ id INTEGER PRIMARY KEY,
+ title TEXT NOT NULL CHECK (title != ''),
+ description TEXT,
+ date_created INTEGER,
+ icon BLOB,
+ category INTEGER NOT NULL CHECK (category >= -1),
+ encoding TEXT,
+ url TEXT,
+ protected INTEGER(1) NOT NULL CHECK (protected >= 0 AND protected <= 1),
+ username TEXT,
+ password TEXT,
+ update_type INTEGER(1) NOT NULL CHECK (update_type >= 0),
+ update_interval INTEGER NOT NULL CHECK (update_interval >= 5) DEFAULT 15,
+ type INTEGER,
+ account_id INTEGER NOT NULL,
+ custom_id TEXT,
+
+ FOREIGN KEY (account_id) REFERENCES Accounts (id)
+);
+-- !
+INSERT INTO Feeds (id, title, description, date_created, icon, category, encoding, url, protected, username, password, update_type, update_type, type, account_id)
+SELECT id, title, description, date_created, icon, category, encoding, url, protected, username, password, update_type, update_type, type, 1 FROM backup_Feeds;
+-- !
+DROP TABLE backup_Feeds;
+-- !
+CREATE TABLE backup_Categories AS SELECT * FROM Categories;
+-- !
+DROP TABLE Categories;
+-- !
+CREATE TABLE Categories (
+ id INTEGER PRIMARY KEY,
+ parent_id INTEGER NOT NULL,
+ title TEXT NOT NULL CHECK (title != ''),
+ description TEXT,
+ date_created INTEGER,
+ icon BLOB,
+ account_id INTEGER NOT NULL,
+ custom_id TEXT,
+
+ FOREIGN KEY (account_id) REFERENCES Accounts (id)
+);
+-- !
+INSERT INTO Categories (id, parent_id, title, description, date_created, icon, account_id)
+SELECT id, parent_id, title, description, date_created, icon, 1 FROM backup_Categories;
+-- !
+DROP TABLE backup_Categories;
+-- !
+UPDATE Information SET inf_value = '4' WHERE inf_key = 'schema_version';
\ No newline at end of file
diff --git a/resources/text/CHANGELOG b/resources/text/CHANGELOG
index 936cec063..dbf432f47 100644
--- a/resources/text/CHANGELOG
+++ b/resources/text/CHANGELOG
@@ -12,6 +12,30 @@
+
3.0.0
+
+ Added:
+
+
Brand new "service plugin system" - HIGHLY EXPERIMENTAL and REWRITTEN from scratch. Expect bugs and misunderstandings now! Major parts of RSS Guard were completely rewritten. Note that some functionality might be TEMPORARILY removed.
+
Added ability to completely disable notifications (bug #128).
+
Added ability to hide status bar.
+
Added ability to go to next unread message. (partially bug #112)
Solved problem when user selects HUGE number of individual messages and marks them read/unread. Reselecting them after change may cause RSS Guard to hang.
+
Better info in popup notification when many feeds are updated.
+
Fixed obtaining of contents in RSS 2.0 feed entries. (bug #130)
+
Improved popup informing about changes in newly installed version.
+
Icons in notification popups are now smaller (22 x 22 pixels).
+
Encoding selection widget in feed add/edit dialog now detects encodings via case insensitive string matching.
+
When removing download item from download manager via DELETE key, then "Cleanup" button is correctly disabled.
+
+
+
2.5.2
Added:
diff --git a/src/core/feeddownloader.cpp b/src/core/feeddownloader.cpp
old mode 100644
new mode 100755
index 8482e11a6..22d331a31
--- a/src/core/feeddownloader.cpp
+++ b/src/core/feeddownloader.cpp
@@ -17,11 +17,12 @@
#include "core/feeddownloader.h"
-#include "core/feed.h"
+#include "services/abstract/feed.h"
#include "definitions/definitions.h"
#include
#include
+#include
FeedDownloader::FeedDownloader(QObject *parent) : QObject(parent) {
@@ -32,7 +33,7 @@ FeedDownloader::~FeedDownloader() {
qDebug("Destroying FeedDownloader instance.");
}
-void FeedDownloader::updateFeeds(const QList &feeds) {
+void FeedDownloader::updateFeeds(const QList &feeds) {
qDebug().nospace() << "Performing feed updates in thread: \'" << QThread::currentThreadId() << "\'.";
// Job starts now.
@@ -66,10 +67,15 @@ QString FeedDownloadResults::getOverview(int how_many_feeds) {
QStringList result;
- // TODO: Maybe enhance the formatting of this output.
for (int i = 0, number_items_output = qMin(how_many_feeds, m_updatedFeeds.size()); i < number_items_output; i++) {
result.append(m_updatedFeeds.at(i).first + QSL(": ") + QString::number(m_updatedFeeds.at(i).second));
}
- return result.join(QSL("\n"));
+ QString res_str = result.join(QSL("\n"));
+
+ if (m_updatedFeeds.size() > how_many_feeds) {
+ res_str += QObject::tr("\n\n+ %n other feeds.", 0, m_updatedFeeds.size() - how_many_feeds);
+ }
+
+ return res_str;
}
diff --git a/src/core/feeddownloader.h b/src/core/feeddownloader.h
old mode 100644
new mode 100755
diff --git a/src/core/feedsmodel.cpp b/src/core/feedsmodel.cpp
index f78b4dd23..2a2a3164d 100755
--- a/src/core/feedsmodel.cpp
+++ b/src/core/feedsmodel.cpp
@@ -18,16 +18,22 @@
#include "core/feedsmodel.h"
#include "definitions/definitions.h"
-#include "core/category.h"
-#include "core/feed.h"
-#include "core/recyclebin.h"
-#include "core/feedsimportexportmodel.h"
+#include "services/abstract/feed.h"
+#include "services/abstract/category.h"
+#include "services/abstract/serviceroot.h"
+#include "services/abstract/recyclebin.h"
+#include "services/standard/standardserviceroot.h"
#include "miscellaneous/textfactory.h"
#include "miscellaneous/databasefactory.h"
+#include "miscellaneous/databasecleaner.h"
#include "miscellaneous/iconfactory.h"
#include "miscellaneous/mutex.h"
#include "gui/messagebox.h"
+#include "gui/statusbar.h"
+#include "gui/dialogs/formmain.h"
+#include "core/feeddownloader.h"
+#include
#include
#include
#include
@@ -40,7 +46,9 @@
FeedsModel::FeedsModel(QObject *parent)
- : QAbstractItemModel(parent), m_recycleBin(new RecycleBin()), m_autoUpdateTimer(new QTimer(this)) {
+ : QAbstractItemModel(parent), m_autoUpdateTimer(new QTimer(this)),
+ m_feedDownloaderThread(NULL), m_feedDownloader(NULL),
+ m_dbCleanerThread(NULL), m_dbCleaner(NULL) {
setObjectName(QSL("FeedsModel"));
// Create root item.
@@ -62,15 +70,17 @@ FeedsModel::FeedsModel(QObject *parent)
connect(m_autoUpdateTimer, SIGNAL(timeout()), this, SLOT(executeNextAutoUpdate()));
- loadFromDatabase();
-
- // Setup the timer.
+ //loadActivatedServiceAccounts();
updateAutoUpdateStatus();
}
FeedsModel::~FeedsModel() {
qDebug("Destroying FeedsModel instance.");
+ foreach (ServiceRoot *account, serviceRoots()) {
+ account->stop();
+ }
+
// Delete all model items.
delete m_rootItem;
}
@@ -79,6 +89,214 @@ void FeedsModel::quit() {
if (m_autoUpdateTimer->isActive()) {
m_autoUpdateTimer->stop();
}
+
+ // Close worker threads.
+ if (m_feedDownloaderThread != NULL && m_feedDownloaderThread->isRunning()) {
+ qDebug("Quitting feed downloader thread.");
+ m_feedDownloaderThread->quit();
+
+ if (!m_feedDownloaderThread->wait(CLOSE_LOCK_TIMEOUT)) {
+ qCritical("Feed downloader thread is running despite it was told to quit. Terminating it.");
+ m_feedDownloaderThread->terminate();
+ }
+ }
+
+ if (m_dbCleanerThread != NULL && m_dbCleanerThread->isRunning()) {
+ qDebug("Quitting database cleaner thread.");
+ m_dbCleanerThread->quit();
+
+ if (!m_dbCleanerThread->wait(CLOSE_LOCK_TIMEOUT)) {
+ qCritical("Database cleaner thread is running despite it was told to quit. Terminating it.");
+ m_dbCleanerThread->terminate();
+ }
+ }
+
+ // Close workers.
+ if (m_feedDownloader != NULL) {
+ qDebug("Feed downloader exists. Deleting it from memory.");
+ m_feedDownloader->deleteLater();
+ }
+
+ if (m_dbCleaner != NULL) {
+ qDebug("Database cleaner exists. Deleting it from memory.");
+ m_dbCleaner->deleteLater();
+ }
+
+ if (qApp->settings()->value(GROUP(Messages), SETTING(Messages::ClearReadOnExit)).toBool()) {
+ markItemCleared(m_rootItem, true);
+ }
+}
+
+void FeedsModel::updateFeeds(const QList &feeds) {
+ if (!qApp->feedUpdateLock()->tryLock()) {
+ qApp->showGuiMessage(tr("Cannot update all items"),
+ tr("You cannot update all items because another another critical operation is ongoing."),
+ QSystemTrayIcon::Warning, qApp->mainForm(), true);
+ return;
+ }
+
+ if (m_feedDownloader == NULL) {
+ m_feedDownloader = new FeedDownloader();
+ m_feedDownloaderThread = new QThread();
+
+ // Downloader setup.
+ qRegisterMetaType >("QList");
+ m_feedDownloader->moveToThread(m_feedDownloaderThread);
+
+ connect(this, SIGNAL(feedsUpdateRequested(QList)), m_feedDownloader, SLOT(updateFeeds(QList)));
+ connect(m_feedDownloaderThread, SIGNAL(finished()), m_feedDownloaderThread, SLOT(deleteLater()));
+ connect(m_feedDownloader, SIGNAL(finished(FeedDownloadResults)), this, SLOT(onFeedUpdatesFinished(FeedDownloadResults)));
+ connect(m_feedDownloader, SIGNAL(started()), this, SLOT(onFeedUpdatesStarted()));
+ connect(m_feedDownloader, SIGNAL(progress(Feed*,int,int)), this, SLOT(onFeedUpdatesProgress(Feed*,int,int)));
+
+ // Connections are made, start the feed downloader thread.
+ m_feedDownloaderThread->start();
+ }
+
+ emit feedsUpdateRequested(feeds);
+}
+
+void FeedsModel::onFeedUpdatesStarted() {
+ //: Text display in status bar when feed update is started.
+ qApp->mainForm()->statusBar()->showProgressFeeds(0, tr("Feed update started"));
+}
+
+void FeedsModel::onFeedUpdatesProgress(Feed *feed, int current, int total) {
+ // Some feed got updated.
+ qApp->mainForm()->statusBar()->showProgressFeeds((current * 100.0) / total,
+ //: Text display in status bar when particular feed is updated.
+ tr("Updated feed '%1'").arg(feed->title()));
+}
+
+void FeedsModel::onFeedUpdatesFinished(FeedDownloadResults results) {
+ qApp->feedUpdateLock()->unlock();
+ qApp->mainForm()->statusBar()->clearProgressFeeds();
+
+ if (!results.m_updatedFeeds.isEmpty()) {
+ // Now, inform about results via GUI message/notification.
+ qApp->showGuiMessage(tr("New messages downloaded"), results.getOverview(10), QSystemTrayIcon::NoIcon,
+ 0, false, qApp->icons()->fromTheme(QSL("item-update-all")));
+ }
+
+ emit feedsUpdateFinished();
+}
+
+void FeedsModel::updateAllFeeds() {
+ updateFeeds(m_rootItem->getSubTreeFeeds());
+}
+
+
+DatabaseCleaner *FeedsModel::databaseCleaner() {
+ if (m_dbCleaner == NULL) {
+ m_dbCleaner = new DatabaseCleaner();
+ m_dbCleanerThread = new QThread();
+
+ // Downloader setup.
+ qRegisterMetaType("CleanerOrders");
+ m_dbCleaner->moveToThread(m_dbCleanerThread);
+ connect(m_dbCleanerThread, SIGNAL(finished()), m_dbCleanerThread, SLOT(deleteLater()));
+
+ // Connections are made, start the feed downloader thread.
+ m_dbCleanerThread->start();
+ }
+
+ return m_dbCleaner;
+}
+
+QMimeData *FeedsModel::mimeData(const QModelIndexList &indexes) const {
+ QMimeData *mime_data = new QMimeData();
+ QByteArray encoded_data;
+ QDataStream stream(&encoded_data, QIODevice::WriteOnly);
+
+ foreach (const QModelIndex &index, indexes) {
+ if (index.column() != 0) {
+ continue;
+ }
+
+ RootItem *item_for_index = itemForIndex(index);
+
+ if (item_for_index->kind() != RootItemKind::Root) {
+ stream << (quintptr) item_for_index;
+ }
+ }
+
+ mime_data->setData(MIME_TYPE_ITEM_POINTER, encoded_data);
+ return mime_data;
+}
+
+QStringList FeedsModel::mimeTypes() const {
+ return QStringList() << MIME_TYPE_ITEM_POINTER;
+}
+
+bool FeedsModel::dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent) {
+ Q_UNUSED(row)
+ Q_UNUSED(column)
+
+ if (action == Qt::IgnoreAction) {
+ return true;
+ }
+ else if (action != Qt::MoveAction) {
+ return false;
+ }
+
+ QByteArray dragged_items_data = data->data(MIME_TYPE_ITEM_POINTER);
+
+ if (dragged_items_data.isEmpty()) {
+ return false;
+ }
+ else {
+ QDataStream stream(&dragged_items_data, QIODevice::ReadOnly);
+
+ while (!stream.atEnd()) {
+ quintptr pointer_to_item;
+ stream >> pointer_to_item;
+
+ // We have item we want to drag, we also determine the target item.
+ RootItem *dragged_item = (RootItem*) pointer_to_item;
+ RootItem *target_item = itemForIndex(parent);
+ ServiceRoot *dragged_item_root = dragged_item->getParentServiceRoot();
+ ServiceRoot *target_item_root = target_item->getParentServiceRoot();
+
+ if (dragged_item == target_item || dragged_item->parent() == target_item) {
+ qDebug("Dragged item is equal to target item or its parent is equal to target item. Cancelling drag-drop action.");
+ return false;
+ }
+
+ if (dragged_item_root != target_item_root) {
+ // Transferring of items between different accounts is not possible.
+ qApp->showGuiMessage(tr("Cannot perform drag & drop operation"),
+ tr("You can't transfer dragged item into different account, this is not supported."),
+ QSystemTrayIcon::Warning,
+ qApp->mainForm(),
+ true);
+
+ qDebug("Dragged item cannot be dragged into different account. Cancelling drag-drop action.");
+ return false;
+ }
+
+ if (dragged_item->performDragDropChange(target_item)) {
+ // Drag & drop is supported by the dragged item and was
+ // completed on data level and in item hierarchy.
+ emit requireItemValidationAfterDragDrop(indexForItem(dragged_item));
+ }
+ }
+
+ return true;
+ }
+
+ return false;
+}
+
+Qt::DropActions FeedsModel::supportedDropActions() const {
+ return Qt::MoveAction;
+}
+
+Qt::ItemFlags FeedsModel::flags(const QModelIndex &index) const {
+ Qt::ItemFlags base_flags = QAbstractItemModel::flags(index);
+ RootItem *item_for_index = itemForIndex(index);
+ Qt::ItemFlags additional_flags = item_for_index->additionalFlags();
+
+ return base_flags | additional_flags;
}
void FeedsModel::executeNextAutoUpdate() {
@@ -137,116 +355,6 @@ void FeedsModel::updateAutoUpdateStatus() {
}
}
-QMimeData *FeedsModel::mimeData(const QModelIndexList &indexes) const {
- QMimeData *mime_data = new QMimeData();
- QByteArray encoded_data;
- QDataStream stream(&encoded_data, QIODevice::WriteOnly);
-
- foreach (const QModelIndex &index, indexes) {
- if (index.column() != 0) {
- continue;
- }
-
- RootItem *item_for_index = itemForIndex(index);
-
- if (item_for_index->kind() != RootItem::Root) {
- stream << (quintptr) item_for_index;
- }
- }
-
- mime_data->setData(MIME_TYPE_ITEM_POINTER, encoded_data);
- return mime_data;
-}
-
-QStringList FeedsModel::mimeTypes() const {
- return QStringList() << MIME_TYPE_ITEM_POINTER;
-}
-
-bool FeedsModel::dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent) {
- Q_UNUSED(row)
- Q_UNUSED(column)
-
- if (action == Qt::IgnoreAction) {
- return true;
- }
- else if (action != Qt::MoveAction) {
- return false;
- }
-
- QByteArray dragged_items_data = data->data(MIME_TYPE_ITEM_POINTER);
-
- if (dragged_items_data.isEmpty()) {
- return false;
- }
- else {
- QDataStream stream(&dragged_items_data, QIODevice::ReadOnly);
-
- while (!stream.atEnd()) {
- quintptr pointer_to_item;
- stream >> pointer_to_item;
-
- // We have item we want to drag, we also determine the target item.
- RootItem *dragged_item = (RootItem*) pointer_to_item;
- RootItem *target_item = itemForIndex(parent);
-
- if (dragged_item == target_item || dragged_item->parent() == target_item) {
- qDebug("Dragged item is equal to target item or its parent is equal to target item. Cancelling drag-drop action.");
- return false;
- }
-
- if (dragged_item->kind() == RootItem::Feeed) {
- qDebug("Drag-drop action for feed '%s' detected, editing the feed.", qPrintable(dragged_item->title()));
-
- Feed *actual_feed = dragged_item->toFeed();
- Feed *feed_new = new Feed(*actual_feed);
-
- feed_new->setParent(target_item);
- editFeed(actual_feed, feed_new);
-
- emit requireItemValidationAfterDragDrop(indexForItem(actual_feed));
- }
- else if (dragged_item->kind() == RootItem::Cattegory) {
- qDebug("Drag-drop action for category '%s' detected, editing the feed.", qPrintable(dragged_item->title()));
-
- Category *actual_category = dragged_item->toCategory();
- Category *category_new = new Category(*actual_category);
-
- category_new->clearChildren();
- category_new->setParent(target_item);
- editCategory(actual_category, category_new);
-
- emit requireItemValidationAfterDragDrop(indexForItem(actual_category));
- }
- }
-
- return true;
- }
-}
-
-Qt::DropActions FeedsModel::supportedDropActions() const {
- return Qt::MoveAction;
-}
-
-Qt::ItemFlags FeedsModel::flags(const QModelIndex &index) const {
- Qt::ItemFlags base_flags = QAbstractItemModel::flags(index);
- RootItem *item_for_index = itemForIndex(index);
-
- switch (item_for_index->kind()) {
- case RootItem::Bin:
- return base_flags;
-
- case RootItem::Cattegory:
- return base_flags | Qt::ItemIsDragEnabled | Qt::ItemIsDropEnabled;
-
- case RootItem::Feeed:
- return base_flags | Qt::ItemIsDragEnabled;
-
- case RootItem::Root:
- default:
- return base_flags | Qt::ItemIsDropEnabled;
- }
-}
-
QVariant FeedsModel::headerData(int section, Qt::Orientation orientation, int role) const {
if (orientation != Qt::Horizontal) {
return QVariant();
@@ -318,118 +426,98 @@ int FeedsModel::rowCount(const QModelIndex &parent) const {
}
}
-bool FeedsModel::removeItem(const QModelIndex &index) {
+void FeedsModel::reloadCountsOfWholeModel() {
+ m_rootItem->updateCounts(true);
+ reloadWholeLayout();
+ notifyWithCounts();
+}
+
+void FeedsModel::removeItem(const QModelIndex &index) {
if (index.isValid()) {
- QModelIndex parent_index = index.parent();
RootItem *deleting_item = itemForIndex(index);
+ QModelIndex parent_index = index.parent();
RootItem *parent_item = deleting_item->parent();
- // Try to persistently remove the item.
- if (deleting_item->removeItself()) {
- // Item was persistently removed.
- // Remove it from the model.
- beginRemoveRows(parent_index, index.row(), index.row());
- parent_item->removeChild(deleting_item);
- endRemoveRows();
+ beginRemoveRows(parent_index, index.row(), index.row());
+ parent_item->removeChild(deleting_item);
+ endRemoveRows();
- delete deleting_item;
+ deleting_item->deleteLater();
+ notifyWithCounts();
+ }
+}
+
+void FeedsModel::removeItem(RootItem *deleting_item) {
+ if (deleting_item != NULL) {
+ QModelIndex index = indexForItem(deleting_item);
+ QModelIndex parent_index = index.parent();
+ RootItem *parent_item = deleting_item->parent();
+
+ beginRemoveRows(parent_index, index.row(), index.row());
+ parent_item->removeChild(deleting_item);
+ endRemoveRows();
+
+ deleting_item->deleteLater();
+ notifyWithCounts();
+ }
+}
+
+void FeedsModel::reassignNodeToNewParent(RootItem *original_node, RootItem *new_parent) {
+ RootItem *original_parent = original_node->parent();
+
+ if (original_parent != new_parent) {
+ if (original_parent != NULL) {
+ int original_index_of_item = original_parent->childItems().indexOf(original_node);
+
+ if (original_index_of_item >= 0) {
+ // Remove the original item from the model...
+ beginRemoveRows(indexForItem(original_parent), original_index_of_item, original_index_of_item);
+ original_parent->removeChild(original_node);
+ endRemoveRows();
+ }
+ }
+
+ int new_index_of_item = new_parent->childCount();
+
+ // ... and insert it under the new parent.
+ beginInsertRows(indexForItem(new_parent), new_index_of_item, new_index_of_item);
+ new_parent->appendChild(original_node);
+ endInsertRows();
+ }
+}
+
+QList FeedsModel::serviceRoots() {
+ QList roots;
+
+ foreach (RootItem *root, m_rootItem->childItems()) {
+ if (root->kind() == RootItemKind::ServiceRoot) {
+ roots.append(root->toServiceRoot());
+ }
+ }
+
+ return roots;
+}
+
+bool FeedsModel::containsServiceRootFromEntryPoint(ServiceEntryPoint *point) {
+ foreach (RootItem *root, serviceRoots()) {
+ if (root->toServiceRoot()->code() == point->code()) {
return true;
}
}
- // Item was not removed successfully.
return false;
}
-bool FeedsModel::addCategory(Category *category, RootItem *parent) {
- // Get index of parent item (parent standard category).
- QModelIndex parent_index = indexForItem(parent);
- bool result = category->addItself(parent);
+StandardServiceRoot *FeedsModel::standardServiceRoot() {
+ foreach (RootItem *root, serviceRoots()) {
+ StandardServiceRoot *std_service_root;
- if (result) {
- // Category was added to the persistent storage,
- // so add it to the model.
- beginInsertRows(parent_index, parent->childCount(), parent->childCount());
- parent->appendChild(category);
- endInsertRows();
- }
- else {
- // We cannot delete (*this) in its method, thus delete it here.
- delete category;
+ if ((std_service_root = dynamic_cast(root)) != NULL) {
+ return std_service_root;
+ }
}
- return result;
-}
-
-bool FeedsModel::editCategory(Category *original_category, Category *new_category_data) {
- RootItem *original_parent = original_category->parent();
- RootItem *new_parent = new_category_data->parent();
- bool result = original_category->editItself(new_category_data);
-
- if (result && original_parent != new_parent) {
- // User edited category and set it new parent item,
- // se we need to move the item in the model too.
- int original_index_of_category = original_parent->childItems().indexOf(original_category);
- int new_index_of_category = new_parent->childCount();
-
- // Remove the original item from the model...
- beginRemoveRows(indexForItem(original_parent), original_index_of_category, original_index_of_category);
- original_parent->removeChild(original_category);
- endRemoveRows();
-
- // ...and insert it under the new parent.
- beginInsertRows(indexForItem(new_parent), new_index_of_category, new_index_of_category);
- new_parent->appendChild(original_category);
- endInsertRows();
- }
-
- // Cleanup temporary new category data.
- delete new_category_data;
- return result;
-}
-
-bool FeedsModel::addFeed(Feed *feed, RootItem *parent) {
- // Get index of parent item (parent standard category or root item).
- QModelIndex parent_index = indexForItem(parent);
- bool result = feed->addItself(parent);
-
- if (result) {
- // Feed was added to the persistent storage so add it to the model.
- beginInsertRows(parent_index, parent->childCount(), parent->childCount());
- parent->appendChild(feed);
- endInsertRows();
- }
- else {
- delete feed;
- }
-
- return result;
-}
-
-bool FeedsModel::editFeed(Feed *original_feed, Feed *new_feed_data) {
- RootItem *original_parent = original_feed->parent();
- RootItem *new_parent = new_feed_data->parent();
- bool result = original_feed->editItself(new_feed_data);
-
- if (result && original_parent != new_parent) {
- // User edited category and set it new parent item,
- // se we need to move the item in the model too.
- int original_index_of_feed = original_parent->childItems().indexOf(original_feed);
- int new_index_of_feed = new_parent->childCount();
-
- // Remove the original item from the model...
- beginRemoveRows(indexForItem(original_parent), original_index_of_feed, original_index_of_feed);
- original_parent->removeChild(original_feed);
- endRemoveRows();
-
- // ... and insert it under the new parent.
- beginInsertRows(indexForItem(new_parent), new_index_of_feed, new_index_of_feed);
- new_parent->appendChild(original_feed);
- endInsertRows();
- }
-
- delete new_feed_data;
- return result;
+ return NULL;
}
QList FeedsModel::feedsForScheduledUpdate(bool auto_update_now) {
@@ -471,37 +559,8 @@ QList FeedsModel::feedsForScheduledUpdate(bool auto_update_now) {
return feeds_for_update;
}
-QList FeedsModel::messagesForFeeds(const QList &feeds) {
- QList messages;
-
- QSqlDatabase database = qApp->database()->connection(objectName(),
- DatabaseFactory::FromSettings);
- QSqlQuery query_read_msg(database);
- query_read_msg.setForwardOnly(true);
- query_read_msg.prepare("SELECT title, url, author, date_created, contents "
- "FROM Messages "
- "WHERE is_deleted = 0 AND feed = :feed;");
-
- foreach (Feed *feed, feeds) {
- query_read_msg.bindValue(QSL(":feed"), feed->id());
-
- if (query_read_msg.exec()) {
- while (query_read_msg.next()) {
- Message message;
-
- message.m_feedId = feed->id();
- message.m_title = query_read_msg.value(0).toString();
- message.m_url = query_read_msg.value(1).toString();
- message.m_author = query_read_msg.value(2).toString();
- message.m_created = TextFactory::parseDateTime(query_read_msg.value(3).value());
- message.m_contents = query_read_msg.value(4).toString();
-
- messages.append(message);
- }
- }
- }
-
- return messages;
+QList FeedsModel::messagesForItem(RootItem *item) {
+ return item->undeletedMessages();
}
int FeedsModel::columnCount(const QModelIndex &parent) const {
@@ -522,7 +581,7 @@ RootItem *FeedsModel::itemForIndex(const QModelIndex &index) const {
Category *FeedsModel::categoryForIndex(const QModelIndex &index) const {
RootItem *item = itemForIndex(index);
- if (item->kind() == RootItem::Cattegory) {
+ if (item->kind() == RootItemKind::Category) {
return item->toCategory();
}
else {
@@ -530,26 +589,15 @@ Category *FeedsModel::categoryForIndex(const QModelIndex &index) const {
}
}
-RecycleBin *FeedsModel::recycleBinForIndex(const QModelIndex &index) const {
- RootItem *item = itemForIndex(index);
-
- if (item->kind() == RootItem::Bin) {
- return item->toRecycleBin();
- }
- else {
- return NULL;
- }
-}
-
QModelIndex FeedsModel::indexForItem(RootItem *item) const {
- if (item == NULL || item->kind() == RootItem::Root) {
+ if (item == NULL || item->kind() == RootItemKind::Root) {
// Root item lies on invalid index.
return QModelIndex();
}
QStack chain;
- while (item->kind() != RootItem::Root) {
+ while (item->kind() != RootItemKind::Root) {
chain.push(item);
item = item->parent();
}
@@ -576,84 +624,6 @@ bool FeedsModel::hasAnyFeedNewMessages() {
return false;
}
-bool FeedsModel::mergeModel(FeedsImportExportModel *model, QString &output_message) {
- if (model == NULL || model->rootItem() == NULL) {
- output_message = tr("Invalid tree data.");
- qDebug("Root item for merging two models is null.");
- return false;
- }
-
- QStack original_parents; original_parents.push(m_rootItem);
- QStack new_parents; new_parents.push(model->rootItem());
- bool some_feed_category_error = false;
-
- // We are definitely about to add some new items into the model.
- //emit layoutAboutToBeChanged();
-
- // Iterate all new items we would like to merge into current model.
- while (!new_parents.isEmpty()) {
- RootItem *target_parent = original_parents.pop();
- RootItem *source_parent = new_parents.pop();
-
- foreach (RootItem *source_item, source_parent->childItems()) {
- if (!model->isItemChecked(source_item)) {
- // We can skip this item, because it is not checked and should not be imported.
- // NOTE: All descendants are thus skipped too.
- continue;
- }
-
- if (source_item->kind() == RootItem::Cattegory) {
- Category *source_category = source_item->toCategory();
- Category *new_category = new Category(*source_category);
-
- // Add category to model.
- new_category->clearChildren();
-
- if (addCategory(new_category, target_parent)) {
- // Process all children of this category.
- original_parents.push(new_category);
- new_parents.push(source_category);
- }
- else {
- // Add category failed, but this can mean that the same category (with same title)
- // already exists. If such a category exists in current parent, then find it and
- // add descendants to it.
- RootItem *existing_category = target_parent->child(RootItem::Cattegory, new_category->title());
-
- if (existing_category != NULL) {
- original_parents.push(existing_category);
- new_parents.push(source_category);
- }
- else {
- some_feed_category_error = true;
- }
- }
- }
- else if (source_item->kind() == RootItem::Feeed) {
- Feed *source_feed = source_item->toFeed();
- Feed *new_feed = new Feed(*source_feed);
-
- // Append this feed and end this iteration.
- if (!addFeed(new_feed, target_parent)) {
- some_feed_category_error = true;
- }
- }
- }
- }
-
- // Changes are done now. Finalize the new model.
- //emit layoutChanged();
-
- if (some_feed_category_error) {
- output_message = tr("Import successfull, but some feeds/categories were not imported due to error.");
- }
- else {
- output_message = tr("Import was completely successfull.");
- }
-
- return !some_feed_category_error;
-}
-
void FeedsModel::reloadChangedLayout(QModelIndexList list) {
while (!list.isEmpty()) {
QModelIndex indx = list.takeFirst();
@@ -664,6 +634,33 @@ void FeedsModel::reloadChangedLayout(QModelIndexList list) {
}
}
+void FeedsModel::reloadChangedItem(RootItem *item) {
+ QModelIndex index_item = indexForItem(item);
+ reloadChangedLayout(QModelIndexList() << index_item);
+}
+
+void FeedsModel::notifyWithCounts() {
+ if (SystemTrayIcon::isSystemTrayActivated()) {
+ qApp->trayIcon()->setNumber(countOfUnreadMessages(), hasAnyFeedNewMessages());
+ }
+}
+
+void FeedsModel::onItemDataChanged(QList items) {
+ if (items.size() > RELOAD_MODEL_BORDER_NUM) {
+ qDebug("There is request to reload feed model for more than %d items, reloading model fully.", RELOAD_MODEL_BORDER_NUM);
+ reloadWholeLayout();
+ }
+ else {
+ qDebug("There is request to reload feed model, reloading the %d items individually.", items.size());
+
+ foreach (RootItem *item, items) {
+ reloadChangedItem(item);
+ }
+ }
+
+ notifyWithCounts();
+}
+
QStringList FeedsModel::textualFeedIds(const QList &feeds) {
QStringList stringy_ids;
stringy_ids.reserve(feeds.size());
@@ -680,81 +677,78 @@ void FeedsModel::reloadWholeLayout() {
emit layoutChanged();
}
-void FeedsModel::loadFromDatabase() {
- // Delete all childs of the root node and clear them from the memory.
- qDeleteAll(m_rootItem->childItems());
- m_rootItem->clearChildren();
+bool FeedsModel::addServiceAccount(ServiceRoot *root) {
+ int new_row_index = m_rootItem->childCount();
- QSqlDatabase database = qApp->database()->connection(objectName(), DatabaseFactory::FromSettings);
- CategoryAssignment categories;
- FeedAssignment feeds;
+ beginInsertRows(indexForItem(m_rootItem), new_row_index, new_row_index);
+ m_rootItem->appendChild(root);
+ endInsertRows();
- // Obtain data for categories from the database.
- QSqlQuery query_categories(database);
- query_categories.setForwardOnly(true);
+ // Connect.
+ connect(root, SIGNAL(itemRemovalRequested(RootItem*)), this, SLOT(removeItem(RootItem*)));
+ connect(root, SIGNAL(itemReassignmentRequested(RootItem*,RootItem*)), this, SLOT(reassignNodeToNewParent(RootItem*,RootItem*)));
+ connect(root, SIGNAL(readFeedsFilterInvalidationRequested()), this, SIGNAL(readFeedsFilterInvalidationRequested()));
+ connect(root, SIGNAL(dataChanged(QList)), this, SLOT(onItemDataChanged(QList)));
+ connect(root, SIGNAL(reloadMessageListRequested(bool)), this, SIGNAL(reloadMessageListRequested(bool)));
+ connect(root, SIGNAL(itemExpandRequested(QList,bool)), this, SIGNAL(itemExpandRequested(QList,bool)));
- if (!query_categories.exec(QSL("SELECT * FROM Categories;")) || query_categories.lastError().isValid()) {
- qFatal("Query for obtaining categories failed. Error message: '%s'.",
- qPrintable(query_categories.lastError().text()));
- }
+ root->start();
+ return true;
+}
- while (query_categories.next()) {
- CategoryAssignmentItem pair;
- pair.first = query_categories.value(CAT_DB_PARENT_ID_INDEX).toInt();
- pair.second = new Category(query_categories.record());
+bool FeedsModel::restoreAllBins() {
+ bool result = true;
- categories << pair;
- }
+ foreach (ServiceRoot *root, serviceRoots()) {
+ RecycleBin *bin_of_root = root->recycleBin();
- // All categories are now loaded.
- QSqlQuery query_feeds(database);
- query_feeds.setForwardOnly(true);
-
- if (!query_feeds.exec(QSL("SELECT * FROM Feeds;")) || query_feeds.lastError().isValid()) {
- qFatal("Query for obtaining feeds failed. Error message: '%s'.",
- qPrintable(query_feeds.lastError().text()));
- }
-
- while (query_feeds.next()) {
- // Process this feed.
- Feed::Type type = static_cast(query_feeds.value(FDS_DB_TYPE_INDEX).toInt());
-
- switch (type) {
- case Feed::Atom10:
- case Feed::Rdf:
- case Feed::Rss0X:
- case Feed::Rss2X: {
- FeedAssignmentItem pair;
- pair.first = query_feeds.value(FDS_DB_CATEGORY_INDEX).toInt();
- pair.second = new Feed(query_feeds.record());
- pair.second->setType(type);
-
- feeds << pair;
- break;
- }
-
- default:
- break;
+ if (bin_of_root != NULL) {
+ result &= bin_of_root->restore();
}
}
- // All data are now obtained, lets create the hierarchy.
- assembleCategories(categories);
- assembleFeeds(feeds);
+ return result;
+}
- // As the last item, add recycle bin, which is needed.
- m_rootItem->appendChild(m_recycleBin);
+bool FeedsModel::emptyAllBins() {
+ bool result = true;
+
+ foreach (ServiceRoot *root, serviceRoots()) {
+ RecycleBin *bin_of_root = root->recycleBin();
+
+ if (bin_of_root != NULL) {
+ result &= bin_of_root->empty();
+ }
+ }
+
+ return result;
+}
+
+void FeedsModel::loadActivatedServiceAccounts() {
+ // Iterate all globally available feed "service plugins".
+ foreach (ServiceEntryPoint *entry_point, qApp->feedServices()) {
+ // Load all stored root nodes from the entry point and add those to the model.
+ QList roots = entry_point->initializeSubtree();
+
+ foreach (ServiceRoot *root, roots) {
+ addServiceAccount(root);
+ }
+ }
+
+ if (qApp->settings()->value(GROUP(Feeds), SETTING(Feeds::FeedsUpdateOnStartup)).toBool()) {
+ qDebug("Requesting update for all feeds on application startup.");
+ QTimer::singleShot(STARTUP_UPDATE_DELAY, this, SLOT(updateAllFeeds()));
+ }
}
QList FeedsModel::feedsForIndex(const QModelIndex &index) {
- RootItem *item = itemForIndex(index);
- return feedsForItem(item);
+ return itemForIndex(index)->getSubTreeFeeds();
}
Feed *FeedsModel::feedForIndex(const QModelIndex &index) {
RootItem *item = itemForIndex(index);
- if (item->kind() == RootItem::Feeed) {
+ if (item->kind() == RootItemKind::Feed) {
return item->toFeed();
}
else {
@@ -762,196 +756,18 @@ Feed *FeedsModel::feedForIndex(const QModelIndex &index) {
}
}
-QList FeedsModel::feedsForIndexes(const QModelIndexList &indexes) {
- QList feeds;
-
- // Get selected feeds for each index.
- foreach (const QModelIndex &index, indexes) {
- feeds.append(feedsForIndex(index));
- }
-
- // Now we obtained all feeds from corresponding indexes.
- if (indexes.size() != feeds.size()) {
- // Selection contains duplicate feeds (for
- // example situation where feed and its parent category are both
- // selected). So, remove duplicates from the list.
- qSort(feeds.begin(), feeds.end(), RootItem::lessThan);
- feeds.erase(std::unique(feeds.begin(), feeds.end(), RootItem::isEqual), feeds.end());
- }
-
- return feeds;
+bool FeedsModel::markItemRead(RootItem *item, RootItem::ReadStatus read) {
+ return item->markAsReadUnread(read);
}
-bool FeedsModel::markFeedsRead(const QList &feeds, int read) {
- QSqlDatabase db_handle = qApp->database()->connection(objectName(), DatabaseFactory::FromSettings);
-
- if (!db_handle.transaction()) {
- qWarning("Starting transaction for feeds read change.");
- return false;
- }
-
- QSqlQuery query_read_msg(db_handle);
- query_read_msg.setForwardOnly(true);
-
- if (!query_read_msg.prepare(QString("UPDATE Messages SET is_read = :read "
- "WHERE feed IN (%1) AND is_deleted = 0;").arg(textualFeedIds(feeds).join(QSL(", "))))) {
- qWarning("Query preparation failed for feeds read change.");
-
- db_handle.rollback();
- return false;
- }
-
- query_read_msg.bindValue(QSL(":read"), read);
-
- if (!query_read_msg.exec()) {
- qDebug("Query execution for feeds read change failed.");
- db_handle.rollback();
- }
-
- // Commit changes.
- if (db_handle.commit()) {
- return true;
- }
- else {
- return db_handle.rollback();
- }
-}
-
-bool FeedsModel::markFeedsDeleted(const QList &feeds, int deleted, bool read_only) {
- QSqlDatabase db_handle = qApp->database()->connection(objectName(), DatabaseFactory::FromSettings);
-
- if (!db_handle.transaction()) {
- qWarning("Starting transaction for feeds clearing.");
- return false;
- }
-
- QSqlQuery query_delete_msg(db_handle);
- query_delete_msg.setForwardOnly(true);
-
- if (read_only) {
- if (!query_delete_msg.prepare(QString("UPDATE Messages SET is_deleted = :deleted "
- "WHERE feed IN (%1) AND is_deleted = 0 AND is_read = 1;").arg(textualFeedIds(feeds).join(QSL(", "))))) {
- qWarning("Query preparation failed for feeds clearing.");
-
- db_handle.rollback();
- return false;
- }
- }
- else {
- if (!query_delete_msg.prepare(QString("UPDATE Messages SET is_deleted = :deleted "
- "WHERE feed IN (%1) AND is_deleted = 0;").arg(textualFeedIds(feeds).join(QSL(", "))))) {
- qWarning("Query preparation failed for feeds clearing.");
-
- db_handle.rollback();
- return false;
- }
- }
-
- query_delete_msg.bindValue(QSL(":deleted"), deleted);
-
- if (!query_delete_msg.exec()) {
- qDebug("Query execution for feeds clearing failed.");
- db_handle.rollback();
- }
-
- // Commit changes.
- if (db_handle.commit()) {
- return true;
- }
- else {
- return db_handle.rollback();
- }
-}
-
-QHash FeedsModel::allCategories() {
- return categoriesForItem(m_rootItem);
-}
-
-QHash FeedsModel::categoriesForItem(RootItem *root) {
- QHash categories;
- QList parents;
-
- parents.append(root->childItems());
-
- while (!parents.isEmpty()) {
- RootItem *item = parents.takeFirst();
-
- if (item->kind() == RootItem::Cattegory) {
- // This item is category, add it to the output list and
- // scan its children.
- int category_id = item->id();
- Category *category = item->toCategory();
-
- if (!categories.contains(category_id)) {
- categories.insert(category_id, category);
- }
-
- parents.append(category->childItems());
- }
- }
-
- return categories;
+bool FeedsModel::markItemCleared(RootItem *item, bool clean_read_only) {
+ return item->cleanMessages(clean_read_only);
}
QList FeedsModel::allFeeds() {
- return feedsForItem(m_rootItem);
+ return m_rootItem->getSubTreeFeeds();
}
-QList FeedsModel::feedsForItem(RootItem *root) {
- QList children = root->getRecursiveChildren();
- QList feeds;
-
- foreach (RootItem *child, children) {
- if (child->kind() == RootItem::Feeed) {
- feeds.append(child->toFeed());
- }
- }
-
- return feeds;
-}
-
-void FeedsModel::assembleFeeds(FeedAssignment feeds) {
- QHash categories = allCategories();
-
- foreach (const FeedAssignmentItem &feed, feeds) {
- if (feed.first == NO_PARENT_CATEGORY) {
- // This is top-level feed, add it to the root item.
- m_rootItem->appendChild(feed.second);
- }
- else if (categories.contains(feed.first)) {
- // This feed belongs to this category.
- categories.value(feed.first)->appendChild(feed.second);
- }
- else {
- qWarning("Feed '%s' is loose, skipping it.", qPrintable(feed.second->title()));
- }
- }
-}
-
-RecycleBin *FeedsModel::recycleBin() const {
- return m_recycleBin;
-}
-
-void FeedsModel::assembleCategories(CategoryAssignment categories) {
- QHash assignments;
- assignments.insert(NO_PARENT_CATEGORY, m_rootItem);
-
- // Add top-level categories.
- while (!categories.isEmpty()) {
- for (int i = 0; i < categories.size(); i++) {
- if (assignments.contains(categories.at(i).first)) {
- // Parent category of this category is already added.
- assignments.value(categories.at(i).first)->appendChild(categories.at(i).second);
-
- // Now, added category can be parent for another categories, add it.
- assignments.insert(categories.at(i).second->id(),
- categories.at(i).second);
-
- // Remove the category from the list, because it was
- // added to the final collection.
- categories.removeAt(i);
- i--;
- }
- }
- }
+QList FeedsModel::allCategories() {
+ return m_rootItem->getSubTreeCategories();
}
diff --git a/src/core/feedsmodel.h b/src/core/feedsmodel.h
old mode 100644
new mode 100755
index a4eb30c3d..6807b6709
--- a/src/core/feedsmodel.h
+++ b/src/core/feedsmodel.h
@@ -20,46 +20,41 @@
#include
-#include "core/messagesmodel.h"
-#include "core/rootitem.h"
-
-#include
-
+#include "core/message.h"
+#include "services/abstract/rootitem.h"
+#include "core/feeddownloader.h"
+class DatabaseCleaner;
class Category;
class Feed;
-class RecycleBin;
-class FeedsImportExportModel;
+class ServiceRoot;
+class ServiceEntryPoint;
+class StandardServiceRoot;
class QTimer;
-typedef QList > CategoryAssignment;
-typedef QPair CategoryAssignmentItem;
-
-typedef QList > FeedAssignment;
-typedef QPair FeedAssignmentItem;
-
class FeedsModel : public QAbstractItemModel {
Q_OBJECT
- friend class Feed;
- friend class Category;
-
public:
// Constructors and destructors.
explicit FeedsModel(QObject *parent = 0);
virtual ~FeedsModel();
+ DatabaseCleaner *databaseCleaner();
+
// Model implementation.
inline QVariant data(const QModelIndex &index, int role) const {
// Return data according to item.
return itemForIndex(index)->data(index.column(), role);
}
+ // Drag & drop.
QMimeData *mimeData(const QModelIndexList &indexes) const;
QStringList mimeTypes() const;
bool dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent);
Qt::DropActions supportedDropActions() const;
Qt::ItemFlags flags(const QModelIndex &index) const;
+
QVariant headerData(int section, Qt::Orientation orientation, int role) const;
QModelIndex index(int row, int column, const QModelIndex &parent) const;
QModelIndex parent(const QModelIndex &child) const;
@@ -75,20 +70,23 @@ class FeedsModel : public QAbstractItemModel {
return m_rootItem->countOfUnreadMessages();
}
+ void reloadCountsOfWholeModel();
+
// Removes item with given index.
- bool removeItem(const QModelIndex &index);
+ // NOTE: Also deletes item from memory.
+ void removeItem(const QModelIndex &index);
- // Standard category manipulators.
- bool addCategory(Category *category, RootItem *parent);
- bool editCategory(Category *original_category, Category *new_category_data);
+ // Returns all activated service roots.
+ // NOTE: Service root nodes are lying directly UNDER
+ // the model root item.
+ QList serviceRoots();
- // Standard feed manipulators.
- bool addFeed(Feed *feed, RootItem *parent);
+ // Determines if there is any account activated from given entry point.
+ bool containsServiceRootFromEntryPoint(ServiceEntryPoint *point);
- // New feed is just temporary feed, it is not added to the model.
- // It is used to fetch its data to the original feed
- // and the original feed is moved if needed.
- bool editFeed(Feed *original_feed, Feed *new_feed_data);
+ // Direct and the only global accessor to standard service root.
+ // NOTE: Standard service root is always activated.
+ StandardServiceRoot *standardServiceRoot();
// Returns the list of feeds which should be updated
// according to auto-update schedule.
@@ -100,27 +98,15 @@ class FeedsModel : public QAbstractItemModel {
// Returns (undeleted) messages for given feeds.
// This is usually used for displaying whole feeds
// in "newspaper" mode.
- QList messagesForFeeds(const QList &feeds);
+ QList messagesForItem(RootItem *item);
- // Returns all categories, each pair
- // consists of ID of parent item and pointer to category.
- QHash allCategories();
-
- // Returns categories from the subtree with given root node, each pair
- // consists of ID of parent item and pointer to category.
- QHash categoriesForItem(RootItem *root);
+ // Returns list of all categories contained in the model.
+ QList allCategories();
// Returns list of all feeds contained in the model.
QList allFeeds();
- // Get list of feeds from tree with particular item
- // as root. If root itself is a feed, then it is returned.
- QList feedsForItem(RootItem *root);
-
- // Returns list of ALL CHILD feeds which belong to given parent indexes.
- QList feedsForIndexes(const QModelIndexList &indexes);
-
- // Returns ALL CHILD feeds contained within single index.
+ // Returns ALL RECURSIVE CHILD feeds contained within single index.
QList feedsForIndex(const QModelIndex &index);
// Returns pointer to feed if it lies on given index
@@ -131,15 +117,14 @@ class FeedsModel : public QAbstractItemModel {
// or NULL if no category lies on given index.
Category *categoryForIndex(const QModelIndex &index) const;
- // Returns pointer to recycle bin if lies on given index
- // or NULL if no recycle bin lies on given index.
- RecycleBin *recycleBinForIndex(const QModelIndex &index) const;
-
// Returns feed/category which lies at the specified index or
// root item if index is invalid.
RootItem *itemForIndex(const QModelIndex &index) const;
// Returns source QModelIndex on which lies given item.
+ // NOTE: This goes through all available indexes and
+ // checks their bound items manually, there is no
+ // other way to to this.
QModelIndex indexForItem(RootItem *item) const;
// Determines if any feed has any new messages.
@@ -150,13 +135,6 @@ class FeedsModel : public QAbstractItemModel {
return m_rootItem;
}
- // Takes structure residing under given root item and adds feeds/categories from
- // it to active structure.
- bool mergeModel(FeedsImportExportModel *model, QString &output_message);
-
- // Access to recycle bin.
- RecycleBin *recycleBin() const;
-
// Resets global auto-update intervals according to settings
// and starts/stop the timer as needed.
void updateAutoUpdateStatus();
@@ -164,10 +142,31 @@ class FeedsModel : public QAbstractItemModel {
// Does necessary job before quitting this component.
void quit();
+ // Schedules given feeds for update.
+ void updateFeeds(const QList &feeds);
+
+ // Adds given service root account.
+ bool addServiceAccount(ServiceRoot *root);
+
+ // Loads feed/categories from the database.
+ void loadActivatedServiceAccounts();
+
public slots:
+ // Schedules all feeds from all accounts for update.
+ void updateAllFeeds();
+
+ // Checks if new parent node is different from one used by original node.
+ // If it is, then it reassigns original_node to new parent.
+ void reassignNodeToNewParent(RootItem *original_node, RootItem *new_parent);
+
+ void removeItem(RootItem *deleting_item);
+
+ bool restoreAllBins();
+ bool emptyAllBins();
+
// Feeds operations.
- bool markFeedsRead(const QList &feeds, int read);
- bool markFeedsDeleted(const QList &feeds, int deleted, bool read_only);
+ bool markItemRead(RootItem *item, RootItem::ReadStatus read);
+ bool markItemCleared(RootItem *item, bool clean_read_only);
// Signals that properties (probably counts)
// of ALL items have changed.
@@ -178,32 +177,54 @@ class FeedsModel : public QAbstractItemModel {
// NOTE: This reloads all parent valid indexes too.
void reloadChangedLayout(QModelIndexList list);
+ // Invalidates data under index for the item.
+ void reloadChangedItem(RootItem *item);
+
+ // Notifies other components about messages
+ // counts.
+ void notifyWithCounts();
+
private slots:
+ void onItemDataChanged(QList items);
+
// Is executed when next auto-update round could be done.
void executeNextAutoUpdate();
- protected:
- // Returns converted ids of given feeds
- // which are suitable as IN clause for SQL queries.
- QStringList textualFeedIds(const QList &feeds);
-
- // Loads feed/categories from the database.
- void loadFromDatabase();
-
- // Takes lists of feeds/categories and assembles
- // them into the tree structure.
- void assembleCategories(CategoryAssignment categories);
- void assembleFeeds(FeedAssignment feeds);
+ // Reacts on feed updates.
+ void onFeedUpdatesStarted();
+ void onFeedUpdatesProgress(Feed *feed, int current, int total);
+ void onFeedUpdatesFinished(FeedDownloadResults results);
signals:
- void requireItemValidationAfterDragDrop(const QModelIndex &source_index);
+ // Update of feeds is finished.
+ void feedsUpdateFinished();
+
+ // Counts of unread messages are changed in some feeds,
+ // notify view about this shit.
+ void readFeedsFilterInvalidationRequested();
// Emitted when model requests update of some feeds.
void feedsUpdateRequested(const QList feeds);
+ // Emitted if counts of messages are changed.
+ void messageCountsChanged(int unread_messages, int total_messages, bool any_feed_has_unread_messages);
+
+ // Emitted if any item requested that any view should expand it.
+ void itemExpandRequested(QList items, bool expand);
+
+ // Emitted when there is a need of reloading of displayed messages.
+ void reloadMessageListRequested(bool mark_selected_messages_read);
+
+ // There was some drag/drop operation, notify view about this.
+ // NOTE: View will probably expand dropped index.
+ void requireItemValidationAfterDragDrop(const QModelIndex &source_index);
+
private:
+ // Returns converted ids of given feeds
+ // which are suitable as IN clause for SQL queries.
+ QStringList textualFeedIds(const QList &feeds);
+
RootItem *m_rootItem;
- RecycleBin *m_recycleBin;
QList m_headerData;
QList m_tooltipData;
QIcon m_countsIcon;
@@ -213,6 +234,12 @@ class FeedsModel : public QAbstractItemModel {
bool m_globalAutoUpdateEnabled;
int m_globalAutoUpdateInitialInterval;
int m_globalAutoUpdateRemainingInterval;
+
+ QThread *m_feedDownloaderThread;
+ FeedDownloader *m_feedDownloader;
+
+ QThread *m_dbCleanerThread;
+ DatabaseCleaner *m_dbCleaner;
};
#endif // FEEDSMODEL_H
diff --git a/src/core/feedsproxymodel.cpp b/src/core/feedsproxymodel.cpp
index 36215a3d8..ea1504d91 100755
--- a/src/core/feedsproxymodel.cpp
+++ b/src/core/feedsproxymodel.cpp
@@ -20,9 +20,11 @@
#include "definitions/definitions.h"
#include "miscellaneous/application.h"
#include "core/feedsmodel.h"
-#include "core/category.h"
-#include "core/feed.h"
-#include "core/rootitem.h"
+#include "services/abstract/rootitem.h"
+#include "services/standard/standardcategory.h"
+#include "services/standard/standardfeed.h"
+
+#include
FeedsProxyModel::FeedsProxyModel(QObject *parent)
@@ -37,6 +39,8 @@ FeedsProxyModel::FeedsProxyModel(QObject *parent)
setFilterRole(Qt::EditRole);
setDynamicSortFilter(false);
setSourceModel(m_sourceModel);
+
+ connect(m_sourceModel, SIGNAL(readFeedsFilterInvalidationRequested()), this, SLOT(invalidateReadFeedsFilter()));
}
FeedsProxyModel::~FeedsProxyModel() {
@@ -45,18 +49,18 @@ FeedsProxyModel::~FeedsProxyModel() {
QModelIndexList FeedsProxyModel::match(const QModelIndex &start, int role, const QVariant &value, int hits, Qt::MatchFlags flags) const {
QModelIndexList result;
- uint matchType = flags & 0x0F;
+ uint match_type = flags & 0x0F;
Qt::CaseSensitivity cs = Qt::CaseInsensitive;
bool recurse = flags & Qt::MatchRecursive;
bool wrap = flags & Qt::MatchWrap;
- bool allHits = (hits == -1);
+ bool all_hits = (hits == -1);
QString entered_text;
QModelIndex p = parent(start);
int from = start.row();
int to = rowCount(p);
for (int i = 0; (wrap && i < 2) || (!wrap && i < 1); ++i) {
- for (int r = from; (r < to) && (allHits || result.count() < hits); ++r) {
+ for (int r = from; (r < to) && (all_hits || result.count() < hits); ++r) {
QModelIndex idx = index(r, start.column(), p);
if (!idx.isValid()) {
@@ -64,10 +68,10 @@ QModelIndexList FeedsProxyModel::match(const QModelIndex &start, int role, const
}
QModelIndex mapped_idx = mapToSource(idx);
- QVariant item_value = m_sourceModel->data(m_sourceModel->index(mapped_idx.row(), FDS_MODEL_TITLE_INDEX, mapped_idx.parent()), role);
+ QVariant item_value = m_sourceModel->itemForIndex(mapped_idx)->title();
// QVariant based matching.
- if (matchType == Qt::MatchExactly) {
+ if (match_type == Qt::MatchExactly) {
if (value == item_value) {
result.append(idx);
}
@@ -80,7 +84,7 @@ QModelIndexList FeedsProxyModel::match(const QModelIndex &start, int role, const
QString item_text = item_value.toString();
- switch (matchType) {
+ switch (match_type) {
case Qt::MatchRegExp:
if (QRegExp(entered_text, cs).exactMatch(item_text)) {
result.append(idx);
@@ -121,7 +125,7 @@ QModelIndexList FeedsProxyModel::match(const QModelIndex &start, int role, const
}
if (recurse && hasChildren(idx)) {
- result += match(index(0, idx.column(), idx), role, (entered_text.isEmpty() ? value : entered_text), (allHits ? -1 : hits - result.count()), flags);
+ result += match(index(0, idx.column(), idx), role, (entered_text.isEmpty() ? value : entered_text), (all_hits ? -1 : hits - result.count()), flags);
}
}
@@ -155,15 +159,15 @@ bool FeedsProxyModel::lessThan(const QModelIndex &left, const QModelIndex &right
return QString::localeAwareCompare(left_item->title(), right_item->title()) < 0;
}
}
- else if (left_item->kind() == RootItem::Bin) {
+ else if (left_item->kind() == RootItemKind::Bin) {
// Left item is recycle bin. Make sure it is "biggest" item if we have selected ascending order.
return sortOrder() == Qt::DescendingOrder;
}
- else if (right_item->kind() == RootItem::Bin) {
+ else if (right_item->kind() == RootItemKind::Bin) {
// Right item is recycle bin. Make sure it is "smallest" item if we have selected descending order.
return sortOrder() == Qt::AscendingOrder;
}
- else if (left_item->kind() == RootItem::Feeed) {
+ else if (left_item->kind() == RootItemKind::Feed) {
// Left item is feed, right item is category.
return false;
}
@@ -193,7 +197,7 @@ bool FeedsProxyModel::filterAcceptsRow(int source_row, const QModelIndex &source
RootItem *item = m_sourceModel->itemForIndex(idx);
- if (item->kind() == RootItem::Bin) {
+ if (item->kind() == RootItemKind::Bin || item->kind() == RootItemKind::ServiceRoot) {
// Recycle bin is always displayed.
return true;
}
@@ -202,7 +206,9 @@ bool FeedsProxyModel::filterAcceptsRow(int source_row, const QModelIndex &source
return true;
}
else {
- return item->countOfUnreadMessages() > 0;
+ // NOTE: If item has < 0 of unread message it may mean, that the count
+ // of unread messages is not (yet) known, display that item too.
+ return item->countOfUnreadMessages() != 0;
}
}
@@ -218,6 +224,14 @@ bool FeedsProxyModel::showUnreadOnly() const {
return m_showUnreadOnly;
}
+void FeedsProxyModel::invalidateReadFeedsFilter(bool set_new_value, bool show_unread_only) {
+ if (set_new_value) {
+ setShowUnreadOnly(show_unread_only);
+ }
+
+ QTimer::singleShot(0, this, SLOT(invalidateFilter()));
+}
+
void FeedsProxyModel::setShowUnreadOnly(bool show_unread_only) {
m_showUnreadOnly = show_unread_only;
qApp->settings()->setValue(GROUP(Feeds), Feeds::ShowOnlyUnreadFeeds, show_unread_only);
diff --git a/src/core/feedsproxymodel.h b/src/core/feedsproxymodel.h
index aa000b94b..9abd57770 100755
--- a/src/core/feedsproxymodel.h
+++ b/src/core/feedsproxymodel.h
@@ -18,12 +18,11 @@
#ifndef FEEDSPROXYMODEL_H
#define FEEDSPROXYMODEL_H
-#include "rootitem.h"
-
#include
class FeedsModel;
+class RootItem;
class FeedsProxyModel : public QSortFilterProxyModel {
Q_OBJECT
@@ -38,6 +37,8 @@ class FeedsProxyModel : public QSortFilterProxyModel {
return m_sourceModel;
}
+ // Returns index list of items which "match" given value.
+ // Used for finding items according to entered title text.
QModelIndexList match(const QModelIndex &start, int role, const QVariant &value, int hits, Qt::MatchFlags flags) const;
// Maps list of indexes.
@@ -50,14 +51,16 @@ class FeedsProxyModel : public QSortFilterProxyModel {
void setSelectedItem(RootItem *selected_item);
public slots:
+ void invalidateReadFeedsFilter(bool set_new_value = false, bool show_unread_only = false);
+
+ private slots:
void invalidateFilter();
- protected:
+ private:
// Compares two rows of data.
bool lessThan(const QModelIndex &left, const QModelIndex &right) const;
bool filterAcceptsRow(int source_row, const QModelIndex &source_parent) const;
- private:
// Source model pointer.
FeedsModel *m_sourceModel;
diff --git a/src/core/feedsselection.cpp b/src/core/feedsselection.cpp
deleted file mode 100755
index 4b7328c1b..000000000
--- a/src/core/feedsselection.cpp
+++ /dev/null
@@ -1,75 +0,0 @@
-// This file is part of RSS Guard.
-//
-// Copyright (C) 2011-2015 by Martin Rotter
-//
-// RSS Guard is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// RSS Guard is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with RSS Guard. If not, see .
-
-#include "core/feedsselection.h"
-
-#include "core/rootitem.h"
-#include "core/category.h"
-#include "core/feed.h"
-#include "definitions/definitions.h"
-
-
-FeedsSelection::FeedsSelection(RootItem *root_of_selection) : m_selectedItem(root_of_selection) {
-}
-
-FeedsSelection::FeedsSelection(const FeedsSelection &other) {
- m_selectedItem = other.selectedItem();
-}
-
-FeedsSelection::~FeedsSelection() {
-}
-
-FeedsSelection::SelectionMode FeedsSelection::mode() {
- if (m_selectedItem == NULL) {
- return FeedsSelection::NoMode;
- }
-
- switch (m_selectedItem->kind()) {
- case RootItem::Bin:
- return FeedsSelection::MessagesFromRecycleBin;
-
- case RootItem::Cattegory:
- case RootItem::Feeed:
- return FeedsSelection::MessagesFromFeeds;
-
- default:
- return FeedsSelection::NoMode;
- }
-}
-
-RootItem *FeedsSelection::selectedItem() const {
- return m_selectedItem;
-}
-
-QString FeedsSelection::generateListOfIds() {
- if (m_selectedItem != NULL &&
- (m_selectedItem->kind() == RootItem::Feeed || m_selectedItem->kind() == RootItem::Cattegory)) {
- QList children = m_selectedItem->getRecursiveChildren();
- QStringList stringy_ids;
-
- foreach (RootItem *child, children) {
- if (child->kind() == RootItem::Feeed) {
- stringy_ids.append(QString::number(child->id()));
- }
- }
-
- return stringy_ids.join(QSL(", "));
- }
- else {
- return QString();
- }
-}
diff --git a/src/core/message.cpp b/src/core/message.cpp
new file mode 100755
index 000000000..e74789fff
--- /dev/null
+++ b/src/core/message.cpp
@@ -0,0 +1,104 @@
+// This file is part of RSS Guard.
+//
+// Copyright (C) 2011-2015 by Martin Rotter
+//
+// RSS Guard is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// RSS Guard is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with RSS Guard. If not, see .
+
+#include "core/message.h"
+
+#include "miscellaneous/textfactory.h"
+
+#include
+
+
+Enclosure::Enclosure(const QString &url, const QString &mime) : m_url(url), m_mimeType(mime) {
+}
+
+QList Enclosures::decodeEnclosuresFromString(const QString &enclosures_data) {
+ QList enclosures;
+
+ foreach (const QString &single_enclosure, enclosures_data.split(ENCLOSURES_OUTER_SEPARATOR, QString::SkipEmptyParts)) {
+ Enclosure enclosure;
+
+ if (single_enclosure.contains(ECNLOSURES_INNER_SEPARATOR)) {
+ QStringList mime_url = single_enclosure.split(ECNLOSURES_INNER_SEPARATOR);
+
+ enclosure.m_mimeType = QByteArray::fromBase64(mime_url.at(0).toLocal8Bit());
+ enclosure.m_url = QByteArray::fromBase64(mime_url.at(1).toLocal8Bit());
+ }
+ else {
+ enclosure.m_url = QByteArray::fromBase64(single_enclosure.toLocal8Bit());
+ }
+
+ enclosures.append(enclosure);
+ }
+
+ return enclosures;
+}
+
+QString Enclosures::encodeEnclosuresToString(const QList &enclosures) {
+ QStringList enclosures_str;
+
+ foreach (const Enclosure &enclosure, enclosures) {
+ if (enclosure.m_mimeType.isEmpty()) {
+ enclosures_str.append(enclosure.m_url.toLocal8Bit().toBase64());
+ }
+ else {
+ enclosures_str.append(QString(enclosure.m_mimeType.toLocal8Bit().toBase64()) +
+ ECNLOSURES_INNER_SEPARATOR +
+ enclosure.m_url.toLocal8Bit().toBase64());
+ }
+ }
+
+ return enclosures_str.join(QString(ENCLOSURES_OUTER_SEPARATOR));
+}
+
+Message::Message() {
+ m_title = m_url = m_author = m_contents = m_feedId = m_customId = "";
+ m_enclosures = QList();
+ m_accountId = m_id = 0;
+ m_isRead = m_isImportant = false;
+}
+
+Message Message::fromSqlRecord(const QSqlRecord &record, bool *result) {
+ if (record.count() != MSG_DB_CUSTOM_ID_INDEX + 1) {
+ if (result != NULL) {
+ *result = false;
+ return Message();
+ }
+ }
+
+ Message message;
+
+ message.m_id = record.value(MSG_DB_ID_INDEX).toInt();
+ message.m_isRead = record.value(MSG_DB_READ_INDEX).toBool();
+ //message = record.value(MSG_DB_DELETED_INDEX).toInt();
+ message.m_isImportant = record.value(MSG_DB_IMPORTANT_INDEX).toBool();
+ message.m_feedId = record.value(MSG_DB_FEED_INDEX).toString();
+ message.m_title = record.value(MSG_DB_TITLE_INDEX).toString();
+ message.m_url = record.value(MSG_DB_URL_INDEX).toString();
+ message.m_author = record.value(MSG_DB_AUTHOR_INDEX).toString();
+ message.m_created = TextFactory::parseDateTime(record.value(MSG_DB_DCREATED_INDEX).value());
+ message.m_contents = record.value(MSG_DB_CONTENTS_INDEX).toString();
+ //message = record.value(MSG_DB_PDELETED_INDEX).toInt();
+ message.m_enclosures = Enclosures::decodeEnclosuresFromString(record.value(MSG_DB_ENCLOSURES_INDEX).toString());
+ message.m_accountId = record.value(MSG_DB_ACCOUNT_ID_INDEX).toInt();
+ message.m_customId = record.value(MSG_DB_CUSTOM_ID_INDEX).toString();
+
+ if (result != NULL) {
+ *result = true;
+ }
+
+ return message;
+}
diff --git a/src/core/message.h b/src/core/message.h
new file mode 100755
index 000000000..299299230
--- /dev/null
+++ b/src/core/message.h
@@ -0,0 +1,72 @@
+// This file is part of RSS Guard.
+//
+// Copyright (C) 2011-2015 by Martin Rotter
+//
+// RSS Guard is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// RSS Guard is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with RSS Guard. If not, see .
+
+#ifndef MESSAGE_H
+#define MESSAGE_H
+
+#include "definitions/definitions.h"
+
+#include
+#include
+#include
+
+
+// Represents single enclosure.
+struct Enclosure {
+ QString m_url;
+ QString m_mimeType;
+
+ explicit Enclosure(const QString &url = QString(), const QString &mime = QString());
+};
+
+// Represents single enclosure.
+class Enclosures {
+ public:
+ static QList decodeEnclosuresFromString(const QString &enclosures_data);
+ static QString encodeEnclosuresToString(const QList &enclosures);
+};
+
+// Represents single message.
+class Message {
+ public:
+ explicit Message();
+
+ // Creates Message from given record, which contains
+ // row from query SELECT * FROM Messages WHERE ....;
+ static Message fromSqlRecord(const QSqlRecord &record, bool *result = NULL);
+
+ QString m_title;
+ QString m_url;
+ QString m_author;
+ QString m_contents;
+ QDateTime m_created;
+ QString m_feedId;
+ int m_accountId;
+ int m_id;
+ QString m_customId;
+
+ bool m_isRead;
+ bool m_isImportant;
+
+ QList m_enclosures;
+
+ // Is true if "created" date was obtained directly
+ // from the feed, otherwise is false
+ bool m_createdFromFeed;
+};
+
+#endif // MESSAGE_H
diff --git a/src/core/messagesmodel.cpp b/src/core/messagesmodel.cpp
index 2ac6e9e42..baacb58ab 100755
--- a/src/core/messagesmodel.cpp
+++ b/src/core/messagesmodel.cpp
@@ -22,6 +22,8 @@
#include "miscellaneous/textfactory.h"
#include "miscellaneous/databasefactory.h"
#include "miscellaneous/iconfactory.h"
+#include "gui/dialogs/formmain.h"
+#include "services/abstract/serviceroot.h"
#include
#include
@@ -30,7 +32,7 @@
MessagesModel::MessagesModel(QObject *parent)
: QSqlTableModel(parent, qApp->database()->connection(QSL("MessagesModel"), DatabaseFactory::FromSettings)),
- m_messageFilter(NoHighlighting), m_customDateFormat(QString()) {
+ m_messageHighlighter(NoHighlighting), m_customDateFormat(QString()) {
setObjectName(QSL("MessagesModel"));
setupFonts();
setupIcons();
@@ -42,7 +44,7 @@ MessagesModel::MessagesModel(QObject *parent)
// via model, but via DIRECT SQL calls are used to do persistent messages.
setEditStrategy(QSqlTableModel::OnManualSubmit);
setTable(QSL("Messages"));
- loadMessages(FeedsSelection());
+ loadMessages(NULL);
}
MessagesModel::~MessagesModel() {
@@ -55,11 +57,9 @@ void MessagesModel::setupIcons() {
m_unreadIcon = qApp->icons()->fromTheme(QSL("mail-mark-unread"));
}
-FeedsSelection MessagesModel::loadedSelection() const {
- return m_currentSelection;
-}
+void MessagesModel::fetchAllData() {
+ select();
-void MessagesModel::fetchAll() {
while (canFetchMore()) {
fetchMore();
}
@@ -71,25 +71,34 @@ void MessagesModel::setupFonts() {
m_boldFont.setBold(true);
}
-void MessagesModel::loadMessages(const FeedsSelection &selection) {
- m_currentSelection = selection;
+void MessagesModel::loadMessages(RootItem *item) {
+ m_selectedItem = item;
- if (m_currentSelection.mode() == FeedsSelection::MessagesFromRecycleBin) {
- setFilter(QSL("is_deleted = 1 AND is_pdeleted = 0"));
+ if (item == NULL) {
+ setFilter("true != true");
}
else {
- QString assembled_ids = m_currentSelection.generateListOfIds();
-
- setFilter(QString(QSL("feed IN (%1) AND is_deleted = 0")).arg(assembled_ids));
- qDebug("Loading messages from feeds: %s.", qPrintable(assembled_ids));
+ if (!item->getParentServiceRoot()->loadMessagesForItem(item, this)) {
+ setFilter("true != true");
+ qWarning("Loading of messages from item '%s' failed.", qPrintable(item->title()));
+ qApp->showGuiMessage(tr("Loading of messages from item '%1' failed.").arg(item->title()),
+ tr("Loading of messages failed, maybe messages could not be downloaded."),
+ QSystemTrayIcon::Critical,
+ qApp->mainForm(),
+ true);
+ }
}
- select();
- fetchAll();
+ fetchAllData();
}
-void MessagesModel::filterMessages(MessagesModel::MessageFilter filter) {
- m_messageFilter = filter;
+bool MessagesModel::submitAll() {
+ qFatal("Submitting changes via model is not allowed.");
+ return false;
+}
+
+void MessagesModel::highlightMessages(MessagesModel::MessageHighlighter highlight) {
+ m_messageHighlighter = highlight;
emit layoutAboutToBeChanged();
emit layoutChanged();
}
@@ -98,6 +107,14 @@ int MessagesModel::messageId(int row_index) const {
return data(row_index, MSG_DB_ID_INDEX, Qt::EditRole).toInt();
}
+RootItem::Importance MessagesModel::messageImportance(int row_index) const {
+ return (RootItem::Importance) data(row_index, MSG_DB_IMPORTANT_INDEX, Qt::EditRole).toInt();
+}
+
+RootItem *MessagesModel::loadedItem() const {
+ return m_selectedItem;
+}
+
void MessagesModel::updateDateFormat() {
if (qApp->settings()->value(GROUP(Messages), SETTING(Messages::UseCustomDate)).toBool()) {
m_customDateFormat = qApp->settings()->value(GROUP(Messages), SETTING(Messages::CustomDateFormat)).toString();
@@ -112,20 +129,8 @@ void MessagesModel::reloadWholeLayout() {
emit layoutChanged();
}
-Message MessagesModel::messageAt(int row_index) const {
- QSqlRecord rec = record(row_index);
- Message message;
-
- // Fill Message object with details.
- message.m_author = rec.value(MSG_DB_AUTHOR_INDEX).toString();
- message.m_contents = rec.value(MSG_DB_CONTENTS_INDEX).toString();
- message.m_enclosures = Enclosures::decodeEnclosuresFromString(rec.value(MSG_DB_ENCLOSURES_INDEX).toString());
- message.m_title = rec.value(MSG_DB_TITLE_INDEX).toString();
- message.m_url = rec.value(MSG_DB_URL_INDEX).toString();
- message.m_feedId = rec.value(MSG_DB_FEED_INDEX).toInt();
- message.m_created = TextFactory::parseDateTime(rec.value(MSG_DB_DCREATED_INDEX).value()).toLocalTime();
-
- return message;
+Message MessagesModel::messageAt(int row_index) const {
+ return Message::fromSqlRecord(record(row_index));
}
void MessagesModel::setupHeaderData() {
@@ -140,7 +145,9 @@ void MessagesModel::setupHeaderData() {
/*: Tooltip for creation date of message.*/ tr("Created on") <<
/*: Tooltip for contents of message.*/ tr("Contents") <<
/*: Tooltip for "pdeleted" column in msg list.*/ tr("Permanently deleted") <<
- /*: Tooltip for attachments of message.*/ tr("Attachments");
+ /*: Tooltip for attachments of message.*/ tr("Attachments") <<
+ /*: Tooltip for account ID of message.*/ tr("Account ID") <<
+ /*: Tooltip for custom ID of message.*/ tr("Custom ID");
m_tooltipData << tr("Id of the message.") << tr("Is message read?") <<
tr("Is message deleted?") << tr("Is message important?") <<
@@ -148,13 +155,18 @@ void MessagesModel::setupHeaderData() {
tr("Title of the message.") << tr("Url of the message.") <<
tr("Author of the message.") << tr("Creation date of the message.") <<
tr("Contents of the message.") << tr("Is message permanently deleted from recycle bin?") <<
- tr("List of attachments.");
+ tr("List of attachments.") << tr("Account ID of the message.") << tr("Custom ID of the message");
}
Qt::ItemFlags MessagesModel::flags(const QModelIndex &index) const {
Q_UNUSED(index)
+#if QT_VERSION >= 0x050000
+ return Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsEditable | Qt::ItemNeverHasChildren;
+#else
+
return Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsEditable;
+#endif
}
QVariant MessagesModel::data(int row, int column, int role) const {
@@ -196,7 +208,7 @@ QVariant MessagesModel::data(const QModelIndex &idx, int role) const {
return QSqlTableModel::data(index(idx.row(), MSG_DB_READ_INDEX)).toInt() == 1 ? m_normalFont : m_boldFont;
case Qt::ForegroundRole:
- switch (m_messageFilter) {
+ switch (m_messageHighlighter) {
case HighlightImportant:
return QSqlTableModel::data(index(idx.row(), MSG_DB_IMPORTANT_INDEX)).toInt() == 1 ? QColor(Qt::blue) : QVariant();
@@ -227,17 +239,17 @@ QVariant MessagesModel::data(const QModelIndex &idx, int role) const {
}
}
-bool MessagesModel::setMessageRead(int row_index, int read) {
+bool MessagesModel::setMessageRead(int row_index, RootItem::ReadStatus read) {
if (data(row_index, MSG_DB_READ_INDEX, Qt::EditRole).toInt() == read) {
// Read status is the same is the one currently set.
// In that case, no extra work is needed.
return true;
}
- QSqlDatabase db_handle = database();
+ Message message = messageAt(row_index);
- if (!db_handle.transaction()) {
- qWarning("Starting transaction for message read change.");
+ if (!m_selectedItem->getParentServiceRoot()->onBeforeSetMessagesRead(m_selectedItem, QList() << message, read)) {
+ // Cannot change read status of the item. Abort.
return false;
}
@@ -247,172 +259,163 @@ bool MessagesModel::setMessageRead(int row_index, int read) {
if (!working_change) {
// If rewriting in the model failed, then cancel all actions.
qDebug("Setting of new data to the model failed for message read change.");
-
- db_handle.rollback();
return false;
}
- int message_id;
- QSqlQuery query_read_msg(db_handle);
+ QSqlQuery query_read_msg(database());
query_read_msg.setForwardOnly(true);
if (!query_read_msg.prepare(QSL("UPDATE Messages SET is_read = :read WHERE id = :id;"))) {
qWarning("Query preparation failed for message read change.");
-
- db_handle.rollback();
return false;
}
- // Rewrite the actual data in the database itself.
- message_id = messageId(row_index);
- query_read_msg.bindValue(QSL(":id"), message_id);
- query_read_msg.bindValue(QSL(":read"), read);
- query_read_msg.exec();
+ query_read_msg.bindValue(QSL(":id"), message.m_id);
+ query_read_msg.bindValue(QSL(":read"), (int) read);
- // Commit changes.
- if (db_handle.commit()) {
- // If commit succeeded, then emit changes, so that view
- // can reflect.
- emit dataChanged(index(row_index, 0), index(row_index, columnCount() - 1));
- emit messageCountsChanged(m_currentSelection.mode(), false, false);
- return true;
+ if (query_read_msg.exec()) {
+ return m_selectedItem->getParentServiceRoot()->onAfterSetMessagesRead(m_selectedItem, QList() << message, read);
}
else {
- return db_handle.rollback();;
+ return false;
}
}
bool MessagesModel::switchMessageImportance(int row_index) {
- QSqlDatabase db_handle = database();
+ QModelIndex target_index = index(row_index, MSG_DB_IMPORTANT_INDEX);
+ RootItem::Importance current_importance = (RootItem::Importance) data(target_index, Qt::EditRole).toInt();
+ RootItem::Importance next_importance = current_importance == RootItem::Important ?
+ RootItem::NotImportant : RootItem::Important;
+ Message message = messageAt(row_index);
+ QPair pair(message, next_importance);
- if (!db_handle.transaction()) {
- qWarning("Starting transaction for message importance switch failed.");
+ if (!m_selectedItem->getParentServiceRoot()->onBeforeSwitchMessageImportance(m_selectedItem,
+ QList >() << pair)) {
return false;
}
- QModelIndex target_index = index(row_index, MSG_DB_IMPORTANT_INDEX);
- int current_importance = data(target_index, Qt::EditRole).toInt();
-
// Rewrite "visible" data in the model.
- bool working_change = current_importance == 1 ?
- setData(target_index, 0) :
- setData(target_index, 1);
+ bool working_change = setData(target_index, next_importance);
if (!working_change) {
// If rewriting in the model failed, then cancel all actions.
qDebug("Setting of new data to the model failed for message importance change.");
-
- db_handle.rollback();
return false;
}
- int message_id;
- QSqlQuery query_importance_msg(db_handle);
+ QSqlQuery query_importance_msg(database());
query_importance_msg.setForwardOnly(true);
if (!query_importance_msg.prepare(QSL("UPDATE Messages SET is_important = :important WHERE id = :id;"))) {
qWarning("Query preparation failed for message importance switch.");
-
- db_handle.rollback();
return false;
}
- message_id = messageId(row_index);
- query_importance_msg.bindValue(QSL(":id"), message_id);
- query_importance_msg.bindValue(QSL(":important"), current_importance == 1 ? 0 : 1);
- query_importance_msg.exec();
+ query_importance_msg.bindValue(QSL(":id"), message.m_id);
+ query_importance_msg.bindValue(QSL(":important"), (int) next_importance);
+
// Commit changes.
- if (db_handle.commit()) {
- // If commit succeeded, then emit changes, so that view
- // can reflect.
- emit dataChanged(index(row_index, 0), index(row_index, columnCount() - 1));
- return true;
+ if (query_importance_msg.exec()) {
+ return m_selectedItem->getParentServiceRoot()->onAfterSwitchMessageImportance(m_selectedItem,
+ QList >() << pair);
}
else {
- return db_handle.rollback();
+ return false;
}
}
bool MessagesModel::switchBatchMessageImportance(const QModelIndexList &messages) {
- QSqlDatabase db_handle = database();
- QSqlQuery query_read_msg(db_handle);
+ QSqlQuery query_read_msg(database());
QStringList message_ids;
+ QList > message_states;
query_read_msg.setForwardOnly(true);
// Obtain IDs of all desired messages.
foreach (const QModelIndex &message, messages) {
- message_ids.append(QString::number(messageId(message.row())));
+ Message msg = messageAt(message.row());
+ RootItem::Importance message_importance = messageImportance((message.row()));
+
+ message_states.append(QPair(msg, message_importance));
+ message_ids.append(QString::number(msg.m_id));
+ }
+
+ if (!m_selectedItem->getParentServiceRoot()->onBeforeSwitchMessageImportance(m_selectedItem, message_states)) {
+ return false;
}
if (query_read_msg.exec(QString(QSL("UPDATE Messages SET is_important = NOT is_important WHERE id IN (%1);"))
.arg(message_ids.join(QSL(", "))))) {
- select();
- fetchAll();
-
- //emit messageCountsChanged(false);
- return true;
+ fetchAllData();
+ return m_selectedItem->getParentServiceRoot()->onAfterSwitchMessageImportance(m_selectedItem, message_states);
}
else {
return false;
}
}
-bool MessagesModel::setBatchMessagesDeleted(const QModelIndexList &messages, int deleted) {
- QSqlDatabase db_handle = database();
- QSqlQuery query_read_msg(db_handle);
+bool MessagesModel::setBatchMessagesDeleted(const QModelIndexList &messages) {
QStringList message_ids;
-
- query_read_msg.setForwardOnly(true);
+ QList msgs;
// Obtain IDs of all desired messages.
foreach (const QModelIndex &message, messages) {
- message_ids.append(QString::number(messageId(message.row())));
+ Message msg = messageAt(message.row());
+
+ msgs.append(msg);
+ message_ids.append(QString::number(msg.m_id));
}
+ if (!m_selectedItem->getParentServiceRoot()->onBeforeMessagesDelete(m_selectedItem, msgs)) {
+ return false;
+ }
+
+ QSqlQuery query_read_msg(database());
QString sql_delete_query;
- if (m_currentSelection.mode() == FeedsSelection::MessagesFromFeeds) {
- sql_delete_query = QString(QSL("UPDATE Messages SET is_deleted = %2 WHERE id IN (%1);")).arg(message_ids.join(QSL(", ")),
- QString::number(deleted));
+ query_read_msg.setForwardOnly(true);
+
+ if (m_selectedItem->kind() != RootItemKind::Bin) {
+ sql_delete_query = QString(QSL("UPDATE Messages SET is_deleted = 1 WHERE id IN (%1);")).arg(message_ids.join(QSL(", ")));
}
else {
- sql_delete_query = QString(QSL("UPDATE Messages SET is_pdeleted = %2 WHERE id IN (%1);")).arg(message_ids.join(QSL(", ")),
- QString::number(deleted));
+ sql_delete_query = QString(QSL("UPDATE Messages SET is_pdeleted = 1 WHERE id IN (%1);")).arg(message_ids.join(QSL(", ")));
}
if (query_read_msg.exec(sql_delete_query)) {
- select();
- fetchAll();
-
- emit messageCountsChanged(m_currentSelection.mode(), true, false);
- return true;
+ fetchAllData();
+ return m_selectedItem->getParentServiceRoot()->onAfterMessagesDelete(m_selectedItem, msgs);
}
else {
return false;
}
}
-bool MessagesModel::setBatchMessagesRead(const QModelIndexList &messages, int read) {
- QSqlDatabase db_handle = database();
- QSqlQuery query_read_msg(db_handle);
+bool MessagesModel::setBatchMessagesRead(const QModelIndexList &messages, RootItem::ReadStatus read) {
QStringList message_ids;
-
- query_read_msg.setForwardOnly(true);
+ QList msgs;
// Obtain IDs of all desired messages.
foreach (const QModelIndex &message, messages) {
- message_ids.append(QString::number(messageId(message.row())));
+ Message msg = messageAt(message.row());
+
+ msgs.append(msg);
+ message_ids.append(QString::number(msg.m_id));
}
- if (query_read_msg.exec(QString(QSL("UPDATE Messages SET is_read = %2 WHERE id IN (%1);")).arg(message_ids.join(QSL(", ")),
- QString::number(read)))) {
- select();
- fetchAll();
+ if (!m_selectedItem->getParentServiceRoot()->onBeforeSetMessagesRead(m_selectedItem, msgs, read)) {
+ return false;
+ }
- emit messageCountsChanged(m_currentSelection.mode(), false, false);
- return true;
+ QSqlQuery query_read_msg(database());
+ query_read_msg.setForwardOnly(true);
+
+ if (query_read_msg.exec(QString(QSL("UPDATE Messages SET is_read = %2 WHERE id IN (%1);"))
+ .arg(message_ids.join(QSL(", ")), read == RootItem::Read ? QSL("1") : QSL("0")))) {
+ fetchAllData();
+
+ return m_selectedItem->getParentServiceRoot()->onAfterSetMessagesRead(m_selectedItem, msgs, read);
}
else {
return false;
@@ -420,30 +423,30 @@ bool MessagesModel::setBatchMessagesRead(const QModelIndexList &messages, int re
}
bool MessagesModel::setBatchMessagesRestored(const QModelIndexList &messages) {
- if (m_currentSelection.mode() == FeedsSelection::MessagesFromFeeds) {
- qDebug("Cannot restore non-deleted messages.");
- return false;
- }
-
- QSqlDatabase db_handle = database();
- QSqlQuery query_read_msg(db_handle);
QStringList message_ids;
-
- query_read_msg.setForwardOnly(true);
+ QList msgs;
// Obtain IDs of all desired messages.
foreach (const QModelIndex &message, messages) {
- message_ids.append(QString::number(messageId(message.row())));
+ Message msg = messageAt(message.row());
+
+ msgs.append(msg);
+ message_ids.append(QString::number(msg.m_id));
}
+ if (!m_selectedItem->getParentServiceRoot()->onBeforeMessagesRestoredFromBin(m_selectedItem, msgs)) {
+ return false;
+ }
+
+ QSqlQuery query_read_msg(database());
QString sql_delete_query = QString(QSL("UPDATE Messages SET is_deleted = 0 WHERE id IN (%1);")).arg(message_ids.join(QSL(", ")));
- if (query_read_msg.exec(sql_delete_query)) {
- select();
- fetchAll();
+ query_read_msg.setForwardOnly(true);
- emit messageCountsChanged(m_currentSelection.mode(), true, true);
- return true;
+ if (query_read_msg.exec(sql_delete_query)) {
+ fetchAllData();
+
+ return m_selectedItem->getParentServiceRoot()->onAfterMessagesRestoredFromBin(m_selectedItem, msgs);
}
else {
return false;
diff --git a/src/core/messagesmodel.h b/src/core/messagesmodel.h
index 3c2138d7c..9a77938c7 100755
--- a/src/core/messagesmodel.h
+++ b/src/core/messagesmodel.h
@@ -20,97 +20,21 @@
#include "definitions/definitions.h"
-#include "core/feedsselection.h"
+#include "core/message.h"
+#include "services/abstract/rootitem.h"
#include
#include
#include
-#include
-// Represents single enclosuresh
-
-struct Enclosure {
- QString m_url;
- QString m_mimeType;
-
- explicit Enclosure(const QString &url = QString(), const QString &mime = QString()) : m_url(url), m_mimeType(mime) {
- }
-};
-
-// Represents single enclosure.
-class Enclosures {
- public:
- static QList decodeEnclosuresFromString(const QString &enclosures_data) {
- QList enclosures;
-
- foreach (const QString &single_enclosure, enclosures_data.split(ENCLOSURES_OUTER_SEPARATOR, QString::SkipEmptyParts)) {
- Enclosure enclosure;
-
- if (single_enclosure.contains(ECNLOSURES_INNER_SEPARATOR)) {
- QStringList mime_url = single_enclosure.split(ECNLOSURES_INNER_SEPARATOR);
-
- enclosure.m_mimeType = QByteArray::fromBase64(mime_url.at(0).toLocal8Bit());
- enclosure.m_url = QByteArray::fromBase64(mime_url.at(1).toLocal8Bit());
- }
- else {
- enclosure.m_url = QByteArray::fromBase64(single_enclosure.toLocal8Bit());
- }
-
- enclosures.append(enclosure);
- }
-
- return enclosures;
- }
-
- static QString encodeEnclosuresToString(const QList &enclosures) {
- QStringList enclosures_str;
-
- foreach (const Enclosure &enclosure, enclosures) {
- if (enclosure.m_mimeType.isEmpty()) {
- enclosures_str.append(enclosure.m_url.toLocal8Bit().toBase64());
- }
- else {
- enclosures_str.append(QString(enclosure.m_mimeType.toLocal8Bit().toBase64()) +
- ECNLOSURES_INNER_SEPARATOR +
- enclosure.m_url.toLocal8Bit().toBase64());
- }
- }
-
- return enclosures_str.join(QString(ENCLOSURES_OUTER_SEPARATOR));
- }
-};
-
-// Represents single message.
-class Message {
- public:
- explicit Message() {
- m_title = m_url = m_author = m_contents = "";
- m_feedId = 0;
- m_enclosures = QList();
- }
-
- QString m_title;
- QString m_url;
- QString m_author;
- QString m_contents;
- QDateTime m_created;
- int m_feedId;
-
- QList m_enclosures;
-
- // Is true if "created" date was obtained directly
- // from the feed, otherwise is false
- bool m_createdFromFeed;
-};
-
class MessagesModel : public QSqlTableModel {
Q_OBJECT
public:
// Enum which describes basic filtering schemes
// for messages.
- enum MessageFilter {
+ enum MessageHighlighter {
NoHighlighting = 100,
HighlightUnread = 101,
HighlightImportant = 102
@@ -129,15 +53,9 @@ class MessagesModel : public QSqlTableModel {
// Returns message at given index.
Message messageAt(int row_index) const;
int messageId(int row_index) const;
+ RootItem::Importance messageImportance(int row_index) const;
- FeedsSelection loadedSelection() const;
-
- public slots:
- // To disable persistent changes submissions.
- inline bool submitAll() {
- qFatal("Submitting changes via model is not allowed.");
- return false;
- }
+ RootItem *loadedItem() const;
void updateDateFormat();
void reloadWholeLayout();
@@ -147,7 +65,7 @@ class MessagesModel : public QSqlTableModel {
// NOTE: Model is NOT reset after one of these methods are applied
// but changes ARE written to the database.
bool switchMessageImportance(int row_index);
- bool setMessageRead(int row_index, int read);
+ bool setMessageRead(int row_index, RootItem::ReadStatus read);
// BATCH messages manipulators.
// NOTE: These methods are used for changing of attributes of
@@ -155,37 +73,32 @@ class MessagesModel : public QSqlTableModel {
// NOTE: Model is reset after one of these methods is applied and
// changes ARE written to the database.
bool switchBatchMessageImportance(const QModelIndexList &messages);
- bool setBatchMessagesDeleted(const QModelIndexList &messages, int deleted);
- bool setBatchMessagesRead(const QModelIndexList &messages, int read);
+ bool setBatchMessagesDeleted(const QModelIndexList &messages);
+ bool setBatchMessagesRead(const QModelIndexList &messages, RootItem::ReadStatus read);
bool setBatchMessagesRestored(const QModelIndexList &messages);
// Fetches ALL available data to the model.
- void fetchAll();
+ void fetchAllData();
+
+ // Filters messages
+ void highlightMessages(MessageHighlighter highlight);
// Loads messages of given feeds.
- void loadMessages(const FeedsSelection &selection);
+ void loadMessages(RootItem *item);
- void filterMessages(MessageFilter filter);
-
- signals:
- // Emitted if some persistent change is made which affects count of "unread/all" messages.
- void messageCountsChanged(FeedsSelection::SelectionMode mode, bool total_msg_count_changed, bool any_msg_restored);
-
- protected:
- // Sets up header data.
- void setupHeaderData();
-
- // Creates "normal" and "bold" fonts.
- void setupFonts();
-
- // Sets up all icons which are used directly by this model.
- void setupIcons();
+ private slots:
+ // To disable persistent changes submissions.
+ bool submitAll();
private:
- MessageFilter m_messageFilter;
+ void setupHeaderData();
+ void setupFonts();
+ void setupIcons();
+
+ MessageHighlighter m_messageHighlighter;
QString m_customDateFormat;
- FeedsSelection m_currentSelection;
+ RootItem *m_selectedItem;
QList m_headerData;
QList m_tooltipData;
@@ -197,6 +110,6 @@ class MessagesModel : public QSqlTableModel {
QIcon m_unreadIcon;
};
-Q_DECLARE_METATYPE(MessagesModel::MessageFilter)
+Q_DECLARE_METATYPE(MessagesModel::MessageHighlighter)
#endif // MESSAGESMODEL_H
diff --git a/src/core/messagesproxymodel.cpp b/src/core/messagesproxymodel.cpp
index 4fc5f9ece..9be27cfaa 100755
--- a/src/core/messagesproxymodel.cpp
+++ b/src/core/messagesproxymodel.cpp
@@ -38,6 +38,37 @@ MessagesProxyModel::~MessagesProxyModel() {
qDebug("Destroying MessagesProxyModel instance.");
}
+QModelIndex MessagesProxyModel::getNextPreviousUnreadItemIndex(int default_row) {
+ bool started_from_zero = default_row == 0;
+ QModelIndex next_index = getNextUnreadItemIndex(default_row, rowCount() - 1);
+
+ // There is no next message, check previous.
+ if (!next_index.isValid() && !started_from_zero) {
+ next_index = getNextUnreadItemIndex(0, default_row - 1);
+ }
+
+ return next_index;
+}
+
+QModelIndex MessagesProxyModel::getNextUnreadItemIndex(int default_row, int max_row) {
+ while (default_row <= max_row) {
+ // Get info if the message is read or not.
+ QModelIndex proxy_index = index(default_row, MSG_DB_READ_INDEX);
+ bool is_read = m_sourceModel->data(mapToSource(proxy_index).row(),
+ MSG_DB_READ_INDEX, Qt::EditRole).toInt() == 1;
+
+ if (!is_read) {
+ // We found unread message, mark it.
+ return proxy_index;
+ }
+ else {
+ default_row++;
+ }
+ }
+
+ return QModelIndex();
+}
+
bool MessagesProxyModel::lessThan(const QModelIndex &left, const QModelIndex &right) const {
if (left.column() == MSG_DB_TITLE_INDEX && right.column() == MSG_DB_TITLE_INDEX) {
return QString::localeAwareCompare(m_sourceModel->data(left).toString(),
diff --git a/src/core/messagesproxymodel.h b/src/core/messagesproxymodel.h
old mode 100644
new mode 100755
index 35d7cef64..1bb2faaa1
--- a/src/core/messagesproxymodel.h
+++ b/src/core/messagesproxymodel.h
@@ -36,6 +36,8 @@ class MessagesProxyModel : public QSortFilterProxyModel {
return m_sourceModel;
}
+ QModelIndex getNextPreviousUnreadItemIndex(int default_row);
+
// Maps list of indexes.
QModelIndexList mapListToSource(const QModelIndexList &indexes);
QModelIndexList mapListFromSource(const QModelIndexList &indexes, bool deep = false);
@@ -43,11 +45,12 @@ class MessagesProxyModel : public QSortFilterProxyModel {
// Fix for matching indexes with respect to specifics of the message model.
QModelIndexList match(const QModelIndex &start, int role, const QVariant &entered_value, int hits, Qt::MatchFlags flags) const;
- protected:
+ private:
+ QModelIndex getNextUnreadItemIndex(int default_row, int max_row);
+
// Compares two rows of data.
bool lessThan(const QModelIndex &left, const QModelIndex &right) const;
- private:
// Source model pointer.
MessagesModel *m_sourceModel;
};
diff --git a/src/core/parsingfactory.cpp b/src/core/parsingfactory.cpp
index fc8a96145..0cdf85104 100755
--- a/src/core/parsingfactory.cpp
+++ b/src/core/parsingfactory.cpp
@@ -73,7 +73,7 @@ QList ParsingFactory::parseAsATOM10(const QString &data) {
for (int i = 0; i < elem_links.size(); i++) {
QDomElement link = elem_links.at(i).toElement();
- if (link.attribute(QSL("rel")) == QL1S("enclosure")) {
+ if (link.attribute(QSL("rel")) == QSL("enclosure")) {
new_message.m_enclosures.append(Enclosure(link.attribute(QSL("href")), link.attribute(QSL("type"))));
qDebug("Adding enclosure '%s' for the message.", qPrintable(new_message.m_enclosures.last().m_url));
@@ -99,7 +99,7 @@ QList ParsingFactory::parseAsATOM10(const QString &data) {
new_message.m_created = current_time;
}
- // TODO: There is a difference between "" and QString() in terms of NULL SQL values!
+ // WARNING: There is a difference between "" and QString() in terms of NULL SQL values!
// This is because of difference in QString::isNull() and QString::isEmpty(), the "" is not null
// while QString() is.
if (new_message.m_author.isNull()) {
@@ -203,12 +203,12 @@ QList ParsingFactory::parseAsRSS20(const QString &data) {
// Deal with titles & descriptions.
QString elem_title = message_item.namedItem(QSL("title")).toElement().text().simplified();
- QString elem_description = message_item.namedItem(QSL("description")).toElement().text();
+ QString elem_description = message_item.namedItem(QSL("encoded")).toElement().text();
QString elem_enclosure = message_item.namedItem(QSL("enclosure")).toElement().attribute(QSL("url"));
QString elem_enclosure_type = message_item.namedItem(QSL("enclosure")).toElement().attribute(QSL("type"));
if (elem_description.isEmpty()) {
- elem_description = message_item.namedItem(QSL("encoded")).toElement().text();
+ elem_description = message_item.namedItem(QSL("description")).toElement().text();
}
// Now we obtained maximum of information for title & description.
diff --git a/src/core/recyclebin.cpp b/src/core/recyclebin.cpp
deleted file mode 100644
index df086ff39..000000000
--- a/src/core/recyclebin.cpp
+++ /dev/null
@@ -1,185 +0,0 @@
-// This file is part of RSS Guard.
-//
-// Copyright (C) 2011-2015 by Martin Rotter
-//
-// RSS Guard is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// RSS Guard is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with RSS Guard. If not, see .
-
-#include "core/recyclebin.h"
-
-#include "miscellaneous/application.h"
-#include "miscellaneous/iconfactory.h"
-
-#include
-
-
-RecycleBin::RecycleBin(RootItem *parent)
- : RootItem(parent) {
- m_kind = RootItem::Bin;
- m_icon = qApp->icons()->fromTheme(QSL("folder-recycle-bin"));
- m_id = ID_RECYCLE_BIN;
- m_title = tr("Recycle bin");
- m_description = tr("Recycle bin contains all deleted messages from all feeds.");
- m_creationDate = QDateTime::currentDateTime();
-
- updateCounts(true);
-}
-
-RecycleBin::~RecycleBin() {
- qDebug("Destroying RecycleBin instance.");
-}
-
-int RecycleBin::childCount() const {
- return 0;
-}
-
-void RecycleBin::appendChild(RootItem *child) {
- Q_UNUSED(child)
-}
-
-int RecycleBin::countOfUnreadMessages() const {
- return m_unreadCount;
-}
-
-int RecycleBin::countOfAllMessages() const {
- return m_totalCount;
-}
-
-QVariant RecycleBin::data(int column, int role) const {
- switch (role) {
- case Qt::DisplayRole:
- if (column == FDS_MODEL_TITLE_INDEX) {
- return m_title;
- }
- else if (column == FDS_MODEL_COUNTS_INDEX) {
- return qApp->settings()->value(GROUP(Feeds), SETTING(Feeds::CountFormat)).toString()
- .replace(PLACEHOLDER_UNREAD_COUNTS, QString::number(countOfUnreadMessages()))
- .replace(PLACEHOLDER_ALL_COUNTS, QString::number(countOfAllMessages()));
- }
- else {
- return QVariant();
- }
-
- case Qt::EditRole:
- if (column == FDS_MODEL_TITLE_INDEX) {
- return m_title;
- }
- else if (column == FDS_MODEL_COUNTS_INDEX) {
- return countOfUnreadMessages();
- }
- else {
- return QVariant();
- }
-
- case Qt::FontRole:
- return countOfUnreadMessages() > 0 ? m_boldFont : m_normalFont;
-
- case Qt::DecorationRole:
- if (column == FDS_MODEL_TITLE_INDEX) {
- return m_icon;
- }
- else {
- return QVariant();
- }
-
- case Qt::ToolTipRole:
- return tr("Recycle bin\n%1").arg(tr("%n deleted message(s).", 0, countOfAllMessages()));
-
- case Qt::TextAlignmentRole:
- if (column == FDS_MODEL_COUNTS_INDEX) {
- return Qt::AlignCenter;
- }
- else {
- return QVariant();
- }
-
- default:
- return QVariant();
- }
-}
-
-bool RecycleBin::empty() {
- QSqlDatabase db_handle = qApp->database()->connection(QSL("RecycleBin"), DatabaseFactory::FromSettings);
-
- if (!db_handle.transaction()) {
- qWarning("Starting transaction for recycle bin emptying.");
- return false;
- }
-
- QSqlQuery query_empty_bin(db_handle);
- query_empty_bin.setForwardOnly(true);
-
- if (!query_empty_bin.exec(QSL("UPDATE Messages SET is_pdeleted = 1 WHERE is_deleted = 1;"))) {
- qWarning("Query execution failed for recycle bin emptying.");
-
- db_handle.rollback();
- return false;
- }
-
- // Commit changes.
- if (db_handle.commit()) {
- return true;
- }
- else {
- return db_handle.rollback();
- }
-}
-
-bool RecycleBin::restore() {
- QSqlDatabase db_handle = qApp->database()->connection(QSL("RecycleBin"), DatabaseFactory::FromSettings);
-
- if (!db_handle.transaction()) {
- qWarning("Starting transaction for recycle bin restoring.");
- return false;
- }
-
- QSqlQuery query_empty_bin(db_handle);
- query_empty_bin.setForwardOnly(true);
-
- if (!query_empty_bin.exec(QSL("UPDATE Messages SET is_deleted = 0 WHERE is_deleted = 1 AND is_pdeleted = 0;"))) {
- qWarning("Query execution failed for recycle bin restoring.");
-
- db_handle.rollback();
- return false;
- }
-
- // Commit changes.
- if (db_handle.commit()) {
- return true;
- }
- else {
- return db_handle.rollback();
- }
-}
-
-void RecycleBin::updateCounts(bool update_total_count) {
- QSqlDatabase database = qApp->database()->connection(QSL("RecycleBin"), DatabaseFactory::FromSettings);
- QSqlQuery query_all(database);
- query_all.setForwardOnly(true);
-
- if (query_all.exec(QSL("SELECT count(*) FROM Messages WHERE is_read = 0 AND is_deleted = 1 AND is_pdeleted = 0;")) && query_all.next()) {
- m_unreadCount = query_all.value(0).toInt();
- }
- else {
- m_unreadCount = 0;
- }
-
- if (update_total_count) {
- if (query_all.exec(QSL("SELECT count(*) FROM Messages WHERE is_deleted = 1 AND is_pdeleted = 0;")) && query_all.next()) {
- m_totalCount = query_all.value(0).toInt();
- }
- else {
- m_totalCount = 0;
- }
- }
-}
diff --git a/src/core/rootitem.cpp b/src/core/rootitem.cpp
deleted file mode 100644
index a262b8d96..000000000
--- a/src/core/rootitem.cpp
+++ /dev/null
@@ -1,175 +0,0 @@
-// This file is part of RSS Guard.
-//
-// Copyright (C) 2011-2015 by Martin Rotter
-//
-// RSS Guard is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// RSS Guard is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with RSS Guard. If not, see .
-
-#include "core/rootitem.h"
-
-#include "core/category.h"
-#include "core/feed.h"
-#include "core/recyclebin.h"
-#include "miscellaneous/application.h"
-
-#include
-
-
-RootItem::RootItem(RootItem *parent_item)
- : m_kind(RootItem::Root),
- m_id(NO_PARENT_CATEGORY),
- m_title(QString()),
- m_description(QString()),
- m_icon(QIcon()),
- m_creationDate(QDateTime()),
- m_childItems(QList()),
- m_parentItem(parent_item) {
- setupFonts();
-}
-
-RootItem::~RootItem() {
- qDeleteAll(m_childItems);
-}
-
-void RootItem::setupFonts() {
- m_normalFont = Application::font("FeedsView");
- m_boldFont = m_normalFont;
- m_boldFont.setBold(true);
-}
-
-int RootItem::row() const {
- if (m_parentItem) {
- return m_parentItem->m_childItems.indexOf(const_cast(this));
- }
- else {
- // This item has no parent. Therefore, its row index is 0.
- return 0;
- }
-}
-
-QVariant RootItem::data(int column, int role) const {
- Q_UNUSED(column)
- Q_UNUSED(role)
-
- // Do not return anything for the root item.
- return QVariant();
-}
-
-int RootItem::countOfAllMessages() const {
- int total_count = 0;
-
- foreach (RootItem *child_item, m_childItems) {
- if (child_item->kind() != RootItem::Bin) {
- total_count += child_item->countOfAllMessages();
- }
- }
-
- return total_count;
-}
-
-QList RootItem::getRecursiveChildren() {
- QList children;
-
- if (kind() == RootItem::Feeed) {
- // Root itself is a FEED.
- children.append(this);
- }
- else {
- // Root itself is a CATEGORY or ROOT item.
- QList traversable_items;
-
- traversable_items.append(this);
-
- // Iterate all nested categories.
- while (!traversable_items.isEmpty()) {
- RootItem *active_category = traversable_items.takeFirst();
-
- foreach (RootItem *child, active_category->childItems()) {
- if (child->kind() == RootItem::Feeed) {
- // This child is feed.
- children.append(child);
- }
- else if (child->kind() == RootItem::Cattegory) {
- // This child is category, add its child feeds too.
- traversable_items.append(child);
- }
- }
- }
- }
-
- return children;
-}
-
-bool RootItem::removeChild(RootItem *child) {
- return m_childItems.removeOne(child);
-}
-
-RecycleBin *RootItem::toRecycleBin() {
- return static_cast(this);
-}
-
-Category *RootItem::toCategory() {
- return static_cast(this);
-}
-
-Feed *RootItem::toFeed() {
- return static_cast(this);
-}
-
-RootItem *RootItem::child(RootItem::Kind kind_of_child, const QString &identifier) {
- foreach (RootItem *child, childItems()) {
- if (child->kind() == kind_of_child) {
- if ((kind_of_child == Cattegory && child->title() == identifier) ||
- (kind_of_child == Feeed && child->toFeed()->url() == identifier)) {
- return child;
- }
- }
- }
-
- return NULL;
-}
-
-int RootItem::countOfUnreadMessages() const {
- int total_count = 0;
-
- foreach (RootItem *child_item, m_childItems) {
- if (child_item->kind() != RootItem::Bin) {
- total_count += child_item->countOfUnreadMessages();
- }
- }
-
- return total_count;
-}
-
-bool RootItem::removeChild(int index) {
- if (index >= 0 && index < m_childItems.size()) {
- m_childItems.removeAt(index);
- return true;
- }
- else {
- return false;
- }
-}
-
-bool RootItem::isEqual(RootItem *lhs, RootItem *rhs) {
- return (lhs->kind() == rhs->kind()) && (lhs->id() == rhs->id());
-}
-
-bool RootItem::lessThan(RootItem *lhs, RootItem *rhs) {
- if (lhs->kind() == rhs->kind()) {
- return lhs->id() < rhs->id();
- }
- else {
- return false;
- }
-}
diff --git a/src/core/rootitem.h b/src/core/rootitem.h
deleted file mode 100644
index 7ee0e49ef..000000000
--- a/src/core/rootitem.h
+++ /dev/null
@@ -1,210 +0,0 @@
-// This file is part of RSS Guard.
-//
-// Copyright (C) 2011-2015 by Martin Rotter
-//
-// RSS Guard is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// RSS Guard is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with RSS Guard. If not, see .
-
-#ifndef ROOTITEM_H
-#define ROOTITEM_H
-
-#include
-
-#include
-#include
-
-class RecycleBin;
-class Category;
-class Feed;
-
-// Represents ROOT item of FeedsModel.
-// NOTE: This class is derived to add functionality for
-// all other non-root items of FeedsModel.
-class RootItem {
- public:
- // Describes the kind of the item.
- enum Kind {
- Root = 1001,
- Bin = 1002,
- Feeed = 1003,
- Cattegory = 1004
- };
-
- // Constructors and destructors.
- explicit RootItem(RootItem *parent_item = NULL);
- virtual ~RootItem();
-
- // Basic operations.
- inline virtual RootItem *parent() const {
- return m_parentItem;
- }
-
- inline virtual void setParent(RootItem *parent_item) {
- m_parentItem = parent_item;
- }
-
- inline virtual RootItem *child(int row) {
- return m_childItems.value(row);
- }
-
- virtual RootItem *child(RootItem::Kind kind_of_child, const QString &identifier);
-
- inline virtual int childCount() const {
- return m_childItems.size();
- }
-
- inline virtual void appendChild(RootItem *child) {
- m_childItems.append(child);
- child->setParent(this);
- }
-
- virtual int row() const;
- virtual QVariant data(int column, int role) const;
-
- // Each item offers "counts" of messages.
- // Returns counts of messages of all child items summed up.
- virtual int countOfUnreadMessages() const;
- virtual int countOfAllMessages() const;
-
- // This method is used to permanently
- // "remove" (or "unregister") this item.
- // This typically removes item and its
- // "children" (for example messages or child feeds)
- // from the database.
- // Returns true if "I" was removed.
- virtual bool removeItself() {
- return false;
- }
-
- // Access to children.
- inline QList childItems() const {
- return m_childItems;
- }
-
- // Checks whether THIS object is child (direct or indirect)
- // of the given root.
- bool isChildOf(RootItem *root) {
- if (root == NULL) {
- return false;
- }
-
- RootItem *this_item = this;
-
- while (this_item->kind() != RootItem::Root) {
- if (root->childItems().contains(this_item)) {
- return true;
- }
- else {
- this_item = this_item->parent();
- }
- }
-
- return false;
- }
-
- bool isParentOf(RootItem *child) {
- if (child == NULL) {
- return false;
- }
- else {
- return child->isChildOf(this);
- }
- }
-
- // Removes all children from this item.
- // NOTE: Children are NOT freed from the memory.
- inline void clearChildren() {
- m_childItems.clear();
- }
-
- QList getRecursiveChildren();
-
- // Removes particular child at given index.
- // NOTE: Child is NOT freed from the memory.
- bool removeChild(int index);
- bool removeChild(RootItem *child);
-
- inline Kind kind() const {
- return m_kind;
- }
-
- // Each item has icon.
- inline QIcon icon() const {
- return m_icon;
- }
-
- inline void setIcon(const QIcon &icon) {
- m_icon = icon;
- }
-
- // Each item has some kind of id. Usually taken from primary key attribute from DB.
- inline int id() const {
- return m_id;
- }
-
- inline void setId(int id) {
- m_id = id;
- }
-
- // Each item has its title.
- inline QString title() const {
- return m_title;
- }
-
- inline void setTitle(const QString &title) {
- m_title = title;
- }
-
- inline QDateTime creationDate() const {
- return m_creationDate;
- }
-
- inline void setCreationDate(const QDateTime &creation_date) {
- m_creationDate = creation_date;
- }
-
- inline QString description() const {
- return m_description;
- }
-
- inline void setDescription(const QString &description) {
- m_description = description;
- }
-
- // Converters
- RecycleBin *toRecycleBin();
- Category *toCategory();
- Feed *toFeed();
-
- // Compares two model items.
- static bool isEqual(RootItem *lhs, RootItem *rhs);
- static bool lessThan(RootItem *lhs, RootItem *rhs);
-
- protected:
- void setupFonts();
-
- Kind m_kind;
- int m_id;
- QString m_title;
- QString m_description;
- QIcon m_icon;
- QDateTime m_creationDate;
-
- QFont m_normalFont;
- QFont m_boldFont;
-
- QList m_childItems;
- RootItem *m_parentItem;
-};
-
-#endif // ROOTITEM_H
diff --git a/src/definitions/definitions.h.in b/src/definitions/definitions.h.in
index adc147a8d..6cf56098b 100755
--- a/src/definitions/definitions.h.in
+++ b/src/definitions/definitions.h.in
@@ -38,6 +38,9 @@
#define APP_USERAGENT QString("@APP_NAME@/@APP_VERSION@ (@APP_URL@) on @CMAKE_SYSTEM@")
#define APP_DONATE_URL "https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=XMWPLPK893VH4"
+#define SERVICE_CODE_STD_RSS "std-rss"
+#define SERVICE_CODE_TT_RSS "tt-rss"
+
#define ENCLOSURES_OUTER_SEPARATOR '#'
#define ECNLOSURES_INNER_SEPARATOR '&'
#define URI_SCHEME_FEED "feed://"
@@ -50,6 +53,7 @@
#define URL_REGEXP "^(http|https|feed|ftp):\\/\\/[\\w\\-_]+(\\.[\\w\\-_]+)+([\\w\\-\\.,@?^=%&:/~\\+#]*[\\w\\-\\@?^=%&/~\\+#])?$"
#define USER_AGENT_HTTP_HEADER "User-Agent"
#define TEXT_TITLE_LIMIT 30
+#define RESELECT_MESSAGE_THRESSHOLD 500
#define MAX_ZOOM_FACTOR 10.0
#define ICON_SIZE_SETTINGS 16
#define NO_PARENT_CATEGORY -1
@@ -68,7 +72,7 @@
#define INTERNAL_URL_BLANK "about:blank"
#define DEFAULT_AUTO_UPDATE_INTERVAL 15
#define AUTO_UPDATE_INTERVAL 60000
-#define STARTUP_UPDATE_DELAY 15000
+#define STARTUP_UPDATE_DELAY 30000
#define TIMEZONE_OFFSET_LIMIT 6
#define CHANGE_EVENT_DELAY 250
#define FLAG_ICON_SUBFOLDER "flags"
@@ -82,10 +86,11 @@
#define ACCEPT_HEADER_FOR_FEED_DOWNLOADER "application/atom+xml,application/xml;q=0.9,text/xml;q=0.8,*/*;q=0.7"
#define MIME_TYPE_ITEM_POINTER "@APP_LOW_NAME@/itempointer"
#define DOWNLOADER_ICON_SIZE 48
-#define NOTIFICATION_ICON_SIZE 64
+#define NOTIFICATION_ICON_SIZE 32
#define GOOGLE_SEARCH_URL "https://www.google.com/search?q=%1&ie=utf-8&oe=utf-8"
#define GOOGLE_SUGGEST_URL "http://suggestqueries.google.com/complete/search?output=toolbar&hl=en&q=%1"
#define ENCRYPTION_FILE_NAME "key.private"
+#define RELOAD_MODEL_BORDER_NUM 10
#define FEED_INITIAL_OPML_PATTERN "feeds-%1.opml"
@@ -116,7 +121,7 @@
#define APP_DB_SQLITE_FILE "database.db"
// Keep this in sync with schema versions declared in SQL initialization code.
-#define APP_DB_SCHEMA_VERSION "3"
+#define APP_DB_SCHEMA_VERSION "4"
#define APP_DB_UPDATE_FILE_PATTERN "db_update_%1_%2_%3.sql"
#define APP_DB_COMMENT_SPLIT "-- !\n"
#define APP_DB_WEB_PATH "data/database/web"
@@ -179,6 +184,8 @@
#define MSG_DB_CONTENTS_INDEX 9
#define MSG_DB_PDELETED_INDEX 10
#define MSG_DB_ENCLOSURES_INDEX 11
+#define MSG_DB_ACCOUNT_ID_INDEX 12
+#define MSG_DB_CUSTOM_ID_INDEX 13
// Indexes of columns as they are DEFINED IN THE TABLE for CATEGORIES.
#define CAT_DB_ID_INDEX 0
@@ -187,6 +194,8 @@
#define CAT_DB_DESCRIPTION_INDEX 3
#define CAT_DB_DCREATED_INDEX 4
#define CAT_DB_ICON_INDEX 5
+#define CAT_DB_ACCOUNT_ID_INDEX 6
+#define CAT_DB_CUSTOM_ID_INDEX 7
// Indexes of columns as they are DEFINED IN THE TABLE for FEEDS.
#define FDS_DB_ID_INDEX 0
@@ -203,6 +212,8 @@
#define FDS_DB_UPDATE_TYPE_INDEX 11
#define FDS_DB_UPDATE_INTERVAL_INDEX 12
#define FDS_DB_TYPE_INDEX 13
+#define FDS_DB_ACCOUNT_ID_INDEX 14
+#define FDS_DB_CUSTOM_ID_INDEX 15
// Indexes of columns for feed models.
#define FDS_MODEL_TITLE_INDEX 0
diff --git a/src/dynamic-shortcuts/dynamicshortcutswidget.cpp b/src/dynamic-shortcuts/dynamicshortcutswidget.cpp
index 12ad5fac8..73356fa42 100755
--- a/src/dynamic-shortcuts/dynamicshortcutswidget.cpp
+++ b/src/dynamic-shortcuts/dynamicshortcutswidget.cpp
@@ -71,7 +71,7 @@ void DynamicShortcutsWidget::populate(QList actions) {
int row_id = 0;
- // TODO: Maybe separate actions into "categories". Each category will start with label.
+ // FIXME: Maybe separate actions into "categories". Each category will start with label.
// I will assign each QAaction a property called "category" with some enum value.
// Like:
// File, FeedsCategories, Messages, Tools, WebBrowser, Help
diff --git a/src/gui/dialogs/formabout.cpp b/src/gui/dialogs/formabout.cpp
index 8cce70b07..0df95c066 100755
--- a/src/gui/dialogs/formabout.cpp
+++ b/src/gui/dialogs/formabout.cpp
@@ -126,7 +126,7 @@ void FormAbout::loadLicenseAndInformation() {
m_ui->m_txtInfo->setText(tr("%5 is a (very) tiny feed reader."
"
This software is distributed under the terms of GNU General Public License, version 3."
"