aboutsummaryrefslogtreecommitdiff
path: root/Tweak.x
diff options
context:
space:
mode:
authorFivePixels <o5pxels@gmail.com>2021-05-19 13:24:15 -0500
committerFivePixels <o5pxels@gmail.com>2021-05-19 13:24:15 -0500
commitd2cb9115dc80f23bc22f896d11ed8dc1f247aaff (patch)
tree612933008ee400712ff9ebd010656012b29e3ee4 /Tweak.x
downloadsignate-d2cb9115dc80f23bc22f896d11ed8dc1f247aaff.tar.xz
signate-d2cb9115dc80f23bc22f896d11ed8dc1f247aaff.zip
Signate initial commit
Diffstat (limited to 'Tweak.x')
-rw-r--r--Tweak.x172
1 files changed, 172 insertions, 0 deletions
diff --git a/Tweak.x b/Tweak.x
new file mode 100644
index 0000000..a3b8291
--- /dev/null
+++ b/Tweak.x
@@ -0,0 +1,172 @@
+#import <sysctl.h>
+
+static bool uptimeTextEnabled = YES;
+static bool enabled = YES;
+static int displaySetting = 1;
+static int fontSize = 16;
+static int fontWeight = 1;
+static int fontAlignment = 1;
+static CGFloat horizontalOffset = 0;
+static CGFloat verticalOffset = 145;
+static UILabel *uptimeLabel;
+static NSTimer *timer;
+int notCentered;
+
+@interface SBFPagedScrollView : UIScrollView
+@end
+
+@interface _UILegibilitySettings
+@property (nonatomic,retain) UIColor * primaryColor;
+@end
+
+@interface SBUILegibilityLabel : UIView
+@property (assign,nonatomic) long long textAlignment;
+@property (nonatomic,copy) UIColor * textColor;
+@property (nonatomic,retain) UIFont * font;
+@end
+
+@interface SBFLockScreenDateView : UIView
+@property (nonatomic,retain) UIColor * textColor;
+@property (nonatomic,readonly) double contentAlpha;
+-(NSMutableString *)updateUptime;
+-(void)setUptimeLabel;
+@end
+
+@interface CSCoverSheetView : UIView
+@property (nonatomic,retain) SBFLockScreenDateView * dateView;
+@property (nonatomic,retain) SBFPagedScrollView * scrollView;
+@end
+
+@interface CSCoverSheetViewController : UIViewController
+@property (nonatomic,readonly) CSCoverSheetView * coverSheetView;
+@end
+
+static void reloadSettings() {
+ NSMutableDictionary *prefs = [[NSMutableDictionary alloc] initWithContentsOfFile:@"/var/mobile/Library/Preferences/com.5px.signate.plist"];
+ if(prefs) {
+ uptimeTextEnabled = [prefs objectForKey:@"uptimeTextEnabled"] ? [[prefs objectForKey:@"uptimeTextEnabled"] intValue] : enabled;
+ enabled = [prefs objectForKey:@"enabled"] ? [[prefs objectForKey:@"enabled"] intValue] : enabled;
+ displaySetting = [prefs objectForKey:@"displaySetting"] ? [[prefs objectForKey:@"displaySetting"] intValue] : displaySetting;
+ fontWeight = [prefs objectForKey:@"fontWeight"] ? [[prefs objectForKey:@"fontWeight"] intValue] : fontWeight;
+ fontAlignment = [prefs objectForKey:@"fontAlignment"] ? [[prefs objectForKey:@"fontAlignment"] intValue] : fontAlignment;
+ horizontalOffset = [prefs objectForKey:@"offsetWidth"] ? [[prefs objectForKey:@"offsetWidth"] floatValue] : horizontalOffset;
+ verticalOffset = [prefs objectForKey:@"offsetHeight"] ? [[prefs objectForKey:@"offsetHeight"] floatValue] : verticalOffset;
+ }
+}
+
+static void updateVisibility(int action)
+{
+ [UIView animateWithDuration:0.25 delay:0 options:UIViewAnimationOptionCurveEaseIn
+ animations:^{ uptimeLabel.alpha = action;}
+completion:nil];
+}
+
+%hook SBFPagedScrollView
+-(void)setCurrentPageIndex:(unsigned long long)arg1 {
+ %orig;
+
+ if (arg1 == 1)
+ updateVisibility(1);
+ else
+ updateVisibility(0);
+}
+%end
+%hook SBFLockScreenDateView
+-(void)layoutSubviews {
+ %orig;
+ if (enabled) {
+ if (!uptimeLabel)
+ {
+ uptimeLabel = [[UILabel alloc] init];
+ [self addSubview:uptimeLabel];
+ timer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(setUptimeLabel) userInfo:nil repeats:YES];
+ }
+ }
+}
+
+-(void)_updateLabels {
+ %orig;
+ [self setUptimeLabel];
+}
+
+-(void)_updateLabelAlpha {
+ %orig;
+ uptimeLabel.alpha = self.contentAlpha;
+}
+
+-(void)setDateToTimeStretch:(double)arg1 {
+ %orig;
+ if (arg1 > 0) {
+ uptimeLabel.frame = CGRectMake(uptimeLabel.frame.origin.x,self.frame.origin.y + verticalOffset + arg1,uptimeLabel.frame.size.width,uptimeLabel.frame.size.height);
+ }
+}
+%new
+-(void)setUptimeLabel {
+ reloadSettings();
+ if (!enabled && uptimeLabel) {
+ [uptimeLabel removeFromSuperview];
+ uptimeLabel = nil;
+ if (timer) {
+ [timer invalidate];
+ }
+ return;
+ } else if (enabled && !uptimeLabel) {
+ uptimeLabel = [[UILabel alloc] init];
+ [self addSubview:uptimeLabel];
+ timer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(setUptimeLabel) userInfo:nil repeats:YES];
+ }
+ UIFontWeight weight = UIFontWeightRegular;
+ if (fontWeight == 0) {
+ weight = UIFontWeightThin;
+ } else if (fontWeight == 2) {
+ weight = UIFontWeightBold;
+ } else if (fontWeight == 3) {
+ weight = UIFontWeightHeavy;
+ }
+ uptimeLabel.textColor = [UIColor whiteColor];
+ uptimeLabel.textAlignment = fontAlignment;
+ uptimeLabel.font = [UIFont systemFontOfSize:fontSize weight:weight];
+ if ([[UIScreen mainScreen] bounds].size.width <= [[UIScreen mainScreen] bounds].size.height) {
+ [uptimeLabel setFrame:CGRectMake(horizontalOffset, self.frame.origin.y + verticalOffset, self.frame.size.width , fontSize)];
+ }
+ uptimeLabel.text = [self updateUptime];
+ uptimeLabel.lineBreakMode = NSLineBreakByWordWrapping;
+ uptimeLabel.numberOfLines = 0;
+}
+%new
+- (NSMutableString *)updateUptime {
+ NSMutableString* nextUptimeString = [[NSMutableString alloc] init];
+ struct timeval sys_boot_time;
+ int arg_arr[2] = {CTL_KERN, KERN_BOOTTIME};
+ size_t struct_size = sizeof(sys_boot_time);
+ sysctl(arg_arr, 2, &sys_boot_time, &struct_size, NULL, 0);
+ __darwin_time_t uptime = time(NULL) - sys_boot_time.tv_sec;
+ if(!uptime) {
+ uptime = (__darwin_time_t)[NSProcessInfo processInfo].systemUptime;
+ }
+ if (uptimeTextEnabled) {
+ [nextUptimeString appendString:[NSString stringWithFormat:@"Uptime: %@", nextUptimeString]];
+ }
+ if(uptime) {
+ // convert uptime to string
+ int dividers[] = {86400, 3600, 60, 1};
+ NSArray *unitNames = @[@"Day", @"Hour", @"Minute", @"Second"];
+ int usable = 0;
+ int loopcounter;
+ int res = uptime;
+ for (loopcounter = 0; loopcounter <= displaySetting; loopcounter++) {
+ usable = res / dividers[loopcounter];
+ res = (int)uptime % dividers[loopcounter];
+ if(usable) {
+ [nextUptimeString appendString:[NSString stringWithFormat:@"%d %@%s ", usable, [unitNames objectAtIndex:loopcounter], (usable > 1 ? "s" : "")]];
+ }
+ }
+ }
+ return nextUptimeString;
+}
+
+%end
+%ctor {
+ CFNotificationCenterAddObserver(CFNotificationCenterGetDarwinNotifyCenter(), NULL, (CFNotificationCallback)reloadSettings, CFSTR("com.5px.signate.settingschanged"), NULL, CFNotificationSuspensionBehaviorCoalesce);
+ reloadSettings();
+}