コード例 #1
0
        protected internal override void OnMessageReceived(ConversationMessage message)
        {
            BrowseResponseMessage rep = message as BrowseResponseMessage;

            if (rep != null)
            {
                _rbu.ProcessResponse(rep);
            }
        }
コード例 #2
0
        protected internal override void OnMessageReceived(ConversationMessage message)
        {
            BrowseRequestMessage brMessage = message as BrowseRequestMessage;

            if (brMessage != null)
            {
                if (respondMessage == null ||
                    !respondMessage.browserId.Equals(brMessage.browserId))
                {
                    #region comment
                    //TODO 如果是安卓又该如何处理?首先需要搞清楚这是在分类浏览,还是在浏览目录,如果是在浏览目录,这个代码可用
                    //如果是在分类浏览,那么需要去数据库中查询,并返回列表。

                    //如果安卓做分类浏览,那么分类浏览中有没有子目录的概念?有的图库中有多个相册,是如何处理的?多个相册看起来像是文件夹的概念。

                    //TODO 新拍摄的图片之类的,没有立即存储到MediaStore,如何处理?
                    //TODO 如果有生成并缓存缩略图,那些缩略图要被MediaStore忽略才行。

                    //http://blog.csdn.net/yhcelebrite/article/details/11714925
                    //http://blog.csdn.net/bgc525725278/article/details/8131657
                    #endregion

                    if (work != null && work.IsBusy)
                    {
                        work.CancelAsync();
                    }
                    var browseList = Env.Instance.GetBrowseList(brMessage.path);
                    respondMessage           = new BrowseResponseMessage();
                    respondMessage.browserId = brMessage.browserId;
                    respondMessage.Items     = browseList;
                    respondMessage.path      = brMessage.path;
                    PostMessage(respondMessage);
                }

                return;
            }

            ThumbnailRequestMessage thumbRequestMessage = message as ThumbnailRequestMessage;
            if (thumbRequestMessage != null)
            {
                work = new BackgroundWorker()
                {
                    WorkerSupportsCancellation = true
                };
                work.DoWork += Work_DoWork;
                work.RunWorkerAsync(thumbRequestMessage);

                return;
            }
        }
コード例 #3
0
        internal void ProcessResponse(BrowseResponseMessage rep)
        {
            if (rep == null || rep.BrowserId != _currentRequest?.BrowserId)
            {
                return;
            }

            CurrentDir = rep.CurrentDir;
            foreach (var item in rep.Items)
            {
                item.Parent = rep.CurrentDir;
            }
            _listResult?.TrySetResult(rep.Items);
            _listResult = null;
        }
コード例 #4
0
        /// <summary>
        /// Returns the references that meet the filter criteria for one or more nodes.
        /// </summary>
        public BrowseResponseMessage Browse(BrowseMessage request)
        {
            try
            {
                lock (m_lock)
                {
                    // verify the session.
                    VerifySession(request.RequestHeader, false);

                    // process each node being browsed.
                    ListOfBrowseResult   results         = new ListOfBrowseResult();
                    ListOfDiagnosticInfo diagnosticInfos = new ListOfDiagnosticInfo();

                    for (int ii = 0; ii < request.NodesToBrowse.Count; ii++)
                    {
                        BrowseResult   result         = new BrowseResult();
                        DiagnosticInfo diagnosticInfo = new DiagnosticInfo();

                        m_nodeManager.Browse(
                            request.NodesToBrowse[ii],
                            result,
                            diagnosticInfo);

                        results.Add(result);
                        diagnosticInfos.Add(diagnosticInfo);
                    }

                    // return the response.
                    BrowseResponseMessage response = new BrowseResponseMessage();

                    response.ResponseHeader  = CreateResponseHeader(request.RequestHeader);
                    response.Results         = results;
                    response.DiagnosticInfos = diagnosticInfos;

                    return(response);
                }
            }
            catch (Exception e)
            {
                throw CreateSoapFault(request.RequestHeader, e);
            }
        }
コード例 #5
0
#pragma warning disable 1998
        internal static async Task <BrowseResponseMessage> Response(IItemProviderConversation conv, BrowseRequestMessage browseRequestMessage)
#pragma warning restore 1998
        {
            var pathId = browseRequestMessage.DirItemId;
            var dir    = conv.FindItem(pathId) as DirItem;
            var brpm   = new BrowseResponseMessage {
                Id = conv.Id
            };

            if (dir == null)
            {
                brpm.CurrentDir = null;
            }
            else
            {
                brpm.CurrentDir = dir;
                brpm.Items      = dir.Children;
            }
            return(brpm);
        }
コード例 #6
0
        protected internal override void OnMessageReceived(ConversationMessage message)
        {
            if (message is BrowseResponseMessage)
            {
                BrowseResponseMessage brMessage = (BrowseResponseMessage)message;

                if (browserId.Equals(brMessage.browserId))
                {
                    if (brMessage.Items != null)
                    {
                        breponseMessage = brMessage;
                        itemListReceived?.Invoke(breponseMessage.path, breponseMessage.Items);
                    }
                }
            }
            else if (message is ThumbnailResponseMessage)
            {
                ThumbnailResponseMessage trMessage = message as ThumbnailResponseMessage;
                thumbnailReceived?.Invoke(trMessage.ID, trMessage.Data);
            }
        }