settings: fix ringtones button and stop when changing account
Change-Id: I3489bf37ee14dd86cc3195aff442dcb2ce3a1200
Tuleap: #339
diff --git a/accountdetails.cpp b/accountdetails.cpp
index 850d632..29ddbbe 100644
--- a/accountdetails.cpp
+++ b/accountdetails.cpp
@@ -52,6 +52,20 @@
connect(ui->lrcfg_tlsCaListCertificate, SIGNAL(clicked(bool)), this, SLOT(onCertButtonClicked()));
connect(ui->lrcfg_tlsCertificate, SIGNAL(clicked(bool)), this, SLOT(onCertButtonClicked()));
connect(ui->lrcfg_tlsPrivateKeyCertificate, SIGNAL(clicked(bool)), this, SLOT(onCertButtonClicked()));
+
+ connect(&RingtoneModel::instance(),
+ &RingtoneModel::dataChanged,
+ [=](const QModelIndex& topLeft, const QModelIndex& bottomRight) {
+ Q_UNUSED(topLeft)
+ Q_UNUSED(bottomRight)
+ if (not currentAccount_)
+ return;
+ if (RingtoneModel::instance().isPlaying())
+ ui->playButton->setText(tr("Pause"));
+ else
+ ui->playButton->setText(tr("Play"));
+
+ });
}
AccountDetails::~AccountDetails()
@@ -63,7 +77,8 @@
AccountDetails::setAccount(Account* currentAccount) {
if (currentAccount_) {
- currentAccount_->performAction(Account::EditAction::SAVE);
+ stopRingtone();
+ save();
}
currentAccount_ = currentAccount;
@@ -227,3 +242,12 @@
RingtoneModel::instance().play(RingtoneModel::instance().index(
ui->ringtonesBox->currentIndex(), 0));
}
+
+void
+AccountDetails::stopRingtone() {
+ if (not currentAccount_)
+ return;
+ auto idx = RingtoneModel::instance().selectionModel(currentAccount_)->currentIndex();
+ if (RingtoneModel::instance().isPlaying())
+ RingtoneModel::instance().play(idx);
+}