Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Toolbar Item UI design enhancements #1932

Draft
wants to merge 1 commit into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CodeEdit/Features/ActivityViewer/ActivityViewer.swift
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ struct ActivityViewer: View {
TaskNotificationView(taskNotificationHandler: taskNotificationHandler)
.fixedSize()
}
.frame(minWidth: 0)
.fixedSize(horizontal: false, vertical: false)
.padding(.horizontal, 5)
.padding(.vertical, 1.5)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,9 @@
import SwiftUI

struct TaskNotificationView: View {
@Environment(\.controlActiveState)
private var activeState

@ObservedObject var taskNotificationHandler: TaskNotificationHandler
@State private var isPresented: Bool = false
@State var notification: TaskNotificationModel?
Expand Down Expand Up @@ -46,6 +49,7 @@ struct TaskNotificationView: View {
}
}
.transition(.opacity.combined(with: .move(edge: .trailing)))
.opacity(activeState == .inactive ? 0.4 : 1.0)
.padding(3)
.padding(-3)
.padding(.trailing, 3)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,9 @@ struct SchemeDropDownView: View {
@Environment(\.colorScheme)
private var colorScheme

@Environment(\.controlActiveState)
private var activeState

@State var isSchemePopOverPresented: Bool = false
@State private var isHoveringScheme: Bool = false

Expand All @@ -30,7 +33,9 @@ struct SchemeDropDownView: View {
? (workspaceFileManager?.workspaceItem.fileName() ?? "No Project found")
: workspaceName
)
.frame(minWidth: 0)
}
.opacity(activeState == .inactive ? 0.4 : 1.0)
.font(.subheadline)
.padding(.trailing, 11.5)
.padding(.horizontal, 2.5)
Expand Down
5 changes: 5 additions & 0 deletions CodeEdit/Features/ActivityViewer/Tasks/TaskDropDownView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,9 @@ struct TaskDropDownView: View {
@Environment(\.colorScheme)
private var colorScheme

@Environment(\.controlActiveState)
private var activeState

@ObservedObject var taskManager: TaskManager

@State private var isTaskPopOverPresented: Bool = false
Expand All @@ -28,8 +31,10 @@ struct TaskDropDownView: View {
}
} else {
Text("Create Tasks")
.frame(minWidth: 0)
}
}
.opacity(activeState == .inactive ? 0.4 : 1.0)
.font(.subheadline)
.padding(.trailing, 11.5)
.padding(.horizontal, 2.5)
Expand Down
1 change: 1 addition & 0 deletions CodeEdit/Features/ActivityViewer/Tasks/TaskView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ struct TaskView: View {
HStack(spacing: 5) {
Image(systemName: "gearshape")
Text(task.name)
.frame(minWidth: 0)
Spacer(minLength: 0)
}
.padding(.trailing, 7.5)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ extension CodeEditWindowController {
.flexibleSpace,
.activityViewer,
.flexibleSpace,
// .showLibrary,
.itemListTrackingSeparator,
.flexibleSpace,
.toggleLastSidebarItem
Expand All @@ -48,7 +49,8 @@ extension CodeEditWindowController {
.branchPicker,
.activityViewer,
.startTaskSidebarItem,
.stopTaskSidebarItem
.stopTaskSidebarItem,
.showLibrary
]
}

Expand Down Expand Up @@ -110,6 +112,20 @@ extension CodeEditWindowController {
accessibilityDescription: nil
)?.withSymbolConfiguration(.init(scale: .large))

return toolbarItem
case .showLibrary:
let toolbarItem = NSToolbarItem(itemIdentifier: NSToolbarItem.Identifier.showLibrary)
toolbarItem.label = "Test"
toolbarItem.paletteLabel = "Test"
toolbarItem.toolTip = "Test"
toolbarItem.isBordered = true
toolbarItem.target = self
toolbarItem.action = #selector(self.toggleLastPanel)
toolbarItem.image = NSImage(
systemSymbolName: "plus",
accessibilityDescription: nil
)

return toolbarItem
case .stopTaskSidebarItem:
let toolbarItem = NSToolbarItem(itemIdentifier: NSToolbarItem.Identifier.stopTaskSidebarItem)
Expand Down Expand Up @@ -138,20 +154,25 @@ extension CodeEditWindowController {
return toolbarItem
case .branchPicker:
let toolbarItem = NSToolbarItem(itemIdentifier: .branchPicker)

let view = NSHostingView(
rootView: ToolbarBranchPicker(
workspaceFileManager: workspace?.workspaceFileManager
)
)

toolbarItem.view = view
toolbarItem.visibilityPriority = .high

return toolbarItem
case .activityViewer:
let toolbarItem = NSToolbarItem(itemIdentifier: NSToolbarItem.Identifier.activityViewer)
toolbarItem.visibilityPriority = .user
toolbarItem.visibilityPriority = .low

guard let workspaceSettingsManager = workspace?.workspaceSettingsManager,
let taskNotificationHandler = workspace?.taskNotificationHandler,
let taskManager = workspace?.taskManager
let taskManager = workspace?.taskManager,
let window = self.window
else { return nil }

let view = NSHostingView(
Expand All @@ -163,17 +184,28 @@ extension CodeEditWindowController {
)
)

let weakWidth = view.widthAnchor.constraint(equalToConstant: 650)
weakWidth.priority = .defaultLow
let strongWidth = view.widthAnchor.constraint(greaterThanOrEqualToConstant: 200)
strongWidth.priority = .defaultHigh
let dynamicWidthConstraint = view.widthAnchor.constraint(equalToConstant: window.frame.width * 0.4)
dynamicWidthConstraint.priority = .defaultLow
dynamicWidthConstraint.isActive = true

let minWidthConstraint = view.widthAnchor.constraint(greaterThanOrEqualToConstant: 0)

NSLayoutConstraint.activate([
weakWidth,
strongWidth
dynamicWidthConstraint,
minWidthConstraint,
])

NotificationCenter.default.addObserver(
forName: NSWindow.didResizeNotification,
object: window,
queue: .main
) { [weak view] _ in
guard let window = view?.window else { return }
dynamicWidthConstraint.constant = window.frame.width * 0.4
}

toolbarItem.view = view

return toolbarItem
default:
return NSToolbarItem(itemIdentifier: itemIdentifier)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -139,4 +139,5 @@ extension NSToolbarItem.Identifier {
static let itemListTrackingSeparator = NSToolbarItem.Identifier("ItemListTrackingSeparator")
static let branchPicker: NSToolbarItem.Identifier = NSToolbarItem.Identifier("BranchPicker")
static let activityViewer: NSToolbarItem.Identifier = NSToolbarItem.Identifier("ActivityViewer")
static let showLibrary: NSToolbarItem.Identifier = NSToolbarItem.Identifier("ShowLibrary")
}
Loading