From cfb71d14c4274fe7c33e1f33a4083c964abb7a06 Mon Sep 17 00:00:00 2001 From: Christophe Deschamps Date: Thu, 22 Sep 2022 22:19:11 +0200 Subject: [PATCH] Swipe to delete on conferences view --- .../Views/ScheduledConferencesCell.swift | 25 ++++++++++++------- .../Views/ScheduledConferencesView.swift | 8 ++++++ .../Extensions/IOS/UILabelExtensions.swift | 6 +++++ Classes/Swift/Voip/VoipDialog.swift | 4 +-- .../Models/IASKSettingsReader.m | 2 +- 5 files changed, 33 insertions(+), 12 deletions(-) diff --git a/Classes/Swift/Conference/Views/ScheduledConferencesCell.swift b/Classes/Swift/Conference/Views/ScheduledConferencesCell.swift index 81746eb14..c0693f013 100644 --- a/Classes/Swift/Conference/Views/ScheduledConferencesCell.swift +++ b/Classes/Swift/Conference/Views/ScheduledConferencesCell.swift @@ -202,16 +202,23 @@ class ScheduledConferencesCell: UITableViewCell { joinEditDelete.addArrangedSubview(deleteConf) deleteConf.onClick { - let delete = ButtonAttributes(text:VoipTexts.conference_info_confirm_removal_delete, action: { - Core.get().deleteConferenceInformation(conferenceInfo: self.conferenceData!.conferenceInfo) - ScheduledConferencesViewModel.shared.computeConferenceInfoList() - self.owningTableView?.reloadData() - VoipDialog.toast(message: VoipTexts.conference_info_removed) - }, isDestructive:false) - let cancel = ButtonAttributes(text:VoipTexts.cancel, action: {}, isDestructive:true) - VoipDialog(message:VoipTexts.conference_info_confirm_removal, givenButtons: [cancel,delete]).show() + self.askConfirmationTodeleteEntry() } - + } + + func askConfirmationTodeleteEntry() { + let delete = ButtonAttributes(text:VoipTexts.conference_info_confirm_removal_delete, action: { + self.deleteEntry() + VoipDialog.toast(message: VoipTexts.conference_info_removed) + }, isDestructive:false) + let cancel = ButtonAttributes(text:VoipTexts.cancel, action: {}, isDestructive:true) + VoipDialog(message:VoipTexts.conference_info_confirm_removal, givenButtons: [cancel,delete]).show() + } + + func deleteEntry() { + Core.get().deleteConferenceInformation(conferenceInfo: self.conferenceData!.conferenceInfo) + ScheduledConferencesViewModel.shared.computeConferenceInfoList() + self.owningTableView?.reloadData() } required init?(coder: NSCoder) { diff --git a/Classes/Swift/Conference/Views/ScheduledConferencesView.swift b/Classes/Swift/Conference/Views/ScheduledConferencesView.swift index 5eb858e3c..dec1fcbd5 100644 --- a/Classes/Swift/Conference/Views/ScheduledConferencesView.swift +++ b/Classes/Swift/Conference/Views/ScheduledConferencesView.swift @@ -167,4 +167,12 @@ import linphonesw } + + func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCell.EditingStyle, forRowAt indexPath: IndexPath) { + if editingStyle == .delete { + let cell = tableView.cellForRow(at: indexPath) as! ScheduledConferencesCell + cell.askConfirmationTodeleteEntry() + } + } + } diff --git a/Classes/Swift/Extensions/IOS/UILabelExtensions.swift b/Classes/Swift/Extensions/IOS/UILabelExtensions.swift index 6cf1b23ed..f3ab2bafe 100644 --- a/Classes/Swift/Extensions/IOS/UILabelExtensions.swift +++ b/Classes/Swift/Extensions/IOS/UILabelExtensions.swift @@ -29,4 +29,10 @@ extension UILabel { let labelSize = myText.boundingRect(with: rect, options: .usesLineFragmentOrigin, attributes: [NSAttributedString.Key.font: myFont], context: nil) return ceil(labelSize.width) } + + func addSidePadding(p:CGFloat = 5.0) { + if let w = textWidth { + width(w+2*p).done() + } + } } diff --git a/Classes/Swift/Voip/VoipDialog.swift b/Classes/Swift/Voip/VoipDialog.swift index 055ded827..84231fc65 100644 --- a/Classes/Swift/Voip/VoipDialog.swift +++ b/Classes/Swift/Voip/VoipDialog.swift @@ -25,12 +25,12 @@ class VoipDialog : UIView{ // Layout constants let center_corner_radius = 7.0 let title_margin_top = 20 + let title_margin_sides = 10.0 let button_margin = 20.0 let button_width = 135.0 let button_height = 40.0 let button_radius = 3.0 let button_spacing = 15.0 - let center_view_sides_margin = 13.0 @@ -49,7 +49,7 @@ class VoipDialog : UIView{ title.numberOfLines = 0 centerView.addSubview(title) - title.alignParentTop(withMargin:title_margin_top).matchParentSideBorders().done() + title.alignParentTop(withMargin:title_margin_top).matchParentSideBorders(insetedByDx: title_margin_sides).done() title.text = message let buttonsView = UIStackView() diff --git a/Classes/Utils/InAppSettingsKit/Models/IASKSettingsReader.m b/Classes/Utils/InAppSettingsKit/Models/IASKSettingsReader.m index 124e0a818..028ef72bc 100755 --- a/Classes/Utils/InAppSettingsKit/Models/IASKSettingsReader.m +++ b/Classes/Utils/InAppSettingsKit/Models/IASKSettingsReader.m @@ -160,7 +160,7 @@ hiddenKeys = _hiddenKeys; for (NSArray *specifiers in _dataSource) { for (id sp in specifiers) { if ([sp isKindOfClass:[IASKSpecifier class]]) { - if ([[sp key] isEqualToString:key]) { + if ([[(IASKSpecifier*)sp key] isEqualToString:key]) { return sp; } }