Initial Release 1.0

This commit is contained in:
ShyMemoriees
2019-11-21 19:15:55 +01:00
commit a1c9df151d
124 changed files with 1660 additions and 0 deletions

BIN
Prefs/.DS_Store vendored Normal file

Binary file not shown.

17
Prefs/Makefile Normal file
View File

@ -0,0 +1,17 @@
ARCHS = arm64 arm64e
TARGET = iphone:clang:11.2:11.2
include $(THEOS)/makefiles/common.mk
BUNDLE_NAME = TickPrefs
$(BUNDLE_NAME)_FILES = $(wildcard *.m)
$(BUNDLE_NAME)_INSTALL_PATH = /Library/PreferenceBundles
$(BUNDLE_NAME)_FRAMEWORKS = UIKit
$(BUNDLE_NAME)_PRIVATE_FRAMEWORKS = Preferences
$(BUNDLE_NAME)_EXTRA_FRAMEWORKS = Cephei CepheiPrefs
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/TickPreferences.plist$(ECHO_END)

35
Prefs/NSTask.h Normal file
View File

@ -0,0 +1,35 @@
@interface NSTask : NSObject
@property (copy) NSArray *arguments;
@property (copy) NSString *currentDirectoryPath;
@property (copy) NSDictionary *environment;
@property (copy) NSString *launchPath;
@property (readonly) int processIdentifier;
@property long long qualityOfService;
@property (getter=isRunning, readonly) bool running;
@property (retain) id standardError;
@property (retain) id standardInput;
@property (retain) id standardOutput;
@property (copy) id /* block */ terminationHandler;
@property (readonly) long long terminationReason;
@property (readonly) int terminationStatus;
+ (id)currentTaskDictionary;
+ (id)launchedTaskWithDictionary:(id)arg1;
+ (id)launchedTaskWithLaunchPath:(id)arg1 arguments:(id)arg2;
- (id)init;
- (void)interrupt;
- (bool)isRunning;
- (void)launch;
- (int)processIdentifier;
- (long long)qualityOfService;
- (bool)resume;
- (bool)suspend;
- (long long)suspendCount;
- (void)terminate;
- (id /* block */)terminationHandler;
- (long long)terminationReason;
- (int)terminationStatus;
@end

BIN
Prefs/Resources/.DS_Store vendored Normal file

Binary file not shown.

BIN
Prefs/Resources/Banner.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

View File

@ -0,0 +1,24 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>English</string>
<key>CFBundleExecutable</key>
<string>TickPrefs</string>
<key>CFBundleIdentifier</key>
<string>me.shymemoriees.tickpreferences</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundlePackageType</key>
<string>BNDL</string>
<key>CFBundleShortVersionString</key>
<string>1.0.0</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>1.0</string>
<key>NSPrincipalClass</key>
<string>TCKRootListController</string>
</dict>
</plist>

118
Prefs/Resources/Root.plist Normal file
View File

@ -0,0 +1,118 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>items</key>
<array>
<dict>
<key>action</key>
<string>twitterShy</string>
<key>cell</key>
<string>PSButtonCell</string>
<key>label</key>
<string>@ShyMemoriees</string>
<key>cellClass</key>
<string>HBTwitterCell</string>
<key>label</key>
<string>ShyMemoriees</string>
<key>user</key>
<string>ShyMemoriees</string>
</dict>
<dict>
<key>cell</key>
<string>PSSwitchCell</string>
<key>default</key>
<true/>
<key>defaults</key>
<string>me.shymemoriees.tickpreferences</string>
<key>key</key>
<string>Enabled</string>
<key>label</key>
<string>Enabled (Respring required)</string>
<key>PostNotification</key>
<string>me.shymemoriees.tickpreferences/ReloadPrefs</string>
</dict>
<!-- Loudness Controller -->
<dict>
<key>cell</key>
<string>PSGroupCell</string>
<key>label</key>
<string>Loudness Of The Sound</string>
</dict>
<dict>
<key>cell</key>
<string>PSSegmentCell</string>
<key>default</key>
<integer>0</integer>
<key>defaults</key>
<string>me.shymemoriees.tickpreferences</string>
<key>key</key>
<string>Loudness</string>
<key>validValues</key>
<array>
<integer>0</integer>
<integer>1</integer>
<integer>2</integer>
</array>
<key>validTitles</key>
<array>
<string>Original</string>
<string>Normal</string>
<string>Loud</string>
</array>
<key>alignment</key>
<string>3</string>
<key>PostNotification</key>
<string>me.shymemoriees.tickpreferences/ReloadPrefs</string>
</dict>
<!-- Support Me -->
<dict>
<key>cell</key>
<string>PSGroupCell</string>
<key>label</key>
<string>Support Me</string>
</dict>
<dict>
<key>cellClass</key>
<string>HBLinkTableCell</string>
<key>label</key>
<string>Little Donation 🌺</string>
<key>subtitle</key>
<string>Helps Me To Pay For My Server</string>
<key>url</key>
<string>https://paypal.me/ShyMemoriees</string>
</dict>
<dict>
<key>cellClass</key>
<string>HBLinkTableCell</string>
<key>label</key>
<string>Source Code 🌙</string>
<key>subtitle</key>
<string>Github</string>
<key>url</key>
<string>https://github.com/ShyMemoriees/Tick</string>
</dict>
<dict>
<key>cellClass</key>
<string>HBLinkTableCell</string>
<key>label</key>
<string>Found A Bug? 🌧</string>
<key>subtitle</key>
<string>Leave A Bug Report Here</string>
<key>url</key>
<string>https://github.com/ShyMemoriees/Tick/issues/new</string>
</dict>
<dict>
<key>cell</key>
<string>PSGroupCell</string>
<key>label</key>
<string>Tick By ShyMemoriees, Made With ❤️</string>
</dict>
</array>
<key>title</key>
<string>Tick</string>
</dict>
</plist>

BIN
Prefs/Resources/icon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

BIN
Prefs/Resources/icon@2x.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

BIN
Prefs/Resources/tick.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

View File

@ -0,0 +1,33 @@
#import "TCKRootListController.h"
@implementation TCKAppearanceSettings
-(UIColor *)tintColor {
return [UIColor colorWithRed:0.17 green:0.09 blue:0.19 alpha:1.0];;
}
-(UIColor *)statusBarTintColor {
return [UIColor whiteColor];
}
-(UIColor *)navigationBarTitleColor {
return [UIColor whiteColor];
}
-(UIColor *)navigationBarTintColor {
return [UIColor whiteColor];
}
-(UIColor *)tableViewCellSeparatorColor {
return [UIColor colorWithWhite:0 alpha:0];
}
-(UIColor *)navigationBarBackgroundColor {
return [UIColor colorWithRed:0.17 green:0.09 blue:0.19 alpha:1.0];;
}
-(BOOL)translucentNavigationBar {
return NO;
}
@end

View File

@ -0,0 +1,23 @@
#import <Preferences/PSListController.h>
#import <Preferences/PSSpecifier.h>
#import <CepheiPrefs/HBRootListController.h>
#import <CepheiPrefs/HBAppearanceSettings.h>
#import <Cephei/HBPreferences.h>
#import "NSTask.h"
@interface TCKAppearanceSettings : HBAppearanceSettings
@end
@interface TCKRootListController : HBRootListController {
UITableView * _table;
}
@property (nonatomic, retain) UIBarButtonItem *respringButton;
@property (nonatomic, retain) UIView *headerView;
@property (nonatomic, retain) UIImageView *headerImageView;
@property (nonatomic, retain) UILabel *titleLabel;
@property (nonatomic, retain) UIImageView *iconView;
-(void)respring;
-(void)respringUtil;
@end

View File

@ -0,0 +1,152 @@
#include "TCKRootListController.h"
@implementation TCKRootListController
- (instancetype)init {
self = [super init];
if (self) {
TCKAppearanceSettings *appearanceSettings = [[TCKAppearanceSettings alloc] init];
self.hb_appearanceSettings = appearanceSettings;
self.respringButton = [[UIBarButtonItem alloc] initWithTitle:@"ReSpring"
style:UIBarButtonItemStylePlain
target:self
action:@selector(respring)];
self.respringButton.tintColor = [UIColor whiteColor];
self.navigationItem.rightBarButtonItem = self.respringButton;
self.navigationItem.titleView = [UIView new];
self.titleLabel = [[UILabel alloc] initWithFrame:CGRectMake(0,0,10,10)];
self.titleLabel.font = [UIFont boldSystemFontOfSize:17];
self.titleLabel.translatesAutoresizingMaskIntoConstraints = NO;
self.titleLabel.text = @"Tick";
self.titleLabel.textColor = [UIColor whiteColor];
self.titleLabel.textAlignment = NSTextAlignmentCenter;
[self.navigationItem.titleView addSubview:self.titleLabel];
self.iconView = [[UIImageView alloc] initWithFrame:CGRectMake(0,0,10,10)];
self.iconView.contentMode = UIViewContentModeScaleAspectFit;
self.iconView.image = [UIImage imageWithContentsOfFile:@"/Library/PreferenceBundles/TickPrefs.bundle/icon@2x.png"];
self.iconView.translatesAutoresizingMaskIntoConstraints = NO;
self.iconView.alpha = 0.0;
[self.navigationItem.titleView addSubview:self.iconView];
[NSLayoutConstraint activateConstraints:@[
[self.titleLabel.topAnchor constraintEqualToAnchor:self.navigationItem.titleView.topAnchor],
[self.titleLabel.leadingAnchor constraintEqualToAnchor:self.navigationItem.titleView.leadingAnchor],
[self.titleLabel.trailingAnchor constraintEqualToAnchor:self.navigationItem.titleView.trailingAnchor],
[self.titleLabel.bottomAnchor constraintEqualToAnchor:self.navigationItem.titleView.bottomAnchor],
[self.iconView.topAnchor constraintEqualToAnchor:self.navigationItem.titleView.topAnchor],
[self.iconView.leadingAnchor constraintEqualToAnchor:self.navigationItem.titleView.leadingAnchor],
[self.iconView.trailingAnchor constraintEqualToAnchor:self.navigationItem.titleView.trailingAnchor],
[self.iconView.bottomAnchor constraintEqualToAnchor:self.navigationItem.titleView.bottomAnchor],
]];
}
return self;
}
-(NSArray *)specifiers {
if (_specifiers == nil) {
_specifiers = [[self loadSpecifiersFromPlistName:@"Root" target:self] retain];
}
return _specifiers;
}
- (void)viewDidLoad {
[super viewDidLoad];
self.headerView = [[UIView alloc] initWithFrame:CGRectMake(0,0,200,200)];
self.headerImageView = [[UIImageView alloc] initWithFrame:CGRectMake(0,0,200,200)];
self.headerImageView.contentMode = UIViewContentModeScaleAspectFill;
self.headerImageView.image = [UIImage imageWithContentsOfFile:@"/Library/PreferenceBundles/TickPrefs.bundle/Banner.png"];
self.headerImageView.translatesAutoresizingMaskIntoConstraints = NO;
[self.headerView addSubview:self.headerImageView];
[NSLayoutConstraint activateConstraints:@[
[self.headerImageView.topAnchor constraintEqualToAnchor:self.headerView.topAnchor],
[self.headerImageView.leadingAnchor constraintEqualToAnchor:self.headerView.leadingAnchor],
[self.headerImageView.trailingAnchor constraintEqualToAnchor:self.headerView.trailingAnchor],
[self.headerImageView.bottomAnchor constraintEqualToAnchor:self.headerView.bottomAnchor],
]];
_table.tableHeaderView = self.headerView;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
tableView.tableHeaderView = self.headerView;
return [super tableView:tableView cellForRowAtIndexPath:indexPath];
}
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
CGRect frame = self.table.bounds;
frame.origin.y = -frame.size.height;
self.navigationController.navigationController.navigationBar.barTintColor = [UIColor colorWithRed:0.17 green:0.09 blue:0.19 alpha:1.0];
[self.navigationController.navigationController.navigationBar setShadowImage: [UIImage new]];
self.navigationController.navigationController.navigationBar.tintColor = [UIColor whiteColor];
self.navigationController.navigationController.navigationBar.translucent = NO;
}
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
[self.navigationController.navigationController.navigationBar setTitleTextAttributes:@{NSForegroundColorAttributeName : [UIColor whiteColor]}];
}
- (void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
[self.navigationController.navigationController.navigationBar setTitleTextAttributes:@{NSForegroundColorAttributeName : [UIColor blackColor]}];
}
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
CGFloat offsetY = scrollView.contentOffset.y;
if (offsetY > 200) {
[UIView animateWithDuration:0.2 animations:^{
self.iconView.alpha = 1.0;
self.titleLabel.alpha = 0.0;
}];
} else {
[UIView animateWithDuration:0.2 animations:^{
self.iconView.alpha = 0.0;
self.titleLabel.alpha = 1.0;
}];
}
if (offsetY > 0) offsetY = 0;
self.headerImageView.frame = CGRectMake(0, offsetY, self.headerView.frame.size.width, 200 - offsetY);
}
-(void)respring {
UIAlertController *respring = [UIAlertController alertControllerWithTitle:@"Tick"
message:@"Do you really want to ReSpring?"
preferredStyle:UIAlertControllerStyleAlert];
UIAlertAction *confirmAction = [UIAlertAction actionWithTitle:@"Confirm" style:UIAlertActionStyleDestructive handler:^(UIAlertAction * action) {
[self respringUtil];
}];
UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"Cancel" style:UIAlertActionStyleCancel handler:nil];
[respring addAction:confirmAction];
[respring addAction:cancelAction];
[self presentViewController:respring animated:YES completion:nil];
}
-(void)respringUtil {
NSTask *t = [[NSTask alloc] init];
[t setLaunchPath:@"/usr/bin/killall"];
[t setArguments:[NSArray arrayWithObjects:@"backboardd", nil]];
[t launch];
}
-(IBAction)twitterEsquilli {
NSURL *URL = [NSURL URLWithString: @"https://github.com/ShyMemoriees"];
[[UIApplication sharedApplication] openURL:URL options:@{} completionHandler:nil];
}
@end

21
Prefs/entry.plist Normal file
View File

@ -0,0 +1,21 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>entry</key>
<dict>
<key>bundle</key>
<string>TickPrefs</string>
<key>cell</key>
<string>PSLinkCell</string>
<key>detail</key>
<string>TCKRootListController</string>
<key>icon</key>
<string>icon.png</string>
<key>isController</key>
<true/>
<key>label</key>
<string>Tick</string>
</dict>
</dict>
</plist>