From 41180d2ffcc2aac41252c2f8ee8a5eeb1fb6bb7d Mon Sep 17 00:00:00 2001 From: Gil Shahar Date: Sat, 3 Jun 2017 10:19:05 +0300 Subject: [PATCH] Version 1.3 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit *Added an option to add estimated time to the exact time. Example: "48m ago • 09:41" *Added an option to add minutes to "Xh ago" Example: "5h 47m ago" *You can also combine these two options to get something like this: "5h 47m ago • 09:41" *Added an icon to the preferences. --- Makefile | 2 + Tweak.xm | 56 ++++++++++-- control | 2 +- exacttimeprefs/ExactTimeprefs.mm | 20 +++++ exacttimeprefs/Makefile | 14 +++ exacttimeprefs/Resources/ExactTime@2x.png | Bin 0 -> 1141 bytes exacttimeprefs/Resources/ExactTimeprefs.plist | 82 ++++++++++++++++++ exacttimeprefs/Resources/Info.plist | 28 ++++++ exacttimeprefs/entry.plist | 10 +++ .../obj/ExactTimeprefs.bundle/ExactTimeprefs | Bin 0 -> 83312 bytes .../ExactTimeprefs.plist | 82 ++++++++++++++++++ .../obj/ExactTimeprefs.bundle/Info.plist | 28 ++++++ .../obj/ExactTimeprefs.mm.4bb0a109.o | Bin 0 -> 36652 bytes 13 files changed, 314 insertions(+), 10 deletions(-) create mode 100644 exacttimeprefs/ExactTimeprefs.mm create mode 100644 exacttimeprefs/Makefile create mode 100644 exacttimeprefs/Resources/ExactTime@2x.png create mode 100644 exacttimeprefs/Resources/ExactTimeprefs.plist create mode 100644 exacttimeprefs/Resources/Info.plist create mode 100644 exacttimeprefs/entry.plist create mode 100644 exacttimeprefs/obj/ExactTimeprefs.bundle/ExactTimeprefs create mode 100644 exacttimeprefs/obj/ExactTimeprefs.bundle/ExactTimeprefs.plist create mode 100644 exacttimeprefs/obj/ExactTimeprefs.bundle/Info.plist create mode 100644 exacttimeprefs/obj/ExactTimeprefs.mm.4bb0a109.o diff --git a/Makefile b/Makefile index 55c9f08..87d32e9 100644 --- a/Makefile +++ b/Makefile @@ -8,3 +8,5 @@ include $(THEOS_MAKE_PATH)/tweak.mk after-install:: install.exec "killall -9 SpringBoard" +SUBPROJECTS += exacttimeprefs +include $(THEOS_MAKE_PATH)/aggregate.mk diff --git a/Tweak.xm b/Tweak.xm index 59307bb..05b1298 100644 --- a/Tweak.xm +++ b/Tweak.xm @@ -8,24 +8,62 @@ @end static bool is24h; +static NSString *settingsPath = @"/var/mobile/Library/Preferences/com.gilshahar7.exacttimeprefs.plist"; + %hook NCLookHeaderContentView -(void)_updateDateLabelFontForShortLook{ %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)){ NCNotificationDateLabel *dateLabel = MSHookIvar(self, "_dateLabel"); - NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; - if(is24h) - { - [dateFormatter setDateFormat:@"HH:mm"]; - }else{ - [dateFormatter setDateFormat:@"h:mm a"]; + 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]; } - dateLabel.text = [dateFormatter stringFromDate:date]; - [dateLabel sizeToFit]; - [dateFormatter release]; } } -(void)dateLabelDidChange:(id)arg1{ diff --git a/control b/control index a2d4fd2..75e5388 100644 --- a/control +++ b/control @@ -1,7 +1,7 @@ Package: com.gilshahar7.exacttime Name: ExactTime Depends: mobilesubstrate -Version: 1.0 +Version: 1.3 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..2419590 --- /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 new file mode 100644 index 0000000..8786ab8 --- /dev/null +++ b/exacttimeprefs/Makefile @@ -0,0 +1,14 @@ +ARCHS = armv7 arm64 +include $(THEOS)/makefiles/common.mk + +BUNDLE_NAME = ExactTimeprefs +ExactTimeprefs_FILES = ExactTimeprefs.mm +ExactTimeprefs_INSTALL_PATH = /Library/PreferenceBundles +ExactTimeprefs_FRAMEWORKS = UIKit +ExactTimeprefs_PRIVATE_FRAMEWORKS = Preferences + +include $(THEOS_MAKE_PATH)/bundle.mk + +internal-stage:: + $(ECHO_NOTHING)mkdir -p $(THEOS_STAGING_DIR)/Library/PreferenceLoader/Preferences$(ECHO_END) + $(ECHO_NOTHING)cp entry.plist $(THEOS_STAGING_DIR)/Library/PreferenceLoader/Preferences/ExactTimeprefs.plist$(ECHO_END) diff --git a/exacttimeprefs/Resources/ExactTime@2x.png b/exacttimeprefs/Resources/ExactTime@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..bb776e2728e60fad47a953a420649bc895ee9a0a GIT binary patch literal 1141 zcmV-*1d98KP)(_`g8%^e{{R4h=>PzAFaQARU;qF*m;eA5Z<1fd zMgRZ<`$Lpi*rtO$;bBra$}yfhH1qgH^Pk^aUCp zYGM>Iq(%t@LtiQe)P|Hk5J5_9j06HGRcOQ*sMzvg(x?S*TN4eC5@;#6WPD&*cJG}Cl6KN&?OqoWC3%v-8{A{_`BQ6QHh2xW%8h(3g~Q6Os& zr%m?P)hi7c}kK!Wf@Sjc=O zco+F>QuJ}|2?IHve~i#A&KlCLV80Fndddj9-nC8OvVyI=TjXvdt&jNZg$i_-0wYcy z)x6KkObN1<2ttBp3YbqVyZDTC%mbiG!CqmUC(2mrJ+@z=hiah2Ea+M1R!T=3a5u<`loJ0^>8AY>#Z31AuPj|qV0Y$nz&fWZt zFv#m<`+Q0`h7hNSP6fM`t-kY(>7M2~k8?dO2wiTCFqto@a6LapI769lX*1g(vGhae zyzBlNg$#3n`(4{h2;U{u3!k#`HptUbOj={BGnml|-Y2UK+sXp34p-@vYPGc$zn005O-Pw}=E*h61MXjSy3 zH1mveT#oRgJ3pna701~^vl&E~bz7ga2svcanx=yK!M?9m2z`u6Y2S{pgGu~mQMlFF zW4}S@;33tv8Q~8$r?kunki1CGwVR6+N1zT?qT|=*1Y}b-&dDY~kLj6WtWsl8dIW@#myq~FL zp*o=QqyA9&o&x=gtf;XE73|^YKg#wh*bkz{=BZD%G-|B20ZA}DYV0R>J5}77oHVvr zh0#O(pGX=<>gPhSi+p1w|7pC9&`${?EH&PlJLA9j8T9V}544$7J#kCe00000NkvXX Hu0mjfBFqJ) literal 0 HcmV?d00001 diff --git a/exacttimeprefs/Resources/ExactTimeprefs.plist b/exacttimeprefs/Resources/ExactTimeprefs.plist new file mode 100644 index 0000000..71fe062 --- /dev/null +++ b/exacttimeprefs/Resources/ExactTimeprefs.plist @@ -0,0 +1,82 @@ + + + + + items + + + cell + PSGroupCell + footerText + Only show the exact time for notifications older than this value (0~240). Default value for stock iOS is 240 minutes (4 hours) + + + cell + PSEditTextCell + defaults + com.gilshahar7.exacttimeprefs + key + affectTime + default + 10 + isNumeric + + label + Affect after (in minutes) + + + cell + PSButtonCell + defaults com.gilshahar7.exacttimeprefs + label + Apply + action + apply + + + cell + PSGroupCell + footerText + This will add "Xh ago" where there is an exact time, separated by a ' • ' Note: this will override any language + + + cell + PSSwitchCell + default + + defaults + com.gilshahar7.exacttimeprefs + key + addToCurrent + label + Add estimated time to exact time + + + cell + PSGroupCell + footerText + This will add minutes to all "Xh ago" Note: this will override any language + + + cell + PSSwitchCell + default + + defaults + com.gilshahar7.exacttimeprefs + key + addMinutes + label + Change "2h ago" to "2h 17m ago" + + + cell + PSGroupCell + footerText + Made by: gilshahar7. + + + title + ExactTime + + diff --git a/exacttimeprefs/Resources/Info.plist b/exacttimeprefs/Resources/Info.plist new file mode 100644 index 0000000..4c5b2ad --- /dev/null +++ b/exacttimeprefs/Resources/Info.plist @@ -0,0 +1,28 @@ + + + + + CFBundleDevelopmentRegion + English + CFBundleExecutable + ExactTimeprefs + CFBundleIdentifier + com.gilshahar7.exacttimeprefs + CFBundleInfoDictionaryVersion + 6.0 + CFBundlePackageType + BNDL + CFBundleShortVersionString + 1.0.0 + CFBundleSignature + ???? + CFBundleVersion + 1.0 + DTPlatformName + iphoneos + MinimumOSVersion + 3.0 + NSPrincipalClass + ExactTimeprefsListController + + diff --git a/exacttimeprefs/entry.plist b/exacttimeprefs/entry.plist new file mode 100644 index 0000000..a0d975d --- /dev/null +++ b/exacttimeprefs/entry.plist @@ -0,0 +1,10 @@ +{ + entry = { + bundle = ExactTimeprefs; + cell = PSLinkCell; + detail = ExactTimeprefsListController; + icon = ExactTime.png; + isController = 1; + label = ExactTime; + }; +} diff --git a/exacttimeprefs/obj/ExactTimeprefs.bundle/ExactTimeprefs b/exacttimeprefs/obj/ExactTimeprefs.bundle/ExactTimeprefs new file mode 100644 index 0000000000000000000000000000000000000000..679e0f2f4722a2d141b4282cd8c50bf37d832033 GIT binary patch literal 83312 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 + + + + items + + + cell + PSGroupCell + footerText + Only show the exact time for notifications older than this value (0~240). Default value for stock iOS is 240 minutes (4 hours) + + + cell + PSEditTextCell + defaults + com.gilshahar7.exacttimeprefs + key + affectTime + default + 10 + isNumeric + + label + Affect after (in minutes) + + + cell + PSButtonCell + defaults com.gilshahar7.exacttimeprefs + label + Apply + action + apply + + + cell + PSGroupCell + footerText + This will add "Xh ago" where there is an exact time, separated by a ' • ' Note: this will override any language + + + cell + PSSwitchCell + default + + defaults + com.gilshahar7.exacttimeprefs + key + addToCurrent + label + Add estimated time to exact time + + + cell + PSGroupCell + footerText + This will add minutes to all "Xh ago" Note: this will override any language + + + cell + PSSwitchCell + default + + defaults + com.gilshahar7.exacttimeprefs + key + addMinutes + label + Change "2h ago" to "2h 17m ago" + + + cell + PSGroupCell + footerText + Made by: gilshahar7. + + + title + ExactTime + + diff --git a/exacttimeprefs/obj/ExactTimeprefs.bundle/Info.plist b/exacttimeprefs/obj/ExactTimeprefs.bundle/Info.plist new file mode 100644 index 0000000..4c5b2ad --- /dev/null +++ b/exacttimeprefs/obj/ExactTimeprefs.bundle/Info.plist @@ -0,0 +1,28 @@ + + + + + CFBundleDevelopmentRegion + English + CFBundleExecutable + ExactTimeprefs + CFBundleIdentifier + com.gilshahar7.exacttimeprefs + CFBundleInfoDictionaryVersion + 6.0 + CFBundlePackageType + BNDL + CFBundleShortVersionString + 1.0.0 + CFBundleSignature + ???? + CFBundleVersion + 1.0 + DTPlatformName + iphoneos + MinimumOSVersion + 3.0 + NSPrincipalClass + ExactTimeprefsListController + + diff --git a/exacttimeprefs/obj/ExactTimeprefs.mm.4bb0a109.o b/exacttimeprefs/obj/ExactTimeprefs.mm.4bb0a109.o new file mode 100644 index 0000000000000000000000000000000000000000..8e113f94756bf42e82088eec76b598135badfd62 GIT binary patch literal 36652 zcmeHPU1%KF6~4PtY{ga9q7_B`qpG8%YH@_@$c}8Hva+-yDQij9ir_SLN9)~{cg6m( zJ9VUrf+(Wsp#(c5;D@d4gD9c(LusLeR2mck$`>RIqS_A&tmDba2*Pv@~{s1=0ov@P`hh$lHYT9<% zjy@haHol>=bqdV!ob&Dbl=>_?8+D-pwh$vxwo94(Nv%<@j=}M}!6hc_Ar>-l2{9(U zK`d*qf4twdDz$)S3wRzeIPT>gj@UvkhEC&cvY&NwlEzV`z_pNlb}MU$|+8 zs7cw4Yp=2|Uktv|I268lsb%G+QqzMfeP4RwY1P^G=JFNvst1SIAHF#roE}6g`0c?! zx_#)Q_pjdw-+U>6p1{oD{ppY1f9J-;*Osr$T`VBh^Pc`|@S6_=_H20m;>O&S$aFkm zk7shJqO%*Elva@=_cX6JTZkuP#Z)3QnMsw(L#0A)l(%>o%l@z(FP%);hgB(M$1{0# zDwBFvrSi#0GGpUmaaffr<5av@%+4@6_vmHtPr<9;>I|X?Jy6Kor9w8FD#5JRNh>6o z#JyFE_`DWjI%tvlK`{OH!fyfXarkvZJ`6wVphfC?V1F0#66{}w#4~@1I%tvlF4(zW zE(O%9TnE@AOVmM&)SJLTXIpbGG&e)X9&cnnCHFfegqGic#IkBU28mdWgOCW<7>2}i zt?_Y4`uCdt9@EcU+1~=maUGD1gM9gpYi@J&=2l3|t^H_c9<*aDuZ8Jx9xdrd`*kD` z3b3WrRns0udk5PH!h1gioo%j_-`!d8yy$*20q&^sEd-auWJXA5Q> z*ADB+;n;Zp@IZtCpBNd8S=;VGXOuhd9k_ba+}7PB8*z7f9ukm}t1=osua z0&WJ-{p3jHiuR0^h$qr~Ls|nvcu1A)c;1fb@1g;I35=yCQ>9cs0T1UhrF=4mr=fb} zne8sCT|XI**Yn!AkH__jkUv2{5D)|e0YN|z5CjAPK|l}?1Ox#=KoAfF1OY)n5D)|e z0YN|z5CjAPK|l}?1Ox#=KoAfF1OY)n5D)|e0YN|z5CjAPK|l}?1Ox#=KoAfF1OY)n z5D)|ef&U=_zjn_5>!X4EC^Chba3y;=e1jAy%%qlkwT)otYG zk42YybpuxD1Ul*nRjixe_B8}r^c}3+HhpHDr^%aeUX*zvyoS+C=jOL%J%Mf$k2M8I zYj>94mbC>&O}tenoIY5~{5p}Jzs3Mv>eU%&GoX)}c&j+5%Xme^!*3IL?nlj<18Eb_ z1*we-*hBt%Y~pQMe_+}SaC7NIJm$BI4g-Zdm7c}K+p-qHoG)ItFFyqF#Y+@&MVz#^ zzLkGAlTTV!bkK7-YQe+{o6cU7-|NWFn2c~79)fTt;8iHqW%O0}^E@=2Dc7KX39^U- z+Lz(#ty$2HelmUcfHz+PI_uD_k*iDVvw@}c0d?jd4eA1>JKYor|Eo1H_r}DOeS0pT zF0wCxKFo9ah*D?P8a{F1&tQap!L_kHG1YT>eYSt;*2r7uR~oF}uFt-?wBDf3czxXV zpBmKu_1T}C$GFz&v$eGoW<3Kh@%%dJUe`8oqHg_Poon?`ZI0qv>@-aMZpmE(cQbwk zgUJ6+6yA3b#TI(iDI>SajWq^<|gqZIaAlo64tImUV=7DFA&I8w?C496W<^e={z8%3}M`th? z9&8G>wC)V0q#E{|KOj;ONpb0L82Sp2^}u-1q0tsbkDJGhmA2VP{zhL}#8hpNQ{ELtzeh+cJv&Q}hqhB-n_vnw}8t(h`$GjfAWaiBH=cr@By6?An zjAzY^u(7{lbT|Jn;+oK~ICZGJI@?~|g5uR*^y%OA>8u6g^{-I?;x6iHM6E6qwo+1F z!&iKy2D+Ooa5$wh{+sd|Q43#HtiqM7R2Z{V)T#Uti$o&><0E6%SY#+N7D3IESjEQT zCl<@5j6XdZsq{LY literal 0 HcmV?d00001