diff --git a/src/widget/about/aboutfriendform.cpp b/src/widget/about/aboutfriendform.cpp index dc4143523..f2a6a2a8a 100644 --- a/src/widget/about/aboutfriendform.cpp +++ b/src/widget/about/aboutfriendform.cpp @@ -19,6 +19,7 @@ AboutFriendForm::AboutFriendForm(QPointer about, QWidget* parent) connect(ui->autogroupinvite, &QCheckBox::clicked, this, &AboutFriendForm::onAutoGroupInvite); connect(ui->selectSaveDir, &QPushButton::clicked, this, &AboutFriendForm::onSelectDirClicked); connect(ui->removeHistory, &QPushButton::clicked, this, &AboutFriendForm::onRemoveHistoryClicked); + connect(about.data(), &IAboutFriend::autoAcceptDirChanged, this, &AboutFriendForm::onAutoAcceptDirChanged); const QString dir = about->getAutoAcceptDir(); ui->autoacceptfile->setChecked(!dir.isEmpty()); @@ -43,29 +44,35 @@ AboutFriendForm::AboutFriendForm(QPointer about, QWidget* parent) ui->avatar->setPixmap(about->getAvatar()); } +static QString getAutoAcceptDir(const QString& dir) +{ + //: popup title + const QString title = AboutFriendForm::tr("Choose an auto accept directory"); + return QFileDialog::getExistingDirectory(Q_NULLPTR, title, dir); +} + void AboutFriendForm::onAutoAcceptDirClicked() { - if (!ui->autoacceptfile->isChecked()) { - ui->autoacceptfile->setChecked(false); - about->setAutoAcceptDir(""); - ui->selectSaveDir->setText(tr("Auto accept for this contact is disabled")); - } else if (ui->autoacceptfile->isChecked()) { - QString dir = about->getAutoAcceptDir(); - dir = QFileDialog::getExistingDirectory( - Q_NULLPTR, tr("Choose an auto accept directory", "popup title"), dir); - - if (dir.isEmpty()) { - ui->autoacceptfile->setChecked(false); - return; // user canellced + const QString dir = [&]{ + if (!ui->autoacceptfile->isChecked()) { + return QString{}; } - about->setAutoAcceptDir(dir); - ui->selectSaveDir->setText(about->getAutoAcceptDir()); - } + return getAutoAcceptDir(about->getAutoAcceptDir()); + }(); - ui->selectSaveDir->setEnabled(ui->autoacceptfile->isChecked()); + about->setAutoAcceptDir(dir); } +void AboutFriendForm::onAutoAcceptDirChanged(const QString& path) +{ + const bool enabled = path.isNull(); + ui->autoacceptfile->setChecked(enabled); + ui->selectSaveDir->setEnabled(enabled); + ui->selectSaveDir->setText(enabled ? path : tr("Auto accept for this contact is disabled")); +} + + void AboutFriendForm::onAutoAcceptCallClicked() { const int index = ui->autoacceptcall->currentIndex(); @@ -83,10 +90,7 @@ void AboutFriendForm::onAutoGroupInvite() void AboutFriendForm::onSelectDirClicked() { - QString dir = about->getAutoAcceptDir(); - dir = QFileDialog::getExistingDirectory( - Q_NULLPTR, tr("Choose an auto accept directory", "popup title"), dir); - + const QString dir = getAutoAcceptDir(about->getAutoAcceptDir()); about->setAutoAcceptDir(dir); } diff --git a/src/widget/about/aboutfriendform.h b/src/widget/about/aboutfriendform.h index 84a25c0d3..6456c6b5d 100644 --- a/src/widget/about/aboutfriendform.h +++ b/src/widget/about/aboutfriendform.h @@ -23,6 +23,7 @@ private: QPointer about; private slots: + void onAutoAcceptDirChanged(const QString& path); void onAcceptedClicked(); void onAutoAcceptDirClicked(); void onAutoAcceptCallClicked();