Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 19 additions & 0 deletions RunCat365/ContextMenuManager.cs
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,8 @@ internal ContextMenuManager(
Func<SpeedSource, bool> isSpeedSourceAvailable,
Func<FPSMaxLimit> getFPSMaxLimit,
Action<FPSMaxLimit> setFPSMaxLimit,
Func<TemperatureUnit> getTemperatureUnit,
Action<TemperatureUnit> setTemperatureUnit,
Func<bool> getLaunchAtStartup,
Func<bool, bool> toggleLaunchAtStartup,
Action openProjectPage,
Expand Down Expand Up @@ -127,6 +129,22 @@ Action onExit
_ => null
);

var temperatureUnitMenu = new CustomToolStripMenuItem(Strings.Menu_TemperatureUnit);
temperatureUnitMenu.SetupSubMenusFromEnum<TemperatureUnit>(
u => u.GetLocalizedString(),
(parent, sender, e) =>
{
HandleMenuItemSelection<TemperatureUnit>(
parent,
sender,
(string? s, out TemperatureUnit u) => Enum.TryParse(s, out u),
u => setTemperatureUnit(u)
);
},
u => getTemperatureUnit() == u,
_ => null
);

var launchAtStartupMenu = new CustomToolStripMenuItem(Strings.Menu_LaunchAtStartup)
{
Checked = getLaunchAtStartup()
Expand All @@ -138,6 +156,7 @@ Action onExit
themeMenu,
speedSourceMenu,
fpsMaxLimitMenu,
temperatureUnitMenu,
launchAtStartupMenu
);

Expand Down
15 changes: 13 additions & 2 deletions RunCat365/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,7 @@ internal class RunCat365ApplicationContext : ApplicationContext
private readonly FormsTimer animateTimer;
private Runner runner = Runner.Cat;
private Theme manualTheme = Theme.System;
private TemperatureUnit temperatureUnit = TemperatureUnit.System;
private FPSMaxLimit fpsMaxLimit = FPSMaxLimit.FPS40;
private SpeedSource speedSource = SpeedSource.CPU;
private string? customRunnerName;
Expand All @@ -78,6 +79,7 @@ public RunCat365ApplicationContext()
UserSettings.Default.Reload();
_ = Enum.TryParse(UserSettings.Default.Runner, out runner);
_ = Enum.TryParse(UserSettings.Default.Theme, out manualTheme);
_ = Enum.TryParse(UserSettings.Default.TemperatureUnit, out temperatureUnit);
_ = Enum.TryParse(UserSettings.Default.FPSMaxLimit, out fpsMaxLimit);
_ = Enum.TryParse(UserSettings.Default.SpeedSource, out speedSource);
customRunnerName = string.IsNullOrEmpty(UserSettings.Default.CustomRunnerName)
Expand Down Expand Up @@ -112,6 +114,8 @@ public RunCat365ApplicationContext()
s => IsSpeedSourceAvailable(s),
() => fpsMaxLimit,
f => ChangeFPSMaxLimit(f),
() => temperatureUnit,
u => ChangeTemperatureUnit(u),
() => launchAtStartupManager.GetStartup(),
s => launchAtStartupManager.ToggleStartup(s),
() => OpenProjectPage(),
Expand Down Expand Up @@ -254,6 +258,13 @@ private void ChangeManualTheme(Theme t)
UserSettings.Default.Save();
}

private void ChangeTemperatureUnit(TemperatureUnit u)
{
temperatureUnit = u;
UserSettings.Default.TemperatureUnit = temperatureUnit.ToString();
UserSettings.Default.Save();
}

private void ChangeSpeedSource(SpeedSource s)
{
speedSource = s;
Expand Down Expand Up @@ -283,7 +294,7 @@ private string GetInfoDescription(CPUInfo cpuInfo, GPUInfo? gpuInfo, MemoryInfo
_ => "",
};

var temperatureDescription = temperatureInfo?.GetDescription() ?? "";
var temperatureDescription = temperatureInfo?.GetDescription(temperatureUnit) ?? "";
return string.IsNullOrEmpty(temperatureDescription) ? baseDescription : $"{baseDescription}\n{temperatureDescription}";
}

Expand Down Expand Up @@ -320,7 +331,7 @@ private int FetchSystemInfo()
systemInfoValues.AddRange(memoryInfo.GenerateIndicator());
if (temperatureInfo.HasValue)
{
systemInfoValues.AddRange(temperatureInfo.Value.GenerateIndicator());
systemInfoValues.AddRange(temperatureInfo.Value.GenerateIndicator(temperatureUnit));
}
systemInfoValues.AddRange(storageInfo.GenerateIndicator());
if (networkInfo.HasValue)
Expand Down
24 changes: 24 additions & 0 deletions RunCat365/Properties/Strings.Designer.cs

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

