mirror of
https://github.com/FBukovina/Atoll.git
synced 2026-10-28 23:54:32 +00:00
Restored files from old Mac, force pushing
This commit is contained in:
parent
5dd95228b8
commit
5040381840
126 changed files with 10431 additions and 67 deletions
85
DynamicIsland/components/Notch/DynamicIslandHeader.swift
Normal file
85
DynamicIsland/components/Notch/DynamicIslandHeader.swift
Normal file
|
|
@ -0,0 +1,85 @@
|
|||
//
|
||||
// DynamicIslandHeader.swift
|
||||
// DynamicIsland
|
||||
//
|
||||
// Created by Harsh Vardhan Goswami on 04/08/24.
|
||||
//
|
||||
|
||||
import Defaults
|
||||
import SwiftUI
|
||||
|
||||
struct DynamicIslandHeader: View {
|
||||
@EnvironmentObject var vm: DynamicIslandViewModel
|
||||
@ObservedObject var batteryModel = BatteryStatusViewModel.shared
|
||||
@ObservedObject var coordinator = DynamicIslandViewCoordinator.shared
|
||||
@StateObject var tvm = TrayDrop.shared
|
||||
var body: some View {
|
||||
HStack(spacing: 0) {
|
||||
HStack {
|
||||
if (!tvm.isEmpty || coordinator.alwaysShowTabs) && Defaults[.dynamicShelf] {
|
||||
TabSelectionView()
|
||||
} else if vm.notchState == .open {
|
||||
EmptyView()
|
||||
}
|
||||
}
|
||||
.frame(maxWidth: .infinity, alignment: .leading)
|
||||
.opacity(vm.notchState == .closed ? 0 : 1)
|
||||
.blur(radius: vm.notchState == .closed ? 20 : 0)
|
||||
.animation(.smooth.delay(0.1), value: vm.notchState)
|
||||
.zIndex(2)
|
||||
|
||||
if vm.notchState == .open {
|
||||
Rectangle()
|
||||
.fill(NSScreen.screens
|
||||
.first(where: { $0.localizedName == coordinator.selectedScreen })?.safeAreaInsets.top ?? 0 > 0 ? .black : .clear)
|
||||
.frame(width: vm.closedNotchSize.width)
|
||||
.mask {
|
||||
NotchShape()
|
||||
}
|
||||
}
|
||||
|
||||
HStack(spacing: 4) {
|
||||
if vm.notchState == .open {
|
||||
if Defaults[.settingsIconInNotch] {
|
||||
SettingsLink(label: {
|
||||
Capsule()
|
||||
.fill(.black)
|
||||
.frame(width: 30, height: 30)
|
||||
.overlay {
|
||||
Image(systemName: "gear")
|
||||
.foregroundColor(.white)
|
||||
.padding()
|
||||
.imageScale(.medium)
|
||||
}
|
||||
})
|
||||
.buttonStyle(PlainButtonStyle())
|
||||
}
|
||||
if Defaults[.showBatteryIndicator] {
|
||||
DynamicIslandBatteryView(
|
||||
batteryWidth: 30,
|
||||
isCharging: batteryModel.isCharging,
|
||||
isInLowPowerMode: batteryModel.isInLowPowerMode,
|
||||
isPluggedIn: batteryModel.isPluggedIn,
|
||||
levelBattery: batteryModel.levelBattery,
|
||||
maxCapacity: batteryModel.maxCapacity,
|
||||
timeToFullCharge: batteryModel.timeToFullCharge,
|
||||
isForNotification: false
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
.font(.system(.headline, design: .rounded))
|
||||
.frame(maxWidth: .infinity, alignment: .trailing)
|
||||
.opacity(vm.notchState == .closed ? 0 : 1)
|
||||
.blur(radius: vm.notchState == .closed ? 20 : 0)
|
||||
.animation(.smooth.delay(0.1), value: vm.notchState)
|
||||
.zIndex(2)
|
||||
}
|
||||
.foregroundColor(.gray)
|
||||
.environmentObject(vm)
|
||||
}
|
||||
}
|
||||
|
||||
#Preview {
|
||||
DynamicIslandHeader().environmentObject(DynamicIslandViewModel())
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue