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 | } |
|
539 | |
- | ||
540 | await _changedFilesLock.WaitAsync(_cancellationToken); |
582 | #pragma warning disable CS4014 |
|
541 | try |
583 | Task.Run(async () => |
|
- | 584 | #pragma warning restore CS4014 |
||
542 | { |
585 | { |
|
- | 586 | await _changedFilesLock.WaitAsync(_cancellationToken); |
||
- | 587 | try |
||
- | 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; |
|
- | 591 | |
||
- | 592 | if (TrackedFolders.TryGet(e.FullPath, out var folder)) |
||
- | 593 | { |
||
- | 594 | delay = folder.Delay; |
||
- | 595 | color = folder.Color; |
||
- | 596 | } |
||
- | 597 | |
||
- | 598 | if (_changedFiles.Contains(e.FullPath)) |
||
- | 599 | { |
||
- | 600 | _changedFilesContinuation.Schedule(delay, |
||
- | 601 | async () => await TakeSnapshots(color, _cancellationToken), _cancellationToken); |
||
- | 602 | return; |
||
- | 603 | } |
||
- | 604 | |
||
- | 605 | _changedFiles.Add(e.FullPath); |
||
Line 545... | Line 606... | |||
545 | |
606 | |
|
- | 607 | _changedFilesContinuation.Schedule(delay, |
||
- | 608 | async () => await TakeSnapshots(color, _cancellationToken), _cancellationToken); |
||
- | 609 | } |
||
546 | if (TrackedFolders.TryGet(e.FullPath, out var folder)) |
610 | catch (Exception exception) |
|
547 | { |
- | ||
548 | delay = folder.Delay; |
611 | { |
|
549 | color = folder.Color; |
612 | Log.Error(exception, "Could not process changed files."); |
|
550 | } |
- | ||
551 | |
613 | } |
|
552 | if (_changedFiles.Contains(e.FullPath)) |
614 | finally |
|
553 | { |
- | ||
554 | _changedFilesContinuation.Schedule(delay, async () => await TakeSnapshots(color, _cancellationToken), _cancellationToken); |
615 | { |
|
555 | return; |
616 | _changedFilesLock.Release(); |
|
556 | } |
- | ||
557 | |
- | ||
558 | _changedFiles.Add(e.FullPath); |
- | ||
559 | |
- | ||
560 | _changedFilesContinuation.Schedule(delay, async () => await TakeSnapshots(color, _cancellationToken), _cancellationToken); |
- | ||
561 | } |
617 | } |
|
562 | catch (Exception exception) |
- | ||
563 | { |
- | ||
564 | Log.Error(exception, "Could not process changed files."); |
- | ||
565 | } |
- | ||
566 | finally |
- | ||
567 | { |
- | ||
568 | _changedFilesLock.Release(); |
- | ||
569 | } |
618 | }, CancellationToken.None); |
|
Line 570... | Line 619... | |||
570 | } |
619 | } |
|
571 | |
620 | |
|
572 | private void AboutToolStripMenuItem_Click(object sender, EventArgs e) |
621 | private void AboutToolStripMenuItem_Click(object sender, EventArgs e) |
|
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 | |