Cancellable ICS in meetings view.

This commit is contained in:
Julien Wadel 2022-09-26 20:09:43 +02:00
parent b080e56823
commit 10fc4e30ab
21 changed files with 134 additions and 6 deletions

View file

@ -564,6 +564,11 @@ Server url ikke konfigureret.</translation>
<extracomment>&apos;Do you really want do delete this meeting?&apos; : Warning message to confirm the deletion of a meeting.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>cancelConferenceInfo</source>
<extracomment>&apos;Do you really want do cancel this meeting?&apos; : Warning message to confirm the cancellation of a meeting.</extracomment>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ChatConferenceInvitationMessage</name>

View file

@ -564,6 +564,11 @@ Server URL ist nicht konfiguriert.</translation>
<extracomment>&apos;Do you really want do delete this meeting?&apos; : Warning message to confirm the deletion of a meeting.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>cancelConferenceInfo</source>
<extracomment>&apos;Do you really want do cancel this meeting?&apos; : Warning message to confirm the cancellation of a meeting.</extracomment>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ChatConferenceInvitationMessage</name>

View file

@ -564,6 +564,11 @@ Server URL not configured.</translation>
<extracomment>&apos;Do you really want do delete this meeting?&apos; : Warning message to confirm the deletion of a meeting.</extracomment>
<translation>Do you really want do delete this meeting?</translation>
</message>
<message>
<source>cancelConferenceInfo</source>
<extracomment>&apos;Do you really want do cancel this meeting?&apos; : Warning message to confirm the cancellation of a meeting.</extracomment>
<translation>Do you really want do cancel this meeting?</translation>
</message>
</context>
<context>
<name>ChatConferenceInvitationMessage</name>

View file

@ -564,6 +564,11 @@ URL del servidor no configurada.</translation>
<extracomment>&apos;Do you really want do delete this meeting?&apos; : Warning message to confirm the deletion of a meeting.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>cancelConferenceInfo</source>
<extracomment>&apos;Do you really want do cancel this meeting?&apos; : Warning message to confirm the cancellation of a meeting.</extracomment>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ChatConferenceInvitationMessage</name>

View file

@ -564,6 +564,11 @@ URL du serveur non configurée.</translation>
<extracomment>&apos;Do you really want do delete this meeting?&apos; : Warning message to confirm the deletion of a meeting.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>cancelConferenceInfo</source>
<extracomment>&apos;Do you really want do cancel this meeting?&apos; : Warning message to confirm the cancellation of a meeting.</extracomment>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ChatConferenceInvitationMessage</name>

View file

@ -563,6 +563,11 @@ A kiszolgáló URL-je nincs konfigurálva.</translation>
<extracomment>&apos;Do you really want do delete this meeting?&apos; : Warning message to confirm the deletion of a meeting.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>cancelConferenceInfo</source>
<extracomment>&apos;Do you really want do cancel this meeting?&apos; : Warning message to confirm the cancellation of a meeting.</extracomment>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ChatConferenceInvitationMessage</name>

View file

@ -564,6 +564,11 @@ URL del server non configurato.</translation>
<extracomment>&apos;Do you really want do delete this meeting?&apos; : Warning message to confirm the deletion of a meeting.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>cancelConferenceInfo</source>
<extracomment>&apos;Do you really want do cancel this meeting?&apos; : Warning message to confirm the cancellation of a meeting.</extracomment>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ChatConferenceInvitationMessage</name>

View file

@ -563,6 +563,11 @@
<extracomment>&apos;Do you really want do delete this meeting?&apos; : Warning message to confirm the deletion of a meeting.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>cancelConferenceInfo</source>
<extracomment>&apos;Do you really want do cancel this meeting?&apos; : Warning message to confirm the cancellation of a meeting.</extracomment>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ChatConferenceInvitationMessage</name>

View file

@ -565,6 +565,11 @@ Nesukonfigūruotas serverio url.</translation>
<extracomment>&apos;Do you really want do delete this meeting?&apos; : Warning message to confirm the deletion of a meeting.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>cancelConferenceInfo</source>
<extracomment>&apos;Do you really want do cancel this meeting?&apos; : Warning message to confirm the cancellation of a meeting.</extracomment>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ChatConferenceInvitationMessage</name>

View file

@ -564,6 +564,11 @@ URL do servidor não configurado.</translation>
<extracomment>&apos;Do you really want do delete this meeting?&apos; : Warning message to confirm the deletion of a meeting.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>cancelConferenceInfo</source>
<extracomment>&apos;Do you really want do cancel this meeting?&apos; : Warning message to confirm the cancellation of a meeting.</extracomment>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ChatConferenceInvitationMessage</name>

View file

@ -565,6 +565,11 @@
<extracomment>&apos;Do you really want do delete this meeting?&apos; : Warning message to confirm the deletion of a meeting.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>cancelConferenceInfo</source>
<extracomment>&apos;Do you really want do cancel this meeting?&apos; : Warning message to confirm the cancellation of a meeting.</extracomment>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ChatConferenceInvitationMessage</name>

View file

@ -564,6 +564,11 @@ Serverwebbadressen är inte konfigurerad.</translation>
<extracomment>&apos;Do you really want do delete this meeting?&apos; : Warning message to confirm the deletion of a meeting.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>cancelConferenceInfo</source>
<extracomment>&apos;Do you really want do cancel this meeting?&apos; : Warning message to confirm the cancellation of a meeting.</extracomment>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ChatConferenceInvitationMessage</name>

View file

@ -563,6 +563,11 @@ Sunucu url&apos;si yapılandırılmadı.</translation>
<extracomment>&apos;Do you really want do delete this meeting?&apos; : Warning message to confirm the deletion of a meeting.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>cancelConferenceInfo</source>
<extracomment>&apos;Do you really want do cancel this meeting?&apos; : Warning message to confirm the cancellation of a meeting.</extracomment>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ChatConferenceInvitationMessage</name>

View file

@ -565,6 +565,11 @@
<extracomment>&apos;Do you really want do delete this meeting?&apos; : Warning message to confirm the deletion of a meeting.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>cancelConferenceInfo</source>
<extracomment>&apos;Do you really want do cancel this meeting?&apos; : Warning message to confirm the cancellation of a meeting.</extracomment>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ChatConferenceInvitationMessage</name>

View file

@ -563,6 +563,11 @@
<extracomment>&apos;Do you really want do delete this meeting?&apos; : Warning message to confirm the deletion of a meeting.</extracomment>
<translation type="unfinished"></translation>
</message>
<message>
<source>cancelConferenceInfo</source>
<extracomment>&apos;Do you really want do cancel this meeting?&apos; : Warning message to confirm the cancellation of a meeting.</extracomment>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ChatConferenceInvitationMessage</name>

View file

@ -314,6 +314,13 @@ void ConferenceInfoModel::createConference(const int& securityLevel) {
mConferenceScheduler->getConferenceScheduler()->setInfo(mConferenceInfo);
}
void ConferenceInfoModel::cancelConference(){
mConferenceScheduler = ConferenceScheduler::create();
connect(mConferenceScheduler.get(), &ConferenceScheduler::invitationsSent, this, &ConferenceInfoModel::onInvitationsSent);
connect(mConferenceScheduler.get(), &ConferenceScheduler::stateChanged, this, &ConferenceInfoModel::onStateChanged);
mConferenceScheduler->getConferenceScheduler()->cancelConference(mConferenceInfo);
}
void ConferenceInfoModel::deleteConferenceInfo(){
if(mConferenceInfo) {
CoreManager::getInstance()->getCore()->deleteConferenceInformation(mConferenceInfo);

View file

@ -91,6 +91,7 @@ public:
// Tools
Q_INVOKABLE void createConference(const int& securityLevel);
Q_INVOKABLE void cancelConference();
Q_INVOKABLE void deleteConferenceInfo();// Remove completly this conference info from DB
// SCHEDULER

View file

@ -151,6 +151,8 @@ class ColorListModel : public ProxyListModel {
ADD_COLOR_WITH_LINK("ics_fg", "", "Special text color for ICS", "j")
ADD_COLOR("updated_ics_fg", "#EFAE00", "Special text color for updated ICS")
ADD_COLOR("cancelled_ics_fg", "#FF0000", "Special text color for cancelled ICS")
ADD_COLOR("cancelled_ics_bg", "#fff5fa", "Background color for cancelled ICS")
// Keywords: 'mKeywordsMap'
// s=standard, ma=main, l=list, sc=screen, me=menu

View file

@ -32,6 +32,8 @@ Loader{
property int gotoButtonMode: -1 //-1: hide, 0:goto, 1:MoreInfo
property bool isExpanded : false
property bool isCancelled: conferenceInfoModel.state == LinphoneEnums.ConferenceInfoStateCancelled
signal expandToggle()
signal conferenceUriCopied()
signal conferenceRemoved()
@ -69,7 +71,7 @@ Loader{
expandedFitHeight = (expandedDescription.visible? expandedDescription.implicitHeight : 0)
}
property int fitHeight: dateRow.implicitHeight + title.implicitHeight + participantsFitHeight + expandedFitHeight
property int fitHeight: dateRow.implicitHeight + statusLabel.implicitHeight + title.implicitHeight + participantsFitHeight + expandedFitHeight
property int fitWidth: Layout.minimumWidth
anchors.fill: parent
spacing: 0
@ -127,6 +129,24 @@ Loader{
text: qsTr('icsOrganizer') +' : ' +UtilsCpp.getDisplayName(mainItem.conferenceInfoModel.organizer)
}
}
Text{
id: statusLabel
Layout.fillWidth: true
Layout.preferredHeight: visible ? ChatCalendarMessageStyle.lineHeight : 0
Layout.alignment: Qt.AlignTop
Layout.leftMargin: 10
visible: mainItem.isCancelled
elide: Text.ElideRight
color: ChatCalendarMessageStyle.type.cancelledColor
font.pointSize: ChatCalendarMessageStyle.type.pointSize
font.weight: Font.Bold
text: 'You have cancelled the conference'
}
Text{
id: title
Layout.fillWidth: true
@ -279,6 +299,7 @@ Loader{
color: ChatCalendarMessageStyle.subject.color
font.pointSize: ChatCalendarMessageStyle.subject.pointSize
font.weight: Font.Bold
visible: !mainItem.isCancelled
//: 'Conference address' : Title for the conference address.
text: qsTr('icsconferenceAddressTitle')
@ -289,6 +310,7 @@ Loader{
Layout.leftMargin: 10
Layout.rightMargin: 10
spacing: 10
visible: !mainItem.isCancelled
TextField{
id: uriField
readOnly: true
@ -314,6 +336,7 @@ Loader{
Layout.bottomMargin: 5
Layout.rightMargin: 10
spacing: 10
Item{
Layout.fillWidth: true
}
@ -322,12 +345,16 @@ Loader{
//: 'Join' : Action button to join the conference.
text: qsTr('icsJoinButton').toUpperCase()
onClicked: CallsListModel.prepareConferenceCall(mainItem.conferenceInfoModel)
visible: !mainItem.isCancelled
}
ActionButton{
id: editButton
isCustom: true
colorSet: ChatCalendarMessageStyle.editButton
backgroundRadius: width/2
visible: UtilsCpp.isMe(mainItem.conferenceInfoModel.organizer) && mainItem.conferenceInfoModel.endDateTime >= new Date()
visible: UtilsCpp.isMe(mainItem.conferenceInfoModel.organizer)
&& mainItem.conferenceInfoModel.endDateTime >= new Date()
&& !mainItem.isCancelled
onClicked: {
window.detachVirtualWindow()
window.attachVirtualWindow(Utils.buildAppDialogUri('NewConference')
@ -335,20 +362,32 @@ Loader{
}
}
ActionButton{
property bool isCancellable: editButton.visible
isCustom: true
colorSet: ChatCalendarMessageStyle.deleteButton
backgroundRadius: width/2
onClicked: {
window.attachVirtualWindow(Utils.buildCommonDialogUri('ConfirmDialog'), {
//: 'Do you really want do cancel this meeting?' : Warning message to confirm the cancellation of a meeting.
descriptionText: isCancellable
? qsTr('cancelConferenceInfo')
//: 'Do you really want do delete this meeting?' : Warning message to confirm the deletion of a meeting.
descriptionText: qsTr('deleteConferenceInfo'),
: qsTr('deleteConferenceInfo')
,
}, function (status) {
if (status) {
mainItem.conferenceInfoModel.deleteConferenceInfo()
if( isCancellable)
mainItem.conferenceInfoModel.cancelConference()
else
mainItem.conferenceInfoModel.deleteConferenceInfo()
}
})
}
}
Item{
Layout.fillWidth: mainItem.isCancelled
}
}
}
}

View file

@ -167,8 +167,11 @@ Item{
width: parent.width / 2
height: calendarMessage.height
radius: 6
color: mainItem.filterType == ConferenceInfoProxyModel.Ended ? ConferencesStyle.conference.backgroundColor.ended
: ConferencesStyle.conference.backgroundColor.scheduled
color: calendarMessage.isCancelled
? ConferencesStyle.conference.backgroundColor.cancelled
: mainItem.filterType == ConferenceInfoProxyModel.Ended
? ConferencesStyle.conference.backgroundColor.ended
: ConferencesStyle.conference.backgroundColor.scheduled
border.color: calendarMessage.containsMouse || calendarMessage.isExpanded ? ConferencesStyle.conference.selectedBorder.color : 'transparent'
border.width: ConferencesStyle.conference.selectedBorder.width
ChatCalendarMessage{

View file

@ -57,6 +57,7 @@ QtObject {
property color ended: ColorsList.add(sectionName+'_conference_ended_bg', 'conference_entry_bg').color
property color scheduled: ColorsList.add(sectionName+'_conference_scheduled_bg', 'e').color
property color hovered: ColorsList.add(sectionName+'_conference_bg_h', 'g10').color
property color cancelled: ColorsList.add(sectionName+'_conference_cancelled_bg', 'cancelled_ics_bg').color
}
property QtObject border: QtObject {