Add ringer device option
This commit is contained in:
parent
8aefe3d800
commit
e1033b9db2
7 changed files with 112 additions and 1 deletions
|
|
@ -53,6 +53,7 @@ SettingsCore::SettingsCore(QObject *parent) : QObject(parent) {
|
||||||
// Audio
|
// Audio
|
||||||
mCaptureDevices = mSettingsModel->getCaptureDevices();
|
mCaptureDevices = mSettingsModel->getCaptureDevices();
|
||||||
mPlaybackDevices = mSettingsModel->getPlaybackDevices();
|
mPlaybackDevices = mSettingsModel->getPlaybackDevices();
|
||||||
|
mRingerDevices = mSettingsModel->getRingerDevices();
|
||||||
mCaptureDevice = mSettingsModel->getCaptureDevice();
|
mCaptureDevice = mSettingsModel->getCaptureDevice();
|
||||||
mPlaybackDevice = mSettingsModel->getPlaybackDevice();
|
mPlaybackDevice = mSettingsModel->getPlaybackDevice();
|
||||||
|
|
||||||
|
|
@ -176,6 +177,16 @@ void SettingsCore::setSelf(QSharedPointer<SettingsCore> me) {
|
||||||
emit playbackDeviceChanged(device);
|
emit playbackDeviceChanged(device);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
mSettingsModelConnection->makeConnectToCore(&SettingsCore::lSetRingerDevice, [this](const QString id) {
|
||||||
|
mSettingsModelConnection->invokeToModel([this, id]() { mSettingsModel->setRingerDevice(id); });
|
||||||
|
});
|
||||||
|
|
||||||
|
mSettingsModelConnection->makeConnectToModel(&SettingsModel::ringerDeviceChanged, [this](const QString device) {
|
||||||
|
mSettingsModelConnection->invokeToCore([this, device]() {
|
||||||
|
mRingerDevice = device;
|
||||||
|
emit ringerDeviceChanged(device);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
mSettingsModelConnection->makeConnectToCore(&SettingsCore::lSetPlaybackGain, [this](const float value) {
|
mSettingsModelConnection->makeConnectToCore(&SettingsCore::lSetPlaybackGain, [this](const float value) {
|
||||||
mSettingsModelConnection->invokeToModel([this, value]() { mSettingsModel->setPlaybackGain(value); });
|
mSettingsModelConnection->invokeToModel([this, value]() { mSettingsModel->setPlaybackGain(value); });
|
||||||
|
|
@ -218,6 +229,13 @@ void SettingsCore::setSelf(QSharedPointer<SettingsCore> me) {
|
||||||
emit playbackDevicesChanged(devices);
|
emit playbackDevicesChanged(devices);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
mSettingsModelConnection->makeConnectToModel(&SettingsModel::ringerDevicesChanged,
|
||||||
|
[this](const QStringList devices) {
|
||||||
|
mSettingsModelConnection->invokeToCore([this, devices]() {
|
||||||
|
mRingerDevices = devices;
|
||||||
|
emit ringerDevicesChanged(devices);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
// Video device(s)
|
// Video device(s)
|
||||||
mSettingsModelConnection->makeConnectToCore(&SettingsCore::lSetVideoDevice, [this](const QString id) {
|
mSettingsModelConnection->makeConnectToCore(&SettingsCore::lSetVideoDevice, [this](const QString id) {
|
||||||
|
|
@ -346,6 +364,10 @@ QStringList SettingsCore::getPlaybackDevices() const {
|
||||||
return mPlaybackDevices;
|
return mPlaybackDevices;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QStringList SettingsCore::getRingerDevices() const {
|
||||||
|
return mRingerDevices;
|
||||||
|
}
|
||||||
|
|
||||||
int SettingsCore::getVideoDeviceIndex() const {
|
int SettingsCore::getVideoDeviceIndex() const {
|
||||||
return mVideoDevices.indexOf(mVideoDevice);
|
return mVideoDevices.indexOf(mVideoDevice);
|
||||||
}
|
}
|
||||||
|
|
@ -374,6 +396,10 @@ QString SettingsCore::getPlaybackDevice() const {
|
||||||
return mPlaybackDevice;
|
return mPlaybackDevice;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QString SettingsCore::getRingerDevice() const {
|
||||||
|
return mRingerDevice;
|
||||||
|
}
|
||||||
|
|
||||||
int SettingsCore::getEchoCancellationCalibration() const {
|
int SettingsCore::getEchoCancellationCalibration() const {
|
||||||
return mEchoCancellationCalibration;
|
return mEchoCancellationCalibration;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -48,12 +48,14 @@ class SettingsCore : public QObject, public AbstractObject {
|
||||||
|
|
||||||
Q_PROPERTY(QStringList captureDevices READ getCaptureDevices NOTIFY captureDevicesChanged)
|
Q_PROPERTY(QStringList captureDevices READ getCaptureDevices NOTIFY captureDevicesChanged)
|
||||||
Q_PROPERTY(QStringList playbackDevices READ getPlaybackDevices NOTIFY playbackDevicesChanged)
|
Q_PROPERTY(QStringList playbackDevices READ getPlaybackDevices NOTIFY playbackDevicesChanged)
|
||||||
|
Q_PROPERTY(QStringList ringerDevices READ getRingerDevices NOTIFY ringerDevicesChanged)
|
||||||
|
|
||||||
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)
|
||||||
|
|
||||||
Q_PROPERTY(QString captureDevice READ getCaptureDevice WRITE lSetCaptureDevice NOTIFY captureDeviceChanged)
|
Q_PROPERTY(QString captureDevice READ getCaptureDevice WRITE lSetCaptureDevice NOTIFY captureDeviceChanged)
|
||||||
Q_PROPERTY(QString playbackDevice READ getPlaybackDevice WRITE lSetPlaybackDevice NOTIFY playbackDeviceChanged)
|
Q_PROPERTY(QString playbackDevice READ getPlaybackDevice WRITE lSetPlaybackDevice NOTIFY playbackDeviceChanged)
|
||||||
|
Q_PROPERTY(QString ringerDevice READ getRingerDevice WRITE lSetRingerDevice NOTIFY ringerDeviceChanged)
|
||||||
|
|
||||||
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)
|
||||||
|
|
@ -109,10 +111,12 @@ public:
|
||||||
|
|
||||||
QStringList getCaptureDevices() const;
|
QStringList getCaptureDevices() const;
|
||||||
QStringList getPlaybackDevices() const;
|
QStringList getPlaybackDevices() const;
|
||||||
|
QStringList getRingerDevices() const;
|
||||||
|
|
||||||
QString getCaptureDevice() const;
|
QString getCaptureDevice() const;
|
||||||
|
|
||||||
QString getPlaybackDevice() const;
|
QString getPlaybackDevice() const;
|
||||||
|
QString getRingerDevice() const;
|
||||||
|
|
||||||
QString getVideoDevice() const {
|
QString getVideoDevice() const {
|
||||||
return mVideoDevice;
|
return mVideoDevice;
|
||||||
|
|
@ -188,6 +192,7 @@ signals:
|
||||||
|
|
||||||
void captureDevicesChanged(const QStringList &devices);
|
void captureDevicesChanged(const QStringList &devices);
|
||||||
void playbackDevicesChanged(const QStringList &devices);
|
void playbackDevicesChanged(const QStringList &devices);
|
||||||
|
void ringerDevicesChanged(const QStringList &devices);
|
||||||
|
|
||||||
void lSetCaptureDevice(const QString &device);
|
void lSetCaptureDevice(const QString &device);
|
||||||
void captureDeviceChanged(const QString &device);
|
void captureDeviceChanged(const QString &device);
|
||||||
|
|
@ -195,6 +200,9 @@ signals:
|
||||||
void lSetPlaybackDevice(const QString &device);
|
void lSetPlaybackDevice(const QString &device);
|
||||||
void playbackDeviceChanged(const QString &device);
|
void playbackDeviceChanged(const QString &device);
|
||||||
|
|
||||||
|
void lSetRingerDevice(const QString &device);
|
||||||
|
void ringerDeviceChanged(const QString &device);
|
||||||
|
|
||||||
void lSetVideoDevice(const QString &device);
|
void lSetVideoDevice(const QString &device);
|
||||||
void videoDeviceChanged();
|
void videoDeviceChanged();
|
||||||
void videoDevicesChanged();
|
void videoDevicesChanged();
|
||||||
|
|
@ -242,8 +250,10 @@ private:
|
||||||
// Audio
|
// Audio
|
||||||
QStringList mCaptureDevices;
|
QStringList mCaptureDevices;
|
||||||
QStringList mPlaybackDevices;
|
QStringList mPlaybackDevices;
|
||||||
|
QStringList mRingerDevices;
|
||||||
QString mCaptureDevice;
|
QString mCaptureDevice;
|
||||||
QString mPlaybackDevice;
|
QString mPlaybackDevice;
|
||||||
|
QString mRingerDevice;
|
||||||
|
|
||||||
// Video
|
// Video
|
||||||
QStringList mVideoDevices;
|
QStringList mVideoDevices;
|
||||||
|
|
|
||||||
3
Linphone/data/image/bell-ringer.svg
Normal file
3
Linphone/data/image/bell-ringer.svg
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
<svg width="20" height="21" viewBox="0 0 20 21" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="M13.75 20C13.75 20.1989 13.671 20.3897 13.5303 20.5303C13.3897 20.671 13.1989 20.75 13 20.75H7.00002C6.80111 20.75 6.61034 20.671 6.46969 20.5303C6.32904 20.3897 6.25002 20.1989 6.25002 20C6.25002 19.8011 6.32904 19.6103 6.46969 19.4697C6.61034 19.329 6.80111 19.25 7.00002 19.25H13C13.1989 19.25 13.3897 19.329 13.5303 19.4697C13.671 19.6103 13.75 19.8011 13.75 20ZM19.3178 4.65499C18.4749 3.00748 17.2092 1.61364 15.6503 0.616239C15.567 0.563035 15.4741 0.526817 15.3767 0.509668C15.2794 0.492519 15.1796 0.494776 15.0832 0.516311C14.9867 0.537846 14.8955 0.578233 14.8147 0.635151C14.7339 0.692069 14.6651 0.764396 14.6124 0.847973C14.5596 0.931549 14.5239 1.02473 14.5073 1.12215C14.4906 1.21958 14.4934 1.31933 14.5155 1.41567C14.5376 1.51201 14.5784 1.60304 14.6358 1.68353C14.6931 1.76402 14.7658 1.83238 14.8497 1.88468C16.1871 2.73546 17.2707 3.93076 17.9866 5.34499C18.0812 5.51593 18.2388 5.64321 18.4258 5.69974C18.6128 5.75628 18.8145 5.73761 18.9879 5.6477C19.1614 5.5578 19.2929 5.40376 19.3545 5.21836C19.4161 5.03296 19.403 4.83083 19.3178 4.65499ZM1.34783 5.74999C1.48523 5.74993 1.61998 5.71213 1.73736 5.64071C1.85474 5.56929 1.95025 5.46699 2.01346 5.34499C2.72933 3.93076 3.81291 2.73546 5.15033 1.88468C5.23419 1.83238 5.30689 1.76402 5.36424 1.68353C5.4216 1.60304 5.46248 1.51201 5.48454 1.41567C5.50659 1.31933 5.50939 1.21958 5.49277 1.12215C5.47615 1.02473 5.44043 0.931549 5.38768 0.847973C5.33493 0.764396 5.26617 0.692069 5.18538 0.635151C5.10458 0.578233 5.01333 0.537846 4.91687 0.516311C4.82041 0.494776 4.72065 0.492519 4.62331 0.509668C4.52598 0.526817 4.433 0.563035 4.34971 0.616239C2.79085 1.61364 1.52514 3.00748 0.682206 4.65499C0.622991 4.76929 0.594192 4.8969 0.598581 5.02556C0.602969 5.15421 0.640397 5.27957 0.707263 5.38957C0.774128 5.49956 0.868181 5.5905 0.980369 5.65363C1.09256 5.71675 1.2191 5.74994 1.34783 5.74999ZM18.7947 15.4944C18.9276 15.7222 18.998 15.9811 18.9989 16.2448C18.9998 16.5086 18.9312 16.7679 18.7999 16.9967C18.6686 17.2255 18.4793 17.4156 18.251 17.5478C18.0228 17.6801 17.7638 17.7498 17.5 17.75H2.50002C2.23641 17.7495 1.9776 17.6795 1.74965 17.5471C1.5217 17.4147 1.33266 17.2246 1.20158 16.9959C1.0705 16.7672 1.002 16.508 1.00299 16.2444C1.00398 15.9808 1.07441 15.7221 1.20721 15.4944C2.05189 14.0366 2.50002 11.9637 2.50002 9.49999C2.50002 7.51087 3.29019 5.60321 4.69672 4.19669C6.10324 2.79017 8.01089 1.99999 10 1.99999C11.9891 1.99999 13.8968 2.79017 15.3033 4.19669C16.7098 5.60321 17.5 7.51087 17.5 9.49999C17.5 11.9628 17.9481 14.0356 18.7947 15.4944ZM17.5 16.25C16.5025 14.5372 16 12.2666 16 9.49999C16 7.90869 15.3679 6.38257 14.2427 5.25735C13.1174 4.13213 11.5913 3.49999 10 3.49999C8.40872 3.49999 6.8826 4.13213 5.75738 5.25735C4.63216 6.38257 4.00002 7.90869 4.00002 9.49999C4.00002 12.2675 3.49564 14.5381 2.50002 16.25H17.5Z" fill="#000000"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 2.9 KiB |
|
|
@ -158,6 +158,8 @@ void SettingsModel::accessCallSettings() {
|
||||||
emit captureDevicesChanged(getCaptureDevices());
|
emit captureDevicesChanged(getCaptureDevices());
|
||||||
emit playbackDevicesChanged(getPlaybackDevices());
|
emit playbackDevicesChanged(getPlaybackDevices());
|
||||||
emit playbackDeviceChanged(getPlaybackDevice());
|
emit playbackDeviceChanged(getPlaybackDevice());
|
||||||
|
emit ringerDevicesChanged(getRingerDevices());
|
||||||
|
emit ringerDeviceChanged(getRingerDevice());
|
||||||
emit captureDeviceChanged(getCaptureDevice());
|
emit captureDeviceChanged(getCaptureDevice());
|
||||||
emit playbackGainChanged(getPlaybackGain());
|
emit playbackGainChanged(getPlaybackGain());
|
||||||
emit captureGainChanged(getCaptureGain());
|
emit captureGainChanged(getCaptureGain());
|
||||||
|
|
@ -252,6 +254,19 @@ QStringList SettingsModel::getPlaybackDevices() const {
|
||||||
return list;
|
return list;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QStringList SettingsModel::getRingerDevices() const {
|
||||||
|
mustBeInLinphoneThread(log().arg(Q_FUNC_INFO));
|
||||||
|
shared_ptr<linphone::Core> core = CoreModel::getInstance()->getCore();
|
||||||
|
QStringList list;
|
||||||
|
|
||||||
|
for (const auto &device : core->getExtendedAudioDevices()) {
|
||||||
|
if (device->hasCapability(linphone::AudioDevice::Capabilities::CapabilityPlay))
|
||||||
|
list << Utils::coreStringToAppString(device->getId());
|
||||||
|
}
|
||||||
|
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
|
||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
|
|
||||||
QString SettingsModel::getCaptureDevice() const {
|
QString SettingsModel::getCaptureDevice() const {
|
||||||
|
|
@ -296,7 +311,6 @@ void SettingsModel::setPlaybackDevice(const QString &device) {
|
||||||
if (audioDevice != list.cend()) {
|
if (audioDevice != list.cend()) {
|
||||||
CoreModel::getInstance()->getCore()->setDefaultOutputAudioDevice(*audioDevice);
|
CoreModel::getInstance()->getCore()->setDefaultOutputAudioDevice(*audioDevice);
|
||||||
CoreModel::getInstance()->getCore()->setOutputAudioDevice(*audioDevice);
|
CoreModel::getInstance()->getCore()->setOutputAudioDevice(*audioDevice);
|
||||||
CoreModel::getInstance()->getCore()->setRingerDevice(devId);
|
|
||||||
emit playbackDeviceChanged(device);
|
emit playbackDeviceChanged(device);
|
||||||
resetCaptureGraph();
|
resetCaptureGraph();
|
||||||
} else qWarning() << "Cannot set Playback device. The ID cannot be matched with an existant device : " << device;
|
} else qWarning() << "Cannot set Playback device. The ID cannot be matched with an existant device : " << device;
|
||||||
|
|
@ -304,6 +318,26 @@ void SettingsModel::setPlaybackDevice(const QString &device) {
|
||||||
|
|
||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
QString SettingsModel::getRingerDevice() const {
|
||||||
|
mustBeInLinphoneThread(log().arg(Q_FUNC_INFO));
|
||||||
|
return Utils::coreStringToAppString(CoreModel::getInstance()->getCore()->getRingerDevice());
|
||||||
|
}
|
||||||
|
|
||||||
|
void SettingsModel::setRingerDevice(const QString &device) {
|
||||||
|
mustBeInLinphoneThread(log().arg(Q_FUNC_INFO));
|
||||||
|
std::string devId = Utils::appStringToCoreString(device);
|
||||||
|
|
||||||
|
auto list = CoreModel::getInstance()->getCore()->getExtendedAudioDevices();
|
||||||
|
auto audioDevice =
|
||||||
|
find_if(list.cbegin(), list.cend(),
|
||||||
|
[&](const std::shared_ptr<linphone::AudioDevice> &audioItem) { return audioItem->getId() == devId; });
|
||||||
|
if (audioDevice != list.cend()) {
|
||||||
|
CoreModel::getInstance()->getCore()->setRingerDevice(devId);
|
||||||
|
emit ringerDeviceChanged(device);
|
||||||
|
} else qWarning() << "Cannot set Ringer device. The ID cannot be matched with an existant device : " << device;
|
||||||
|
}
|
||||||
|
|
||||||
|
// -----------------------------------------------------------------------------
|
||||||
bool SettingsModel::getVideoEnabled() const {
|
bool SettingsModel::getVideoEnabled() const {
|
||||||
mustBeInLinphoneThread(log().arg(Q_FUNC_INFO));
|
mustBeInLinphoneThread(log().arg(Q_FUNC_INFO));
|
||||||
return CoreModel::getInstance()->getCore()->videoEnabled();
|
return CoreModel::getInstance()->getCore()->videoEnabled();
|
||||||
|
|
|
||||||
|
|
@ -81,6 +81,7 @@ public:
|
||||||
|
|
||||||
QStringList getCaptureDevices() const;
|
QStringList getCaptureDevices() const;
|
||||||
QStringList getPlaybackDevices() const;
|
QStringList getPlaybackDevices() const;
|
||||||
|
QStringList getRingerDevices() const;
|
||||||
|
|
||||||
QString getCaptureDevice() const;
|
QString getCaptureDevice() const;
|
||||||
void setCaptureDevice(const QString &device);
|
void setCaptureDevice(const QString &device);
|
||||||
|
|
@ -88,6 +89,9 @@ public:
|
||||||
QString getPlaybackDevice() const;
|
QString getPlaybackDevice() const;
|
||||||
void setPlaybackDevice(const QString &device);
|
void setPlaybackDevice(const QString &device);
|
||||||
|
|
||||||
|
QString getRingerDevice() const;
|
||||||
|
void setRingerDevice(const QString &device);
|
||||||
|
|
||||||
void startEchoCancellerCalibration();
|
void startEchoCancellerCalibration();
|
||||||
int getEchoCancellationCalibration() const;
|
int getEchoCancellationCalibration() const;
|
||||||
|
|
||||||
|
|
@ -159,9 +163,11 @@ signals:
|
||||||
|
|
||||||
void captureDevicesChanged(const QStringList &devices);
|
void captureDevicesChanged(const QStringList &devices);
|
||||||
void playbackDevicesChanged(const QStringList &devices);
|
void playbackDevicesChanged(const QStringList &devices);
|
||||||
|
void ringerDevicesChanged(const QStringList &devices);
|
||||||
|
|
||||||
void captureDeviceChanged(const QString &device);
|
void captureDeviceChanged(const QString &device);
|
||||||
void playbackDeviceChanged(const QString &device);
|
void playbackDeviceChanged(const QString &device);
|
||||||
|
void ringerDeviceChanged(const QString &device);
|
||||||
|
|
||||||
void showAudioCodecsChanged(bool status);
|
void showAudioCodecsChanged(bool status);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -75,6 +75,37 @@ AbstractSettingsLayout {
|
||||||
Layout.topMargin: 20 * DefaultStyle.dp
|
Layout.topMargin: 20 * DefaultStyle.dp
|
||||||
Layout.leftMargin: 64 * DefaultStyle.dp
|
Layout.leftMargin: 64 * DefaultStyle.dp
|
||||||
|
|
||||||
|
ColumnLayout {
|
||||||
|
spacing: 0
|
||||||
|
RowLayout {
|
||||||
|
EffectImage {
|
||||||
|
imageSource: AppIcons.bellRinger
|
||||||
|
colorizationColor: DefaultStyle.main1_500_main
|
||||||
|
Layout.preferredWidth: 24 * DefaultStyle.dp
|
||||||
|
Layout.preferredHeight: 24 * DefaultStyle.dp
|
||||||
|
imageWidth: 24 * DefaultStyle.dp
|
||||||
|
imageHeight: 24 * DefaultStyle.dp
|
||||||
|
}
|
||||||
|
Text {
|
||||||
|
text: qsTr("Sonnerie - Appels entrants")
|
||||||
|
Layout.leftMargin: 9
|
||||||
|
font: Typography.p2l
|
||||||
|
color: DefaultStyle.main2_600
|
||||||
|
Layout.fillWidth: true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ComboSetting {
|
||||||
|
Layout.fillWidth: true
|
||||||
|
Layout.topMargin: 12 * DefaultStyle.dp
|
||||||
|
Layout.preferredWidth: parent.width
|
||||||
|
entries: SettingsCpp.ringerDevices
|
||||||
|
propertyName: "ringerDevice"
|
||||||
|
propertyOwner: SettingsCpp
|
||||||
|
}
|
||||||
|
Item {
|
||||||
|
Layout.fillHeight: true
|
||||||
|
}
|
||||||
|
}
|
||||||
ColumnLayout {
|
ColumnLayout {
|
||||||
spacing: 0
|
spacing: 0
|
||||||
RowLayout {
|
RowLayout {
|
||||||
|
|
|
||||||
|
|
@ -115,5 +115,6 @@ QtObject {
|
||||||
property string desktop: "image://internal/desktop.svg"
|
property string desktop: "image://internal/desktop.svg"
|
||||||
property string calendar: "image://internal/calendar.svg"
|
property string calendar: "image://internal/calendar.svg"
|
||||||
property string bellDnd: "image://internal/bell-dnd.svg"
|
property string bellDnd: "image://internal/bell-dnd.svg"
|
||||||
|
property string bellRinger: "image://internal/bell-ringer.svg"
|
||||||
property string voicemail: "image://internal/voicemail.svg"
|
property string voicemail: "image://internal/voicemail.svg"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue