Remove SubtleVolume

This commit is contained in:
Serena 2023-02-01 20:53:15 +03:00
parent 738b7fc630
commit 7e31ee1e2b
4 changed files with 0 additions and 365 deletions

View file

@ -1145,8 +1145,6 @@ elseif(IOS)
ios/PPSSPPUIApplication.mm
ios/SmartKeyboardMap.cpp
ios/SmartKeyboardMap.hpp
ios/SubtleVolume.h
ios/SubtleVolume.mm
ios/iCade/iCadeReaderView.h
ios/iCade/iCadeReaderView.m
ios/iCade/iCadeState.h

View file

@ -1,84 +0,0 @@
//
// SubtleVolume.h
// subtleVolumeObjC
//
// Created by iMokhles on 24/03/16.
// Copyright © 2016 iMokhles. All rights reserved.
//
#import <UIKit/UIKit.h>
#import <MediaPlayer/MediaPlayer.h>
#import <AVFoundation/AVFoundation.h>
/**
The style of the volume indicator
- Plain: A plain bar
- RoundedLine: A plain bar with rounded corners
- Dashes: A bar divided in dashes
- Dots: A bar composed by a line of dots
*/
typedef NS_ENUM(NSInteger, SubtleVolumeStyle) {
SubtleVolumeStylePlain,
SubtleVolumeStyleRoundedLine,
SubtleVolumeStyleDashes,
SubtleVolumeStyleDots
};
/**
The entry and exit animation of the volume indicator
- None: The indicator is always visible
- SlideDown: The indicator fades in/out and slides from/to the top into position
- FadeIn: The indicator fades in and out
*/
typedef NS_ENUM(NSInteger, SubtleVolumeAnimation) {
SubtleVolumeAnimationNone,
SubtleVolumeAnimationSlideDown,
SubtleVolumeAnimationFadeIn
};
@class SubtleVolume;
/**
Delegate protocol fo `SubtleVolume`.
Notifies the delegate when a change is about to happen (before the entry animation)
and when a change occurred (and the exit animation is complete)
*/
@protocol SubtleVolumeDelegate <NSObject>
/**
The volume is about to change. This is fired before performing any entry animation
- parameter subtleVolume: The current instance of `SubtleVolume`
- parameter value: The value of the volume (between 0 an 1.0)
*/
- (void)subtleVolume:(SubtleVolume *)volumeView willChange:(CGFloat)value;
/**
The volume did change. This is fired after the exit animation is done
- parameter subtleVolume: The current instance of `SubtleVolume`
- parameter value: The value of the volume (between 0 an 1.0)
*/
- (void)subtleVolume:(SubtleVolume *)volumeView didChange:(CGFloat)value;
@end
/**
Replace the system volume popup with a more subtle way to display the volume
when the user changes it with the volume rocker.
*/
@interface SubtleVolume : UIView
/**
The style of the volume indicator
*/
@property (nonatomic, assign) SubtleVolumeStyle style;
/**
The entry and exit animation of the indicator. The animation is triggered by the volume
If the animation is set to `SubtleVolumeAnimationNone`, the volume indicator is always visible
*/
@property (nonatomic, assign) SubtleVolumeAnimation animation;
@property (nonatomic, strong) UIColor *barBackgroundColor;
@property (nonatomic, strong) UIColor *barTintColor;
@property (nonatomic, assign) id <SubtleVolumeDelegate> delegate;
@property (nonatomic, assign) BOOL animatedByDefault;
@property (nonatomic, assign) CGFloat padding;
- (instancetype)initWithStyle:(SubtleVolumeStyle)style;
- (instancetype)initWithStyle:(SubtleVolumeStyle)style frame:(CGRect)frame;
@end

View file

