Skip to content

Commit

Permalink
The speed of the selected fan is automatically restored when the appl…
Browse files Browse the repository at this point in the history
…ication is restarted.
  • Loading branch information
t-miyake committed Oct 2, 2017
1 parent 31ef5d9 commit 279d015
Show file tree
Hide file tree
Showing 5 changed files with 63 additions and 13 deletions.
2 changes: 1 addition & 1 deletion PocketFanController/AboutWindow.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
Title="About | Pocket Fan Controller" Height="300" Width="300" ScrollViewer.VerticalScrollBarVisibility="Disabled" ShowInTaskbar="False" ResizeMode="NoResize" WindowStartupLocation="CenterScreen">
<StackPanel>
<TextBlock Padding="8,0,0,0" Margin="0,5,0,0">Pocket Fan Controller</TextBlock>
<TextBlock Padding="15,0,0,0">Version 0.5.2</TextBlock>
<TextBlock Padding="15,0,0,0">Version 0.5.3</TextBlock>
<TextBlock Padding="15,0,0,0">© 2017 Takafumi Miyake</TextBlock>

<TextBlock Padding="8,0,0,0" Margin="0,10,0,0">Third-Party Software Usage and Licenses</TextBlock>
Expand Down
3 changes: 3 additions & 0 deletions PocketFanController/App.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,9 @@ protected override void OnStartup(StartupEventArgs e)
}
protected override void OnExit(ExitEventArgs e)
{
//現在の状態を保存する。(再起動時に復元できるように)
Model.Instance.SaveLastState();

//アプリケーション終了時にデフォルト設定に戻す。(安全のため)
Model.Instance.SetDefault();

Expand Down
64 changes: 54 additions & 10 deletions PocketFanController/Model.cs
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ public sealed class Model
{
// Singleton instance.
public static Model Instance { get; } = new Model();

private Model(){}

public int CurrentState { get; set; } = 0;
Expand All @@ -23,10 +24,18 @@ private Model(){}

public void GetManualConfigs()
{
ManualMargin = ReadReg(@"SYSTEM\CurrentControlSet\Services\wfan0109", "savedmargin") == 0 ? 5 : ReadReg(@"SYSTEM\CurrentControlSet\Services\wfan0109", "savedmargin");
ManualT0 = ReadReg(@"SYSTEM\CurrentControlSet\Services\wfan0109", "savedt0") == 0 ? 40 : ReadReg(@"SYSTEM\CurrentControlSet\Services\wfan0109", "savedt0");
ManualT1 = ReadReg(@"SYSTEM\CurrentControlSet\Services\wfan0109", "savedt1") == 0 ? 60 : ReadReg(@"SYSTEM\CurrentControlSet\Services\wfan0109", "savedt1");
ManualT2 = ReadReg(@"SYSTEM\CurrentControlSet\Services\wfan0109", "savedt2") == 0 ? 75 : ReadReg(@"SYSTEM\CurrentControlSet\Services\wfan0109", "savedt2");
ManualMargin = ReadReg(@"SYSTEM\CurrentControlSet\Services\wfan0109", "savedmargin") == 0
? 5
: ReadReg(@"SYSTEM\CurrentControlSet\Services\wfan0109", "savedmargin");
ManualT0 = ReadReg(@"SYSTEM\CurrentControlSet\Services\wfan0109", "savedt0") == 0
? 40
: ReadReg(@"SYSTEM\CurrentControlSet\Services\wfan0109", "savedt0");
ManualT1 = ReadReg(@"SYSTEM\CurrentControlSet\Services\wfan0109", "savedt1") == 0
? 60
: ReadReg(@"SYSTEM\CurrentControlSet\Services\wfan0109", "savedt1");
ManualT2 = ReadReg(@"SYSTEM\CurrentControlSet\Services\wfan0109", "savedt2") == 0
? 75
: ReadReg(@"SYSTEM\CurrentControlSet\Services\wfan0109", "savedt2");
}

public void GetCurrentStatus()
Expand All @@ -36,7 +45,7 @@ public void GetCurrentStatus()
var state2 = new[] {99, 10, 99};
var state3 = new[] {10, 99, 99};
var state4 = new[] {99, 99, 85};
var states = new[] {state0, state1, state2, state3,state4};
var states = new[] {state0, state1, state2, state3, state4};

var t0 = ReadReg(@"SYSTEM\CurrentControlSet\Services\wfan0109", "t0");
var t1 = ReadReg(@"SYSTEM\CurrentControlSet\Services\wfan0109", "t1");
Expand Down Expand Up @@ -106,10 +115,14 @@ public void SetSlowest()

public void SetManual()
{
WriteReg(@"SYSTEM\CurrentControlSet\Services\wfan0109", "margin", ReadReg(@"SYSTEM\CurrentControlSet\Services\wfan0109", "savedmargin"));
WriteReg(@"SYSTEM\CurrentControlSet\Services\wfan0109", "t0", ReadReg(@"SYSTEM\CurrentControlSet\Services\wfan0109", "savedt0"));
WriteReg(@"SYSTEM\CurrentControlSet\Services\wfan0109", "t1", ReadReg(@"SYSTEM\CurrentControlSet\Services\wfan0109", "savedt1"));
WriteReg(@"SYSTEM\CurrentControlSet\Services\wfan0109", "t2", ReadReg(@"SYSTEM\CurrentControlSet\Services\wfan0109", "savedt2"));
WriteReg(@"SYSTEM\CurrentControlSet\Services\wfan0109", "margin",
ReadReg(@"SYSTEM\CurrentControlSet\Services\wfan0109", "savedmargin"));
WriteReg(@"SYSTEM\CurrentControlSet\Services\wfan0109", "t0",
ReadReg(@"SYSTEM\CurrentControlSet\Services\wfan0109", "savedt0"));
WriteReg(@"SYSTEM\CurrentControlSet\Services\wfan0109", "t1",
ReadReg(@"SYSTEM\CurrentControlSet\Services\wfan0109", "savedt1"));
WriteReg(@"SYSTEM\CurrentControlSet\Services\wfan0109", "t2",
ReadReg(@"SYSTEM\CurrentControlSet\Services\wfan0109", "savedt2"));
RestartService();
}

Expand All @@ -121,7 +134,38 @@ public void SaveManualConfig(int margin, int t0, int t1, int t2)
WriteReg(@"SYSTEM\CurrentControlSet\Services\wfan0109", "savedt2", t2);
}

public void WriteReg(string subKey, string keyName, int value)
public void SaveLastState() => WriteReg(@"SYSTEM\CurrentControlSet\Services\wfan0109", "laststate",CurrentState);

public void LoadAndResetLastState()
{
var lastState = ReadReg(@"SYSTEM\CurrentControlSet\Services\wfan0109", "laststate");
switch (lastState)
{
case 0:
SetDefault();
break;
case 1:
SetFastest();
break;
case 2:
SetFast();
break;
case 3:
SetSlow();
break;
case 4:
SetSlowest();
break;
case 5:
SetManual();
break;
default:
SetDefault();
break;
}
}

public void WriteReg(string subKey, string keyName, int value)
{
var key = Registry.LocalMachine.CreateSubKey(subKey);
key?.SetValue(keyName, value, RegistryValueKind.DWord);
Expand Down
3 changes: 3 additions & 0 deletions PocketFanController/NotifyIconWrapper.cs
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,9 @@ public NotifyIconWrapper()
//ちょっと無理やりだけど、アイコンをクリックするたびにステータスを更新する
notifyIcon1.Click += UpdateCurrentStatus;

//前回終了時の状態を復元する。
Model.LoadAndResetLastState();

UpdateCurrentStatus(null,null);
}

Expand Down
4 changes: 2 additions & 2 deletions PocketFanController/Properties/AssemblyInfo.cs
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@
// すべての値を指定するか、次を使用してビルド番号とリビジョン番号を既定に設定できます
// 既定値にすることができます:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("0.5.2.0")]
[assembly: AssemblyFileVersion("0.5.2.0")]
[assembly: AssemblyVersion("0.5.3.0")]
[assembly: AssemblyFileVersion("0.5.3.0")]
[assembly: NeutralResourcesLanguage("en")]

0 comments on commit 279d015

Please sign in to comment.