Merge branch 'charlesmchen/webrtc/callView2' into feature/webrtc

pull/1/head
Matthew Chen 9 years ago
commit 1c4ebf6f6c

@ -0,0 +1,21 @@
{
"images" : [
{
"idiom" : "universal",
"filename" : "call-active-wide.png",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.5 KiB

@ -0,0 +1,21 @@
{
"images" : [
{
"idiom" : "universal",
"filename" : "hangup-active-wide.png",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.1 KiB

@ -0,0 +1,21 @@
{
"images" : [
{
"idiom" : "universal",
"filename" : "message-active-wide.png",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

@ -0,0 +1,21 @@
{
"images" : [
{
"idiom" : "universal",
"filename" : "mute-active-wide.png",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

@ -0,0 +1,21 @@
{
"images" : [
{
"idiom" : "universal",
"filename" : "mute-inactive-wide.png",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

@ -0,0 +1,21 @@
{
"images" : [
{
"idiom" : "universal",
"filename" : "speaker-active-wide.png",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

@ -0,0 +1,21 @@
{
"images" : [
{
"idiom" : "universal",
"filename" : "speaker-inactive-wide.png",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

@ -0,0 +1,21 @@
{
"images" : [
{
"idiom" : "universal",
"filename" : "video-active-wide.png",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

@ -0,0 +1,21 @@
{
"images" : [
{
"idiom" : "universal",
"filename" : "video-inactive-wide.png",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

@ -127,6 +127,9 @@ import PromiseKit
}
}
// TODO: Add category so that button handlers can be defined where button is created.
// TODO: Add logic to button handlers.
// TODO: Ensure buttons enabled & disabled as necessary.
@objc(OWSCallViewController)
class CallViewController: UIViewController, CallDelegate {
@ -170,14 +173,13 @@ class CallViewController: UIViewController, CallDelegate {
var hangUpButton: UIButton!
var muteButton: UIButton!
var speakerPhoneButton: UIButton!
var ongoingTextMessageButton: UIButton!
var textMessageButton: UIButton!
var videoButton: UIButton!
// MARK: Incoming Call Controls
var incomingCallView: UIView!
var incomingTextMessageButton: UIButton!
var acceptIncomingButton: UIButton!
var declineIncomingButton: UIButton!
@ -188,11 +190,11 @@ class CallViewController: UIViewController, CallDelegate {
}
var incomingCallControls: [UIView] {
return [ incomingTextMessageButton, acceptIncomingButton, declineIncomingButton ]
return [ acceptIncomingButton, declineIncomingButton ]
}
var ongoingCallControls: [UIView] {
return [ muteButton, speakerPhoneButton, ongoingTextMessageButton, hangUpButton, videoButton ]
return [ muteButton, speakerPhoneButton, textMessageButton, hangUpButton, videoButton ]
}
// MARK: Initializers
@ -269,29 +271,28 @@ class CallViewController: UIViewController, CallDelegate {
}
func buttonSize() -> CGFloat {
return ScaleFromIPhone5To7Plus(70, 90)
return ScaleFromIPhone5To7Plus(84, 108)
}
func buttonInset() -> CGFloat {
return ScaleFromIPhone5To7Plus(7, 9)
}
func createOngoingCallControls() {
ongoingTextMessageButton = createButton(imageName:"logoSignal",
action:#selector(didPressTextMessage),
buttonSize:buttonSize())
muteButton = createButton(imageName:"mute-inactive",
action:#selector(didPressMute),
buttonSize:buttonSize())
speakerPhoneButton = createButton(imageName:"speaker-inactive",
action:#selector(didPressSpeakerphone),
buttonSize:buttonSize())
videoButton = createButton(imageName:"video-active",
action:#selector(didPressVideo),
buttonSize:buttonSize())
hangUpButton = createButton(imageName:"endcall",
action:#selector(didPressHangup),
buttonSize:buttonSize())
textMessageButton = createButton(imageName:"message-active-wide",
action:#selector(didPressTextMessage))
muteButton = createButton(imageName:"mute-active-wide",
action:#selector(didPressMute))
speakerPhoneButton = createButton(imageName:"speaker-active-wide",
action:#selector(didPressSpeakerphone))
videoButton = createButton(imageName:"video-active-wide",
action:#selector(didPressVideo))
hangUpButton = createButton(imageName:"hangup-active-wide",
action:#selector(didPressHangup))
ongoingCallView = createContainerForCallControls(controlGroups : [
[ongoingTextMessageButton, videoButton],
[textMessageButton, videoButton],
[muteButton, speakerPhoneButton ],
[hangUpButton ]
])
@ -299,18 +300,12 @@ class CallViewController: UIViewController, CallDelegate {
func createIncomingCallControls() {
incomingTextMessageButton = createButton(imageName:"logoSignal",
action:#selector(didPressTextMessage),
buttonSize:buttonSize())
acceptIncomingButton = createButton(imageName:"call",
action:#selector(didPressAnswerCall),
buttonSize:buttonSize())
declineIncomingButton = createButton(imageName:"endcall",
action:#selector(didPressDeclineCall),
buttonSize:buttonSize())
acceptIncomingButton = createButton(imageName:"call-active-wide",
action:#selector(didPressAnswerCall))
declineIncomingButton = createButton(imageName:"hangup-active-wide",
action:#selector(didPressDeclineCall))
incomingCallView = createContainerForCallControls(controlGroups : [
[incomingTextMessageButton],
[acceptIncomingButton, declineIncomingButton ]
])
}
@ -320,10 +315,9 @@ class CallViewController: UIViewController, CallDelegate {
self.view.addSubview(containerView)
var rows: [UIView] = []
for controlGroup in controlGroups {
rows.append(rowWithSubviews(subviews:controlGroup,
fixedHeight:buttonSize()))
rows.append(rowWithSubviews(subviews:controlGroup))
}
let rowspacing = ScaleFromIPhone5To7Plus(20, 25)
let rowspacing = ScaleFromIPhone5To7Plus(6, 7)
var prevRow: UIView?
for row in rows {
containerView.addSubview(row)
@ -340,21 +334,25 @@ class CallViewController: UIViewController, CallDelegate {
return containerView
}
func createButton(imageName: String, action: Selector, buttonSize: CGFloat) -> UIButton {
func createButton(imageName: String, action: Selector) -> UIButton {
let image = UIImage(named:imageName)
let button = UIButton()
button.setImage(image, for:.normal)
button.imageEdgeInsets = UIEdgeInsetsMake(buttonInset(),
buttonInset(),
buttonInset(),
buttonInset())
button.addTarget(self, action:action, for:.touchUpInside)
button.autoSetDimension(.width, toSize:buttonSize)
button.autoSetDimension(.height, toSize:buttonSize)
button.autoSetDimension(.width, toSize:buttonSize())
button.autoSetDimension(.height, toSize:buttonSize())
return button
}
// Creates a row containing a given set of subviews.
func rowWithSubviews(subviews: [UIView], fixedHeight: CGFloat) -> UIView {
func rowWithSubviews(subviews: [UIView]) -> UIView {
let row = UIView()
row.setContentHuggingVerticalHigh()
row.autoSetDimension(.height, toSize:fixedHeight)
row.autoSetDimension(.height, toSize:buttonSize())
if subviews.count > 1 {
// If there's more than one subview in the row,
@ -405,11 +403,14 @@ class CallViewController: UIViewController, CallDelegate {
let topMargin = CGFloat(40)
let contactHMargin = CGFloat(30)
let contactVSpacing = CGFloat(3)
let ongoingHMargin = ScaleFromIPhone5To7Plus(60, 90)
let incomingHMargin = ScaleFromIPhone5To7Plus(60, 90)
let ongoingBottomMargin = ScaleFromIPhone5To7Plus(30, 50)
let incomingBottomMargin = CGFloat(50)
let avatarVSpacing = ScaleFromIPhone5To7Plus(25, 50)
let ongoingHMargin = ScaleFromIPhone5To7Plus(46, 72)
let incomingHMargin = ScaleFromIPhone5To7Plus(46, 72)
let ongoingBottomMargin = ScaleFromIPhone5To7Plus(23, 41)
let incomingBottomMargin = CGFloat(41)
let avatarTopSpacing = ScaleFromIPhone5To7Plus(25, 50)
// The buttons have built-in 10% margins, so to appear centered
// the avatar's bottom spacing should be a bit less.
let avatarBottomSpacing = ScaleFromIPhone5To7Plus(18, 41)
// Dark blurred background.
blurView.autoPinEdgesToSuperviewEdges()
@ -422,8 +423,8 @@ class CallViewController: UIViewController, CallDelegate {
callStatusLabel.autoPinWidthToSuperview(withMargin:contactHMargin)
callStatusLabel.setContentHuggingVerticalHigh()
contactAvatarView.autoPinEdge(.top, to:.bottom, of:callStatusLabel, withOffset:+avatarVSpacing)
contactAvatarView.autoPinEdge(.bottom, to:.top, of:ongoingCallView, withOffset:-avatarVSpacing)
contactAvatarView.autoPinEdge(.top, to:.bottom, of:callStatusLabel, withOffset:+avatarTopSpacing)
contactAvatarView.autoPinEdge(.bottom, to:.top, of:ongoingCallView, withOffset:-avatarBottomSpacing)
contactAvatarView.autoHCenterInSuperview()
// Stretch that avatar to fill the available space.
contactAvatarView.setContentHuggingLow()

Loading…
Cancel
Save