internal PopupForm() { _instance = this; _current = null; _mouseOver = false; _animationStep = 0; _popupScreen = null; _popupTimer = new Timer(); _popupTimer.Tick += new EventHandler(PopupTimer_Tick); _idleCompleteTimer = new Timer { Interval = 4000 }; _idleCompleteTimer.Tick += new EventHandler(IdleCompleteTimer_Tick); Disposed += new EventHandler(PopupForm_Disposed); SetStyle(ControlStyles.Opaque | ControlStyles.Selectable , false); SetStyle(ControlStyles.OptimizedDoubleBuffer| ControlStyles.SupportsTransparentBackColor, true); }
void PopupForm_Disposed(object sender, EventArgs e) { if (_current != null) { _current.Dispose(); _current = null; } _popupTimer.Dispose(); _idleCompleteTimer.Dispose(); _instance = null; while (_queue.Count > 0) { var popup = _queue[0]; _queue.RemoveAt(0); popup.Show(); } }
private void AnimateWaiting() { _popupTimer.Stop(); if (_queue.Count > 0) { _state = PopupState.Waiting; if (_current != null) { _current.Dispose(); } _current = _queue[0]; _queue.RemoveAt(0); if (_current == null) throw new Exception("Expected current popup"); CalculatePopupRect(); UpdateFromAnimationStep(); _popupTimer.Interval = _current.Duration; _popupTimer.Start(); Invalidate(); } else { CompleteClosing(); } }
public PopupEventArgs(Popup popup) { Popup = popup; }
internal void Show(Popup popup) { _queue.Add(popup); if (_current == null) { _current = _queue[0]; _queue.RemoveAt(0); Cursor = _current.Cursor; CalculatePopupRect(); if (PopupUtil.ShouldShowPopup(this, _popupScreen)) { ShowPopup(); } else { _state = PopupState.Pending; _popupTimer.Interval = 200; _popupTimer.Start(); } } }
public void CancelPopup(Popup popup) { if (popup == _current) { ShowNext(); } else { if (_queue.Remove(popup)) { popup.Dispose(); } } }
public static void CancelPopup(Popup popup) { if (PopupForm.Instance != null) { PopupForm.Instance.CancelPopup(popup); } }