hide/show/change stuff on the LS and HS
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

432 lines
12KB

  1. // respring function
  2. @interface FBSystemService : NSObject
  3. +(id)sharedInstance;
  4. -(void)exitAndRelaunch:(bool)arg1;
  5. @end
  6. static void RespringDevice() {
  7. [[%c(FBSystemService) sharedInstance] exitAndRelaunch:YES];
  8. }
  9. // prefs
  10. @interface NSUserDefaults (KagePrefs)
  11. -(id)objectForKey:(NSString *)key inDomain:(NSString *)domain;
  12. -(void)setObject:(id)value forKey:(NSString *)key inDomain:(NSString *)domain;
  13. @end
  14. static NSString *nsDomainString = @"com.yaypixxo.kage";
  15. static NSString *nsNotificationString = @"com.yaypixxo.kage/preferences.changed";
  16. // declare pref things here (switches, buttons, etc.)
  17. static BOOL enabled;
  18. static BOOL hideQuickActionsBG;
  19. static BOOL gridSwitcher;
  20. static BOOL hideLSBatt;
  21. static BOOL statusBarShowTimeLS;
  22. static BOOL hideLabels;
  23. static BOOL hideCarPlayLabels;
  24. static BOOL hideFolderBadges;
  25. static BOOL hideFolderTitle;
  26. static BOOL hideFolderBG;
  27. static BOOL hideFolderBGSB;
  28. static BOOL hideFolderDots;
  29. static BOOL hideNoOlderNotifs;
  30. //static BOOL hideStatusBarLS;
  31. static BOOL hideCCGrabber;
  32. static void notificationCallback(CFNotificationCenterRef center, void *observer, CFStringRef name, const void *object, CFDictionaryRef userInfo) {
  33. NSNumber *eEnabled = (NSNumber *)[[NSUserDefaults standardUserDefaults] objectForKey:@"enabled" inDomain:nsDomainString];
  34. NSNumber *eHideQuickActionsBG = (NSNumber *)[[NSUserDefaults standardUserDefaults] objectForKey:@"hideQuickActionsBG" inDomain:nsDomainString];
  35. NSNumber *eGridSwitcher = (NSNumber *)[[NSUserDefaults standardUserDefaults] objectForKey:@"gridSwitcher" inDomain:nsDomainString];
  36. NSNumber *eHideLSBatt = (NSNumber *)[[NSUserDefaults standardUserDefaults] objectForKey:@"hideLSBatt" inDomain:nsDomainString];
  37. NSNumber *eStatusBarShowTimeLS = (NSNumber *)[[NSUserDefaults standardUserDefaults] objectForKey:@"statusBarShowTimeLS" inDomain:nsDomainString];
  38. NSNumber *eHideLabels = (NSNumber *)[[NSUserDefaults standardUserDefaults] objectForKey:@"hideLabels" inDomain:nsDomainString];
  39. NSNumber *eHideCarPlayLabels = (NSNumber *)[[NSUserDefaults standardUserDefaults] objectForKey:@"hideCarPlayLabels" inDomain:nsDomainString];
  40. NSNumber *eHideFolderBadges = (NSNumber *)[[NSUserDefaults standardUserDefaults] objectForKey:@"hideFolderBadges" inDomain:nsDomainString];
  41. NSNumber *eHideFolderTitle = (NSNumber *)[[NSUserDefaults standardUserDefaults] objectForKey:@"hideFolderTitle" inDomain:nsDomainString];
  42. NSNumber *eHideFolderBG = (NSNumber *)[[NSUserDefaults standardUserDefaults] objectForKey:@"hideFolderBG" inDomain:nsDomainString];
  43. NSNumber *eHideFolderBGSB = (NSNumber *)[[NSUserDefaults standardUserDefaults] objectForKey:@"hideFolderBGSB" inDomain:nsDomainString];
  44. NSNumber *eHideFolderDots = (NSNumber *)[[NSUserDefaults standardUserDefaults] objectForKey:@"hideFolderDots" inDomain:nsDomainString];
  45. NSNumber *eHideNoOlderNotifs = (NSNumber *)[[NSUserDefaults standardUserDefaults] objectForKey:@"hideNoOlderNotifs" inDomain:nsDomainString];
  46. //NSNumber *eHideStatusBarLS = (NSNumber *)[[NSUserDefaults standardUserDefaults] objectForKey:@"hideStatusBarLS" inDomain:nsDomainString];
  47. NSNumber *eHideCCGrabber = (NSNumber *)[[NSUserDefaults standardUserDefaults] objectForKey:@"hideCCGrabber" inDomain:nsDomainString];
  48. enabled = (eEnabled) ? [eEnabled boolValue]:NO;
  49. hideQuickActionsBG = (eHideQuickActionsBG) ? [eHideQuickActionsBG boolValue]:NO;
  50. gridSwitcher = (eGridSwitcher) ? [eGridSwitcher boolValue]:NO;
  51. hideLSBatt = (eHideLSBatt) ? [eHideLSBatt boolValue]:NO;
  52. statusBarShowTimeLS = (eStatusBarShowTimeLS) ? [eStatusBarShowTimeLS boolValue]:NO;
  53. hideLabels = (eHideLabels) ? [eHideLabels boolValue]:NO;
  54. hideCarPlayLabels = (eHideCarPlayLabels) ? [eHideCarPlayLabels boolValue]:NO;
  55. hideFolderBadges = (eHideFolderBadges) ? [eHideFolderBadges boolValue]:NO;
  56. hideFolderTitle = (eHideFolderTitle) ? [eHideFolderTitle boolValue]:NO;
  57. hideFolderBG = (eHideFolderBG) ? [eHideFolderBG boolValue]:NO;
  58. hideFolderBGSB = (eHideFolderBGSB) ? [eHideFolderBGSB boolValue]:NO;
  59. hideFolderDots = (eHideFolderDots) ? [eHideFolderDots boolValue]:NO;
  60. hideNoOlderNotifs = (eHideNoOlderNotifs) ? [eHideNoOlderNotifs boolValue]:NO;
  61. //hideStatusBarLS = (eHideStatusBarLS) ? [eHideStatusBarLS boolValue]:NO;
  62. hideCCGrabber = (eHideCCGrabber) ? [eHideCCGrabber boolValue]:NO;
  63. }
  64. // headers and hooks
  65. #import <UIKit/UIKit.h>
  66. /*@interface SBFolderView : UIView
  67. @end*/
  68. @interface SBIconView : UIView
  69. -(void)setLabelHidden:(BOOL)hidden;
  70. @end
  71. @interface SBIcon : NSObject
  72. -(id)badgeNumberOrString;
  73. @end
  74. @interface CSTeachableMomentsContainerView
  75. @property (nonatomic,retain) UIView * controlCenterGrabberView;
  76. @end
  77. @interface SBDashBoardTeachableMomentsContainerView
  78. @property (nonatomic,retain) UIView * controlCenterGrabberView;
  79. @end
  80. @interface SBFolderIconImageView : UIView
  81. @property (nonatomic, retain) UIView *backgroundView;
  82. @end
  83. @interface SBIconListPageControl
  84. @property (nonatomic, assign, readwrite, getter=isHidden) BOOL hidden;
  85. @end
  86. @interface SBIconController : NSObject
  87. +(id)sharedInstance;
  88. -(void)_closeFolderController:(id)arg1 animated:(BOOL)arg2 withCompletion:(id)arg3;
  89. @end
  90. @interface SBUILegibilityLabel : UIView
  91. @property (nonatomic,copy) NSString *string;
  92. @end
  93. @interface NCNotificationListSectionRevealHintView : UIView
  94. @property (nonatomic,retain)SBUILegibilityLabel *revealHintTitle;
  95. @end
  96. /*@interface SBFloatyFolderView : SBFolderView
  97. -(void)_handleOutsideTap:(id)arg1 ;
  98. @end
  99. @interface SBFolderController : UIViewController
  100. @property (nonatomic,readonly) UIView * containerView;
  101. @end
  102. @interface SBFloatyFolderScrollView : UIScrollView
  103. -(void)closeFolder:(id)selector;
  104. -(id)_viewControllerForAncestor;
  105. @end*/
  106. #ifndef kCFCoreFoundationVersionNumber_iOS_13_0
  107. #define kCFCoreFoundationVersionNumber_iOS_13_0 1665.15
  108. #endif
  109. #define kSLSystemVersioniOS13 kCFCoreFoundationVersionNumber >= kCFCoreFoundationVersionNumber_iOS_13_0
  110. %group universal
  111. // HIDE NO OLDER NOTIFICATIONS START //
  112. %hook NCNotificationListSectionRevealHintView
  113. -(void)didMoveToWindow {
  114. %orig;
  115. if (enabled && hideNoOlderNotifs) {
  116. self.revealHintTitle.string = @"";
  117. }
  118. }
  119. %end
  120. // HIDE NO OLDER NOTIFICATIONS END //
  121. // QUICK ACTIONS BG START //
  122. %hook UICoverSheetButton
  123. -(id)_backgroundEffectsWithBrightness:(double)arg1 {
  124. if (enabled && hideQuickActionsBG) {
  125. return 0;
  126. }
  127. else {
  128. return %orig;
  129. }
  130. }
  131. %end
  132. // QUICK ACTIONS BG END //
  133. // HIDE FOLDER BADGE TEXT START //
  134. %hook SBIcon
  135. -(id)badgeNumberOrString {
  136. if (enabled && hideFolderBadges) {
  137. return @"";
  138. }
  139. else {
  140. return %orig;
  141. }
  142. }
  143. %end
  144. // HIDE FOLDER BADGE TEXT END //
  145. // HIDE LABELS START //
  146. %hook SBIconView
  147. -(void)setLabelHidden:(BOOL)hidden {
  148. if (enabled && hideLabels) {
  149. hidden = YES;
  150. }
  151. %orig;
  152. }
  153. %end
  154. // HIDE LABELS END //
  155. // GRID SWITCHER START //
  156. %hook SBAppSwitcherSettings
  157. - (void)setGridSwitcherPageScale:(double)arg1 {
  158. if (enabled && gridSwitcher) {
  159. arg1 = 0.4;
  160. }
  161. %orig;
  162. }
  163. - (void)setGridSwitcherHorizontalInterpageSpacingPortrait:(double)arg1 {
  164. if (enabled && gridSwitcher) {
  165. arg1 = 25.5;
  166. }
  167. %orig;
  168. }
  169. - (void)setGridSwitcherHorizontalInterpageSpacingLandscape:(double)arg1 {
  170. if (enabled && gridSwitcher) {
  171. arg1 = 11.6;
  172. }
  173. %orig;
  174. }
  175. - (void)setGridSwitcherVerticalNaturalSpacingPortrait:(double)arg1 {
  176. if (enabled && gridSwitcher) {
  177. arg1 = 42;
  178. }
  179. %orig;
  180. }
  181. - (void)setGridSwitcherVerticalNaturalSpacingLandscape:(double)arg1 {
  182. if (enabled && gridSwitcher) {
  183. arg1 = 38;
  184. }
  185. %orig;
  186. }
  187. - (void)setSwitcherStyle:(long long)arg1 {
  188. if (enabled && gridSwitcher) {
  189. arg1 = 2;
  190. }
  191. %orig;
  192. }
  193. %end
  194. // GRID SWITCHER END //
  195. // NO LS BATTERY START //
  196. %hook CSCoverSheetViewController
  197. - (void)_transitionChargingViewToVisible:(bool)arg1 showBattery:(bool)arg2 animated:(bool)arg3 {
  198. if (enabled && hideLSBatt) {
  199. arg1 = 0;
  200. }
  201. %orig;
  202. }
  203. %end
  204. // NO LS BATTERY END //
  205. // SHOW FOLDER TITLE START //
  206. %hook SBFloatyFolderView
  207. -(BOOL)_showsTitle {
  208. if (enabled && hideFolderTitle) {
  209. return NO;
  210. }
  211. else {
  212. return %orig;
  213. }
  214. }
  215. %end
  216. // SHOW FOLDER TITLE END //
  217. // HIDE FOLDER BACKGROUND START //
  218. %hook SBFloatyFolderView
  219. -(void)setBackgroundAlpha:(CGFloat)arg1 {
  220. if (enabled && hideFolderBG) {
  221. %orig(0.0);
  222. }
  223. else {
  224. %orig;
  225. }
  226. }
  227. %end
  228. %hook SBFolderIconImageView
  229. -(void)layoutSubviews {
  230. %orig;
  231. if (enabled && hideFolderBGSB) {
  232. self.backgroundView.alpha = 0;
  233. self.backgroundView.hidden = 1;
  234. }
  235. }
  236. %end
  237. // Close folder when tapped inside
  238. /*%hook SBFloatyFolderScrollView
  239. -(SBFloatyFolderScrollView *)initWithFrame:(CGRect)frame {
  240. if (enabled && hideFolderBG) {
  241. SBFloatyFolderScrollView *yeet = %orig;
  242. UITapGestureRecognizer *closeGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(closeFolder)];
  243. [yeet addGestureRecognizer:closeGesture];
  244. return yeet;
  245. }
  246. else {
  247. return %orig;
  248. }
  249. }
  250. %new
  251. -(void)closeFolder:(id)sender {
  252. UIViewController *parentController = [self _viewControllerForAncestor];
  253. if ([parentController isKindOfClass:[objc_getClass("SBFolderController") class]]) {
  254. SBFolderController *sbfc = (SBFolderController *)parentController;
  255. if (sbfc && [sbfc.containerView isKindOfClass:[objc_getClass("SBFloatyFolderView") class]]) {
  256. [(SBFloatyFolderView *)sbfc.containerView _handleOutsideTap:nil];
  257. }
  258. }
  259. }
  260. %end*/
  261. // HIDE FOLDER BACKGROUND END //
  262. // HIDE FOLDER DOTS START //
  263. %hook SBIconListPageControl
  264. -(void)layoutSubviews {
  265. if (enabled && hideFolderDots) {
  266. self.hidden = YES;
  267. }
  268. else {
  269. %orig;
  270. }
  271. }
  272. %end
  273. // HIDE FOLDER DOTS END //
  274. %end // end universal group
  275. // stuff that only works on iOS 13
  276. %group ios13
  277. // SHOW TIME IN LS STATUSBAR START //
  278. %hook CSCoverSheetViewController
  279. - (bool)shouldShowLockStatusBarTime {
  280. if (enabled && statusBarShowTimeLS) {
  281. return YES;
  282. }
  283. else {
  284. return %orig;
  285. }
  286. }
  287. %end
  288. // SHOW TIME IN LS STATUSBAR END //
  289. // HIDE CC GRABBER START //
  290. %hook CSTeachableMomentsContainerView
  291. - (void)layoutSubviews {
  292. if (enabled && hideCCGrabber) {
  293. [self.controlCenterGrabberView setHidden:YES];
  294. }
  295. else {
  296. [self.controlCenterGrabberView setHidden:NO];
  297. }
  298. return %orig;
  299. }
  300. %end
  301. // HIDE CC GRABBER END //
  302. // HIDE CARPLAY LABELS START //
  303. %hook CARIconView
  304. +(CGSize)maxLabelSizeForIconImageSize:(CGSize)imageSize {
  305. if (enabled && hideCarPlayLabels) {
  306. return CGSizeZero;
  307. }
  308. else {
  309. return %orig;
  310. }
  311. }
  312. %end
  313. // HIDE CARPLAY LABELS END //
  314. %end // end ios13 group
  315. // stuff that only works on iOS 12
  316. %group ios12
  317. // SHOW TIME IN LS STATUSBAR START //
  318. %hook SBLockScreenViewControllerBase
  319. - (bool)shouldShowLockStatusBarTime {
  320. if (enabled && statusBarShowTimeLS) {
  321. return YES;
  322. }
  323. else {
  324. return %orig;
  325. }
  326. }
  327. %end
  328. // SHOW TIME IN LS STATUSBAR END //
  329. // HIDE CC GRABBER START //
  330. %hook SBDashBoardTeachableMomentsContainerView
  331. - (void)layoutSubviews {
  332. if (enabled && hideCCGrabber) {
  333. [self.controlCenterGrabberView setHidden:YES];
  334. }
  335. else {
  336. [self.controlCenterGrabberView setHidden:NO];
  337. }
  338. return %orig;
  339. }
  340. %end
  341. // HIDE CC GRABBER END //
  342. // HIDE CARPLAY LABELS START //
  343. %hook SBStarkIconView
  344. +(CGSize)maxLabelSize {
  345. if (enabled && hideCarPlayLabels) {
  346. return CGSizeZero;
  347. }
  348. else {
  349. return %orig;
  350. }
  351. }
  352. %end
  353. // HIDE CARPLAY LABELS END //
  354. %end // end ios12 group
  355. // LISTENERS
  356. %ctor {
  357. %init(universal);
  358. // check iOS version
  359. if (kSLSystemVersioniOS13) {
  360. %init(ios13);
  361. }
  362. else {
  363. %init(ios12);
  364. }
  365. // prefs changed listener
  366. notificationCallback(NULL, NULL, NULL, NULL, NULL);
  367. CFNotificationCenterAddObserver(CFNotificationCenterGetDarwinNotifyCenter(), NULL, notificationCallback, (CFStringRef)nsNotificationString, NULL, CFNotificationSuspensionBehaviorCoalesce);
  368. // respring listener
  369. CFNotificationCenterAddObserver(CFNotificationCenterGetDarwinNotifyCenter(), NULL, (CFNotificationCallback)RespringDevice, CFSTR("com.yaypixxo.kage/respring"), NULL, CFNotificationSuspensionBehaviorDeliverImmediately);
  370. }