예제 #1
0
        private static VoiceMessageItem GetLoadedVoiceMessageItem(IVirtualizable item)
        {
            VoiceMessageItem voiceMessageItem = ConversationItems.GetVoiceMessageItem(item);

            if (voiceMessageItem != null && voiceMessageItem.CurrentState != VirtualizableState.Unloaded)
            {
                return(voiceMessageItem);
            }
            return((VoiceMessageItem)null);
        }
예제 #2
0
 private double CreateVoiceMessage(double topMargin)
 {
     if (this._voiceMessageDoc == null)
     {
         return(0.0);
     }
     topMargin += 8.0;
     if (this._voiceMessageItem != null)
     {
         this._voiceMessageItem.Margin       = new Thickness(0.0, topMargin, 0.0, 0.0);
         this._voiceMessageItem.IsHorizontal = this._isHorizontal;
     }
     else
     {
         this._voiceMessageItem = new VoiceMessageItem(this._verticalWidth, new Thickness(0.0, topMargin, 0.0, 0.0), this._voiceMessageDoc, this._isHorizontal, this._horizontalWidth);
         this.VirtualizableChildren.Add((IVirtualizable)this._voiceMessageItem);
     }
     return(this._voiceMessageItem.FixedHeight);
 }
예제 #3
0
        private static VoiceMessageItem GetVoiceMessageItem(IVirtualizable item)
        {
            MessageItem        messageItem        = item as MessageItem;
            MessageContentItem messageContentItem = messageItem == null ? item as MessageContentItem : messageItem.VirtualizableChildren.FirstOrDefault <IVirtualizable>((Func <IVirtualizable, bool>)(i => i is MessageContentItem)) as MessageContentItem;

            if (messageContentItem != null)
            {
                if (messageContentItem.ForwardedList != null && messageContentItem.ForwardedList.Count > 0)
                {
                    return((VoiceMessageItem)null);
                }
                AttachmentsItem  attachmentsItem  = messageContentItem.VirtualizableChildren.FirstOrDefault <IVirtualizable>((Func <IVirtualizable, bool>)(i => i is AttachmentsItem)) as AttachmentsItem;
                VoiceMessageItem voiceMessageItem = (attachmentsItem != null ? attachmentsItem.VirtualizableChildren.FirstOrDefault <IVirtualizable>((Func <IVirtualizable, bool>)(i => i is VoiceMessageItem)) : (IVirtualizable)null) as VoiceMessageItem;
                if (voiceMessageItem != null)
                {
                    return(voiceMessageItem);
                }
            }
            return((VoiceMessageItem)null);
        }
예제 #4
0
        public void Handle(VoiceMessagePlayEndedEvent message)
        {
            if (this._messages == null || this._messages.Count == 0)
            {
                return;
            }
            Doc doc1 = message.Doc;

            if (doc1 == null || doc1.owner_id == 0L || doc1.id == 0L)
            {
                return;
            }
            int index1 = -1;

            for (int index2 = this._messages.Count - 1; index2 >= 0; --index2)
            {
                VoiceMessageItem voiceMessageItem = ConversationItems.GetLoadedVoiceMessageItem((IVirtualizable)(this._messages[index2] as MessageItem));
                Doc doc2 = voiceMessageItem != null ? voiceMessageItem.Doc : (Doc)null;
                if (voiceMessageItem != null && doc2 != null && (doc2.owner_id == doc1.owner_id && doc2.id == doc1.id))
                {
                    index1 = index2 - 1;
                    break;
                }
            }
            if (index1 < 0)
            {
                return;
            }
            VoiceMessageItem voiceMessageItem1 = ConversationItems.GetLoadedVoiceMessageItem((IVirtualizable)(this._messages[index1] as MessageItem));

            if (voiceMessageItem1 == null)
            {
                return;
            }
            voiceMessageItem1.PlayPause();
        }