diff --git a/saoriconfiguredialog.cpp b/saoriconfiguredialog.cpp index f33d2ed..815ff39 100644 --- a/saoriconfiguredialog.cpp +++ b/saoriconfiguredialog.cpp @@ -29,9 +29,11 @@ #include "saoridef.h" #include "saoriapplication.h" #include "saoriaddaccountdialog.h" - +#include "saoriview.h" +#include #include #include +#include SaoriConfigureDialog::SaoriConfigureDialog(QWidget *parent) : QDialog(parent), @@ -39,6 +41,11 @@ { ui->setupUi(this); resetValue(); + + setAccounts(); + + if (SaoriApplication::saori()->getAccountList()->count() == 0) + ui->comboBox_accounts->setEnabled(false); } SaoriConfigureDialog::~SaoriConfigureDialog() @@ -53,6 +60,14 @@ ui->checkBox_nsfw->setChecked(SaoriApplication::saori()->setting()->value(SAORI_SETTING_NSFWBLUR,SAORI_SETTING_NSFWBLUR_DEFAULT).toBool()); } +void SaoriConfigureDialog::setAccounts() +{ + ui->comboBox_accounts->clear(); + for (auto a:*SaoriApplication::saori()->getAccountList()) { + ui->comboBox_accounts->addItem(a->name()); + } +} + void SaoriConfigureDialog::accept() { SaoriApplication::saori()->setting()->setValue(SAORI_SETTING_GETLIMIT,ui->spinBox_limit->value()); @@ -76,6 +91,27 @@ SaoriApplication::getAccountList()->append(dialog->m_account); } emit accountsUpdated(); + setAccounts(); delete dialog; } + +void SaoriConfigureDialog::on_pushButton_removeacount_clicked() +{ + if (QMessageBox::question(this,tr("Remove account"),tr("Remove %1 from account list.").arg( + ui->comboBox_accounts->currentText())) == QMessageBox::No) + return; + + auto view = SaoriView::findView(ui->comboBox_accounts->currentText()); + for (auto v:view) { + QMdiSubWindow *p = qobject_cast(v->parent()); + if (p) p->close(); + } + + auto account = SaoriApplication::saori()->findAccount(ui->comboBox_accounts->currentText()); + SaoriApplication::saori()->getAccountList()->removeOne(account); + delete account; + + emit accountsUpdated(); + setAccounts(); +} diff --git a/saoriconfiguredialog.h b/saoriconfiguredialog.h index df0f319..475b5f4 100644 --- a/saoriconfiguredialog.h +++ b/saoriconfiguredialog.h @@ -43,6 +43,7 @@ protected: void resetValue(); + void setAccounts(); virtual void accept(); virtual void reject(); @@ -52,6 +53,8 @@ private slots: void on_pushButton_addacount_clicked(); + void on_pushButton_removeacount_clicked(); + private: Ui::SaoriConfigureDialog *ui; }; diff --git a/saoriconfiguredialog.ui b/saoriconfiguredialog.ui index 4758d7e..b81f241 100644 --- a/saoriconfiguredialog.ui +++ b/saoriconfiguredialog.ui @@ -83,10 +83,23 @@ - + + + + 0 + 0 + + + + + + 0 + 0 + + Remove Account from list diff --git a/saoriview.cpp b/saoriview.cpp index 752c756..99c739e 100644 --- a/saoriview.cpp +++ b/saoriview.cpp @@ -116,6 +116,15 @@ return nullptr; } +QList SaoriView::findView(const QString account) +{ + QList result; + for(auto v:m_viewList) { + if (v->m_account == account) result.append(v); + } + return result; +} + void SaoriView::reload() { auto saoriaccount = SaoriApplication::saori()->findAccount(m_account); diff --git a/saoriview.h b/saoriview.h index 45a37e1..e7279ec 100644 --- a/saoriview.h +++ b/saoriview.h @@ -45,6 +45,7 @@ explicit SaoriView(const QString view,const QString account,QWidget *parent = 0); ~SaoriView(); static SaoriView* findView(const QString view,const QString account); + static QList findView(const QString account); protected: QString m_viewname;