Procházet zdrojové kódy

Simplify home layout container hierarchy and expand content width.

This reduces nested panel fragmentation, removes redundant header wrappers, and rebalances sidebar/content spacing so the dashboard aligns more closely with the target reference layout.

Made-with: Cursor
huzaifahayat12 před 6 dny
rodič
revize
570d07b7cd
1 změnil soubory, kde provedl 30 přidání a 48 odebrání
  1. 30 48
      zoom_app/ViewController.swift

+ 30 - 48
zoom_app/ViewController.swift

@@ -691,14 +691,14 @@ class ViewController: NSViewController {
691 691
         content.translatesAutoresizingMaskIntoConstraints = false
692 692
 
693 693
         NSLayoutConstraint.activate([
694
-            shell.leadingAnchor.constraint(equalTo: root.leadingAnchor, constant: 8),
695
-            shell.trailingAnchor.constraint(equalTo: root.trailingAnchor, constant: -8),
694
+            shell.leadingAnchor.constraint(equalTo: root.leadingAnchor, constant: 4),
695
+            shell.trailingAnchor.constraint(equalTo: root.trailingAnchor, constant: -4),
696 696
             shell.topAnchor.constraint(equalTo: root.topAnchor, constant: 0),
697
-            shell.bottomAnchor.constraint(equalTo: root.bottomAnchor, constant: -8),
697
+            shell.bottomAnchor.constraint(equalTo: root.bottomAnchor, constant: -4),
698 698
             chromeColumn.leadingAnchor.constraint(equalTo: shell.leadingAnchor),
699 699
             chromeColumn.topAnchor.constraint(equalTo: shell.topAnchor),
700 700
             chromeColumn.bottomAnchor.constraint(equalTo: shell.bottomAnchor),
701
-            chromeColumn.widthAnchor.constraint(equalToConstant: 146),
701
+            chromeColumn.widthAnchor.constraint(equalToConstant: 128),
702 702
             chromeDivider.topAnchor.constraint(equalTo: chromeColumn.topAnchor),
703 703
             chromeDivider.bottomAnchor.constraint(equalTo: chromeColumn.bottomAnchor),
704 704
             chromeDivider.trailingAnchor.constraint(equalTo: chromeColumn.trailingAnchor),
@@ -790,11 +790,6 @@ class ViewController: NSViewController {
790 790
         panel.layer?.borderWidth = 1
791 791
         panel.layer?.borderColor = NSColor.white.withAlphaComponent(0.07).cgColor
792 792
         
793
-        let panelHeaderStrip = NSView()
794
-        panelHeaderStrip.wantsLayer = true
795
-        panelHeaderStrip.layer?.backgroundColor = NSColor.white.withAlphaComponent(0.03).cgColor
796
-        panelHeaderStrip.layer?.cornerRadius = 12
797
-
798 793
         let todaysDateFormatter = DateFormatter()
799 794
         todaysDateFormatter.dateFormat = "EEEE, MMM d"
800 795
         let panelHeader = makeLabel(todaysDateFormatter.string(from: Date()), size: 21, color: primaryText, weight: .semibold, centered: false)
@@ -821,18 +816,11 @@ class ViewController: NSViewController {
821 816
         openRecordings.layer?.borderWidth = 1
822 817
         openRecordings.layer?.borderColor = NSColor.white.withAlphaComponent(0.07).cgColor
823 818
 
824
-        let contentPanel = NSView()
825
-        contentPanel.wantsLayer = true
826
-        contentPanel.layer?.backgroundColor = contentShellBackground.cgColor
827
-        contentPanel.layer?.cornerRadius = 12
828
-        contentPanel.layer?.borderWidth = 1
829
-        contentPanel.layer?.borderColor = NSColor.white.withAlphaComponent(0.04).cgColor
830 819
         let contentColumn = NSView()
831 820
         contentColumn.translatesAutoresizingMaskIntoConstraints = false
832 821
         content.addSubview(topBar)
833 822
         content.addSubview(topBarDivider)
834
-        content.addSubview(contentPanel)
835
-        contentPanel.addSubview(contentColumn)
823
+        content.addSubview(contentColumn)
836 824
 
837 825
         [brandStack, leftTopBarCluster, rightTopBarCluster, searchPill, search].forEach {
838 826
             $0.translatesAutoresizingMaskIntoConstraints = false
@@ -844,13 +832,12 @@ class ViewController: NSViewController {
844 832
             $0.translatesAutoresizingMaskIntoConstraints = false
845 833
             topBar.addSubview($0)
846 834
         }
847
-        [welcome, timeTitle, dateTitle, actions, panel, panelHeaderStrip, panelHeader, meetingsStatus, noMeeting, meetingsScrollView, openRecordings].forEach {
835
+        [welcome, timeTitle, dateTitle, actions, panel, panelHeader, meetingsStatus, noMeeting, meetingsScrollView, openRecordings].forEach {
848 836
             $0.translatesAutoresizingMaskIntoConstraints = false
849 837
             contentColumn.addSubview($0)
850 838
         }
851 839
         topBar.translatesAutoresizingMaskIntoConstraints = false
852 840
         topBarDivider.translatesAutoresizingMaskIntoConstraints = false
853
-        contentPanel.translatesAutoresizingMaskIntoConstraints = false
854 841
         meetingsDocument.translatesAutoresizingMaskIntoConstraints = false
855 842
         meetingsStack.translatesAutoresizingMaskIntoConstraints = false
856 843
         meetingsScrollView.documentView = meetingsDocument
@@ -869,15 +856,10 @@ class ViewController: NSViewController {
869 856
             topBarDivider.trailingAnchor.constraint(equalTo: content.trailingAnchor),
870 857
             topBarDivider.heightAnchor.constraint(equalToConstant: 1),
871 858
 
872
-            contentPanel.topAnchor.constraint(equalTo: topBarDivider.bottomAnchor, constant: 6),
873
-            contentPanel.leadingAnchor.constraint(equalTo: content.leadingAnchor, constant: 8),
874
-            contentPanel.trailingAnchor.constraint(equalTo: content.trailingAnchor, constant: -8),
875
-            contentPanel.bottomAnchor.constraint(equalTo: content.bottomAnchor, constant: -8),
876
-
877
-            contentColumn.topAnchor.constraint(equalTo: contentPanel.topAnchor),
878
-            contentColumn.bottomAnchor.constraint(equalTo: contentPanel.bottomAnchor),
879
-            contentColumn.leadingAnchor.constraint(equalTo: contentPanel.leadingAnchor),
880
-            contentColumn.trailingAnchor.constraint(equalTo: contentPanel.trailingAnchor),
859
+            contentColumn.topAnchor.constraint(equalTo: topBarDivider.bottomAnchor, constant: 14),
860
+            contentColumn.bottomAnchor.constraint(equalTo: content.bottomAnchor, constant: -10),
861
+            contentColumn.leadingAnchor.constraint(equalTo: content.leadingAnchor, constant: 8),
862
+            contentColumn.trailingAnchor.constraint(equalTo: content.trailingAnchor, constant: -8),
881 863
 
882 864
             leftTopBarCluster.leadingAnchor.constraint(equalTo: topBar.leadingAnchor, constant: 40),
883 865
             leftTopBarCluster.centerYAnchor.constraint(equalTo: topBar.centerYAnchor),
@@ -896,7 +878,7 @@ class ViewController: NSViewController {
896 878
             profileChip.widthAnchor.constraint(equalToConstant: 34),
897 879
             profileChip.heightAnchor.constraint(equalToConstant: 34),
898 880
 
899
-            welcome.topAnchor.constraint(equalTo: contentColumn.topAnchor, constant: 22),
881
+            welcome.topAnchor.constraint(equalTo: contentColumn.topAnchor, constant: 18),
900 882
             welcome.centerXAnchor.constraint(equalTo: contentColumn.centerXAnchor),
901 883
 
902 884
             timeTitle.topAnchor.constraint(equalTo: welcome.bottomAnchor, constant: 12),
@@ -906,30 +888,25 @@ class ViewController: NSViewController {
906 888
 
907 889
             actions.topAnchor.constraint(equalTo: dateTitle.bottomAnchor, constant: 28),
908 890
             actions.centerXAnchor.constraint(equalTo: contentColumn.centerXAnchor),
909
-            actions.leadingAnchor.constraint(greaterThanOrEqualTo: contentColumn.leadingAnchor, constant: 18),
910
-            actions.trailingAnchor.constraint(lessThanOrEqualTo: contentColumn.trailingAnchor, constant: -18),
891
+            actions.leadingAnchor.constraint(greaterThanOrEqualTo: contentColumn.leadingAnchor, constant: 12),
892
+            actions.trailingAnchor.constraint(lessThanOrEqualTo: contentColumn.trailingAnchor, constant: -12),
911 893
             actions.heightAnchor.constraint(equalToConstant: 100),
912 894
 
913
-            panel.topAnchor.constraint(equalTo: actions.bottomAnchor, constant: 22),
914
-            panel.leadingAnchor.constraint(equalTo: contentColumn.leadingAnchor, constant: 26),
915
-            panel.trailingAnchor.constraint(equalTo: contentColumn.trailingAnchor, constant: -26),
916
-            panel.heightAnchor.constraint(equalToConstant: 316),
917
-            panel.bottomAnchor.constraint(lessThanOrEqualTo: contentColumn.bottomAnchor, constant: -24),
918
-            
919
-            panelHeaderStrip.topAnchor.constraint(equalTo: panel.topAnchor, constant: 10),
920
-            panelHeaderStrip.leadingAnchor.constraint(equalTo: panel.leadingAnchor, constant: 10),
921
-            panelHeaderStrip.trailingAnchor.constraint(equalTo: panel.trailingAnchor, constant: -10),
922
-            panelHeaderStrip.heightAnchor.constraint(equalToConstant: 44),
923
-
924
-            panelHeader.centerYAnchor.constraint(equalTo: panelHeaderStrip.centerYAnchor),
925
-            panelHeader.leadingAnchor.constraint(equalTo: panelHeaderStrip.leadingAnchor, constant: 14),
926
-            meetingsStatus.centerYAnchor.constraint(equalTo: panelHeaderStrip.centerYAnchor),
927
-            meetingsStatus.trailingAnchor.constraint(equalTo: panelHeaderStrip.trailingAnchor, constant: -14),
895
+            panel.topAnchor.constraint(equalTo: actions.bottomAnchor, constant: 18),
896
+            panel.leadingAnchor.constraint(equalTo: contentColumn.leadingAnchor, constant: 6),
897
+            panel.trailingAnchor.constraint(equalTo: contentColumn.trailingAnchor, constant: -6),
898
+            panel.heightAnchor.constraint(greaterThanOrEqualToConstant: 280),
899
+            panel.bottomAnchor.constraint(equalTo: contentColumn.bottomAnchor, constant: -14),
900
+
901
+            panelHeader.topAnchor.constraint(equalTo: panel.topAnchor, constant: 20),
902
+            panelHeader.leadingAnchor.constraint(equalTo: panel.leadingAnchor, constant: 16),
903
+            meetingsStatus.centerYAnchor.constraint(equalTo: panelHeader.centerYAnchor),
904
+            meetingsStatus.trailingAnchor.constraint(equalTo: panel.trailingAnchor, constant: -16),
928 905
             noMeeting.leadingAnchor.constraint(equalTo: panel.leadingAnchor, constant: 18),
929 906
             noMeeting.trailingAnchor.constraint(equalTo: panel.trailingAnchor, constant: -18),
930 907
             noMeeting.centerYAnchor.constraint(equalTo: panel.centerYAnchor),
931 908
 
932
-            meetingsScrollView.topAnchor.constraint(equalTo: panelHeaderStrip.bottomAnchor, constant: 10),
909
+            meetingsScrollView.topAnchor.constraint(equalTo: panelHeader.bottomAnchor, constant: 12),
933 910
             meetingsScrollView.leadingAnchor.constraint(equalTo: panel.leadingAnchor, constant: 14),
934 911
             meetingsScrollView.trailingAnchor.constraint(equalTo: panel.trailingAnchor, constant: -14),
935 912
             meetingsScrollView.bottomAnchor.constraint(equalTo: openRecordings.topAnchor, constant: -14),
@@ -1037,12 +1014,17 @@ class ViewController: NSViewController {
1037 1014
         }
1038 1015
 
1039 1016
         NSLayoutConstraint.activate([
1040
-            stack.topAnchor.constraint(equalTo: sidebar.topAnchor, constant: style == .home ? 8 : 18),
1041 1017
             stack.leadingAnchor.constraint(equalTo: sidebar.leadingAnchor, constant: 4),
1042 1018
             stack.trailingAnchor.constraint(equalTo: sidebar.trailingAnchor, constant: -4)
1043 1019
         ])
1044 1020
         if style == .home {
1021
+            NSLayoutConstraint.activate([
1022
+                stack.topAnchor.constraint(greaterThanOrEqualTo: sidebar.topAnchor, constant: 18),
1023
+                stack.centerYAnchor.constraint(equalTo: sidebar.centerYAnchor, constant: 30)
1024
+            ])
1045 1025
             stack.bottomAnchor.constraint(lessThanOrEqualTo: sidebar.bottomAnchor, constant: -18).isActive = true
1026
+        } else {
1027
+            stack.topAnchor.constraint(equalTo: sidebar.topAnchor, constant: 18).isActive = true
1046 1028
         }
1047 1029
 
1048 1030
         return sidebar