forkeado de gilshahar7/DuplexCalendar
185 líneas
5.2 KiB
Plaintext
185 líneas
5.2 KiB
Plaintext
#define kScreenWidth [[UIScreen mainScreen] bounds].size.width
|
|
@interface SBTodayTableHeaderView : UIView
|
|
-(NSString *)lunarDateHeaderString;
|
|
@end
|
|
|
|
@interface SBAnimationSettings
|
|
@end
|
|
|
|
@interface SBFadeAnimationSettings
|
|
@property(retain, nonatomic) SBAnimationSettings *dateInSettings;
|
|
@end
|
|
|
|
@interface SBFLockScreenDateView : UIView
|
|
@property (nonatomic, retain) UILabel *duplexCalendarLabel;
|
|
@property (nonatomic, assign) NSString *todayHeaderViewText;
|
|
@property bool dateHidden;
|
|
-(id)_dateFont;
|
|
-(id)_dateColor;
|
|
-(BOOL)isDateHidden;
|
|
-(void)layoutDuplexCalendarLabel;
|
|
@end
|
|
|
|
|
|
@interface _UILegibilityView : UIView
|
|
@end
|
|
|
|
@interface _UILegibilityLabel : _UILegibilityView
|
|
@end
|
|
|
|
extern "C" CFNotificationCenterRef CFNotificationCenterGetDistributedCenter(void);
|
|
static NSString *myObserver=@"duplexcalendarObserver";
|
|
static NSString *settingsPath = @"/var/mobile/Library/Preferences/com.gilshahar7.duplexcalendarprefs.plist";
|
|
static NSMutableDictionary *prefs = [[NSMutableDictionary alloc] initWithContentsOfFile:settingsPath];
|
|
|
|
static void savePressed(){
|
|
prefs = [[NSMutableDictionary alloc] initWithContentsOfFile:settingsPath];
|
|
}
|
|
|
|
static void savePressed(CFNotificationCenterRef center, void *observer, CFStringRef name, const void *object, CFDictionaryRef userInfo){
|
|
prefs = [[NSMutableDictionary alloc] initWithContentsOfFile:settingsPath];
|
|
}
|
|
|
|
static BOOL isiOS9 = NO;
|
|
static BOOL isiOS8Refreshed = NO;
|
|
static SBTodayTableHeaderView *stattodayHeaderView;
|
|
static SBFLockScreenDateView *lockScreenDateView;
|
|
static float originx = 0.0;
|
|
static float originy = 0.0;
|
|
static float sizewidth = 0.0;
|
|
static float sizeheight = 0.0;
|
|
|
|
%hook SBTodayTableHeaderView
|
|
-(SBTodayTableHeaderView *)initWithFrame:(CGRect)arg1{
|
|
stattodayHeaderView = %orig();
|
|
return stattodayHeaderView;
|
|
}
|
|
|
|
-(void)_layoutLunarDateLabel{
|
|
%orig;
|
|
|
|
if(isiOS9) return;
|
|
if(!isiOS8Refreshed) {
|
|
isiOS8Refreshed = YES;
|
|
[lockScreenDateView _updateLabels];
|
|
lockScreenDateView = nil;
|
|
}
|
|
}
|
|
%end
|
|
|
|
%hook SBFLockScreenDateView
|
|
%property (nonatomic, retain) UILabel *duplexCalendarLabel;
|
|
%property (nonatomic, assign) NSString *todayHeaderViewText;
|
|
-(SBFLockScreenDateView *)initWithFrame:(id)arg1{
|
|
lockScreenDateView = %orig(arg1);
|
|
if(!self.duplexCalendarLabel){
|
|
self.duplexCalendarLabel = [[UILabel alloc] initWithFrame:CGRectMake(originx-50, originy + 19, sizewidth+100, sizeheight)];
|
|
self.duplexCalendarLabel.font = [[self _dateFont] fontWithSize:16];
|
|
[self addSubview:self.duplexCalendarLabel];
|
|
self.duplexCalendarLabel.textColor = [self _dateColor];
|
|
self.duplexCalendarLabel.textAlignment = 1;
|
|
}
|
|
return lockScreenDateView;
|
|
}
|
|
|
|
%new
|
|
-(void)layoutDuplexCalendarLabel{
|
|
NSString *offsetXTextField = [prefs objectForKey:@"offsetXTextField"];
|
|
NSString *offsetYTextField = [prefs objectForKey:@"offsetYTextField"];
|
|
NSString *FontSizeTextField = [prefs objectForKey:@"FontSizeTextField"];
|
|
|
|
//if(originx <= 0.0)
|
|
//{
|
|
UILabel *originalLabel = MSHookIvar<UILabel *>(self, "_dateLabel");
|
|
originx = originalLabel.frame.origin.x;
|
|
originy = originalLabel.frame.origin.y;
|
|
sizewidth = originalLabel.frame.size.width;
|
|
sizeheight = originalLabel.frame.size.height;
|
|
self.duplexCalendarLabel.textColor = [self _dateColor];
|
|
//}
|
|
[self.duplexCalendarLabel setFrame:CGRectMake(originx-50+ [offsetXTextField floatValue], originy + 19 + [offsetYTextField floatValue], sizewidth+100, sizeheight)];
|
|
UIFont *font = self.duplexCalendarLabel.font;
|
|
if([FontSizeTextField floatValue] == 0){
|
|
self.duplexCalendarLabel.font = [font fontWithSize:16.0];
|
|
}else{
|
|
self.duplexCalendarLabel.font = [font fontWithSize:[FontSizeTextField floatValue]];
|
|
}
|
|
if(isiOS9 && self.duplexCalendarLabel){
|
|
if([self isDateHidden]){
|
|
self.duplexCalendarLabel.hidden = true;
|
|
}else{
|
|
self.duplexCalendarLabel.hidden = false;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
-(void)_updateLabels{
|
|
%orig;
|
|
[self layoutDuplexCalendarLabel];
|
|
//if(!self.todayHeaderViewText){
|
|
self.todayHeaderViewText = [stattodayHeaderView lunarDateHeaderString];
|
|
//}
|
|
self.duplexCalendarLabel.text = self.todayHeaderViewText;
|
|
|
|
|
|
|
|
}
|
|
-(void)_layoutDateLabel {
|
|
%orig;
|
|
[self layoutDuplexCalendarLabel];
|
|
_UILegibilityLabel *originalLegibilityLabel = MSHookIvar<_UILegibilityLabel *>(self, "_legibilityDateLabel");
|
|
[originalLegibilityLabel setFrame:CGRectMake(originx, originy - 3, sizewidth, sizeheight)];
|
|
}
|
|
-(void)updateFormat{
|
|
%orig;
|
|
[self layoutDuplexCalendarLabel];
|
|
}
|
|
-(void)layoutSubviews {
|
|
%orig;
|
|
[self layoutDuplexCalendarLabel];
|
|
}
|
|
|
|
|
|
-(void)setDateHidden:(bool)arg1{
|
|
%orig(arg1);
|
|
|
|
if(isiOS9 && self.duplexCalendarLabel){
|
|
self.duplexCalendarLabel.hidden = arg1;
|
|
}
|
|
}
|
|
|
|
-(void)_setDateAlpha:(double)arg1{
|
|
%orig(arg1);
|
|
|
|
if(!isiOS9 && self.duplexCalendarLabel){
|
|
UILabel *originalLabel = MSHookIvar<UILabel *>(self, "_dateLabel");
|
|
self.duplexCalendarLabel.alpha = originalLabel.alpha;
|
|
}
|
|
}
|
|
|
|
|
|
%end
|
|
|
|
%hook SBFadeAnimationSettings
|
|
|
|
- (void)setDefaultValues {
|
|
|
|
%orig;
|
|
|
|
self.dateInSettings = nil;
|
|
|
|
}
|
|
%end
|
|
|
|
%ctor{
|
|
if(@available(iOS 9.0, *)) isiOS9 = YES;
|
|
CFNotificationCenterAddObserver(CFNotificationCenterGetDarwinNotifyCenter(),
|
|
(void*)myObserver,
|
|
savePressed,
|
|
CFSTR("duplexcalendar.savepressed"),
|
|
NULL,
|
|
CFNotificationSuspensionBehaviorDeliverImmediately);
|
|
savePressed();
|
|
}
|