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())