diff --git a/AppCheck.xcodeproj/project.pbxproj b/AppCheck.xcodeproj/project.pbxproj index db39d2c..601bfbd 100644 --- a/AppCheck.xcodeproj/project.pbxproj +++ b/AppCheck.xcodeproj/project.pbxproj @@ -86,6 +86,7 @@ 54953E6F23E44CD00054345C /* TVCHostDetails.swift in Sources */ = {isa = PBXBuildFile; fileRef = 54953E6E23E44CD00054345C /* TVCHostDetails.swift */; }; 54953E7123E473F10054345C /* Settings.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 54953E7023E473F10054345C /* Settings.bundle */; }; 549A96D62501198400C565FA /* VCEditText.swift in Sources */ = {isa = PBXBuildFile; fileRef = 549A96D52501198400C565FA /* VCEditText.swift */; }; + 549A96DA250419B200C565FA /* CoOccurrence.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 549A96D8250419B200C565FA /* CoOccurrence.storyboard */; }; 549D6ED524D5BFDB0032E498 /* TVCAppSearch.swift in Sources */ = {isa = PBXBuildFile; fileRef = 549D6ED424D5BFDB0032E498 /* TVCAppSearch.swift */; }; 549ECD9D24A7AD550097571C /* CustomAlert.swift in Sources */ = {isa = PBXBuildFile; fileRef = 549ECD9C24A7AD550097571C /* CustomAlert.swift */; }; 54A0CC0924E30C56009B5EC1 /* Recordings.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 54A0CC0724E30C56009B5EC1 /* Recordings.storyboard */; }; @@ -292,6 +293,7 @@ 54953E6E23E44CD00054345C /* TVCHostDetails.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TVCHostDetails.swift; sourceTree = ""; }; 54953E7023E473F10054345C /* Settings.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; path = Settings.bundle; sourceTree = ""; }; 549A96D52501198400C565FA /* VCEditText.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VCEditText.swift; sourceTree = ""; }; + 549A96D9250419B200C565FA /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/CoOccurrence.storyboard; sourceTree = ""; }; 549D6ED424D5BFDB0032E498 /* TVCAppSearch.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TVCAppSearch.swift; sourceTree = ""; }; 549ECD9C24A7AD550097571C /* CustomAlert.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CustomAlert.swift; sourceTree = ""; }; 54A0CC0824E30C56009B5EC1 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Recordings.storyboard; sourceTree = ""; }; @@ -610,6 +612,7 @@ 541AC5E02399498B00A769D7 /* LaunchScreen.storyboard */, 541AC5DB2399498A00A769D7 /* Main.storyboard */, 54A0CC0A24E30D6F009B5EC1 /* Requests.storyboard */, + 549A96D8250419B200C565FA /* CoOccurrence.storyboard */, 54A0CC0724E30C56009B5EC1 /* Recordings.storyboard */, 543078C124B60F3B00278F2D /* Settings.storyboard */, ); @@ -1009,6 +1012,7 @@ 543078C324B60F3B00278F2D /* Settings.storyboard in Resources */, 543078AA24B5E12500278F2D /* snap2.caf in Resources */, 54A0CC0C24E30D6F009B5EC1 /* Requests.storyboard in Resources */, + 549A96DA250419B200C565FA /* CoOccurrence.storyboard in Resources */, 54686A9124FD42950084934D /* tut-cooccurrence.md in Resources */, 54686A8E24FD42950084934D /* tut-welcome-2.md in Resources */, 541A957623E602DF00C09C19 /* LaunchIcon.png in Resources */, @@ -1239,6 +1243,14 @@ name = Settings.storyboard; sourceTree = ""; }; + 549A96D8250419B200C565FA /* CoOccurrence.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 549A96D9250419B200C565FA /* Base */, + ); + name = CoOccurrence.storyboard; + sourceTree = ""; + }; 54A0CC0724E30C56009B5EC1 /* Recordings.storyboard */ = { isa = PBXVariantGroup; children = ( diff --git a/main/GUI/Base.lproj/CoOccurrence.storyboard b/main/GUI/Base.lproj/CoOccurrence.storyboard new file mode 100644 index 0000000..1a0ab43 --- /dev/null +++ b/main/GUI/Base.lproj/CoOccurrence.storyboard @@ -0,0 +1,207 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/main/GUI/Base.lproj/Requests.storyboard b/main/GUI/Base.lproj/Requests.storyboard index 6f8c431..5cc3372 100644 --- a/main/GUI/Base.lproj/Requests.storyboard +++ b/main/GUI/Base.lproj/Requests.storyboard @@ -494,204 +494,11 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/main/Recordings/TVCRecordingDetails.swift b/main/Recordings/TVCRecordingDetails.swift index a2a34ef..cb10c66 100644 --- a/main/Recordings/TVCRecordingDetails.swift +++ b/main/Recordings/TVCRecordingDetails.swift @@ -129,7 +129,7 @@ class TVCRecordingDetails: UITableViewController, EditActionsRemove { if noResults { return nil } let buttons = [ UIMenuItem(title: "All requests", action: #selector(openInLogs)), -// UIMenuItem(title: "CoOccurrence", action: #selector(openCoOccurrence)) + UIMenuItem(title: "Co-Occurrence", action: #selector(openCoOccurrence)) ] if cellMenu.start(tableView, indexPath, items: buttons) { if showRaw { @@ -161,13 +161,11 @@ class TVCRecordingDetails: UITableViewController, EditActionsRemove { copyDomain = nil } -// @objc private func openCoOccurrence() { -// if let dom = copyDomain, let vc: VCCoOccurrence = storyboard?.load("IBCoOccurrence") { -// vc.domainName = dom -// vc.isFQDN = true -// present(vc, animated: true) -// } -// cellMenu.reset() -// copyDomain = nil -// } + @objc private func openCoOccurrence() { + if let dom = copyDomain { + present(VCCoOccurrence.make(dom), animated: true) + } + cellMenu.reset() + copyDomain = nil + } } diff --git a/main/Requests/Analysis/VCAnalysisBar.swift b/main/Requests/Analysis/VCAnalysisBar.swift index cc4f75e..ff546c7 100644 --- a/main/Requests/Analysis/VCAnalysisBar.swift +++ b/main/Requests/Analysis/VCAnalysisBar.swift @@ -48,13 +48,10 @@ class VCAnalysisBar: UIViewController, UITabBarDelegate { } private func openCoOccurrence() { - guard let delegate = parent as? AnalysisBarDelegate, - let vc: VCCoOccurrence = storyboard?.load("IBCoOccurrence") else { + guard let delegate = parent as? AnalysisBarDelegate else { return } - let info = delegate.analysisBarWillOpenCoOccurrence() - vc.domainName = info.domain - vc.isFQDN = info.isFQDN - present(vc, animated: true) + let x = delegate.analysisBarWillOpenCoOccurrence() + present(VCCoOccurrence.make(x.domain, isFQDN: x.isFQDN), animated: true) } } diff --git a/main/Requests/Analysis/VCCoOccurrence.swift b/main/Requests/Analysis/VCCoOccurrence.swift index 3b99ee1..9b5bfca 100644 --- a/main/Requests/Analysis/VCCoOccurrence.swift +++ b/main/Requests/Analysis/VCCoOccurrence.swift @@ -14,6 +14,14 @@ class VCCoOccurrence: UIViewController, UITableViewDataSource { private var logTimeDelta: CGFloat = 1 private var logMaxCount: CGFloat = 1 + static func make(_ domain: String, isFQDN: Bool = true) -> Self { + let story = UIStoryboard(name: "CoOccurrence", bundle: nil) + let vc = story.instantiateInitialViewController() as! Self + vc.domainName = domain + vc.isFQDN = isFQDN + return vc + } + override func viewDidLoad() { super.viewDidLoad() selectedTime = Prefs.ContextAnalyis.CoOccurrenceTime // calls `didSet` and `logTimeDelta`