diff --git a/Linphone/core/App.cpp b/Linphone/core/App.cpp index 3e41237b1..f82e89b33 100644 --- a/Linphone/core/App.cpp +++ b/Linphone/core/App.cpp @@ -434,6 +434,8 @@ void App::setSelf(QSharedPointer(me)) { mustBeInLinphoneThread(log().arg(Q_FUNC_INFO)); if (CoreModel::getInstance()->mConfigStatus == linphone::ConfiguringState::Successful) { bool accountConnected = account && account->getState() == linphone::RegistrationState::Ok; + // update settings if case config contains changes + if (mSettings) mSettings->reloadSettings(); mCoreModelConnection->invokeToCore([this, accountConnected]() { mustBeInMainThread(log().arg(Q_FUNC_INFO)); // There is an account added by a remote provisioning, force switching to main page @@ -443,6 +445,9 @@ void App::setSelf(QSharedPointer(me)) { Q_ARG(QVariant, accountConnected)); } mPossiblyLookForAddedAccount = false; + // setLocale(mSettings->getConfigLocale()); + // setAutoStart(mSettings->getAutoStart()); + // setQuitOnLastWindowClosed(mSettings->getExitOnClose()); }); } }); @@ -640,7 +645,7 @@ void App::initCore() { lDebug() << log().arg("Creating SettingsModel"); SettingsModel::create(); lDebug() << log().arg("Creating SettingsCore"); - if (!settings) settings = SettingsCore::create(); + settings = SettingsCore::create(); lDebug() << log().arg("Checking downloaded codecs updates"); Utils::checkDownloadedCodecsUpdates(); lDebug() << log().arg("Setting Video Codec Priority Policy"); @@ -722,30 +727,30 @@ void App::initCore() { } }); - if (!mSettings) { - mSettings = settings; - setLocale(settings->getConfigLocale()); - setAutoStart(settings->getAutoStart()); - setQuitOnLastWindowClosed(settings->getExitOnClose()); - mEngine->setObjectOwnership(mSettings.get(), QQmlEngine::CppOwnership); + // if (!mSettings) { + mSettings = settings; + setLocale(settings->getConfigLocale()); + setAutoStart(settings->getAutoStart()); + setQuitOnLastWindowClosed(settings->getExitOnClose()); + mEngine->setObjectOwnership(mSettings.get(), QQmlEngine::CppOwnership); - connect(mSettings.get(), &SettingsCore::exitOnCloseChanged, this, &App::onExitOnCloseChanged, - Qt::UniqueConnection); - QObject::connect(mSettings.get(), &SettingsCore::autoStartChanged, [this]() { - mustBeInMainThread(log().arg(Q_FUNC_INFO)); - setAutoStart(mSettings->getAutoStart()); - }); - QObject::connect(mSettings.get(), &SettingsCore::configLocaleChanged, [this]() { - mustBeInMainThread(log().arg(Q_FUNC_INFO)); - if (mSettings) setLocale(mSettings->getConfigLocale()); - }); - connect(mSettings.get(), &SettingsCore::exitOnCloseChanged, this, &App::onExitOnCloseChanged, - Qt::UniqueConnection); - } else { - setLocale(settings->getConfigLocale()); - setAutoStart(settings->getAutoStart()); - setQuitOnLastWindowClosed(settings->getExitOnClose()); - } + connect(mSettings.get(), &SettingsCore::exitOnCloseChanged, this, &App::onExitOnCloseChanged, + Qt::UniqueConnection); + QObject::connect(mSettings.get(), &SettingsCore::autoStartChanged, [this]() { + mustBeInMainThread(log().arg(Q_FUNC_INFO)); + setAutoStart(mSettings->getAutoStart()); + }); + QObject::connect(mSettings.get(), &SettingsCore::configLocaleChanged, [this]() { + mustBeInMainThread(log().arg(Q_FUNC_INFO)); + if (mSettings) setLocale(mSettings->getConfigLocale()); + }); + connect(mSettings.get(), &SettingsCore::exitOnCloseChanged, this, &App::onExitOnCloseChanged, + Qt::UniqueConnection); + // } else { + // setLocale(settings->getConfigLocale()); + // setAutoStart(settings->getAutoStart()); + // setQuitOnLastWindowClosed(settings->getExitOnClose()); + // } const QUrl url("qrc:/qt/qml/Linphone/view/Page/Window/Main/MainWindow.qml"); QObject::connect( mEngine, &QQmlApplicationEngine::objectCreated, this, diff --git a/Linphone/core/setting/SettingsCore.cpp b/Linphone/core/setting/SettingsCore.cpp index ef2fa5efc..ff32c150c 100644 --- a/Linphone/core/setting/SettingsCore.cpp +++ b/Linphone/core/setting/SettingsCore.cpp @@ -126,7 +126,6 @@ SettingsCore::SettingsCore(QObject *parent) : QObject(parent) { INIT_CORE_MEMBER(HideAccountSettings, settingsModel) INIT_CORE_MEMBER(DisableCallRecordings, settingsModel) INIT_CORE_MEMBER(AssistantHideCreateAccount, settingsModel) - INIT_CORE_MEMBER(AssistantHideCreateAccount, settingsModel) INIT_CORE_MEMBER(AssistantDisableQrCode, settingsModel) INIT_CORE_MEMBER(AssistantHideThirdPartyAccount, settingsModel) @@ -239,6 +238,110 @@ SettingsCore::SettingsCore(const SettingsCore &settingsCore) { SettingsCore::~SettingsCore() { } +void SettingsCore::reloadSettings() { + mustBeInLinphoneThread(getClassName()); + auto settingsModel = SettingsModel::getInstance(); + assert(settingsModel); + + // Security + setVfsEnabled(settingsModel->getVfsEnabled()); + + // Call + setVideoEnabled(settingsModel->getVideoEnabled()); + setEchoCancellationEnabled(settingsModel->getEchoCancellationEnabled()); + setAutoDownloadReceivedFiles(settingsModel->getAutoDownloadReceivedFiles()); + setAutomaticallyRecordCallsEnabled(settingsModel->getAutomaticallyRecordCallsEnabled()); + setRingtone(settingsModel->getRingtone()); + + // Network + setIpv6Enabled(settingsModel->getIpv6Enabled()); + + // Advanced + setAutoStart(settingsModel->getAutoStart()); + setHideFps(settingsModel->getHideFps()); + + // Audio + setCaptureDevices(settingsModel->getCaptureDevices()); + setPlaybackDevices(settingsModel->getPlaybackDevices()); + setRingerDevices(settingsModel->getRingerDevices()); + setCaptureDevice(settingsModel->getCaptureDevice()); + setPlaybackDevice(settingsModel->getPlaybackDevice()); + setRingerDevice(settingsModel->getRingerDevice()); + + setConferenceLayout( + LinphoneEnums::toVariant(LinphoneEnums::fromLinphone(settingsModel->getDefaultConferenceLayout()))); + + setMediaEncryption( + LinphoneEnums::toVariant(LinphoneEnums::fromLinphone(settingsModel->getDefaultMediaEncryption()))); + + setMediaEncryptionMandatory(settingsModel->getMediaEncryptionMandatory()); + setCreateEndToEndEncryptedMeetingsAndGroupCalls(settingsModel->getCreateEndToEndEncryptedMeetingsAndGroupCalls()); + + setCaptureGain(settingsModel->getCaptureGain()); + setPlaybackGain(settingsModel->getPlaybackGain()); + + // Video + setVideoDevice(settingsModel->getVideoDevice()); + setVideoDevices(settingsModel->getVideoDevices()); + + // Logs + setLogsEnabled(settingsModel->getLogsEnabled()); + setFullLogsEnabled(settingsModel->getFullLogsEnabled()); + setCrashReporterEnabled(settingsModel->getCrashReporterEnabled()); + setLogsFolder(settingsModel->getLogsFolder()); + mLogsEmail = settingsModel->getLogsEmail(); + + // DND + setDndEnabled(settingsModel->dndEnabled()); + + mDefaultDomain = settingsModel->getDefaultDomain(); + auto currentAccount = CoreModel::getInstance()->getCore()->getDefaultAccount(); + if (currentAccount) { + auto accountDomain = Utils::coreStringToAppString(currentAccount->getParams()->getDomain()); + setShowAccountDevices(accountDomain == mDefaultDomain); + } + + // Chat + mEmojiFont = settingsModel->getEmojiFont(); + mTextMessageFont = settingsModel->getTextMessageFont(); + + // Check for update + mIsCheckForUpdateAvailable = settingsModel->isCheckForUpdateAvailable(); + + setDisableChatFeature(settingsModel->getDisableChatFeature()); + setDisableMeetingsFeature(settingsModel->getDisableMeetingsFeature()); + setDisableBroadcastFeature(settingsModel->getDisableBroadcastFeature()); + + setHideSettings(settingsModel->getHideSettings()); + setHideAccountSettings(settingsModel->getHideAccountSettings()); + + setDisableCallRecordings(settingsModel->getDisableCallRecordings()); + setAssistantHideCreateAccount(settingsModel->getAssistantHideCreateAccount()); + setAssistantDisableQrCode(settingsModel->getAssistantDisableQrCode()); + setAssistantHideThirdPartyAccount(settingsModel->getAssistantHideThirdPartyAccount()); + setHideSipAddresses(settingsModel->getHideSipAddresses()); + setDarkModeAllowed(settingsModel->getDarkModeAllowed()); + setMaxAccount(settingsModel->getMaxAccount()); + setAssistantGoDirectlyToThirdPartySipAccountLogin( + settingsModel->getAssistantGoDirectlyToThirdPartySipAccountLogin()); + setAssistantGoDirectlyToThirdPartySipAccountLogin( + settingsModel->getAssistantGoDirectlyToThirdPartySipAccountLogin()); + setAssistantThirdPartySipAccountDomain(settingsModel->getAssistantThirdPartySipAccountDomain()); + setAssistantThirdPartySipAccountTransport(settingsModel->getAssistantThirdPartySipAccountTransport()); + setAutoStart(settingsModel->getAutoStart()); + setExitOnClose(settingsModel->getExitOnClose()); + setSyncLdapContacts(settingsModel->getSyncLdapContacts()); + setConfigLocale(settingsModel->getConfigLocale()); + setDownloadFolder(settingsModel->getDownloadFolder()); + + setCallToneIndicationsEnabled(settingsModel->getCallToneIndicationsEnabled()); + setCommandLine(settingsModel->getCommandLine()); + setDisableCommandLine(settingsModel->getDisableCommandLine()); + setCallForwardToAddress(settingsModel->getCallForwardToAddress()); + setThemeMainColor(settingsModel->getThemeMainColor()); + setThemeAboutPictureUrl(settingsModel->getThemeAboutPictureUrl()); +} + void SettingsCore::setSelf(QSharedPointer me) { mustBeInLinphoneThread(getClassName()); mSettingsModelConnection = SafeConnection::create(me, SettingsModel::getInstance()); diff --git a/Linphone/core/setting/SettingsCore.hpp b/Linphone/core/setting/SettingsCore.hpp index 50f5dea9b..25cde25cd 100644 --- a/Linphone/core/setting/SettingsCore.hpp +++ b/Linphone/core/setting/SettingsCore.hpp @@ -91,7 +91,8 @@ public: Q_PROPERTY(bool logsEnabled READ getLogsEnabled WRITE setLogsEnabled NOTIFY logsEnabledChanged) Q_PROPERTY(bool fullLogsEnabled READ getFullLogsEnabled WRITE setFullLogsEnabled NOTIFY fullLogsEnabledChanged) - Q_PROPERTY(bool crashReporterEnabled READ getCrashReporterEnabled WRITE setCrashReporterEnabled NOTIFY crashReporterEnabledChanged) + Q_PROPERTY(bool crashReporterEnabled READ getCrashReporterEnabled WRITE setCrashReporterEnabled NOTIFY + crashReporterEnabledChanged) Q_PROPERTY(QString logsEmail READ getLogsEmail) Q_PROPERTY(QString logsFolder READ getLogsFolder) Q_PROPERTY(QString ringtoneName READ getRingtoneFileName NOTIFY ringtoneChanged) @@ -108,6 +109,8 @@ public: SettingsCore(const SettingsCore &settingsCore); virtual ~SettingsCore(); + void reloadSettings(); + void setSelf(QSharedPointer me); void reset(const SettingsCore &settingsCore);