-
Notifications
You must be signed in to change notification settings - Fork 229
Expand file tree
/
Copy pathBaseViewController.swift
More file actions
122 lines (100 loc) · 3.14 KB
/
BaseViewController.swift
File metadata and controls
122 lines (100 loc) · 3.14 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
//
// BaseVC.swift
// APIExample
//
// Created by 张乾泽 on 2020/4/17.
// Copyright © 2020 Agora Corp. All rights reserved.
//
import Cocoa
import AGEVideoLayout
protocol BaseView: NSViewController {
func showAlert(title: String?, message: String)
func viewWillBeRemovedFromSplitView()
}
class BaseViewController: NSViewController, BaseView {
var configs: [String:Any] = [:]
func showAlert(title: String? = nil, message: String) {
let alert = NSAlert()
alert.alertStyle = .critical
alert.addButton(withTitle: "OK")
if let stitle = title {
alert.messageText = stitle
}
alert.informativeText = message
alert.runModal()
}
func getAudioLabel(uid:UInt, isLocal:Bool) -> String {
return "AUDIO ONLY\n\(isLocal ? "Local" : "Remote")\n\(uid)"
}
func viewWillBeRemovedFromSplitView() {}
}
extension AGEVideoContainer {
func layoutStream(views: [NSView]) {
let count = views.count
var layout: AGEVideoLayout
switch count {
case 1:
layout = AGEVideoLayout(level: 0)
.itemSize(.scale(CGSize(width: 1, height: 1)))
break
case 2:
layout = AGEVideoLayout(level: 0)
.itemSize(.scale(CGSize(width: 1, height: 0.5)))
break
case 4:
layout = AGEVideoLayout(level: 0)
.itemSize(.scale(CGSize(width: 0.5, height: 0.5)))
break
case 9:
layout = AGEVideoLayout(level: 0)
.itemSize(.scale(CGSize(width: 0.33, height: 0.33)))
break
case 16:
layout = AGEVideoLayout(level: 0)
.itemSize(.scale(CGSize(width: 0.25, height: 0.25)))
break
default:
return
}
self.listCount { (level) -> Int in
return views.count
}.listItem { (index) -> AGEView in
return views[index.item]
}
self.setLayouts([layout])
}
func layoutStream2(views: [NSView]) {
let count = views.count
var layout: AGEVideoLayout
switch count {
case 2:
layout = AGEVideoLayout(level: 0)
.itemSize(.scale(CGSize(width: 0.5, height: 1)))
break
default:
return
}
self.listCount { (level) -> Int in
return views.count
}.listItem { (index) -> AGEView in
return views[index.item]
}
self.setLayouts([layout])
}
func layoutStream3x3(views: [NSView]) {
let count = views.count
var layout: AGEVideoLayout
if count > 9 {
return
} else {
layout = AGEVideoLayout(level: 0)
.itemSize(.scale(CGSize(width: 0.33, height: 0.33)))
}
self.listCount { (level) -> Int in
return views.count
}.listItem { (index) -> AGEView in
return views[index.item]
}
self.setLayouts([layout])
}
}