aboutsummaryrefslogtreecommitdiff
path: root/Hotline/macOS/ServerView.swift
diff options
context:
space:
mode:
authorDustin Mierau <dustin@mierau.me>2025-11-11 20:25:40 -0800
committerDustin Mierau <dustin@mierau.me>2025-11-11 20:25:40 -0800
commit5a3d06c527cf03d68149449965fade0dd5ea0ed2 (patch)
tree73a1723fb3f99fd53cf23e87901043b7fd0a3cf1 /Hotline/macOS/ServerView.swift
parentb58129025413367d8237b3147a9fa96bd4e6924f (diff)
Fix warning in console about panel not restoring. Add popover for compact transfers list items. Remove push notification entitlement.
Diffstat (limited to 'Hotline/macOS/ServerView.swift')
-rw-r--r--Hotline/macOS/ServerView.swift28
1 files changed, 27 insertions, 1 deletions
diff --git a/Hotline/macOS/ServerView.swift b/Hotline/macOS/ServerView.swift
index 98ab976..399deba 100644
--- a/Hotline/macOS/ServerView.swift
+++ b/Hotline/macOS/ServerView.swift
@@ -425,6 +425,7 @@ struct ServerTransferRow: View {
@Environment(HotlineState.self) private var model: HotlineState
@State private var hovered: Bool = false
@State private var buttonHovered: Bool = false
+ @State private var detailsShown: Bool = false
var body: some View {
HStack(alignment: .center, spacing: 5) {
@@ -508,6 +509,7 @@ struct ServerTransferRow: View {
withAnimation(.snappy(duration: 0.25, extraBounce: 0.3)) {
self.hovered = hovered
}
+ self.detailsShown = hovered
}
.onTapGesture(count: 2) {
guard transfer.completed, let url = transfer.fileURL else {
@@ -516,7 +518,31 @@ struct ServerTransferRow: View {
NSWorkspace.shared.activateFileViewerSelecting([url])
}
- .help(self.formattedProgressHelp)
+ .popover(isPresented: .constant(self.detailsShown && !self.transfer.done), arrowEdge: .trailing) {
+ let rows: [(String, String)] = [
+ ("document", self.transfer.title),
+ ("info", self.transfer.displaySize),
+ (self.transfer.isUpload ? "arrow.up" : "arrow.down", self.transfer.displaySpeed ?? "--"),
+ ("clock", self.transfer.displayTimeRemaining ?? "--")
+ ]
+
+ Grid(alignment: .leading, horizontalSpacing: 8, verticalSpacing: 8) {
+ ForEach(rows, id: \.0) { imageName, label in
+ GridRow {
+ Image(systemName: imageName)
+ .resizable()
+ .scaledToFit()
+ .frame(width: 16, height: 16)
+ .gridColumnAlignment(.trailing)
+ Text(label)
+ .monospacedDigit()
+ .gridColumnAlignment(.leading)
+ }
+ }
+ }
+ .frame(minWidth: 200, maxWidth: 350, alignment: .leading)
+ .padding()
+ }
}
private var formattedProgressHelp: String {