Skip to content

Commit 4cb1119

Browse files
committed
Added update interval option to control world state refresh rate.
Added status bar live readout for last update time.
1 parent 5f998d5 commit 4cb1119

File tree

12 files changed

+200
-16
lines changed

12 files changed

+200
-16
lines changed

Source/App.config

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,9 @@
1010
<setting name="LoadHidden" serializeAs="String">
1111
<value>False</value>
1212
</setting>
13+
<setting name="RefreshRate" serializeAs="String">
14+
<value>60</value>
15+
</setting>
1316
</ScriptFUSION.WarframeAlertTracker.Properties.Settings>
1417
</userSettings>
1518
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.1"/></startup></configuration>

Source/Forms/OptionsForm.Designer.cs

Lines changed: 99 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Source/Forms/OptionsForm.cs

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
using System.Windows.Forms;
1+
using System;
2+
using System.Windows.Forms;
23
using ScriptFUSION.WarframeAlertTracker.Controls;
34
using ScriptFUSION.WarframeAlertTracker.Registry;
45
using ScriptFUSION.WarframeAlertTracker.Properties;
@@ -8,6 +9,8 @@ namespace ScriptFUSION.WarframeAlertTracker.Forms {
89
public partial class OptionsForm : Form {
910
private readonly ImageRepository imageRepository;
1011

12+
private static readonly int[] updateIntervals = { 15, 30, 60, 120, 300 };
13+
1114
private Settings Settings { get; }
1215

1316
private RegistrySettings RegistrySettings { get; }
@@ -24,11 +27,27 @@ internal OptionsForm(Settings settings, RegistrySettings registrySettings, Fissu
2427
private void ReadSettings(Settings settings, RegistrySettings registrySettings) {
2528
loadSystem.Checked = registrySettings.LoadAtStartUp.Enabled;
2629
loadHidden.Checked = settings.LoadHidden;
30+
31+
try {
32+
updateInterval.Value = RefreshRateToUpdateInterval(settings.RefreshRate);
33+
}
34+
catch (ArgumentOutOfRangeException) {
35+
// Use default provided by UI.
36+
}
2737
}
2838

2939
private void WriteSettings() {
3040
RegistrySettings.LoadAtStartUp.Enabled = loadSystem.Checked;
3141
Settings.LoadHidden = loadHidden.Checked;
42+
Settings.RefreshRate = UpdateIntervalToRefreshRate(updateInterval.Value);
43+
}
44+
45+
private static int UpdateIntervalToRefreshRate(int interval) {
46+
return updateIntervals[interval];
47+
}
48+
49+
private static int RefreshRateToUpdateInterval(int rate) {
50+
return Array.IndexOf(updateIntervals, rate);
3251
}
3352

3453
private async void sample_Click(object sender, System.EventArgs e) {

Source/Forms/WatForm.Designer.cs

Lines changed: 22 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Source/Forms/WatForm.cs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
using System.Collections.Generic;
55
using System.Diagnostics;
66
using System.Linq;
7+
using System.Threading.Tasks;
78
using System.Windows.Forms;
89
using ScriptFUSION.WarframeAlertTracker.Alerts;
910
using ScriptFUSION.WarframeAlertTracker.Controls;
@@ -42,6 +43,19 @@ internal WatForm(WatApplication application) {
4243
fissures.ImageRepository = application.ImageRepository;
4344

4445
trayIcon.Icon = Icon;
46+
47+
ShowUpdateProgressLoop();
48+
}
49+
50+
private async void ShowUpdateProgressLoop() {
51+
while (!IsDisposed) {
52+
var elapsed = DateTime.Now - Application.CurrentWorldState.LastUpdate;
53+
var format = elapsed.TotalSeconds >= 60 ? @"m\m\ s\s" : @"s\s";
54+
55+
updateTimeRemaining.Text = elapsed.TotalSeconds < 1 ? "just now" : elapsed.ToString(format) + " ago";
56+
57+
await Task.Delay(500);
58+
}
4559
}
4660

4761
private void ToggleWindowVisibility() {

Source/Properties/Settings.Designer.cs

Lines changed: 12 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Source/Properties/Settings.cs

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,23 @@ namespace ScriptFUSION.WarframeAlertTracker.Properties {
66
internal sealed partial class Settings {
77
public event Action<AlertCollection> AlertsUpdate;
88

9+
public event Action<int> RefreshRateUpdate;
10+
911
public Settings() {
1012
if (Alerts == null) Alerts = new AlertCollection();
1113

1214
PropertyChanged += Settings_PropertyChanged;
1315
}
1416

1517
private void Settings_PropertyChanged(object sender, PropertyChangedEventArgs e) {
16-
if (e.PropertyName == "Alerts") {
17-
AlertsUpdate?.Invoke(Alerts);
18+
switch (e.PropertyName) {
19+
case "Alerts":
20+
AlertsUpdate?.Invoke(Alerts);
21+
break;
22+
23+
case "RefreshRate":
24+
RefreshRateUpdate?.Invoke(RefreshRate);
25+
break;
1826
}
1927
}
2028
}

Source/Properties/Settings.settings

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,5 +8,8 @@
88
<Setting Name="LoadHidden" Type="System.Boolean" Scope="User">
99
<Value Profile="(Default)">False</Value>
1010
</Setting>
11+
<Setting Name="RefreshRate" Type="System.Int32" Scope="User">
12+
<Value Profile="(Default)">60</Value>
13+
</Setting>
1114
</Settings>
1215
</SettingsFile>

Source/Registry/LoadAtStartupRegistryEntry.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,10 @@ public bool Enabled
2020

2121
public LoadAtStartupRegistryEntry()
2222
: base(Microsoft.Win32.Registry.CurrentUser, @"Software\Microsoft\Windows\CurrentVersion\Run", Application.ProductName) {
23-
enabled = IsSynchronised();
23+
enabled = IsEnabled();
2424
}
2525

26-
public override bool IsSynchronised() {
26+
private bool IsEnabled() {
2727
using (var key = Hive.OpenSubKey(Key)) {
2828
return key?.GetValue(Name)?.ToString().StartsWith(value) ?? false;
2929
}

Source/Registry/RegistryEntry.cs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,6 @@ protected RegistryEntry(RegistryKey hive, string key, string name) {
1414
Name = name;
1515
}
1616

17-
public abstract bool IsSynchronised();
18-
1917
public abstract void Synchronise();
2018
}
2119
}

0 commit comments

Comments
 (0)