Esempio n. 1
0
 public ProgressBarViewModel()
 {
     this.state       = InternalProgressBarState.Disabled;
     this.lockObject  = new object();
     this.timer       = new DispatcherTimer();
     this.timer.Tick += this.OnTimer;
 }
Esempio n. 2
0
        private void ChangeState(bool enable)
        {
            lock (this.lockObject)
            {
                switch (this.state)
                {
                case InternalProgressBarState.Disabled:
                    if (enable)
                    {
                        this.state = InternalProgressBarState.EnablePending;

                        // start the enable delay timer
                        this.timer.Interval = new TimeSpan(0, 0, ENABLEDELAY);
                        this.timer.Start();
                    }

                    break;

                case InternalProgressBarState.EnablePending:
                    if (!enable)
                    {
                        this.state = InternalProgressBarState.Disabled;

                        // stop the enable delay timer
                        this.timer.Stop();
                    }

                    break;

                case InternalProgressBarState.Enabled:
                    if (!enable)
                    {
                        this.state = InternalProgressBarState.DisablePending;
                    }

                    break;

                case InternalProgressBarState.OkToDisable:
                    if (!enable)
                    {
                        this.state = InternalProgressBarState.Disabled;
                    }

                    break;

                case InternalProgressBarState.DisablePending:
                    if (enable)
                    {
                        this.state = InternalProgressBarState.Enabled;
                    }

                    break;
                }
            }

            this.RaisePropertyChanged("ProgressBarState");
        }
Esempio n. 3
0
        private void OnTimer(object o, EventArgs sender)
        {
            lock (this.lockObject)
            {
                switch (this.state)
                {
                case InternalProgressBarState.EnablePending:
                    // Stop the enable delay timer
                    this.state = InternalProgressBarState.Enabled;
                    this.timer.Stop();

                    // Start the disable delay timer
                    this.timer.Interval = new TimeSpan(0, 0, DISABLEDELAY);
                    this.timer.Start();

                    break;

                case InternalProgressBarState.Enabled:
                    this.state = InternalProgressBarState.OkToDisable;
                    this.timer.Stop();
                    break;

                case InternalProgressBarState.DisablePending:
                    this.state = InternalProgressBarState.Disabled;
                    this.timer.Stop();
                    break;

                default:
                    Debug.Assert(true, "Progress bar state is incorrect on timer tick: " + this.state);
                    this.state = InternalProgressBarState.Disabled;
                    this.timer.Stop();
                    break;
                }
            }

            this.RaisePropertyChanged("ProgressBarState");
        }