Adding of feeds could work.

This commit is contained in:
Martin Rotter 2015-12-22 08:58:55 +01:00
parent 284768c93f
commit 0f5f224db8
7 changed files with 22 additions and 101 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

View File

@ -18,13 +18,18 @@
#include "services/tt-rss/gui/formeditfeed.h"
#include "services/abstract/category.h"
#include "services/tt-rss/definitions.h"
#include "services/tt-rss/ttrssfeed.h"
#include "services/tt-rss/ttrsscategory.h"
#include "services/tt-rss/ttrssserviceroot.h"
#include "services/tt-rss/network/ttrssnetworkfactory.h"
#include "gui/dialogs/formmain.h"
#include "miscellaneous/iconfactory.h"
#include "miscellaneous/application.h"
#include <QClipboard>
#include <QMimeData>
#include <QTimer>
FormEditFeed::FormEditFeed(TtRssServiceRoot *root, QWidget *parent)
@ -198,22 +203,30 @@ void FormEditFeed::saveFeed() {
}
void FormEditFeed::addNewFeed() {
TtRssFeed *new_feed= new TtRssFeed();
RootItem *parent = static_cast<RootItem*>(m_ui->m_cmbParentCategory->itemData(m_ui->m_cmbParentCategory->currentIndex()).value<void*>());
TtRssServiceRoot *root = parent->kind() == RootItemKind::Category ?
qobject_cast<TtRssCategory*>(parent)->serviceRoot() :
qobject_cast<TtRssServiceRoot*>(parent);
int category_id = parent->kind() == RootItemKind::ServiceRoot ?
0 :
qobject_cast<TtRssCategory*>(parent)->customId();
TtRssSubscribeToFeedResponse response = root->network()->subscribeToFeed(m_ui->m_txtUrl->lineEdit()->text(),
category_id,
m_ui->m_gbAuthentication->isChecked(),
m_ui->m_txtUsername->lineEdit()->text(),
m_ui->m_txtPassword->lineEdit()->text());
new_feed->setAutoUpdateType(static_cast<Feed::AutoUpdateType>(m_ui->m_cmbAutoUpdateType->itemData(m_ui->m_cmbAutoUpdateType->currentIndex()).toInt()));
new_feed->setAutoUpdateInitialInterval(m_ui->m_spinAutoUpdateInterval->value());
if (new_feed->addItself(parent, m_ui->m_txtUrl->lineEdit()->text(), m_ui->m_gbAuthentication->isChecked(),
m_ui->m_txtUsername->lineEdit()->text(), m_ui->m_txtPassword->lineEdit()->text())) {
m_root->requestItemReassignment(new_feed, parent);
if (response.code() == STF_INSERTED || response.code() == STF_UPDATED) {
// Feed was added online.
accept();
qApp->showGuiMessage(tr("Feed added"), tr("Feed was added, triggering sync in now."), QSystemTrayIcon::Information);
QTimer::singleShot(100, root, SLOT(syncIn()));
}
else {
delete new_feed;
reject();
qApp->showGuiMessage(tr("Cannot add feed"),
tr("Feed was not added due to error."),
QSystemTrayIcon::Critical, this, true);
QSystemTrayIcon::Critical, qApp->mainForm(), true);
}
}

View File

