feat: 优化应用启动和指引窗口逻辑
添加 LSUIElement 配置使应用不显示在 Dock 中 重构指引窗口显示逻辑,改为直接打开新窗口 移除自动显示的主窗口,改为按需打开 更新菜单图标和背景颜色以匹配系统风格
This commit is contained in:
@@ -274,6 +274,7 @@
|
||||
SWIFT_EMIT_LOC_STRINGS = YES;
|
||||
SWIFT_UPCOMING_FEATURE_MEMBER_IMPORT_VISIBILITY = YES;
|
||||
SWIFT_VERSION = 5.0;
|
||||
INFOPLIST_KEY_LSUIElement = YES;
|
||||
};
|
||||
name = Debug;
|
||||
};
|
||||
@@ -306,6 +307,7 @@
|
||||
SWIFT_EMIT_LOC_STRINGS = YES;
|
||||
SWIFT_UPCOMING_FEATURE_MEMBER_IMPORT_VISIBILITY = YES;
|
||||
SWIFT_VERSION = 5.0;
|
||||
INFOPLIST_KEY_LSUIElement = YES;
|
||||
};
|
||||
name = Release;
|
||||
};
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import SwiftUI
|
||||
import AppKit
|
||||
|
||||
@main
|
||||
struct PowerBarApp: App {
|
||||
@@ -25,18 +26,6 @@ struct PowerBarApp: App {
|
||||
.foregroundColor(appState.isFunctionEnabled ? .green : .gray)
|
||||
}
|
||||
}
|
||||
// 添加主窗口用于显示指引界面
|
||||
WindowGroup {
|
||||
if !hasShownGuide {
|
||||
GuideView()
|
||||
.onDisappear {
|
||||
hasShownGuide = true
|
||||
}
|
||||
}
|
||||
}
|
||||
.windowStyle(.hiddenTitleBar)
|
||||
.defaultSize(width: 400, height: 400)
|
||||
.windowResizability(.contentSize)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -136,7 +125,7 @@ struct MenuContent: View {
|
||||
set: { _ in appState.toggleLaunchAtLogin() }
|
||||
)) {
|
||||
HStack {
|
||||
Image(systemName: "power.on.circle")
|
||||
Image(systemName: "power.circle")
|
||||
.frame(width: 20)
|
||||
Text("开机自动启动")
|
||||
}
|
||||
@@ -149,12 +138,8 @@ struct MenuContent: View {
|
||||
|
||||
// 显示指引界面选项
|
||||
Button("查看使用指南") {
|
||||
// 这里需要实现显示指引界面的逻辑
|
||||
// 我们可以使用 AppStorage 来控制指引界面的显示
|
||||
UserDefaults.standard.set(false, forKey: "hasShownGuide")
|
||||
// 重启应用或打开新窗口显示指引界面
|
||||
// 由于 macOS 应用的限制,我们可以提示用户重新启动应用查看指引
|
||||
NSAlert.showAlert(title: "使用指南", message: "请重启应用以查看使用指南,或在下次启动时自动显示。")
|
||||
// 直接打开指引窗口
|
||||
openGuideWindow()
|
||||
}
|
||||
.buttonStyle(.plain)
|
||||
.font(.caption)
|
||||
@@ -176,10 +161,29 @@ struct MenuContent: View {
|
||||
.frame(minWidth: 280)
|
||||
.background(
|
||||
RoundedRectangle(cornerRadius: 12)
|
||||
.fill(Color.white)
|
||||
.fill(Color(.windowBackgroundColor))
|
||||
.shadow(radius: 4)
|
||||
)
|
||||
}
|
||||
|
||||
// 打开指引窗口
|
||||
private func openGuideWindow() {
|
||||
let window = NSWindow(
|
||||
contentRect: NSRect(x: 0, y: 0, width: 400, height: 500),
|
||||
styleMask: [.titled, .closable, .resizable],
|
||||
backing: .buffered,
|
||||
defer: false
|
||||
)
|
||||
|
||||
// 设置窗口属性
|
||||
window.title = "PowerBar 使用指南"
|
||||
window.contentView = NSHostingView(rootView: GuideView())
|
||||
window.center()
|
||||
window.makeKeyAndOrderFront(nil)
|
||||
|
||||
// 记录已显示指引
|
||||
UserDefaults.standard.set(true, forKey: "hasShownGuide")
|
||||
}
|
||||
}
|
||||
|
||||
// 扩展 NSAlert,添加一个便捷方法来显示警报
|
||||
@@ -344,7 +348,7 @@ struct GuideView: View {
|
||||
.frame(width: 400, height: 500)
|
||||
.background(
|
||||
RoundedRectangle(cornerRadius: 12)
|
||||
.fill(Color.white)
|
||||
.fill(Color(.windowBackgroundColor))
|
||||
)
|
||||
.shadow(radius: 10)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user