mirror of
https://github.com/gilshahar7/AVLock.git
synced 2025-06-28 00:46:45 +00:00
Add files via upload
This commit is contained in:
@ -1 +1 @@
|
|||||||
{ Filter = { Bundles = ( "com.apple.AVKit", "com.apple.springboard" ); }; }
|
{ Filter = { Bundles = ( "com.apple.springboard", "com.apple.AVKit" ); }; }
|
||||||
|
3
Makefile
3
Makefile
@ -5,12 +5,13 @@ include $(THEOS)/makefiles/common.mk
|
|||||||
TWEAK_NAME = AVLock
|
TWEAK_NAME = AVLock
|
||||||
AVLock_FILES = Tweak.xm
|
AVLock_FILES = Tweak.xm
|
||||||
AVLock_FRAMEWORKS = UIKit
|
AVLock_FRAMEWORKS = UIKit
|
||||||
|
AVLock_PRIVATE_FRAMEWORKS = CoreTelephony AudioToolbox
|
||||||
|
|
||||||
include $(THEOS_MAKE_PATH)/tweak.mk
|
include $(THEOS_MAKE_PATH)/tweak.mk
|
||||||
|
|
||||||
|
|
||||||
BUNDLE_NAME = AVLockBundle
|
BUNDLE_NAME = AVLockBundle
|
||||||
AVLockBundle_INSTALL_PATH = /Library/MobileSubstrate/DynamicLibraries
|
AVLockBundle_INSTALL_PATH = /Library/Application Support
|
||||||
include $(THEOS)/makefiles/bundle.mk
|
include $(THEOS)/makefiles/bundle.mk
|
||||||
|
|
||||||
after-install::
|
after-install::
|
||||||
|
BIN
Resources/Locked@3x.png
Normal file
BIN
Resources/Locked@3x.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 3.1 KiB |
BIN
Resources/Unlocked@3x.png
Normal file
BIN
Resources/Unlocked@3x.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 3.3 KiB |
168
Tweak.xm
168
Tweak.xm
@ -1,4 +1,4 @@
|
|||||||
#define kBundlePath @"/Library/MobileSubstrate/DynamicLibraries/AVLockBundle.bundle"
|
#define kBundlePath @"/Library/Application Support/AVLockBundle.bundle"
|
||||||
|
|
||||||
|
|
||||||
@interface SBOrientationLockManager
|
@interface SBOrientationLockManager
|
||||||
@ -6,49 +6,151 @@
|
|||||||
-(bool)isUserLocked;
|
-(bool)isUserLocked;
|
||||||
-(void)lock;
|
-(void)lock;
|
||||||
-(void)unlock;
|
-(void)unlock;
|
||||||
|
-(void)myIsUserLocked;
|
||||||
@end
|
@end
|
||||||
|
|
||||||
@interface AVTransportControlsView
|
|
||||||
-(void)addSubview:(id)arg1;
|
|
||||||
@property CGRect frame;
|
@interface AVTransportControlsView : UIView
|
||||||
|
-(void)deviceOrientationDidChange;
|
||||||
|
//@property (assign, nonatomic) AVButton *skipBackButton;
|
||||||
@end
|
@end
|
||||||
|
|
||||||
static bool firstrun = true;
|
extern "C" CFNotificationCenterRef CFNotificationCenterGetDistributedCenter(void);
|
||||||
|
|
||||||
%hook AVTransportControlsView
|
static UIButton *button = nil;
|
||||||
-(void)layoutSubviews{
|
static NSString *myObserver=@"anObserver";
|
||||||
%orig;
|
static void toggle(CFNotificationCenterRef center, void *observer, CFStringRef name, const void *object, CFDictionaryRef userInfo){
|
||||||
if(firstrun){
|
|
||||||
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
|
|
||||||
[button addTarget:self action:@selector(orientationButtonPressed)
|
|
||||||
forControlEvents:UIControlEventTouchUpInside];
|
|
||||||
|
|
||||||
NSBundle *bundle = [[NSBundle alloc] initWithPath:kBundlePath];
|
|
||||||
NSString *imagePath = [bundle pathForResource:@"Test" ofType:@"png"];
|
|
||||||
UIImage *img = [UIImage imageWithContentsOfFile:imagePath];
|
|
||||||
|
|
||||||
[button setImage:img forState:UIControlStateNormal];
|
|
||||||
[button setImage:img forState:UIControlStateHighlighted];
|
|
||||||
[button setImage:img forState:UIControlStateSelected];
|
|
||||||
button.contentMode = UIViewContentModeScaleToFill;
|
|
||||||
button.frame = CGRectMake(0, 0, img.size.width, img.size.height);
|
|
||||||
[self addSubview:button];
|
|
||||||
firstrun = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
-(void)dealloc{
|
|
||||||
%orig;
|
|
||||||
firstrun = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
%new
|
|
||||||
-(void)orientationButtonPressed{
|
|
||||||
if([[%c(SBOrientationLockManager) sharedInstance] isUserLocked]){
|
if([[%c(SBOrientationLockManager) sharedInstance] isUserLocked]){
|
||||||
[[%c(SBOrientationLockManager) sharedInstance] unlock];
|
[[%c(SBOrientationLockManager) sharedInstance] unlock];
|
||||||
}else{
|
}else{
|
||||||
[[%c(SBOrientationLockManager) sharedInstance] lock];
|
[[%c(SBOrientationLockManager) sharedInstance] lock];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
static void lockButton(CFNotificationCenterRef center, void *observer, CFStringRef name, const void *object, CFDictionaryRef userInfo){
|
||||||
|
NSBundle *bundle = [[[NSBundle alloc] initWithPath:kBundlePath] autorelease];
|
||||||
|
NSString *imagePath = [bundle pathForResource:@"Locked@3x" ofType:@"png"];
|
||||||
|
UIImage *img = [UIImage imageWithContentsOfFile:imagePath];
|
||||||
|
[button setImage:img forState:UIControlStateNormal];
|
||||||
|
[button setImage:img forState:UIControlStateHighlighted];
|
||||||
|
[button setImage:img forState:UIControlStateSelected];
|
||||||
|
|
||||||
|
}
|
||||||
|
static void unlockButton(CFNotificationCenterRef center, void *observer, CFStringRef name, const void *object, CFDictionaryRef userInfo){
|
||||||
|
NSBundle *bundle = [[[NSBundle alloc] initWithPath:kBundlePath] autorelease];
|
||||||
|
NSString *imagePath = [bundle pathForResource:@"Unlocked@3x" ofType:@"png"];
|
||||||
|
UIImage *img = [UIImage imageWithContentsOfFile:imagePath];
|
||||||
|
[button setImage:img forState:UIControlStateNormal];
|
||||||
|
[button setImage:img forState:UIControlStateHighlighted];
|
||||||
|
[button setImage:img forState:UIControlStateSelected];
|
||||||
|
|
||||||
|
}
|
||||||
|
static void firstUpdate(CFNotificationCenterRef center, void *observer, CFStringRef name, const void *object, CFDictionaryRef userInfo){
|
||||||
|
[[%c(SBOrientationLockManager) sharedInstance] myIsUserLocked];
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
%hook SBOrientationLockManager
|
||||||
|
-(SBOrientationLockManager*)init{
|
||||||
|
self = %orig;
|
||||||
|
CFNotificationCenterAddObserver(CFNotificationCenterGetDarwinNotifyCenter(),
|
||||||
|
(void*)myObserver,
|
||||||
|
toggle,
|
||||||
|
CFSTR("avlock.toggle"),
|
||||||
|
NULL,
|
||||||
|
CFNotificationSuspensionBehaviorDeliverImmediately);
|
||||||
|
CFNotificationCenterAddObserver(CFNotificationCenterGetDarwinNotifyCenter(),
|
||||||
|
(void*)myObserver,
|
||||||
|
firstUpdate,
|
||||||
|
CFSTR("avlock.firstUpdate"),
|
||||||
|
NULL,
|
||||||
|
CFNotificationSuspensionBehaviorDeliverImmediately);
|
||||||
|
|
||||||
|
return self;
|
||||||
|
}
|
||||||
|
%new
|
||||||
|
-(void)myIsUserLocked{
|
||||||
|
bool locked = [self isUserLocked];
|
||||||
|
if(locked){
|
||||||
|
CFNotificationCenterPostNotification(CFNotificationCenterGetDarwinNotifyCenter(), CFSTR("avlock.lockButton"), (void*)myObserver, NULL, true);
|
||||||
|
}else{
|
||||||
|
CFNotificationCenterPostNotification(CFNotificationCenterGetDarwinNotifyCenter(), CFSTR("avlock.unlockButton"), (void*)myObserver, NULL, true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
-(void)unlock{
|
||||||
|
%orig;
|
||||||
|
CFNotificationCenterPostNotification(CFNotificationCenterGetDarwinNotifyCenter(), CFSTR("avlock.unlockButton"), (void*)myObserver, NULL, true);
|
||||||
|
}
|
||||||
|
-(void)lock{
|
||||||
|
%orig;
|
||||||
|
CFNotificationCenterPostNotification(CFNotificationCenterGetDarwinNotifyCenter(), CFSTR("avlock.lockButton"), (void*)myObserver, NULL, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
%end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
%hook AVTransportControlsView
|
||||||
|
-(AVTransportControlsView *)initWithFrame:(CGRect)frame{
|
||||||
|
AVTransportControlsView *origself = %orig(frame);
|
||||||
|
CFNotificationCenterAddObserver(CFNotificationCenterGetDarwinNotifyCenter(),
|
||||||
|
(void*)myObserver,
|
||||||
|
lockButton,
|
||||||
|
CFSTR("avlock.lockButton"),
|
||||||
|
NULL,
|
||||||
|
CFNotificationSuspensionBehaviorDeliverImmediately);
|
||||||
|
CFNotificationCenterAddObserver(CFNotificationCenterGetDarwinNotifyCenter(),
|
||||||
|
(void*)myObserver,
|
||||||
|
unlockButton,
|
||||||
|
CFSTR("avlock.unlockButton"),
|
||||||
|
NULL,
|
||||||
|
CFNotificationSuspensionBehaviorDeliverImmediately);
|
||||||
|
button = [UIButton buttonWithType:UIButtonTypeCustom];
|
||||||
|
[button addTarget:self action:@selector(orientationButtonPressed) forControlEvents:UIControlEventTouchUpInside];
|
||||||
|
CFNotificationCenterPostNotification(CFNotificationCenterGetDarwinNotifyCenter(), CFSTR("avlock.firstUpdate"), (void*)myObserver, NULL, true);
|
||||||
|
button.contentMode = UIViewContentModeScaleAspectFit;
|
||||||
|
|
||||||
|
UIInterfaceOrientation orientation =[UIApplication sharedApplication].statusBarOrientation;
|
||||||
|
if (orientation == UIInterfaceOrientationLandscapeRight || orientation == UIInterfaceOrientationLandscapeLeft){
|
||||||
|
button.frame = CGRectMake(6.5, -40, 46, 46);
|
||||||
|
}
|
||||||
|
else if(orientation == UIInterfaceOrientationPortrait){
|
||||||
|
button.frame = CGRectMake(([UIScreen mainScreen].bounds.size.width / 2) - 142.5, 43, 46, 46);
|
||||||
|
}
|
||||||
|
button.imageEdgeInsets = UIEdgeInsetsMake(10, 10, 10, 10);
|
||||||
|
|
||||||
|
[self addSubview:button];
|
||||||
|
[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
|
||||||
|
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(deviceOrientationDidChange) name:UIDeviceOrientationDidChangeNotification object:nil];
|
||||||
|
|
||||||
|
return origself;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
-(void)dealloc{
|
||||||
|
%orig;
|
||||||
|
CFNotificationCenterRemoveObserver ( CFNotificationCenterGetDarwinNotifyCenter(), (void*)myObserver, NULL, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
%new
|
||||||
|
-(void)deviceOrientationDidChange{
|
||||||
|
UIInterfaceOrientation orientation =[UIApplication sharedApplication].statusBarOrientation;
|
||||||
|
if (orientation == UIInterfaceOrientationLandscapeRight || orientation == UIInterfaceOrientationLandscapeLeft){
|
||||||
|
button.frame = CGRectMake(6.5, -40, 46, 46);
|
||||||
|
}
|
||||||
|
else if(orientation == UIInterfaceOrientationPortrait){
|
||||||
|
button.frame = CGRectMake((self.frame.size.width / 2) - 115.5, 43, 46, 46);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
%new
|
||||||
|
-(void)orientationButtonPressed{
|
||||||
|
CFNotificationCenterPostNotification(CFNotificationCenterGetDarwinNotifyCenter(), CFSTR("avlock.toggle"), (void*)myObserver, NULL, true);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
%end
|
%end
|
BIN
com.gilshahar7.avlock_0.0.1-56+debug_iphoneos-arm.deb
Normal file
BIN
com.gilshahar7.avlock_0.0.1-56+debug_iphoneos-arm.deb
Normal file
Binary file not shown.
Reference in New Issue
Block a user