Working adding of inoreader acc.

This commit is contained in:
Martin Rotter 2017-09-22 12:34:37 +02:00
parent 6dde6928f6
commit d4d186b951
8 changed files with 56 additions and 8 deletions

View file

@ -22,6 +22,8 @@
#include "miscellaneous/iconfactory.h" #include "miscellaneous/iconfactory.h"
#include "miscellaneous/textfactory.h" #include "miscellaneous/textfactory.h"
#include "services/abstract/category.h" #include "services/abstract/category.h"
#include "services/inoreader/inoreaderserviceroot.h"
#include "services/inoreader/network/inoreadernetworkfactory.h"
#include "services/owncloud/definitions.h" #include "services/owncloud/definitions.h"
#include "services/owncloud/network/owncloudnetworkfactory.h" #include "services/owncloud/network/owncloudnetworkfactory.h"
#include "services/owncloud/owncloudfeed.h" #include "services/owncloud/owncloudfeed.h"
@ -1480,6 +1482,40 @@ Assignment DatabaseQueries::getCategories(QSqlDatabase db, int account_id, bool*
return categories; return categories;
} }
QList<ServiceRoot*> DatabaseQueries::getInoreaderAccounts(QSqlDatabase db, bool* ok) {
QSqlQuery query(db);
QList<ServiceRoot*> roots;
if (query.exec("SELECT * FROM InoreaderAccounts;")) {
while (query.next()) {
InoreaderServiceRoot* root = new InoreaderServiceRoot(nullptr);
root->setId(query.value(0).toInt());
root->setAccountId(query.value(0).toInt());
root->network()->setUsername(query.value(1).toString());
root->network()->setAccessToken(query.value(2).toString());
root->network()->setRefreshToken(query.value(3).toString());
root->network()->setBatchSize(query.value(4).toInt());
root->updateTitle();
roots.append(root);
}
if (ok != nullptr) {
*ok = true;
}
}
else {
qWarning("Inoreader: Getting list of activated accounts failed: '%s'.", qPrintable(query.lastError().text()));
if (ok != nullptr) {
*ok = false;
}
}
return roots;
}
bool DatabaseQueries::overwriteInoreaderAccount(QSqlDatabase db, const QString& username, const QString& access_token, bool DatabaseQueries::overwriteInoreaderAccount(QSqlDatabase db, const QString& username, const QString& access_token,
const QString& refresh_token, int batch_size, int account_id) { const QString& refresh_token, int batch_size, int account_id) {
QSqlQuery query(db); QSqlQuery query(db);

View file

@ -79,6 +79,7 @@ class DatabaseQueries {
static Assignment getCategories(QSqlDatabase db, int account_id, bool* ok = nullptr); static Assignment getCategories(QSqlDatabase db, int account_id, bool* ok = nullptr);
// Inoreader account. // Inoreader account.
static QList<ServiceRoot*> getInoreaderAccounts(QSqlDatabase db, bool* ok = nullptr);
static bool overwriteInoreaderAccount(QSqlDatabase db, const QString& username, const QString& access_token, static bool overwriteInoreaderAccount(QSqlDatabase db, const QString& username, const QString& access_token,
const QString& refresh_token, int batch_size, int account_id); const QString& refresh_token, int batch_size, int account_id);
static bool createInoreaderAccount(QSqlDatabase db, int id_to_assign, const QString& username, static bool createInoreaderAccount(QSqlDatabase db, int id_to_assign, const QString& username,

View file

@ -91,6 +91,10 @@ void FormEditInoreaderAccount::onClickedOk() {
editing_account = false; editing_account = false;
} }
if (m_editableRoot->network()->userName().isEmpty()) {
m_editableRoot->network()->setUsername(tr("uknown"));
}
m_editableRoot->network()->setBatchSize(m_ui.m_spinLimitMessages->value()); m_editableRoot->network()->setBatchSize(m_ui.m_spinLimitMessages->value());
m_editableRoot->saveAccountDataToDatabase(); m_editableRoot->saveAccountDataToDatabase();
accept(); accept();

View file

@ -34,7 +34,9 @@ ServiceRoot* InoreaderEntryPoint::createNewRoot() const {
} }
QList<ServiceRoot*> InoreaderEntryPoint::initializeSubtree() const { QList<ServiceRoot*> InoreaderEntryPoint::initializeSubtree() const {
return QList<ServiceRoot*>(); QSqlDatabase database = qApp->database()->connection(QSL("InoreaderEntryPoint"), DatabaseFactory::FromSettings);
return DatabaseQueries::getInoreaderAccounts(database);
} }
bool InoreaderEntryPoint::isSingleInstanceService() const { bool InoreaderEntryPoint::isSingleInstanceService() const {

View file

@ -32,19 +32,21 @@ InoreaderServiceRoot::InoreaderServiceRoot(InoreaderNetworkFactory* network, Roo
else { else {
m_network->setParent(this); m_network->setParent(this);
} }
setIcon(InoreaderEntryPoint().icon());
} }
InoreaderServiceRoot::~InoreaderServiceRoot() {} InoreaderServiceRoot::~InoreaderServiceRoot() {}
void InoreaderServiceRoot::updateTitle() { void InoreaderServiceRoot::updateTitle() {
setTitle(m_network->username() + QSL(" (Inoreader)")); setTitle(m_network->userName() + QSL(" (Inoreader)"));
} }
void InoreaderServiceRoot::saveAccountDataToDatabase() { void InoreaderServiceRoot::saveAccountDataToDatabase() {
QSqlDatabase database = qApp->database()->connection(metaObject()->className(), DatabaseFactory::FromSettings); QSqlDatabase database = qApp->database()->connection(metaObject()->className(), DatabaseFactory::FromSettings);
if (accountId() != NO_PARENT_CATEGORY) { if (accountId() != NO_PARENT_CATEGORY) {
if (DatabaseQueries::overwriteInoreaderAccount(database, m_network->username(), m_network->accessToken(), if (DatabaseQueries::overwriteInoreaderAccount(database, m_network->userName(), m_network->accessToken(),
m_network->refreshToken(), m_network->batchSize(), m_network->refreshToken(), m_network->batchSize(),
accountId())) { accountId())) {
updateTitle(); updateTitle();
@ -57,7 +59,7 @@ void InoreaderServiceRoot::saveAccountDataToDatabase() {
if (saved) { if (saved) {
if (DatabaseQueries::createInoreaderAccount(database, id_to_assign, if (DatabaseQueries::createInoreaderAccount(database, id_to_assign,
m_network->username(), m_network->accessToken(), m_network->userName(), m_network->accessToken(),
m_network->refreshToken(), m_network->batchSize())) { m_network->refreshToken(), m_network->batchSize())) {
setId(id_to_assign); setId(id_to_assign);
setAccountId(id_to_assign); setAccountId(id_to_assign);

View file

@ -45,8 +45,6 @@ class InoreaderServiceRoot : public ServiceRoot {
public slots: public slots:
void addNewFeed(const QString& url); void addNewFeed(const QString& url);
void addNewCategory(); void addNewCategory();
private slots:
void updateTitle(); void updateTitle();
private: private:

View file

@ -38,7 +38,7 @@ bool InoreaderNetworkFactory::isLoggedIn() const {
return m_oauth2->expirationAt() > QDateTime::currentDateTime() && m_oauth2->status() == QAbstractOAuth::Status::Granted; return m_oauth2->expirationAt() > QDateTime::currentDateTime() && m_oauth2->status() == QAbstractOAuth::Status::Granted;
} }
QString InoreaderNetworkFactory::username() const { QString InoreaderNetworkFactory::userName() const {
return m_username; return m_username;
} }
@ -122,6 +122,10 @@ void InoreaderNetworkFactory::initializeOauth() {
}); });
} }
void InoreaderNetworkFactory::setUsername(const QString& username) {
m_username = username;
}
void InoreaderNetworkFactory::setRefreshToken(const QString& refreshToken) { void InoreaderNetworkFactory::setRefreshToken(const QString& refreshToken) {
m_refreshToken = refreshToken; m_refreshToken = refreshToken;
} }

View file

@ -31,7 +31,8 @@ class InoreaderNetworkFactory : public QObject {
bool isLoggedIn() const; bool isLoggedIn() const;
QString username() const; QString userName() const;
void setUsername(const QString& username);
// Gets/sets the amount of messages to obtain during single feed update. // Gets/sets the amount of messages to obtain during single feed update.
int batchSize() const; int batchSize() const;