12 changes: 12 additions & 0 deletions RunCat365/Properties/Strings.de.resx
Original file line number Diff line number Diff line change
Expand Up @@ -153,6 +153,18 @@
<data name="Theme_Dark" xml:space="preserve">
<value>Dunkel</value>
</data>
<data name="Menu_TemperatureUnit" xml:space="preserve">
<value>Temperatureinheit</value>
</data>
<data name="TemperatureUnit_System" xml:space="preserve">
<value>System</value>
</data>
<data name="TemperatureUnit_Celsius" xml:space="preserve">
<value>Celsius</value>
</data>
<data name="TemperatureUnit_Fahrenheit" xml:space="preserve">
<value>Fahrenheit</value>
</data>
<data name="Runner_Cat" xml:space="preserve">
<value>Katze</value>
</data>
Expand Down
12 changes: 12 additions & 0 deletions RunCat365/Properties/Strings.es.resx
Original file line number Diff line number Diff line change
Expand Up @@ -153,6 +153,18 @@
<data name="Theme_Dark" xml:space="preserve">
<value>Oscuro</value>
</data>
<data name="Menu_TemperatureUnit" xml:space="preserve">
<value>Unidad de temperatura</value>
</data>
<data name="TemperatureUnit_System" xml:space="preserve">
<value>Sistema</value>
</data>
<data name="TemperatureUnit_Celsius" xml:space="preserve">
<value>Celsius</value>
</data>
<data name="TemperatureUnit_Fahrenheit" xml:space="preserve">
<value>Fahrenheit</value>
</data>
<data name="Runner_Cat" xml:space="preserve">
<value>Gato</value>
</data>
Expand Down
12 changes: 12 additions & 0 deletions RunCat365/Properties/Strings.fr.resx
Original file line number Diff line number Diff line change
Expand Up @@ -153,6 +153,18 @@
<data name="Theme_Dark" xml:space="preserve">
<value>Sombre</value>
</data>
<data name="Menu_TemperatureUnit" xml:space="preserve">
<value>Unité de température</value>
</data>
<data name="TemperatureUnit_System" xml:space="preserve">
<value>Système</value>
</data>
<data name="TemperatureUnit_Celsius" xml:space="preserve">
<value>Celsius</value>
</data>
<data name="TemperatureUnit_Fahrenheit" xml:space="preserve">
<value>Fahrenheit</value>
</data>
<data name="Runner_Cat" xml:space="preserve">
<value>Chat</value>
</data>
Expand Down
12 changes: 12 additions & 0 deletions RunCat365/Properties/Strings.ja.resx
Original file line number Diff line number Diff line change
Expand Up @@ -153,6 +153,18 @@
<data name="Theme_Dark" xml:space="preserve">
<value>ダーク</value>
</data>
<data name="Menu_TemperatureUnit" xml:space="preserve">
<value>温度単位</value>
</data>
<data name="TemperatureUnit_System" xml:space="preserve">
<value>システム</value>
</data>
<data name="TemperatureUnit_Celsius" xml:space="preserve">
<value>摂氏</value>
</data>
<data name="TemperatureUnit_Fahrenheit" xml:space="preserve">
<value>華氏</value>
</data>
<data name="Runner_Cat" xml:space="preserve">
<value>ネコ</value>
</data>
Expand Down
12 changes: 12 additions & 0 deletions RunCat365/Properties/Strings.resx
Original file line number Diff line number Diff line change
Expand Up @@ -153,6 +153,18 @@
<data name="Theme_Dark" xml:space="preserve">
<value>Dark</value>
</data>
<data name="Menu_TemperatureUnit" xml:space="preserve">
<value>Temperature Unit</value>
</data>
<data name="TemperatureUnit_System" xml:space="preserve">
<value>System</value>
</data>
<data name="TemperatureUnit_Celsius" xml:space="preserve">
<value>Celsius</value>
</data>
<data name="TemperatureUnit_Fahrenheit" xml:space="preserve">
<value>Fahrenheit</value>
</data>
<data name="Runner_Cat" xml:space="preserve">
<value>Cat</value>
</data>
Expand Down
12 changes: 12 additions & 0 deletions RunCat365/Properties/Strings.zh-CN.resx
Original file line number Diff line number Diff line change
Expand Up @@ -153,6 +153,18 @@
<data name="Theme_Dark" xml:space="preserve">
<value>深色</value>
</data>
<data name="Menu_TemperatureUnit" xml:space="preserve">
<value>温度单位</value>
</data>
<data name="TemperatureUnit_System" xml:space="preserve">
<value>系统</value>
</data>
<data name="TemperatureUnit_Celsius" xml:space="preserve">
<value>摄氏</value>
</data>
<data name="TemperatureUnit_Fahrenheit" xml:space="preserve">
<value>华氏</value>
</data>
<data name="Runner_Cat" xml:space="preserve">
<value>猫咪</value>
</data>
Expand Down
12 changes: 12 additions & 0 deletions RunCat365/Properties/Strings.zh-TW.resx
Original file line number Diff line number Diff line change
Expand Up @@ -153,6 +153,18 @@
<data name="Theme_Dark" xml:space="preserve">
<value>深色</value>
</data>
<data name="Menu_TemperatureUnit" xml:space="preserve">
<value>溫度單位</value>
</data>
<data name="TemperatureUnit_System" xml:space="preserve">
<value>系統</value>
</data>
<data name="TemperatureUnit_Celsius" xml:space="preserve">
<value>攝氏</value>
</data>
<data name="TemperatureUnit_Fahrenheit" xml:space="preserve">
<value>華氏</value>
</data>
<data name="Runner_Cat" xml:space="preserve">
<value>貓咪</value>
</data>
Expand Down
14 changes: 13 additions & 1 deletion RunCat365/Properties/UserSettings.Designer.cs

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 3 additions & 0 deletions RunCat365/Properties/UserSettings.settings
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,9 @@
<Setting Name="Theme" Type="System.String" Scope="User">
<Value Profile="(Default)" />
</Setting>
<Setting Name="TemperatureUnit" Type="System.String" Scope="User">
<Value Profile="(Default)" />
</Setting>
<Setting Name="FPSMaxLimit" Type="System.String" Scope="User">
<Value Profile="(Default)">FPS40</Value>
</Setting>
Expand Down
33 changes: 11 additions & 22 deletions RunCat365/TemperatureRepository.cs
Original file line number Diff line number Diff line change
Expand Up @@ -29,44 +29,33 @@ internal static class TemperatureInfoExtension
private const float CELSIUS_TO_FAHRENHEIT_SCALE = 9.0f / 5.0f;
private const float CELSIUS_TO_FAHRENHEIT_OFFSET = 32.0f;

