diff options
Diffstat (limited to 'MediaBrowser.UI/Pages/BaseListPage.cs')
| -rw-r--r-- | MediaBrowser.UI/Pages/BaseListPage.cs | 204 |
1 files changed, 0 insertions, 204 deletions
diff --git a/MediaBrowser.UI/Pages/BaseListPage.cs b/MediaBrowser.UI/Pages/BaseListPage.cs deleted file mode 100644 index 5196e2b32..000000000 --- a/MediaBrowser.UI/Pages/BaseListPage.cs +++ /dev/null @@ -1,204 +0,0 @@ -using MediaBrowser.Model.Dto; -using MediaBrowser.Model.Entities; -using MediaBrowser.UI.Controls; -using MediaBrowser.UI.ViewModels; -using System; -using System.Threading; -using System.Windows.Controls; - -namespace MediaBrowser.UI.Pages -{ - /// <summary> - /// Provides a base page for all list pages - /// </summary> - public abstract class BaseListPage : BaseFolderPage - { - /// <summary> - /// Gets or sets the current selection timer. - /// </summary> - /// <value>The current selection timer.</value> - private Timer CurrentSelectionTimer { get; set; } - - /// <summary> - /// Subclasses must provide the list box that holds the items - /// </summary> - /// <value>The items list.</value> - protected abstract ExtendedListBox ItemsList { get; } - - /// <summary> - /// Initializes a new instance of the <see cref="BaseListPage" /> class. - /// </summary> - /// <param name="itemId">The item id.</param> - protected BaseListPage(string itemId) - : base(itemId) - { - } - - /// <summary> - /// Raises the <see cref="E:Initialized" /> event. - /// </summary> - /// <param name="e">The <see cref="EventArgs" /> instance containing the event data.</param> - protected override void OnInitialized(EventArgs e) - { - base.OnInitialized(e); - - ItemsList.SelectionChanged += ItemsList_SelectionChanged; - ItemsList.ItemInvoked += ItemsList_ItemInvoked; - } - - /// <summary> - /// The _current item - /// </summary> - private BaseItemDto _currentItem; - /// <summary> - /// Gets or sets the current selected item - /// </summary> - /// <value>The current item.</value> - public BaseItemDto CurrentItem - { - get { return _currentItem; } - - set - { - _currentItem = value; - - // Update the current item index immediately - UpdateCurrentItemIndex(value); - - // Fire notification events after a short delay - // We don't want backdrops and logos reloading while the user is navigating quickly - if (CurrentSelectionTimer != null) - { - CurrentSelectionTimer.Change(500, Timeout.Infinite); - } - else - { - CurrentSelectionTimer = new Timer(CurrentItemChangedTimerCallback, value, 500, Timeout.Infinite); - } - } - } - - /// <summary> - /// Fires when the current item selection timer expires - /// </summary> - /// <param name="state">The state.</param> - private void CurrentItemChangedTimerCallback(object state) - { - Dispatcher.InvokeAsync(() => - { - // Fire notification events for the UI - OnPropertyChanged("CurrentItem"); - - // Alert subclasses - OnCurrentItemChanged(); - }); - - // Dispose the timer - CurrentSelectionTimer.Dispose(); - CurrentSelectionTimer = null; - } - - /// <summary> - /// Updates the current item index based on the current selection - /// </summary> - /// <param name="value">The value.</param> - private void UpdateCurrentItemIndex(BaseItemDto value) - { - if (value == null) - { - CurrentItemIndex = -1; - } - else - { - CurrentItemIndex = ItemsList.SelectedIndex; - } - } - - /// <summary> - /// The _current item index - /// </summary> - private int _currentItemIndex; - /// <summary> - /// Gets of sets the index of the current item being displayed - /// </summary> - /// <value>The index of the current item.</value> - public int CurrentItemIndex - { - get { return _currentItemIndex; } - - set - { - _currentItemIndex = value; - OnPropertyChanged("CurrentItemIndex"); - } - } - - /// <summary> - /// Handles the list selection changed event to update the current item - /// </summary> - /// <param name="sender">The source of the event.</param> - /// <param name="e">The <see cref="SelectionChangedEventArgs" /> instance containing the event data.</param> - void ItemsList_SelectionChanged(object sender, SelectionChangedEventArgs e) - { - if (e.AddedItems.Count > 0) - { - CurrentItem = (e.AddedItems[0] as DtoBaseItemViewModel).Item; - } - else - { - CurrentItem = null; - } - } - - /// <summary> - /// Itemses the list_ item invoked. - /// </summary> - /// <param name="sender">The sender.</param> - /// <param name="e">The e.</param> - /// <exception cref="System.NotImplementedException"></exception> - void ItemsList_ItemInvoked(object sender, ItemEventArgs<object> e) - { - var model = e.Argument as DtoBaseItemViewModel; - - if (model != null) - { - App.Instance.NavigateToItem(model.Item); - } - } - - /// <summary> - /// Handles current item selection changes - /// </summary> - protected virtual void OnCurrentItemChanged() - { - if (CurrentItem != null) - { - SetBackdrops(CurrentItem); - } - } - - /// <summary> - /// Gets called anytime a DisplayPreferences property is updated - /// </summary> - public override void NotifyDisplayPreferencesChanged() - { - base.NotifyDisplayPreferencesChanged(); - - // Make sure the items list has been initialized - if (ItemsList != null) - { - if (DisplayPreferences.ScrollDirection == ScrollDirection.Horizontal) - { - ScrollViewer.SetHorizontalScrollBarVisibility(ItemsList, ScrollBarVisibility.Hidden); - ScrollViewer.SetVerticalScrollBarVisibility(ItemsList, ScrollBarVisibility.Disabled); - } - else - { - ScrollViewer.SetHorizontalScrollBarVisibility(ItemsList, ScrollBarVisibility.Disabled); - ScrollViewer.SetVerticalScrollBarVisibility(ItemsList, ScrollBarVisibility.Hidden); - } - } - } - - } -} |
