diff --git a/Pearcleaner.xcodeproj/project.pbxproj b/Pearcleaner.xcodeproj/project.pbxproj index a774d65..3ee059c 100644 --- a/Pearcleaner.xcodeproj/project.pbxproj +++ b/Pearcleaner.xcodeproj/project.pbxproj @@ -588,8 +588,8 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; - APP_BUILD = 52; - APP_VERSION = 3.7.7; + APP_BUILD = 53; + APP_VERSION = 3.7.8; ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; @@ -658,8 +658,8 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; - APP_BUILD = 52; - APP_VERSION = 3.7.7; + APP_BUILD = 53; + APP_VERSION = 3.7.8; ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; diff --git a/Pearcleaner/Logic/ThemeManager.swift b/Pearcleaner/Logic/ThemeManager.swift index 9b05acc..2dec8dd 100644 --- a/Pearcleaner/Logic/ThemeManager.swift +++ b/Pearcleaner/Logic/ThemeManager.swift @@ -22,14 +22,14 @@ class ThemeSettings: ObservableObject { // light - Color(.sRGB, red: 1.0, green: 1.0, blue: 1.0, opacity: 1) // dark - Color(.sRGB, red: 0.149, green: 0.149, blue: 0.149, opacity: 1) - // slate - Color(.sRGB, red: 0.188143, green: 0.208556, blue: 0.262679, opacity: 1) + // pearcleaner - Color(.sRGB, red: 0.188143, green: 0.208556, blue: 0.262679, opacity: 1) init() { // Initialize color from UserDefaults or use a default value if let components = UserDefaults.standard.object(forKey: colorKey) as? [CGFloat], components.count >= 4 { themeColor = Color(.sRGB, red: components[0], green: components[1], blue: components[2], opacity: components[3]) } else { - themeColor = Color.clear + themeColor = Color(.sRGB, red: 0.188143, green: 0.208556, blue: 0.262679, opacity: 1) } } @@ -53,14 +53,14 @@ class ThemeSettings: ObservableObject { } func getColorForPreset(preset: String, colorScheme: DisplayMode) -> Color { - let slate = colorScheme.colorScheme == .light ? Color(.sRGB, red: 0.499549, green: 0.545169, blue: 0.682028, opacity: 1) : Color(.sRGB, red: 0.188143, green: 0.208556, blue: 0.262679, opacity: 1) + let pearcleaner = colorScheme.colorScheme == .light ? Color(.sRGB, red: 0.499549, green: 0.545169, blue: 0.682028, opacity: 1) : Color(.sRGB, red: 0.188143, green: 0.208556, blue: 0.262679, opacity: 1) let solarized = colorScheme.colorScheme == .light ? Color(.sRGB, red: 0.554372, green: 0.6557, blue: 0.734336, opacity: 1) : Color(.sRGB, red: 0.117257, green: 0.22506, blue: 0.249171, opacity: 1) let dracula = colorScheme.colorScheme == .light ? Color(.sRGB, red: 0.567094, green: 0.562125, blue: 0.81285, opacity: 1) : Color(.sRGB, red: 0.268614, green: 0.264737, blue: 0.383503, opacity: 1) let macOS = colorScheme.colorScheme == .light ? Color(.sRGB, red: 1.0, green: 1.0, blue: 1.0, opacity: 1) : Color(.sRGB, red: 0.149, green: 0.149, blue: 0.149, opacity: 1) switch preset { - case "slate": - return slate + case "pearcleaner": + return pearcleaner case "solarized": return solarized case "dracula": diff --git a/Pearcleaner/PearcleanerApp.swift b/Pearcleaner/PearcleanerApp.swift index 0020f0a..d9b4334 100644 --- a/Pearcleaner/PearcleanerApp.swift +++ b/Pearcleaner/PearcleanerApp.swift @@ -191,16 +191,17 @@ class AppDelegate: NSObject, NSApplicationDelegate, NSWindowDelegate { // Start observing the appearance change observer = DistributedNotificationCenter.default().addObserver(forName: NSNotification.Name(rawValue: "AppleInterfaceThemeChangedNotification"), object: nil, queue: OperationQueue.main) { [weak self] _ in - let themeMode = UserDefaults.standard.string(forKey: "settings.general.selectedTheme") - if themeMode == "Auto" { - self?.appearanceCheck() - } +// let themeMode = UserDefaults.standard.string(forKey: "settings.general.selectedTheme") +// if themeMode == "Auto" { +// self?.appearanceCheck() +// } + self?.appearanceCheck(reset: true) } } - func appearanceCheck() { + func appearanceCheck(reset: Bool = false) { let dm = UserDefaults.standard.integer(forKey: "displayMode") var displayMode = DisplayMode(rawValue: dm) let dark = isDarkMode() @@ -212,10 +213,10 @@ class AppDelegate: NSObject, NSApplicationDelegate, NSWindowDelegate { UserDefaults.standard.set(displayMode?.rawValue, forKey: "displayMode") - // Customize dark mode color to use Slate by default - ThemeSettings.shared.themeColor = isDarkMode() ? Color(.sRGB, red: 0.188143, green: 0.208556, blue: 0.262679, opacity: 1) : Color(.sRGB, red: 1.0, green: 1.0, blue: 1.0, opacity: 1) -// ThemeSettings.shared.themeColor = isDarkMode() ? Color(.sRGB, red: 0.149, green: 0.149, blue: 0.149, opacity: 1) : Color(.sRGB, red: 1.0, green: 1.0, blue: 1.0, opacity: 1) - ThemeSettings.shared.saveThemeColor() + // Reset theme when OS changes appearance + if reset { + ThemeSettings.shared.resetToDefault(dark: dark) + } } diff --git a/Pearcleaner/Settings/About.swift b/Pearcleaner/Settings/About.swift index 65a4b89..359bb40 100644 --- a/Pearcleaner/Settings/About.swift +++ b/Pearcleaner/Settings/About.swift @@ -155,14 +155,14 @@ struct AboutSettingsTab: View { VStack(alignment: .leading){ Text("Apple Developer Account Sponsor") - Text("Many thanks to redditor u/dharsanb") + Text("Many thanks to user DharsanB") .font(.callout) .foregroundStyle(Color("mode").opacity(0.5)) } Spacer() Button(""){ - NSWorkspace.shared.open(URL(string: "https://www.reddit.com/user/dharsanb/")!) + NSWorkspace.shared.open(URL(string: "https://github.com/dharsanb")!) } .buttonStyle(SimpleButtonStyle(icon: "link", help: "View")) diff --git a/Pearcleaner/Settings/Interface.swift b/Pearcleaner/Settings/Interface.swift index c033d2c..18fbf3a 100644 --- a/Pearcleaner/Settings/Interface.swift +++ b/Pearcleaner/Settings/Interface.swift @@ -126,9 +126,9 @@ struct InterfaceSettingsTab: View { HStack(spacing: 10) { Button("") { - themeSettings.setPreset(preset: "slate", colorScheme: displayMode) + themeSettings.setPreset(preset: "pearcleaner", colorScheme: displayMode) } - .buttonStyle(PresetColor(fillColor: themeSettings.getColorForPreset(preset: "slate", colorScheme: displayMode), label: "Slate")) + .buttonStyle(PresetColor(fillColor: themeSettings.getColorForPreset(preset: "pearcleaner", colorScheme: displayMode), label: "Pearcleaner")) Button("") { themeSettings.setPreset(preset: "dracula", colorScheme: displayMode) diff --git a/Pearcleaner/Views/FilesView.swift b/Pearcleaner/Views/FilesView.swift index f805d5c..01fc797 100644 --- a/Pearcleaner/Views/FilesView.swift +++ b/Pearcleaner/Views/FilesView.swift @@ -20,12 +20,12 @@ struct FilesView: View { @AppStorage("settings.general.sizeType") var sizeType: String = "Real" @AppStorage("settings.general.filesWarning") private var warning: Bool = false @State private var showAlert = false -// @State private var showConditionBuilder = false @Environment(\.colorScheme) var colorScheme @Binding var showPopover: Bool @Binding var search: String @State private var elapsedTime = 0 @State private var timer: Timer? = nil + @State private var isShowingInspector = false var body: some View { @@ -292,18 +292,11 @@ struct FilesView: View { Spacer() + InfoButton(text: "Always double-check the files/folders marked for removal. In some rare cases, Pearcleaner may find some unrelated files when app names are too similar.", color: Color("mode").opacity(0.5), warning: true, edge: .top) .padding(.top) -// Button("Builder") { -// appState.showConditionBuilder = true -// } -// .buttonStyle(SimpleButtonStyle(icon: "hammer.fill", help: "Condition Builder", size: 14)) -// .padding(.top) -// .padding(.trailing, 5) - - Button("\(sizeType == "Logical" ? totalSelectedSize.logical : sizeType == "Finder" ? totalSelectedSize.finder : totalSelectedSize.real)") { Task {