Exemple #1
0
        private void BuildItemList()
        {
            this.GroupedItemsList.Clear();

            List <GroupItemList> groupedItems = GetItemsGrouped();

            //Add Categories to the grouped list that do not contain any items

            foreach (Category category in Categories)
            {
                List <Item> items = groupedItems.SingleOrDefault(list => list.Key == category.Name);

                if (items == null)
                {
                    GroupItemList group = new GroupItemList(new List <Item>())
                    {
                        Key = category.Name
                    };

                    groupedItems.Add(group);
                }
            }

            groupedItems.Sort((g1, g2) => string.Compare(g1.Key, g2.Key));
            groupedItems.ForEach(g => GroupedItemsList.Add(g));
        }
 async Task InsertIntoGroupArtist(ArtistItem artist)
 {
     try
     {
         var supposedFirstChar = Strings.HumanizedArtistFirstLetter(artist.Name);
         var firstChar         = GroupedArtists.FirstOrDefault(x => (string)x.Key == supposedFirstChar);
         if (firstChar == null)
         {
             var newChar = new GroupItemList <ArtistItem>(artist)
             {
                 Key = supposedFirstChar
             };
             if (GroupedArtists == null)
             {
                 return;
             }
             int i = GroupedArtists.IndexOf(GroupedArtists.LastOrDefault(x => string.Compare((string)x.Key, (string)newChar.Key) < 0));
             i++;
             await DispatchHelper.InvokeAsync(CoreDispatcherPriority.Normal, () => GroupedArtists.Insert(i, newChar));
         }
         else
         {
             await DispatchHelper.InvokeAsync(CoreDispatcherPriority.Normal, () => firstChar.Add(artist));
         }
     }
     catch { }
 }
Exemple #3
0
        public async Task PopulateAlbumsWithTracks(ArtistItem artist)
        {
            try
            {
                var albums        = musicDatabase.LoadAlbumsFromIdWithTracks(artist.Id).ToObservable();
                var groupedAlbums = new ObservableCollection <GroupItemList <TrackItem> >();
                var groupQuery    = from album in albums
                                    orderby album.Name
                                    group album.Tracks by album into a
                                    select new { GroupName = a.Key, Items = a };
                foreach (var g in groupQuery)
                {
                    GroupItemList <TrackItem> tracks = new GroupItemList <TrackItem>();
                    tracks.Key = g.GroupName;
                    foreach (var track in g.Items)
                    {
                        tracks.AddRange(track);
                    }
                    groupedAlbums.Add(tracks);
                }

                await DispatchHelper.InvokeAsync(CoreDispatcherPriority.Normal, () =>
                {
                    artist.Albums        = albums;
                    artist.AlbumsGrouped = groupedAlbums;
                });
            }
            catch { }
        }
 async Task CreateFolderCategory(RootFolderType type)
 {
     var category = new GroupItemList <FileExplorer>()
     {
         Key = type
     };
     await DispatchHelper.InvokeAsync(CoreDispatcherPriority.Normal, () => FileExplorersGrouped.Add(category));
 }
Exemple #5
0
 static async Task InsertIntoGroupAlbum(AlbumItem album)
 {
     if (Locator.SettingsVM.AlbumsOrderType == OrderType.ByArtist)
     {
         var artist = Locator.MusicLibraryVM.GroupedAlbums.FirstOrDefault(x => x.Key == Strings.HumanizedArtistName(album.Artist));
         if (artist == null)
         {
             artist = new GroupItemList <AlbumItem>(album)
             {
                 Key = Strings.HumanizedArtistName(album.Artist)
             };
             int i = Locator.MusicLibraryVM.GroupedAlbums.IndexOf(Locator.MusicLibraryVM.GroupedAlbums.LastOrDefault(x => string.Compare(x.Key, artist.Key) < 0));
             i++;
             await App.Dispatcher.RunAsync(CoreDispatcherPriority.Low, () => Locator.MusicLibraryVM.GroupedAlbums.Insert(i, artist));
         }
         else
         {
             await App.Dispatcher.RunAsync(CoreDispatcherPriority.Low, () => artist.Add(album));
         }
     }
     else if (Locator.SettingsVM.AlbumsOrderType == OrderType.ByDate)
     {
         var year = Locator.MusicLibraryVM.GroupedAlbums.FirstOrDefault(x => x.Key == Strings.HumanizedYear(album.Year));
         if (year == null)
         {
             var newyear = new GroupItemList <AlbumItem>(album)
             {
                 Key = Strings.HumanizedYear(album.Year)
             };
             int i = Locator.MusicLibraryVM.GroupedAlbums.IndexOf(Locator.MusicLibraryVM.GroupedAlbums.LastOrDefault(x => string.Compare(x.Key, newyear.Key) < 0));
             i++;
             await App.Dispatcher.RunAsync(CoreDispatcherPriority.Low, () => Locator.MusicLibraryVM.GroupedAlbums.Insert(i, newyear));
         }
         else
         {
             await App.Dispatcher.RunAsync(CoreDispatcherPriority.Low, () => year.Add(album));
         }
     }
     else if (Locator.SettingsVM.AlbumsOrderType == OrderType.ByAlbum)
     {
         var firstChar = Locator.MusicLibraryVM.GroupedAlbums.FirstOrDefault(x => x.Key == Strings.HumanizedAlbumFirstLetter(album.Name));
         if (firstChar == null)
         {
             var newChar = new GroupItemList <AlbumItem>(album)
             {
                 Key = Strings.HumanizedAlbumFirstLetter(album.Name)
             };
             int i = Locator.MusicLibraryVM.GroupedAlbums.IndexOf(Locator.MusicLibraryVM.GroupedAlbums.LastOrDefault(x => string.Compare(x.Key, newChar.Key) < 0));
             i++;
             await App.Dispatcher.RunAsync(CoreDispatcherPriority.Low, () => Locator.MusicLibraryVM.GroupedAlbums.Insert(i, newChar));
         }
         else
         {
             await App.Dispatcher.RunAsync(CoreDispatcherPriority.Low, () => firstChar.Add(album));
         }
     }
 }
Exemple #6
0
        public ObservableCollection <GroupItemList <TrackItem> > OrderTracks()
        {
            var groupedTracks = new ObservableCollection <GroupItemList <TrackItem> >();
            var groupQuery    = from track in Tracks
                                group track by Strings.HumanizedArtistFirstLetter(track.Name) into a
                                orderby a.Key
                                select new { GroupName = a.Key, Items = a };

            foreach (var g in groupQuery)
            {
                GroupItemList <TrackItem> tracks = new GroupItemList <TrackItem>();
                tracks.Key = g.GroupName;
                foreach (var artist in g.Items)
                {
                    tracks.Add(artist);
                }
                groupedTracks.Add(tracks);
            }
            return(groupedTracks);
        }
Exemple #7
0
        public ObservableCollection <GroupItemList <ArtistItem> > OrderArtists()
        {
            var groupedArtists = new ObservableCollection <GroupItemList <ArtistItem> >();
            var groupQuery     = from artist in Artists
                                 group artist by Strings.HumanizedArtistFirstLetter(artist.Name) into a
                                 orderby a.Key
                                 select new { GroupName = a.Key, Items = a };

            foreach (var g in groupQuery)
            {
                GroupItemList <ArtistItem> artists = new GroupItemList <ArtistItem>();
                artists.Key = g.GroupName;
                foreach (var artist in g.Items)
                {
                    artists.Add(artist);
                }
                groupedArtists.Add(artists);
            }
            return(groupedArtists);
        }
 static async Task InsertIntoGroupAlbum(AlbumItem album)
 {
     if (Locator.SettingsVM.AlbumsOrderType == OrderType.ByArtist)
     {
         var artist = Locator.MusicLibraryVM.GroupedAlbums.FirstOrDefault(x => x.Key == Strings.HumanizedArtistName(album.Artist));
         if (artist == null)
         {
             artist = new GroupItemList<AlbumItem>(album) { Key = Strings.HumanizedArtistName(album.Artist) };
             int i = Locator.MusicLibraryVM.GroupedAlbums.IndexOf(Locator.MusicLibraryVM.GroupedAlbums.LastOrDefault(x => string.Compare(x.Key, artist.Key) < 0));
             i++;
             await App.Dispatcher.RunAsync(CoreDispatcherPriority.Low, () => Locator.MusicLibraryVM.GroupedAlbums.Insert(i, artist));
         }
         else await App.Dispatcher.RunAsync(CoreDispatcherPriority.Low, () => artist.Add(album));
     }
     else if (Locator.SettingsVM.AlbumsOrderType == OrderType.ByDate)
     {
         var year = Locator.MusicLibraryVM.GroupedAlbums.FirstOrDefault(x => x.Key == Strings.HumanizedYear(album.Year));
         if (year == null)
         {
             var newyear = new GroupItemList<AlbumItem>(album) { Key = Strings.HumanizedYear(album.Year) };
             int i = Locator.MusicLibraryVM.GroupedAlbums.IndexOf(Locator.MusicLibraryVM.GroupedAlbums.LastOrDefault(x => string.Compare(x.Key, newyear.Key) < 0));
             i++;
             await App.Dispatcher.RunAsync(CoreDispatcherPriority.Low, () => Locator.MusicLibraryVM.GroupedAlbums.Insert(i, newyear));
         }
         else await App.Dispatcher.RunAsync(CoreDispatcherPriority.Low, () => year.Add(album));
     }
     else if (Locator.SettingsVM.AlbumsOrderType == OrderType.ByAlbum)
     {
         var firstChar = Locator.MusicLibraryVM.GroupedAlbums.FirstOrDefault(x => x.Key == Strings.HumanizedAlbumFirstLetter(album.Name));
         if (firstChar == null)
         {
             var newChar = new GroupItemList<AlbumItem>(album) { Key = Strings.HumanizedAlbumFirstLetter(album.Name) };
             int i = Locator.MusicLibraryVM.GroupedAlbums.IndexOf(Locator.MusicLibraryVM.GroupedAlbums.LastOrDefault(x => string.Compare(x.Key, newChar.Key) < 0));
             i++;
             await App.Dispatcher.RunAsync(CoreDispatcherPriority.Low, () => Locator.MusicLibraryVM.GroupedAlbums.Insert(i, newChar));
         }
         else await App.Dispatcher.RunAsync(CoreDispatcherPriority.Low, () => firstChar.Add(album));
     }
 }
        public static void OrderAlbums()
        {
            Task.Run(async () =>
            {
                var groupedAlbums = new ObservableCollection<GroupItemList<AlbumItem>>();
                if (Locator.SettingsVM.AlbumsOrderType == OrderType.ByArtist)
                {
                    if (Locator.SettingsVM.AlbumsOrderListing == OrderListing.Ascending)
                    {
                        var groupQuery = from album in Locator.MusicLibraryVM.Albums
                                         orderby album.Artist
                                         group album by Strings.HumanizedArtistName(album.Artist) into a
                                         select new { GroupName = a.Key, Items = a };
                        foreach (var g in groupQuery)
                        {
                            GroupItemList<AlbumItem> albums = new GroupItemList<AlbumItem>();
                            albums.Key = g.GroupName;
                            foreach (var album in g.Items)
                            {
                                albums.Add(album);
                            }
                            groupedAlbums.Add(albums);
                        }
                    }
                    else if (Locator.SettingsVM.AlbumsOrderListing == OrderListing.Descending)
                    {
                        var groupQuery = from album in Locator.MusicLibraryVM.Albums
                                         orderby album.Artist descending
                                         group album by Strings.HumanizedArtistName(album.Artist) into a
                                         select new { GroupName = a.Key, Items = a };
                        foreach (var g in groupQuery)
                        {
                            GroupItemList<AlbumItem> albums = new GroupItemList<AlbumItem>();
                            albums.Key = g.GroupName;
                            foreach (var album in g.Items)
                            {
                                albums.Add(album);
                            }
                            groupedAlbums.Add(albums);
                        }
                    }
                }
                else if (Locator.SettingsVM.AlbumsOrderType == OrderType.ByDate)
                {
                    if (Locator.SettingsVM.AlbumsOrderListing == OrderListing.Ascending)
                    {
                        var groupQuery = from album in Locator.MusicLibraryVM.Albums
                                         orderby album.Year
                                         group album by Strings.HumanizedYear(album.Year) into a
                                         select new { GroupName = a.Key, Items = a };
                        foreach (var g in groupQuery)
                        {
                            GroupItemList<AlbumItem> albums = new GroupItemList<AlbumItem>();
                            albums.Key = g.GroupName;
                            foreach (var album in g.Items)
                            {
                                albums.Add(album);
                            }
                            groupedAlbums.Add(albums);
                        }
                    }
                    else if (Locator.SettingsVM.AlbumsOrderListing == OrderListing.Descending)
                    {
                        var groupQuery = from album in Locator.MusicLibraryVM.Albums
                                         orderby album.Year descending
                                         group album by Strings.HumanizedYear(album.Year) into a
                                         select new { GroupName = a.Key, Items = a };
                        foreach (var g in groupQuery)
                        {
                            GroupItemList<AlbumItem> albums = new GroupItemList<AlbumItem>();
                            albums.Key = g.GroupName;
                            foreach (var album in g.Items)
                            {
                                albums.Add(album);
                            }
                            groupedAlbums.Add(albums);
                        }
                    }
                }
                else if (Locator.SettingsVM.AlbumsOrderType == OrderType.ByAlbum)
                {
                    if (Locator.SettingsVM.AlbumsOrderListing == OrderListing.Ascending)
                    {
                        var groupQuery = from album in Locator.MusicLibraryVM.Albums
                                         orderby album.Name
                                         group album by Strings.HumanizedAlbumFirstLetter(album.Name) into a
                                         select new { GroupName = a.Key, Items = a };
                        foreach (var g in groupQuery)
                        {
                            GroupItemList<AlbumItem> albums = new GroupItemList<AlbumItem>();
                            albums.Key = g.GroupName;
                            foreach (var album in g.Items)
                            {
                                albums.Add(album);
                            }
                            groupedAlbums.Add(albums);
                        }
                    }
                    else if (Locator.SettingsVM.AlbumsOrderListing == OrderListing.Descending)
                    {
                        var groupQuery = from album in Locator.MusicLibraryVM.Albums
                                         orderby album.Name descending
                                         group album by Strings.HumanizedAlbumFirstLetter(album.Name) into a
                                         select new { GroupName = a.Key, Items = a };
                        foreach (var g in groupQuery)
                        {
                            GroupItemList<AlbumItem> albums = new GroupItemList<AlbumItem>();
                            albums.Key = g.GroupName;
                            foreach (var album in g.Items)
                            {
                                albums.Add(album);
                            }
                            groupedAlbums.Add(albums);
                        }
                    }
                }

                await App.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => Locator.MusicLibraryVM.GroupedAlbums = groupedAlbums);
            });
        }
