Skip to content
Snippets Groups Projects
Commit db026419 authored by Ming Rui Zhang's avatar Ming Rui Zhang Committed by Andreas Traczyk
Browse files

settingwidget: modify for giving SIP account a unique account setting page

Change-Id: I3fc19411d1d39124205e0dab92c6c2ca7a30a8b3
parent 600208bd
Branches
Tags
No related merge requests found
/***************************************************************************
* Copyright (C) 2019-2019 by Savoir-faire Linux *
* Author: Isa Nanic <isa.nanic@savoirfairelinux.com>
* Author: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com>
* *
* 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 <http://www.gnu.org/licenses/>. *
**************************************************************************/
#include "advancedsipsettingwidget.h"
#include "ui_advancedsipsettingwidget.h"
#include <QFileDialog>
#include "api/newcodecmodel.h"
#include "lrcinstance.h"
#include "utils.h"
AdvancedSIPSettingsWidget::AdvancedSIPSettingsWidget(QWidget* parent)
:QWidget(parent),
ui(new Ui::AdvancedSIPSettingsWidget)
{
ui->setupUi(this);
///////////////////////////////////////////////////////////////////////////////
// call settings
connect(ui->checkBoxCustomRingtoneSIP, &QAbstractButton::clicked, this, &AdvancedSIPSettingsWidget::setEnableRingtone);
connect(ui->checkBoxAutoAnswerSIP, &QAbstractButton::clicked, this, &AdvancedSIPSettingsWidget::setAutoAnswerCalls);
connect(ui->btnRingtoneSIP, &QPushButton::clicked, this, &AdvancedSIPSettingsWidget::openFileCustomRingtone);
connect(ui->checkBoxCustomRingtoneSIP, &QAbstractButton::clicked, [this](int state) {
ui->btnRingtoneSIP->setEnabled((bool)state);
});
// connectivity
connect(ui->checkBoxUPnPSIP, &QAbstractButton::clicked, this, &AdvancedSIPSettingsWidget::setUseUPnP);
connect(ui->checkBoxTurnEnableSIP, &QAbstractButton::clicked, this, &AdvancedSIPSettingsWidget::setUseTURN);
connect(ui->checkBoxSTUNEnableSIP, &QAbstractButton::clicked, this, &AdvancedSIPSettingsWidget::setUseSTUN);
connect(ui->lineEditTurnAddressSIP, &QLineEdit::textEdited, this, &AdvancedSIPSettingsWidget::setTURNAddress);
connect(ui->lineEditTurnUsernameSIP, &QLineEdit::textEdited, this, &AdvancedSIPSettingsWidget::setTURNUsername);
connect(ui->lineEditTurnPsswdSIP, &QLineEdit::textEdited, this, &AdvancedSIPSettingsWidget::setTURNPsswd);
connect(ui->lineEditSTUNAddressSIP, &QLineEdit::textEdited, this, &AdvancedSIPSettingsWidget::setSTUNAddress);
// codecs
connect(ui->audioListWidgetSIP, &QListWidget::itemChanged, this, &AdvancedSIPSettingsWidget::audioCodecsStateChange);
connect(ui->videoListWidgetSIP, &QListWidget::itemChanged, this, &AdvancedSIPSettingsWidget::videoCodecsStateChange);
connect(ui->videoCheckBoxSIP, &QAbstractButton::clicked, this, &AdvancedSIPSettingsWidget::setVideoState);
// codec priority setting
connect(ui->audioDownPushButtonSIP, &QPushButton::clicked, this, &AdvancedSIPSettingsWidget::decreaseAudioCodecPriority);
connect(ui->audioUpPushButtonSIP, &QPushButton::clicked, this, &AdvancedSIPSettingsWidget::increaseAudioCodecPriority);
connect(ui->videoDownPushButtonSIP, &QPushButton::clicked, this, &AdvancedSIPSettingsWidget::decreaseVideoCodecPriority);
connect(ui->videoUpPushButtonSIP, &QPushButton::clicked, this, &AdvancedSIPSettingsWidget::increaseVideoCodecPriority);
}
AdvancedSIPSettingsWidget::~AdvancedSIPSettingsWidget()
{
delete ui;
}
void
AdvancedSIPSettingsWidget::updateAdvancedSIPSettings()
{
auto config = LRCInstance::getCurrAccConfig();
//Call Settings
ui->checkBoxAutoAnswerSIP->setChecked(config.autoAnswer);
ui->checkBoxCustomRingtoneSIP->setChecked(config.Ringtone.ringtoneEnabled);
// Connectivity
ui->checkBoxUPnPSIP->setChecked(config.upnpEnabled);
ui->checkBoxTurnEnableSIP->setChecked(config.TURN.enable);
ui->lineEditTurnAddressSIP->setText(QString::fromStdString(config.TURN.server));
ui->lineEditTurnUsernameSIP->setText(QString::fromStdString(config.TURN.username));
ui->lineEditTurnPsswdSIP->setText(QString::fromStdString(config.TURN.password));
ui->checkBoxSTUNEnableSIP->setChecked(config.STUN.enable);
ui->lineEditSTUNAddressSIP->setText(QString::fromStdString(config.STUN.server));
// codecs
ui->videoCheckBoxSIP->setChecked(config.Video.videoEnabled);
disconnect(ui->audioListWidgetSIP, &QListWidget::itemChanged, this, &AdvancedSIPSettingsWidget::audioCodecsStateChange);
disconnect(ui->videoListWidgetSIP, &QListWidget::itemChanged, this, &AdvancedSIPSettingsWidget::videoCodecsStateChange);
updateAudioCodecs();
updateVideoCodecs();
connect(ui->audioListWidgetSIP, &QListWidget::itemChanged, this, &AdvancedSIPSettingsWidget::audioCodecsStateChange);
connect(ui->videoListWidgetSIP, &QListWidget::itemChanged, this, &AdvancedSIPSettingsWidget::videoCodecsStateChange);
ui->btnRingtoneSIP->setEnabled(LRCInstance::getCurrAccConfig().Ringtone.ringtoneEnabled);
ui->btnRingtoneSIP->setText(QFileInfo(QString::fromStdString(LRCInstance::getCurrAccConfig().Ringtone.ringtonePath)).fileName());
ui->lineEditSTUNAddressSIP->setEnabled(LRCInstance::getCurrAccConfig().STUN.enable);
}
// call settings
void
AdvancedSIPSettingsWidget::setAutoAnswerCalls(bool state)
{
auto confProps = LRCInstance::accountModel().getAccountConfig(LRCInstance::getCurrAccId());
confProps.autoAnswer = state;
LRCInstance::editableAccountModel()->setAccountConfig(LRCInstance::getCurrAccId(), confProps);
}
void
AdvancedSIPSettingsWidget::setEnableRingtone(bool state)
{
auto confProps = LRCInstance::accountModel().getAccountConfig(LRCInstance::getCurrAccId());
confProps.Ringtone.ringtoneEnabled = state;
LRCInstance::editableAccountModel()->setAccountConfig(LRCInstance::getCurrAccId(), confProps);
}
void
AdvancedSIPSettingsWidget::openFileCustomRingtone()
{
QString fileUrl;
auto oldPath = QString::fromStdString(LRCInstance::getCurrAccConfig().Ringtone.ringtonePath);
auto openPath = oldPath.isEmpty() ? QDir::currentPath() + QString("/ringtones/") : QFileInfo(oldPath).absolutePath();
fileUrl = QFileDialog::getOpenFileName(this, QString("Select a new ringtone"), openPath, tr("Audio Files (*.wav *.ogg *.opus *.mp3 *aiff *wma)"));
if (!fileUrl.isEmpty()) {
auto confProps = LRCInstance::accountModel().getAccountConfig(LRCInstance::getCurrAccId());
confProps.Ringtone.ringtonePath = fileUrl.toStdString();
LRCInstance::editableAccountModel()->setAccountConfig(LRCInstance::getCurrAccId(), confProps);
ui->btnRingtoneSIP->setText(QFileInfo(fileUrl).fileName());
} else if (oldPath.isEmpty()) {
ui->btnRingtoneSIP->setText(tr("Add a custom ringtone"));
}
}
// connectivity
void
AdvancedSIPSettingsWidget::setUseUPnP(bool state)
{
auto confProps = LRCInstance::accountModel().getAccountConfig(LRCInstance::getCurrAccId());
confProps.upnpEnabled = state;
LRCInstance::editableAccountModel()->setAccountConfig(LRCInstance::getCurrAccId(), confProps);
}
void
AdvancedSIPSettingsWidget::setUseTURN(bool state)
{
auto confProps = LRCInstance::accountModel().getAccountConfig(LRCInstance::getCurrAccId());
confProps.TURN.enable = state;
LRCInstance::editableAccountModel()->setAccountConfig(LRCInstance::getCurrAccId(), confProps);
}
void
AdvancedSIPSettingsWidget::setUseSTUN(bool state)
{
auto confProps = LRCInstance::accountModel().getAccountConfig(LRCInstance::getCurrAccId());
confProps.STUN.enable = state;
LRCInstance::editableAccountModel()->setAccountConfig(LRCInstance::getCurrAccId(), confProps);
state ? ui->lineEditSTUNAddressSIP->setEnabled(true) : ui->lineEditSTUNAddressSIP->setEnabled(false);
}
void
AdvancedSIPSettingsWidget::setTURNAddress(const QString& name)
{
auto confProps = LRCInstance::accountModel().getAccountConfig(LRCInstance::getCurrAccId());
confProps.TURN.server = name.toStdString();
LRCInstance::editableAccountModel()->setAccountConfig(LRCInstance::getCurrAccId(), confProps);
}
void
AdvancedSIPSettingsWidget::setTURNUsername(const QString& name)
{
auto confProps = LRCInstance::accountModel().getAccountConfig(LRCInstance::getCurrAccId());
confProps.TURN.username = name.toStdString();
LRCInstance::editableAccountModel()->setAccountConfig(LRCInstance::getCurrAccId(), confProps);
}
void
AdvancedSIPSettingsWidget::setTURNPsswd(const QString& name)
{
auto confProps = LRCInstance::accountModel().getAccountConfig(LRCInstance::getCurrAccId());
confProps.TURN.password = name.toStdString();
LRCInstance::editableAccountModel()->setAccountConfig(LRCInstance::getCurrAccId(), confProps);
}
void
AdvancedSIPSettingsWidget::setSTUNAddress(const QString& name)
{
auto confProps = LRCInstance::accountModel().getAccountConfig(LRCInstance::getCurrAccId());
confProps.STUN.server = name.toStdString();
LRCInstance::editableAccountModel()->setAccountConfig(LRCInstance::getCurrAccId(), confProps);
}
void
AdvancedSIPSettingsWidget::updateAudioCodecs()
{
ui->audioListWidgetSIP->clear();
auto audioCodecList = LRCInstance::getCurrentAccountInfo().codecModel->getAudioCodecs();
int i = 0;
for (auto it = audioCodecList.begin(); it != audioCodecList.end(); ++it, ++i) {
QListWidgetItem* audioItem = new QListWidgetItem(ui->audioListWidgetSIP);
audioItem->setFlags(Qt::ItemIsUserCheckable | Qt::ItemIsEnabled | Qt::ItemIsSelectable);
Qt::CheckState state;
it->enabled ? state = Qt::Checked : state = Qt::Unchecked;
audioItem->setCheckState(state);
audioItem->setData(Qt::DisplayRole, QString::fromStdString(it->name) + "\n" + QString::fromStdString(it->samplerate)
+ " Hz");
ui->audioListWidgetSIP->addItem(audioItem);
}
}
void
AdvancedSIPSettingsWidget::updateVideoCodecs()
{
ui->videoListWidgetSIP->clear();
auto videoCodecList = LRCInstance::getCurrentAccountInfo().codecModel->getVideoCodecs();
int i = 0;
for (auto it = videoCodecList.begin(); it != videoCodecList.end(); ++it, ++i) {
if (it->name.length()) { // [temporary fix]
QListWidgetItem* videoItem = new QListWidgetItem(ui->videoListWidgetSIP);
videoItem->setFlags(Qt::ItemIsUserCheckable | Qt::ItemIsEnabled | Qt::ItemIsSelectable);
Qt::CheckState state;
it->enabled ? state = Qt::Checked : state = Qt::Unchecked;
videoItem->setCheckState(state);
videoItem->setData(Qt::DisplayRole, QString::fromStdString(it->name) + "\n");
ui->audioListWidgetSIP->addItem(videoItem);
}
}
}
void
AdvancedSIPSettingsWidget::audioCodecsStateChange(QListWidgetItem* item)
{
auto audioCodecList = LRCInstance::getCurrentAccountInfo().codecModel->getAudioCodecs();
auto it = audioCodecList.begin();
std::advance(it, ui->audioListWidgetSIP->row(item));
LRCInstance::getCurrentAccountInfo().codecModel->enable(it->id, !(it->enabled));
}
void
AdvancedSIPSettingsWidget::videoCodecsStateChange(QListWidgetItem* item)
{
auto videoCodecList = LRCInstance::getCurrentAccountInfo().codecModel->getVideoCodecs();
auto it = videoCodecList.begin();
std::advance(it, ui->videoListWidgetSIP->row(item));
LRCInstance::getCurrentAccountInfo().codecModel->enable(it->id, !(it->enabled));
}
void
AdvancedSIPSettingsWidget::decreaseAudioCodecPriority()
{
int selectedRow = ui->audioListWidgetSIP->row(ui->audioListWidgetSIP->selectedItems().at(0));
auto audioCodecList = LRCInstance::getCurrentAccountInfo().codecModel->getAudioCodecs();
auto it = audioCodecList.begin();
advance(it, selectedRow);
LRCInstance::getCurrentAccountInfo().codecModel->decreasePriority(it->id, false);
updateAudioCodecs();
}
void
AdvancedSIPSettingsWidget::increaseAudioCodecPriority()
{
int selectedRow = ui->audioListWidgetSIP->row(ui->audioListWidgetSIP->selectedItems().at(0));
auto audioCodecList = LRCInstance::getCurrentAccountInfo().codecModel->getAudioCodecs();
auto it = audioCodecList.begin();
advance(it, selectedRow);
LRCInstance::getCurrentAccountInfo().codecModel->increasePriority(it->id, false);
updateAudioCodecs();
}
void
AdvancedSIPSettingsWidget::decreaseVideoCodecPriority()
{
int selectedRow = ui->videoListWidgetSIP->row(ui->videoListWidgetSIP->selectedItems().at(0));
auto videoCodecList = LRCInstance::getCurrentAccountInfo().codecModel->getVideoCodecs();
auto it = videoCodecList.begin();
advance(it, selectedRow);
LRCInstance::getCurrentAccountInfo().codecModel->decreasePriority(it->id, true);
updateVideoCodecs();
}
void
AdvancedSIPSettingsWidget::increaseVideoCodecPriority()
{
int selectedRow = ui->videoListWidgetSIP->row(ui->videoListWidgetSIP->selectedItems().at(0));
auto videoCodecList = LRCInstance::getCurrentAccountInfo().codecModel->getVideoCodecs();
auto it = videoCodecList.begin();
advance(it, selectedRow);
LRCInstance::getCurrentAccountInfo().codecModel->increasePriority(it->id, true);
updateVideoCodecs();
}
void
AdvancedSIPSettingsWidget::setVideoState(int state)
{
auto confProps = LRCInstance::accountModel().getAccountConfig(LRCInstance::getCurrAccId());
confProps.Video.videoEnabled = (bool)state;
LRCInstance::editableAccountModel()->setAccountConfig(LRCInstance::getCurrAccId(), confProps);
}
/***************************************************************************
* Copyright (C) 2019-2019 by Savoir-faire Linux *
* Author: Isa Nanic <isa.nanic@savoirfairelinux.com>
* Author: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com>
* *
* 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 <http://www.gnu.org/licenses/>. *
**************************************************************************/
#pragma once
#include <QWidget>
#include <QListWidgetItem>
namespace Ui
{
class AdvancedSIPSettingsWidget;
}
class AdvancedSIPSettingsWidget : public QWidget
{
Q_OBJECT
AdvancedSIPSettingsWidget(const AdvancedSIPSettingsWidget& cpy);
public:
AdvancedSIPSettingsWidget(QWidget* parent = nullptr);
~AdvancedSIPSettingsWidget();
void updateAdvancedSIPSettings();
private:
Ui::AdvancedSIPSettingsWidget* ui;
private slots:
// call settings
void setAutoAnswerCalls(bool state);
void setEnableRingtone(bool state);
void openFileCustomRingtone();
// connectivity
void setUseUPnP(bool state);
void setUseTURN(bool state);
void setUseSTUN(bool state);
void setTURNAddress(const QString& name);
void setTURNUsername(const QString& name);
void setTURNPsswd(const QString& name);
void setSTUNAddress(const QString& name);
// codecs
void updateAudioCodecs();
void updateVideoCodecs();
void audioCodecsStateChange(QListWidgetItem* item = nullptr);
void videoCodecsStateChange(QListWidgetItem* item = nullptr);
void decreaseAudioCodecPriority();
void increaseAudioCodecPriority();
void decreaseVideoCodecPriority();
void increaseVideoCodecPriority();
void setVideoState(int state);
};
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>AdvancedSIPSettingsWidget</class>
<widget class="QWidget" name="AdvancedSIPSettingsWidget">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>688</width>
<height>1273</height>
</rect>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<property name="styleSheet">
<string notr="true"/>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QFrame" name="SIPCallSettings">
<property name="styleSheet">
<string notr="true"/>
</property>
<layout class="QVBoxLayout" name="verticalLayout_2">
<property name="topMargin">
<number>20</number>
</property>
<property name="bottomMargin">
<number>20</number>
</property>
<item>
<widget class="QLabel" name="labelISP">
<property name="font">
<font>
<pointsize>11</pointsize>
</font>
</property>
<property name="text">
<string>Call Settings</string>
</property>
</widget>
</item>
<item>
<layout class="QVBoxLayout" name="verticalLayoutSIP_3">
<property name="leftMargin">
<number>40</number>
</property>
<property name="topMargin">
<number>5</number>
</property>
<item>
<widget class="QCheckBox" name="checkBoxAutoAnswerSIP">
<property name="font">
<font>
<pointsize>9</pointsize>
</font>
</property>
<property name="text">
<string>Auto Answer Calls</string>
</property>
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayoutSIP" stretch="0,0,0">
<item>
<widget class="QCheckBox" name="checkBoxCustomRingtoneSIP">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<pointsize>9</pointsize>
</font>
</property>
<property name="text">
<string>Enable Custom Ringtone</string>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="btnRingtoneSIP">
<property name="minimumSize">
<size>
<width>250</width>
<height>25</height>
</size>
</property>
<property name="font">
<font>
<pointsize>9</pointsize>
</font>
</property>
<property name="styleSheet">
<string notr="true">background: rgb(248, 248, 248); border-radius: 3px;</string>
</property>
<property name="text">
<string>Add a custom ringtone</string>
</property>
<property name="icon">
<iconset>
<normaloff>images/icons/round-folder-24px.svg</normaloff>images/icons/round-folder-24px.svg</iconset>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacerSIP_7">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
</layout>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QFrame" name="SIPConnectivity">
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QVBoxLayout" name="verticalLayout_8">
<property name="topMargin">
<number>30</number>
</property>
<property name="bottomMargin">
<number>20</number>
</property>
<item>
<widget class="QLabel" name="labelSIP_11">
<property name="font">
<font>
<pointsize>11</pointsize>
</font>
</property>
<property name="text">
<string>Connectivity</string>
</property>
</widget>
</item>
<item>
<layout class="QGridLayout" name="gridLayoutSIP">
<property name="leftMargin">
<number>40</number>
</property>
<item row="3" column="2">
<widget class="QLineEdit" name="lineEditTurnUsernameSIP">
<property name="font">
<font>
<pointsize>9</pointsize>
</font>
</property>
<property name="styleSheet">
<string notr="true">border-bottom: 1px solid black;</string>
</property>
</widget>
</item>
<item row="0" column="1">
<spacer name="horizontalSpacerSIP_5">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::MinimumExpanding</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="2" column="0">
<widget class="QLabel" name="labelSIP_13">
<property name="font">
<font>
<pointsize>9</pointsize>
</font>
</property>
<property name="text">
<string> TURN Address</string>
</property>
</widget>
</item>
<item row="2" column="2">
<widget class="QLineEdit" name="lineEditTurnAddressSIP">
<property name="sizePolicy">
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>300</width>
<height>0</height>
</size>
</property>
<property name="font">
<font>
<pointsize>9</pointsize>
</font>
</property>
<property name="autoFillBackground">
<bool>false</bool>
</property>
<property name="styleSheet">
<string notr="true">border-bottom: 1px solid black;</string>
</property>
</widget>
</item>
<item row="5" column="0">
<widget class="QCheckBox" name="checkBoxSTUNEnableSIP">
<property name="font">
<font>
<pointsize>9</pointsize>
</font>
</property>
<property name="text">
<string>Use STUN</string>
</property>
</widget>
</item>
<item row="4" column="2">
<widget class="QLineEdit" name="lineEditTurnPsswdSIP">
<property name="font">
<font>
<pointsize>9</pointsize>
</font>
</property>
<property name="styleSheet">
<string notr="true">border-bottom: 1px solid black;</string>
</property>
</widget>
</item>
<item row="5" column="2">
<widget class="QLineEdit" name="lineEditSTUNAddressSIP">
<property name="font">
<font>
<pointsize>9</pointsize>
</font>
</property>
<property name="styleSheet">
<string notr="true">border-bottom: 1px solid black;</string>
</property>
<property name="placeholderText">
<string>STUN Address</string>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="labelSIP_14">
<property name="font">
<font>
<pointsize>9</pointsize>
</font>
</property>
<property name="text">
<string> TURN Username</string>
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QLabel" name="labelSIP_12">
<property name="font">
<font>
<pointsize>9</pointsize>
</font>
</property>
<property name="text">
<string> TURN Password</string>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QCheckBox" name="checkBoxUPnPSIP">
<property name="font">
<font>
<pointsize>9</pointsize>
</font>
</property>
<property name="text">
<string>Use UPnP</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QCheckBox" name="checkBoxTurnEnableSIP">
<property name="font">
<font>
<pointsize>9</pointsize>
</font>
</property>
<property name="text">
<string>Use TURN</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QFrame" name="SIPVideo">
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_14">
<property name="topMargin">
<number>30</number>
</property>
<property name="bottomMargin">
<number>20</number>
</property>
<item>
<layout class="QVBoxLayout" name="verticalLayoutSIP_12">
<item>
<layout class="QHBoxLayout" name="horizontalLayoutSIP_10">
<item>
<widget class="QLabel" name="audioLabelSIP">
<property name="minimumSize">
<size>
<width>0</width>
<height>30</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>30</height>
</size>
</property>
<property name="font">
<font>
<pointsize>9</pointsize>
</font>
</property>
<property name="styleSheet">
<string notr="true"/>
</property>
<property name="text">
<string>Audio Codecs</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacerSIP_10">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QPushButton" name="audioDownPushButtonSIP">
<property name="minimumSize">
<size>
<width>30</width>
<height>30</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>30</width>
<height>30</height>
</size>
</property>
<property name="font">
<font>
<pointsize>9</pointsize>
</font>
</property>
<property name="text">
<string/>
</property>
<property name="icon">
<iconset>
<normaloff>images/icons/round-arrow_drop_down-24px.svg</normaloff>images/icons/round-arrow_drop_down-24px.svg</iconset>
</property>
<property name="iconSize">
<size>
<width>20</width>
<height>20</height>
</size>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="audioUpPushButtonSIP">
<property name="minimumSize">
<size>
<width>30</width>
<height>30</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>30</width>
<height>30</height>
</size>
</property>
<property name="font">
<font>
<pointsize>9</pointsize>
</font>
</property>
<property name="text">
<string/>
</property>
<property name="icon">
<iconset>
<normaloff>images/icons/round-arrow_drop_up-24px.svg</normaloff>images/icons/round-arrow_drop_up-24px.svg</iconset>
</property>
<property name="iconSize">
<size>
<width>20</width>
<height>20</height>
</size>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacerSIP_11">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>10</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
<item>
<widget class="QListWidget" name="audioListWidgetSIP">
<property name="minimumSize">
<size>
<width>0</width>
<height>200</height>
</size>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QVBoxLayout" name="verticalLayoutSIP_13">
<item>
<layout class="QHBoxLayout" name="horizontalLayoutSIP_8">
<item>
<widget class="QCheckBox" name="videoCheckBoxSIP">
<property name="minimumSize">
<size>
<width>0</width>
<height>30</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>30</height>
</size>
</property>
<property name="font">
<font>
<pointsize>9</pointsize>
</font>
</property>
<property name="styleSheet">
<string notr="true"/>
</property>
<property name="text">
<string>Video Codecs</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacerSIP_9">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QPushButton" name="videoDownPushButtonSIP">
<property name="minimumSize">
<size>
<width>30</width>
<height>30</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>30</width>
<height>30</height>
</size>
</property>
<property name="font">
<font>
<pointsize>9</pointsize>
</font>
</property>
<property name="text">
<string/>
</property>
<property name="icon">
<iconset>
<normaloff>images/icons/round-arrow_drop_down-24px.svg</normaloff>images/icons/round-arrow_drop_down-24px.svg</iconset>
</property>
<property name="iconSize">
<size>
<width>20</width>
<height>20</height>
</size>
</property>
</widget>
</item>
<item>
<widget class="QPushButton" name="videoUpPushButtonSIP">
<property name="minimumSize">
<size>
<width>30</width>
<height>30</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>30</width>
<height>30</height>
</size>
</property>
<property name="font">
<font>
<pointsize>9</pointsize>
</font>
</property>
<property name="text">
<string/>
</property>
<property name="icon">
<iconset>
<normaloff>images/icons/round-arrow_drop_up-24px.svg</normaloff>images/icons/round-arrow_drop_up-24px.svg</iconset>
</property>
<property name="iconSize">
<size>
<width>20</width>
<height>20</height>
</size>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacerSIP_12">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>10</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
<item>
<widget class="QListWidget" name="videoListWidgetSIP">
<property name="minimumSize">
<size>
<width>0</width>
<height>200</height>
</size>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
</item>
<item>
<spacer name="verticalSpacerSIP">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>
images/icons/showHide.PNG

