diff --git a/advancedsettingswidget.cpp b/advancedsettingswidget.cpp
index 1b52c9b321e953e8a7438e1f6ae736adc6702678..612c29acb495ce2ff025e3d0d17728b2e49716dd 100644
--- a/advancedsettingswidget.cpp
+++ b/advancedsettingswidget.cpp
@@ -153,13 +153,15 @@ void
 AdvancedSettingsWidget::openFileCustomRingtone()
 {
     QString fileUrl;
-    fileUrl = QFileDialog::getOpenFileName(this, QString("Select a new ringtone"), QDir::currentPath() + QString("/ringtones/"));
+    auto oldPath = QString::fromStdString(LRCInstance::getCurrAccConfig().Ringtone.ringtonePath);
+    auto openPath = oldPath.isEmpty() ? QDir::currentPath() + QString("/ringtones/") : QFileInfo(oldPath).absolutePath();
+    fileUrl = QFileDialog::getOpenFileName(this, QString("Select a new ringtone"), openPath, tr("Opus Files (*.opus)"));
     if (!fileUrl.isEmpty()) {
         auto confProps = LRCInstance::accountModel().getAccountConfig(LRCInstance::getCurrAccId());
         confProps.Ringtone.ringtonePath = fileUrl.toStdString();
         LRCInstance::editableAccountModel()->setAccountConfig(LRCInstance::getCurrAccId(), confProps);
         ui->btnRingtone->setText(QFileInfo(fileUrl).fileName());
-    } else {
+    } else if (oldPath.isEmpty()) {
         ui->btnRingtone->setText(tr("Add a custom ringtone"));
     }
 }