Exemplo n.º 1
0
        private void MessageSeparatorEvent_BindingContextChanged(object sender, EventArgs e)
        {
            if (BindingContext != null)
            {
                MessageElementModel message = (MessageElementModel)BindingContext;
                if ((message != null) && (message.Peer != null) && (message.Peer.Type == Rainbow.Model.Conversation.ConversationType.User))
                {
                    peerJid = message.Peer.Jid;
                    body    = message.Content.Body;
                    if (message.CallLogAttachment != null)
                    {
                        String currentContactJid = Helper.SdkWrapper.GetCurrentContactJid();
                        callLogAttachment = message.CallLogAttachment;
                        isCallLogEvent    = true;

                        // Store PeerJid
                        if (callLogAttachment.Callee != currentContactJid)
                        {
                            peerJid = callLogAttachment.Callee;
                        }
                        else
                        {
                            peerJid = callLogAttachment.Caller;
                        }
                    }
                    ManageDisplay();
                }
            }
        }
        private void MessageContentBodyWithImg_BindingContextChanged(object sender, EventArgs e)
        {
            if ((BindingContext != null) && (message == null))
            {
                message = (MessageElementModel)BindingContext;
                if (message != null)
                {
                    // Manage Image / Uri
                    String body = message.Content?.Body;

                    if (String.IsNullOrEmpty(body))
                    {
                        return;
                    }

                    String[] parts = body.Split(' ');
                    if (parts.Count() > 1)
                    {
                        String uri = parts[1];

                        Image.Source = ImageSource.FromUri(new Uri(uri));
                    }
                }
            }
        }
Exemplo n.º 3
0
        public IHttpActionResult UpdateMessageElement(int id, [FromBody] MessageElementModel.Format_Update dataModel)
        {
            string logForm = "Form : " + JsonConvert.SerializeObject(dataModel);
            string logAPI  = "[Patch] " + Request.RequestUri.ToString();

            if (!ModelState.IsValid || dataModel == null)
            {
                Global._appLogger.Warn(logAPI + " || Input Parameter not expected || " + logForm);
                return(Content(HttpStatusCode.BadRequest, HttpResponseFormat.InvaildData()));
            }

            try
            {
                MessageElementModel model = new MessageElementModel();
                model.Update(id, dataModel);

                return(Content(HttpStatusCode.OK, HttpResponseFormat.Success()));
            }
            catch (CDSException cdsEx)
            {
                return(Content(HttpStatusCode.BadRequest, CDSException.GetCDSErrorMessageByCode(cdsEx.ErrorId)));
            }
            catch (Exception ex)
            {
                StringBuilder logMessage = LogHelper.BuildExceptionMessage(ex);
                logMessage.AppendLine(logForm);
                Global._appLogger.Error(logAPI + logMessage);

                return(Content(HttpStatusCode.InternalServerError, ex));
            }
        }
        private void MessageContentBody_BindingContextChanged(object sender, EventArgs e)
        {
            if ((BindingContext != null) && (message == null))
            {
                message = (MessageElementModel)BindingContext;
                if (message != null)
                {
                    String colorKey;
                    String backgroundColorKey;

                    if (message.Peer.Id == Helper.SdkWrapper.GetCurrentContactId())
                    {
                        colorKey           = "ColorConversationStreamMessageCurrentUserFont";
                        backgroundColorKey = "ColorConversationStreamMessageCurrentUserBackGround";
                    }
                    else
                    {
                        colorKey           = "ColorConversationStreamMessageOtherUserFont";
                        backgroundColorKey = "ColorConversationStreamMessageOtherUserBackGround";
                    }

                    Label.TextColor = Helper.GetResourceDictionaryById <Color>(colorKey);
                    BackgroundColor = Helper.GetResourceDictionaryById <Color>(backgroundColorKey);
                }
            }
        }
