diff --git a/.theos/_/DEBIAN/control b/.theos/_/DEBIAN/control index 06f07ce..fd4e5d2 100644 --- a/.theos/_/DEBIAN/control +++ b/.theos/_/DEBIAN/control @@ -6,5 +6,5 @@ Description: Turns on AirplaneMode if you have low signal strength. Enable/disab Maintainer: Joe Merlino Author: Joe Merlino Section: Tweaks -Version: 0.0.1-2 -Installed-Size: 296 +Version: 0.0.1-4 +Installed-Size: 324 diff --git a/.theos/_/Library/MobileSubstrate/DynamicLibraries/AirplaneSignal.dylib b/.theos/_/Library/MobileSubstrate/DynamicLibraries/AirplaneSignal.dylib index 6849269..69477d8 100755 Binary files a/.theos/_/Library/MobileSubstrate/DynamicLibraries/AirplaneSignal.dylib and b/.theos/_/Library/MobileSubstrate/DynamicLibraries/AirplaneSignal.dylib differ diff --git a/.theos/_/Library/PreferenceBundles/AirplaneSignalPrefs.bundle/AirplaneSignalPrefs b/.theos/_/Library/PreferenceBundles/AirplaneSignalPrefs.bundle/AirplaneSignalPrefs index a12b7c7..53dc64f 100755 Binary files a/.theos/_/Library/PreferenceBundles/AirplaneSignalPrefs.bundle/AirplaneSignalPrefs and b/.theos/_/Library/PreferenceBundles/AirplaneSignalPrefs.bundle/AirplaneSignalPrefs differ diff --git a/.theos/_/Library/PreferenceBundles/AirplaneSignalPrefs.bundle/AirplaneSignalPrefs.plist b/.theos/_/Library/PreferenceBundles/AirplaneSignalPrefs.bundle/AirplaneSignalPrefs.plist new file mode 100644 index 0000000..407d40a --- /dev/null +++ b/.theos/_/Library/PreferenceBundles/AirplaneSignalPrefs.bundle/AirplaneSignalPrefs.plist @@ -0,0 +1,243 @@ + + + + + items + + + cell + PSGroupCell + footerText + Choose the amount of strength to trigger AirplaneSignal. After the number of seconds you set, if the phone still has that low signal AirplaneSignal will enable Airplane mode. The tweak will also enable wifi and/or bluetooth after Airplane mode if they were enabled before but you can always enable wifi connectivity if you want. + + + cell + PSSwitchCell + default + + defaults + com.joemerlino.airplanesignal + key + enabled + label + Enabled + PostNotification + com.joemerlino.airplanesignal.preferencechanged + + + cell + PSLinkListCell + label + Signal strength + detail + PSListItemsController + default + 2 + key + percentage + defaults + com.joemerlino.airplanesignal + PostNotification + com.joemerlino.airplanesignal.preferencechanged + validTitles + + 20% or less + 40% or less + 60% or less + + validValues + + 1 + 2 + 3 + + + + cell + PSLinkListCell + label + After + detail + PSListItemsController + default + 5 + key + delay + defaults + com.joemerlino.airplanesignal + PostNotification + com.joemerlino.airplanesignal.preferencechanged + validTitles + + 5 sec + 10 sec + 15 sec + 20 sec + 25 sec + 30 sec + 35 sec + 40 sec + 45 sec + 50 sec + + validValues + + 5 + 10 + 15 + 20 + 25 + 30 + 35 + 40 + 45 + 50 + + + + cell + PSSwitchCell + default + + defaults + com.joemerlino.airplanesignal + key + forcewifi + label + Always enable WiFi + PostNotification + com.joemerlino.airplanesignal.preferencechanged + + + cell + PSGroupCell + footerText + This feature allows to disable Airplane Mode and check the network after a set amount of minutes. + + + cell + PSSwitchCell + default + + defaults + com.joemerlino.airplanesignal + key + check + label + Re-check signal + PostNotification + com.joemerlino.airplanesignal.preferencechanged + + + cell + PSLinkListCell + label + After + detail + PSListItemsController + default + 300 + key + checkmin + defaults + com.joemerlino.airplanesignal + PostNotification + com.joemerlino.airplanesignal.preferencechanged + validTitles + + 5 min + 10 min + 15 min + 20 min + 25 min + 30 min + 35 min + 40 min + 45 min + 50 min + + validValues + + 300 + 600 + 900 + 1200 + 1500 + 1800 + 2100 + 2400 + 2700 + 3000 + + + + cell + PSGroupCell + footerText + This feature allows to "force downgrade" network speed (LTE -> 3G [or 3G -> EDGE on older iDevices]) before enabling airplane mode, since signal strength might be better on slower network. + + + cell + PSSwitchCell + default + + defaults + com.joemerlino.airplanesignal + key + downgradenetwork + label + Downgrade network speed + PostNotification + com.joemerlino.airplanesignal.preferencechanged + + + cell + PSGroupCell + footerText + Donation and contact email are the same, if you're already logged on PayPal you'll see that directly filled in. + + + action + twitter + alignment + center + cell + PSButtonCell + label + @joe_merlino + + + action + my_site + alignment + center + cell + PSButtonCell + label + GitHub + + + action + donate + alignment + center + cell + PSButtonCell + label + Buy Me a Coffee! (Donate) + + + action + sendEmail + alignment + center + cell + PSButtonCell + label + Send Mail + + + title + AirplaneSignal + + diff --git a/.theos/_/Library/PreferenceBundles/AirplaneSignalPrefs.bundle/AirplaneSignalPrefs@2x.png b/.theos/_/Library/PreferenceBundles/AirplaneSignalPrefs.bundle/AirplaneSignalPrefs@2x.png deleted file mode 100644 index 42daad8..0000000 Binary files a/.theos/_/Library/PreferenceBundles/AirplaneSignalPrefs.bundle/AirplaneSignalPrefs@2x.png and /dev/null differ diff --git a/.theos/_/Library/Switches/AirplaneSignalToggle.bundle/AirplaneSignalToggle b/.theos/_/Library/Switches/AirplaneSignalToggle.bundle/AirplaneSignalToggle index 27b5356..b391477 100755 Binary files a/.theos/_/Library/Switches/AirplaneSignalToggle.bundle/AirplaneSignalToggle and b/.theos/_/Library/Switches/AirplaneSignalToggle.bundle/AirplaneSignalToggle differ diff --git a/.theos/last_package b/.theos/last_package index dd2e2d9..aaacd7d 100644 --- a/.theos/last_package +++ b/.theos/last_package @@ -1 +1 @@ -./com.joemerlino.airplanesignal_0.0.1-2_iphoneos-arm.deb +./com.joemerlino.airplanesignal_0.0.1-4_iphoneos-arm.deb diff --git a/.theos/obj/AirplaneSignal.dylib b/.theos/obj/AirplaneSignal.dylib index 6849269..69477d8 100755 Binary files a/.theos/obj/AirplaneSignal.dylib and b/.theos/obj/AirplaneSignal.dylib differ diff --git a/.theos/obj/arm64/AirplaneSignal.dylib b/.theos/obj/arm64/AirplaneSignal.dylib index 51afabc..2c79c0f 100755 Binary files a/.theos/obj/arm64/AirplaneSignal.dylib and b/.theos/obj/arm64/AirplaneSignal.dylib differ diff --git a/.theos/obj/arm64/Tweak.xm.cdaed394.o b/.theos/obj/arm64/Tweak.xm.cdaed394.o deleted file mode 100644 index d8989d2..0000000 Binary files a/.theos/obj/arm64/Tweak.xm.cdaed394.o and /dev/null differ diff --git a/.theos/obj/arm64/Tweak.xm.e9ab706b.o b/.theos/obj/arm64/Tweak.xm.e9ab706b.o new file mode 100644 index 0000000..d2e6961 Binary files /dev/null and b/.theos/obj/arm64/Tweak.xm.e9ab706b.o differ diff --git a/.theos/obj/armv7/AirplaneSignal.dylib b/.theos/obj/armv7/AirplaneSignal.dylib index b4ed945..9e5cda0 100755 Binary files a/.theos/obj/armv7/AirplaneSignal.dylib and b/.theos/obj/armv7/AirplaneSignal.dylib differ diff --git a/.theos/obj/armv7/Tweak.xm.0b1e2b5c.o b/.theos/obj/armv7/Tweak.xm.0b1e2b5c.o deleted file mode 100644 index 25c4f32..0000000 Binary files a/.theos/obj/armv7/Tweak.xm.0b1e2b5c.o and /dev/null differ diff --git a/.theos/obj/armv7/Tweak.xm.7ebfd186.o b/.theos/obj/armv7/Tweak.xm.7ebfd186.o new file mode 100644 index 0000000..f75d9c6 Binary files /dev/null and b/.theos/obj/armv7/Tweak.xm.7ebfd186.o differ diff --git a/.theos/obj/armv7s/AirplaneSignal.dylib b/.theos/obj/armv7s/AirplaneSignal.dylib index 45b9427..b01233d 100755 Binary files a/.theos/obj/armv7s/AirplaneSignal.dylib and b/.theos/obj/armv7s/AirplaneSignal.dylib differ diff --git a/.theos/obj/armv7s/Tweak.xm.a29c2cef.o b/.theos/obj/armv7s/Tweak.xm.a29c2cef.o deleted file mode 100644 index dee28e1..0000000 Binary files a/.theos/obj/armv7s/Tweak.xm.a29c2cef.o and /dev/null differ diff --git a/.theos/obj/armv7s/Tweak.xm.e23d6086.o b/.theos/obj/armv7s/Tweak.xm.e23d6086.o new file mode 100644 index 0000000..63a19f2 Binary files /dev/null and b/.theos/obj/armv7s/Tweak.xm.e23d6086.o differ diff --git a/.theos/packages/com.joemerlino.airplanesignal-0.0.1 b/.theos/packages/com.joemerlino.airplanesignal-0.0.1 index d8263ee..bf0d87a 100644 --- a/.theos/packages/com.joemerlino.airplanesignal-0.0.1 +++ b/.theos/packages/com.joemerlino.airplanesignal-0.0.1 @@ -1 +1 @@ -2 \ No newline at end of file +4 \ No newline at end of file diff --git a/Makefile b/Makefile index 8c4a271..a8eb72a 100644 --- a/Makefile +++ b/Makefile @@ -1,3 +1,8 @@ +TARGET := iphone:clang +SDKVERSION = 8.4 +TARGET_IPHONEOS_DEPLOYMENT_VERSION = 7.0 +ARCHS = armv7 armv7s arm64 + include theos/makefiles/common.mk TWEAK_NAME = AirplaneSignal diff --git a/Tweak.xm b/Tweak.xm index e6a6c69..ca89aab 100644 --- a/Tweak.xm +++ b/Tweak.xm @@ -1,118 +1,256 @@ #import "FSSwitchPanel.h" #import +#define AS_DEFAULT_ENABLED YES +#define AS_DEFAULT_PERCENTAGE 2 +#define AS_DEFAULT_DELAY 5 +#define AS_DEFAULT_CHECK NO +#define AS_DEFAULT_CHECKMIN 300 +#define AS_DEFAULT_FORCE_WIFI NO +#define AS_DEFAULT_DOWNGRADE_NETWORK NO +#define AS_SETTINGS_DOMAIN CFSTR("com.joemerlino.airplanesignal") +#define AS_3G_SWITCH_ID "com.a3tweaks.switch.3g" +#define AS_LTE_SWITCH_ID "com.a3tweaks.switch.lte" +#ifndef kCFCoreFoundationVersionNumber_iOS_8_0 + #define kCFCoreFoundationVersionNumber_iOS_8_0 1129.15 +#endif + +typedef void(^cancel_block_t)(void); +typedef enum { + ASNetworkSpeedSlow = 0, + ASNetworkSpeedFast = 1, +} ASNetworkSpeed; + static BOOL call = NO; -static int percentage = 2; -static BOOL enabled = YES; +static int percentage = AS_DEFAULT_PERCENTAGE; +static BOOL enabled = AS_DEFAULT_ENABLED; static int bars = 0; +static int lastTriggerBars = INT_MAX; +static cancel_block_t cancelBlock = NULL; static BOOL wifi = NO; static BOOL bluetooth = NO; -static int delay = 5; -static BOOL check = NO; -static int checkmin = 300; -static BOOL forcewifi = NO; +static int delay = AS_DEFAULT_DELAY; +static BOOL check = AS_DEFAULT_CHECK; +static int checkmin = AS_DEFAULT_CHECKMIN; +static BOOL forcewifi = AS_DEFAULT_FORCE_WIFI; +static BOOL tryDownGradeNetworkSpeed = AS_DEFAULT_DOWNGRADE_NETWORK; +static BOOL didDowngradeNetworkSpeed = NO; +static BOOL disabledWhileNetworkChange = NO; +static BOOL disableNetworkChange = NO; -#ifndef kCFCoreFoundationVersionNumber_iOS_8_0 - #define kCFCoreFoundationVersionNumber_iOS_8_0 1129.15 -#endif +@interface ASFlipSwitchNotificationHelper : NSObject ++ (void)startListeningForNotifications; +@end -#define setin_domain CFSTR("com.joemerlino.airplanesignal") +@implementation ASFlipSwitchNotificationHelper -%hook SBTelephonyManager ++ (void)startListeningForNotifications { + static dispatch_once_t onceToken; + static ASFlipSwitchNotificationHelper* instance; + dispatch_once(&onceToken, ^{ + instance = [[self alloc] init]; + }); +} -%group OS7Hooks -- (int)signalStrengthBars{ - bars = %orig; +- (instancetype)init { + if((self = [super init])){ + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(flipSwitchChanged:) name:FSSwitchPanelSwitchStateChangedNotification object:nil]; + } + return self; +} + +- (void)flipSwitchChanged:(NSNotification *)notification { + NSString* switchID = [[[notification userInfo] valueForKey:FSSwitchPanelSwitchIdentifierKey] retain]; + if(switchID != nil && ([@AS_3G_SWITCH_ID isEqualToString:switchID] || [@AS_LTE_SWITCH_ID isEqualToString:switchID])) { + if(!disabledWhileNetworkChange && didDowngradeNetworkSpeed && canDowngradeNetworkSpeed()){ + //user enabled 3G/LTE after we disabled it. + NSLog(@"[AirplaneSignal] user did enable 3G/LTE after we disabled!"); + didDowngradeNetworkSpeed = NO; + } + } + [switchID release]; +} + +- (void)dealloc { + [[NSNotificationCenter defaultCenter] removeObserver:self name:FSSwitchPanelSwitchStateChangedNotification object:nil]; + [super dealloc]; +} + +@end + +cancel_block_t create_and_run_cancelable_dispatch_after_block(dispatch_time_t when, dispatch_queue_t queue, dispatch_block_t block) { + if(!block) { + return NULL; + } + __block BOOL canceled = NO; + cancel_block_t cancel_block = [^{ + canceled = YES; + } copy]; + if(!queue){ + queue = dispatch_get_main_queue(); + } + dispatch_after(when, queue, ^{ + if(!canceled) { + block(); + } + }); + return [cancel_block retain]; +} + +static BOOL canDowngradeNetworkSpeed() { + return ([[FSSwitchPanel sharedPanel] stateForSwitchIdentifier:@AS_LTE_SWITCH_ID] == FSSwitchStateOn) || ([[FSSwitchPanel sharedPanel] stateForSwitchIdentifier:@AS_3G_SWITCH_ID] == FSSwitchStateOn); +} + +static BOOL setNetworkSpeed(ASNetworkSpeed speed) { + BOOL changed = NO; + disabledWhileNetworkChange = YES; + if(!call){ + if(speed == ASNetworkSpeedFast) { + NSLog(@"[AirplaneSignal] Try to upgrade network speed."); + } + //new Phones with LTE + if ((![[FSSwitchPanel sharedPanel] stateForSwitchIdentifier:@AS_LTE_SWITCH_ID]) == speed) { + [[FSSwitchPanel sharedPanel] setState:(FSSwitchState)speed forSwitchIdentifier:@AS_LTE_SWITCH_ID]; + changed = YES; + } + //old Phones without LTE + if ((![[FSSwitchPanel sharedPanel] stateForSwitchIdentifier:@AS_3G_SWITCH_ID]) == speed) { + [[FSSwitchPanel sharedPanel] setState:(FSSwitchState)speed forSwitchIdentifier:@AS_3G_SWITCH_ID]; + changed = YES; + } + if(changed){ + disableNetworkChange = YES; + //15 seconds, so it has time to switch to other Network (In that period iOS always returns only 1 bar) + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 5 * NSEC_PER_SEC), dispatch_get_main_queue(), ^{ + disabledWhileNetworkChange = NO; + }); + //dont get in a loop of nonstop down an upgrading, wait for some time + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, checkmin * NSEC_PER_SEC), dispatch_get_main_queue(), ^{ + disableNetworkChange = NO; + }); + return !speed; + } + } + disabledWhileNetworkChange = NO; + return NO; +} + +static void handleSignalStrengthUpdate(){ NSLog(@"[AirplaneSignal] P: %d BARS: %d CALL: %d", percentage, bars, call); - if(enabled && percentage>=bars){ - dispatch_after(dispatch_time(DISPATCH_TIME_NOW, delay * NSEC_PER_SEC), dispatch_get_main_queue(), ^{ - NSLog(@"[AirplaneSignal] P: %d BARS: %d CALL: %d", percentage, bars, call); - if(!call && percentage>=bars && [[FSSwitchPanel sharedPanel] stateForSwitchIdentifier:@"com.a3tweaks.switch.airplane-mode"] == 0){ - if ([[FSSwitchPanel sharedPanel] stateForSwitchIdentifier:@"com.a3tweaks.switch.wifi"] == 1) - wifi = YES; - else wifi = NO; - if ([[FSSwitchPanel sharedPanel] stateForSwitchIdentifier:@"com.a3tweaks.switch.bluetooth"] == 1) - bluetooth = YES; - else bluetooth = NO; - [[FSSwitchPanel sharedPanel] setState:FSSwitchStateOn forSwitchIdentifier:@"com.a3tweaks.switch.airplane-mode"]; - AudioServicesPlaySystemSound(1352); - NSLog(@"[AirplaneSignal] AIRPLANEMODE ON, WIFI %d, BT %d",wifi, bluetooth); - if(wifi || forcewifi) - [[FSSwitchPanel sharedPanel] setState:FSSwitchStateOn forSwitchIdentifier:@"com.a3tweaks.switch.wifi"]; - if(bluetooth) - [[FSSwitchPanel sharedPanel] setState:FSSwitchStateOn forSwitchIdentifier:@"com.a3tweaks.switch.bluetooth"]; - if(check){ - dispatch_after(dispatch_time(DISPATCH_TIME_NOW, checkmin * NSEC_PER_SEC), dispatch_get_main_queue(), ^{ - if([[FSSwitchPanel sharedPanel] stateForSwitchIdentifier:@"com.a3tweaks.switch.airplane-mode"] == 1) - [[FSSwitchPanel sharedPanel] setState:FSSwitchStateOff forSwitchIdentifier:@"com.a3tweaks.switch.airplane-mode"]; + if(enabled && !disabledWhileNetworkChange){ + if(percentage>=bars){ + if(lastTriggerBars>=bars){ + if(!cancelBlock){ + NSLog(@"[AirplaneSignal] queueing block"); + cancelBlock = create_and_run_cancelable_dispatch_after_block(dispatch_time(DISPATCH_TIME_NOW, delay * NSEC_PER_SEC), dispatch_get_main_queue(), ^{ + NSLog(@"[AirplaneSignal] executing queued block"); + NSLog(@"[AirplaneSignal] P: %d BARS: %d CALL: %d", percentage, bars, call); + //recheck bars nevertheless + if(percentage>=bars) { + if(tryDownGradeNetworkSpeed && !disableNetworkChange && !didDowngradeNetworkSpeed && canDowngradeNetworkSpeed()) { + didDowngradeNetworkSpeed = setNetworkSpeed(ASNetworkSpeedSlow); + NSLog(@"[AirplaneSignal] Could downgrade network speed: %d", didDowngradeNetworkSpeed); + if(didDowngradeNetworkSpeed) { + AudioServicesPlaySystemSound(1352); + } + } else if(!call){ + BOOL tryToRestoreNetworkSpeed = didDowngradeNetworkSpeed; + if([[FSSwitchPanel sharedPanel] stateForSwitchIdentifier:@"com.a3tweaks.switch.airplane-mode"] == 0){ + wifi = [[FSSwitchPanel sharedPanel] stateForSwitchIdentifier:@"com.a3tweaks.switch.wifi"] == FSSwitchStateOn; + bluetooth = [[FSSwitchPanel sharedPanel] stateForSwitchIdentifier:@"com.a3tweaks.switch.bluetooth"] == FSSwitchStateOn; + [[FSSwitchPanel sharedPanel] setState:FSSwitchStateOn forSwitchIdentifier:@"com.a3tweaks.switch.airplane-mode"]; + AudioServicesPlaySystemSound(1352); + NSLog(@"[AirplaneSignal] AIRPLANEMODE ON, WIFI %d, BT %d",wifi, bluetooth); + if(wifi || forcewifi) + [[FSSwitchPanel sharedPanel] setState:FSSwitchStateOn forSwitchIdentifier:@"com.a3tweaks.switch.wifi"]; + if(bluetooth) + [[FSSwitchPanel sharedPanel] setState:FSSwitchStateOn forSwitchIdentifier:@"com.a3tweaks.switch.bluetooth"]; + if(check){ + BOOL tryToRestoreNetworkSpeedBlock = tryToRestoreNetworkSpeed; + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, checkmin * NSEC_PER_SEC), dispatch_get_main_queue(), ^{ + if([[FSSwitchPanel sharedPanel] stateForSwitchIdentifier:@"com.a3tweaks.switch.airplane-mode"] == FSSwitchStateOn) + [[FSSwitchPanel sharedPanel] setState:FSSwitchStateOff forSwitchIdentifier:@"com.a3tweaks.switch.airplane-mode"]; + if(tryToRestoreNetworkSpeedBlock && !disableNetworkChange){ + didDowngradeNetworkSpeed = setNetworkSpeed(ASNetworkSpeedFast); + } + }); + } + tryToRestoreNetworkSpeed = NO; + } + if(tryToRestoreNetworkSpeed && !disableNetworkChange){ + didDowngradeNetworkSpeed = setNetworkSpeed(ASNetworkSpeedFast); + } + } + } + [cancelBlock release]; + cancelBlock = NULL; }); } + goto returnLabel; + } + } + if(cancelBlock) { + //Signal strength got better + NSLog(@"[AirplaneSignal] cancel queued block"); + cancelBlock(); + [cancelBlock release]; + cancelBlock = NULL; + if(didDowngradeNetworkSpeed && !disableNetworkChange) { + didDowngradeNetworkSpeed = setNetworkSpeed(ASNetworkSpeedFast); } - }); - } - return %orig; + } + returnLabel: + lastTriggerBars = bars; + } +} + +%hook SBTelephonyManager + +%group OS7Hooks +- (int)signalStrengthBars{ + bars = %orig; + handleSignalStrengthUpdate(); + return bars; } -(_Bool)inCall{ - NSLog(@"INCALL %d",%orig); call=%orig; - return %orig; + NSLog(@"INCALL %d",call); + return (_Bool)call; } %end %group OS8Hooks -(BOOL)inCall{ call = %orig; - return %orig; + NSLog(@"INCALL %d",call); + return call; } -(long)signalStrengthBars{ bars = %orig; - NSLog(@"[AirplaneSignal] P: %d BARS: %d CALL: %d", percentage, bars, call); - if(enabled && percentage>=bars){ - dispatch_after(dispatch_time(DISPATCH_TIME_NOW, delay * NSEC_PER_SEC), dispatch_get_main_queue(), ^{ - NSLog(@"[AirplaneSignal] P: %d BARS: %d CALL: %d", percentage, bars, call); - if(!call && percentage>=bars && [[FSSwitchPanel sharedPanel] stateForSwitchIdentifier:@"com.a3tweaks.switch.airplane-mode"] == 0){ - if ([[FSSwitchPanel sharedPanel] stateForSwitchIdentifier:@"com.a3tweaks.switch.wifi"] == 1) - wifi = YES; - else wifi = NO; - if ([[FSSwitchPanel sharedPanel] stateForSwitchIdentifier:@"com.a3tweaks.switch.bluetooth"] == 1) - bluetooth = YES; - else bluetooth = NO; - [[FSSwitchPanel sharedPanel] setState:FSSwitchStateOn forSwitchIdentifier:@"com.a3tweaks.switch.airplane-mode"]; - AudioServicesPlaySystemSound(1352); - NSLog(@"[AirplaneSignal] AIRPLANEMODE ON, WIFI %d, BT %d",wifi, bluetooth); - if(wifi || forcewifi) - [[FSSwitchPanel sharedPanel] setState:FSSwitchStateOn forSwitchIdentifier:@"com.a3tweaks.switch.wifi"]; - if(bluetooth) - [[FSSwitchPanel sharedPanel] setState:FSSwitchStateOn forSwitchIdentifier:@"com.a3tweaks.switch.bluetooth"]; - if(check){ - dispatch_after(dispatch_time(DISPATCH_TIME_NOW, checkmin * NSEC_PER_SEC), dispatch_get_main_queue(), ^{ - if([[FSSwitchPanel sharedPanel] stateForSwitchIdentifier:@"com.a3tweaks.switch.airplane-mode"] == 1) - [[FSSwitchPanel sharedPanel] setState:FSSwitchStateOff forSwitchIdentifier:@"com.a3tweaks.switch.airplane-mode"]; - }); - } - } - }); - } - return %orig; + handleSignalStrengthUpdate(); + return bars; } %end %end + static void LoadSettings(){ CFPreferencesAppSynchronize(CFSTR("com.joemerlino.airplanesignal")); - NSString *n = (NSString*)CFPreferencesCopyAppValue(CFSTR("enabled"), setin_domain); - enabled = (n) ? [n boolValue]:YES; - NSString *n2 = (NSString*)CFPreferencesCopyAppValue(CFSTR("percentage"), setin_domain); - percentage = [n2 intValue]; - NSString *n3 = (NSString*)CFPreferencesCopyAppValue(CFSTR("delay"), setin_domain); - delay = [n3 intValue]; - NSString *n4 = (NSString*)CFPreferencesCopyAppValue(CFSTR("check"), setin_domain); - check = (n4) ? [n4 boolValue]:NO; - NSString *n5 = (NSString*)CFPreferencesCopyAppValue(CFSTR("checkmin"), setin_domain); - checkmin = [n5 intValue]; - NSString *n6 = (NSString*)CFPreferencesCopyAppValue(CFSTR("forcewifi"), setin_domain); - forcewifi = (n6) ? [n6 boolValue]:NO; + NSNumber *n = (NSNumber*)CFPreferencesCopyAppValue(CFSTR("enabled"), AS_SETTINGS_DOMAIN); + enabled = (n) ? [n boolValue]:AS_DEFAULT_ENABLED; + NSNumber *n2 = (NSNumber*)CFPreferencesCopyAppValue(CFSTR("percentage"), AS_SETTINGS_DOMAIN); + percentage = (n2) ? [n2 intValue]:AS_DEFAULT_PERCENTAGE; + NSNumber *n3 = (NSNumber*)CFPreferencesCopyAppValue(CFSTR("delay"), AS_SETTINGS_DOMAIN); + delay = (n3) ? [n3 intValue]:AS_DEFAULT_DELAY; + NSNumber *n4 = (NSNumber*)CFPreferencesCopyAppValue(CFSTR("check"), AS_SETTINGS_DOMAIN); + check = (n4) ? [n4 boolValue]:AS_DEFAULT_CHECK; + NSNumber *n5 = (NSNumber*)CFPreferencesCopyAppValue(CFSTR("checkmin"), AS_SETTINGS_DOMAIN); + checkmin = (n5) ? [n5 intValue]:AS_DEFAULT_CHECKMIN; + NSNumber *n6 = (NSNumber*)CFPreferencesCopyAppValue(CFSTR("forcewifi"), AS_SETTINGS_DOMAIN); + forcewifi = (n6) ? [n6 boolValue]:AS_DEFAULT_FORCE_WIFI; + NSNumber *n7 = (NSNumber*)CFPreferencesCopyAppValue(CFSTR("downgradenetwork"), AS_SETTINGS_DOMAIN); + tryDownGradeNetworkSpeed = (n7) ? [n7 boolValue]:AS_DEFAULT_DOWNGRADE_NETWORK; NSLog(@"[AirplaneSignal] ENABLED AIRPLANESIGNAL: %d PERCENTAGE %d", enabled, percentage); } @@ -120,6 +258,7 @@ static void LoadSettings(){ { CFNotificationCenterAddObserver(CFNotificationCenterGetDarwinNotifyCenter(), NULL, (CFNotificationCallback)LoadSettings, CFSTR("com.joemerlino.airplanesignal.preferencechanged"), NULL, CFNotificationSuspensionBehaviorCoalesce); LoadSettings(); + [ASFlipSwitchNotificationHelper startListeningForNotifications]; if (kCFCoreFoundationVersionNumber >= kCFCoreFoundationVersionNumber_iOS_8_0) %init(OS8Hooks); else diff --git a/airplanesignalprefs/.theos/obj/AirplaneSignalPrefs.bundle/AirplaneSignalPrefs b/airplanesignalprefs/.theos/obj/AirplaneSignalPrefs.bundle/AirplaneSignalPrefs index a12b7c7..53dc64f 100755 Binary files a/airplanesignalprefs/.theos/obj/AirplaneSignalPrefs.bundle/AirplaneSignalPrefs and b/airplanesignalprefs/.theos/obj/AirplaneSignalPrefs.bundle/AirplaneSignalPrefs differ diff --git a/airplanesignalprefs/.theos/obj/AirplaneSignalPrefs.bundle/AirplaneSignalPrefs.plist b/airplanesignalprefs/.theos/obj/AirplaneSignalPrefs.bundle/AirplaneSignalPrefs.plist index 74f5214..407d40a 100644 --- a/airplanesignalprefs/.theos/obj/AirplaneSignalPrefs.bundle/AirplaneSignalPrefs.plist +++ b/airplanesignalprefs/.theos/obj/AirplaneSignalPrefs.bundle/AirplaneSignalPrefs.plist @@ -170,6 +170,26 @@ 3000 + + cell + PSGroupCell + footerText + This feature allows to "force downgrade" network speed (LTE -> 3G [or 3G -> EDGE on older iDevices]) before enabling airplane mode, since signal strength might be better on slower network. + + + cell + PSSwitchCell + default + + defaults + com.joemerlino.airplanesignal + key + downgradenetwork + label + Downgrade network speed + PostNotification + com.joemerlino.airplanesignal.preferencechanged + cell PSGroupCell diff --git a/airplanesignalprefs/.theos/obj/AirplaneSignalPrefs.bundle/AirplaneSignalPrefs@2x.png b/airplanesignalprefs/.theos/obj/AirplaneSignalPrefs.bundle/AirplaneSignalPrefs@2x.png deleted file mode 100644 index 42daad8..0000000 Binary files a/airplanesignalprefs/.theos/obj/AirplaneSignalPrefs.bundle/AirplaneSignalPrefs@2x.png and /dev/null differ diff --git a/airplanesignalprefs/.theos/obj/arm64/AirplaneSignalPrefs.bundle/AirplaneSignalPrefs b/airplanesignalprefs/.theos/obj/arm64/AirplaneSignalPrefs.bundle/AirplaneSignalPrefs index e450c3b..57a0c39 100755 Binary files a/airplanesignalprefs/.theos/obj/arm64/AirplaneSignalPrefs.bundle/AirplaneSignalPrefs and b/airplanesignalprefs/.theos/obj/arm64/AirplaneSignalPrefs.bundle/AirplaneSignalPrefs differ diff --git a/airplanesignalprefs/.theos/obj/arm64/AirplaneSignalPrefs.mm.c366b8e0.o b/airplanesignalprefs/.theos/obj/arm64/AirplaneSignalPrefs.mm.f13eeb8a.o similarity index 99% rename from airplanesignalprefs/.theos/obj/arm64/AirplaneSignalPrefs.mm.c366b8e0.o rename to airplanesignalprefs/.theos/obj/arm64/AirplaneSignalPrefs.mm.f13eeb8a.o index 2b28698..40d503d 100644 Binary files a/airplanesignalprefs/.theos/obj/arm64/AirplaneSignalPrefs.mm.c366b8e0.o and b/airplanesignalprefs/.theos/obj/arm64/AirplaneSignalPrefs.mm.f13eeb8a.o differ diff --git a/airplanesignalprefs/.theos/obj/armv7/AirplaneSignalPrefs.bundle/AirplaneSignalPrefs b/airplanesignalprefs/.theos/obj/armv7/AirplaneSignalPrefs.bundle/AirplaneSignalPrefs index c4a0832..a198913 100755 Binary files a/airplanesignalprefs/.theos/obj/armv7/AirplaneSignalPrefs.bundle/AirplaneSignalPrefs and b/airplanesignalprefs/.theos/obj/armv7/AirplaneSignalPrefs.bundle/AirplaneSignalPrefs differ diff --git a/airplanesignalprefs/.theos/obj/armv7/AirplaneSignalPrefs.mm.1241849b.o b/airplanesignalprefs/.theos/obj/armv7/AirplaneSignalPrefs.mm.1241849b.o deleted file mode 100644 index 21f68ab..0000000 Binary files a/airplanesignalprefs/.theos/obj/armv7/AirplaneSignalPrefs.mm.1241849b.o and /dev/null differ diff --git a/airplanesignalprefs/.theos/obj/armv7/AirplaneSignalPrefs.mm.2b538da1.o b/airplanesignalprefs/.theos/obj/armv7/AirplaneSignalPrefs.mm.2b538da1.o new file mode 100644 index 0000000..34d5068 Binary files /dev/null and b/airplanesignalprefs/.theos/obj/armv7/AirplaneSignalPrefs.mm.2b538da1.o differ diff --git a/airplanesignalprefs/.theos/obj/armv7s/AirplaneSignalPrefs.bundle/AirplaneSignalPrefs b/airplanesignalprefs/.theos/obj/armv7s/AirplaneSignalPrefs.bundle/AirplaneSignalPrefs index 2844387..2720c60 100755 Binary files a/airplanesignalprefs/.theos/obj/armv7s/AirplaneSignalPrefs.bundle/AirplaneSignalPrefs and b/airplanesignalprefs/.theos/obj/armv7s/AirplaneSignalPrefs.bundle/AirplaneSignalPrefs differ diff --git a/airplanesignalprefs/.theos/obj/armv7s/AirplaneSignalPrefs.mm.d1bc5acf.o b/airplanesignalprefs/.theos/obj/armv7s/AirplaneSignalPrefs.mm.d1bc5acf.o deleted file mode 100644 index 4aeb397..0000000 Binary files a/airplanesignalprefs/.theos/obj/armv7s/AirplaneSignalPrefs.mm.d1bc5acf.o and /dev/null differ diff --git a/airplanesignalprefs/.theos/obj/armv7s/AirplaneSignalPrefs.mm.d39eb57c.o b/airplanesignalprefs/.theos/obj/armv7s/AirplaneSignalPrefs.mm.d39eb57c.o new file mode 100644 index 0000000..90ff388 Binary files /dev/null and b/airplanesignalprefs/.theos/obj/armv7s/AirplaneSignalPrefs.mm.d39eb57c.o differ diff --git a/airplanesignalprefs/Makefile b/airplanesignalprefs/Makefile index 577a2b9..73eec00 100644 --- a/airplanesignalprefs/Makefile +++ b/airplanesignalprefs/Makefile @@ -1,3 +1,8 @@ +TARGET := iphone:clang +SDKVERSION = 8.4 +TARGET_IPHONEOS_DEPLOYMENT_VERSION = 7.0 +ARCHS = armv7 armv7s arm64 + include theos/makefiles/common.mk BUNDLE_NAME = AirplaneSignalPrefs diff --git a/airplanesignalprefs/Resources/AirplaneSignalPrefs.plist b/airplanesignalprefs/Resources/AirplaneSignalPrefs.plist index 74f5214..407d40a 100644 --- a/airplanesignalprefs/Resources/AirplaneSignalPrefs.plist +++ b/airplanesignalprefs/Resources/AirplaneSignalPrefs.plist @@ -170,6 +170,26 @@ 3000 + + cell + PSGroupCell + footerText + This feature allows to "force downgrade" network speed (LTE -> 3G [or 3G -> EDGE on older iDevices]) before enabling airplane mode, since signal strength might be better on slower network. + + + cell + PSSwitchCell + default + + defaults + com.joemerlino.airplanesignal + key + downgradenetwork + label + Downgrade network speed + PostNotification + com.joemerlino.airplanesignal.preferencechanged + cell PSGroupCell diff --git a/airplanesignaltoggle/.theos/obj/AirplaneSignalToggle.bundle/AirplaneSignalToggle b/airplanesignaltoggle/.theos/obj/AirplaneSignalToggle.bundle/AirplaneSignalToggle index 27b5356..b391477 100755 Binary files a/airplanesignaltoggle/.theos/obj/AirplaneSignalToggle.bundle/AirplaneSignalToggle and b/airplanesignaltoggle/.theos/obj/AirplaneSignalToggle.bundle/AirplaneSignalToggle differ diff --git a/airplanesignaltoggle/.theos/obj/arm64/AirplaneSignalToggle.bundle/AirplaneSignalToggle b/airplanesignaltoggle/.theos/obj/arm64/AirplaneSignalToggle.bundle/AirplaneSignalToggle index 9030094..71b6ddb 100755 Binary files a/airplanesignaltoggle/.theos/obj/arm64/AirplaneSignalToggle.bundle/AirplaneSignalToggle and b/airplanesignaltoggle/.theos/obj/arm64/AirplaneSignalToggle.bundle/AirplaneSignalToggle differ diff --git a/airplanesignaltoggle/.theos/obj/arm64/Switch.x.cdaed394.o b/airplanesignaltoggle/.theos/obj/arm64/Switch.x.e9ab706b.o similarity index 99% rename from airplanesignaltoggle/.theos/obj/arm64/Switch.x.cdaed394.o rename to airplanesignaltoggle/.theos/obj/arm64/Switch.x.e9ab706b.o index 0150a4a..41b9c5e 100644 Binary files a/airplanesignaltoggle/.theos/obj/arm64/Switch.x.cdaed394.o and b/airplanesignaltoggle/.theos/obj/arm64/Switch.x.e9ab706b.o differ diff --git a/airplanesignaltoggle/.theos/obj/armv7/AirplaneSignalToggle.bundle/AirplaneSignalToggle b/airplanesignaltoggle/.theos/obj/armv7/AirplaneSignalToggle.bundle/AirplaneSignalToggle index 2391111..3405a7d 100755 Binary files a/airplanesignaltoggle/.theos/obj/armv7/AirplaneSignalToggle.bundle/AirplaneSignalToggle and b/airplanesignaltoggle/.theos/obj/armv7/AirplaneSignalToggle.bundle/AirplaneSignalToggle differ diff --git a/airplanesignaltoggle/.theos/obj/armv7/Switch.x.0b1e2b5c.o b/airplanesignaltoggle/.theos/obj/armv7/Switch.x.0b1e2b5c.o deleted file mode 100644 index 7537a59..0000000 Binary files a/airplanesignaltoggle/.theos/obj/armv7/Switch.x.0b1e2b5c.o and /dev/null differ diff --git a/airplanesignaltoggle/.theos/obj/armv7/Switch.x.7ebfd186.o b/airplanesignaltoggle/.theos/obj/armv7/Switch.x.7ebfd186.o new file mode 100644 index 0000000..843ae2e Binary files /dev/null and b/airplanesignaltoggle/.theos/obj/armv7/Switch.x.7ebfd186.o differ diff --git a/airplanesignaltoggle/.theos/obj/armv7s/AirplaneSignalToggle.bundle/AirplaneSignalToggle b/airplanesignaltoggle/.theos/obj/armv7s/AirplaneSignalToggle.bundle/AirplaneSignalToggle index 629f57f..3afa02a 100755 Binary files a/airplanesignaltoggle/.theos/obj/armv7s/AirplaneSignalToggle.bundle/AirplaneSignalToggle and b/airplanesignaltoggle/.theos/obj/armv7s/AirplaneSignalToggle.bundle/AirplaneSignalToggle differ diff --git a/airplanesignaltoggle/.theos/obj/armv7s/Switch.x.a29c2cef.o b/airplanesignaltoggle/.theos/obj/armv7s/Switch.x.e23d6086.o similarity index 86% rename from airplanesignaltoggle/.theos/obj/armv7s/Switch.x.a29c2cef.o rename to airplanesignaltoggle/.theos/obj/armv7s/Switch.x.e23d6086.o index 73c91ff..fb4a8bb 100644 Binary files a/airplanesignaltoggle/.theos/obj/armv7s/Switch.x.a29c2cef.o and b/airplanesignaltoggle/.theos/obj/armv7s/Switch.x.e23d6086.o differ diff --git a/airplanesignaltoggle/Makefile b/airplanesignaltoggle/Makefile index 7679b64..5dd65b5 100755 --- a/airplanesignaltoggle/Makefile +++ b/airplanesignaltoggle/Makefile @@ -1,3 +1,8 @@ +TARGET := iphone:clang +SDKVERSION = 8.4 +TARGET_IPHONEOS_DEPLOYMENT_VERSION = 7.0 +ARCHS = armv7 armv7s arm64 + include theos/makefiles/common.mk BUNDLE_NAME = AirplaneSignalToggle diff --git a/com.joemerlino.airplanesignal_0.0.1-4_iphoneos-arm.deb b/com.joemerlino.airplanesignal_0.0.1-4_iphoneos-arm.deb new file mode 100644 index 0000000..5553c6a Binary files /dev/null and b/com.joemerlino.airplanesignal_0.0.1-4_iphoneos-arm.deb differ