Переглянути джерело

Add files via upload

master
Gil Shahar 6 роки тому
джерело
коміт
7b74ef1190
Аккаунт користувача з таким Email не знайдено
6 змінених файлів з 137 додано та 34 видалено
  1. +1
    -1
      AVLock.plist
  2. +2
    -1
      Makefile
  3. BIN
      Resources/Locked@3x.png
  4. BIN
      Resources/Unlocked@3x.png
  5. +134
    -32
      Tweak.xm
  6. BIN
      com.gilshahar7.avlock_0.0.1-56+debug_iphoneos-arm.deb

+ 1
- 1
AVLock.plist Переглянути файл

@@ -1 +1 @@
{ Filter = { Bundles = ( "com.apple.AVKit", "com.apple.springboard" ); }; }
{ Filter = { Bundles = ( "com.apple.springboard", "com.apple.AVKit" ); }; }

+ 2
- 1
Makefile Переглянути файл

@@ -5,12 +5,13 @@ include $(THEOS)/makefiles/common.mk
TWEAK_NAME = AVLock
AVLock_FILES = Tweak.xm
AVLock_FRAMEWORKS = UIKit
AVLock_PRIVATE_FRAMEWORKS = CoreTelephony AudioToolbox

include $(THEOS_MAKE_PATH)/tweak.mk


BUNDLE_NAME = AVLockBundle
AVLockBundle_INSTALL_PATH = /Library/MobileSubstrate/DynamicLibraries
AVLockBundle_INSTALL_PATH = /Library/Application Support
include $(THEOS)/makefiles/bundle.mk

after-install::

BIN
Resources/Locked@3x.png Переглянути файл

Before After
Width: 92  |  Height: 92  |  Size: 3.1KB

BIN
Resources/Unlocked@3x.png Переглянути файл

Before After
Width: 92  |  Height: 92  |  Size: 3.3KB

+ 134
- 32
Tweak.xm Переглянути файл

@@ -1,4 +1,4 @@
#define kBundlePath @"/Library/MobileSubstrate/DynamicLibraries/AVLockBundle.bundle"
#define kBundlePath @"/Library/Application Support/AVLockBundle.bundle"


@interface SBOrientationLockManager
@@ -6,49 +6,151 @@
-(bool)isUserLocked;
-(void)lock;
-(void)unlock;
-(void)myIsUserLocked;
@end

@interface AVTransportControlsView
-(void)addSubview:(id)arg1;
@property CGRect frame;


@interface AVTransportControlsView : UIView
-(void)deviceOrientationDidChange;
//@property (assign, nonatomic) AVButton *skipBackButton;
@end

static bool firstrun = true;
extern "C" CFNotificationCenterRef CFNotificationCenterGetDistributedCenter(void);

%hook AVTransportControlsView
-(void)layoutSubviews{
%orig;
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;
static UIButton *button = nil;
static NSString *myObserver=@"anObserver";
static void toggle(CFNotificationCenterRef center, void *observer, CFStringRef name, const void *object, CFDictionaryRef userInfo){

if([[%c(SBOrientationLockManager) sharedInstance] isUserLocked]){
[[%c(SBOrientationLockManager) sharedInstance] unlock];
}else{
[[%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;
firstrun = true;
%orig;
CFNotificationCenterRemoveObserver ( CFNotificationCenterGetDarwinNotifyCenter(), (void*)myObserver, NULL, NULL);
}

%new
-(void)orientationButtonPressed{
if([[%c(SBOrientationLockManager) sharedInstance] isUserLocked]){
[[%c(SBOrientationLockManager) sharedInstance] unlock];
}else{
[[%c(SBOrientationLockManager) sharedInstance] lock];
-(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 Переглянути файл


Завантаження…
Відмінити
Зберегти