mirror of
https://gitlab.linphone.org/BC/public/linphone-iphone.git
synced 2026-01-17 11:08:06 +00:00
Add broadcast mode in conference scheduling views
This commit is contained in:
parent
04adc613a6
commit
8c0f52c28e
15 changed files with 858 additions and 29 deletions
|
|
@ -1161,7 +1161,7 @@ class ChatConversationViewSwift: BackActionsNavigationView, PHPickerViewControll
|
|||
let viewCell: UIView = UIView(frame: cell.contentView.frame)
|
||||
cell.addSubview(viewCell)
|
||||
|
||||
let deleteButton = CallControlButton(width: 22, height: 22, buttonTheme:VoipTheme.nav_black_button("reply_cancel"))
|
||||
let deleteButton = CallControlButton(width: 22, height: 22, buttonTheme:VoipTheme.nav_color_button("reply_cancel"))
|
||||
|
||||
deleteButton.onClickAction = {
|
||||
ChatConversationViewModel.sharedModel.mediaCollectionView.remove(at: indexPath.row)
|
||||
|
|
|
|||
|
|
@ -530,8 +530,8 @@ class MultilineMessageCell: SwipeCollectionViewCell, UICollectionViewDataSource,
|
|||
}
|
||||
|
||||
func initPlayerAudio(message: ChatMessage){
|
||||
let recordingPlayButton = CallControlButton(width: 40, height: 40, buttonTheme:VoipTheme.nav_black_button("vr_play"))
|
||||
let recordingStopButton = CallControlButton(width: 40, height: 40, buttonTheme:VoipTheme.nav_black_button("vr_stop"))
|
||||
let recordingPlayButton = CallControlButton(width: 40, height: 40, buttonTheme:VoipTheme.nav_color_button("vr_play"))
|
||||
let recordingStopButton = CallControlButton(width: 40, height: 40, buttonTheme:VoipTheme.nav_color_button("vr_stop"))
|
||||
let recordingWaveView = UIProgressView()
|
||||
let recordingDurationTextView = StyledLabel(VoipTheme.chat_conversation_recording_duration)
|
||||
let recordingWaveImage = UIImageView(image: UIImage(named: "vr_wave.png"))
|
||||
|
|
|
|||
31
Classes/Swift/Conference/Data/Mode.swift
Normal file
31
Classes/Swift/Conference/Data/Mode.swift
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
/*
|
||||
* Copyright (c) 2010-2021 Belledonne Communications SARL.
|
||||
*
|
||||
* This file is part of linphone-android
|
||||
* (see https://www.linphone.org).
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
|
||||
import Foundation
|
||||
|
||||
struct Mode : Comparable {
|
||||
static func < (lhs: Mode, rhs: Mode) -> Bool {
|
||||
return lhs.value < rhs.value
|
||||
}
|
||||
|
||||
let value: Int
|
||||
let display: String
|
||||
}
|
||||
|
|
@ -30,6 +30,9 @@ class ConferenceSchedulingViewModel {
|
|||
let subject = MutableLiveData<String>()
|
||||
let description = MutableLiveData<String>()
|
||||
|
||||
let mode = MutableLiveData<Int>()
|
||||
static let modeList: [Mode] = computeModeList()
|
||||
|
||||
let scheduleForLater = MutableLiveData<Bool>()
|
||||
let scheduledDate = MutableLiveData<Date>()
|
||||
let scheduledTime = MutableLiveData<Date>()
|
||||
|
|
@ -55,6 +58,7 @@ class ConferenceSchedulingViewModel {
|
|||
let continueEnabled: MutableLiveData<Bool> = MutableLiveData()
|
||||
|
||||
let selectedAddresses = MutableLiveData<[Address]>([])
|
||||
let selectedSpeakerAddresses = MutableLiveData<[Address]>([])
|
||||
|
||||
private var conferenceScheduler: ConferenceScheduler? = nil
|
||||
|
||||
|
|
@ -156,6 +160,10 @@ class ConferenceSchedulingViewModel {
|
|||
sendInviteViaEmail.value = false
|
||||
scheduledDate.value = nil
|
||||
scheduledTime.value = nil
|
||||
|
||||
mode.value = ConferenceSchedulingViewModel.modeList.indices.filter {
|
||||
ConferenceSchedulingViewModel.modeList[$0].value == 0
|
||||
}.first
|
||||
|
||||
scheduledTimeZone.value = ConferenceSchedulingViewModel.timeZones.indices.filter {
|
||||
ConferenceSchedulingViewModel.timeZones[$0].timeZone.identifier == NSTimeZone.default.identifier
|
||||
|
|
@ -243,6 +251,10 @@ class ConferenceSchedulingViewModel {
|
|||
}.sorted()
|
||||
}
|
||||
|
||||
private static func computeModeList() -> [Mode] {
|
||||
return [Mode(value: 0, display: "Meeting"), Mode(value: 1, display: "Broadcast")]
|
||||
}
|
||||
|
||||
private static func computeDurationList() -> [Duration] {
|
||||
return [Duration(value: 30, display: "30min"), Duration(value: 60, display: "1h"), Duration(value: 120, display: "2h")]
|
||||
}
|
||||
|
|
@ -258,5 +270,12 @@ class ConferenceSchedulingViewModel {
|
|||
return nil
|
||||
}
|
||||
|
||||
func getMode() -> Int {
|
||||
if mode.value != nil {
|
||||
return mode.value!
|
||||
} else {
|
||||
return 0
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -27,6 +27,9 @@ import SVProgressHUD
|
|||
|
||||
let CONFERENCE_CREATION_TIME_OUT_SEC = 15.0
|
||||
|
||||
let viaChatLabel = StyledLabel(VoipTheme.conference_scheduling_font, VoipTexts.conference_schedule_send_invite_chat_summary)
|
||||
let speakersLabel = StyledLabel(VoipTheme.conference_scheduling_font, " "+VoipTexts.conference_schedule_speakers_list)
|
||||
let speakersListTableView = UITableView()
|
||||
let participantsListTableView = UITableView()
|
||||
|
||||
let datePicker = StyledDatePicker(liveValue: ConferenceSchedulingViewModel.shared.scheduledDate,pickerMode: .date, readOnly:true)
|
||||
|
|
@ -52,7 +55,7 @@ import SVProgressHUD
|
|||
},nextAction: {
|
||||
},
|
||||
nextActionEnableCondition: ConferenceSchedulingViewModel.shared.continueEnabled,
|
||||
title:VoipTexts.conference_schedule_summary)
|
||||
title: ConferenceSchedulingViewModel.shared.getMode() == 0 ? VoipTexts.conference_schedule_summary : VoipTexts.conference_schedule_broadcast_summary)
|
||||
super.nextButton.isHidden = true
|
||||
|
||||
let subjectLabel = StyledLabel(VoipTheme.conference_scheduling_font, VoipTexts.conference_schedule_subject_title)
|
||||
|
|
@ -130,18 +133,34 @@ import SVProgressHUD
|
|||
scheduleForm.addSubview(descriptionInput)
|
||||
|
||||
// Sending method
|
||||
let viaChatLabel = StyledLabel(VoipTheme.conference_scheduling_font, VoipTexts.conference_schedule_send_invite_chat_summary)
|
||||
contentView.addSubview(viaChatLabel)
|
||||
viaChatLabel.matchParentSideBorders(insetedByDx: form_margin).alignUnder(view: schedulingStack,withMargin: 2*form_margin).done()
|
||||
viaChatLabel.numberOfLines = 2
|
||||
ConferenceSchedulingViewModel.shared.sendInviteViaChat.readCurrentAndObserve { (sendChat) in
|
||||
viaChatLabel.isHidden = sendChat != true || ConferenceSchedulingViewModel.shared.scheduleForLater.value != true
|
||||
self.viaChatLabel.isHidden = sendChat != true || ConferenceSchedulingViewModel.shared.scheduleForLater.value != true
|
||||
}
|
||||
|
||||
|
||||
// Speaker
|
||||
contentView.addSubview(speakersLabel)
|
||||
speakersLabel.matchParentSideBorders().height(form_input_height).alignUnder(view: viaChatLabel,withMargin: form_margin).done()
|
||||
speakersLabel.textAlignment = .left
|
||||
|
||||
|
||||
contentView.addSubview(speakersListTableView)
|
||||
speakersListTableView.isScrollEnabled = false
|
||||
speakersListTableView.dataSource = self
|
||||
speakersListTableView.register(VoipSpeakerCell.self, forCellReuseIdentifier: "VoipSpeakerCellSSchedule")
|
||||
speakersListTableView.allowsSelection = false
|
||||
if #available(iOS 15.0, *) {
|
||||
speakersListTableView.allowsFocus = false
|
||||
}
|
||||
speakersListTableView.separatorStyle = .singleLine
|
||||
speakersListTableView.backgroundColor = .clear
|
||||
|
||||
// Participants
|
||||
let participantsLabel = StyledLabel(VoipTheme.conference_scheduling_font, " "+VoipTexts.conference_schedule_participants_list)
|
||||
contentView.addSubview(participantsLabel)
|
||||
participantsLabel.matchParentSideBorders().height(form_input_height).alignUnder(view: viaChatLabel,withMargin: form_margin).done()
|
||||
participantsLabel.matchParentSideBorders().height(form_input_height).alignUnder(view: speakersListTableView,withMargin: form_margin).done()
|
||||
participantsLabel.textAlignment = .left
|
||||
|
||||
|
||||
|
|
@ -156,6 +175,23 @@ import SVProgressHUD
|
|||
participantsListTableView.separatorStyle = .singleLine
|
||||
participantsListTableView.backgroundColor = .clear
|
||||
|
||||
ConferenceSchedulingViewModel.shared.selectedSpeakerAddresses.readCurrentAndObserve { (addresses) in
|
||||
self.speakersListTableView.reloadData()
|
||||
self.speakersListTableView.removeConstraints().done()
|
||||
self.speakersListTableView.matchParentSideBorders().alignUnder(view: self.speakersLabel,withMargin: self.form_margin).done()
|
||||
self.speakersListTableView.height((addresses!.count > 0 ? Double(addresses!.count) : 0.5) * VoipParticipantCell.cell_height).done()
|
||||
if addresses!.count == 0 {
|
||||
let emptyLabel = UILabel(frame: CGRect(x: 0, y: 0, width: self.view.bounds.size.width, height: self.view.bounds.size.height))
|
||||
emptyLabel.text = VoipTexts.conference_schedule_speakers_list_empty
|
||||
emptyLabel.textAlignment = NSTextAlignment.center
|
||||
self.speakersListTableView.backgroundView = emptyLabel
|
||||
self.speakersListTableView.separatorStyle = UITableViewCell.SeparatorStyle.none
|
||||
self.speakersListTableView.backgroundView?.isHidden = false
|
||||
} else {
|
||||
self.speakersListTableView.backgroundView?.isHidden = true
|
||||
}
|
||||
}
|
||||
|
||||
ConferenceSchedulingViewModel.shared.selectedAddresses.readCurrentAndObserve { (addresses) in
|
||||
self.participantsListTableView.reloadData()
|
||||
self.participantsListTableView.removeConstraints().done()
|
||||
|
|
@ -209,10 +245,10 @@ import SVProgressHUD
|
|||
}
|
||||
ConferenceSchedulingViewModel.shared.scheduleForLater.readCurrentAndObserve { (later) in
|
||||
self.createButton.title = ConferenceSchedulingViewModel.shared.scheduleForLater.value == true ? ConferenceSchedulingViewModel.shared.existingConfInfo.value != nil ? VoipTexts.conference_schedule_edit.uppercased() : VoipTexts.conference_schedule_start.uppercased() : VoipTexts.conference_group_call_create.uppercased()
|
||||
viaChatLabel.isHidden = later != true || ConferenceSchedulingViewModel.shared.sendInviteViaChat.value != true
|
||||
viaChatLabel.removeConstraints().matchParentSideBorders(insetedByDx: self.form_margin).alignUnder(view: schedulingStack,withMargin: (viaChatLabel.isHidden ? 0 : 1)*self.form_margin).done()
|
||||
if (viaChatLabel.isHidden) {
|
||||
viaChatLabel.height(0).done()
|
||||
self.viaChatLabel.isHidden = later != true || ConferenceSchedulingViewModel.shared.sendInviteViaChat.value != true
|
||||
self.viaChatLabel.removeConstraints().matchParentSideBorders(insetedByDx: self.form_margin).alignUnder(view: schedulingStack,withMargin: (self.viaChatLabel.isHidden ? 0 : 1)*self.form_margin).done()
|
||||
if (self.viaChatLabel.isHidden) {
|
||||
self.viaChatLabel.height(0).done()
|
||||
}
|
||||
|
||||
self.createButton.addSidePadding()
|
||||
|
|
@ -220,6 +256,8 @@ import SVProgressHUD
|
|||
|
||||
UIDeviceBridge.displayModeSwitched.readCurrentAndObserve { _ in
|
||||
self.view.backgroundColor = VoipTheme.voipBackgroundBWColor.get()
|
||||
self.speakersLabel.backgroundColor = VoipTheme.voipFormBackgroundColor.get()
|
||||
self.speakersListTableView.separatorColor = VoipTheme.separatorColor.get()
|
||||
participantsLabel.backgroundColor = VoipTheme.voipFormBackgroundColor.get()
|
||||
self.participantsListTableView.separatorColor = VoipTheme.separatorColor.get()
|
||||
}
|
||||
|
|
@ -227,6 +265,8 @@ import SVProgressHUD
|
|||
}
|
||||
|
||||
override func viewWillAppear(_ animated: Bool) {
|
||||
titleLabel.text = ConferenceSchedulingViewModel.shared.getMode() == 0 ? VoipTexts.conference_schedule_summary : VoipTexts.conference_schedule_broadcast_summary
|
||||
|
||||
datePicker.liveValue = ConferenceSchedulingViewModel.shared.scheduledDate
|
||||
timeZoneValue.setIndex(index: ConferenceSchedulingViewModel.shared.scheduledTimeZone.value!)
|
||||
durationValue.setIndex(index: ConferenceSchedulingViewModel.shared.scheduledDuration.value!)
|
||||
|
|
@ -243,6 +283,35 @@ import SVProgressHUD
|
|||
scheduleForm.removeConstraints().matchParentSideBorders().wrapContentY().done()
|
||||
|
||||
createButton.addSidePadding()
|
||||
|
||||
speakersLabel.removeConstraints().matchParentSideBorders().height(form_input_height).alignUnder(view: viaChatLabel,withMargin: form_margin).done()
|
||||
|
||||
speakersListTableView.removeConstraints().done()
|
||||
speakersListTableView.matchParentSideBorders().alignUnder(view: self.speakersLabel,withMargin: self.form_margin).done()
|
||||
speakersListTableView.height(Double(ConferenceSchedulingViewModel.shared.selectedSpeakerAddresses.value!.count) * VoipParticipantCell.cell_height).done()
|
||||
|
||||
if ConferenceSchedulingViewModel.shared.selectedSpeakerAddresses.value?.count == 0 {
|
||||
self.speakersListTableView.reloadData()
|
||||
self.speakersListTableView.removeConstraints().done()
|
||||
self.speakersListTableView.matchParentSideBorders().alignUnder(view: self.speakersLabel,withMargin: self.form_margin).done()
|
||||
self.speakersListTableView.height(0.5 * VoipParticipantCell.cell_height).done()
|
||||
let emptyLabel = UILabel(frame: CGRect(x: 0, y: 0, width: self.view.bounds.size.width, height: self.view.bounds.size.height))
|
||||
emptyLabel.text = VoipTexts.conference_schedule_speakers_list_empty
|
||||
emptyLabel.textAlignment = NSTextAlignment.center
|
||||
self.speakersListTableView.backgroundView = emptyLabel
|
||||
self.speakersListTableView.separatorStyle = UITableViewCell.SeparatorStyle.none
|
||||
}
|
||||
|
||||
if ConferenceSchedulingViewModel.shared.getMode() == 0 {
|
||||
speakersLabel.isHidden = true
|
||||
speakersListTableView.isHidden = true
|
||||
speakersLabel.height(0).done()
|
||||
speakersListTableView.height(0).done()
|
||||
} else {
|
||||
speakersLabel.isHidden = false
|
||||
speakersListTableView.isHidden = false
|
||||
}
|
||||
|
||||
super.viewWillAppear(animated)
|
||||
}
|
||||
|
||||
|
|
@ -251,6 +320,13 @@ import SVProgressHUD
|
|||
func goBackParticipantsListSelection() {
|
||||
let view: ChatConversationCreateView = VIEW(ChatConversationCreateView.compositeViewDescription())
|
||||
view.unfragmentCompositeDescription()
|
||||
|
||||
ConferenceSchedulingViewModel.shared.selectedSpeakerAddresses.value!.forEach { address in
|
||||
ConferenceSchedulingViewModel.shared.selectedAddresses.value?.append(address)
|
||||
}
|
||||
|
||||
ConferenceSchedulingViewModel.shared.selectedSpeakerAddresses.value!.removeAll()
|
||||
|
||||
let addresses = ConferenceSchedulingViewModel.shared.selectedAddresses.value!.map { (address) in String(address.asStringUriOnly()) }
|
||||
view.tableController.contactsGroup = (addresses as NSArray).mutableCopy() as? NSMutableArray
|
||||
view.tableController.notFirstTime = true
|
||||
|
|
@ -271,22 +347,69 @@ import SVProgressHUD
|
|||
|
||||
// TableView datasource delegate
|
||||
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
|
||||
guard let participants = ConferenceSchedulingViewModel.shared.selectedAddresses.value else {
|
||||
return 0
|
||||
if(tableView == speakersListTableView){
|
||||
guard let speakers = ConferenceSchedulingViewModel.shared.selectedSpeakerAddresses.value else {
|
||||
return 0
|
||||
}
|
||||
return speakers.count
|
||||
} else {
|
||||
guard let participants = ConferenceSchedulingViewModel.shared.selectedAddresses.value else {
|
||||
return 0
|
||||
}
|
||||
return participants.count
|
||||
}
|
||||
return participants.count
|
||||
}
|
||||
|
||||
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
|
||||
let cell:VoipParticipantCell = tableView.dequeueReusableCell(withIdentifier: "VoipParticipantCellSSchedule") as! VoipParticipantCell
|
||||
guard let participant = ConferenceSchedulingViewModel.shared.selectedAddresses.value?[indexPath.row] else {
|
||||
if(tableView == speakersListTableView){
|
||||
let cell:VoipSpeakerCell = tableView.dequeueReusableCell(withIdentifier: "VoipSpeakerCellSSchedule") as! VoipSpeakerCell
|
||||
guard let speaker = ConferenceSchedulingViewModel.shared.selectedSpeakerAddresses.value?[indexPath.row] else {
|
||||
return cell
|
||||
}
|
||||
cell.selectionStyle = .none
|
||||
cell.scheduleConfSpeakerAddress = speaker
|
||||
cell.limeBadge.isHidden = ConferenceSchedulingViewModel.shared.isEncrypted.value != true
|
||||
|
||||
cell.deleteButton.addTarget(self, action: #selector(deleteButtonPressed), for: .touchUpInside)
|
||||
cell.deleteButton.tag = indexPath.row
|
||||
|
||||
return cell
|
||||
} else {
|
||||
let cell:VoipParticipantCell = tableView.dequeueReusableCell(withIdentifier: "VoipParticipantCellSSchedule") as! VoipParticipantCell
|
||||
guard let participant = ConferenceSchedulingViewModel.shared.selectedAddresses.value?[indexPath.row] else {
|
||||
return cell
|
||||
}
|
||||
cell.selectionStyle = .none
|
||||
cell.scheduleConfParticipantAddress = participant
|
||||
cell.limeBadge.isHidden = ConferenceSchedulingViewModel.shared.isEncrypted.value != true
|
||||
|
||||
if ConferenceSchedulingViewModel.shared.getMode() == 0 {
|
||||
cell.addButton.isHidden = true
|
||||
} else {
|
||||
cell.addButton.isHidden = false
|
||||
cell.addButton.addTarget(self, action: #selector(addButtonPressed), for: .touchUpInside)
|
||||
cell.addButton.tag = indexPath.row
|
||||
}
|
||||
return cell
|
||||
}
|
||||
cell.selectionStyle = .none
|
||||
cell.scheduleConfParticipantAddress = participant
|
||||
cell.limeBadge.isHidden = ConferenceSchedulingViewModel.shared.isEncrypted.value != true
|
||||
return cell
|
||||
}
|
||||
|
||||
@objc func addButtonPressed(sender:UIButton!) {
|
||||
if(ConferenceSchedulingViewModel.shared.selectedAddresses.value?[sender.tag] != nil) {
|
||||
ConferenceSchedulingViewModel.shared.selectedSpeakerAddresses.value?.append((ConferenceSchedulingViewModel.shared.selectedAddresses.value?[sender.tag])!)
|
||||
ConferenceSchedulingViewModel.shared.selectedAddresses.value?.remove(at: sender.tag)
|
||||
}
|
||||
speakersListTableView.reloadData()
|
||||
participantsListTableView.reloadData()
|
||||
}
|
||||
|
||||
@objc func deleteButtonPressed(sender:UIButton!) {
|
||||
if(ConferenceSchedulingViewModel.shared.selectedSpeakerAddresses.value?[sender.tag] != nil) {
|
||||
ConferenceSchedulingViewModel.shared.selectedAddresses.value?.append((ConferenceSchedulingViewModel.shared.selectedSpeakerAddresses.value?[sender.tag])!)
|
||||
ConferenceSchedulingViewModel.shared.selectedSpeakerAddresses.value?.remove(at: sender.tag)
|
||||
}
|
||||
speakersListTableView.reloadData()
|
||||
participantsListTableView.reloadData()
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -30,6 +30,7 @@ import IQKeyboardManager
|
|||
static func compositeViewDescription() -> UICompositeViewDescription! { return compositeDescription }
|
||||
func compositeViewDescription() -> UICompositeViewDescription! { return type(of: self).compositeDescription }
|
||||
|
||||
let modeValue = StyledValuePicker(liveIndex: ConferenceSchedulingViewModel.shared.mode,options: ConferenceSchedulingViewModel.modeList.map({ (mode: Mode) -> String in mode.display}))
|
||||
let datePicker = StyledDatePicker(liveValue: ConferenceSchedulingViewModel.shared.scheduledDate,pickerMode: .date)
|
||||
let timeZoneValue = StyledValuePicker(liveIndex: ConferenceSchedulingViewModel.shared.scheduledTimeZone,options: ConferenceSchedulingViewModel.timeZones.map({ (tzd: TimeZoneData) -> String in tzd.descWithOffset()}))
|
||||
let durationValue = StyledValuePicker(liveIndex: ConferenceSchedulingViewModel.shared.scheduledDuration,options: ConferenceSchedulingViewModel.durationList.map({ (duration: Duration) -> String in duration.display}))
|
||||
|
|
@ -81,10 +82,18 @@ import IQKeyboardManager
|
|||
schedulingStack.addArrangedSubview(scheduleForm)
|
||||
scheduleForm.matchParentSideBorders().done()
|
||||
|
||||
// Mode
|
||||
let modeLabel = StyledLabel(VoipTheme.conference_scheduling_font, VoipTexts.conference_schedule_mode)
|
||||
scheduleForm.addSubview(modeLabel)
|
||||
modeLabel.alignParentTop(withMargin: form_margin).matchParentSideBorders(insetedByDx: form_margin).done()
|
||||
|
||||
scheduleForm.addSubview(modeValue)
|
||||
modeValue.alignUnder(view: modeLabel, withMargin: form_margin).matchParentSideBorders(insetedByDx: form_margin).done()
|
||||
|
||||
// Left column (Date & Time)
|
||||
let leftColumn = UIView()
|
||||
scheduleForm.addSubview(leftColumn)
|
||||
leftColumn.matchParentWidthDividedBy(2.2).alignParentLeft(withMargin: form_margin).alignParentTop(withMargin: form_margin).done()
|
||||
leftColumn.matchParentWidthDividedBy(2.2).alignParentLeft(withMargin: form_margin).alignUnder(view: modeValue, withMargin: form_margin).done()
|
||||
|
||||
let dateLabel = StyledLabel(VoipTheme.conference_scheduling_font, VoipTexts.conference_schedule_date)
|
||||
dateLabel.addIndicatorIcon(iconName: "voip_mandatory")
|
||||
|
|
@ -108,7 +117,7 @@ import IQKeyboardManager
|
|||
// Right column (Duration & Timezone)
|
||||
let rightColumn = UIView()
|
||||
scheduleForm.addSubview(rightColumn)
|
||||
rightColumn.matchParentWidthDividedBy(2.2).alignParentRight(withMargin: form_margin).alignParentTop().done()
|
||||
rightColumn.matchParentWidthDividedBy(2.2).alignParentRight(withMargin: form_margin).alignUnder(view: modeValue, withMargin: form_margin).done()
|
||||
|
||||
let durationLabel = StyledLabel(VoipTheme.conference_scheduling_font, VoipTexts.conference_schedule_duration)
|
||||
rightColumn.addSubview(durationLabel)
|
||||
|
|
@ -219,6 +228,7 @@ import IQKeyboardManager
|
|||
|
||||
override func viewWillAppear(_ animated: Bool) {
|
||||
super.viewWillAppear(animated)
|
||||
modeValue.setIndex(index: ConferenceSchedulingViewModel.shared.mode.value!)
|
||||
datePicker.liveValue = ConferenceSchedulingViewModel.shared.scheduledDate
|
||||
timeZoneValue.setIndex(index: ConferenceSchedulingViewModel.shared.scheduledTimeZone.value!)
|
||||
durationValue.setIndex(index: ConferenceSchedulingViewModel.shared.scheduledDuration.value!)
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@ class ContentMessageView: UIViewController {
|
|||
let replyContentTextView = StyledLabel(VoipTheme.chat_conversation_reply_content)
|
||||
let replyContentTextSpacing = UIView()
|
||||
let replyContentForMeetingTextView = StyledLabel(VoipTheme.chat_conversation_reply_content)
|
||||
let replyDeleteButton = CallControlButton(width: 22, height: 22, buttonTheme:VoipTheme.nav_black_button("reply_cancel"))
|
||||
let replyDeleteButton = CallControlButton(width: 22, height: 22, buttonTheme:VoipTheme.nav_color_button("reply_cancel"))
|
||||
let replyMeetingSchedule = UIImageView()
|
||||
let recordingView = UIView()
|
||||
let recordingDeleteButton = CallControlButton(width: 40, height: 40, buttonTheme:VoipTheme.nav_button("delete_default"))
|
||||
|
|
|
|||
|
|
@ -30,6 +30,7 @@ import UIKit
|
|||
@objc static let call_action_change_conf_layout = NSLocalizedString("Change layout",comment:"")
|
||||
@objc static let call_action_chat = NSLocalizedString("Chat",comment:"")
|
||||
@objc static let call_action_numpad = NSLocalizedString("Numpad",comment:"")
|
||||
@objc static let call_action_speakers_list = NSLocalizedString("Speakers list",comment:"")
|
||||
@objc static let call_action_participants_list = NSLocalizedString("Participants list",comment:"")
|
||||
@objc static let call_action_statistics = NSLocalizedString("Call statistics",comment:"")
|
||||
@objc static let call_action_transfer_call = NSLocalizedString("Transfer call",comment:"")
|
||||
|
|
@ -110,6 +111,7 @@ import UIKit
|
|||
@objc static let conference_paused_title = NSLocalizedString("You are currently out of the meeting.",comment:"")
|
||||
@objc static let conference_schedule_address_copied_to_clipboard = NSLocalizedString("Meeting address copied into clipboard",comment:"")
|
||||
@objc static let conference_schedule_address_title = NSLocalizedString("Meeting address",comment:"")
|
||||
@objc static let conference_schedule_mode = NSLocalizedString("Mode",comment:"")
|
||||
@objc static let conference_schedule_date = NSLocalizedString("Date",comment:"")
|
||||
@objc static let conference_schedule_description_hint = NSLocalizedString("Description",comment:"")
|
||||
@objc static let conference_schedule_description_title = NSLocalizedString("Add a description",comment:"")
|
||||
|
|
@ -121,6 +123,8 @@ import UIKit
|
|||
@objc static let conference_schedule_mandatory_field = NSLocalizedString("Mandatory",comment:"")
|
||||
@objc static let conference_schedule_organizer = NSLocalizedString("Organizer:",comment:"")
|
||||
@objc static let conference_schedule_participants_list = NSLocalizedString("Participants list",comment:"")
|
||||
@objc static let conference_schedule_speakers_list = NSLocalizedString("Speakers list",comment:"")
|
||||
@objc static let conference_schedule_speakers_list_empty = NSLocalizedString("Select at least one speaker",comment:"")
|
||||
@objc static let conference_schedule_send_invite_chat = NSLocalizedString("Send invite via &appName;",comment:"").replacingOccurrences(of: "&appName;", with: appName)
|
||||
@objc static let conference_schedule_send_invite_chat_summary = NSLocalizedString("Invite will be sent out from my &appName; account",comment:"").replacingOccurrences(of: "&appName;", with: appName)
|
||||
@objc static let conference_schedule_send_invite_email = NSLocalizedString("Send invite via email",comment:"")
|
||||
|
|
@ -130,6 +134,7 @@ import UIKit
|
|||
@objc static let conference_group_call_subject_hint = NSLocalizedString("Group call subject",comment:"")
|
||||
@objc static let conference_schedule_subject_title = NSLocalizedString("Subject",comment:"")
|
||||
@objc static let conference_schedule_summary = NSLocalizedString("Meeting info",comment:"")
|
||||
@objc static let conference_schedule_broadcast_summary = NSLocalizedString("Broadcast info",comment:"")
|
||||
@objc static let conference_schedule_time = NSLocalizedString("Time",comment:"")
|
||||
@objc static let conference_schedule_timezone = NSLocalizedString("Timezone",comment:"")
|
||||
@objc static let conference_schedule_title = NSLocalizedString("Schedule a meeting",comment:"")
|
||||
|
|
|
|||
|
|
@ -407,7 +407,7 @@ import UIKit
|
|||
backgroundStateColors: [:])
|
||||
}
|
||||
|
||||
static func nav_black_button(_ iconName:String) -> ButtonTheme {
|
||||
static func nav_color_button(_ iconName:String) -> ButtonTheme {
|
||||
return ButtonTheme(
|
||||
tintableStateIcons:[
|
||||
UIButton.State.normal.rawValue : TintableIcon(name: iconName),
|
||||
|
|
|
|||
52
Classes/Swift/Voip/ViewModels/ConferenceSpeakerData.swift
Normal file
52
Classes/Swift/Voip/ViewModels/ConferenceSpeakerData.swift
Normal file
|
|
@ -0,0 +1,52 @@
|
|||
/*
|
||||
* Copyright (c) 2010-2020 Belledonne Communications SARL.
|
||||
*
|
||||
* This file is part of linhome
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
import linphonesw
|
||||
import Foundation
|
||||
|
||||
class ConferenceSpeakerData {
|
||||
|
||||
var conference:Conference
|
||||
var speaker:Participant
|
||||
|
||||
let isAdmin = MutableLiveData<Bool>()
|
||||
let isMeAdmin = MutableLiveData<Bool>()
|
||||
|
||||
private var callDelegate : CallDelegateStub?
|
||||
|
||||
init (conference:Conference, speaker:Participant) {
|
||||
self.conference = conference
|
||||
self.speaker = speaker
|
||||
isAdmin.value = speaker.isAdmin
|
||||
isMeAdmin.value = conference.me?.isAdmin
|
||||
Log.i("[Conference Speaker] Speaker \(sipUri!) is admin=\(isAdmin.value!)")
|
||||
|
||||
}
|
||||
|
||||
var sipUri:String? {
|
||||
get {
|
||||
return self.speaker.address?.asString()
|
||||
}
|
||||
}
|
||||
|
||||
func destroy() {
|
||||
isAdmin.clearObservers()
|
||||
isMeAdmin.clearObservers()
|
||||
}
|
||||
}
|
||||
|
|
@ -36,6 +36,7 @@ class ConferenceViewModel {
|
|||
|
||||
let conference = MutableLiveData<Conference>()
|
||||
let conferenceCreationPending = MutableLiveData<Bool>()
|
||||
let conferenceSpeakers = MutableLiveData<[ConferenceSpeakerData]>()
|
||||
let conferenceParticipants = MutableLiveData<[ConferenceParticipantData]>()
|
||||
let conferenceParticipantDevices = MutableLiveData<[ConferenceParticipantDeviceData]>()
|
||||
let conferenceDisplayMode = MutableLiveData<ConferenceDisplayMode>()
|
||||
|
|
|
|||
|
|
@ -45,6 +45,7 @@ class VoipParticipantCell: UITableViewCell {
|
|||
let isAdminCheck = UIImageView(image: UIImage(named:("check_unselected")))
|
||||
let removePart = CallControlButton(imageInset:dismiss_icon_inset,buttonTheme: VoipTheme.voip_cancel, onClickAction: {})
|
||||
|
||||
let addButton = CallControlButton(buttonTheme:VoipTheme.nav_color_button("add_field_default"))
|
||||
|
||||
var owningParticpantsListView : ParticipantsListView? = nil
|
||||
|
||||
|
|
@ -135,6 +136,11 @@ class VoipParticipantCell: UITableViewCell {
|
|||
isAdminView.matchParentHeight().toRightOf(nameAddress).alignParentRight(withMargin: dismiss_right_margin).done()
|
||||
contentView.backgroundColor = .clear
|
||||
backgroundColor = .clear
|
||||
|
||||
// Add button for broadcast mode
|
||||
addSubview(addButton)
|
||||
addButton.alignParentRight(withMargin: 10).matchParentHeight().done()
|
||||
addButton.isEnabled = true
|
||||
}
|
||||
|
||||
required init?(coder: NSCoder) {
|
||||
|
|
|
|||
|
|
@ -0,0 +1,127 @@
|
|||
/*
|
||||
* Copyright (c) 2010-2020 Belledonne Communications SARL.
|
||||
*
|
||||
* This file is part of linphone-iphone
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
|
||||
import UIKit
|
||||
import Foundation
|
||||
import linphonesw
|
||||
|
||||
@objc class SpeakersListView: DismissableView, UITableViewDataSource {
|
||||
|
||||
// Layout constants
|
||||
let side_margin = 10.0
|
||||
|
||||
let speakersListTableView = UITableView()
|
||||
let noSpeakersLabel = StyledLabel(VoipTheme.empty_list_font,VoipTexts.conference_empty)
|
||||
|
||||
|
||||
var callsDataObserver : MutableLiveDataOnChangeClosure<[CallData]>? = nil
|
||||
|
||||
init() {
|
||||
super.init(title: VoipTexts.call_action_speakers_list)
|
||||
|
||||
|
||||
let edit = CallControlButton(buttonTheme: VoipTheme.voip_edit, onClickAction: {
|
||||
self.removeFromSuperview()
|
||||
self.gotoSpeakersListSelection()
|
||||
})
|
||||
super.headerView.addSubview(edit)
|
||||
edit.centerY().done()
|
||||
super.dismiss?.toRightOf(edit,withLeftMargin: dismiss_right_margin).centerY().done()
|
||||
|
||||
|
||||
// SpeakersList
|
||||
super.contentView.addSubview(speakersListTableView)
|
||||
speakersListTableView.matchParentDimmensions().done()
|
||||
speakersListTableView.dataSource = self
|
||||
speakersListTableView.register(VoipSpeakerCell.self, forCellReuseIdentifier: "VoipSpeakerCell")
|
||||
speakersListTableView.allowsSelection = false
|
||||
if #available(iOS 15.0, *) {
|
||||
speakersListTableView.allowsFocus = false
|
||||
}
|
||||
speakersListTableView.separatorStyle = .singleLine
|
||||
speakersListTableView.separatorColor = .white
|
||||
|
||||
|
||||
ConferenceViewModel.shared.conferenceSpeakers.readCurrentAndObserve{ _ in
|
||||
self.speakersListTableView.reloadData()
|
||||
self.noSpeakersLabel.isHidden = ConferenceViewModel.shared.conferenceSpeakers.value?.count ?? 0 > 0
|
||||
}
|
||||
|
||||
ConferenceViewModel.shared.isMeAdmin.readCurrentAndObserve { (meAdmin) in
|
||||
edit.isHidden = meAdmin != true
|
||||
}
|
||||
|
||||
super.contentView.addSubview(noSpeakersLabel)
|
||||
noSpeakersLabel.center().matchParentSideBorders(insetedByDx: side_margin).done()
|
||||
noSpeakersLabel.isHidden = ConferenceViewModel.shared.conferenceSpeakers.value?.count ?? 0 > 0
|
||||
noSpeakersLabel.numberOfLines = 2
|
||||
self.speakersListTableView.backgroundColor = VoipTheme.voipBackgroundBWColor.get()
|
||||
|
||||
UIDeviceBridge.displayModeSwitched.observe { _ in
|
||||
self.speakersListTableView.backgroundColor = VoipTheme.voipBackgroundBWColor.get()
|
||||
self.speakersListTableView.reloadData()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// TableView datasource delegate
|
||||
|
||||
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
|
||||
guard let speakers = ConferenceViewModel.shared.conferenceSpeakers.value else {
|
||||
return 0
|
||||
}
|
||||
return speakers.count
|
||||
}
|
||||
|
||||
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
|
||||
let cell:VoipSpeakerCell = tableView.dequeueReusableCell(withIdentifier: "VoipSpeakerCell") as! VoipSpeakerCell
|
||||
guard let speakerData = ConferenceViewModel.shared.conferenceSpeakers.value?[indexPath.row] else {
|
||||
return cell
|
||||
}
|
||||
cell.selectionStyle = .none
|
||||
cell.speakerData = speakerData
|
||||
cell.owningParticpantsListView = self
|
||||
return cell
|
||||
}
|
||||
|
||||
// View controller
|
||||
|
||||
|
||||
required init?(coder: NSCoder) {
|
||||
fatalError("init(coder:) has not been implemented")
|
||||
}
|
||||
|
||||
func gotoSpeakersListSelection() {
|
||||
let view: ChatConversationCreateView = self.VIEW(ChatConversationCreateView.compositeViewDescription())
|
||||
view.unfragmentCompositeDescription()
|
||||
let addresses = ConferenceViewModel.shared.conferenceSpeakers.value!.map { (data) in String(data.speaker.address!.asStringUriOnly()) }
|
||||
view.tableController.contactsGroup = (addresses as NSArray).mutableCopy() as? NSMutableArray
|
||||
view.isForEditing = false
|
||||
view.isForVoipConference = true
|
||||
view.isForOngoingVoipConference = true
|
||||
view.tableController.notFirstTime = true
|
||||
view.isGroupChat = true
|
||||
PhoneMainView.instance().changeCurrentView(view.compositeViewDescription())
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,149 @@
|
|||
/*
|
||||
* Copyright (c) 2010-2020 Belledonne Communications SARL.
|
||||
*
|
||||
* This file is part of linphone-iphone
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
|
||||
import UIKit
|
||||
import Foundation
|
||||
import SnapKit
|
||||
import linphonesw
|
||||
|
||||
class VoipSpeakerCell: UITableViewCell {
|
||||
|
||||
// Layout Constants
|
||||
|
||||
static let dismiss_icon_inset = UIEdgeInsets(top: 10, left: 10, bottom: 10, right: 10)
|
||||
let dismiss_right_margin = 10
|
||||
let check_box_size = 15
|
||||
static let cell_height = 80.0
|
||||
let avatar_left_margin = 15.0
|
||||
let texts_left_margin = 20.0
|
||||
let lime_badge_width = 18.0
|
||||
let lime_badge_offset = -10.0
|
||||
|
||||
let avatar = Avatar(color:VoipTheme.primaryTextColor, textStyle: VoipTheme.call_generated_avatar_small)
|
||||
let limeBadge = UIImageView(image: UIImage(named: "security_toggle_icon_green"))
|
||||
let displayName = StyledLabel(VoipTheme.conference_participant_name_font)
|
||||
let sipAddress = StyledLabel(VoipTheme.conference_participant_sip_uri_font)
|
||||
let isAdminView = UIStackView()
|
||||
let isAdminLabel = StyledLabel(VoipTheme.conference_participant_admin_label,VoipTexts.chat_room_group_info_admin)
|
||||
let isAdminCheck = UIImageView(image: UIImage(named:("check_unselected")))
|
||||
let removePart = CallControlButton(imageInset:dismiss_icon_inset,buttonTheme: VoipTheme.voip_cancel, onClickAction: {})
|
||||
|
||||
let deleteButton = CallControlButton(buttonTheme:VoipTheme.nav_color_button("delete_field_default"))
|
||||
|
||||
var owningParticpantsListView : SpeakersListView? = nil
|
||||
|
||||
var speakerData: ConferenceSpeakerData? = nil {
|
||||
didSet {
|
||||
if let data = speakerData {
|
||||
limeBadge.isHidden = true
|
||||
avatar.fillFromAddress(address: data.speaker.address!)
|
||||
displayName.text = data.speaker.address?.addressBookEnhancedDisplayName()
|
||||
sipAddress.text = data.speaker.address?.asStringUriOnly()
|
||||
data.isAdmin.readCurrentAndObserve { _ in
|
||||
self.setAdminStatus(data: data)
|
||||
}
|
||||
data.isMeAdmin.readCurrentAndObserve { _ in
|
||||
self.setAdminStatus(data: data)
|
||||
}
|
||||
self.isAdminView.onClick {
|
||||
data.conference.setParticipantAdminStatus(participant: data.speaker, isAdmin: data.isAdmin.value != true)
|
||||
self.owningParticpantsListView?.speakersListTableView.reloadData()
|
||||
}
|
||||
self.removePart.onClick {
|
||||
try?data.conference.removeParticipant(participant: data.speaker)
|
||||
self.owningParticpantsListView?.speakersListTableView.reloadData()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func setAdminStatus(data:ConferenceSpeakerData) {
|
||||
let isAdmin = data.isAdmin.value!
|
||||
let isMeAdmin = data.isMeAdmin.value!
|
||||
self.removePart.isHidden = !isMeAdmin
|
||||
self.isAdminView.isUserInteractionEnabled = isMeAdmin
|
||||
self.isAdminLabel.textColor = !isAdmin ? VoipTheme.primarySubtextLightColor.get() : VoipTheme.primaryTextColor.get()
|
||||
self.isAdminView.isHidden = !isAdmin && !isMeAdmin // Non admin don't see status of others non admin (they just see admins)
|
||||
}
|
||||
|
||||
var scheduleConfSpeakerAddress: Address? = nil {
|
||||
didSet {
|
||||
if let address = scheduleConfSpeakerAddress {
|
||||
avatar.fillFromAddress(address: address)
|
||||
displayName.text = address.addressBookEnhancedDisplayName()
|
||||
sipAddress.text = address.asStringUriOnly()
|
||||
self.isAdminView.isHidden = true
|
||||
self.removePart.isHidden = true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
|
||||
super.init(style: style, reuseIdentifier: reuseIdentifier)
|
||||
contentView.height(VoipSpeakerCell.cell_height).matchParentSideBorders().done()
|
||||
|
||||
addSubview(avatar)
|
||||
avatar.size(w: VoipCallCell.avatar_size, h: VoipCallCell.avatar_size).centerY().alignParentLeft(withMargin: avatar_left_margin).done()
|
||||
|
||||
limeBadge.contentMode = .scaleAspectFit
|
||||
addSubview(limeBadge)
|
||||
limeBadge.toRightOf(avatar,withLeftMargin: lime_badge_offset).width(lime_badge_width).done()
|
||||
|
||||
// Name Address
|
||||
|
||||
let nameAddress = UIStackView()
|
||||
nameAddress.addArrangedSubview(displayName)
|
||||
nameAddress.addArrangedSubview(sipAddress)
|
||||
nameAddress.axis = .vertical
|
||||
addSubview(nameAddress)
|
||||
nameAddress.toRightOf(avatar,withLeftMargin:texts_left_margin).centerY().done()
|
||||
|
||||
// Admin section
|
||||
isAdminView.spacing = 5
|
||||
|
||||
isAdminView.addArrangedSubview(isAdminCheck)
|
||||
isAdminCheck.square(check_box_size).done()
|
||||
isAdminCheck.contentMode = .scaleAspectFit
|
||||
isAdminCheck.setContentHuggingPriority(.defaultHigh, for: .horizontal)
|
||||
|
||||
isAdminView.addArrangedSubview(isAdminLabel)
|
||||
isAdminLabel.setContentHuggingPriority(.defaultHigh, for: .horizontal)
|
||||
|
||||
isAdminView.addArrangedSubview(removePart)
|
||||
removePart.setContentHuggingPriority(.defaultHigh, for: .horizontal)
|
||||
|
||||
addSubview(isAdminView)
|
||||
isAdminView.leadingAnchor.constraint(greaterThanOrEqualTo: leadingAnchor).isActive = true
|
||||
isAdminView.trailingAnchor.constraint(equalTo: trailingAnchor).isActive = true
|
||||
isAdminView.matchParentHeight().toRightOf(nameAddress).alignParentRight(withMargin: dismiss_right_margin).done()
|
||||
contentView.backgroundColor = .clear
|
||||
backgroundColor = .clear
|
||||
|
||||
// Delete button for broadcast mode
|
||||
addSubview(deleteButton)
|
||||
deleteButton.alignParentRight(withMargin: 10).matchParentHeight().done()
|
||||
deleteButton.isEnabled = true
|
||||
}
|
||||
|
||||
required init?(coder: NSCoder) {
|
||||
fatalError("init(coder:) has not been implemented")
|
||||
}
|
||||
}
|
||||
|
|
@ -50,6 +50,7 @@
|
|||
288765FD0DF74451002DB57D /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 288765FC0DF74451002DB57D /* CoreGraphics.framework */; };
|
||||
340751971506459A00B89C47 /* CoreTelephony.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 340751961506459A00B89C47 /* CoreTelephony.framework */; };
|
||||
344ABDF114850AE9007420B6 /* libc++.1.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 344ABDEF14850AE9007420B6 /* libc++.1.dylib */; settings = {ATTRIBUTES = (Weak, ); }; };
|
||||
4701D3DADBB5643F3BFBDB13 /* Pods_msgNotificationService.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 785F0C8F17CC0C3ED32D877A /* Pods_msgNotificationService.framework */; };
|
||||
570742581D5A0691004B9C84 /* ShopView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 570742561D5A0691004B9C84 /* ShopView.xib */; };
|
||||
570742611D5A09B8004B9C84 /* ShopView.m in Sources */ = {isa = PBXBuildFile; fileRef = 5707425F1D5A09B8004B9C84 /* ShopView.m */; };
|
||||
570742671D5A63DB004B9C84 /* StoreKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 570742661D5A63DB004B9C84 /* StoreKit.framework */; };
|
||||
|
|
@ -625,8 +626,11 @@
|
|||
669B140C27A29D140012220A /* FloatingScrollDownButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 669B140B27A29D140012220A /* FloatingScrollDownButton.swift */; };
|
||||
66E399F72857869300E73456 /* menu_notifications_off.png in Resources */ = {isa = PBXBuildFile; fileRef = 66E399F52857869200E73456 /* menu_notifications_off.png */; };
|
||||
66E399F82857869300E73456 /* menu_notifications_on.png in Resources */ = {isa = PBXBuildFile; fileRef = 66E399F62857869200E73456 /* menu_notifications_on.png */; };
|
||||
670570508BCF8E632DA30693 /* Pods_msgNotificationContent.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7E34400DB0BBC32817BBC646 /* Pods_msgNotificationContent.framework */; };
|
||||
6BFC6480E944DC85FB4B596B /* Pods_linphone.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 99AE8AC439FE1502BDB82EEE /* Pods_linphone.framework */; };
|
||||
70E542F313E147E3002BA2C0 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 70E542F213E147E3002BA2C0 /* OpenGLES.framework */; };
|
||||
70E542F513E147EB002BA2C0 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 70E542F413E147EB002BA2C0 /* QuartzCore.framework */; };
|
||||
71AC843E9555663F6A2308A6 /* Pods_CallUITests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8005C73AB852A5FC6C960F4B /* Pods_CallUITests.framework */; };
|
||||
8C2595DF1DEDCC8E007A6424 /* CallKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8C2595DE1DEDCC8E007A6424 /* CallKit.framework */; };
|
||||
8C2A81951F87B8000012A66B /* chat_group_avatar@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 8C2A81931F87B7FF0012A66B /* chat_group_avatar@2x.png */; };
|
||||
8C2A81961F87B8000012A66B /* chat_group_avatar.png in Resources */ = {isa = PBXBuildFile; fileRef = 8C2A81941F87B8000012A66B /* chat_group_avatar.png */; };
|
||||
|
|
@ -969,6 +973,10 @@
|
|||
D7A7545029507038005C9D4A /* CustomAlertController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D7A7544F29507038005C9D4A /* CustomAlertController.swift */; };
|
||||
D7C6DE832948CF3100756E03 /* DropDownCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = D7C6DE812948CF3100756E03 /* DropDownCell.swift */; };
|
||||
D7C6DE842948CF3100756E03 /* DropDownCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = D7C6DE822948CF3100756E03 /* DropDownCell.xib */; };
|
||||
D7CBC0F72A8E1669009182D8 /* Mode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D7CBC0F62A8E1669009182D8 /* Mode.swift */; };
|
||||
D7CBC0FB2A8E3D1E009182D8 /* SpeakersListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D7CBC0FA2A8E3D1E009182D8 /* SpeakersListView.swift */; };
|
||||
D7CBC0FD2A8E3D3F009182D8 /* VoipSpeakerCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = D7CBC0FC2A8E3D3F009182D8 /* VoipSpeakerCell.swift */; };
|
||||
D7CBC0FF2A8E3E11009182D8 /* ConferenceSpeakerData.swift in Sources */ = {isa = PBXBuildFile; fileRef = D7CBC0FE2A8E3E11009182D8 /* ConferenceSpeakerData.swift */; };
|
||||
D7CF13732A2E225200D92165 /* emoji.png in Resources */ = {isa = PBXBuildFile; fileRef = D7CF13722A2E225200D92165 /* emoji.png */; };
|
||||
D7DA18712A02598700FABA0D /* TextViewer.swift in Sources */ = {isa = PBXBuildFile; fileRef = D7DA18702A02598700FABA0D /* TextViewer.swift */; };
|
||||
EA0007A62356008F003CC6BF /* msgNotificationService.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = EA5F25D9232BD3E200475F2E /* msgNotificationService.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
|
||||
|
|
@ -1049,11 +1057,13 @@
|
|||
/* End PBXCopyFilesBuildPhase section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
13DBC5D3188A145CD7240456 /* Pods-msgNotificationContent.distributionadhoc.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-msgNotificationContent.distributionadhoc.xcconfig"; path = "Target Support Files/Pods-msgNotificationContent/Pods-msgNotificationContent.distributionadhoc.xcconfig"; sourceTree = "<group>"; };
|
||||
152F22351B15E889008C0621 /* libxml2.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libxml2.dylib; path = usr/lib/libxml2.dylib; sourceTree = SDKROOT; };
|
||||
1D30AB110D05D00D00671497 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
|
||||
1D3623240D0F684500981E51 /* LinphoneAppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LinphoneAppDelegate.h; sourceTree = "<group>"; };
|
||||
1D3623250D0F684500981E51 /* LinphoneAppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LinphoneAppDelegate.m; sourceTree = "<group>"; };
|
||||
1D6058910D05DD3D006BFB54 /* linphone.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = linphone.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
1DB171367FBC063A92DFF671 /* Pods-msgNotificationService.distribution.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-msgNotificationService.distribution.xcconfig"; path = "Target Support Files/Pods-msgNotificationService/Pods-msgNotificationService.distribution.xcconfig"; sourceTree = "<group>"; };
|
||||
1DF5F4DF0D08C38300B7A737 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
|
||||
2214EB7812F846B1002A5394 /* UICallButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UICallButton.h; sourceTree = "<group>"; };
|
||||
2214EB7912F846B1002A5394 /* UICallButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UICallButton.m; sourceTree = "<group>"; };
|
||||
|
|
@ -1102,16 +1112,22 @@
|
|||
24BFAA9C209B062F004F47A7 /* contacts_sip_selected@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "contacts_sip_selected@2x.png"; sourceTree = "<group>"; };
|
||||
24BFAA9D209B0630004F47A7 /* linphone_logo@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "linphone_logo@2x.png"; sourceTree = "<group>"; };
|
||||
24E1C7B91F9A235500D3F981 /* Contacts.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Contacts.framework; path = System/Library/Frameworks/Contacts.framework; sourceTree = SDKROOT; };
|
||||
2805D857950EB54DE9EC76F3 /* Pods-msgNotificationService.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-msgNotificationService.release.xcconfig"; path = "Target Support Files/Pods-msgNotificationService/Pods-msgNotificationService.release.xcconfig"; sourceTree = "<group>"; };
|
||||
288765FC0DF74451002DB57D /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; };
|
||||
29B97316FDCFA39411CA2CEA /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
|
||||
32CA4F630368D1EE00C91783 /* linphone_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = linphone_Prefix.pch; sourceTree = "<group>"; };
|
||||
340751961506459A00B89C47 /* CoreTelephony.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreTelephony.framework; path = System/Library/Frameworks/CoreTelephony.framework; sourceTree = SDKROOT; };
|
||||
344ABDEF14850AE9007420B6 /* libc++.1.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = "libc++.1.dylib"; path = "usr/lib/libc++.1.dylib"; sourceTree = SDKROOT; };
|
||||
344ABDF014850AE9007420B6 /* libstdc++.6.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = "libstdc++.6.dylib"; path = "usr/lib/libstdc++.6.dylib"; sourceTree = SDKROOT; };
|
||||
3D777FF83A489472E2530A85 /* Pods-msgNotificationService.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-msgNotificationService.debug.xcconfig"; path = "Target Support Files/Pods-msgNotificationService/Pods-msgNotificationService.debug.xcconfig"; sourceTree = "<group>"; };
|
||||
413401F544CB2668F07E0EA0 /* Pods-msgNotificationContent.distribution.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-msgNotificationContent.distribution.xcconfig"; path = "Target Support Files/Pods-msgNotificationContent/Pods-msgNotificationContent.distribution.xcconfig"; sourceTree = "<group>"; };
|
||||
44CD55BCF1F7605D70B925D6 /* Pods-msgNotificationService.distributionadhoc.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-msgNotificationService.distributionadhoc.xcconfig"; path = "Target Support Files/Pods-msgNotificationService/Pods-msgNotificationService.distributionadhoc.xcconfig"; sourceTree = "<group>"; };
|
||||
4ABDEF5B597BAA50AB49EEE2 /* Pods-msgNotificationContent.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-msgNotificationContent.debug.xcconfig"; path = "Target Support Files/Pods-msgNotificationContent/Pods-msgNotificationContent.debug.xcconfig"; sourceTree = "<group>"; };
|
||||
570742571D5A0691004B9C84 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/ShopView.xib; sourceTree = "<group>"; };
|
||||
5707425F1D5A09B8004B9C84 /* ShopView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ShopView.m; sourceTree = "<group>"; };
|
||||
570742601D5A09B8004B9C84 /* ShopView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ShopView.h; sourceTree = "<group>"; };
|
||||
570742661D5A63DB004B9C84 /* StoreKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = StoreKit.framework; path = System/Library/Frameworks/StoreKit.framework; sourceTree = SDKROOT; };
|
||||
5A0745F1212040EAEC11A72A /* Pods-CallUITests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-CallUITests.release.xcconfig"; path = "Target Support Files/Pods-CallUITests/Pods-CallUITests.release.xcconfig"; sourceTree = "<group>"; };
|
||||
5E58962520DCE5700030868C /* UserNotificationsUI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UserNotificationsUI.framework; path = System/Library/Frameworks/UserNotificationsUI.framework; sourceTree = SDKROOT; };
|
||||
5EF0C33820C806A5005081B0 /* NotificationCenter.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = NotificationCenter.framework; path = System/Library/Frameworks/NotificationCenter.framework; sourceTree = SDKROOT; };
|
||||
6112A01B243B31A600DBD5F5 /* GoogleService-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "GoogleService-Info.plist"; sourceTree = "<group>"; };
|
||||
|
|
@ -1800,8 +1816,14 @@
|
|||
66EADB022A939487002DDCEE /* zh_CN */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = zh_CN; path = zh_CN.lproj/Localizable.strings; sourceTree = "<group>"; };
|
||||
6EA1EF0554CF75B5C078A4F8 /* Pods-linphone.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-linphone.debug.xcconfig"; path = "Target Support Files/Pods-linphone/Pods-linphone.debug.xcconfig"; sourceTree = "<group>"; };
|
||||
6FFD86D62D3E1E8093160069 /* Pods-linphone.distributionadhoc.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-linphone.distributionadhoc.xcconfig"; path = "Target Support Files/Pods-linphone/Pods-linphone.distributionadhoc.xcconfig"; sourceTree = "<group>"; };
|
||||
67039DAF1162F13644E2B622 /* Pods-CallUITests.distribution.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-CallUITests.distribution.xcconfig"; path = "Target Support Files/Pods-CallUITests/Pods-CallUITests.distribution.xcconfig"; sourceTree = "<group>"; };
|
||||
68F0AD8BF6C2A009468601CF /* Pods-linphone.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-linphone.release.xcconfig"; path = "Target Support Files/Pods-linphone/Pods-linphone.release.xcconfig"; sourceTree = "<group>"; };
|
||||
70E542F213E147E3002BA2C0 /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = System/Library/Frameworks/OpenGLES.framework; sourceTree = SDKROOT; };
|
||||
70E542F413E147EB002BA2C0 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; };
|
||||
785F0C8F17CC0C3ED32D877A /* Pods_msgNotificationService.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_msgNotificationService.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
7E34400DB0BBC32817BBC646 /* Pods_msgNotificationContent.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_msgNotificationContent.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
8005C73AB852A5FC6C960F4B /* Pods_CallUITests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_CallUITests.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
86CA4651CCBB3B93873B787A /* Pods-linphone.distribution.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-linphone.distribution.xcconfig"; path = "Target Support Files/Pods-linphone/Pods-linphone.distribution.xcconfig"; sourceTree = "<group>"; };
|
||||
8C1A1F7C1FA331D40064BE00 /* libsoci_sqlite3.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libsoci_sqlite3.a; path = "liblinphone-sdk/apple-darwin/lib/libsoci_sqlite3.a"; sourceTree = "<group>"; };
|
||||
8C23BCB71D82AAC3005F19BB /* linphone.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = linphone.entitlements; sourceTree = "<group>"; };
|
||||
8C2595DE1DEDCC8E007A6424 /* CallKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CallKit.framework; path = System/Library/Frameworks/CallKit.framework; sourceTree = SDKROOT; };
|
||||
|
|
@ -1887,6 +1909,10 @@
|
|||
8CF25D941F9F336100BEA0C1 /* check_unselected.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = check_unselected.png; sourceTree = "<group>"; };
|
||||
8CF25D9B1F9F76BC00BEA0C1 /* chat_group_informations.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = chat_group_informations.png; sourceTree = "<group>"; };
|
||||
8CF25D9C1F9F76BD00BEA0C1 /* chat_group_informations@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "chat_group_informations@2x.png"; sourceTree = "<group>"; };
|
||||
8E72C2B55BD41E35CBD59144 /* Pods-CallUITests.distributionadhoc.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-CallUITests.distributionadhoc.xcconfig"; path = "Target Support Files/Pods-CallUITests/Pods-CallUITests.distributionadhoc.xcconfig"; sourceTree = "<group>"; };
|
||||
99AE8AC439FE1502BDB82EEE /* Pods_linphone.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_linphone.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
99EE66591AAE0A56B2752224 /* Pods-linphone.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-linphone.debug.xcconfig"; path = "Target Support Files/Pods-linphone/Pods-linphone.debug.xcconfig"; sourceTree = "<group>"; };
|
||||
A8E18CF5D897E58D43C78844 /* Pods-CallUITests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-CallUITests.debug.xcconfig"; path = "Target Support Files/Pods-CallUITests/Pods-CallUITests.debug.xcconfig"; sourceTree = "<group>"; };
|
||||
C61B1BF12667D075001A4E4A /* menu_security_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = menu_security_default.png; sourceTree = "<group>"; };
|
||||
C61B1BF32667D202001A4E4A /* more_menu_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = more_menu_default.png; sourceTree = "<group>"; };
|
||||
C61B1BF62667EC6B001A4E4A /* ephemeral_messages_color_A.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ephemeral_messages_color_A.png; sourceTree = "<group>"; };
|
||||
|
|
@ -2097,6 +2123,7 @@
|
|||
C6E3E7ED291D648D00DDFC46 /* side_menu_voip_meeting_schedule@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "side_menu_voip_meeting_schedule@2x.png"; sourceTree = "<group>"; };
|
||||
C6F55644287CC69F0056E213 /* voip_meeting_schedule.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = voip_meeting_schedule.png; sourceTree = "<group>"; };
|
||||
C6F55646287CCFB60056E213 /* menu_voip_meeting_schedule.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = menu_voip_meeting_schedule.png; sourceTree = "<group>"; };
|
||||
C8153405A74E7E99A5AE0926 /* Pods-msgNotificationContent.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-msgNotificationContent.release.xcconfig"; path = "Target Support Files/Pods-msgNotificationContent/Pods-msgNotificationContent.release.xcconfig"; sourceTree = "<group>"; };
|
||||
C90FAA7615AF54E6002091CB /* HistoryDetailsView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HistoryDetailsView.h; sourceTree = "<group>"; };
|
||||
C90FAA7715AF54E6002091CB /* HistoryDetailsView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HistoryDetailsView.m; sourceTree = "<group>"; };
|
||||
C9B3A6FD15B485DB006F52EE /* Utils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Utils.h; path = Utils/Utils.h; sourceTree = "<group>"; };
|
||||
|
|
@ -2240,8 +2267,13 @@
|
|||
D7A7544F29507038005C9D4A /* CustomAlertController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CustomAlertController.swift; sourceTree = "<group>"; };
|
||||
D7C6DE812948CF3100756E03 /* DropDownCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DropDownCell.swift; sourceTree = "<group>"; };
|
||||
D7C6DE822948CF3100756E03 /* DropDownCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = DropDownCell.xib; sourceTree = "<group>"; };
|
||||
D7CBC0F62A8E1669009182D8 /* Mode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Mode.swift; sourceTree = "<group>"; };
|
||||
D7CBC0FA2A8E3D1E009182D8 /* SpeakersListView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SpeakersListView.swift; sourceTree = "<group>"; };
|
||||
D7CBC0FC2A8E3D3F009182D8 /* VoipSpeakerCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VoipSpeakerCell.swift; sourceTree = "<group>"; };
|
||||
D7CBC0FE2A8E3E11009182D8 /* ConferenceSpeakerData.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConferenceSpeakerData.swift; sourceTree = "<group>"; };
|
||||
D7CF13722A2E225200D92165 /* emoji.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = emoji.png; sourceTree = "<group>"; };
|
||||
D7DA18702A02598700FABA0D /* TextViewer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TextViewer.swift; sourceTree = "<group>"; };
|
||||
E4178B3BF1512DBE49E7D6C9 /* Pods-linphone.distributionadhoc.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-linphone.distributionadhoc.xcconfig"; path = "Target Support Files/Pods-linphone/Pods-linphone.distributionadhoc.xcconfig"; sourceTree = "<group>"; };
|
||||
EA5F25D9232BD3E200475F2E /* msgNotificationService.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = msgNotificationService.appex; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
EA5F25DB232BD3E200475F2E /* NotificationService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationService.swift; sourceTree = "<group>"; };
|
||||
EA5F25DD232BD3E200475F2E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
|
|
@ -2315,6 +2347,7 @@
|
|||
files = (
|
||||
EA88F3AC241BD05200E66528 /* UserNotificationsUI.framework in Frameworks */,
|
||||
EA88F3AB241BD05200E66528 /* UserNotifications.framework in Frameworks */,
|
||||
670570508BCF8E632DA30693 /* Pods_msgNotificationContent.framework in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
|
|
@ -2355,6 +2388,7 @@
|
|||
F05BAA621A5D594E00411815 /* libz.dylib in Frameworks */,
|
||||
344ABDF114850AE9007420B6 /* libc++.1.dylib in Frameworks */,
|
||||
22D1B68112A3E0BE001AE361 /* libresolv.dylib in Frameworks */,
|
||||
6BFC6480E944DC85FB4B596B /* Pods_linphone.framework in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
|
|
@ -2362,6 +2396,7 @@
|
|||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
4701D3DADBB5643F3BFBDB13 /* Pods_msgNotificationService.framework in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
|
|
@ -2376,6 +2411,7 @@
|
|||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
71AC843E9555663F6A2308A6 /* Pods_CallUITests.framework in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
|
|
@ -2714,6 +2750,10 @@
|
|||
8C73477B1D9BA3A00022EE8C /* UserNotifications.framework */,
|
||||
5E58962520DCE5700030868C /* UserNotificationsUI.framework */,
|
||||
63CE583F1C85EBF400304800 /* VideoToolbox.framework */,
|
||||
8005C73AB852A5FC6C960F4B /* Pods_CallUITests.framework */,
|
||||
99AE8AC439FE1502BDB82EEE /* Pods_linphone.framework */,
|
||||
7E34400DB0BBC32817BBC646 /* Pods_msgNotificationContent.framework */,
|
||||
785F0C8F17CC0C3ED32D877A /* Pods_msgNotificationService.framework */,
|
||||
);
|
||||
name = Frameworks;
|
||||
sourceTree = "<group>";
|
||||
|
|
@ -3462,6 +3502,22 @@
|
|||
75AA7090378DBBA5417E4370 /* Pods */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
A8E18CF5D897E58D43C78844 /* Pods-CallUITests.debug.xcconfig */,
|
||||
5A0745F1212040EAEC11A72A /* Pods-CallUITests.release.xcconfig */,
|
||||
67039DAF1162F13644E2B622 /* Pods-CallUITests.distribution.xcconfig */,
|
||||
8E72C2B55BD41E35CBD59144 /* Pods-CallUITests.distributionadhoc.xcconfig */,
|
||||
99EE66591AAE0A56B2752224 /* Pods-linphone.debug.xcconfig */,
|
||||
68F0AD8BF6C2A009468601CF /* Pods-linphone.release.xcconfig */,
|
||||
86CA4651CCBB3B93873B787A /* Pods-linphone.distribution.xcconfig */,
|
||||
E4178B3BF1512DBE49E7D6C9 /* Pods-linphone.distributionadhoc.xcconfig */,
|
||||
4ABDEF5B597BAA50AB49EEE2 /* Pods-msgNotificationContent.debug.xcconfig */,
|
||||
C8153405A74E7E99A5AE0926 /* Pods-msgNotificationContent.release.xcconfig */,
|
||||
413401F544CB2668F07E0EA0 /* Pods-msgNotificationContent.distribution.xcconfig */,
|
||||
13DBC5D3188A145CD7240456 /* Pods-msgNotificationContent.distributionadhoc.xcconfig */,
|
||||
3D777FF83A489472E2530A85 /* Pods-msgNotificationService.debug.xcconfig */,
|
||||
2805D857950EB54DE9EC76F3 /* Pods-msgNotificationService.release.xcconfig */,
|
||||
1DB171367FBC063A92DFF671 /* Pods-msgNotificationService.distribution.xcconfig */,
|
||||
44CD55BCF1F7605D70B925D6 /* Pods-msgNotificationService.distributionadhoc.xcconfig */,
|
||||
);
|
||||
path = Pods;
|
||||
sourceTree = "<group>";
|
||||
|
|
@ -3511,6 +3567,7 @@
|
|||
C63F719F285A24B10066163B /* ScheduledConferenceData.swift */,
|
||||
C63F71A0285A24B10066163B /* TimeZoneData.swift */,
|
||||
C63F71A1285A24B10066163B /* Duration.swift */,
|
||||
D7CBC0F62A8E1669009182D8 /* Mode.swift */,
|
||||
);
|
||||
path = Data;
|
||||
sourceTree = "<group>";
|
||||
|
|
@ -3620,6 +3677,7 @@
|
|||
C63F71CD285A24B10066163B /* ConferenceParticipantData.swift */,
|
||||
C63F71CE285A24B10066163B /* ConferenceParticipantDeviceData.swift */,
|
||||
C63F71CF285A24B10066163B /* CallData.swift */,
|
||||
D7CBC0FE2A8E3E11009182D8 /* ConferenceSpeakerData.swift */,
|
||||
);
|
||||
path = ViewModels;
|
||||
sourceTree = "<group>";
|
||||
|
|
@ -3649,6 +3707,7 @@
|
|||
C63F71D8285A24B10066163B /* Fragments */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
D7CBC0F92A8E3CF4009182D8 /* SpeakersList */,
|
||||
C63F71D9285A24B10066163B /* ParticipantsList */,
|
||||
C63F71DC285A24B10066163B /* AudioRoutesView.swift */,
|
||||
C63F71DD285A24B10066163B /* Conference */,
|
||||
|
|
@ -3939,6 +3998,15 @@
|
|||
path = Views;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
D7CBC0F92A8E3CF4009182D8 /* SpeakersList */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
D7CBC0FA2A8E3D1E009182D8 /* SpeakersListView.swift */,
|
||||
D7CBC0FC2A8E3D3F009182D8 /* VoipSpeakerCell.swift */,
|
||||
);
|
||||
path = SpeakersList;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
D7DA18722A02599A00FABA0D /* Viewers */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
|
|
@ -3979,6 +4047,7 @@
|
|||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 1D6058960D05DD3E006BFB54 /* Build configuration list for PBXNativeTarget "linphone" */;
|
||||
buildPhases = (
|
||||
4B1E635C760AB13551B24106 /* [CP] Check Pods Manifest.lock */,
|
||||
1D60588D0D05DD3D006BFB54 /* Resources */,
|
||||
63DCC71D1A07B08E00916627 /* Run Script */,
|
||||
1D60588E0D05DD3D006BFB54 /* Sources */,
|
||||
|
|
@ -3986,6 +4055,7 @@
|
|||
8CDC89061EAF89A8006B5652 /* Embed Frameworks */,
|
||||
5EF0C35020C806A5005081B0 /* Embed App Extensions */,
|
||||
614D0A1821E77F5300C43EDF /* ShellScript */,
|
||||
805994971B2482F7ED933FF5 /* [CP] Embed Pods Frameworks */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
|
|
@ -4020,9 +4090,11 @@
|
|||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 6637AF99288593AF00965733 /* Build configuration list for PBXNativeTarget "CallUITests" */;
|
||||
buildPhases = (
|
||||
FF5E503C6A83D3C5D8F4CE83 /* [CP] Check Pods Manifest.lock */,
|
||||
6637AF89288593AF00965733 /* Sources */,
|
||||
6637AF8A288593AF00965733 /* Frameworks */,
|
||||
6637AF8B288593AF00965733 /* Resources */,
|
||||
E41455F2A82C6AEC45A47409 /* [CP] Embed Pods Frameworks */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
|
|
@ -4038,6 +4110,7 @@
|
|||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = EA5F25E1232BD3E300475F2E /* Build configuration list for PBXNativeTarget "msgNotificationService" */;
|
||||
buildPhases = (
|
||||
223F838B1E2854EBF44D1434 /* [CP] Check Pods Manifest.lock */,
|
||||
EA5F25D5232BD3E200475F2E /* Sources */,
|
||||
203E6292C3E84CD13778F720 /* Frameworks */,
|
||||
EA88A406242A6224007FEC61 /* Resources */,
|
||||
|
|
@ -4056,6 +4129,7 @@
|
|||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = EA8CB834239F96CA00C330CC /* Build configuration list for PBXNativeTarget "msgNotificationContent" */;
|
||||
buildPhases = (
|
||||
5B941D10A235EDF133762CBF /* [CP] Check Pods Manifest.lock */,
|
||||
EA8CB823239F96CA00C330CC /* Sources */,
|
||||
143EFEE2501CB14E6BB244EF /* Frameworks */,
|
||||
EA88F3AE241BD1ED00E66528 /* Resources */,
|
||||
|
|
@ -4911,6 +4985,72 @@
|
|||
/* End PBXResourcesBuildPhase section */
|
||||
|
||||
/* Begin PBXShellScriptBuildPhase section */
|
||||
223F838B1E2854EBF44D1434 /* [CP] Check Pods Manifest.lock */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputFileListPaths = (
|
||||
);
|
||||
inputPaths = (
|
||||
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
|
||||
"${PODS_ROOT}/Manifest.lock",
|
||||
);
|
||||
name = "[CP] Check Pods Manifest.lock";
|
||||
outputFileListPaths = (
|
||||
);
|
||||
outputPaths = (
|
||||
"$(DERIVED_FILE_DIR)/Pods-msgNotificationService-checkManifestLockResult.txt",
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
4B1E635C760AB13551B24106 /* [CP] Check Pods Manifest.lock */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputFileListPaths = (
|
||||
);
|
||||
inputPaths = (
|
||||
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
|
||||
"${PODS_ROOT}/Manifest.lock",
|
||||
);
|
||||
name = "[CP] Check Pods Manifest.lock";
|
||||
outputFileListPaths = (
|
||||
);
|
||||
outputPaths = (
|
||||
"$(DERIVED_FILE_DIR)/Pods-linphone-checkManifestLockResult.txt",
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
5B941D10A235EDF133762CBF /* [CP] Check Pods Manifest.lock */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputFileListPaths = (
|
||||
);
|
||||
inputPaths = (
|
||||
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
|
||||
"${PODS_ROOT}/Manifest.lock",
|
||||
);
|
||||
name = "[CP] Check Pods Manifest.lock";
|
||||
outputFileListPaths = (
|
||||
);
|
||||
outputPaths = (
|
||||
"$(DERIVED_FILE_DIR)/Pods-msgNotificationContent-checkManifestLockResult.txt",
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
6112A019243B2C8400DBD5F5 /* ShellScript */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
|
|
@ -4983,6 +5123,152 @@
|
|||
shellPath = /bin/sh;
|
||||
shellScript = "$SRCROOT/Tools/git_version.sh\n";
|
||||
};
|
||||
805994971B2482F7ED933FF5 /* [CP] Embed Pods Frameworks */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputPaths = (
|
||||
"${PODS_ROOT}/Target Support Files/Pods-linphone/Pods-linphone-frameworks.sh",
|
||||
"${BUILT_PRODUCTS_DIR}/DropDown/DropDown.framework",
|
||||
"${BUILT_PRODUCTS_DIR}/EmojiPicker/EmojiPicker.framework",
|
||||
"${BUILT_PRODUCTS_DIR}/IQKeyboardManager/IQKeyboardManager.framework",
|
||||
"${BUILT_PRODUCTS_DIR}/SVProgressHUD/SVProgressHUD.framework",
|
||||
"${BUILT_PRODUCTS_DIR}/SnapKit/SnapKit.framework",
|
||||
"${BUILT_PRODUCTS_DIR}/SwipeCellKit/SwipeCellKit.framework",
|
||||
"${BUILT_PRODUCTS_DIR}/linphone-sdk/linphonesw.framework",
|
||||
"${PODS_XCFRAMEWORKS_BUILD_DIR}/linphone-sdk/bctoolbox-ios.framework/bctoolbox-ios",
|
||||
"${PODS_XCFRAMEWORKS_BUILD_DIR}/linphone-sdk/bctoolbox-tester.framework/bctoolbox-tester",
|
||||
"${PODS_XCFRAMEWORKS_BUILD_DIR}/linphone-sdk/bctoolbox.framework/bctoolbox",
|
||||
"${PODS_XCFRAMEWORKS_BUILD_DIR}/linphone-sdk/belcard.framework/belcard",
|
||||
"${PODS_XCFRAMEWORKS_BUILD_DIR}/linphone-sdk/belle-sip.framework/belle-sip",
|
||||
"${PODS_XCFRAMEWORKS_BUILD_DIR}/linphone-sdk/belr.framework/belr",
|
||||
"${PODS_XCFRAMEWORKS_BUILD_DIR}/linphone-sdk/exampleplugin.framework/exampleplugin",
|
||||
"${PODS_XCFRAMEWORKS_BUILD_DIR}/linphone-sdk/lime.framework/lime",
|
||||
"${PODS_XCFRAMEWORKS_BUILD_DIR}/linphone-sdk/limetester.framework/limetester",
|
||||
"${PODS_XCFRAMEWORKS_BUILD_DIR}/linphone-sdk/linphone.framework/linphone",
|
||||
"${PODS_XCFRAMEWORKS_BUILD_DIR}/linphone-sdk/linphonetester.framework/linphonetester",
|
||||
"${PODS_XCFRAMEWORKS_BUILD_DIR}/linphone-sdk/mediastreamer2.framework/mediastreamer2",
|
||||
"${PODS_XCFRAMEWORKS_BUILD_DIR}/linphone-sdk/msamr.framework/msamr",
|
||||
"${PODS_XCFRAMEWORKS_BUILD_DIR}/linphone-sdk/mscodec2.framework/mscodec2",
|
||||
"${PODS_XCFRAMEWORKS_BUILD_DIR}/linphone-sdk/msopenh264.framework/msopenh264",
|
||||
"${PODS_XCFRAMEWORKS_BUILD_DIR}/linphone-sdk/mssilk.framework/mssilk",
|
||||
"${PODS_XCFRAMEWORKS_BUILD_DIR}/linphone-sdk/mswebrtc.framework/mswebrtc",
|
||||
"${PODS_XCFRAMEWORKS_BUILD_DIR}/linphone-sdk/ortp.framework/ortp",
|
||||
"${PODS_XCFRAMEWORKS_BUILD_DIR}/linphone-sdk/ZXing.framework/ZXing",
|
||||
);
|
||||
name = "[CP] Embed Pods Frameworks";
|
||||
outputPaths = (
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/DropDown.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/EmojiPicker.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/IQKeyboardManager.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SVProgressHUD.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SnapKit.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/SwipeCellKit.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/linphonesw.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/bctoolbox-ios.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/bctoolbox-tester.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/bctoolbox.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/belcard.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/belle-sip.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/belr.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/exampleplugin.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/lime.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/limetester.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/linphone.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/linphonetester.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/mediastreamer2.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/msamr.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/mscodec2.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/msopenh264.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/mssilk.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/mswebrtc.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/ortp.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/ZXing.framework",
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-linphone/Pods-linphone-frameworks.sh\"\n";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
E41455F2A82C6AEC45A47409 /* [CP] Embed Pods Frameworks */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputPaths = (
|
||||
"${PODS_ROOT}/Target Support Files/Pods-CallUITests/Pods-CallUITests-frameworks.sh",
|
||||
"${BUILT_PRODUCTS_DIR}/linphone-sdk/linphonesw.framework",
|
||||
"${PODS_XCFRAMEWORKS_BUILD_DIR}/linphone-sdk/bctoolbox-ios.framework/bctoolbox-ios",
|
||||
"${PODS_XCFRAMEWORKS_BUILD_DIR}/linphone-sdk/bctoolbox-tester.framework/bctoolbox-tester",
|
||||
"${PODS_XCFRAMEWORKS_BUILD_DIR}/linphone-sdk/bctoolbox.framework/bctoolbox",
|
||||
"${PODS_XCFRAMEWORKS_BUILD_DIR}/linphone-sdk/belcard.framework/belcard",
|
||||
"${PODS_XCFRAMEWORKS_BUILD_DIR}/linphone-sdk/belle-sip.framework/belle-sip",
|
||||
"${PODS_XCFRAMEWORKS_BUILD_DIR}/linphone-sdk/belr.framework/belr",
|
||||
"${PODS_XCFRAMEWORKS_BUILD_DIR}/linphone-sdk/exampleplugin.framework/exampleplugin",
|
||||
"${PODS_XCFRAMEWORKS_BUILD_DIR}/linphone-sdk/lime.framework/lime",
|
||||
"${PODS_XCFRAMEWORKS_BUILD_DIR}/linphone-sdk/limetester.framework/limetester",
|
||||
"${PODS_XCFRAMEWORKS_BUILD_DIR}/linphone-sdk/linphone.framework/linphone",
|
||||
"${PODS_XCFRAMEWORKS_BUILD_DIR}/linphone-sdk/linphonetester.framework/linphonetester",
|
||||
"${PODS_XCFRAMEWORKS_BUILD_DIR}/linphone-sdk/mediastreamer2.framework/mediastreamer2",
|
||||
"${PODS_XCFRAMEWORKS_BUILD_DIR}/linphone-sdk/msamr.framework/msamr",
|
||||
"${PODS_XCFRAMEWORKS_BUILD_DIR}/linphone-sdk/mscodec2.framework/mscodec2",
|
||||
"${PODS_XCFRAMEWORKS_BUILD_DIR}/linphone-sdk/msopenh264.framework/msopenh264",
|
||||
"${PODS_XCFRAMEWORKS_BUILD_DIR}/linphone-sdk/mssilk.framework/mssilk",
|
||||
"${PODS_XCFRAMEWORKS_BUILD_DIR}/linphone-sdk/mswebrtc.framework/mswebrtc",
|
||||
"${PODS_XCFRAMEWORKS_BUILD_DIR}/linphone-sdk/ortp.framework/ortp",
|
||||
"${PODS_XCFRAMEWORKS_BUILD_DIR}/linphone-sdk/ZXing.framework/ZXing",
|
||||
);
|
||||
name = "[CP] Embed Pods Frameworks";
|
||||
outputPaths = (
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/linphonesw.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/bctoolbox-ios.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/bctoolbox-tester.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/bctoolbox.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/belcard.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/belle-sip.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/belr.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/exampleplugin.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/lime.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/limetester.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/linphone.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/linphonetester.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/mediastreamer2.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/msamr.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/mscodec2.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/msopenh264.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/mssilk.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/mswebrtc.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/ortp.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/ZXing.framework",
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-CallUITests/Pods-CallUITests-frameworks.sh\"\n";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
FF5E503C6A83D3C5D8F4CE83 /* [CP] Check Pods Manifest.lock */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputFileListPaths = (
|
||||
);
|
||||
inputPaths = (
|
||||
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
|
||||
"${PODS_ROOT}/Manifest.lock",
|
||||
);
|
||||
name = "[CP] Check Pods Manifest.lock";
|
||||
outputFileListPaths = (
|
||||
);
|
||||
outputPaths = (
|
||||
"$(DERIVED_FILE_DIR)/Pods-CallUITests-checkManifestLockResult.txt",
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
/* End PBXShellScriptBuildPhase section */
|
||||
|
||||
/* Begin PBXSourcesBuildPhase section */
|
||||
|
|
@ -5016,6 +5302,7 @@
|
|||
633671611BCBAAD200BFCBDE /* ChatConversationCreateView.m in Sources */,
|
||||
634610061B61330300548952 /* UILabel+Boldify.m in Sources */,
|
||||
2248E90E12F7E4CF00220D9C /* UIDigitButton.m in Sources */,
|
||||
D7CBC0F72A8E1669009182D8 /* Mode.swift in Sources */,
|
||||
633756391B67BAF400E21BAD /* SideMenuTableView.m in Sources */,
|
||||
C63F7245285A24B10066163B /* VoipConferenceAudioOnlyView.swift in Sources */,
|
||||
2214EB7A12F846B1002A5394 /* UICallButton.m in Sources */,
|
||||
|
|
@ -5041,6 +5328,7 @@
|
|||
C63F7214285A24B10066163B /* Duration.swift in Sources */,
|
||||
C63F723B285A24B10066163B /* AudioRouteUtils.swift in Sources */,
|
||||
C63F7269285A24B10066163B /* StyledLabel.swift in Sources */,
|
||||
D7CBC0FD2A8E3D3F009182D8 /* VoipSpeakerCell.swift in Sources */,
|
||||
C63F722C285A24B10066163B /* UIColorExtensions.swift in Sources */,
|
||||
D3F83F8E15822ABE00336684 /* PhoneMainView.m in Sources */,
|
||||
C63F7251285A24B10066163B /* NumpadView.swift in Sources */,
|
||||
|
|
@ -5094,6 +5382,7 @@
|
|||
C63F7238285A24B10066163B /* ConferenceParticipantData.swift in Sources */,
|
||||
63B81A0D1B57DA33009604A6 /* TPKeyboardAvoidingCollectionView.m in Sources */,
|
||||
D7C6DE832948CF3100756E03 /* DropDownCell.swift in Sources */,
|
||||
D7CBC0FF2A8E3E11009182D8 /* ConferenceSpeakerData.swift in Sources */,
|
||||
C63F726D285A24B10066163B /* ProviderDelegate.swift in Sources */,
|
||||
C63F7266285A24B10066163B /* UICallTimer.swift in Sources */,
|
||||
C6548821292D32FA00BF646B /* ConferenceCallView.swift in Sources */,
|
||||
|
|
@ -5145,6 +5434,7 @@
|
|||
C63F725A285A24B10066163B /* OutgoingCallView.swift in Sources */,
|
||||
63FB30351A680E73008CA393 /* UIRoundedImageView.m in Sources */,
|
||||
635775251B6673EC00C8B704 /* HistoryDetailsTableView.m in Sources */,
|
||||
D7CBC0FB2A8E3D1E009182D8 /* SpeakersListView.swift in Sources */,
|
||||
C63F720E285A24B10066163B /* CallManager.swift in Sources */,
|
||||
63C441C31BBC23ED0053DC5E /* UIAssistantTextField.m in Sources */,
|
||||
D35860D615B549B500513429 /* Utils.m in Sources */,
|
||||
|
|
@ -5772,6 +6062,7 @@
|
|||
/* Begin XCBuildConfiguration section */
|
||||
1D6058940D05DD3E006BFB54 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = 99EE66591AAE0A56B2752224 /* Pods-linphone.debug.xcconfig */;
|
||||
buildSettings = {
|
||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = "$(inherited)";
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
|
|
@ -5826,7 +6117,7 @@
|
|||
"-DENABLE_QRCODE=TRUE",
|
||||
"-DENABLE_SMS_INVITE=TRUE",
|
||||
"$(inherited)",
|
||||
"-DLINPHONE_SDK_VERSION=\\\"5.2.79\\\"",
|
||||
"-DLINPHONE_SDK_VERSION=\\\"5.3.0-alpha.173+990473d73\\\"",
|
||||
);
|
||||
OTHER_SWIFT_FLAGS = "$(inherited)";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = org.linphone.phone;
|
||||
|
|
@ -5901,6 +6192,7 @@
|
|||
};
|
||||
228B19A71302902F00F154D3 /* DistributionAdhoc */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = E4178B3BF1512DBE49E7D6C9 /* Pods-linphone.distributionadhoc.xcconfig */;
|
||||
buildSettings = {
|
||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = "$(inherited)";
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
|
|
@ -5952,7 +6244,7 @@
|
|||
"-DENABLE_QRCODE=TRUE",
|
||||
"-DENABLE_SMS_INVITE=TRUE",
|
||||
"$(inherited)",
|
||||
"-DLINPHONE_SDK_VERSION=\\\"5.2.79\\\"",
|
||||
"-DLINPHONE_SDK_VERSION=\\\"5.3.0-alpha.173+990473d73\\\"",
|
||||
);
|
||||
OTHER_SWIFT_FLAGS = "$(inherited)";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = org.linphone.phone;
|
||||
|
|
@ -6026,6 +6318,7 @@
|
|||
};
|
||||
22F3D55613CC3C9100A0DA02 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = 68F0AD8BF6C2A009468601CF /* Pods-linphone.release.xcconfig */;
|
||||
buildSettings = {
|
||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = "$(inherited)";
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
|
|
@ -6077,7 +6370,7 @@
|
|||
"-DENABLE_QRCODE=TRUE",
|
||||
"-DENABLE_SMS_INVITE=TRUE",
|
||||
"$(inherited)",
|
||||
"-DLINPHONE_SDK_VERSION=\\\"5.2.79\\\"",
|
||||
"-DLINPHONE_SDK_VERSION=\\\"5.3.0-alpha.173+990473d73\\\"",
|
||||
);
|
||||
OTHER_SWIFT_FLAGS = "$(inherited)";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = org.linphone.phone;
|
||||
|
|
@ -6150,6 +6443,7 @@
|
|||
};
|
||||
22F51EE8107FA53D00F98953 /* Distribution */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = 86CA4651CCBB3B93873B787A /* Pods-linphone.distribution.xcconfig */;
|
||||
buildSettings = {
|
||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = "$(inherited)";
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
|
|
@ -6201,7 +6495,7 @@
|
|||
"-DENABLE_QRCODE=TRUE",
|
||||
"-DENABLE_SMS_INVITE=TRUE",
|
||||
"$(inherited)",
|
||||
"-DLINPHONE_SDK_VERSION=\\\"5.3.0-alpha.234+871ded4\\\"",
|
||||
"-DLINPHONE_SDK_VERSION=\\\"5.3.0-alpha.173+990473d73\\\"",
|
||||
);
|
||||
OTHER_SWIFT_FLAGS = "$(inherited)";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = org.linphone.phone;
|
||||
|
|
@ -6395,6 +6689,7 @@
|
|||
};
|
||||
6637AF95288593AF00965733 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = A8E18CF5D897E58D43C78844 /* Pods-CallUITests.debug.xcconfig */;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
|
|
@ -6456,6 +6751,7 @@
|
|||
};
|
||||
6637AF96288593AF00965733 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = 5A0745F1212040EAEC11A72A /* Pods-CallUITests.release.xcconfig */;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
|
|
@ -6503,6 +6799,7 @@
|
|||
};
|
||||
6637AF97288593AF00965733 /* Distribution */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = 67039DAF1162F13644E2B622 /* Pods-CallUITests.distribution.xcconfig */;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
|
|
@ -6550,6 +6847,7 @@
|
|||
};
|
||||
6637AF98288593AF00965733 /* DistributionAdhoc */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = 8E72C2B55BD41E35CBD59144 /* Pods-CallUITests.distributionadhoc.xcconfig */;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
|
|
@ -6644,6 +6942,7 @@
|
|||
};
|
||||
EA5F25E2232BD3E300475F2E /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = 3D777FF83A489472E2530A85 /* Pods-msgNotificationService.debug.xcconfig */;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
APPLICATION_EXTENSION_API_ONLY = YES;
|
||||
|
|
@ -6699,6 +6998,7 @@
|
|||
};
|
||||
EA5F25E3232BD3E300475F2E /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = 2805D857950EB54DE9EC76F3 /* Pods-msgNotificationService.release.xcconfig */;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
APPLICATION_EXTENSION_API_ONLY = YES;
|
||||
|
|
@ -6750,6 +7050,7 @@
|
|||
};
|
||||
EA5F25E4232BD3E300475F2E /* Distribution */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = 1DB171367FBC063A92DFF671 /* Pods-msgNotificationService.distribution.xcconfig */;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
APPLICATION_EXTENSION_API_ONLY = YES;
|
||||
|
|
@ -6801,6 +7102,7 @@
|
|||
};
|
||||
EA5F25E5232BD3E300475F2E /* DistributionAdhoc */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = 44CD55BCF1F7605D70B925D6 /* Pods-msgNotificationService.distributionadhoc.xcconfig */;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
APPLICATION_EXTENSION_API_ONLY = YES;
|
||||
|
|
@ -6852,6 +7154,7 @@
|
|||
};
|
||||
EA8CB835239F96CA00C330CC /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = 4ABDEF5B597BAA50AB49EEE2 /* Pods-msgNotificationContent.debug.xcconfig */;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
APPLICATION_EXTENSION_API_ONLY = YES;
|
||||
|
|
@ -6907,6 +7210,7 @@
|
|||
};
|
||||
EA8CB836239F96CA00C330CC /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = C8153405A74E7E99A5AE0926 /* Pods-msgNotificationContent.release.xcconfig */;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
APPLICATION_EXTENSION_API_ONLY = YES;
|
||||
|
|
@ -6958,6 +7262,7 @@
|
|||
};
|
||||
EA8CB837239F96CA00C330CC /* Distribution */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = 413401F544CB2668F07E0EA0 /* Pods-msgNotificationContent.distribution.xcconfig */;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
APPLICATION_EXTENSION_API_ONLY = YES;
|
||||
|
|
@ -7009,6 +7314,7 @@
|
|||
};
|
||||
EA8CB838239F96CA00C330CC /* DistributionAdhoc */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = 13DBC5D3188A145CD7240456 /* Pods-msgNotificationContent.distributionadhoc.xcconfig */;
|
||||
buildSettings = {
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
APPLICATION_EXTENSION_API_ONLY = YES;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue