using MediaBrowser.Model.Net;
using MediaBrowser.UI;
using MediaBrowser.UI.Controls;
using System;
using System.Windows;
using System.Windows.Controls;
namespace MediaBrowser.Plugins.DefaultTheme.DisplayPreferences
{
    /// 
    /// Interaction logic for SortMenuPage.xaml
    /// 
    public partial class SortMenuPage : BaseDisplayPreferencesPage
    {
        /// 
        /// Initializes a new instance of the  class.
        /// 
        public SortMenuPage()
        {
            InitializeComponent();
            chkRemember.Click += chkRemember_Click;
        }
        /// 
        /// Handles the Click event of the chkRemember control.
        /// 
        /// The source of the event.
        /// The  instance containing the event data.
        async void chkRemember_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                await MainPage.UpdateRememberSort(chkRemember.IsChecked.HasValue && chkRemember.IsChecked.Value);
            }
            catch (HttpException)
            {
                App.Instance.ShowDefaultErrorMessage();
            }
        }
        /// 
        /// Called when [loaded].
        /// 
        protected override void OnLoaded()
        {
            chkRemember.IsChecked = MainPage.DisplayPreferences.RememberSorting;
            
            var index = 0;
            var currentValue = MainPage.SortBy ?? string.Empty;
            foreach (var option in MainPage.Folder.SortOptions)
            {
                var radio = new ExtendedRadioButton { GroupName = "Options" };
                radio.SetResourceReference(StyleProperty, "ViewMenuRadioButton");
                var textblock = new TextBlock { Text = option };
                textblock.SetResourceReference(StyleProperty, "TextBlockStyle");
                radio.Content = textblock;
                if (string.IsNullOrEmpty(MainPage.DisplayPreferences.SortBy))
                {
                    radio.IsChecked = index == 0;
                }
                else
                {
                    radio.IsChecked = currentValue.Equals(option, StringComparison.OrdinalIgnoreCase);
                }
                radio.Tag = option;
                radio.Click += radio_Click;
                pnlOptions.Children.Add(radio);
                index++;
            }
            base.OnLoaded();
        }
        /// 
        /// Handles the Click event of the radio control.
        /// 
        /// The source of the event.
        /// The  instance containing the event data.
        async void radio_Click(object sender, RoutedEventArgs e)
        {
            await MainPage.UpdateSortOption((sender as RadioButton).Tag.ToString());
        }
    }
}