Added appdata.xml, screenshots and work on Gmail plugin.
This commit is contained in:
parent
1aef34a4e5
commit
5998ebdb9f
16 changed files with 300 additions and 202 deletions
37
resources/desktop/appdata.xml
Executable file
37
resources/desktop/appdata.xml
Executable file
|
@ -0,0 +1,37 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!-- Copyright 2017 Martin Rotter <rotter.martinos@gmail.com> -->
|
||||||
|
<component type="desktop-application">
|
||||||
|
<id>com.github.rssguard</id>
|
||||||
|
<metadata_license>GPL-3.0</metadata_license>
|
||||||
|
<project_license>GPL-3.0</project_license>
|
||||||
|
<name>RSS Guard </name>
|
||||||
|
<summary>Simple (yet powerful) feed reader</summary>
|
||||||
|
<description>
|
||||||
|
<p>
|
||||||
|
RSS Guard is simple (yet powerful) feed reader. It is able to fetch the most known feed formats, including RSS/RDF and ATOM. RSS Guard is developed on top of the Qt library
|
||||||
|
</p>
|
||||||
|
</description>
|
||||||
|
<launchable type="desktop-id">rssguard.desktop</launchable>
|
||||||
|
<screenshots>
|
||||||
|
<screenshot type="default">
|
||||||
|
<caption>Linux version</caption>
|
||||||
|
<image>http://www.hughsie.com/en_US/main.png</image>
|
||||||
|
</screenshot>
|
||||||
|
<screenshot>
|
||||||
|
<caption>Windows version</caption>
|
||||||
|
<image>http://www.hughsie.com/en_US/main.png</image>
|
||||||
|
</screenshot>
|
||||||
|
</screenshots>
|
||||||
|
<url type="homepage">http://www.gnome.org/projects/en_US/gnome-power-manager</url>
|
||||||
|
<project_group>GNOME</project_group>
|
||||||
|
<provides>
|
||||||
|
<binary>gnome-power-statistics</binary>
|
||||||
|
</provides>
|
||||||
|
<releases>
|
||||||
|
<release version="3.12.2" date="2013-04-12">
|
||||||
|
<description>
|
||||||
|
<p>Fixes issues X, Y and Z</p>
|
||||||
|
</description>
|
||||||
|
</release>
|
||||||
|
</releases>
|
||||||
|
</component>
|
BIN
resources/screenshots/screenshot-linux.png
Executable file
BIN
resources/screenshots/screenshot-linux.png
Executable file
Binary file not shown.
After Width: | Height: | Size: 149 KiB |
BIN
resources/screenshots/screenshot-windows.png
Executable file
BIN
resources/screenshots/screenshot-windows.png
Executable file
Binary file not shown.
After Width: | Height: | Size: 127 KiB |
174
rssguard.pro
174
rssguard.pro
|
@ -209,14 +209,16 @@ win32 {
|
||||||
}
|
}
|
||||||
|
|
||||||
CONFIG *= resources_big
|
CONFIG *= resources_big
|
||||||
RESOURCES += resources/sql.qrc \
|
RESOURCES += resources/sql.qrc \
|
||||||
resources/rssguard.qrc
|
resources/rssguard.qrc
|
||||||
|
|
||||||
HEADERS += src/core/feeddownloader.h \
|
HEADERS += src/core/feeddownloader.h \
|
||||||
src/core/feedsmodel.h \
|
src/core/feedsmodel.h \
|
||||||
src/core/feedsproxymodel.h \
|
src/core/feedsproxymodel.h \
|
||||||
src/core/message.h \
|
src/core/message.h \
|
||||||
src/core/messagesmodel.h \
|
src/core/messagesmodel.h \
|
||||||
|
src/core/messagesmodelcache.h \
|
||||||
|
src/core/messagesmodelsqllayer.h \
|
||||||
src/core/messagesproxymodel.h \
|
src/core/messagesproxymodel.h \
|
||||||
src/definitions/definitions.h \
|
src/definitions/definitions.h \
|
||||||
src/dynamic-shortcuts/dynamicshortcuts.h \
|
src/dynamic-shortcuts/dynamicshortcuts.h \
|
||||||
|
@ -241,6 +243,7 @@ HEADERS += src/core/feeddownloader.h \
|
||||||
src/gui/feedmessageviewer.h \
|
src/gui/feedmessageviewer.h \
|
||||||
src/gui/feedstoolbar.h \
|
src/gui/feedstoolbar.h \
|
||||||
src/gui/feedsview.h \
|
src/gui/feedsview.h \
|
||||||
|
src/gui/guiutilities.h \
|
||||||
src/gui/labelwithstatus.h \
|
src/gui/labelwithstatus.h \
|
||||||
src/gui/lineeditwithstatus.h \
|
src/gui/lineeditwithstatus.h \
|
||||||
src/gui/messagebox.h \
|
src/gui/messagebox.h \
|
||||||
|
@ -248,6 +251,15 @@ HEADERS += src/core/feeddownloader.h \
|
||||||
src/gui/messagestoolbar.h \
|
src/gui/messagestoolbar.h \
|
||||||
src/gui/messagesview.h \
|
src/gui/messagesview.h \
|
||||||
src/gui/plaintoolbutton.h \
|
src/gui/plaintoolbutton.h \
|
||||||
|
src/gui/settings/settingsbrowsermail.h \
|
||||||
|
src/gui/settings/settingsdatabase.h \
|
||||||
|
src/gui/settings/settingsdownloads.h \
|
||||||
|
src/gui/settings/settingsfeedsmessages.h \
|
||||||
|
src/gui/settings/settingsgeneral.h \
|
||||||
|
src/gui/settings/settingsgui.h \
|
||||||
|
src/gui/settings/settingslocalization.h \
|
||||||
|
src/gui/settings/settingspanel.h \
|
||||||
|
src/gui/settings/settingsshortcuts.h \
|
||||||
src/gui/squeezelabel.h \
|
src/gui/squeezelabel.h \
|
||||||
src/gui/statusbar.h \
|
src/gui/statusbar.h \
|
||||||
src/gui/styleditemdelegatewithoutfocus.h \
|
src/gui/styleditemdelegatewithoutfocus.h \
|
||||||
|
@ -257,6 +269,7 @@ HEADERS += src/core/feeddownloader.h \
|
||||||
src/gui/tabwidget.h \
|
src/gui/tabwidget.h \
|
||||||
src/gui/timespinbox.h \
|
src/gui/timespinbox.h \
|
||||||
src/gui/toolbareditor.h \
|
src/gui/toolbareditor.h \
|
||||||
|
src/gui/treeviewcolumnsmenu.h \
|
||||||
src/gui/widgetwithstatus.h \
|
src/gui/widgetwithstatus.h \
|
||||||
src/miscellaneous/application.h \
|
src/miscellaneous/application.h \
|
||||||
src/miscellaneous/autosaver.h \
|
src/miscellaneous/autosaver.h \
|
||||||
|
@ -264,6 +277,8 @@ HEADERS += src/core/feeddownloader.h \
|
||||||
src/miscellaneous/databasefactory.h \
|
src/miscellaneous/databasefactory.h \
|
||||||
src/miscellaneous/databasequeries.h \
|
src/miscellaneous/databasequeries.h \
|
||||||
src/miscellaneous/debugging.h \
|
src/miscellaneous/debugging.h \
|
||||||
|
src/miscellaneous/externaltool.h \
|
||||||
|
src/miscellaneous/feedreader.h \
|
||||||
src/miscellaneous/iconfactory.h \
|
src/miscellaneous/iconfactory.h \
|
||||||
src/miscellaneous/iofactory.h \
|
src/miscellaneous/iofactory.h \
|
||||||
src/miscellaneous/localization.h \
|
src/miscellaneous/localization.h \
|
||||||
|
@ -278,6 +293,7 @@ HEADERS += src/core/feeddownloader.h \
|
||||||
src/network-web/downloader.h \
|
src/network-web/downloader.h \
|
||||||
src/network-web/downloadmanager.h \
|
src/network-web/downloadmanager.h \
|
||||||
src/network-web/networkfactory.h \
|
src/network-web/networkfactory.h \
|
||||||
|
src/network-web/oauth2service.h \
|
||||||
src/network-web/silentnetworkaccessmanager.h \
|
src/network-web/silentnetworkaccessmanager.h \
|
||||||
src/network-web/webfactory.h \
|
src/network-web/webfactory.h \
|
||||||
src/qtsingleapplication/qtlocalpeer.h \
|
src/qtsingleapplication/qtlocalpeer.h \
|
||||||
|
@ -285,6 +301,7 @@ HEADERS += src/core/feeddownloader.h \
|
||||||
src/qtsingleapplication/qtsingleapplication.h \
|
src/qtsingleapplication/qtsingleapplication.h \
|
||||||
src/qtsingleapplication/qtsinglecoreapplication.h \
|
src/qtsingleapplication/qtsinglecoreapplication.h \
|
||||||
src/services/abstract/accountcheckmodel.h \
|
src/services/abstract/accountcheckmodel.h \
|
||||||
|
src/services/abstract/cacheforserviceroot.h \
|
||||||
src/services/abstract/category.h \
|
src/services/abstract/category.h \
|
||||||
src/services/abstract/feed.h \
|
src/services/abstract/feed.h \
|
||||||
src/services/abstract/gui/formfeeddetails.h \
|
src/services/abstract/gui/formfeeddetails.h \
|
||||||
|
@ -292,6 +309,18 @@ HEADERS += src/core/feeddownloader.h \
|
||||||
src/services/abstract/rootitem.h \
|
src/services/abstract/rootitem.h \
|
||||||
src/services/abstract/serviceentrypoint.h \
|
src/services/abstract/serviceentrypoint.h \
|
||||||
src/services/abstract/serviceroot.h \
|
src/services/abstract/serviceroot.h \
|
||||||
|
src/services/gmail/definitions.h \
|
||||||
|
src/services/gmail/gmailentrypoint.h \
|
||||||
|
src/services/gmail/gmailfeed.h \
|
||||||
|
src/services/gmail/gmailserviceroot.h \
|
||||||
|
src/services/gmail/gui/formeditgmailaccount.h \
|
||||||
|
src/services/gmail/network/gmailnetworkfactory.h \
|
||||||
|
src/services/inoreader/definitions.h \
|
||||||
|
src/services/inoreader/gui/formeditinoreaderaccount.h \
|
||||||
|
src/services/inoreader/inoreaderentrypoint.h \
|
||||||
|
src/services/inoreader/inoreaderfeed.h \
|
||||||
|
src/services/inoreader/inoreaderserviceroot.h \
|
||||||
|
src/services/inoreader/network/inoreadernetworkfactory.h \
|
||||||
src/services/owncloud/definitions.h \
|
src/services/owncloud/definitions.h \
|
||||||
src/services/owncloud/gui/formeditowncloudaccount.h \
|
src/services/owncloud/gui/formeditowncloudaccount.h \
|
||||||
src/services/owncloud/gui/formowncloudfeeddetails.h \
|
src/services/owncloud/gui/formowncloudfeeddetails.h \
|
||||||
|
@ -299,47 +328,33 @@ HEADERS += src/core/feeddownloader.h \
|
||||||
src/services/owncloud/owncloudfeed.h \
|
src/services/owncloud/owncloudfeed.h \
|
||||||
src/services/owncloud/owncloudserviceentrypoint.h \
|
src/services/owncloud/owncloudserviceentrypoint.h \
|
||||||
src/services/owncloud/owncloudserviceroot.h \
|
src/services/owncloud/owncloudserviceroot.h \
|
||||||
|
src/services/standard/atomparser.h \
|
||||||
|
src/services/standard/feedparser.h \
|
||||||
src/services/standard/gui/formstandardcategorydetails.h \
|
src/services/standard/gui/formstandardcategorydetails.h \
|
||||||
src/services/standard/gui/formstandardfeeddetails.h \
|
src/services/standard/gui/formstandardfeeddetails.h \
|
||||||
src/services/standard/gui/formstandardimportexport.h \
|
src/services/standard/gui/formstandardimportexport.h \
|
||||||
|
src/services/standard/rdfparser.h \
|
||||||
|
src/services/standard/rssparser.h \
|
||||||
src/services/standard/standardcategory.h \
|
src/services/standard/standardcategory.h \
|
||||||
src/services/standard/standardfeed.h \
|
src/services/standard/standardfeed.h \
|
||||||
src/services/standard/standardfeedsimportexportmodel.h \
|
src/services/standard/standardfeedsimportexportmodel.h \
|
||||||
src/services/standard/standardserviceentrypoint.h \
|
src/services/standard/standardserviceentrypoint.h \
|
||||||
src/services/standard/standardserviceroot.h \
|
src/services/standard/standardserviceroot.h \
|
||||||
src/services/tt-rss/definitions.h \
|
src/services/tt-rss/definitions.h \
|
||||||
|
src/services/tt-rss/gui/formeditttrssaccount.h \
|
||||||
src/services/tt-rss/gui/formttrssfeeddetails.h \
|
src/services/tt-rss/gui/formttrssfeeddetails.h \
|
||||||
src/services/tt-rss/network/ttrssnetworkfactory.h \
|
src/services/tt-rss/network/ttrssnetworkfactory.h \
|
||||||
src/services/tt-rss/ttrssfeed.h \
|
src/services/tt-rss/ttrssfeed.h \
|
||||||
src/services/tt-rss/ttrssserviceentrypoint.h \
|
src/services/tt-rss/ttrssserviceentrypoint.h \
|
||||||
src/services/tt-rss/ttrssserviceroot.h \
|
src/services/tt-rss/ttrssserviceroot.h
|
||||||
src/gui/settings/settingspanel.h \
|
|
||||||
src/gui/settings/settingsgeneral.h \
|
|
||||||
src/gui/settings/settingsdatabase.h \
|
|
||||||
src/gui/settings/settingsshortcuts.h \
|
|
||||||
src/gui/settings/settingsgui.h \
|
|
||||||
src/gui/settings/settingslocalization.h \
|
|
||||||
src/gui/settings/settingsbrowsermail.h \
|
|
||||||
src/gui/settings/settingsfeedsmessages.h \
|
|
||||||
src/gui/settings/settingsdownloads.h \
|
|
||||||
src/miscellaneous/feedreader.h \
|
|
||||||
src/services/standard/atomparser.h \
|
|
||||||
src/services/standard/feedparser.h \
|
|
||||||
src/services/standard/rdfparser.h \
|
|
||||||
src/services/standard/rssparser.h \
|
|
||||||
src/services/abstract/cacheforserviceroot.h \
|
|
||||||
src/services/tt-rss/gui/formeditttrssaccount.h \
|
|
||||||
src/gui/guiutilities.h \
|
|
||||||
src/core/messagesmodelcache.h \
|
|
||||||
src/core/messagesmodelsqllayer.h \
|
|
||||||
src/gui/treeviewcolumnsmenu.h \
|
|
||||||
src/miscellaneous/externaltool.h
|
|
||||||
|
|
||||||
SOURCES += src/core/feeddownloader.cpp \
|
SOURCES += src/core/feeddownloader.cpp \
|
||||||
src/core/feedsmodel.cpp \
|
src/core/feedsmodel.cpp \
|
||||||
src/core/feedsproxymodel.cpp \
|
src/core/feedsproxymodel.cpp \
|
||||||
src/core/message.cpp \
|
src/core/message.cpp \
|
||||||
src/core/messagesmodel.cpp \
|
src/core/messagesmodel.cpp \
|
||||||
|
src/core/messagesmodelcache.cpp \
|
||||||
|
src/core/messagesmodelsqllayer.cpp \
|
||||||
src/core/messagesproxymodel.cpp \
|
src/core/messagesproxymodel.cpp \
|
||||||
src/dynamic-shortcuts/dynamicshortcuts.cpp \
|
src/dynamic-shortcuts/dynamicshortcuts.cpp \
|
||||||
src/dynamic-shortcuts/dynamicshortcutswidget.cpp \
|
src/dynamic-shortcuts/dynamicshortcutswidget.cpp \
|
||||||
|
@ -363,6 +378,7 @@ SOURCES += src/core/feeddownloader.cpp \
|
||||||
src/gui/feedmessageviewer.cpp \
|
src/gui/feedmessageviewer.cpp \
|
||||||
src/gui/feedstoolbar.cpp \
|
src/gui/feedstoolbar.cpp \
|
||||||
src/gui/feedsview.cpp \
|
src/gui/feedsview.cpp \
|
||||||
|
src/gui/guiutilities.cpp \
|
||||||
src/gui/labelwithstatus.cpp \
|
src/gui/labelwithstatus.cpp \
|
||||||
src/gui/lineeditwithstatus.cpp \
|
src/gui/lineeditwithstatus.cpp \
|
||||||
src/gui/messagebox.cpp \
|
src/gui/messagebox.cpp \
|
||||||
|
@ -370,6 +386,15 @@ SOURCES += src/core/feeddownloader.cpp \
|
||||||
src/gui/messagestoolbar.cpp \
|
src/gui/messagestoolbar.cpp \
|
||||||
src/gui/messagesview.cpp \
|
src/gui/messagesview.cpp \
|
||||||
src/gui/plaintoolbutton.cpp \
|
src/gui/plaintoolbutton.cpp \
|
||||||
|
src/gui/settings/settingsbrowsermail.cpp \
|
||||||
|
src/gui/settings/settingsdatabase.cpp \
|
||||||
|
src/gui/settings/settingsdownloads.cpp \
|
||||||
|
src/gui/settings/settingsfeedsmessages.cpp \
|
||||||
|
src/gui/settings/settingsgeneral.cpp \
|
||||||
|
src/gui/settings/settingsgui.cpp \
|
||||||
|
src/gui/settings/settingslocalization.cpp \
|
||||||
|
src/gui/settings/settingspanel.cpp \
|
||||||
|
src/gui/settings/settingsshortcuts.cpp \
|
||||||
src/gui/squeezelabel.cpp \
|
src/gui/squeezelabel.cpp \
|
||||||
src/gui/statusbar.cpp \
|
src/gui/statusbar.cpp \
|
||||||
src/gui/styleditemdelegatewithoutfocus.cpp \
|
src/gui/styleditemdelegatewithoutfocus.cpp \
|
||||||
|
@ -379,6 +404,7 @@ SOURCES += src/core/feeddownloader.cpp \
|
||||||
src/gui/tabwidget.cpp \
|
src/gui/tabwidget.cpp \
|
||||||
src/gui/timespinbox.cpp \
|
src/gui/timespinbox.cpp \
|
||||||
src/gui/toolbareditor.cpp \
|
src/gui/toolbareditor.cpp \
|
||||||
|
src/gui/treeviewcolumnsmenu.cpp \
|
||||||
src/gui/widgetwithstatus.cpp \
|
src/gui/widgetwithstatus.cpp \
|
||||||
src/main.cpp \
|
src/main.cpp \
|
||||||
src/miscellaneous/application.cpp \
|
src/miscellaneous/application.cpp \
|
||||||
|
@ -387,6 +413,8 @@ SOURCES += src/core/feeddownloader.cpp \
|
||||||
src/miscellaneous/databasefactory.cpp \
|
src/miscellaneous/databasefactory.cpp \
|
||||||
src/miscellaneous/databasequeries.cpp \
|
src/miscellaneous/databasequeries.cpp \
|
||||||
src/miscellaneous/debugging.cpp \
|
src/miscellaneous/debugging.cpp \
|
||||||
|
src/miscellaneous/externaltool.cpp \
|
||||||
|
src/miscellaneous/feedreader.cpp \
|
||||||
src/miscellaneous/iconfactory.cpp \
|
src/miscellaneous/iconfactory.cpp \
|
||||||
src/miscellaneous/iofactory.cpp \
|
src/miscellaneous/iofactory.cpp \
|
||||||
src/miscellaneous/localization.cpp \
|
src/miscellaneous/localization.cpp \
|
||||||
|
@ -400,6 +428,7 @@ SOURCES += src/core/feeddownloader.cpp \
|
||||||
src/network-web/downloader.cpp \
|
src/network-web/downloader.cpp \
|
||||||
src/network-web/downloadmanager.cpp \
|
src/network-web/downloadmanager.cpp \
|
||||||
src/network-web/networkfactory.cpp \
|
src/network-web/networkfactory.cpp \
|
||||||
|
src/network-web/oauth2service.cpp \
|
||||||
src/network-web/silentnetworkaccessmanager.cpp \
|
src/network-web/silentnetworkaccessmanager.cpp \
|
||||||
src/network-web/webfactory.cpp \
|
src/network-web/webfactory.cpp \
|
||||||
src/qtsingleapplication/qtlocalpeer.cpp \
|
src/qtsingleapplication/qtlocalpeer.cpp \
|
||||||
|
@ -407,6 +436,7 @@ SOURCES += src/core/feeddownloader.cpp \
|
||||||
src/qtsingleapplication/qtsingleapplication.cpp \
|
src/qtsingleapplication/qtsingleapplication.cpp \
|
||||||
src/qtsingleapplication/qtsinglecoreapplication.cpp \
|
src/qtsingleapplication/qtsinglecoreapplication.cpp \
|
||||||
src/services/abstract/accountcheckmodel.cpp \
|
src/services/abstract/accountcheckmodel.cpp \
|
||||||
|
src/services/abstract/cacheforserviceroot.cpp \
|
||||||
src/services/abstract/category.cpp \
|
src/services/abstract/category.cpp \
|
||||||
src/services/abstract/feed.cpp \
|
src/services/abstract/feed.cpp \
|
||||||
src/services/abstract/gui/formfeeddetails.cpp \
|
src/services/abstract/gui/formfeeddetails.cpp \
|
||||||
|
@ -414,55 +444,46 @@ SOURCES += src/core/feeddownloader.cpp \
|
||||||
src/services/abstract/rootitem.cpp \
|
src/services/abstract/rootitem.cpp \
|
||||||
src/services/abstract/serviceentrypoint.cpp \
|
src/services/abstract/serviceentrypoint.cpp \
|
||||||
src/services/abstract/serviceroot.cpp \
|
src/services/abstract/serviceroot.cpp \
|
||||||
|
src/services/gmail/gmailentrypoint.cpp \
|
||||||
|
src/services/gmail/gmailfeed.cpp \
|
||||||
|
src/services/gmail/gmailserviceroot.cpp \
|
||||||
|
src/services/gmail/gui/formeditgmailaccount.cpp \
|
||||||
|
src/services/gmail/network/gmailnetworkfactory.cpp \
|
||||||
|
src/services/inoreader/gui/formeditinoreaderaccount.cpp \
|
||||||
|
src/services/inoreader/inoreaderentrypoint.cpp \
|
||||||
|
src/services/inoreader/inoreaderfeed.cpp \
|
||||||
|
src/services/inoreader/inoreaderserviceroot.cpp \
|
||||||
|
src/services/inoreader/network/inoreadernetworkfactory.cpp \
|
||||||
src/services/owncloud/gui/formeditowncloudaccount.cpp \
|
src/services/owncloud/gui/formeditowncloudaccount.cpp \
|
||||||
src/services/owncloud/gui/formowncloudfeeddetails.cpp \
|
src/services/owncloud/gui/formowncloudfeeddetails.cpp \
|
||||||
src/services/owncloud/network/owncloudnetworkfactory.cpp \
|
src/services/owncloud/network/owncloudnetworkfactory.cpp \
|
||||||
src/services/owncloud/owncloudfeed.cpp \
|
src/services/owncloud/owncloudfeed.cpp \
|
||||||
src/services/owncloud/owncloudserviceentrypoint.cpp \
|
src/services/owncloud/owncloudserviceentrypoint.cpp \
|
||||||
src/services/owncloud/owncloudserviceroot.cpp \
|
src/services/owncloud/owncloudserviceroot.cpp \
|
||||||
|
src/services/standard/atomparser.cpp \
|
||||||
|
src/services/standard/feedparser.cpp \
|
||||||
src/services/standard/gui/formstandardcategorydetails.cpp \
|
src/services/standard/gui/formstandardcategorydetails.cpp \
|
||||||
src/services/standard/gui/formstandardfeeddetails.cpp \
|
src/services/standard/gui/formstandardfeeddetails.cpp \
|
||||||
src/services/standard/gui/formstandardimportexport.cpp \
|
src/services/standard/gui/formstandardimportexport.cpp \
|
||||||
|
src/services/standard/rdfparser.cpp \
|
||||||
|
src/services/standard/rssparser.cpp \
|
||||||
src/services/standard/standardcategory.cpp \
|
src/services/standard/standardcategory.cpp \
|
||||||
src/services/standard/standardfeed.cpp \
|
src/services/standard/standardfeed.cpp \
|
||||||
src/services/standard/standardfeedsimportexportmodel.cpp \
|
src/services/standard/standardfeedsimportexportmodel.cpp \
|
||||||
src/services/standard/standardserviceentrypoint.cpp \
|
src/services/standard/standardserviceentrypoint.cpp \
|
||||||
src/services/standard/standardserviceroot.cpp \
|
src/services/standard/standardserviceroot.cpp \
|
||||||
|
src/services/tt-rss/gui/formeditttrssaccount.cpp \
|
||||||
src/services/tt-rss/gui/formttrssfeeddetails.cpp \
|
src/services/tt-rss/gui/formttrssfeeddetails.cpp \
|
||||||
src/services/tt-rss/network/ttrssnetworkfactory.cpp \
|
src/services/tt-rss/network/ttrssnetworkfactory.cpp \
|
||||||
src/services/tt-rss/ttrssfeed.cpp \
|
src/services/tt-rss/ttrssfeed.cpp \
|
||||||
src/services/tt-rss/ttrssserviceentrypoint.cpp \
|
src/services/tt-rss/ttrssserviceentrypoint.cpp \
|
||||||
src/services/tt-rss/ttrssserviceroot.cpp \
|
src/services/tt-rss/ttrssserviceroot.cpp
|
||||||
src/gui/settings/settingspanel.cpp \
|
|
||||||
src/gui/settings/settingsgeneral.cpp \
|
|
||||||
src/gui/settings/settingsdatabase.cpp \
|
|
||||||
src/gui/settings/settingsshortcuts.cpp \
|
|
||||||
src/gui/settings/settingsgui.cpp \
|
|
||||||
src/gui/settings/settingslocalization.cpp \
|
|
||||||
src/gui/settings/settingsbrowsermail.cpp \
|
|
||||||
src/gui/settings/settingsfeedsmessages.cpp \
|
|
||||||
src/gui/settings/settingsdownloads.cpp \
|
|
||||||
src/miscellaneous/feedreader.cpp \
|
|
||||||
src/services/standard/atomparser.cpp \
|
|
||||||
src/services/standard/feedparser.cpp \
|
|
||||||
src/services/standard/rdfparser.cpp \
|
|
||||||
src/services/standard/rssparser.cpp \
|
|
||||||
src/services/abstract/cacheforserviceroot.cpp \
|
|
||||||
src/services/tt-rss/gui/formeditttrssaccount.cpp \
|
|
||||||
src/gui/guiutilities.cpp \
|
|
||||||
src/core/messagesmodelcache.cpp \
|
|
||||||
src/core/messagesmodelsqllayer.cpp \
|
|
||||||
src/gui/treeviewcolumnsmenu.cpp \
|
|
||||||
src/miscellaneous/externaltool.cpp
|
|
||||||
|
|
||||||
mac {
|
mac {
|
||||||
OBJECTIVE_SOURCES += src/miscellaneous/disablewindowtabbing.mm
|
OBJECTIVE_SOURCES += src/miscellaneous/disablewindowtabbing.mm
|
||||||
}
|
}
|
||||||
|
|
||||||
FORMS += src/gui/toolbareditor.ui \
|
FORMS += src/gui/dialogs/formabout.ui \
|
||||||
src/network-web/downloaditem.ui \
|
|
||||||
src/network-web/downloadmanager.ui \
|
|
||||||
src/gui/dialogs/formabout.ui \
|
|
||||||
src/gui/dialogs/formaddaccount.ui \
|
src/gui/dialogs/formaddaccount.ui \
|
||||||
src/gui/dialogs/formbackupdatabasesettings.ui \
|
src/gui/dialogs/formbackupdatabasesettings.ui \
|
||||||
src/gui/dialogs/formdatabasecleanup.ui \
|
src/gui/dialogs/formdatabasecleanup.ui \
|
||||||
|
@ -470,18 +491,23 @@ FORMS += src/gui/toolbareditor.ui \
|
||||||
src/gui/dialogs/formrestoredatabasesettings.ui \
|
src/gui/dialogs/formrestoredatabasesettings.ui \
|
||||||
src/gui/dialogs/formsettings.ui \
|
src/gui/dialogs/formsettings.ui \
|
||||||
src/gui/dialogs/formupdate.ui \
|
src/gui/dialogs/formupdate.ui \
|
||||||
|
src/gui/settings/settingsbrowsermail.ui \
|
||||||
|
src/gui/settings/settingsdatabase.ui \
|
||||||
|
src/gui/settings/settingsdownloads.ui \
|
||||||
|
src/gui/settings/settingsfeedsmessages.ui \
|
||||||
|
src/gui/settings/settingsgeneral.ui \
|
||||||
|
src/gui/settings/settingsgui.ui \
|
||||||
|
src/gui/settings/settingslocalization.ui \
|
||||||
|
src/gui/settings/settingsshortcuts.ui \
|
||||||
|
src/gui/toolbareditor.ui \
|
||||||
|
src/network-web/downloaditem.ui \
|
||||||
|
src/network-web/downloadmanager.ui \
|
||||||
src/services/abstract/gui/formfeeddetails.ui \
|
src/services/abstract/gui/formfeeddetails.ui \
|
||||||
|
src/services/gmail/gui/formeditgmailaccount.ui \
|
||||||
|
src/services/inoreader/gui/formeditinoreaderaccount.ui \
|
||||||
src/services/owncloud/gui/formeditowncloudaccount.ui \
|
src/services/owncloud/gui/formeditowncloudaccount.ui \
|
||||||
src/services/standard/gui/formstandardcategorydetails.ui \
|
src/services/standard/gui/formstandardcategorydetails.ui \
|
||||||
src/services/standard/gui/formstandardimportexport.ui \
|
src/services/standard/gui/formstandardimportexport.ui \
|
||||||
src/gui/settings/settingsgeneral.ui \
|
|
||||||
src/gui/settings/settingsdatabase.ui \
|
|
||||||
src/gui/settings/settingsshortcuts.ui \
|
|
||||||
src/gui/settings/settingsgui.ui \
|
|
||||||
src/gui/settings/settingslocalization.ui \
|
|
||||||
src/gui/settings/settingsbrowsermail.ui \
|
|
||||||
src/gui/settings/settingsfeedsmessages.ui \
|
|
||||||
src/gui/settings/settingsdownloads.ui \
|
|
||||||
src/services/tt-rss/gui/formeditttrssaccount.ui
|
src/services/tt-rss/gui/formeditttrssaccount.ui
|
||||||
|
|
||||||
equals(USE_WEBENGINE, true) {
|
equals(USE_WEBENGINE, true) {
|
||||||
|
@ -492,20 +518,7 @@ equals(USE_WEBENGINE, true) {
|
||||||
src/network-web/googlesuggest.h \
|
src/network-web/googlesuggest.h \
|
||||||
src/network-web/webpage.h \
|
src/network-web/webpage.h \
|
||||||
src/network-web/rssguardschemehandler.h \
|
src/network-web/rssguardschemehandler.h \
|
||||||
src/services/inoreader/definitions.h \
|
src/gui/dialogs/oauthlogin.h
|
||||||
src/services/inoreader/inoreaderentrypoint.h \
|
|
||||||
src/services/inoreader/network/inoreadernetworkfactory.h \
|
|
||||||
src/services/inoreader/inoreaderserviceroot.h \
|
|
||||||
src/services/inoreader/gui/formeditinoreaderaccount.h \
|
|
||||||
src/services/inoreader/inoreaderfeed.h \
|
|
||||||
src/network-web/oauth2service.h \
|
|
||||||
src/gui/dialogs/oauthlogin.h \
|
|
||||||
src/services/gmail/definitions.h \
|
|
||||||
src/services/gmail/gmailentrypoint.h \
|
|
||||||
src/services/gmail/gmailserviceroot.h \
|
|
||||||
src/services/gmail/gmailfeed.h \
|
|
||||||
src/services/gmail/network/gmailnetworkfactory.h \
|
|
||||||
src/services/gmail/gui/formeditgmailaccount.h
|
|
||||||
|
|
||||||
SOURCES += src/gui/locationlineedit.cpp \
|
SOURCES += src/gui/locationlineedit.cpp \
|
||||||
src/gui/webviewer.cpp \
|
src/gui/webviewer.cpp \
|
||||||
|
@ -514,18 +527,7 @@ equals(USE_WEBENGINE, true) {
|
||||||
src/network-web/googlesuggest.cpp \
|
src/network-web/googlesuggest.cpp \
|
||||||
src/network-web/webpage.cpp \
|
src/network-web/webpage.cpp \
|
||||||
src/network-web/rssguardschemehandler.cpp \
|
src/network-web/rssguardschemehandler.cpp \
|
||||||
src/services/inoreader/inoreaderentrypoint.cpp \
|
src/gui/dialogs/oauthlogin.cpp
|
||||||
src/services/inoreader/network/inoreadernetworkfactory.cpp \
|
|
||||||
src/services/inoreader/inoreaderserviceroot.cpp \
|
|
||||||
src/services/inoreader/gui/formeditinoreaderaccount.cpp \
|
|
||||||
src/services/inoreader/inoreaderfeed.cpp \
|
|
||||||
src/network-web/oauth2service.cpp \
|
|
||||||
src/gui/dialogs/oauthlogin.cpp \
|
|
||||||
src/services/gmail/gmailentrypoint.cpp \
|
|
||||||
src/services/gmail/gmailserviceroot.cpp \
|
|
||||||
src/services/gmail/gmailfeed.cpp \
|
|
||||||
src/services/gmail/network/gmailnetworkfactory.cpp \
|
|
||||||
src/services/gmail/gui/formeditgmailaccount.cpp
|
|
||||||
|
|
||||||
# Add AdBlock sources.
|
# Add AdBlock sources.
|
||||||
HEADERS += src/network-web/adblock/adblockaddsubscriptiondialog.h \
|
HEADERS += src/network-web/adblock/adblockaddsubscriptiondialog.h \
|
||||||
|
@ -559,9 +561,7 @@ equals(USE_WEBENGINE, true) {
|
||||||
|
|
||||||
FORMS += src/network-web/adblock/adblockaddsubscriptiondialog.ui \
|
FORMS += src/network-web/adblock/adblockaddsubscriptiondialog.ui \
|
||||||
src/network-web/adblock/adblockdialog.ui \
|
src/network-web/adblock/adblockdialog.ui \
|
||||||
src/services/inoreader/gui/formeditinoreaderaccount.ui \
|
src/gui/dialogs/oauthlogin.ui
|
||||||
src/gui/dialogs/oauthlogin.ui \
|
|
||||||
src/services/gmail/gui/formeditgmailaccount.ui
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
HEADERS += src/gui/messagepreviewer.h \
|
HEADERS += src/gui/messagepreviewer.h \
|
||||||
|
|
23
src/main.cpp
23
src/main.cpp
|
@ -175,21 +175,22 @@ int main(int argc, char* argv[]) {
|
||||||
qApp->showPolls();
|
qApp->showPolls();
|
||||||
qApp->mainForm()->tabWidget()->feedMessageViewer()->feedsView()->loadAllExpandStates();
|
qApp->mainForm()->tabWidget()->feedMessageViewer()->feedsView()->loadAllExpandStates();
|
||||||
|
|
||||||
OAuth2Service* srv = new OAuth2Service(
|
/*
|
||||||
|
OAuth2Service* srv = new OAuth2Service(
|
||||||
"https://accounts.google.com/o/oauth2/auth",
|
"https://accounts.google.com/o/oauth2/auth",
|
||||||
"https://accounts.google.com/o/oauth2/token",
|
"https://accounts.google.com/o/oauth2/token",
|
||||||
"369069180494-j66bgeciouinec1eem7fhvj6qm0as7q3.apps.googleusercontent.com",
|
"369069180494-j66bgeciouinec1eem7fhvj6qm0as7q3.apps.googleusercontent.com",
|
||||||
"vppQtxrEeBkImiXcjGYl9NxZ",
|
"vppQtxrEeBkImiXcjGYl9NxZ",
|
||||||
"https://mail.google.com/");
|
"https://mail.google.com/");
|
||||||
|
|
||||||
srv->setRefreshToken("1/RKE3oohSoTHE54L0IPflvndK-DcI7l0of3lVdLa1Q9Q");
|
//srv->setRefreshToken("1/RKE3oohSoTHE54L0IPflvndK-DcI7l0of3lVdLa1Q9Q");
|
||||||
QObject::connect(srv, &OAuth2Service::authCodeObtained, [](QString auth_code) {
|
QObject::connect(srv, &OAuth2Service::authCodeObtained, [](QString auth_code) {
|
||||||
int a = 5;
|
int a = 5;
|
||||||
});
|
});
|
||||||
QObject::connect(srv, &OAuth2Service::authFailed, []() {
|
QObject::connect(srv, &OAuth2Service::authFailed, []() {
|
||||||
int a = 5;
|
int a = 5;
|
||||||
});
|
});
|
||||||
QObject::connect(srv, &OAuth2Service::tokensReceived, [srv](QString acc, QString ref, int exp) {
|
QObject::connect(srv, &OAuth2Service::tokensReceived, [srv](QString acc, QString ref, int exp) {
|
||||||
|
|
||||||
QHttpMultiPart* multi = new QHttpMultiPart(srv);
|
QHttpMultiPart* multi = new QHttpMultiPart(srv);
|
||||||
QHttpPart p1;
|
QHttpPart p1;
|
||||||
|
@ -221,11 +222,11 @@ int main(int argc, char* argv[]) {
|
||||||
});
|
});
|
||||||
|
|
||||||
int a = 5;
|
int a = 5;
|
||||||
});
|
});
|
||||||
QObject::connect(srv, &OAuth2Service::tokensRetrieveError, [](QString err, QString desc) {
|
QObject::connect(srv, &OAuth2Service::tokensRetrieveError, [](QString err, QString desc) {
|
||||||
int a = 5;
|
int a = 5;
|
||||||
});
|
});
|
||||||
srv->login();
|
srv->login();*/
|
||||||
|
|
||||||
// Enter global event loop.
|
// Enter global event loop.
|
||||||
return Application::exec();
|
return Application::exec();
|
||||||
|
|
|
@ -21,7 +21,15 @@
|
||||||
#include "miscellaneous/application.h"
|
#include "miscellaneous/application.h"
|
||||||
#include "miscellaneous/iconfactory.h"
|
#include "miscellaneous/iconfactory.h"
|
||||||
#include "miscellaneous/textfactory.h"
|
#include "miscellaneous/textfactory.h"
|
||||||
|
#include "network-web/oauth2service.h"
|
||||||
#include "services/abstract/category.h"
|
#include "services/abstract/category.h"
|
||||||
|
#include "services/gmail/definitions.h"
|
||||||
|
#include "services/gmail/gmailserviceroot.h"
|
||||||
|
#include "services/gmail/network/gmailnetworkfactory.h"
|
||||||
|
#include "services/inoreader/definitions.h"
|
||||||
|
#include "services/inoreader/inoreaderfeed.h"
|
||||||
|
#include "services/inoreader/inoreaderserviceroot.h"
|
||||||
|
#include "services/inoreader/network/inoreadernetworkfactory.h"
|
||||||
#include "services/owncloud/definitions.h"
|
#include "services/owncloud/definitions.h"
|
||||||
#include "services/owncloud/network/owncloudnetworkfactory.h"
|
#include "services/owncloud/network/owncloudnetworkfactory.h"
|
||||||
#include "services/owncloud/owncloudfeed.h"
|
#include "services/owncloud/owncloudfeed.h"
|
||||||
|
@ -33,16 +41,6 @@
|
||||||
#include "services/tt-rss/ttrssfeed.h"
|
#include "services/tt-rss/ttrssfeed.h"
|
||||||
#include "services/tt-rss/ttrssserviceroot.h"
|
#include "services/tt-rss/ttrssserviceroot.h"
|
||||||
|
|
||||||
#if defined(USE_WEBENGINE)
|
|
||||||
#include "network-web/oauth2service.h"
|
|
||||||
#include "services/gmail/gmailserviceroot.h"
|
|
||||||
#include "services/gmail/network/gmailnetworkfactory.h"
|
|
||||||
#include "services/inoreader/definitions.h"
|
|
||||||
#include "services/inoreader/inoreaderfeed.h"
|
|
||||||
#include "services/inoreader/inoreaderserviceroot.h"
|
|
||||||
#include "services/inoreader/network/inoreadernetworkfactory.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <QSqlError>
|
#include <QSqlError>
|
||||||
#include <QUrl>
|
#include <QUrl>
|
||||||
#include <QVariant>
|
#include <QVariant>
|
||||||
|
@ -1493,7 +1491,6 @@ Assignment DatabaseQueries::getCategories(QSqlDatabase db, int account_id, bool*
|
||||||
return categories;
|
return categories;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(USE_WEBENGINE)
|
|
||||||
QList<ServiceRoot*> DatabaseQueries::getGmailAccounts(QSqlDatabase db, bool* ok) {
|
QList<ServiceRoot*> DatabaseQueries::getGmailAccounts(QSqlDatabase db, bool* ok) {
|
||||||
QSqlQuery query(db);
|
QSqlQuery query(db);
|
||||||
|
|
||||||
|
@ -1530,6 +1527,15 @@ QList<ServiceRoot*> DatabaseQueries::getGmailAccounts(QSqlDatabase db, bool* ok)
|
||||||
return roots;
|
return roots;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool DatabaseQueries::deleteGmailAccount(QSqlDatabase db, int account_id) {
|
||||||
|
QSqlQuery q(db);
|
||||||
|
|
||||||
|
q.setForwardOnly(true);
|
||||||
|
q.prepare(QSL("DELETE FROM GmailAccounts WHERE id = :id;"));
|
||||||
|
q.bindValue(QSL(":id"), account_id);
|
||||||
|
return q.exec();
|
||||||
|
}
|
||||||
|
|
||||||
bool DatabaseQueries::deleteInoreaderAccount(QSqlDatabase db, int account_id) {
|
bool DatabaseQueries::deleteInoreaderAccount(QSqlDatabase db, int account_id) {
|
||||||
QSqlQuery q(db);
|
QSqlQuery q(db);
|
||||||
|
|
||||||
|
@ -1624,6 +1630,56 @@ QList<ServiceRoot*> DatabaseQueries::getInoreaderAccounts(QSqlDatabase db, bool*
|
||||||
return roots;
|
return roots;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool DatabaseQueries::overwriteGmailAccount(QSqlDatabase db, const QString& username, const QString& app_id,
|
||||||
|
const QString& app_key, const QString& redirect_url,
|
||||||
|
const QString& refresh_token, int batch_size, int account_id) {
|
||||||
|
QSqlQuery query(db);
|
||||||
|
|
||||||
|
query.prepare("UPDATE GmailAccounts "
|
||||||
|
"SET username = :username, app_id = :app_id, app_key = :app_key, "
|
||||||
|
"redirect_url = :redirect_url, refresh_token = :refresh_token , msg_limit = :msg_limit "
|
||||||
|
"WHERE id = :id;");
|
||||||
|
query.bindValue(QSL(":username"), username);
|
||||||
|
query.bindValue(QSL(":app_id"), app_id);
|
||||||
|
query.bindValue(QSL(":app_key"), app_key);
|
||||||
|
query.bindValue(QSL(":redirect_url"), redirect_url);
|
||||||
|
query.bindValue(QSL(":refresh_token"), refresh_token);
|
||||||
|
query.bindValue(QSL(":id"), account_id);
|
||||||
|
query.bindValue(QSL(":msg_limit"), batch_size <= 0 ? GMAIL_DEFAULT_BATCH_SIZE : batch_size);
|
||||||
|
|
||||||
|
if (query.exec()) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
qWarning("Gmail: Updating account failed: '%s'.", qPrintable(query.lastError().text()));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool DatabaseQueries::createGmailAccount(QSqlDatabase db, int id_to_assign, const QString& username,
|
||||||
|
const QString& app_id, const QString& app_key, const QString& redirect_url,
|
||||||
|
const QString& refresh_token, int batch_size) {
|
||||||
|
QSqlQuery q(db);
|
||||||
|
|
||||||
|
q.prepare("INSERT INTO GmailAccounts (id, username, app_id, app_key, redirect_url, refresh_token, msg_limit) "
|
||||||
|
"VALUES (:id, :username, :app_id, :app_key, :redirect_url, :refresh_token, :msg_limit);");
|
||||||
|
q.bindValue(QSL(":id"), id_to_assign);
|
||||||
|
q.bindValue(QSL(":username"), username);
|
||||||
|
q.bindValue(QSL(":app_id"), app_id);
|
||||||
|
q.bindValue(QSL(":app_key"), app_key);
|
||||||
|
q.bindValue(QSL(":redirect_url"), redirect_url);
|
||||||
|
q.bindValue(QSL(":refresh_token"), refresh_token);
|
||||||
|
q.bindValue(QSL(":msg_limit"), batch_size <= 0 ? GMAIL_DEFAULT_BATCH_SIZE : batch_size);
|
||||||
|
|
||||||
|
if (q.exec()) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
qWarning("Gmail: Inserting of new account failed: '%s'.", qPrintable(q.lastError().text()));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
bool DatabaseQueries::overwriteInoreaderAccount(QSqlDatabase db, const QString& username, const QString& app_id,
|
bool DatabaseQueries::overwriteInoreaderAccount(QSqlDatabase db, const QString& username, const QString& app_id,
|
||||||
const QString& app_key, const QString& redirect_url,
|
const QString& app_key, const QString& redirect_url,
|
||||||
const QString& refresh_token, int batch_size, int account_id) {
|
const QString& refresh_token, int batch_size, int account_id) {
|
||||||
|
@ -1674,8 +1730,6 @@ bool DatabaseQueries::createInoreaderAccount(QSqlDatabase db, int id_to_assign,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
Assignment DatabaseQueries::getTtRssFeeds(QSqlDatabase db, int account_id, bool* ok) {
|
Assignment DatabaseQueries::getTtRssFeeds(QSqlDatabase db, int account_id, bool* ok) {
|
||||||
Assignment feeds;
|
Assignment feeds;
|
||||||
|
|
||||||
|
|
|
@ -78,10 +78,15 @@ class DatabaseQueries {
|
||||||
int auto_update_interval);
|
int auto_update_interval);
|
||||||
static Assignment getCategories(QSqlDatabase db, int account_id, bool* ok = nullptr);
|
static Assignment getCategories(QSqlDatabase db, int account_id, bool* ok = nullptr);
|
||||||
|
|
||||||
#if defined(USE_WEBENGINE)
|
|
||||||
|
|
||||||
// Gmail account.
|
// Gmail account.
|
||||||
|
static bool deleteGmailAccount(QSqlDatabase db, int account_id);
|
||||||
static QList<ServiceRoot*> getGmailAccounts(QSqlDatabase db, bool* ok = nullptr);
|
static QList<ServiceRoot*> getGmailAccounts(QSqlDatabase db, bool* ok = nullptr);
|
||||||
|
static bool overwriteGmailAccount(QSqlDatabase db, const QString& username, const QString& app_id,
|
||||||
|
const QString& app_key, const QString& redirect_url, const QString& refresh_token,
|
||||||
|
int batch_size, int account_id);
|
||||||
|
static bool createGmailAccount(QSqlDatabase db, int id_to_assign, const QString& username,
|
||||||
|
const QString& app_id, const QString& app_key, const QString& redirect_url,
|
||||||
|
const QString& refresh_token, int batch_size);
|
||||||
|
|
||||||
// Inoreader account.
|
// Inoreader account.
|
||||||
static bool deleteInoreaderAccount(QSqlDatabase db, int account_id);
|
static bool deleteInoreaderAccount(QSqlDatabase db, int account_id);
|
||||||
|
@ -94,7 +99,6 @@ class DatabaseQueries {
|
||||||
static bool createInoreaderAccount(QSqlDatabase db, int id_to_assign, const QString& username,
|
static bool createInoreaderAccount(QSqlDatabase db, int id_to_assign, const QString& username,
|
||||||
const QString& app_id, const QString& app_key, const QString& redirect_url,
|
const QString& app_id, const QString& app_key, const QString& redirect_url,
|
||||||
const QString& refresh_token, int batch_size);
|
const QString& refresh_token, int batch_size);
|
||||||
#endif
|
|
||||||
|
|
||||||
// ownCloud account.
|
// ownCloud account.
|
||||||
static QList<ServiceRoot*> getOwnCloudAccounts(QSqlDatabase db, bool* ok = nullptr);
|
static QList<ServiceRoot*> getOwnCloudAccounts(QSqlDatabase db, bool* ok = nullptr);
|
||||||
|
|
|
@ -18,13 +18,6 @@
|
||||||
|
|
||||||
#include "miscellaneous/feedreader.h"
|
#include "miscellaneous/feedreader.h"
|
||||||
|
|
||||||
#include "services/abstract/serviceroot.h"
|
|
||||||
|
|
||||||
#if defined(USE_WEBENGINE)
|
|
||||||
#include "services/gmail/gmailentrypoint.h"
|
|
||||||
#include "services/inoreader/inoreaderentrypoint.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include "core/feeddownloader.h"
|
#include "core/feeddownloader.h"
|
||||||
#include "core/feedsmodel.h"
|
#include "core/feedsmodel.h"
|
||||||
#include "core/feedsproxymodel.h"
|
#include "core/feedsproxymodel.h"
|
||||||
|
@ -34,6 +27,9 @@
|
||||||
#include "miscellaneous/databasecleaner.h"
|
#include "miscellaneous/databasecleaner.h"
|
||||||
#include "miscellaneous/mutex.h"
|
#include "miscellaneous/mutex.h"
|
||||||
#include "services/abstract/cacheforserviceroot.h"
|
#include "services/abstract/cacheforserviceroot.h"
|
||||||
|
#include "services/abstract/serviceroot.h"
|
||||||
|
#include "services/gmail/gmailentrypoint.h"
|
||||||
|
#include "services/inoreader/inoreaderentrypoint.h"
|
||||||
#include "services/owncloud/owncloudserviceentrypoint.h"
|
#include "services/owncloud/owncloudserviceentrypoint.h"
|
||||||
#include "services/standard/standardserviceentrypoint.h"
|
#include "services/standard/standardserviceentrypoint.h"
|
||||||
#include "services/tt-rss/ttrssserviceentrypoint.h"
|
#include "services/tt-rss/ttrssserviceentrypoint.h"
|
||||||
|
@ -70,10 +66,8 @@ FeedReader::~FeedReader() {
|
||||||
QList<ServiceEntryPoint*> FeedReader::feedServices() {
|
QList<ServiceEntryPoint*> FeedReader::feedServices() {
|
||||||
if (m_feedServices.isEmpty()) {
|
if (m_feedServices.isEmpty()) {
|
||||||
// NOTE: All installed services create their entry points here.
|
// NOTE: All installed services create their entry points here.
|
||||||
#if defined(USE_WEBENGINE)
|
|
||||||
m_feedServices.append(new GmailEntryPoint());
|
m_feedServices.append(new GmailEntryPoint());
|
||||||
m_feedServices.append(new InoreaderEntryPoint());
|
m_feedServices.append(new InoreaderEntryPoint());
|
||||||
#endif
|
|
||||||
m_feedServices.append(new OwnCloudServiceEntryPoint());
|
m_feedServices.append(new OwnCloudServiceEntryPoint());
|
||||||
m_feedServices.append(new StandardServiceEntryPoint());
|
m_feedServices.append(new StandardServiceEntryPoint());
|
||||||
m_feedServices.append(new TtRssServiceEntryPoint());
|
m_feedServices.append(new TtRssServiceEntryPoint());
|
||||||
|
|
|
@ -41,10 +41,13 @@
|
||||||
#include "network-web/oauth2service.h"
|
#include "network-web/oauth2service.h"
|
||||||
|
|
||||||
#include "definitions/definitions.h"
|
#include "definitions/definitions.h"
|
||||||
#include "gui/dialogs/oauthlogin.h"
|
|
||||||
#include "miscellaneous/application.h"
|
#include "miscellaneous/application.h"
|
||||||
#include "services/inoreader/definitions.h"
|
#include "services/inoreader/definitions.h"
|
||||||
|
|
||||||
|
#if defined(USE_WEBENGINE)
|
||||||
|
#include "gui/dialogs/oauthlogin.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
#include <QJsonDocument>
|
#include <QJsonDocument>
|
||||||
#include <QJsonObject>
|
#include <QJsonObject>
|
||||||
|
@ -70,7 +73,7 @@ OAuth2Service::OAuth2Service(QString authUrl, QString tokenUrl, QString clientId
|
||||||
|
|
||||||
QString OAuth2Service::bearer() {
|
QString OAuth2Service::bearer() {
|
||||||
if (!isFullyLoggedIn()) {
|
if (!isFullyLoggedIn()) {
|
||||||
qApp->showGuiMessage(tr("Inoreader: you have to login first"),
|
qApp->showGuiMessage(tr("You have to login first"),
|
||||||
tr("Click here to login."),
|
tr("Click here to login."),
|
||||||
QSystemTrayIcon::Critical,
|
QSystemTrayIcon::Critical,
|
||||||
nullptr, false,
|
nullptr, false,
|
||||||
|
@ -165,13 +168,13 @@ void OAuth2Service::refreshAccessToken(QString refresh_token) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void OAuth2Service::tokenRequestFinished(QNetworkReply* network_reply) {
|
void OAuth2Service::tokenRequestFinished(QNetworkReply* network_reply) {
|
||||||
QJsonDocument json_document = QJsonDocument::fromJson(network_reply->readAll());
|
QByteArray repl = network_reply->readAll();
|
||||||
|
QJsonDocument json_document = QJsonDocument::fromJson(repl);
|
||||||
QJsonObject root_obj = json_document.object();
|
QJsonObject root_obj = json_document.object();
|
||||||
|
auto cod = network_reply->error();
|
||||||
|
|
||||||
qDebug() << "Token response:" << json_document.toJson();
|
qDebug() << "Token response:" << json_document.toJson();
|
||||||
|
|
||||||
IOFactory::writeTextFile("c.json", json_document.toJson());
|
|
||||||
|
|
||||||
if (root_obj.keys().contains("error")) {
|
if (root_obj.keys().contains("error")) {
|
||||||
QString error = root_obj.value("error").toString();
|
QString error = root_obj.value("error").toString();
|
||||||
QString error_description = root_obj.value("error_description").toString();
|
QString error_description = root_obj.value("error_description").toString();
|
||||||
|
@ -293,6 +296,8 @@ void OAuth2Service::retrieveAuthCode() {
|
||||||
"prompt=consent&access_type=offline").arg(m_clientId,
|
"prompt=consent&access_type=offline").arg(m_clientId,
|
||||||
m_scope,
|
m_scope,
|
||||||
m_redirectUrl);
|
m_redirectUrl);
|
||||||
|
|
||||||
|
#if defined(USE_WEBENGINE)
|
||||||
OAuthLogin login_page(qApp->mainFormWidget());
|
OAuthLogin login_page(qApp->mainFormWidget());
|
||||||
|
|
||||||
connect(&login_page, &OAuthLogin::authGranted, this, &OAuth2Service::authCodeObtained);
|
connect(&login_page, &OAuthLogin::authGranted, this, &OAuth2Service::authCodeObtained);
|
||||||
|
@ -306,4 +311,7 @@ void OAuth2Service::retrieveAuthCode() {
|
||||||
QSystemTrayIcon::MessageIcon::Information);
|
QSystemTrayIcon::MessageIcon::Information);
|
||||||
|
|
||||||
login_page.login(auth_url, m_redirectUrl);
|
login_page.login(auth_url, m_redirectUrl);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// TODO: For non-webengine version, user http-server and login via external browser.
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,6 +23,8 @@
|
||||||
#define GMAIL_OAUTH_TOKEN_URL "https://accounts.google.com/o/oauth2/token"
|
#define GMAIL_OAUTH_TOKEN_URL "https://accounts.google.com/o/oauth2/token"
|
||||||
#define GMAIL_OAUTH_SCOPE "https://mail.google.com/"
|
#define GMAIL_OAUTH_SCOPE "https://mail.google.com/"
|
||||||
|
|
||||||
|
#define GMAIL_API_LABELS_LIST "https://www.googleapis.com/gmail/v1/users/me/labels"
|
||||||
|
|
||||||
#define GMAIL_DEFAULT_BATCH_SIZE 100
|
#define GMAIL_DEFAULT_BATCH_SIZE 100
|
||||||
#define GMAIL_MAX_BATCH_SIZE 999
|
#define GMAIL_MAX_BATCH_SIZE 999
|
||||||
#define GMAIL_MIN_BATCH_SIZE 20
|
#define GMAIL_MIN_BATCH_SIZE 20
|
||||||
|
|
|
@ -26,10 +26,19 @@
|
||||||
#include "services/gmail/gmailserviceroot.h"
|
#include "services/gmail/gmailserviceroot.h"
|
||||||
#include "services/gmail/gui/formeditgmailaccount.h"
|
#include "services/gmail/gui/formeditgmailaccount.h"
|
||||||
|
|
||||||
|
#include <QMessageBox>
|
||||||
|
|
||||||
ServiceRoot* GmailEntryPoint::createNewRoot() const {
|
ServiceRoot* GmailEntryPoint::createNewRoot() const {
|
||||||
|
#if defined(USE_WEBENGINE)
|
||||||
FormEditGmailAccount form_acc(qApp->mainFormWidget());
|
FormEditGmailAccount form_acc(qApp->mainFormWidget());
|
||||||
|
|
||||||
return form_acc.execForCreate();
|
return form_acc.execForCreate();
|
||||||
|
#else
|
||||||
|
QMessageBox::warning(qApp->mainFormWidget(),
|
||||||
|
QObject::tr("Not supported"),
|
||||||
|
QObject::tr("This plugin is not supported in NonWebEngine variant of this program."));
|
||||||
|
return nullptr;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
QList<ServiceRoot*> GmailEntryPoint::initializeSubtree() const {
|
QList<ServiceRoot*> GmailEntryPoint::initializeSubtree() const {
|
||||||
|
@ -43,7 +52,7 @@ bool GmailEntryPoint::isSingleInstanceService() const {
|
||||||
}
|
}
|
||||||
|
|
||||||
QString GmailEntryPoint::name() const {
|
QString GmailEntryPoint::name() const {
|
||||||
return QSL("Gmail (not yet implemented)");
|
return QSL("Gmail");
|
||||||
}
|
}
|
||||||
|
|
||||||
QString GmailEntryPoint::code() const {
|
QString GmailEntryPoint::code() const {
|
||||||
|
|
|
@ -64,37 +64,33 @@ void GmailServiceRoot::saveAccountDataToDatabase() {
|
||||||
QSqlDatabase database = qApp->database()->connection(metaObject()->className(), DatabaseFactory::FromSettings);
|
QSqlDatabase database = qApp->database()->connection(metaObject()->className(), DatabaseFactory::FromSettings);
|
||||||
|
|
||||||
if (accountId() != NO_PARENT_CATEGORY) {
|
if (accountId() != NO_PARENT_CATEGORY) {
|
||||||
// TODO: dodělat
|
if (DatabaseQueries::overwriteGmailAccount(database, m_network->userName(),
|
||||||
|
m_network->oauth()->clientId(),
|
||||||
/*if (DatabaseQueries::overwriteInoreaderAccount(database, m_network->userName(),
|
m_network->oauth()->clientSecret(),
|
||||||
m_network->oauth()->clientId(),
|
m_network->oauth()->redirectUrl(),
|
||||||
m_network->oauth()->clientSecret(),
|
m_network->oauth()->refreshToken(),
|
||||||
m_network->oauth()->redirectUrl(),
|
m_network->batchSize(),
|
||||||
m_network->oauth()->refreshToken(),
|
accountId())) {
|
||||||
m_network->batchSize(),
|
updateTitle();
|
||||||
accountId())) {
|
itemChanged(QList<RootItem*>() << this);
|
||||||
updateTitle();
|
}
|
||||||
itemChanged(QList<RootItem*>() << this);
|
|
||||||
}*/
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
bool saved;
|
bool saved;
|
||||||
int id_to_assign = DatabaseQueries::createAccount(database, code(), &saved);
|
int id_to_assign = DatabaseQueries::createAccount(database, code(), &saved);
|
||||||
|
|
||||||
if (saved) {
|
if (saved) {
|
||||||
// TODO: dodělat
|
if (DatabaseQueries::createGmailAccount(database, id_to_assign,
|
||||||
|
m_network->userName(),
|
||||||
/*if (DatabaseQueries::createInoreaderAccount(database, id_to_assign,
|
m_network->oauth()->clientId(),
|
||||||
m_network->userName(),
|
m_network->oauth()->clientSecret(),
|
||||||
m_network->oauth()->clientId(),
|
m_network->oauth()->redirectUrl(),
|
||||||
m_network->oauth()->clientSecret(),
|
m_network->oauth()->refreshToken(),
|
||||||
m_network->oauth()->redirectUrl(),
|
m_network->batchSize())) {
|
||||||
m_network->oauth()->refreshToken(),
|
setId(id_to_assign);
|
||||||
m_network->batchSize())) {
|
setAccountId(id_to_assign);
|
||||||
setId(id_to_assign);
|
updateTitle();
|
||||||
setAccountId(id_to_assign);
|
}
|
||||||
updateTitle();
|
|
||||||
}*/
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -158,10 +154,7 @@ QString GmailServiceRoot::additionalTooltip() const {
|
||||||
}
|
}
|
||||||
|
|
||||||
RootItem* GmailServiceRoot::obtainNewTreeForSyncIn() const {
|
RootItem* GmailServiceRoot::obtainNewTreeForSyncIn() const {
|
||||||
// TODO: dodělat
|
return m_network->feedsCategories();
|
||||||
return nullptr;
|
|
||||||
|
|
||||||
//return m_network->feedsCategories(true);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void GmailServiceRoot::addNewFeed(const QString& url) {
|
void GmailServiceRoot::addNewFeed(const QString& url) {
|
||||||
|
@ -215,7 +208,7 @@ bool GmailServiceRoot::canBeDeleted() const {
|
||||||
bool GmailServiceRoot::deleteViaGui() {
|
bool GmailServiceRoot::deleteViaGui() {
|
||||||
QSqlDatabase database = qApp->database()->connection(metaObject()->className(), DatabaseFactory::FromSettings);
|
QSqlDatabase database = qApp->database()->connection(metaObject()->className(), DatabaseFactory::FromSettings);
|
||||||
|
|
||||||
if (DatabaseQueries::deleteInoreaderAccount(database, accountId())) {
|
if (DatabaseQueries::deleteGmailAccount(database, accountId())) {
|
||||||
return ServiceRoot::deleteViaGui();
|
return ServiceRoot::deleteViaGui();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
|
|
@ -79,8 +79,7 @@ void FormEditGmailAccount::testSetup() {
|
||||||
if (m_oauth->login()) {
|
if (m_oauth->login()) {
|
||||||
m_ui.m_lblTestResult->setStatus(WidgetWithStatus::StatusType::Ok,
|
m_ui.m_lblTestResult->setStatus(WidgetWithStatus::StatusType::Ok,
|
||||||
tr("You are already logged in."),
|
tr("You are already logged in."),
|
||||||
tr("Access granted. \
|
tr("Access granted."));
|
||||||
"));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -76,7 +76,7 @@ void GmailNetworkFactory::initializeOauth() {
|
||||||
DatabaseQueries::storeNewInoreaderTokens(database, refresh_token, m_service->accountId());
|
DatabaseQueries::storeNewInoreaderTokens(database, refresh_token, m_service->accountId());
|
||||||
|
|
||||||
qApp->showGuiMessage(tr("Logged in successfully"),
|
qApp->showGuiMessage(tr("Logged in successfully"),
|
||||||
tr("Your login to Inoreader was authorized."),
|
tr("Your login to Gmail was authorized."),
|
||||||
QSystemTrayIcon::MessageIcon::Information);
|
QSystemTrayIcon::MessageIcon::Information);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -86,7 +86,7 @@ void GmailNetworkFactory::setUsername(const QString& username) {
|
||||||
m_username = username;
|
m_username = username;
|
||||||
}
|
}
|
||||||
|
|
||||||
RootItem* GmailNetworkFactory::feedsCategories(bool obtain_icons) {
|
RootItem* GmailNetworkFactory::feedsCategories() {
|
||||||
Downloader downloader;
|
Downloader downloader;
|
||||||
QEventLoop loop;
|
QEventLoop loop;
|
||||||
QString bearer = m_oauth2->bearer().toLocal8Bit();
|
QString bearer = m_oauth2->bearer().toLocal8Bit();
|
||||||
|
@ -95,13 +95,13 @@ RootItem* GmailNetworkFactory::feedsCategories(bool obtain_icons) {
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
downloader.appendRawHeader(QString("Authorization").toLocal8Bit(), bearer.toLocal8Bit());
|
downloader.appendRawHeader(QString(HTTP_HEADERS_AUTHORIZATION).toLocal8Bit(), bearer.toLocal8Bit());
|
||||||
|
|
||||||
// We need to quit event loop when the download finishes.
|
// We need to quit event loop when the download finishes.
|
||||||
connect(&downloader, &Downloader::completed, &loop, &QEventLoop::quit);
|
connect(&downloader, &Downloader::completed, &loop, &QEventLoop::quit);
|
||||||
|
|
||||||
// TODO: dodělat
|
// TODO: dodělat
|
||||||
//downloader.manipulateData(INOREADER_API_LIST_LABELS, QNetworkAccessManager::Operation::GetOperation);
|
downloader.manipulateData(GMAIL_API_LABELS_LIST, QNetworkAccessManager::Operation::GetOperation);
|
||||||
loop.exec();
|
loop.exec();
|
||||||
|
|
||||||
if (downloader.lastOutputError() != QNetworkReply::NetworkError::NoError) {
|
if (downloader.lastOutputError() != QNetworkReply::NetworkError::NoError) {
|
||||||
|
@ -110,17 +110,7 @@ RootItem* GmailNetworkFactory::feedsCategories(bool obtain_icons) {
|
||||||
|
|
||||||
QString category_data = downloader.lastOutputData();
|
QString category_data = downloader.lastOutputData();
|
||||||
|
|
||||||
// TODO: dodělat
|
return decodeFeedCategoriesData(category_data);
|
||||||
//downloader.manipulateData(INOREADER_API_LIST_FEEDS, QNetworkAccessManager::Operation::GetOperation);
|
|
||||||
loop.exec();
|
|
||||||
|
|
||||||
if (downloader.lastOutputError() != QNetworkReply::NetworkError::NoError) {
|
|
||||||
return nullptr;
|
|
||||||
}
|
|
||||||
|
|
||||||
QString feed_data = downloader.lastOutputData();
|
|
||||||
|
|
||||||
return decodeFeedCategoriesData(category_data, feed_data, obtain_icons);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
QList<Message> GmailNetworkFactory::messages(const QString& stream_id, Feed::Status& error) {
|
QList<Message> GmailNetworkFactory::messages(const QString& stream_id, Feed::Status& error) {
|
||||||
|
@ -382,9 +372,9 @@ QList<Message> GmailNetworkFactory::decodeMessages(const QString& messages_json_
|
||||||
return messages;
|
return messages;
|
||||||
}
|
}
|
||||||
|
|
||||||
RootItem* GmailNetworkFactory::decodeFeedCategoriesData(const QString& categories, const QString& feeds, bool obtain_icons) {
|
RootItem* GmailNetworkFactory::decodeFeedCategoriesData(const QString& categories) {
|
||||||
RootItem* parent = new RootItem();
|
RootItem* parent = new RootItem();
|
||||||
QJsonArray json = QJsonDocument::fromJson(categories.toUtf8()).object()["tags"].toArray();
|
QJsonArray json = QJsonDocument::fromJson(categories.toUtf8()).object()["labels"].toArray();
|
||||||
|
|
||||||
QMap<QString, RootItem*> cats;
|
QMap<QString, RootItem*> cats;
|
||||||
cats.insert(QString(), parent);
|
cats.insert(QString(), parent);
|
||||||
|
@ -392,7 +382,22 @@ RootItem* GmailNetworkFactory::decodeFeedCategoriesData(const QString& categorie
|
||||||
foreach (const QJsonValue& obj, json) {
|
foreach (const QJsonValue& obj, json) {
|
||||||
auto label = obj.toObject();
|
auto label = obj.toObject();
|
||||||
QString label_id = label["id"].toString();
|
QString label_id = label["id"].toString();
|
||||||
|
QString label_name = label["name"].toString();
|
||||||
|
QString label_type = label["type"].toString();
|
||||||
|
|
||||||
|
if (label_name.contains(QL1C('/'))) {
|
||||||
|
// We have nested labels.
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
GmailFeed* feed = new GmailFeed();
|
||||||
|
|
||||||
|
feed->setTitle(label_name);
|
||||||
|
feed->setCustomId(label_id);
|
||||||
|
|
||||||
|
parent->appendChild(feed);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
if (label_id.contains(QSL("/label/"))) {
|
if (label_id.contains(QSL("/label/"))) {
|
||||||
// We have label (not "state").
|
// We have label (not "state").
|
||||||
Category* category = new Category();
|
Category* category = new Category();
|
||||||
|
@ -405,12 +410,13 @@ RootItem* GmailNetworkFactory::decodeFeedCategoriesData(const QString& categorie
|
||||||
|
|
||||||
// All categories in ownCloud are top-level.
|
// All categories in ownCloud are top-level.
|
||||||
parent->appendChild(category);
|
parent->appendChild(category);
|
||||||
}
|
}*/
|
||||||
}
|
}
|
||||||
|
|
||||||
json = QJsonDocument::fromJson(feeds.toUtf8()).object()["subscriptions"].toArray();
|
/*
|
||||||
|
json = QJsonDocument::fromJson(feeds.toUtf8()).object()["subscriptions"].toArray();
|
||||||
|
|
||||||
foreach (const QJsonValue& obj, json) {
|
foreach (const QJsonValue& obj, json) {
|
||||||
auto subscription = obj.toObject();
|
auto subscription = obj.toObject();
|
||||||
QString id = subscription["id"].toString();
|
QString id = subscription["id"].toString();
|
||||||
QString title = subscription["title"].toString();
|
QString title = subscription["title"].toString();
|
||||||
|
@ -435,28 +441,10 @@ RootItem* GmailNetworkFactory::decodeFeedCategoriesData(const QString& categorie
|
||||||
feed->setTitle(title);
|
feed->setTitle(title);
|
||||||
feed->setCustomId(id);
|
feed->setCustomId(id);
|
||||||
|
|
||||||
if (obtain_icons) {
|
|
||||||
QString icon_url = subscription["iconUrl"].toString();
|
|
||||||
|
|
||||||
if (!icon_url.isEmpty()) {
|
|
||||||
QByteArray icon_data;
|
|
||||||
|
|
||||||
if (NetworkFactory::performNetworkOperation(icon_url, DOWNLOAD_TIMEOUT,
|
|
||||||
QByteArray(), icon_data,
|
|
||||||
QNetworkAccessManager::GetOperation).first == QNetworkReply::NoError) {
|
|
||||||
// Icon downloaded, set it up.
|
|
||||||
QPixmap icon_pixmap;
|
|
||||||
|
|
||||||
icon_pixmap.loadFromData(icon_data);
|
|
||||||
feed->setIcon(QIcon(icon_pixmap));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (cats.contains(parent_label)) {
|
if (cats.contains(parent_label)) {
|
||||||
cats[parent_label]->appendChild(feed);
|
cats[parent_label]->appendChild(feed);
|
||||||
}
|
}
|
||||||
}
|
}*/
|
||||||
|
|
||||||
return parent;
|
return parent;
|
||||||
}
|
}
|
||||||
|
|
|
@ -52,7 +52,7 @@ class GmailNetworkFactory : public QObject {
|
||||||
// Returns tree of feeds/categories.
|
// Returns tree of feeds/categories.
|
||||||
// Top-level root of the tree is not needed here.
|
// Top-level root of the tree is not needed here.
|
||||||
// Returned items do not have primary IDs assigned.
|
// Returned items do not have primary IDs assigned.
|
||||||
RootItem* feedsCategories(bool obtain_icons);
|
RootItem* feedsCategories();
|
||||||
|
|
||||||
QList<Message> messages(const QString& stream_id, Feed::Status& error);
|
QList<Message> messages(const QString& stream_id, Feed::Status& error);
|
||||||
void markMessagesRead(RootItem::ReadStatus status, const QStringList& custom_ids, bool async = true);
|
void markMessagesRead(RootItem::ReadStatus status, const QStringList& custom_ids, bool async = true);
|
||||||
|
@ -64,7 +64,7 @@ class GmailNetworkFactory : public QObject {
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QList<Message> decodeMessages(const QString& messages_json_data, const QString& stream_id);
|
QList<Message> decodeMessages(const QString& messages_json_data, const QString& stream_id);
|
||||||
RootItem* decodeFeedCategoriesData(const QString& categories, const QString& feeds, bool obtain_icons);
|
RootItem* decodeFeedCategoriesData(const QString& categories);
|
||||||
|
|
||||||
void initializeOauth();
|
void initializeOauth();
|
||||||
|
|
||||||
|
|
|
@ -27,10 +27,19 @@
|
||||||
#include "services/inoreader/inoreaderserviceroot.h"
|
#include "services/inoreader/inoreaderserviceroot.h"
|
||||||
#include "services/inoreader/network/inoreadernetworkfactory.h"
|
#include "services/inoreader/network/inoreadernetworkfactory.h"
|
||||||
|
|
||||||
|
#include <QMessageBox>
|
||||||
|
|
||||||
ServiceRoot* InoreaderEntryPoint::createNewRoot() const {
|
ServiceRoot* InoreaderEntryPoint::createNewRoot() const {
|
||||||
|
#if defined(USE_WEBENGINE)
|
||||||
FormEditInoreaderAccount form_acc(qApp->mainFormWidget());
|
FormEditInoreaderAccount form_acc(qApp->mainFormWidget());
|
||||||
|
|
||||||
return form_acc.execForCreate();
|
return form_acc.execForCreate();
|
||||||
|
#else
|
||||||
|
QMessageBox::warning(qApp->mainFormWidget(),
|
||||||
|
QObject::tr("Not supported"),
|
||||||
|
QObject::tr("This plugin is not supported in NonWebEngine variant of this program."));
|
||||||
|
return nullptr;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
QList<ServiceRoot*> InoreaderEntryPoint::initializeSubtree() const {
|
QList<ServiceRoot*> InoreaderEntryPoint::initializeSubtree() const {
|
||||||
|
|
Loading…
Add table
Reference in a new issue