From a6299243ad724e1207578498ab1335691febbf6e Mon Sep 17 00:00:00 2001 From: Tom Underhill Date: Sat, 27 Jul 2024 23:03:57 +0200 Subject: [PATCH] Add fan sensors --- SensorsUI.xcodeproj/project.pbxproj | 4 +++ .../Base.lproj/SensorsWindowController.xib | 28 +++++++++++++----- SensorsUI/Colors.swift | 1 + SensorsUI/Images/FanTemplate.pdf | Bin 0 -> 3325 bytes SensorsUI/SensorIcon.swift | 1 + SensorsUI/SensorsWindowController.swift | 14 +++++++++ 6 files changed, 40 insertions(+), 8 deletions(-) create mode 100644 SensorsUI/Images/FanTemplate.pdf diff --git a/SensorsUI.xcodeproj/project.pbxproj b/SensorsUI.xcodeproj/project.pbxproj index 8929725..66599fa 100644 --- a/SensorsUI.xcodeproj/project.pbxproj +++ b/SensorsUI.xcodeproj/project.pbxproj @@ -24,6 +24,7 @@ 058B8EBE2994387900263FE9 /* SensorsKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 058B8E96299436D900263FE9 /* SensorsKit.framework */; }; 058B8EBF2994387900263FE9 /* SensorsKit.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 058B8E96299436D900263FE9 /* SensorsKit.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 05BDE9EE29944B9D00B0B888 /* AmbiantLightTemplate.pdf in Resources */ = {isa = PBXBuildFile; fileRef = 05BDE9EC29944B9D00B0B888 /* AmbiantLightTemplate.pdf */; }; + 38B72A892C53DAE100AD0B87 /* FanTemplate.pdf in Resources */ = {isa = PBXBuildFile; fileRef = 38B72A882C53DAE100AD0B87 /* FanTemplate.pdf */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -115,6 +116,7 @@ 05BDE9EC29944B9D00B0B888 /* AmbiantLightTemplate.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = AmbiantLightTemplate.pdf; sourceTree = ""; }; 05E0C31B268635C300D1D216 /* SensorItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SensorItem.swift; sourceTree = ""; }; 05E0C31E268635F200D1D216 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/SensorItem.xib; sourceTree = ""; }; + 38B72A882C53DAE100AD0B87 /* FanTemplate.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = FanTemplate.pdf; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -274,6 +276,7 @@ 0566B9402686438E006EE45A /* CurrentTemplate.pdf */, 0566B9412686438E006EE45A /* ThermalTemplate.pdf */, 0566B93F2686438E006EE45A /* VoltageTemplate.pdf */, + 38B72A882C53DAE100AD0B87 /* FanTemplate.pdf */, ); path = Images; sourceTree = ""; @@ -397,6 +400,7 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( + 38B72A892C53DAE100AD0B87 /* FanTemplate.pdf in Resources */, 058B8EBC2994386E00263FE9 /* ThermalTemplate.pdf in Resources */, 058B8EBA2994386B00263FE9 /* SensorItem.xib in Resources */, 058B8EBD2994386E00263FE9 /* VoltageTemplate.pdf in Resources */, diff --git a/SensorsUI/Base.lproj/SensorsWindowController.xib b/SensorsUI/Base.lproj/SensorsWindowController.xib index 653274d..38bc56f 100644 --- a/SensorsUI/Base.lproj/SensorsWindowController.xib +++ b/SensorsUI/Base.lproj/SensorsWindowController.xib @@ -1,8 +1,8 @@ - + - + @@ -19,7 +19,7 @@ - + @@ -84,7 +84,7 @@ + + + @@ -208,7 +220,6 @@ - @@ -217,6 +228,7 @@ + diff --git a/SensorsUI/Colors.swift b/SensorsUI/Colors.swift index c66c3f9..c17cc54 100644 --- a/SensorsUI/Colors.swift +++ b/SensorsUI/Colors.swift @@ -32,6 +32,7 @@ public class Colors switch kind { case .thermal: return NSColor.systemOrange + case .rpm: return NSColor.systemBlue case .voltage: return NSColor.systemPurple case .current: return NSColor.systemTeal case .ambiantLight: return NSColor.systemYellow diff --git a/SensorsUI/Images/FanTemplate.pdf b/SensorsUI/Images/FanTemplate.pdf new file mode 100644 index 0000000000000000000000000000000000000000..574fed8e3d75d3117dc141cba58419494661f7cf GIT binary patch literal 3325 zcmai1c|25m8@J?@u~TX&PL^yjW5$fh9b}1QO_3~Rni)%mVHQi-y4Mm#S+XysY!xoD z4B|$%WGj&@3E8(75yE>$%k6#dAMfvTp7WgF_xGG<`#k6K`5qZ_J$)q=WfVlFbgp0% zq6)wP^5rWKEEa$n6WyI?&HxI8EFb^?!1P^6G$IAmBpi*XN5qo}M2My)gi50jac&Tw zR5xqGf=?BK12g+7Pqd!q%k<%qcrIW**AU3vzs7k;cWLWBB(h-5@C<=3I$FCSV5GK| zZKu0xuETY+!|Td?ZQ#PrmtMxsR&Bmr(;##54B`nX_X zdQ*rc{pkad*@|-fKJ2scGac_%G4n|H69ZSO*6r(&8(D|bw+ff#>;}fWv^c-m&b-82 z&9lzdK)>(0HpcqrNHWrFt+pe1CBn{~odTP$!rkXvADwbZ;qe*rg2BeRDP79sg*VV> z9)Wy^YPMPz&e01sn2;}l8!3M%MYfb?T(`NVbgk!1Yv%s#&s7?i#PhS(r{626b(AdX zXx;UAFElsgs?pB6hG~@8gq2Hj@i>bPi)xrqqX8xlUE zU=sbu1HmS`uiyt3T_qIa*Z0nkW5pN)ZX77tjsG?Zb<7F6wU?7 z%)&ao!iwn=PsAcz-^I~lOx5ZZZDbw$TP~gWf_6+flA#;ys_@YDvbI>EJjtZ-py5OA z;OL8mqcc+y()u}mCH6x=`g0F@&S*%fq5t4-M|f;HLm8Q31k_dlE#AS}RbOa4HyQ5O z)oC4aV_7!sQS33Lk#gd{m$|H}%H9c!<%)b1dJ`FxlCw7;lqX8jTPFI$2gcWt2?_h1 zQjQ990d0-Wp@eDc?RsPNeNt8DRlJ)}v)&tKe6xL(@Q`PkaB4q$9Ix)pBu}F3##XWNKkYhpn?j8QXANKPrA2 z!^par&VSw}Z~hKp*h5P}oi=*3VO3U-&utoGB4HE@HB%7q#EJy*cgFU{}5{ zLtbUym`x;1RBFu2*4{XhHNlum)*i2&m%^?Tugcoy75h#o^jJcSmu0zAPj}KM2enwdb1*GHNria{2DE*K-CAVWyCs1#+xPZE_W9%QJo)!1dR#R{acBI5Av_a{yKxHtr z`VDWLHj4Xm7NI2Y^z~a$R&7nLlZI0blRq$b5~uQY+Z6K z%d;N(8v*w7ob(SdV|&bt8)#gJ6i5c53ci#?ZP_Lt^bk9sX6Pdq#EZW_H)pYCwwYf@Ngo2Grh3wl~$OBUc}^ABM!;_ zjv0S>#jV2)Yvz2PSj21(rzMpik*$#1`8qp0)0alT7QA?ox07~xa7vE<#bo+lUh&>` zp>P*7DmH&DV)j{dspCRf`L#eVsJXI6N><3g&8L%x+phbDaL0&aYaB@4o*LIA!V9bI z{fCRR`?9mT8VcD9Vp4};x{jxG$Ztq9jqT$+~asdzgZ+BPvA32%4 zis=~Sae@@yiML9Tl!dFtDXvs(Xgv|2gRyn zL}czSb}m)c#0*}gjIO(9wDsDK=oFR(8xF%{%F<7a9dP44ce#0m2p%So2MoK1UJ zmL-VP{VFw4*GR^kn0Y*-qe*yqbKmSriFgE8^qDh^9`EVp`noCZk;dlNtNezl4K=0Z zi4VmD<%=q*v3-i=rEi}=7FKgx#*NDx+pO41`qa80C!{j--YB|C%Si3rceQ77?}2%! zFTecJ%)5Id%xgM(+JLae(PcNCUgPG;5tX&ICf+E&u(9)!F8S$@tWAVjgi_wn`WFid zx`-HH)>3uq^a)g0To@!X?6$0Q>5}hq*fDp8^P;Qx+t&fDN)N`tE`xY>r2GNw``^N&Rq4IKxMDT zLJoTw8wjyj$h!iX-QLQ9>3*`&5(ipl?OUqi?VK6!MbC|zY;2mMKAP0xbyNQ>b}_(h zXJDJ3U=>ONA7fHp}#ml|Kh-$LMG7hAVrnK<6J0YKt)*vtqcd`oM|)< zsyYm8FNiu(a30Psc&aj);v_G>8%P%vV4h~lVzmos8 zQ~M{Th60D=zwMAoDw literal 0 HcmV?d00001 diff --git a/SensorsUI/SensorIcon.swift b/SensorsUI/SensorIcon.swift index 7a71f9c..64d5a6d 100644 --- a/SensorsUI/SensorIcon.swift +++ b/SensorsUI/SensorIcon.swift @@ -49,6 +49,7 @@ public class SensorIcon: ValueTransformer switch data.kind { case .thermal: return self.image( named: "ThermalTemplate" )?.tinted( with: Colors.color( for: data.kind ) ) + case .rpm: return self.image( named: "FanTemplate" )?.tinted(with: Colors.color(for: data.kind ) ) case .voltage: return self.image( named: "VoltageTemplate" )?.tinted( with: Colors.color( for: data.kind ) ) case .current: return self.image( named: "CurrentTemplate" )?.tinted( with: Colors.color( for: data.kind ) ) case .ambiantLight: return self.image( named: "AmbiantLightTemplate" )?.tinted( with: Colors.color( for: data.kind ) ) diff --git a/SensorsUI/SensorsWindowController.swift b/SensorsUI/SensorsWindowController.swift index 1f82366..9bb9566 100644 --- a/SensorsUI/SensorsWindowController.swift +++ b/SensorsUI/SensorsWindowController.swift @@ -65,6 +65,15 @@ public class SensorsWindowController: NSWindowController } } + @objc private dynamic var showFanSpeed = UserDefaults.standard.object( forKey: "sensorsWindowShowFanSpeed" ) as? Bool ?? true + { + didSet + { + self.updateFilters() + UserDefaults.standard.set( self.showFanSpeed, forKey: "sensorsWindowShowFanSpeed" ) + } + } + @objc private dynamic var showIOHID = UserDefaults.standard.object( forKey: "sensorsWindowShowIOHID" ) as? Bool ?? true { didSet @@ -151,6 +160,11 @@ public class SensorsWindowController: NSWindowController predicates.append( NSPredicate { o, i in ( o as? SensorHistoryData )?.kind != .ambiantLight } ) } + if self.showFanSpeed == false + { + predicates.append( NSPredicate { o, i in ( o as? SensorHistoryData )?.kind != .rpm } ) + } + if self.showIOHID == false { predicates.append( NSPredicate { o, i in ( o as? SensorHistoryData )?.source != .hid } )