Experimental adding/removing of standard account.
This commit is contained in:
parent
84fed7c4ce
commit
51e9d80fbc
|
@ -687,6 +687,9 @@ void FeedsModel::reloadWholeLayout() {
|
||||||
bool FeedsModel::addServiceAccount(ServiceRoot *root) {
|
bool FeedsModel::addServiceAccount(ServiceRoot *root) {
|
||||||
m_rootItem->appendChild(root);
|
m_rootItem->appendChild(root);
|
||||||
|
|
||||||
|
// Item add, reload da shit.
|
||||||
|
reloadWholeLayout();
|
||||||
|
|
||||||
// Connect.
|
// Connect.
|
||||||
connect(root, SIGNAL(readFeedsFilterInvalidationRequested()), this, SIGNAL(readFeedsFilterInvalidationRequested()));
|
connect(root, SIGNAL(readFeedsFilterInvalidationRequested()), this, SIGNAL(readFeedsFilterInvalidationRequested()));
|
||||||
connect(root, SIGNAL(dataChanged(QList<RootItem*>)), this, SLOT(onItemDataChanged(QList<RootItem*>)));
|
connect(root, SIGNAL(dataChanged(QList<RootItem*>)), this, SLOT(onItemDataChanged(QList<RootItem*>)));
|
||||||
|
|
|
@ -39,6 +39,7 @@ FormAddAccount::FormAddAccount(const QList<ServiceEntryPoint*> &entry_points, Fe
|
||||||
MessageBox::iconify(m_ui->m_buttonBox);
|
MessageBox::iconify(m_ui->m_buttonBox);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
connect(m_ui->m_buttonBox, SIGNAL(accepted()), this, SLOT(addSelectedAccount()));
|
||||||
connect(m_ui->m_listEntryPoints, SIGNAL(itemSelectionChanged()), this, SLOT(displayActiveEntryPointDetails()));
|
connect(m_ui->m_listEntryPoints, SIGNAL(itemSelectionChanged()), this, SLOT(displayActiveEntryPointDetails()));
|
||||||
loadEntryPoints();
|
loadEntryPoints();
|
||||||
}
|
}
|
||||||
|
@ -47,27 +48,43 @@ FormAddAccount::~FormAddAccount() {
|
||||||
delete m_ui;
|
delete m_ui;
|
||||||
}
|
}
|
||||||
|
|
||||||
void FormAddAccount::displayActiveEntryPointDetails() {
|
void FormAddAccount::addSelectedAccount() {
|
||||||
QList<QListWidgetItem*> selected_items = m_ui->m_listEntryPoints->selectedItems();
|
accept();
|
||||||
|
|
||||||
if (!selected_items.isEmpty()) {
|
ServiceEntryPoint *point = selectedEntryPoint();
|
||||||
ServiceEntryPoint *point = static_cast<ServiceEntryPoint*>(selected_items.at(0)->data(Qt::UserRole).value<void*>());
|
ServiceRoot *new_root = point->createNewRoot(m_model);
|
||||||
|
|
||||||
|
if (new_root != NULL) {
|
||||||
|
m_model->addServiceAccount(new_root);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
qApp->showGuiMessage(tr("Cannot add account"),
|
||||||
|
tr("Some critical error occurred, report this to developers."),
|
||||||
|
QSystemTrayIcon::Critical, parentWidget(), true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void FormAddAccount::displayActiveEntryPointDetails() {
|
||||||
|
ServiceEntryPoint *point = selectedEntryPoint();
|
||||||
|
|
||||||
m_ui->m_txtAuthor->setText(point->author());
|
m_ui->m_txtAuthor->setText(point->author());
|
||||||
m_ui->m_txtDescription->setText(point->description());
|
m_ui->m_txtDescription->setText(point->description());
|
||||||
m_ui->m_txtName->setText(point->name());
|
m_ui->m_txtName->setText(point->name());
|
||||||
m_ui->m_txtVersion->setText(point->version());
|
m_ui->m_txtVersion->setText(point->version());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ServiceEntryPoint *FormAddAccount::selectedEntryPoint() {
|
||||||
|
return m_entryPoints.at(m_ui->m_listEntryPoints->currentRow());
|
||||||
}
|
}
|
||||||
|
|
||||||
void FormAddAccount::loadEntryPoints() {
|
void FormAddAccount::loadEntryPoints() {
|
||||||
foreach (ServiceEntryPoint *entry_point, m_entryPoints) {
|
foreach (ServiceEntryPoint *entry_point, m_entryPoints) {
|
||||||
QListWidgetItem *item = new QListWidgetItem(entry_point->icon(), entry_point->name(), m_ui->m_listEntryPoints);
|
QListWidgetItem *item = new QListWidgetItem(entry_point->icon(), entry_point->name(), m_ui->m_listEntryPoints);
|
||||||
item->setData(Qt::UserRole, QVariant::fromValue((void*) entry_point));
|
|
||||||
|
|
||||||
if (entry_point->isSingleInstanceService() && m_model->containsServiceRootFromEntryPoint(entry_point)) {
|
if (entry_point->isSingleInstanceService() && m_model->containsServiceRootFromEntryPoint(entry_point)) {
|
||||||
// Oops, this item cannot be added, it is single instance and is already added.
|
// Oops, this item cannot be added, it is single instance and is already added.
|
||||||
item->setFlags(Qt::NoItemFlags);
|
item->setFlags(Qt::NoItemFlags);
|
||||||
|
item->setToolTip(tr("This account can be added only once."));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -38,9 +38,11 @@ class FormAddAccount : public QDialog {
|
||||||
virtual ~FormAddAccount();
|
virtual ~FormAddAccount();
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
|
void addSelectedAccount();
|
||||||
void displayActiveEntryPointDetails();
|
void displayActiveEntryPointDetails();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
ServiceEntryPoint *selectedEntryPoint();
|
||||||
void loadEntryPoints();
|
void loadEntryPoints();
|
||||||
|
|
||||||
Ui::FormAddAccount *m_ui;
|
Ui::FormAddAccount *m_ui;
|
||||||
|
|
|
@ -33,6 +33,13 @@ class ServiceEntryPoint {
|
||||||
explicit ServiceEntryPoint();
|
explicit ServiceEntryPoint();
|
||||||
virtual ~ServiceEntryPoint();
|
virtual ~ServiceEntryPoint();
|
||||||
|
|
||||||
|
// Creates new service root item, which is ready to be added
|
||||||
|
// into the model. This method can for example display
|
||||||
|
// some kind of first-time configuration dialog inside itself
|
||||||
|
// before returning the root item.
|
||||||
|
// Returns NULL if initialization of new root cannot be done.
|
||||||
|
virtual ServiceRoot *createNewRoot(FeedsModel *main_model) = 0;
|
||||||
|
|
||||||
// Performs initialization of all service accounts created using this entry
|
// Performs initialization of all service accounts created using this entry
|
||||||
// point from persistent DB.
|
// point from persistent DB.
|
||||||
// Returns list of root nodes which will be afterwards added
|
// Returns list of root nodes which will be afterwards added
|
||||||
|
|
|
@ -22,6 +22,8 @@
|
||||||
#include "miscellaneous/application.h"
|
#include "miscellaneous/application.h"
|
||||||
#include "services/standard/standardserviceroot.h"
|
#include "services/standard/standardserviceroot.h"
|
||||||
|
|
||||||
|
#include <QSqlQuery>
|
||||||
|
|
||||||
|
|
||||||
StandardServiceEntryPoint::StandardServiceEntryPoint() {
|
StandardServiceEntryPoint::StandardServiceEntryPoint() {
|
||||||
}
|
}
|
||||||
|
@ -57,10 +59,31 @@ QString StandardServiceEntryPoint::code() {
|
||||||
return SERVICE_CODE_STD_RSS;
|
return SERVICE_CODE_STD_RSS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ServiceRoot *StandardServiceEntryPoint::createNewRoot(FeedsModel *main_model) {
|
||||||
|
// Switch DB.
|
||||||
|
QSqlDatabase database = qApp->database()->connection(QSL("StandardServiceEntryPoint"), DatabaseFactory::FromSettings);
|
||||||
|
QSqlQuery query(database);
|
||||||
|
|
||||||
|
if (query.exec(QSL("UPDATE Information SET inf_value = 1 WHERE inf_key = 'standard_account_enabled';"))) {
|
||||||
|
return new StandardServiceRoot(true, main_model);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
QList<ServiceRoot*> StandardServiceEntryPoint::initializeSubtree(FeedsModel *main_model) {
|
QList<ServiceRoot*> StandardServiceEntryPoint::initializeSubtree(FeedsModel *main_model) {
|
||||||
StandardServiceRoot *root = new StandardServiceRoot(true, main_model);
|
// Check DB if standard account is enabled.
|
||||||
|
QSqlDatabase database = qApp->database()->connection(QSL("StandardServiceEntryPoint"), DatabaseFactory::FromSettings);
|
||||||
|
QSqlQuery query(database);
|
||||||
QList<ServiceRoot*> roots;
|
QList<ServiceRoot*> roots;
|
||||||
|
|
||||||
|
if (query.exec(QSL("SELECT inf_value FROM Information WHERE inf_key = 'standard_account_enabled';"))) {
|
||||||
|
if (query.next() && query.value(0).toInt() == 1) {
|
||||||
|
StandardServiceRoot *root = new StandardServiceRoot(true, main_model);
|
||||||
roots.append(root);
|
roots.append(root);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return roots;
|
return roots;
|
||||||
}
|
}
|
||||||
|
|
|
@ -34,6 +34,7 @@ class StandardServiceEntryPoint : public ServiceEntryPoint {
|
||||||
QIcon icon();
|
QIcon icon();
|
||||||
QString code();
|
QString code();
|
||||||
|
|
||||||
|
ServiceRoot *createNewRoot(FeedsModel *main_model);
|
||||||
QList<ServiceRoot*> initializeSubtree(FeedsModel *main_model);
|
QList<ServiceRoot*> initializeSubtree(FeedsModel *main_model);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -58,6 +58,10 @@ QString TtRssServiceEntryPoint::code() {
|
||||||
return SERVICE_CODE_TT_RSS;
|
return SERVICE_CODE_TT_RSS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ServiceRoot *TtRssServiceEntryPoint::createNewRoot(FeedsModel *main_model) {
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
QList<ServiceRoot*> TtRssServiceEntryPoint::initializeSubtree(FeedsModel *main_model) {
|
QList<ServiceRoot*> TtRssServiceEntryPoint::initializeSubtree(FeedsModel *main_model) {
|
||||||
return QList<ServiceRoot*>();
|
return QList<ServiceRoot*>();
|
||||||
}
|
}
|
||||||
|
|
|
@ -35,6 +35,7 @@ class TtRssServiceEntryPoint : public ServiceEntryPoint {
|
||||||
QIcon icon();
|
QIcon icon();
|
||||||
QString code();
|
QString code();
|
||||||
|
|
||||||
|
ServiceRoot *createNewRoot(FeedsModel *main_model);
|
||||||
QList<ServiceRoot*> initializeSubtree(FeedsModel *main_model);
|
QList<ServiceRoot*> initializeSubtree(FeedsModel *main_model);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue