Exemple #1
0
        /// <summary>
        /// Method gets count of details
        /// </summary>
        /// <param name="wrapper"></param>
        /// <returns></returns>
        private int _GetDetailsCount(MessageWindowDataWrapper wrapper)
        {
            int result = 0;

            if (null != wrapper.Details)
            {
                foreach (object obj in wrapper.Details)
                {
                    result++;
                }
            }

            return(result);
        }
        private void _AddMessage(MessageType type, string timeMark, string message, Link link, IEnumerable <MessageDetail> details)
        {
            // convert to wrapper
            List <MessageDetailDataWrap> detailsWrap = null;

            if (null != details)
            {
                detailsWrap = new List <MessageDetailDataWrap>();

                IEnumerator <MessageDetail> enumerator = details.GetEnumerator();
                while ((null != enumerator) && enumerator.MoveNext())
                {
                    MessageDetail detail = enumerator.Current;
                    detailsWrap.Add(new MessageDetailDataWrap(detail.Type, detail.Description));
                }
            }

            // add message
            MessageWindowTextDataWrapper textWrapper = new MessageWindowTextDataWrapper(message, link);
            MessageWindowDataWrapper     wrapper     = new MessageWindowDataWrapper(type, timeMark, textWrapper, detailsWrap);

            if (0 == _data.Count)
            {
                _data.Add(wrapper);
            }
            else
            {
                _data.Insert(0, wrapper);
            }

            _collectionSource.Source = _data;

            // NOTE: XceedGrid issue - refresh logical children
            if (null != _collectionSource.View)
            {
                _collectionSource.View.Refresh();
            }

            // auto open window
            if (MessageType.Error == type)
            {   // error - open the message window
                _timer.Enabled = false;
                _timer.Stop();
                _isAutoOpened = false;
                _isNeedClose  = false;
                if (Visibility.Visible != this.Visibility)
                {
                    App.Current.MainWindow.ToggleMessageWindowState();
                }

                // expand error details
                if (null != details)
                {
                    DataGridContext dgc = xceedGrid.CurrentContext;
                    xceedGrid.ExpandDetails(dgc.Items.GetItemAt(0));
                }
            }

            else if (MessageType.Warning == type)
            {   // warning - pop the message window
                if (Visibility.Visible != this.Visibility)
                {
                    App.Current.MainWindow.ToggleMessageWindowState();
                    _isAutoOpened = true;

                    _timer.Interval = SHOW_POPUP_MESSAGE_TIMER_INTERVAL;
                    _timer.Start();
                    _timer.Enabled = true;
                    _isNeedClose   = false;
                }
                else if (_isAutoOpened)
                {   // reinit timer
                    _timer.Enabled = false;
                    _timer.Stop();

                    _timer.Interval = SHOW_POPUP_MESSAGE_TIMER_INTERVAL;
                    _timer.Start();
                    _timer.Enabled = true;
                    _isNeedClose   = false;
                }

                // Expand error details.
                if (null != details)
                {
                    DataGridContext dgc = xceedGrid.CurrentContext;
                    xceedGrid.ExpandDetails(dgc.Items.GetItemAt(0));
                }
            }
            // else info don't change state of the message window
        }