|
@@ -16,7 +16,7 @@ import Photos
|
|
|
import UIKit
|
|
|
|
|
|
struct WithDrawModel {
|
|
|
- var type: Int // 0:拖动; 1:预览播放暂停 2: 录音结束 3: 删除录音 4: 删除字幕
|
|
|
+ var type: Int // 0:拖动; 1:预览播放暂停 2: 录音结束 3: 删除录音
|
|
|
var timestamp: Double
|
|
|
var deletedVoices: [(PQVoiceModel, Int)]?
|
|
|
// add by ak 保存删除的字幕数据用于恢复
|
|
@@ -463,16 +463,14 @@ public class BFRecordScreenController: BFBaseViewController {
|
|
|
let newRange = CMTimeRange(start: CMTime(seconds: model.startTime, preferredTimescale: 1000), end: CMTime(seconds: model.endTime, preferredTimescale: 1000))
|
|
|
|
|
|
var deletedVoices = [(PQVoiceModel, Int)]()
|
|
|
-
|
|
|
+ //要删除的字幕
|
|
|
+ var deletedTitlesTemp = [(PQEditSubTitleModel, Int)]()
|
|
|
for (i, m) in sself.itemModels[sself.currItemModelIndex].voiceStickers.enumerated() {
|
|
|
let originRange = CMTimeRange(start: CMTime(seconds: m.startTime, preferredTimescale: 1000), end: CMTime(seconds: m.endTime, preferredTimescale: 1000))
|
|
|
|
|
|
if CMTimeRangeGetIntersection(originRange, otherRange: newRange).duration.seconds > 0 {
|
|
|
deletedVoices.append((m, i))
|
|
|
- for titleS in sself.itemModels[sself.currItemModelIndex].titleStickers {
|
|
|
- if titleS.audioFilePath == m.wavFilePath {}
|
|
|
- }
|
|
|
-
|
|
|
+ deletedTitlesTemp += sself.deleteTitles(voiceModel: m)
|
|
|
continue
|
|
|
}
|
|
|
}
|
|
@@ -491,6 +489,7 @@ public class BFRecordScreenController: BFBaseViewController {
|
|
|
// 添加撤销记录点
|
|
|
var event = WithDrawModel(type: 2, timestamp: model.startTime)
|
|
|
event.deletedVoices = deletedVoices
|
|
|
+ event.deletedTittles = deletedTitlesTemp
|
|
|
sself.events.append(event)
|
|
|
|
|
|
if sself.itemModels[sself.currItemModelIndex].mediaType == .IMAGE {
|
|
@@ -818,24 +817,28 @@ public class BFRecordScreenController: BFBaseViewController {
|
|
|
|
|
|
/// 删除指定段落的所有字幕 数据
|
|
|
/// - Parameter voiceModel: 删除的音频数据
|
|
|
- func deleteTitles(voiceModel: PQVoiceModel) {
|
|
|
+ func deleteTitles(voiceModel: PQVoiceModel) -> [(PQEditSubTitleModel, Int)]{
|
|
|
BFLog(message: "itemModels[currItemModelIndex].titleStickers 删除前:\(itemModels[currItemModelIndex].titleStickers.count) model.startTime: \(voiceModel.startTime) model.end: \(voiceModel.endTime)")
|
|
|
- for title in itemModels[currItemModelIndex].titleStickers {
|
|
|
- if let index = itemModels[currItemModelIndex].titleStickers.firstIndex(of: title) {
|
|
|
- if title.timelineIn >= voiceModel.startTime, title.timelineOut <= voiceModel.endTime {
|
|
|
- // 删除前数据存入缓存
|
|
|
- let sutbitle = itemModels[currItemModelIndex].titleStickers[index]
|
|
|
- events.append(WithDrawModel(type: 4, timestamp: currentAssetProgress.seconds, deletedTittles: [(sutbitle, isStopAtRecordRange)]))
|
|
|
-
|
|
|
- itemModels[currItemModelIndex].titleStickers.remove(at: index)
|
|
|
- }
|
|
|
+ var deleteTemp = [(PQEditSubTitleModel, Int)]()
|
|
|
+
|
|
|
+ for (index,title) in itemModels[currItemModelIndex].titleStickers.enumerated() {
|
|
|
+ if title.timelineIn >= voiceModel.startTime, title.timelineOut <= voiceModel.endTime {
|
|
|
+ deleteTemp.append((title,index))
|
|
|
}
|
|
|
+ //从原数组中删除
|
|
|
+ if let index = itemModels[currItemModelIndex].titleStickers.firstIndex(of: title){
|
|
|
+ itemModels[currItemModelIndex].titleStickers.remove(at: index)
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
}
|
|
|
BFLog(message: "itemModels[currItemModelIndex].titleStickers 删除后:\(itemModels[currItemModelIndex].titleStickers.count)")
|
|
|
|
|
|
// 清空字幕UI
|
|
|
subtitleLabel.text = ""
|
|
|
subtitleLabel.backgroundColor = UIColor.clear
|
|
|
+
|
|
|
+ return deleteTemp
|
|
|
}
|
|
|
|
|
|
@objc func deleteRecorded() {
|
|
@@ -865,9 +868,9 @@ public class BFRecordScreenController: BFBaseViewController {
|
|
|
}
|
|
|
searchStopAtRecordRange()
|
|
|
|
|
|
- deleteTitles(voiceModel: model)
|
|
|
+
|
|
|
var event = WithDrawModel(type: 3, timestamp: currentAssetProgress.seconds, deletedVoices: [(model, isStopAtRecordRange)])
|
|
|
- event.deletedTittles = nil
|
|
|
+ event.deletedTittles = deleteTitles(voiceModel: model)
|
|
|
events.append(event)
|
|
|
}
|
|
|
}
|