diff options
| author | FivePixels <o5pxels@gmail.com> | 2020-07-17 10:06:30 -0500 |
|---|---|---|
| committer | FivePixels <o5pxels@gmail.com> | 2020-07-17 10:06:30 -0500 |
| commit | 8a752c04771b28d82dce988849cad84ddaf3ea2c (patch) | |
| tree | 65df72d39d9ee9fb260a32c47be6bfb42cedf3ec /Tweak.x | |
| download | finical-8a752c04771b28d82dce988849cad84ddaf3ea2c.tar.xz finical-8a752c04771b28d82dce988849cad84ddaf3ea2c.zip | |
Diffstat (limited to 'Tweak.x')
| -rw-r--r-- | Tweak.x | 174 |
1 files changed, 174 insertions, 0 deletions
@@ -0,0 +1,174 @@ +#import <Headers.h> +static BOOL enabled = YES; +static BOOL dismissPlayer = NO; +static BOOL killApp = NO; +static int timeOption = 0; +static int dismissGesture = 2; +static int timeValue = 0; +static id prefs; +static void reloadSettings() { + prefs = [[NSMutableDictionary alloc] initWithContentsOfFile:@"/var/mobile/Library/Preferences/com.5px.finical.plist"]; + if(prefs) { + enabled = [prefs objectForKey:@"enabled"] ? [[prefs objectForKey:@"enabled"] intValue] : enabled; + dismissPlayer = [prefs objectForKey:@"dismissPlayer"] ? [[prefs objectForKey:@"dismissPlayer"] intValue]: dismissPlayer; + killApp = [prefs objectForKey:@"killApp"] ? [[prefs objectForKey:@"killApp"] intValue]: killApp; + timeOption = [prefs objectForKey:@"timeOption"] ? [[prefs objectForKey:@"timeOption"] intValue]: timeOption; + timeValue = [prefs objectForKey:@"timeValue"] ? [[prefs objectForKey:@"timeValue"] intValue]: timeValue; + dismissGesture = [prefs objectForKey:@"dismissGesture"] ? [[prefs objectForKey:@"dismissGesture"] intValue]: dismissGesture; + if (dismissPlayer) { + switch (timeOption) { + case 0: + break; + case 1: + timeValue = timeValue * 60; + break; + case 2: + timeValue = timeValue * 3600; + break; + } + } + } +} +%hook CSMediaControlsView +CSAdjunctListItem *item; +SBLockScreenManager *manager; +CSNotificationAdjunctListViewController *vc; +NSTimer *timer; +SBMainSwitcherViewController *mainSwitcher; +NSString *nowPlayingID; +NSArray *items; +%new ++(void)removePlayer { + if ([[%c(SBMediaController) sharedInstance] isPaused]) { + if ([vc.identifiersToItems count] >= 1) { + [vc _removeItem:(id)item animated:(BOOL)YES]; + if (killApp) { + for (SBAppLayout *item in items) { + SBDisplayItem *currentItem = [item.rolesToLayoutItemsMap objectForKey:@1]; + NSString *bundleID = currentItem.bundleIdentifier; + if ([bundleID isEqualToString: nowPlayingID]) { + [mainSwitcher _deleteAppLayout:item forReason: 1]; + } + } + } + } + } +} +%new ++(void)stateChanged:(NSNotification *)notification { + if ([[%c(SBMediaController) sharedInstance] isPlaying]) { + if ([vc.identifiersToItems count] == 0) { + [vc _insertItem:(id)item animated:(BOOL)YES]; + } + } + if ([timer isValid]) { + [timer invalidate]; + timer = nil; + } + if (enabled) { + if ([vc.identifiersToItems count] == 1) { + if (dismissPlayer) { + timer = [NSTimer scheduledTimerWithTimeInterval: timeValue + target: %c(CSMediaControlsView) + selector: @selector(removePlayer) + userInfo: nil + repeats: NO]; + } + } + } +} +-(void)layoutSubviews { + reloadSettings(); + manager = [%c(SBLockScreenManager) sharedInstance]; + vc = [[[[manager coverSheetViewController] mainPageContentViewController] combinedListViewController] adjunctListViewController]; + item = [vc.identifiersToItems objectForKey:@"SBDashBoardNowPlayingAssertionIdentifier"]; + mainSwitcher = [%c(SBMainSwitcherViewController) sharedInstance]; + items = mainSwitcher.recentAppLayouts; + nowPlayingID = [[[%c(SBMediaController) sharedInstance] nowPlayingApplication] bundleIdentifier]; + UISwipeGestureRecognizer *gesture = [[UISwipeGestureRecognizer alloc]initWithTarget:%c(CSMediaControlsView) action:@selector(removePlayer)]; + switch (dismissGesture) { + case 1: + gesture.direction = UISwipeGestureRecognizerDirectionRight; + break; + case 2: + gesture.direction = UISwipeGestureRecognizerDirectionUp; + break; + case 3: + gesture.direction = UISwipeGestureRecognizerDirectionDown; + break; + default: + gesture.direction = UISwipeGestureRecognizerDirectionLeft; + break; + } + [self addGestureRecognizer:gesture]; + %orig; +} +%end +%hook CSAdjunctListItemView +-(void)layoutSubviews { + UISwipeGestureRecognizer *gesture = [[UISwipeGestureRecognizer alloc]initWithTarget:%c(CSMediaControlsView) action:@selector(removePlayer)]; + switch (dismissGesture) { + case 0: + gesture.direction = UISwipeGestureRecognizerDirectionLeft; + break; + case 1: + gesture.direction = UISwipeGestureRecognizerDirectionRight; + break; + case 2: + gesture.direction = UISwipeGestureRecognizerDirectionUp; + break; + case 3: + gesture.direction = UISwipeGestureRecognizerDirectionDown; + break; + } + [self addGestureRecognizer:gesture]; + %orig; +} +%end +%hook QRTMediaModuleViewController +-(void)layoutSubviews { + UISwipeGestureRecognizer *gesture = [[UISwipeGestureRecognizer alloc]initWithTarget:%c(CSMediaControlsView) action:@selector(removePlayer)]; + switch (dismissGesture) { + case 0: + gesture.direction = UISwipeGestureRecognizerDirectionLeft; + break; + case 1: + gesture.direction = UISwipeGestureRecognizerDirectionRight; + break; + case 2: + gesture.direction = UISwipeGestureRecognizerDirectionUp; + break; + case 3: + gesture.direction = UISwipeGestureRecognizerDirectionDown; + break; + } + [self addGestureRecognizer:gesture]; + %orig; +} +%end +%hook PLPlatterCustomContentView +-(void)layoutSubviews { + UISwipeGestureRecognizer *gesture = [[UISwipeGestureRecognizer alloc]initWithTarget:%c(CSMediaControlsView) action:@selector(removePlayer)]; + switch (dismissGesture) { + case 0: + gesture.direction = UISwipeGestureRecognizerDirectionLeft; + break; + case 1: + gesture.direction = UISwipeGestureRecognizerDirectionRight; + break; + case 2: + gesture.direction = UISwipeGestureRecognizerDirectionUp; + break; + case 3: + gesture.direction = UISwipeGestureRecognizerDirectionDown; + break; + } + [self addGestureRecognizer:gesture]; + %orig; +} +%end +%ctor { + reloadSettings(); + [[NSNotificationCenter defaultCenter] addObserver:%c(CSMediaControlsView) selector:@selector(stateChanged:) name:@"SBMediaNowPlayingChangedNotification" object:nil]; +} + |