Exemple #10
0
        public static void OrderAlbums()
        {
            Task.Run(async() =>
            {
                var groupedAlbums = new ObservableCollection <GroupItemList <AlbumItem> >();
                if (Locator.SettingsVM.AlbumsOrderType == OrderType.ByArtist)
                {
                    if (Locator.SettingsVM.AlbumsOrderListing == OrderListing.Ascending)
                    {
                        var groupQuery = from album in Locator.MusicLibraryVM.Albums
                                         orderby album.Artist
                                         group album by Strings.HumanizedArtistName(album.Artist) into a
                                         select new { GroupName = a.Key, Items = a };
                        foreach (var g in groupQuery)
                        {
                            GroupItemList <AlbumItem> albums = new GroupItemList <AlbumItem>();
                            albums.Key = g.GroupName;
                            foreach (var album in g.Items)
                            {
                                albums.Add(album);
                            }
                            groupedAlbums.Add(albums);
                        }
                    }
                    else if (Locator.SettingsVM.AlbumsOrderListing == OrderListing.Descending)
                    {
                        var groupQuery = from album in Locator.MusicLibraryVM.Albums
                                         orderby album.Artist descending
                                         group album by Strings.HumanizedArtistName(album.Artist) into a
                                         select new { GroupName = a.Key, Items = a };
                        foreach (var g in groupQuery)
                        {
                            GroupItemList <AlbumItem> albums = new GroupItemList <AlbumItem>();
                            albums.Key = g.GroupName;
                            foreach (var album in g.Items)
                            {
                                albums.Add(album);
                            }
                            groupedAlbums.Add(albums);
                        }
                    }
                }
                else if (Locator.SettingsVM.AlbumsOrderType == OrderType.ByDate)
                {
                    if (Locator.SettingsVM.AlbumsOrderListing == OrderListing.Ascending)
                    {
                        var groupQuery = from album in Locator.MusicLibraryVM.Albums
                                         orderby album.Year
                                         group album by Strings.HumanizedYear(album.Year) into a
                                         select new { GroupName = a.Key, Items = a };
                        foreach (var g in groupQuery)
                        {
                            GroupItemList <AlbumItem> albums = new GroupItemList <AlbumItem>();
                            albums.Key = g.GroupName;
                            foreach (var album in g.Items)
                            {
                                albums.Add(album);
                            }
                            groupedAlbums.Add(albums);
                        }
                    }
                    else if (Locator.SettingsVM.AlbumsOrderListing == OrderListing.Descending)
                    {
                        var groupQuery = from album in Locator.MusicLibraryVM.Albums
                                         orderby album.Year descending
                                         group album by Strings.HumanizedYear(album.Year) into a
                                         select new { GroupName = a.Key, Items = a };
                        foreach (var g in groupQuery)
                        {
                            GroupItemList <AlbumItem> albums = new GroupItemList <AlbumItem>();
                            albums.Key = g.GroupName;
                            foreach (var album in g.Items)
                            {
                                albums.Add(album);
                            }
                            groupedAlbums.Add(albums);
                        }
                    }
                }
                else if (Locator.SettingsVM.AlbumsOrderType == OrderType.ByAlbum)
                {
                    if (Locator.SettingsVM.AlbumsOrderListing == OrderListing.Ascending)
                    {
                        var groupQuery = from album in Locator.MusicLibraryVM.Albums
                                         orderby album.Name
                                         group album by Strings.HumanizedAlbumFirstLetter(album.Name) into a
                                         select new { GroupName = a.Key, Items = a };
                        foreach (var g in groupQuery)
                        {
                            GroupItemList <AlbumItem> albums = new GroupItemList <AlbumItem>();
                            albums.Key = g.GroupName;
                            foreach (var album in g.Items)
                            {
                                albums.Add(album);
                            }
                            groupedAlbums.Add(albums);
                        }
                    }
                    else if (Locator.SettingsVM.AlbumsOrderListing == OrderListing.Descending)
                    {
                        var groupQuery = from album in Locator.MusicLibraryVM.Albums
                                         orderby album.Name descending
                                         group album by Strings.HumanizedAlbumFirstLetter(album.Name) into a
                                         select new { GroupName = a.Key, Items = a };
                        foreach (var g in groupQuery)
                        {
                            GroupItemList <AlbumItem> albums = new GroupItemList <AlbumItem>();
                            albums.Key = g.GroupName;
                            foreach (var album in g.Items)
                            {
                                albums.Add(album);
                            }
                            groupedAlbums.Add(albums);
                        }
                    }
                }

                await App.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => Locator.MusicLibraryVM.GroupedAlbums = groupedAlbums);
            });
        }