|
|
@@ -117,6 +117,10 @@ final class DashboardView: NSView, NSTextFieldDelegate {
|
|
117
|
117
|
private let savedJobsStack = NSStackView()
|
|
118
|
118
|
private let settingsPageContainer = NSView()
|
|
119
|
119
|
private let themeControl = NSSegmentedControl()
|
|
|
120
|
+ private let cvMakerPageContainer = NSView()
|
|
|
121
|
+ private lazy var cvMakerPageView: CVMakerPageView = {
|
|
|
122
|
+ CVMakerPageView()
|
|
|
123
|
+ }()
|
|
120
|
124
|
|
|
121
|
125
|
private var currentSidebarItems: [SidebarItem] = []
|
|
122
|
126
|
private var selectedSidebarIndex: Int = 0
|
|
|
@@ -1073,9 +1077,11 @@ final class DashboardView: NSView, NSTextFieldDelegate {
|
|
1073
|
1077
|
nonHomeGenericContainer.translatesAutoresizingMaskIntoConstraints = false
|
|
1074
|
1078
|
savedJobsPageContainer.translatesAutoresizingMaskIntoConstraints = false
|
|
1075
|
1079
|
settingsPageContainer.translatesAutoresizingMaskIntoConstraints = false
|
|
|
1080
|
+ cvMakerPageContainer.translatesAutoresizingMaskIntoConstraints = false
|
|
1076
|
1081
|
nonHomeHost.addSubview(nonHomeGenericContainer)
|
|
1077
|
1082
|
nonHomeHost.addSubview(savedJobsPageContainer)
|
|
1078
|
1083
|
nonHomeHost.addSubview(settingsPageContainer)
|
|
|
1084
|
+ nonHomeHost.addSubview(cvMakerPageContainer)
|
|
1079
|
1085
|
|
|
1080
|
1086
|
NSLayoutConstraint.activate([
|
|
1081
|
1087
|
nonHomeGenericContainer.leadingAnchor.constraint(equalTo: nonHomeHost.leadingAnchor),
|
|
|
@@ -1091,7 +1097,12 @@ final class DashboardView: NSView, NSTextFieldDelegate {
|
|
1091
|
1097
|
settingsPageContainer.leadingAnchor.constraint(equalTo: nonHomeHost.leadingAnchor),
|
|
1092
|
1098
|
settingsPageContainer.trailingAnchor.constraint(equalTo: nonHomeHost.trailingAnchor),
|
|
1093
|
1099
|
settingsPageContainer.topAnchor.constraint(equalTo: nonHomeHost.topAnchor),
|
|
1094
|
|
- settingsPageContainer.bottomAnchor.constraint(equalTo: nonHomeHost.bottomAnchor)
|
|
|
1100
|
+ settingsPageContainer.bottomAnchor.constraint(equalTo: nonHomeHost.bottomAnchor),
|
|
|
1101
|
+
|
|
|
1102
|
+ cvMakerPageContainer.leadingAnchor.constraint(equalTo: nonHomeHost.leadingAnchor),
|
|
|
1103
|
+ cvMakerPageContainer.trailingAnchor.constraint(equalTo: nonHomeHost.trailingAnchor),
|
|
|
1104
|
+ cvMakerPageContainer.topAnchor.constraint(equalTo: nonHomeHost.topAnchor),
|
|
|
1105
|
+ cvMakerPageContainer.bottomAnchor.constraint(equalTo: nonHomeHost.bottomAnchor)
|
|
1095
|
1106
|
])
|
|
1096
|
1107
|
|
|
1097
|
1108
|
nonHomeTitleLabel.font = .systemFont(ofSize: 22, weight: .bold)
|
|
|
@@ -1185,6 +1196,22 @@ final class DashboardView: NSView, NSTextFieldDelegate {
|
|
1185
|
1196
|
])
|
|
1186
|
1197
|
|
|
1187
|
1198
|
configureSettingsPage()
|
|
|
1199
|
+ configureCVMakerPage()
|
|
|
1200
|
+ }
|
|
|
1201
|
+
|
|
|
1202
|
+ private func configureCVMakerPage() {
|
|
|
1203
|
+ cvMakerPageContainer.wantsLayer = true
|
|
|
1204
|
+ cvMakerPageContainer.layer?.backgroundColor = Theme.mainHostBackground.cgColor
|
|
|
1205
|
+ cvMakerPageContainer.isHidden = true
|
|
|
1206
|
+
|
|
|
1207
|
+ cvMakerPageView.translatesAutoresizingMaskIntoConstraints = false
|
|
|
1208
|
+ cvMakerPageContainer.addSubview(cvMakerPageView)
|
|
|
1209
|
+ NSLayoutConstraint.activate([
|
|
|
1210
|
+ cvMakerPageView.leadingAnchor.constraint(equalTo: cvMakerPageContainer.leadingAnchor),
|
|
|
1211
|
+ cvMakerPageView.trailingAnchor.constraint(equalTo: cvMakerPageContainer.trailingAnchor),
|
|
|
1212
|
+ cvMakerPageView.topAnchor.constraint(equalTo: cvMakerPageContainer.topAnchor),
|
|
|
1213
|
+ cvMakerPageView.bottomAnchor.constraint(equalTo: cvMakerPageContainer.bottomAnchor)
|
|
|
1214
|
+ ])
|
|
1188
|
1215
|
}
|
|
1189
|
1216
|
|
|
1190
|
1217
|
private func configureSettingsPage() {
|
|
|
@@ -1415,19 +1442,26 @@ final class DashboardView: NSView, NSTextFieldDelegate {
|
|
1415
|
1442
|
return currentSidebarItems[index].title == "Settings"
|
|
1416
|
1443
|
}
|
|
1417
|
1444
|
|
|
|
1445
|
+ private func isCVMakerSidebarIndex(_ index: Int) -> Bool {
|
|
|
1446
|
+ guard index >= 0, index < currentSidebarItems.count else { return false }
|
|
|
1447
|
+ return currentSidebarItems[index].title == "CV Maker"
|
|
|
1448
|
+ }
|
|
|
1449
|
+
|
|
1418
|
1450
|
private func updateMainContentVisibility() {
|
|
1419
|
1451
|
let home = isHomeSidebarIndex(selectedSidebarIndex)
|
|
1420
|
1452
|
let savedJobs = isSavedJobsSidebarIndex(selectedSidebarIndex)
|
|
1421
|
1453
|
let settings = isSettingsSidebarIndex(selectedSidebarIndex)
|
|
|
1454
|
+ let cvMaker = isCVMakerSidebarIndex(selectedSidebarIndex)
|
|
1422
|
1455
|
mainOverlay.isHidden = !home
|
|
1423
|
1456
|
nonHomeHost.isHidden = home
|
|
1424
|
|
- nonHomeGenericContainer.isHidden = savedJobs || settings
|
|
|
1457
|
+ nonHomeGenericContainer.isHidden = savedJobs || settings || cvMaker
|
|
1425
|
1458
|
savedJobsPageContainer.isHidden = !savedJobs
|
|
1426
|
1459
|
settingsPageContainer.isHidden = !settings
|
|
|
1460
|
+ cvMakerPageContainer.isHidden = !cvMaker
|
|
1427
|
1461
|
if !home, selectedSidebarIndex < currentSidebarItems.count {
|
|
1428
|
1462
|
if savedJobs {
|
|
1429
|
1463
|
reloadSavedJobsListings()
|
|
1430
|
|
- } else if settings {
|
|
|
1464
|
+ } else if settings || cvMaker {
|
|
1431
|
1465
|
window?.makeFirstResponder(nil)
|
|
1432
|
1466
|
} else {
|
|
1433
|
1467
|
nonHomeTitleLabel.stringValue = currentSidebarItems[selectedSidebarIndex].title
|