aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.ServerApplication/MainWindow.xaml.cs
blob: 6180482d7ea0f5560b889faf40b4d4819bf037c2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
using Hardcodet.Wpf.TaskbarNotification;
using MediaBrowser.Common.Events;
using MediaBrowser.Controller;
using MediaBrowser.Model.Progress;
using System;
using System.ComponentModel;
using System.Threading;
using System.Windows;

namespace MediaBrowser.ServerApplication
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window, INotifyPropertyChanged
    {
        private Timer LoadingIconTimer { get; set; }

        public MainWindow()
        {
            InitializeComponent();
            Loaded += MainWindowLoaded;
        }

        void MainWindowLoaded(object sender, RoutedEventArgs e)
        {
            DataContext = this;

            Kernel.Instance.ReloadBeginning += KernelReloadBeginning;
            Kernel.Instance.ReloadCompleted += KernelReloadCompleted;
        }

        void KernelReloadBeginning(object sender, GenericEventArgs<IProgress<TaskProgress>> e)
        {
            MbTaskbarIcon.ShowBalloonTip("Media Browser is reloading", "Please wait...", BalloonIcon.Info);

            LoadingImageIndex = 0;

            LoadingIconTimer = new Timer(LoadingIconTimerCallback, null, 0, 250);
        }

        void KernelReloadCompleted(object sender, GenericEventArgs<IProgress<TaskProgress>> e)
        {
            LoadingIconTimer.Dispose();

            LoadingImageIndex = 0;
        }

        public event PropertyChangedEventHandler PropertyChanged;

        public void OnPropertyChanged(String info)
        {
            if (PropertyChanged != null)
            {
                PropertyChanged(this, new PropertyChangedEventArgs(info));
            }
        }

        private int _loadingImageIndex;
        public int LoadingImageIndex
        {
            get { return _loadingImageIndex; }
            set
            {
                _loadingImageIndex = value;
                OnPropertyChanged("LoadingImageIndex");
            }
        }

        #region Context Menu events

        private void cmOpenDashboard_click(object sender, RoutedEventArgs e)
        {
            App.OpenDashboard();
        }

        private void cmVisitCT_click(object sender, RoutedEventArgs e)
        {
            App.OpenUrl("http://community.mediabrowser.tv/");
        }

        private void cmExit_click(object sender, RoutedEventArgs e)
        {
            Close();
        }

        private async void cmdReloadServer_click(object sender, RoutedEventArgs e)
        {
            await Kernel.Instance.Reload(new Progress<TaskProgress>()).ConfigureAwait(false);
        }

        private void LoadingIconTimerCallback(object stateInfo)
        {
            const int numImages = 4;

            if (LoadingImageIndex < numImages)
            {
                LoadingImageIndex++;
            }
            else
            {
                LoadingImageIndex = 1;
            }
        }

        #endregion

    }
}