From 5dee29a21c13136dc1e83df51e56d64d698ae07a Mon Sep 17 00:00:00 2001 From: Cameron Gutman Date: Fri, 10 Jul 2015 18:09:12 -0700 Subject: [PATCH] Add a play indicator for running apps --- .../Play.imageset/Contents.json | 21 ++++++++++++++ .../Images.xcassets/Play.imageset/play.png | Bin 0 -> 17407 bytes Limelight/UIAppView.m | 27 ++++++++++++------ .../ViewControllers/MainFrameViewController.m | 2 ++ 4 files changed, 41 insertions(+), 9 deletions(-) create mode 100644 Limelight/Images.xcassets/Play.imageset/Contents.json create mode 100644 Limelight/Images.xcassets/Play.imageset/play.png diff --git a/Limelight/Images.xcassets/Play.imageset/Contents.json b/Limelight/Images.xcassets/Play.imageset/Contents.json new file mode 100644 index 00000000..e30bc554 --- /dev/null +++ b/Limelight/Images.xcassets/Play.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "play.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/Limelight/Images.xcassets/Play.imageset/play.png b/Limelight/Images.xcassets/Play.imageset/play.png new file mode 100644 index 0000000000000000000000000000000000000000..d03e6e6e1fc75ad8ca5a6e9e329797967dddd58e GIT binary patch literal 17407 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 _callback; } -static int LABEL_DY = 20; - (id) initWithApp:(App*)app andCallback:(id)callback { self = [super init]; @@ -28,29 +28,38 @@ static int LABEL_DY = 20; [_appButton sizeToFit]; [_appButton addTarget:self action:@selector(appClicked) forControlEvents:UIControlEventTouchUpInside]; + _appOverlay = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"Play"]]; + _appOverlay.layer.shadowColor = [UIColor blackColor].CGColor; + _appOverlay.layer.shadowOffset = CGSizeMake(0, 0); + _appOverlay.layer.shadowOpacity = 1; + _appOverlay.layer.shadowRadius = 2.0; + [_appOverlay setHidden: YES]; + [self addSubview:_appButton]; + [self addSubview:_appOverlay]; [self sizeToFit]; + _appButton.frame = CGRectMake(0, 0, noImage.size.width, noImage.size.height); + _appOverlay.frame = CGRectMake(0, 0, noImage.size.width / 2.f, noImage.size.height / 4.f); self.frame = CGRectMake(0, 0, noImage.size.width, noImage.size.height); + [_appOverlay setCenter:CGPointMake(self.frame.size.width/2, self.frame.size.height/6)]; return self; } -- (void) updateBounds { - float x = _appButton.frame.origin.x < _appLabel.frame.origin.x ? _appButton.frame.origin.x : _appLabel.frame.origin.x; - float y = _appButton.frame.origin.y < _appLabel.frame.origin.y ? _appButton.frame.origin.y : _appLabel.frame.origin.y; - self.bounds = CGRectMake(x , y, _appButton.frame.size.width > _appLabel.frame.size.width ? _appButton.frame.size.width : _appLabel.frame.size.width, _appButton.frame.size.height + _appLabel.frame.size.height + LABEL_DY / 2); - self.frame = CGRectMake(x , y, _appButton.frame.size.width > _appLabel.frame.size.width ? _appButton.frame.size.width : _appLabel.frame.size.width, _appButton.frame.size.height + _appLabel.frame.size.height + LABEL_DY / 2); -} - - (void) appClicked { [_callback appClicked:_app]; } - (void) updateAppImage { - if (_app.appImage != nil) { + [_appOverlay setHidden:!_app.isRunning]; + + if (_app.appImage != nil && !(_app.appImage.size.width == 130.f && _app.appImage.size.height == 180.f)) { _appButton.frame = CGRectMake(0, 0, _app.appImage.size.width / 2, _app.appImage.size.height / 2); self.frame = CGRectMake(0, 0, _app.appImage.size.width / 2, _app.appImage.size.height / 2); + _appOverlay.frame = CGRectMake(0, 0, self.frame.size.width / 2.f, self.frame.size.height / 4.f); + _appOverlay.layer.shadowRadius = 4.0; + [_appOverlay setCenter:CGPointMake(self.frame.size.width/2, self.frame.size.height/6)]; [_appButton setBackgroundImage:_app.appImage forState:UIControlStateNormal]; [self setNeedsDisplay]; } diff --git a/Limelight/ViewControllers/MainFrameViewController.m b/Limelight/ViewControllers/MainFrameViewController.m index 71601bc9..3ba8137f 100644 --- a/Limelight/ViewControllers/MainFrameViewController.m +++ b/Limelight/ViewControllers/MainFrameViewController.m @@ -302,6 +302,7 @@ static NSArray* appList; currentApp.isRunning = NO; dispatch_async(dispatch_get_main_queue(), ^{ + [self updateApps]; [self performSegueWithIdentifier:@"createStreamFrame" sender:nil]; }); @@ -318,6 +319,7 @@ static NSArray* appList; [alert addAction:[UIAlertAction actionWithTitle:@"Ok" style:UIAlertActionStyleDestructive handler:nil]]; dispatch_async(dispatch_get_main_queue(), ^{ + [self updateApps]; [self presentViewController:alert animated:YES completion:nil]; }); });