fix #LINQT-1486 set default conference layout in parameters
LINQT-1487 add security/encryption settings
This commit is contained in:
parent
d5bc7c071b
commit
7faa4cba47
16 changed files with 305 additions and 20 deletions
|
|
@ -178,7 +178,7 @@ CallCore::CallCore(const std::shared_ptr<linphone::Call> &call) : QObject(nullpt
|
||||||
}
|
}
|
||||||
mMicrophoneVolume = call->getRecordVolume();
|
mMicrophoneVolume = call->getRecordVolume();
|
||||||
mRecordable = mState == LinphoneEnums::CallState::StreamsRunning;
|
mRecordable = mState == LinphoneEnums::CallState::StreamsRunning;
|
||||||
mConferenceVideoLayout = mCallModel->getConferenceVideoLayout();
|
mConferenceVideoLayout = LinphoneEnums::fromLinphone(SettingsModel::getInstance()->getDefaultConferenceLayout());
|
||||||
auto videoSource = call->getVideoSource();
|
auto videoSource = call->getVideoSource();
|
||||||
mVideoSourceDescriptor = VideoSourceDescriptorCore::create(videoSource ? videoSource->clone() : nullptr);
|
mVideoSourceDescriptor = VideoSourceDescriptorCore::create(videoSource ? videoSource->clone() : nullptr);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -105,7 +105,7 @@ ConferenceInfoCore::ConferenceInfoCore(std::shared_ptr<linphone::ConferenceInfo>
|
||||||
auto cleanedClonedAddress = accountAddress->clone();
|
auto cleanedClonedAddress = accountAddress->clone();
|
||||||
cleanedClonedAddress->clean();
|
cleanedClonedAddress->clean();
|
||||||
auto address = Utils::coreStringToAppString(cleanedClonedAddress->asStringUriOnly());
|
auto address = Utils::coreStringToAppString(cleanedClonedAddress->asStringUriOnly());
|
||||||
App::postCoreAsync([this, address]() { mOrganizerAddress = address; });
|
App::postCoreAsync([this, address]() { setOrganizerAddress(address); });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -58,6 +58,16 @@ SettingsCore::SettingsCore(QObject *parent) : QObject(parent) {
|
||||||
mCaptureDevice = settingsModel->getCaptureDevice();
|
mCaptureDevice = settingsModel->getCaptureDevice();
|
||||||
mPlaybackDevice = settingsModel->getPlaybackDevice();
|
mPlaybackDevice = settingsModel->getPlaybackDevice();
|
||||||
|
|
||||||
|
mConferenceLayouts = LinphoneEnums::conferenceLayoutsToVariant();
|
||||||
|
mConferenceLayout =
|
||||||
|
LinphoneEnums::toVariant(LinphoneEnums::fromLinphone(settingsModel->getDefaultConferenceLayout()));
|
||||||
|
|
||||||
|
mMediaEncryptions = LinphoneEnums::mediaEncryptionsToVariant();
|
||||||
|
mMediaEncryption =
|
||||||
|
LinphoneEnums::toVariant(LinphoneEnums::fromLinphone(settingsModel->getDefaultMediaEncryption()));
|
||||||
|
|
||||||
|
mMediaEncryptionMandatory = settingsModel->getMediaEncryptionMandatory();
|
||||||
|
|
||||||
mCaptureGain = settingsModel->getCaptureGain();
|
mCaptureGain = settingsModel->getCaptureGain();
|
||||||
mPlaybackGain = settingsModel->getPlaybackGain();
|
mPlaybackGain = settingsModel->getPlaybackGain();
|
||||||
|
|
||||||
|
|
@ -258,6 +268,46 @@ void SettingsCore::setSelf(QSharedPointer<SettingsCore> me) {
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
mSettingsModelConnection->makeConnectToCore(&SettingsCore::lSetConferenceLayout, [this](QVariantMap layout) {
|
||||||
|
auto linLayout = LinphoneEnums::toLinphone(LinphoneEnums::ConferenceLayout(layout["id"].toInt()));
|
||||||
|
mSettingsModelConnection->invokeToModel(
|
||||||
|
[this, linLayout]() { SettingsModel::getInstance()->setDefaultConferenceLayout(linLayout); });
|
||||||
|
});
|
||||||
|
mSettingsModelConnection->makeConnectToModel(&SettingsModel::conferenceLayoutChanged, [this]() {
|
||||||
|
auto layout = LinphoneEnums::fromLinphone(SettingsModel::getInstance()->getDefaultConferenceLayout());
|
||||||
|
mSettingsModelConnection->invokeToCore([this, layout]() {
|
||||||
|
mConferenceLayout = LinphoneEnums::toVariant(layout);
|
||||||
|
emit conferenceLayoutChanged();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
mSettingsModelConnection->makeConnectToCore(
|
||||||
|
&SettingsCore::lSetMediaEncryption, [this](const QVariantMap &encryption) {
|
||||||
|
auto linEncryption = LinphoneEnums::toLinphone(LinphoneEnums::MediaEncryption(encryption["id"].toInt()));
|
||||||
|
mSettingsModelConnection->invokeToModel(
|
||||||
|
[this, linEncryption]() { SettingsModel::getInstance()->setDefaultMediaEncryption(linEncryption); });
|
||||||
|
});
|
||||||
|
mSettingsModelConnection->makeConnectToModel(&SettingsModel::mediaEncryptionChanged, [this]() {
|
||||||
|
auto encryption = LinphoneEnums::toVariant(
|
||||||
|
LinphoneEnums::fromLinphone(SettingsModel::getInstance()->getDefaultMediaEncryption()));
|
||||||
|
mSettingsModelConnection->invokeToCore([this, encryption]() {
|
||||||
|
mMediaEncryption = encryption;
|
||||||
|
emit mediaEncryptionChanged();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
mSettingsModelConnection->makeConnectToCore(&SettingsCore::lSetMediaEncryptionMandatory, [this](bool mandatory) {
|
||||||
|
mSettingsModelConnection->invokeToModel(
|
||||||
|
[this, mandatory]() { SettingsModel::getInstance()->setMediaEncryptionMandatory(mandatory); });
|
||||||
|
});
|
||||||
|
mSettingsModelConnection->makeConnectToModel(&SettingsModel::mediaEncryptionMandatoryChanged, [this]() {
|
||||||
|
auto mandatory = SettingsModel::getInstance()->getMediaEncryptionMandatory();
|
||||||
|
mSettingsModelConnection->invokeToCore([this, mandatory]() {
|
||||||
|
mMediaEncryptionMandatory = mandatory;
|
||||||
|
emit mediaEncryptionMandatoryChanged(mandatory);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
mSettingsModelConnection->makeConnectToModel(&SettingsModel::videoDevicesChanged,
|
mSettingsModelConnection->makeConnectToModel(&SettingsModel::videoDevicesChanged,
|
||||||
[this](const QStringList devices) {
|
[this](const QStringList devices) {
|
||||||
mSettingsModelConnection->invokeToCore([this, devices]() {
|
mSettingsModelConnection->invokeToCore([this, devices]() {
|
||||||
|
|
@ -391,6 +441,18 @@ QVariantList SettingsCore::getRingerDevices() const {
|
||||||
return mRingerDevices;
|
return mRingerDevices;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QVariantList SettingsCore::getConferenceLayouts() const {
|
||||||
|
return mConferenceLayouts;
|
||||||
|
}
|
||||||
|
|
||||||
|
QVariantList SettingsCore::getMediaEncryptions() const {
|
||||||
|
return mMediaEncryptions;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool SettingsCore::isMediaEncryptionMandatory() const {
|
||||||
|
return mMediaEncryptionMandatory;
|
||||||
|
}
|
||||||
|
|
||||||
int SettingsCore::getVideoDeviceIndex() const {
|
int SettingsCore::getVideoDeviceIndex() const {
|
||||||
return mVideoDevices.indexOf(mVideoDevice);
|
return mVideoDevices.indexOf(mVideoDevice);
|
||||||
}
|
}
|
||||||
|
|
@ -407,6 +469,14 @@ float SettingsCore::getCaptureGain() const {
|
||||||
return mCaptureGain;
|
return mCaptureGain;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QVariantMap SettingsCore::getConferenceLayout() const {
|
||||||
|
return mConferenceLayout;
|
||||||
|
}
|
||||||
|
|
||||||
|
QVariantMap SettingsCore::getMediaEncryption() const {
|
||||||
|
return mMediaEncryption;
|
||||||
|
}
|
||||||
|
|
||||||
float SettingsCore::getPlaybackGain() const {
|
float SettingsCore::getPlaybackGain() const {
|
||||||
return mPlaybackGain;
|
return mPlaybackGain;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -50,6 +50,8 @@ public:
|
||||||
Q_PROPERTY(QVariantList captureDevices READ getCaptureDevices NOTIFY captureDevicesChanged)
|
Q_PROPERTY(QVariantList captureDevices READ getCaptureDevices NOTIFY captureDevicesChanged)
|
||||||
Q_PROPERTY(QVariantList playbackDevices READ getPlaybackDevices NOTIFY playbackDevicesChanged)
|
Q_PROPERTY(QVariantList playbackDevices READ getPlaybackDevices NOTIFY playbackDevicesChanged)
|
||||||
Q_PROPERTY(QVariantList ringerDevices READ getRingerDevices NOTIFY ringerDevicesChanged)
|
Q_PROPERTY(QVariantList ringerDevices READ getRingerDevices NOTIFY ringerDevicesChanged)
|
||||||
|
Q_PROPERTY(QVariantList conferenceLayouts READ getConferenceLayouts NOTIFY conferenceLayoutsChanged)
|
||||||
|
Q_PROPERTY(QVariantList mediaEncryptions READ getMediaEncryptions NOTIFY mediaEncryptionsChanged)
|
||||||
|
|
||||||
Q_PROPERTY(float playbackGain READ getPlaybackGain WRITE lSetPlaybackGain NOTIFY playbackGainChanged)
|
Q_PROPERTY(float playbackGain READ getPlaybackGain WRITE lSetPlaybackGain NOTIFY playbackGainChanged)
|
||||||
Q_PROPERTY(float captureGain READ getCaptureGain WRITE lSetCaptureGain NOTIFY captureGainChanged)
|
Q_PROPERTY(float captureGain READ getCaptureGain WRITE lSetCaptureGain NOTIFY captureGainChanged)
|
||||||
|
|
@ -58,6 +60,13 @@ public:
|
||||||
Q_PROPERTY(QVariantMap playbackDevice READ getPlaybackDevice WRITE lSetPlaybackDevice NOTIFY playbackDeviceChanged)
|
Q_PROPERTY(QVariantMap playbackDevice READ getPlaybackDevice WRITE lSetPlaybackDevice NOTIFY playbackDeviceChanged)
|
||||||
Q_PROPERTY(QVariantMap ringerDevice READ getRingerDevice WRITE lSetRingerDevice NOTIFY ringerDeviceChanged)
|
Q_PROPERTY(QVariantMap ringerDevice READ getRingerDevice WRITE lSetRingerDevice NOTIFY ringerDeviceChanged)
|
||||||
|
|
||||||
|
Q_PROPERTY(
|
||||||
|
QVariantMap conferenceLayout READ getConferenceLayout WRITE lSetConferenceLayout NOTIFY conferenceLayoutChanged)
|
||||||
|
Q_PROPERTY(
|
||||||
|
QVariantMap mediaEncryption READ getMediaEncryption WRITE lSetMediaEncryption NOTIFY mediaEncryptionChanged)
|
||||||
|
Q_PROPERTY(bool mediaEncryptionMandatory READ isMediaEncryptionMandatory WRITE lSetMediaEncryptionMandatory NOTIFY
|
||||||
|
mediaEncryptionMandatoryChanged)
|
||||||
|
|
||||||
Q_PROPERTY(QStringList videoDevices READ getVideoDevices NOTIFY videoDevicesChanged)
|
Q_PROPERTY(QStringList videoDevices READ getVideoDevices NOTIFY videoDevicesChanged)
|
||||||
Q_PROPERTY(QString videoDevice READ getVideoDevice WRITE lSetVideoDevice NOTIFY videoDeviceChanged)
|
Q_PROPERTY(QString videoDevice READ getVideoDevice WRITE lSetVideoDevice NOTIFY videoDeviceChanged)
|
||||||
Q_PROPERTY(int videoDeviceIndex READ getVideoDeviceIndex NOTIFY videoDeviceChanged)
|
Q_PROPERTY(int videoDeviceIndex READ getVideoDeviceIndex NOTIFY videoDeviceChanged)
|
||||||
|
|
@ -109,13 +118,19 @@ public:
|
||||||
|
|
||||||
float getCaptureGain() const;
|
float getCaptureGain() const;
|
||||||
|
|
||||||
|
QVariantMap getMediaEncryption() const;
|
||||||
|
bool isMediaEncryptionMandatory() const;
|
||||||
|
|
||||||
QVariantList getCaptureDevices() const;
|
QVariantList getCaptureDevices() const;
|
||||||
QVariantList getPlaybackDevices() const;
|
QVariantList getPlaybackDevices() const;
|
||||||
QVariantList getRingerDevices() const;
|
QVariantList getRingerDevices() const;
|
||||||
|
QVariantList getConferenceLayouts() const;
|
||||||
|
QVariantList getMediaEncryptions() const;
|
||||||
|
|
||||||
QVariantMap getCaptureDevice() const;
|
QVariantMap getCaptureDevice() const;
|
||||||
QVariantMap getPlaybackDevice() const;
|
QVariantMap getPlaybackDevice() const;
|
||||||
QVariantMap getRingerDevice() const;
|
QVariantMap getRingerDevice() const;
|
||||||
|
QVariantMap getConferenceLayout() const;
|
||||||
|
|
||||||
QString getVideoDevice() const {
|
QString getVideoDevice() const {
|
||||||
return mVideoDevice;
|
return mVideoDevice;
|
||||||
|
|
@ -193,10 +208,21 @@ signals:
|
||||||
void captureDevicesChanged(const QVariantList &devices);
|
void captureDevicesChanged(const QVariantList &devices);
|
||||||
void playbackDevicesChanged(const QVariantList &devices);
|
void playbackDevicesChanged(const QVariantList &devices);
|
||||||
void ringerDevicesChanged(const QVariantList &devices);
|
void ringerDevicesChanged(const QVariantList &devices);
|
||||||
|
void conferenceLayoutsChanged(const QVariantList &layouts);
|
||||||
|
void mediaEncryptionsChanged(const QVariantList &encryptions);
|
||||||
|
|
||||||
void lSetCaptureDevice(const QVariantMap &device);
|
void lSetCaptureDevice(const QVariantMap &device);
|
||||||
void captureDeviceChanged(const QVariantMap &device);
|
void captureDeviceChanged(const QVariantMap &device);
|
||||||
|
|
||||||
|
void lSetConferenceLayout(QVariantMap confLayout);
|
||||||
|
void conferenceLayoutChanged();
|
||||||
|
|
||||||
|
void lSetMediaEncryption(const QVariantMap &id);
|
||||||
|
void mediaEncryptionChanged();
|
||||||
|
|
||||||
|
void lSetMediaEncryptionMandatory(bool mandatory);
|
||||||
|
void mediaEncryptionMandatoryChanged(bool mandatory);
|
||||||
|
|
||||||
void lSetPlaybackDevice(const QVariantMap &device);
|
void lSetPlaybackDevice(const QVariantMap &device);
|
||||||
void playbackDeviceChanged(const QVariantMap &device);
|
void playbackDeviceChanged(const QVariantMap &device);
|
||||||
|
|
||||||
|
|
@ -239,6 +265,9 @@ private:
|
||||||
|
|
||||||
// Security
|
// Security
|
||||||
bool mVfsEnabled;
|
bool mVfsEnabled;
|
||||||
|
QVariantList mMediaEncryptions;
|
||||||
|
QVariantMap mMediaEncryption;
|
||||||
|
bool mMediaEncryptionMandatory;
|
||||||
|
|
||||||
// Call
|
// Call
|
||||||
bool mVideoEnabled;
|
bool mVideoEnabled;
|
||||||
|
|
@ -249,9 +278,11 @@ private:
|
||||||
QVariantList mCaptureDevices;
|
QVariantList mCaptureDevices;
|
||||||
QVariantList mPlaybackDevices;
|
QVariantList mPlaybackDevices;
|
||||||
QVariantList mRingerDevices;
|
QVariantList mRingerDevices;
|
||||||
|
QVariantList mConferenceLayouts;
|
||||||
QVariantMap mCaptureDevice;
|
QVariantMap mCaptureDevice;
|
||||||
QVariantMap mPlaybackDevice;
|
QVariantMap mPlaybackDevice;
|
||||||
QVariantMap mRingerDevice;
|
QVariantMap mRingerDevice;
|
||||||
|
QVariantMap mConferenceLayout;
|
||||||
|
|
||||||
// Video
|
// Video
|
||||||
QStringList mVideoDevices;
|
QStringList mVideoDevices;
|
||||||
|
|
|
||||||
|
|
@ -296,6 +296,39 @@ void SettingsModel::setCaptureDevice(const QVariantMap &device) {
|
||||||
} else qWarning() << "Cannot set Capture device. The ID cannot be matched with an existant device : " << device;
|
} else qWarning() << "Cannot set Capture device. The ID cannot be matched with an existant device : " << device;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
linphone::Conference::Layout SettingsModel::getDefaultConferenceLayout() const {
|
||||||
|
mustBeInLinphoneThread(log().arg(Q_FUNC_INFO));
|
||||||
|
return CoreModel::getInstance()->getCore()->getDefaultConferenceLayout();
|
||||||
|
}
|
||||||
|
|
||||||
|
void SettingsModel::setDefaultConferenceLayout(const linphone::Conference::Layout layout) {
|
||||||
|
mustBeInLinphoneThread(log().arg(Q_FUNC_INFO));
|
||||||
|
CoreModel::getInstance()->getCore()->setDefaultConferenceLayout(layout);
|
||||||
|
emit conferenceLayoutChanged();
|
||||||
|
}
|
||||||
|
|
||||||
|
linphone::MediaEncryption SettingsModel::getDefaultMediaEncryption() const {
|
||||||
|
mustBeInLinphoneThread(log().arg(Q_FUNC_INFO));
|
||||||
|
return CoreModel::getInstance()->getCore()->getMediaEncryption();
|
||||||
|
}
|
||||||
|
|
||||||
|
void SettingsModel::setDefaultMediaEncryption(const linphone::MediaEncryption encryption) {
|
||||||
|
mustBeInLinphoneThread(log().arg(Q_FUNC_INFO));
|
||||||
|
CoreModel::getInstance()->getCore()->setMediaEncryption(encryption);
|
||||||
|
emit mediaEncryptionChanged();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool SettingsModel::getMediaEncryptionMandatory() const {
|
||||||
|
mustBeInLinphoneThread(log().arg(Q_FUNC_INFO));
|
||||||
|
return CoreModel::getInstance()->getCore()->isMediaEncryptionMandatory();
|
||||||
|
}
|
||||||
|
|
||||||
|
void SettingsModel::setMediaEncryptionMandatory(bool mandatory) {
|
||||||
|
mustBeInLinphoneThread(log().arg(Q_FUNC_INFO));
|
||||||
|
CoreModel::getInstance()->getCore()->setMediaEncryptionMandatory(mandatory);
|
||||||
|
emit mediaEncryptionMandatoryChanged();
|
||||||
|
}
|
||||||
|
|
||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
|
|
||||||
QVariantMap SettingsModel::getPlaybackDevice() const {
|
QVariantMap SettingsModel::getPlaybackDevice() const {
|
||||||
|
|
|
||||||
|
|
@ -93,6 +93,15 @@ public:
|
||||||
QVariantMap getPlaybackDevice() const;
|
QVariantMap getPlaybackDevice() const;
|
||||||
void setPlaybackDevice(const QVariantMap &device);
|
void setPlaybackDevice(const QVariantMap &device);
|
||||||
|
|
||||||
|
linphone::Conference::Layout getDefaultConferenceLayout() const;
|
||||||
|
void setDefaultConferenceLayout(const linphone::Conference::Layout layout);
|
||||||
|
|
||||||
|
linphone::MediaEncryption getDefaultMediaEncryption() const;
|
||||||
|
void setDefaultMediaEncryption(const linphone::MediaEncryption encryption);
|
||||||
|
|
||||||
|
bool getMediaEncryptionMandatory() const;
|
||||||
|
void setMediaEncryptionMandatory(bool mandatory);
|
||||||
|
|
||||||
QVariantMap getRingerDevice() const;
|
QVariantMap getRingerDevice() const;
|
||||||
void setRingerDevice(const QVariantMap &device);
|
void setRingerDevice(const QVariantMap &device);
|
||||||
|
|
||||||
|
|
@ -183,6 +192,9 @@ signals:
|
||||||
void playbackDeviceChanged(QVariantMap device);
|
void playbackDeviceChanged(QVariantMap device);
|
||||||
void ringerDeviceChanged(QVariantMap device);
|
void ringerDeviceChanged(QVariantMap device);
|
||||||
void videoDeviceChanged(QString device);
|
void videoDeviceChanged(QString device);
|
||||||
|
void conferenceLayoutChanged();
|
||||||
|
void mediaEncryptionChanged();
|
||||||
|
void mediaEncryptionMandatoryChanged();
|
||||||
|
|
||||||
void showAudioCodecsChanged(bool status);
|
void showAudioCodecsChanged(bool status);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -69,6 +69,7 @@ public:
|
||||||
static void updateCodecs();
|
static void updateCodecs();
|
||||||
|
|
||||||
static QVariantMap createVariant(const std::shared_ptr<const linphone::AudioDevice> &device);
|
static QVariantMap createVariant(const std::shared_ptr<const linphone::AudioDevice> &device);
|
||||||
|
static QVariantMap createVariant(linphone::Conference::Layout layout);
|
||||||
|
|
||||||
static QString getOsProduct();
|
static QString getOsProduct();
|
||||||
static QString computeUserAgent(const std::shared_ptr<linphone::Config> &config);
|
static QString computeUserAgent(const std::shared_ptr<linphone::Config> &config);
|
||||||
|
|
|
||||||
|
|
@ -57,18 +57,43 @@ LinphoneEnums::MediaEncryption LinphoneEnums::fromLinphone(const linphone::Media
|
||||||
QString LinphoneEnums::toString(LinphoneEnums::MediaEncryption encryption) {
|
QString LinphoneEnums::toString(LinphoneEnums::MediaEncryption encryption) {
|
||||||
switch (encryption) {
|
switch (encryption) {
|
||||||
case LinphoneEnums::MediaEncryption::Dtls:
|
case LinphoneEnums::MediaEncryption::Dtls:
|
||||||
return "DTLS";
|
return QObject::tr("DTLS");
|
||||||
case LinphoneEnums::MediaEncryption::None:
|
case LinphoneEnums::MediaEncryption::None:
|
||||||
return "None";
|
return QObject::tr("None");
|
||||||
case LinphoneEnums::MediaEncryption::Srtp:
|
case LinphoneEnums::MediaEncryption::Srtp:
|
||||||
return "SRTP";
|
return QObject::tr("SRTP");
|
||||||
case LinphoneEnums::MediaEncryption::Zrtp:
|
case LinphoneEnums::MediaEncryption::Zrtp:
|
||||||
return "ZRTP";
|
return QObject::tr("ZRTP - Post quantique");
|
||||||
default:
|
default:
|
||||||
return QString();
|
return QString();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QVariantList LinphoneEnums::mediaEncryptionsToVariant(QList<LinphoneEnums::MediaEncryption> list) {
|
||||||
|
QVariantList variantList;
|
||||||
|
for (auto &item : list)
|
||||||
|
variantList.append(LinphoneEnums::toVariant(item));
|
||||||
|
return variantList;
|
||||||
|
}
|
||||||
|
|
||||||
|
QVariantMap LinphoneEnums::toVariant(LinphoneEnums::MediaEncryption encryption) {
|
||||||
|
QVariantMap map;
|
||||||
|
if (encryption == LinphoneEnums::MediaEncryption::None) {
|
||||||
|
map.insert("id", QVariant::fromValue(encryption));
|
||||||
|
map.insert("display_name", toString(encryption));
|
||||||
|
} else if (encryption == LinphoneEnums::MediaEncryption::Srtp) {
|
||||||
|
map.insert("id", QVariant::fromValue(encryption));
|
||||||
|
map.insert("display_name", toString(encryption));
|
||||||
|
} else if (encryption == LinphoneEnums::MediaEncryption::Zrtp) {
|
||||||
|
map.insert("id", QVariant::fromValue(encryption));
|
||||||
|
map.insert("display_name", toString(encryption));
|
||||||
|
} else if (encryption == LinphoneEnums::MediaEncryption::Dtls) {
|
||||||
|
map.insert("id", QVariant::fromValue(encryption));
|
||||||
|
map.insert("display_name", toString(encryption));
|
||||||
|
}
|
||||||
|
return map;
|
||||||
|
}
|
||||||
|
|
||||||
linphone::Friend::Capability LinphoneEnums::toLinphone(const LinphoneEnums::FriendCapability &data) {
|
linphone::Friend::Capability LinphoneEnums::toLinphone(const LinphoneEnums::FriendCapability &data) {
|
||||||
return static_cast<linphone::Friend::Capability>(data);
|
return static_cast<linphone::Friend::Capability>(data);
|
||||||
}
|
}
|
||||||
|
|
@ -177,6 +202,31 @@ LinphoneEnums::ConferenceLayout LinphoneEnums::fromLinphone(const linphone::Conf
|
||||||
return static_cast<LinphoneEnums::ConferenceLayout>(layout);
|
return static_cast<LinphoneEnums::ConferenceLayout>(layout);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QString LinphoneEnums::toString(LinphoneEnums::ConferenceLayout layout) {
|
||||||
|
if (layout == LinphoneEnums::ConferenceLayout::ActiveSpeaker) return QObject::tr("Participant actif");
|
||||||
|
else if (layout == LinphoneEnums::ConferenceLayout::Grid) return QObject::tr("Grille");
|
||||||
|
else return QObject::tr("Audio seulement");
|
||||||
|
}
|
||||||
|
|
||||||
|
QVariantList LinphoneEnums::conferenceLayoutsToVariant(QList<LinphoneEnums::ConferenceLayout> list) {
|
||||||
|
QVariantList variantList;
|
||||||
|
for (auto &item : list)
|
||||||
|
variantList.append(LinphoneEnums::toVariant(item));
|
||||||
|
return variantList;
|
||||||
|
}
|
||||||
|
|
||||||
|
QVariantMap LinphoneEnums::toVariant(LinphoneEnums::ConferenceLayout layout) {
|
||||||
|
QVariantMap map;
|
||||||
|
if (layout == LinphoneEnums::ConferenceLayout::ActiveSpeaker) {
|
||||||
|
map.insert("id", QVariant::fromValue(layout));
|
||||||
|
map.insert("display_name", toString(layout));
|
||||||
|
} else {
|
||||||
|
map.insert("id", QVariant::fromValue(layout));
|
||||||
|
map.insert("display_name", toString(layout));
|
||||||
|
}
|
||||||
|
return map;
|
||||||
|
}
|
||||||
|
|
||||||
linphone::ConferenceInfo::State LinphoneEnums::toLinphone(const LinphoneEnums::ConferenceInfoState &state) {
|
linphone::ConferenceInfo::State LinphoneEnums::toLinphone(const LinphoneEnums::ConferenceInfoState &state) {
|
||||||
return static_cast<linphone::ConferenceInfo::State>(state);
|
return static_cast<linphone::ConferenceInfo::State>(state);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -45,6 +45,9 @@ Q_ENUM_NS(MediaEncryption)
|
||||||
linphone::MediaEncryption toLinphone(const LinphoneEnums::MediaEncryption &encryption);
|
linphone::MediaEncryption toLinphone(const LinphoneEnums::MediaEncryption &encryption);
|
||||||
LinphoneEnums::MediaEncryption fromLinphone(const linphone::MediaEncryption &encryption);
|
LinphoneEnums::MediaEncryption fromLinphone(const linphone::MediaEncryption &encryption);
|
||||||
QString toString(LinphoneEnums::MediaEncryption encryption);
|
QString toString(LinphoneEnums::MediaEncryption encryption);
|
||||||
|
QVariantList mediaEncryptionsToVariant(QList<MediaEncryption> list = {MediaEncryption::None, MediaEncryption::Srtp,
|
||||||
|
MediaEncryption::Zrtp, MediaEncryption::Dtls});
|
||||||
|
QVariantMap toVariant(LinphoneEnums::MediaEncryption encryption);
|
||||||
|
|
||||||
enum class FriendCapability {
|
enum class FriendCapability {
|
||||||
None = int(linphone::Friend::Capability::None),
|
None = int(linphone::Friend::Capability::None),
|
||||||
|
|
@ -220,6 +223,10 @@ Q_ENUM_NS(ConferenceLayout)
|
||||||
|
|
||||||
linphone::Conference::Layout toLinphone(const LinphoneEnums::ConferenceLayout &layout);
|
linphone::Conference::Layout toLinphone(const LinphoneEnums::ConferenceLayout &layout);
|
||||||
LinphoneEnums::ConferenceLayout fromLinphone(const linphone::Conference::Layout &layout);
|
LinphoneEnums::ConferenceLayout fromLinphone(const linphone::Conference::Layout &layout);
|
||||||
|
QVariantList conferenceLayoutsToVariant(QList<ConferenceLayout> list = {ConferenceLayout::Grid,
|
||||||
|
ConferenceLayout::ActiveSpeaker});
|
||||||
|
QVariantMap toVariant(LinphoneEnums::ConferenceLayout layout);
|
||||||
|
QString toString(LinphoneEnums::ConferenceLayout layout);
|
||||||
|
|
||||||
enum class ConferenceInfoState {
|
enum class ConferenceInfoState {
|
||||||
New = int(linphone::ConferenceInfo::State::New),
|
New = int(linphone::ConferenceInfo::State::New),
|
||||||
|
|
|
||||||
|
|
@ -115,6 +115,7 @@ list(APPEND _LINPHONEAPP_QML_FILES
|
||||||
view/Page/Layout/Settings/AccountSettingsParametersLayout.qml
|
view/Page/Layout/Settings/AccountSettingsParametersLayout.qml
|
||||||
view/Page/Layout/Settings/CallSettingsLayout.qml
|
view/Page/Layout/Settings/CallSettingsLayout.qml
|
||||||
view/Page/Layout/Settings/ContactsSettingsLayout.qml
|
view/Page/Layout/Settings/ContactsSettingsLayout.qml
|
||||||
|
view/Page/Layout/Settings/MeetingsSettingsLayout.qml
|
||||||
view/Page/Layout/Settings/ContactsSettingsProviderLayout.qml
|
view/Page/Layout/Settings/ContactsSettingsProviderLayout.qml
|
||||||
view/Page/Layout/Settings/DebugSettingsLayout.qml
|
view/Page/Layout/Settings/DebugSettingsLayout.qml
|
||||||
view/Page/Layout/Settings/LdapSettingsLayout.qml
|
view/Page/Layout/Settings/LdapSettingsLayout.qml
|
||||||
|
|
|
||||||
|
|
@ -17,12 +17,12 @@ FocusScope {
|
||||||
anchors.leftMargin: 17 * DefaultStyle.dp
|
anchors.leftMargin: 17 * DefaultStyle.dp
|
||||||
anchors.rightMargin: 17 * DefaultStyle.dp
|
anchors.rightMargin: 17 * DefaultStyle.dp
|
||||||
spacing: 12 * DefaultStyle.dp
|
spacing: 12 * DefaultStyle.dp
|
||||||
Text {
|
// Text {
|
||||||
Layout.fillWidth: true
|
// Layout.fillWidth: true
|
||||||
text: qsTr("La disposition choisie sera enregistrée pour vos prochaines réunions")
|
// text: qsTr("La disposition choisie sera enregistrée pour vos prochaines réunions")
|
||||||
font.pixelSize: 14 * DefaultStyle.dp
|
// font.pixelSize: 14 * DefaultStyle.dp
|
||||||
color: DefaultStyle.main2_500main
|
// color: DefaultStyle.main2_500main
|
||||||
}
|
// }
|
||||||
RoundedPane {
|
RoundedPane {
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
contentItem: ColumnLayout {
|
contentItem: ColumnLayout {
|
||||||
|
|
|
||||||
|
|
@ -9,11 +9,7 @@ import SettingsCpp
|
||||||
AbstractSettingsMenu {
|
AbstractSettingsMenu {
|
||||||
layoutsPath: "qrc:/qt/qml/Linphone/view/Page/Layout/Settings"
|
layoutsPath: "qrc:/qt/qml/Linphone/view/Page/Layout/Settings"
|
||||||
titleText: qsTr("Mon compte")
|
titleText: qsTr("Mon compte")
|
||||||
property AccountProxy accounts: AccountProxy {
|
property AccountGui account
|
||||||
id: accountProxy
|
|
||||||
sourceModel: AppCpp.accounts
|
|
||||||
}
|
|
||||||
property AccountGui account: accountProxy.defaultAccount
|
|
||||||
signal accountRemoved()
|
signal accountRemoved()
|
||||||
families: [
|
families: [
|
||||||
{title: qsTr("Général"), layout: "AccountSettingsGeneralLayout", model: account},
|
{title: qsTr("Général"), layout: "AccountSettingsGeneralLayout", model: account},
|
||||||
|
|
|
||||||
|
|
@ -9,10 +9,9 @@ AbstractSettingsMenu {
|
||||||
titleText: qsTr("Paramètres")
|
titleText: qsTr("Paramètres")
|
||||||
families: [
|
families: [
|
||||||
{title: qsTr("Appels"), layout: "CallSettingsLayout"},
|
{title: qsTr("Appels"), layout: "CallSettingsLayout"},
|
||||||
//{title: qsTr("Sécurité"), layout: "SecuritySettingsLayout"},
|
|
||||||
{title: qsTr("Conversations"), layout: "ChatSettingsLayout", visible: !SettingsCpp.disableChatFeature},
|
{title: qsTr("Conversations"), layout: "ChatSettingsLayout", visible: !SettingsCpp.disableChatFeature},
|
||||||
{title: qsTr("Contacts"), layout: "ContactsSettingsLayout"},
|
{title: qsTr("Contacts"), layout: "ContactsSettingsLayout"},
|
||||||
//{title: qsTr("Réunions"), layout: "MeetingsSettingsLayout", visible: !SettingsCpp.disableMeetingsFeature},
|
{title: qsTr("Réunions"), layout: "MeetingsSettingsLayout", visible: !SettingsCpp.disableMeetingsFeature},
|
||||||
//{title: qsTr("Affichage"), layout: "DisplaySettingsLayout"},
|
//{title: qsTr("Affichage"), layout: "DisplaySettingsLayout"},
|
||||||
{title: qsTr("Réseau"), layout: "NetworkSettingsLayout"},
|
{title: qsTr("Réseau"), layout: "NetworkSettingsLayout"},
|
||||||
{title: qsTr("Paramètres avancés"), layout: "AdvancedSettingsLayout"}
|
{title: qsTr("Paramètres avancés"), layout: "AdvancedSettingsLayout"}
|
||||||
|
|
|
||||||
|
|
@ -21,6 +21,11 @@ AbstractSettingsLayout {
|
||||||
contentComponent: remoteProvisioningComponent,
|
contentComponent: remoteProvisioningComponent,
|
||||||
hideTopSeparator: true
|
hideTopSeparator: true
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
title: qsTr("Sécurité / Chiffrement"),
|
||||||
|
subTitle: "",
|
||||||
|
contentComponent: securityComponent,
|
||||||
|
},
|
||||||
{
|
{
|
||||||
title: qsTr("Codecs audio"),
|
title: qsTr("Codecs audio"),
|
||||||
subTitle: "",
|
subTitle: "",
|
||||||
|
|
@ -82,6 +87,37 @@ AbstractSettingsLayout {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Component {
|
||||||
|
id: securityComponent
|
||||||
|
ColumnLayout {
|
||||||
|
spacing: 20 * DefaultStyle.dp
|
||||||
|
ColumnLayout {
|
||||||
|
spacing: 5 * DefaultStyle.dp
|
||||||
|
Text {
|
||||||
|
text: qsTr("Chiffrement du média")
|
||||||
|
font {
|
||||||
|
pixelSize: 14 * DefaultStyle.dp
|
||||||
|
weight: 700 * DefaultStyle.dp
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ComboSetting {
|
||||||
|
Layout.fillWidth: true
|
||||||
|
Layout.preferredWidth: parent.width
|
||||||
|
entries: SettingsCpp.mediaEncryptions
|
||||||
|
propertyName: "mediaEncryption"
|
||||||
|
textRole: 'display_name'
|
||||||
|
propertyOwner: SettingsCpp
|
||||||
|
}
|
||||||
|
}
|
||||||
|
SwitchSetting {
|
||||||
|
Layout.fillWidth: true
|
||||||
|
titleText: qsTr("Chiffrement du média obligatoire")
|
||||||
|
propertyName: "mediaEncryptionMandatory"
|
||||||
|
propertyOwner: SettingsCpp
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Audio codecs
|
// Audio codecs
|
||||||
//////////////
|
//////////////
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,49 @@
|
||||||
|
|
||||||
|
import QtQuick
|
||||||
|
import QtQuick.Layouts
|
||||||
|
import QtQuick.Controls.Basic as Control
|
||||||
|
import SettingsCpp 1.0
|
||||||
|
import Linphone
|
||||||
|
|
||||||
|
AbstractSettingsLayout {
|
||||||
|
id: mainItem
|
||||||
|
width: parent?.width
|
||||||
|
contentModel: [
|
||||||
|
{
|
||||||
|
title: qsTr("Affichage"),
|
||||||
|
subTitle: "",
|
||||||
|
contentComponent: confDisplayParametersComponent,
|
||||||
|
hideTopMargin: true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
Component {
|
||||||
|
id: confDisplayParametersComponent
|
||||||
|
ColumnLayout {
|
||||||
|
spacing: 5 * DefaultStyle.dp
|
||||||
|
Text {
|
||||||
|
text: qsTr("Mode d’affichage par défaut")
|
||||||
|
font {
|
||||||
|
pixelSize: 14 * DefaultStyle.dp
|
||||||
|
weight: 700 * DefaultStyle.dp
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Text {
|
||||||
|
text: qsTr("Le mode d’affichage des participants en réunions")
|
||||||
|
font {
|
||||||
|
pixelSize: 14 * DefaultStyle.dp
|
||||||
|
weight: 400 * DefaultStyle.dp
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ComboSetting {
|
||||||
|
Layout.fillWidth: true
|
||||||
|
Layout.topMargin: 12 * DefaultStyle.dp
|
||||||
|
Layout.preferredWidth: parent.width
|
||||||
|
entries: SettingsCpp.conferenceLayouts
|
||||||
|
propertyName: "conferenceLayout"
|
||||||
|
propertyOwner: SettingsCpp
|
||||||
|
textRole: 'display_name'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -26,4 +26,4 @@ AbstractSettingsLayout {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Loading…
Reference in a new issue