Horizon – Diff between revs 23 and 28
?pathlinks?
Rev 23 | Rev 28 | |||
---|---|---|---|---|
Line 79... | Line 79... | |||
79 | |
79 | |
|
Line 80... | Line 80... | |||
80 | private RegisterService _horizonDiscoveryService; |
80 | private RegisterService _horizonDiscoveryService; |
|
Line -... | Line 81... | |||
- | 81 | |
||
- | 82 | private WatsonTcpServer _horizonNetworkShare; |
||
81 | |
83 | |
|
Line 82... | Line 84... | |||
82 | private WatsonTcpServer _horizonNetworkShare; |
84 | private NotifyFilters _fileSystemWatchersNotifyFilters = NotifyFilters.LastWrite | NotifyFilters.Attributes; |
|
Line 83... | Line 85... | |||
83 | |
85 | |
|
Line 159... | Line 161... | |||
159 | } |
161 | } |
|
Line 160... | Line 162... | |||
160 | |
162 | |
|
Line 161... | Line 163... | |||
161 | #endregion |
163 | #endregion |
|
- | 164 | |
||
- | 165 | #region Event Handlers |
||
- | 166 | private void attributesToolStripMenuItem_CheckStateChanged(object sender, EventArgs e) |
||
- | 167 | { |
||
- | 168 | var toolStripMenuItem = (ToolStripMenuItem)sender; |
||
- | 169 | |
||
- | 170 | var text = toolStripMenuItem.Text; |
||
- | 171 | var state = toolStripMenuItem.CheckState; |
||
- | 172 | |
||
- | 173 | foreach (var flag in Enum.GetNames(typeof(NotifyFilters))) |
||
- | 174 | { |
||
- | 175 | if (string.Equals(flag, text, StringComparison.OrdinalIgnoreCase)) |
||
- | 176 | { |
||
- | 177 | if (Enum.TryParse<NotifyFilters>(flag, true, out var setting)) |
||
- | 178 | { |
||
- | 179 | switch (state) |
||
- | 180 | { |
||
- | 181 | case CheckState.Checked: |
||
- | 182 | _fileSystemWatchersNotifyFilters = _fileSystemWatchersNotifyFilters | setting; |
||
- | 183 | break; |
||
- | 184 | case CheckState.Unchecked: |
||
- | 185 | _fileSystemWatchersNotifyFilters = _fileSystemWatchersNotifyFilters & ~setting; |
||
- | 186 | break; |
||
- | 187 | } |
||
- | 188 | |
||
- | 189 | } |
||
- | 190 | } |
||
- | 191 | } |
||
- | 192 | |
||
- | 193 | Configuration.NotifyFilters = _fileSystemWatchersNotifyFilters; |
||
- | 194 | |
||
- | 195 | ChangedConfigurationContinuation.Schedule(TimeSpan.FromSeconds(1), |
||
Line 162... | Line 196... | |||
162 | |
196 | async () => { await SaveConfiguration(); }, _cancellationToken); |
|
163 | #region Event Handlers |
197 | } |
|
164 | |
198 | |
|
Line 428... | Line 462... | |||
428 | enableToolStripMenuItem.Checked = Configuration.Enabled; |
462 | enableToolStripMenuItem.Checked = Configuration.Enabled; |
|
429 | showBalloonTooltipsToolStripMenuItem.Checked = Configuration.Enabled; |
463 | showBalloonTooltipsToolStripMenuItem.Checked = Configuration.Enabled; |
|
430 | windowToolStripMenuItem.Checked = Configuration.CaptureMode == CaptureMode.Window; |
464 | windowToolStripMenuItem.Checked = Configuration.CaptureMode == CaptureMode.Window; |
|
431 | screenToolStripMenuItem.Checked = Configuration.CaptureMode == CaptureMode.Screen; |
465 | screenToolStripMenuItem.Checked = Configuration.CaptureMode == CaptureMode.Screen; |
|
432 | networkSharingToolStripMenuItem.Checked = Configuration.NetworkSharing; |
466 | networkSharingToolStripMenuItem.Checked = Configuration.NetworkSharing; |
|
- | 467 | foreach (var item in attributesToolStripMenuItem.DropDownItems.OfType<ToolStripMenuItem>()) |
||
- | 468 | { |
||
- | 469 | var text = item.Text; |
||
- | 470 | |
||
- | 471 | if (Enum.TryParse<NotifyFilters>(text, out var notifyFilter)) |
||
- | 472 | { |
||
- | 473 | item.Checked = Configuration.NotifyFilters.HasFlag(notifyFilter); |
||
- | 474 | } |
||
- | 475 | } |
||
Line 433... | Line 476... | |||
433 | |
476 | |
|
434 | // Load all tracked folders. |
477 | // Load all tracked folders. |
|
Line 435... | Line 478... | |||
435 | var folders = await LoadFolders(); |
478 | var folders = await LoadFolders(); |
|
Line 534... | Line 577... | |||
534 | // Ignore directories. |
577 | // Ignore directories. |
|
535 | if (Directory.Exists(e.FullPath)) |
578 | if (Directory.Exists(e.FullPath)) |
|
536 | { |
579 | { |
|
537 | return; |
580 | return; |
|
538 | } |
581 | } |
|
- | 582 | #pragma warning disable CS4014 |
||
- | 583 | Task.Run(async () => |
||
- | 584 | #pragma warning restore CS4014 |
||
539 | |
585 | { |
|
540 | await _changedFilesLock.WaitAsync(_cancellationToken); |
586 | await _changedFilesLock.WaitAsync(_cancellationToken); |
|
541 | try |
587 | try |
|
542 | { |
588 | { |
|
543 | var delay = global::TrackedFolders.Constants.Delay; |
589 | var delay = global::TrackedFolders.Constants.Delay; |
|
544 | var color = Color.Empty; |
590 | var color = Color.Empty; |
|
Line 549... | Line 595... | |||
549 | color = folder.Color; |
595 | color = folder.Color; |
|
550 | } |
596 | } |
|
Line 551... | Line 597... | |||
551 | |
597 | |
|
552 | if (_changedFiles.Contains(e.FullPath)) |
598 | if (_changedFiles.Contains(e.FullPath)) |
|
- | 599 | { |
||
553 | { |
600 | _changedFilesContinuation.Schedule(delay, |
|
554 | _changedFilesContinuation.Schedule(delay, async () => await TakeSnapshots(color, _cancellationToken), _cancellationToken); |
601 | async () => await TakeSnapshots(color, _cancellationToken), _cancellationToken); |
|
555 | return; |
602 | return; |
|
Line 556... | Line 603... | |||
556 | } |
603 | } |
|
Line -... | Line 604... | |||
- | 604 | |
||
557 | |
605 | _changedFiles.Add(e.FullPath); |
|
558 | _changedFiles.Add(e.FullPath); |
606 | |
|
559 | |
607 | _changedFilesContinuation.Schedule(delay, |
|
560 | _changedFilesContinuation.Schedule(delay, async () => await TakeSnapshots(color, _cancellationToken), _cancellationToken); |
608 | async () => await TakeSnapshots(color, _cancellationToken), _cancellationToken); |
|
561 | } |
609 | } |
|
562 | catch (Exception exception) |
610 | catch (Exception exception) |
|
563 | { |
611 | { |
|
564 | Log.Error(exception, "Could not process changed files."); |
612 | Log.Error(exception, "Could not process changed files."); |
|
565 | } |
613 | } |
|
566 | finally |
614 | finally |
|
- | 615 | { |
||
567 | { |
616 | _changedFilesLock.Release(); |
|
Line 568... | Line 617... | |||
568 | _changedFilesLock.Release(); |
617 | } |
|
569 | } |
618 | }, CancellationToken.None); |
|
570 | } |
619 | } |
|
Line 828... | Line 877... | |||
828 | private void AddWatcher(string folder, bool recursive) |
877 | private void AddWatcher(string folder, bool recursive) |
|
829 | { |
878 | { |
|
830 | var fileSystemWatcher = new FileSystemWatcher |
879 | var fileSystemWatcher = new FileSystemWatcher |
|
831 | { |
880 | { |
|
832 | IncludeSubdirectories = recursive, |
881 | IncludeSubdirectories = recursive, |
|
833 | NotifyFilter = NotifyFilters.LastWrite | NotifyFilters.Attributes, |
882 | NotifyFilter = _fileSystemWatchersNotifyFilters, |
|
834 | Path = folder, |
883 | Path = folder, |
|
835 | EnableRaisingEvents = true |
884 | EnableRaisingEvents = true |
|
836 | }; |
885 | }; |
|
Line 837... | Line 886... | |||
837 | |
886 | |