Exemplo n.º 5
0
        private void MessageContentUrgency_BindingContextChanged(object sender, EventArgs e)
        {
            if ((BindingContext != null) && (message == null))
            {
                message = (MessageElementModel)BindingContext;
                if (message?.Content.Urgency != Rainbow.Model.UrgencyType.Std)
                {
                    String backgroudColorKey = null;
                    String colorKey          = null;
                    Color  color;
                    String labelKey       = null;
                    String imageSourceKey = null;

                    switch (message.Content.Urgency)
                    {
                    case Rainbow.Model.UrgencyType.High:
                        backgroudColorKey = "ColorBackgroundUrgencyEmergency";
                        colorKey          = "ColorUrgencyEmergency";
                        labelKey          = "emergencyAlert";
                        imageSourceKey    = "Font_Fire";
                        break;

                    case Rainbow.Model.UrgencyType.Middle:
                        backgroudColorKey = "ColorBackgroundUrgencyImportant";
                        colorKey          = "ColorUrgencyImportant";
                        labelKey          = "warningAlert";
                        imageSourceKey    = "Font_ExclamationTriangle";
                        break;

                    case Rainbow.Model.UrgencyType.Low:
                        backgroudColorKey = "ColorBackgroundUrgencyInformation";
                        colorKey          = "ColorUrgencyInformation";
                        labelKey          = "notifyAlert";
                        imageSourceKey    = "Font_Lightbulb";
                        break;
                    }

                    color = Helper.GetResourceDictionaryById <Color>(colorKey);

                    StackLayout.BackgroundColor = Helper.GetResourceDictionaryById <Color>(backgroudColorKey);

                    Label.TextColor = color;
                    Label.Text      = Helper.SdkWrapper.GetLabel(labelKey)?.ToUpper();

                    /*
                     *  /!\ We need to have a Width at least of MINIMAL_MESSAGE_WIDTH: Image => 20
                     *  If not the background correct will not be correct
                     */
                    Label.WidthRequest = MessageContent.MINIMAL_MESSAGE_WIDTH - Image.WidthRequest;

                    Image.Source = Helper.GetImageSourceFromFont(imageSourceKey + "|" + color.ToHex());
                }
            }
        }
Exemplo n.º 6
0
 private void MessageSeparatorDisplayName_BindingContextChanged(object sender, EventArgs e)
 {
     if (BindingContext != null)
     {
         MessageElementModel message = (MessageElementModel)BindingContext;
         if (message?.Peer?.Jid != null)
         {
             peer = message.Peer;
             ManageDisplay();
         }
     }
 }
Exemplo n.º 7
0
        private void MessageContentDeleted_BindingContextChanged(object sender, EventArgs e)
        {
            if (BindingContext != null)
            {
                MessageElementModel message = (MessageElementModel)BindingContext;
                if (message != null)
                {
                    peerJid = message.Peer.Jid;

                    ManageDisplay();
                }
            }
        }
Exemplo n.º 8
0
 public IHttpActionResult GetMessageElementById(int id)
 {
     try
     {
         MessageElementModel model = new MessageElementModel();
         return(Content(HttpStatusCode.OK, model.GetById(id)));
     }
     catch (CDSException cdsEx)
     {
         return(Content(HttpStatusCode.BadRequest, CDSException.GetCDSErrorMessageByCode(cdsEx.ErrorId)));
     }
     catch (Exception ex)
     {
         return(Content(HttpStatusCode.InternalServerError, ex));
     }
 }
        private void MessageContentReply_BindingContextChanged(object sender, EventArgs e)
        {
            if (BindingContext != null)
            {
                try
                {
                    message = (MessageElementModel)BindingContext;
                }
                catch { }

                if ((message != null) && !String.IsNullOrEmpty(message.ConversationId))
                {
                    String backgroundColorKey;
                    if ((message.Peer.Id != Helper.SdkWrapper.GetCurrentContactId()) || usedAsInput)
                    {
                        backgroundColorKey = "ColorConversationStreamMessageOtherUserBackGround";
                    }
                    else
                    {
                        backgroundColorKey = "ColorConversationStreamMessageCurrentUserBackGround";
                    }
                    BackgroundColor = Helper.GetResourceDictionaryById <Color>(backgroundColorKey);

                    // By default there is no Image visible
                    Image.IsVisible = true;

                    InitEvents();

                    // We need to get Name and text of the replied message ...
                    Rainbow.Model.Message rbRepliedMessage = Helper.SdkWrapper.GetOneMessageFromConversationIdFromCache(message.ConversationId, message.Reply.Id);

                    if (rbRepliedMessage != null)
                    {
                        log.LogDebug("[MessageContentReply_BindingContextChanged] Id:[{0}] - Reply.Id:[{1}] - Content:[2}]", message.Id, message.Reply.Id, rbRepliedMessage.Content);
                        SetReplyPartOfMessage(rbRepliedMessage);
                    }
                    else
                    {
                        AskMessageInfo();
                    }
                }
            }
        }
        public void SetReplyMessage(MessageElementModel messageElementModel)
        {
            // Ensure to be on Main UI Thread
            if (!MainThread.IsMainThread)
            {
                MainThread.BeginInvokeOnMainThread(() => SetReplyMessage(messageElementModel));
                return;
            }

            // We can't add attachments
            FrameBeforeButtonAttachment.IsVisible = false;
            ButtonAttachment.IsVisible            = false;

            replyToMessageId = messageElementModel?.Reply?.Id;

            MessageContentReply.SetUsageMode(true);
            MessageContentReply.BindingContext = messageElementModel;

            MessageContentReplyElement.IsVisible = true;
        }
Exemplo n.º 11
0
 public IHttpActionResult DeleteMessageElement(int id)
 {
     try
     {
         MessageElementModel model = new MessageElementModel();
         model.DeleteById(id);
         return(Content(HttpStatusCode.OK, HttpResponseFormat.Success()));
     }
     catch (CDSException cdsEx)
     {
         return(Content(HttpStatusCode.BadRequest, CDSException.GetCDSErrorMessageByCode(cdsEx.ErrorId)));
     }
     catch (Exception ex)
     {
         string        logAPI     = "[Delete] " + Request.RequestUri.ToString();
         StringBuilder logMessage = LogHelper.BuildExceptionMessage(ex);
         Global._appLogger.Error(logAPI + logMessage);
         return(Content(HttpStatusCode.InternalServerError, ex));
     }
 }
Exemplo n.º 12
0
        private void MessageContentBodyWithCode_BindingContextChanged(object sender, EventArgs e)
        {
            if ((BindingContext != null) && (message == null))
            {
                message = (MessageElementModel)BindingContext;
                if (message != null)
                {
                    // Manage Image / Uri
                    String body = message.Content?.Body;

                    if (body.StartsWith("/code", StringComparison.InvariantCultureIgnoreCase))
                    {
                        body = body.Substring(6);

                        body = body.Trim().TrimStart('\r', '\n').TrimEnd('\r', '\n');

                        Label.Text = body;
                    }
                }
            }
        }
Exemplo n.º 13
0
        private void MessageContentAttachment_BindingContextChanged(object sender, EventArgs e)
        {
            if (BindingContext != null)
            {
                MessageElementModel message = (MessageElementModel)BindingContext;
                if (message != null)
                {
                    if (message.Content.Attachment != null)
                    {
                        conversationId   = message.ConversationId;
                        peerJid          = message.Peer.Jid;
                        attachmentId     = message.Content.Attachment.Id;
                        attachmentName   = message.Content.Attachment.Name;
                        attachmentSize   = message.Content.Attachment.Size;
                        attachmentAction = message.Content.Attachment.Action;

                        ManageDisplay();
                    }
                }
            }
        }
        private void MessageCurrentUserWithDate_BindingContextChanged(object sender, EventArgs e)
        {
            if (BindingContext != null)
            {
                MessageElementModel message = (MessageElementModel)BindingContext;
                if ((message != null) && (message.ConversationType == Rainbow.Model.Conversation.ConversationType.User))
                {
                    if (!receiptEventManaged)
                    {
                        receiptEventManaged = true;

                        messageId      = message.Id;
                        conversationId = message.ConversationId;
                        receipt        = message.Receipt;
                        displayReceipt = message.NeedReceipt; // Do we have to display receipt ?

                        UpdateDisplay();

                        Helper.SdkWrapper.ReceiptReceived += SdkWrapper_ReceiptReceived;
                        Helper.SdkWrapper.MessagesAllRead += SdkWrapper_MessagesAllRead;
                    }
                }
            }
        }
        protected override void OnBindingContextChanged()
        {
            if ((BindingContext != null) && (message == null))
            {
                message = (MessageElementModel)BindingContext;
                if (message != null)
                {
                    // Add Urgency element ?
                    if (message.Content.Urgency != UrgencyType.Std)
                    {
                        if (messageContentUrgency == null)
                        {
                            messageContentUrgency = new MessageContentUrgency();
                            messageContentUrgency.BindingContext = message;
                            ContentGrid.Children.Add(messageContentUrgency, 0, 0);
                            Grid.SetColumnSpan(messageContentUrgency, 2);
                        }
                    }

                    // Add forward header
                    if (message.IsForwarded)
                    {
                        if (messageContentForward == null)
                        {
                            messageContentForward = new MessageContentForward();
                            messageContentForward.BindingContext = message;
                            ContentGrid.Children.Add(messageContentForward, 0, 0);
                            Grid.SetColumnSpan(messageContentForward, 2);
                        }
                    }

                    // Add Reply element ?
                    if (message.Reply != null)
                    {
                        if (messageContentReply == null)
                        {
                            messageContentReply = new MessageContentReply();
                            messageContentReply.BindingContext = message;
                            ContentGrid.Children.Add(messageContentReply, 0, 1);
                            Grid.SetColumnSpan(messageContentReply, 2);
                        }
                    }

                    // Add Body element ?
                    if (!String.IsNullOrEmpty(message.Content?.Body))
                    {
                        if (message.Content.Body.StartsWith("/img", StringComparison.InvariantCultureIgnoreCase))
                        {
                            if (messageContentBodyWithImg == null)
                            {
                                messageContentBodyWithImg = new MessageContentBodyWithImg();
                                messageContentBodyWithImg.BindingContext = message;
                                ContentGrid.Children.Add(messageContentBodyWithImg, 0, 2);
                            }
                        }
                        else if (message.Content.Body.StartsWith("/code", StringComparison.InvariantCultureIgnoreCase))
                        {
                            if (messageContentBodyWithCode == null)
                            {
                                messageContentBodyWithCode = new MessageContentBodyWithCode();
                                messageContentBodyWithCode.BindingContext = message;
                                ContentGrid.Children.Add(messageContentBodyWithCode, 0, 2);
                            }
                        }
                        else if (messageContentBody == null)
                        {
                            messageContentBody = new MessageContentBody();
                            messageContentBody.BindingContext = message;
                            ContentGrid.Children.Add(messageContentBody, 0, 2);
                        }

                        BtnPosition = 2;
                    }
                    else if (message.Content.Type == "deletedMessage")
                    {
                        // We don't need action button in this case
                        needActionButton = false;

                        // Create MessageContentDeleted
                        messageContentDeleted = new MessageContentDeleted();
                        messageContentDeleted.BindingContext = message;
                        ContentGrid.Children.Add(messageContentDeleted, 0, 2);
                        Grid.SetColumnSpan(messageContentDeleted, 2);
                    }

                    // Add Attachment element ?
                    if (message.Content.Attachment != null)
                    {
                        if (messageContentAttachment == null)
                        {
                            messageContentAttachment = new MessageContentAttachment();
                            messageContentAttachment.BindingContext = message;
                            ContentGrid.Children.Add(messageContentAttachment, 0, 3);

                            if (BtnPosition == -1)
                            {
                                BtnPosition = 3;
                            }
                            else
                            {
                                Grid.SetColumnSpan(messageContentAttachment, 2);
                            }
                        }
                    }

                    // Are we managing a msg of the current user ?
                    if (message.Peer.Id == Helper.SdkWrapper.GetCurrentContactId())
                    {
                        color           = Helper.GetResourceDictionaryById <Color>("ColorConversationStreamMessageCurrentUserFont");
                        backgroundColor = Helper.GetResourceDictionaryById <Color>("ColorConversationStreamMessageCurrentUserBackGround");
                    }
                    else
                    {
                        color           = Helper.GetResourceDictionaryById <Color>("ColorConversationStreamMessageOtherUserFont");
                        backgroundColor = Helper.GetResourceDictionaryById <Color>("ColorConversationStreamMessageOtherUserBackGround");
                    }
                    interpolateColor = ColorInterpolator.InterpolateBetween(color, backgroundColor, 0.5);


                    Frame.BackgroundColor = backgroundColor;

                    // Add Btn Action in the correct place
                    if (needActionButton && (BtnPosition != -1))
                    {
                        CreateBtnAction();

                        BtnAction.ImageSourceId              = null;
                        BtnAction.BackgroundColor            = backgroundColor;
                        BtnAction.BackgroundColorOnMouseOver = interpolateColor;

                        ContentGrid.Children.Add(BtnAction, 1, BtnPosition);
                    }
                }
            }
        }
Exemplo n.º 16
0
        public IHttpActionResult GetAllMessageSchemaByDeviceId(int id)
        {
            MessageElementModel model = new MessageElementModel();

            return(Ok(model.GetAllByMessageCatalogId(id)));
        }