Exemple #1
0
        public void Execute(object parameter)
        {
            if (!(_workspace.CurrentItem is FileItem item))
            {
                return;
            }

            var    searchLister = KexContainer.Resolve <SearchLister>();
            string target;

            if (item.IsLink())
            {
                target = new FileItemTargetResolver(item).TargetPath;
            }
            else if (item.ItemType == ItemType.Item)
            {
                target = _workspace.ActiveLister.Path;
            }
            else
            {
                target = item.Path;
            }

            searchLister.Path          = target;
            searchLister.SearchPattern = "";
            searchLister.MaxItems      = 20;
            _workspace.Open(searchLister);
            searchLister.GotView += SearchLister_GotView;
        }
Exemple #2
0
        private async Task ShowDirectoryContent(FileItemTargetResolver target)
        {
            var provider    = new FileItemProvider(Workspace);
            var items       = (await provider.GetItems(target.TargetPath)).ToList();
            var highLighter = new SyntaxHighlighter(Encoding.UTF8);

            highLighter.Init(items.Select(i => i.Name));
            var line = 1;

            Items = items.Select(i => new RtfItem(highLighter, i.Name, line++));
        }
Exemple #3
0
        private async Task ShowFileContent(FileItem fileItem)
        {
            if (_viewFileLister == null) //TODO: Inject
            {
                _viewFileLister = KexContainer.Resolve <ViewFileLister>();
            }

            var targetResolver = new FileItemTargetResolver(fileItem);

            _viewFileLister.Path = targetResolver.TargetPath;

            await _viewFileLister.Refresh().ConfigureAwait(false);

            Items = _viewFileLister.Items;
        }
Exemple #4
0
 public async Task SetItem(IItem item)
 {
     if (item is FileItem fileItem)
     {
         var target = new FileItemTargetResolver(fileItem);
         if (target.TargetType == ItemType.Container)
         {
             await ShowDirectoryContent(target);
         }
         else
         {
             await ShowFileContent(fileItem);
         }
     }
     else
     {
         Items = Enumerable.Empty <RtfItem>();
     }
 }
Exemple #5
0
        protected override Task <ObservableCollection <PropertyItem> > GetBottomItems()
        {
            if (Item.IsFileShare || (CancellationTokenSource?.IsCancellationRequested ?? Item == null))
            {
                return(Task.FromResult(new ObservableCollection <PropertyItem>()));
            }

            if (Item.IsNetwork())
            {
                return(GetNetworkBottomItems());
            }

            return(Task.Run(() =>
            {
                var detail = Item.GetDetail(false, CancellationToken.None);
                var tempProp = new ObservableCollection <PropertyItem>
                {
                    new PropertyItem("Attributes", Item.AttributeString),
                    new PropertyItem("Created", detail.Created),
                    new PropertyItem("Last Modified", detail.LastModified)
                };

                var props = new Files.FilePropertyProvider(_shellObject);

                if (Item.IsLink())
                {
                    var target = new FileItemTargetResolver(Item);
                    tempProp.Add(new PropertyItem("Target:", target.TargetPath));
                }

                if (!Item.IsContainer)
                {
                    var encoding = GetEncoding(Item.Path);
                    if (encoding != null)
                    {
                        tempProp.Add(new PropertyItem("Encoding", encoding.EncodingName));
                    }
                }

                if (IsMusic)
                {
                    tempProp.Add(new PropertyItem("Title", _shellObject.Properties.System.Title.ValueAsObject));
                    if (_shellObject.Properties?.System?.Author?.ValueAsObject is string[] authors)
                    {
                        tempProp.Add(new PropertyItem("Author(s)", string.Join(",", authors)));
                    }
                    tempProp.Add(new PropertyItem("Rating", _shellObject.Properties?.System?.Rating?.ValueAsObject));
                }

                if (IsPicture)
                {
                    tempProp.Add(new PropertyItem("Dimensions", props.GetValue("System.Image.Dimensions")));
                    foreach (var key in props.Items.Keys.Where(k => k.StartsWith("System.Photo")).OrderBy(k => k))
                    {
                        tempProp.Add(new PropertyItem(key.Substring(13), props.GetValue(key)));
                    }
                }


                return tempProp;
            }));
        }