mirror of
https://github.com/XcodesOrg/XcodesApp.git
synced 2026-03-25 08:55:46 +00:00
adjusted shellscript, implemented collapsablelist preference, changed Dev Team back, adjusted localisations
This commit is contained in:
parent
c68f7ce180
commit
061baa568b
7 changed files with 120 additions and 57 deletions
|
|
@ -848,10 +848,12 @@
|
|||
/* Begin PBXShellScriptBuildPhase section */
|
||||
05EACA532E76D21100CF1F9D /* Fix libfido2 structure */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
alwaysOutOfDate = 1;
|
||||
name = "Fix libfido2 structure";
|
||||
shellPath = /bin/sh;
|
||||
shellScript = (
|
||||
"/Users/genesis/Coding/XCode/OpenSourceContributions/XcodesApp/Scripts/fix_libfido2_framework.sh",
|
||||
"./Scripts/fix_libfido2_framework.sh",
|
||||
"",
|
||||
"",
|
||||
);
|
||||
};
|
||||
|
|
@ -874,6 +876,8 @@
|
|||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
);
|
||||
};
|
||||
/* End PBXShellScriptBuildPhase section */
|
||||
|
|
@ -1060,6 +1064,7 @@
|
|||
COPY_PHASE_STRIP = NO;
|
||||
DEAD_CODE_STRIPPING = YES;
|
||||
DEBUG_INFORMATION_FORMAT = dwarf;
|
||||
DEVELOPMENT_TEAM = ZU6GR6B2FY;
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
ENABLE_TESTABILITY = YES;
|
||||
ENABLE_USER_SCRIPT_SANDBOXING = NO;
|
||||
|
|
@ -1102,7 +1107,7 @@
|
|||
CURRENT_PROJECT_VERSION = 33;
|
||||
DEAD_CODE_STRIPPING = YES;
|
||||
DEVELOPMENT_ASSET_PATHS = "\"Xcodes/Preview Content\"";
|
||||
DEVELOPMENT_TEAM = "";
|
||||
DEVELOPMENT_TEAM = ZU6GR6B2FY;
|
||||
ENABLE_HARDENED_RUNTIME = NO;
|
||||
ENABLE_PREVIEWS = YES;
|
||||
INFOPLIST_FILE = Xcodes/Resources/Info.plist;
|
||||
|
|
@ -1152,7 +1157,7 @@
|
|||
CODE_SIGN_STYLE = Automatic;
|
||||
CREATE_INFOPLIST_SECTION_IN_BINARY = YES;
|
||||
DEAD_CODE_STRIPPING = YES;
|
||||
DEVELOPMENT_TEAM = 9NP473RSFG;
|
||||
DEVELOPMENT_TEAM = ZU6GR6B2FY;
|
||||
ENABLE_HARDENED_RUNTIME = YES;
|
||||
INFOPLIST_FILE = "$(SRCROOT)/$(TARGET_NAME)/Info.plist";
|
||||
MARKETING_VERSION = 2.0.0;
|
||||
|
|
@ -1179,7 +1184,7 @@
|
|||
CODE_SIGN_STYLE = Manual;
|
||||
CREATE_INFOPLIST_SECTION_IN_BINARY = YES;
|
||||
DEAD_CODE_STRIPPING = YES;
|
||||
DEVELOPMENT_TEAM = "";
|
||||
DEVELOPMENT_TEAM = ZU6GR6B2FY;
|
||||
ENABLE_HARDENED_RUNTIME = NO;
|
||||
INFOPLIST_FILE = "$(SRCROOT)/$(TARGET_NAME)/Info.plist";
|
||||
MARKETING_VERSION = 2.0.0;
|
||||
|
|
@ -1207,7 +1212,7 @@
|
|||
CODE_SIGN_STYLE = Automatic;
|
||||
CREATE_INFOPLIST_SECTION_IN_BINARY = YES;
|
||||
DEAD_CODE_STRIPPING = YES;
|
||||
DEVELOPMENT_TEAM = 9NP473RSFG;
|
||||
DEVELOPMENT_TEAM = ZU6GR6B2FY;
|
||||
ENABLE_HARDENED_RUNTIME = YES;
|
||||
INFOPLIST_FILE = "$(SRCROOT)/$(TARGET_NAME)/Info.plist";
|
||||
MARKETING_VERSION = 2.0.0;
|
||||
|
|
@ -1264,6 +1269,7 @@
|
|||
COPY_PHASE_STRIP = NO;
|
||||
DEAD_CODE_STRIPPING = YES;
|
||||
DEBUG_INFORMATION_FORMAT = dwarf;
|
||||
DEVELOPMENT_TEAM = ZU6GR6B2FY;
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
ENABLE_TESTABILITY = YES;
|
||||
ENABLE_USER_SCRIPT_SANDBOXING = NO;
|
||||
|
|
@ -1333,6 +1339,7 @@
|
|||
COPY_PHASE_STRIP = NO;
|
||||
DEAD_CODE_STRIPPING = YES;
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
DEVELOPMENT_TEAM = ZU6GR6B2FY;
|
||||
ENABLE_NS_ASSERTIONS = NO;
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
ENABLE_USER_SCRIPT_SANDBOXING = NO;
|
||||
|
|
@ -1368,7 +1375,7 @@
|
|||
CURRENT_PROJECT_VERSION = 33;
|
||||
DEAD_CODE_STRIPPING = YES;
|
||||
DEVELOPMENT_ASSET_PATHS = "\"Xcodes/Preview Content\"";
|
||||
DEVELOPMENT_TEAM = 9NP473RSFG;
|
||||
DEVELOPMENT_TEAM = ZU6GR6B2FY;
|
||||
ENABLE_HARDENED_RUNTIME = YES;
|
||||
ENABLE_PREVIEWS = YES;
|
||||
INFOPLIST_FILE = Xcodes/Resources/Info.plist;
|
||||
|
|
@ -1397,7 +1404,7 @@
|
|||
CURRENT_PROJECT_VERSION = 33;
|
||||
DEAD_CODE_STRIPPING = YES;
|
||||
DEVELOPMENT_ASSET_PATHS = "\"Xcodes/Preview Content\"";
|
||||
DEVELOPMENT_TEAM = 9NP473RSFG;
|
||||
DEVELOPMENT_TEAM = ZU6GR6B2FY;
|
||||
ENABLE_HARDENED_RUNTIME = YES;
|
||||
ENABLE_PREVIEWS = YES;
|
||||
INFOPLIST_FILE = Xcodes/Resources/Info.plist;
|
||||
|
|
|
|||
|
|
@ -139,6 +139,12 @@ class AppState: ObservableObject {
|
|||
}
|
||||
}
|
||||
|
||||
@Published var collapsableListEnabled = true {
|
||||
didSet {
|
||||
Current.defaults.set(collapsableListEnabled, forKey: "collapsableListEnabled")
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: - Runtimes
|
||||
|
||||
@Published var downloadableRuntimes: [DownloadableRuntime] = []
|
||||
|
|
@ -209,6 +215,7 @@ class AppState: ObservableObject {
|
|||
installPath = Current.defaults.string(forKey: "installPath") ?? Path.defaultInstallDirectory.string
|
||||
showOpenInRosettaOption = Current.defaults.bool(forKey: "showOpenInRosettaOption") ?? false
|
||||
terminateAfterLastWindowClosed = Current.defaults.bool(forKey: "terminateAfterLastWindowClosed") ?? false
|
||||
collapsableListEnabled = Current.defaults.bool(forKey: "collapsibleListEnabled") ?? true
|
||||
}
|
||||
|
||||
// MARK: Timer
|
||||
|
|
|
|||
|
|
@ -24,6 +24,7 @@ struct GeneralPreferencePane: View {
|
|||
|
||||
GroupBox(label: Text("Misc")) {
|
||||
Toggle("TerminateAfterLastWindowClosed", isOn: $appState.terminateAfterLastWindowClosed)
|
||||
Toggle("EnableCollapsibleList", isOn: $appState.collapsableListEnabled)
|
||||
}
|
||||
.groupBoxStyle(PreferencesGroupBoxStyle())
|
||||
}
|
||||
|
|
|
|||
|
|
@ -70,53 +70,16 @@ struct XcodeListView: View {
|
|||
|
||||
var body: some View {
|
||||
List(selection: $selectedXcodeID) {
|
||||
ForEach(majorVersionGroups) { majorVersionGroup in
|
||||
let isMajorExpanded = expandedMajorVersions.contains(majorVersionGroup.majorVersion)
|
||||
|
||||
XcodeMajorVersionRow(
|
||||
majorVersionGroup: majorVersionGroup,
|
||||
isExpanded: isMajorExpanded,
|
||||
onToggleExpanded: {
|
||||
if isMajorExpanded {
|
||||
expandedMajorVersions.remove(majorVersionGroup.majorVersion)
|
||||
// Collapse all minor versions when major version is collapsed
|
||||
for minorGroup in majorVersionGroup.minorVersionGroups {
|
||||
expandedMinorVersions.remove(minorGroup.id)
|
||||
}
|
||||
} else {
|
||||
expandedMajorVersions.insert(majorVersionGroup.majorVersion)
|
||||
}
|
||||
},
|
||||
if appState.collapsableListEnabled {
|
||||
CollapsableListView(
|
||||
visibleXcodes: visibleXcodes,
|
||||
selectedXcodeID: $selectedXcodeID,
|
||||
appState: appState
|
||||
)
|
||||
.tag(majorVersionGroup.selectedVersion?.id)
|
||||
|
||||
if isMajorExpanded {
|
||||
ForEach(majorVersionGroup.minorVersionGroups) { minorVersionGroup in
|
||||
let isMinorExpanded = expandedMinorVersions.contains(minorVersionGroup.id)
|
||||
|
||||
XcodeMinorVersionRow(
|
||||
minorVersionGroup: minorVersionGroup,
|
||||
isExpanded: isMinorExpanded,
|
||||
onToggleExpanded: {
|
||||
if isMinorExpanded {
|
||||
expandedMinorVersions.remove(minorVersionGroup.id)
|
||||
} else {
|
||||
expandedMinorVersions.insert(minorVersionGroup.id)
|
||||
}
|
||||
},
|
||||
appState: appState
|
||||
)
|
||||
.tag(minorVersionGroup.selectedVersion?.id)
|
||||
|
||||
if isMinorExpanded {
|
||||
ForEach(minorVersionGroup.versions) { xcode in
|
||||
XcodeListViewRow(xcode: xcode, selected: selectedXcodeID == xcode.id, appState: appState)
|
||||
.padding(.leading, 40)
|
||||
.tag(xcode.id)
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
ForEach(visibleXcodes) { xcode in
|
||||
XcodeListViewRow(xcode: xcode, selected: selectedXcodeID == xcode.id, appState: appState)
|
||||
.tag(xcode.id)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -129,6 +92,72 @@ struct XcodeListView: View {
|
|||
}
|
||||
}
|
||||
|
||||
struct CollapsableListView: View {
|
||||
let visibleXcodes: [Xcode]
|
||||
@Binding var selectedXcodeID: Xcode.ID?
|
||||
let appState: AppState
|
||||
|
||||
@State private var expandedMajorVersions = Set<Int>()
|
||||
@State private var expandedMinorVersions = Set<String>()
|
||||
|
||||
var majorVersionGroups: [XcodeMajorVersionGroup] {
|
||||
visibleXcodes.groupedByMajorVersion()
|
||||
}
|
||||
|
||||
var body: some View {
|
||||
ForEach(majorVersionGroups) { majorVersionGroup in
|
||||
let isMajorExpanded = expandedMajorVersions.contains(majorVersionGroup.majorVersion)
|
||||
|
||||
XcodeMajorVersionRow(
|
||||
majorVersionGroup: majorVersionGroup,
|
||||
isExpanded: isMajorExpanded,
|
||||
onToggleExpanded: {
|
||||
if isMajorExpanded {
|
||||
expandedMajorVersions.remove(majorVersionGroup.majorVersion)
|
||||
// Collapse all minor versions when major version is collapsed
|
||||
for minorGroup in majorVersionGroup.minorVersionGroups {
|
||||
expandedMinorVersions.remove(minorGroup.id)
|
||||
}
|
||||
} else {
|
||||
expandedMajorVersions.insert(majorVersionGroup.majorVersion)
|
||||
}
|
||||
},
|
||||
appState: appState
|
||||
)
|
||||
.tag(majorVersionGroup.selectedVersion?.id)
|
||||
|
||||
if isMajorExpanded {
|
||||
ForEach(majorVersionGroup.minorVersionGroups) { minorVersionGroup in
|
||||
let isMinorExpanded = expandedMinorVersions.contains(minorVersionGroup.id)
|
||||
|
||||
XcodeMinorVersionRow(
|
||||
minorVersionGroup: minorVersionGroup,
|
||||
isExpanded: isMinorExpanded,
|
||||
onToggleExpanded: {
|
||||
if isMinorExpanded {
|
||||
expandedMinorVersions.remove(minorVersionGroup.id)
|
||||
} else {
|
||||
expandedMinorVersions.insert(minorVersionGroup.id)
|
||||
}
|
||||
},
|
||||
appState: appState
|
||||
)
|
||||
.tag(minorVersionGroup.selectedVersion?.id)
|
||||
|
||||
if isMinorExpanded {
|
||||
ForEach(minorVersionGroup.versions) { xcode in
|
||||
XcodeListViewRow(xcode: xcode, selected: selectedXcodeID == xcode.id, appState: appState)
|
||||
.padding(.leading, 40)
|
||||
.tag(xcode.id)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
struct PlatformsPocket: View {
|
||||
@SwiftUI.Environment(\.openWindow) private var openWindow
|
||||
|
||||
|
|
@ -175,3 +204,4 @@ struct XcodeListView_Previews: PreviewProvider {
|
|||
.previewLayout(.sizeThatFits)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -19,11 +19,11 @@ struct XcodeMajorVersionRow: View {
|
|||
majorVersionIcon
|
||||
|
||||
VStack(alignment: .leading, spacing: 2) {
|
||||
Text("Xcode \(majorVersionGroup.displayName)")
|
||||
Text(String(format: localizeString("Xcode %@"), majorVersionGroup.displayName))
|
||||
.font(.body.weight(.medium))
|
||||
|
||||
if let latestRelease = majorVersionGroup.latestRelease {
|
||||
Text("Latest: \(latestRelease.description)")
|
||||
Text(String(format: localizeString("Latest: %@"), latestRelease.description))
|
||||
.font(.caption)
|
||||
.foregroundColor(.secondary)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -19,11 +19,11 @@ struct XcodeMinorVersionRow: View {
|
|||
minorVersionIcon
|
||||
|
||||
VStack(alignment: .leading, spacing: 2) {
|
||||
Text("Xcode \(minorVersionGroup.displayName)")
|
||||
Text(String(format: localizeString("Xcode %@"), minorVersionGroup.displayName))
|
||||
.font(.callout.weight(.medium))
|
||||
|
||||
if let latestRelease = minorVersionGroup.latestRelease {
|
||||
Text("Latest: \(latestRelease.description)")
|
||||
Text(String(format: localizeString("Latest: %@"), latestRelease.description))
|
||||
.font(.caption2)
|
||||
.foregroundColor(.secondary)
|
||||
}
|
||||
|
|
@ -137,4 +137,4 @@ struct XcodeMinorVersionRow_Previews: PreviewProvider {
|
|||
)
|
||||
.previewLayout(.sizeThatFits)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -8380,6 +8380,24 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"EnableCollapsibleList" : {
|
||||
"comment" : "A toggle that enables or disables the collapsible list feature.",
|
||||
"isCommentAutoGenerated" : true,
|
||||
"localizations" : {
|
||||
"de" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "Haupt- und Unterversionen in der Listenansicht zusammenklappen"
|
||||
}
|
||||
},
|
||||
"en" : {
|
||||
"stringUnit" : {
|
||||
"state" : "translated",
|
||||
"value" : "Collapse Major and Minor Versions in the list view"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"EnableNotifications" : {
|
||||
"localizations" : {
|
||||
"ar" : {
|
||||
|
|
|
|||
Loading…
Reference in a new issue