From 195a8e88ec60068c27c035c27d99c3acb6e60249 Mon Sep 17 00:00:00 2001 From: sametbrr <92684948+sametbrr@users.noreply.github.com> Date: Sun, 16 Nov 2025 12:59:58 +0300 Subject: [PATCH] sorting by name added (#1774) --- MonitorControl/Info.plist | 2 +- MonitorControl/Support/DisplayManager.swift | 34 +++++++++++++++++++-- MonitorControl/Support/MenuHandler.swift | 1 + MonitorControlHelper/Info.plist | 2 +- 4 files changed, 35 insertions(+), 4 deletions(-) diff --git a/MonitorControl/Info.plist b/MonitorControl/Info.plist index 6648c50..69810af 100644 --- a/MonitorControl/Info.plist +++ b/MonitorControl/Info.plist @@ -19,7 +19,7 @@ CFBundleShortVersionString $(MARKETING_VERSION) CFBundleVersion - 7122 + 7141 LSApplicationCategoryType public.app-category.utilities LSMinimumSystemVersion diff --git a/MonitorControl/Support/DisplayManager.swift b/MonitorControl/Support/DisplayManager.swift index 7ace448..f53d5bb 100644 --- a/MonitorControl/Support/DisplayManager.swift +++ b/MonitorControl/Support/DisplayManager.swift @@ -240,8 +240,38 @@ class DisplayManager { self.displays.compactMap { $0 as? OtherDisplay } } + func sortDisplays() { + // Opsiyonel: sıralamadan önce log al + let before = displays.map { $0.name } + os_log("Displays before sorting: %{public}@", before) + + // In‑place sıralama + displays.sort { lhs, rhs in + lhs.name.localizedStandardCompare(rhs.name) == .orderedAscending + } + + // Opsiyonel: sıralamadan sonra log al + let after = displays.map { $0.name } + os_log("Displays after sorting: %{public}@", after) + } + + func sortDisplaysByFriendlyName() -> [Display] { + return displays.sorted { lhs, rhs in + let lhsTitle = lhs.readPrefAsString(key: .friendlyName).isEmpty + ? lhs.name + : lhs.readPrefAsString(key: .friendlyName) + let rhsTitle = rhs.readPrefAsString(key: .friendlyName).isEmpty + ? rhs.name + : rhs.readPrefAsString(key: .friendlyName) + return lhsTitle.localizedStandardCompare(rhsTitle) == .orderedDescending + } + } + + + + /// displays dizisini sıralar ve döner func getAllDisplays() -> [Display] { - self.displays + return displays } func getDdcCapableDisplays() -> [OtherDisplay] { @@ -283,7 +313,7 @@ class DisplayManager { func clearDisplays() { self.displays = [] } - + func addDisplayCounterSuffixes() { var nameDisplays: [String: [Display]] = [:] for display in self.displays { diff --git a/MonitorControl/Support/MenuHandler.swift b/MonitorControl/Support/MenuHandler.swift index 65c3ad9..6fcd486 100644 --- a/MonitorControl/Support/MenuHandler.swift +++ b/MonitorControl/Support/MenuHandler.swift @@ -53,6 +53,7 @@ class MenuHandler: NSMenu, NSMenuDelegate { displays.append(contentsOf: DisplayManager.shared.getAppleDisplays()) } displays.append(contentsOf: DisplayManager.shared.getOtherDisplays()) + displays = DisplayManager.shared.sortDisplaysByFriendlyName() let relevant = prefs.integer(forKey: PrefKey.multiSliders.rawValue) == MultiSliders.relevant.rawValue let combine = prefs.integer(forKey: PrefKey.multiSliders.rawValue) == MultiSliders.combine.rawValue let numOfDisplays = displays.filter { !$0.isDummy }.count diff --git a/MonitorControlHelper/Info.plist b/MonitorControlHelper/Info.plist index 3d3b539..e6cc0a2 100644 --- a/MonitorControlHelper/Info.plist +++ b/MonitorControlHelper/Info.plist @@ -19,7 +19,7 @@ CFBundleShortVersionString $(MARKETING_VERSION) CFBundleVersion - 7122 + 7141 LSApplicationCategoryType public.app-category.utilities LSBackgroundOnly