Work on syncing.
This commit is contained in:
parent
746e7aae1f
commit
a9f44bdd02
@ -148,7 +148,7 @@ void FormEditAccount::onClickedOk() {
|
|||||||
m_editableRoot->network()->setUrl(m_ui->m_txtUrl->lineEdit()->text());
|
m_editableRoot->network()->setUrl(m_ui->m_txtUrl->lineEdit()->text());
|
||||||
m_editableRoot->network()->setUsername(m_ui->m_txtUsername->lineEdit()->text());
|
m_editableRoot->network()->setUsername(m_ui->m_txtUsername->lineEdit()->text());
|
||||||
m_editableRoot->network()->setPassword(m_ui->m_txtPassword->lineEdit()->text());
|
m_editableRoot->network()->setPassword(m_ui->m_txtPassword->lineEdit()->text());
|
||||||
m_editableRoot->saveToDatabase();
|
m_editableRoot->saveAccountDataToDatabase();
|
||||||
|
|
||||||
accept();
|
accept();
|
||||||
}
|
}
|
||||||
|
@ -103,7 +103,7 @@ TtRssResponse TtRssNetworkFactory::logout(QNetworkReply::NetworkError &error) {
|
|||||||
return TtRssResponse(QString::fromUtf8(result_raw));
|
return TtRssResponse(QString::fromUtf8(result_raw));
|
||||||
}
|
}
|
||||||
|
|
||||||
TtRssGetFeedsCategoriesResponse TtRssNetworkFactory::getFeedsCategories(QNetworkReply::NetworkError &error) {
|
TtRssGetFeedsTreeResponse TtRssNetworkFactory::getFeedsTree(QNetworkReply::NetworkError &error) {
|
||||||
QtJson::JsonObject json;
|
QtJson::JsonObject json;
|
||||||
json["op"] = "getFeedTree";
|
json["op"] = "getFeedTree";
|
||||||
json["sid"] = m_sessionId;
|
json["sid"] = m_sessionId;
|
||||||
@ -111,7 +111,7 @@ TtRssGetFeedsCategoriesResponse TtRssNetworkFactory::getFeedsCategories(QNetwork
|
|||||||
|
|
||||||
QByteArray result_raw;
|
QByteArray result_raw;
|
||||||
NetworkResult network_reply = NetworkFactory::uploadData(m_url, DOWNLOAD_TIMEOUT, QtJson::serialize(json), CONTENT_TYPE, result_raw);
|
NetworkResult network_reply = NetworkFactory::uploadData(m_url, DOWNLOAD_TIMEOUT, QtJson::serialize(json), CONTENT_TYPE, result_raw);
|
||||||
TtRssGetFeedsCategoriesResponse result(QString::fromUtf8(result_raw));
|
TtRssGetFeedsTreeResponse result(QString::fromUtf8(result_raw));
|
||||||
|
|
||||||
if (result.isNotLoggedIn()) {
|
if (result.isNotLoggedIn()) {
|
||||||
// We are not logged in.
|
// We are not logged in.
|
||||||
@ -119,7 +119,7 @@ TtRssGetFeedsCategoriesResponse TtRssNetworkFactory::getFeedsCategories(QNetwork
|
|||||||
json["sid"] = m_sessionId;
|
json["sid"] = m_sessionId;
|
||||||
|
|
||||||
network_reply = NetworkFactory::uploadData(m_url, DOWNLOAD_TIMEOUT, QtJson::serialize(json), CONTENT_TYPE, result_raw);
|
network_reply = NetworkFactory::uploadData(m_url, DOWNLOAD_TIMEOUT, QtJson::serialize(json), CONTENT_TYPE, result_raw);
|
||||||
result = TtRssGetFeedsCategoriesResponse(QString::fromUtf8(result_raw));
|
result = TtRssGetFeedsTreeResponse(QString::fromUtf8(result_raw));
|
||||||
}
|
}
|
||||||
|
|
||||||
error = network_reply.first;
|
error = network_reply.first;
|
||||||
@ -203,14 +203,13 @@ bool TtRssResponse::hasError() const {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
TtRssGetFeedsCategoriesResponse::TtRssGetFeedsCategoriesResponse(const QString &raw_content) : TtRssResponse(raw_content) {
|
TtRssGetFeedsTreeResponse::TtRssGetFeedsTreeResponse(const QString &raw_content) : TtRssResponse(raw_content) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
TtRssGetFeedsCategoriesResponse::~TtRssGetFeedsCategoriesResponse() {
|
TtRssGetFeedsTreeResponse::~TtRssGetFeedsTreeResponse() {
|
||||||
}
|
}
|
||||||
|
|
||||||
RootItem *TtRssGetFeedsCategoriesResponse::feedsCategories() {
|
RootItem *TtRssGetFeedsTreeResponse::feedsTree() {
|
||||||
RootItem *parent = new RootItem();
|
RootItem *parent = new RootItem();
|
||||||
|
|
||||||
if (status() == API_STATUS_OK) {
|
if (status() == API_STATUS_OK) {
|
||||||
|
@ -53,12 +53,12 @@ class TtRssLoginResponse : public TtRssResponse {
|
|||||||
QString sessionId() const;
|
QString sessionId() const;
|
||||||
};
|
};
|
||||||
|
|
||||||
class TtRssGetFeedsCategoriesResponse : public TtRssResponse {
|
class TtRssGetFeedsTreeResponse : public TtRssResponse {
|
||||||
public:
|
public:
|
||||||
explicit TtRssGetFeedsCategoriesResponse(const QString &raw_content = QString());
|
explicit TtRssGetFeedsTreeResponse(const QString &raw_content = QString());
|
||||||
virtual ~TtRssGetFeedsCategoriesResponse();
|
virtual ~TtRssGetFeedsTreeResponse();
|
||||||
|
|
||||||
RootItem *feedsCategories();
|
RootItem *feedsTree();
|
||||||
};
|
};
|
||||||
|
|
||||||
class TtRssNetworkFactory {
|
class TtRssNetworkFactory {
|
||||||
@ -84,7 +84,7 @@ class TtRssNetworkFactory {
|
|||||||
TtRssResponse logout(QNetworkReply::NetworkError &error);
|
TtRssResponse logout(QNetworkReply::NetworkError &error);
|
||||||
|
|
||||||
// Gets feeds from the server.
|
// Gets feeds from the server.
|
||||||
TtRssGetFeedsCategoriesResponse getFeedsCategories(QNetworkReply::NetworkError &error);
|
TtRssGetFeedsTreeResponse getFeedsTree(QNetworkReply::NetworkError &error);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QString m_url;
|
QString m_url;
|
||||||
|
@ -87,7 +87,6 @@ QList<ServiceRoot*> TtRssServiceEntryPoint::initializeSubtree() {
|
|||||||
root->network()->setPassword(query.value(2).toString());
|
root->network()->setPassword(query.value(2).toString());
|
||||||
root->network()->setUrl(query.value(3).toString());
|
root->network()->setUrl(query.value(3).toString());
|
||||||
root->updateTitle();
|
root->updateTitle();
|
||||||
root->loadFromDatabase();
|
|
||||||
roots.append(root);
|
roots.append(root);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -42,6 +42,8 @@ TtRssServiceRoot::~TtRssServiceRoot() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void TtRssServiceRoot::start() {
|
void TtRssServiceRoot::start() {
|
||||||
|
loadFeedTreeFromDatabase();
|
||||||
|
|
||||||
if (childItems().isEmpty()) {
|
if (childItems().isEmpty()) {
|
||||||
syncIn();
|
syncIn();
|
||||||
}
|
}
|
||||||
@ -164,7 +166,7 @@ TtRssNetworkFactory *TtRssServiceRoot::network() const {
|
|||||||
return m_network;
|
return m_network;
|
||||||
}
|
}
|
||||||
|
|
||||||
void TtRssServiceRoot::saveToDatabase() {
|
void TtRssServiceRoot::saveAccountDataToDatabase() {
|
||||||
if (accountId() != NO_PARENT_CATEGORY) {
|
if (accountId() != NO_PARENT_CATEGORY) {
|
||||||
// We are overwritting previously saved data.
|
// We are overwritting previously saved data.
|
||||||
QSqlDatabase database = qApp->database()->connection(metaObject()->className(), DatabaseFactory::FromSettings);
|
QSqlDatabase database = qApp->database()->connection(metaObject()->className(), DatabaseFactory::FromSettings);
|
||||||
@ -209,10 +211,6 @@ void TtRssServiceRoot::saveToDatabase() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void TtRssServiceRoot::loadFromDatabase() {
|
|
||||||
// TODO: Load feeds/categories from DB.
|
|
||||||
}
|
|
||||||
|
|
||||||
void TtRssServiceRoot::updateTitle() {
|
void TtRssServiceRoot::updateTitle() {
|
||||||
QString host = QUrl(m_network->url()).host();
|
QString host = QUrl(m_network->url()).host();
|
||||||
|
|
||||||
@ -227,8 +225,34 @@ void TtRssServiceRoot::syncIn() {
|
|||||||
// TODO: provede stažení kanálů/kategorií
|
// TODO: provede stažení kanálů/kategorií
|
||||||
// ze serveru, a sloučení s aktuálními
|
// ze serveru, a sloučení s aktuálními
|
||||||
// neprovádí aktualizace kanálů ani stažení počtu nepřečtených zpráv
|
// neprovádí aktualizace kanálů ani stažení počtu nepřečtených zpráv
|
||||||
QNetworkReply::NetworkError err;
|
QNetworkReply::NetworkError error;
|
||||||
|
RootItem *new_feeds = m_network->getFeedsTree(error).feedsTree();
|
||||||
|
|
||||||
|
if (error == QNetworkReply::NoError) {
|
||||||
|
// We have new feeds, purge old and set new to DB.
|
||||||
|
removeOldFeedTree();
|
||||||
|
|
||||||
RootItem *aa = m_network->getFeedsCategories(err).feedsCategories();
|
foreach (RootItem *child, childItems()) {
|
||||||
|
requestItemRemoval(child);
|
||||||
|
}
|
||||||
|
|
||||||
|
clearChildren();
|
||||||
|
|
||||||
|
// Old stuff is gone.
|
||||||
|
storeNewFeedTree(new_feeds);
|
||||||
|
loadFeedTreeFromDatabase();
|
||||||
|
//itemChanged(QList<RootItem*>() << this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void TtRssServiceRoot::removeOldFeedTree() {
|
||||||
|
// TODO: vymazat kanaly a kategorie.
|
||||||
|
}
|
||||||
|
|
||||||
|
void TtRssServiceRoot::storeNewFeedTree(RootItem *tree_root) {
|
||||||
|
// TODO: ulozit do db.
|
||||||
|
}
|
||||||
|
|
||||||
|
void TtRssServiceRoot::loadFeedTreeFromDatabase() {
|
||||||
|
// TODO: nacist kanaly a kategorie z db
|
||||||
}
|
}
|
||||||
|
@ -66,14 +66,17 @@ class TtRssServiceRoot : public ServiceRoot {
|
|||||||
|
|
||||||
TtRssNetworkFactory *network() const;
|
TtRssNetworkFactory *network() const;
|
||||||
|
|
||||||
void saveToDatabase();
|
void saveAccountDataToDatabase();
|
||||||
void loadFromDatabase();
|
|
||||||
void updateTitle();
|
void updateTitle();
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void syncIn();
|
void syncIn();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
void removeOldFeedTree();
|
||||||
|
void storeNewFeedTree(RootItem *tree_root);
|
||||||
|
void loadFeedTreeFromDatabase();
|
||||||
|
|
||||||
QAction *m_actionSyncIn;
|
QAction *m_actionSyncIn;
|
||||||
QList<QAction*> m_serviceMenu;
|
QList<QAction*> m_serviceMenu;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user