diff --git a/layout/Applications/Helium.app/Info.plist b/layout/Applications/Helium.app/Info.plist index 0fb9957..b6290e2 100644 --- a/layout/Applications/Helium.app/Info.plist +++ b/layout/Applications/Helium.app/Info.plist @@ -44,8 +44,6 @@ CFBundleURLTypes - CFBundleTypeRole - Editor CFBundleURLName com.leemin.helium CFBundleURLSchemes @@ -54,6 +52,17 @@ + UIApplicationShortcutItems + + + UIApplicationShortcutItemIconSymbolName + switch.2 + UIApplicationShortcutItemTitle + Toggle HUD + UIApplicationShortcutItemType + com.leemin.helium.shortcut.toggle-hud + + LSApplicationCategoryType public.app-category.developer-tools CFBundleLocalizations diff --git a/layout/Applications/Helium.app/en.lproj/InfoPlist.strings b/layout/Applications/Helium.app/en.lproj/InfoPlist.strings new file mode 100644 index 0000000..731ddcd --- /dev/null +++ b/layout/Applications/Helium.app/en.lproj/InfoPlist.strings @@ -0,0 +1 @@ +"Toggle HUD" = "Toggle HUD"; \ No newline at end of file diff --git a/layout/Applications/Helium.app/zh-Hans.lproj/InfoPlist.strings b/layout/Applications/Helium.app/zh-Hans.lproj/InfoPlist.strings new file mode 100644 index 0000000..d305dc4 --- /dev/null +++ b/layout/Applications/Helium.app/zh-Hans.lproj/InfoPlist.strings @@ -0,0 +1 @@ +"Toggle HUD" = "打开/关闭悬浮窗"; \ No newline at end of file diff --git a/src/app/MainApplicationDelegate.mm b/src/app/MainApplicationDelegate.mm index d8fe443..6a99861 100644 --- a/src/app/MainApplicationDelegate.mm +++ b/src/app/MainApplicationDelegate.mm @@ -2,8 +2,10 @@ #import "MainApplication.h" #import "Helium-Swift.h" +#import "../hud/HUDHelper.h" #import "../extensions/FontUtils.h" #import "../extensions/Weather/HWeatherController.h" +#import "../helpers/private_headers/UIApplication+Private.h" @implementation MainApplicationDelegate @@ -32,4 +34,30 @@ - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:( return YES; } +- (void)application:(UIApplication *)application performActionForShortcutItem:(UIApplicationShortcutItem *)shortcutItem completionHandler:(void (^)(BOOL succeeded))completionHandler { + if ([shortcutItem.type isEqualToString:@"com.leemin.helium.shortcut.toggle-hud"]) { + SetHUDEnabled(!IsHUDEnabled()); + [[UIApplication sharedApplication] suspend]; + } +} + +- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary *)options { + if ([url.scheme isEqualToString:@"helium"]) { + if ([url.host isEqualToString:@"toggle"]) { + SetHUDEnabled(!IsHUDEnabled()); + [[UIApplication sharedApplication] suspend]; + return YES; + } else if ([url.host isEqualToString:@"on"]) { + SetHUDEnabled(true); + [[UIApplication sharedApplication] suspend]; + return YES; + } else if ([url.host isEqualToString:@"off"]) { + SetHUDEnabled(false); + [[UIApplication sharedApplication] suspend]; + return YES; + } + } + return NO; +} + @end \ No newline at end of file diff --git a/src/views/navigation/HomePageView.swift b/src/views/navigation/HomePageView.swift index fc085fe..9aaf9b7 100644 --- a/src/views/navigation/HomePageView.swift +++ b/src/views/navigation/HomePageView.swift @@ -74,28 +74,14 @@ struct HomePageView: View { .onAppear { #if !targetEnvironment(simulator) isNowEnabled = IsHUDEnabledBridger() + NotificationCenter.default.addObserver(forName: UIApplication.didBecomeActiveNotification, object: nil, queue: .main) { _ in + isNowEnabled = IsHUDEnabledBridger() + } #endif if UserDefaults.standard.string(forKey: "dateLocale", forPath: USER_DEFAULTS_PATH) == nil { UserDefaults.standard.setValue(Locale.current.languageCode!, forKey: "dateLocale", forPath: USER_DEFAULTS_PATH) } } - .onOpenURL(perform: { url in - let _ = FileManager.default - // MARK: URL Schemes - if url.absoluteString == "helium://toggle" { - #if !targetEnvironment(simulator) - toggleHUD(!isNowEnabled) - #endif - } else if url.absoluteString == "helium://on" { - #if !targetEnvironment(simulator) - toggleHUD(true) - #endif - } else if url.absoluteString == "helium://off" { - #if !targetEnvironment(simulator) - toggleHUD(false) - #endif - } - }) .navigationTitle(Text(NSLocalizedString("Helium", comment: ""))) } .navigationViewStyle(StackNavigationViewStyle())