diff --git a/Sources/RootOptionsController.m b/Sources/RootOptionsController.m new file mode 100644 index 0000000..5b31066 --- /dev/null +++ b/Sources/RootOptionsController.m @@ -0,0 +1,178 @@ +#import "RootOptionsController.h" +#import "ColourOptionsController.h" +#import "ColourOptionsController2.h" + +#define SYSTEM_VERSION_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedSame) +#define SYSTEM_VERSION_GREATER_THAN(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedDescending) +#define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending) +#define SYSTEM_VERSION_LESS_THAN(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] == NSOrderedAscending) +#define SYSTEM_VERSION_LESS_THAN_OR_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedDescending) + +@interface RootOptionsController () +@end + +@implementation RootOptionsController + +- (void)viewDidLoad { + [super viewDidLoad]; + [self coloursView]; + + self.title = @"uYouPlus Extras Menu"; + + UIBarButtonItem *doneButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(done)]; + self.navigationItem.leftBarButtonItem = doneButton; + + UITableViewStyle style; + if (@available(iOS 13, *)) { + style = UITableViewStyleInsetGrouped; + } else { + style = UITableViewStyleGrouped; + } + + self.tableView = [[UITableView alloc] initWithFrame:CGRectZero style:style]; + self.tableView.translatesAutoresizingMaskIntoConstraints = NO; + self.tableView.dataSource = self; + self.tableView.delegate = self; + [self.view addSubview:self.tableView]; + + [NSLayoutConstraint activateConstraints:@[ + [self.tableView.centerXAnchor constraintEqualToAnchor:self.view.centerXAnchor], + [self.tableView.centerYAnchor constraintEqualToAnchor:self.view.centerYAnchor], + [self.tableView.widthAnchor constraintEqualToAnchor:self.view.widthAnchor], + [self.tableView.heightAnchor constraintEqualToAnchor:self.view.heightAnchor] + ]]; +} + +- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { + return 1; +} + +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + if (section == 0) { + return 2; + } + if (section == 1) { + return 1; + } + return 0; +} + +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + static NSString *CellIdentifier = @"RootTableViewCell"; + UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; + + if (cell == nil) { + cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"cell"]; + cell.textLabel.adjustsFontSizeToFitWidth = YES; + cell.detailTextLabel.adjustsFontSizeToFitWidth = YES; + if (self.traitCollection.userInterfaceStyle == UIUserInterfaceStyleLight) { + cell.backgroundColor = [UIColor colorWithRed:1.0 green:1.0 blue:1.0 alpha:1.0]; + cell.textLabel.textColor = [UIColor blackColor]; + cell.detailTextLabel.textColor = [UIColor blackColor]; + } + else { + cell.backgroundColor = [UIColor colorWithRed:0.110 green:0.110 blue:0.118 alpha:1.0]; + cell.textLabel.textColor = [UIColor whiteColor]; + cell.textLabel.shadowColor = [UIColor blackColor]; + cell.textLabel.shadowOffset = CGSizeMake(1.0, 1.0); + cell.detailTextLabel.textColor = [UIColor whiteColor]; + } + if (indexPath.section == 0) { + cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; + if (indexPath.row == 0) { + cell.textLabel.text = @"Custom Theme Color"; + cell.imageView.image = [UIImage systemImageNamed:@"slider.horizontal.3"]; + cell.imageView.tintColor = cell.textLabel.textColor; + } + if (indexPath.row == 1) { + cell.textLabel.text = @"Custom LowContrastMode Color"; + cell.imageView.image = [UIImage systemImageNamed:@"drop.fill"]; + cell.imageView.tintColor = cell.textLabel.textColor; + } + } + if (indexPath.section == 1) { + if (indexPath.row == 0) { + cell.textLabel.text = @"Clear Cache"; + UILabel *cache = [[UILabel alloc] init]; + cache.text = [self getCacheSize]; + cache.textColor = [UIColor secondaryLabelColor]; + cache.font = [UIFont systemFontOfSize:16]; + cache.textAlignment = NSTextAlignmentRight; + [cache sizeToFit]; + cell.accessoryView = cache; + cell.imageView.image = [UIImage systemImageNamed:@"trash"]; + cell.imageView.tintColor = cell.textLabel.textColor; + } + } + } + return cell; +} + +- (NSString *)getCacheSize { + NSString *cachePath = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES).firstObject; + NSArray *filesArray = [[NSFileManager defaultManager] subpathsOfDirectoryAtPath:cachePath error:nil]; + + unsigned long long int folderSize = 0; + for (NSString *fileName in filesArray) { + NSString *filePath = [cachePath stringByAppendingPathComponent:fileName]; + NSDictionary *fileAttributes = [[NSFileManager defaultManager] attributesOfItemAtPath:filePath error:nil]; + folderSize += [fileAttributes fileSize]; + } + + NSByteCountFormatter *formatter = [[NSByteCountFormatter alloc] init]; + formatter.countStyle = NSByteCountFormatterCountStyleFile; + + return [formatter stringFromByteCount:folderSize]; +} + +- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { + [tableView deselectRowAtIndexPath:indexPath animated:YES]; + if (indexPath.section == 0) { + if (indexPath.row == 0) { + ColourOptionsController *colourOptionsController = [[ColourOptionsController alloc] init]; + UINavigationController *colourOptionsControllerView = [[UINavigationController alloc] initWithRootViewController:colourOptionsController]; + colourOptionsControllerView.modalPresentationStyle = UIModalPresentationFullScreen; + + [self presentViewController:videoOptionsControllerView animated:YES completion:nil]; + } + if (indexPath.row == 1) { + ColourOptionsController2 *colourOptionsController2 = [[ColourOptionsController2 alloc] init]; + UINavigationController *colourOptionsController2View = [[UINavigationController alloc] initWithRootViewController:colourOptionsController2]; + colourOptionsController2View.modalPresentationStyle = UIModalPresentationFullScreen; + + [self presentViewController:videoPlayerOptionsControllerView animated:YES completion:nil]; + } + } + if (indexPath.section == 1) { + if (indexPath.row == 0) { + UIActivityIndicatorView *activityIndicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleMedium]; + activityIndicator.color = [UIColor labelColor]; + [activityIndicator startAnimating]; + UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath]; + cell.accessoryView = activityIndicator; + + dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ + NSString *cachePath = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES).firstObject; + [[NSFileManager defaultManager] removeItemAtPath:cachePath error:nil]; + + dispatch_async(dispatch_get_main_queue(), ^{ + [self.tableView reloadRowsAtIndexPaths:@[[NSIndexPath indexPathForRow:0 inSection:1]] withRowAnimation:UITableViewRowAnimationNone]; + }); + }); + } +} + +- (void)traitCollectionDidChange:(UITraitCollection *)previousTraitCollection { + [super traitCollectionDidChange:previousTraitCollection]; + [self.tableView reloadData]; +} + +@end + +@implementation RootOptionsController (Privates) + +- (void)done { + [self.presentingViewController dismissViewControllerAnimated:YES completion:nil]; +} + +@end