@ -1,238 +0,0 @@
//
// SubtleVolume.m
// subtleVolumeObjC
//
// Created by iMokhles on 24/03/16.
// Copyright © 2016 iMokhles. All rights reserved.
//
#import "SubtleVolume.h"
MPVolumeView *volume = [[MPVolumeView alloc] initWithFrame:CGRectZero];
UIView *overlay = [[UIView alloc] init];
CGFloat volumeLevel = 0;
@interface SubtleVolume (){
BOOL runningShowAnimation;
BOOL showing;
BOOL runningHideAnimation;
BOOL lastAnimated;
};
@property (nonatomic, strong) NSTimer *timer;
- (void)timerComplete;
- (void)doHide:(BOOL)animated;
- (void)doShow:(BOOL)animated;
- (void)stopAnimations;
@end
@implementation SubtleVolume
- (instancetype)initWithStyle:(SubtleVolumeStyle)style frame:(CGRect)frame {
self = [super initWithFrame:frame];
if (self) {
self.animatedByDefault = YES;
self.style = style;
[self setup];
}
return self;
}
- (instancetype)initWithStyle:(SubtleVolumeStyle)style {
return [self initWithStyle:style frame:CGRectZero];
}
- (instancetype)initWithCoder:(NSCoder *)aDecoder {
self = [super initWithCoder:aDecoder];
if (self) {
[self setup];
}
return self;
}
- (instancetype)initWithFrame:(CGRect)frame {
self = [super initWithFrame:frame];
if (self) {
[self setup];
}
return self;
}
- (instancetype)init {
self = nil;
NSAssert(false, @"To init this class please use the designated initializer: initWithStyle or initWithStyle:frame:");
return nil;
}
- (void)setup {
@try {
[[AVAudioSession sharedInstance] setActive:YES error:nil];
} @catch (NSException *e) {
NSLog(@"Unable to initialize AVAudioSession");
}
volumeLevel = [[AVAudioSession sharedInstance] outputVolume];
[[AVAudioSession sharedInstance] addObserver:self forKeyPath:@"outputVolume" options:NSKeyValueObservingOptionNew context:NULL];
[volume setVolumeThumbImage:[[UIImage alloc] init] forState:UIControlStateNormal];
[volume setUserInteractionEnabled:NO];
[volume setAlpha:0.0001];
[volume setShowsRouteButton:NO];
self.alpha = 0.0001;
[self addSubview:volume];
[self addSubview:overlay];
}
- (void)layoutSubviews {
[super layoutSubviews];
overlay.frame = CGRectMake(
self.padding,
self.padding,
(self.frame.size.width - (self.padding*2)) * volumeLevel,
self.frame.size.height - (self.padding*2)
);
self.backgroundColor = self.barBackgroundColor;
overlay.backgroundColor = self.barTintColor;
}
- (void)updateVolume:(CGFloat)value animated:(BOOL)animated {
[self.delegate subtleVolume:self willChange:value];
volumeLevel = value;
lastAnimated = animated;
[UIView animateWithDuration:(animated ? 0.1 : 0) animations:^{
CGRect rectOverlayView = overlay.frame;
CGFloat overlyWidth = self.frame.size.width * volumeLevel;
rectOverlayView.size.width = overlyWidth;
overlay.frame = rectOverlayView;
}];
if(self.timer) {
[self.timer invalidate];
self.timer = nil;
}
self.timer = [NSTimer scheduledTimerWithTimeInterval:2 target:self selector:@selector(timerComplete) userInfo:nil repeats:NO];
[self doShow:animated];
[self.delegate subtleVolume:self didChange:value];
}
- (void)timerComplete {
[self doHide:lastAnimated];
self.timer = nil;
}
- (void)doHide:(BOOL)animated {
if(!showing) {
return;
}
if(runningHideAnimation && !animated) {
[self stopAnimations];
}
if(runningHideAnimation) {
return;
}
if(animated) {
runningHideAnimation = YES;
[UIView animateWithDuration:0.333 animations:^{
switch (self.animation) {
case SubtleVolumeAnimationNone:
break;
case SubtleVolumeAnimationFadeIn:
self.alpha = 0.0001;
break;
case SubtleVolumeAnimationSlideDown:
self.alpha = 0.0001;
self.transform = CGAffineTransformMakeTranslation(0, -self.frame.size.height);
break;
default:
break;
}
} completion:^(BOOL finished) {
showing = NO;
runningHideAnimation = NO;
}];
} else {
showing = NO;
self.alpha = 0.0001;
if(self.animation == SubtleVolumeAnimationSlideDown) {
self.transform = CGAffineTransformMakeTranslation(0, -self.frame.size.height);
}
}
}
- (void)doShow:(BOOL)animated {
if(showing) {
return;
}
if(runningShowAnimation && !animated) {
[self stopAnimations];
}
if(runningShowAnimation) {
return;
}
if(animated) {
// set up for first run, assuming the animation has changed
// between instantiation and first showing
if(self.animation == SubtleVolumeAnimationSlideDown) {
self.transform = CGAffineTransformMakeTranslation(0, -self.frame.size.height);
}
runningShowAnimation = YES;
[UIView animateWithDuration:0.333 animations:^{
switch (self.animation) {
case SubtleVolumeAnimationNone:
break;
case SubtleVolumeAnimationFadeIn:
self.alpha = 1;
break;
case SubtleVolumeAnimationSlideDown:
self.alpha = 1;
self.transform = CGAffineTransformIdentity;
break;
default:
break;
}
} completion:^(BOOL finished) {
showing = YES;
runningShowAnimation = NO;
}];
} else {
showing = YES;
self.alpha = 1;
self.transform = CGAffineTransformIdentity;
}
}
- (void)stopAnimations {
[self.layer removeAllAnimations];
runningHideAnimation = NO;
runningShowAnimation = NO;
}
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSString *,id> *)change context:(void *)context {
if ([keyPath isEqual:@"outputVolume"]) {
CGFloat value = [change[@"new"] floatValue];
[self updateVolume:value animated:self.animatedByDefault];
} else {
return;
}
}
@end

