Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mumble-voip/mumble-iphoneos.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMikkel Krautz <mikkel@krautz.dk>2011-08-07 20:33:53 +0400
committerMikkel Krautz <mikkel@krautz.dk>2011-08-07 20:33:53 +0400
commit26600e4d440afc645eb18e40ecf6336ba065877b (patch)
tree4f9a7fa054fb21e712b29c885f33fa46081b863d
parent97fd610a6885ca747d4c95b41a9ab537cd42c712 (diff)
Add PushToTalk button to channel view.
-rw-r--r--Source/Classes/MUChannelViewController.m20
-rw-r--r--Source/Classes/MUServerRootViewController.m5
-rw-r--r--Source/Classes/MUServerViewController.m16
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];