Files
steipete--codexbar/Sources/CodexBar/StatusItemController+StorageMenuCard.swift
T
2026-07-13 12:22:33 +08:00

27 lines
1.2 KiB
Swift

import AppKit
import CodexBarCore
extension StatusItemController {
@discardableResult
func addStorageMenuCardSection(to menu: NSMenu, provider: UsageProvider, width: CGFloat) -> Bool {
guard let storageText = self.store.storageFootprintText(for: provider) else { return false }
let storageSubmenu = self.makeStorageBreakdownSubmenu(provider: provider, width: width)
menu.addItem(Self.makeNativeStorageMenuCardItem(storageText: storageText, submenu: storageSubmenu))
return true
}
private static func makeNativeStorageMenuCardItem(storageText: String, submenu: NSMenu?) -> NSMenuItem {
let menuFont = NSFont.menuFont(ofSize: 0)
let title = NSMutableAttributedString(string: L("Storage"), attributes: [.font: menuFont])
title.append(NSAttributedString(
string: " \(storageText)",
attributes: [.font: menuFont, .foregroundColor: NSColor.secondaryLabelColor]))
let item = NSMenuItem(title: L("Storage"), action: nil, keyEquivalent: "")
item.attributedTitle = title
item.isEnabled = submenu != nil
item.representedObject = "menuCardStorage"
item.submenu = submenu
return item
}
}