From cd1495e2779ead516ff6013fea099c97cc4f8258 Mon Sep 17 00:00:00 2001 From: gilshahar7 Date: Sat, 7 Dec 2019 19:34:18 +0200 Subject: [PATCH] Added detection for future dates --- .gitignore | 61 +------------ Tweak.xm | 81 +++++++++++++++++- control | 2 +- ....gilshahar7.exacttime_1.8_iphoneos-arm.deb | Bin 0 -> 15298 bytes 4 files changed, 80 insertions(+), 64 deletions(-) create mode 100644 packages/com.gilshahar7.exacttime_1.8_iphoneos-arm.deb diff --git a/.gitignore b/.gitignore index 86f21d8..0505853 100644 --- a/.gitignore +++ b/.gitignore @@ -1,60 +1 @@ -# Xcode -# -# gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore - -## Build generated -build/ -DerivedData/ - -## Various settings -*.pbxuser -!default.pbxuser -*.mode1v3 -!default.mode1v3 -*.mode2v3 -!default.mode2v3 -*.perspectivev3 -!default.perspectivev3 -xcuserdata/ - -## Other -*.moved-aside -*.xcuserstate - -## Obj-C/Swift specific -*.hmap -*.ipa -*.dSYM.zip -*.dSYM - -# CocoaPods -# -# We recommend against adding the Pods directory to your .gitignore. However -# you should judge for yourself, the pros and cons are mentioned at: -# https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control -# -# Pods/ - -# Carthage -# -# Add this line if you want to avoid checking in source code from Carthage dependencies. -# Carthage/Checkouts - -Carthage/Build - -# fastlane -# -# It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the -# screenshots whenever they are needed. -# For more information about the recommended setup visit: -# https://github.com/fastlane/fastlane/blob/master/fastlane/docs/Gitignore.md - -fastlane/report.xml -fastlane/screenshots - -#Code Injection -# -# After new code Injection tools there's a generated folder /iOSInjectionProject -# https://github.com/johnno1962/injectionforxcode - -iOSInjectionProject/ +.theos/ diff --git a/Tweak.xm b/Tweak.xm index b1cfd1e..62809f0 100644 --- a/Tweak.xm +++ b/Tweak.xm @@ -37,7 +37,12 @@ static NSString *settingsPath = @"/var/mobile/Library/Preferences/com.gilshahar7 if((date != nil) && (format == 1)){ NCNotificationDateLabel *dateLabel = MSHookIvar(self, "_dateLabel"); int timeSinceNow = (int)[date timeIntervalSinceNow]; - timeSinceNow = timeSinceNow*-1; + bool isFuture = false; + if (timeSinceNow > 0){ + isFuture = true; + }else{ + timeSinceNow = timeSinceNow*-1; + } bool addMinutes = [[prefs objectForKey:@"addMinutes"] boolValue]; bool addToCurrent = [[prefs objectForKey:@"addToCurrent"] boolValue]; int hours = timeSinceNow / 3600; @@ -46,23 +51,43 @@ static NSString *settingsPath = @"/var/mobile/Library/Preferences/com.gilshahar7 if(hours == 0){ if(minutes == 0){ }else{ + if(isFuture){ + dateLabel.text = [NSString stringWithFormat:@"in %im", minutes]; + }else{ dateLabel.text = [NSString stringWithFormat:@"%im ago", minutes]; + } } }else{ if(minutes == 0){ + if(isFuture){ + dateLabel.text = [NSString stringWithFormat:@"in %ih", hours]; + }else{ dateLabel.text = [NSString stringWithFormat:@"%ih ago", hours]; + } } else{ + if(isFuture){ + dateLabel.text = [NSString stringWithFormat:@"in %ih %im", hours, minutes]; + }else{ dateLabel.text = [NSString stringWithFormat:@"%ih %im ago", hours, minutes]; + } } } }else if(addToCurrent){ if(hours == 0){ if(minutes == 0){ }else{ + if(isFuture){ + dateLabel.text = [NSString stringWithFormat:@"in %im", minutes]; + }else{ dateLabel.text = [NSString stringWithFormat:@"%im ago", minutes]; + } } }else{ + if(isFuture){ + dateLabel.text = [NSString stringWithFormat:@"in %ih", hours]; + }else{ dateLabel.text = [NSString stringWithFormat:@"%ih ago", hours]; + } } } if((timeSinceNow/60) >= affectTime){ @@ -100,7 +125,12 @@ static NSString *settingsPath = @"/var/mobile/Library/Preferences/com.gilshahar7 if((date != nil) && (format == 1)){ BSUIRelativeDateLabel *dateLabel = MSHookIvar(self, "_dateLabel"); int timeSinceNow = (int)[date timeIntervalSinceNow]; - timeSinceNow = timeSinceNow*-1; + bool isFuture = false; + if (timeSinceNow > 0){ + isFuture = true; + }else{ + timeSinceNow = timeSinceNow*-1; + } bool addMinutes = [[prefs objectForKey:@"addMinutes"] boolValue]; bool addToCurrent = [[prefs objectForKey:@"addToCurrent"] boolValue]; int hours = timeSinceNow / 3600; @@ -109,23 +139,43 @@ static NSString *settingsPath = @"/var/mobile/Library/Preferences/com.gilshahar7 if(hours == 0){ if(minutes == 0){ }else{ + if(isFuture){ + dateLabel.text = [NSString stringWithFormat:@"in %im", minutes]; + }else{ dateLabel.text = [NSString stringWithFormat:@"%im ago", minutes]; + } } }else{ if(minutes == 0){ + if(isFuture){ + dateLabel.text = [NSString stringWithFormat:@"in %ih", hours]; + }else{ dateLabel.text = [NSString stringWithFormat:@"%ih ago", hours]; + } } else{ + if(isFuture){ + dateLabel.text = [NSString stringWithFormat:@"in %ih %im", hours, minutes]; + }else{ dateLabel.text = [NSString stringWithFormat:@"%ih %im ago", hours, minutes]; + } } } }else if(addToCurrent){ if(hours == 0){ if(minutes == 0){ }else{ + if(isFuture){ + dateLabel.text = [NSString stringWithFormat:@"in %im", minutes]; + }else{ dateLabel.text = [NSString stringWithFormat:@"%im ago", minutes]; + } } }else{ + if(isFuture){ + dateLabel.text = [NSString stringWithFormat:@"in %ih", hours]; + }else{ dateLabel.text = [NSString stringWithFormat:@"%ih ago", hours]; + } } } if((timeSinceNow/60) >= affectTime){ @@ -163,7 +213,12 @@ static NSString *settingsPath = @"/var/mobile/Library/Preferences/com.gilshahar7 if((date != nil) && (format == 1)){ BSUIRelativeDateLabel *dateLabel = MSHookIvar(self, "_dateLabel"); int timeSinceNow = (int)[date timeIntervalSinceNow]; - timeSinceNow = timeSinceNow*-1; + bool isFuture = false; + if (timeSinceNow > 0){ + isFuture = true; + }else{ + timeSinceNow = timeSinceNow*-1; + } bool addMinutes = [[prefs objectForKey:@"addMinutes"] boolValue]; bool addToCurrent = [[prefs objectForKey:@"addToCurrent"] boolValue]; int hours = timeSinceNow / 3600; @@ -172,23 +227,43 @@ static NSString *settingsPath = @"/var/mobile/Library/Preferences/com.gilshahar7 if(hours == 0){ if(minutes == 0){ }else{ + if(isFuture){ + dateLabel.text = [NSString stringWithFormat:@"in %im", minutes]; + }else{ dateLabel.text = [NSString stringWithFormat:@"%im ago", minutes]; + } } }else{ if(minutes == 0){ + if(isFuture){ + dateLabel.text = [NSString stringWithFormat:@"in %ih", hours]; + }else{ dateLabel.text = [NSString stringWithFormat:@"%ih ago", hours]; + } } else{ + if(isFuture){ + dateLabel.text = [NSString stringWithFormat:@"in %ih %im", hours, minutes]; + }else{ dateLabel.text = [NSString stringWithFormat:@"%ih %im ago", hours, minutes]; + } } } }else if(addToCurrent){ if(hours == 0){ if(minutes == 0){ }else{ + if(isFuture){ + dateLabel.text = [NSString stringWithFormat:@"in %im", minutes]; + }else{ dateLabel.text = [NSString stringWithFormat:@"%im ago", minutes]; + } } }else{ + if(isFuture){ + dateLabel.text = [NSString stringWithFormat:@"in %ih", hours]; + }else{ dateLabel.text = [NSString stringWithFormat:@"%ih ago", hours]; + } } } if((timeSinceNow/60) >= affectTime){ diff --git a/control b/control index 2148f61..7d208d8 100644 --- a/control +++ b/control @@ -1,7 +1,7 @@ Package: com.gilshahar7.exacttime Name: ExactTime Depends: mobilesubstrate -Version: 1.7 +Version: 1.8 Architecture: iphoneos-arm Description: Shows the exact time of a notification. Maintainer: gilshahar7 diff --git a/packages/com.gilshahar7.exacttime_1.8_iphoneos-arm.deb b/packages/com.gilshahar7.exacttime_1.8_iphoneos-arm.deb new file mode 100644 index 0000000000000000000000000000000000000000..52e710ff51036a6f311e0e6f7730339067c97aaf GIT binary patch literal 15298 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 Y*ttc_A;>D%7Sto`F8;r^d8z6D1&tY{`~Uy| literal 0 HcmV?d00001