Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/xamarin/Xamarin.PropertyEditing.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Xamarin.PropertyEditing.Tests/BrushPropertyViewModelTests.cs27
-rw-r--r--Xamarin.PropertyEditing.Tests/MockControls/MockResourceProvider.cs2
-rw-r--r--Xamarin.PropertyEditing/IResourceProvider.cs23
-rw-r--r--Xamarin.PropertyEditing/ViewModels/ResourceSelectorViewModel.cs7
4 files changed, 59 insertions, 0 deletions
diff --git a/Xamarin.PropertyEditing.Tests/BrushPropertyViewModelTests.cs b/Xamarin.PropertyEditing.Tests/BrushPropertyViewModelTests.cs
index bf4ccb3..ba0786f 100644
--- a/Xamarin.PropertyEditing.Tests/BrushPropertyViewModelTests.cs
+++ b/Xamarin.PropertyEditing.Tests/BrushPropertyViewModelTests.cs
@@ -1,4 +1,5 @@
using System.Collections.Generic;
+using System.Threading;
using Moq;
using NUnit.Framework;
using Xamarin.PropertyEditing.Drawing;
@@ -52,5 +53,31 @@ namespace Xamarin.PropertyEditing.Tests
Assert.IsTrue (changed);
Assert.AreNotEqual (rs1, rs2);
}
+
+ [Test]
+ public void ResourcesChangedUpdatesResources ()
+ {
+ var mockProperty = new Mock<IPropertyInfo> ();
+ mockProperty.SetupGet (pi => pi.Type).Returns (typeof (CommonBrush));
+ var mockEditor = new MockObjectEditor (mockProperty.Object);
+
+ var resource1 = new Resource ("first");
+ var resources = new List<Resource> { resource1 };
+
+ var provider = new Mock<IResourceProvider>();
+ provider.Setup (p => p.GetResourceSourcesAsync (It.IsAny<object> ())).ReturnsAsync (new[] { MockResourceProvider.SystemResourcesSource });
+ provider.Setup (p => p.GetResourcesAsync (It.IsAny<object> (), mockProperty.Object, CancellationToken.None)).ReturnsAsync (resources);
+
+ var vm = new BrushPropertyViewModel (new TargetPlatform (new MockEditorProvider(), provider.Object), mockProperty.Object, new [] { mockEditor });
+
+ Assume.That (vm.ResourceSelector.Resources, Contains.Item (resource1));
+
+ var resource2 = new Resource ("second");
+ resources.Add (resource2);
+
+ provider.Raise (rp => rp.ResourcesChanged += null, new ResourcesChangedEventArgs());
+ Assert.That (vm.ResourceSelector.Resources, Contains.Item (resource1));
+ Assert.That (vm.ResourceSelector.Resources, Contains.Item (resource2));
+ }
}
}
diff --git a/Xamarin.PropertyEditing.Tests/MockControls/MockResourceProvider.cs b/Xamarin.PropertyEditing.Tests/MockControls/MockResourceProvider.cs
index 8d5e458..f502626 100644
--- a/Xamarin.PropertyEditing.Tests/MockControls/MockResourceProvider.cs
+++ b/Xamarin.PropertyEditing.Tests/MockControls/MockResourceProvider.cs
@@ -11,6 +11,8 @@ namespace Xamarin.PropertyEditing.Tests
public class MockResourceProvider
: IResourceProvider
{
+ public event EventHandler<ResourcesChangedEventArgs> ResourcesChanged;
+
public bool CanCreateResources => true;
public Task<ResourceCreateError> CheckNameErrorsAsync (object target, ResourceSource source, string name)
diff --git a/Xamarin.PropertyEditing/IResourceProvider.cs b/Xamarin.PropertyEditing/IResourceProvider.cs
index 9b2b143..b67945a 100644
--- a/Xamarin.PropertyEditing/IResourceProvider.cs
+++ b/Xamarin.PropertyEditing/IResourceProvider.cs
@@ -8,6 +8,8 @@ namespace Xamarin.PropertyEditing
{
public interface IResourceProvider
{
+ event EventHandler<ResourcesChangedEventArgs> ResourcesChanged;
+
/// <summary>
/// Gets whether or not the resource provider can create resources.
/// </summary>
@@ -85,4 +87,25 @@ namespace Xamarin.PropertyEditing
get;
}
}
+
+ public class ResourcesChangedEventArgs
+ : EventArgs
+ {
+ public ResourcesChangedEventArgs ()
+ {
+ }
+
+ public ResourcesChangedEventArgs (ResourceSource source)
+ {
+ if (source == null)
+ throw new ArgumentNullException (nameof(source));
+
+ Source = source;
+ }
+
+ public ResourceSource Source
+ {
+ get;
+ }
+ }
} \ No newline at end of file
diff --git a/Xamarin.PropertyEditing/ViewModels/ResourceSelectorViewModel.cs b/Xamarin.PropertyEditing/ViewModels/ResourceSelectorViewModel.cs
index f2c3aeb..9b1f0cc 100644
--- a/Xamarin.PropertyEditing/ViewModels/ResourceSelectorViewModel.cs
+++ b/Xamarin.PropertyEditing/ViewModels/ResourceSelectorViewModel.cs
@@ -21,6 +21,8 @@ namespace Xamarin.PropertyEditing.ViewModels
throw new ArgumentNullException (nameof (property));
Provider = provider;
+ provider.ResourcesChanged += OnResourcesChanged;
+
this.targets = targets.ToArray();
Property = property;
UpdateResources();
@@ -170,6 +172,11 @@ namespace Xamarin.PropertyEditing.ViewModels
return true;
}
+ private void OnResourcesChanged (object sender, EventArgs e)
+ {
+ UpdateResources ();
+ }
+
private async void UpdateResources ()
{
await UpdateResourcesAsync();