Work on filters dialog.
This commit is contained in:
parent
05025f7a04
commit
5d8fd25173
@ -25,6 +25,7 @@
|
|||||||
<file>./graphics/Faenza/actions/64/go-up.png</file>
|
<file>./graphics/Faenza/actions/64/go-up.png</file>
|
||||||
<file>./graphics/Faenza/actions/64/gtk-edit.png</file>
|
<file>./graphics/Faenza/actions/64/gtk-edit.png</file>
|
||||||
<file>./graphics/Faenza/actions/64/help-about.png</file>
|
<file>./graphics/Faenza/actions/64/help-about.png</file>
|
||||||
|
<file>./graphics/Faenza/actions/64/help-contents.png</file>
|
||||||
<file>./graphics/Faenza/actions/64/insert-object.png</file>
|
<file>./graphics/Faenza/actions/64/insert-object.png</file>
|
||||||
<file>./graphics/Faenza/actions/64/list-add.png</file>
|
<file>./graphics/Faenza/actions/64/list-add.png</file>
|
||||||
<file>./graphics/Faenza/actions/64/list-remove.png</file>
|
<file>./graphics/Faenza/actions/64/list-remove.png</file>
|
||||||
@ -37,6 +38,7 @@
|
|||||||
<file>./graphics/Faenza/actions/64/mail-message-new.png</file>
|
<file>./graphics/Faenza/actions/64/mail-message-new.png</file>
|
||||||
<file>./graphics/Faenza/actions/64/mail-send.png</file>
|
<file>./graphics/Faenza/actions/64/mail-send.png</file>
|
||||||
<file>./graphics/Faenza/actions/64/mail-sent.png</file>
|
<file>./graphics/Faenza/actions/64/mail-sent.png</file>
|
||||||
|
<file>./graphics/Faenza/actions/64/media-playback-start.png</file>
|
||||||
<file>./graphics/Faenza/actions/64/process-stop.png</file>
|
<file>./graphics/Faenza/actions/64/process-stop.png</file>
|
||||||
<file>./graphics/Faenza/actions/64/reload.png</file>
|
<file>./graphics/Faenza/actions/64/reload.png</file>
|
||||||
<file>./graphics/Faenza/actions/64/system-search.png</file>
|
<file>./graphics/Faenza/actions/64/system-search.png</file>
|
||||||
|
@ -14,7 +14,7 @@ class MessageFilter : public QObject {
|
|||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
explicit MessageFilter(int id, QObject* parent = nullptr);
|
explicit MessageFilter(int id = -1, QObject* parent = nullptr);
|
||||||
|
|
||||||
FilteringAction filterMessage(QJSEngine* engine);
|
FilteringAction filterMessage(QJSEngine* engine);
|
||||||
|
|
||||||
|
@ -2,21 +2,83 @@
|
|||||||
|
|
||||||
#include "gui/dialogs/formmessagefiltersmanager.h"
|
#include "gui/dialogs/formmessagefiltersmanager.h"
|
||||||
|
|
||||||
|
#include "core/messagefilter.h"
|
||||||
#include "gui/guiutilities.h"
|
#include "gui/guiutilities.h"
|
||||||
#include "miscellaneous/application.h"
|
#include "miscellaneous/application.h"
|
||||||
|
#include "miscellaneous/feedreader.h"
|
||||||
#include "miscellaneous/iconfactory.h"
|
#include "miscellaneous/iconfactory.h"
|
||||||
#include "network-web/webfactory.h"
|
#include "network-web/webfactory.h"
|
||||||
|
#include "services/abstract/accountcheckmodel.h"
|
||||||
|
|
||||||
FormMessageFiltersManager::FormMessageFiltersManager(QWidget* parent) : QDialog(parent) {
|
FormMessageFiltersManager::FormMessageFiltersManager(FeedReader* reader, const QList<ServiceRoot*>& accounts, QWidget* parent)
|
||||||
|
: QDialog(parent), m_feedsModel(new AccountCheckModel(this)), m_rootItem(new RootItem()),
|
||||||
|
m_accounts(accounts), m_reader(reader) {
|
||||||
m_ui.setupUi(this);
|
m_ui.setupUi(this);
|
||||||
|
|
||||||
GuiUtilities::applyDialogProperties(*this, qApp->icons()->fromTheme(QSL("view-list-details")));
|
GuiUtilities::applyDialogProperties(*this, qApp->icons()->fromTheme(QSL("view-list-details")));
|
||||||
|
|
||||||
m_ui.m_btnAddNew->setIcon(qApp->icons()->fromTheme(QSL("list-add")));
|
m_ui.m_btnAddNew->setIcon(qApp->icons()->fromTheme(QSL("list-add")));
|
||||||
m_ui.m_btnRemoveSelected->setIcon(qApp->icons()->fromTheme(QSL("list-remove")));
|
m_ui.m_btnRemoveSelected->setIcon(qApp->icons()->fromTheme(QSL("list-remove")));
|
||||||
|
m_ui.m_btnTest->setIcon(qApp->icons()->fromTheme(QSL("media-playback-start")));
|
||||||
|
m_ui.m_btnDetailedHelp->setIcon(qApp->icons()->fromTheme(QSL("help-contents")));
|
||||||
m_ui.m_txtScript->setFont(QFontDatabase::systemFont(QFontDatabase::SystemFont::FixedFont));
|
m_ui.m_txtScript->setFont(QFontDatabase::systemFont(QFontDatabase::SystemFont::FixedFont));
|
||||||
|
|
||||||
connect(m_ui.m_btnDetailedHelp, &QPushButton::clicked, this, []() {
|
connect(m_ui.m_btnDetailedHelp, &QPushButton::clicked, this, []() {
|
||||||
qApp->web()->openUrlInExternalBrowser(MSG_FILTERING_HELP);
|
qApp->web()->openUrlInExternalBrowser(MSG_FILTERING_HELP);
|
||||||
});
|
});
|
||||||
|
connect(m_ui.m_listFilters, &QListWidget::currentRowChanged,
|
||||||
|
this, &FormMessageFiltersManager::loadFilter);
|
||||||
|
connect(m_ui.m_btnAddNew, &QPushButton::clicked,
|
||||||
|
this, &FormMessageFiltersManager::addNewFilter);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
FormMessageFiltersManager::~FormMessageFiltersManager() {
|
||||||
|
delete m_rootItem;
|
||||||
|
}
|
||||||
|
|
||||||
|
MessageFilter* FormMessageFiltersManager::selectedFilter() const {
|
||||||
|
if (m_ui.m_listFilters->selectedItems().isEmpty()) {
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return m_ui.m_listFilters->selectedItems().at(0)->data(Qt::ItemDataRole::UserRole).value<MessageFilter*>();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ServiceRoot* FormMessageFiltersManager::selectedAccount() const {
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
void FormMessageFiltersManager::addNewFilter() {
|
||||||
|
auto* fltr = m_reader->addMessageFilter(
|
||||||
|
tr("New message filter"),
|
||||||
|
QSL("function filterMessage() { return 1; }"));
|
||||||
|
auto* it = new QListWidgetItem(fltr->name(), m_ui.m_listFilters);
|
||||||
|
|
||||||
|
it->setData(Qt::ItemDataRole::UserRole, QVariant::fromValue<MessageFilter*>(fltr));
|
||||||
|
|
||||||
|
m_ui.m_listFilters->setCurrentRow(m_ui.m_listFilters->count() - 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
void FormMessageFiltersManager::loadFilter() {
|
||||||
|
auto* filter = selectedFilter();
|
||||||
|
auto* acc = selectedAccount();
|
||||||
|
|
||||||
|
showFilter(filter);
|
||||||
|
updateFeedAssignments(filter, acc);
|
||||||
|
}
|
||||||
|
|
||||||
|
void FormMessageFiltersManager::showFilter(MessageFilter* filter) {
|
||||||
|
if (filter == nullptr) {
|
||||||
|
m_ui.m_txtTitle->clear();
|
||||||
|
m_ui.m_txtScript->clear();
|
||||||
|
m_ui.m_gbDetails->setEnabled(false);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
m_ui.m_txtTitle->setText(filter->name());
|
||||||
|
m_ui.m_txtScript->setPlainText(filter->script());
|
||||||
|
m_ui.m_gbDetails->setEnabled(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void FormMessageFiltersManager::updateFeedAssignments(MessageFilter* filter, ServiceRoot* account) {}
|
||||||
|
@ -5,16 +5,40 @@
|
|||||||
|
|
||||||
#include <QDialog>
|
#include <QDialog>
|
||||||
|
|
||||||
|
#include "services/abstract/serviceroot.h"
|
||||||
|
|
||||||
#include "ui_formmessagefiltersmanager.h"
|
#include "ui_formmessagefiltersmanager.h"
|
||||||
|
|
||||||
|
class AccountCheckModel;
|
||||||
|
class MessageFilter;
|
||||||
|
class FeedReader;
|
||||||
|
|
||||||
class FormMessageFiltersManager : public QDialog {
|
class FormMessageFiltersManager : public QDialog {
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
explicit FormMessageFiltersManager(QWidget *parent = nullptr);
|
explicit FormMessageFiltersManager(FeedReader* reader, const QList<ServiceRoot*>& accounts, QWidget* parent = nullptr);
|
||||||
|
virtual ~FormMessageFiltersManager();
|
||||||
|
|
||||||
|
MessageFilter* selectedFilter() const;
|
||||||
|
ServiceRoot* selectedAccount() const;
|
||||||
|
|
||||||
|
private slots:
|
||||||
|
void addNewFilter();
|
||||||
|
void loadFilter();
|
||||||
|
|
||||||
|
// Display filter title/contents.
|
||||||
|
void showFilter(MessageFilter* filter);
|
||||||
|
|
||||||
|
// Load feeds/categories of the account, place checkmarks where filter is used.
|
||||||
|
void updateFeedAssignments(MessageFilter* filter, ServiceRoot* account);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Ui::FormMessageFiltersManager m_ui;
|
Ui::FormMessageFiltersManager m_ui;
|
||||||
|
AccountCheckModel* m_feedsModel;
|
||||||
|
RootItem* m_rootItem;
|
||||||
|
QList<ServiceRoot*> m_accounts;
|
||||||
|
FeedReader* m_reader;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // FORMMESSAGEFILTERSMANAGER_H
|
#endif // FORMMESSAGEFILTERSMANAGER_H
|
||||||
|
@ -6,144 +6,16 @@
|
|||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>737</width>
|
<width>900</width>
|
||||||
<height>592</height>
|
<height>625</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="windowTitle">
|
<property name="windowTitle">
|
||||||
<string>Message filters</string>
|
<string>Message filters</string>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QGridLayout" name="gridLayout_2">
|
<layout class="QGridLayout" name="gridLayout_2">
|
||||||
<item row="0" column="1">
|
|
||||||
<widget class="QTreeView" name="m_treeFeeds"/>
|
|
||||||
</item>
|
|
||||||
<item row="1" column="0" colspan="2">
|
|
||||||
<widget class="QGroupBox" name="groupBox">
|
|
||||||
<property name="sizePolicy">
|
|
||||||
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
|
|
||||||
<horstretch>0</horstretch>
|
|
||||||
<verstretch>1</verstretch>
|
|
||||||
</sizepolicy>
|
|
||||||
</property>
|
|
||||||
<property name="title">
|
|
||||||
<string>Message filter details</string>
|
|
||||||
</property>
|
|
||||||
<layout class="QFormLayout" name="formLayout">
|
|
||||||
<item row="0" column="0">
|
|
||||||
<widget class="QLabel" name="label">
|
|
||||||
<property name="text">
|
|
||||||
<string>Title</string>
|
|
||||||
</property>
|
|
||||||
<property name="buddy">
|
|
||||||
<cstring>m_txtTitle</cstring>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="0" column="1">
|
|
||||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
|
||||||
<item>
|
|
||||||
<widget class="QLineEdit" name="m_txtTitle">
|
|
||||||
<property name="placeholderText">
|
|
||||||
<string>Title of message filter</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<spacer name="horizontalSpacer_2">
|
|
||||||
<property name="orientation">
|
|
||||||
<enum>Qt::Horizontal</enum>
|
|
||||||
</property>
|
|
||||||
<property name="sizeHint" stdset="0">
|
|
||||||
<size>
|
|
||||||
<width>40</width>
|
|
||||||
<height>20</height>
|
|
||||||
</size>
|
|
||||||
</property>
|
|
||||||
</spacer>
|
|
||||||
</item>
|
|
||||||
</layout>
|
|
||||||
</item>
|
|
||||||
<item row="1" column="0">
|
|
||||||
<widget class="QLabel" name="label_2">
|
|
||||||
<property name="text">
|
|
||||||
<string>JavaScript code</string>
|
|
||||||
</property>
|
|
||||||
<property name="buddy">
|
|
||||||
<cstring>m_txtScript</cstring>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="3" column="0">
|
|
||||||
<widget class="QLabel" name="label_3">
|
|
||||||
<property name="text">
|
|
||||||
<string>Errors</string>
|
|
||||||
</property>
|
|
||||||
<property name="buddy">
|
|
||||||
<cstring>m_txtErrors</cstring>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="3" column="1">
|
|
||||||
<widget class="QPlainTextEdit" name="m_txtErrors">
|
|
||||||
<property name="enabled">
|
|
||||||
<bool>false</bool>
|
|
||||||
</property>
|
|
||||||
<property name="sizePolicy">
|
|
||||||
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
|
|
||||||
<horstretch>0</horstretch>
|
|
||||||
<verstretch>1</verstretch>
|
|
||||||
</sizepolicy>
|
|
||||||
</property>
|
|
||||||
<property name="readOnly">
|
|
||||||
<bool>false</bool>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="2" column="1">
|
|
||||||
<layout class="QHBoxLayout" name="horizontalLayout_2">
|
|
||||||
<item>
|
|
||||||
<widget class="QPushButton" name="m_btnDetailedHelp">
|
|
||||||
<property name="text">
|
|
||||||
<string>&Detailed help</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item>
|
|
||||||
<spacer name="horizontalSpacer_3">
|
|
||||||
<property name="orientation">
|
|
||||||
<enum>Qt::Horizontal</enum>
|
|
||||||
</property>
|
|
||||||
<property name="sizeHint" stdset="0">
|
|
||||||
<size>
|
|
||||||
<width>40</width>
|
|
||||||
<height>20</height>
|
|
||||||
</size>
|
|
||||||
</property>
|
|
||||||
</spacer>
|
|
||||||
</item>
|
|
||||||
</layout>
|
|
||||||
</item>
|
|
||||||
<item row="1" column="1">
|
|
||||||
<widget class="QPlainTextEdit" name="m_txtScript">
|
|
||||||
<property name="sizePolicy">
|
|
||||||
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
|
|
||||||
<horstretch>0</horstretch>
|
|
||||||
<verstretch>2</verstretch>
|
|
||||||
</sizepolicy>
|
|
||||||
</property>
|
|
||||||
<property name="placeholderText">
|
|
||||||
<string>Your JavaScript-based message filtering logic</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
</layout>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="0" column="0">
|
<item row="0" column="0">
|
||||||
<layout class="QGridLayout" name="gridLayout">
|
<layout class="QGridLayout" name="gridLayout">
|
||||||
<item row="0" column="0" colspan="3">
|
|
||||||
<widget class="QTreeView" name="m_treeFilters"/>
|
|
||||||
</item>
|
|
||||||
<item row="1" column="2">
|
<item row="1" column="2">
|
||||||
<widget class="QPushButton" name="m_btnRemoveSelected">
|
<widget class="QPushButton" name="m_btnRemoveSelected">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
@ -171,8 +43,276 @@
|
|||||||
</property>
|
</property>
|
||||||
</spacer>
|
</spacer>
|
||||||
</item>
|
</item>
|
||||||
|
<item row="0" column="0" colspan="3">
|
||||||
|
<widget class="QListWidget" name="m_listFilters"/>
|
||||||
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</item>
|
</item>
|
||||||
|
<item row="0" column="1">
|
||||||
|
<layout class="QFormLayout" name="formLayout_3">
|
||||||
|
<item row="1" column="0" colspan="2">
|
||||||
|
<widget class="QTreeView" name="m_treeFeeds">
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>0</width>
|
||||||
|
<height>150</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="1">
|
||||||
|
<widget class="QComboBox" name="comboBox"/>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="0">
|
||||||
|
<widget class="QLabel" name="label_9">
|
||||||
|
<property name="text">
|
||||||
|
<string>Account</string>
|
||||||
|
</property>
|
||||||
|
<property name="buddy">
|
||||||
|
<cstring>comboBox</cstring>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="0" colspan="2">
|
||||||
|
<widget class="QGroupBox" name="m_gbDetails">
|
||||||
|
<property name="title">
|
||||||
|
<string>Message filter details</string>
|
||||||
|
</property>
|
||||||
|
<layout class="QFormLayout" name="formLayout">
|
||||||
|
<item row="0" column="0">
|
||||||
|
<widget class="QLabel" name="label">
|
||||||
|
<property name="text">
|
||||||
|
<string>Title</string>
|
||||||
|
</property>
|
||||||
|
<property name="buddy">
|
||||||
|
<cstring>m_txtTitle</cstring>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="1">
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||||
|
<item>
|
||||||
|
<widget class="QLineEdit" name="m_txtTitle">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="maximumSize">
|
||||||
|
<size>
|
||||||
|
<width>300</width>
|
||||||
|
<height>16777215</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="placeholderText">
|
||||||
|
<string>Title of message filter</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<spacer name="horizontalSpacer_2">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="0">
|
||||||
|
<widget class="QLabel" name="label_2">
|
||||||
|
<property name="text">
|
||||||
|
<string>JavaScript code</string>
|
||||||
|
</property>
|
||||||
|
<property name="buddy">
|
||||||
|
<cstring>m_txtScript</cstring>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="1">
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout_3">
|
||||||
|
<item>
|
||||||
|
<widget class="QPlainTextEdit" name="m_txtScript">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>1</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="placeholderText">
|
||||||
|
<string>Your JavaScript-based message filtering logic</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QGroupBox" name="groupBox_2">
|
||||||
|
<property name="title">
|
||||||
|
<string>Sample message</string>
|
||||||
|
</property>
|
||||||
|
<layout class="QFormLayout" name="formLayout_2">
|
||||||
|
<item row="0" column="0" colspan="2">
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout_4">
|
||||||
|
<item>
|
||||||
|
<widget class="QCheckBox" name="checkBox">
|
||||||
|
<property name="text">
|
||||||
|
<string>Read</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QCheckBox" name="checkBox_2">
|
||||||
|
<property name="text">
|
||||||
|
<string>Important</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<spacer name="horizontalSpacer_4">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>40</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="0">
|
||||||
|
<widget class="QLabel" name="label_4">
|
||||||
|
<property name="text">
|
||||||
|
<string>Title</string>
|
||||||
|
</property>
|
||||||
|
<property name="buddy">
|
||||||
|
<cstring>lineEdit</cstring>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="1">
|
||||||
|
<widget class="QLineEdit" name="lineEdit"/>
|
||||||
|
</item>
|
||||||
|
<item row="2" column="0">
|
||||||
|
<widget class="QLabel" name="label_6">
|
||||||
|
<property name="text">
|
||||||
|
<string>URL</string>
|
||||||
|
</property>
|
||||||
|
<property name="buddy">
|
||||||
|
<cstring>lineEdit_2</cstring>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="2" column="1">
|
||||||
|
<widget class="QLineEdit" name="lineEdit_2"/>
|
||||||
|
</item>
|
||||||
|
<item row="3" column="0">
|
||||||
|
<widget class="QLabel" name="label_7">
|
||||||
|
<property name="text">
|
||||||
|
<string>Author</string>
|
||||||
|
</property>
|
||||||
|
<property name="buddy">
|
||||||
|
<cstring>lineEdit_3</cstring>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="3" column="1">
|
||||||
|
<widget class="QLineEdit" name="lineEdit_3"/>
|
||||||
|
</item>
|
||||||
|
<item row="4" column="0">
|
||||||
|
<widget class="QLabel" name="label_8">
|
||||||
|
<property name="text">
|
||||||
|
<string>Created on</string>
|
||||||
|
</property>
|
||||||
|
<property name="buddy">
|
||||||
|
<cstring>lineEdit_4</cstring>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="4" column="1">
|
||||||
|
<widget class="QLineEdit" name="lineEdit_4"/>
|
||||||
|
</item>
|
||||||
|
<item row="5" column="0">
|
||||||
|
<widget class="QLabel" name="label_5">
|
||||||
|
<property name="text">
|
||||||
|
<string>Contents</string>
|
||||||
|
</property>
|
||||||
|
<property name="buddy">
|
||||||
|
<cstring>plainTextEdit</cstring>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="5" column="1">
|
||||||
|
<widget class="QPlainTextEdit" name="plainTextEdit"/>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
<item row="2" column="1">
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout_2">
|
||||||
|
<item>
|
||||||
|
<widget class="QPushButton" name="m_btnTest">
|
||||||
|
<property name="text">
|
||||||
|
<string>&Test</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QPushButton" name="m_btnDetailedHelp">
|
||||||
|
<property name="text">
|
||||||
|
<string>&Detailed &help</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<spacer name="horizontalSpacer_3">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>40</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
<item row="4" column="0">
|
||||||
|
<widget class="QLabel" name="label_3">
|
||||||
|
<property name="text">
|
||||||
|
<string>Test output</string>
|
||||||
|
</property>
|
||||||
|
<property name="buddy">
|
||||||
|
<cstring>m_txtErrors</cstring>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="4" column="1">
|
||||||
|
<widget class="QPlainTextEdit" name="m_txtErrors">
|
||||||
|
<property name="enabled">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>1</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="readOnly">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
<item row="2" column="1">
|
<item row="2" column="1">
|
||||||
<widget class="QDialogButtonBox" name="m_buttonBox">
|
<widget class="QDialogButtonBox" name="m_buttonBox">
|
||||||
<property name="orientation">
|
<property name="orientation">
|
||||||
@ -189,12 +329,22 @@
|
|||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
<tabstops>
|
<tabstops>
|
||||||
<tabstop>m_treeFilters</tabstop>
|
<tabstop>m_listFilters</tabstop>
|
||||||
<tabstop>m_treeFeeds</tabstop>
|
|
||||||
<tabstop>m_btnAddNew</tabstop>
|
<tabstop>m_btnAddNew</tabstop>
|
||||||
<tabstop>m_btnRemoveSelected</tabstop>
|
<tabstop>m_btnRemoveSelected</tabstop>
|
||||||
|
<tabstop>comboBox</tabstop>
|
||||||
|
<tabstop>m_treeFeeds</tabstop>
|
||||||
<tabstop>m_txtTitle</tabstop>
|
<tabstop>m_txtTitle</tabstop>
|
||||||
<tabstop>m_txtScript</tabstop>
|
<tabstop>m_txtScript</tabstop>
|
||||||
|
<tabstop>m_btnTest</tabstop>
|
||||||
|
<tabstop>m_btnDetailedHelp</tabstop>
|
||||||
|
<tabstop>checkBox</tabstop>
|
||||||
|
<tabstop>checkBox_2</tabstop>
|
||||||
|
<tabstop>lineEdit</tabstop>
|
||||||
|
<tabstop>lineEdit_2</tabstop>
|
||||||
|
<tabstop>lineEdit_3</tabstop>
|
||||||
|
<tabstop>lineEdit_4</tabstop>
|
||||||
|
<tabstop>plainTextEdit</tabstop>
|
||||||
<tabstop>m_txtErrors</tabstop>
|
<tabstop>m_txtErrors</tabstop>
|
||||||
</tabstops>
|
</tabstops>
|
||||||
<resources/>
|
<resources/>
|
||||||
@ -206,8 +356,8 @@
|
|||||||
<slot>accept()</slot>
|
<slot>accept()</slot>
|
||||||
<hints>
|
<hints>
|
||||||
<hint type="sourcelabel">
|
<hint type="sourcelabel">
|
||||||
<x>248</x>
|
<x>701</x>
|
||||||
<y>254</y>
|
<y>615</y>
|
||||||
</hint>
|
</hint>
|
||||||
<hint type="destinationlabel">
|
<hint type="destinationlabel">
|
||||||
<x>157</x>
|
<x>157</x>
|
||||||
@ -222,8 +372,8 @@
|
|||||||
<slot>reject()</slot>
|
<slot>reject()</slot>
|
||||||
<hints>
|
<hints>
|
||||||
<hint type="sourcelabel">
|
<hint type="sourcelabel">
|
||||||
<x>316</x>
|
<x>769</x>
|
||||||
<y>260</y>
|
<y>615</y>
|
||||||
</hint>
|
</hint>
|
||||||
<hint type="destinationlabel">
|
<hint type="destinationlabel">
|
||||||
<x>286</x>
|
<x>286</x>
|
||||||
|
@ -22,7 +22,7 @@ void GuiUtilities::setLabelAsNotice(QLabel& label, bool is_warning) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void GuiUtilities::applyDialogProperties(QWidget& widget, const QIcon& icon, const QString& title) {
|
void GuiUtilities::applyDialogProperties(QWidget& widget, const QIcon& icon, const QString& title) {
|
||||||
widget.setWindowFlags(Qt::MSWindowsFixedSizeDialogHint | Qt::Dialog | Qt::WindowSystemMenuHint | Qt::WindowTitleHint);
|
widget.setWindowFlags(/*Qt::MSWindowsFixedSizeDialogHint | */ Qt::Dialog | Qt::WindowSystemMenuHint | Qt::WindowTitleHint);
|
||||||
widget.setWindowIcon(icon);
|
widget.setWindowIcon(icon);
|
||||||
|
|
||||||
if (!title.isEmpty()) {
|
if (!title.isEmpty()) {
|
||||||
|
@ -7,10 +7,10 @@
|
|||||||
#include "core/feedsproxymodel.h"
|
#include "core/feedsproxymodel.h"
|
||||||
#include "core/messagesmodel.h"
|
#include "core/messagesmodel.h"
|
||||||
#include "core/messagesproxymodel.h"
|
#include "core/messagesproxymodel.h"
|
||||||
|
#include "gui/dialogs/formmessagefiltersmanager.h"
|
||||||
#include "miscellaneous/application.h"
|
#include "miscellaneous/application.h"
|
||||||
#include "miscellaneous/databasequeries.h"
|
#include "miscellaneous/databasequeries.h"
|
||||||
#include "miscellaneous/mutex.h"
|
#include "miscellaneous/mutex.h"
|
||||||
#include "gui/dialogs/formmessagefiltersmanager.h"
|
|
||||||
#include "services/abstract/cacheforserviceroot.h"
|
#include "services/abstract/cacheforserviceroot.h"
|
||||||
#include "services/abstract/serviceroot.h"
|
#include "services/abstract/serviceroot.h"
|
||||||
#include "services/gmail/gmailentrypoint.h"
|
#include "services/gmail/gmailentrypoint.h"
|
||||||
@ -97,7 +97,10 @@ void FeedReader::updateFeeds(const QList<Feed*>& feeds) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void FeedReader::showMessageFiltersManager() {
|
void FeedReader::showMessageFiltersManager() {
|
||||||
FormMessageFiltersManager manager(qApp->mainFormWidget());
|
FormMessageFiltersManager manager(qApp->feedReader(),
|
||||||
|
qApp->feedReader()->feedsModel()->serviceRoots(),
|
||||||
|
qApp->mainFormWidget());
|
||||||
|
|
||||||
manager.exec();
|
manager.exec();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -135,7 +138,7 @@ int FeedReader::autoUpdateInitialInterval() const {
|
|||||||
return m_globalAutoUpdateInitialInterval;
|
return m_globalAutoUpdateInitialInterval;
|
||||||
}
|
}
|
||||||
|
|
||||||
void FeedReader::loadSaveMessageFilters() {
|
void FeedReader::loadSavedMessageFilters() {
|
||||||
// Load all message filters from database.
|
// Load all message filters from database.
|
||||||
// All plugin services will hook active filters to
|
// All plugin services will hook active filters to
|
||||||
// all feeds.
|
// all feeds.
|
||||||
@ -148,6 +151,17 @@ void FeedReader::loadSaveMessageFilters() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
MessageFilter* FeedReader::addMessageFilter(const QString& title, const QString& script) {
|
||||||
|
auto* fltr = new MessageFilter(12, this);
|
||||||
|
|
||||||
|
fltr->setName(title);
|
||||||
|
fltr->setScript(script);
|
||||||
|
|
||||||
|
// TODO: Save into database, then return.
|
||||||
|
|
||||||
|
return fltr;
|
||||||
|
}
|
||||||
|
|
||||||
void FeedReader::updateAllFeeds() {
|
void FeedReader::updateAllFeeds() {
|
||||||
updateFeeds(m_feedsModel->rootItem()->getSubTreeFeeds());
|
updateFeeds(m_feedsModel->rootItem()->getSubTreeFeeds());
|
||||||
}
|
}
|
||||||
|
@ -52,9 +52,9 @@ class RSSGUARD_DLLSPEC FeedReader : public QObject {
|
|||||||
int autoUpdateRemainingInterval() const;
|
int autoUpdateRemainingInterval() const;
|
||||||
int autoUpdateInitialInterval() const;
|
int autoUpdateInitialInterval() const;
|
||||||
|
|
||||||
void loadSaveMessageFilters();
|
void loadSavedMessageFilters();
|
||||||
|
|
||||||
QList<MessageFilter*> messageFilters() const;
|
QList<MessageFilter*> messageFilters() const;
|
||||||
|
MessageFilter* addMessageFilter(const QString& title, const QString& script);
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
void updateAllFeeds();
|
void updateAllFeeds();
|
||||||
|
@ -25,9 +25,7 @@ RootItem* AccountCheckModel::rootItem() const {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void AccountCheckModel::setRootItem(RootItem* root_item) {
|
void AccountCheckModel::setRootItem(RootItem* root_item) {
|
||||||
|
|
||||||
delete m_rootItem;
|
delete m_rootItem;
|
||||||
|
|
||||||
m_rootItem = root_item;
|
m_rootItem = root_item;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -161,23 +159,17 @@ QVariant AccountCheckModel::data(const QModelIndex& index, int role) const {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (role == Qt::DecorationRole) {
|
else if (role == Qt::DecorationRole) {
|
||||||
switch (item->kind()) {
|
auto ic = item->icon();
|
||||||
case RootItemKind::Category:
|
|
||||||
case RootItemKind::Bin:
|
|
||||||
case RootItemKind::Feed:
|
|
||||||
return item->icon();
|
|
||||||
|
|
||||||
default:
|
return ic.isNull() ? QVariant() : ic;
|
||||||
return QVariant();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else if (role == Qt::DisplayRole) {
|
else if (role == Qt::DisplayRole) {
|
||||||
switch (item->kind()) {
|
switch (item->kind()) {
|
||||||
case RootItemKind::Category:
|
case RootItemKind::Category:
|
||||||
return QVariant(item->data(index.column(), role).toString() + tr(" (category)"));
|
return QVariant(item->data(index.column(), role).toString() + QSL(" ") + tr("(category)"));
|
||||||
|
|
||||||
case RootItemKind::Feed:
|
case RootItemKind::Feed:
|
||||||
return QVariant(item->data(index.column(), role).toString() + tr(" (feed)"));
|
return QVariant(item->data(index.column(), role).toString() + QSL(" ") + tr("(feed)"));
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return item->title();
|
return item->title();
|
||||||
@ -243,7 +235,8 @@ bool AccountCheckModel::setData(const QModelIndex& index, const QVariant& value,
|
|||||||
}
|
}
|
||||||
|
|
||||||
Qt::ItemFlags AccountCheckModel::flags(const QModelIndex& index) const {
|
Qt::ItemFlags AccountCheckModel::flags(const QModelIndex& index) const {
|
||||||
if (!index.isValid() || itemForIndex(index)->kind() == RootItemKind::Bin) {
|
if (!index.isValid() || (itemForIndex(index)->kind() != RootItemKind::Kind::Category &&
|
||||||
|
itemForIndex(index)->kind() != RootItemKind::Kind::Feed)) {
|
||||||
return Qt::NoItemFlags;
|
return Qt::NoItemFlags;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -7,12 +7,12 @@
|
|||||||
|
|
||||||
#include "services/abstract/rootitem.h"
|
#include "services/abstract/rootitem.h"
|
||||||
|
|
||||||
|
// This is common model which displays only categories/feeds
|
||||||
|
// and allows user to place checkmarks.
|
||||||
class AccountCheckModel : public QAbstractItemModel {
|
class AccountCheckModel : public QAbstractItemModel {
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
// Constructors and destructors.
|
|
||||||
explicit AccountCheckModel(QObject* parent = nullptr);
|
explicit AccountCheckModel(QObject* parent = nullptr);
|
||||||
virtual ~AccountCheckModel();
|
virtual ~AccountCheckModel();
|
||||||
|
|
||||||
|
@ -40,7 +40,7 @@ void FormStandardImportExport::setMode(const FeedsImportExportModel::Mode& mode)
|
|||||||
m_ui->m_progressBar->setVisible(false);
|
m_ui->m_progressBar->setVisible(false);
|
||||||
|
|
||||||
switch (mode) {
|
switch (mode) {
|
||||||
case FeedsImportExportModel::Export: {
|
case FeedsImportExportModel::Mode::Export: {
|
||||||
m_model->setRootItem(m_serviceRoot);
|
m_model->setRootItem(m_serviceRoot);
|
||||||
m_model->checkAllItems();
|
m_model->checkAllItems();
|
||||||
m_ui->m_treeFeeds->setModel(m_model);
|
m_ui->m_treeFeeds->setModel(m_model);
|
||||||
@ -55,7 +55,7 @@ void FormStandardImportExport::setMode(const FeedsImportExportModel::Mode& mode)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case FeedsImportExportModel::Import: {
|
case FeedsImportExportModel::Mode::Import: {
|
||||||
m_ui->m_groupFile->setTitle(tr("Source file"));
|
m_ui->m_groupFile->setTitle(tr("Source file"));
|
||||||
m_ui->m_groupFeeds->setTitle(tr("Target feeds && categories"));
|
m_ui->m_groupFeeds->setTitle(tr("Target feeds && categories"));
|
||||||
m_ui->m_groupFeeds->setDisabled(true);
|
m_ui->m_groupFeeds->setDisabled(true);
|
||||||
@ -77,11 +77,11 @@ void FormStandardImportExport::setMode(const FeedsImportExportModel::Mode& mode)
|
|||||||
|
|
||||||
void FormStandardImportExport::selectFile() {
|
void FormStandardImportExport::selectFile() {
|
||||||
switch (m_model->mode()) {
|
switch (m_model->mode()) {
|
||||||
case FeedsImportExportModel::Import:
|
case FeedsImportExportModel::Mode::Import:
|
||||||
selectImportFile();
|
selectImportFile();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case FeedsImportExportModel::Export: {
|
case FeedsImportExportModel::Mode::Export: {
|
||||||
selectExportFile();
|
selectExportFile();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -194,6 +194,7 @@ void FormStandardImportExport::selectImportFile() {
|
|||||||
QString(),
|
QString(),
|
||||||
QMessageBox::Yes | QMessageBox::No,
|
QMessageBox::Yes | QMessageBox::No,
|
||||||
QMessageBox::Yes);
|
QMessageBox::Yes);
|
||||||
|
|
||||||
parseImportFile(selected_file, answer == QMessageBox::Yes);
|
parseImportFile(selected_file, answer == QMessageBox::Yes);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -227,11 +228,11 @@ void FormStandardImportExport::parseImportFile(const QString& file_name, bool fe
|
|||||||
|
|
||||||
void FormStandardImportExport::performAction() {
|
void FormStandardImportExport::performAction() {
|
||||||
switch (m_model->mode()) {
|
switch (m_model->mode()) {
|
||||||
case FeedsImportExportModel::Import:
|
case FeedsImportExportModel::Mode::Import:
|
||||||
importFeeds();
|
importFeeds();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case FeedsImportExportModel::Export:
|
case FeedsImportExportModel::Mode::Export:
|
||||||
exportFeeds();
|
exportFeeds();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -16,10 +16,10 @@
|
|||||||
#include <QStack>
|
#include <QStack>
|
||||||
|
|
||||||
FeedsImportExportModel::FeedsImportExportModel(QObject* parent)
|
FeedsImportExportModel::FeedsImportExportModel(QObject* parent)
|
||||||
: AccountCheckModel(parent), m_mode(Import) {}
|
: AccountCheckModel(parent), m_mode(Mode::Import) {}
|
||||||
|
|
||||||
FeedsImportExportModel::~FeedsImportExportModel() {
|
FeedsImportExportModel::~FeedsImportExportModel() {
|
||||||
if (m_rootItem != nullptr && m_mode == Import) {
|
if (m_rootItem != nullptr && m_mode == Mode::Import) {
|
||||||
// Delete all model items, but only if we are in import mode. Export mode shares
|
// Delete all model items, but only if we are in import mode. Export mode shares
|
||||||
// root item with main feed model, thus cannot be deleted from memory now.
|
// root item with main feed model, thus cannot be deleted from memory now.
|
||||||
delete m_rootItem;
|
delete m_rootItem;
|
||||||
@ -52,10 +52,11 @@ bool FeedsImportExportModel::exportToOMPL20(QByteArray& result) {
|
|||||||
elem_opml_head.appendChild(elem_opml_created);
|
elem_opml_head.appendChild(elem_opml_created);
|
||||||
opml_document.documentElement().appendChild(elem_opml_head);
|
opml_document.documentElement().appendChild(elem_opml_head);
|
||||||
QDomElement elem_opml_body = opml_document.createElement(QSL("body"));
|
QDomElement elem_opml_body = opml_document.createElement(QSL("body"));
|
||||||
|
|
||||||
QStack<RootItem*> items_to_process;
|
QStack<RootItem*> items_to_process;
|
||||||
|
|
||||||
items_to_process.push(m_rootItem);
|
items_to_process.push(m_rootItem);
|
||||||
QStack<QDomElement> elements_to_use;
|
QStack<QDomElement> elements_to_use;
|
||||||
|
|
||||||
elements_to_use.push(elem_opml_body);
|
elements_to_use.push(elem_opml_body);
|
||||||
|
|
||||||
// Process all unprocessed nodes.
|
// Process all unprocessed nodes.
|
||||||
@ -146,10 +147,11 @@ void FeedsImportExportModel::importAsOPML20(const QByteArray& data, bool fetch_m
|
|||||||
|
|
||||||
int completed = 0, total = 0, succeded = 0, failed = 0;
|
int completed = 0, total = 0, succeded = 0, failed = 0;
|
||||||
auto* root_item = new StandardServiceRoot();
|
auto* root_item = new StandardServiceRoot();
|
||||||
|
|
||||||
QStack<RootItem*> model_items;
|
QStack<RootItem*> model_items;
|
||||||
|
|
||||||
model_items.push(root_item);
|
model_items.push(root_item);
|
||||||
QStack<QDomElement> elements_to_process;
|
QStack<QDomElement> elements_to_process;
|
||||||
|
|
||||||
elements_to_process.push(opml_document.documentElement().elementsByTagName(QSL("body")).at(0).toElement());
|
elements_to_process.push(opml_document.documentElement().elementsByTagName(QSL("body")).at(0).toElement());
|
||||||
|
|
||||||
while (!elements_to_process.isEmpty()) {
|
while (!elements_to_process.isEmpty()) {
|
||||||
@ -276,7 +278,6 @@ void FeedsImportExportModel::importAsTxtURLPerLine(const QByteArray& data, bool
|
|||||||
emit layoutChanged();
|
emit layoutChanged();
|
||||||
int completed = 0, succeded = 0, failed = 0;
|
int completed = 0, succeded = 0, failed = 0;
|
||||||
auto* root_item = new StandardServiceRoot();
|
auto* root_item = new StandardServiceRoot();
|
||||||
|
|
||||||
QList<QByteArray> urls = data.split('\n');
|
QList<QByteArray> urls = data.split('\n');
|
||||||
|
|
||||||
for (const QByteArray& url : urls) {
|
for (const QByteArray& url : urls) {
|
||||||
|
@ -9,13 +9,12 @@ class FeedsImportExportModel : public AccountCheckModel {
|
|||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
enum Mode {
|
enum class Mode {
|
||||||
Import,
|
Import,
|
||||||
Export
|
Export
|
||||||
};
|
};
|
||||||
|
|
||||||
// Constructors and destructors.
|
explicit FeedsImportExportModel(QObject* parent = nullptr);
|
||||||
explicit FeedsImportExportModel(QObject* parent = 0);
|
|
||||||
virtual ~FeedsImportExportModel();
|
virtual ~FeedsImportExportModel();
|
||||||
|
|
||||||
// Exports to OPML 2.0
|
// Exports to OPML 2.0
|
||||||
|
@ -293,14 +293,14 @@ void StandardServiceRoot::addNewCategory() {
|
|||||||
void StandardServiceRoot::importFeeds() {
|
void StandardServiceRoot::importFeeds() {
|
||||||
QScopedPointer<FormStandardImportExport> form(new FormStandardImportExport(this, qApp->mainFormWidget()));
|
QScopedPointer<FormStandardImportExport> form(new FormStandardImportExport(this, qApp->mainFormWidget()));
|
||||||
|
|
||||||
form.data()->setMode(FeedsImportExportModel::Import);
|
form.data()->setMode(FeedsImportExportModel::Mode::Import);
|
||||||
form.data()->exec();
|
form.data()->exec();
|
||||||
}
|
}
|
||||||
|
|
||||||
void StandardServiceRoot::exportFeeds() {
|
void StandardServiceRoot::exportFeeds() {
|
||||||
QScopedPointer<FormStandardImportExport> form(new FormStandardImportExport(this, qApp->mainFormWidget()));
|
QScopedPointer<FormStandardImportExport> form(new FormStandardImportExport(this, qApp->mainFormWidget()));
|
||||||
|
|
||||||
form.data()->setMode(FeedsImportExportModel::Export);
|
form.data()->setMode(FeedsImportExportModel::Mode::Export);
|
||||||
form.data()->exec();
|
form.data()->exec();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -77,7 +77,7 @@ int main(int argc, char* argv[]) {
|
|||||||
|
|
||||||
qApp->loadDynamicShortcuts();
|
qApp->loadDynamicShortcuts();
|
||||||
qApp->hideOrShowMainForm();
|
qApp->hideOrShowMainForm();
|
||||||
qApp->feedReader()->loadSaveMessageFilters();
|
qApp->feedReader()->loadSavedMessageFilters();
|
||||||
qApp->feedReader()->feedsModel()->loadActivatedServiceAccounts();
|
qApp->feedReader()->feedsModel()->loadActivatedServiceAccounts();
|
||||||
qApp->showTrayIcon();
|
qApp->showTrayIcon();
|
||||||
qApp->offerChanges();
|
qApp->offerChanges();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user