From 427443a2c7438add84403b9b789c52fd0569bb82 Mon Sep 17 00:00:00 2001 From: Gil Shahar Date: Sat, 11 May 2019 20:15:50 +0300 Subject: [PATCH] Version 1.6 Added support for A12 devices (and added the forgotten source code for iOS 12 :P) --- Makefile | 4 +- Tweak.xm | 74 +++++++++++++++++- control | 2 +- exacttimeprefs/ExactTimeprefs.mm | 20 +++++ exacttimeprefs/Makefile | 6 +- ....gilshahar7.exacttime_1.6_iphoneos-arm.deb | Bin 0 -> 14422 bytes 6 files changed, 98 insertions(+), 8 deletions(-) create mode 100644 exacttimeprefs/ExactTimeprefs.mm create mode 100644 packages/com.gilshahar7.exacttime_1.6_iphoneos-arm.deb diff --git a/Makefile b/Makefile index 00601e8..9913a62 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ - -ARCHS = armv7 arm64 +ARCHS = armv7 arm64 arm64e +export TARGET = iphone:clang:11.2:7.0 include $(THEOS)/makefiles/common.mk TWEAK_NAME = ExactTime diff --git a/Tweak.xm b/Tweak.xm index 1c83600..39a15c0 100644 --- a/Tweak.xm +++ b/Tweak.xm @@ -7,7 +7,7 @@ @interface NCLookHeaderContentView -(void)_updateDateLabelFontForShortLook; @end -//IOS 11 +//IOS 11 & 12 @interface BSUIRelativeDateLabel @property (assign,nonatomic) NSString *text; -(void)sizeToFit; @@ -16,6 +16,11 @@ @interface MTPlatterHeaderContentView -(void)_updateTextAttributesForDateLabel; @end +//IOS 12 +@interface PLPlatterHeaderContentView +-(void)_updateTextAttributesForDateLabel; +@end + static bool is24h; @@ -147,6 +152,69 @@ static NSString *settingsPath = @"/var/mobile/Library/Preferences/com.gilshahar7 %end %end +%group iOS12 + %hook PLPlatterHeaderContentView + -(void)_updateTextAttributesForDateLabel{ + %orig; + NSDate *date = MSHookIvar(self, "_date"); + NSInteger format = MSHookIvar(self, "_dateFormatStyle"); + NSMutableDictionary *prefs = [[NSMutableDictionary alloc] initWithContentsOfFile:settingsPath]; + CGFloat affectTime = [[prefs objectForKey:@"affectTime"] floatValue]; + if((date != nil) && (format == 1)){ + BSUIRelativeDateLabel *dateLabel = MSHookIvar(self, "_dateLabel"); + int timeSinceNow = (int)[date timeIntervalSinceNow]; + timeSinceNow = timeSinceNow*-1; + bool addMinutes = [[prefs objectForKey:@"addMinutes"] boolValue]; + bool addToCurrent = [[prefs objectForKey:@"addToCurrent"] boolValue]; + int hours = timeSinceNow / 3600; + int minutes = (timeSinceNow % 3600) / 60; + if(addMinutes){ + if(hours == 0){ + if(minutes == 0){ + }else{ + dateLabel.text = [NSString stringWithFormat:@"%im ago", minutes]; + } + }else{ + if(minutes == 0){ + dateLabel.text = [NSString stringWithFormat:@"%ih ago", hours]; + } else{ + dateLabel.text = [NSString stringWithFormat:@"%ih %im ago", hours, minutes]; + } + } + }else if(addToCurrent){ + if(hours == 0){ + if(minutes == 0){ + }else{ + dateLabel.text = [NSString stringWithFormat:@"%im ago", minutes]; + } + }else{ + dateLabel.text = [NSString stringWithFormat:@"%ih ago", hours]; + } + } + if((timeSinceNow/60) >= affectTime){ + NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; + if(is24h){ + [dateFormatter setDateFormat:@"HH:mm"]; + }else{ + [dateFormatter setDateFormat:@"h:mm a"]; + } + if(addToCurrent && !([dateLabel.text isEqualToString:[dateFormatter stringFromDate:date]])){ + dateLabel.text = [[dateLabel.text stringByAppendingString:@" • "] stringByAppendingString:[dateFormatter stringFromDate:date]]; + }else{ + dateLabel.text =[dateFormatter stringFromDate:date]; + } + [dateLabel sizeToFit]; + [dateFormatter release]; + } + } + } + -(void)dateLabelDidChange:(id)arg1{ + %orig(arg1); + [self _updateTextAttributesForDateLabel]; + } + %end +%end + %ctor{ NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; [formatter setLocale:[NSLocale currentLocale]]; @@ -161,5 +229,7 @@ static NSString *settingsPath = @"/var/mobile/Library/Preferences/com.gilshahar7 %init(iOS10); } else if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 11.0 && [[[UIDevice currentDevice] systemVersion] floatValue] < 12.0) { %init(iOS11); + }else if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 12.0 && [[[UIDevice currentDevice] systemVersion] floatValue] < 13.0) { + %init(iOS12); } -} +} \ No newline at end of file diff --git a/control b/control index f6fce07..d44db1b 100644 --- a/control +++ b/control @@ -1,7 +1,7 @@ Package: com.gilshahar7.exacttime Name: ExactTime Depends: mobilesubstrate -Version: 1.4 +Version: 1.6 Architecture: iphoneos-arm Description: Shows the exact time of a notification. Maintainer: gilshahar7 diff --git a/exacttimeprefs/ExactTimeprefs.mm b/exacttimeprefs/ExactTimeprefs.mm new file mode 100644 index 0000000..742e87d --- /dev/null +++ b/exacttimeprefs/ExactTimeprefs.mm @@ -0,0 +1,20 @@ +#import + +@interface ExactTimeprefsListController: PSListController { +} +@end + +@implementation ExactTimeprefsListController +- (id)specifiers { + if(_specifiers == nil) { + _specifiers = [[self loadSpecifiersFromPlistName:@"ExactTimeprefs" target:self] retain]; + } + return _specifiers; +} + +-(void)apply{ +[self.view endEditing:YES]; +} +@end + +// vim:ft=objc diff --git a/exacttimeprefs/Makefile b/exacttimeprefs/Makefile index b271a8e..c561de6 100644 --- a/exacttimeprefs/Makefile +++ b/exacttimeprefs/Makefile @@ -1,9 +1,9 @@ -ARCHS = armv7 arm64 - +ARCHS = armv7 arm64 arm64e +export TARGET = iphone:clang:11.2:7.0 include $(THEOS)/makefiles/common.mk BUNDLE_NAME = ExactTimeprefs -ExactTimeprefs_FILES = RootListController.m +ExactTimeprefs_FILES = ExactTimeprefs.mm ExactTimeprefs_INSTALL_PATH = /Library/PreferenceBundles ExactTimeprefs_FRAMEWORKS = UIKit ExactTimeprefs_PRIVATE_FRAMEWORKS = Preferences diff --git a/packages/com.gilshahar7.exacttime_1.6_iphoneos-arm.deb b/packages/com.gilshahar7.exacttime_1.6_iphoneos-arm.deb new file mode 100644 index 0000000000000000000000000000000000000000..19ab2811066fe6b5e8469efc71b1e896de3228c1 GIT binary patch literal 14422 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 g&TI$V=@!}NSpL*JF=GfqBJ^%m! literal 0 HcmV?d00001