docs update
This commit is contained in:
parent
bad6badc8e
commit
79c81fb5ac
@ -17,6 +17,8 @@ RSS Guard is a simple RSS/ATOM feed reader for Windows, Linux, BSD, OS/2 or macO
|
||||
* [Nextcloud News](https://apps.nextcloud.com/apps/news)
|
||||
* [Tiny Tiny RSS](https://tt-rss.org)
|
||||
|
||||
RSS Guard is also podcast player as it can play everything via its built-in `mpv-based` media player.
|
||||
|
||||
![RSS Guard](resources/graphics/official_pictures/main-window-linux.png)
|
||||
|
||||
## Contributing to RSS Guard
|
||||
|
@ -1,9 +1,6 @@
|
||||
Built-in Web Browser & AdBlock
|
||||
==============================
|
||||
RSS Guard is distributed in two variants:
|
||||
* **Standard package with WebEngine-based bundled article viewer**: This variant displays articles with their full formatting and layout in embedded Chromium-based web browser. This variant of RSS Guard should be okay for everyone. Also, installation packages are relatively big.
|
||||
|
||||
* **Lite package with simple text-based article viewer**: This variant displays article in a much simpler and much more lightweight web viewer component. All packages of this variant have `lite` keyword in their names. This flavor of RSS Guard does NOT have a JavaScript support and is meant for people who value their privacy.
|
||||
Web browser capabilities differ depending on which RSS Guard [flavor](../variants) you install.
|
||||
|
||||
## AdBlock
|
||||
Both variants of RSS Guard offer ad-blocking functionality via [Adblocker](https://github.com/cliqz-oss/adblocker). Adblocker offers similar performance to [uBlock Origin](https://github.com/gorhill/uBlock).
|
||||
|
@ -16,6 +16,7 @@ User data folder can store your custom icon themes in `icons` subfolder, and cus
|
||||
## `%data%` placeholder
|
||||
RSS Guard stores its data and settings in a single folder. How to find out the exact path, see here. RSS Guard allows using the folder programmatically in some special contexts via `%data%` placeholder. You can use this placeholder in following contexts:
|
||||
* Contents of your [article filters](filters) - you can, therefore, place some scripts under your user data folder and include them via JavaScript into your article filter.
|
||||
* Path to your custom configuration directory for `libmpv`-based [media player](mediaplayer).
|
||||
* Contents of each file included in your custom [skins](skins). Note that in this case, the semantics of `%data%` are little changed and `%data%` points directly to base folder of your skin.
|
||||
* `source` and `post-process script` attributes for feed [scraping](scraping) - you can use the placeholder to load scripts to generate/process the feed from user's data folder.
|
||||
* [Notifications](notifications) also support the placeholder in path to audio files which are to be played when some event happens. For example, you could place audio files in your data folder and then use them in a notification with `%data%\audio\new-messages.wav`. See more about notifications.
|
@ -8,6 +8,7 @@ RSS Guards Documentation!
|
||||
donations
|
||||
downloads
|
||||
supported-os
|
||||
variants
|
||||
supported-readers
|
||||
|
||||
.. toctree::
|
||||
|
@ -1,3 +1,5 @@
|
||||
What is RSS Guard?
|
||||
==================
|
||||
RSS Guard is an [open-source](https://en.wikipedia.org/wiki/Open_source) [cross-platform](#supported-os) [multi-protocol](#supported-readers) desktop feed reader. It is able to fetch feeds in RSS/RDF/ATOM/JSON formats and connect to multiple web-based feed readers. RSS Guard is developed on top of the [Qt library](http://qt-project.org).
|
||||
RSS Guard is an [open-source](https://en.wikipedia.org/wiki/Open_source) [cross-platform](#supported-os) [multi-protocol](#supported-readers) desktop feed reader and podcast [player](features/mediaplayer). It is able to fetch feeds in RSS/RDF/ATOM/JSON formats and connect to multiple web-based feed readers. It is also able to play most audio/video formats.
|
||||
|
||||
RSS Guard is developed on top of the [Qt library](http://qt-project.org).
|
@ -186,6 +186,7 @@ QList<QAction*> FormMain::allActions() const {
|
||||
actions << m_ui->m_actionSendMessageViaEmail;
|
||||
actions << m_ui->m_actionOpenSelectedSourceArticlesExternally;
|
||||
actions << m_ui->m_actionOpenSelectedMessagesInternally;
|
||||
actions << m_ui->m_actionPlaySelectedArticlesInMediaPlayer;
|
||||
actions << m_ui->m_actionOpenSelectedMessagesInternallyNoTab;
|
||||
actions << m_ui->m_actionAlternateColorsInLists;
|
||||
actions << m_ui->m_actionMessagePreviewEnabled;
|
||||
@ -465,6 +466,15 @@ void FormMain::updateMessageButtonsAvailability() {
|
||||
m_ui->m_actionMarkSelectedMessagesAsRead->setEnabled(atleast_one_message_selected);
|
||||
m_ui->m_actionMarkSelectedMessagesAsUnread->setEnabled(atleast_one_message_selected);
|
||||
m_ui->m_actionOpenSelectedMessagesInternallyNoTab->setEnabled(one_message_selected);
|
||||
|
||||
#if !defined(ENABLE_MEDIAPLAYER)
|
||||
m_ui->m_actionPlaySelectedArticlesInMediaPlayer->setText(tr("Play in media player") + QSL(" ") +
|
||||
tr("(not supported)"));
|
||||
m_ui->m_actionPlaySelectedArticlesInMediaPlayer->setEnabled(false);
|
||||
#else
|
||||
m_ui->m_actionPlaySelectedArticlesInMediaPlayer->setEnabled(one_message_selected);
|
||||
#endif
|
||||
|
||||
m_ui->m_actionOpenSelectedMessagesInternally->setEnabled(one_message_selected);
|
||||
m_ui->m_actionOpenSelectedSourceArticlesExternally->setEnabled(atleast_one_message_selected);
|
||||
m_ui->m_actionCopyUrlSelectedArticles->setEnabled(atleast_one_message_selected);
|
||||
@ -608,6 +618,8 @@ void FormMain::setupIcons() {
|
||||
m_ui->m_actionSwitchImportanceOfSelectedMessages->setIcon(icon_theme_factory->fromTheme(QSL("mail-mark-important")));
|
||||
m_ui->m_actionOpenSelectedSourceArticlesExternally->setIcon(icon_theme_factory->fromTheme(QSL("document-open")));
|
||||
m_ui->m_actionOpenSelectedMessagesInternally->setIcon(icon_theme_factory->fromTheme(QSL("document-open")));
|
||||
m_ui->m_actionPlaySelectedArticlesInMediaPlayer->setIcon(icon_theme_factory->fromTheme(QSL("player_play"),
|
||||
QSL("media-playback-start")));
|
||||
m_ui->m_actionOpenSelectedMessagesInternallyNoTab->setIcon(icon_theme_factory->fromTheme(QSL("document-open")));
|
||||
m_ui->m_actionSendMessageViaEmail->setIcon(icon_theme_factory->fromTheme(QSL("mail-send")));
|
||||
m_ui->m_actionSelectNextItem->setIcon(icon_theme_factory->fromTheme(QSL("arrow-down")));
|
||||
@ -856,6 +868,10 @@ void FormMain::createConnections() {
|
||||
&QAction::triggered,
|
||||
tabWidget()->feedMessageViewer()->messagesView(),
|
||||
&MessagesView::openSelectedSourceMessagesExternally);
|
||||
connect(m_ui->m_actionOpenSelectedSourceArticlesExternally,
|
||||
&QAction::triggered,
|
||||
tabWidget()->feedMessageViewer()->messagesView(),
|
||||
&MessagesView::playSelectedArticleInMediaPlayer);
|
||||
connect(m_ui->m_actionOpenSelectedMessagesInternally,
|
||||
&QAction::triggered,
|
||||
tabWidget()->feedMessageViewer()->messagesView(),
|
||||
|
@ -161,6 +161,7 @@
|
||||
<addaction name="m_actionOpenSelectedSourceArticlesExternally"/>
|
||||
<addaction name="m_actionOpenSelectedMessagesInternally"/>
|
||||
<addaction name="m_actionOpenSelectedMessagesInternallyNoTab"/>
|
||||
<addaction name="m_actionPlaySelectedArticlesInMediaPlayer"/>
|
||||
<addaction name="m_actionSendMessageViaEmail"/>
|
||||
<addaction name="m_actionMessagePreviewEnabled"/>
|
||||
<addaction name="separator"/>
|
||||
@ -945,6 +946,11 @@
|
||||
<string>Edit child feeds (&recursive)</string>
|
||||
</property>
|
||||
</action>
|
||||
<action name="m_actionPlaySelectedArticlesInMediaPlayer">
|
||||
<property name="text">
|
||||
<string>Play in &media player</string>
|
||||
</property>
|
||||
</action>
|
||||
</widget>
|
||||
<customwidgets>
|
||||
<customwidget>
|
||||
|
@ -466,6 +466,7 @@ void MessagesView::initializeContextMenu() {
|
||||
<< qApp->mainForm()->m_ui->m_actionOpenSelectedSourceArticlesExternally
|
||||
<< qApp->mainForm()->m_ui->m_actionOpenSelectedMessagesInternally
|
||||
<< qApp->mainForm()->m_ui->m_actionOpenSelectedMessagesInternallyNoTab
|
||||
<< qApp->mainForm()->m_ui->m_actionPlaySelectedArticlesInMediaPlayer
|
||||
<< qApp->mainForm()->m_ui->m_actionCopyUrlSelectedArticles
|
||||
<< qApp->mainForm()->m_ui->m_actionMarkSelectedMessagesAsRead
|
||||
<< qApp->mainForm()->m_ui->m_actionMarkSelectedMessagesAsUnread
|
||||
@ -633,6 +634,27 @@ void MessagesView::openSelectedSourceMessagesExternally() {
|
||||
}
|
||||
}
|
||||
|
||||
#if defined(ENABLE_MEDIAPLAYER)
|
||||
void MessagesView::playSelectedArticleInMediaPlayer() {
|
||||
auto rws = selectionModel()->selectedRows();
|
||||
|
||||
if (!rws.isEmpty()) {
|
||||
auto msg = m_sourceModel->messageAt(m_proxyModel->mapToSource(rws.first()).row());
|
||||
|
||||
if (msg.m_url.isEmpty()) {
|
||||
qApp->showGuiMessage(Notification::Event::GeneralEvent,
|
||||
GuiMessage(tr("No URL"),
|
||||
tr("Article cannot be played in media player as it has no URL"),
|
||||
QSystemTrayIcon::MessageIcon::Warning),
|
||||
GuiMessageDestination(true, true));
|
||||
}
|
||||
else {
|
||||
emit playLinkInMediaPlayer(msg.m_url);
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
void MessagesView::openSelectedMessagesInternally() {
|
||||
auto rws = selectionModel()->selectedRows();
|
||||
|
||||
|
@ -41,7 +41,11 @@ class MessagesView : public BaseTreeView {
|
||||
// Loads un-deleted messages from selected feeds.
|
||||
void loadItem(RootItem* item);
|
||||
|
||||
// Message manipulators.
|
||||
// Message manipulators.
|
||||
#if defined(ENABLE_MEDIAPLAYER)
|
||||
void playSelectedArticleInMediaPlayer();
|
||||
#endif
|
||||
|
||||
void openSelectedSourceMessagesExternally();
|
||||
void openSelectedMessagesInternally();
|
||||
void openSelectedMessageUrl();
|
||||
@ -83,6 +87,10 @@ class MessagesView : public BaseTreeView {
|
||||
void onSortIndicatorChanged(int column, Qt::SortOrder order);
|
||||
|
||||
signals:
|
||||
#if defined(ENABLE_MEDIAPLAYER)
|
||||
void playLinkInMediaPlayer(const QString& link);
|
||||
#endif
|
||||
|
||||
void openLinkNewTab(const QString& link);
|
||||
void openLinkMiniBrowser(const QString& link);
|
||||
void openSingleMessageInNewTab(RootItem* root, const Message& message);
|
||||
|
@ -130,6 +130,9 @@ void TabWidget::createConnections() {
|
||||
&MessagesView::openSingleMessageInNewTab,
|
||||
this,
|
||||
&TabWidget::addSingleMessageView);
|
||||
connect(feedMessageViewer()->messagesView(), &MessagesView::playLinkInMediaPlayer, this, [this](const QString& url) {
|
||||
addMediaPlayer(url, true);
|
||||
});
|
||||
}
|
||||
|
||||
void TabWidget::initializeTabs() {
|
||||
|
Loading…
x
Reference in New Issue
Block a user