style(mac): adjust session row padding and menu options
parent
d265a04b19
commit
6205b955da
|
|
@ -273,10 +273,9 @@ final class MenuSessionsInjector: NSObject, NSMenuDelegate {
|
||||||
|
|
||||||
private func buildSyncingMenu(for row: SessionRow) -> NSMenu {
|
private func buildSyncingMenu(for row: SessionRow) -> NSMenu {
|
||||||
let menu = NSMenu()
|
let menu = NSMenu()
|
||||||
let options: [(title: String, value: String?)] = [
|
let options: [(title: String, value: String)] = [
|
||||||
("On", "on"),
|
("On", "on"),
|
||||||
("Off", "off"),
|
("Off", "off"),
|
||||||
("Default", nil),
|
|
||||||
]
|
]
|
||||||
for (title, value) in options {
|
for (title, value) in options {
|
||||||
let item = NSMenuItem(title: title, action: #selector(self.patchSyncing(_:)), keyEquivalent: "")
|
let item = NSMenuItem(title: title, action: #selector(self.patchSyncing(_:)), keyEquivalent: "")
|
||||||
|
|
@ -286,28 +285,33 @@ final class MenuSessionsInjector: NSObject, NSMenuDelegate {
|
||||||
"value": value as Any,
|
"value": value as Any,
|
||||||
]
|
]
|
||||||
let isSelected: Bool = {
|
let isSelected: Bool = {
|
||||||
switch value {
|
if value == "on" { return row.syncing?.isOn == true }
|
||||||
case .none:
|
return row.syncing?.isOff == true
|
||||||
return row.syncing == nil
|
|
||||||
case "on":
|
|
||||||
return row.syncing?.isOn == true
|
|
||||||
case "off":
|
|
||||||
return row.syncing?.isOff == true
|
|
||||||
default:
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
}()
|
}()
|
||||||
item.state = isSelected ? .on : .off
|
item.state = isSelected ? .on : .off
|
||||||
menu.addItem(item)
|
menu.addItem(item)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if let syncing = row.syncing,
|
||||||
|
!syncing.isOn,
|
||||||
|
!syncing.isOff,
|
||||||
|
!syncing.label.isEmpty
|
||||||
|
{
|
||||||
|
menu.addItem(NSMenuItem.separator())
|
||||||
|
let current = NSMenuItem(title: "Sync \(syncing.label)", action: nil, keyEquivalent: "")
|
||||||
|
current.state = .on
|
||||||
|
current.isEnabled = false
|
||||||
|
menu.addItem(current)
|
||||||
|
}
|
||||||
|
|
||||||
return menu
|
return menu
|
||||||
}
|
}
|
||||||
|
|
||||||
private func buildThinkingMenu(for row: SessionRow) -> NSMenu {
|
private func buildThinkingMenu(for row: SessionRow) -> NSMenu {
|
||||||
let menu = NSMenu()
|
let menu = NSMenu()
|
||||||
let levels: [String?] = ["off", "minimal", "low", "medium", "high", nil]
|
let levels: [String] = ["off", "minimal", "low", "medium", "high"]
|
||||||
for level in levels {
|
for level in levels {
|
||||||
let title = (level ?? "default").capitalized
|
let title = level.capitalized
|
||||||
let item = NSMenuItem(title: title, action: #selector(self.patchThinking(_:)), keyEquivalent: "")
|
let item = NSMenuItem(title: title, action: #selector(self.patchThinking(_:)), keyEquivalent: "")
|
||||||
item.target = self
|
item.target = self
|
||||||
item.representedObject = [
|
item.representedObject = [
|
||||||
|
|
@ -322,9 +326,9 @@ final class MenuSessionsInjector: NSObject, NSMenuDelegate {
|
||||||
|
|
||||||
private func buildVerboseMenu(for row: SessionRow) -> NSMenu {
|
private func buildVerboseMenu(for row: SessionRow) -> NSMenu {
|
||||||
let menu = NSMenu()
|
let menu = NSMenu()
|
||||||
let levels: [String?] = ["on", "off", nil]
|
let levels: [String] = ["on", "off"]
|
||||||
for level in levels {
|
for level in levels {
|
||||||
let title = (level ?? "default").capitalized
|
let title = level.capitalized
|
||||||
let item = NSMenuItem(title: title, action: #selector(self.patchVerbose(_:)), keyEquivalent: "")
|
let item = NSMenuItem(title: title, action: #selector(self.patchVerbose(_:)), keyEquivalent: "")
|
||||||
item.target = self
|
item.target = self
|
||||||
item.representedObject = [
|
item.representedObject = [
|
||||||
|
|
|
||||||
|
|
@ -15,9 +15,9 @@ struct SessionMenuLabelView: View {
|
||||||
let row: SessionRow
|
let row: SessionRow
|
||||||
let width: CGFloat
|
let width: CGFloat
|
||||||
@Environment(\.menuItemHighlighted) private var isHighlighted
|
@Environment(\.menuItemHighlighted) private var isHighlighted
|
||||||
private let paddingLeading: CGFloat = 22
|
private let paddingLeading: CGFloat = 24
|
||||||
private let paddingTrailing: CGFloat = 14
|
private let paddingTrailing: CGFloat = 16
|
||||||
private let barHeight: CGFloat = 5
|
private let barHeight: CGFloat = 6
|
||||||
|
|
||||||
private var primaryTextColor: Color {
|
private var primaryTextColor: Color {
|
||||||
self.isHighlighted ? Color(nsColor: .selectedMenuItemTextColor) : .primary
|
self.isHighlighted ? Color(nsColor: .selectedMenuItemTextColor) : .primary
|
||||||
|
|
@ -28,7 +28,7 @@ struct SessionMenuLabelView: View {
|
||||||
}
|
}
|
||||||
|
|
||||||
var body: some View {
|
var body: some View {
|
||||||
VStack(alignment: .leading, spacing: 6) {
|
VStack(alignment: .leading, spacing: 7) {
|
||||||
ContextUsageBar(
|
ContextUsageBar(
|
||||||
usedTokens: row.tokens.total,
|
usedTokens: row.tokens.total,
|
||||||
contextTokens: row.tokens.contextTokens,
|
contextTokens: row.tokens.contextTokens,
|
||||||
|
|
@ -58,7 +58,7 @@ struct SessionMenuLabelView: View {
|
||||||
.padding(.leading, 2)
|
.padding(.leading, 2)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.padding(.vertical, 6)
|
.padding(.vertical, 8)
|
||||||
.padding(.leading, self.paddingLeading)
|
.padding(.leading, self.paddingLeading)
|
||||||
.padding(.trailing, self.paddingTrailing)
|
.padding(.trailing, self.paddingTrailing)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue