Skip to content

Commit bfd76aa

Browse files
2.2.0.5 - Old screenshots are deleted and unsaved screenshots are saved within the same timer
1 parent 356ffb7 commit bfd76aa

File tree

7 files changed

+59
-145
lines changed

7 files changed

+59
-145
lines changed

FormMain.Designer.cs

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

FormMain.cs

Lines changed: 5 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,6 @@ public partial class FormMain : Form
4242

4343
private BackgroundWorker runDeleteSlidesThread = null;
4444

45-
private BackgroundWorker runDeleteOldScreenshotsThread = null;
46-
4745
private BackgroundWorker runFilterSearchThread = null;
4846

4947
private BackgroundWorker runSaveScreenshotsThread = null;
@@ -113,8 +111,6 @@ public FormMain(string[] args)
113111
// Get rid of the old "slides" directory that may still remain from an old version of the application.
114112
DeleteSlides();
115113

116-
DeleteOldScreenshots();
117-
118114
if (args.Length > 0)
119115
{
120116
ParseCommandLineArguments(args);
@@ -140,13 +136,6 @@ private void InitializeThreads()
140136
{
141137
Log.Write("Initializing threads");
142138

143-
runDeleteOldScreenshotsThread = new BackgroundWorker
144-
{
145-
WorkerReportsProgress = false,
146-
WorkerSupportsCancellation = true
147-
};
148-
runDeleteOldScreenshotsThread.DoWork += new DoWorkEventHandler(DoWork_runDeleteOldScreenshotsThread);
149-
150139
runDeleteSlidesThread = new BackgroundWorker
151140
{
152141
WorkerReportsProgress = false,
@@ -379,7 +368,7 @@ private void FormViewer_FormClosing(object sender, FormClosingEventArgs e)
379368
HideInterface();
380369

381370
Log.Write("Saving screenshots on forced application exit because Windows is shutting down");
382-
_screenshotCollection.Save();
371+
_screenshotCollection.Save((int)numericUpDownKeepScreenshotsForDays.Value);
383372

384373
if (runDateSearchThread != null && runDateSearchThread.IsBusy)
385374
{
@@ -391,11 +380,6 @@ private void FormViewer_FormClosing(object sender, FormClosingEventArgs e)
391380
runScreenshotSearchThread.CancelAsync();
392381
}
393382

394-
if (runDeleteOldScreenshotsThread != null && runDeleteOldScreenshotsThread.IsBusy)
395-
{
396-
runDeleteOldScreenshotsThread.CancelAsync();
397-
}
398-
399383
// Exit.
400384
Environment.Exit(0);
401385
}
@@ -476,17 +460,6 @@ private void SearchFilterValues()
476460
comboBoxFilterValue.EndUpdate();
477461
}
478462

479-
/// <summary>
480-
/// Deletes old screenshots.
481-
/// </summary>
482-
private void DeleteOldScreenshots()
483-
{
484-
if (runDeleteOldScreenshotsThread != null && !runDeleteOldScreenshotsThread.IsBusy)
485-
{
486-
runDeleteOldScreenshotsThread.RunWorkerAsync();
487-
}
488-
}
489-
490463
/// <summary>
491464
/// This thread is responsible for finding slides.
492465
/// </summary>
@@ -547,7 +520,7 @@ private void RunDeleteSlides(DoWorkEventArgs e)
547520

548521
private void RunSaveScreenshots(DoWorkEventArgs e)
549522
{
550-
_screenshotCollection.Save();
523+
_screenshotCollection.Save((int)numericUpDownKeepScreenshotsForDays.Value);
551524
}
552525

553526
private void RunFilterSearch(DoWorkEventArgs e)
@@ -569,15 +542,6 @@ private void RunFilterSearch(DoWorkEventArgs e)
569542
}
570543
}
571544

572-
/// <summary>
573-
/// This thread is responsible for deleting screenshots older than a specified number of days.
574-
/// </summary>
575-
/// <param name="e"></param>
576-
private void RunDeleteOldScreenshots(DoWorkEventArgs e)
577-
{
578-
_screenshotCollection.KeepScreenshotsForDays((int)numericUpDownKeepScreenshotsForDays.Value);
579-
}
580-
581545
/// <summary>
582546
/// Saves the user's settings.
583547
/// </summary>
@@ -756,8 +720,6 @@ private void StartScreenCapture()
756720
{
757721
SaveSettings();
758722

759-
DeleteOldScreenshots();
760-
761723
// Stop the date search thread if it's busy.
762724
if (runDateSearchThread != null && runDateSearchThread.IsBusy)
763725
{
@@ -1033,7 +995,7 @@ private void ExitApplication()
1033995
HideInterface();
1034996

1035997
Log.Write("Saving screenshots on clean application exit");
1036-
_screenshotCollection.Save();
998+
_screenshotCollection.Save((int)numericUpDownKeepScreenshotsForDays.Value);
1037999

10381000
if (runDateSearchThread != null && runDateSearchThread.IsBusy)
10391001
{
@@ -1045,11 +1007,6 @@ private void ExitApplication()
10451007
runScreenshotSearchThread.CancelAsync();
10461008
}
10471009

1048-
if (runDeleteOldScreenshotsThread != null && runDeleteOldScreenshotsThread.IsBusy)
1049-
{
1050-
runDeleteOldScreenshotsThread.CancelAsync();
1051-
}
1052-
10531010
// Exit.
10541011
Environment.Exit(0);
10551012
}
@@ -1090,16 +1047,6 @@ private void DoWork_runSaveScreenshotsThread(object sender, DoWorkEventArgs e)
10901047
RunSaveScreenshots(e);
10911048
}
10921049

1093-
/// <summary>
1094-
/// Runs the "delete old screenshots" thread.
1095-
/// </summary>
1096-
/// <param name="sender"></param>
1097-
/// <param name="e"></param>
1098-
private void DoWork_runDeleteOldScreenshotsThread(object sender, DoWorkEventArgs e)
1099-
{
1100-
RunDeleteOldScreenshots(e);
1101-
}
1102-
11031050
private void DoWork_runFilterSearchThread(object sender, DoWorkEventArgs e)
11041051
{
11051052
RunFilterSearch(e);
@@ -2882,16 +2829,6 @@ private void notifyIcon_MouseMove(object sender, MouseEventArgs e)
28822829
}
28832830
}
28842831

2885-
/// <summary>
2886-
/// Deletes old screenshots (and also writes to the screenshots.xml file) every minute.
2887-
/// </summary>
2888-
/// <param name="sender"></param>
2889-
/// <param name="e"></param>
2890-
private void timerDeleteOldScreenshots_Tick(object sender, EventArgs e)
2891-
{
2892-
DeleteOldScreenshots();
2893-
}
2894-
28952832
private void tabControlViews_Selected(object sender, TabControlEventArgs e)
28962833
{
28972834
ShowScreenshotBySlideIndex();
@@ -2945,11 +2882,11 @@ private void comboBoxFilterType_SelectedIndexChanged(object sender, EventArgs e)
29452882
}
29462883

29472884
/// <summary>
2948-
/// Saves screenshots every hour.
2885+
/// Saves screenshots every minute.
29492886
/// </summary>
29502887
/// <param name="sender"></param>
29512888
/// <param name="e"></param>
2952-
private void timerSaveScreenshots_Tick(object sender, EventArgs e)
2889+
private void timerPerformMaintenance_Tick(object sender, EventArgs e)
29532890
{
29542891
SaveScreenshots();
29552892
}

FormMain.resx

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -418,13 +418,10 @@
418418
<metadata name="timerScreenCapture.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
419419
<value>332, 19</value>
420420
</metadata>
421-
<metadata name="timerDeleteOldScreenshots.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
422-
<value>783, 24</value>
423-
</metadata>
424421
<metadata name="openFileDialog1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
425422
<value>28, 25</value>
426423
</metadata>
427-
<metadata name="timerSaveScreenshots.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
424+
<metadata name="timerPerformMaintenance.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
428425
<value>707, 61</value>
429426
</metadata>
430427
<metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">

Properties/AssemblyInfo.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,6 @@
3232
// You can specify all the values or you can default the Build and Revision Numbers
3333
// by using the '*' as shown below:
3434
// [assembly: AssemblyVersion("1.0.*")]
35-
[assembly: AssemblyVersion("2.2.0.4")]
36-
[assembly: AssemblyFileVersion("2.2.0.4")]
35+
[assembly: AssemblyVersion("2.2.0.5")]
36+
[assembly: AssemblyFileVersion("2.2.0.5")]
3737
[assembly: NeutralResourcesLanguageAttribute("en-CA")]

app.manifest

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<assemblyIdentity
44
type="win32"
55
name="GavinKendall.AutoScreenCapture"
6-
version="2.2.0.4"/>
6+
version="2.2.0.5"/>
77
<asmv3:application>
88
<asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
99
<dpiAware>True/PM</dpiAware>

screenshots/ScreenshotCollection.cs

Lines changed: 43 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -50,70 +50,24 @@ public class ScreenshotCollection
5050
public string AppCodename { get; set; }
5151
public string AppVersion { get; set; }
5252

53-
public void Add(Screenshot screenshot)
53+
public void Add(Screenshot screenshot)
5454
{
55-
if (!_screenshotList.Contains(screenshot))
55+
lock (_screenshotList)
5656
{
57-
_screenshotList.Add(screenshot);
58-
}
59-
60-
if (screenshot.Slide != null && !string.IsNullOrEmpty(screenshot.Slide.Name))
61-
{
62-
if (!_slideNameList.Contains(screenshot.Slide.Name))
57+
if (!_screenshotList.Contains(screenshot))
6358
{
64-
_slideNameList.Add(screenshot.Slide.Name);
65-
_slideList.Add(screenshot.Slide);
59+
_screenshotList.Add(screenshot);
6660
}
67-
}
68-
}
69-
70-
public void KeepScreenshotsForDays(int days)
71-
{
72-
try
73-
{
74-
_mutexWriteFile.WaitOne();
7561

76-
lock (_screenshotList)
62+
if (screenshot.Slide != null && !string.IsNullOrEmpty(screenshot.Slide.Name))
7763
{
78-
if (_screenshotList != null && _screenshotList.Count > 0 && days > 0)
64+
if (!_slideNameList.Contains(screenshot.Slide.Name))
7965
{
80-
List<Screenshot> screenshotsToDelete = _screenshotList.Where(x => !string.IsNullOrEmpty(x.Date) && Convert.ToDateTime(x.Date) <= DateTime.Now.Date.AddDays(-days)).ToList();
81-
82-
if (screenshotsToDelete != null && screenshotsToDelete.Count > 0)
83-
{
84-
foreach (Screenshot screenshot in screenshotsToDelete)
85-
{
86-
XmlNodeList nodesToDelete = xDoc.SelectNodes(SCREENSHOT_XPATH + "[" + SCREENSHOT_DATE + "='" + screenshot.Date + "']");
87-
88-
foreach (XmlNode node in nodesToDelete)
89-
{
90-
node.ParentNode.RemoveChild(node);
91-
}
92-
93-
if (File.Exists(screenshot.Path))
94-
{
95-
File.Delete(screenshot.Path);
96-
}
97-
98-
_screenshotList.Remove(screenshot);
99-
}
100-
101-
lock (xDoc)
102-
{
103-
xDoc.Save(FileSystem.ApplicationFolder + FileSystem.ScreenshotsFile);
104-
}
105-
}
66+
_slideNameList.Add(screenshot.Slide.Name);
67+
_slideList.Add(screenshot.Slide);
10668
}
10769
}
10870
}
109-
catch (Exception ex)
110-
{
111-
Log.Write("ScreenshotCollection::KeepScreenshotsForDays", ex);
112-
}
113-
finally
114-
{
115-
_mutexWriteFile.ReleaseMutex();
116-
}
11771
}
11872

11973
public Screenshot Get(int index)
@@ -546,7 +500,11 @@ public void Load(ImageFormatCollection imageFormatCollection, ScreenCollection
546500
}
547501
}
548502

549-
public void Save()
503+
/// <summary>
504+
///
505+
/// </summary>
506+
/// <param name="keepScreenshotsForDays"></param>
507+
public void Save(int keepScreenshotsForDays)
550508
{
551509
try
552510
{
@@ -560,6 +518,36 @@ public void Save()
560518

561519
lock (_screenshotList)
562520
{
521+
if (_screenshotList != null && _screenshotList.Count > 0 && keepScreenshotsForDays > 0)
522+
{
523+
List<Screenshot> screenshotsToDelete = _screenshotList.Where(x => !string.IsNullOrEmpty(x.Date) && Convert.ToDateTime(x.Date) <= DateTime.Now.Date.AddDays(-keepScreenshotsForDays)).ToList();
524+
525+
if (screenshotsToDelete != null && screenshotsToDelete.Count > 0)
526+
{
527+
foreach (Screenshot screenshot in screenshotsToDelete)
528+
{
529+
XmlNodeList nodesToDelete = xDoc.SelectNodes(SCREENSHOT_XPATH + "[" + SCREENSHOT_DATE + "='" + screenshot.Date + "']");
530+
531+
foreach (XmlNode node in nodesToDelete)
532+
{
533+
node.ParentNode.RemoveChild(node);
534+
}
535+
536+
if (File.Exists(screenshot.Path))
537+
{
538+
File.Delete(screenshot.Path);
539+
}
540+
541+
_screenshotList.Remove(screenshot);
542+
}
543+
544+
lock (xDoc)
545+
{
546+
xDoc.Save(FileSystem.ApplicationFolder + FileSystem.ScreenshotsFile);
547+
}
548+
}
549+
}
550+
563551
for (int i = 0; i < _screenshotList.Count; i++)
564552
{
565553
Screenshot screenshot = _screenshotList[i];

0 commit comments

Comments
 (0)