diff --git a/src/services/inoreader/gui/formeditinoreaderaccount.cpp b/src/services/inoreader/gui/formeditinoreaderaccount.cpp index 4f1d81578..a8e89753f 100755 --- a/src/services/inoreader/gui/formeditinoreaderaccount.cpp +++ b/src/services/inoreader/gui/formeditinoreaderaccount.cpp @@ -32,6 +32,11 @@ FormEditInoreaderAccount::FormEditInoreaderAccount(QWidget* parent) : QDialog(pa tr("Not tested yet."), tr("Not tested yet.")); m_ui.m_lblTestResult->label()->setWordWrap(true); + m_ui.m_txtUsername->lineEdit()->setPlaceholderText(tr("User-visible username")); + + setTabOrder(m_ui.m_txtUsername->lineEdit(), m_ui.m_spinLimitMessages); + setTabOrder(m_ui.m_spinLimitMessages, m_ui.m_btnTestSetup); + setTabOrder(m_ui.m_btnTestSetup, m_ui.m_buttonBox); connect(m_ui.m_spinLimitMessages, static_cast(&QSpinBox::valueChanged), [=](int value) { if (value <= 0) { @@ -41,10 +46,14 @@ FormEditInoreaderAccount::FormEditInoreaderAccount(QWidget* parent) : QDialog(pa m_ui.m_spinLimitMessages->setSuffix(QSL(" ") + tr("messages")); } }); - - m_ui.m_spinLimitMessages->setValue(INOREADER_DEFAULT_BATCH_SIZE); - m_ui.m_spinLimitMessages->setMinimum(INOREADER_UNLIMITED_BATCH_SIZE); - + connect(m_ui.m_txtUsername->lineEdit(), &BaseLineEdit::textChanged, [this](QString text) { + if (text.isEmpty()) { + m_ui.m_txtUsername->setStatus(WidgetWithStatus::StatusType::Error, tr("No username entered.")); + } + else { + m_ui.m_txtUsername->setStatus(WidgetWithStatus::StatusType::Ok, tr("Some username entered.")); + } + }); connect(m_ui.m_btnTestSetup, &QPushButton::clicked, this, &FormEditInoreaderAccount::testSetup); connect(m_ui.m_buttonBox, &QDialogButtonBox::accepted, this, &FormEditInoreaderAccount::onClickedOk); connect(m_ui.m_buttonBox, &QDialogButtonBox::rejected, this, &FormEditInoreaderAccount::onClickedCancel); @@ -63,6 +72,9 @@ FormEditInoreaderAccount::FormEditInoreaderAccount(QWidget* parent) : QDialog(pa tr("There is error. %1").arg(err), tr("There was error during testing.")); }); + + m_ui.m_spinLimitMessages->setValue(INOREADER_DEFAULT_BATCH_SIZE); + m_ui.m_spinLimitMessages->setMinimum(INOREADER_UNLIMITED_BATCH_SIZE); } FormEditInoreaderAccount::~FormEditInoreaderAccount() {} @@ -91,10 +103,7 @@ void FormEditInoreaderAccount::onClickedOk() { editing_account = false; } - if (m_editableRoot->network()->userName().isEmpty()) { - m_editableRoot->network()->setUsername(tr("uknown")); - } - + m_editableRoot->network()->setUsername(m_ui.m_txtUsername->lineEdit()->text()); m_editableRoot->network()->setBatchSize(m_ui.m_spinLimitMessages->value()); m_editableRoot->saveAccountDataToDatabase(); accept(); @@ -114,3 +123,11 @@ InoreaderServiceRoot* FormEditInoreaderAccount::execForCreate() { exec(); return m_editableRoot; } + +void FormEditInoreaderAccount::execForEdit(InoreaderServiceRoot* existing_root) { + setWindowTitle(tr("Edit existing Inoreader account")); + m_editableRoot = existing_root; + m_ui.m_txtUsername->lineEdit()->setText(existing_root->network()->userName()); + m_ui.m_spinLimitMessages->setValue(existing_root->network()->batchSize()); + exec(); +} diff --git a/src/services/inoreader/gui/formeditinoreaderaccount.h b/src/services/inoreader/gui/formeditinoreaderaccount.h index 82f2881f2..186be5da5 100755 --- a/src/services/inoreader/gui/formeditinoreaderaccount.h +++ b/src/services/inoreader/gui/formeditinoreaderaccount.h @@ -40,6 +40,8 @@ class FormEditInoreaderAccount : public QDialog { InoreaderServiceRoot* execForCreate(); + void execForEdit(InoreaderServiceRoot* existing_root); + private slots: void testSetup(); void onClickedOk(); diff --git a/src/services/inoreader/gui/formeditinoreaderaccount.ui b/src/services/inoreader/gui/formeditinoreaderaccount.ui index b624e4acb..5bae86d9c 100755 --- a/src/services/inoreader/gui/formeditinoreaderaccount.ui +++ b/src/services/inoreader/gui/formeditinoreaderaccount.ui @@ -6,8 +6,8 @@ 0 0 - 400 - 180 + 377 + 211 @@ -15,35 +15,59 @@ - + - Only download newest X messages per feed - - - - - - - - 140 - 16777215 - - - - = unlimited - - - -1 - - - 1000 - - - -1 + Username + + + + + Only download newest X messages per feed + + + + + + + + 140 + 16777215 + + + + = unlimited + + + -1 + + + 1000 + + + -1 + + + + + + + + + Qt::Vertical + + + + 20 + 120 + + + + + @@ -67,7 +91,7 @@ - + Qt::Horizontal @@ -77,18 +101,8 @@ - - - - Qt::Vertical - - - - 20 - 90 - - - + + @@ -99,6 +113,12 @@
labelwithstatus.h
1 + + LineEditWithStatus + QWidget +
lineeditwithstatus.h
+ 1 +
m_spinLimitMessages diff --git a/src/services/inoreader/inoreaderserviceroot.cpp b/src/services/inoreader/inoreaderserviceroot.cpp index 66b60ef78..8100ff688 100755 --- a/src/services/inoreader/inoreaderserviceroot.cpp +++ b/src/services/inoreader/inoreaderserviceroot.cpp @@ -21,6 +21,7 @@ #include "miscellaneous/application.h" #include "miscellaneous/databasequeries.h" +#include "services/inoreader/gui/formeditinoreaderaccount.h" #include "services/inoreader/inoreaderentrypoint.h" #include "services/inoreader/network/inoreadernetworkfactory.h" @@ -69,6 +70,17 @@ void InoreaderServiceRoot::saveAccountDataToDatabase() { } } +bool InoreaderServiceRoot::canBeEdited() const { + return true; +} + +bool InoreaderServiceRoot::editViaGui() { + FormEditInoreaderAccount form_pointer(qApp->mainFormWidget()); + + form_pointer.execForEdit(this); + return true; +} + bool InoreaderServiceRoot::supportsFeedAdding() const { return true; } diff --git a/src/services/inoreader/inoreaderserviceroot.h b/src/services/inoreader/inoreaderserviceroot.h index 70ddaf554..986593966 100755 --- a/src/services/inoreader/inoreaderserviceroot.h +++ b/src/services/inoreader/inoreaderserviceroot.h @@ -36,6 +36,8 @@ class InoreaderServiceRoot : public ServiceRoot { void setNetwork(InoreaderNetworkFactory* network); InoreaderNetworkFactory* network() const; + bool canBeEdited() const; + bool editViaGui(); bool supportsFeedAdding() const; bool supportsCategoryAdding() const; void start(bool freshly_activated);