Beispiel #1
0
        public List <T> GetSortedCollection <T>(ICollection <T> InputCollection, SortTarget?Target, SortDirection?Direction) where T : FileSystemStorageItemBase
        {
            SortTarget    TempTarget    = Target ?? SortTarget;
            SortDirection TempDirection = Direction ?? SortDirection;

            IEnumerable <T> FolderList = InputCollection.Where((It) => It.StorageType == StorageItemTypes.Folder);
            IEnumerable <T> FileList   = InputCollection.Where((It) => It.StorageType == StorageItemTypes.File);

            switch (TempTarget)
            {
            case SortTarget.Name:
            {
                return(TempDirection == SortDirection.Ascending
                            ? new List <T>(FolderList.OrderByLikeFileSystem((Item) => Item.Name, TempDirection).Concat(FileList.OrderByLikeFileSystem((Item) => Item.Name, TempDirection)))
                            : new List <T>(FileList.OrderByLikeFileSystem((Item) => Item.Name, TempDirection).Concat(FolderList.OrderByLikeFileSystem((Item) => Item.Name, TempDirection))));
            }

            case SortTarget.Type:
            {
                return(TempDirection == SortDirection.Ascending
                            ? new List <T>(FolderList.OrderByLikeFileSystem((Item) => Item.Type, TempDirection).Concat(FileList.OrderByLikeFileSystem((Item) => Item.Type, TempDirection)))
                            : new List <T>(FileList.OrderByLikeFileSystem((Item) => Item.Type, TempDirection).Concat(FolderList.OrderByLikeFileSystem((Item) => Item.Type, TempDirection))));
            }

            case SortTarget.ModifiedTime:
            {
                return(TempDirection == SortDirection.Ascending
                            ? new List <T>(FolderList.OrderBy((Item) => Item.ModifiedTimeRaw).Concat(FileList.OrderBy((Item) => Item.ModifiedTimeRaw)))
                            : new List <T>(FileList.OrderByDescending((Item) => Item.ModifiedTimeRaw).Concat(FolderList.OrderByDescending((Item) => Item.ModifiedTimeRaw))));
            }

            case SortTarget.Size:
            {
                return(TempDirection == SortDirection.Ascending
                            ? new List <T>(FolderList.OrderBy((Item) => Item.SizeRaw).Concat(FileList.OrderBy((Item) => Item.SizeRaw)))
                            : new List <T>(FileList.OrderByDescending((Item) => Item.SizeRaw).Concat(FolderList.OrderByDescending((Item) => Item.SizeRaw))));
            }

            case SortTarget.Path:
            {
                return(TempDirection == SortDirection.Ascending
                            ? new List <T>(FolderList.OrderBy((Item) => Item.Path).Concat(FileList.OrderBy((Item) => Item.SizeRaw)))
                            : new List <T>(FileList.OrderByDescending((Item) => Item.Path).Concat(FolderList.OrderByDescending((Item) => Item.SizeRaw))));
            }

            default:
            {
                if (typeof(T) == typeof(RecycleStorageItem))
                {
                    return(TempDirection == SortDirection.Ascending
                                ? new List <T>(FolderList.Select((Item) => Item as RecycleStorageItem).OrderBy((Item) => Item.OriginPath).Concat(FileList.Select((Item) => Item as RecycleStorageItem).OrderBy((Item) => Item.OriginPath)).Select((Item) => Item as T))
                                : new List <T>(FolderList.Select((Item) => Item as RecycleStorageItem).OrderByDescending((Item) => Item.OriginPath).Concat(FileList.Select((Item) => Item as RecycleStorageItem).OrderByDescending((Item) => Item.OriginPath)).Select((Item) => Item as T)));
                }
                else
                {
                    return(null);
                }
            }
            }
        }
Beispiel #2
0
        public async Task ModifySortWayAsync(string Path, SortTarget?SortTarget = null, SortDirection?SortDirection = null, bool BypassSaveAndNotification = false)
        {
            if (SortTarget == Class.SortTarget.OriginPath || SortTarget == Class.SortTarget.Path)
            {
                throw new NotSupportedException("SortTarget.Path and SortTarget.OriginPath is not allow in this method");
            }

            bool IsModified = false;

            if (SortTarget.HasValue && this.SortTarget != SortTarget)
            {
                this.SortTarget = SortTarget.Value;
                IsModified      = true;
            }

            if (SortDirection.HasValue && this.SortDirection != SortDirection)
            {
                this.SortDirection = SortDirection.Value;
                IsModified         = true;
            }

            if (IsModified && !BypassSaveAndNotification)
            {
                await SQLite.Current.SetPathConfiguration(new PathConfiguration(Path, this.SortTarget, this.SortDirection)).ConfigureAwait(true);

                SortWayChanged?.Invoke(this, Path);
            }
        }
        public void ModifySortWay(SortTarget?SortTarget = null, SortDirection?SortDirection = null)
        {
            if (SortTarget == Class.SortTarget.OriginPath)
            {
                throw new NotSupportedException("OriginPath is not allow in this class");
            }

            if (SortTarget.HasValue)
            {
                this.SortTarget = SortTarget.Value;
                ApplicationData.Current.LocalSettings.Values["CollectionSortTarget"] = Enum.GetName(typeof(SortTarget), SortTarget);
            }

            if (SortDirection.HasValue)
            {
                this.SortDirection = SortDirection.Value;
                ApplicationData.Current.LocalSettings.Values["CollectionSortDirection"] = Enum.GetName(typeof(SortDirection), SortDirection);
            }
        }
        public async Task ModifySortWayAsync(string Path, SortTarget?SortTarget = null, SortDirection?SortDirection = null)
        {
            if (SortTarget == Class.SortTarget.OriginPath || SortTarget == Class.SortTarget.Path)
            {
                throw new NotSupportedException("SortTarget.Path and SortTarget.OriginPath is not allow in this method");
            }

            if (SortTarget.HasValue)
            {
                this.SortTarget = SortTarget.Value;
            }

            if (SortDirection.HasValue)
            {
                this.SortDirection = SortDirection.Value;
            }

            await SQLite.Current.SetPathConfiguration(new PathConfiguration(Path, this.SortTarget, this.SortDirection)).ConfigureAwait(true);

            SortIndicatorController.SetIndicatorStatus(this.SortTarget, this.SortDirection);
        }
Beispiel #5
0
        public void ModifySortWay(SortTarget?SortTarget = null, SortDirection?SortDirection = null)
        {
            if (SortTarget == Class.SortTarget.OriginPath || SortTarget == Class.SortTarget.Path)
            {
                throw new NotSupportedException("SortTarget.Path and SortTarget.OriginPath is not allow in this method");
            }

            if (SortTarget.HasValue)
            {
                this.SortTarget = SortTarget.Value;
                ApplicationData.Current.LocalSettings.Values["CollectionSortTarget"] = Enum.GetName(typeof(SortTarget), SortTarget);
            }

            if (SortDirection.HasValue)
            {
                this.SortDirection = SortDirection.Value;
                ApplicationData.Current.LocalSettings.Values["CollectionSortDirection"] = Enum.GetName(typeof(SortDirection), SortDirection);
            }

            SortIndicatorController.SetIndicatorStatus(this.SortTarget, this.SortDirection);
        }
Beispiel #6
0
        public IEnumerable <T> GetSortedCollection <T>(IEnumerable <T> InputCollection, SortTarget?Target, SortDirection?Direction) where T : IStorageItemPropertyBase
        {
            SortTarget    TempTarget    = Target ?? SortTarget;
            SortDirection TempDirection = Direction ?? SortDirection;

            IEnumerable <T> FolderList = InputCollection.Where((It) => It is FileSystemStorageFolder);
            IEnumerable <T> FileList   = InputCollection.Where((It) => It is FileSystemStorageFile);

            switch (TempTarget)
            {
            case SortTarget.Name:
            {
                return(TempDirection == SortDirection.Ascending
                            ? FolderList.OrderByLikeFileSystem((Item) => Item.Name, TempDirection).Concat(FileList.OrderByLikeFileSystem((Item) => Item.Name, TempDirection))
                            : FileList.OrderByLikeFileSystem((Item) => Item.Name, TempDirection).Concat(FolderList.OrderByLikeFileSystem((Item) => Item.Name, TempDirection)));
            }

            case SortTarget.Type:
            {
                return(TempDirection == SortDirection.Ascending
                            ? FolderList.OrderByLikeFileSystem((Item) => Item.Type, TempDirection).Concat(FileList.OrderByLikeFileSystem((Item) => Item.Type, TempDirection))
                            : FileList.OrderByLikeFileSystem((Item) => Item.Type, TempDirection).Concat(FolderList.OrderByLikeFileSystem((Item) => Item.Type, TempDirection)));
            }

            case SortTarget.ModifiedTime:
            {
                return(TempDirection == SortDirection.Ascending
                            ? FolderList.OrderBy((Item) => Item.ModifiedTimeRaw).Concat(FileList.OrderBy((Item) => Item.ModifiedTimeRaw))
                            : FileList.OrderByDescending((Item) => Item.ModifiedTimeRaw).Concat(FolderList.OrderByDescending((Item) => Item.ModifiedTimeRaw)));
            }

            case SortTarget.Size:
            {
                return(TempDirection == SortDirection.Ascending
                            ? FolderList.OrderBy((Item) => Item.SizeRaw).Concat(FileList.OrderBy((Item) => Item.SizeRaw))
                            : FileList.OrderByDescending((Item) => Item.SizeRaw).Concat(FolderList.OrderByDescending((Item) => Item.SizeRaw)));
            }

            case SortTarget.Path:
            {
                return(TempDirection == SortDirection.Ascending
                            ? FolderList.OrderBy((Item) => Item.Path).Concat(FileList.OrderBy((Item) => Item.SizeRaw))
                            : FileList.OrderByDescending((Item) => Item.Path).Concat(FolderList.OrderByDescending((Item) => Item.SizeRaw)));
            }

            default:
            {
                if (typeof(T) == typeof(IRecycleStorageItem))
                {
                    return(TempDirection == SortDirection.Ascending
                                ? FolderList.OfType <IRecycleStorageItem>().OrderBy((Item) => Item.OriginPath).Concat(FileList.OfType <IRecycleStorageItem>().OrderBy((Item) => Item.OriginPath)).OfType <T>()
                                : FolderList.OfType <IRecycleStorageItem>().OrderByDescending((Item) => Item.OriginPath).Concat(FileList.OfType <IRecycleStorageItem>().OrderByDescending((Item) => Item.OriginPath)).OfType <T>());
                }
                else
                {
                    return(null);
                }
            }
            }
        }