fix #LINQT-1622 connection succeed popup
set new privacy policy and terms of use urls fix mic volume tester visibility in call fix #LINQT-1583 secured avatar on unsecured address in call history fix #LINQT-1631 zrtp to verify devices fix #LINQT-1526 title inside stackview to avoid freeze effect fix #LINQT-1579 spacing in layouts fix #LINQT-1625 right panel closes before new call starts crop text sticker fix verified icon size
This commit is contained in:
parent
063cdfb33b
commit
db6fc41480
17 changed files with 435 additions and 478 deletions
|
|
@ -66,8 +66,8 @@ public:
|
||||||
static constexpr char VersionCheckReleaseUrl[] = "https://linphone.org/releases";
|
static constexpr char VersionCheckReleaseUrl[] = "https://linphone.org/releases";
|
||||||
static constexpr char VersionCheckNightlyUrl[] = "https://linphone.org/snapshots";
|
static constexpr char VersionCheckNightlyUrl[] = "https://linphone.org/snapshots";
|
||||||
static constexpr char PasswordRecoveryUrl[] = "https://subscribe.linphone.org/recovery/email";
|
static constexpr char PasswordRecoveryUrl[] = "https://subscribe.linphone.org/recovery/email";
|
||||||
static constexpr char CguUrl[] = "https://www.linphone.org/general-terms";
|
static constexpr char CguUrl[] = "https://www.linphone.org/en/terms-of-use/";
|
||||||
static constexpr char PrivatePolicyUrl[] = "https://www.linphone.org/privacy-policy";
|
static constexpr char PrivatePolicyUrl[] = "https://www.linphone.org/en/privacy-policy/";
|
||||||
static constexpr char ContactUrl[] = "https://www.linphone.org/contact";
|
static constexpr char ContactUrl[] = "https://www.linphone.org/contact";
|
||||||
static constexpr char TranslationUrl[] = "https://weblate.linphone.org/projects/linphone-desktop/";
|
static constexpr char TranslationUrl[] = "https://weblate.linphone.org/projects/linphone-desktop/";
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -135,6 +135,8 @@ void Utils::createCall(const QString &sipAddress,
|
||||||
LinphoneEnums::MediaEncryption mediaEncryption,
|
LinphoneEnums::MediaEncryption mediaEncryption,
|
||||||
const QString &prepareTransfertAddress,
|
const QString &prepareTransfertAddress,
|
||||||
const QHash<QString, QString> &headers) {
|
const QHash<QString, QString> &headers) {
|
||||||
|
// if default value use the settings' value
|
||||||
|
if (mediaEncryption == LinphoneEnums::MediaEncryption::None)
|
||||||
mediaEncryption =
|
mediaEncryption =
|
||||||
App::getInstance()->getSettings()->getMediaEncryption()["id"].value<LinphoneEnums::MediaEncryption>();
|
App::getInstance()->getSettings()->getMediaEncryption()["id"].value<LinphoneEnums::MediaEncryption>();
|
||||||
lDebug() << "[Utils] create call with uri :" << sipAddress << mediaEncryption;
|
lDebug() << "[Utils] create call with uri :" << sipAddress << mediaEncryption;
|
||||||
|
|
|
||||||
|
|
@ -75,7 +75,7 @@ ColumnLayout {
|
||||||
_address: mainItem.conferenceInfo
|
_address: mainItem.conferenceInfo
|
||||||
? mainItem.conferenceInfo.core.subject
|
? mainItem.conferenceInfo.core.subject
|
||||||
: mainItem.contactAddress || mainItem.contactName
|
: mainItem.contactAddress || mainItem.contactName
|
||||||
secured: securityLevel === LinphoneEnums.SecurityLevel.EndToEndEncrypted
|
secured: securityLevel === LinphoneEnums.SecurityLevel.EndToEndEncryptedAndVerified
|
||||||
}
|
}
|
||||||
Item {
|
Item {
|
||||||
id: rightButton
|
id: rightButton
|
||||||
|
|
|
||||||
|
|
@ -215,7 +215,7 @@ Flickable{
|
||||||
ColumnLayout{
|
ColumnLayout{
|
||||||
id: contentsLayout
|
id: contentsLayout
|
||||||
width: parent.width
|
width: parent.width
|
||||||
spacing: 0
|
spacing: 20 * DefaultStyle.dp
|
||||||
BusyIndicator {
|
BusyIndicator {
|
||||||
Layout.alignment: Qt.AlignCenter
|
Layout.alignment: Qt.AlignCenter
|
||||||
Layout.preferredHeight: visible ? 60 * DefaultStyle.dp : 0
|
Layout.preferredHeight: visible ? 60 * DefaultStyle.dp : 0
|
||||||
|
|
@ -228,6 +228,7 @@ Flickable{
|
||||||
|
|
||||||
ContactListView{
|
ContactListView{
|
||||||
id: favoritesList
|
id: favoritesList
|
||||||
|
visible: contentHeight > 0
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
Layout.preferredHeight: implicitHeight
|
Layout.preferredHeight: implicitHeight
|
||||||
interactive: false
|
interactive: false
|
||||||
|
|
@ -259,6 +260,7 @@ Flickable{
|
||||||
|
|
||||||
ContactListView{
|
ContactListView{
|
||||||
id: contactsList
|
id: contactsList
|
||||||
|
visible: contentHeight > 0
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
Layout.preferredHeight: implicitHeight
|
Layout.preferredHeight: implicitHeight
|
||||||
Layout.topMargin: favoritesList.height > 0 ? 4 * DefaultStyle.dp : 0
|
Layout.topMargin: favoritesList.height > 0 ? 4 * DefaultStyle.dp : 0
|
||||||
|
|
@ -296,6 +298,7 @@ Flickable{
|
||||||
}
|
}
|
||||||
ContactListView{
|
ContactListView{
|
||||||
id: suggestionsList
|
id: suggestionsList
|
||||||
|
visible: contentHeight > 0
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
Layout.preferredHeight: implicitHeight
|
Layout.preferredHeight: implicitHeight
|
||||||
Layout.topMargin: contactsList.height + favoritesList.height > 0 ? 4 * DefaultStyle.dp : 0
|
Layout.topMargin: contactsList.height + favoritesList.height > 0 ? 4 * DefaultStyle.dp : 0
|
||||||
|
|
|
||||||
|
|
@ -41,7 +41,7 @@ Loader{
|
||||||
property string computedAvatarUri: avatarObj ? avatarObj.value : ''
|
property string computedAvatarUri: avatarObj ? avatarObj.value : ''
|
||||||
|
|
||||||
// To get the secured property for a specific address,
|
// To get the secured property for a specific address,
|
||||||
// override it as secured: securityLevel === LinphoneEnums.SecurityLevel.EndToEndEncrypted
|
// override it as secured: securityLevel === LinphoneEnums.SecurityLevel.EndToEndEncryptedAndVerified
|
||||||
property var securityLevelObj: UtilsCpp.getFriendAddressSecurityLevel(_address)
|
property var securityLevelObj: UtilsCpp.getFriendAddressSecurityLevel(_address)
|
||||||
property var securityLevel: securityLevelObj ? securityLevelObj.value : LinphoneEnums.SecurityLevel.None
|
property var securityLevel: securityLevelObj ? securityLevelObj.value : LinphoneEnums.SecurityLevel.None
|
||||||
property bool secured: call && call.core.encryption === LinphoneEnums.MediaEncryption.Zrtp
|
property bool secured: call && call.core.encryption === LinphoneEnums.MediaEncryption.Zrtp
|
||||||
|
|
|
||||||
|
|
@ -245,10 +245,13 @@ Item {
|
||||||
}
|
}
|
||||||
Text {
|
Text {
|
||||||
anchors.left: parent.left
|
anchors.left: parent.left
|
||||||
|
anchors.right: parent.right
|
||||||
anchors.bottom: parent.bottom
|
anchors.bottom: parent.bottom
|
||||||
anchors.leftMargin: 10 * DefaultStyle.dp
|
anchors.leftMargin: 10 * DefaultStyle.dp
|
||||||
|
anchors.rightMargin: 10 * DefaultStyle.dp
|
||||||
anchors.bottomMargin: 10 * DefaultStyle.dp
|
anchors.bottomMargin: 10 * DefaultStyle.dp
|
||||||
width: implicitWidth
|
width: implicitWidth
|
||||||
|
maximumLineCount: 1
|
||||||
property string _text: mainItem.displayName != ''
|
property string _text: mainItem.displayName != ''
|
||||||
? mainItem.displayName
|
? mainItem.displayName
|
||||||
: mainItem.account && mainItem.identityAddress
|
: mainItem.account && mainItem.identityAddress
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,6 @@ import 'qrc:/qt/qml/Linphone/view/Style/buttonStyle.js' as ButtonStyle
|
||||||
ColumnLayout {
|
ColumnLayout {
|
||||||
id: mainItem
|
id: mainItem
|
||||||
spacing: 10 * DefaultStyle.dp
|
spacing: 10 * DefaultStyle.dp
|
||||||
signal connectionSucceed()
|
|
||||||
|
|
||||||
FormItemLayout {
|
FormItemLayout {
|
||||||
id: username
|
id: username
|
||||||
|
|
@ -47,11 +46,6 @@ ColumnLayout {
|
||||||
if (passwordEdit.text.length > 0 || usernameEdit.text.length > 0)
|
if (passwordEdit.text.length > 0 || usernameEdit.text.length > 0)
|
||||||
errorText.setText(LoginPageCpp.errorMessage)
|
errorText.setText(LoginPageCpp.errorMessage)
|
||||||
}
|
}
|
||||||
function onRegistrationStateChanged() {
|
|
||||||
if (LoginPageCpp.registrationState === LinphoneEnums.RegistrationState.Ok) {
|
|
||||||
mainItem.connectionSucceed()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -227,7 +227,6 @@ ColumnLayout {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Connections {
|
Connections {
|
||||||
enabled: !mainItem.call
|
|
||||||
target: SettingsCpp
|
target: SettingsCpp
|
||||||
onMicVolumeChanged: (value) => {
|
onMicVolumeChanged: (value) => {
|
||||||
audioTestSlider.value = value
|
audioTestSlider.value = value
|
||||||
|
|
|
||||||
|
|
@ -64,14 +64,12 @@ FocusScope {
|
||||||
}
|
}
|
||||||
onVisibleChanged: if (!visible) mainItem.numPadPopup.close()
|
onVisibleChanged: if (!visible) mainItem.numPadPopup.close()
|
||||||
contentItem: ColumnLayout {
|
contentItem: ColumnLayout {
|
||||||
// anchors.fill: parent
|
spacing: 38 * DefaultStyle.dp
|
||||||
spacing: 10 * DefaultStyle.dp
|
|
||||||
SearchBar {
|
SearchBar {
|
||||||
id: searchBar
|
id: searchBar
|
||||||
Layout.alignment: Qt.AlignTop
|
Layout.alignment: Qt.AlignTop
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
Layout.rightMargin: 39 * DefaultStyle.dp
|
Layout.rightMargin: 39 * DefaultStyle.dp
|
||||||
//Layout.maximumWidth: mainItem.width
|
|
||||||
focus: true
|
focus: true
|
||||||
color: mainItem.searchBarColor
|
color: mainItem.searchBarColor
|
||||||
borderColor: mainItem.searchBarBorderColor
|
borderColor: mainItem.searchBarBorderColor
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,6 @@ LoginLayout {
|
||||||
signal useSIPButtonClicked()
|
signal useSIPButtonClicked()
|
||||||
signal useRemoteConfigButtonClicked()
|
signal useRemoteConfigButtonClicked()
|
||||||
signal goToRegister()
|
signal goToRegister()
|
||||||
signal connectionSucceed()
|
|
||||||
|
|
||||||
titleContent: [
|
titleContent: [
|
||||||
BigButton {
|
BigButton {
|
||||||
|
|
@ -82,7 +81,6 @@ LoginLayout {
|
||||||
spacing: 0
|
spacing: 0
|
||||||
LoginForm {
|
LoginForm {
|
||||||
id: loginForm
|
id: loginForm
|
||||||
onConnectionSucceed: mainItem.connectionSucceed()
|
|
||||||
}
|
}
|
||||||
BigButton {
|
BigButton {
|
||||||
Layout.preferredWidth: loginForm.width
|
Layout.preferredWidth: loginForm.width
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,6 @@ LoginLayout {
|
||||||
id: mainItem
|
id: mainItem
|
||||||
signal goBack()
|
signal goBack()
|
||||||
signal goToRegister()
|
signal goToRegister()
|
||||||
signal connectionSucceed()
|
|
||||||
property bool showBackButton: false
|
property bool showBackButton: false
|
||||||
|
|
||||||
titleContent: [
|
titleContent: [
|
||||||
|
|
@ -271,11 +270,6 @@ LoginLayout {
|
||||||
function onErrorMessageChanged(error) {
|
function onErrorMessageChanged(error) {
|
||||||
errorText.setText(error)
|
errorText.setText(error)
|
||||||
}
|
}
|
||||||
function onRegistrationStateChanged() {
|
|
||||||
if (LoginPageCpp.registrationState === LinphoneEnums.RegistrationState.Ok) {
|
|
||||||
mainItem.connectionSucceed()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -28,6 +28,7 @@ FocusScope{
|
||||||
ListView {
|
ListView {
|
||||||
id: participantList
|
id: participantList
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
|
visible: contentHeight > 0
|
||||||
Layout.preferredHeight: contentHeight
|
Layout.preferredHeight: contentHeight
|
||||||
Layout.maximumHeight: mainItem.height / 3
|
Layout.maximumHeight: mainItem.height / 3
|
||||||
width: mainItem.width
|
width: mainItem.width
|
||||||
|
|
|
||||||
|
|
@ -81,27 +81,11 @@ AbstractMainPage {
|
||||||
id: leftPanel
|
id: leftPanel
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
Layout.fillHeight: true
|
Layout.fillHeight: true
|
||||||
Loader {
|
|
||||||
id: titleLoader
|
|
||||||
anchors.left: parent.left
|
|
||||||
anchors.leftMargin: 45 * DefaultStyle.dp
|
|
||||||
anchors.right: parent.right
|
|
||||||
asynchronous: false
|
|
||||||
onActiveFocusChanged:{
|
|
||||||
if(activeFocus && item){
|
|
||||||
item.forceActiveFocus()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Control.StackView {
|
Control.StackView {
|
||||||
id: listStackView
|
id: listStackView
|
||||||
anchors.top: titleLoader.bottom
|
anchors.fill: parent
|
||||||
anchors.topMargin: 18 * DefaultStyle.dp
|
|
||||||
anchors.left: parent.left
|
|
||||||
anchors.leftMargin: 45 * DefaultStyle.dp
|
anchors.leftMargin: 45 * DefaultStyle.dp
|
||||||
anchors.right: parent.right
|
|
||||||
anchors.bottom: parent.bottom
|
|
||||||
clip: true
|
clip: true
|
||||||
initialItem: historyListItem
|
initialItem: historyListItem
|
||||||
focus: true
|
focus: true
|
||||||
|
|
@ -129,14 +113,15 @@ AbstractMainPage {
|
||||||
}
|
}
|
||||||
|
|
||||||
Component {
|
Component {
|
||||||
id: historyListTitle
|
id: historyListItem
|
||||||
FocusScope{
|
FocusScope{
|
||||||
objectName: "historyListTitle"
|
objectName: "historyListItem"
|
||||||
width: parent.width
|
property alias listView: historyListView
|
||||||
height: titleCallLayout.implicitHeight
|
ColumnLayout {
|
||||||
|
anchors.fill: parent
|
||||||
|
spacing: 0
|
||||||
RowLayout {
|
RowLayout {
|
||||||
id: titleCallLayout
|
id: titleCallLayout
|
||||||
anchors.fill: parent
|
|
||||||
spacing: 16 * DefaultStyle.dp
|
spacing: 16 * DefaultStyle.dp
|
||||||
Text {
|
Text {
|
||||||
text: qsTr("Appels")
|
text: qsTr("Appels")
|
||||||
|
|
@ -192,19 +177,10 @@ AbstractMainPage {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
Component {
|
|
||||||
id: historyListItem
|
|
||||||
FocusScope{
|
|
||||||
objectName: "historyListItem"
|
|
||||||
property alias listView: historyListView
|
|
||||||
Control.StackView.onActivated: titleLoader.sourceComponent = historyListTitle
|
|
||||||
ColumnLayout {
|
|
||||||
anchors.fill: parent
|
|
||||||
SearchBar {
|
SearchBar {
|
||||||
id: searchBar
|
id: searchBar
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
|
Layout.topMargin: 18 * DefaultStyle.dp
|
||||||
Layout.rightMargin: 39 * DefaultStyle.dp
|
Layout.rightMargin: 39 * DefaultStyle.dp
|
||||||
placeholderText: qsTr("Rechercher un appel")
|
placeholderText: qsTr("Rechercher un appel")
|
||||||
visible: historyListView.count !== 0 || text.length !== 0
|
visible: historyListView.count !== 0 || text.length !== 0
|
||||||
|
|
@ -339,6 +315,7 @@ AbstractMainPage {
|
||||||
_address: modelData.core.conferenceInfo
|
_address: modelData.core.conferenceInfo
|
||||||
? modelData.core.conferenceInfo.core.subject
|
? modelData.core.conferenceInfo.core.subject
|
||||||
: modelData.core.remoteAddress
|
: modelData.core.remoteAddress
|
||||||
|
secured: securityLevel === LinphoneEnums.SecurityLevel.EndToEndEncryptedAndVerified
|
||||||
width: 45 * DefaultStyle.dp
|
width: 45 * DefaultStyle.dp
|
||||||
height: 45 * DefaultStyle.dp
|
height: 45 * DefaultStyle.dp
|
||||||
isConference: modelData.core.isConference
|
isConference: modelData.core.isConference
|
||||||
|
|
@ -446,7 +423,6 @@ AbstractMainPage {
|
||||||
Control.ScrollBar.vertical: scrollbar
|
Control.ScrollBar.vertical: scrollbar
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
ScrollBar {
|
ScrollBar {
|
||||||
id: scrollbar
|
id: scrollbar
|
||||||
|
|
@ -463,13 +439,18 @@ AbstractMainPage {
|
||||||
}
|
}
|
||||||
|
|
||||||
Component {
|
Component {
|
||||||
id: newCallTitle
|
id: newCallItem
|
||||||
FocusScope{
|
FocusScope{
|
||||||
objectName: "newCallTitle"
|
objectName: "newCallItem"
|
||||||
width: parent.width
|
width: parent?.width
|
||||||
height: parent.height
|
height: parent?.height
|
||||||
RowLayout {
|
Control.StackView.onActivated:{
|
||||||
|
callContactsList.forceActiveFocus()
|
||||||
|
}
|
||||||
|
ColumnLayout {
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
|
spacing: 0
|
||||||
|
RowLayout {
|
||||||
spacing: 10 * DefaultStyle.dp
|
spacing: 10 * DefaultStyle.dp
|
||||||
Button {
|
Button {
|
||||||
Layout.preferredWidth: 24 * DefaultStyle.dp
|
Layout.preferredWidth: 24 * DefaultStyle.dp
|
||||||
|
|
@ -494,23 +475,9 @@ AbstractMainPage {
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
Component {
|
|
||||||
id: newCallItem
|
|
||||||
FocusScope{
|
|
||||||
objectName: "newCallItem"
|
|
||||||
width: parent?.width
|
|
||||||
height: parent?.height
|
|
||||||
Control.StackView.onActivated:{
|
|
||||||
titleLoader.sourceComponent = newCallTitle
|
|
||||||
callContactsList.forceActiveFocus()
|
|
||||||
}
|
|
||||||
|
|
||||||
ColumnLayout {
|
|
||||||
anchors.fill: parent
|
|
||||||
NewCallForm {
|
NewCallForm {
|
||||||
id: callContactsList
|
id: callContactsList
|
||||||
|
Layout.topMargin: 18 * DefaultStyle.dp
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
Layout.fillHeight: true
|
Layout.fillHeight: true
|
||||||
focus: true
|
focus: true
|
||||||
|
|
@ -534,20 +501,22 @@ AbstractMainPage {
|
||||||
}
|
}
|
||||||
|
|
||||||
Component {
|
Component {
|
||||||
id: groupCallTitle
|
id: groupCallItem
|
||||||
FocusScope{
|
FocusScope{
|
||||||
objectName: "groupCallTitle"
|
objectName: "groupCallItem"
|
||||||
width: parent.width
|
Control.StackView.onActivated: {
|
||||||
height: parent.height
|
addParticipantsLayout.forceActiveFocus()
|
||||||
RowLayout {
|
}
|
||||||
|
ColumnLayout {
|
||||||
|
spacing: 0
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
|
RowLayout {
|
||||||
spacing: 10 * DefaultStyle.dp
|
spacing: 10 * DefaultStyle.dp
|
||||||
visible: !SettingsCpp.disableMeetingsFeature
|
visible: !SettingsCpp.disableMeetingsFeature
|
||||||
Button {
|
Button {
|
||||||
id: backGroupCallButton
|
id: backGroupCallButton
|
||||||
style: ButtonStyle.noBackgroundOrange
|
style: ButtonStyle.noBackgroundOrange
|
||||||
icon.source: AppIcons.leftArrow
|
icon.source: AppIcons.leftArrow
|
||||||
Layout.leftMargin: 21 * DefaultStyle.dp
|
|
||||||
Layout.preferredWidth: 24 * DefaultStyle.dp
|
Layout.preferredWidth: 24 * DefaultStyle.dp
|
||||||
Layout.preferredHeight: 24 * DefaultStyle.dp
|
Layout.preferredHeight: 24 * DefaultStyle.dp
|
||||||
KeyNavigation.down: listStackView
|
KeyNavigation.down: listStackView
|
||||||
|
|
@ -595,22 +564,9 @@ AbstractMainPage {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Component {
|
|
||||||
id: groupCallItem
|
|
||||||
FocusScope{
|
|
||||||
objectName: "groupCallItem"
|
|
||||||
Control.StackView.onActivated: {
|
|
||||||
titleLoader.sourceComponent = groupCallTitle
|
|
||||||
addParticipantsLayout.forceActiveFocus()
|
|
||||||
}
|
|
||||||
ColumnLayout {
|
|
||||||
spacing: 5 * DefaultStyle.dp
|
|
||||||
anchors.fill: parent
|
|
||||||
RowLayout {
|
RowLayout {
|
||||||
spacing: 0
|
spacing: 0
|
||||||
|
Layout.topMargin: 18 * DefaultStyle.dp
|
||||||
Layout.rightMargin: 38 * DefaultStyle.dp
|
Layout.rightMargin: 38 * DefaultStyle.dp
|
||||||
Text {
|
Text {
|
||||||
font.pixelSize: 13 * DefaultStyle.dp
|
font.pixelSize: 13 * DefaultStyle.dp
|
||||||
|
|
@ -636,6 +592,7 @@ AbstractMainPage {
|
||||||
id: addParticipantsLayout
|
id: addParticipantsLayout
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
Layout.fillHeight: true
|
Layout.fillHeight: true
|
||||||
|
Layout.topMargin: 15 * DefaultStyle.dp
|
||||||
onSelectedParticipantsCountChanged: mainItem.selectedParticipantsCount = selectedParticipantsCount
|
onSelectedParticipantsCountChanged: mainItem.selectedParticipantsCount = selectedParticipantsCount
|
||||||
focus: true
|
focus: true
|
||||||
Connections {
|
Connections {
|
||||||
|
|
|
||||||
|
|
@ -628,11 +628,11 @@ AbstractMainPage {
|
||||||
font.pixelSize: 14 * DefaultStyle.dp
|
font.pixelSize: 14 * DefaultStyle.dp
|
||||||
}
|
}
|
||||||
Item{Layout.fillWidth: true}
|
Item{Layout.fillWidth: true}
|
||||||
Image{
|
EffectImage {
|
||||||
visible: listViewModelData.securityLevel === LinphoneEnums.SecurityLevel.EndToEndEncryptedAndVerified
|
visible: listViewModelData.securityLevel === LinphoneEnums.SecurityLevel.EndToEndEncryptedAndVerified
|
||||||
source: AppIcons.trusted
|
source: AppIcons.trusted
|
||||||
width: 22 * DefaultStyle.dp
|
Layout.preferredWidth: 22 * DefaultStyle.dp
|
||||||
height: 22 * DefaultStyle.dp
|
Layout.preferredHeight: 22 * DefaultStyle.dp
|
||||||
}
|
}
|
||||||
|
|
||||||
SmallButton {
|
SmallButton {
|
||||||
|
|
|
||||||
|
|
@ -454,14 +454,18 @@ AbstractMainPage {
|
||||||
ColumnLayout {
|
ColumnLayout {
|
||||||
property Control.StackView container
|
property Control.StackView container
|
||||||
property ConferenceInfoGui conferenceInfoGui
|
property ConferenceInfoGui conferenceInfoGui
|
||||||
|
spacing: 18 * DefaultStyle.dp
|
||||||
FocusScope{
|
FocusScope{
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
Layout.preferredHeight: addParticipantsButtons.implicitHeight
|
Layout.preferredHeight: childrenRect.height
|
||||||
|
ColumnLayout {
|
||||||
|
spacing: 4 * DefaultStyle.dp
|
||||||
|
Layout.fillWidth: true
|
||||||
RowLayout {
|
RowLayout {
|
||||||
id: addParticipantsButtons
|
id: addParticipantsButtons
|
||||||
spacing: 5 * DefaultStyle.dp
|
spacing: 10 * DefaultStyle.dp
|
||||||
Button {
|
Button {
|
||||||
id: removeButton
|
id: addParticipantsBackButton
|
||||||
style: ButtonStyle.noBackgroundOrange
|
style: ButtonStyle.noBackgroundOrange
|
||||||
icon.source: AppIcons.leftArrow
|
icon.source: AppIcons.leftArrow
|
||||||
icon.width: 24 * DefaultStyle.dp
|
icon.width: 24 * DefaultStyle.dp
|
||||||
|
|
@ -470,8 +474,6 @@ AbstractMainPage {
|
||||||
KeyNavigation.down: addParticipantLayout
|
KeyNavigation.down: addParticipantLayout
|
||||||
onClicked: container.pop()
|
onClicked: container.pop()
|
||||||
}
|
}
|
||||||
ColumnLayout {
|
|
||||||
spacing: 8 * DefaultStyle.dp
|
|
||||||
Text {
|
Text {
|
||||||
text: qsTr("Ajouter des participants")
|
text: qsTr("Ajouter des participants")
|
||||||
color: DefaultStyle.main1_500_main
|
color: DefaultStyle.main1_500_main
|
||||||
|
|
@ -482,9 +484,24 @@ AbstractMainPage {
|
||||||
}
|
}
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
}
|
}
|
||||||
|
SmallButton {
|
||||||
|
id: addButton
|
||||||
|
enabled: addParticipantLayout.selectedParticipantsCount.length != 0
|
||||||
|
Layout.leftMargin: 11 * DefaultStyle.dp
|
||||||
|
focus: enabled
|
||||||
|
style: ButtonStyle.main
|
||||||
|
text: qsTr("Ajouter")
|
||||||
|
KeyNavigation.left: addParticipantsBackButton
|
||||||
|
KeyNavigation.down: addParticipantLayout
|
||||||
|
onClicked: {
|
||||||
|
mainItem.addParticipantsValidated(addParticipantLayout.selectedParticipants)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Text {
|
Text {
|
||||||
text: qsTr("%1 participant%2 sélectionné%2").arg(addParticipantLayout.selectedParticipantsCount).arg(addParticipantLayout.selectedParticipantsCount > 1 ? "s" : "")
|
text: qsTr("%1 participant%2 sélectionné%2").arg(addParticipantLayout.selectedParticipantsCount).arg(addParticipantLayout.selectedParticipantsCount > 1 ? "s" : "")
|
||||||
color: DefaultStyle.main2_500main
|
color: DefaultStyle.main2_500main
|
||||||
|
Layout.leftMargin: addParticipantsBackButton.width + addParticipantsButtons.spacing
|
||||||
maximumLineCount: 1
|
maximumLineCount: 1
|
||||||
font {
|
font {
|
||||||
pixelSize: 12 * DefaultStyle.dp
|
pixelSize: 12 * DefaultStyle.dp
|
||||||
|
|
@ -493,20 +510,6 @@ AbstractMainPage {
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
SmallButton {
|
|
||||||
id: addButton
|
|
||||||
enabled: addParticipantLayout.selectedParticipantsCount.length != 0
|
|
||||||
Layout.rightMargin: 21 * DefaultStyle.dp
|
|
||||||
focus: enabled
|
|
||||||
style: ButtonStyle.main
|
|
||||||
text: qsTr("Ajouter")
|
|
||||||
KeyNavigation.left: removeButton
|
|
||||||
KeyNavigation.down: addParticipantLayout
|
|
||||||
onClicked: {
|
|
||||||
mainItem.addParticipantsValidated(addParticipantLayout.selectedParticipants)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
AddParticipantsForm {
|
AddParticipantsForm {
|
||||||
id: addParticipantLayout
|
id: addParticipantLayout
|
||||||
|
|
|
||||||
|
|
@ -647,9 +647,12 @@ AbstractWindow {
|
||||||
searchBarBorderColor: DefaultStyle.grey_200
|
searchBarBorderColor: DefaultStyle.grey_200
|
||||||
numPadPopup: numericPad
|
numPadPopup: numericPad
|
||||||
onContactClicked: (contact) => {
|
onContactClicked: (contact) => {
|
||||||
rightPanel.visible = false
|
|
||||||
mainWindow.startCallWithContact(contact, false, rightPanel)
|
mainWindow.startCallWithContact(contact, false, rightPanel)
|
||||||
}
|
}
|
||||||
|
Connections {
|
||||||
|
target: mainWindow
|
||||||
|
function onCallChanged(){ if (newCallForm.Control.StackView.status === Control.StackView.Active) rightPanel.visible = false}
|
||||||
|
}
|
||||||
|
|
||||||
NumericPadPopup {
|
NumericPadPopup {
|
||||||
id: numericPad
|
id: numericPad
|
||||||
|
|
|
||||||
|
|
@ -29,8 +29,9 @@ AbstractWindow {
|
||||||
// color: DefaultStyle.grey_100
|
// color: DefaultStyle.grey_100
|
||||||
// }
|
// }
|
||||||
|
|
||||||
function openMainPage(){
|
function openMainPage(connectionSucceed){
|
||||||
if (mainWindowStackView.currentItem.objectName !== "mainPage") mainWindowStackView.replace(mainPage, StackView.Immediate)
|
if (mainWindowStackView.currentItem.objectName !== "mainPage") mainWindowStackView.replace(mainPage, StackView.Immediate)
|
||||||
|
if (connectionSucceed) mainWindow.showInformationPopup(qsTr("Connexion réussie"), qsTr("Vous êtes connecté en mode %1").arg("interopérable"))
|
||||||
}
|
}
|
||||||
function goToCallHistory() {
|
function goToCallHistory() {
|
||||||
openMainPage()
|
openMainPage()
|
||||||
|
|
@ -46,7 +47,7 @@ AbstractWindow {
|
||||||
}
|
}
|
||||||
function transferCallSucceed() {
|
function transferCallSucceed() {
|
||||||
openMainPage()
|
openMainPage()
|
||||||
UtilsCpp.showInformationPopup(qsTr("Appel transféré"), qsTr("Votre correspondant a été transféré au contact sélectionné"))
|
mainWindow.showInformationPopup(qsTr("Appel transféré"), qsTr("Votre correspondant a été transféré au contact sélectionné"))
|
||||||
}
|
}
|
||||||
function initStackViewItem() {
|
function initStackViewItem() {
|
||||||
if(accountProxy && accountProxy.isInitialized) {
|
if(accountProxy && accountProxy.isInitialized) {
|
||||||
|
|
@ -96,6 +97,16 @@ AbstractWindow {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Connections {
|
||||||
|
target: LoginPageCpp
|
||||||
|
function onRegistrationStateChanged() {
|
||||||
|
if (LoginPageCpp.registrationState === LinphoneEnums.RegistrationState.Ok) {
|
||||||
|
openMainPage(true)
|
||||||
|
proposeH264CodecsDownload()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Loader {
|
Loader {
|
||||||
id: accountProxyLoader
|
id: accountProxyLoader
|
||||||
active: AppCpp.coreStarted
|
active: AppCpp.coreStarted
|
||||||
|
|
@ -144,10 +155,6 @@ AbstractWindow {
|
||||||
onGoBack: openMainPage()
|
onGoBack: openMainPage()
|
||||||
onUseSIPButtonClicked: mainWindowStackView.push(sipLoginPage)
|
onUseSIPButtonClicked: mainWindowStackView.push(sipLoginPage)
|
||||||
onGoToRegister: mainWindowStackView.replace(registerPage)
|
onGoToRegister: mainWindowStackView.replace(registerPage)
|
||||||
onConnectionSucceed: {
|
|
||||||
openMainPage()
|
|
||||||
proposeH264CodecsDownload()
|
|
||||||
}
|
|
||||||
StackView.onActivated:{
|
StackView.onActivated:{
|
||||||
if (accountProxy?.haveAccount) showBackButton = true
|
if (accountProxy?.haveAccount) showBackButton = true
|
||||||
}
|
}
|
||||||
|
|
@ -164,11 +171,6 @@ AbstractWindow {
|
||||||
mainWindowStackView.pop()
|
mainWindowStackView.pop()
|
||||||
}
|
}
|
||||||
onGoToRegister: mainWindowStackView.replace(registerPage)
|
onGoToRegister: mainWindowStackView.replace(registerPage)
|
||||||
|
|
||||||
onConnectionSucceed: {
|
|
||||||
openMainPage()
|
|
||||||
proposeH264CodecsDownload()
|
|
||||||
}
|
|
||||||
StackView.onActivated:{
|
StackView.onActivated:{
|
||||||
if (!SettingsCpp.assistantGoDirectlyToThirdPartySipAccountLogin || accountProxy?.haveAccount) showBackButton = true
|
if (!SettingsCpp.assistantGoDirectlyToThirdPartySipAccountLogin || accountProxy?.haveAccount) showBackButton = true
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue