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:
Gaelle Braud 2026-02-17 10:54:49 +01:00
parent 1d2eefe729
commit a9c7e1f8cc
6 changed files with 266 additions and 256 deletions

View file

@ -181,7 +181,6 @@ win64-ninja-vs2022-scheduled-windows:
rules:
- !reference [.rules-merge-request-manual, rules]
- if: $NIGHTLY_RELEASE
- if: $NIGHTLY_MASTER
- if: $PACKAGE_WINDOWS
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

View file

@ -551,9 +551,11 @@ void ConferenceInfoCore::writeIntoModel(std::shared_ptr<ConferenceInfoModel> mod
auto map = p.toMap();
auto address = map["address"].toString();
auto linAddr = ToolModel::interpretUrl(address);
if (linAddr) {
auto infos = linphone::Factory::get()->createParticipantInfo(linAddr);
participantInfos.push_back(infos);
}
}
model->setParticipantInfos(participantInfos);
}

View file

@ -141,12 +141,13 @@ QString Utils::getInitials(const QString &username, int letterCount) {
#if QT_VERSION < QT_VERSION_CHECK(6, 9, 0)
return Utils::encodeEmojiToQmlRichFormat(QString::fromStdU32String(char32));
#else
QString::fromStdU32String(char32);
return QString::fromStdU32String(char32);
#endif
}
QStringList initials;
initials << QString::fromStdU32String(char32);
if (initials.count() < letterCount) {
for (int i = 1; i < words.size() && initials.size() <= 1; ++i) {
if (words[i].size() > 0) {
str32 = words[i].toStdU32String();
@ -159,6 +160,7 @@ QString Utils::getInitials(const QString &username, int letterCount) {
}
}
}
}
return QLocale().toUpper(initials.join(""));
}

View file

@ -60,7 +60,7 @@ Button {
text: mainItem.text
font {
pixelSize: mainItem.textSize
weight: mainItem.textWeight * 2
weight: mainItem.textWeight
family: DefaultStyle.defaultFont
capitalization: mainItem.capitalization
underline: mainItem.underline

View file

@ -12,7 +12,6 @@ ColumnLayout {
spacing: Utils.getSizeWithScreenRatio(15)
property alias content: contentLayout.data
property alias contentLayout: contentLayout
implicitHeight: contentLayout.implicitHeight + Utils.getSizeWithScreenRatio(1) + spacing
ColumnLayout {
id: contentLayout
spacing: Utils.getSizeWithScreenRatio(8)

View file

@ -499,17 +499,17 @@ AbstractMainPage {
}
}
Connections {
enabled: conferenceEdit.conferenceInfoGui
enabled: conferenceEdit && conferenceEdit.conferenceInfoGui
target: conferenceEdit.conferenceInfoGui ? conferenceEdit.conferenceInfoGui.core : null
ignoreUnknownSignals: true
function onSaveFailed() {
UtilsCpp.getMainWindow().closeLoadingPopup()
}
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) {
rightPanelStackView.pop()
UtilsCpp.getMainWindow().closeLoadingPopup()
rightPanelStackView.pop()
//: "Enregistré"
UtilsCpp.showInformationPopup(qsTr("saved"),
//: "Réunion mise à jour"
@ -518,7 +518,9 @@ AbstractMainPage {
else if (conferenceEdit.conferenceInfoGui.core.schedulerState == LinphoneEnums.ConferenceSchedulerState.AllocationPending
|| conferenceEdit.conferenceInfoGui.core.schedulerState == LinphoneEnums.ConferenceSchedulerState.Updating) {
//: "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) {
UtilsCpp.showInformationPopup(qsTr("information_popup_error_title"),
//: "Échec de la modification de la réunion !"
@ -621,7 +623,7 @@ AbstractMainPage {
FocusScope{
width: Utils.getSizeWithScreenRatio(393)
anchors.horizontalCenter: parent?.horizontalCenter
RowLayout {
ColumnLayout {
id: meetingDetailsLayout
visible: mainItem.selectedConference
anchors.top: parent.top
@ -629,8 +631,11 @@ AbstractMainPage {
anchors.horizontalCenter: parent.horizontalCenter
anchors.bottomMargin: Utils.getSizeWithScreenRatio(30)
width: Utils.getSizeWithScreenRatio(393)
uniformCellSizes: true
// direction: FlexboxLayout.Column
// alignContent: FlexboxLayout.AlignSpaceBetween
ColumnLayout{
Layout.alignment: Qt.AlignTop
spacing: Utils.getSizeWithScreenRatio(16)
Section {
visible: mainItem.selectedConference
@ -742,7 +747,7 @@ AbstractMainPage {
KeyNavigation.left: linkButton
KeyNavigation.right: linkButton
KeyNavigation.up: deletePopup
KeyNavigation.down: calendarPlusButton
KeyNavigation.down: joinButton
onClicked: {
var success = UtilsCpp.copyToClipboard(mainItem.selectedConference.core.uri)
if (success) UtilsCpp.showInformationPopup(qsTr("saved"),
@ -771,18 +776,6 @@ AbstractMainPage {
capitalization: Font.Capitalize
}
}
RoundButton {
id: calendarPlusButton
style: ButtonStyle.noBackground
icon.source: AppIcons.calendarPlus
KeyNavigation.left: calendarPlusButton
KeyNavigation.right: calendarPlusButton
KeyNavigation.up: shareNetworkButton
KeyNavigation.down: joinButton
onClicked: {
mainItem.selectedConference.core.exportConferenceToICS()
}
}
}
RowLayout {
spacing: Utils.getSizeWithScreenRatio(8)
@ -822,6 +815,18 @@ AbstractMainPage {
pixelSize: Utils.getSizeWithScreenRatio(14)
}
}
RoundButton {
id: calendarPlusButton
style: ButtonStyle.noBackground
icon.source: AppIcons.calendarPlus
KeyNavigation.left: calendarPlusButton
KeyNavigation.right: calendarPlusButton
KeyNavigation.up: shareNetworkButton
KeyNavigation.down: joinButton
onClicked: {
mainItem.selectedConference.core.exportConferenceToICS()
}
}
}
}
Section {
@ -854,7 +859,8 @@ AbstractMainPage {
Layout.fillWidth: true
Layout.fillHeight: true
Layout.maximumHeight: participantList.contentHeight + Utils.getSizeWithScreenRatio(1) + spacing
content: RowLayout {
content:
RowLayout {
width: Utils.getSizeWithScreenRatio(393)
spacing: Utils.getSizeWithScreenRatio(8)
EffectImage {
@ -870,6 +876,7 @@ AbstractMainPage {
// Layout.preferredHeight: contentHeight
Layout.fillWidth: true
Layout.fillHeight: true
height: contentHeight
model: mainItem.selectedConference && mainItem.selectedConference.core ? mainItem.selectedConference.core.participants : []
clip: true
Control.ScrollBar.vertical: ScrollBar {
@ -934,5 +941,6 @@ AbstractMainPage {
}
}
}
}
}