diff --git a/src/librssguard/CMakeLists.txt b/src/librssguard/CMakeLists.txt index 198db9e42..31cf059d6 100644 --- a/src/librssguard/CMakeLists.txt +++ b/src/librssguard/CMakeLists.txt @@ -395,6 +395,8 @@ set(SOURCES services/standard/gui/formstandardimportexport.h services/standard/gui/standardfeeddetails.cpp services/standard/gui/standardfeeddetails.h + services/standard/gui/standardaccountdetails.cpp + services/standard/gui/standardaccountdetails.h services/standard/parsers/atomparser.cpp services/standard/parsers/atomparser.h services/standard/parsers/feedparser.cpp @@ -490,6 +492,7 @@ set(UI_FILES services/standard/gui/formdiscoverfeeds.ui services/standard/gui/formstandardimportexport.ui services/standard/gui/standardfeeddetails.ui + services/standard/gui/standardaccountdetails.ui services/tt-rss/gui/formttrssnote.ui services/tt-rss/gui/ttrssaccountdetails.ui services/tt-rss/gui/ttrssfeeddetails.ui diff --git a/src/librssguard/services/abstract/gui/accountdetails.cpp b/src/librssguard/services/abstract/gui/accountdetails.cpp index 891f084ba..cb5b4c6a6 100644 --- a/src/librssguard/services/abstract/gui/accountdetails.cpp +++ b/src/librssguard/services/abstract/gui/accountdetails.cpp @@ -1,6 +1,6 @@ // For license of this file, see /LICENSE.md. -#include "accountdetails.h" +#include "services/abstract/gui/accountdetails.h" AccountDetails::AccountDetails(QWidget* parent) : QWidget(parent) { m_ui.setupUi(this); diff --git a/src/librssguard/services/standard/gui/formeditstandardaccount.cpp b/src/librssguard/services/standard/gui/formeditstandardaccount.cpp index eb76e05a7..9c502ade0 100644 --- a/src/librssguard/services/standard/gui/formeditstandardaccount.cpp +++ b/src/librssguard/services/standard/gui/formeditstandardaccount.cpp @@ -2,14 +2,36 @@ #include "services/standard/gui/formeditstandardaccount.h" +#include "services/standard/gui/standardaccountdetails.h" #include "services/standard/standardserviceentrypoint.h" +#include "services/standard/standardserviceroot.h" FormEditStandardAccount::FormEditStandardAccount(QWidget* parent) - : FormAccountDetails(StandardServiceEntryPoint().icon(), parent) {} + : FormAccountDetails(StandardServiceEntryPoint().icon(), parent), + m_standardDetails(new StandardAccountDetails(this)) { + + insertCustomTab(m_standardDetails, tr("Account setup"), 0); + activateTab(0); +} + +void FormEditStandardAccount::loadAccountData() { + FormAccountDetails::loadAccountData(); + + if (m_creatingNew) { + m_standardDetails->m_ui.m_txtTitle->setText(StandardServiceRoot::defaultTitle()); + } + else { + m_standardDetails->m_ui.m_txtTitle->setText(m_account->title()); + } +} void FormEditStandardAccount::apply() { FormAccountDetails::apply(); + m_account->setTitle(m_standardDetails->m_ui.m_txtTitle->text()); + m_account->saveAccountDataToDatabase(); + m_account->itemChanged({m_account}); + accept(); } diff --git a/src/librssguard/services/standard/gui/formeditstandardaccount.h b/src/librssguard/services/standard/gui/formeditstandardaccount.h index 6b5081051..8acfa7306 100644 --- a/src/librssguard/services/standard/gui/formeditstandardaccount.h +++ b/src/librssguard/services/standard/gui/formeditstandardaccount.h @@ -5,14 +5,22 @@ #include "services/abstract/gui/formaccountdetails.h" +class StandardAccountDetails; + class FormEditStandardAccount : public FormAccountDetails { Q_OBJECT public: explicit FormEditStandardAccount(QWidget* parent = nullptr); + protected: + virtual void loadAccountData(); + protected slots: virtual void apply(); + + private: + StandardAccountDetails* m_standardDetails; }; #endif // FORMEDITSTANDARDACCOUNT_H diff --git a/src/librssguard/services/standard/gui/standardaccountdetails.cpp b/src/librssguard/services/standard/gui/standardaccountdetails.cpp new file mode 100644 index 000000000..01b84765c --- /dev/null +++ b/src/librssguard/services/standard/gui/standardaccountdetails.cpp @@ -0,0 +1,7 @@ +// For license of this file, see /LICENSE.md. + +#include "services/standard/gui/standardaccountdetails.h" + +StandardAccountDetails::StandardAccountDetails(QWidget* parent) : QWidget(parent) { + m_ui.setupUi(this); +} diff --git a/src/librssguard/services/standard/gui/standardaccountdetails.h b/src/librssguard/services/standard/gui/standardaccountdetails.h new file mode 100644 index 000000000..0d6f790f4 --- /dev/null +++ b/src/librssguard/services/standard/gui/standardaccountdetails.h @@ -0,0 +1,26 @@ +// For license of this file, see /LICENSE.md. + +#ifndef STANDARDACCOUNTDETAILS_H +#define STANDARDACCOUNTDETAILS_H + +#include + +#include "ui_standardaccountdetails.h" + +namespace Ui { + class StandardAccountDetails; +} + +class StandardAccountDetails : public QWidget { + Q_OBJECT + + friend class FormEditStandardAccount; + + public: + explicit StandardAccountDetails(QWidget* parent = nullptr); + + private: + Ui::StandardAccountDetails m_ui; +}; + +#endif // STANDARDACCOUNTDETAILS_H diff --git a/src/librssguard/services/standard/gui/standardaccountdetails.ui b/src/librssguard/services/standard/gui/standardaccountdetails.ui new file mode 100644 index 000000000..69e25f80a --- /dev/null +++ b/src/librssguard/services/standard/gui/standardaccountdetails.ui @@ -0,0 +1,31 @@ + + + StandardAccountDetails + + + + 0 + 0 + 400 + 300 + + + + Form + + + + + + Title + + + + + + + + + + + diff --git a/src/librssguard/services/standard/standardserviceroot.cpp b/src/librssguard/services/standard/standardserviceroot.cpp index 74e1fc474..8f1574cfc 100644 --- a/src/librssguard/services/standard/standardserviceroot.cpp +++ b/src/librssguard/services/standard/standardserviceroot.cpp @@ -39,7 +39,6 @@ #include StandardServiceRoot::StandardServiceRoot(RootItem* parent) : ServiceRoot(parent) { - setTitle(qApp->system()->loggedInUser() + QSL(" (RSS/ATOM/JSON)")); setIcon(StandardServiceEntryPoint().icon()); setDescription(tr("This is the obligatory service account for standard RSS/RDF/ATOM feeds.")); } @@ -352,6 +351,24 @@ QList StandardServiceRoot::getContextMenuForFeed(StandardFeed* feed) { return m_feedContextMenu; } +QVariantHash StandardServiceRoot::customDatabaseData() const { + QVariantHash data = ServiceRoot::customDatabaseData(); + + data[QSL("title")] = title(); + + return data; +} + +void StandardServiceRoot::setCustomDatabaseData(const QVariantHash& data) { + ServiceRoot::setCustomDatabaseData(data); + + setTitle(data.value(QSL("title"), defaultTitle()).toString()); +} + +QString StandardServiceRoot::defaultTitle() { + return qApp->system()->loggedInUser() + QSL(" (RSS/ATOM/JSON)"); +} + bool StandardServiceRoot::mergeImportExportModel(FeedsImportExportModel* model, RootItem* target_root_node, QString& output_message) { diff --git a/src/librssguard/services/standard/standardserviceroot.h b/src/librssguard/services/standard/standardserviceroot.h index 1d9ae0462..57d22dd8d 100644 --- a/src/librssguard/services/standard/standardserviceroot.h +++ b/src/librssguard/services/standard/standardserviceroot.h @@ -34,6 +34,8 @@ class StandardServiceRoot : public ServiceRoot { virtual bool supportsFeedAdding() const; virtual bool supportsCategoryAdding() const; virtual Qt::ItemFlags additionalFlags() const; + virtual QVariantHash customDatabaseData() const; + virtual void setCustomDatabaseData(const QVariantHash& data); virtual QList obtainNewMessages(Feed* feed, const QHash& stated_messages, const QHash& tagged_messages); @@ -41,6 +43,8 @@ class StandardServiceRoot : public ServiceRoot { QList serviceMenu(); QList getContextMenuForFeed(StandardFeed* feed); + static QString defaultTitle(); + public slots: void addNewFeed(RootItem* selected_item, const QString& url = QString()); void addNewCategory(RootItem* selected_item);