mirror of
https://gitlab.linphone.org/BC/public/linphone-desktop.git
synced 2026-01-17 11:28:07 +00:00
Simplify audio device description in combobox.
- Use of Map in Combobox. - QML Combobox: Differentiate what we are displaying and the internal Object. - Implement an equality operator for Objects (map).
This commit is contained in:
parent
f40797af3b
commit
9fc3caa63c
10 changed files with 182 additions and 163 deletions
|
|
@ -164,31 +164,34 @@ void SettingsCore::setSelf(QSharedPointer<SettingsCore> me) {
|
|||
});
|
||||
|
||||
// Audio device(s)
|
||||
mSettingsModelConnection->makeConnectToCore(&SettingsCore::lSetCaptureDevice, [this](const QString id) {
|
||||
mSettingsModelConnection->invokeToModel([this, id]() { SettingsModel::getInstance()->setCaptureDevice(id); });
|
||||
mSettingsModelConnection->makeConnectToCore(&SettingsCore::lSetCaptureDevice, [this](QVariantMap device) {
|
||||
mSettingsModelConnection->invokeToModel(
|
||||
[this, device]() { SettingsModel::getInstance()->setCaptureDevice(device); });
|
||||
});
|
||||
mSettingsModelConnection->makeConnectToModel(&SettingsModel::captureDeviceChanged, [this](const QString device) {
|
||||
mSettingsModelConnection->makeConnectToModel(&SettingsModel::captureDeviceChanged, [this](QVariantMap device) {
|
||||
mSettingsModelConnection->invokeToCore([this, device]() {
|
||||
mCaptureDevice = device;
|
||||
emit captureDeviceChanged(device);
|
||||
});
|
||||
});
|
||||
|
||||
mSettingsModelConnection->makeConnectToCore(&SettingsCore::lSetPlaybackDevice, [this](const QString id) {
|
||||
mSettingsModelConnection->invokeToModel([this, id]() { SettingsModel::getInstance()->setPlaybackDevice(id); });
|
||||
mSettingsModelConnection->makeConnectToCore(&SettingsCore::lSetPlaybackDevice, [this](QVariantMap device) {
|
||||
mSettingsModelConnection->invokeToModel(
|
||||
[this, device]() { SettingsModel::getInstance()->setPlaybackDevice(device); });
|
||||
});
|
||||
|
||||
mSettingsModelConnection->makeConnectToModel(&SettingsModel::playbackDeviceChanged, [this](const QString device) {
|
||||
mSettingsModelConnection->makeConnectToModel(&SettingsModel::playbackDeviceChanged, [this](QVariantMap device) {
|
||||
mSettingsModelConnection->invokeToCore([this, device]() {
|
||||
mPlaybackDevice = device;
|
||||
emit playbackDeviceChanged(device);
|
||||
});
|
||||
});
|
||||
mSettingsModelConnection->makeConnectToCore(&SettingsCore::lSetRingerDevice, [this](const QString id) {
|
||||
mSettingsModelConnection->invokeToModel([this, id]() { SettingsModel::getInstance()->setRingerDevice(id); });
|
||||
mSettingsModelConnection->makeConnectToCore(&SettingsCore::lSetRingerDevice, [this](QVariantMap device) {
|
||||
mSettingsModelConnection->invokeToModel(
|
||||
[this, device]() { SettingsModel::getInstance()->setRingerDevice(device); });
|
||||
});
|
||||
|
||||
mSettingsModelConnection->makeConnectToModel(&SettingsModel::ringerDeviceChanged, [this](const QString device) {
|
||||
mSettingsModelConnection->makeConnectToModel(&SettingsModel::ringerDeviceChanged, [this](QVariantMap device) {
|
||||
mSettingsModelConnection->invokeToCore([this, device]() {
|
||||
mRingerDevice = device;
|
||||
emit ringerDeviceChanged(device);
|
||||
|
|
@ -223,28 +226,25 @@ void SettingsCore::setSelf(QSharedPointer<SettingsCore> me) {
|
|||
mSettingsModelConnection->invokeToCore([this, value]() { emit micVolumeChanged(value); });
|
||||
});
|
||||
|
||||
mSettingsModelConnection->makeConnectToModel(&SettingsModel::captureDevicesChanged,
|
||||
[this](const QStringList devices) {
|
||||
mSettingsModelConnection->invokeToCore([this, devices]() {
|
||||
mCaptureDevices = devices;
|
||||
emit captureDevicesChanged(devices);
|
||||
});
|
||||
});
|
||||
mSettingsModelConnection->makeConnectToModel(&SettingsModel::captureDevicesChanged, [this](QVariantList devices) {
|
||||
mSettingsModelConnection->invokeToCore([this, devices]() {
|
||||
mCaptureDevices = devices;
|
||||
emit captureDevicesChanged(devices);
|
||||
});
|
||||
});
|
||||
|
||||
mSettingsModelConnection->makeConnectToModel(&SettingsModel::playbackDevicesChanged,
|
||||
[this](const QStringList devices) {
|
||||
mSettingsModelConnection->invokeToCore([this, devices]() {
|
||||
mPlaybackDevices = devices;
|
||||
emit playbackDevicesChanged(devices);
|
||||
});
|
||||
});
|
||||
mSettingsModelConnection->makeConnectToModel(&SettingsModel::ringerDevicesChanged,
|
||||
[this](const QStringList devices) {
|
||||
mSettingsModelConnection->invokeToCore([this, devices]() {
|
||||
mRingerDevices = devices;
|
||||
emit ringerDevicesChanged(devices);
|
||||
});
|
||||
});
|
||||
mSettingsModelConnection->makeConnectToModel(&SettingsModel::playbackDevicesChanged, [this](QVariantList devices) {
|
||||
mSettingsModelConnection->invokeToCore([this, devices]() {
|
||||
mPlaybackDevices = devices;
|
||||
emit playbackDevicesChanged(devices);
|
||||
});
|
||||
});
|
||||
mSettingsModelConnection->makeConnectToModel(&SettingsModel::ringerDevicesChanged, [this](QVariantList devices) {
|
||||
mSettingsModelConnection->invokeToCore([this, devices]() {
|
||||
mRingerDevices = devices;
|
||||
emit ringerDevicesChanged(devices);
|
||||
});
|
||||
});
|
||||
|
||||
// Video device(s)
|
||||
mSettingsModelConnection->makeConnectToCore(&SettingsCore::lSetVideoDevice, [this](const QString id) {
|
||||
|
|
@ -379,15 +379,15 @@ QString SettingsCore::getConfigPath(const QCommandLineParser &parser) {
|
|||
return configPath;
|
||||
}
|
||||
|
||||
QStringList SettingsCore::getCaptureDevices() const {
|
||||
QVariantList SettingsCore::getCaptureDevices() const {
|
||||
return mCaptureDevices;
|
||||
}
|
||||
|
||||
QStringList SettingsCore::getPlaybackDevices() const {
|
||||
QVariantList SettingsCore::getPlaybackDevices() const {
|
||||
return mPlaybackDevices;
|
||||
}
|
||||
|
||||
QStringList SettingsCore::getRingerDevices() const {
|
||||
QVariantList SettingsCore::getRingerDevices() const {
|
||||
return mRingerDevices;
|
||||
}
|
||||
|
||||
|
|
@ -411,15 +411,15 @@ float SettingsCore::getPlaybackGain() const {
|
|||
return mPlaybackGain;
|
||||
}
|
||||
|
||||
QString SettingsCore::getCaptureDevice() const {
|
||||
QVariantMap SettingsCore::getCaptureDevice() const {
|
||||
return mCaptureDevice;
|
||||
}
|
||||
|
||||
QString SettingsCore::getPlaybackDevice() const {
|
||||
QVariantMap SettingsCore::getPlaybackDevice() const {
|
||||
return mPlaybackDevice;
|
||||
}
|
||||
|
||||
QString SettingsCore::getRingerDevice() const {
|
||||
QVariantMap SettingsCore::getRingerDevice() const {
|
||||
return mRingerDevice;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -46,16 +46,16 @@ class SettingsCore : public QObject, public AbstractObject {
|
|||
|
||||
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(QStringList ringerDevices READ getRingerDevices NOTIFY ringerDevicesChanged)
|
||||
Q_PROPERTY(QVariantList captureDevices READ getCaptureDevices NOTIFY captureDevicesChanged)
|
||||
Q_PROPERTY(QVariantList playbackDevices READ getPlaybackDevices NOTIFY playbackDevicesChanged)
|
||||
Q_PROPERTY(QVariantList ringerDevices READ getRingerDevices NOTIFY ringerDevicesChanged)
|
||||
|
||||
Q_PROPERTY(float playbackGain READ getPlaybackGain WRITE lSetPlaybackGain NOTIFY playbackGainChanged)
|
||||
Q_PROPERTY(float captureGain READ getCaptureGain WRITE lSetCaptureGain NOTIFY captureGainChanged)
|
||||
|
||||
Q_PROPERTY(QString captureDevice READ getCaptureDevice WRITE lSetCaptureDevice NOTIFY captureDeviceChanged)
|
||||
Q_PROPERTY(QString playbackDevice READ getPlaybackDevice WRITE lSetPlaybackDevice NOTIFY playbackDeviceChanged)
|
||||
Q_PROPERTY(QString ringerDevice READ getRingerDevice WRITE lSetRingerDevice NOTIFY ringerDeviceChanged)
|
||||
Q_PROPERTY(QVariantMap captureDevice READ getCaptureDevice WRITE lSetCaptureDevice NOTIFY captureDeviceChanged)
|
||||
Q_PROPERTY(QVariantMap playbackDevice READ getPlaybackDevice WRITE lSetPlaybackDevice NOTIFY playbackDeviceChanged)
|
||||
Q_PROPERTY(QVariantMap ringerDevice READ getRingerDevice WRITE lSetRingerDevice NOTIFY ringerDeviceChanged)
|
||||
|
||||
Q_PROPERTY(QStringList videoDevices READ getVideoDevices NOTIFY videoDevicesChanged)
|
||||
Q_PROPERTY(QString videoDevice READ getVideoDevice WRITE lSetVideoDevice NOTIFY videoDeviceChanged)
|
||||
|
|
@ -109,14 +109,13 @@ public:
|
|||
|
||||
float getCaptureGain() const;
|
||||
|
||||
QStringList getCaptureDevices() const;
|
||||
QStringList getPlaybackDevices() const;
|
||||
QStringList getRingerDevices() const;
|
||||
QVariantList getCaptureDevices() const;
|
||||
QVariantList getPlaybackDevices() const;
|
||||
QVariantList getRingerDevices() const;
|
||||
|
||||
QString getCaptureDevice() const;
|
||||
|
||||
QString getPlaybackDevice() const;
|
||||
QString getRingerDevice() const;
|
||||
QVariantMap getCaptureDevice() const;
|
||||
QVariantMap getPlaybackDevice() const;
|
||||
QVariantMap getRingerDevice() const;
|
||||
|
||||
QString getVideoDevice() const {
|
||||
return mVideoDevice;
|
||||
|
|
@ -191,18 +190,18 @@ signals:
|
|||
void playbackGainChanged(float gain);
|
||||
void captureGainChanged(float gain);
|
||||
|
||||
void captureDevicesChanged(const QStringList &devices);
|
||||
void playbackDevicesChanged(const QStringList &devices);
|
||||
void ringerDevicesChanged(const QStringList &devices);
|
||||
void captureDevicesChanged(const QVariantList &devices);
|
||||
void playbackDevicesChanged(const QVariantList &devices);
|
||||
void ringerDevicesChanged(const QVariantList &devices);
|
||||
|
||||
void lSetCaptureDevice(const QString &device);
|
||||
void captureDeviceChanged(const QString &device);
|
||||
void lSetCaptureDevice(const QVariantMap &device);
|
||||
void captureDeviceChanged(const QVariantMap &device);
|
||||
|
||||
void lSetPlaybackDevice(const QString &device);
|
||||
void playbackDeviceChanged(const QString &device);
|
||||
void lSetPlaybackDevice(const QVariantMap &device);
|
||||
void playbackDeviceChanged(const QVariantMap &device);
|
||||
|
||||
void lSetRingerDevice(const QString &device);
|
||||
void ringerDeviceChanged(const QString &device);
|
||||
void lSetRingerDevice(const QVariantMap &device);
|
||||
void ringerDeviceChanged(const QVariantMap &device);
|
||||
|
||||
void lSetVideoDevice(const QString &device);
|
||||
void videoDeviceChanged();
|
||||
|
|
@ -247,12 +246,12 @@ private:
|
|||
bool mAutomaticallyRecordCallsEnabled;
|
||||
|
||||
// Audio
|
||||
QStringList mCaptureDevices;
|
||||
QStringList mPlaybackDevices;
|
||||
QStringList mRingerDevices;
|
||||
QString mCaptureDevice;
|
||||
QString mPlaybackDevice;
|
||||
QString mRingerDevice;
|
||||
QVariantList mCaptureDevices;
|
||||
QVariantList mPlaybackDevices;
|
||||
QVariantList mRingerDevices;
|
||||
QVariantMap mCaptureDevice;
|
||||
QVariantMap mPlaybackDevice;
|
||||
QVariantMap mRingerDevice;
|
||||
|
||||
// Video
|
||||
QStringList mVideoDevices;
|
||||
|
|
|
|||
|
|
@ -88,27 +88,6 @@ std::string SettingsModel::getEntryFullName(const std::string §ion, const st
|
|||
return isReadOnly(section, name) ? name + "/readonly" : name;
|
||||
}
|
||||
|
||||
QStringList SettingsModel::getVideoDevices() const {
|
||||
mustBeInLinphoneThread(log().arg(Q_FUNC_INFO));
|
||||
auto core = CoreModel::getInstance()->getCore();
|
||||
QStringList result;
|
||||
for (auto &device : core->getVideoDevicesList()) {
|
||||
result.append(Utils::coreStringToAppString(device));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
QString SettingsModel::getVideoDevice() const {
|
||||
mustBeInLinphoneThread(log().arg(Q_FUNC_INFO));
|
||||
return Utils::coreStringToAppString(CoreModel::getInstance()->getCore()->getVideoDevice());
|
||||
}
|
||||
|
||||
void SettingsModel::setVideoDevice(const QString &device) {
|
||||
mustBeInLinphoneThread(log().arg(Q_FUNC_INFO));
|
||||
CoreModel::getInstance()->getCore()->setVideoDevice(Utils::appStringToCoreString(device));
|
||||
emit videoDeviceChanged(device);
|
||||
}
|
||||
|
||||
// =============================================================================
|
||||
// Audio.
|
||||
// =============================================================================
|
||||
|
|
@ -125,8 +104,9 @@ void SettingsModel::resetCaptureGraph() {
|
|||
}
|
||||
void SettingsModel::createCaptureGraph() {
|
||||
mustBeInLinphoneThread(log().arg(Q_FUNC_INFO));
|
||||
mSimpleCaptureGraph = new MediastreamerUtils::SimpleCaptureGraph(Utils::appStringToCoreString(getCaptureDevice()),
|
||||
Utils::appStringToCoreString(getPlaybackDevice()));
|
||||
mSimpleCaptureGraph =
|
||||
new MediastreamerUtils::SimpleCaptureGraph(Utils::appStringToCoreString(getCaptureDevice()["id"].toString()),
|
||||
Utils::appStringToCoreString(getPlaybackDevice()["id"].toString()));
|
||||
mSimpleCaptureGraph->start();
|
||||
emit captureGraphRunningChanged(getCaptureGraphRunning());
|
||||
}
|
||||
|
|
@ -245,56 +225,68 @@ void SettingsModel::setCaptureGain(float gain) {
|
|||
if ((int)(oldGain * 1000) != (int)(gain * 1000)) emit captureGainChanged(gain);
|
||||
}
|
||||
|
||||
QStringList SettingsModel::getCaptureDevices() const {
|
||||
QVariantList SettingsModel::getCaptureDevices() const {
|
||||
mustBeInLinphoneThread(log().arg(Q_FUNC_INFO));
|
||||
shared_ptr<linphone::Core> core = CoreModel::getInstance()->getCore();
|
||||
QStringList list;
|
||||
QVariantList list;
|
||||
|
||||
for (const auto &device : core->getExtendedAudioDevices()) {
|
||||
if (device->hasCapability(linphone::AudioDevice::Capabilities::CapabilityRecord))
|
||||
list << Utils::coreStringToAppString(device->getId());
|
||||
if (device->hasCapability(linphone::AudioDevice::Capabilities::CapabilityRecord)) {
|
||||
list << ToolModel::createVariant(device);
|
||||
}
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
QStringList SettingsModel::getPlaybackDevices() const {
|
||||
QVariantList SettingsModel::getPlaybackDevices() const {
|
||||
mustBeInLinphoneThread(log().arg(Q_FUNC_INFO));
|
||||
shared_ptr<linphone::Core> core = CoreModel::getInstance()->getCore();
|
||||
QStringList list;
|
||||
QVariantList list;
|
||||
|
||||
for (const auto &device : core->getExtendedAudioDevices()) {
|
||||
if (device->hasCapability(linphone::AudioDevice::Capabilities::CapabilityPlay))
|
||||
list << Utils::coreStringToAppString(device->getId());
|
||||
list << ToolModel::createVariant(device);
|
||||
}
|
||||
|
||||
return list;
|
||||
}
|
||||
|
||||
QStringList SettingsModel::getRingerDevices() const {
|
||||
QVariantList SettingsModel::getRingerDevices() const {
|
||||
mustBeInLinphoneThread(log().arg(Q_FUNC_INFO));
|
||||
shared_ptr<linphone::Core> core = CoreModel::getInstance()->getCore();
|
||||
QStringList list;
|
||||
QVariantList list;
|
||||
|
||||
for (const auto &device : core->getExtendedAudioDevices()) {
|
||||
if (device->hasCapability(linphone::AudioDevice::Capabilities::CapabilityPlay))
|
||||
list << Utils::coreStringToAppString(device->getId());
|
||||
list << ToolModel::createVariant(device);
|
||||
}
|
||||
|
||||
return list;
|
||||
}
|
||||
|
||||
QStringList SettingsModel::getVideoDevices() const {
|
||||
mustBeInLinphoneThread(log().arg(Q_FUNC_INFO));
|
||||
auto core = CoreModel::getInstance()->getCore();
|
||||
QStringList result;
|
||||
for (auto &device : core->getVideoDevicesList()) {
|
||||
result.append(Utils::coreStringToAppString(device));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
QString SettingsModel::getCaptureDevice() const {
|
||||
QVariantMap SettingsModel::getCaptureDevice() const {
|
||||
mustBeInLinphoneThread(log().arg(Q_FUNC_INFO));
|
||||
auto audioDevice = CoreModel::getInstance()->getCore()->getInputAudioDevice();
|
||||
if (!audioDevice) audioDevice = CoreModel::getInstance()->getCore()->getDefaultInputAudioDevice();
|
||||
return Utils::coreStringToAppString(audioDevice ? audioDevice->getId() : "");
|
||||
return ToolModel::createVariant(audioDevice);
|
||||
}
|
||||
|
||||
void SettingsModel::setCaptureDevice(const QString &device) {
|
||||
void SettingsModel::setCaptureDevice(const QVariantMap &device) {
|
||||
mustBeInLinphoneThread(log().arg(Q_FUNC_INFO));
|
||||
auto audioDevice = ToolModel::findAudioDevice(device, linphone::AudioDevice::Capabilities::CapabilityRecord);
|
||||
auto audioDevice =
|
||||
ToolModel::findAudioDevice(device["id"].toString(), linphone::AudioDevice::Capabilities::CapabilityRecord);
|
||||
if (audioDevice) {
|
||||
CoreModel::getInstance()->getCore()->setDefaultInputAudioDevice(audioDevice);
|
||||
CoreModel::getInstance()->getCore()->setInputAudioDevice(audioDevice);
|
||||
|
|
@ -305,16 +297,17 @@ void SettingsModel::setCaptureDevice(const QString &device) {
|
|||
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
QString SettingsModel::getPlaybackDevice() const {
|
||||
QVariantMap SettingsModel::getPlaybackDevice() const {
|
||||
mustBeInLinphoneThread(log().arg(Q_FUNC_INFO));
|
||||
auto audioDevice = CoreModel::getInstance()->getCore()->getOutputAudioDevice();
|
||||
if (!audioDevice) audioDevice = CoreModel::getInstance()->getCore()->getDefaultOutputAudioDevice();
|
||||
return Utils::coreStringToAppString(audioDevice ? audioDevice->getId() : "");
|
||||
return ToolModel::createVariant(audioDevice);
|
||||
}
|
||||
|
||||
void SettingsModel::setPlaybackDevice(const QString &device) {
|
||||
void SettingsModel::setPlaybackDevice(const QVariantMap &device) {
|
||||
mustBeInLinphoneThread(log().arg(Q_FUNC_INFO));
|
||||
auto audioDevice = ToolModel::findAudioDevice(device, linphone::AudioDevice::Capabilities::CapabilityPlay);
|
||||
auto audioDevice =
|
||||
ToolModel::findAudioDevice(device["id"].toString(), linphone::AudioDevice::Capabilities::CapabilityPlay);
|
||||
if (audioDevice) {
|
||||
CoreModel::getInstance()->getCore()->setDefaultOutputAudioDevice(audioDevice);
|
||||
CoreModel::getInstance()->getCore()->setOutputAudioDevice(audioDevice);
|
||||
|
|
@ -325,22 +318,32 @@ void SettingsModel::setPlaybackDevice(const QString &device) {
|
|||
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
QString SettingsModel::getRingerDevice() const {
|
||||
QVariantMap SettingsModel::getRingerDevice() const {
|
||||
mustBeInLinphoneThread(log().arg(Q_FUNC_INFO));
|
||||
return Utils::coreStringToAppString(CoreModel::getInstance()->getCore()->getRingerDevice());
|
||||
auto id = Utils::coreStringToAppString(CoreModel::getInstance()->getCore()->getRingerDevice());
|
||||
auto audioDevice = ToolModel::findAudioDevice(id, linphone::AudioDevice::Capabilities::CapabilityPlay);
|
||||
return ToolModel::createVariant(audioDevice);
|
||||
}
|
||||
|
||||
void SettingsModel::setRingerDevice(const QString &device) {
|
||||
void SettingsModel::setRingerDevice(const QVariantMap &device) {
|
||||
mustBeInLinphoneThread(log().arg(Q_FUNC_INFO));
|
||||
auto audioDevice = ToolModel::findAudioDevice(device, linphone::AudioDevice::Capabilities::CapabilityPlay);
|
||||
|
||||
if (audioDevice) {
|
||||
CoreModel::getInstance()->getCore()->setRingerDevice(audioDevice->getId());
|
||||
emit ringerDeviceChanged(device);
|
||||
} else qWarning() << "Cannot set Ringer device. The ID cannot be matched with an existant device : " << device;
|
||||
CoreModel::getInstance()->getCore()->setRingerDevice(Utils::appStringToCoreString(device["id"].toString()));
|
||||
emit ringerDeviceChanged(device);
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
QString SettingsModel::getVideoDevice() const {
|
||||
mustBeInLinphoneThread(log().arg(Q_FUNC_INFO));
|
||||
return Utils::coreStringToAppString(CoreModel::getInstance()->getCore()->getVideoDevice());
|
||||
}
|
||||
|
||||
void SettingsModel::setVideoDevice(const QString &device) {
|
||||
mustBeInLinphoneThread(log().arg(Q_FUNC_INFO));
|
||||
CoreModel::getInstance()->getCore()->setVideoDevice(Utils::appStringToCoreString(device));
|
||||
emit videoDeviceChanged(device);
|
||||
}
|
||||
|
||||
bool SettingsModel::getVideoEnabled() const {
|
||||
mustBeInLinphoneThread(log().arg(Q_FUNC_INFO));
|
||||
return CoreModel::getInstance()->getCore()->videoEnabled();
|
||||
|
|
|
|||
|
|
@ -82,27 +82,26 @@ public:
|
|||
float getCaptureGain() const;
|
||||
void setCaptureGain(float gain);
|
||||
|
||||
QStringList getCaptureDevices() const;
|
||||
QStringList getPlaybackDevices() const;
|
||||
QStringList getRingerDevices() const;
|
||||
QVariantList getCaptureDevices() const;
|
||||
QVariantList getPlaybackDevices() const;
|
||||
QVariantList getRingerDevices() const;
|
||||
QStringList getVideoDevices() const; // There is no VideoDevice API from SDK
|
||||
|
||||
QString getCaptureDevice() const;
|
||||
void setCaptureDevice(const QString &device);
|
||||
QVariantMap getCaptureDevice() const;
|
||||
void setCaptureDevice(const QVariantMap &device);
|
||||
|
||||
QString getPlaybackDevice() const;
|
||||
void setPlaybackDevice(const QString &device);
|
||||
QVariantMap getPlaybackDevice() const;
|
||||
void setPlaybackDevice(const QVariantMap &device);
|
||||
|
||||
QString getRingerDevice() const;
|
||||
void setRingerDevice(const QString &device);
|
||||
|
||||
void startEchoCancellerCalibration();
|
||||
int getEchoCancellationCalibration() const;
|
||||
|
||||
QStringList getVideoDevices() const;
|
||||
QVariantMap getRingerDevice() const;
|
||||
void setRingerDevice(const QVariantMap &device);
|
||||
|
||||
QString getVideoDevice() const;
|
||||
void setVideoDevice(const QString &device);
|
||||
|
||||
void startEchoCancellerCalibration();
|
||||
int getEchoCancellationCalibration() const;
|
||||
|
||||
bool getLogsEnabled() const;
|
||||
void setLogsEnabled(bool status);
|
||||
|
||||
|
|
@ -172,19 +171,18 @@ signals:
|
|||
void playbackGainChanged(float gain);
|
||||
void captureGainChanged(float gain);
|
||||
|
||||
void captureDevicesChanged(const QStringList &devices);
|
||||
void playbackDevicesChanged(const QStringList &devices);
|
||||
void ringerDevicesChanged(const QStringList &devices);
|
||||
void captureDevicesChanged(QVariantList devices);
|
||||
void playbackDevicesChanged(QVariantList devices);
|
||||
void ringerDevicesChanged(QVariantList devices);
|
||||
void videoDevicesChanged(QStringList devices);
|
||||
|
||||
void captureDeviceChanged(const QString &device);
|
||||
void playbackDeviceChanged(const QString &device);
|
||||
void ringerDeviceChanged(const QString &device);
|
||||
void captureDeviceChanged(QVariantMap device);
|
||||
void playbackDeviceChanged(QVariantMap device);
|
||||
void ringerDeviceChanged(QVariantMap device);
|
||||
void videoDeviceChanged(QString device);
|
||||
|
||||
void showAudioCodecsChanged(bool status);
|
||||
|
||||
void videoDevicesChanged(const QStringList &devices);
|
||||
void videoDeviceChanged(const QString &device);
|
||||
|
||||
void micVolumeChanged(float volume);
|
||||
|
||||
void logsEnabledChanged(bool status);
|
||||
|
|
|
|||
|
|
@ -350,3 +350,12 @@ void ToolModel::updateCodecs() {
|
|||
}
|
||||
#endif // if defined(Q_OS_LINUX) || defined(Q_OS_WIN)
|
||||
}
|
||||
|
||||
QVariantMap ToolModel::createVariant(const std::shared_ptr<const linphone::AudioDevice> &device) {
|
||||
QVariantMap map;
|
||||
map.insert("id", device ? Utils::coreStringToAppString(device->getId()) : "");
|
||||
map.insert("display_name",
|
||||
device ? Utils::coreStringToAppString(device->getDriverName() + ": " + device->getDeviceName())
|
||||
: tr("Unknown device"));
|
||||
return map;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -68,6 +68,8 @@ public:
|
|||
static void loadDownloadedCodecs();
|
||||
static void updateCodecs();
|
||||
|
||||
static QVariantMap createVariant(const std::shared_ptr<const linphone::AudioDevice> &device);
|
||||
|
||||
private:
|
||||
DECLARE_ABSTRACT_OBJECT
|
||||
};
|
||||
|
|
|
|||
|
|
@ -9,8 +9,6 @@ Control.ComboBox {
|
|||
// Usage : each item of the model list must be {text: ..., img: ...}
|
||||
// If string list, only text part of the delegate will be filled
|
||||
// readonly property string currentText: selectedItemText.text
|
||||
// Layout.preferredWidth: mainItem.width
|
||||
// Layout.preferredHeight: mainItem.height
|
||||
property alias listView: listView
|
||||
property string constantImageSource
|
||||
property int pixelSize: 14 * DefaultStyle.dp
|
||||
|
|
@ -24,7 +22,9 @@ Control.ComboBox {
|
|||
var item = model[currentIndex]
|
||||
if (!item) item = model.getAt(currentIndex)
|
||||
if (!item) return
|
||||
selectedItemText.text = item.text
|
||||
selectedItemText.text = mainItem.textRole
|
||||
? item[mainItem.textRole]
|
||||
: item.text
|
||||
? item.text
|
||||
: item
|
||||
? item
|
||||
|
|
@ -99,19 +99,6 @@ Control.ComboBox {
|
|||
anchors.rightMargin: 20 * DefaultStyle.dp
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
}
|
||||
|
||||
Component.onCompleted: {
|
||||
var index = mainItem.currentIndex < 0 ? 0 : mainItem.currentIndex
|
||||
if (mainItem.model && mainItem.model[index]) {
|
||||
if (mainItem.model[index] && mainItem.model[index].img) {
|
||||
selectedItemImg.source = mainItem.model[index].img
|
||||
}
|
||||
else if (mainItem.model[index] && mainItem.model[index].text)
|
||||
selectedItemText.text = mainItem.model[index].text
|
||||
else
|
||||
selectedItemText.text = mainItem.model[index]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -183,11 +170,15 @@ Control.ComboBox {
|
|||
|
||||
Text {
|
||||
text: typeof(modelData) != "undefined"
|
||||
? modelData.text
|
||||
? modelData.text
|
||||
: modelData
|
||||
? mainItem.textRole
|
||||
? modelData[mainItem.textRole]
|
||||
: modelData.text
|
||||
? modelData.text
|
||||
: modelData
|
||||
: $modelData
|
||||
? $modelData
|
||||
? mainItem.textRole
|
||||
? $modelData[mainItem.textRole]
|
||||
: $modelData
|
||||
: ""
|
||||
elide: Text.ElideRight
|
||||
maximumLineCount: 1
|
||||
|
|
|
|||
|
|
@ -5,23 +5,24 @@ import Linphone
|
|||
import 'qrc:/qt/qml/Linphone/view/Control/Tool/Helper/utils.js' as Utils
|
||||
|
||||
ComboBox {
|
||||
id: comboBox
|
||||
id: mainItem
|
||||
Layout.preferredHeight: 49 * DefaultStyle.dp
|
||||
property string propertyName
|
||||
|
||||
property var propertyOwner
|
||||
property alias entries: comboBox.model
|
||||
property alias entries: mainItem.model
|
||||
oneLine: true
|
||||
currentIndex: Utils.findIndex(model, function (entry) {
|
||||
return entry === propertyOwner[propertyName]
|
||||
return Utils.equalObject(entry,propertyOwner[propertyName])
|
||||
})
|
||||
onCurrentTextChanged: {
|
||||
binding.when = currentText != propertyOwner[propertyName]
|
||||
onCurrentValueChanged: {
|
||||
binding.when = !Utils.equalObject(currentValue,propertyOwner[propertyName])
|
||||
}
|
||||
Binding {
|
||||
id: binding
|
||||
target: propertyOwner
|
||||
property: propertyName
|
||||
value: comboBox.currentText
|
||||
value: mainItem.currentValue
|
||||
when: false
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -53,6 +53,7 @@ ColumnLayout {
|
|||
entries: SettingsCpp.ringerDevices
|
||||
propertyName: "ringerDevice"
|
||||
propertyOwner: SettingsCpp
|
||||
textRole: 'display_name'
|
||||
}
|
||||
Item {
|
||||
Layout.fillHeight: true
|
||||
|
|
@ -84,6 +85,7 @@ ColumnLayout {
|
|||
entries: SettingsCpp.playbackDevices
|
||||
propertyName: "playbackDevice"
|
||||
propertyOwner: SettingsCpp
|
||||
textRole: 'display_name'
|
||||
}
|
||||
Slider {
|
||||
id: speakerVolume
|
||||
|
|
@ -123,6 +125,7 @@ ColumnLayout {
|
|||
entries: SettingsCpp.captureDevices
|
||||
propertyName: "captureDevice"
|
||||
propertyOwner: SettingsCpp
|
||||
textRole: 'display_name'
|
||||
}
|
||||
Slider {
|
||||
id: microVolume
|
||||
|
|
|
|||
|
|
@ -728,6 +728,19 @@ function printObject(o) {
|
|||
return out;
|
||||
}
|
||||
|
||||
function equalObject(a, b) {
|
||||
var countA = 0, countB = 0;
|
||||
if(a == b) return true // operator could be performed
|
||||
for (var i in a) {// Check for all members
|
||||
if(a[i] != b[i]) return false
|
||||
else ++countA
|
||||
}
|
||||
for (var j in b) {// Check count
|
||||
++countB
|
||||
}
|
||||
return countB == countA && countA > 0 // if count=0; then the first '==' should already worked
|
||||
}
|
||||
|
||||
function infoDialog(window, message) {
|
||||
window.attachVirtualWindow(buildCommonDialogUri('ConfirmDialog'), {
|
||||
buttonTexts : ['',qsTr('okButton')],
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue