From 6a0ab851919a764a7b1f64eb7e32d641529435f3 Mon Sep 17 00:00:00 2001 From: data Date: Sun, 8 Feb 2026 08:16:03 +0100 Subject: [PATCH] Fix settings and disable problematic features - Add dialPlan type support to ComboSetting (international prefix now shows correctly) - Replace logo.svg with new phone icon design - Disable automatic update check on startup (default to false) - Disable account devices feature to prevent API errors - Remove devices section from account settings - Add ringtone fallback to default when custom file not found Co-Authored-By: Claude Opus 4.5 --- Linphone/core/setting/SettingsCore.cpp | 12 ++-- Linphone/data/image/logo.svg | 69 ++++++------------- Linphone/model/setting/SettingsModel.cpp | 12 +++- .../Control/Button/Settings/ComboSetting.qml | 7 ++ .../Settings/AccountSettingsGeneralLayout.qml | 8 --- 5 files changed, 43 insertions(+), 65 deletions(-) mode change 100644 => 100755 Linphone/data/image/logo.svg mode change 100644 => 100755 Linphone/model/setting/SettingsModel.cpp mode change 100644 => 100755 Linphone/view/Control/Button/Settings/ComboSetting.qml mode change 100644 => 100755 Linphone/view/Page/Layout/Settings/AccountSettingsGeneralLayout.qml diff --git a/Linphone/core/setting/SettingsCore.cpp b/Linphone/core/setting/SettingsCore.cpp index a2bf5f81..f8bcb5a1 100644 --- a/Linphone/core/setting/SettingsCore.cpp +++ b/Linphone/core/setting/SettingsCore.cpp @@ -109,11 +109,8 @@ SettingsCore::SettingsCore(QObject *parent) : QObject(parent) { mStorePlainTextPassword = settingsModel->getStorePlainTextPassword(); mDefaultDomain = settingsModel->getDefaultDomain(); - auto currentAccount = CoreModel::getInstance()->getCore()->getDefaultAccount(); - if (currentAccount) { - auto accountDomain = Utils::coreStringToAppString(currentAccount->getParams()->getDomain()); - mShowAccountDevices = (accountDomain == mDefaultDomain); - } + // Disable account devices feature to prevent API errors + mShowAccountDevices = false; // Chat mEmojiFont = settingsModel->getEmojiFont(); @@ -1252,9 +1249,8 @@ bool SettingsCore::getStorePlainTextPassword() const { void SettingsCore::setStorePlainTextPassword(bool enabled) { if (mStorePlainTextPassword != enabled) { mStorePlainTextPassword = enabled; - mSettingsModelConnection->invokeToModel([enabled]() { - SettingsModel::getInstance()->setStorePlainTextPassword(enabled); - }); + mSettingsModelConnection->invokeToModel( + [enabled]() { SettingsModel::getInstance()->setStorePlainTextPassword(enabled); }); emit storePlainTextPasswordChanged(enabled); } } diff --git a/Linphone/data/image/logo.svg b/Linphone/data/image/logo.svg old mode 100644 new mode 100755 index 1693e311..8883d5bb --- a/Linphone/data/image/logo.svg +++ b/Linphone/data/image/logo.svg @@ -1,49 +1,22 @@ - - - - - - - + + + + + + + + + + + + + + + + + + + + + diff --git a/Linphone/model/setting/SettingsModel.cpp b/Linphone/model/setting/SettingsModel.cpp old mode 100644 new mode 100755 index ef19aa41..0f82070c --- a/Linphone/model/setting/SettingsModel.cpp +++ b/Linphone/model/setting/SettingsModel.cpp @@ -472,6 +472,15 @@ void SettingsModel::setRingtone(QString ringtonePath) { mustBeInLinphoneThread(log().arg(Q_FUNC_INFO)); QFileInfo ringtone(ringtonePath); if (ringtonePath.isEmpty() || !ringtone.exists()) { + // Fallback to default ringtone if file not found + auto factory = linphone::Factory::get(); + auto defaultRing = factory->getRingResourcesDir() + "/rings/oldphone-mono.wav"; + QFileInfo defaultRingtone(QString::fromStdString(defaultRing)); + if (defaultRingtone.exists()) { + lInfo() << "Custom ringtone not found, using default: " << defaultRing; + CoreModel::getInstance()->getCore()->setRing(defaultRing); + emit ringtoneChanged(QString::fromStdString(defaultRing)); + } } else { CoreModel::getInstance()->getCore()->setRing(Utils::appStringToCoreString(ringtonePath)); emit ringtoneChanged(ringtonePath); @@ -954,7 +963,8 @@ bool SettingsModel::isCheckForUpdateAvailable() const { } bool SettingsModel::isCheckForUpdateEnabled() const { - return !!mConfig->getInt(UiSection, "check_for_update_enabled", isCheckForUpdateAvailable()); + // Default to false to disable automatic update checks + return !!mConfig->getInt(UiSection, "check_for_update_enabled", 0); } void SettingsModel::setCheckForUpdateEnabled(bool enable) { diff --git a/Linphone/view/Control/Button/Settings/ComboSetting.qml b/Linphone/view/Control/Button/Settings/ComboSetting.qml old mode 100644 new mode 100755 index 83926ea4..f3991ca1 --- a/Linphone/view/Control/Button/Settings/ComboSetting.qml +++ b/Linphone/view/Control/Button/Settings/ComboSetting.qml @@ -64,6 +64,9 @@ RowLayout { } else if (entry.value !== undefined) { // Simple entries (language, color): compare by value return entry.value === currentVal + } else if (entry.flag !== undefined && entry.text !== undefined) { + // DialPlan entries: compare by text (stored as full object) + return currentVal && entry.text === currentVal.text } return false }) @@ -84,6 +87,9 @@ RowLayout { } else if (entry.value !== undefined) { // Simple entries: compare by value binding.when = entry.value !== storedVal + } else if (entry.flag !== undefined && entry.text !== undefined) { + // DialPlan entries: compare by text + binding.when = !storedVal || entry.text !== storedVal.text } } Binding { @@ -98,6 +104,7 @@ RowLayout { if (typeof entry === 'string') return entry // QStringList if (entry.id !== undefined) return entry // Audio devices if (entry.value !== undefined) return entry.value // Simple entries + if (entry.flag !== undefined) return entry // DialPlan (return full object) return entry } when: false diff --git a/Linphone/view/Page/Layout/Settings/AccountSettingsGeneralLayout.qml b/Linphone/view/Page/Layout/Settings/AccountSettingsGeneralLayout.qml old mode 100644 new mode 100755 index 7e36fddd..6efa757b --- a/Linphone/view/Page/Layout/Settings/AccountSettingsGeneralLayout.qml +++ b/Linphone/view/Page/Layout/Settings/AccountSettingsGeneralLayout.qml @@ -21,14 +21,6 @@ AbstractSettingsLayout { //: Éditer les informations de votre compte. subTitle: qsTr("manage_account_details_subtitle"), contentComponent: accountParametersComponent - }, - { - visible: SettingsCpp.showAccountDevices, - //: "Vos appareils" - title: qsTr("manage_account_devices_title"), - //: "La liste des appareils connectés à votre compte. Vous pouvez retirer les appareils que vous n’utilisez plus." - subTitle: qsTr("manage_account_devices_subtitle"), - contentComponent: accountDevicesComponent } ]