13 changed files with 101 additions and 37 deletions
@ -0,0 +1,70 @@
@@ -0,0 +1,70 @@
|
||||
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
|
||||
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
|
||||
|
||||
using System; |
||||
using System.Linq; |
||||
using ICSharpCode.SharpDevelop; |
||||
using ICSharpCode.AddInManager2.Model; |
||||
using ICSharpCode.AddInManager2.ViewModel; |
||||
|
||||
namespace ICSharpCode.AddInManager2 |
||||
{ |
||||
/// <summary>
|
||||
/// Checks configured repositories for updates and shows a user notification.
|
||||
/// </summary>
|
||||
public class UpdateNotifier |
||||
{ |
||||
private IAddInManagerServices _services; |
||||
private UpdatedAddInsViewModel _updatedAddInViewModel; |
||||
private bool _isDetached; |
||||
|
||||
public UpdateNotifier() |
||||
: this(AddInManagerServices.Services) |
||||
{ |
||||
} |
||||
|
||||
public UpdateNotifier(IAddInManagerServices services) |
||||
{ |
||||
_isDetached = false; |
||||
_services = services; |
||||
_updatedAddInViewModel = new UpdatedAddInsViewModel(services); |
||||
_updatedAddInViewModel.PackageListDownloadEnded += UpdatedAddInViewModel_PackageListDownloadEnded; |
||||
} |
||||
|
||||
public void Detach() |
||||
{ |
||||
if (!_isDetached) |
||||
{ |
||||
_updatedAddInViewModel.PackageListDownloadEnded -= UpdatedAddInViewModel_PackageListDownloadEnded; |
||||
_isDetached = true; |
||||
} |
||||
} |
||||
|
||||
public void StartUpdateLookup() |
||||
{ |
||||
if (!_isDetached) |
||||
{ |
||||
// Start getting updates
|
||||
_updatedAddInViewModel.ReadPackages(); |
||||
} |
||||
} |
||||
|
||||
public void UpdatedAddInViewModel_PackageListDownloadEnded(object sender, EventArgs e) |
||||
{ |
||||
// Do we have any new updates? Collect this information from all configured repositories
|
||||
var allRepositories = _updatedAddInViewModel.PackageRepositories; |
||||
if (allRepositories != null) |
||||
{ |
||||
if (allRepositories.Any(rep => rep.HasHighlightCount)) |
||||
{ |
||||
// TODO There must be updates, show an update notification
|
||||
Detach(); |
||||
SD.MessageService.ShowWarning("There are updates!"); |
||||
return; |
||||
} |
||||
} |
||||
|
||||
Detach(); |
||||
} |
||||
} |
||||
} |
Loading…
Reference in new issue