diff options
author | Mikkel Krautz <mikkel@krautz.dk> | 2011-08-07 20:33:53 +0400 |
---|---|---|
committer | Mikkel Krautz <mikkel@krautz.dk> | 2011-08-07 20:33:53 +0400 |
commit | 26600e4d440afc645eb18e40ecf6336ba065877b (patch) | |
tree | 4f9a7fa054fb21e712b29c885f33fa46081b863d | |
parent | 97fd610a6885ca747d4c95b41a9ab537cd42c712 (diff) |
Add PushToTalk button to channel view.
-rw-r--r-- | Source/Classes/MUChannelViewController.m | 20 | ||||
-rw-r--r-- | Source/Classes/MUServerRootViewController.m | 5 | ||||
-rw-r--r-- | Source/Classes/MUServerViewController.m | 16 |
3 files changed, 37 insertions, 4 deletions
diff --git a/Source/Classes/MUChannelViewController.m b/Source/Classes/MUChannelViewController.m index 594eab4..441d6dc 100644 --- a/Source/Classes/MUChannelViewController.m +++ b/Source/Classes/MUChannelViewController.m @@ -30,10 +30,13 @@ #import "MUChannelViewController.h" +#import <MumbleKit/MKAudio.h> + @interface MUChannelViewController () <MKServerModelDelegate> { NSMutableArray *_users; MKChannel *_channel; MKServerModel *_model; + BOOL _pttState; } - (UIView *) stateAccessoryViewForUser:(MKUser *)user; @end @@ -63,8 +66,13 @@ _users = [[_channel users] mutableCopy]; [self.tableView reloadData]; + + UIBarButtonItem *pttButton = [[[UIBarButtonItem alloc] initWithTitle:@"PushToTalk" style:UIBarButtonItemStyleBordered target:self action:@selector(pushToTalkClicked:)] autorelease]; + UIBarButtonItem *flexSpace = [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil] autorelease]; + self.toolbarItems = [NSArray arrayWithObjects:flexSpace, pttButton, flexSpace, nil]; + self.navigationController.toolbarHidden = NO; } - + - (void) viewWillDisappear:(BOOL)animated { [_model removeDelegate:self]; @@ -74,6 +82,7 @@ _users = nil; [self.tableView reloadData]; + self.navigationController.toolbarHidden = YES; } - (BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { @@ -232,6 +241,8 @@ NSUInteger userIndex = [_users indexOfObject:user]; if (userIndex == NSNotFound) return; + + NSLog(@"UserTalkStateChanged!"); UITableViewCell *cell = [[self tableView] cellForRowAtIndexPath:[NSIndexPath indexPathForRow:userIndex inSection:0]]; MKTalkState talkState = [user talkState]; @@ -339,4 +350,11 @@ return 44.0f; } +#pragma mark - PushToTalk + +- (void) pushToTalkClicked:(id)sender { + _pttState = !_pttState; + [[MKAudio sharedAudio] setForceTransmit:_pttState]; +} + @end diff --git a/Source/Classes/MUServerRootViewController.m b/Source/Classes/MUServerRootViewController.m index 5b58f4d..93dedf8 100644 --- a/Source/Classes/MUServerRootViewController.m +++ b/Source/Classes/MUServerRootViewController.m @@ -144,9 +144,11 @@ } - (void) segmentChanged:(id)sender { + UIViewController *oldTop = [self topViewController]; + [oldTop viewWillDisappear:NO]; if (_segmentedControl.selectedSegmentIndex == 0) { _serverView.navigationItem.titleView = _segmentedControl; - [self setViewControllers:[NSArray arrayWithObject:_serverView] animated:NO]; + [self setViewControllers:[NSArray arrayWithObject:_serverView] animated:NO]; } else if (_segmentedControl.selectedSegmentIndex == 1) { _channelView.navigationItem.titleView = _segmentedControl; [self setViewControllers:[NSArray arrayWithObject:_channelView] animated:NO]; @@ -154,6 +156,7 @@ _connectionView.navigationItem.titleView = _segmentedControl; [self setViewControllers:[NSArray arrayWithObject:_connectionView] animated:NO]; } + [oldTop viewDidDisappear:NO]; } #pragma mark - MKConnection delegate diff --git a/Source/Classes/MUServerViewController.m b/Source/Classes/MUServerViewController.m index fe4fd55..a9585e4 100644 --- a/Source/Classes/MUServerViewController.m +++ b/Source/Classes/MUServerViewController.m @@ -44,7 +44,6 @@ - (void) dealloc; - (id) object; - (NSInteger) indentLevel; - @end @implementation MUChannelNavigationItem @@ -172,10 +171,23 @@ cell.textLabel.font = [UIFont boldSystemFontOfSize:18]; } else if ([object class] == [MKUser class]) { MKUser *user = object; - cell.imageView.image = [UIImage imageNamed:@"talking_off"]; + cell.textLabel.text = [user userName]; if (user == connectedUser) cell.textLabel.font = [UIFont boldSystemFontOfSize:18]; + + MKTalkState talkState = [user talkState]; + NSString *talkImageName = nil; + if (talkState == MKTalkStatePassive) + talkImageName = @"talking_off"; + else if (talkState == MKTalkStateTalking) + talkImageName = @"talking_on"; + else if (talkState == MKTalkStateWhispering) + talkImageName = @"talking_whisper"; + else if (talkState == MKTalkStateShouting) + talkImageName = @"talking_alt"; + + cell.imageView.image = [UIImage imageNamed:talkImageName]; } cell.indentationLevel = [navItem indentLevel]; |