diff options
Diffstat (limited to 'MediaBrowser.Plugins.DefaultTheme/Model/VirtualCollection.cs')
| -rw-r--r-- | MediaBrowser.Plugins.DefaultTheme/Model/VirtualCollection.cs | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/MediaBrowser.Plugins.DefaultTheme/Model/VirtualCollection.cs b/MediaBrowser.Plugins.DefaultTheme/Model/VirtualCollection.cs new file mode 100644 index 000000000..9bdf61129 --- /dev/null +++ b/MediaBrowser.Plugins.DefaultTheme/Model/VirtualCollection.cs @@ -0,0 +1,90 @@ +using MediaBrowser.Model.DTO; +using MediaBrowser.UI.Controls; +using System; +using System.Threading; +using System.Windows; + +namespace MediaBrowser.Plugins.DefaultTheme.Model +{ + public class VirtualCollection : ModelItem, IDisposable + { + private string _name; + public string Name + { + get { return _name; } + set + { + _name = value; + OnPropertyChanged("Name"); + } + } + + private DtoBaseItem[] _items; + public DtoBaseItem[] Items + { + get { return _items; } + set + { + _items = value; + OnPropertyChanged("Items"); + CurrentItemIndex = Items.Length == 0 ? -1 : 0; + + ReloadTimer(); + } + } + + private int _currentItemIndex; + public int CurrentItemIndex + { + get { return _currentItemIndex; } + set + { + _currentItemIndex = value; + OnPropertyChanged("CurrentItemIndex"); + OnPropertyChanged("CurrentItem"); + } + } + + public DtoBaseItem CurrentItem + { + get { return CurrentItemIndex == -1 ? null : Items[CurrentItemIndex]; } + } + + private Timer CurrentItemTimer { get; set; } + + private void DisposeTimer() + { + if (CurrentItemTimer != null) + { + CurrentItemTimer.Dispose(); + } + } + + private void ReloadTimer() + { + DisposeTimer(); + + if (Items.Length > 0) + { + CurrentItemTimer = new Timer(state => Application.Current.Dispatcher.InvokeAsync(() => IncrementCurrentItemIndex()), null, 5000, 5000); + } + } + + private void IncrementCurrentItemIndex() + { + var newIndex = CurrentItemIndex + 1; + + if (newIndex >= Items.Length) + { + newIndex = 0; + } + + CurrentItemIndex = newIndex; + } + + public void Dispose() + { + DisposeTimer(); + } + } +} |