private static readonly bool usesFahrenheit = UsesFahrenheit();

internal static string GetDescription(this TemperatureInfo temperatureInfo)
internal static string GetDescription(this TemperatureInfo temperatureInfo, TemperatureUnit unit)
{
return $"{Strings.SystemInfo_Temperature}: {temperatureInfo.MaximumCelsius.ToLocalizedTemperatureText()}";
var resolvedUnit = unit.Resolve();
return $"{Strings.SystemInfo_Temperature}: {temperatureInfo.MaximumCelsius.ToLocalizedTemperatureText(resolvedUnit)}";
}

internal static List<string> GenerateIndicator(this TemperatureInfo temperatureInfo)
internal static List<string> GenerateIndicator(this TemperatureInfo temperatureInfo, TemperatureUnit unit)
{
var resolvedUnit = unit.Resolve();
return [
TreeFormatter.CreateRoot($"{Strings.SystemInfo_Temperature}:"),
TreeFormatter.CreateNode($"{Strings.SystemInfo_Average}: {temperatureInfo.AverageCelsius.ToLocalizedTemperatureText()}", false),
TreeFormatter.CreateNode($"{Strings.SystemInfo_Maximum}: {temperatureInfo.MaximumCelsius.ToLocalizedTemperatureText()}", true)
TreeFormatter.CreateNode($"{Strings.SystemInfo_Average}: {temperatureInfo.AverageCelsius.ToLocalizedTemperatureText(resolvedUnit)}", false),
TreeFormatter.CreateNode($"{Strings.SystemInfo_Maximum}: {temperatureInfo.MaximumCelsius.ToLocalizedTemperatureText(resolvedUnit)}", true)
];
}

private static string ToLocalizedTemperatureText(this float temperatureCelsius)
private static string ToLocalizedTemperatureText(this float temperatureCelsius, TemperatureUnit resolvedUnit)
{
var value = usesFahrenheit
var useFahrenheit = resolvedUnit == TemperatureUnit.Fahrenheit;
var value = useFahrenheit
? temperatureCelsius * CELSIUS_TO_FAHRENHEIT_SCALE + CELSIUS_TO_FAHRENHEIT_OFFSET
: temperatureCelsius;
var format = usesFahrenheit
var format = useFahrenheit
? Strings.SystemInfo_TemperatureFahrenheitFormat
: Strings.SystemInfo_TemperatureCelsiusFormat;
return string.Format(CultureInfo.CurrentCulture, format, value);
}

private static bool UsesFahrenheit()
{
try
{
return !new RegionInfo(CultureInfo.CurrentCulture.Name).IsMetric;
}
catch (ArgumentException)
{
return false;
}
}
}

internal class TemperaturePerformanceCounters
Expand Down
Loading