Skip to content

Commit 854cc3d

Browse files
committed
fix #13 remember window size, fix crash on closing app while scanning
1 parent f1ecca7 commit 854cc3d

File tree

8 files changed

+170
-85
lines changed

8 files changed

+170
-85
lines changed

nspector/Common/DrsScannerService.cs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ private int CalcPercent(int current, int max)
7979
return (current > 0) ? (int)Math.Round((current * 100f) / max) : 0; ;
8080
}
8181

82-
public async Task ScanForModifiedProfilesAsync(IProgress<int> progress)
82+
public async Task ScanForModifiedProfilesAsync(IProgress<int> progress, CancellationToken token = default(CancellationToken))
8383
{
8484
await Task.Run(() =>
8585
{
@@ -98,6 +98,8 @@ await Task.Run(() =>
9898

9999
foreach (IntPtr hProfile in profileHandles)
100100
{
101+
if (token.IsCancellationRequested) break;
102+
101103
progress?.Report(CalcPercent(curProfilePos++, maxProfileCount));
102104

103105
var profile = GetProfileInfo(hSession, hProfile);
@@ -165,7 +167,7 @@ await Task.Run(() =>
165167
});
166168
}
167169

168-
public async Task ScanForPredefinedProfileSettingsAsync(IProgress<int> progress)
170+
public async Task ScanForPredefinedProfileSettingsAsync(IProgress<int> progress, CancellationToken token = default(CancellationToken))
169171
{
170172
await Task.Run(() =>
171173
{
@@ -181,6 +183,8 @@ await Task.Run(() =>
181183

182184
foreach (IntPtr hProfile in profileHandles)
183185
{
186+
if (token.IsCancellationRequested) break;
187+
184188
progress?.Report(CalcPercent(curProfilePos++, maxProfileCount));
185189

186190
var profile = GetProfileInfo(hSession, hProfile);
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
using System;
2+
using System.IO;
3+
using System.Text;
4+
using System.Windows.Forms;
5+
6+
namespace nspector.Common.Helper
7+
{
8+
public class UserSettings
9+
{
10+
public int WindowTop { get; set; }
11+
12+
public int WindowLeft { get; set; }
13+
14+
public int WindowWidth { get; set; }
15+
16+
public int WindowHeight { get; set; }
17+
18+
public FormWindowState WindowState { get; set; }
19+
20+
private static string GetSettingsFilename()
21+
{
22+
var path = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), Application.ProductName);
23+
if (!Directory.Exists(path)) Directory.CreateDirectory(path);
24+
return Path.Combine(path, "settings.xml"); ;
25+
}
26+
27+
public void SaveSettings()
28+
{
29+
XMLHelper<UserSettings>.SerializeToXmlFile(this, GetSettingsFilename(), Encoding.Unicode, true);
30+
}
31+
32+
public static UserSettings LoadSettings()
33+
{
34+
var filename = GetSettingsFilename();
35+
if (!File.Exists(filename)) return new UserSettings();
36+
37+
return XMLHelper<UserSettings>.DeserializeFromXMLFile(GetSettingsFilename());
38+
}
39+
}
40+
}

nspector/app.config

Lines changed: 0 additions & 3 deletions
This file was deleted.

nspector/frmBitEditor.cs

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -211,13 +211,6 @@ private void ApplyValueToProfile(uint val)
211211
.SetDwordValueToProfile(_SettingsOwner._CurrentProfile, _Settingid, val);
212212
}
213213

214-
private uint GetStoredValue()
215-
{
216-
return DrsServiceLocator
217-
.SettingService
218-
.GetDwordValueFromProfile(_SettingsOwner._CurrentProfile, _Settingid);
219-
}
220-
221214
private async void btnDirectApply_Click(object sender, EventArgs e)
222215
{
223216
ApplyValueToProfile(_CurrentValue);

nspector/frmDrvSettings.Designer.cs

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

nspector/frmDrvSettings.cs

Lines changed: 57 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -536,6 +536,7 @@ private void frmDrvSettings_Load(object sender, EventArgs e)
536536
{
537537
SetupLayout();
538538
SetTitleVersion();
539+
LoadSettings();
539540

540541
RefreshProfilesCombo();
541542
cbProfiles.Text = GetBaseProfileName();
@@ -661,6 +662,8 @@ private void ShowExportProfiles()
661662
MessageBox.Show("No user modified profiles found! Nothing to export.", "Userprofile Search", MessageBoxButtons.OK, MessageBoxIcon.Information);
662663
}
663664

665+
private CancellationTokenSource _scannerCancelationTokenSource;
666+
664667
private async Task ScanProfilesSilentAsync(bool scanPredefined, bool showProfileDialog)
665668
{
666669
if (_skipScan)
@@ -671,6 +674,8 @@ private async Task ScanProfilesSilentAsync(bool scanPredefined, bool showProfile
671674
pbMain.Minimum = 0;
672675
pbMain.Maximum = 100;
673676

677+
_scannerCancelationTokenSource = new CancellationTokenSource();
678+
674679
var progressHandler = new Progress<int>(value =>
675680
{
676681
pbMain.Value = value;
@@ -680,12 +685,12 @@ private async Task ScanProfilesSilentAsync(bool scanPredefined, bool showProfile
680685
if (scanPredefined && !_alreadyScannedForPredefinedSettings)
681686
{
682687
_alreadyScannedForPredefinedSettings = true;
683-
await _scanner.ScanForPredefinedProfileSettingsAsync(progressHandler);
688+
await _scanner.ScanForPredefinedProfileSettingsAsync(progressHandler, _scannerCancelationTokenSource.Token);
684689
_meta.ResetMetaCache();
685690
tscbShowScannedUnknownSettings.Enabled = true;
686691
}
687692

688-
await _scanner.ScanForModifiedProfilesAsync(progressHandler);
693+
await _scanner.ScanForModifiedProfilesAsync(progressHandler, _scannerCancelationTokenSource.Token);
689694
RefreshModifiesProfilesDropDown();
690695
tsbModifiedProfiles.Enabled = true;
691696

@@ -808,7 +813,7 @@ private async void frmDrvSettings_Shown(object sender, EventArgs e)
808813
new Thread(SetTaskbarIcon).Start();
809814
await ScanProfilesSilentAsync(true, false);
810815

811-
if (WindowState != FormWindowState.Maximized)
816+
if (!_scannerCancelationTokenSource.Token.IsCancellationRequested && WindowState != FormWindowState.Maximized)
812817
{
813818
new MessageHelper().bringAppToFront((int)this.Handle);
814819
}
@@ -1127,9 +1132,57 @@ private void lvSettings_DoubleClick(object sender, EventArgs e)
11271132
}
11281133
}
11291134

1130-
private void lvSettings_KeyDown(object sender, KeyEventArgs e)
1135+
private void HandleScreenConstraints()
1136+
{
1137+
var workingArea = Screen.GetWorkingArea(this);
1138+
1139+
if (Left < workingArea.X)
1140+
Left = workingArea.X;
1141+
1142+
if (Top < workingArea.Y)
1143+
Top = workingArea.Y;
1144+
1145+
if ((Left + Width) > workingArea.X + workingArea.Width)
1146+
Left = (workingArea.X + workingArea.Width) - Width;
1147+
1148+
if ((Top + Height) > workingArea.Y + workingArea.Height)
1149+
Top = (workingArea.Y + workingArea.Height) - Height;
1150+
}
1151+
1152+
private void SaveSettings()
1153+
{
1154+
var settings = UserSettings.LoadSettings();
1155+
1156+
if (WindowState == FormWindowState.Normal)
1157+
{
1158+
settings.WindowTop = Top;
1159+
settings.WindowLeft = Left;
1160+
settings.WindowHeight = Height;
1161+
settings.WindowWidth = Width;
1162+
}
1163+
else
1164+
{
1165+
settings.WindowTop = RestoreBounds.Top;
1166+
settings.WindowLeft = RestoreBounds.Left;
1167+
settings.WindowHeight = RestoreBounds.Height;
1168+
settings.WindowWidth = RestoreBounds.Width;
1169+
}
1170+
settings.WindowState = WindowState;
1171+
settings.SaveSettings();
1172+
}
1173+
1174+
private void LoadSettings()
11311175
{
1176+
var settings = UserSettings.LoadSettings();
1177+
SetBounds(settings.WindowLeft, settings.WindowTop, settings.WindowWidth, settings.WindowHeight);
1178+
WindowState = settings.WindowState != FormWindowState.Minimized ? settings.WindowState : FormWindowState.Normal;
1179+
HandleScreenConstraints();
1180+
}
11321181

1182+
private void frmDrvSettings_FormClosed(object sender, FormClosedEventArgs e)
1183+
{
1184+
_scannerCancelationTokenSource?.Cancel();
1185+
SaveSettings();
11331186
}
11341187
}
11351188
}

nspector/frmDrvSettings.resx

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@
125125
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
126126
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
127127
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAADI
128-
DAAAAk1TRnQBSQFMAgEBBAEAAZABBwGQAQcBEAEAARABAAT/ARkBAAj/AUIBTQE2BwABNgMAASgDAAFA
128+
DAAAAk1TRnQBSQFMAgEBBAEAAagBBwGoAQcBEAEAARABAAT/ARkBAAj/AUIBTQE2BwABNgMAASgDAAFA
129129
AwABIAMAAQEBAAEYBgABGP8A/wD/AP8A/wD/AP8A/wD/AP8A/wD/ADMAAcgBvQGvAacBkQF5BgAD/iEA
130130
A+QD2gYAA/4hAAGXAcMBqwFMAZwBcAYAA/4hAAOmA2gGAAP+FQAB8gHxAfABqQGPAXQBzwHHAbwD/wG6
131131
AaUBjAGuAZQBeAHxAe8B7QHvAe0B6wGhAYgBbQHkAeAB2xIAA/UD3QPmA/8D4APeA/QD8wPaA+4SAAHt
@@ -195,7 +195,7 @@
195195
<data name="tsbRefreshProfile.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
196196
<value>
197197
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
198-
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGgSURBVDhPrZPLSsNAFIb7BoKP4Upw5UoQBHfmMrG1olCa
198+
YQUAAAAJcEhZcwAAEnQAABJ0Ad5mH3gAAAGgSURBVDhPrZPLSsNAFIb7BoKP4Upw5UoQBHfmMrG1olCa
199199
pFoExY2KiHcRERFEwYUKglSQesFeQK2rFkFr0Y26MRAKpa2+QS+/MzGpaS114wdhQv7/nDknZ8bx7xDi
200200
a+FFeYvnFU2QFHCcRxdEOcQTmTctjWHB4UgM2Wwe5XIZ+fwnko/PWF3bhiAqJzRRp2mtD0/U7oWlTbAK
201201
Bj1jYO/vmo5SqYR44gG9fcPgiNpu2uvDkrCVEG+zIMkqcfqQuEuiWCwidhsHJ8qHhtEOLX2H9cxW81MF
@@ -208,7 +208,7 @@
208208
<data name="tsbRestoreProfile.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
209209
<value>
210210
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
211-
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAFcSURBVDhP3VFNK0RhFL4/wNbM3PdcCgsfsbHDgkJKWPgD
211+
YQUAAAAJcEhZcwAAEnQAABJ0Ad5mH3gAAAFcSURBVDhP3VFNK0RhFL4/wNbM3PdcCgsfsbHDgkJKWPgD
212212
ilJGNN73XEs/gbKUmvITuPc9d5iwYKfZyULZ26BkhTjnnXs1TWTNqafOx/M895z3ev84FsrwigQfvyGl
213213
1yNM1IyO4cQNrUKdqGFj1awmuGgWZnDC9Wouz8U1xnATkj+oE78HLVyWKPeAlH9EUkOa1FyzWOAxeVIS
214214
JuxtRoVeERhS51zviLlsIHNjYRltW1ejWOChDdbqhEIfRoVbE0PZbXXoP3G/ygZFNyeYZ4xlwgzC9fAI
@@ -220,7 +220,7 @@
220220
<data name="tsbCreateProfile.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
221221
<value>
222222
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
223-
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAEgSURBVDhP3Y/PKwRhHIf3f5g/wMWUlIuDUk5y5MCB3Dk4
223+
YQUAAAAJcEhZcwAAEnQAABJ0Ad5mH3gAAAEgSURBVDhP3Y/PKwRhHIf3f5g/wMWUlIuDUk5y5MCB3Dk4
224224
7EUbBwdXJ3EXsksjidlk2x27NrXt5kdjlTQXbSFK2iaGaX7s491Zjppx5FNP7/et9/n0fmP/PFwu8JGd
225225
5OsaLdxpNIyVQPL1GcyDwWDmVsEx1sLLGvdHeLtduKVh/GIPTlbGPRvF3mmjXm0Vh8a9SEBGAl1gCMoS
226226
j2p/uOyX5/AK4/i5bqgI8UrQPFUJO9mOr43gHk/9XOToy9QLCd4O+yAvxCb7gg0JK9WJqcWxTubDf+Kd
@@ -237,7 +237,7 @@
237237
<data name="toolStripButton5.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
238238
<value>
239239
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
240-
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIDSURBVDhPpZLrS5NhGMb3j4SWh0oRQVExD4gonkDpg4hG
240+
YQUAAAAJcEhZcwAAEnQAABJ0Ad5mH3gAAAIDSURBVDhPpZLrS5NhGMb3j4SWh0oRQVExD4gonkDpg4hG
241241
YKxG6WBogkMZKgPNCEVJFBGdGETEvgwyO9DJE5syZw3PIlPEE9pgBCLZ5XvdMB8Ew8gXbl54nuf63dd9
242242
0OGSnwCahxbPRNPAPMw9Xpg6ZmF46kZZ0xSKzJPIrhpDWsVnpBhGkKx3nAX8Pv7z1zg8OoY/cITdn4fw
243243
bf/C0kYAN3Ma/w3gWfZL5kzTKBxjWyK2DftwI9tyMYCZKXbNHaD91bLYJrDXsYbrWfUKwJrPE9M2M1Oc
@@ -252,7 +252,7 @@
252252
<data name="toolStripButton6.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
253253
<value>
254254
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
255-
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIDSURBVDhPpZLrS5NhGMb3j4SWh0oRQVExD4gonkDpg4hG
255+
YQUAAAAJcEhZcwAAEnQAABJ0Ad5mH3gAAAIDSURBVDhPpZLrS5NhGMb3j4SWh0oRQVExD4gonkDpg4hG
256256
YKxG6WBogkMZKgPNCEVJFBGdGETEvgwyO9DJE5syZw3PIlPEE9pgBCLZ5XvdMB8Ew8gXbl54nuf63dd9
257257
0OGSnwCahxbPRNPAPMw9Xpg6ZmF46kZZ0xSKzJPIrhpDWsVnpBhGkKx3nAX8Pv7z1zg8OoY/cITdn4fw
258258
bf/C0kYAN3Ma/w3gWfZL5kzTKBxjWyK2DftwI9tyMYCZKXbNHaD91bLYJrDXsYbrWfUKwJrPE9M2M1Oc

nspector/nvidiaProfileInspector.csproj

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,7 @@
139139
<Compile Include="Common\Helper\ShortcutResolver.cs" />
140140
<Compile Include="Common\Helper\SteamAppResolver.cs" />
141141
<Compile Include="Common\Helper\TempFile.cs" />
142+
<Compile Include="Common\Helper\UserSettings.cs" />
142143
<Compile Include="Common\Import\ImportExportUitl.cs" />
143144
<Compile Include="Common\Import\SettingValueType.cs" />
144145
<Compile Include="Common\Meta\NvD3dUmxSettingMetaService.cs" />
@@ -225,9 +226,6 @@
225226
<DependentUpon>Resources.resx</DependentUpon>
226227
<DesignTime>True</DesignTime>
227228
</Compile>
228-
<None Include="app.config">
229-
<SubType>Designer</SubType>
230-
</None>
231229
<None Include="app.manifest">
232230
<SubType>Designer</SubType>
233231
</None>

0 commit comments

Comments
 (0)