/*
* Copyright (c) 2010-2020 Belledonne Communications SARL.
*
* This file is part of linphone-desktop
* (see https://www.linphone.org).
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
#ifndef SETTINGS_MODEL_H_
#define SETTINGS_MODEL_H_
#include
#include
#include
#include
#include
#include "components/core/CoreHandlers.hpp"
#include "components/contacts/ContactsImporterModel.hpp"
#include "utils/LinphoneEnums.hpp"
#include "utils/Utils.hpp"
#ifdef ENABLE_QT_KEYCHAIN
#include "components/vfs/VfsUtils.hpp"
#endif
// =============================================================================
class TunnelModel;
class SettingsModel : public QObject {
Q_OBJECT
// ===========================================================================
// PROPERTIES.
// ===========================================================================
// Assistant. ----------------------------------------------------------------
Q_PROPERTY(bool createAppSipAccountEnabled READ getCreateAppSipAccountEnabled WRITE setCreateAppSipAccountEnabled NOTIFY createAppSipAccountEnabledChanged)
Q_PROPERTY(bool fetchRemoteConfigurationEnabled READ getFetchRemoteConfigurationEnabled WRITE setFetchRemoteConfigurationEnabled NOTIFY fetchRemoteConfigurationEnabledChanged)
Q_PROPERTY(bool useAppSipAccountEnabled READ getUseAppSipAccountEnabled WRITE setUseAppSipAccountEnabled NOTIFY useAppSipAccountEnabledChanged)
Q_PROPERTY(bool useOtherSipAccountEnabled READ getUseOtherSipAccountEnabled WRITE setUseOtherSipAccountEnabled NOTIFY useOtherSipAccountEnabledChanged)
Q_PROPERTY(bool autoApplyProvisioningConfigUriHandlerEnabled READ getAutoApplyProvisioningConfigUriHandlerEnabled WRITE setAutoApplyProvisioningConfigUriHandlerEnabled NOTIFY autoApplyProvisioningConfigUriHandlerEnabledChanged)
Q_PROPERTY(bool assistantSupportsPhoneNumbers READ getAssistantSupportsPhoneNumbers WRITE setAssistantSupportsPhoneNumbers NOTIFY assistantSupportsPhoneNumbersChanged)
// Webviews config
Q_PROPERTY(QString assistantRegistrationUrl READ getAssistantRegistrationUrl WRITE setAssistantRegistrationUrl NOTIFY assistantRegistrationUrlChanged)
Q_PROPERTY(QString assistantLoginUrl READ getAssistantLoginUrl WRITE setAssistantLoginUrl NOTIFY assistantLoginUrlChanged)
Q_PROPERTY(QString assistantLogoutUrl READ getAssistantLogoutUrl WRITE setAssistantLogoutUrl NOTIFY assistantLogoutUrlChanged)
//----
Q_PROPERTY(bool cguAccepted READ isCguAccepted WRITE acceptCgu NOTIFY cguAcceptedChanged)
// SIP Accounts. -------------------------------------------------------------
Q_PROPERTY(QString deviceName READ getDeviceName WRITE setDeviceName NOTIFY deviceNameChanged)
// Audio. --------------------------------------------------------------------
Q_PROPERTY(bool captureGraphRunning READ getCaptureGraphRunning NOTIFY captureGraphRunningChanged)
Q_PROPERTY(QStringList captureDevices READ getCaptureDevices NOTIFY captureDevicesChanged)
Q_PROPERTY(QStringList playbackDevices READ getPlaybackDevices NOTIFY playbackDevicesChanged)
Q_PROPERTY(float playbackGain READ getPlaybackGain WRITE setPlaybackGain NOTIFY playbackGainChanged)
Q_PROPERTY(float captureGain READ getCaptureGain WRITE setCaptureGain NOTIFY captureGainChanged)
Q_PROPERTY(QString captureDevice READ getCaptureDevice WRITE setCaptureDevice NOTIFY captureDeviceChanged)
Q_PROPERTY(QString playbackDevice READ getPlaybackDevice WRITE setPlaybackDevice NOTIFY playbackDeviceChanged)
Q_PROPERTY(QString ringerDevice READ getRingerDevice WRITE setRingerDevice NOTIFY ringerDeviceChanged)
Q_PROPERTY(QString ringPath READ getRingPath WRITE setRingPath NOTIFY ringPathChanged)
Q_PROPERTY(bool echoCancellationEnabled READ getEchoCancellationEnabled WRITE setEchoCancellationEnabled NOTIFY echoCancellationEnabledChanged)
Q_PROPERTY(bool showAudioCodecs READ getShowAudioCodecs WRITE setShowAudioCodecs NOTIFY showAudioCodecsChanged)
// Video. --------------------------------------------------------------------
Q_PROPERTY(QStringList videoDevices READ getVideoDevices NOTIFY videoDevicesChanged)
Q_PROPERTY(QString videoDevice READ getVideoDevice WRITE setVideoDevice NOTIFY videoDeviceChanged)
Q_PROPERTY(QString videoPreset READ getVideoPreset WRITE setVideoPreset NOTIFY videoPresetChanged)
Q_PROPERTY(int videoFramerate READ getVideoFramerate WRITE setVideoFramerate NOTIFY videoFramerateChanged)
Q_PROPERTY(QVariantList supportedVideoDefinitions READ getSupportedVideoDefinitions CONSTANT)
Q_PROPERTY(QVariantMap videoDefinition READ getVideoDefinition WRITE setVideoDefinition NOTIFY videoDefinitionChanged)
Q_PROPERTY(bool videoEnabled READ getVideoEnabled WRITE setVideoEnabled NOTIFY videoEnabledChanged)
Q_PROPERTY(bool videoAvailable READ getVideoAvailable NOTIFY videoAvailableChanged)
Q_PROPERTY(bool showVideoCodecs READ getShowVideoCodecs WRITE setShowVideoCodecs NOTIFY showVideoCodecsChanged)
Q_PROPERTY(CameraMode gridCameraMode READ getGridCameraMode WRITE setGridCameraMode NOTIFY gridCameraModeChanged)
Q_PROPERTY(CameraMode activeSpeakerCameraMode READ getActiveSpeakerCameraMode WRITE setActiveSpeakerCameraMode NOTIFY activeSpeakerCameraModeChanged)
Q_PROPERTY(CameraMode callCameraMode READ getCallCameraMode WRITE setCallCameraMode NOTIFY callCameraModeChanged)
Q_PROPERTY(LinphoneEnums::ConferenceLayout videoConferenceLayout READ getVideoConferenceLayout WRITE setVideoConferenceLayout NOTIFY videoConferenceLayoutChanged)
// Chat & calls. -------------------------------------------------------------
Q_PROPERTY(bool autoAnswerStatus READ getAutoAnswerStatus WRITE setAutoAnswerStatus NOTIFY autoAnswerStatusChanged)
Q_PROPERTY(bool autoAnswerVideoStatus READ getAutoAnswerVideoStatus WRITE setAutoAnswerVideoStatus NOTIFY autoAnswerVideoStatusChanged)
Q_PROPERTY(int autoAnswerDelay READ getAutoAnswerDelay WRITE setAutoAnswerDelay NOTIFY autoAnswerDelayChanged)
Q_PROPERTY(bool showTelKeypadAutomatically READ getShowTelKeypadAutomatically WRITE setShowTelKeypadAutomatically NOTIFY showTelKeypadAutomaticallyChanged)
Q_PROPERTY(bool keepCallsWindowInBackground READ getKeepCallsWindowInBackground WRITE setKeepCallsWindowInBackground NOTIFY keepCallsWindowInBackgroundChanged)
Q_PROPERTY(bool outgoingCallsEnabled READ getOutgoingCallsEnabled WRITE setOutgoingCallsEnabled NOTIFY outgoingCallsEnabledChanged)
Q_PROPERTY(bool callRecorderEnabled READ getCallRecorderEnabled WRITE setCallRecorderEnabled NOTIFY callRecorderEnabledChanged)
Q_PROPERTY(bool automaticallyRecordCalls READ getAutomaticallyRecordCalls WRITE setAutomaticallyRecordCalls NOTIFY automaticallyRecordCallsChanged)
Q_PROPERTY(int autoDownloadMaxSize READ getAutoDownloadMaxSize WRITE setAutoDownloadMaxSize NOTIFY autoDownloadMaxSizeChanged)
Q_PROPERTY(bool callPauseEnabled READ getCallPauseEnabled WRITE setCallPauseEnabled NOTIFY callPauseEnabledChanged)
Q_PROPERTY(bool muteMicrophoneEnabled READ getMuteMicrophoneEnabled WRITE setMuteMicrophoneEnabled NOTIFY muteMicrophoneEnabledChanged)
Q_PROPERTY(bool standardChatEnabled READ getStandardChatEnabled WRITE setStandardChatEnabled NOTIFY standardChatEnabledChanged)
Q_PROPERTY(bool secureChatEnabled READ getSecureChatEnabled WRITE setSecureChatEnabled NOTIFY secureChatEnabledChanged)
Q_PROPERTY(bool groupChatEnabled READ getGroupChatEnabled NOTIFY groupChatEnabledChanged)
Q_PROPERTY(bool hideEmptyChatRooms READ getHideEmptyChatRooms WRITE setHideEmptyChatRooms NOTIFY hideEmptyChatRoomsChanged)
Q_PROPERTY(bool waitRegistrationForCall READ getWaitRegistrationForCall WRITE setWaitRegistrationForCall NOTIFY waitRegistrationForCallChanged)// Allow call only if the current proxy has been registered
Q_PROPERTY(bool incallScreenshotEnabled READ getIncallScreenshotEnabled WRITE setIncallScreenshotEnabled NOTIFY incallScreenshotEnabledChanged)
Q_PROPERTY(bool conferenceEnabled READ getConferenceEnabled WRITE setConferenceEnabled NOTIFY conferenceEnabledChanged)
Q_PROPERTY(bool videoConferenceEnabled READ getVideoConferenceEnabled NOTIFY videoConferenceEnabledChanged)
Q_PROPERTY(bool chatNotificationsEnabled READ getChatNotificationsEnabled WRITE setChatNotificationsEnabled NOTIFY chatNotificationsEnabledChanged)
Q_PROPERTY(bool chatNotificationSoundEnabled READ getChatNotificationSoundEnabled WRITE setChatNotificationSoundEnabled NOTIFY chatNotificationSoundEnabledChanged)
Q_PROPERTY(QString chatNotificationSoundPath READ getChatNotificationSoundPath WRITE setChatNotificationSoundPath NOTIFY chatNotificationSoundPathChanged)
Q_PROPERTY(QString fileTransferUrl READ getFileTransferUrl WRITE setFileTransferUrl NOTIFY fileTransferUrlChanged)
Q_PROPERTY(bool limeIsSupported READ getLimeIsSupported CONSTANT)
Q_PROPERTY(QVariantList supportedMediaEncryptions READ getSupportedMediaEncryptions CONSTANT)
Q_PROPERTY(MediaEncryption mediaEncryption READ getMediaEncryption WRITE setMediaEncryption NOTIFY mediaEncryptionChanged)
Q_PROPERTY(bool mediaEncryptionMandatory READ mandatoryMediaEncryptionEnabled WRITE enableMandatoryMediaEncryption NOTIFY mediaEncryptionChanged)
Q_PROPERTY(bool isPostQuantumAvailable READ getPostQuantumAvailable CONSTANT)
Q_PROPERTY(bool limeState READ getLimeState WRITE setLimeState NOTIFY limeStateChanged)
Q_PROPERTY(bool contactsEnabled READ getContactsEnabled WRITE setContactsEnabled NOTIFY contactsEnabledChanged)
// Network. ------------------------------------------------------------------
Q_PROPERTY(bool showNetworkSettings READ getShowNetworkSettings WRITE setShowNetworkSettings NOTIFY showNetworkSettingsChanged)
Q_PROPERTY(bool useSipInfoForDtmfs READ getUseSipInfoForDtmfs WRITE setUseSipInfoForDtmfs NOTIFY dtmfsProtocolChanged)
Q_PROPERTY(bool useRfc2833ForDtmfs READ getUseRfc2833ForDtmfs WRITE setUseRfc2833ForDtmfs NOTIFY dtmfsProtocolChanged)
Q_PROPERTY(bool ipv6Enabled READ getIpv6Enabled WRITE setIpv6Enabled NOTIFY ipv6EnabledChanged)
Q_PROPERTY(int downloadBandwidth READ getDownloadBandwidth WRITE setDownloadBandwidth NOTIFY downloadBandWidthChanged)
Q_PROPERTY(int uploadBandwidth READ getUploadBandwidth WRITE setUploadBandwidth NOTIFY uploadBandWidthChanged)
Q_PROPERTY(
bool adaptiveRateControlEnabled
READ getAdaptiveRateControlEnabled
WRITE setAdaptiveRateControlEnabled
NOTIFY adaptiveRateControlEnabledChanged
)
Q_PROPERTY(int tcpPort READ getTcpPort WRITE setTcpPort NOTIFY tcpPortChanged)
Q_PROPERTY(int udpPort READ getUdpPort WRITE setUdpPort NOTIFY udpPortChanged)
Q_PROPERTY(QList audioPortRange READ getAudioPortRange WRITE setAudioPortRange NOTIFY audioPortRangeChanged)
Q_PROPERTY(QList videoPortRange READ getVideoPortRange WRITE setVideoPortRange NOTIFY videoPortRangeChanged)
Q_PROPERTY(bool iceEnabled READ getIceEnabled WRITE setIceEnabled NOTIFY iceEnabledChanged)
Q_PROPERTY(bool turnEnabled READ getTurnEnabled WRITE setTurnEnabled NOTIFY turnEnabledChanged)
Q_PROPERTY(QString stunServer READ getStunServer WRITE setStunServer NOTIFY stunServerChanged)
Q_PROPERTY(QString turnUser READ getTurnUser WRITE setTurnUser NOTIFY turnUserChanged)
Q_PROPERTY(QString turnPassword READ getTurnPassword WRITE setTurnPassword NOTIFY turnPasswordChanged)
Q_PROPERTY(int dscpSip READ getDscpSip WRITE setDscpSip NOTIFY dscpSipChanged)
Q_PROPERTY(int dscpAudio READ getDscpAudio WRITE setDscpAudio NOTIFY dscpAudioChanged)
Q_PROPERTY(int dscpVideo READ getDscpVideo WRITE setDscpVideo NOTIFY dscpVideoChanged)
Q_PROPERTY(bool rlsUriEnabled READ getRlsUriEnabled WRITE setRlsUriEnabled NOTIFY rlsUriEnabledChanged)
Q_PROPERTY(QString rlsUri READ getRlsUri WRITE setRlsUri NOTIFY rlsUriChanged)
// UI. -----------------------------------------------------------------------
Q_PROPERTY(QFont textMessageFont READ getTextMessageFont WRITE setTextMessageFont NOTIFY textMessageFontChanged)
Q_PROPERTY(int textMessageFontSize READ getTextMessageFontSize WRITE setTextMessageFontSize NOTIFY textMessageFontSizeChanged)
Q_PROPERTY(QFont emojiFont READ getEmojiFont WRITE setEmojiFont NOTIFY emojiFontChanged)
Q_PROPERTY(int emojiFontSize READ getEmojiFontSize WRITE setEmojiFontSize NOTIFY emojiFontSizeChanged)
Q_PROPERTY(QString remoteProvisioning READ getRemoteProvisioning WRITE setRemoteProvisioning NOTIFY remoteProvisioningChanged)
Q_PROPERTY(QString flexiAPIUrl READ getFlexiAPIUrl WRITE setFlexiAPIUrl NOTIFY flexiAPIUrlChanged)
Q_PROPERTY(QString savedScreenshotsFolder READ getSavedScreenshotsFolder WRITE setSavedScreenshotsFolder NOTIFY savedScreenshotsFolderChanged)
Q_PROPERTY(QString savedCallsFolder READ getSavedCallsFolder WRITE setSavedCallsFolder NOTIFY savedCallsFolderChanged)
Q_PROPERTY(QString downloadFolder READ getDownloadFolder WRITE setDownloadFolder NOTIFY downloadFolderChanged)
Q_PROPERTY(bool exitOnClose READ getExitOnClose WRITE setExitOnClose NOTIFY exitOnCloseChanged)
Q_PROPERTY(bool checkForUpdateEnabled READ isCheckForUpdateEnabled WRITE setCheckForUpdateEnabled NOTIFY checkForUpdateEnabledChanged)
Q_PROPERTY(QString versionCheckUrl READ getVersionCheckUrl WRITE setVersionCheckUrl NOTIFY versionCheckUrlChanged)
Q_PROPERTY(VersionCheckType versionCheckType READ getVersionCheckType WRITE setVersionCheckType NOTIFY versionCheckTypeChanged)
Q_PROPERTY(bool showLocalSipAccount READ getShowLocalSipAccount CONSTANT)
Q_PROPERTY(bool showStartChatButton READ getShowStartChatButton CONSTANT)
Q_PROPERTY(bool showStartVideoCallButton READ getShowStartVideoCallButton CONSTANT)
Q_PROPERTY(bool mipmapEnabled READ isMipmapEnabled WRITE setMipmapEnabled NOTIFY mipmapEnabledChanged)
Q_PROPERTY(bool useMinimalTimelineFilter READ useMinimalTimelineFilter WRITE setUseMinimalTimelineFilter NOTIFY useMinimalTimelineFilterChanged)
Q_PROPERTY(Utils::SipDisplayMode sipDisplayMode READ getSipDisplayMode WRITE setSipDisplayMode NOTIFY sipDisplayModeChanged)
Q_PROPERTY(int magicSearchMaxResults READ getMagicSearchMaxResults WRITE setMagicSearchMaxResults NOTIFY magicSearchMaxResultsChanged)
Q_PROPERTY(bool dontAskAgainInfoEncryption READ getDontAskAgainInfoEncryption WRITE setDontAskAgainInfoEncryption NOTIFY dontAskAgainInfoEncryptionChanged)
Q_PROPERTY(bool haveDontAskAgainChoices READ getHaveDontAskAgainChoices NOTIFY haveDontAskAgainChoicesChanged)
// Advanced. -----------------------------------------------------------------
Q_PROPERTY(QString logsFolder READ getLogsFolder WRITE setLogsFolder NOTIFY logsFolderChanged)
Q_PROPERTY(QString logsUploadUrl READ getLogsUploadUrl WRITE setLogsUploadUrl NOTIFY logsUploadUrlChanged)
Q_PROPERTY(bool logsEnabled READ getLogsEnabled WRITE setLogsEnabled NOTIFY logsEnabledChanged)
Q_PROPERTY(bool fullLogsEnabled READ getFullLogsEnabled WRITE setFullLogsEnabled NOTIFY fullLogsEnabledChanged)
Q_PROPERTY(QString logsEmail READ getLogsEmail WRITE setLogsEmail NOTIFY logsEmailChanged)
Q_PROPERTY(bool isVfsEncrypted READ getVfsEncrypted NOTIFY vfsEncryptedChanged)
Q_PROPERTY(bool developerSettingsEnabled READ getDeveloperSettingsEnabled WRITE setDeveloperSettingsEnabled NOTIFY developerSettingsEnabledChanged)
Q_PROPERTY(bool isInCall READ getIsInCall NOTIFY isInCallChanged)
public:
enum MediaEncryption {
MediaEncryptionNone = int(linphone::MediaEncryption::None),
MediaEncryptionDtls = int(linphone::MediaEncryption::DTLS),
MediaEncryptionSrtp = int(linphone::MediaEncryption::SRTP),
MediaEncryptionZrtp = int(linphone::MediaEncryption::ZRTP)
};
Q_ENUM(MediaEncryption)
enum VersionCheckType {
VersionCheckType_Release,
VersionCheckType_Nightly,
VersionCheckType_Custom
};
Q_ENUM(VersionCheckType);
enum CameraMode{
CameraMode_Hybrid = 0,
CameraMode_OccupyAllSpace = 1,
CameraMode_BlackBars = 2
};
Q_ENUM(CameraMode);
static SettingsModel::CameraMode cameraModefromString(const std::string& mode);
static std::string toString(const CameraMode& mode);
SettingsModel (QObject *parent = Q_NULLPTR);
virtual ~SettingsModel ();
// ===========================================================================
// METHODS.
// ===========================================================================
Q_INVOKABLE void onSettingsTabChanged(int idx);
Q_INVOKABLE void settingsWindowClosing(void);
Q_INVOKABLE void reloadDevices();
// Assistant. ----------------------------------------------------------------
bool getCreateAppSipAccountEnabled () const;
void setCreateAppSipAccountEnabled (bool status);
bool getFetchRemoteConfigurationEnabled () const;
void setFetchRemoteConfigurationEnabled (bool status);
bool getAutoApplyProvisioningConfigUriHandlerEnabled () const;
void setAutoApplyProvisioningConfigUriHandlerEnabled (bool status);
bool getUseAppSipAccountEnabled () const;
void setUseAppSipAccountEnabled (bool status);
bool getUseOtherSipAccountEnabled () const;
void setUseOtherSipAccountEnabled (bool status);
bool getAssistantSupportsPhoneNumbers () const;
void setAssistantSupportsPhoneNumbers (bool status);
Q_INVOKABLE bool useWebview() const;
QString getAssistantRegistrationUrl () const;
void setAssistantRegistrationUrl (QString url);
QString getAssistantLoginUrl () const;
void setAssistantLoginUrl (QString url);
QString getAssistantLogoutUrl () const;
void setAssistantLogoutUrl (QString url);
bool isCguAccepted () const;
void acceptCgu(const bool accept);
// SIP Accounts. -------------------------------------------------------------
static QString getDeviceName(const std::shared_ptr& config);
QString getDeviceName() const;
void setDeviceName(const QString& deviceName);
// Audio. --------------------------------------------------------------------
Q_INVOKABLE void startCaptureGraph();
Q_INVOKABLE void stopCaptureGraph();
Q_INVOKABLE void resetCaptureGraph();
void createCaptureGraph();
void deleteCaptureGraph();
bool getCaptureGraphRunning();
void accessAudioSettings();
void closeAudioSettings();
Q_INVOKABLE float getMicVolume();
float getPlaybackGain() const;
void setPlaybackGain(float gain);
float getCaptureGain() const;
void setCaptureGain(float gain);
QStringList getCaptureDevices () const;
QStringList getPlaybackDevices () const;
QString getCaptureDevice () const;
void setCaptureDevice (const QString &device);
QString getPlaybackDevice () const;
void setPlaybackDevice (const QString &device);
QString getRingerDevice () const;
void setRingerDevice (const QString &device);
QString getRingPath () const;
void setRingPath (const QString &path);
bool getEchoCancellationEnabled () const;
void setEchoCancellationEnabled (bool status);
Q_INVOKABLE void startEchoCancellerCalibration();
bool getShowAudioCodecs () const;
void setShowAudioCodecs (bool status);
// Video. --------------------------------------------------------------------
//Called from qml when accessing audio settings panel
Q_INVOKABLE void accessVideoSettings();
QStringList getVideoDevices () const;
QString getVideoDevice () const;
void setVideoDevice (const QString &device);
QString getVideoPreset () const;
void setVideoPreset (const QString &preset);
int getVideoFramerate () const;
void setVideoFramerate (int framerate);
QVariantList getSupportedVideoDefinitions () const;
Q_INVOKABLE void setHighMosaicQuality();
Q_INVOKABLE void setLimitedMosaicQuality();
QVariantMap getVideoDefinition () const;
Q_INVOKABLE QVariantMap getCurrentPreviewVideoDefinition () const;
void setVideoDefinition (const QVariantMap &definition);
bool getVideoEnabled() const; // Enabled from settings
void setVideoEnabled(const bool& enable);
bool getVideoAvailable() const; // Enabled and have enough codecs.
bool haveAtLeastOneVideoCodec() const;
bool getShowVideoCodecs () const;
void setShowVideoCodecs (bool status);
void updateCameraMode();
CameraMode getCameraMode() const;
Q_INVOKABLE void setCameraMode(CameraMode mode);
// Custom modes to set default for setCameraMode
CameraMode getGridCameraMode() const;
void setGridCameraMode(CameraMode mode);
CameraMode getActiveSpeakerCameraMode() const;
void setActiveSpeakerCameraMode(CameraMode mode);
CameraMode getCallCameraMode() const;
void setCallCameraMode(CameraMode mode);
LinphoneEnums::ConferenceLayout getVideoConferenceLayout() const;
void setVideoConferenceLayout(LinphoneEnums::ConferenceLayout layout);
// Chat & calls. -------------------------------------------------------------
bool getAutoAnswerStatus () const;
void setAutoAnswerStatus (bool status);
bool getAutoAnswerVideoStatus () const;
void setAutoAnswerVideoStatus (bool status);
int getAutoAnswerDelay () const;
void setAutoAnswerDelay (int delay);
bool getShowTelKeypadAutomatically () const;
void setShowTelKeypadAutomatically (bool status);
bool getKeepCallsWindowInBackground () const;
void setKeepCallsWindowInBackground (bool status);
bool getOutgoingCallsEnabled () const;
void setOutgoingCallsEnabled (bool status);
bool getCallRecorderEnabled () const;
void setCallRecorderEnabled (bool status);
bool getAutomaticallyRecordCalls () const;
void setAutomaticallyRecordCalls (bool status);
int getAutoDownloadMaxSize() const;
void setAutoDownloadMaxSize(int maxSize);
bool getCallPauseEnabled () const;
void setCallPauseEnabled (bool status);
bool getMuteMicrophoneEnabled () const;
void setMuteMicrophoneEnabled (bool status);
bool getStandardChatEnabled () const;
void setStandardChatEnabled (bool status);
bool getSecureChatEnabled () const;
void setSecureChatEnabled (bool status);
bool getHideEmptyChatRooms() const;
void setHideEmptyChatRooms(const bool& data);
bool getWaitRegistrationForCall() const;
void setWaitRegistrationForCall(const bool& status);
bool getIncallScreenshotEnabled() const;
void setIncallScreenshotEnabled(const bool& status);
bool getGroupChatEnabled()const;
bool getConferenceEnabled () const;
void setConferenceEnabled (bool status);
bool getVideoConferenceEnabled()const;
bool getChatNotificationsEnabled () const;
void setChatNotificationsEnabled (bool status);
bool getChatNotificationSoundEnabled () const;
void setChatNotificationSoundEnabled (bool status);
QString getChatNotificationSoundPath () const;
void setChatNotificationSoundPath (const QString &path);
QString getFileTransferUrl () const;
void setFileTransferUrl (const QString &url);
bool getLimeIsSupported () const;
QVariantList getSupportedMediaEncryptions () const;
MediaEncryption getMediaEncryption () const;
void setMediaEncryption (MediaEncryption encryption);
bool mandatoryMediaEncryptionEnabled () const;
void enableMandatoryMediaEncryption(bool mandatory);
bool getPostQuantumAvailable() const;
bool getDontAskAgainInfoEncryption() const;
void setDontAskAgainInfoEncryption(bool show);
bool getLimeState () const;
void setLimeState (const bool& state);
bool getContactsEnabled () const;
void setContactsEnabled (bool status);
int getIncomingCallTimeout() const;
// Network. ------------------------------------------------------------------
bool getShowNetworkSettings () const;
void setShowNetworkSettings (bool status);
bool getUseSipInfoForDtmfs () const;
void setUseSipInfoForDtmfs (bool status);
bool getUseRfc2833ForDtmfs () const;
void setUseRfc2833ForDtmfs (bool status);
bool getIpv6Enabled () const;
void setIpv6Enabled (bool status);
int getDownloadBandwidth () const;
void setDownloadBandwidth (int bandwidth);
int getUploadBandwidth () const;
void setUploadBandwidth (int bandwidth);
bool getAdaptiveRateControlEnabled () const;
void setAdaptiveRateControlEnabled (bool status);
int getTcpPort () const;
void setTcpPort (int port);
int getUdpPort () const;
void setUdpPort (int port);
QList getAudioPortRange () const;
void setAudioPortRange (const QList &range);
QList getVideoPortRange () const;
void setVideoPortRange (const QList &range);
bool getIceEnabled () const;
void setIceEnabled (bool status);
bool getTurnEnabled () const;
void setTurnEnabled (bool status);
QString getStunServer () const;
void setStunServer (const QString &stunServer);
QString getTurnUser () const;
void setTurnUser (const QString &user);
QString getTurnPassword () const;
void setTurnPassword (const QString &password);
int getDscpSip () const;
void setDscpSip (int dscp);
int getDscpAudio () const;
void setDscpAudio (int dscp);
int getDscpVideo () const;
void setDscpVideo (int dscp);
bool getRlsUriEnabled () const;
void setRlsUriEnabled (bool status);
QString getRlsUri() const;
void setRlsUri (const QString& rlsUri);
void updateRlsUri();
Q_INVOKABLE bool tunnelAvailable() const;
Q_INVOKABLE TunnelModel * getTunnel() const;
// UI. -----------------------------------------------------------------------
QFont getTextMessageFont() const;
void setTextMessageFont(const QFont& font);
int getTextMessageFontSize() const;
void setTextMessageFontSize(const int& size);
QFont getEmojiFont() const;
void setEmojiFont(const QFont& font);
int getEmojiFontSize() const;
void setEmojiFontSize(const int& size);
QString getSavedScreenshotsFolder () const;
void setSavedScreenshotsFolder (const QString &folder);
QString getSavedCallsFolder () const;
void setSavedCallsFolder (const QString &folder);
QString getDownloadFolder () const;
void setDownloadFolder (const QString &folder);
QString getRemoteProvisioningRootUrl() const;
QString getRemoteProvisioning () const;
void setRemoteProvisioning (const QString &remoteProvisioning);
Q_INVOKABLE bool isQRCodeAvailable() const;
QString getFlexiAPIUrl() const;
void setFlexiAPIUrl (const QString &url);
bool getExitOnClose () const;
void setExitOnClose (bool value);
Q_INVOKABLE static bool isCheckForUpdateAvailable();
bool isCheckForUpdateEnabled() const;
void setCheckForUpdateEnabled(bool enable);
QString getVersionCheckUrl();
void setVersionCheckUrl(const QString& url);
VersionCheckType getVersionCheckType() const;
void setVersionCheckType(const VersionCheckType& type);
Q_INVOKABLE bool haveVersionNightlyUrl()const;
Q_INVOKABLE bool getShowLocalSipAccount () const;
Q_INVOKABLE bool getShowStartChatButton () const;
Q_INVOKABLE bool getShowStartVideoCallButton () const;
bool isMipmapEnabled() const;
void setMipmapEnabled(const bool& enabled);
bool useMinimalTimelineFilter() const;
void setUseMinimalTimelineFilter(const bool& useMinimal);
Utils::SipDisplayMode getSipDisplayMode() const;
void setSipDisplayMode(Utils::SipDisplayMode mode);
int getMagicSearchMaxResults() const;
void setMagicSearchMaxResults(int maxResults);
// Show all "don't ask again" checkboxes and popups.
bool getHaveDontAskAgainChoices() const;
Q_INVOKABLE void resetDontAskAgainChoices();
// Advanced. ---------------------------------------------------------------------------
void accessAdvancedSettings();
Q_INVOKABLE QString getLogText()const;
QString getLogsFolder () const;
void setLogsFolder (const QString &folder);
QString getLogsUploadUrl () const;
void setLogsUploadUrl (const QString &url);
bool getLogsEnabled () const;
void setLogsEnabled (bool status);
bool getFullLogsEnabled () const;
void setFullLogsEnabled (bool status);
QString getLogsEmail () const;
void setLogsEmail (const QString &email);
bool getVfsEncrypted ();
Q_INVOKABLE void setVfsEncrypted (bool encrypted, const bool deleteUserData);
Q_INVOKABLE bool isLdapAvailable();
// OAuth 2
Q_INVOKABLE bool isOAuth2Available();
QString getOAuth2AuthorizationUrl()const;
QString getOAuth2AccessTokenUrl()const;
QString getOAuth2RedirectUri()const;
QString getOAuth2Identifier()const;
QString getOAuth2Password()const;
QString getOAuth2Scope()const;
QString getOAuth2RemoteProvisioningBasicAuth()const;
QString getOAuth2RemoteProvisioningHeader()const;
// ---------------------------------------------------------------------------
static QString getLogsFolder (const std::shared_ptr &config);
static bool getLogsEnabled (const std::shared_ptr &config);
static bool getFullLogsEnabled (const std::shared_ptr &config);
// ---------------------------------------------------------------------------
Q_INVOKABLE bool isDeveloperSettingsAvailable() const;
bool getDeveloperSettingsEnabled () const;
void setDeveloperSettingsEnabled (bool status);
void handleCallCreated(const std::shared_ptr &call);
void handleCallStateChanged(const std::shared_ptr &call, linphone::Call::State state);
void handleEcCalibrationResult(linphone::EcCalibratorStatus status, int delayMs);
bool getIsInCall() const;
bool isReadOnly(const std::string& section, const std::string& name) const;
std::string getEntryFullName(const std::string& section, const std::string& name) const; // Return the full name of the entry : 'name/readonly' or 'name'
static const std::string UiSection;
static const std::string ContactsSection;
// ===========================================================================
// SIGNALS.
// ===========================================================================
signals:
// Assistant. ----------------------------------------------------------------
void createAppSipAccountEnabledChanged (bool status);
void fetchRemoteConfigurationEnabledChanged (bool status);
void useAppSipAccountEnabledChanged (bool status);
void useOtherSipAccountEnabledChanged (bool status);
void autoApplyProvisioningConfigUriHandlerEnabledChanged();
void assistantSupportsPhoneNumbersChanged (bool status);
void assistantRegistrationUrlChanged (QString url);
void assistantLoginUrlChanged (QString url);
void assistantLogoutUrlChanged (QString url);
void cguAcceptedChanged(bool accepted);
// SIP Accounts. -------------------------------------------------------------
void deviceNameChanged();
// Audio. --------------------------------------------------------------------
void captureGraphRunningChanged(bool running);
void playbackGainChanged(float gain);
void captureGainChanged(float gain);
void captureDevicesChanged (const QStringList &devices);
void playbackDevicesChanged (const QStringList &devices);
void captureDeviceChanged (const QString &device);
void playbackDeviceChanged (const QString &device);
void ringerDeviceChanged (const QString &device);
void ringPathChanged (const QString &path);
void echoCancellationEnabledChanged (bool status);
void echoCancellationStatus(int status, int msDelay);
void showAudioCodecsChanged (bool status);
// Video. --------------------------------------------------------------------
void videoEnabledChanged();
void videoAvailableChanged();
void videoDevicesChanged (const QStringList &devices);
void videoDeviceChanged (const QString &device);
void videoPresetChanged (const QString &preset);
void videoFramerateChanged (int framerate);
void videoDefinitionChanged (const QVariantMap &definition);
void showVideoCodecsChanged (bool status);
void cameraModeChanged();
void gridCameraModeChanged();
void activeSpeakerCameraModeChanged();
void callCameraModeChanged();
void videoConferenceLayoutChanged();
void haveAtLeastOneVideoCodecChanged();
// Chat & calls. -------------------------------------------------------------
void autoAnswerStatusChanged (bool status);
void autoAnswerVideoStatusChanged (bool status);
void autoAnswerDelayChanged (int delay);
void showTelKeypadAutomaticallyChanged (bool status);
void keepCallsWindowInBackgroundChanged (bool status);
void outgoingCallsEnabledChanged (bool status);
void callRecorderEnabledChanged (bool status);
void automaticallyRecordCallsChanged (bool status);
void autoDownloadMaxSizeChanged (int maxSize);
void callPauseEnabledChanged (bool status);
void muteMicrophoneEnabledChanged (bool status);
void standardChatEnabledChanged (bool status);
void secureChatEnabledChanged ();
void groupChatEnabledChanged();
void hideEmptyChatRoomsChanged (bool status);
void waitRegistrationForCallChanged (bool status);
void incallScreenshotEnabledChanged(bool status);
void conferenceEnabledChanged (bool status);
void videoConferenceEnabledChanged ();
void chatNotificationsEnabledChanged (bool status);
void chatNotificationSoundEnabledChanged (bool status);
void chatNotificationSoundPathChanged (const QString &path);
void fileTransferUrlChanged (const QString &url);
void mediaEncryptionChanged (MediaEncryption encryption);
void limeStateChanged (bool state);
void contactsEnabledChanged (bool status);
// Network. ------------------------------------------------------------------
void showNetworkSettingsChanged (bool status);
void dtmfsProtocolChanged ();
void ipv6EnabledChanged (bool status);
void downloadBandWidthChanged (int bandwidth);
void uploadBandWidthChanged (int bandwidth);
bool adaptiveRateControlEnabledChanged (bool status);
void tcpPortChanged (int port);
void udpPortChanged (int port);
void audioPortRangeChanged (int a, int b);
void videoPortRangeChanged (int a, int b);
void iceEnabledChanged (bool status);
void turnEnabledChanged (bool status);
void stunServerChanged (const QString &server);
void turnUserChanged (const QString &user);
void turnPasswordChanged (const QString &password);
void dscpSipChanged (int dscp);
void dscpAudioChanged (int dscp);
void dscpVideoChanged (int dscp);
void rlsUriEnabledChanged (bool status);
void rlsUriChanged ();
// UI. -----------------------------------------------------------------------
void textMessageFontChanged(const QFont& font);
void textMessageFontSizeChanged(const int& size);
void emojiFontChanged(const QFont& font);
void emojiFontSizeChanged(const int& size);
void savedScreenshotsFolderChanged (const QString &folder);
void savedCallsFolderChanged (const QString &folder);
void downloadFolderChanged (const QString &folder);
void remoteProvisioningChanged (const QString &remoteProvisioning);
void remoteProvisioningNotChanged (const QString &remoteProvisioning);
void flexiAPIUrlChanged (const QString &url);
void exitOnCloseChanged (bool value);
void mipmapEnabledChanged();
void useMinimalTimelineFilterChanged();
void sipDisplayModeChanged();
void checkForUpdateEnabledChanged();
void versionCheckUrlChanged();
void versionCheckTypeChanged();
void magicSearchMaxResultsChanged();
void dontAskAgainInfoEncryptionChanged();
void haveDontAskAgainChoicesChanged();
// Advanced. -----------------------------------------------------------------
void logsFolderChanged (const QString &folder);
void logsUploadUrlChanged (const QString &url);
void logsEnabledChanged (bool status);
void fullLogsEnabledChanged ();
void logsEmailChanged (const QString &email);
void vfsEncryptedChanged();
void contactImporterChanged();
bool developerSettingsEnabledChanged (bool status);
bool isInCallChanged(bool);
private:
int mCurrentSettingsTab = 0;
MediastreamerUtils::SimpleCaptureGraph *mSimpleCaptureGraph = nullptr;
int mCaptureGraphListenerCount = 0;
#ifdef ENABLE_QT_KEYCHAIN
VfsUtils mVfsUtils;
#endif
std::shared_ptr mConfig;
};
Q_DECLARE_METATYPE(std::shared_ptr);
#endif // SETTINGS_MODEL_H_