@ -267,35 +267,6 @@ TtRssSubscribeToFeedResponse TtRssNetworkFactory::subscribeToFeed(const QString
return result;
}
TtRssGetFeedsResponse TtRssNetworkFactory::getFeeds(int category_id) {
QtJson::JsonObject json;
json["op"] = "getFeeds";
json["sid"] = m_sessionId;
json["cat_id"] = category_id;
QByteArray result_raw;
NetworkResult network_reply = NetworkFactory::uploadData(m_url, DOWNLOAD_TIMEOUT, QtJson::serialize(json), CONTENT_TYPE, result_raw,
m_authIsUsed, m_authUsername, m_authPassword);
TtRssGetFeedsResponse result(QString::fromUtf8(result_raw));
if (result.isNotLoggedIn()) {
// We are not logged in.
login();
json["sid"] = m_sessionId;
network_reply = NetworkFactory::uploadData(m_url, DOWNLOAD_TIMEOUT, QtJson::serialize(json), CONTENT_TYPE, result_raw,
m_authIsUsed, m_authUsername, m_authPassword);
result = TtRssGetFeedsResponse(QString::fromUtf8(result_raw));
}
if (network_reply.first != QNetworkReply::NoError) {
qWarning("TT-RSS: getFeeds failed with error %d.", network_reply.first);
}
m_lastError = network_reply.first;
return result;
}
TtRssUnsubscribeFeedResponse TtRssNetworkFactory::unsubscribeFeed(int feed_id) {
QtJson::JsonObject json;
json["op"] = "unsubscribeFeed";
@ -668,27 +639,3 @@ QString TtRssUnsubscribeFeedResponse::code() const {
return QString();
}
TtRssGetFeedsResponse::TtRssGetFeedsResponse(const QString &raw_content) {
}
TtRssGetFeedsResponse::~TtRssGetFeedsResponse() {
}
QList<TtRssFeed*> TtRssGetFeedsResponse::feeds() const {
QList<TtRssFeed*> feeds;
foreach (QVariant feed_var, m_rawContent["content"].toList()) {
QVariantMap feed_map = feed_var.toMap();
TtRssFeed *feed = new TtRssFeed();
feed->setTitle(feed_map["title"].toString());
feed->setUrl(feed_map["feed_url"].toString());
feed->setCustomId(feed_map["id"].toInt());
feeds.append(feed);
}
return feeds;
}

View File

@ -100,15 +100,6 @@ class TtRssUnsubscribeFeedResponse : public TtRssResponse {
QString code() const;
};
class TtRssGetFeedsResponse : public TtRssResponse {
public:
explicit TtRssGetFeedsResponse(const QString &raw_content = QString());
virtual ~TtRssGetFeedsResponse();
QList<TtRssFeed*> feeds() const;
};
/*
class TtRssGetConfigResponse : public TtRssResponse {
public:
@ -185,8 +176,6 @@ class TtRssNetworkFactory {
TtRssSubscribeToFeedResponse subscribeToFeed(const QString &url, int category_id, bool protectd = false,
const QString &username = QString(), const QString &password = QString());
TtRssGetFeedsResponse getFeeds(int category_id);
TtRssUnsubscribeFeedResponse unsubscribeFeed(int feed_id);
//TtRssGetConfigResponse getConfig();

View File

@ -238,32 +238,6 @@ void TtRssFeed::setCustomId(int custom_id) {
m_customId = custom_id;
}
bool TtRssFeed::addItself(RootItem *parent, const QString &url, bool protectd,
const QString &username, const QString &password) {
TtRssServiceRoot *root = parent->kind() == RootItemKind::Category ?
qobject_cast<TtRssCategory*>(parent)->serviceRoot() :
qobject_cast<TtRssServiceRoot*>(parent);
int category_id = parent->kind() == RootItemKind::ServiceRoot ?
0 :
qobject_cast<TtRssCategory*>(parent)->customId();
TtRssSubscribeToFeedResponse response = root->network()->subscribeToFeed(url, category_id, protectd, username, password);
if (response.code() == STF_INSERTED || response.code() == STF_UPDATED) {
// Feed added on TT-RSS server, get its ID.
// TODO: ted potrebujeme vyplnit customID toho přidaného kanálu
// asi přes getFeeds
// TODO: todo
return true;
}
else {
return false;
}
}
bool TtRssFeed::editItself(TtRssFeed *new_feed_data) {
QSqlDatabase database = qApp->database()->connection("aa", DatabaseFactory::FromSettings);
QSqlQuery query_update(database);

View File

@ -54,8 +54,6 @@ class TtRssFeed : public Feed {
int customId() const;
void setCustomId(int custom_id);
bool addItself(RootItem *parent, const QString &url, bool protectd = false,
const QString &username = QString(), const QString &password = QString());
bool editItself(TtRssFeed *new_feed_data);
private: