From 15d33a7585ca1957d35ce476572c9cf40ab2c1bb Mon Sep 17 00:00:00 2001 From: Julien Wadel Date: Fri, 17 Jun 2022 20:46:27 +0200 Subject: [PATCH] Rework ics invitation in chat. Remove edit button if not organizer (= not admin). Add count in translation. --- .../assets/images/calendar_custom.svg | 69 ++++ linphone-app/assets/languages/da.ts | 44 ++- linphone-app/assets/languages/de.ts | 44 ++- linphone-app/assets/languages/en.ts | 74 +++-- linphone-app/assets/languages/es.ts | 44 ++- linphone-app/assets/languages/fr_FR.ts | 44 ++- linphone-app/assets/languages/hu.ts | 43 ++- linphone-app/assets/languages/it.ts | 44 ++- linphone-app/assets/languages/ja.ts | 43 ++- linphone-app/assets/languages/lt.ts | 45 ++- linphone-app/assets/languages/pt_BR.ts | 44 ++- linphone-app/assets/languages/ru.ts | 45 ++- linphone-app/assets/languages/sv.ts | 44 ++- linphone-app/assets/languages/tr.ts | 43 ++- linphone-app/assets/languages/uk.ts | 45 ++- linphone-app/assets/languages/zh_CN.ts | 43 ++- linphone-app/resources.qrc | 2 + .../conferenceInfo/ConferenceInfoModel.cpp | 4 + .../conferenceInfo/ConferenceInfoModel.hpp | 1 + .../Common/Form/Fields/TextAreaField.qml | 1 + .../Linphone/Chat/ChatCalendarMessage.qml | 4 +- .../Chat/ChatConferenceInvitationMessage.qml | 294 ++++++++++++++++++ .../ui/modules/Linphone/Chat/ChatContent.qml | 2 +- .../Styles/Chat/ChatCalendarMessageStyle.qml | 10 +- linphone-app/ui/modules/Linphone/qmldir | 1 + linphone-app/ui/scripts/Utils/utils.js | 28 +- linphone-sdk | 2 +- 27 files changed, 937 insertions(+), 170 deletions(-) create mode 100644 linphone-app/assets/images/calendar_custom.svg create mode 100644 linphone-app/ui/modules/Linphone/Chat/ChatConferenceInvitationMessage.qml diff --git a/linphone-app/assets/images/calendar_custom.svg b/linphone-app/assets/images/calendar_custom.svg new file mode 100644 index 000000000..7edbc8f47 --- /dev/null +++ b/linphone-app/assets/images/calendar_custom.svg @@ -0,0 +1,69 @@ + + + + + + + + + diff --git a/linphone-app/assets/languages/da.ts b/linphone-app/assets/languages/da.ts index fcf3040a7..8daf71430 100644 --- a/linphone-app/assets/languages/da.ts +++ b/linphone-app/assets/languages/da.ts @@ -516,11 +516,37 @@ Server url ikke konfigureret. 'Join' : Action button to join the conference. + + + ChatConferenceInvitationMessage - icsDuration - 'Duration' : label for duration + icsDescription + 'Description' : Title for the conference description. + + icsconferenceAddressTitle + 'Conference address' : Title for the conference address. + + + + icsJoinButton + 'Join' : Action button to join the conference. + + + + icsMeetingInvite + 'Meeting invite' : ICS title that is an invitation. + + + + icsParticipants + '%1 participant' : number(=%1) of participant. + + + + + ChatDeliveries @@ -4321,7 +4347,7 @@ Klik her: <a href="%1">%1</a> formatYears - 'year' + '%1 year' @@ -4329,7 +4355,7 @@ Klik her: <a href="%1">%1</a> formatMonths - 'month' + '%1 month' @@ -4337,7 +4363,7 @@ Klik her: <a href="%1">%1</a> formatWeeks - 'week' + '%1 week' @@ -4345,7 +4371,7 @@ Klik her: <a href="%1">%1</a> formatDays - 'day' + '%1 day' @@ -4353,7 +4379,7 @@ Klik her: <a href="%1">%1</a> formatHours - 'hour' + '%1 hour' @@ -4361,7 +4387,7 @@ Klik her: <a href="%1">%1</a> formatMinutes - 'minute' + '%1 minute' @@ -4369,7 +4395,7 @@ Klik her: <a href="%1">%1</a> formatSeconds - 'second' + '%1 second' diff --git a/linphone-app/assets/languages/de.ts b/linphone-app/assets/languages/de.ts index 342a9242b..d9a1d0c61 100644 --- a/linphone-app/assets/languages/de.ts +++ b/linphone-app/assets/languages/de.ts @@ -516,11 +516,37 @@ Server URL ist nicht konfiguriert. 'Join' : Action button to join the conference. + + + ChatConferenceInvitationMessage - icsDuration - 'Duration' : label for duration + icsDescription + 'Description' : Title for the conference description. + + icsconferenceAddressTitle + 'Conference address' : Title for the conference address. + + + + icsJoinButton + 'Join' : Action button to join the conference. + + + + icsMeetingInvite + 'Meeting invite' : ICS title that is an invitation. + + + + icsParticipants + '%1 participant' : number(=%1) of participant. + + + + + ChatDeliveries @@ -4321,7 +4347,7 @@ Klicken Sie hier: <a href="%1">%1</a> formatYears - 'year' + '%1 year' @@ -4329,7 +4355,7 @@ Klicken Sie hier: <a href="%1">%1</a> formatMonths - 'month' + '%1 month' @@ -4337,7 +4363,7 @@ Klicken Sie hier: <a href="%1">%1</a> formatWeeks - 'week' + '%1 week' @@ -4345,7 +4371,7 @@ Klicken Sie hier: <a href="%1">%1</a> formatDays - 'day' + '%1 day' @@ -4353,7 +4379,7 @@ Klicken Sie hier: <a href="%1">%1</a> formatHours - 'hour' + '%1 hour' @@ -4361,7 +4387,7 @@ Klicken Sie hier: <a href="%1">%1</a> formatMinutes - 'minute' + '%1 minute' @@ -4369,7 +4395,7 @@ Klicken Sie hier: <a href="%1">%1</a> formatSeconds - 'second' + '%1 second' diff --git a/linphone-app/assets/languages/en.ts b/linphone-app/assets/languages/en.ts index 8fc8ad56a..277fc1dda 100644 --- a/linphone-app/assets/languages/en.ts +++ b/linphone-app/assets/languages/en.ts @@ -516,10 +516,36 @@ Server URL not configured. 'Join' : Action button to join the conference. Join + + + ChatConferenceInvitationMessage - icsDuration - 'Duration' : label for duration - Duration + icsDescription + 'Description' : Title for the conference description. + Description + + + icsconferenceAddressTitle + 'Conference address' : Title for the conference address. + Conference address + + + icsJoinButton + 'Join' : Action button to join the conference. + Join + + + icsMeetingInvite + 'Meeting invite' : ICS title that is an invitation. + Meeting invite + + + icsParticipants + '%1 participant' : number(=%1) of participant. + + %1 participant + %1 participants + @@ -4344,58 +4370,58 @@ Click here: <a href="%1">%1</a> formatYears - 'year' + '%1 year' - year - years + %1 year + %1 years formatMonths - 'month' + '%1 month' - month - months + %1 month + %1 months formatWeeks - 'week' + '%1 week' - week - weeks + %1 week + %1 weeks formatDays - 'day' + '%1 day' - day - days + %1 day + %1 days formatHours - 'hour' + '%1 hour' - hour - hours + %1 hour + %1 hours formatMinutes - 'minute' + '%1 minute' - minute - minutes + %1 minute + %1 minutes formatSeconds - 'second' + '%1 second' - second - seconds + %1 second + %1 seconds diff --git a/linphone-app/assets/languages/es.ts b/linphone-app/assets/languages/es.ts index 960c0c7d2..3b6e37899 100644 --- a/linphone-app/assets/languages/es.ts +++ b/linphone-app/assets/languages/es.ts @@ -516,11 +516,37 @@ URL del servidor no configurada. 'Join' : Action button to join the conference. + + + ChatConferenceInvitationMessage - icsDuration - 'Duration' : label for duration + icsDescription + 'Description' : Title for the conference description. + + icsconferenceAddressTitle + 'Conference address' : Title for the conference address. + + + + icsJoinButton + 'Join' : Action button to join the conference. + + + + icsMeetingInvite + 'Meeting invite' : ICS title that is an invitation. + + + + icsParticipants + '%1 participant' : number(=%1) of participant. + + + + + ChatDeliveries @@ -4321,7 +4347,7 @@ Haga clic aquí: <a href="%1">%1 </a> formatYears - 'year' + '%1 year' @@ -4329,7 +4355,7 @@ Haga clic aquí: <a href="%1">%1 </a> formatMonths - 'month' + '%1 month' @@ -4337,7 +4363,7 @@ Haga clic aquí: <a href="%1">%1 </a> formatWeeks - 'week' + '%1 week' @@ -4345,7 +4371,7 @@ Haga clic aquí: <a href="%1">%1 </a> formatDays - 'day' + '%1 day' @@ -4353,7 +4379,7 @@ Haga clic aquí: <a href="%1">%1 </a> formatHours - 'hour' + '%1 hour' @@ -4361,7 +4387,7 @@ Haga clic aquí: <a href="%1">%1 </a> formatMinutes - 'minute' + '%1 minute' @@ -4369,7 +4395,7 @@ Haga clic aquí: <a href="%1">%1 </a> formatSeconds - 'second' + '%1 second' diff --git a/linphone-app/assets/languages/fr_FR.ts b/linphone-app/assets/languages/fr_FR.ts index c9e9cb101..0cd16ef64 100644 --- a/linphone-app/assets/languages/fr_FR.ts +++ b/linphone-app/assets/languages/fr_FR.ts @@ -516,11 +516,37 @@ URL du serveur non configurée. 'Join' : Action button to join the conference. + + + ChatConferenceInvitationMessage - icsDuration - 'Duration' : label for duration + icsDescription + 'Description' : Title for the conference description. + + icsconferenceAddressTitle + 'Conference address' : Title for the conference address. + + + + icsJoinButton + 'Join' : Action button to join the conference. + + + + icsMeetingInvite + 'Meeting invite' : ICS title that is an invitation. + + + + icsParticipants + '%1 participant' : number(=%1) of participant. + + + + + ChatDeliveries @@ -4321,7 +4347,7 @@ Cliquez ici : <a href="%1">%1</a> formatYears - 'year' + '%1 year' @@ -4329,7 +4355,7 @@ Cliquez ici : <a href="%1">%1</a> formatMonths - 'month' + '%1 month' @@ -4337,7 +4363,7 @@ Cliquez ici : <a href="%1">%1</a> formatWeeks - 'week' + '%1 week' @@ -4345,7 +4371,7 @@ Cliquez ici : <a href="%1">%1</a> formatDays - 'day' + '%1 day' @@ -4353,7 +4379,7 @@ Cliquez ici : <a href="%1">%1</a> formatHours - 'hour' + '%1 hour' @@ -4361,7 +4387,7 @@ Cliquez ici : <a href="%1">%1</a> formatMinutes - 'minute' + '%1 minute' @@ -4369,7 +4395,7 @@ Cliquez ici : <a href="%1">%1</a> formatSeconds - 'second' + '%1 second' diff --git a/linphone-app/assets/languages/hu.ts b/linphone-app/assets/languages/hu.ts index 2b2754ee6..e8b4c76fe 100644 --- a/linphone-app/assets/languages/hu.ts +++ b/linphone-app/assets/languages/hu.ts @@ -515,11 +515,36 @@ A kiszolgáló URL-je nincs konfigurálva. 'Join' : Action button to join the conference. + + + ChatConferenceInvitationMessage - icsDuration - 'Duration' : label for duration + icsDescription + 'Description' : Title for the conference description. + + icsconferenceAddressTitle + 'Conference address' : Title for the conference address. + + + + icsJoinButton + 'Join' : Action button to join the conference. + + + + icsMeetingInvite + 'Meeting invite' : ICS title that is an invitation. + + + + icsParticipants + '%1 participant' : number(=%1) of participant. + + + + ChatDeliveries @@ -4309,49 +4334,49 @@ Kattintson ide: <a href="%1">%1</a> formatYears - 'year' + '%1 year' formatMonths - 'month' + '%1 month' formatWeeks - 'week' + '%1 week' formatDays - 'day' + '%1 day' formatHours - 'hour' + '%1 hour' formatMinutes - 'minute' + '%1 minute' formatSeconds - 'second' + '%1 second' diff --git a/linphone-app/assets/languages/it.ts b/linphone-app/assets/languages/it.ts index 9092d1e59..255f3d604 100644 --- a/linphone-app/assets/languages/it.ts +++ b/linphone-app/assets/languages/it.ts @@ -516,11 +516,37 @@ URL del server non configurato. 'Join' : Action button to join the conference. Partecipa + + + ChatConferenceInvitationMessage - icsDuration - 'Duration' : label for duration + icsDescription + 'Description' : Title for the conference description. + Descrizione + + + icsconferenceAddressTitle + 'Conference address' : Title for the conference address. + Indirizzo conferenza + + + icsJoinButton + 'Join' : Action button to join the conference. + Partecipa + + + icsMeetingInvite + 'Meeting invite' : ICS title that is an invitation. + + icsParticipants + '%1 participant' : number(=%1) of participant. + + + + + ChatDeliveries @@ -4321,7 +4347,7 @@ Clicca: <a href="%1">%1</a> formatYears - 'year' + '%1 year' @@ -4329,7 +4355,7 @@ Clicca: <a href="%1">%1</a> formatMonths - 'month' + '%1 month' @@ -4337,7 +4363,7 @@ Clicca: <a href="%1">%1</a> formatWeeks - 'week' + '%1 week' @@ -4345,7 +4371,7 @@ Clicca: <a href="%1">%1</a> formatDays - 'day' + '%1 day' @@ -4353,7 +4379,7 @@ Clicca: <a href="%1">%1</a> formatHours - 'hour' + '%1 hour' @@ -4361,7 +4387,7 @@ Clicca: <a href="%1">%1</a> formatMinutes - 'minute' + '%1 minute' @@ -4369,7 +4395,7 @@ Clicca: <a href="%1">%1</a> formatSeconds - 'second' + '%1 second' diff --git a/linphone-app/assets/languages/ja.ts b/linphone-app/assets/languages/ja.ts index 7b2d843d5..a23119b7b 100644 --- a/linphone-app/assets/languages/ja.ts +++ b/linphone-app/assets/languages/ja.ts @@ -515,11 +515,36 @@ 'Join' : Action button to join the conference. + + + ChatConferenceInvitationMessage - icsDuration - 'Duration' : label for duration + icsDescription + 'Description' : Title for the conference description. + + icsconferenceAddressTitle + 'Conference address' : Title for the conference address. + + + + icsJoinButton + 'Join' : Action button to join the conference. + + + + icsMeetingInvite + 'Meeting invite' : ICS title that is an invitation. + + + + icsParticipants + '%1 participant' : number(=%1) of participant. + + + + ChatDeliveries @@ -4309,49 +4334,49 @@ formatYears - 'year' + '%1 year' formatMonths - 'month' + '%1 month' formatWeeks - 'week' + '%1 week' formatDays - 'day' + '%1 day' formatHours - 'hour' + '%1 hour' formatMinutes - 'minute' + '%1 minute' formatSeconds - 'second' + '%1 second' diff --git a/linphone-app/assets/languages/lt.ts b/linphone-app/assets/languages/lt.ts index 9a5d70e84..4b6f90273 100644 --- a/linphone-app/assets/languages/lt.ts +++ b/linphone-app/assets/languages/lt.ts @@ -517,11 +517,38 @@ Nesukonfigūruotas serverio url. 'Join' : Action button to join the conference. + + + ChatConferenceInvitationMessage - icsDuration - 'Duration' : label for duration + icsDescription + 'Description' : Title for the conference description. + + icsconferenceAddressTitle + 'Conference address' : Title for the conference address. + + + + icsJoinButton + 'Join' : Action button to join the conference. + + + + icsMeetingInvite + 'Meeting invite' : ICS title that is an invitation. + + + + icsParticipants + '%1 participant' : number(=%1) of participant. + + + + + + ChatDeliveries @@ -4333,7 +4360,7 @@ Spustelėkite čia: <a href="%1">%1</a> formatYears - 'year' + '%1 year' @@ -4342,7 +4369,7 @@ Spustelėkite čia: <a href="%1">%1</a> formatMonths - 'month' + '%1 month' @@ -4351,7 +4378,7 @@ Spustelėkite čia: <a href="%1">%1</a> formatWeeks - 'week' + '%1 week' @@ -4360,7 +4387,7 @@ Spustelėkite čia: <a href="%1">%1</a> formatDays - 'day' + '%1 day' @@ -4369,7 +4396,7 @@ Spustelėkite čia: <a href="%1">%1</a> formatHours - 'hour' + '%1 hour' @@ -4378,7 +4405,7 @@ Spustelėkite čia: <a href="%1">%1</a> formatMinutes - 'minute' + '%1 minute' @@ -4387,7 +4414,7 @@ Spustelėkite čia: <a href="%1">%1</a> formatSeconds - 'second' + '%1 second' diff --git a/linphone-app/assets/languages/pt_BR.ts b/linphone-app/assets/languages/pt_BR.ts index 7109a7db3..856ae5aec 100644 --- a/linphone-app/assets/languages/pt_BR.ts +++ b/linphone-app/assets/languages/pt_BR.ts @@ -516,11 +516,37 @@ URL do servidor não configurado. 'Join' : Action button to join the conference. + + + ChatConferenceInvitationMessage - icsDuration - 'Duration' : label for duration + icsDescription + 'Description' : Title for the conference description. + + icsconferenceAddressTitle + 'Conference address' : Title for the conference address. + + + + icsJoinButton + 'Join' : Action button to join the conference. + + + + icsMeetingInvite + 'Meeting invite' : ICS title that is an invitation. + + + + icsParticipants + '%1 participant' : number(=%1) of participant. + + + + + ChatDeliveries @@ -4321,7 +4347,7 @@ Clique aqui: <a href="%1">%1 </a> formatYears - 'year' + '%1 year' @@ -4329,7 +4355,7 @@ Clique aqui: <a href="%1">%1 </a> formatMonths - 'month' + '%1 month' @@ -4337,7 +4363,7 @@ Clique aqui: <a href="%1">%1 </a> formatWeeks - 'week' + '%1 week' @@ -4345,7 +4371,7 @@ Clique aqui: <a href="%1">%1 </a> formatDays - 'day' + '%1 day' @@ -4353,7 +4379,7 @@ Clique aqui: <a href="%1">%1 </a> formatHours - 'hour' + '%1 hour' @@ -4361,7 +4387,7 @@ Clique aqui: <a href="%1">%1 </a> formatMinutes - 'minute' + '%1 minute' @@ -4369,7 +4395,7 @@ Clique aqui: <a href="%1">%1 </a> formatSeconds - 'second' + '%1 second' diff --git a/linphone-app/assets/languages/ru.ts b/linphone-app/assets/languages/ru.ts index 8f62773bc..4034d822a 100644 --- a/linphone-app/assets/languages/ru.ts +++ b/linphone-app/assets/languages/ru.ts @@ -517,11 +517,38 @@ 'Join' : Action button to join the conference. Присоединиться + + + ChatConferenceInvitationMessage - icsDuration - 'Duration' : label for duration + icsDescription + 'Description' : Title for the conference description. + Описание + + + icsconferenceAddressTitle + 'Conference address' : Title for the conference address. + Адрес конференции + + + icsJoinButton + 'Join' : Action button to join the conference. + Присоединиться + + + icsMeetingInvite + 'Meeting invite' : ICS title that is an invitation. + + icsParticipants + '%1 participant' : number(=%1) of participant. + + + + + + ChatDeliveries @@ -4333,7 +4360,7 @@ formatYears - 'year' + '%1 year' @@ -4342,7 +4369,7 @@ formatMonths - 'month' + '%1 month' @@ -4351,7 +4378,7 @@ formatWeeks - 'week' + '%1 week' @@ -4360,7 +4387,7 @@ formatDays - 'day' + '%1 day' @@ -4369,7 +4396,7 @@ formatHours - 'hour' + '%1 hour' @@ -4378,7 +4405,7 @@ formatMinutes - 'minute' + '%1 minute' @@ -4387,7 +4414,7 @@ formatSeconds - 'second' + '%1 second' diff --git a/linphone-app/assets/languages/sv.ts b/linphone-app/assets/languages/sv.ts index 94ed58520..1911d1dd0 100644 --- a/linphone-app/assets/languages/sv.ts +++ b/linphone-app/assets/languages/sv.ts @@ -516,11 +516,37 @@ Serverwebbadressen är inte konfigurerad. 'Join' : Action button to join the conference. + + + ChatConferenceInvitationMessage - icsDuration - 'Duration' : label for duration + icsDescription + 'Description' : Title for the conference description. + + icsconferenceAddressTitle + 'Conference address' : Title for the conference address. + + + + icsJoinButton + 'Join' : Action button to join the conference. + + + + icsMeetingInvite + 'Meeting invite' : ICS title that is an invitation. + + + + icsParticipants + '%1 participant' : number(=%1) of participant. + + + + + ChatDeliveries @@ -4321,7 +4347,7 @@ Klicka här: <a href="%1">%1</a> formatYears - 'year' + '%1 year' @@ -4329,7 +4355,7 @@ Klicka här: <a href="%1">%1</a> formatMonths - 'month' + '%1 month' @@ -4337,7 +4363,7 @@ Klicka här: <a href="%1">%1</a> formatWeeks - 'week' + '%1 week' @@ -4345,7 +4371,7 @@ Klicka här: <a href="%1">%1</a> formatDays - 'day' + '%1 day' @@ -4353,7 +4379,7 @@ Klicka här: <a href="%1">%1</a> formatHours - 'hour' + '%1 hour' @@ -4361,7 +4387,7 @@ Klicka här: <a href="%1">%1</a> formatMinutes - 'minute' + '%1 minute' @@ -4369,7 +4395,7 @@ Klicka här: <a href="%1">%1</a> formatSeconds - 'second' + '%1 second' diff --git a/linphone-app/assets/languages/tr.ts b/linphone-app/assets/languages/tr.ts index d4c2fc72f..585c30e16 100644 --- a/linphone-app/assets/languages/tr.ts +++ b/linphone-app/assets/languages/tr.ts @@ -515,11 +515,36 @@ Sunucu url'si yapılandırılmadı. 'Join' : Action button to join the conference. + + + ChatConferenceInvitationMessage - icsDuration - 'Duration' : label for duration + icsDescription + 'Description' : Title for the conference description. + + icsconferenceAddressTitle + 'Conference address' : Title for the conference address. + + + + icsJoinButton + 'Join' : Action button to join the conference. + + + + icsMeetingInvite + 'Meeting invite' : ICS title that is an invitation. + + + + icsParticipants + '%1 participant' : number(=%1) of participant. + + + + ChatDeliveries @@ -4309,49 +4334,49 @@ Buraya tıklayın: <a href="%1">%1</a> formatYears - 'year' + '%1 year' formatMonths - 'month' + '%1 month' formatWeeks - 'week' + '%1 week' formatDays - 'day' + '%1 day' formatHours - 'hour' + '%1 hour' formatMinutes - 'minute' + '%1 minute' formatSeconds - 'second' + '%1 second' diff --git a/linphone-app/assets/languages/uk.ts b/linphone-app/assets/languages/uk.ts index 2dc8b69d6..27537c83e 100644 --- a/linphone-app/assets/languages/uk.ts +++ b/linphone-app/assets/languages/uk.ts @@ -517,11 +517,38 @@ 'Join' : Action button to join the conference. + + + ChatConferenceInvitationMessage - icsDuration - 'Duration' : label for duration + icsDescription + 'Description' : Title for the conference description. + + icsconferenceAddressTitle + 'Conference address' : Title for the conference address. + + + + icsJoinButton + 'Join' : Action button to join the conference. + + + + icsMeetingInvite + 'Meeting invite' : ICS title that is an invitation. + + + + icsParticipants + '%1 participant' : number(=%1) of participant. + + + + + + ChatDeliveries @@ -4333,7 +4360,7 @@ formatYears - 'year' + '%1 year' @@ -4342,7 +4369,7 @@ formatMonths - 'month' + '%1 month' @@ -4351,7 +4378,7 @@ formatWeeks - 'week' + '%1 week' @@ -4360,7 +4387,7 @@ formatDays - 'day' + '%1 day' @@ -4369,7 +4396,7 @@ formatHours - 'hour' + '%1 hour' @@ -4378,7 +4405,7 @@ formatMinutes - 'minute' + '%1 minute' @@ -4387,7 +4414,7 @@ formatSeconds - 'second' + '%1 second' diff --git a/linphone-app/assets/languages/zh_CN.ts b/linphone-app/assets/languages/zh_CN.ts index 43317ec94..4bc256c3e 100644 --- a/linphone-app/assets/languages/zh_CN.ts +++ b/linphone-app/assets/languages/zh_CN.ts @@ -515,11 +515,36 @@ 'Join' : Action button to join the conference. + + + ChatConferenceInvitationMessage - icsDuration - 'Duration' : label for duration + icsDescription + 'Description' : Title for the conference description. + + icsconferenceAddressTitle + 'Conference address' : Title for the conference address. + + + + icsJoinButton + 'Join' : Action button to join the conference. + + + + icsMeetingInvite + 'Meeting invite' : ICS title that is an invitation. + + + + icsParticipants + '%1 participant' : number(=%1) of participant. + + + + ChatDeliveries @@ -4309,49 +4334,49 @@ formatYears - 'year' + '%1 year' formatMonths - 'month' + '%1 month' formatWeeks - 'week' + '%1 week' formatDays - 'day' + '%1 day' formatHours - 'hour' + '%1 hour' formatMinutes - 'minute' + '%1 minute' formatSeconds - 'second' + '%1 second' diff --git a/linphone-app/resources.qrc b/linphone-app/resources.qrc index 0ef6bd957..a12958040 100644 --- a/linphone-app/resources.qrc +++ b/linphone-app/resources.qrc @@ -15,6 +15,7 @@ assets/images/auto_answer_custom.svg assets/images/back_custom.svg assets/images/burger_menu_custom.svg + assets/images/calendar_custom.svg assets/images/calendar_participants_custom.svg assets/images/call_accept_custom.svg assets/images/call_chat_secure_custom.svg @@ -314,6 +315,7 @@ ui/modules/Linphone/Chat/ChatAudioMessage.qml ui/modules/Linphone/Chat/ChatAudioPreview.qml ui/modules/Linphone/Chat/ChatCalendarMessage.qml + ui/modules/Linphone/Chat/ChatConferenceInvitationMessage.qml ui/modules/Linphone/Chat/ChatFileMessage.qml ui/modules/Linphone/Chat/ChatFilePreview.qml ui/modules/Linphone/Chat/ChatForwardMessage.qml diff --git a/linphone-app/src/components/conferenceInfo/ConferenceInfoModel.cpp b/linphone-app/src/components/conferenceInfo/ConferenceInfoModel.cpp index b60794fdb..e0bf7b01a 100644 --- a/linphone-app/src/components/conferenceInfo/ConferenceInfoModel.cpp +++ b/linphone-app/src/components/conferenceInfo/ConferenceInfoModel.cpp @@ -172,6 +172,10 @@ QVariantList ConferenceInfoModel::getParticipants() const{ return addresses; } +int ConferenceInfoModel::getParticipantCount()const{ + return mConferenceInfo->getParticipants().size(); +} + TimeZoneModel* ConferenceInfoModel::getTimeZoneModel() const{ TimeZoneModel * model = new TimeZoneModel(mTimeZone); App::getInstance()->getEngine()->setObjectOwnership(model, QQmlEngine::JavaScriptOwnership); diff --git a/linphone-app/src/components/conferenceInfo/ConferenceInfoModel.hpp b/linphone-app/src/components/conferenceInfo/ConferenceInfoModel.hpp index 2f45c9637..a419aae4a 100644 --- a/linphone-app/src/components/conferenceInfo/ConferenceInfoModel.hpp +++ b/linphone-app/src/components/conferenceInfo/ConferenceInfoModel.hpp @@ -65,6 +65,7 @@ public: QString getUri() const; bool isScheduled() const; Q_INVOKABLE QVariantList getParticipants() const; + Q_INVOKABLE int getParticipantCount()const; Q_INVOKABLE TimeZoneModel* getTimeZoneModel() const; void setDateTime(const QDateTime& dateTime); diff --git a/linphone-app/ui/modules/Common/Form/Fields/TextAreaField.qml b/linphone-app/ui/modules/Common/Form/Fields/TextAreaField.qml index c5544a4cd..f872e70ba 100644 --- a/linphone-app/ui/modules/Common/Form/Fields/TextAreaField.qml +++ b/linphone-app/ui/modules/Common/Form/Fields/TextAreaField.qml @@ -16,6 +16,7 @@ Rectangle { property alias textColor: textArea.color property alias readOnly: textArea.readOnly property int padding: TextAreaFieldStyle.text.padding + property alias implicitHeight: flickable.contentHeight height: TextAreaFieldStyle.background.height width: TextAreaFieldStyle.background.width diff --git a/linphone-app/ui/modules/Linphone/Chat/ChatCalendarMessage.qml b/linphone-app/ui/modules/Linphone/Chat/ChatCalendarMessage.qml index 0777d1cac..cc4159ee0 100644 --- a/linphone-app/ui/modules/Linphone/Chat/ChatCalendarMessage.qml +++ b/linphone-app/ui/modules/Linphone/Chat/ChatCalendarMessage.qml @@ -92,8 +92,7 @@ Loader{ elide: Text.ElideRight font.pointSize: ChatCalendarMessageStyle.schedule.pointSize text: Qt.formatDateTime(mainItem.conferenceInfoModel.dateTime, 'hh:mm') - //: 'Duration' : label for duration - + (mainItem.conferenceInfoModel.duration > 0 ? ' ('+qsTr('icsDuration')+' ' +Utils.formatDuration(mainItem.conferenceInfoModel.duration * 60) + ')' + + (mainItem.conferenceInfoModel.duration > 0 ? ' (' +Utils.formatDuration(mainItem.conferenceInfoModel.duration * 60) + ')' : '') } } @@ -272,6 +271,7 @@ Loader{ isCustom: true colorSet: ChatCalendarMessageStyle.editButton backgroundRadius: width/2 + visible: UtilsCpp.isMe(mainItem.conferenceInfoModel.organizer) onClicked: { window.detachVirtualWindow() window.attachVirtualWindow(Utils.buildAppDialogUri('NewConference') diff --git a/linphone-app/ui/modules/Linphone/Chat/ChatConferenceInvitationMessage.qml b/linphone-app/ui/modules/Linphone/Chat/ChatConferenceInvitationMessage.qml new file mode 100644 index 000000000..2970710fb --- /dev/null +++ b/linphone-app/ui/modules/Linphone/Chat/ChatConferenceInvitationMessage.qml @@ -0,0 +1,294 @@ +import QtQuick 2.7 +import QtQuick.Layouts 1.3 + +import Clipboard 1.0 +import App 1.0 +import Common 1.0 +import Linphone 1.0 + +import Common.Styles 1.0 +import Linphone.Styles 1.0 +import TextToSpeech 1.0 +import Utils 1.0 +import Units 1.0 +import UtilsCpp 1.0 +import LinphoneEnums 1.0 + +import ColorsList 1.0 + +import 'Message.js' as Logic +import 'qrc:/ui/scripts/Utils/utils.js' as Utils + +// ============================================================================= + +Loader{ + id: mainItem + property ContentModel contentModel + property ConferenceInfoModel conferenceInfoModel: contentModel ? contentModel.conferenceInfoModel : null + property int maxWidth : parent.width + property int fitHeight: active && item ? item.fitHeight + ChatCalendarMessageStyle.topMargin+ChatCalendarMessageStyle.bottomMargin + (isExpanded? 200 : 0): 0 + property int fitWidth: active && item ? item.fitWidth + ChatCalendarMessageStyle.widthMargin*2 : 0 + property bool containsMouse: false + property int gotoButtonMode: -1 //-1: hide, 0:goto, 1:MoreInfo + property bool isExpanded : false + + signal expandToggle() + signal conferenceUriCopied() + + width: parent.width + height: parent.height + + property font customFont : SettingsModel.textMessageFont + active: mainItem.conferenceInfoModel + + sourceComponent: MouseArea{ + id: loadedItem + property int fitHeight: layout.fitHeight + ChatCalendarMessageStyle.topMargin+ChatCalendarMessageStyle.bottomMargin + property int fitWidth: layout.fitWidth + ChatCalendarMessageStyle.leftMargin+ChatCalendarMessageStyle.rightMargin + + anchors.fill: parent + anchors.leftMargin: ChatCalendarMessageStyle.widthMargin + anchors.rightMargin: ChatCalendarMessageStyle.widthMargin + anchors.topMargin: ChatCalendarMessageStyle.topMargin + anchors.bottomMargin: ChatCalendarMessageStyle.bottomMargin + + clip: false + + hoverEnabled: true + onClicked: CallsListModel.prepareConferenceCall(mainItem.conferenceInfoModel) + onHoveredChanged: mainItem.containsMouse = loadedItem.containsMouse + + ColumnLayout{ + id: layout + property int fitHeight: Layout.minimumHeight + (description.visible?description.implicitHeight + 5: 0) + property int fitWidth: (editButton.visible?editButton.width:0) + copyButton.width + joinButton.width + linkTitle.implicitWidth + anchors.fill: parent + spacing: 0 + Text{ + Layout.fillWidth: true + Layout.topMargin: 10 + Layout.leftMargin: 10 + Layout.alignment: Qt.AlignRight + elide: Text.ElideRight + color: ChatCalendarMessageStyle.subject.color + font.pointSize: ChatCalendarMessageStyle.subject.pointSize + //: 'Meeting invite' : ICS title that is an invitation. + text: qsTr('icsMeetingInvite') +': ' + UtilsCpp.getDisplayName(mainItem.conferenceInfoModel.organizer) + } + Text{ + id: title + Layout.fillWidth: true + Layout.leftMargin: 10 + Layout.alignment: Qt.AlignRight + elide: Text.ElideRight + color: ChatCalendarMessageStyle.subject.color + font.pointSize: ChatCalendarMessageStyle.subject.pointSize + font.weight: Font.Bold + text: mainItem.conferenceInfoModel.subject + } + RowLayout { + id: participantsRow + Layout.fillWidth: true + Layout.preferredHeight: ChatCalendarMessageStyle.participants.iconSize + Layout.leftMargin: 5 + Layout.rightMargin: 15 + + spacing: ChatCalendarMessageStyle.participants.spacing + + Icon{ + icon: ChatCalendarMessageStyle.participants.icon + iconSize: ChatCalendarMessageStyle.participants.iconSize + overwriteColor: ChatCalendarMessageStyle.participants.color + } + + Text { + id: participantsList + property int participantCount: mainItem.conferenceInfoModel.getParticipantCount() + Layout.fillWidth: true + color: ChatCalendarMessageStyle.participants.color + elide: Text.ElideRight + font.pointSize: ChatCalendarMessageStyle.participants.pointSize + //: '%1 participant' : number(=%1) of participant. + text: qsTr('icsParticipants', '', participantCount).arg(participantCount) + } + } + + RowLayout { + id: dateRow + Layout.fillWidth: true + Layout.preferredHeight: ChatCalendarMessageStyle.calendar.iconSize + Layout.leftMargin: 5 + Layout.rightMargin: 15 + + spacing: ChatCalendarMessageStyle.calendar.spacing + + Icon{ + icon: ChatCalendarMessageStyle.calendar.icon + iconSize: ChatCalendarMessageStyle.calendar.iconSize + overwriteColor: ChatCalendarMessageStyle.calendar.color + } + + Text { + id: conferenceDate + Layout.fillWidth: true + Layout.minimumWidth: implicitWidth + verticalAlignment: Qt.AlignVCenter + color: ChatCalendarMessageStyle.schedule.color + elide: Text.ElideRight + font.pointSize: ChatCalendarMessageStyle.calendar.pointSize + text: Qt.formatDate(mainItem.conferenceInfoModel.dateTime, 'yyyy/MM/dd') + } + } + RowLayout { + id: conferenceTimeRow + Layout.fillWidth: true + Layout.preferredHeight: ChatCalendarMessageStyle.schedule.iconSize + Layout.leftMargin: 5 + Layout.rightMargin: 15 + + spacing: ChatCalendarMessageStyle.schedule.spacing + + Icon{ + icon: ChatCalendarMessageStyle.schedule.icon + iconSize: ChatCalendarMessageStyle.schedule.iconSize + overwriteColor: ChatCalendarMessageStyle.schedule.color + } + + Text { + id: conferenceTime + Layout.fillWidth: true + Layout.minimumWidth: implicitWidth + verticalAlignment: Qt.AlignVCenter + color: ChatCalendarMessageStyle.schedule.color + elide: Text.ElideRight + font.pointSize: ChatCalendarMessageStyle.schedule.pointSize + text: Qt.formatDateTime(mainItem.conferenceInfoModel.dateTime, 'hh:mm') + + (mainItem.conferenceInfoModel.duration > 0 ? ' ('+Utils.formatDuration(mainItem.conferenceInfoModel.duration * 60) + ')' + : '') + } + } + ColumnLayout{ + id: expandedDescription + Layout.fillWidth: true + Layout.fillHeight: true + Layout.topMargin: 5 + visible: mainItem.isExpanded + spacing: 0 + ScrollableListView{ + id: expandedParticipantsList + Layout.fillWidth: true + Layout.minimumHeight: Math.min( count * ChatCalendarMessageStyle.lineHeight, parent.height/(descriptionTitle.visible?3:2)) + Layout.leftMargin: 10 + spacing: 0 + visible: mainItem.isExpanded + onVisibleChanged: model= mainItem.conferenceInfoModel.getParticipants() + + delegate: Row{ + spacing: 5 + width: expandedParticipantsList.width + height: ChatCalendarMessageStyle.lineHeight + Text{text: modelData.displayName + color: ChatCalendarMessageStyle.description.color + font.pointSize: ChatCalendarMessageStyle.description.pointSize + elide: Text.ElideRight + wrapMode: TextEdit.WordWrap + } + Text{text: '('+modelData.address+')' + color: ChatCalendarMessageStyle.description.color + font.pointSize: ChatCalendarMessageStyle.description.pointSize + elide: Text.ElideRight + wrapMode: TextEdit.WordWrap + } + } + } + } + Text{ + id: descriptionTitle + Layout.fillWidth: true + Layout.leftMargin: 10 + Layout.topMargin: 5 + color: ChatCalendarMessageStyle.subject.color + font.pointSize: ChatCalendarMessageStyle.subject.pointSize + font.weight: Font.Bold + //: 'Description' : Title for the conference description. + text: qsTr('icsDescription') + visible: description.text != '' + } + TextAreaField{ + id: description + Layout.fillWidth: true + Layout.fillHeight: true + Layout.leftMargin: 10 + padding: 0 + color: 'transparent' + readOnly: true + textColor: ChatCalendarMessageStyle.description.color + font.pointSize: ChatCalendarMessageStyle.description.pointSize + border.width: 0 + visible: description.text != '' + + text: mainItem.conferenceInfoModel.description + } + Item{ + Layout.fillHeight: true + Layout.fillWidth: true + } + Text{ + id: linkTitle + Layout.fillWidth: true + Layout.leftMargin: 10 + color: ChatCalendarMessageStyle.subject.color + font.pointSize: ChatCalendarMessageStyle.subject.pointSize + font.weight: Font.Bold + + //: 'Conference address' : Title for the conference address. + text: qsTr('icsconferenceAddressTitle') + } + RowLayout{ + Layout.fillWidth: true + Layout.fillHeight: true + Layout.leftMargin: 10 + Layout.rightMargin: 10 + spacing: 10 + TextField{ + id: uriField + readOnly: true + Layout.fillWidth: true + textFieldStyle: TextFieldStyle.flatInverse + text: mainItem.conferenceInfoModel.uri + + } + ActionButton{ + id: copyButton + iconSize: uriField.height + isCustom: true + colorSet: ChatCalendarMessageStyle.copyLinkButton + backgroundRadius: width/2 + onClicked: { + Clipboard.text = uriField.text + mainItem.conferenceUriCopied() + } + } + TextButtonC{ + id: joinButton + //: 'Join' : Action button to join the conference. + text: qsTr('icsJoinButton').toUpperCase() + onClicked: CallsListModel.prepareConferenceCall(mainItem.conferenceInfoModel) + } + ActionButton{ + id: editButton + isCustom: true + colorSet: ChatCalendarMessageStyle.editButton + backgroundRadius: width/2 + visible: UtilsCpp.isMe(mainItem.conferenceInfoModel.organizer) + onClicked: { + window.detachVirtualWindow() + window.attachVirtualWindow(Utils.buildAppDialogUri('NewConference') + ,{conferenceInfoModel: mainItem.conferenceInfoModel}) + } + } + } + } + } +} + diff --git a/linphone-app/ui/modules/Linphone/Chat/ChatContent.qml b/linphone-app/ui/modules/Linphone/Chat/ChatContent.qml index bdc4d1e2e..a98d68372 100644 --- a/linphone-app/ui/modules/Linphone/Chat/ChatContent.qml +++ b/linphone-app/ui/modules/Linphone/Chat/ChatContent.qml @@ -38,7 +38,7 @@ Column{ property bool isOutgoing : contentModel && contentModel.chatMessageModel && (contentModel.chatMessageModel.isOutgoing || contentModel.chatMessageModel.state == LinphoneEnums.ChatMessageStateIdle); z: message.visible ? 0 : 1 - ChatCalendarMessage{ + ChatConferenceInvitationMessage{ id: calendarMessage contentModel: mainItem.contentModel width: parent.width diff --git a/linphone-app/ui/modules/Linphone/Styles/Chat/ChatCalendarMessageStyle.qml b/linphone-app/ui/modules/Linphone/Styles/Chat/ChatCalendarMessageStyle.qml index 93fb98d71..fdcef973b 100644 --- a/linphone-app/ui/modules/Linphone/Styles/Chat/ChatCalendarMessageStyle.qml +++ b/linphone-app/ui/modules/Linphone/Styles/Chat/ChatCalendarMessageStyle.qml @@ -39,9 +39,15 @@ QtObject { property color color: ColorsList.add(sectionName+'_conference_indicator', 'i').color property int width: 5 } - + property QtObject calendar: QtObject { + property int spacing: 5 + property int pointSize: Units.dp * 9 + property string icon : 'calendar_custom' + property int iconSize: 30 + property color color: ColorsList.add(sectionName+'_schedule', 'j').color + } property QtObject schedule: QtObject { - property int spacing: 0 + property int spacing: 5 property int pointSize: Units.dp * 9 property string icon : 'schedule_custom' property int iconSize: 30 diff --git a/linphone-app/ui/modules/Linphone/qmldir b/linphone-app/ui/modules/Linphone/qmldir index 3916fe6c8..5be907067 100644 --- a/linphone-app/ui/modules/Linphone/qmldir +++ b/linphone-app/ui/modules/Linphone/qmldir @@ -22,6 +22,7 @@ Chat 1.0 Chat/Chat.qml ChatAudioMessage 1.0 Chat/ChatAudioMessage.qml ChatAudioPreview 1.0 Chat/ChatAudioPreview.qml ChatCalendarMessage 1.0 Chat/ChatCalendarMessage.qml +ChatConferenceInvitationMessage 1.0 Chat/ChatConferenceInvitationMessage.qml ChatMessagePreview 1.0 Chat/ChatMessagePreview.qml ChatForwardMessage 1.0 Chat/ChatForwardMessage.qml ChatReplyMessage 1.0 Chat/ChatReplyMessage.qml diff --git a/linphone-app/ui/scripts/Utils/utils.js b/linphone-app/ui/scripts/Utils/utils.js index 4a9fcefc3..098a4b961 100644 --- a/linphone-app/ui/scripts/Utils/utils.js +++ b/linphone-app/ui/scripts/Utils/utils.js @@ -527,30 +527,30 @@ function formatDuration (seconds) { //1, 60, 3600, 86400, 604800, 2592000, 31104000 var y = Math.floor(seconds / 31104000) if(y > 0) - //: 'year' - return y+ ' '+qsTr('formatYears', '', y) + //: '%1 year' + return qsTr('formatYears', '', y).arg(y) var M = Math.floor(seconds / 2592000) if(M > 0) - //: 'month' - return M+' '+qsTr('formatMonths', '', M) + //: '%1 month' + return qsTr('formatMonths', '', M).arg(M) var w = Math.floor(seconds / 604800) if(w>0) - //: 'week' - return w+' '+qsTr('formatWeeks', '', w) + //: '%1 week' + return qsTr('formatWeeks', '', w).arg(w) var d = Math.floor(seconds / 86400) if(d>0) - //: 'day' - return d+' '+qsTr('formatDays', '', d) + //: '%1 day' + return qsTr('formatDays', '', d).arg(d) var h = Math.floor(seconds / 3600) var m = Math.floor((seconds - h * 3600) / 60) var s = seconds - h * 3600 - m * 60 - //: 'hour' - return (h > 0 ? h + qsTr('formatHours', '', h): '') - //: 'minute' - + (m > 0 ? (h > 0 ? ', ' : '') + m + qsTr('formatMinutes', '', m): '') - //: 'second' - + (s > 0 ? (h> 0 || m > 0 ? ', ' : '') +s + qsTr('formatSeconds', '', s): '') + //: '%1 hour' + return (h > 0 ? qsTr('formatHours', '', h).arg(h): '') + //: '%1 minute' + + (m > 0 ? (h > 0 ? ', ' : '') +qsTr('formatMinutes', '', m).arg(m): '') + //: '%1 second' + + (s > 0 ? (h> 0 || m > 0 ? ', ' : '') +qsTr('formatSeconds', '', s).arg(s): '') } function buildDate(date, time){ diff --git a/linphone-sdk b/linphone-sdk index 7e54d398f..baeed5ae0 160000 --- a/linphone-sdk +++ b/linphone-sdk @@ -1 +1 @@ -Subproject commit 7e54d398fa9f1648486386e66e2cc5c2984d19dd +Subproject commit baeed5ae055e519284f7314d3a9bace134c3ecb5