Some preparations for #146.

This commit is contained in:
Martin Rotter 2016-01-03 11:19:23 +01:00
parent e9b3b9b798
commit 3896fbd370
11 changed files with 40 additions and 41 deletions

View file

@ -60,12 +60,19 @@ void DiscoverFeedsButton::setFeedAddresses(const QStringList &addresses) {
} }
void DiscoverFeedsButton::linkTriggered(QAction *action) { void DiscoverFeedsButton::linkTriggered(QAction *action) {
// TODO: Obtain link and root.
QString url = action->property("url").toString(); QString url = action->property("url").toString();
ServiceRoot *root = static_cast<ServiceRoot*>(action->property("root").value<void*>()); ServiceRoot *root = static_cast<ServiceRoot*>(action->property("root").value<void*>());
if (root->supportsFeedAddingByUrl()) {
root->addFeedByUrl(url); root->addFeedByUrl(url);
} }
else {
qApp->showGuiMessage(tr("Not supported"),
tr("Give account does not support adding feeds."),
QSystemTrayIcon::Warning,
qApp->mainForm(), true);
}
}
void DiscoverFeedsButton::fillMenu() { void DiscoverFeedsButton::fillMenu() {
menu()->clear(); menu()->clear();

View file

@ -19,11 +19,11 @@
#include "network-web/adblock/adblocktreewidget.h" #include "network-web/adblock/adblocktreewidget.h"
#include "network-web/adblock/adblocksubscription.h" #include "network-web/adblock/adblocksubscription.h"
#include "miscellaneous/application.h"
#include <QMenu> #include <QMenu>
#include <QKeyEvent> #include <QKeyEvent>
#include <QClipboard> #include <QClipboard>
#include <QApplication>
#include <QInputDialog> #include <QInputDialog>
@ -125,7 +125,7 @@ void AdBlockTreeWidget::copyFilter() {
QTreeWidgetItem *item = currentItem(); QTreeWidgetItem *item = currentItem();
if (item != NULL) { if (item != NULL) {
QApplication::clipboard()->setText(item->text(0)); Application::clipboard()->setText(item->text(0));
} }
} }

View file

@ -49,11 +49,9 @@ class ServiceRoot : public RootItem {
///////////////////////////////////////// /////////////////////////////////////////
bool deleteViaGui(); bool deleteViaGui();
bool markAsReadUnread(ReadStatus status); bool markAsReadUnread(ReadStatus status);
virtual bool supportsFeedAddingByUrl() const = 0; virtual bool supportsFeedAddingByUrl() const = 0;
virtual void addFeedByUrl(const QString &url) = 0;
// Returns list of specific actions for "Add new item" main window menu. // Returns list of specific actions for "Add new item" main window menu.
// So typical list of returned actions could look like: // So typical list of returned actions could look like:
@ -160,6 +158,9 @@ class ServiceRoot : public RootItem {
int accountId() const; int accountId() const;
void setAccountId(int account_id); void setAccountId(int account_id);
public slots:
virtual void addFeedByUrl(const QString &url = QString()) = 0;
protected: protected:
// Takes lists of feeds/categories and assembles them into the tree structure. // Takes lists of feeds/categories and assembles them into the tree structure.
void assembleCategories(Assignment categories); void assembleCategories(Assignment categories);

View file

@ -59,7 +59,7 @@ FormStandardFeedDetails::~FormStandardFeedDetails() {
delete m_ui; delete m_ui;
} }
int FormStandardFeedDetails::exec(StandardFeed *input_feed, RootItem *parent_to_select) { int FormStandardFeedDetails::exec(StandardFeed *input_feed, RootItem *parent_to_select, const QString &url) {
// Load categories. // Load categories.
loadCategories(m_serviceRoot->getSubTreeCategories(), m_serviceRoot); loadCategories(m_serviceRoot->getSubTreeCategories(), m_serviceRoot);
@ -90,8 +90,11 @@ int FormStandardFeedDetails::exec(StandardFeed *input_feed, RootItem *parent_to_
} }
} }
if (qApp->clipboard()->mimeData()->hasText()) { if (!url.isEmpty()) {
m_ui->m_txtUrl->lineEdit()->setText(qApp->clipboard()->text()); m_ui->m_txtUrl->lineEdit()->setText(url);
}
else if (Application::clipboard()->mimeData()->hasText()) {
m_ui->m_txtUrl->lineEdit()->setText(Application::clipboard()->text());
} }
} }
else { else {

View file

@ -42,7 +42,7 @@ class FormStandardFeedDetails : public QDialog {
public slots: public slots:
// Executes add/edit standard feed dialog. // Executes add/edit standard feed dialog.
int exec(StandardFeed *input_feed, RootItem *parent_to_select); int exec(StandardFeed *input_feed, RootItem *parent_to_select, const QString &url = QString());
protected slots: protected slots:
// Applies changes. // Applies changes.

View file

@ -130,8 +130,9 @@ bool StandardServiceRoot::supportsFeedAddingByUrl() const {
} }
void StandardServiceRoot::addFeedByUrl(const QString &url) { void StandardServiceRoot::addFeedByUrl(const QString &url) {
qApp->clipboard()->setText(url); QPointer<FormStandardFeedDetails> form_pointer = new FormStandardFeedDetails(this, qApp->mainForm());
addNewFeed(); form_pointer.data()->exec(NULL, NULL, url);
delete form_pointer.data();
} }
QVariant StandardServiceRoot::data(int column, int role) const { QVariant StandardServiceRoot::data(int column, int role) const {
@ -299,8 +300,7 @@ void StandardServiceRoot::checkArgumentsForFeedAdding() {
void StandardServiceRoot::checkArgumentForFeedAdding(const QString &argument) { void StandardServiceRoot::checkArgumentForFeedAdding(const QString &argument) {
if (argument.startsWith(QL1S("feed:"))) { if (argument.startsWith(QL1S("feed:"))) {
qApp->clipboard()->setText(argument); addFeedByUrl(argument);
addNewFeed();
} }
} }
@ -415,12 +415,6 @@ void StandardServiceRoot::addNewCategory() {
delete form_pointer.data(); delete form_pointer.data();
} }
void StandardServiceRoot::addNewFeed() {
QPointer<FormStandardFeedDetails> form_pointer = new FormStandardFeedDetails(this, qApp->mainForm());
form_pointer.data()->exec(NULL, NULL);
delete form_pointer.data();
}
void StandardServiceRoot::importFeeds() { void StandardServiceRoot::importFeeds() {
QPointer<FormStandardImportExport> form = new FormStandardImportExport(this, qApp->mainForm()); QPointer<FormStandardImportExport> form = new FormStandardImportExport(this, qApp->mainForm());
form.data()->setMode(FeedsImportExportModel::Import); form.data()->setMode(FeedsImportExportModel::Import);
@ -452,7 +446,7 @@ QList<QAction*> StandardServiceRoot::addItemMenu() {
connect(action_new_category, SIGNAL(triggered()), this, SLOT(addNewCategory())); connect(action_new_category, SIGNAL(triggered()), this, SLOT(addNewCategory()));
QAction *action_new_feed = new QAction(qApp->icons()->fromTheme("folder-feed"), tr("Add new feed"), this); QAction *action_new_feed = new QAction(qApp->icons()->fromTheme("folder-feed"), tr("Add new feed"), this);
connect(action_new_feed, SIGNAL(triggered()), this, SLOT(addNewFeed())); connect(action_new_feed, SIGNAL(triggered()), this, SLOT(addFeedByUrl()));
m_addItemMenu.append(action_new_category); m_addItemMenu.append(action_new_category);
m_addItemMenu.append(action_new_feed); m_addItemMenu.append(action_new_feed);

View file

@ -50,7 +50,6 @@ class StandardServiceRoot : public ServiceRoot {
bool markAsReadUnread(ReadStatus status); bool markAsReadUnread(ReadStatus status);
bool supportsFeedAddingByUrl() const; bool supportsFeedAddingByUrl() const;
void addFeedByUrl(const QString &url);
QVariant data(int column, int role) const; QVariant data(int column, int role) const;
Qt::ItemFlags additionalFlags() const; Qt::ItemFlags additionalFlags() const;
@ -101,8 +100,8 @@ class StandardServiceRoot : public ServiceRoot {
void checkArgumentForFeedAdding(const QString &argument); void checkArgumentForFeedAdding(const QString &argument);
public slots: public slots:
void addFeedByUrl(const QString &url = QString());
void addNewCategory(); void addNewCategory();
void addNewFeed();
void importFeeds(); void importFeeds();
void exportFeeds(); void exportFeeds();

View file

@ -55,9 +55,12 @@ int FormEditFeed::execForEdit(TtRssFeed *input_feed) {
return QDialog::exec(); return QDialog::exec();
} }
int FormEditFeed::execForAdd() { int FormEditFeed::execForAdd(const QString &url) {
if (qApp->clipboard()->mimeData()->hasText()) { if (!url.isEmpty()) {
m_ui->m_txtUrl->lineEdit()->setText(qApp->clipboard()->text()); m_ui->m_txtUrl->lineEdit()->setText(url);
}
else if (Application::clipboard()->mimeData()->hasText()) {
m_ui->m_txtUrl->lineEdit()->setText(Application::clipboard()->text());
} }
loadCategories(m_root->getSubTreeCategories(), m_root); loadCategories(m_root->getSubTreeCategories(), m_root);

View file

@ -40,7 +40,7 @@ class FormEditFeed : public QDialog {
virtual ~FormEditFeed(); virtual ~FormEditFeed();
int execForEdit(TtRssFeed *input_feed); int execForEdit(TtRssFeed *input_feed);
int execForAdd(); int execForAdd(const QString &url);
private slots: private slots:
void performAction(); void performAction();

View file

@ -114,8 +114,10 @@ bool TtRssServiceRoot::supportsFeedAddingByUrl() const {
} }
void TtRssServiceRoot::addFeedByUrl(const QString &url) { void TtRssServiceRoot::addFeedByUrl(const QString &url) {
qApp->clipboard()->setText(url); QPointer<FormEditFeed> form_pointer = new FormEditFeed(this, qApp->mainForm());
addNewFeed();
form_pointer.data()->execForAdd(url);
delete form_pointer.data();
} }
bool TtRssServiceRoot::canBeEdited() { bool TtRssServiceRoot::canBeEdited() {
@ -151,7 +153,7 @@ QVariant TtRssServiceRoot::data(int column, int role) const {
QList<QAction*> TtRssServiceRoot::addItemMenu() { QList<QAction*> TtRssServiceRoot::addItemMenu() {
if (m_addItemMenu.isEmpty()) { if (m_addItemMenu.isEmpty()) {
QAction *action_new_feed = new QAction(qApp->icons()->fromTheme("folder-feed"), tr("Add new feed"), this); QAction *action_new_feed = new QAction(qApp->icons()->fromTheme("folder-feed"), tr("Add new feed"), this);
connect(action_new_feed, SIGNAL(triggered()), this, SLOT(addNewFeed())); connect(action_new_feed, SIGNAL(triggered()), this, SLOT(addFeedByUrl()));
m_addItemMenu.append(action_new_feed); m_addItemMenu.append(action_new_feed);
} }
@ -605,13 +607,6 @@ void TtRssServiceRoot::syncIn() {
itemChanged(QList<RootItem*>() << this); itemChanged(QList<RootItem*>() << this);
} }
void TtRssServiceRoot::addNewFeed() {
QPointer<FormEditFeed> form_pointer = new FormEditFeed(this, qApp->mainForm());
form_pointer.data()->execForAdd();
delete form_pointer.data();
}
QStringList TtRssServiceRoot::customIDsOfMessages(const QList<QPair<Message,RootItem::Importance> > &changes) { QStringList TtRssServiceRoot::customIDsOfMessages(const QList<QPair<Message,RootItem::Importance> > &changes) {
QStringList list; QStringList list;

View file

@ -48,7 +48,6 @@ class TtRssServiceRoot : public ServiceRoot {
bool markAsReadUnread(ReadStatus status); bool markAsReadUnread(ReadStatus status);
bool supportsFeedAddingByUrl() const; bool supportsFeedAddingByUrl() const;
void addFeedByUrl(const QString &url);
QVariant data(int column, int role) const; QVariant data(int column, int role) const;
@ -86,11 +85,9 @@ class TtRssServiceRoot : public ServiceRoot {
void completelyRemoveAllData(); void completelyRemoveAllData();
public slots: public slots:
void addFeedByUrl(const QString &url = QString());
void syncIn(); void syncIn();
private slots:
void addNewFeed();
private: private:
QStringList customIDsOfMessages(const QList<QPair<Message,Importance> > &changes); QStringList customIDsOfMessages(const QList<QPair<Message,Importance> > &changes);
QStringList customIDsOfMessages(const QList<Message> &messages); QStringList customIDsOfMessages(const QList<Message> &messages);