1
0
mirror of https://github.com/nicoverbruggen/phpmon.git synced 2025-12-22 03:20:07 +01:00

👌 Even more cleanup

This commit is contained in:
2023-11-07 18:04:13 +01:00
parent a634d083a6
commit 3b23ce7805

View File

@@ -77,58 +77,12 @@ struct PhpVersionManagerView: View {
var body: some View { var body: some View {
VStack { VStack {
HStack(alignment: .center, spacing: 15) { header.padding(10)
Image(systemName: "arrow.down.to.line.circle.fill")
.resizable()
.frame(width: 40, height: 40)
.foregroundColor(Color.blue)
.padding(12)
VStack(alignment: .leading, spacing: 5) {
Text("phpman.description".localizedForSwiftUI)
.font(.system(size: 12))
.frame(maxWidth: .infinity, alignment: .leading)
Text("phpman.disclaimer".localizedForSwiftUI)
.font(.system(size: 12))
.foregroundColor(.gray)
.frame(maxWidth: .infinity, alignment: .leading)
}
}
.padding(10)
if self.hasUpdates { if self.hasUpdates {
Divider() hasUpdatesView
HStack(alignment: .center, spacing: 15) {
Text("phpman.has_updates.description".localizedForSwiftUI)
.foregroundColor(.gray)
.font(.system(size: 11))
Button("phpman.has_updates.button".localizedForSwiftUI, action: {
Task { await self.upgradeAll(self.formulae.upgradeable) }
})
.focusable(false)
.disabled(self.status.busy)
}
.padding(10)
} else { } else {
Divider() noUpdatesView
HStack(alignment: .center, spacing: 15) {
Button {
Task { await self.reload() }
} label: {
Image(systemName: "arrow.clockwise")
.buttonStyle(.automatic)
.controlSize(.large)
}
.focusable(false)
.disabled(self.status.busy)
Text("phpman.refresh.button.description".localizedForSwiftUI)
.foregroundColor(.gray)
.font(.system(size: 11))
}
.padding(10)
} }
BlockingOverlayView( BlockingOverlayView(
@@ -168,7 +122,68 @@ struct PhpVersionManagerView: View {
}.frame(width: 600, height: 600) }.frame(width: 600, height: 600)
} }
// MARK: View Functions // MARK: View Variables
private var header: some View {
HStack(alignment: .center, spacing: 15) {
Image(systemName: "arrow.down.to.line.circle.fill")
.resizable()
.frame(width: 40, height: 40)
.foregroundColor(Color.blue)
.padding(12)
VStack(alignment: .leading, spacing: 5) {
Text("phpman.description".localizedForSwiftUI)
.font(.system(size: 12))
.frame(maxWidth: .infinity, alignment: .leading)
Text("phpman.disclaimer".localizedForSwiftUI)
.font(.system(size: 12))
.foregroundColor(.gray)
.frame(maxWidth: .infinity, alignment: .leading)
}
}
}
private var hasUpdatesView: some View {
Group {
Divider()
HStack(alignment: .center, spacing: 15) {
Text("phpman.has_updates.description".localizedForSwiftUI)
.foregroundColor(.gray)
.font(.system(size: 11))
Button("phpman.has_updates.button".localizedForSwiftUI, action: {
Task { await self.upgradeAll(self.formulae.upgradeable) }
})
.focusable(false)
.disabled(self.status.busy)
}
.padding(10)
}
}
private var noUpdatesView: some View {
Group {
Divider()
HStack(alignment: .center, spacing: 15) {
Button {
Task { await self.reload() }
} label: {
Image(systemName: "arrow.clockwise")
.buttonStyle(.automatic)
.controlSize(.large)
}
.focusable(false)
.disabled(self.status.busy)
Text("phpman.refresh.button.description".localizedForSwiftUI)
.foregroundColor(.gray)
.font(.system(size: 11))
}
.padding(10)
}
}
private var prereleaseBadge: some View { private var prereleaseBadge: some View {
Text("phpman.version.prerelease".localized.uppercased()) Text("phpman.version.prerelease".localized.uppercased())
@@ -181,6 +196,16 @@ struct PhpVersionManagerView: View {
.fixedSize(horizontal: true, vertical: true) .fixedSize(horizontal: true, vertical: true)
} }
// MARK: View Builders
private func listContent(for formula: BrewPhpFormula) -> some View {
HStack(alignment: .center, spacing: 7.0) {
formulaIcon(for: formula)
formulaDescription(for: formula)
formulaButtons(for: formula)
}
}
private func formulaButtons(for formula: BrewPhpFormula) -> some View { private func formulaButtons(for formula: BrewPhpFormula) -> some View {
HStack { HStack {
if !formula.healthy { if !formula.healthy {
@@ -245,14 +270,6 @@ struct PhpVersionManagerView: View {
.foregroundColor(formula.iconColor) .foregroundColor(formula.iconColor)
.padding(.horizontal, 5) .padding(.horizontal, 5)
} }
private func listContent(for formula: BrewPhpFormula) -> some View {
HStack(alignment: .center, spacing: 7.0) {
formulaIcon(for: formula)
formulaDescription(for: formula)
formulaButtons(for: formula)
}
}
} }
#Preview { #Preview {