ui fixes
This commit is contained in:
parent
10427b5288
commit
d70b08c36e
11 changed files with 261 additions and 168 deletions
|
|
@ -34,7 +34,7 @@ void Thread::run() {
|
|||
}
|
||||
}
|
||||
bool Thread::isInLinphoneThread() {
|
||||
return QThread::currentThread() == CoreModel::getInstance()->thread();
|
||||
return CoreModel::getInstance() && QThread::currentThread() == CoreModel::getInstance()->thread();
|
||||
}
|
||||
|
||||
bool Thread::mustBeInLinphoneThread(const QString &context) {
|
||||
|
|
|
|||
|
|
@ -16,9 +16,10 @@ Window {
|
|||
|
||||
property CallGui call
|
||||
property ConferenceInfoGui conferenceInfo
|
||||
onConferenceInfoChanged: console.log("CONFERENCE INFO", conferenceInfo)
|
||||
|
||||
property ConferenceGui conference: call && call.core.conference || null
|
||||
onConferenceChanged: console.log ("CONFERENCE CHANGED", conference)
|
||||
|
||||
property bool callTerminatedByUser: false
|
||||
|
||||
onCallChanged: {
|
||||
|
|
@ -56,7 +57,10 @@ Window {
|
|||
onCallStateChanged: {
|
||||
console.log("State:", callState)
|
||||
if (callState === LinphoneEnums.CallState.Connected) {
|
||||
if (conferenceInfo) middleItemStackView.replace(inCallItem)
|
||||
if (conferenceInfo) {
|
||||
middleItemStackView.replace(inCallItem)
|
||||
bottomButtonsLayout.visible = true
|
||||
}
|
||||
if(!call.core.isSecured && call.core.encryption === LinphoneEnums.MediaEncryption.Zrtp) {
|
||||
zrtpValidation.open()
|
||||
}
|
||||
|
|
@ -642,19 +646,17 @@ Window {
|
|||
Layout.alignment: Qt.AlignHCenter
|
||||
layoutDirection: Qt.LeftToRight
|
||||
columnSpacing: 20 * DefaultStyle.dp
|
||||
visible: mainWindow.conferenceUri ? mainWindow.conferenceJoined : mainWindow.call
|
||||
visible: mainWindow.call && !mainWindow.conferenceInfo
|
||||
|
||||
function refreshLayout() {
|
||||
if (mainWindow.callState === LinphoneEnums.CallState.Connected || mainWindow.callState === LinphoneEnums.CallState.StreamsRunning) {
|
||||
bottomButtonsLayout.layoutDirection = Qt.RightToLeft
|
||||
connectedCallButtons.visible = true
|
||||
videoCameraButton.enabled = true
|
||||
moreOptionsButton.visible = true
|
||||
}
|
||||
connectedCallButtons.visible = bottomButtonsLayout.visible
|
||||
moreOptionsButton.visible = bottomButtonsLayout.visible
|
||||
}
|
||||
else if (mainWindow.callState === LinphoneEnums.CallState.OutgoingInit) {
|
||||
connectedCallButtons.visible = false
|
||||
bottomButtonsLayout.layoutDirection = Qt.LeftToRight
|
||||
videoCameraButton.enabled = false
|
||||
moreOptionsButton.visible = false
|
||||
}
|
||||
}
|
||||
|
|
@ -669,9 +671,12 @@ Window {
|
|||
children[i].enabled = false
|
||||
}
|
||||
}
|
||||
BottomButton {
|
||||
Button {
|
||||
Layout.row: 0
|
||||
enabledIcon: AppIcons.endCall
|
||||
icon.source: AppIcons.endCall
|
||||
icon.width: 32 * DefaultStyle.dp
|
||||
icon.height: 32 * DefaultStyle.dp
|
||||
contentImageColor: DefaultStyle.grey_0
|
||||
checkable: false
|
||||
Layout.column: mainWindow.callState == LinphoneEnums.CallState.OutgoingInit
|
||||
|| mainWindow.callState == LinphoneEnums.CallState.OutgoingProgress
|
||||
|
|
@ -696,7 +701,7 @@ Window {
|
|||
visible: false
|
||||
Layout.row: 0
|
||||
Layout.column: 1
|
||||
BottomButton {
|
||||
CheckableButton {
|
||||
id: pauseButton
|
||||
Layout.preferredWidth: 55 * DefaultStyle.dp
|
||||
Layout.preferredHeight: 55 * DefaultStyle.dp
|
||||
|
|
@ -712,17 +717,20 @@ Window {
|
|||
: DefaultStyle.grey_600
|
||||
}
|
||||
enabled: mainWindow.callState != LinphoneEnums.CallState.PausedByRemote
|
||||
enabledIcon: enabled && checked ? AppIcons.play : AppIcons.pause
|
||||
icon.source: enabled && checked ? AppIcons.play : AppIcons.pause
|
||||
checked: mainWindow.call && mainWindow.call.core.paused
|
||||
onClicked: {
|
||||
mainWindow.call.core.lSetPaused(!callsModel.currentCall.core.paused)
|
||||
onCheckedChanged: {
|
||||
mainWindow.call.core.lSetPaused(!mainWindow.call.core.paused)
|
||||
}
|
||||
}
|
||||
BottomButton {
|
||||
CheckableButton {
|
||||
id: transferCallButton
|
||||
enabledIcon: AppIcons.transferCall
|
||||
icon.source: AppIcons.transferCall
|
||||
Layout.preferredWidth: 55 * DefaultStyle.dp
|
||||
Layout.preferredHeight: 55 * DefaultStyle.dp
|
||||
contentImageColor: enabled ? DefaultStyle.grey_0 : DefaultStyle.grey_500
|
||||
onEnabledChanged: console.log("===================enable change", enabled)
|
||||
onContentImageColorChanged: console.log("===================================== content image color", contentImageColor)
|
||||
onCheckedChanged: {
|
||||
if (checked) {
|
||||
rightPanel.visible = true
|
||||
|
|
@ -736,10 +744,10 @@ Window {
|
|||
onVisibleChanged: if(!rightPanel.visible) transferCallButton.checked = false
|
||||
}
|
||||
}
|
||||
BottomButton {
|
||||
CheckableButton {
|
||||
id: newCallButton
|
||||
checkable: false
|
||||
enabledIcon: AppIcons.newCall
|
||||
icon.source: AppIcons.newCall
|
||||
Layout.preferredWidth: 55 * DefaultStyle.dp
|
||||
Layout.preferredHeight: 55 * DefaultStyle.dp
|
||||
onClicked: {
|
||||
|
|
@ -757,41 +765,42 @@ Window {
|
|||
|| mainWindow.callState == LinphoneEnums.CallState.OutgoingEarlyMedia
|
||||
|| mainWindow.callState == LinphoneEnums.CallState.IncomingReceived
|
||||
? bottomButtonsLayout.columns - 1 : 0
|
||||
BottomButton {
|
||||
CheckableButton {
|
||||
id: videoCameraButton
|
||||
enabledIcon: AppIcons.videoCamera
|
||||
disabledIcon: AppIcons.videoCameraSlash
|
||||
enabled: mainWindow.conferenceInfo || (mainWindow.callState === LinphoneEnums.CallState.Connected || mainWindow.callState === LinphoneEnums.CallState.StreamsRunning)
|
||||
iconUrl: AppIcons.videoCamera
|
||||
checkedIconUrl: AppIcons.videoCameraSlash
|
||||
checked: mainWindow.call && !mainWindow.call.core.cameraEnabled
|
||||
Layout.preferredWidth: 55 * DefaultStyle.dp
|
||||
Layout.preferredHeight: 55 * DefaultStyle.dp
|
||||
onClicked: mainWindow.call.core.lSetCameraEnabled(!mainWindow.call.core.cameraEnabled)
|
||||
onCheckedChanged: mainWindow.call.core.lSetCameraEnabled(!mainWindow.call.core.cameraEnabled)
|
||||
}
|
||||
BottomButton {
|
||||
enabledIcon: AppIcons.microphone
|
||||
disabledIcon: AppIcons.microphoneSlash
|
||||
CheckableButton {
|
||||
iconUrl: AppIcons.microphone
|
||||
checkedIconUrl: AppIcons.microphoneSlash
|
||||
checked: mainWindow.call && mainWindow.call.core.microphoneMuted
|
||||
Layout.preferredWidth: 55 * DefaultStyle.dp
|
||||
Layout.preferredHeight: 55 * DefaultStyle.dp
|
||||
onClicked: mainWindow.call.core.lSetMicrophoneMuted(!mainWindow.call.core.microphoneMuted)
|
||||
onCheckedChanged: mainWindow.call.core.lSetMicrophoneMuted(!mainWindow.call.core.microphoneMuted)
|
||||
}
|
||||
PopupButton {
|
||||
id: moreOptionsButton
|
||||
Layout.preferredWidth: 55 * DefaultStyle.dp
|
||||
Layout.preferredHeight: 55 * DefaultStyle.dp
|
||||
onEnabledChanged: console.log("========== enabled changed", enabled)
|
||||
contentImageColor: enabled && !checked ? DefaultStyle.grey_0 : DefaultStyle.grey_500
|
||||
icon.width: 24 * DefaultStyle.dp
|
||||
icon.height: 24 * DefaultStyle.dp
|
||||
icon.source: AppIcons.more
|
||||
background: Rectangle {
|
||||
anchors.fill: moreOptionsButton
|
||||
color: moreOptionsButton.checked ? DefaultStyle.grey_0 : DefaultStyle.grey_500
|
||||
color: moreOptionsButton.enabled
|
||||
? moreOptionsButton.checked
|
||||
? DefaultStyle.grey_0
|
||||
: DefaultStyle.grey_500
|
||||
: DefaultStyle.grey_600
|
||||
radius: 40 * DefaultStyle.dp
|
||||
}
|
||||
contentItem: Item {
|
||||
EffectImage {
|
||||
imageSource: AppIcons.more
|
||||
width: 24 * DefaultStyle.dp
|
||||
height: 24 * DefaultStyle.dp
|
||||
anchors.centerIn: parent
|
||||
colorizationColor: moreOptionsButton.checked ? DefaultStyle.grey_500 : DefaultStyle.grey_0
|
||||
}
|
||||
}
|
||||
popup.x: width/2
|
||||
popup.y: y - popup.height + height/4
|
||||
popup.contentItem: ColumnLayout {
|
||||
|
|
@ -864,30 +873,7 @@ Window {
|
|||
mainWindow.call && mainWindow.call.core.recording ? mainWindow.call.core.lStopRecording() : mainWindow.call.core.lStartRecording()
|
||||
}
|
||||
}
|
||||
Control.Button {
|
||||
id: speakerButton
|
||||
Layout.fillWidth: true
|
||||
checkable: true
|
||||
background: Item {}
|
||||
contentItem: RowLayout {
|
||||
EffectImage {
|
||||
Layout.preferredWidth: 24 * DefaultStyle.dp
|
||||
Layout.preferredHeight: 24 * DefaultStyle.dp
|
||||
fillMode: Image.PreserveAspectFit
|
||||
imageSource: AppIcons.recordFill
|
||||
colorizationColor: mainWindow.call && mainWindow.call.core.recording ? DefaultStyle.danger_500main : undefined
|
||||
}
|
||||
Text {
|
||||
color: mainWindow.call && mainWindow.call.core.recording ? DefaultStyle.danger_500main : DefaultStyle.main2_600
|
||||
text: mainWindow.call && mainWindow.call.core.recording ? qsTr("Terminer l'enregistrement") : qsTr("Enregistrer l'appel")
|
||||
}
|
||||
|
||||
}
|
||||
onClicked: {
|
||||
mainWindow.call.core.recording ? mainWindow.call.core.lStopRecording() : mainWindow.call.core.lStartRecording()
|
||||
}
|
||||
}
|
||||
Control.Button {
|
||||
Button {
|
||||
id: settingsButton
|
||||
Layout.fillWidth: true
|
||||
background: Item{}
|
||||
|
|
|
|||
|
|
@ -138,21 +138,21 @@ Item {
|
|||
}
|
||||
Popup {
|
||||
id: listPopup
|
||||
width: magicSearchList.width + listPopup.rightPadding + listPopup.leftPadding
|
||||
height: Math.min(magicSearchList.contentHeight, 300 * DefaultStyle.dp + topPadding + bottomPadding)
|
||||
width: magicSearchBar.width
|
||||
height: Math.min(magicSearchList.contentHeight + topPadding + bottomPadding, 400 * DefaultStyle.dp)
|
||||
y: magicSearchBar.height
|
||||
closePolicy: Popup.NoAutoClose
|
||||
topPadding: 10 * DefaultStyle.dp
|
||||
bottomPadding: 10 * DefaultStyle.dp
|
||||
rightPadding: 10 * DefaultStyle.dp
|
||||
leftPadding: 10 * DefaultStyle.dp
|
||||
|
||||
background: Item {
|
||||
anchors.fill: parent
|
||||
Rectangle {
|
||||
id: popupBg
|
||||
radius: 15 * DefaultStyle.dp
|
||||
anchors.fill: parent
|
||||
// width: magicSearchList.width + listPopup.rightPadding + listPopup.leftPadding
|
||||
}
|
||||
MultiEffect {
|
||||
source: popupBg
|
||||
|
|
@ -166,101 +166,115 @@ Item {
|
|||
Control.ScrollBar {
|
||||
id: scrollbar
|
||||
height: parent.height
|
||||
anchors.right: parent.right
|
||||
anchors.right: listPopup.right
|
||||
}
|
||||
ContactsList {
|
||||
contentItem: ContactsList {
|
||||
id: magicSearchList
|
||||
visible: magicSearchBar.text.length != 0
|
||||
height: Math.min(contentHeight, listPopup.height)
|
||||
height: contentHeight
|
||||
width: magicSearchBar.width
|
||||
headerPositioning: ListView.OverlayHeader
|
||||
rightMargin: 15 * DefaultStyle.dp
|
||||
initialHeadersVisible: false
|
||||
contactMenuVisible: false
|
||||
actionMenuVisible: true
|
||||
model: MagicSearchProxy {
|
||||
searchText: magicSearchBar.text.length === 0 ? "*" : magicSearchBar.text
|
||||
aggregationFlag: LinphoneEnums.MagicSearchAggregation.Friend
|
||||
}
|
||||
Control.ScrollBar.vertical: scrollbar
|
||||
header: ColumnLayout {
|
||||
header: Control.Control {
|
||||
z: 2
|
||||
width: magicSearchList.width
|
||||
RowLayout {
|
||||
Layout.fillWidth: true
|
||||
spacing: 10 * DefaultStyle.dp
|
||||
Avatar {
|
||||
Layout.preferredWidth: 45 * DefaultStyle.dp
|
||||
Layout.preferredHeight: 45 * DefaultStyle.dp
|
||||
address: sipAddr.text
|
||||
}
|
||||
ColumnLayout {
|
||||
Text {
|
||||
text: magicSearchBar.text
|
||||
font {
|
||||
pixelSize: 14 * DefaultStyle.dp
|
||||
weight: 700 * DefaultStyle.dp
|
||||
leftPadding: 10 * DefaultStyle.dp
|
||||
rightPadding: 10 * DefaultStyle.dp
|
||||
background: Rectangle {
|
||||
color: DefaultStyle.grey_0
|
||||
}
|
||||
contentItem: ColumnLayout {
|
||||
RowLayout {
|
||||
Layout.fillWidth: true
|
||||
spacing: 10 * DefaultStyle.dp
|
||||
Avatar {
|
||||
Layout.preferredWidth: 45 * DefaultStyle.dp
|
||||
Layout.preferredHeight: 45 * DefaultStyle.dp
|
||||
address: sipAddr.text
|
||||
}
|
||||
ColumnLayout {
|
||||
Text {
|
||||
text: magicSearchBar.text
|
||||
font {
|
||||
pixelSize: 14 * DefaultStyle.dp
|
||||
weight: 700 * DefaultStyle.dp
|
||||
}
|
||||
}
|
||||
Text {
|
||||
id: sipAddr
|
||||
text: UtilsCpp.generateLinphoneSipAddress(magicSearchBar.text)
|
||||
}
|
||||
}
|
||||
Text {
|
||||
id: sipAddr
|
||||
text: UtilsCpp.generateLinphoneSipAddress(magicSearchBar.text)
|
||||
Item {
|
||||
Layout.fillWidth: true
|
||||
}
|
||||
Button {
|
||||
background: Item{}
|
||||
Layout.preferredWidth: 24 * DefaultStyle.dp
|
||||
Layout.preferredHeight: 24 * DefaultStyle.dp
|
||||
property var callObj
|
||||
contentItem: Image {
|
||||
anchors.fill: parent
|
||||
width: 24 * DefaultStyle.dp
|
||||
height: 24 * DefaultStyle.dp
|
||||
source: AppIcons.phone
|
||||
}
|
||||
onClicked: {
|
||||
callObj = UtilsCpp.createCall(sipAddr.text)
|
||||
}
|
||||
}
|
||||
Button {
|
||||
Layout.preferredWidth: 24 * DefaultStyle.dp
|
||||
Layout.preferredHeight: 24 * DefaultStyle.dp
|
||||
background: Item{}
|
||||
contentItem: Image {
|
||||
anchors.fill: parent
|
||||
width: 24 * DefaultStyle.dp
|
||||
height: 24 * DefaultStyle.dp
|
||||
source: AppIcons.videoCamera
|
||||
}
|
||||
onClicked: callObj = UtilsCpp.createCall(sipAddr.text, true)
|
||||
}
|
||||
}
|
||||
Item {
|
||||
Layout.fillWidth: true
|
||||
}
|
||||
Button {
|
||||
background: Item{}
|
||||
Layout.preferredWidth: 24 * DefaultStyle.dp
|
||||
Layout.preferredHeight: 24 * DefaultStyle.dp
|
||||
property var callObj
|
||||
contentItem: Image {
|
||||
width: 24 * DefaultStyle.dp
|
||||
height: 24 * DefaultStyle.dp
|
||||
source: AppIcons.phone
|
||||
Layout.fillWidth: true
|
||||
Layout.preferredHeight: 30 * DefaultStyle.dp
|
||||
color: DefaultStyle.main2_200
|
||||
pressedColor: DefaultStyle.main2_400
|
||||
background: Rectangle {
|
||||
anchors.fill: parent
|
||||
color: DefaultStyle.main2_200
|
||||
}
|
||||
contentItem: RowLayout {
|
||||
spacing: 10 * DefaultStyle.dp
|
||||
Image {
|
||||
source: AppIcons.userPlus
|
||||
}
|
||||
Text {
|
||||
text: qsTr("Ajouter ce contact")
|
||||
font {
|
||||
pixelSize: 14 * DefaultStyle.dp
|
||||
weight: 700 * DefaultStyle.dp
|
||||
capitalization: Font.AllUppercase
|
||||
}
|
||||
}
|
||||
Item {Layout.fillWidth: true}
|
||||
}
|
||||
onClicked: {
|
||||
callObj = UtilsCpp.createCall(sipAddr.text)
|
||||
var currentItem = mainStackLayout.children[mainStackLayout.currentIndex]
|
||||
listPopup.close()
|
||||
currentItem.createContact(magicSearchBar.text, sipAddr.text)
|
||||
}
|
||||
}
|
||||
}
|
||||
Button {
|
||||
Layout.fillWidth: true
|
||||
color: DefaultStyle.main2_200
|
||||
pressedColor: DefaultStyle.main2_400
|
||||
background: Rectangle {
|
||||
anchors.fill: parent
|
||||
color: DefaultStyle.main2_200
|
||||
}
|
||||
contentItem: RowLayout {
|
||||
spacing: 10 * DefaultStyle.dp
|
||||
Image {
|
||||
source: AppIcons.userPlus
|
||||
}
|
||||
Text {
|
||||
text: qsTr("Ajouter ce contact")
|
||||
font {
|
||||
pixelSize: 14 * DefaultStyle.dp
|
||||
weight: 700 * DefaultStyle.dp
|
||||
capitalization: Font.AllUppercase
|
||||
}
|
||||
}
|
||||
Item {Layout.fillWidth: true}
|
||||
}
|
||||
onClicked: {
|
||||
var currentItem = mainStackLayout.children[mainStackLayout.currentIndex]
|
||||
listPopup.close()
|
||||
currentItem.createContact(magicSearchBar.text, sipAddr.text)
|
||||
}
|
||||
}
|
||||
}
|
||||
delegateButtons: Button {
|
||||
Layout.preferredWidth: 24 * DefaultStyle.dp
|
||||
Layout.preferredHeight: 24 * DefaultStyle.dp
|
||||
background: Item{}
|
||||
contentItem: Image {
|
||||
anchors.fill: parent
|
||||
width: 24 * DefaultStyle.dp
|
||||
height: 24 * DefaultStyle.dp
|
||||
source: AppIcons.phone
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ import Linphone
|
|||
import UtilsCpp 1.0
|
||||
import SettingsCpp 1.0
|
||||
|
||||
Window {
|
||||
ApplicationWindow {
|
||||
id: mainWindow
|
||||
width: 1512 * DefaultStyle.dp
|
||||
height: 982 * DefaultStyle.dp
|
||||
|
|
@ -15,6 +15,15 @@ Window {
|
|||
property bool firstConnection: true
|
||||
|
||||
color: "transparent"
|
||||
|
||||
// TODO : use this to make the border transparent
|
||||
// flags: Qt.Window | Qt.FramelessWindowHint | Qt.WindowTitleHint
|
||||
// menuBar: Rectangle {
|
||||
// width: parent.width
|
||||
// height: 40 * DefaultStyle.dp
|
||||
// color: DefaultStyle.grey_100
|
||||
// }
|
||||
|
||||
function goToNewCall() {
|
||||
mainWindowStackView.replace(mainPage, StackView.Immediate)
|
||||
mainWindowStackView.currentItem.goToNewCall()
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ Control.Button {
|
|||
id: mainItem
|
||||
property int capitalization
|
||||
property color color: DefaultStyle.main1_500_main
|
||||
property color borderColor: "transparent"
|
||||
property color pressedColor: DefaultStyle.main1_500_main_darker
|
||||
property bool inversedColors: false
|
||||
property int textSize: 18 * DefaultStyle.dp
|
||||
|
|
@ -15,7 +16,6 @@ Control.Button {
|
|||
property bool underline: false
|
||||
property bool shadowEnabled: false
|
||||
property var contentImageColor
|
||||
property alias contentText: contentText
|
||||
hoverEnabled: true
|
||||
icon.width: width
|
||||
icon.height: height
|
||||
|
|
@ -44,7 +44,7 @@ Control.Button {
|
|||
? mainItem.pressedColor
|
||||
: mainItem.color
|
||||
radius: 48 * DefaultStyle.dp
|
||||
border.color: inversedColors ? mainItem.color : "transparent"
|
||||
border.color: inversedColors ? mainItem.color : mainItem.borderColor
|
||||
|
||||
MouseArea {
|
||||
anchors.fill: parent
|
||||
|
|
@ -64,15 +64,48 @@ Control.Button {
|
|||
}
|
||||
|
||||
contentItem: StackLayout {
|
||||
currentIndex: mainItem.text.length != 0
|
||||
currentIndex: mainItem.text.length != 0 && mainItem.icon.source != undefined
|
||||
? 0
|
||||
: mainItem.icon.source != undefined
|
||||
: mainItem.text.length != 0
|
||||
? 1
|
||||
: 2
|
||||
: mainItem.icon.source != undefined
|
||||
? 2
|
||||
: 3
|
||||
|
||||
width: mainItem.width
|
||||
RowLayout {
|
||||
spacing: 5 * DefaultStyle.dp
|
||||
EffectImage {
|
||||
visible: mainItem.icon.source != undefined
|
||||
Layout.fillWidth: true
|
||||
Layout.fillHeight: true
|
||||
imageSource: mainItem.icon.source
|
||||
imageWidth: mainItem.icon.width
|
||||
imageHeight: mainItem.icon.height
|
||||
colorizationColor: mainItem.contentImageColor
|
||||
}
|
||||
Text {
|
||||
visible: mainItem.text != undefined
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
width: mainItem.text != undefined ? implicitWidth : 0
|
||||
height: implicitHeight
|
||||
wrapMode: Text.WrapAnywhere
|
||||
Layout.fillWidth: true
|
||||
Layout.fillHeight: true
|
||||
text: mainItem.text
|
||||
maximumLineCount: 1
|
||||
color: inversedColors ? mainItem.color : DefaultStyle.grey_0
|
||||
font {
|
||||
pixelSize: mainItem.textSize
|
||||
weight: mainItem.textWeight
|
||||
family: DefaultStyle.defaultFont
|
||||
capitalization: mainItem.capitalization
|
||||
underline: mainItem.underline
|
||||
}
|
||||
}
|
||||
}
|
||||
Text {
|
||||
id: contentText
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
Layout.alignment: Qt.AlignCenter
|
||||
|
|
@ -92,7 +125,6 @@ Control.Button {
|
|||
}
|
||||
}
|
||||
EffectImage {
|
||||
id: image
|
||||
Layout.alignment: Qt.AlignCenter
|
||||
Layout.fillWidth: true
|
||||
Layout.fillHeight: true
|
||||
|
|
@ -102,8 +134,8 @@ Control.Button {
|
|||
colorizationColor: mainItem.contentImageColor
|
||||
}
|
||||
Item {
|
||||
Layout.fillWidth: true
|
||||
Layout.fillHeight: true
|
||||
Layout.fillWidth : true
|
||||
Layout.fillHeight : true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -9,11 +9,7 @@ Button {
|
|||
property string iconUrl
|
||||
property string checkedIconUrl
|
||||
property color color: DefaultStyle.grey_500
|
||||
property color checkedColor: DefaultStyle.main2_400
|
||||
leftPadding: 0
|
||||
rightPadding: 0
|
||||
topPadding: 0
|
||||
bottomPadding: 0
|
||||
property color checkedColor: color
|
||||
checkable: true
|
||||
background: Rectangle {
|
||||
anchors.fill: parent
|
||||
|
|
|
|||
|
|
@ -10,11 +10,15 @@ ListView {
|
|||
height: contentHeight
|
||||
visible: contentHeight > 0
|
||||
clip: true
|
||||
rightMargin: 5 * DefaultStyle.dp
|
||||
|
||||
property string searchBarText
|
||||
|
||||
property bool hoverEnabled: true
|
||||
// dots popup menu
|
||||
property bool contactMenuVisible: true
|
||||
// call, video call etc menu
|
||||
property bool actionMenuVisible: true
|
||||
property bool initialHeadersVisible: true
|
||||
property bool displayNameCapitalization: true
|
||||
property bool showOnlyFavourites: false
|
||||
|
|
@ -34,8 +38,6 @@ ListView {
|
|||
property int delegateLeftMargin: 0
|
||||
currentIndex: -1
|
||||
|
||||
property var delegateButtons: []
|
||||
|
||||
property FriendGui selectedContact: model.getAt(currentIndex) || null
|
||||
|
||||
onCurrentIndexChanged: selectedContact = model.getAt(currentIndex) || null
|
||||
|
|
@ -49,7 +51,7 @@ ListView {
|
|||
signal contactAddedToSelection()
|
||||
|
||||
model: MagicSearchProxy {
|
||||
searchText: searchBarText.length === 0 ? "*" : searchBarText
|
||||
searchText: searchBarText.length === 0 ? "*" : searchBarText
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -88,6 +90,7 @@ ListView {
|
|||
anchors.left: initial.visible ? initial.right : parent.left
|
||||
anchors.leftMargin: 10 * DefaultStyle.dp + mainItem.delegateLeftMargin
|
||||
anchors.right: parent.right
|
||||
anchors.rightMargin: 10 * DefaultStyle.dp
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
spacing: 10 * DefaultStyle.dp
|
||||
z: 1
|
||||
|
|
@ -122,12 +125,39 @@ ListView {
|
|||
RowLayout {
|
||||
id: actionsRow
|
||||
z: 1
|
||||
anchors.fill: parent
|
||||
anchors.rightMargin: 5 * DefaultStyle.dp
|
||||
visible: mainItem.actionMenuVisible || friendPopup.visible
|
||||
// anchors.fill: parent
|
||||
anchors.right: parent.right
|
||||
anchors.rightMargin: 10 * DefaultStyle.dp
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
RowLayout{
|
||||
Layout.fillWidth: true
|
||||
Layout.fillHeight: true
|
||||
children: mainItem.delegateButtons
|
||||
property var callObj
|
||||
visible: mainItem.actionMenuVisible
|
||||
spacing: 10 * DefaultStyle.dp
|
||||
Button {
|
||||
Layout.preferredWidth: 24 * DefaultStyle.dp
|
||||
Layout.preferredHeight: 24 * DefaultStyle.dp
|
||||
background: Item{}
|
||||
contentItem: Image {
|
||||
anchors.fill: parent
|
||||
width: 24 * DefaultStyle.dp
|
||||
height: 24 * DefaultStyle.dp
|
||||
source: AppIcons.phone
|
||||
}
|
||||
onClicked: callObj = UtilsCpp.createCall(modelData.core.defaultAddress)
|
||||
}
|
||||
Button {
|
||||
Layout.preferredWidth: 24 * DefaultStyle.dp
|
||||
Layout.preferredHeight: 24 * DefaultStyle.dp
|
||||
background: Item{}
|
||||
contentItem: Image {
|
||||
anchors.fill: parent
|
||||
width: 24 * DefaultStyle.dp
|
||||
height: 24 * DefaultStyle.dp
|
||||
source: AppIcons.videoCamera
|
||||
}
|
||||
onClicked: callObj = UtilsCpp.createCall(modelData.core.defaultAddress, true)
|
||||
}
|
||||
}
|
||||
PopupButton {
|
||||
id: friendPopup
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@ Loader {
|
|||
sourceComponent: Item {
|
||||
Image {
|
||||
id: image
|
||||
visible: !effect2.enabled
|
||||
visible: !effect2.effectEnabled
|
||||
source: mainItem.imageSource ? mainItem.imageSource : ""
|
||||
fillMode: mainItem.fillMode
|
||||
sourceSize.width: width
|
||||
|
|
@ -34,18 +34,18 @@ Loader {
|
|||
anchors.fill: image
|
||||
source: image
|
||||
maskSource: image
|
||||
brightness: effect2.enabled ? 1.0 : 0.0
|
||||
brightness: effect2.effectEnabled ? 1.0 : 0.0
|
||||
}
|
||||
|
||||
MultiEffect {
|
||||
id: effect2
|
||||
visible: mainItem.useColor
|
||||
enabled: mainItem.useColor
|
||||
property bool effectEnabled: mainItem.useColor
|
||||
anchors.fill: effect
|
||||
source: effect
|
||||
maskSource: effect
|
||||
colorizationColor: effect2.enabled && mainItem.colorizationColor ? mainItem.colorizationColor : 'black'
|
||||
colorization: effect2.enabled ? 1.0: 0.0
|
||||
colorizationColor: effectEnabled && mainItem.colorizationColor ? mainItem.colorizationColor : 'black'
|
||||
colorization: effectEnabled ? 1.0: 0.0
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -64,6 +64,26 @@ Item {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
// ColumnLayout {
|
||||
// id: waitingForParticipant
|
||||
// Text {
|
||||
// text: qsTr("Waiting for other participants...")
|
||||
// color: DefaultStyle.frey_0
|
||||
// font {
|
||||
// pixelSize: 30 * DefaultStyle.dp
|
||||
// weight: 300 * DefaultStyle.dp
|
||||
// }
|
||||
// }
|
||||
// Button {
|
||||
// inversedColors: true
|
||||
// text: qsTr("Share invitation")
|
||||
// icon.source: AppIcons.shareNetwork
|
||||
// color: DefaultStyle.main2_400
|
||||
// Layout.preferredWidth: 206 * DefaultStyle.dp
|
||||
// Layout.preferredHeight: 47 * DefaultStyle.dp
|
||||
// }
|
||||
// }
|
||||
/*
|
||||
Sticker {
|
||||
id: preview
|
||||
|
|
|
|||
|
|
@ -111,4 +111,7 @@ ColumnLayout {
|
|||
searchBarText: searchbar.text
|
||||
onContactAddedToSelection: participantList.positionViewAtEnd()
|
||||
}
|
||||
Item {
|
||||
Layout.fillHeight: true
|
||||
}
|
||||
}
|
||||
|
|
@ -368,8 +368,9 @@ AbstractMainPage {
|
|||
inversedColors: true
|
||||
color: DefaultStyle.main2_600
|
||||
background: Item{}
|
||||
property var callObj
|
||||
onClicked: {
|
||||
console.log("TODO: join conf", text)
|
||||
callObj = UtilsCpp.createCall(mainItem.selectedConference.core.uri)
|
||||
}
|
||||
}
|
||||
Button {
|
||||
|
|
@ -377,7 +378,10 @@ AbstractMainPage {
|
|||
Layout.preferredHeight: 24 * DefaultStyle.dp
|
||||
background: Item{}
|
||||
icon.source: AppIcons.shareNetwork
|
||||
onClicked: UtilsCpp.copyToClipboard(confUri.text)
|
||||
onClicked: {
|
||||
UtilsCpp.copyToClipboard(mainItem.selectedConference.core.uri)
|
||||
UtilsCpp.showInformationPopup(qsTr("Enregistré"), qsTr("Le lien de la réunion a été copié dans le presse-papiers"))
|
||||
}
|
||||
}
|
||||
}
|
||||
RowLayout {
|
||||
|
|
@ -513,7 +517,6 @@ AbstractMainPage {
|
|||
topPadding: 11 * DefaultStyle.dp
|
||||
bottomPadding: 11 * DefaultStyle.dp
|
||||
onClicked: {
|
||||
console.log("TODO: join conf", mainItem.selectedConference.core.subject)
|
||||
console.log(mainItem.selectedConference.core.uri)
|
||||
UtilsCpp.setupConference(mainItem.selectedConference)
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue