瀏覽代碼

Replace tutorial/background placeholders with schedule and calendar navigation.

This updates the sidebar labels and icons, removes the unused Tutorials page, and aligns window/page titles with the new planning-focused sections.

Made-with: Cursor
huzaifahayat12 3 月之前
父節點
當前提交
5d42e8edff
共有 1 個文件被更改,包括 19 次插入19 次删除
  1. 19 19
      meetings_app/ViewController.swift

+ 19 - 19
meetings_app/ViewController.swift

@@ -15,8 +15,7 @@ private enum SidebarPage: Int {
     case joinMeetings = 0
     case photo = 1
     case video = 2
-    case tutorials = 3
-    case settings = 4
+    case settings = 3
 }
 
 private enum ZoomJoinMode: Int {
@@ -1294,11 +1293,9 @@ private extension ViewController {
         case .joinMeetings:
             built = makeJoinMeetingsContent()
         case .photo:
-            built = makePlaceholderPage(title: "Photo", subtitle: "Backgrounds — choose a photo background for your meetings.")
+            built = makePlaceholderPage(title: "Schedule", subtitle: "Create and manage your upcoming meetings.")
         case .video:
-            built = makePlaceholderPage(title: "Video", subtitle: "Backgrounds — video background options.")
-        case .tutorials:
-            built = makePlaceholderPage(title: "Tutorials", subtitle: "Learn how to use the app.")
+            built = makePlaceholderPage(title: "Calendar", subtitle: "View meetings by date and track your plan.")
         case .settings:
             built = makePlaceholderPage(title: "Settings", subtitle: "Preferences and account options.")
         }
@@ -1428,11 +1425,9 @@ private extension ViewController {
         case .joinMeetings:
             title = "App for Google Meet"
         case .photo:
-            title = "Backgrounds — Photo"
+            title = "Schedule"
         case .video:
-            title = "Backgrounds — Video"
-        case .tutorials:
-            title = "Tutorials"
+            title = "Calendar"
         case .settings:
             title = "Settings"
         }
@@ -1473,7 +1468,7 @@ private extension ViewController {
 
     private func logoTemplateForSidebarPage(_ page: SidebarPage) -> Bool {
         switch page {
-        case .photo, .tutorials: return false
+        case .photo: return false
         case .joinMeetings, .video, .settings: return true
         }
     }
@@ -1525,17 +1520,14 @@ private extension ViewController {
         let joinRow = sidebarItem("Join Meetings", icon: "􀉣", page: .joinMeetings, logoImageName: "JoinMeetingsLogo", logoIconWidth: 24, logoHeightMultiplier: 56.0 / 52.0)
         menuStack.addArrangedSubview(joinRow)
         sidebarRowViews[.joinMeetings] = joinRow
-        menuStack.addArrangedSubview(sidebarSectionTitle("Backgrounds"))
-        let photoRow = sidebarItem("Photo", icon: "􀏂", page: .photo, logoImageName: "SidebarPhotoLogo", logoIconWidth: 24, logoHeightMultiplier: 82.0 / 62.0)
+        menuStack.addArrangedSubview(sidebarSectionTitle("Planning"))
+        let photoRow = sidebarItem("Schedule", icon: "􀏂", page: .photo, systemSymbolName: "clock.badge.checkmark")
         menuStack.addArrangedSubview(photoRow)
         sidebarRowViews[.photo] = photoRow
-        let videoRow = sidebarItem("Video", icon: "􀎚", page: .video, logoImageName: "SidebarVideoLogo", logoIconWidth: 28, logoHeightMultiplier: 52.0 / 60.0)
+        let videoRow = sidebarItem("Calendar", icon: "􀎚", page: .video, systemSymbolName: "calendar")
         menuStack.addArrangedSubview(videoRow)
         sidebarRowViews[.video] = videoRow
         menuStack.addArrangedSubview(sidebarSectionTitle("Additional"))
-        let tutorialsRow = sidebarItem("Tutorials", icon: "􀛩", page: .tutorials, logoImageName: "SidebarTutorialsLogo", logoIconWidth: 24, logoHeightMultiplier: 50.0 / 60.0)
-        menuStack.addArrangedSubview(tutorialsRow)
-        sidebarRowViews[.tutorials] = tutorialsRow
         let settingsRow = sidebarItem("Settings", icon: "􀍟", page: .settings, logoImageName: "SidebarSettingsLogo", logoIconWidth: 28, logoHeightMultiplier: 68.0 / 62.0, showsDisclosure: true)
         menuStack.addArrangedSubview(settingsRow)
         sidebarRowViews[.settings] = settingsRow
@@ -3768,7 +3760,7 @@ private extension ViewController {
         return field
     }
 
-    func sidebarItem(_ text: String, icon: String, page: SidebarPage, logoImageName: String? = nil, logoIconWidth: CGFloat = 18, logoHeightMultiplier: CGFloat = 1, logoTemplate: Bool = true, showsDisclosure: Bool = false) -> NSView {
+    func sidebarItem(_ text: String, icon: String, page: SidebarPage, logoImageName: String? = nil, systemSymbolName: String? = nil, logoIconWidth: CGFloat = 18, logoHeightMultiplier: CGFloat = 1, logoTemplate: Bool = true, showsDisclosure: Bool = false) -> NSView {
         let item = HoverButton(title: "", target: self, action: #selector(sidebarButtonClicked(_:)))
         item.tag = page.rawValue
         item.isBordered = false
@@ -3789,6 +3781,14 @@ private extension ViewController {
             imageView.imageAlignment = .alignCenter
             imageView.isEditable = false
             leadingView = imageView
+        } else if let symbolName = systemSymbolName, let symbol = NSImage(systemSymbolName: symbolName, accessibilityDescription: text) {
+            symbol.isTemplate = true
+            let imageView = NSImageView(image: symbol)
+            imageView.translatesAutoresizingMaskIntoConstraints = false
+            imageView.imageScaling = .scaleProportionallyDown
+            imageView.imageAlignment = .alignCenter
+            imageView.isEditable = false
+            leadingView = imageView
         } else {
             leadingView = textLabel(icon, font: typography.sidebarIcon, color: palette.textSecondary)
         }
@@ -3820,7 +3820,7 @@ private extension ViewController {
             constraints.append(titleLabel.trailingAnchor.constraint(lessThanOrEqualTo: item.trailingAnchor, constant: -10))
         }
 
-        if logoImageName != nil {
+        if logoImageName != nil || systemSymbolName != nil {
             let h = logoIconWidth * logoHeightMultiplier
             constraints.append(contentsOf: [
                 leadingView.widthAnchor.constraint(equalToConstant: logoIconWidth),