コード例 #1
0
        public void ShouldFilterActiveItems()
        {
            _itemFilters = new ItemFilters();

            var items = new List <Item>
            {
                new Item()
                {
                    Id            = 1,
                    LastChecked   = DateTime.MinValue,
                    CheckInterval = 10000,
                    IsActive      = true
                },
                new Item()
                {
                    Id            = 2,
                    LastChecked   = DateTime.MinValue,
                    CheckInterval = 10000,
                    IsActive      = false
                },
                new Item()
                {
                    Id            = 3,
                    LastChecked   = DateTime.MinValue,
                    CheckInterval = 300000,
                    IsActive      = true
                }
            };

            var expectedItems = items.Where(x => x.Id != 2).ToList();
            var actualItems   = _itemFilters.GetScheduledList(items);

            Assert.AreEqual(expectedItems, actualItems);
        }
コード例 #2
0
        public void ShouldFilterByCheckInterval()
        {
            _itemFilters = new ItemFilters();

            var items = new List <Item>
            {
                new Item()
                {
                    Id            = 1,
                    CheckInterval = 10,
                    LastChecked   = DateTime.Now.AddMilliseconds(-10),
                    IsActive      = true
                },
                new Item()
                {
                    Id            = 2,
                    CheckInterval = 10,
                    LastChecked   = DateTime.Now.AddMilliseconds(-9),
                    IsActive      = false
                },
                new Item()
                {
                    Id            = 3,
                    CheckInterval = 10,
                    LastChecked   = DateTime.Now.AddMilliseconds(-11),
                    IsActive      = true
                }
            };

            var expectedItems = items.Where(x => x.Id != 2).ToList();
            var actualItems   = _itemFilters.GetScheduledList(items);

            Assert.AreEqual(expectedItems, actualItems);
        }
コード例 #3
0
            public ClipboardToolboxNode(string text)
            {
                Text = text;

                ItemFilters.Add(filterAtt);
                Category = category;
                Icon     = icon;
            }
コード例 #4
0
ファイル: UIClassifiers.cs プロジェクト: CXUtk/RecipeGraph
        public UIClassifiers(RecipeGraphState main) : base(main)
        {
            _filters = new ItemFilters();
            var panel = new UIPanel()
            {
                AnchorPoint = new Vector2(0.5f, 0.5f),
                SizeFactor  = new Vector2(1, 1),
            };

            _list = new UITreeList()
            {
                AnchorPoint = new Vector2(0.5f, 0.5f),
                SizeFactor  = new Vector2(1, 1),
                Size        = new Vector2(-10, -10),
            };
            var scroll = new UIScrollBarV()
            {
                AnchorPoint = new Vector2(1, 0.5f),
                Pivot       = new Vector2(1, 0.5f),
            };

            _list.SetScrollBarV(scroll);
            panel.AppendChild(_list);
            foreach (var pair in _filters.ModFilters)
            {
                List <UITreeNode> itemcls = new List <UITreeNode>();
                foreach (var pair2 in _filters.Filters)
                {
                    var citem = new UIClassifierItem(pair2.Value.Name, pair2.Value.Texture)
                    {
                        Name       = pair.Key + " " + pair2.Key,
                        SizeFactor = new Vector2(1f, 0f),
                        Size       = new Vector2(0, 36f),
                    };
                    citem.OnClick += Button_OnClick;
                    itemcls.Add(new UITreeNode(citem, new List <UITreeNode>()));
                }
                var moditem = new UIClassifierItem(pair.Value.Name, pair.Value.Texture)
                {
                    Name       = pair.Key,
                    SizeFactor = new Vector2(1f, 0f),
                    Size       = new Vector2(0, 36f),
                };
                var node = new UITreeNode(moditem, itemcls);
                moditem.OnClick += Button_OnClick;
                _list.AddElement(node);
                if (pair.Key == "All")
                {
                    _list.SelectedElement = node.DisplayElement;
                }
            }
            AppendChild(panel);
        }
コード例 #5
0
ファイル: UIClassifiers.cs プロジェクト: CXUtk/RecipeGraph
        private void Button_OnClick(UIEditor.UILib.Events.UIMouseEvent e, UIEditor.UILib.UIElement sender)
        {
            var split = sender.Name.Split(' ');

            if (split.Length == 1)
            {
                MainState.Browser.ApplyFilter(_filters.ModFilters[sender.Name]);
            }
            else
            {
                MainState.Browser.ApplyFilter(ItemFilters.CombineFilters(_filters.ModFilters[split[0]], _filters.Filters[split[1]]));
            }
        }
コード例 #6
0
ファイル: WIN_Native_API.cs プロジェクト: webgzf/RX-Explorer
        public static bool CheckContainsAnyItem(string Path, ItemFilters Filter)
        {
            if (string.IsNullOrWhiteSpace(Path))
            {
                throw new ArgumentException("Argument could not be empty", nameof(Path));
            }

            IntPtr Ptr = FindFirstFileExFromApp(System.IO.Path.Combine(Path, "*"), FINDEX_INFO_LEVELS.FindExInfoBasic, out WIN32_FIND_DATA Data, FINDEX_SEARCH_OPS.FindExSearchNameMatch, IntPtr.Zero, FIND_FIRST_EX_LARGE_FETCH);

            try
            {
                if (Ptr.ToInt64() != -1)
                {
                    do
                    {
                        FileAttributes Attribute = (FileAttributes)Data.dwFileAttributes;

                        if (!Attribute.HasFlag(FileAttributes.System))
                        {
                            if (Attribute.HasFlag(FileAttributes.Directory) && Filter.HasFlag(ItemFilters.Folder))
                            {
                                if (Data.cFileName != "." && Data.cFileName != "..")
                                {
                                    return(true);
                                }
                            }
                            else if (Filter.HasFlag(ItemFilters.File) && !Data.cFileName.EndsWith(".url", StringComparison.OrdinalIgnoreCase))
                            {
                                return(true);
                            }
                        }
                    }while (FindNextFile(Ptr, out Data));

                    return(false);
                }
                else
                {
                    LogTracer.Log(new Win32Exception(Marshal.GetLastWin32Error()));
                    return(false);
                }
            }
            catch
            {
                return(false);
            }
            finally
            {
                FindClose(Ptr);
            }
        }
コード例 #7
0
        public EmailNotificationWorker(string connectionString, ILog logger) //netinka pavadinimas worker
        {
            if (connectionString == null)
            {
                throw new ArgumentException("connectionString");
            }
            if (logger == null)
            {
                throw new ArgumentException("logger");
            }

            _connectionString = connectionString;
            _logger           = logger;

            _usersRepository      = new UsersRepository(_connectionString);
            _itemsRepository      = new ItemsRepository(_connectionString);
            _screenshotRepository = new ScreenshotRepository(_connectionString);
            _itemFilters          = new ItemFilters();
        }
コード例 #8
0
        public async Task GetItemsAsync()
        {
            (JellyfinClient client, Mock <MockHandler> handlerMock) = CreateMockClient();

            var responseContent = MockUtils.GetFileContents(Path.Combine("Items", "GetItemsAsync.json"));

            handlerMock.Setup(p => p.SendAsync(It.IsAny <HttpMethod>(), It.IsAny <string>())).Returns(MockUtils.Success(responseContent));
            var items = await client.GetItemsAsync(Guid.NewGuid().ToString());

            responseContent = MockUtils.GetFileContents(Path.Combine("Items", "GetItemsAsync2.json"));
            handlerMock.Setup(p => p.SendAsync(It.IsAny <HttpMethod>(), It.IsAny <string>())).Returns(MockUtils.Success(responseContent));
            ItemFilters filters = ItemFilters.Create().FilterByParentId(items.Items[0].Id);

            items = await client.GetItemsAsync(Guid.NewGuid().ToString(), filters);

            Assert.AreEqual(1, items.Items.OfType <FolderItem>().Count());
            Assert.AreEqual(7, items.Items.OfType <MovieItem>().Count());

            var fMovie = items.Items.OfType <MovieItem>().Where(p => p.Name == "Ford v Ferrari").SingleOrDefault();

            Assert.IsNotNull(fMovie);
            Assert.AreEqual(1, fMovie.ImageTags.Count());
        }
コード例 #9
0
        public async Task <bool> CheckContainsAnyItemAsync(ItemFilters Filter = ItemFilters.File | ItemFilters.Folder)
        {
            if (WIN_Native_API.CheckLocationAvailability(Path))
            {
                return(await Task.Run(() =>
                {
                    return WIN_Native_API.CheckContainsAnyItem(Path, Filter);
                }));
            }
            else
            {
                LogTracer.Log($"Native API could not found the path: \"{Path}\", fall back to UWP storage API");

                try
                {
                    if (await GetStorageItemAsync().ConfigureAwait(true) is StorageFolder Folder)
                    {
                        if (Filter.HasFlag(ItemFilters.File))
                        {
                            return((await Folder.GetFilesAsync(CommonFileQuery.DefaultQuery, 0, 1)).Any());
                        }

                        if (Filter.HasFlag(ItemFilters.Folder))
                        {
                            return((await Folder.GetFoldersAsync(CommonFolderQuery.DefaultQuery, 0, 1)).Any());
                        }
                    }

                    return(false);
                }
                catch (Exception ex)
                {
                    LogTracer.Log(ex, $"{nameof(CheckContainsAnyItemAsync)} failed for uwp API");
                    return(false);
                }
            }
        }
コード例 #10
0
        public async Task <List <FileSystemStorageItemBase> > GetChildItemsAsync(bool IncludeHiddenItems, bool IncludeSystemItem, ItemFilters Filter = ItemFilters.File | ItemFilters.Folder)
        {
            if (WIN_Native_API.CheckLocationAvailability(Path))
            {
                return(WIN_Native_API.GetStorageItems(Path, IncludeHiddenItems, IncludeSystemItem, Filter));
            }
            else
            {
                LogTracer.Log($"Native API could not enum subitems in path: \"{Path}\", fall back to UWP storage API");

                try
                {
                    if (await GetStorageItemAsync() is StorageFolder Folder)
                    {
                        QueryOptions Options = new QueryOptions
                        {
                            FolderDepth   = FolderDepth.Shallow,
                            IndexerOption = IndexerOption.DoNotUseIndexer
                        };
                        Options.SetThumbnailPrefetch(ThumbnailMode.ListView, 150, ThumbnailOptions.UseCurrentScale);
                        Options.SetPropertyPrefetch(PropertyPrefetchOptions.BasicProperties, new string[] { "System.Size", "System.DateModified" });

                        StorageItemQueryResult Query = Folder.CreateItemQueryWithOptions(Options);

                        List <FileSystemStorageItemBase> Result = new List <FileSystemStorageItemBase>();

                        for (uint i = 0; ; i += 25)
                        {
                            IReadOnlyList <IStorageItem> ReadOnlyItemList = await Query.GetItemsAsync(i, 25);

                            if (ReadOnlyItemList.Count > 0)
                            {
                                foreach (IStorageItem Item in ReadOnlyItemList.Where((Item) => (Item.IsOfType(StorageItemTypes.Folder) && Filter.HasFlag(ItemFilters.Folder)) || (Item.IsOfType(StorageItemTypes.File) && Filter.HasFlag(ItemFilters.File))))
                                {
                                    if (Item is StorageFolder SubFolder)
                                    {
                                        Result.Add(new FileSystemStorageFolder(SubFolder, await SubFolder.GetModifiedTimeAsync()));
                                    }
                                    else if (Item is StorageFile SubFile)
                                    {
                                        Result.Add(await CreateFromStorageItemAsync(SubFile));
                                    }
                                }
                            }
                            else
                            {
                                break;
                            }
                        }

                        return(Result);
                    }
                    else
                    {
                        return(new List <FileSystemStorageItemBase>(0));
                    }
                }
                catch
                {
                    LogTracer.Log($"UWP API could not enum subitems in path: \"{Path}\"");
                    return(new List <FileSystemStorageItemBase>(0));
                }
            }
        }
コード例 #11
0
 public TextToolboxNode(string text)
 {
     Text = text;
     ItemFilters.Add(new ToolboxItemFilterAttribute("text/plain", ToolboxItemFilterType.Allow));
 }
コード例 #12
0
        public async Task <QueryResult <EpisodeItem> > GetEpisodes(string userId, string showId, string seasonId)
        {
            ItemFilters filters = ItemFilters.Create().FilterByUserId(userId).FilterBySeasonId(seasonId).IncludeField(nameof(EpisodeItem.Overview)).IncludeField(nameof(EpisodeItem.MediaStreams));

            return(await DoGet <QueryResult <EpisodeItem> >($"Shows/{showId}/Episodes", filters));
        }
コード例 #13
0
        public async Task <QueryResult <SeasonItem> > GetSeasons(string userId, string showId)
        {
            ItemFilters filters = ItemFilters.Create().FilterByUserId(userId);

            return(await DoGet <QueryResult <SeasonItem> >($"Shows/{showId}/Seasons", filters));
        }
コード例 #14
0
 public TemplateToolboxNode(CodeTemplate template)
 {
     this.Template = template;
     ItemFilters.Add(new ToolboxItemFilterAttribute("text/plain", ToolboxItemFilterType.Allow));
 }
コード例 #15
0
 public override Task <List <FileSystemStorageItemBase> > GetChildItemsAsync(bool IncludeHiddenItems, bool IncludeSystemItem, ItemFilters Filter = ItemFilters.File | ItemFilters.Folder)
 {
     return(Task.FromResult(new List <FileSystemStorageItemBase>(0)));
 }
コード例 #16
0
 public SnippetToolboxNode(ExpansionTemplate template)
 {
     this.Template = template;
     ItemFilters.Add(new ToolboxItemFilterAttribute("text/plain", ToolboxItemFilterType.Allow));
 }
コード例 #17
0
        public async Task <QueryResult <EpisodeItem> > GetNextEpisode(string userId, string showId)
        {
            ItemFilters filters = ItemFilters.Create().FilterByUserId(userId).FilterBySeriesId(showId);

            return(await DoGet <QueryResult <EpisodeItem> >($"Shows/NextUp", filters));
        }
コード例 #18
0
 public override Task <IReadOnlyList <FileSystemStorageItemBase> > GetChildItemsAsync(bool IncludeHiddenItems, bool IncludeSystemItem, uint MaxNumLimit = uint.MaxValue, ItemFilters Filter = ItemFilters.File | ItemFilters.Folder, Func <string, bool> AdvanceFilter = null)
 {
     return(Task.FromResult <IReadOnlyList <FileSystemStorageItemBase> >(new List <FileSystemStorageItemBase>(0)));
 }
コード例 #19
0
 public async Task <QueryResult <BaseItem> > GetItemsInProgressAsync(string userId, ItemFilters filters = null)
 {
     return(await DoGet <QueryResult <BaseItem> >($"Users/{userId}/Items/Resume", filters));
 }
コード例 #20
0
ファイル: WIN_Native_API.cs プロジェクト: webgzf/RX-Explorer
        public static List <FileSystemStorageItemBase> GetStorageItems(StorageFolder Folder, bool IncludeHiddenItem, ItemFilters Filter)
        {
            if (Folder == null)
            {
                throw new ArgumentNullException(nameof(Folder), "Argument could not be null");
            }

            IntPtr Ptr = FindFirstFileExFromApp(Path.Combine(Folder.Path, "*"), FINDEX_INFO_LEVELS.FindExInfoBasic, out WIN32_FIND_DATA Data, FINDEX_SEARCH_OPS.FindExSearchNameMatch, IntPtr.Zero, FIND_FIRST_EX_LARGE_FETCH);

            try
            {
                if (Ptr.ToInt64() != -1)
                {
                    List <FileSystemStorageItemBase> Result = new List <FileSystemStorageItemBase>();

                    do
                    {
                        FileAttributes Attribute = (FileAttributes)Data.dwFileAttributes;

                        if (IncludeHiddenItem || !Attribute.HasFlag(FileAttributes.Hidden))
                        {
                            if (Attribute.HasFlag(FileAttributes.Directory) && Filter.HasFlag(ItemFilters.Folder))
                            {
                                if (Data.cFileName != "." && Data.cFileName != "..")
                                {
                                    FileTimeToSystemTime(ref Data.ftLastWriteTime, out SYSTEMTIME ModTime);
                                    DateTime ModifiedTime = new DateTime(ModTime.Year, ModTime.Month, ModTime.Day, ModTime.Hour, ModTime.Minute, ModTime.Second, ModTime.Milliseconds, DateTimeKind.Utc);

                                    if (Attribute.HasFlag(FileAttributes.Hidden))
                                    {
                                        Result.Add(new HiddenStorageItem(Data, StorageItemTypes.Folder, Path.Combine(Folder.Path, Data.cFileName), ModifiedTime));
                                    }
                                    else
                                    {
                                        Result.Add(new FileSystemStorageItemBase(Data, StorageItemTypes.Folder, Path.Combine(Folder.Path, Data.cFileName), ModifiedTime));
                                    }
                                }
                            }
                            else if (Filter.HasFlag(ItemFilters.File))
                            {
                                FileTimeToSystemTime(ref Data.ftLastWriteTime, out SYSTEMTIME ModTime);
                                DateTime ModifiedTime = new DateTime(ModTime.Year, ModTime.Month, ModTime.Day, ModTime.Hour, ModTime.Minute, ModTime.Second, ModTime.Milliseconds, DateTimeKind.Utc);

                                if (Attribute.HasFlag(FileAttributes.Hidden))
                                {
                                    Result.Add(new HiddenStorageItem(Data, StorageItemTypes.File, Path.Combine(Folder.Path, Data.cFileName), ModifiedTime));
                                }
                                else
                                {
                                    if (!Data.cFileName.EndsWith(".url", StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (Data.cFileName.EndsWith(".lnk", StringComparison.OrdinalIgnoreCase))
                                        {
                                            Result.Add(new HyperlinkStorageItem(Data, Path.Combine(Folder.Path, Data.cFileName), ModifiedTime));
                                        }
                                        else
                                        {
                                            Result.Add(new FileSystemStorageItemBase(Data, StorageItemTypes.File, Path.Combine(Folder.Path, Data.cFileName), ModifiedTime));
                                        }
                                    }
                                }
                            }
                        }
                    }while (FindNextFile(Ptr, out Data));

                    return(Result);
                }
                else
                {
                    LogTracer.Log(new Win32Exception(Marshal.GetLastWin32Error()));
                    return(new List <FileSystemStorageItemBase>());
                }
            }
            catch
            {
                return(new List <FileSystemStorageItemBase>());
            }
            finally
            {
                FindClose(Ptr);
            }
        }
コード例 #21
0
 public async Task <FiltersResponse> GetFilters(string userId, ItemFilters filters = null)
 {
     //filters.FilterByUserId
     //https://jellyfin.jetflix.media/Items/Filters?UserId=95623407d249461a974942a3109af020&IncludeItemTypes=Series
     return(await DoGet <FiltersResponse>($"Items/Filters?UserId={userId}", filters));
 }
コード例 #22
0
 public async Task <QueryResult <BaseItem> > GetNextUpShowsAsync(ItemFilters filters)
 {
     return(await DoGet <QueryResult <BaseItem> >($"/Shows/NextUp", filters));
 }
コード例 #23
0
        public static async Task <GetNewsItemSummaries <T> > GetNewsItemSummariesAsync <T>(IDataFactory data, GetNewsInput input, int nbChild, ItemDataModel itemDataModel, Func <ItemDataModel, Task <T> > getItemFunc) where T : GetNewsItemSummary, new()
        {
            var newsItemResult = new List <T>();

            var itemFilter = new ItemFilters
            {
                Limit          = nbChild,
                ParentId       = itemDataModel.Id,
                SortDescending = true,
                States         = input.States,
                Tags           = input.Tags
            };

            if (input.FilterIndex.HasValue)
            {
                itemFilter.IndexLt        = input.FilterIndex;
                itemFilter.SortDescending = true;
            }

            var childs = await data.ItemRepository.GetItemsAsync(input.SiteId, itemFilter);

            var tasks = new List <Task <T> >();

            foreach (var dataModel in childs.OrderByDescending(i => i.Index))
            {
                var task = getItemFunc(dataModel);
                tasks.Add(task);
            }

            await Task.WhenAll(tasks);

            foreach (var task in tasks)
            {
                var resultItem = task.Result;
                if (resultItem != null)
                {
                    newsItemResult.Add(resultItem);
                }
            }

            // recherche du next
            var nbNext = await NbNext(data, input.SiteId, childs, itemDataModel, input.States, input.Tags);

            var hasPrevious = false;
            var idPrevious  = string.Empty;

            if (input.FilterIndex.HasValue)
            {
                var previousItemFilter = new ItemFilters
                {
                    Limit         = nbChild,
                    ParentId      = itemDataModel.Id,
                    SortAscending = true,
                    IndexGt       = input.FilterIndex,
                    States        = input.States,
                    Tags          = input.Tags,
                };

                var previousChilds = await data.ItemRepository.GetItemsAsync(input.SiteId, previousItemFilter);

                hasPrevious = previousChilds.Count > 0;
                if (previousChilds.Count == nbChild)
                {
                    idPrevious = GetMaxIndex(previousChilds).ToString();
                }
            }
            var idNext  = GetMinIndex(childs).ToString();
            var hasNext = nbNext > 0;
            var result  = new GetNewsItemSummaries <T>()
            {
                HasNext     = hasNext,
                HasPrevious = hasPrevious,
                IdNext      = idNext,
                IdPrevious  = idPrevious,
                Items       = newsItemResult
            };

            return(result);
        }
コード例 #24
0
        private string GetFilters(ItemFilters itemFilters)
        {
            int val   = 0; //for each value increment
            int findx = 0; // for itemFilter Index

            string searl = "";

            if (itemFilters.AvailableToUsed)
            {
                searl += "&itemFilter(" + findx.ToString() + ").name=AvailableTo";
                searl += "&itemFilter(" + findx.ToString() + ").value(" + val.ToString() + ")=" + itemFilters.AvailableTo;
                findx++;
            }


            if (itemFilters.BestOfferOnly)
            {
                searl += "&itemFilter(" + findx.ToString() + ").name=BestOfferOnly";
                searl += "&itemFilter(" + findx.ToString() + ").value(" + val.ToString() + ")=true";
                findx++;
            }


            if (itemFilters.CharityOnly)
            {
                searl += "&itemFilter(" + findx.ToString() + ").name=CharityOnly";
                searl += "&itemFilter(" + findx.ToString() + ").value(" + val.ToString() + ")=true";
                findx++;
            }


            if (itemFilters.ConditionTypes.Count > 0)
            {
                searl += "&itemFilter(" + findx.ToString() + ").name=Condition";
                foreach (int elt in itemFilters.ConditionTypes)
                {
                    //  object op = Enum.Parse(typeof(findItemsAdvanced.ItemFilters.eBayConditionType), elt.ToString());

                    //  object op = Enum.Parse(typeof(ItemFilters.eBayConditionType), elt.ToString());

                    //test
                    // searl += "&itemFilter(" + findx.ToString() + ").value(" + val.ToString() + ")=1000";

                    searl += "&itemFilter(" + findx.ToString() + ").value(" + val.ToString() + ")=" + elt.ToString();
                    val++;
                }

                val = 0; //reset after for each new itemFilter id
                findx++; // increment itemFilter Index
            }



            if (itemFilters.CurrencyUsed)
            {
                searl += "&itemFilter(" + findx.ToString() + ").name=Currency";
                searl += "&itemFilter(" + findx.ToString() + ").value(" + val.ToString() + ")=" + itemFilters.Currency;
                findx++;
            }

            if (itemFilters.EndTimeFrom > DateTime.UtcNow)
            {
                searl += "&itemFilter(" + findx.ToString() + ").name=EndTimeFrom";
                searl += "&itemFilter(" + findx.ToString() + ").value(" + val.ToString() + ")=" + itemFilters.EndTimeFrom.ToString("o");
                findx++;
            }


            if (itemFilters.EndTimeTo > DateTime.UtcNow)
            {
                searl += "&itemFilter(" + findx.ToString() + ").name=EndTimeTo";
                searl += "&itemFilter(" + findx.ToString() + ").value(" + val.ToString() + ")=" + itemFilters.EndTimeTo.ToString("o");
                findx++;
            }

            if (itemFilters.ExcludeAutoPay)
            {
                searl += "&itemFilter(" + findx.ToString() + ").name=ExcludeAutoPay";
                searl += "&itemFilter(" + findx.ToString() + ").value(" + val.ToString() + ")=true";
                findx++;
            }


            if (itemFilters.ExcludeCategories.Count > 0)
            {
                searl += "&itemFilter(" + findx.ToString() + ").name=ExcludeCategory";


                foreach (int elt in itemFilters.ExcludeCategories)
                {
                    searl += "&itemFilter(" + findx.ToString() + ").value(" + val.ToString() + ")=" + elt.ToString();
                    val++;
                }

                val = 0; //reset after for each new itemFilter id
                findx++; // increment itemFilter Index
            }


            if (itemFilters.ExcludeSellers.Count > 0)
            {
                searl += "&itemFilter(" + findx.ToString() + ").name=ExcludeSeller";


                foreach (string elt in itemFilters.ExcludeSellers)
                {
                    searl += "&itemFilter(" + findx.ToString() + ").value(" + val.ToString() + ")=" + elt.ToString();
                    val++;
                }

                val = 0; //reset after for each new itemFilter id
                findx++; // increment itemFilter Index
            }


            if (itemFilters.ExpeditedShippingTypeUsed)
            {
                searl += "&itemFilter(" + findx.ToString() + ").name=ExpeditedShippingType";
                searl += "&itemFilter(" + findx.ToString() + ").value(" + val.ToString() + ")=" + itemFilters.ExpeditedShipping;


                findx++; // increment itemFilter Index
            }


            if (itemFilters.FeaturedOnly)
            {
                searl += "&itemFilter(" + findx.ToString() + ").name=FeaturedOnly";
                searl += "&itemFilter(" + findx.ToString() + ").value(" + val.ToString() + ")=true";


                findx++; // increment itemFilter Index
            }


            if ((itemFilters.FeedbackScoreMin < itemFilters.FeedbackScoreMax) & itemFilters.FeedbackScoreMin > 0)
            {
                searl += "&itemFilter(" + findx.ToString() + ").name=FeedbackScoreMin";
                searl += "&itemFilter(" + findx.ToString() + ").value(" + val.ToString() + ")=" + itemFilters.FeedbackScoreMin;



                findx++; // increment itemFilter Index
            }


            if ((itemFilters.FeedbackScoreMax > itemFilters.FeedbackScoreMin) & itemFilters.FeedbackScoreMax > 0)
            {
                searl += "&itemFilter(" + findx.ToString() + ").name=FeedbackScoreMax";
                searl += "&itemFilter(" + findx.ToString() + ").value(" + val.ToString() + ")=" + itemFilters.FeedbackScoreMax;


                findx++; // increment itemFilter Index
            }


            if (itemFilters.FreeShippingOnly)
            {
                searl += "&itemFilter(" + findx.ToString() + ").name=FreeShippingOnly";
                searl += "&itemFilter(" + findx.ToString() + ").value(" + val.ToString() + ")=true";


                findx++; // increment itemFilter Index
            }

            if (itemFilters.GetItFastOnly)
            {
                searl += "&itemFilter(" + findx.ToString() + ").name=GetItFastOnly";
                searl += "&itemFilter(" + findx.ToString() + ").value(" + val.ToString() + ")=true";


                findx++; // increment itemFilter Index
            }


            if (itemFilters.HideDuplicateItems)
            {
                searl += "&itemFilter(" + findx.ToString() + ").name=HideDuplicateItems";
                searl += "&itemFilter(" + findx.ToString() + ").value(" + val.ToString() + ")=true";


                findx++; // increment itemFilter Index
            }


            if (itemFilters.ListedInUsed)
            {
                searl += "&itemFilter(" + findx.ToString() + ").name=ListedIn";
                searl += "&itemFilter(" + findx.ToString() + ").value(" + val.ToString() + ")=EBAY-" + itemFilters.ListedIn;


                findx++; // increment itemFilter Index
            }



            if (itemFilters.ListingTypes.Count > 0)
            {
                searl += "&itemFilter(" + findx.ToString() + ").name=ListingType";


                foreach (ItemFilters.eBayListingType elt in itemFilters.ListingTypes)
                {
                    searl += "&itemFilter(" + findx.ToString() + ").value(" + val.ToString() + ")=" + elt.ToString();
                    val++;
                }

                val = 0; //reset after for each new itemFilter id
                findx++; // increment itemFilter Index
            }


            if (itemFilters.LocalPickupOnly)
            {
                searl += "&itemFilter(" + findx.ToString() + ").name=LocalPickupOnly";
                searl += "&itemFilter(" + findx.ToString() + ").value(" + val.ToString() + ")=true";


                findx++; // increment itemFilter Index
            }


            if (itemFilters.LocatedInUsed)
            {
                searl += "&itemFilter(" + findx.ToString() + ").name=LocatedIn";
                searl += "&itemFilter(" + findx.ToString() + ").value(" + val.ToString() + ")=" + itemFilters.LocatedIn;
                findx++; // increment itemFilter Index
            }


            if (itemFilters.LotsOnly)
            {
                searl += "&itemFilter(" + findx.ToString() + ").name=LotsOnly";
                searl += "&itemFilter(" + findx.ToString() + ").value(" + val.ToString() + ")=true";
                findx++; // increment itemFilter Index
            }


            if (itemFilters.MaxBids > 0)
            {
                searl += "&itemFilter(" + findx.ToString() + ").name=MaxBids";
                searl += "&itemFilter(" + findx.ToString() + ").value(" + val.ToString() + ")=" + itemFilters.MaxBids.ToString();
                findx++; // increment itemFilter Index
            }

            if (itemFilters.MaxHandlingTime > 0)
            {
                searl += "&itemFilter(" + findx.ToString() + ").name=MaxHandlingTime";
                searl += "&itemFilter(" + findx.ToString() + ").value(" + val.ToString() + ")=" + itemFilters.MaxHandlingTime.ToString();
                findx++; // increment itemFilter Index
            }


            if (itemFilters.MaxPrice > 0)
            {
                searl += "&itemFilter(" + findx.ToString() + ").name=MaxPrice";
                searl += "&itemFilter(" + findx.ToString() + ").value(" + val.ToString() + ")=" + itemFilters.MaxPrice.ToString();
                findx++; // increment itemFilter Index
            }

            if (itemFilters.MaxQuantity > 0)
            {
                searl += "&itemFilter(" + findx.ToString() + ").name=MaxQuantity";
                searl += "&itemFilter(" + findx.ToString() + ").value(" + val.ToString() + ")=" + itemFilters.MaxQuantity.ToString();
                findx++; // increment itemFilter Index
            }

            if (itemFilters.MinBids > 0)
            {
                searl += "&itemFilter(" + findx.ToString() + ").name=MinBids";
                searl += "&itemFilter(" + findx.ToString() + ").value(" + val.ToString() + ")=" + itemFilters.MinBids.ToString();
                findx++; // increment itemFilter Index
            }


            if (itemFilters.MinPrice > 0)
            {
                searl += "&itemFilter(" + findx.ToString() + ").name=MinPrice";
                searl += "&itemFilter(" + findx.ToString() + ").value(" + val.ToString() + ")=" + itemFilters.MinPrice.ToString();
                findx++; // increment itemFilter Index
            }


            if ((itemFilters.ModTimeFrom < DateTime.UtcNow) & (itemFilters.ModTimeFrom > new DateTime(2000, 1, 1)))
            {
                searl += "&itemFilter(" + findx.ToString() + ").name=ModTimeFrom";
                searl += "&itemFilter(" + findx.ToString() + ").value(" + val.ToString() + ")=" + itemFilters.ModTimeFrom.ToString("o");
                findx++;
            }


            if (itemFilters.PaymentMethodUsed)
            {
                if (itemFilters.PaymentMethods.Count > 0)
                {
                    searl += "&itemFilter(" + findx.ToString() + ").name=paymentMethod";


                    foreach (eBayPaymentMethod elt in itemFilters.PaymentMethods)
                    {
                        searl += "&itemFilter(" + findx.ToString() + ").value(" + val.ToString() + ")=" + elt.ToString();
                        val++;
                    }

                    val = 0; //reset after for each new itemFilter id
                    findx++; // increment itemFilter Index
                }

                //put as list...
                searl += "&itemFilter(" + findx.ToString() + ").name=PaymentMethod";
                searl += "&itemFilter(" + findx.ToString() + ").value(" + val.ToString() + ")=" + itemFilters.PaymentMethods.ToString();
                findx++;
            }

            if (itemFilters.ReturnsAcceptedOnly)
            {
                searl += "&itemFilter(" + findx.ToString() + ").name=ReturnsAcceptedOnly";
                searl += "&itemFilter(" + findx.ToString() + ").value(" + val.ToString() + ")=" + itemFilters.ReturnsAcceptedOnly.ToString();
                findx++;
            }


            if (itemFilters.Sellers.Count > 0)
            {
                searl += "&itemFilter(" + findx.ToString() + ").name=Seller";


                foreach (string elt in itemFilters.Sellers)
                {
                    searl += "&itemFilter(" + findx.ToString() + ").value(" + val.ToString() + ")=" + elt.ToString();
                    val++;
                }

                val = 0; //reset after for each new itemFilter id
                findx++; // increment itemFilter Index
            }


            if (itemFilters.BusinessTypeUsed)
            {
                searl += "&itemFilter(" + findx.ToString() + ").name=SellerBusinessType";
                searl += "&itemFilter(" + findx.ToString() + ").value(" + val.ToString() + ")=" + itemFilters.BusinessType.ToString();
                findx++;
            }


            if (itemFilters.TopRatedSellerOnly)
            {
                searl += "&itemFilter(" + findx.ToString() + ").name=TopRatedSellerOnly";
                searl += "&itemFilter(" + findx.ToString() + ").value(" + val.ToString() + ")=true";
                findx++;
            }


            //last
            if (itemFilters.Proximity != null)
            {
                if (itemFilters.Proximity.LocalSearchOnly)
                {
                    searl += "&itemFilter(" + findx.ToString() + ").name=LocalSearchOnly";
                    searl += "&itemFilter(" + findx.ToString() + ").value(" + val.ToString() + ")=true";
                    findx++; // increment itemFilter Index
                }



                if (itemFilters.Proximity.MaxDistance > 0)
                {
                    searl += "&itemFilter(" + findx.ToString() + ").name=MaxDistance";
                    searl += "&itemFilter(" + findx.ToString() + ").value(" + val.ToString() + ")=" + itemFilters.Proximity.MaxDistance.ToString();
                    findx++; // increment itemFilter Index
                }


                if (itemFilters.Proximity.BuyerPostalCode != null)
                {
                    searl += "&buyerPostalCode=" + itemFilters.Proximity.BuyerPostalCode;
                }
            }


            return(searl);
        }
コード例 #25
0
ファイル: WIN_Native_API.cs プロジェクト: webgzf/RX-Explorer
        public static List <string> GetStorageItemsPath(string Path, bool IncludeHiddenItem, ItemFilters Filter)
        {
            if (string.IsNullOrWhiteSpace(Path))
            {
                throw new ArgumentNullException(nameof(Path), "Argument could not be null");
            }

            IntPtr Ptr = FindFirstFileExFromApp(System.IO.Path.Combine(Path, "*"), FINDEX_INFO_LEVELS.FindExInfoBasic, out WIN32_FIND_DATA Data, FINDEX_SEARCH_OPS.FindExSearchNameMatch, IntPtr.Zero, FIND_FIRST_EX_LARGE_FETCH);

            try
            {
                if (Ptr.ToInt64() != -1)
                {
                    List <string> Result = new List <string>();

                    do
                    {
                        FileAttributes Attribute = (FileAttributes)Data.dwFileAttributes;

                        if (IncludeHiddenItem || !Attribute.HasFlag(FileAttributes.Hidden))
                        {
                            if (((FileAttributes)Data.dwFileAttributes).HasFlag(FileAttributes.Directory) && Filter.HasFlag(ItemFilters.Folder))
                            {
                                if (Data.cFileName != "." && Data.cFileName != "..")
                                {
                                    Result.Add(System.IO.Path.Combine(Path, Data.cFileName));
                                }
                            }
                            else if (Filter.HasFlag(ItemFilters.File))
                            {
                                Result.Add(System.IO.Path.Combine(Path, Data.cFileName));
                            }
                        }
                    }while (FindNextFile(Ptr, out Data));

                    return(Result);
                }
                else
                {
                    LogTracer.Log(new Win32Exception(Marshal.GetLastWin32Error()));
                    return(new List <string>());
                }
            }
            catch
            {
                return(new List <string>());
            }
            finally
            {
                FindClose(Ptr);
            }
        }
コード例 #26
0
        public async Task <List <FileSystemStorageItemBase> > GetChildItemsAsync(bool IncludeHiddenItems, ItemFilters Filter = ItemFilters.File | ItemFilters.Folder)
        {
            if (WIN_Native_API.CheckLocationAvailability(Path))
            {
                return(WIN_Native_API.GetStorageItems(Path, IncludeHiddenItems, Filter));
            }
            else
            {
                LogTracer.Log($"Native API could not enum subitems in path: \"{Path}\", fall back to UWP storage API");

                try
                {
                    if (await GetStorageItemAsync().ConfigureAwait(true) is StorageFolder Folder)
                    {
                        QueryOptions Options = new QueryOptions
                        {
                            FolderDepth   = FolderDepth.Shallow,
                            IndexerOption = IndexerOption.UseIndexerWhenAvailable
                        };
                        Options.SetThumbnailPrefetch(Windows.Storage.FileProperties.ThumbnailMode.ListView, 150, Windows.Storage.FileProperties.ThumbnailOptions.UseCurrentScale);
                        Options.SetPropertyPrefetch(Windows.Storage.FileProperties.PropertyPrefetchOptions.BasicProperties, new string[] { "System.Size", "System.DateModified" });

                        StorageItemQueryResult Query = Folder.CreateItemQueryWithOptions(Options);

                        uint Count = await Query.GetItemCountAsync();

                        List <FileSystemStorageItemBase> Result = new List <FileSystemStorageItemBase>(Convert.ToInt32(Count));

                        for (uint i = 0; i < Count; i += 30)
                        {
                            IReadOnlyList <IStorageItem> CurrentList = await Query.GetItemsAsync(i, 30);

                            foreach (IStorageItem Item in CurrentList.Where((Item) => (Item.IsOfType(StorageItemTypes.Folder) && Filter.HasFlag(ItemFilters.Folder)) || (Item.IsOfType(StorageItemTypes.File) && Filter.HasFlag(ItemFilters.File))))
                            {
                                if (Item is StorageFolder SubFolder)
                                {
                                    Result.Add(new FileSystemStorageFolder(SubFolder, await SubFolder.GetThumbnailBitmapAsync().ConfigureAwait(true), await SubFolder.GetModifiedTimeAsync().ConfigureAwait(true)));
                                }
                                else if (Item is StorageFile SubFile)
                                {
                                    Result.Add(new FileSystemStorageFile(SubFile, await SubFile.GetThumbnailBitmapAsync().ConfigureAwait(true), await SubFile.GetSizeRawDataAsync().ConfigureAwait(true), await SubFile.GetModifiedTimeAsync().ConfigureAwait(true)));
                                }
                            }
                        }

                        return(Result);
                    }
                    else
                    {
                        return(new List <FileSystemStorageItemBase>(0));
                    }
                }
                catch
                {
                    LogTracer.Log($"UWP API could not enum subitems in path: \"{Path}\"");
                    return(new List <FileSystemStorageItemBase>(0));
                }
            }
        }
コード例 #27
0
 public override Task <bool> CheckContainsAnyItemAsync(bool IncludeHiddenItem = false, bool IncludeSystemItem = false, ItemFilters Filter = ItemFilters.File | ItemFilters.Folder)
 {
     return(Task.FromResult(false));
 }
コード例 #28
0
        public static List <FileSystemStorageItem> GetStorageItems(string Path, bool IncludeHiddenItem, ItemFilters Filter)
        {
            if (string.IsNullOrWhiteSpace(Path))
            {
                throw new ArgumentException("Argument could not be empty", nameof(Path));
            }

            IntPtr Ptr = FindFirstFileExFromApp(System.IO.Path.Combine(Path, "*"), FINDEX_INFO_LEVELS.FindExInfoBasic, out WIN32_FIND_DATA Data, FINDEX_SEARCH_OPS.FindExSearchNameMatch, IntPtr.Zero, FIND_FIRST_EX_LARGE_FETCH);

            try
            {
                if (Ptr.ToInt64() != -1)
                {
                    List <FileSystemStorageItem> Result = new List <FileSystemStorageItem>();

                    do
                    {
                        FileAttributes Attribute = (FileAttributes)Data.dwFileAttributes;

                        if (!Attribute.HasFlag(FileAttributes.System) && (IncludeHiddenItem || !Attribute.HasFlag(FileAttributes.Hidden)))
                        {
                            if (Attribute.HasFlag(FileAttributes.Directory) && Filter.HasFlag(ItemFilters.Folder))
                            {
                                if (Data.cFileName != "." && Data.cFileName != "..")
                                {
                                    FileTimeToSystemTime(ref Data.ftLastWriteTime, out SYSTEMTIME ModTime);
                                    DateTime ModifiedTime = new DateTime(ModTime.Year, ModTime.Month, ModTime.Day, ModTime.Hour, ModTime.Minute, ModTime.Second, ModTime.Milliseconds, DateTimeKind.Utc);

                                    if (Attribute.HasFlag(FileAttributes.Hidden))
                                    {
                                        Result.Add(new HiddenStorageItem(Data, StorageItemTypes.Folder, System.IO.Path.Combine(Path, Data.cFileName), ModifiedTime.ToLocalTime()));
                                    }
                                    else
                                    {
                                        Result.Add(new FileSystemStorageItem(Data, StorageItemTypes.Folder, System.IO.Path.Combine(Path, Data.cFileName), ModifiedTime.ToLocalTime()));
                                    }
                                }
                            }
                            else if (Filter.HasFlag(ItemFilters.File))
                            {
                                FileTimeToSystemTime(ref Data.ftLastWriteTime, out SYSTEMTIME ModTime);
                                DateTime ModifiedTime = new DateTime(ModTime.Year, ModTime.Month, ModTime.Day, ModTime.Hour, ModTime.Minute, ModTime.Second, ModTime.Milliseconds, DateTimeKind.Utc);

                                if (Attribute.HasFlag(FileAttributes.Hidden))
                                {
                                    Result.Add(new HiddenStorageItem(Data, StorageItemTypes.File, System.IO.Path.Combine(Path, Data.cFileName), ModifiedTime.ToLocalTime()));
                                }
                                else
                                {
                                    if (Data.cFileName.EndsWith(".lnk") || Data.cFileName.EndsWith(".url"))
                                    {
                                        Result.Add(new HyperlinkStorageItem(Data, System.IO.Path.Combine(Path, Data.cFileName), ModifiedTime.ToLocalTime()));
                                    }
                                    else
                                    {
                                        Result.Add(new FileSystemStorageItem(Data, StorageItemTypes.File, System.IO.Path.Combine(Path, Data.cFileName), ModifiedTime.ToLocalTime()));
                                    }
                                }
                            }
                        }
                    }while (FindNextFile(Ptr, out Data));

                    return(Result);
                }
                else
                {
                    Debug.WriteLine(new Win32Exception(Marshal.GetLastWin32Error()).Message);
                    return(new List <FileSystemStorageItem>());
                }
            }
            catch
            {
                return(new List <FileSystemStorageItem>());
            }
            finally
            {
                FindClose(Ptr);
            }
        }