mirror of
https://gitlab.linphone.org/BC/public/linphone-desktop.git
synced 2026-04-17 20:08:28 +00:00
UI fixes:
fix initials function fix translation and text weight warnings fix meeting detail layout fix crash when adding invalid participant to conference cancel button on conference update loading popup
This commit is contained in:
parent
1d2eefe729
commit
a9c7e1f8cc
6 changed files with 266 additions and 256 deletions
|
|
@ -181,7 +181,6 @@ win64-ninja-vs2022-scheduled-windows:
|
||||||
rules:
|
rules:
|
||||||
- !reference [.rules-merge-request-manual, rules]
|
- !reference [.rules-merge-request-manual, rules]
|
||||||
- if: $NIGHTLY_RELEASE
|
- if: $NIGHTLY_RELEASE
|
||||||
- if: $NIGHTLY_MASTER
|
|
||||||
- if: $PACKAGE_WINDOWS
|
- if: $PACKAGE_WINDOWS
|
||||||
variables:
|
variables:
|
||||||
CMAKE_OPTIONS: -DENABLE_APP_PACKAGING=YES -DENABLE_G729=ON -DENABLE_PQCRYPTO=ON -DENABLE_GPL_THIRD_PARTIES=OFF -DENABLE_BUGSPLAT_SYMBOLS_UPLOAD=ON -DBUGSPLAT_CLIENT_ID=$BUGSPLAT_CLIENT_ID -DBUGSPLAT_CLIENT_SECRET=$BUGSPLAT_CLIENT_SECRET -DBUGSPLAT_DATABASE=$BUGSPLAT_DATABASE
|
CMAKE_OPTIONS: -DENABLE_APP_PACKAGING=YES -DENABLE_G729=ON -DENABLE_PQCRYPTO=ON -DENABLE_GPL_THIRD_PARTIES=OFF -DENABLE_BUGSPLAT_SYMBOLS_UPLOAD=ON -DBUGSPLAT_CLIENT_ID=$BUGSPLAT_CLIENT_ID -DBUGSPLAT_CLIENT_SECRET=$BUGSPLAT_CLIENT_SECRET -DBUGSPLAT_DATABASE=$BUGSPLAT_DATABASE
|
||||||
|
|
|
||||||
|
|
@ -551,8 +551,10 @@ void ConferenceInfoCore::writeIntoModel(std::shared_ptr<ConferenceInfoModel> mod
|
||||||
auto map = p.toMap();
|
auto map = p.toMap();
|
||||||
auto address = map["address"].toString();
|
auto address = map["address"].toString();
|
||||||
auto linAddr = ToolModel::interpretUrl(address);
|
auto linAddr = ToolModel::interpretUrl(address);
|
||||||
auto infos = linphone::Factory::get()->createParticipantInfo(linAddr);
|
if (linAddr) {
|
||||||
participantInfos.push_back(infos);
|
auto infos = linphone::Factory::get()->createParticipantInfo(linAddr);
|
||||||
|
participantInfos.push_back(infos);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
model->setParticipantInfos(participantInfos);
|
model->setParticipantInfos(participantInfos);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -141,21 +141,23 @@ QString Utils::getInitials(const QString &username, int letterCount) {
|
||||||
#if QT_VERSION < QT_VERSION_CHECK(6, 9, 0)
|
#if QT_VERSION < QT_VERSION_CHECK(6, 9, 0)
|
||||||
return Utils::encodeEmojiToQmlRichFormat(QString::fromStdU32String(char32));
|
return Utils::encodeEmojiToQmlRichFormat(QString::fromStdU32String(char32));
|
||||||
#else
|
#else
|
||||||
QString::fromStdU32String(char32);
|
return QString::fromStdU32String(char32);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
QStringList initials;
|
QStringList initials;
|
||||||
initials << QString::fromStdU32String(char32);
|
initials << QString::fromStdU32String(char32);
|
||||||
for (int i = 1; i < words.size() && initials.size() <= 1; ++i) {
|
if (initials.count() < letterCount) {
|
||||||
if (words[i].size() > 0) {
|
for (int i = 1; i < words.size() && initials.size() <= 1; ++i) {
|
||||||
str32 = words[i].toStdU32String();
|
if (words[i].size() > 0) {
|
||||||
char32[0] = str32[0];
|
str32 = words[i].toStdU32String();
|
||||||
initials << QString::fromStdU32String(char32);
|
char32[0] = str32[0];
|
||||||
if (initials.count() >= letterCount) break;
|
initials << QString::fromStdU32String(char32);
|
||||||
std::string converted = u32_to_ascii(char32);
|
if (initials.count() >= letterCount) break;
|
||||||
if (Utils::codepointIsEmoji(atoi(converted.c_str()))) {
|
std::string converted = u32_to_ascii(char32);
|
||||||
break;
|
if (Utils::codepointIsEmoji(atoi(converted.c_str()))) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -60,7 +60,7 @@ Button {
|
||||||
text: mainItem.text
|
text: mainItem.text
|
||||||
font {
|
font {
|
||||||
pixelSize: mainItem.textSize
|
pixelSize: mainItem.textSize
|
||||||
weight: mainItem.textWeight * 2
|
weight: mainItem.textWeight
|
||||||
family: DefaultStyle.defaultFont
|
family: DefaultStyle.defaultFont
|
||||||
capitalization: mainItem.capitalization
|
capitalization: mainItem.capitalization
|
||||||
underline: mainItem.underline
|
underline: mainItem.underline
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,6 @@ ColumnLayout {
|
||||||
spacing: Utils.getSizeWithScreenRatio(15)
|
spacing: Utils.getSizeWithScreenRatio(15)
|
||||||
property alias content: contentLayout.data
|
property alias content: contentLayout.data
|
||||||
property alias contentLayout: contentLayout
|
property alias contentLayout: contentLayout
|
||||||
implicitHeight: contentLayout.implicitHeight + Utils.getSizeWithScreenRatio(1) + spacing
|
|
||||||
ColumnLayout {
|
ColumnLayout {
|
||||||
id: contentLayout
|
id: contentLayout
|
||||||
spacing: Utils.getSizeWithScreenRatio(8)
|
spacing: Utils.getSizeWithScreenRatio(8)
|
||||||
|
|
|
||||||
|
|
@ -499,17 +499,17 @@ AbstractMainPage {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Connections {
|
Connections {
|
||||||
enabled: conferenceEdit.conferenceInfoGui
|
enabled: conferenceEdit && conferenceEdit.conferenceInfoGui
|
||||||
target: conferenceEdit.conferenceInfoGui ? conferenceEdit.conferenceInfoGui.core : null
|
target: conferenceEdit.conferenceInfoGui ? conferenceEdit.conferenceInfoGui.core : null
|
||||||
ignoreUnknownSignals: true
|
ignoreUnknownSignals: true
|
||||||
function onSaveFailed() {
|
function onSaveFailed() {
|
||||||
UtilsCpp.getMainWindow().closeLoadingPopup()
|
UtilsCpp.getMainWindow().closeLoadingPopup()
|
||||||
}
|
}
|
||||||
function onSchedulerStateChanged() {
|
function onSchedulerStateChanged() {
|
||||||
editFocusScope.enabled = conferenceInfoGui.core.schedulerState != LinphoneEnums.ConferenceSchedulerState.AllocationPending
|
editFocusScope.enabled = conferenceEdit.conferenceInfoGui.core.schedulerState != LinphoneEnums.ConferenceSchedulerState.AllocationPending
|
||||||
if (conferenceEdit.conferenceInfoGui.core.schedulerState == LinphoneEnums.ConferenceSchedulerState.Ready) {
|
if (conferenceEdit.conferenceInfoGui.core.schedulerState == LinphoneEnums.ConferenceSchedulerState.Ready) {
|
||||||
rightPanelStackView.pop()
|
|
||||||
UtilsCpp.getMainWindow().closeLoadingPopup()
|
UtilsCpp.getMainWindow().closeLoadingPopup()
|
||||||
|
rightPanelStackView.pop()
|
||||||
//: "Enregistré"
|
//: "Enregistré"
|
||||||
UtilsCpp.showInformationPopup(qsTr("saved"),
|
UtilsCpp.showInformationPopup(qsTr("saved"),
|
||||||
//: "Réunion mise à jour"
|
//: "Réunion mise à jour"
|
||||||
|
|
@ -518,7 +518,9 @@ AbstractMainPage {
|
||||||
else if (conferenceEdit.conferenceInfoGui.core.schedulerState == LinphoneEnums.ConferenceSchedulerState.AllocationPending
|
else if (conferenceEdit.conferenceInfoGui.core.schedulerState == LinphoneEnums.ConferenceSchedulerState.AllocationPending
|
||||||
|| conferenceEdit.conferenceInfoGui.core.schedulerState == LinphoneEnums.ConferenceSchedulerState.Updating) {
|
|| conferenceEdit.conferenceInfoGui.core.schedulerState == LinphoneEnums.ConferenceSchedulerState.Updating) {
|
||||||
//: "Modification de la réunion en cours…"
|
//: "Modification de la réunion en cours…"
|
||||||
UtilsCpp.getMainWindow().showLoadingPopup(qsTr("meeting_schedule_edit_in_progress"))
|
UtilsCpp.getMainWindow().showLoadingPopup(qsTr("meeting_schedule_edit_in_progress"), true, function(){
|
||||||
|
conferenceEdit.conferenceInfoGui.core.undo()
|
||||||
|
})
|
||||||
} else if (conferenceEdit.conferenceInfoGui.core.schedulerState == LinphoneEnums.ConferenceSchedulerState.Error) {
|
} else if (conferenceEdit.conferenceInfoGui.core.schedulerState == LinphoneEnums.ConferenceSchedulerState.Error) {
|
||||||
UtilsCpp.showInformationPopup(qsTr("information_popup_error_title"),
|
UtilsCpp.showInformationPopup(qsTr("information_popup_error_title"),
|
||||||
//: "Échec de la modification de la réunion !"
|
//: "Échec de la modification de la réunion !"
|
||||||
|
|
@ -621,7 +623,7 @@ AbstractMainPage {
|
||||||
FocusScope{
|
FocusScope{
|
||||||
width: Utils.getSizeWithScreenRatio(393)
|
width: Utils.getSizeWithScreenRatio(393)
|
||||||
anchors.horizontalCenter: parent?.horizontalCenter
|
anchors.horizontalCenter: parent?.horizontalCenter
|
||||||
RowLayout {
|
ColumnLayout {
|
||||||
id: meetingDetailsLayout
|
id: meetingDetailsLayout
|
||||||
visible: mainItem.selectedConference
|
visible: mainItem.selectedConference
|
||||||
anchors.top: parent.top
|
anchors.top: parent.top
|
||||||
|
|
@ -629,146 +631,188 @@ AbstractMainPage {
|
||||||
anchors.horizontalCenter: parent.horizontalCenter
|
anchors.horizontalCenter: parent.horizontalCenter
|
||||||
anchors.bottomMargin: Utils.getSizeWithScreenRatio(30)
|
anchors.bottomMargin: Utils.getSizeWithScreenRatio(30)
|
||||||
width: Utils.getSizeWithScreenRatio(393)
|
width: Utils.getSizeWithScreenRatio(393)
|
||||||
|
uniformCellSizes: true
|
||||||
// direction: FlexboxLayout.Column
|
// direction: FlexboxLayout.Column
|
||||||
// alignContent: FlexboxLayout.AlignSpaceBetween
|
// alignContent: FlexboxLayout.AlignSpaceBetween
|
||||||
spacing: Utils.getSizeWithScreenRatio(16)
|
ColumnLayout{
|
||||||
Section {
|
Layout.alignment: Qt.AlignTop
|
||||||
visible: mainItem.selectedConference
|
spacing: Utils.getSizeWithScreenRatio(16)
|
||||||
Layout.fillWidth: true
|
Section {
|
||||||
content: RowLayout {
|
visible: mainItem.selectedConference
|
||||||
spacing: Utils.getSizeWithScreenRatio(8)
|
Layout.fillWidth: true
|
||||||
EffectImage {
|
content: RowLayout {
|
||||||
imageSource: AppIcons.usersThree
|
spacing: Utils.getSizeWithScreenRatio(8)
|
||||||
colorizationColor: DefaultStyle.main2_600
|
EffectImage {
|
||||||
Layout.preferredWidth: Utils.getSizeWithScreenRatio(24)
|
imageSource: AppIcons.usersThree
|
||||||
Layout.preferredHeight: Utils.getSizeWithScreenRatio(24)
|
colorizationColor: DefaultStyle.main2_600
|
||||||
}
|
Layout.preferredWidth: Utils.getSizeWithScreenRatio(24)
|
||||||
Text {
|
Layout.preferredHeight: Utils.getSizeWithScreenRatio(24)
|
||||||
Layout.fillWidth: true
|
|
||||||
text: mainItem.selectedConference && mainItem.selectedConference.core? mainItem.selectedConference.core.subject : ""
|
|
||||||
maximumLineCount: 1
|
|
||||||
font {
|
|
||||||
pixelSize: Utils.getSizeWithScreenRatio(20)
|
|
||||||
weight: Typography.h4.weight
|
|
||||||
}
|
}
|
||||||
}
|
Text {
|
||||||
Item {
|
Layout.fillWidth: true
|
||||||
Layout.fillWidth: true
|
text: mainItem.selectedConference && mainItem.selectedConference.core? mainItem.selectedConference.core.subject : ""
|
||||||
}
|
maximumLineCount: 1
|
||||||
RoundButton {
|
font {
|
||||||
id: editButton
|
pixelSize: Utils.getSizeWithScreenRatio(20)
|
||||||
property var isMeObj: UtilsCpp.isMe(mainItem.selectedConference?.core?.organizerAddress)
|
weight: Typography.h4.weight
|
||||||
visible: mainItem.selectedConference && isMeObj && isMeObj.value || false
|
}
|
||||||
icon.source: AppIcons.pencil
|
}
|
||||||
style: ButtonStyle.noBackgroundOrange
|
Item {
|
||||||
KeyNavigation.left: leftPanelStackView.currentItem
|
Layout.fillWidth: true
|
||||||
KeyNavigation.right: deletePopup
|
}
|
||||||
KeyNavigation.up: joinButton
|
RoundButton {
|
||||||
KeyNavigation.down: shareNetworkButton
|
id: editButton
|
||||||
Layout.preferredWidth: Utils.getSizeWithScreenRatio(24)
|
|
||||||
onClicked: mainItem.editConference(mainItem.selectedConference)
|
|
||||||
}
|
|
||||||
PopupButton {
|
|
||||||
id: deletePopup
|
|
||||||
Layout.preferredWidth: Utils.getSizeWithScreenRatio(24)
|
|
||||||
Layout.preferredHeight: Utils.getSizeWithScreenRatio(24)
|
|
||||||
contentImageColor: DefaultStyle.main1_500_main
|
|
||||||
KeyNavigation.left: editButton.visible ? editButton : leftPanelStackView.currentItem
|
|
||||||
KeyNavigation.right: leftPanelStackView.currentItem
|
|
||||||
KeyNavigation.up: joinButton
|
|
||||||
KeyNavigation.down: shareNetworkButton
|
|
||||||
|
|
||||||
popup.contentItem: IconLabelButton {
|
|
||||||
style: ButtonStyle.hoveredBackgroundRed
|
|
||||||
property var isMeObj: UtilsCpp.isMe(mainItem.selectedConference?.core?.organizerAddress)
|
property var isMeObj: UtilsCpp.isMe(mainItem.selectedConference?.core?.organizerAddress)
|
||||||
property bool canCancel: isMeObj && isMeObj.value && mainItem.selectedConference?.core?.state !== LinphoneEnums.ConferenceInfoState.Cancelled
|
visible: mainItem.selectedConference && isMeObj && isMeObj.value || false
|
||||||
icon.source: AppIcons.trashCan
|
icon.source: AppIcons.pencil
|
||||||
//: "Supprimer la réunion"
|
style: ButtonStyle.noBackgroundOrange
|
||||||
text: qsTr("meeting_info_delete")
|
KeyNavigation.left: leftPanelStackView.currentItem
|
||||||
|
KeyNavigation.right: deletePopup
|
||||||
|
KeyNavigation.up: joinButton
|
||||||
|
KeyNavigation.down: shareNetworkButton
|
||||||
|
Layout.preferredWidth: Utils.getSizeWithScreenRatio(24)
|
||||||
|
onClicked: mainItem.editConference(mainItem.selectedConference)
|
||||||
|
}
|
||||||
|
PopupButton {
|
||||||
|
id: deletePopup
|
||||||
|
Layout.preferredWidth: Utils.getSizeWithScreenRatio(24)
|
||||||
|
Layout.preferredHeight: Utils.getSizeWithScreenRatio(24)
|
||||||
|
contentImageColor: DefaultStyle.main1_500_main
|
||||||
|
KeyNavigation.left: editButton.visible ? editButton : leftPanelStackView.currentItem
|
||||||
|
KeyNavigation.right: leftPanelStackView.currentItem
|
||||||
|
KeyNavigation.up: joinButton
|
||||||
|
KeyNavigation.down: shareNetworkButton
|
||||||
|
|
||||||
onClicked: {
|
popup.contentItem: IconLabelButton {
|
||||||
if (mainItem.selectedConference) {
|
style: ButtonStyle.hoveredBackgroundRed
|
||||||
cancelAndDeleteConfDialog.confInfoToDelete = mainItem.selectedConference
|
property var isMeObj: UtilsCpp.isMe(mainItem.selectedConference?.core?.organizerAddress)
|
||||||
cancelAndDeleteConfDialog.cancel = canCancel
|
property bool canCancel: isMeObj && isMeObj.value && mainItem.selectedConference?.core?.state !== LinphoneEnums.ConferenceInfoState.Cancelled
|
||||||
cancelAndDeleteConfDialog.open()
|
icon.source: AppIcons.trashCan
|
||||||
deletePopup.close()
|
//: "Supprimer la réunion"
|
||||||
|
text: qsTr("meeting_info_delete")
|
||||||
|
|
||||||
|
onClicked: {
|
||||||
|
if (mainItem.selectedConference) {
|
||||||
|
cancelAndDeleteConfDialog.confInfoToDelete = mainItem.selectedConference
|
||||||
|
cancelAndDeleteConfDialog.cancel = canCancel
|
||||||
|
cancelAndDeleteConfDialog.open()
|
||||||
|
deletePopup.close()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
Section {
|
||||||
Section {
|
Layout.fillWidth: true
|
||||||
Layout.fillWidth: true
|
content: ColumnLayout {
|
||||||
content: ColumnLayout {
|
spacing: Utils.getSizeWithScreenRatio(15)
|
||||||
spacing: Utils.getSizeWithScreenRatio(15)
|
width: parent.width
|
||||||
width: parent.width
|
RowLayout {
|
||||||
RowLayout {
|
spacing: Utils.getSizeWithScreenRatio(8)
|
||||||
spacing: Utils.getSizeWithScreenRatio(8)
|
|
||||||
Layout.fillWidth: true
|
|
||||||
EffectImage {
|
|
||||||
Layout.preferredWidth: Utils.getSizeWithScreenRatio(24)
|
|
||||||
Layout.preferredHeight: Utils.getSizeWithScreenRatio(24)
|
|
||||||
colorizationColor: DefaultStyle.main2_600
|
|
||||||
imageSource: AppIcons.videoCamera
|
|
||||||
}
|
|
||||||
SmallButton {
|
|
||||||
id: linkButton
|
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
text: mainItem.selectedConference ? mainItem.selectedConference.core?.uri : ""
|
EffectImage {
|
||||||
textSize: Typography.p1.pixelSize
|
Layout.preferredWidth: Utils.getSizeWithScreenRatio(24)
|
||||||
textWeight: Typography.p1.weight
|
Layout.preferredHeight: Utils.getSizeWithScreenRatio(24)
|
||||||
underline: true
|
colorizationColor: DefaultStyle.main2_600
|
||||||
style: ButtonStyle.noBackground
|
imageSource: AppIcons.videoCamera
|
||||||
Keys.onPressed: (event)=> {
|
}
|
||||||
if (event.key == Qt.Key_Space || event.key == Qt.Key_Enter || event.key == Qt.Key_Return) {
|
SmallButton {
|
||||||
clicked(undefined)
|
id: linkButton
|
||||||
event.accepted = true;
|
Layout.fillWidth: true
|
||||||
|
text: mainItem.selectedConference ? mainItem.selectedConference.core?.uri : ""
|
||||||
|
textSize: Typography.p1.pixelSize
|
||||||
|
textWeight: Typography.p1.weight
|
||||||
|
underline: true
|
||||||
|
style: ButtonStyle.noBackground
|
||||||
|
Keys.onPressed: (event)=> {
|
||||||
|
if (event.key == Qt.Key_Space || event.key == Qt.Key_Enter || event.key == Qt.Key_Return) {
|
||||||
|
clicked(undefined)
|
||||||
|
event.accepted = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
KeyNavigation.left: shareNetworkButton
|
||||||
|
KeyNavigation.right: shareNetworkButton
|
||||||
|
KeyNavigation.up: deletePopup
|
||||||
|
KeyNavigation.down: joinButton
|
||||||
|
onClicked: {
|
||||||
|
// TODO : voir si c'est en audio only quand on clique sur le lien
|
||||||
|
UtilsCpp.createCall(mainItem.selectedConference.core.uri)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
KeyNavigation.left: shareNetworkButton
|
RoundButton {
|
||||||
KeyNavigation.right: shareNetworkButton
|
id: shareNetworkButton
|
||||||
KeyNavigation.up: deletePopup
|
style: ButtonStyle.noBackground
|
||||||
KeyNavigation.down: joinButton
|
icon.source: AppIcons.shareNetwork
|
||||||
onClicked: {
|
KeyNavigation.left: linkButton
|
||||||
// TODO : voir si c'est en audio only quand on clique sur le lien
|
KeyNavigation.right: linkButton
|
||||||
UtilsCpp.createCall(mainItem.selectedConference.core.uri)
|
KeyNavigation.up: deletePopup
|
||||||
|
KeyNavigation.down: joinButton
|
||||||
|
onClicked: {
|
||||||
|
var success = UtilsCpp.copyToClipboard(mainItem.selectedConference.core.uri)
|
||||||
|
if (success) UtilsCpp.showInformationPopup(qsTr("saved"),
|
||||||
|
//: "Adresse de la réunion copiée"
|
||||||
|
qsTr("meeting_address_copied_to_clipboard_toast"))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
RoundButton {
|
RowLayout {
|
||||||
id: shareNetworkButton
|
spacing: Utils.getSizeWithScreenRatio(8)
|
||||||
style: ButtonStyle.noBackground
|
EffectImage {
|
||||||
icon.source: AppIcons.shareNetwork
|
Layout.preferredWidth: Utils.getSizeWithScreenRatio(24)
|
||||||
KeyNavigation.left: linkButton
|
Layout.preferredHeight: Utils.getSizeWithScreenRatio(24)
|
||||||
KeyNavigation.right: linkButton
|
imageSource: AppIcons.clock
|
||||||
KeyNavigation.up: deletePopup
|
colorizationColor: DefaultStyle.main2_600
|
||||||
KeyNavigation.down: calendarPlusButton
|
}
|
||||||
onClicked: {
|
Text {
|
||||||
var success = UtilsCpp.copyToClipboard(mainItem.selectedConference.core.uri)
|
text: mainItem.selectedConference && mainItem.selectedConference.core
|
||||||
if (success) UtilsCpp.showInformationPopup(qsTr("saved"),
|
? UtilsCpp.toDateString(mainItem.selectedConference.core.dateTime)
|
||||||
//: "Adresse de la réunion copiée"
|
+ " | " + UtilsCpp.toDateHourString(mainItem.selectedConference.core.dateTime)
|
||||||
qsTr("meeting_address_copied_to_clipboard_toast"))
|
+ " - "
|
||||||
|
+ UtilsCpp.toDateHourString(mainItem.selectedConference.core.endDateTime)
|
||||||
|
: ''
|
||||||
|
font {
|
||||||
|
pixelSize: Utils.getSizeWithScreenRatio(14)
|
||||||
|
capitalization: Font.Capitalize
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
RowLayout {
|
||||||
|
spacing: Utils.getSizeWithScreenRatio(8)
|
||||||
|
EffectImage {
|
||||||
|
Layout.preferredWidth: Utils.getSizeWithScreenRatio(24)
|
||||||
|
Layout.preferredHeight: Utils.getSizeWithScreenRatio(24)
|
||||||
|
imageSource: AppIcons.globe
|
||||||
|
colorizationColor: DefaultStyle.main2_600
|
||||||
|
}
|
||||||
|
Text {
|
||||||
|
Layout.fillWidth: true
|
||||||
|
//: "Fuseau horaire"
|
||||||
|
text: "%1: %2".arg(qsTr("meeting_schedule_timezone_title")).arg(mainItem.selectedConference && mainItem.selectedConference.core ? (mainItem.selectedConference.core.timeZoneModel.displayName + ", " + mainItem.selectedConference.core.timeZoneModel.countryName) : "")
|
||||||
|
font {
|
||||||
|
pixelSize: Utils.getSizeWithScreenRatio(14)
|
||||||
|
capitalization: Font.Capitalize
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
RowLayout {
|
}
|
||||||
|
Section {
|
||||||
|
Layout.fillWidth: true
|
||||||
|
visible: mainItem.selectedConference && mainItem.selectedConference.core?.description.length != 0
|
||||||
|
content: RowLayout {
|
||||||
spacing: Utils.getSizeWithScreenRatio(8)
|
spacing: Utils.getSizeWithScreenRatio(8)
|
||||||
EffectImage {
|
EffectImage {
|
||||||
Layout.preferredWidth: Utils.getSizeWithScreenRatio(24)
|
Layout.preferredWidth: Utils.getSizeWithScreenRatio(24)
|
||||||
Layout.preferredHeight: Utils.getSizeWithScreenRatio(24)
|
Layout.preferredHeight: Utils.getSizeWithScreenRatio(24)
|
||||||
imageSource: AppIcons.clock
|
imageSource: AppIcons.note
|
||||||
colorizationColor: DefaultStyle.main2_600
|
colorizationColor: DefaultStyle.main2_600
|
||||||
}
|
}
|
||||||
Text {
|
Text {
|
||||||
text: mainItem.selectedConference && mainItem.selectedConference.core
|
text: mainItem.selectedConference && mainItem.selectedConference.core ? mainItem.selectedConference.core.description : ""
|
||||||
? UtilsCpp.toDateString(mainItem.selectedConference.core.dateTime)
|
Layout.fillWidth: true
|
||||||
+ " | " + UtilsCpp.toDateHourString(mainItem.selectedConference.core.dateTime)
|
|
||||||
+ " - "
|
|
||||||
+ UtilsCpp.toDateHourString(mainItem.selectedConference.core.endDateTime)
|
|
||||||
: ''
|
|
||||||
font {
|
font {
|
||||||
pixelSize: Utils.getSizeWithScreenRatio(14)
|
pixelSize: Utils.getSizeWithScreenRatio(14)
|
||||||
capitalization: Font.Capitalize
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
RoundButton {
|
RoundButton {
|
||||||
|
|
@ -784,18 +828,25 @@ AbstractMainPage {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
RowLayout {
|
}
|
||||||
|
Section {
|
||||||
|
Layout.fillWidth: true
|
||||||
|
content: RowLayout {
|
||||||
spacing: Utils.getSizeWithScreenRatio(8)
|
spacing: Utils.getSizeWithScreenRatio(8)
|
||||||
EffectImage {
|
EffectImage {
|
||||||
Layout.preferredWidth: Utils.getSizeWithScreenRatio(24)
|
Layout.preferredWidth: Utils.getSizeWithScreenRatio(24)
|
||||||
Layout.preferredHeight: Utils.getSizeWithScreenRatio(24)
|
Layout.preferredHeight: Utils.getSizeWithScreenRatio(24)
|
||||||
imageSource: AppIcons.globe
|
imageSource: AppIcons.userRectangle
|
||||||
colorizationColor: DefaultStyle.main2_600
|
colorizationColor: DefaultStyle.main2_600
|
||||||
}
|
}
|
||||||
|
Avatar {
|
||||||
|
Layout.preferredWidth: Utils.getSizeWithScreenRatio(45)
|
||||||
|
Layout.preferredHeight: Utils.getSizeWithScreenRatio(45)
|
||||||
|
_address: mainItem.selectedConference && mainItem.selectedConference.core ? mainItem.selectedConference.core.organizerAddress : ""
|
||||||
|
secured: friendSecurityLevel === LinphoneEnums.SecurityLevel.EndToEndEncryptedAndVerified
|
||||||
|
}
|
||||||
Text {
|
Text {
|
||||||
Layout.fillWidth: true
|
text: mainItem.selectedConference && mainItem.selectedConference.core ? mainItem.selectedConference.core.organizerName : ""
|
||||||
//: "Fuseau horaire"
|
|
||||||
text: "%1: %2".arg(qsTr("meeting_schedule_timezone_title")).arg(mainItem.selectedConference && mainItem.selectedConference.core ? (mainItem.selectedConference.core.timeZoneModel.displayName + ", " + mainItem.selectedConference.core.timeZoneModel.countryName) : "")
|
|
||||||
font {
|
font {
|
||||||
pixelSize: Utils.getSizeWithScreenRatio(14)
|
pixelSize: Utils.getSizeWithScreenRatio(14)
|
||||||
capitalization: Font.Capitalize
|
capitalization: Font.Capitalize
|
||||||
|
|
@ -803,132 +854,89 @@ AbstractMainPage {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
Section {
|
||||||
Section {
|
visible: participantList.count > 0
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
visible: mainItem.selectedConference && mainItem.selectedConference.core?.description.length != 0
|
Layout.fillHeight: true
|
||||||
content: RowLayout {
|
Layout.maximumHeight: participantList.contentHeight + Utils.getSizeWithScreenRatio(1) + spacing
|
||||||
spacing: Utils.getSizeWithScreenRatio(8)
|
content:
|
||||||
EffectImage {
|
RowLayout {
|
||||||
Layout.preferredWidth: Utils.getSizeWithScreenRatio(24)
|
width: Utils.getSizeWithScreenRatio(393)
|
||||||
Layout.preferredHeight: Utils.getSizeWithScreenRatio(24)
|
spacing: Utils.getSizeWithScreenRatio(8)
|
||||||
imageSource: AppIcons.note
|
EffectImage {
|
||||||
colorizationColor: DefaultStyle.main2_600
|
Layout.preferredWidth: Utils.getSizeWithScreenRatio(24)
|
||||||
}
|
Layout.preferredHeight: Utils.getSizeWithScreenRatio(24)
|
||||||
Text {
|
Layout.alignment: Qt.AlignLeft | Qt.AlignTop
|
||||||
text: mainItem.selectedConference && mainItem.selectedConference.core ? mainItem.selectedConference.core.description : ""
|
Layout.topMargin: Utils.getSizeWithScreenRatio(20)
|
||||||
Layout.fillWidth: true
|
imageSource: AppIcons.usersTwo
|
||||||
font {
|
colorizationColor: DefaultStyle.main2_600
|
||||||
pixelSize: Utils.getSizeWithScreenRatio(14)
|
|
||||||
}
|
}
|
||||||
}
|
ListView {
|
||||||
}
|
id: participantList
|
||||||
}
|
// Layout.preferredHeight: contentHeight
|
||||||
Section {
|
Layout.fillWidth: true
|
||||||
Layout.fillWidth: true
|
Layout.fillHeight: true
|
||||||
content: RowLayout {
|
height: contentHeight
|
||||||
spacing: Utils.getSizeWithScreenRatio(8)
|
model: mainItem.selectedConference && mainItem.selectedConference.core ? mainItem.selectedConference.core.participants : []
|
||||||
EffectImage {
|
clip: true
|
||||||
Layout.preferredWidth: Utils.getSizeWithScreenRatio(24)
|
Control.ScrollBar.vertical: ScrollBar {
|
||||||
Layout.preferredHeight: Utils.getSizeWithScreenRatio(24)
|
id: participantScrollBar
|
||||||
imageSource: AppIcons.userRectangle
|
anchors.right: participantList.right
|
||||||
colorizationColor: DefaultStyle.main2_600
|
anchors.top: participantList.top
|
||||||
}
|
anchors.bottom: participantList.bottom
|
||||||
Avatar {
|
visible: participantList.height < participantList.contentHeight
|
||||||
Layout.preferredWidth: Utils.getSizeWithScreenRatio(45)
|
|
||||||
Layout.preferredHeight: Utils.getSizeWithScreenRatio(45)
|
|
||||||
_address: mainItem.selectedConference && mainItem.selectedConference.core ? mainItem.selectedConference.core.organizerAddress : ""
|
|
||||||
secured: friendSecurityLevel === LinphoneEnums.SecurityLevel.EndToEndEncryptedAndVerified
|
|
||||||
}
|
|
||||||
Text {
|
|
||||||
text: mainItem.selectedConference && mainItem.selectedConference.core ? mainItem.selectedConference.core.organizerName : ""
|
|
||||||
font {
|
|
||||||
pixelSize: Utils.getSizeWithScreenRatio(14)
|
|
||||||
capitalization: Font.Capitalize
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Section {
|
|
||||||
visible: participantList.count > 0
|
|
||||||
Layout.fillWidth: true
|
|
||||||
Layout.fillHeight: true
|
|
||||||
Layout.maximumHeight: participantList.contentHeight + Utils.getSizeWithScreenRatio(1) + spacing
|
|
||||||
content: RowLayout {
|
|
||||||
width: Utils.getSizeWithScreenRatio(393)
|
|
||||||
spacing: Utils.getSizeWithScreenRatio(8)
|
|
||||||
EffectImage {
|
|
||||||
Layout.preferredWidth: Utils.getSizeWithScreenRatio(24)
|
|
||||||
Layout.preferredHeight: Utils.getSizeWithScreenRatio(24)
|
|
||||||
Layout.alignment: Qt.AlignLeft | Qt.AlignTop
|
|
||||||
Layout.topMargin: Utils.getSizeWithScreenRatio(20)
|
|
||||||
imageSource: AppIcons.usersTwo
|
|
||||||
colorizationColor: DefaultStyle.main2_600
|
|
||||||
}
|
|
||||||
ListView {
|
|
||||||
id: participantList
|
|
||||||
// Layout.preferredHeight: contentHeight
|
|
||||||
Layout.fillWidth: true
|
|
||||||
Layout.fillHeight: true
|
|
||||||
model: mainItem.selectedConference && mainItem.selectedConference.core ? mainItem.selectedConference.core.participants : []
|
|
||||||
clip: true
|
|
||||||
Control.ScrollBar.vertical: ScrollBar {
|
|
||||||
id: participantScrollBar
|
|
||||||
anchors.right: participantList.right
|
|
||||||
anchors.top: participantList.top
|
|
||||||
anchors.bottom: participantList.bottom
|
|
||||||
visible: participantList.height < participantList.contentHeight
|
|
||||||
}
|
|
||||||
delegate: RowLayout {
|
|
||||||
height: Utils.getSizeWithScreenRatio(56)
|
|
||||||
width: participantList.width - participantScrollBar.width - Utils.getSizeWithScreenRatio(5)
|
|
||||||
Avatar {
|
|
||||||
Layout.preferredWidth: Utils.getSizeWithScreenRatio(45)
|
|
||||||
Layout.preferredHeight: Utils.getSizeWithScreenRatio(45)
|
|
||||||
_address: modelData.address
|
|
||||||
secured: friendSecurityLevel === LinphoneEnums.SecurityLevel.EndToEndEncryptedAndVerified
|
|
||||||
shadowEnabled: false
|
|
||||||
}
|
}
|
||||||
Text {
|
delegate: RowLayout {
|
||||||
property var displayNameObj: UtilsCpp.getDisplayName(modelData.address)
|
height: Utils.getSizeWithScreenRatio(56)
|
||||||
text: displayNameObj?.value || ""
|
width: participantList.width - participantScrollBar.width - Utils.getSizeWithScreenRatio(5)
|
||||||
maximumLineCount: 1
|
Avatar {
|
||||||
Layout.fillWidth: true
|
Layout.preferredWidth: Utils.getSizeWithScreenRatio(45)
|
||||||
font {
|
Layout.preferredHeight: Utils.getSizeWithScreenRatio(45)
|
||||||
pixelSize: Utils.getSizeWithScreenRatio(14)
|
_address: modelData.address
|
||||||
capitalization: Font.Capitalize
|
secured: friendSecurityLevel === LinphoneEnums.SecurityLevel.EndToEndEncryptedAndVerified
|
||||||
|
shadowEnabled: false
|
||||||
}
|
}
|
||||||
}
|
Text {
|
||||||
Text {
|
property var displayNameObj: UtilsCpp.getDisplayName(modelData.address)
|
||||||
//: "Organisateur"
|
text: displayNameObj?.value || ""
|
||||||
text: qsTr("meeting_info_organizer_label")
|
maximumLineCount: 1
|
||||||
visible: mainItem.selectedConference && mainItem.selectedConference.core?.organizerAddress === modelData.address
|
Layout.fillWidth: true
|
||||||
color: DefaultStyle.main2_400
|
font {
|
||||||
font {
|
pixelSize: Utils.getSizeWithScreenRatio(14)
|
||||||
pixelSize: Utils.getSizeWithScreenRatio(12)
|
capitalization: Font.Capitalize
|
||||||
weight: Utils.getSizeWithScreenRatio(300)
|
}
|
||||||
|
}
|
||||||
|
Text {
|
||||||
|
//: "Organisateur"
|
||||||
|
text: qsTr("meeting_info_organizer_label")
|
||||||
|
visible: mainItem.selectedConference && mainItem.selectedConference.core?.organizerAddress === modelData.address
|
||||||
|
color: DefaultStyle.main2_400
|
||||||
|
font {
|
||||||
|
pixelSize: Utils.getSizeWithScreenRatio(12)
|
||||||
|
weight: Utils.getSizeWithScreenRatio(300)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
BigButton {
|
||||||
BigButton {
|
id: joinButton
|
||||||
id: joinButton
|
visible: mainItem.selectedConference && mainItem.selectedConference.core?.state !== LinphoneEnums.ConferenceInfoState.Cancelled
|
||||||
visible: mainItem.selectedConference && mainItem.selectedConference.core?.state !== LinphoneEnums.ConferenceInfoState.Cancelled
|
Layout.fillWidth: true
|
||||||
Layout.fillWidth: true
|
//: "Rejoindre la réunion"
|
||||||
//: "Rejoindre la réunion"
|
text: qsTr("meeting_info_join_title")
|
||||||
text: qsTr("meeting_info_join_title")
|
focus: true
|
||||||
focus: true
|
KeyNavigation.up: shareNetworkButton
|
||||||
KeyNavigation.up: shareNetworkButton
|
KeyNavigation.down: deletePopup
|
||||||
KeyNavigation.down: deletePopup
|
KeyNavigation.left: leftPanelStackView.currentItem
|
||||||
KeyNavigation.left: leftPanelStackView.currentItem
|
KeyNavigation.right: leftPanelStackView.currentItem
|
||||||
KeyNavigation.right: leftPanelStackView.currentItem
|
onClicked: {
|
||||||
onClicked: {
|
console.log(mainItem.selectedConference.core.uri)
|
||||||
console.log(mainItem.selectedConference.core.uri)
|
var callsWindow = UtilsCpp.getOrCreateCallsWindow()
|
||||||
var callsWindow = UtilsCpp.getOrCreateCallsWindow()
|
callsWindow.setupConference(mainItem.selectedConference)
|
||||||
callsWindow.setupConference(mainItem.selectedConference)
|
UtilsCpp.smartShowWindow(callsWindow)
|
||||||
UtilsCpp.smartShowWindow(callsWindow)
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue