コード例 #1
0
        public AbstractFileItem FindItem(string itemId)
        {
            //请求顶层Item
            if (NamedFolders.IsNamedFolderId(itemId))
            {
                return(NamedFolders.GetFolderById(itemId));
            }
            //未指定请求目录
            if (CurrentFolder == null)
            {
                return(NamedFolders.ImageDir);
            }
            //另一端的返回操作?看返回的路径,是不是以前提供过的,提供过才允许上一层,否则用户一直上一层,可以看到不许他看的数据
            AbstractFileItem af = _browseHistories.FirstOrDefault(c => c.Id == itemId);

            //以上都不是,看看请求的item是不是提供内容的子目录。
            af = af ?? CurrentFolder.Children.FirstOrDefault(c => c.Id == itemId);
            return(af);
        }
コード例 #2
0
        protected internal override async void OnMessageReceived(ConversationMessage message)
        {
            var brMessage = message as BrowseRequestMessage;

            if (brMessage == null)
            {
                return;
            }

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

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

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

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

            var respondMessage = await BrowseResponseUtil.Response(this, brMessage);

            if (CurrentFolder?.Children.FirstOrDefault(c => c.Id == respondMessage.CurrentDir?.Id) != null)
            {
                //如果这次要求浏览的目录是上次浏览的目录的子目录
                //CurrentFolder.FolderString
                respondMessage.CurrentDir.Parent = CurrentFolder;
            }
            CurrentFolder = respondMessage.CurrentDir;
            if (CurrentFolder != null)
            {
                if (NamedFolders.IsNamedFolderId(CurrentFolder.Id))
                {
                    _browseHistories.Clear();                     //已经到顶层目录,不会再有返回操作。
                }
                _browseHistories.Add(CurrentFolder);
            }
            PostMessageAsync(respondMessage);
        }