New call UI including hold & resume
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"info" : {
|
||||
"version" : 1,
|
||||
"author" : "xcode"
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
}
|
||||
}
|
|
@ -1,17 +1,17 @@
|
|||
{
|
||||
"images" : [
|
||||
{
|
||||
"filename" : "call_audio_mute_on_icon.png",
|
||||
"filename" : "Microphone.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"filename" : "call_audio_mute_on_icon@2x.png",
|
||||
"filename" : "Microphone@2x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"filename" : "call_audio_mute_on_icon@3x.png",
|
||||
"filename" : "Microphone@3x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
|
@ -21,6 +21,6 @@
|
|||
"version" : 1
|
||||
},
|
||||
"properties" : {
|
||||
"template-rendering-intent" : "template"
|
||||
"template-rendering-intent" : "original"
|
||||
}
|
||||
}
|
||||
|
|
BIN
Riot/Assets/Images.xcassets/Call/call_audio_mute_off_icon.imageset/Microphone.png
vendored
Normal file
After Width: | Height: | Size: 1.9 KiB |
BIN
Riot/Assets/Images.xcassets/Call/call_audio_mute_off_icon.imageset/Microphone@2x.png
vendored
Normal file
After Width: | Height: | Size: 4.9 KiB |
BIN
Riot/Assets/Images.xcassets/Call/call_audio_mute_off_icon.imageset/Microphone@3x.png
vendored
Normal file
After Width: | Height: | Size: 8.8 KiB |
Before Width: | Height: | Size: 423 B |
Before Width: | Height: | Size: 719 B |
Before Width: | Height: | Size: 1.1 KiB |
|
@ -1,17 +1,17 @@
|
|||
{
|
||||
"images" : [
|
||||
{
|
||||
"filename" : "call_audio_mute_off_icon.png",
|
||||
"filename" : "Microphone Off.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"filename" : "call_audio_mute_off_icon@2x.png",
|
||||
"filename" : "Microphone Off@2x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"filename" : "call_audio_mute_off_icon@3x.png",
|
||||
"filename" : "Microphone Off@3x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
|
@ -21,6 +21,6 @@
|
|||
"version" : 1
|
||||
},
|
||||
"properties" : {
|
||||
"template-rendering-intent" : "template"
|
||||
"template-rendering-intent" : "original"
|
||||
}
|
||||
}
|
||||
|
|
BIN
Riot/Assets/Images.xcassets/Call/call_audio_mute_on_icon.imageset/Microphone Off.png
vendored
Normal file
After Width: | Height: | Size: 2.3 KiB |
BIN
Riot/Assets/Images.xcassets/Call/call_audio_mute_on_icon.imageset/Microphone Off@2x.png
vendored
Normal file
After Width: | Height: | Size: 5.4 KiB |
BIN
Riot/Assets/Images.xcassets/Call/call_audio_mute_on_icon.imageset/Microphone Off@3x.png
vendored
Normal file
After Width: | Height: | Size: 9.3 KiB |
Before Width: | Height: | Size: 455 B |
Before Width: | Height: | Size: 863 B |
Before Width: | Height: | Size: 1.2 KiB |
|
@ -1,17 +1,17 @@
|
|||
{
|
||||
"images" : [
|
||||
{
|
||||
"filename" : "call_hangup_big.png",
|
||||
"filename" : "End Call.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"filename" : "call_hangup_big@2x.png",
|
||||
"filename" : "End Call@2x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"filename" : "call_hangup_big@3x.png",
|
||||
"filename" : "End Call@3x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
|
@ -21,6 +21,6 @@
|
|||
"version" : 1
|
||||
},
|
||||
"properties" : {
|
||||
"template-rendering-intent" : "template"
|
||||
"template-rendering-intent" : "original"
|
||||
}
|
||||
}
|
||||
|
|
BIN
Riot/Assets/Images.xcassets/Call/call_hangup_large.imageset/End Call.png
vendored
Normal file
After Width: | Height: | Size: 1 KiB |
BIN
Riot/Assets/Images.xcassets/Call/call_hangup_large.imageset/End Call@2x.png
vendored
Normal file
After Width: | Height: | Size: 1.7 KiB |
BIN
Riot/Assets/Images.xcassets/Call/call_hangup_large.imageset/End Call@3x.png
vendored
Normal file
After Width: | Height: | Size: 2.6 KiB |
Before Width: | Height: | Size: 598 B |
Before Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 1.8 KiB |
Before Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 2.1 KiB |
Before Width: | Height: | Size: 2.6 KiB |
Before Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 2.1 KiB |
Before Width: | Height: | Size: 3.1 KiB |
|
@ -1,17 +1,17 @@
|
|||
{
|
||||
"images" : [
|
||||
{
|
||||
"filename" : "icon.png",
|
||||
"filename" : "iOS (24).png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"filename" : "icon@2x.png",
|
||||
"filename" : "iOS (24)@2x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"filename" : "icon@3x.png",
|
||||
"filename" : "iOS (24)@3x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
|
@ -19,5 +19,8 @@
|
|||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
},
|
||||
"properties" : {
|
||||
"template-rendering-intent" : "original"
|
||||
}
|
||||
}
|
BIN
Riot/Assets/Images.xcassets/Call/call_more_icon.imageset/iOS (24).png
vendored
Normal file
After Width: | Height: | Size: 217 B |
BIN
Riot/Assets/Images.xcassets/Call/call_more_icon.imageset/iOS (24)@2x.png
vendored
Normal file
After Width: | Height: | Size: 337 B |
BIN
Riot/Assets/Images.xcassets/Call/call_more_icon.imageset/iOS (24)@3x.png
vendored
Normal file
After Width: | Height: | Size: 301 B |
|
@ -1,17 +1,17 @@
|
|||
{
|
||||
"images" : [
|
||||
{
|
||||
"filename" : "icon.png",
|
||||
"filename" : "Paused.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"filename" : "icon@2x.png",
|
||||
"filename" : "Paused@2x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"filename" : "icon@3x.png",
|
||||
"filename" : "Paused@3x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
|
@ -19,5 +19,8 @@
|
|||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
},
|
||||
"properties" : {
|
||||
"template-rendering-intent" : "original"
|
||||
}
|
||||
}
|
BIN
Riot/Assets/Images.xcassets/Call/call_paused_icon.imageset/Paused.png
vendored
Normal file
After Width: | Height: | Size: 640 B |
BIN
Riot/Assets/Images.xcassets/Call/call_paused_icon.imageset/Paused@2x.png
vendored
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
Riot/Assets/Images.xcassets/Call/call_paused_icon.imageset/Paused@3x.png
vendored
Normal file
After Width: | Height: | Size: 1.4 KiB |
26
Riot/Assets/Images.xcassets/Call/call_pip_icon.imageset/Contents.json
vendored
Normal file
|
@ -0,0 +1,26 @@
|
|||
{
|
||||
"images" : [
|
||||
{
|
||||
"filename" : "picture_in_picture_alt-24px 1.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"filename" : "picture_in_picture_alt-24px 1@2x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"filename" : "picture_in_picture_alt-24px 1@3x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
],
|
||||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
},
|
||||
"properties" : {
|
||||
"template-rendering-intent" : "original"
|
||||
}
|
||||
}
|
BIN
Riot/Assets/Images.xcassets/Call/call_pip_icon.imageset/picture_in_picture_alt-24px 1.png
vendored
Normal file
After Width: | Height: | Size: 228 B |
BIN
Riot/Assets/Images.xcassets/Call/call_pip_icon.imageset/picture_in_picture_alt-24px 1@2x.png
vendored
Normal file
After Width: | Height: | Size: 307 B |
BIN
Riot/Assets/Images.xcassets/Call/call_pip_icon.imageset/picture_in_picture_alt-24px 1@3x.png
vendored
Normal file
After Width: | Height: | Size: 478 B |
|
@ -1,17 +1,17 @@
|
|||
{
|
||||
"images" : [
|
||||
{
|
||||
"filename" : "call_video_mute_on_icon.png",
|
||||
"filename" : "Video.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"filename" : "call_video_mute_on_icon@2x.png",
|
||||
"filename" : "Video@2x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"filename" : "call_video_mute_on_icon@3x.png",
|
||||
"filename" : "Video@3x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
|
@ -21,6 +21,6 @@
|
|||
"version" : 1
|
||||
},
|
||||
"properties" : {
|
||||
"template-rendering-intent" : "template"
|
||||
"template-rendering-intent" : "original"
|
||||
}
|
||||
}
|
||||
|
|
BIN
Riot/Assets/Images.xcassets/Call/call_video_mute_off_icon.imageset/Video.png
vendored
Normal file
After Width: | Height: | Size: 1.7 KiB |
BIN
Riot/Assets/Images.xcassets/Call/call_video_mute_off_icon.imageset/Video@2x.png
vendored
Normal file
After Width: | Height: | Size: 4.6 KiB |
BIN
Riot/Assets/Images.xcassets/Call/call_video_mute_off_icon.imageset/Video@3x.png
vendored
Normal file
After Width: | Height: | Size: 8.4 KiB |
Before Width: | Height: | Size: 291 B |
Before Width: | Height: | Size: 478 B |
Before Width: | Height: | Size: 725 B |
|
@ -1,17 +1,17 @@
|
|||
{
|
||||
"images" : [
|
||||
{
|
||||
"filename" : "call_video_mute_off_icon.png",
|
||||
"filename" : "Video Off.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "1x"
|
||||
},
|
||||
{
|
||||
"filename" : "call_video_mute_off_icon@2x.png",
|
||||
"filename" : "Video Off@2x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "2x"
|
||||
},
|
||||
{
|
||||
"filename" : "call_video_mute_off_icon@3x.png",
|
||||
"filename" : "Video Off@3x.png",
|
||||
"idiom" : "universal",
|
||||
"scale" : "3x"
|
||||
}
|
||||
|
@ -21,6 +21,6 @@
|
|||
"version" : 1
|
||||
},
|
||||
"properties" : {
|
||||
"template-rendering-intent" : "template"
|
||||
"template-rendering-intent" : "original"
|
||||
}
|
||||
}
|
||||
|
|
BIN
Riot/Assets/Images.xcassets/Call/call_video_mute_on_icon.imageset/Video Off.png
vendored
Normal file
After Width: | Height: | Size: 2.2 KiB |
BIN
Riot/Assets/Images.xcassets/Call/call_video_mute_on_icon.imageset/Video Off@2x.png
vendored
Normal file
After Width: | Height: | Size: 5.1 KiB |
BIN
Riot/Assets/Images.xcassets/Call/call_video_mute_on_icon.imageset/Video Off@3x.png
vendored
Normal file
After Width: | Height: | Size: 8.8 KiB |
Before Width: | Height: | Size: 337 B |
Before Width: | Height: | Size: 606 B |
Before Width: | Height: | Size: 899 B |
|
@ -19,5 +19,8 @@
|
|||
"info" : {
|
||||
"author" : "xcode",
|
||||
"version" : 1
|
||||
},
|
||||
"properties" : {
|
||||
"template-rendering-intent" : "template"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -819,6 +819,10 @@
|
|||
"call_no_stun_server_error_message_2" ="Alternatively, you can try to use the public server at %@, but this will not be as reliable, and it will share your IP address with that server. You can also manage this in Settings";
|
||||
"call_no_stun_server_error_use_fallback_button" = "Try using %@";
|
||||
|
||||
"call_actions_unhold" = "Resume";
|
||||
"call_more_actions_hold" = "Hold";
|
||||
"call_more_actions_unhold" = "Resume";
|
||||
|
||||
// No VoIP support
|
||||
"no_voip_title" = "Incoming call";
|
||||
"no_voip" = "%@ is calling you but %@ does not support calls yet.\nYou can ignore this notification and answer the call from another device or you can reject it.";
|
||||
|
|
|
@ -24,8 +24,9 @@ internal enum Asset {
|
|||
internal static let callAudioMuteOnIcon = ImageAsset(name: "call_audio_mute_on_icon")
|
||||
internal static let callChatIcon = ImageAsset(name: "call_chat_icon")
|
||||
internal static let callHangupLarge = ImageAsset(name: "call_hangup_large")
|
||||
internal static let callHoldIcon = ImageAsset(name: "call_hold_icon")
|
||||
internal static let callHoldedIcon = ImageAsset(name: "call_holded_icon")
|
||||
internal static let callMoreIcon = ImageAsset(name: "call_more_icon")
|
||||
internal static let callPausedIcon = ImageAsset(name: "call_paused_icon")
|
||||
internal static let callPipIcon = ImageAsset(name: "call_pip_icon")
|
||||
internal static let callSpeakerOffIcon = ImageAsset(name: "call_speaker_off_icon")
|
||||
internal static let callSpeakerOnIcon = ImageAsset(name: "call_speaker_on_icon")
|
||||
internal static let callVideoMuteOffIcon = ImageAsset(name: "call_video_mute_off_icon")
|
||||
|
|
|
@ -414,6 +414,10 @@ internal enum VectorL10n {
|
|||
internal static var bugReportTitle: String {
|
||||
return VectorL10n.tr("Vector", "bug_report_title")
|
||||
}
|
||||
/// Resume
|
||||
internal static var callActionsUnhold: String {
|
||||
return VectorL10n.tr("Vector", "call_actions_unhold")
|
||||
}
|
||||
/// There is already a call in progress.
|
||||
internal static var callAlreadyDisplayed: String {
|
||||
return VectorL10n.tr("Vector", "call_already_displayed")
|
||||
|
@ -438,6 +442,14 @@ internal enum VectorL10n {
|
|||
internal static var callJitsiError: String {
|
||||
return VectorL10n.tr("Vector", "call_jitsi_error")
|
||||
}
|
||||
/// Hold
|
||||
internal static var callMoreActionsHold: String {
|
||||
return VectorL10n.tr("Vector", "call_more_actions_hold")
|
||||
}
|
||||
/// Resume
|
||||
internal static var callMoreActionsUnhold: String {
|
||||
return VectorL10n.tr("Vector", "call_more_actions_unhold")
|
||||
}
|
||||
/// Please ask the administrator of your homeserver %@ to configure a TURN server in order for calls to work reliably.
|
||||
internal static func callNoStunServerErrorMessage1(_ p1: String) -> String {
|
||||
return VectorL10n.tr("Vector", "call_no_stun_server_error_message_1", p1)
|
||||
|
|
|
@ -85,6 +85,9 @@ import UIKit
|
|||
/// Color to tint the search background image
|
||||
var matrixSearchBackgroundImageTintColor: UIColor { get }
|
||||
|
||||
/// Color for background of the call screen
|
||||
var callBackgroundColor: UIColor { get }
|
||||
|
||||
// MARK: - Customisation methods
|
||||
|
||||
|
||||
|
|
|
@ -82,6 +82,8 @@ class DarkTheme: NSObject, Theme {
|
|||
var overlayBackgroundColor: UIColor = UIColor(white: 0.7, alpha: 0.5)
|
||||
var matrixSearchBackgroundImageTintColor: UIColor = UIColor(rgb: 0x7E7E7E)
|
||||
|
||||
var callBackgroundColor: UIColor = UIColor(rgb: 0x27303A)
|
||||
|
||||
func applyStyle(onTabBar tabBar: UITabBar) {
|
||||
tabBar.unselectedItemTintColor = self.tabBarUnselectedItemTintColor
|
||||
tabBar.tintColor = self.tintColor
|
||||
|
|
|
@ -90,6 +90,8 @@ class DefaultTheme: NSObject, Theme {
|
|||
var overlayBackgroundColor: UIColor = UIColor(white: 0.7, alpha: 0.5)
|
||||
var matrixSearchBackgroundImageTintColor: UIColor = UIColor(rgb: 0xE7E7E7)
|
||||
|
||||
var callBackgroundColor: UIColor = UIColor(rgb: 0x8D99A5)
|
||||
|
||||
func applyStyle(onTabBar tabBar: UITabBar) {
|
||||
tabBar.unselectedItemTintColor = self.tabBarUnselectedItemTintColor
|
||||
tabBar.tintColor = self.tintColor
|
||||
|
|
|
@ -30,9 +30,6 @@
|
|||
|
||||
@interface CallViewController ()
|
||||
{
|
||||
// Display a gradient view above the screen
|
||||
CAGradientLayer* gradientMaskLayer;
|
||||
|
||||
// Current alert (if any).
|
||||
UIAlertController *currentAlert;
|
||||
|
||||
|
@ -63,26 +60,22 @@
|
|||
{
|
||||
[super viewDidLoad];
|
||||
|
||||
UIColor *unselectedColor = ThemeService.shared.theme.tabBarUnselectedItemTintColor;
|
||||
UIColor *selectedColor = ThemeService.shared.theme.tintColor;
|
||||
|
||||
// Back button
|
||||
|
||||
UIImage *backButtonImage = [[UIImage imageNamed:@"back_icon"] vc_tintedImageUsingColor:selectedColor];
|
||||
UIImage *backButtonImage = [UIImage imageNamed:@"back_icon"];
|
||||
[self.backToAppButton setImage:backButtonImage forState:UIControlStateNormal];
|
||||
[self.backToAppButton setImage:backButtonImage forState:UIControlStateHighlighted];
|
||||
|
||||
// Camera switch
|
||||
|
||||
UIImage *cameraSwitchButtonImage = [[UIImage imageNamed:@"camera_switch"] vc_tintedImageUsingColor:selectedColor];
|
||||
UIImage *cameraSwitchButtonImage = [UIImage imageNamed:@"camera_switch"];
|
||||
[self.cameraSwitchButton setImage:cameraSwitchButtonImage forState:UIControlStateNormal];
|
||||
[self.cameraSwitchButton setImage:cameraSwitchButtonImage forState:UIControlStateHighlighted];
|
||||
|
||||
// Audio mute
|
||||
|
||||
UIImage *audioMuteOffButtonImage = [[UIImage imageNamed:@"call_audio_mute_off_icon"] vc_tintedImageUsingColor:unselectedColor];
|
||||
|
||||
UIImage *audioMuteOnButtonImage = [[UIImage imageNamed:@"call_audio_mute_on_icon"] vc_tintedImageUsingColor:unselectedColor];
|
||||
UIImage *audioMuteOffButtonImage = [UIImage imageNamed:@"call_audio_mute_off_icon"];
|
||||
UIImage *audioMuteOnButtonImage = [UIImage imageNamed:@"call_audio_mute_on_icon"];
|
||||
|
||||
[self.audioMuteButton setImage:audioMuteOffButtonImage forState:UIControlStateNormal];
|
||||
[self.audioMuteButton setImage:audioMuteOffButtonImage forState:UIControlStateHighlighted];
|
||||
|
@ -90,49 +83,28 @@
|
|||
|
||||
// Video mute
|
||||
|
||||
UIImage *videoOffButtonImage = [[UIImage imageNamed:@"call_video_mute_off_icon"] vc_tintedImageUsingColor:unselectedColor];
|
||||
UIImage *videoOnButtonImage = [[UIImage imageNamed:@"call_video_mute_on_icon"] vc_tintedImageUsingColor:unselectedColor];
|
||||
UIImage *videoOffButtonImage = [UIImage imageNamed:@"call_video_mute_off_icon"];
|
||||
UIImage *videoOnButtonImage = [UIImage imageNamed:@"call_video_mute_on_icon"];
|
||||
|
||||
[self.videoMuteButton setImage:videoOffButtonImage forState:UIControlStateNormal];
|
||||
[self.videoMuteButton setImage:videoOffButtonImage forState:UIControlStateHighlighted];
|
||||
[self.videoMuteButton setImage:videoOnButtonImage forState:UIControlStateSelected];
|
||||
|
||||
// Hold
|
||||
// More
|
||||
|
||||
UIImage *holdButtonImage = [[UIImage imageNamed:@"call_hold_icon"] vc_tintedImageUsingColor:unselectedColor];
|
||||
UIImage *holdedButtonImage = [[UIImage imageNamed:@"call_holded_icon"] vc_tintedImageUsingColor:unselectedColor];
|
||||
UIImage *moreButtonImage = [UIImage imageNamed:@"call_more_icon"];
|
||||
|
||||
[self.holdButton setImage:holdButtonImage forState:UIControlStateNormal];
|
||||
[self.holdButton setImage:holdButtonImage forState:UIControlStateHighlighted];
|
||||
[self.holdButton setImage:holdedButtonImage forState:UIControlStateSelected];
|
||||
|
||||
// Speaker
|
||||
|
||||
UIImage *speakerOffButtonImage = [[UIImage imageNamed:@"call_speaker_off_icon"] vc_tintedImageUsingColor:unselectedColor];
|
||||
UIImage *speakerOnButtonImage = [[UIImage imageNamed:@"call_speaker_on_icon"] vc_tintedImageUsingColor:unselectedColor];
|
||||
[self.speakerButton setImage:speakerOffButtonImage forState:UIControlStateNormal];
|
||||
[self.speakerButton setImage:speakerOnButtonImage forState:UIControlStateSelected];
|
||||
|
||||
// Chat
|
||||
|
||||
UIImage *chatButtonImage = [[UIImage imageNamed:@"call_chat_icon"] vc_tintedImageUsingColor:unselectedColor];
|
||||
[self.chatButton setImage:chatButtonImage forState:UIControlStateNormal];
|
||||
[self.chatButton setImage:chatButtonImage forState:UIControlStateHighlighted];
|
||||
[self.moreButton setImage:moreButtonImage forState:UIControlStateNormal];
|
||||
|
||||
// Hang up
|
||||
|
||||
UIImage *hangUpButtonImage = [[UIImage imageNamed:@"call_hangup_large"] vc_tintedImageUsingColor:ThemeService.shared.theme.noticeColor];
|
||||
UIImage *hangUpButtonImage = [UIImage imageNamed:@"call_hangup_large"];
|
||||
|
||||
[self.endCallButton setTitle:nil forState:UIControlStateNormal];
|
||||
[self.endCallButton setTitle:nil forState:UIControlStateHighlighted];
|
||||
[self.endCallButton setImage:hangUpButtonImage forState:UIControlStateNormal];
|
||||
[self.endCallButton setImage:hangUpButtonImage forState:UIControlStateHighlighted];
|
||||
|
||||
// Define caller image view size
|
||||
CGSize size = [[UIScreen mainScreen] bounds].size;
|
||||
CGFloat minSize = MIN(size.width, size.height);
|
||||
self.callerImageViewWidthConstraint.constant = minSize / 2;
|
||||
|
||||
[self updateLocalPreviewLayout];
|
||||
|
||||
// Observe user interface theme change.
|
||||
|
@ -144,6 +116,11 @@
|
|||
[self userInterfaceThemeDidChange];
|
||||
}
|
||||
|
||||
- (UIStatusBarStyle)preferredStatusBarStyle
|
||||
{
|
||||
return ThemeService.shared.theme.statusBarStyle;
|
||||
}
|
||||
|
||||
- (void)userInterfaceThemeDidChange
|
||||
{
|
||||
[ThemeService.shared.theme applyStyleOnNavigationBar:self.navigationController.navigationBar];
|
||||
|
@ -151,71 +128,19 @@
|
|||
self.barTitleColor = ThemeService.shared.theme.textPrimaryColor;
|
||||
self.activityIndicator.backgroundColor = ThemeService.shared.theme.overlayBackgroundColor;
|
||||
|
||||
self.callerNameLabel.textColor = ThemeService.shared.theme.textPrimaryColor;
|
||||
self.callStatusLabel.textColor = ThemeService.shared.theme.baseTextSecondaryColor;
|
||||
self.backToAppButton.tintColor = [UIColor whiteColor];
|
||||
self.cameraSwitchButton.tintColor = [UIColor whiteColor];
|
||||
self.callerNameLabel.textColor = [UIColor whiteColor];
|
||||
self.callStatusLabel.textColor = [UIColor whiteColor];
|
||||
[self.resumeButton setTitleColor:ThemeService.shared.theme.tintColor forState:UIControlStateNormal];
|
||||
|
||||
self.localPreviewContainerView.layer.borderColor = ThemeService.shared.theme.tintColor.CGColor;
|
||||
self.localPreviewContainerView.layer.borderWidth = 2;
|
||||
self.localPreviewContainerView.layer.cornerRadius = 5;
|
||||
self.localPreviewContainerView.clipsToBounds = YES;
|
||||
|
||||
self.remotePreviewContainerView.backgroundColor = ThemeService.shared.theme.backgroundColor;
|
||||
|
||||
if (gradientMaskLayer)
|
||||
{
|
||||
[gradientMaskLayer removeFromSuperlayer];
|
||||
}
|
||||
|
||||
// Add a gradient mask programatically at the top of the screen (background of the call information (name, status))
|
||||
gradientMaskLayer = [CAGradientLayer layer];
|
||||
|
||||
// Consider the grayscale components of the ThemeService.shared.theme.backgroundColor.
|
||||
CGFloat white = 1.0;
|
||||
[ThemeService.shared.theme.backgroundColor getWhite:&white alpha:nil];
|
||||
|
||||
CGColorRef opaqueWhiteColor = [UIColor colorWithWhite:white alpha:1.0].CGColor;
|
||||
CGColorRef transparentWhiteColor = [UIColor colorWithWhite:white alpha:0].CGColor;
|
||||
|
||||
gradientMaskLayer.colors = @[(__bridge id) opaqueWhiteColor, (__bridge id) transparentWhiteColor];
|
||||
|
||||
gradientMaskLayer.bounds = CGRectMake(0, 0, self.callContainerView.frame.size.width, self.callContainerView.frame.size.height + 20);
|
||||
gradientMaskLayer.anchorPoint = CGPointZero;
|
||||
|
||||
// CAConstraint is not supported on IOS.
|
||||
// it seems only being supported on Mac OS.
|
||||
// so viewDidLayoutSubviews will refresh the layout bounds.
|
||||
[self.gradientMaskContainerView.layer addSublayer:gradientMaskLayer];
|
||||
|
||||
self.callControlsBackgroundView.backgroundColor = ThemeService.shared.theme.baseColor;
|
||||
}
|
||||
|
||||
- (BOOL)prefersStatusBarHidden
|
||||
{
|
||||
// Hide the status bar on the call view controller.
|
||||
return YES;
|
||||
}
|
||||
|
||||
- (void)viewDidLayoutSubviews
|
||||
{
|
||||
[super viewDidLayoutSubviews];
|
||||
|
||||
// sanity check
|
||||
if (gradientMaskLayer)
|
||||
{
|
||||
CGRect currentBounds = gradientMaskLayer.bounds;
|
||||
CGRect newBounds = CGRectMake(0, 0, self.callContainerView.frame.size.width, self.callContainerView.frame.size.height + 20);
|
||||
|
||||
// check if there is an update
|
||||
if (!CGSizeEqualToSize(currentBounds.size, newBounds.size))
|
||||
{
|
||||
newBounds.origin = CGPointZero;
|
||||
gradientMaskLayer.bounds = newBounds;
|
||||
}
|
||||
}
|
||||
|
||||
// The caller image view is circular
|
||||
self.callerImageView.layer.cornerRadius = self.callerImageViewWidthConstraint.constant / 2;
|
||||
self.callerImageView.clipsToBounds = YES;
|
||||
self.view.backgroundColor = ThemeService.shared.theme.callBackgroundColor;
|
||||
self.remotePreviewContainerView.backgroundColor = ThemeService.shared.theme.callBackgroundColor;
|
||||
}
|
||||
|
||||
- (void)viewWillDisappear:(BOOL)animated
|
||||
|
@ -240,9 +165,6 @@
|
|||
[[NSNotificationCenter defaultCenter] removeObserver:kThemeServiceDidChangeThemeNotificationObserver];
|
||||
kThemeServiceDidChangeThemeNotificationObserver = nil;
|
||||
}
|
||||
|
||||
[gradientMaskLayer removeFromSuperlayer];
|
||||
gradientMaskLayer = nil;
|
||||
}
|
||||
|
||||
- (UIView *)createIncomingCallView
|
||||
|
@ -447,13 +369,6 @@
|
|||
withColor:ThemeService.shared.theme.tintColor];
|
||||
}
|
||||
|
||||
- (void)setMxCall:(MXCall *)call
|
||||
{
|
||||
[super setMxCall:call];
|
||||
|
||||
self.callerImageView.hidden = self.mxCall.isVideoCall;
|
||||
}
|
||||
|
||||
- (void)updatePeerInfoDisplay
|
||||
{
|
||||
NSString *peerDisplayName;
|
||||
|
@ -492,13 +407,6 @@
|
|||
}
|
||||
}
|
||||
|
||||
- (void)showOverlayContainer:(BOOL)isShown
|
||||
{
|
||||
[super showOverlayContainer:isShown];
|
||||
|
||||
self.gradientMaskContainerView.hidden = self.overlayContainerView.isHidden;
|
||||
}
|
||||
|
||||
#pragma mark - Sounds
|
||||
|
||||
- (NSURL*)audioURLWithName:(NSString*)soundName
|
||||
|
|
|
@ -5,36 +5,35 @@
|
|||
<deployment identifier="iOS"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="17126"/>
|
||||
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
|
||||
<capability name="System colors in document resources" minToolsVersion="11.0"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<objects>
|
||||
<placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="CallViewController">
|
||||
<connections>
|
||||
<outlet property="answerCallButton" destination="bOl-aO-r5f" id="vv2-bg-NNS"/>
|
||||
<outlet property="answerCallButton" destination="dGJ-MI-UFd" id="jse-XH-GgF"/>
|
||||
<outlet property="audioMuteButton" destination="fxP-zM-kfT" id="0Ux-hK-kvN"/>
|
||||
<outlet property="backToAppButton" destination="nff-fB-sTq" id="UEn-bg-xuA"/>
|
||||
<outlet property="callContainerView" destination="W2P-Hy-nV2" id="b0q-Lj-daE"/>
|
||||
<outlet property="callControlContainerView" destination="nk9-Un-LVP" id="ZV3-qr-BtW"/>
|
||||
<outlet property="callControlsBackgroundView" destination="rSg-mB-C4P" id="9ga-Pa-Clo"/>
|
||||
<outlet property="callStatusLabel" destination="29y-MK-OWH" id="Kcn-MX-MUH"/>
|
||||
<outlet property="callerImageView" destination="v1I-LH-wvv" id="dpZ-KD-4Hg"/>
|
||||
<outlet property="callerImageViewWidthConstraint" destination="PAF-29-Cis" id="Crz-nE-p4c"/>
|
||||
<outlet property="callerImageViewWidthConstraint" destination="wqp-O7-7Yc" id="Yx8-2L-lzA"/>
|
||||
<outlet property="callerNameLabel" destination="IW8-8P-mS3" id="eaa-oo-l01"/>
|
||||
<outlet property="cameraSwitchButton" destination="Iiz-W1-oNW" id="bsM-mH-ti8"/>
|
||||
<outlet property="chatButton" destination="xCi-hD-FBs" id="h3w-6I-Agn"/>
|
||||
<outlet property="endCallButton" destination="lVK-d8-Dqf" id="zgE-Go-bo6"/>
|
||||
<outlet property="gradientMaskContainerView" destination="STO-VX-5VW" id="9s2-wN-gIY"/>
|
||||
<outlet property="holdButton" destination="h8B-hJ-6RN" id="NjX-pA-kT0"/>
|
||||
<outlet property="localPreviewActivityView" destination="Bhz-hS-5B6" id="2yA-xn-ITf"/>
|
||||
<outlet property="localPreviewContainerView" destination="6gQ-zo-2Zw" id="6Ba-YZ-OmX"/>
|
||||
<outlet property="localPreviewContainerViewHeightConstraint" destination="dZW-ZL-5rV" id="apO-M6-y8C"/>
|
||||
<outlet property="localPreviewContainerViewLeadingConstraint" destination="Qvg-FG-sBr" id="gtd-fs-rQh"/>
|
||||
<outlet property="localPreviewContainerViewTopConstraint" destination="6gi-ec-ZnO" id="a0K-Ix-oIo"/>
|
||||
<outlet property="localPreviewContainerViewWidthConstraint" destination="gyu-kv-SLy" id="urn-uo-hnt"/>
|
||||
<outlet property="moreButton" destination="xCi-hD-FBs" id="2Hn-T9-jZY"/>
|
||||
<outlet property="overlayContainerView" destination="JAR-tn-sGN" id="09u-3G-1UA"/>
|
||||
<outlet property="rejectCallButton" destination="nuB-Jc-MFa" id="Y3k-kg-IgD"/>
|
||||
<outlet property="pausedIcon" destination="rjn-DE-i10" id="CHR-mM-Dae"/>
|
||||
<outlet property="pipButton" destination="Yq6-d2-Ea2" id="scW-S6-fpr"/>
|
||||
<outlet property="rejectCallButton" destination="H4g-11-Y8d" id="8aM-2q-Lv7"/>
|
||||
<outlet property="remotePreviewContainerView" destination="Tjb-57-yB1" id="MaR-IC-ZKw"/>
|
||||
<outlet property="speakerButton" destination="Yq6-d2-Ea2" id="4TU-8w-3FG"/>
|
||||
<outlet property="resumeButton" destination="OaQ-Ki-dbe" id="23i-sp-y3f"/>
|
||||
<outlet property="videoMuteButton" destination="UHM-u9-ODN" id="bfQ-lc-WMB"/>
|
||||
<outlet property="view" destination="iN0-l3-epB" id="JDF-cz-roW"/>
|
||||
</connections>
|
||||
|
@ -44,36 +43,242 @@
|
|||
<rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
|
||||
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
|
||||
<subviews>
|
||||
<button hidden="YES" opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="bOl-aO-r5f">
|
||||
<rect key="frame" x="277" y="285" width="46" height="30"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<accessibility key="accessibilityConfiguration" identifier="CallVCAnswerCallButton"/>
|
||||
</button>
|
||||
<button hidden="YES" opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="nuB-Jc-MFa">
|
||||
<rect key="frame" x="277" y="285" width="46" height="30"/>
|
||||
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
|
||||
<accessibility key="accessibilityConfiguration" identifier="CallVCRejectCallButton"/>
|
||||
</button>
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="v1I-LH-wvv" customClass="MXKImageView">
|
||||
<rect key="frame" x="57" y="208.5" width="300" height="300"/>
|
||||
<color key="backgroundColor" red="0.66666666666666663" green="0.66666666666666663" blue="0.66666666666666663" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<accessibility key="accessibilityConfiguration" identifier="CallVCCallerImageView"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="300" id="PAF-29-Cis"/>
|
||||
<constraint firstAttribute="width" secondItem="v1I-LH-wvv" secondAttribute="height" multiplier="1:1" id="pzY-9x-dH7"/>
|
||||
</constraints>
|
||||
</view>
|
||||
<view hidden="YES" contentMode="scaleAspectFill" translatesAutoresizingMaskIntoConstraints="NO" id="Tjb-57-yB1">
|
||||
<view hidden="YES" contentMode="scaleAspectFill" translatesAutoresizingMaskIntoConstraints="NO" id="Tjb-57-yB1" userLabel="Remote Preview Container">
|
||||
<rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
|
||||
<color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<accessibility key="accessibilityConfiguration" identifier="CallVCRemotePreviewContainerView"/>
|
||||
</view>
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="STO-VX-5VW">
|
||||
<view opaque="NO" clipsSubviews="YES" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="JAR-tn-sGN" userLabel="Overlay Container View">
|
||||
<rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
|
||||
<subviews>
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="sOu-ER-kOe">
|
||||
<rect key="frame" x="0.0" y="44" width="414" height="54"/>
|
||||
<subviews>
|
||||
<button opaque="NO" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" adjustsImageWhenHighlighted="NO" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="nff-fB-sTq" userLabel="Back Btn">
|
||||
<rect key="frame" x="10" y="5" width="44" height="44"/>
|
||||
<color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<accessibility key="accessibilityConfiguration" identifier="CallVCGradientMaskContainerView"/>
|
||||
<accessibility key="accessibilityConfiguration" identifier="CallVCBackToAppButton"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="44" id="U4K-iA-Ca2"/>
|
||||
<constraint firstAttribute="width" constant="44" id="yAh-Gb-GtB"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" name="Helvetica-Bold" family="Helvetica" pointSize="13"/>
|
||||
<inset key="titleEdgeInsets" minX="-69" minY="61" maxX="0.0" maxY="0.0"/>
|
||||
<state key="normal" image="back_icon">
|
||||
<color key="titleColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<color key="titleShadowColor" red="0.5" green="0.5" blue="0.5" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
</state>
|
||||
<state key="highlighted">
|
||||
<color key="titleColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
</state>
|
||||
<connections>
|
||||
<action selector="onButtonPressed:" destination="-1" eventType="touchUpInside" id="yKw-Aj-XkE"/>
|
||||
</connections>
|
||||
</button>
|
||||
<button opaque="NO" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" adjustsImageWhenHighlighted="NO" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Iiz-W1-oNW" userLabel="Switch Camera Btn">
|
||||
<rect key="frame" x="360" y="5" width="44" height="44"/>
|
||||
<color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<accessibility key="accessibilityConfiguration" identifier="CallVCCameraSwitchButton"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="44" id="2ci-nt-cgP"/>
|
||||
<constraint firstAttribute="width" constant="44" id="owR-ds-wTp"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" name="Helvetica-Bold" family="Helvetica" pointSize="13"/>
|
||||
<inset key="titleEdgeInsets" minX="-69" minY="61" maxX="0.0" maxY="0.0"/>
|
||||
<state key="normal" image="camera_switch">
|
||||
<color key="titleColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<color key="titleShadowColor" red="0.5" green="0.5" blue="0.5" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
</state>
|
||||
<state key="highlighted">
|
||||
<color key="titleColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
</state>
|
||||
<connections>
|
||||
<action selector="onButtonPressed:" destination="-1" eventType="touchUpInside" id="UaC-FO-rmW"/>
|
||||
</connections>
|
||||
</button>
|
||||
</subviews>
|
||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="trailing" secondItem="Iiz-W1-oNW" secondAttribute="trailing" constant="10" id="YYf-d4-U5q"/>
|
||||
<constraint firstItem="nff-fB-sTq" firstAttribute="leading" secondItem="sOu-ER-kOe" secondAttribute="leading" constant="10" id="guD-oo-Tl5"/>
|
||||
<constraint firstItem="Iiz-W1-oNW" firstAttribute="centerY" secondItem="sOu-ER-kOe" secondAttribute="centerY" id="ns9-vB-ywU"/>
|
||||
<constraint firstItem="nff-fB-sTq" firstAttribute="centerY" secondItem="sOu-ER-kOe" secondAttribute="centerY" id="vP7-sN-t5g"/>
|
||||
<constraint firstAttribute="height" constant="54" id="zsh-GQ-fv2"/>
|
||||
</constraints>
|
||||
</view>
|
||||
<view hidden="YES" opaque="NO" clearsContextBeforeDrawing="NO" contentMode="scaleAspectFill" translatesAutoresizingMaskIntoConstraints="NO" id="6gQ-zo-2Zw">
|
||||
<view clearsContextBeforeDrawing="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="nk9-Un-LVP" userLabel="Call Control Container View">
|
||||
<rect key="frame" x="0.0" y="798" width="414" height="64"/>
|
||||
<subviews>
|
||||
<button opaque="NO" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" adjustsImageWhenHighlighted="NO" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Yq6-d2-Ea2">
|
||||
<rect key="frame" x="71" y="8" width="48" height="48"/>
|
||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<accessibility key="accessibilityConfiguration" identifier="CallVCSpeakerButton"/>
|
||||
<fontDescription key="fontDescription" name="Helvetica-Bold" family="Helvetica" pointSize="13"/>
|
||||
<inset key="contentEdgeInsets" minX="12" minY="12" maxX="12" maxY="12"/>
|
||||
<state key="normal" image="call_pip_icon">
|
||||
<color key="titleColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<color key="titleShadowColor" red="0.5" green="0.5" blue="0.5" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
</state>
|
||||
<state key="highlighted">
|
||||
<color key="titleColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
</state>
|
||||
<connections>
|
||||
<action selector="onButtonPressed:" destination="-1" eventType="touchUpInside" id="kfq-w6-EXx"/>
|
||||
</connections>
|
||||
</button>
|
||||
<button opaque="NO" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" adjustsImageWhenHighlighted="NO" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="fxP-zM-kfT">
|
||||
<rect key="frame" x="123" y="12" width="48" height="48"/>
|
||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<accessibility key="accessibilityConfiguration" identifier="CallVCAudioMuteButton"/>
|
||||
<fontDescription key="fontDescription" name="Helvetica-Bold" family="Helvetica" pointSize="13"/>
|
||||
<state key="normal" image="call_audio_mute_off_icon">
|
||||
<color key="titleColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<color key="titleShadowColor" red="0.5" green="0.5" blue="0.5" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
</state>
|
||||
<state key="highlighted">
|
||||
<color key="titleColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
</state>
|
||||
<connections>
|
||||
<action selector="onButtonPressed:" destination="-1" eventType="touchUpInside" id="CgE-f8-nPS"/>
|
||||
</connections>
|
||||
</button>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="lVK-d8-Dqf" userLabel="End Call Button">
|
||||
<rect key="frame" x="183" y="8" width="48" height="48"/>
|
||||
<color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<accessibility key="accessibilityConfiguration" identifier="CallVCEndCallButton"/>
|
||||
<inset key="contentEdgeInsets" minX="4" minY="4" maxX="4" maxY="4"/>
|
||||
<state key="normal" image="call_hangup_large">
|
||||
<color key="titleShadowColor" red="0.5" green="0.5" blue="0.5" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
</state>
|
||||
<state key="selected" image="call_hangup_icon"/>
|
||||
<state key="highlighted" image="call_hangup_icon"/>
|
||||
<connections>
|
||||
<action selector="onButtonPressed:" destination="-1" eventType="touchUpInside" id="ZTw-gz-mwM"/>
|
||||
</connections>
|
||||
</button>
|
||||
<button opaque="NO" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" adjustsImageWhenHighlighted="NO" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="UHM-u9-ODN">
|
||||
<rect key="frame" x="243" y="12" width="48" height="48"/>
|
||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<accessibility key="accessibilityConfiguration" identifier="CallVCVideoMuteButton"/>
|
||||
<fontDescription key="fontDescription" name="Helvetica-Bold" family="Helvetica" pointSize="13"/>
|
||||
<state key="normal" image="call_video_mute_off_icon">
|
||||
<color key="titleColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<color key="titleShadowColor" red="0.5" green="0.5" blue="0.5" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
</state>
|
||||
<state key="highlighted">
|
||||
<color key="titleColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
</state>
|
||||
<connections>
|
||||
<action selector="onButtonPressed:" destination="-1" eventType="touchUpInside" id="9Jd-Wv-foD"/>
|
||||
</connections>
|
||||
</button>
|
||||
<button opaque="NO" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" adjustsImageWhenHighlighted="NO" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="xCi-hD-FBs">
|
||||
<rect key="frame" x="295" y="8" width="48" height="48"/>
|
||||
<accessibility key="accessibilityConfiguration" identifier="CallVCChatButton"/>
|
||||
<fontDescription key="fontDescription" name="Helvetica-Bold" family="Helvetica" pointSize="13"/>
|
||||
<inset key="contentEdgeInsets" minX="12" minY="12" maxX="12" maxY="12"/>
|
||||
<state key="normal" image="call_more_icon">
|
||||
<color key="titleColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<color key="titleShadowColor" red="0.5" green="0.5" blue="0.5" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
</state>
|
||||
<state key="highlighted">
|
||||
<color key="titleColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
</state>
|
||||
<connections>
|
||||
<action selector="onButtonPressed:" destination="-1" eventType="touchUpInside" id="RaZ-1R-2FR"/>
|
||||
</connections>
|
||||
</button>
|
||||
</subviews>
|
||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<accessibility key="accessibilityConfiguration" identifier="CallVCCallControlContainerView"/>
|
||||
<constraints>
|
||||
<constraint firstItem="UHM-u9-ODN" firstAttribute="leading" secondItem="lVK-d8-Dqf" secondAttribute="trailing" constant="12" id="4l8-GS-LMC"/>
|
||||
<constraint firstItem="lVK-d8-Dqf" firstAttribute="centerX" secondItem="nk9-Un-LVP" secondAttribute="centerX" id="C77-dh-aGp"/>
|
||||
<constraint firstItem="Yq6-d2-Ea2" firstAttribute="centerY" secondItem="nk9-Un-LVP" secondAttribute="centerY" id="CgC-oj-Epe"/>
|
||||
<constraint firstItem="fxP-zM-kfT" firstAttribute="centerY" secondItem="nk9-Un-LVP" secondAttribute="centerY" constant="4" id="FXE-lL-Q91"/>
|
||||
<constraint firstItem="UHM-u9-ODN" firstAttribute="centerY" secondItem="nk9-Un-LVP" secondAttribute="centerY" constant="4" id="aOF-7c-8gC"/>
|
||||
<constraint firstItem="fxP-zM-kfT" firstAttribute="leading" secondItem="Yq6-d2-Ea2" secondAttribute="trailing" constant="4" id="aR8-up-zPg"/>
|
||||
<constraint firstItem="xCi-hD-FBs" firstAttribute="leading" secondItem="UHM-u9-ODN" secondAttribute="trailing" constant="4" id="bQT-Ff-cxR"/>
|
||||
<constraint firstAttribute="height" constant="64" id="eS5-qj-HTc"/>
|
||||
<constraint firstItem="lVK-d8-Dqf" firstAttribute="centerY" secondItem="nk9-Un-LVP" secondAttribute="centerY" id="hY9-ut-lPv"/>
|
||||
<constraint firstItem="lVK-d8-Dqf" firstAttribute="leading" secondItem="fxP-zM-kfT" secondAttribute="trailing" constant="12" id="jZa-SH-3LK"/>
|
||||
<constraint firstItem="xCi-hD-FBs" firstAttribute="centerY" secondItem="nk9-Un-LVP" secondAttribute="centerY" id="orn-eU-ogl"/>
|
||||
</constraints>
|
||||
</view>
|
||||
<stackView opaque="NO" contentMode="scaleToFill" axis="vertical" distribution="equalSpacing" alignment="center" spacing="8" translatesAutoresizingMaskIntoConstraints="NO" id="Zc0-eq-2kY">
|
||||
<rect key="frame" x="167" y="364" width="80" height="168"/>
|
||||
<subviews>
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="FNb-tG-f7m">
|
||||
<rect key="frame" x="0.0" y="0.0" width="80" height="80"/>
|
||||
<subviews>
|
||||
<view clipsSubviews="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="v1I-LH-wvv" customClass="MXKImageView">
|
||||
<rect key="frame" x="0.0" y="0.0" width="80" height="80"/>
|
||||
<color key="backgroundColor" red="0.66666666666666663" green="0.66666666666666663" blue="0.66666666666666663" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<accessibility key="accessibilityConfiguration" identifier="CallVCCallerImageView"/>
|
||||
<userDefinedRuntimeAttributes>
|
||||
<userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
|
||||
<integer key="value" value="40"/>
|
||||
</userDefinedRuntimeAttribute>
|
||||
</userDefinedRuntimeAttributes>
|
||||
</view>
|
||||
<imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="call_paused_icon" translatesAutoresizingMaskIntoConstraints="NO" id="rjn-DE-i10">
|
||||
<rect key="frame" x="28" y="28" width="24" height="24"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="width" constant="24" id="0mx-Ei-dTR"/>
|
||||
<constraint firstAttribute="height" constant="24" id="rZE-Re-1rb"/>
|
||||
</constraints>
|
||||
</imageView>
|
||||
</subviews>
|
||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="trailing" secondItem="v1I-LH-wvv" secondAttribute="trailing" id="AuA-UA-fhZ"/>
|
||||
<constraint firstItem="rjn-DE-i10" firstAttribute="centerX" secondItem="FNb-tG-f7m" secondAttribute="centerX" id="FEK-7V-eSm"/>
|
||||
<constraint firstAttribute="height" constant="80" id="bqe-bu-Jt0"/>
|
||||
<constraint firstItem="rjn-DE-i10" firstAttribute="centerY" secondItem="FNb-tG-f7m" secondAttribute="centerY" id="kZ0-jt-NT9"/>
|
||||
<constraint firstItem="v1I-LH-wvv" firstAttribute="top" secondItem="FNb-tG-f7m" secondAttribute="top" id="q5n-s0-gIi"/>
|
||||
<constraint firstItem="v1I-LH-wvv" firstAttribute="leading" secondItem="FNb-tG-f7m" secondAttribute="leading" id="rBg-XZ-zZB"/>
|
||||
<constraint firstAttribute="bottom" secondItem="v1I-LH-wvv" secondAttribute="bottom" id="u4d-c9-qEB"/>
|
||||
<constraint firstAttribute="width" constant="80" id="wqp-O7-7Yc"/>
|
||||
</constraints>
|
||||
</view>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="scaleToFill" text="Name" textAlignment="center" lineBreakMode="tailTruncation" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="IW8-8P-mS3">
|
||||
<rect key="frame" x="17" y="88" width="46.5" height="20.5"/>
|
||||
<accessibility key="accessibilityConfiguration" identifier="CallVCCallerNameLabel"/>
|
||||
<fontDescription key="fontDescription" type="system" weight="semibold" pointSize="17"/>
|
||||
<color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<label opaque="NO" userInteractionEnabled="NO" contentMode="scaleToFill" text="Duration" textAlignment="center" lineBreakMode="tailTruncation" minimumFontSize="12" translatesAutoresizingMaskIntoConstraints="NO" id="29y-MK-OWH">
|
||||
<rect key="frame" x="15" y="116.5" width="50" height="14.5"/>
|
||||
<accessibility key="accessibilityConfiguration" identifier="CallVCCallStatusLabel"/>
|
||||
<fontDescription key="fontDescription" type="system" weight="medium" pointSize="12"/>
|
||||
<color key="textColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="OaQ-Ki-dbe">
|
||||
<rect key="frame" x="13" y="139" width="54" height="29"/>
|
||||
<fontDescription key="fontDescription" type="system" weight="semibold" pointSize="14"/>
|
||||
<color key="tintColor" systemColor="systemGreenColor"/>
|
||||
<state key="normal" title="Resume"/>
|
||||
<connections>
|
||||
<action selector="onButtonPressed:" destination="-1" eventType="touchUpInside" id="pJG-7Q-UTa"/>
|
||||
</connections>
|
||||
</button>
|
||||
</subviews>
|
||||
</stackView>
|
||||
</subviews>
|
||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<accessibility key="accessibilityConfiguration" identifier="CallVCOverlayContainerView"/>
|
||||
<constraints>
|
||||
<constraint firstItem="Zc0-eq-2kY" firstAttribute="centerX" secondItem="JAR-tn-sGN" secondAttribute="centerX" id="8AN-tj-KDj"/>
|
||||
<constraint firstItem="nk9-Un-LVP" firstAttribute="leading" secondItem="JAR-tn-sGN" secondAttribute="leading" id="9wq-Y2-kZa"/>
|
||||
<constraint firstItem="sOu-ER-kOe" firstAttribute="leading" secondItem="JAR-tn-sGN" secondAttribute="leading" id="INI-a4-QCn"/>
|
||||
<constraint firstAttribute="trailing" secondItem="sOu-ER-kOe" secondAttribute="trailing" id="LEA-qC-Gko"/>
|
||||
<constraint firstItem="Zc0-eq-2kY" firstAttribute="centerY" secondItem="JAR-tn-sGN" secondAttribute="centerY" id="ju3-Ix-AGc"/>
|
||||
<constraint firstAttribute="trailing" secondItem="nk9-Un-LVP" secondAttribute="trailing" id="yES-yI-i3m"/>
|
||||
</constraints>
|
||||
</view>
|
||||
<view hidden="YES" opaque="NO" clearsContextBeforeDrawing="NO" contentMode="scaleAspectFill" translatesAutoresizingMaskIntoConstraints="NO" id="6gQ-zo-2Zw" userLabel="Local Preview Container">
|
||||
<rect key="frame" x="20" y="464" width="79" height="106"/>
|
||||
<subviews>
|
||||
<activityIndicatorView hidden="YES" opaque="NO" contentMode="scaleToFill" hidesWhenStopped="YES" style="whiteLarge" translatesAutoresizingMaskIntoConstraints="NO" id="Bhz-hS-5B6">
|
||||
|
@ -91,234 +296,36 @@
|
|||
<constraint firstItem="Bhz-hS-5B6" firstAttribute="centerX" secondItem="6gQ-zo-2Zw" secondAttribute="centerX" id="w3I-wQ-iiT"/>
|
||||
</constraints>
|
||||
</view>
|
||||
<view opaque="NO" clipsSubviews="YES" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="JAR-tn-sGN" userLabel="Overlay Container View">
|
||||
<rect key="frame" x="0.0" y="44" width="414" height="852"/>
|
||||
<view hidden="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="UGa-hI-iqx" userLabel="Hidden View">
|
||||
<rect key="frame" x="135" y="164" width="144" height="64"/>
|
||||
<subviews>
|
||||
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="rSg-mB-C4P">
|
||||
<rect key="frame" x="0.0" y="764" width="414" height="88"/>
|
||||
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
</view>
|
||||
<view clearsContextBeforeDrawing="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="nk9-Un-LVP" userLabel="Call Control Container View">
|
||||
<rect key="frame" x="0.0" y="764" width="414" height="54"/>
|
||||
<subviews>
|
||||
<button autoresizesSubviews="NO" opaque="NO" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" adjustsImageWhenHighlighted="NO" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="fxP-zM-kfT">
|
||||
<rect key="frame" x="10" y="0.0" width="45" height="54"/>
|
||||
<color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<accessibility key="accessibilityConfiguration" identifier="CallVCAudioMuteButton"/>
|
||||
<fontDescription key="fontDescription" name="Helvetica-Bold" family="Helvetica" pointSize="13"/>
|
||||
<inset key="titleEdgeInsets" minX="-69" minY="61" maxX="0.0" maxY="0.0"/>
|
||||
<state key="normal">
|
||||
<color key="titleColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<color key="titleShadowColor" red="0.5" green="0.5" blue="0.5" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
</state>
|
||||
<state key="highlighted">
|
||||
<color key="titleColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
</state>
|
||||
<connections>
|
||||
<action selector="onButtonPressed:" destination="-1" eventType="touchUpInside" id="CgE-f8-nPS"/>
|
||||
</connections>
|
||||
</button>
|
||||
<button opaque="NO" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" adjustsImageWhenHighlighted="NO" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Yq6-d2-Ea2">
|
||||
<rect key="frame" x="65" y="0.0" width="45.5" height="54"/>
|
||||
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<accessibility key="accessibilityConfiguration" identifier="CallVCSpeakerButton"/>
|
||||
<fontDescription key="fontDescription" name="Helvetica-Bold" family="Helvetica" pointSize="13"/>
|
||||
<inset key="titleEdgeInsets" minX="-69" minY="61" maxX="0.0" maxY="0.0"/>
|
||||
<state key="normal">
|
||||
<color key="titleColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<color key="titleShadowColor" red="0.5" green="0.5" blue="0.5" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
</state>
|
||||
<state key="highlighted">
|
||||
<color key="titleColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
</state>
|
||||
<connections>
|
||||
<action selector="onButtonPressed:" destination="-1" eventType="touchUpInside" id="kfq-w6-EXx"/>
|
||||
</connections>
|
||||
</button>
|
||||
<button autoresizesSubviews="NO" opaque="NO" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" adjustsImageWhenHighlighted="NO" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="h8B-hJ-6RN">
|
||||
<rect key="frame" x="120.5" y="0.0" width="45" height="54"/>
|
||||
<color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<accessibility key="accessibilityConfiguration" identifier="CallVCAudioMuteButton"/>
|
||||
<fontDescription key="fontDescription" name="Helvetica-Bold" family="Helvetica" pointSize="13"/>
|
||||
<inset key="titleEdgeInsets" minX="-69" minY="61" maxX="0.0" maxY="0.0"/>
|
||||
<state key="normal">
|
||||
<color key="titleColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<color key="titleShadowColor" red="0.5" green="0.5" blue="0.5" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
</state>
|
||||
<state key="highlighted">
|
||||
<color key="titleColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
</state>
|
||||
<connections>
|
||||
<action selector="onButtonPressed:" destination="-1" eventType="touchUpInside" id="WfQ-jF-bmx"/>
|
||||
</connections>
|
||||
</button>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="lVK-d8-Dqf" userLabel="End Call Button">
|
||||
<rect key="frame" x="175.5" y="0.0" width="63" height="54"/>
|
||||
<color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<accessibility key="accessibilityConfiguration" identifier="CallVCEndCallButton"/>
|
||||
<state key="normal" image="call_hangup_large">
|
||||
<color key="titleShadowColor" red="0.5" green="0.5" blue="0.5" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
</state>
|
||||
<state key="selected" image="call_hangup_icon"/>
|
||||
<state key="highlighted" image="call_hangup_icon"/>
|
||||
<connections>
|
||||
<action selector="onButtonPressed:" destination="-1" eventType="touchUpInside" id="ZTw-gz-mwM"/>
|
||||
</connections>
|
||||
</button>
|
||||
<button opaque="NO" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" adjustsImageWhenHighlighted="NO" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="UHM-u9-ODN">
|
||||
<rect key="frame" x="248.5" y="0.0" width="72.5" height="54"/>
|
||||
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<accessibility key="accessibilityConfiguration" identifier="CallVCVideoMuteButton"/>
|
||||
<fontDescription key="fontDescription" name="Helvetica-Bold" family="Helvetica" pointSize="13"/>
|
||||
<inset key="contentEdgeInsets" minX="0.0" minY="0.0" maxX="4" maxY="0.0"/>
|
||||
<inset key="titleEdgeInsets" minX="-74" minY="61" maxX="0.0" maxY="0.0"/>
|
||||
<state key="normal">
|
||||
<color key="titleColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<color key="titleShadowColor" red="0.5" green="0.5" blue="0.5" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
</state>
|
||||
<state key="highlighted">
|
||||
<color key="titleColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
</state>
|
||||
<connections>
|
||||
<action selector="onButtonPressed:" destination="-1" eventType="touchUpInside" id="9Jd-Wv-foD"/>
|
||||
</connections>
|
||||
</button>
|
||||
<button opaque="NO" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" adjustsImageWhenHighlighted="NO" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="xCi-hD-FBs">
|
||||
<rect key="frame" x="331" y="0.0" width="73" height="54"/>
|
||||
<accessibility key="accessibilityConfiguration" identifier="CallVCChatButton"/>
|
||||
<fontDescription key="fontDescription" name="Helvetica-Bold" family="Helvetica" pointSize="13"/>
|
||||
<inset key="contentEdgeInsets" minX="0.0" minY="0.0" maxX="4" maxY="0.0"/>
|
||||
<inset key="titleEdgeInsets" minX="-74" minY="61" maxX="0.0" maxY="0.0"/>
|
||||
<state key="normal">
|
||||
<color key="titleColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<color key="titleShadowColor" red="0.5" green="0.5" blue="0.5" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
</state>
|
||||
<state key="highlighted">
|
||||
<color key="titleColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
</state>
|
||||
<connections>
|
||||
<action selector="onButtonPressed:" destination="-1" eventType="touchUpInside" id="RaZ-1R-2FR"/>
|
||||
</connections>
|
||||
</button>
|
||||
</subviews>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="dGJ-MI-UFd">
|
||||
<rect key="frame" x="0.0" y="0.0" width="64" height="64"/>
|
||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<accessibility key="accessibilityConfiguration" identifier="CallVCCallControlContainerView"/>
|
||||
<constraints>
|
||||
<constraint firstItem="UHM-u9-ODN" firstAttribute="top" secondItem="nk9-Un-LVP" secondAttribute="top" id="9WM-jp-uJ2"/>
|
||||
<constraint firstAttribute="bottom" secondItem="h8B-hJ-6RN" secondAttribute="bottom" id="A0G-lt-6ix"/>
|
||||
<constraint firstItem="lVK-d8-Dqf" firstAttribute="centerX" secondItem="nk9-Un-LVP" secondAttribute="centerX" id="C77-dh-aGp"/>
|
||||
<constraint firstItem="Yq6-d2-Ea2" firstAttribute="top" secondItem="nk9-Un-LVP" secondAttribute="top" id="FEV-o2-EBw"/>
|
||||
<constraint firstItem="h8B-hJ-6RN" firstAttribute="leading" secondItem="Yq6-d2-Ea2" secondAttribute="trailing" constant="10" id="HPI-cl-jtP"/>
|
||||
<constraint firstAttribute="bottom" secondItem="xCi-hD-FBs" secondAttribute="bottom" id="HV5-bE-eXg"/>
|
||||
<constraint firstItem="Yq6-d2-Ea2" firstAttribute="leading" secondItem="fxP-zM-kfT" secondAttribute="trailing" constant="10" id="JT2-ee-Wjz"/>
|
||||
<constraint firstItem="h8B-hJ-6RN" firstAttribute="top" secondItem="nk9-Un-LVP" secondAttribute="top" id="Kn1-GZ-YhA"/>
|
||||
<constraint firstAttribute="bottom" secondItem="fxP-zM-kfT" secondAttribute="bottom" id="Qly-U3-yZz"/>
|
||||
<constraint firstItem="lVK-d8-Dqf" firstAttribute="height" secondItem="nk9-Un-LVP" secondAttribute="height" id="RZ6-SE-aTO"/>
|
||||
<constraint firstAttribute="trailing" secondItem="xCi-hD-FBs" secondAttribute="trailing" constant="10" id="UAd-cs-Evp"/>
|
||||
<constraint firstItem="lVK-d8-Dqf" firstAttribute="width" secondItem="nk9-Un-LVP" secondAttribute="width" multiplier="1/5" constant="-20" id="VrK-vw-mbY"/>
|
||||
<constraint firstItem="xCi-hD-FBs" firstAttribute="leading" secondItem="UHM-u9-ODN" secondAttribute="trailing" constant="10" id="bQT-Ff-cxR"/>
|
||||
<constraint firstItem="UHM-u9-ODN" firstAttribute="leading" secondItem="lVK-d8-Dqf" secondAttribute="trailing" constant="10" id="dzk-ZZ-B52"/>
|
||||
<constraint firstAttribute="height" constant="54" id="eS5-qj-HTc"/>
|
||||
<constraint firstAttribute="bottom" secondItem="UHM-u9-ODN" secondAttribute="bottom" id="g18-gQ-ckj"/>
|
||||
<constraint firstItem="Yq6-d2-Ea2" firstAttribute="width" secondItem="fxP-zM-kfT" secondAttribute="width" id="grm-Sp-YF4"/>
|
||||
<constraint firstItem="lVK-d8-Dqf" firstAttribute="centerY" secondItem="nk9-Un-LVP" secondAttribute="centerY" id="hY9-ut-lPv"/>
|
||||
<constraint firstItem="lVK-d8-Dqf" firstAttribute="leading" secondItem="h8B-hJ-6RN" secondAttribute="trailing" constant="10" id="n6Y-t9-vYR"/>
|
||||
<constraint firstItem="h8B-hJ-6RN" firstAttribute="width" secondItem="fxP-zM-kfT" secondAttribute="width" id="nd2-Nz-pAU"/>
|
||||
<constraint firstItem="fxP-zM-kfT" firstAttribute="leading" secondItem="nk9-Un-LVP" secondAttribute="leading" constant="10" id="tkX-xK-GQj"/>
|
||||
<constraint firstItem="xCi-hD-FBs" firstAttribute="width" secondItem="UHM-u9-ODN" secondAttribute="width" id="uah-dz-vX4"/>
|
||||
<constraint firstItem="xCi-hD-FBs" firstAttribute="top" secondItem="nk9-Un-LVP" secondAttribute="top" id="vtd-6B-FhT"/>
|
||||
<constraint firstItem="fxP-zM-kfT" firstAttribute="top" secondItem="nk9-Un-LVP" secondAttribute="top" id="xKI-k3-zBC"/>
|
||||
<constraint firstAttribute="bottom" secondItem="Yq6-d2-Ea2" secondAttribute="bottom" id="yBB-MV-h8o"/>
|
||||
<constraint firstAttribute="width" constant="64" id="Njx-9P-mWR"/>
|
||||
<constraint firstAttribute="height" constant="64" id="stg-ZJ-vHp"/>
|
||||
</constraints>
|
||||
</view>
|
||||
<view opaque="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="W2P-Hy-nV2" userLabel="Call Container View">
|
||||
<rect key="frame" x="0.0" y="0.0" width="414" height="60"/>
|
||||
<subviews>
|
||||
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleToFill" text="Name" textAlignment="center" lineBreakMode="tailTruncation" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="IW8-8P-mS3">
|
||||
<rect key="frame" x="0.0" y="10" width="414" height="22"/>
|
||||
<accessibility key="accessibilityConfiguration" identifier="CallVCCallerNameLabel"/>
|
||||
<fontDescription key="fontDescription" type="system" weight="medium" pointSize="18"/>
|
||||
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleToFill" text="-" textAlignment="center" lineBreakMode="tailTruncation" minimumFontSize="12" translatesAutoresizingMaskIntoConstraints="NO" id="29y-MK-OWH">
|
||||
<rect key="frame" x="0.0" y="37" width="414" height="15"/>
|
||||
<accessibility key="accessibilityConfiguration" identifier="CallVCCallStatusLabel"/>
|
||||
<fontDescription key="fontDescription" type="system" weight="medium" pointSize="12"/>
|
||||
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<nil key="highlightedColor"/>
|
||||
</label>
|
||||
</subviews>
|
||||
<color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<constraints>
|
||||
<constraint firstItem="IW8-8P-mS3" firstAttribute="top" secondItem="W2P-Hy-nV2" secondAttribute="top" constant="10" id="BYj-8x-kPo"/>
|
||||
<constraint firstAttribute="trailing" secondItem="IW8-8P-mS3" secondAttribute="trailing" id="PsD-gD-a0S"/>
|
||||
<constraint firstAttribute="trailing" secondItem="29y-MK-OWH" secondAttribute="trailing" id="Uo1-tj-IFA"/>
|
||||
<constraint firstAttribute="height" constant="60" id="ZLw-UO-oa4"/>
|
||||
<constraint firstItem="29y-MK-OWH" firstAttribute="top" secondItem="IW8-8P-mS3" secondAttribute="bottom" constant="5" id="af8-pz-JKx"/>
|
||||
<constraint firstItem="29y-MK-OWH" firstAttribute="leading" secondItem="W2P-Hy-nV2" secondAttribute="leading" id="cOy-mL-qOS"/>
|
||||
<constraint firstItem="IW8-8P-mS3" firstAttribute="leading" secondItem="W2P-Hy-nV2" secondAttribute="leading" id="peb-77-Gi5"/>
|
||||
</constraints>
|
||||
</view>
|
||||
<button opaque="NO" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" adjustsImageWhenHighlighted="NO" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="nff-fB-sTq">
|
||||
<rect key="frame" x="10" y="5" width="44" height="44"/>
|
||||
<color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<accessibility key="accessibilityConfiguration" identifier="CallVCBackToAppButton"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="44" id="U4K-iA-Ca2"/>
|
||||
<constraint firstAttribute="width" constant="44" id="yAh-Gb-GtB"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" name="Helvetica-Bold" family="Helvetica" pointSize="13"/>
|
||||
<color key="tintColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<inset key="titleEdgeInsets" minX="-69" minY="61" maxX="0.0" maxY="0.0"/>
|
||||
<state key="normal" image="back_icon">
|
||||
<color key="titleColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<color key="titleShadowColor" red="0.5" green="0.5" blue="0.5" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
</state>
|
||||
<state key="highlighted">
|
||||
<color key="titleColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
</state>
|
||||
<connections>
|
||||
<action selector="onButtonPressed:" destination="-1" eventType="touchUpInside" id="yKw-Aj-XkE"/>
|
||||
</connections>
|
||||
<state key="normal" title="Answer"/>
|
||||
</button>
|
||||
<button opaque="NO" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" adjustsImageWhenHighlighted="NO" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Iiz-W1-oNW">
|
||||
<rect key="frame" x="360" y="5" width="44" height="44"/>
|
||||
<color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<accessibility key="accessibilityConfiguration" identifier="CallVCCameraSwitchButton"/>
|
||||
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="H4g-11-Y8d">
|
||||
<rect key="frame" x="80" y="0.0" width="64" height="64"/>
|
||||
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<constraints>
|
||||
<constraint firstAttribute="height" constant="44" id="2ci-nt-cgP"/>
|
||||
<constraint firstAttribute="width" constant="44" id="owR-ds-wTp"/>
|
||||
<constraint firstAttribute="width" constant="64" id="QM0-iF-ghQ"/>
|
||||
<constraint firstAttribute="height" constant="64" id="o4O-gr-8p9"/>
|
||||
</constraints>
|
||||
<fontDescription key="fontDescription" name="Helvetica-Bold" family="Helvetica" pointSize="13"/>
|
||||
<color key="tintColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<inset key="titleEdgeInsets" minX="-69" minY="61" maxX="0.0" maxY="0.0"/>
|
||||
<state key="normal" image="camera_switch">
|
||||
<color key="titleColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<color key="titleShadowColor" red="0.5" green="0.5" blue="0.5" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
</state>
|
||||
<state key="highlighted">
|
||||
<color key="titleColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
</state>
|
||||
<connections>
|
||||
<action selector="onButtonPressed:" destination="-1" eventType="touchUpInside" id="UaC-FO-rmW"/>
|
||||
</connections>
|
||||
<state key="normal" title="Reject"/>
|
||||
</button>
|
||||
</subviews>
|
||||
<color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<accessibility key="accessibilityConfiguration" identifier="CallVCOverlayContainerView"/>
|
||||
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
|
||||
<constraints>
|
||||
<constraint firstItem="nk9-Un-LVP" firstAttribute="leading" secondItem="JAR-tn-sGN" secondAttribute="leading" id="9wq-Y2-kZa"/>
|
||||
<constraint firstItem="rSg-mB-C4P" firstAttribute="top" secondItem="nk9-Un-LVP" secondAttribute="top" id="A5j-LU-fJy"/>
|
||||
<constraint firstItem="nff-fB-sTq" firstAttribute="top" secondItem="JAR-tn-sGN" secondAttribute="top" constant="5" id="C4F-59-09O"/>
|
||||
<constraint firstItem="W2P-Hy-nV2" firstAttribute="leading" secondItem="JAR-tn-sGN" secondAttribute="leading" id="Dow-OM-vNZ"/>
|
||||
<constraint firstAttribute="bottom" secondItem="rSg-mB-C4P" secondAttribute="bottom" id="FYo-fo-DFI"/>
|
||||
<constraint firstAttribute="trailing" secondItem="W2P-Hy-nV2" secondAttribute="trailing" id="hPw-CT-hcl"/>
|
||||
<constraint firstAttribute="trailing" secondItem="Iiz-W1-oNW" secondAttribute="trailing" constant="10" id="hze-F3-Pyo"/>
|
||||
<constraint firstItem="nff-fB-sTq" firstAttribute="leading" secondItem="JAR-tn-sGN" secondAttribute="leading" constant="10" id="ubP-7v-uDn"/>
|
||||
<constraint firstItem="Iiz-W1-oNW" firstAttribute="top" secondItem="JAR-tn-sGN" secondAttribute="top" constant="5" id="x8C-b1-k4g"/>
|
||||
<constraint firstAttribute="trailing" secondItem="nk9-Un-LVP" secondAttribute="trailing" id="yES-yI-i3m"/>
|
||||
<constraint firstItem="W2P-Hy-nV2" firstAttribute="top" secondItem="JAR-tn-sGN" secondAttribute="top" id="yj4-Vr-mIA"/>
|
||||
<constraint firstItem="dGJ-MI-UFd" firstAttribute="leading" secondItem="UGa-hI-iqx" secondAttribute="leading" id="7J3-a1-yU8"/>
|
||||
<constraint firstItem="dGJ-MI-UFd" firstAttribute="top" secondItem="UGa-hI-iqx" secondAttribute="top" id="GKC-mr-hEc"/>
|
||||
<constraint firstAttribute="trailing" secondItem="H4g-11-Y8d" secondAttribute="trailing" id="Gdt-pu-dB5"/>
|
||||
<constraint firstItem="H4g-11-Y8d" firstAttribute="top" secondItem="UGa-hI-iqx" secondAttribute="top" id="Kz6-11-shR"/>
|
||||
<constraint firstAttribute="height" constant="64" id="k5z-nY-ao0"/>
|
||||
<constraint firstAttribute="width" constant="144" id="wft-dC-ob6"/>
|
||||
</constraints>
|
||||
</view>
|
||||
</subviews>
|
||||
|
@ -327,23 +334,18 @@
|
|||
<accessibility key="accessibilityConfiguration" identifier="CallVCView"/>
|
||||
<constraints>
|
||||
<constraint firstItem="6gQ-zo-2Zw" firstAttribute="top" secondItem="r1a-fi-tZ0" secondAttribute="top" priority="750" constant="420" id="6gi-ec-ZnO"/>
|
||||
<constraint firstItem="v1I-LH-wvv" firstAttribute="centerY" secondItem="iN0-l3-epB" secondAttribute="centerY" multiplier="0.8" id="7bF-kf-k3o"/>
|
||||
<constraint firstItem="r1a-fi-tZ0" firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="6gQ-zo-2Zw" secondAttribute="trailing" constant="20" id="9Om-6f-K9u"/>
|
||||
<constraint firstAttribute="bottom" secondItem="STO-VX-5VW" secondAttribute="bottom" id="DhB-zy-SJA"/>
|
||||
<constraint firstItem="JAR-tn-sGN" firstAttribute="leading" secondItem="r1a-fi-tZ0" secondAttribute="leading" id="QLG-jw-Xph"/>
|
||||
<constraint firstItem="6gQ-zo-2Zw" firstAttribute="leading" secondItem="r1a-fi-tZ0" secondAttribute="leading" priority="750" constant="20" id="Qvg-FG-sBr"/>
|
||||
<constraint firstItem="STO-VX-5VW" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" id="Tyh-Du-Ztt"/>
|
||||
<constraint firstItem="JAR-tn-sGN" firstAttribute="top" secondItem="r1a-fi-tZ0" secondAttribute="top" id="U4J-cG-hhC"/>
|
||||
<constraint firstItem="r1a-fi-tZ0" firstAttribute="bottom" secondItem="nk9-Un-LVP" secondAttribute="bottom" id="VpW-QU-xiw"/>
|
||||
<constraint firstAttribute="trailing" secondItem="STO-VX-5VW" secondAttribute="trailing" id="X0Q-UU-v3g"/>
|
||||
<constraint firstItem="r1a-fi-tZ0" firstAttribute="trailing" secondItem="JAR-tn-sGN" secondAttribute="trailing" id="Xcc-jT-zbd"/>
|
||||
<constraint firstItem="v1I-LH-wvv" firstAttribute="centerX" secondItem="iN0-l3-epB" secondAttribute="centerX" id="ZfI-qE-l2V"/>
|
||||
<constraint firstItem="UGa-hI-iqx" firstAttribute="top" secondItem="r1a-fi-tZ0" secondAttribute="top" constant="120" id="YlJ-XZ-rCM"/>
|
||||
<constraint firstItem="Tjb-57-yB1" firstAttribute="top" secondItem="iN0-l3-epB" secondAttribute="top" id="aKy-Ol-bhc"/>
|
||||
<constraint firstAttribute="bottom" secondItem="Tjb-57-yB1" secondAttribute="bottom" id="akt-pO-kWM"/>
|
||||
<constraint firstItem="STO-VX-5VW" firstAttribute="top" secondItem="iN0-l3-epB" secondAttribute="top" id="e4c-aG-jOB"/>
|
||||
<constraint firstItem="JAR-tn-sGN" firstAttribute="top" secondItem="iN0-l3-epB" secondAttribute="top" id="ck8-BX-Uyq"/>
|
||||
<constraint firstItem="UGa-hI-iqx" firstAttribute="centerX" secondItem="iN0-l3-epB" secondAttribute="centerX" id="dzn-mw-OrJ"/>
|
||||
<constraint firstItem="sOu-ER-kOe" firstAttribute="top" secondItem="r1a-fi-tZ0" secondAttribute="top" id="iV6-LV-kcn"/>
|
||||
<constraint firstItem="r1a-fi-tZ0" firstAttribute="bottom" relation="greaterThanOrEqual" secondItem="6gQ-zo-2Zw" secondAttribute="bottom" constant="74" id="jCm-3K-6ah"/>
|
||||
<constraint firstItem="rSg-mB-C4P" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" id="jIP-1d-YfA"/>
|
||||
<constraint firstAttribute="trailing" secondItem="rSg-mB-C4P" secondAttribute="trailing" id="lVr-Iy-0mW"/>
|
||||
<constraint firstItem="Tjb-57-yB1" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" id="mW3-RA-hx2"/>
|
||||
<constraint firstAttribute="trailing" secondItem="Tjb-57-yB1" secondAttribute="trailing" id="rXn-dm-69F"/>
|
||||
<constraint firstItem="6gQ-zo-2Zw" firstAttribute="top" relation="greaterThanOrEqual" secondItem="r1a-fi-tZ0" secondAttribute="top" constant="80" id="tLa-Lx-XbY"/>
|
||||
|
@ -354,8 +356,16 @@
|
|||
</objects>
|
||||
<resources>
|
||||
<image name="back_icon" width="14" height="23"/>
|
||||
<image name="call_audio_mute_off_icon" width="48" height="48"/>
|
||||
<image name="call_hangup_icon" width="24.5" height="26"/>
|
||||
<image name="call_hangup_large" width="40" height="40"/>
|
||||
<image name="call_more_icon" width="24" height="24"/>
|
||||
<image name="call_paused_icon" width="24" height="24"/>
|
||||
<image name="call_pip_icon" width="24" height="24"/>
|
||||
<image name="call_video_mute_off_icon" width="48" height="48"/>
|
||||
<image name="camera_switch" width="24" height="24"/>
|
||||
<systemColor name="systemGreenColor">
|
||||
<color red="0.20392156862745098" green="0.7803921568627451" blue="0.34901960784313724" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
</systemColor>
|
||||
</resources>
|
||||
</document>
|
||||
|
|