View file

@ -8,7 +8,6 @@
#import "AppDelegate.h"
#import "ViewController.h"
#import "DisplayManager.h"
#import "SubtleVolume.h"
#import <GLKit/GLKit.h>
#include <cassert>
@ -117,12 +116,6 @@ static LocationHelper *locationHelper;
@end
@interface ViewController () <SubtleVolumeDelegate> {
SubtleVolume *volume;
}
@end
@implementation ViewController
-(id) init {
@ -157,11 +150,6 @@ static LocationHelper *locationHelper;
return self;
}
- (void)subtleVolume:(SubtleVolume *)volumeView willChange:(CGFloat)value {
}
- (void)subtleVolume:(SubtleVolume *)volumeView didChange:(CGFloat)value {
}
- (void)shareText:(NSString *)text {
NSArray *items = @[text];
UIActivityViewController * viewController = [[UIActivityViewController alloc] initWithActivityItems:items applicationActivities:nil];
@ -227,25 +215,6 @@ static LocationHelper *locationHelper;
}
}
#endif
CGFloat margin = 0;
CGFloat height = 16;
volume = [[SubtleVolume alloc]
initWithStyle:SubtleVolumeStylePlain
frame:CGRectMake(
margin, // X
0, // Y
self.view.frame.size.width-(margin*2), // width
height // height
)];
volume.padding = 7;
volume.barTintColor = [UIColor blackColor];
volume.barBackgroundColor = [UIColor whiteColor];
volume.animation = SubtleVolumeAnimationSlideDown;
volume.delegate = self;
[self.view addSubview:volume];
[self.view bringSubviewToFront:volume];
cameraHelper = [[CameraHelper alloc] init];
[cameraHelper setDelegate:self];
@ -274,11 +243,6 @@ static LocationHelper *locationHelper;
});
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
}
- (void)appWillTerminate:(NSNotification *)notification
{
[self shutdown];
@ -289,11 +253,6 @@ static LocationHelper *locationHelper;
if (sharedViewController == nil) {
return;
}
if(volume) {
[volume removeFromSuperview];
volume = nil;
}
Audio_Shutdown();