815 B

images/icons/showHideTwo.PNG

449 B

...@@ -61,7 +61,8 @@ HEADERS += aboutdialog.h \ ...@@ -61,7 +61,8 @@ HEADERS += aboutdialog.h \
shmclient.h \ shmclient.h \
videooverlay.h \ videooverlay.h \
utils.h \ utils.h \
webchathelpers.h webchathelpers.h \
advancedsipsettingwidget.h
FORMS += contactdialog.ui \ FORMS += contactdialog.ui \
videoview.ui \ videoview.ui \
animatedoverlay.ui \ animatedoverlay.ui \
...@@ -83,7 +84,8 @@ FORMS += contactdialog.ui \ ...@@ -83,7 +84,8 @@ FORMS += contactdialog.ui \
advancedsettingswidget.ui \ advancedsettingswidget.ui \
callwidget.ui \ callwidget.ui \
settingswidget.ui \ settingswidget.ui \
videooverlay.ui videooverlay.ui \
advancedsipsettingwidget.ui
SOURCES += aboutdialog.cpp \ SOURCES += aboutdialog.cpp \
bannedcontactswidget.cpp \ bannedcontactswidget.cpp \
idlabel.cpp \ idlabel.cpp \
...@@ -128,5 +130,6 @@ SOURCES += aboutdialog.cpp \ ...@@ -128,5 +130,6 @@ SOURCES += aboutdialog.cpp \
videooverlay.cpp \ videooverlay.cpp \
utils.cpp \ utils.cpp \
videoview.cpp \ videoview.cpp \
webchathelpers.cpp webchathelpers.cpp \
advancedsipsettingwidget.cpp
RESOURCES += ressources.qrc RESOURCES += ressources.qrc
...@@ -3,7 +3,8 @@ ...@@ -3,7 +3,8 @@
* Author: Edric Ladent Milaret <edric.ladent-milaret@savoirfairelinux.com>* * Author: Edric Ladent Milaret <edric.ladent-milaret@savoirfairelinux.com>*
* Author: Anthony Lonard <anthony.leonard@savoirfairelinux.com> * * Author: Anthony Lonard <anthony.leonard@savoirfairelinux.com> *
* Author: Olivier Soldano <olivier.soldano@savoirfairelinux.com> * * Author: Olivier Soldano <olivier.soldano@savoirfairelinux.com> *
* Author: Andreas Traczyk <andreas.traczyk@savoirfairelinux.com> * * Author: Andreas Traczyk <andreas.traczyk@savoirfairelinux.com>
* Author: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com>
* * * *
* This program is free software; you can redistribute it and/or modify * * 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 * * it under the terms of the GNU General Public License as published by *
......
...@@ -76,5 +76,7 @@ ...@@ -76,5 +76,7 @@
<file>images/icons/round-error-24px.svg</file> <file>images/icons/round-error-24px.svg</file>
<file>images/icons/round-save_alt-24px.svg</file> <file>images/icons/round-save_alt-24px.svg</file>
<file>images/jami_eclipse_spinner.gif</file> <file>images/jami_eclipse_spinner.gif</file>
<file>images/icons/showHide.PNG</file>
<file>images/icons/showHideTwo.PNG</file>
</qresource> </qresource>
</RCC> </RCC>
...@@ -223,6 +223,7 @@ ...@@ -223,6 +223,7 @@
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemGroup> <ItemGroup>
<ClCompile Include="advancedsettingswidget.cpp" /> <ClCompile Include="advancedsettingswidget.cpp" />
<ClCompile Include="advancedsipsettingwidget.cpp" />
<ClCompile Include="avatargraphicsview.cpp" /> <ClCompile Include="avatargraphicsview.cpp" />
<ClCompile Include="bannedlistmodel.cpp" /> <ClCompile Include="bannedlistmodel.cpp" />
<ClCompile Include="animationhelpers.cpp" /> <ClCompile Include="animationhelpers.cpp" />
...@@ -394,6 +395,10 @@ ...@@ -394,6 +395,10 @@
<IncludePath Condition="'$(Configuration)|$(Platform)'=='ReleaseCompile|x64'">.\GeneratedFiles\$(ConfigurationName)\.;.\GeneratedFiles;.;$(ProjectDir)..\ring-daemon\contrib\msvc\include;$(ProjectDir)..\daemon\contrib\msvc\include;$(ProjectDir)..\ring-lrc\src;$(ProjectDir)..\lrc\src;$(ProjectDir)winsparkle\include;$(ProjectDir)qrencode-win32\qrencode-win32;$(QTDIR)\include;$(QTDIR)\include\QtSvg;$(QTDIR)\include\QtWidgets;$(QTDIR)\include\QtWinExtras;$(QTDIR)\include\QtGui;$(QTDIR)\include\QtANGLE;$(QTDIR)\include\QtXml;$(QTDIR)\include\QtNetwork;$(QTDIR)\include\QtWebEngineWidgets;$(QTDIR)\include\QtWebChannel;$(QTDIR)\include\QtCore;$(QTDIR)\mkspecs\win32-msvc;.\release</IncludePath> <IncludePath Condition="'$(Configuration)|$(Platform)'=='ReleaseCompile|x64'">.\GeneratedFiles\$(ConfigurationName)\.;.\GeneratedFiles;.;$(ProjectDir)..\ring-daemon\contrib\msvc\include;$(ProjectDir)..\daemon\contrib\msvc\include;$(ProjectDir)..\ring-lrc\src;$(ProjectDir)..\lrc\src;$(ProjectDir)winsparkle\include;$(ProjectDir)qrencode-win32\qrencode-win32;$(QTDIR)\include;$(QTDIR)\include\QtSvg;$(QTDIR)\include\QtWidgets;$(QTDIR)\include\QtWinExtras;$(QTDIR)\include\QtGui;$(QTDIR)\include\QtANGLE;$(QTDIR)\include\QtXml;$(QTDIR)\include\QtNetwork;$(QTDIR)\include\QtWebEngineWidgets;$(QTDIR)\include\QtWebChannel;$(QTDIR)\include\QtCore;$(QTDIR)\mkspecs\win32-msvc;.\release</IncludePath>
<Define Condition="'$(Configuration)|$(Platform)'=='ReleaseCompile|x64'">COMPILE_ONLY;_WINDOWS;UNICODE;_UNICODE;WIN32;WIN64;ENABLE_AUTOUPDATE;QT_NO_DEBUG;NDEBUG</Define> <Define Condition="'$(Configuration)|$(Platform)'=='ReleaseCompile|x64'">COMPILE_ONLY;_WINDOWS;UNICODE;_UNICODE;WIN32;WIN64;ENABLE_AUTOUPDATE;QT_NO_DEBUG;NDEBUG</Define>
</QtMoc> </QtMoc>
<QtMoc Include="advancedsipsettingwidget.h">
<IncludePath Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\GeneratedFiles\$(ConfigurationName);.\GeneratedFiles;.;$(ProjectDir)..\ring-daemon\contrib\msvc\include;$(ProjectDir)..\daemon\contrib\msvc\include;$(ProjectDir)..\ring-lrc\src;$(ProjectDir)..\lrc\src;$(ProjectDir)winsparkle\include;$(ProjectDir)qrencode-win32\qrencode-win32;$(QTDIR)\include;$(QTDIR)\include\QtSvg;$(QTDIR)\include\QtWidgets;$(QTDIR)\include\QtWinExtras;$(QTDIR)\include\QtGui;$(QTDIR)\include\QtANGLE;$(QTDIR)\include\QtXml;$(QTDIR)\include\QtNetwork;$(QTDIR)\include\QtWebEngineWidgets;$(QTDIR)\include\QtWebChannel;$(QTDIR)\include\QtCore;$(QTDIR)\mkspecs\win32-msvc;.\release</IncludePath>
<IncludePath Condition="'$(Configuration)|$(Platform)'=='ReleaseCompile|x64'">.\GeneratedFiles\$(ConfigurationName);.\GeneratedFiles;.;$(ProjectDir)..\ring-daemon\contrib\msvc\include;$(ProjectDir)..\daemon\contrib\msvc\include;$(ProjectDir)..\ring-lrc\src;$(ProjectDir)..\lrc\src;$(ProjectDir)winsparkle\include;$(ProjectDir)qrencode-win32\qrencode-win32;$(QTDIR)\include;$(QTDIR)\include\QtSvg;$(QTDIR)\include\QtWidgets;$(QTDIR)\include\QtWinExtras;$(QTDIR)\include\QtGui;$(QTDIR)\include\QtANGLE;$(QTDIR)\include\QtXml;$(QTDIR)\include\QtNetwork;$(QTDIR)\include\QtWebEngineWidgets;$(QTDIR)\include\QtWebChannel;$(QTDIR)\include\QtCore;$(QTDIR)\mkspecs\win32-msvc;.\release</IncludePath>
</QtMoc>
<ClInclude Include="pixbufmanipulator.h" /> <ClInclude Include="pixbufmanipulator.h" />
<QtMoc Include="ringbutton.h"> <QtMoc Include="ringbutton.h">
</QtMoc> </QtMoc>
...@@ -557,6 +562,7 @@ ...@@ -557,6 +562,7 @@
<QtUic Include="advancedsettingswidget.ui"> <QtUic Include="advancedsettingswidget.ui">
<SubType>Designer</SubType> <SubType>Designer</SubType>
</QtUic> </QtUic>
<QtUic Include="advancedsipsettingwidget.ui" />
<QtUic Include="animatedoverlay.ui"> <QtUic Include="animatedoverlay.ui">
<SubType>Designer</SubType> <SubType>Designer</SubType>
</QtUic> </QtUic>
......
...@@ -195,6 +195,9 @@ ...@@ -195,6 +195,9 @@
<ClCompile Include="bezierconnectorwidget.cpp"> <ClCompile Include="bezierconnectorwidget.cpp">
<Filter>Source Files</Filter> <Filter>Source Files</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="advancedsipsettingwidget.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<QtMoc Include="aboutdialog.h"> <QtMoc Include="aboutdialog.h">
...@@ -326,6 +329,9 @@ ...@@ -326,6 +329,9 @@
<QtMoc Include="lrcinstance.h"> <QtMoc Include="lrcinstance.h">
<Filter>Header Files</Filter> <Filter>Header Files</Filter>
</QtMoc> </QtMoc>
<QtMoc Include="advancedsipsettingwidget.h">
<Filter>Header Files</Filter>
</QtMoc>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<CustomBuild Include="debug\moc_predefs.h.cbt"> <CustomBuild Include="debug\moc_predefs.h.cbt">
...@@ -605,6 +611,9 @@ ...@@ -605,6 +611,9 @@
<QtUic Include="newwizardwidget.ui"> <QtUic Include="newwizardwidget.ui">
<Filter>Form Files</Filter> <Filter>Form Files</Filter>
</QtUic> </QtUic>
<QtUic Include="advancedsipsettingwidget.ui">
<Filter>Form Files</Filter>
</QtUic>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<None Include="images\FontAwesome.otf"> <None Include="images\FontAwesome.otf">
......
This diff is collapsed.
/*************************************************************************** /***************************************************************************
* Copyright (C) 2019-2019 by Savoir-faire Linux * * Copyright (C) 2019-2019 by Savoir-faire Linux *
* Author: Isa Nanic <isa.nanic@savoirfairelinux.com> * * Author: Isa Nanic <isa.nanic@savoirfairelinux.com>
* Author: Mingrui Zhang <mingrui.zhang@savoirfairelinux.com>
* * * *
* This program is free software; you can redistribute it and/or modify * * 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 * * it under the terms of the GNU General Public License as published by *
...@@ -24,6 +25,7 @@ ...@@ -24,6 +25,7 @@
#include "lrcinstance.h" #include "lrcinstance.h"
#include "advancedsettingswidget.h" #include "advancedsettingswidget.h"
#include "advancedsipsettingwidget.h"
#include "bannedlistmodel.h" #include "bannedlistmodel.h"
#include "linkdevwidget.h" #include "linkdevwidget.h"
...@@ -36,7 +38,8 @@ ...@@ -36,7 +38,8 @@
// av settings // av settings
#include "video/devicemodel.h" #include "video/devicemodel.h"
namespace Ui { namespace Ui
{
class SettingsWidget; class SettingsWidget;
} }
...@@ -69,7 +72,12 @@ private: ...@@ -69,7 +72,12 @@ private:
Ui::SettingsWidget* ui; Ui::SettingsWidget* ui;
// ************************* Account Settings ************************* // ************************* SIP Account/Account Settings *************************
lrc::api::account::ConfProperties_t confProps_;
bool showOrHide_{false};
void showhideButtonClicked();
void passwordClicked(); void passwordClicked();
void avatarClicked(); void avatarClicked();
...@@ -84,7 +92,12 @@ private: ...@@ -84,7 +92,12 @@ private:
bool advancedSettingsDropped_ = false; bool advancedSettingsDropped_ = false;
bool bannedContactsShown_ = false; bool bannedContactsShown_ = false;
AdvancedSIPSettingsWidget* advancedSIPSettingsWidget_;
QScrollArea* scrollSIPArea_;
bool advancedSIPSettingsDropped_ = false;
int avatarSize_; int avatarSize_;
int avatarSIPSize_;
void setRegNameUi(RegName stat); void setRegNameUi(RegName stat);
bool regNameBtn_ = false; bool regNameBtn_ = false;
...@@ -109,6 +122,7 @@ private slots: ...@@ -109,6 +122,7 @@ private slots:
void setAccEnableSlot(int state); void setAccEnableSlot(int state);
void delAccountSlot(); void delAccountSlot();
void toggleAdvancedSIPSettings();
void toggleAdvancedSettings(); void toggleAdvancedSettings();
void toggleBannedContacts(); void toggleBannedContacts();
void exportAccountSlot(); void exportAccountSlot();
......
This diff is collapsed.
...@@ -45,7 +45,8 @@ QWidget#smartListOuterWidget { ...@@ -45,7 +45,8 @@ QWidget#smartListOuterWidget {
} }
QPushButton#btnConversations, QPushButton#btnInvites, QPushButton#btnConversations, QPushButton#btnInvites,
QPushButton#btnExportAccount, QPushButton#btnDeletAccount { QPushButton#btnExportAccount, QPushButton#btnDeletAccount,
QPushButton#btnSIPDeletAccount {
border-radius: 0px; border-radius: 0px;
border-top-left-radius: 15px; border-top-left-radius: 15px;
border-top-right-radius: 15px; border-top-right-radius: 15px;
...@@ -60,12 +61,13 @@ QPushButton#btnExportAccount, QPushButton#btnDeletAccount { ...@@ -60,12 +61,13 @@ QPushButton#btnExportAccount, QPushButton#btnDeletAccount {
} }
QPushButton#btnConversations:hover, QPushButton#btnInvites:hover, QPushButton#btnConversations:hover, QPushButton#btnInvites:hover,
QPushButton#btnExportAccount:hover, QPushButton#btnDeletAccount:hover { QPushButton#btnExportAccount:hover, QPushButton#btnDeletAccount:hover,
background-color: rgb(237, 237, 237); QPushButton#btnSIPDeletAccount:hover {
border-top: 2px solid rgb(237, 237, 237); background-color: rgb(188, 185, 184);
border-right: 2px solid rgb(237, 237, 237); border-top: 2px solid rgb(188, 185, 184);
border-bottom: 2px solid rgb(237, 237, 237); border-right: 2px solid rgb(188, 185, 184);
border-left: 2px solid rgb(237, 237, 237); border-bottom: 2px solid rgb(188, 185, 184);
border-left: 2px solid rgb(188, 185, 184);
} }
QPushButton#btnConversations:checked, QPushButton#btnInvites:checked, QPushButton#btnConversations:checked, QPushButton#btnInvites:checked,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment