コード例 #1
0
        MessageView GetNextMessage()
        {
            MessageView message = null;

            if (!DiscardRepeated)
            {
                return(MessageBarQueue.Dequeue());
            }

            while (MessageBarQueue.Count > 0)
            {
                message = MessageBarQueue.Dequeue();

                if (IsEqualLastMessage(message))
                {
                    message = null;
                }
                else
                {
                    break;
                }
            }

            lastMessage = message;

            return(message);
        }
コード例 #2
0
        void ShowNextMessage()
        {
            if (MessageBarQueue.Count > 0)
            {
                MessageVisible = true;
                MessageView messageView = MessageBarQueue.Dequeue();
                messageView.Frame  = new RectangleF(0, -messageView.Height, messageView.Width, messageView.Height);
                messageView.Hidden = false;
                messageView.SetNeedsDisplay();

                var gest = new UITapGestureRecognizer(MessageTapped);
                messageView.AddGestureRecognizer(gest);
                if (messageView == null)
                {
                    return;
                }

                UIView.Animate(DismissAnimationDuration,
                               () =>
                               messageView.Frame = new RectangleF(messageView.Frame.X,
                                                                  MessageBarOffset + messageView.Frame.Y + messageView.Height,
                                                                  messageView.Width, messageView.Height)
                               );

                //Need a better way of dissmissing the method
                var dismiss = new Timer(DismissMessage, messageView, TimeSpan.FromSeconds(DisplayDelay),
                                        TimeSpan.FromMilliseconds(-1));
            }
        }
コード例 #3
0
        /// <summary>
        /// Shows the message
        /// </summary>
        /// <param name="title">Messagebar title</param>
        /// <param name="description">Messagebar description</param>
        /// <param name="type">Message type</param>
        /// <param name = "onDismiss">OnDismiss callback</param>
        public void ShowMessage(string title, string description, MessageType type, Action onDismiss)
        {
            var messageView = new MessageView(title, description, type);

            messageView.StylesheetProvider = this;
            messageView.OnDismiss          = onDismiss;
            messageView.Hidden             = true;
            UIApplication.SharedApplication.KeyWindow.InsertSubview(messageView, 1);
            MessageBarQueue.Enqueue(messageView);

            if (!MessageVisible)
            {
                ShowNextMessage();
            }
        }
コード例 #4
0
        /// <summary>
        /// Hides all messages
        /// </summary>
        public void HideAll()
        {
            MessageView currentMessageView = null;
            var         subviews           = MessageWindowView.Subviews;

            foreach (UIView subview in subviews)
            {
                var view = subview as MessageView;
                if (view != null)
                {
                    currentMessageView = view;
                    currentMessageView.RemoveFromSuperview();
                }
            }

            MessageVisible = false;
            MessageBarQueue.Clear();
            CancelPreviousPerformRequest(this);
        }