Wire up notification system for ContentChanged -> UI listeners
This commit is contained in:
parent
2b1fcff98b
commit
123f21dcab
5 changed files with 52 additions and 1 deletions
|
|
@ -59,6 +59,8 @@ namespace MatterHackers.MatterControl.Library
|
|||
|
||||
public interface ILibraryWritableContainer : ILibraryContainer
|
||||
{
|
||||
event EventHandler<ItemChangedEventArgs> ItemContentChanged;
|
||||
|
||||
void Add(IEnumerable<ILibraryItem> items);
|
||||
void Remove(IEnumerable<ILibraryItem> items);
|
||||
void Rename(ILibraryItem item, string revisedName);
|
||||
|
|
@ -75,4 +77,14 @@ namespace MatterHackers.MatterControl.Library
|
|||
RenameItems,
|
||||
RemoveItems
|
||||
}
|
||||
|
||||
public class ItemChangedEventArgs : EventArgs
|
||||
{
|
||||
public ILibraryItem LibraryItem { get; }
|
||||
|
||||
public ItemChangedEventArgs(ILibraryItem libraryItem)
|
||||
{
|
||||
this.LibraryItem = libraryItem;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -69,4 +69,15 @@ namespace MatterHackers.MatterControl.Library
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
public class MockLibraryItem : ILibraryItem
|
||||
{
|
||||
public string ID { get; set; }
|
||||
|
||||
public string Name { get; set; }
|
||||
|
||||
public bool IsProtected => true;
|
||||
|
||||
public bool IsVisible => true;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -27,6 +27,7 @@ of the authors and should not be interpreted as representing official policies,
|
|||
either expressed or implied, of the FreeBSD Project.
|
||||
*/
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using MatterHackers.Agg.Image;
|
||||
|
||||
|
|
@ -34,6 +35,13 @@ namespace MatterHackers.MatterControl.Library
|
|||
{
|
||||
public abstract class WritableContainer : LibraryContainer, ILibraryWritableContainer
|
||||
{
|
||||
public event EventHandler<ItemChangedEventArgs> ItemContentChanged;
|
||||
|
||||
public virtual void OnItemContentChanged(ItemChangedEventArgs args)
|
||||
{
|
||||
ItemContentChanged?.Invoke(this, args);
|
||||
}
|
||||
|
||||
public virtual void Add(IEnumerable<ILibraryItem> items)
|
||||
{
|
||||
}
|
||||
|
|
|
|||
|
|
@ -132,6 +132,11 @@ namespace MatterHackers.MatterControl.CustomWidgets
|
|||
/// <param name="sourceContainer">The container to load</param>
|
||||
private void DisplayContainerContent(ILibraryContainer sourceContainer)
|
||||
{
|
||||
if (this.ActiveContainer is ILibraryWritableContainer activeWritable)
|
||||
{
|
||||
activeWritable.ItemContentChanged -= WritableContainer_ItemContentChanged;
|
||||
}
|
||||
|
||||
UiThread.RunOnIdle(() =>
|
||||
{
|
||||
if (sourceContainer == null)
|
||||
|
|
@ -180,10 +185,25 @@ namespace MatterHackers.MatterControl.CustomWidgets
|
|||
}
|
||||
}
|
||||
|
||||
if (sourceContainer is ILibraryWritableContainer writableContainer)
|
||||
{
|
||||
writableContainer.ItemContentChanged += WritableContainer_ItemContentChanged;
|
||||
}
|
||||
|
||||
this.Invalidate();
|
||||
});
|
||||
}
|
||||
|
||||
private void WritableContainer_ItemContentChanged(object sender, ItemChangedEventArgs e)
|
||||
{
|
||||
var firstItem = items.Where(i => i.Model.ID == e.LibraryItem.ID).FirstOrDefault();
|
||||
if (firstItem != null)
|
||||
{
|
||||
firstItem.ViewWidget.LoadItemThumbnail().ConfigureAwait(false);
|
||||
firstItem.ViewWidget.Invalidate();
|
||||
}
|
||||
}
|
||||
|
||||
public enum ViewMode
|
||||
{
|
||||
Icons,
|
||||
|
|
|
|||
|
|
@ -88,7 +88,7 @@ namespace MatterHackers.MatterControl.CustomWidgets
|
|||
return true;
|
||||
}
|
||||
|
||||
protected async Task LoadItemThumbnail()
|
||||
public async Task LoadItemThumbnail()
|
||||
{
|
||||
var listView = listViewItem.ListView;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue