diff --git a/Eve-O-Preview/Eve-O-Preview.csproj b/Eve-O-Preview/Eve-O-Preview.csproj
index cd4ae53..4c05dba 100644
--- a/Eve-O-Preview/Eve-O-Preview.csproj
+++ b/Eve-O-Preview/Eve-O-Preview.csproj
@@ -114,18 +114,21 @@
+
+
+
+
-
-
-
+
+
-
+
diff --git a/Eve-O-Preview/Mediator/Handlers/Services/StartServiceHandler.cs b/Eve-O-Preview/Mediator/Handlers/Services/StartStopServiceHandler.cs
similarity index 55%
rename from Eve-O-Preview/Mediator/Handlers/Services/StartServiceHandler.cs
rename to Eve-O-Preview/Mediator/Handlers/Services/StartStopServiceHandler.cs
index 7c7f493..2b34cdb 100644
--- a/Eve-O-Preview/Mediator/Handlers/Services/StartServiceHandler.cs
+++ b/Eve-O-Preview/Mediator/Handlers/Services/StartStopServiceHandler.cs
@@ -6,11 +6,11 @@ using MediatR;
namespace EveOPreview.Mediator.Handlers.Services
{
- sealed class StartServiceHandler : IRequestHandler
+ sealed class StartStopServiceHandler : IRequestHandler, IRequestHandler
{
private readonly IThumbnailManager _manager;
- public StartServiceHandler(IThumbnailManager manager)
+ public StartStopServiceHandler(IThumbnailManager manager)
{
this._manager = manager;
}
@@ -21,5 +21,12 @@ namespace EveOPreview.Mediator.Handlers.Services
return Task.CompletedTask;
}
+
+ public Task Handle(StopService message, CancellationToken cancellationToken)
+ {
+ this._manager.Stop();
+
+ return Task.CompletedTask;
+ }
}
-}
+}
\ No newline at end of file
diff --git a/Eve-O-Preview/Mediator/Handlers/Services/StopServiceHandler.cs b/Eve-O-Preview/Mediator/Handlers/Services/StopServiceHandler.cs
deleted file mode 100644
index be248cf..0000000
--- a/Eve-O-Preview/Mediator/Handlers/Services/StopServiceHandler.cs
+++ /dev/null
@@ -1,25 +0,0 @@
-using System.Threading;
-using System.Threading.Tasks;
-using EveOPreview.Mediator.Messages;
-using EveOPreview.Services;
-using MediatR;
-
-namespace EveOPreview.Mediator.Handlers.Services
-{
- sealed class StopServiceHandler : IRequestHandler
- {
- private readonly IThumbnailManager _manager;
-
- public StopServiceHandler(IThumbnailManager manager)
- {
- this._manager = manager;
- }
-
- public Task Handle(StopService message, CancellationToken cancellationToken)
- {
- this._manager.Stop();
-
- return Task.CompletedTask;
- }
- }
-}
\ No newline at end of file
diff --git a/Eve-O-Preview/Mediator/Handlers/Thumbnails/ThumbnailSizeUpdatedHandler.cs b/Eve-O-Preview/Mediator/Handlers/Thumbnails/ThumbnailActiveSizeUpdatedHandler.cs
similarity index 56%
rename from Eve-O-Preview/Mediator/Handlers/Thumbnails/ThumbnailSizeUpdatedHandler.cs
rename to Eve-O-Preview/Mediator/Handlers/Thumbnails/ThumbnailActiveSizeUpdatedHandler.cs
index ac284eb..d5a6e0f 100644
--- a/Eve-O-Preview/Mediator/Handlers/Thumbnails/ThumbnailSizeUpdatedHandler.cs
+++ b/Eve-O-Preview/Mediator/Handlers/Thumbnails/ThumbnailActiveSizeUpdatedHandler.cs
@@ -6,20 +6,20 @@ using MediatR;
namespace EveOPreview.Mediator.Handlers.Thumbnails
{
- sealed class ThumbnailSizeUpdatedHandler : INotificationHandler
+ sealed class ThumbnailActiveSizeUpdatedHandler : INotificationHandler
{
private readonly IMainFormPresenter _presenter;
- public ThumbnailSizeUpdatedHandler(MainFormPresenter presenter)
+ public ThumbnailActiveSizeUpdatedHandler(MainFormPresenter presenter)
{
this._presenter = presenter;
}
- public Task Handle(ThumbnailSizeUpdated notification, CancellationToken cancellationToken)
+ public Task Handle(ThumbnailActiveSizeUpdated notification, CancellationToken cancellationToken)
{
this._presenter.UpdateThumbnailSize(notification.Value);
return Task.CompletedTask;
}
}
-}
+}
\ No newline at end of file
diff --git a/Eve-O-Preview/Mediator/Handlers/Thumbnails/ThumbnailConfiguredSizeUpdatedHandler.cs b/Eve-O-Preview/Mediator/Handlers/Thumbnails/ThumbnailConfiguredSizeUpdatedHandler.cs
new file mode 100644
index 0000000..700c678
--- /dev/null
+++ b/Eve-O-Preview/Mediator/Handlers/Thumbnails/ThumbnailConfiguredSizeUpdatedHandler.cs
@@ -0,0 +1,25 @@
+using System.Threading;
+using System.Threading.Tasks;
+using EveOPreview.Mediator.Messages;
+using EveOPreview.Services;
+using MediatR;
+
+namespace EveOPreview.Mediator.Handlers.Thumbnails
+{
+ sealed class ThumbnailConfiguredSizeUpdatedHandler : INotificationHandler
+ {
+ private readonly IThumbnailManager _manager;
+
+ public ThumbnailConfiguredSizeUpdatedHandler(IThumbnailManager manager)
+ {
+ this._manager = manager;
+ }
+
+ public Task Handle(ThumbnailConfiguredSizeUpdated notification, CancellationToken cancellationToken)
+ {
+ this._manager.UpdateThumbnailsSize();
+
+ return Task.CompletedTask;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Eve-O-Preview/Mediator/Handlers/Thumbnails/ThumbnailFrameSettingsUpdatedHandler.cs b/Eve-O-Preview/Mediator/Handlers/Thumbnails/ThumbnailFrameSettingsUpdatedHandler.cs
new file mode 100644
index 0000000..44cc2d4
--- /dev/null
+++ b/Eve-O-Preview/Mediator/Handlers/Thumbnails/ThumbnailFrameSettingsUpdatedHandler.cs
@@ -0,0 +1,25 @@
+using System.Threading;
+using System.Threading.Tasks;
+using EveOPreview.Mediator.Messages;
+using EveOPreview.Services;
+using MediatR;
+
+namespace EveOPreview.Mediator.Handlers.Thumbnails
+{
+ sealed class ThumbnailFrameSettingsUpdatedHandler : INotificationHandler
+ {
+ private readonly IThumbnailManager _manager;
+
+ public ThumbnailFrameSettingsUpdatedHandler(IThumbnailManager manager)
+ {
+ this._manager = manager;
+ }
+
+ public Task Handle(ThumbnailFrameSettingsUpdated notification, CancellationToken cancellationToken)
+ {
+ this._manager.UpdateThumbnailFrames();
+
+ return Task.CompletedTask;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Eve-O-Preview/Mediator/Handlers/Thumbnails/ThumbnailListUpdatedHandler.cs b/Eve-O-Preview/Mediator/Handlers/Thumbnails/ThumbnailListUpdatedHandler.cs
index 512db96..88dd8b6 100644
--- a/Eve-O-Preview/Mediator/Handlers/Thumbnails/ThumbnailListUpdatedHandler.cs
+++ b/Eve-O-Preview/Mediator/Handlers/Thumbnails/ThumbnailListUpdatedHandler.cs
@@ -32,4 +32,4 @@ namespace EveOPreview.Mediator.Handlers.Thumbnails
return Task.CompletedTask;
}
}
-}
+}
\ No newline at end of file
diff --git a/Eve-O-Preview/Mediator/Messages/Base/NotificationBase.cs b/Eve-O-Preview/Mediator/Messages/Base/NotificationBase.cs
index 4baaa25..f604d39 100644
--- a/Eve-O-Preview/Mediator/Messages/Base/NotificationBase.cs
+++ b/Eve-O-Preview/Mediator/Messages/Base/NotificationBase.cs
@@ -11,4 +11,4 @@ namespace EveOPreview.Mediator.Messages
public TValue Value { get; }
}
-}
+}
\ No newline at end of file
diff --git a/Eve-O-Preview/Mediator/Messages/Configuration/SaveConfiguration.cs b/Eve-O-Preview/Mediator/Messages/Configuration/SaveConfiguration.cs
index 53e643e..21a453f 100644
--- a/Eve-O-Preview/Mediator/Messages/Configuration/SaveConfiguration.cs
+++ b/Eve-O-Preview/Mediator/Messages/Configuration/SaveConfiguration.cs
@@ -5,4 +5,4 @@ namespace EveOPreview.Mediator.Messages
sealed class SaveConfiguration : IRequest
{
}
-}
+}
\ No newline at end of file
diff --git a/Eve-O-Preview/Mediator/Messages/Services/StopService.cs b/Eve-O-Preview/Mediator/Messages/Services/StopService.cs
index 0c77f1b..c123c0b 100644
--- a/Eve-O-Preview/Mediator/Messages/Services/StopService.cs
+++ b/Eve-O-Preview/Mediator/Messages/Services/StopService.cs
@@ -5,4 +5,4 @@ namespace EveOPreview.Mediator.Messages
sealed class StopService : IRequest
{
}
-}
+}
\ No newline at end of file
diff --git a/Eve-O-Preview/Mediator/Messages/Thumbnails/ThumbnailActiveSizeUpdated.cs b/Eve-O-Preview/Mediator/Messages/Thumbnails/ThumbnailActiveSizeUpdated.cs
new file mode 100644
index 0000000..b0f67a2
--- /dev/null
+++ b/Eve-O-Preview/Mediator/Messages/Thumbnails/ThumbnailActiveSizeUpdated.cs
@@ -0,0 +1,12 @@
+using System.Drawing;
+
+namespace EveOPreview.Mediator.Messages
+{
+ sealed class ThumbnailActiveSizeUpdated : NotificationBase
+ {
+ public ThumbnailActiveSizeUpdated(Size size)
+ : base(size)
+ {
+ }
+ }
+}
\ No newline at end of file
diff --git a/Eve-O-Preview/Mediator/Messages/Thumbnails/ThumbnailConfiguredSizeUpdated.cs b/Eve-O-Preview/Mediator/Messages/Thumbnails/ThumbnailConfiguredSizeUpdated.cs
new file mode 100644
index 0000000..5982a44
--- /dev/null
+++ b/Eve-O-Preview/Mediator/Messages/Thumbnails/ThumbnailConfiguredSizeUpdated.cs
@@ -0,0 +1,8 @@
+using MediatR;
+
+namespace EveOPreview.Mediator.Messages
+{
+ sealed class ThumbnailConfiguredSizeUpdated : INotification
+ {
+ }
+}
\ No newline at end of file
diff --git a/Eve-O-Preview/Mediator/Messages/Thumbnails/ThumbnailFrameSettingsUpdated.cs b/Eve-O-Preview/Mediator/Messages/Thumbnails/ThumbnailFrameSettingsUpdated.cs
new file mode 100644
index 0000000..396693b
--- /dev/null
+++ b/Eve-O-Preview/Mediator/Messages/Thumbnails/ThumbnailFrameSettingsUpdated.cs
@@ -0,0 +1,8 @@
+using MediatR;
+
+namespace EveOPreview.Mediator.Messages
+{
+ sealed class ThumbnailFrameSettingsUpdated : INotification
+ {
+ }
+}
\ No newline at end of file
diff --git a/Eve-O-Preview/Mediator/Messages/Thumbnails/ThumbnailLocationUpdated.cs b/Eve-O-Preview/Mediator/Messages/Thumbnails/ThumbnailLocationUpdated.cs
index ac5918f..a47e244 100644
--- a/Eve-O-Preview/Mediator/Messages/Thumbnails/ThumbnailLocationUpdated.cs
+++ b/Eve-O-Preview/Mediator/Messages/Thumbnails/ThumbnailLocationUpdated.cs
@@ -18,4 +18,4 @@ namespace EveOPreview.Mediator.Messages
public Point Location { get; }
}
-}
+}
\ No newline at end of file
diff --git a/Eve-O-Preview/Mediator/Messages/Thumbnails/ThumbnailSizeUpdated.cs b/Eve-O-Preview/Mediator/Messages/Thumbnails/ThumbnailSizeUpdated.cs
deleted file mode 100644
index 7ae7b6b..0000000
--- a/Eve-O-Preview/Mediator/Messages/Thumbnails/ThumbnailSizeUpdated.cs
+++ /dev/null
@@ -1,12 +0,0 @@
-using System.Drawing;
-
-namespace EveOPreview.Mediator.Messages
-{
- sealed class ThumbnailSizeUpdated : NotificationBase
- {
- public ThumbnailSizeUpdated(Size size)
- : base(size)
- {
- }
- }
-}
diff --git a/Eve-O-Preview/Presenters/Implementation/MainFormPresenter.cs b/Eve-O-Preview/Presenters/Implementation/MainFormPresenter.cs
index fcba6e1..e5b5867 100644
--- a/Eve-O-Preview/Presenters/Implementation/MainFormPresenter.cs
+++ b/Eve-O-Preview/Presenters/Implementation/MainFormPresenter.cs
@@ -4,7 +4,6 @@ using System.Diagnostics;
using System.Drawing;
using EveOPreview.Configuration;
using EveOPreview.Mediator.Messages;
-using EveOPreview.Services;
using EveOPreview.View;
using MediatR;
@@ -20,24 +19,22 @@ namespace EveOPreview.Presenters
private readonly IMediator _mediator;
private readonly IThumbnailConfiguration _configuration;
private readonly IConfigurationStorage _configurationStorage;
- private readonly IThumbnailManager _thumbnailManager;
-
private readonly IDictionary _descriptionsCache;
+ private bool _suppressSizeNotifications;
private bool _exitApplication;
#endregion
- public MainFormPresenter(IApplicationController controller, IMainFormView view, IMediator mediator, IThumbnailConfiguration configuration, IConfigurationStorage configurationStorage,
- IThumbnailManager thumbnailManager)
+ public MainFormPresenter(IApplicationController controller, IMainFormView view, IMediator mediator, IThumbnailConfiguration configuration, IConfigurationStorage configurationStorage)
: base(controller, view)
{
this._mediator = mediator;
this._configuration = configuration;
this._configurationStorage = configurationStorage;
- this._thumbnailManager = thumbnailManager;
this._descriptionsCache = new Dictionary();
+ this._suppressSizeNotifications = false;
this._exitApplication = false;
this.View.FormActivated = this.Activate;
@@ -79,7 +76,6 @@ namespace EveOPreview.Presenters
{
this._mediator.Send(new StopService()).Wait();
- this._thumbnailManager.Stop();
this._configurationStorage.Save();
request.Allow = true;
return;
@@ -89,10 +85,14 @@ namespace EveOPreview.Presenters
this.View.Minimize();
}
- private void UpdateThumbnailsSize()
+ private async void UpdateThumbnailsSize()
{
- this._thumbnailManager.SetThumbnailsSize(this.View.ThumbnailSize);
this.SaveApplicationSettings();
+
+ if (!this._suppressSizeNotifications)
+ {
+ await this._mediator.Publish(new ThumbnailConfiguredSizeUpdated());
+ }
}
private void LoadApplicationSettings()
@@ -122,7 +122,7 @@ namespace EveOPreview.Presenters
this.View.ActiveClientHighlightColor = this._configuration.ActiveClientHighlightColor;
}
- private void SaveApplicationSettings()
+ private async void SaveApplicationSettings()
{
this._configuration.MinimizeToTray = this.View.MinimizeToTray;
@@ -141,7 +141,12 @@ namespace EveOPreview.Presenters
this._configuration.ThumbnailZoomAnchor = ViewZoomAnchorConverter.Convert(this.View.ThumbnailZoomAnchor);
this._configuration.ShowThumbnailOverlays = this.View.ShowThumbnailOverlays;
- this._configuration.ShowThumbnailFrames = this.View.ShowThumbnailFrames;
+ if (this._configuration.ShowThumbnailFrames != this.View.ShowThumbnailFrames)
+ {
+ await this._mediator.Publish(new ThumbnailFrameSettingsUpdated());
+ this._configuration.ShowThumbnailFrames = this.View.ShowThumbnailFrames;
+ }
+
this._configuration.EnableActiveClientHighlight = this.View.EnableActiveClientHighlight;
this._configuration.ActiveClientHighlightColor = this.View.ActiveClientHighlightColor;
@@ -149,7 +154,7 @@ namespace EveOPreview.Presenters
this.View.RefreshZoomSettings();
- this._thumbnailManager.SetupThumbnailFrames();
+ await this._mediator.Send(new SaveConfiguration());
}
@@ -200,17 +205,20 @@ namespace EveOPreview.Presenters
private void UpdateThumbnailState(String title)
{
+ // TODO This setting doesn't work atm
//this._thumbnailManager.SetThumbnailState(thumbnailId, this._thumbnailDescriptionViews[thumbnailId].IsDisabled);
}
public void UpdateThumbnailSize(Size size)
{
+ this._suppressSizeNotifications = true;
this.View.ThumbnailSize = size;
+ this._suppressSizeNotifications = false;
}
private void OpenDocumentationLink()
{
- // TODO Move out
+ // TODO Move out to a separate service / presenter / message handler
ProcessStartInfo processStartInfo = new ProcessStartInfo(new Uri(MainFormPresenter.ForumUrl).AbsoluteUri);
Process.Start(processStartInfo);
}
diff --git a/Eve-O-Preview/Services/Implementation/ThumbnailManager.cs b/Eve-O-Preview/Services/Implementation/ThumbnailManager.cs
index b44cd3d..f346e0c 100644
--- a/Eve-O-Preview/Services/Implementation/ThumbnailManager.cs
+++ b/Eve-O-Preview/Services/Implementation/ThumbnailManager.cs
@@ -78,7 +78,19 @@ namespace EveOPreview.Services
thumbnail.IsEnabled = !hideAlways;
}
+ public void UpdateThumbnailsSize()
+ {
+ this.InternalSetThumbnailsSize(this._configuration.ThumbnailSize);
+ }
+
public async void SetThumbnailsSize(Size size)
+ {
+ this.InternalSetThumbnailsSize(size);
+
+ await this._mediator.Publish(new ThumbnailActiveSizeUpdated(size));
+ }
+
+ private void InternalSetThumbnailsSize(Size size)
{
this.DisableViewEvents();
@@ -88,8 +100,6 @@ namespace EveOPreview.Services
entry.Value.Refresh(false);
}
- await this._mediator.Publish(new ThumbnailSizeUpdated(size));
-
this.EnableViewEvents();
}
@@ -104,7 +114,7 @@ namespace EveOPreview.Services
foreach (KeyValuePair entry in this._thumbnailViews)
{
IThumbnailView view = entry.Value;
-
+
if (hideAllThumbnails || !view.IsEnabled)
{
if (view.IsActive)
@@ -154,7 +164,7 @@ namespace EveOPreview.Services
this.EnableViewEvents();
}
- public void SetupThumbnailFrames()
+ public void UpdateThumbnailFrames()
{
this.DisableViewEvents();
diff --git a/Eve-O-Preview/Services/Interface/IThumbnailManager.cs b/Eve-O-Preview/Services/Interface/IThumbnailManager.cs
index d5868b4..694bcd6 100644
--- a/Eve-O-Preview/Services/Interface/IThumbnailManager.cs
+++ b/Eve-O-Preview/Services/Interface/IThumbnailManager.cs
@@ -10,6 +10,7 @@ namespace EveOPreview.Services
void SetThumbnailState(IntPtr thumbnailId, bool hideAlways);
void SetThumbnailsSize(Size size);
- void SetupThumbnailFrames();
+ void UpdateThumbnailsSize();
+ void UpdateThumbnailFrames();
}
}
\ No newline at end of file