diff --git a/src/MeloNX/MeloNX.xcodeproj/project.pbxproj b/src/MeloNX/MeloNX.xcodeproj/project.pbxproj index d8b922d32..ef8ce7fa6 100644 --- a/src/MeloNX/MeloNX.xcodeproj/project.pbxproj +++ b/src/MeloNX/MeloNX.xcodeproj/project.pbxproj @@ -728,6 +728,8 @@ "$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries", "$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries", "$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries", + "$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries", + "$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries", ); GCC_OPTIMIZATION_LEVEL = z; GENERATE_INFOPLIST_FILE = YES; @@ -910,6 +912,10 @@ "$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries", "$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries", "$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries", + "$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries", + "$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries", + "$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries", + "$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries", ); MARKETING_VERSION = "$(VERSION)"; PRODUCT_BUNDLE_IDENTIFIER = com.stossy11.MeloNX; @@ -1018,6 +1024,8 @@ "$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries", "$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries", "$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries", + "$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries", + "$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries", ); GCC_OPTIMIZATION_LEVEL = z; GENERATE_INFOPLIST_FILE = YES; @@ -1200,6 +1208,10 @@ "$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries", "$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries", "$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries", + "$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries", + "$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries", + "$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries", + "$(PROJECT_DIR)/MeloNX/Dependencies/Dynamic\\ Libraries", ); MARKETING_VERSION = "$(VERSION)"; PRODUCT_BUNDLE_IDENTIFIER = com.stossy11.MeloNX; diff --git a/src/MeloNX/MeloNX.xcodeproj/project.xcworkspace/xcuserdata/benlawrence.xcuserdatad/UserInterfaceState.xcuserstate b/src/MeloNX/MeloNX.xcodeproj/project.xcworkspace/xcuserdata/benlawrence.xcuserdatad/UserInterfaceState.xcuserstate deleted file mode 100644 index d95c76d65..000000000 Binary files a/src/MeloNX/MeloNX.xcodeproj/project.xcworkspace/xcuserdata/benlawrence.xcuserdatad/UserInterfaceState.xcuserstate and /dev/null differ diff --git a/src/MeloNX/MeloNX.xcodeproj/project.xcworkspace/xcuserdata/brandon.xcuserdatad/IDEFindNavigatorScopes.plist b/src/MeloNX/MeloNX.xcodeproj/project.xcworkspace/xcuserdata/brandon.xcuserdatad/IDEFindNavigatorScopes.plist deleted file mode 100644 index 5dd5da85f..000000000 --- a/src/MeloNX/MeloNX.xcodeproj/project.xcworkspace/xcuserdata/brandon.xcuserdatad/IDEFindNavigatorScopes.plist +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/src/MeloNX/MeloNX.xcodeproj/project.xcworkspace/xcuserdata/brandon.xcuserdatad/UserInterfaceState.xcuserstate b/src/MeloNX/MeloNX.xcodeproj/project.xcworkspace/xcuserdata/brandon.xcuserdatad/UserInterfaceState.xcuserstate deleted file mode 100644 index 77a8ba399..000000000 Binary files a/src/MeloNX/MeloNX.xcodeproj/project.xcworkspace/xcuserdata/brandon.xcuserdatad/UserInterfaceState.xcuserstate and /dev/null differ diff --git a/src/MeloNX/MeloNX.xcodeproj/project.xcworkspace/xcuserdata/june.xcuserdatad/UserInterfaceState.xcuserstate b/src/MeloNX/MeloNX.xcodeproj/project.xcworkspace/xcuserdata/june.xcuserdatad/UserInterfaceState.xcuserstate deleted file mode 100644 index ebc8d0112..000000000 Binary files a/src/MeloNX/MeloNX.xcodeproj/project.xcworkspace/xcuserdata/june.xcuserdatad/UserInterfaceState.xcuserstate and /dev/null differ diff --git a/src/MeloNX/MeloNX.xcodeproj/project.xcworkspace/xcuserdata/ls.xcuserdatad/UserInterfaceState.xcuserstate b/src/MeloNX/MeloNX.xcodeproj/project.xcworkspace/xcuserdata/ls.xcuserdatad/UserInterfaceState.xcuserstate deleted file mode 100644 index d2a61f079..000000000 Binary files a/src/MeloNX/MeloNX.xcodeproj/project.xcworkspace/xcuserdata/ls.xcuserdatad/UserInterfaceState.xcuserstate and /dev/null differ diff --git a/src/MeloNX/MeloNX.xcodeproj/project.xcworkspace/xcuserdata/stossy11.xcuserdatad/UserInterfaceState.xcuserstate b/src/MeloNX/MeloNX.xcodeproj/project.xcworkspace/xcuserdata/stossy11.xcuserdatad/UserInterfaceState.xcuserstate deleted file mode 100644 index 451faecd9..000000000 Binary files a/src/MeloNX/MeloNX.xcodeproj/project.xcworkspace/xcuserdata/stossy11.xcuserdatad/UserInterfaceState.xcuserstate and /dev/null differ diff --git a/src/MeloNX/MeloNX.xcodeproj/project.xcworkspace/xcuserdata/techguy.xcuserdatad/UserInterfaceState.xcuserstate b/src/MeloNX/MeloNX.xcodeproj/project.xcworkspace/xcuserdata/techguy.xcuserdatad/UserInterfaceState.xcuserstate deleted file mode 100644 index f234e2cfe..000000000 Binary files a/src/MeloNX/MeloNX.xcodeproj/project.xcworkspace/xcuserdata/techguy.xcuserdatad/UserInterfaceState.xcuserstate and /dev/null differ diff --git a/src/MeloNX/MeloNX/App/Views/Main/GamesList/GameInfoSheet.swift b/src/MeloNX/MeloNX/App/Views/Main/GamesList/GameInfoSheet.swift index f864020ca..c6cbb3880 100644 --- a/src/MeloNX/MeloNX/App/Views/Main/GamesList/GameInfoSheet.swift +++ b/src/MeloNX/MeloNX/App/Views/Main/GamesList/GameInfoSheet.swift @@ -96,8 +96,8 @@ struct GameInfoSheet: View { .navigationTitle(game.titleName) .navigationBarTitleDisplayMode(.inline) .toolbar { - ToolbarItem(placement: .navigationBarTrailing) { - Button("Done") { + ToolbarItem(placement: .cancellationAction) { + Button("Dismiss") { presentationMode.wrappedValue.dismiss() } } diff --git a/src/MeloNX/MeloNX/App/Views/Main/GamesList/GameListView.swift b/src/MeloNX/MeloNX/App/Views/Main/GamesList/GameListView.swift index e130166ea..4356fdd64 100644 --- a/src/MeloNX/MeloNX/App/Views/Main/GamesList/GameListView.swift +++ b/src/MeloNX/MeloNX/App/Views/Main/GamesList/GameListView.swift @@ -239,26 +239,28 @@ struct GameLibraryView: View { } // Library Section - VStack(alignment: .leading) { - Text("Library") - .font(.headline) - .foregroundColor(.primary) - .padding(.horizontal) - .padding(.top) - - ForEach(filteredGames) { game in - GameListRow( - game: game, - startemu: $startemu, - games: games, - isViewingGameInfo: $isViewingGameInfo, - isSelectingGameUpdate: $isSelectingGameUpdate, - isSelectingGameDLC: $isSelectingGameDLC, - gameRequirements: $gameRequirements, - gameInfo: $gameInfo - ) - .padding(.horizontal, 3) - .padding(.vertical, 8) + if !filteredGames.isEmpty { + VStack(alignment: .leading) { + Text("Library") + .font(.headline) + .foregroundColor(.primary) + .padding(.horizontal) + .padding(.top) + + ForEach(filteredGames) { game in + GameListRow( + game: game, + startemu: $startemu, + games: games, + isViewingGameInfo: $isViewingGameInfo, + isSelectingGameUpdate: $isSelectingGameUpdate, + isSelectingGameDLC: $isSelectingGameDLC, + gameRequirements: $gameRequirements, + gameInfo: $gameInfo + ) + .padding(.horizontal, 3) + .padding(.vertical, 8) + } } } } else { diff --git a/src/MeloNX/MeloNX/App/Views/Main/SettingsView/SettingsView.swift b/src/MeloNX/MeloNX/App/Views/Main/SettingsView/SettingsView.swift index 967acf901..664edfb26 100644 --- a/src/MeloNX/MeloNX/App/Views/Main/SettingsView/SettingsView.swift +++ b/src/MeloNX/MeloNX/App/Views/Main/SettingsView/SettingsView.swift @@ -93,6 +93,15 @@ struct SettingsView: View { } } + var appVersion: String { + guard let version = Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String else { + return "Unknown" + } + return version + } + + @FocusState private var isArgumentsKeyboardVisible: Bool + var body: some View { iOSNav { ZStack { @@ -145,6 +154,7 @@ struct SettingsView: View { } .padding(.bottom) } + .scrollDismissesKeyboardIfAvailable() } } .navigationTitle("Settings") @@ -189,6 +199,14 @@ struct SettingsView: View { Text("\(memoryText) RAM") .font(.subheadline) .foregroundColor(.secondary) + + Text("ยท") + .font(.subheadline) + .foregroundColor(.secondary) + + Text("Version \(appVersion)") + .font(.subheadline) + .foregroundColor(.secondary) } // Device cards @@ -747,7 +765,7 @@ struct SettingsView: View { .foregroundColor(.primary) if #available(iOS 15.0, *) { - TextField("Separate arguments with commas", text: Binding( + TextField("Separate arguments with commas" ,text: Binding( get: { config.additionalArgs.joined(separator: ", ") }, @@ -762,6 +780,14 @@ struct SettingsView: View { .textInputAutocapitalization(.none) .disableAutocorrection(true) .padding(.vertical, 4) + .toolbar { + ToolbarItem(placement: .keyboard) { + Button("Dismiss") { + isArgumentsKeyboardVisible = false + } + } + } + .focused($isArgumentsKeyboardVisible) } else { TextField("Separate arguments with commas", text: Binding( get: { @@ -1013,6 +1039,7 @@ struct CategoryButton: View { RoundedRectangle(cornerRadius: 12) .fill(isSelected ? Color.blue.opacity(0.15) : Color.clear) ) + .animation(.bouncy(duration: 0.3), value: isSelected) } } } @@ -1122,3 +1149,16 @@ struct InfoCard: View { .cornerRadius(8) } } + +// this code is used to enable the keyboard to be dismissed when scrolling if available on iOS 16+ +extension View { + @ViewBuilder + func scrollDismissesKeyboardIfAvailable() -> some View { + if #available(iOS 16.0, *) { + self.scrollDismissesKeyboard(.interactively) + } else { + self + } + } +} + diff --git a/src/Ryujinx.Ui.Common/App/ApplicationLibrary.cs b/src/Ryujinx.UI.Common/App/ApplicationLibrary.cs similarity index 100% rename from src/Ryujinx.Ui.Common/App/ApplicationLibrary.cs rename to src/Ryujinx.UI.Common/App/ApplicationLibrary.cs