/// <summary>
        /// Clear the contents of the specified library
        /// </summary>
        /// <param name="libraryToClear"></param>
        /// <returns></returns>
        public static void ClearLibrary(Library libraryToClear)
        {
            int libId = libraryToClear.Id;

            // Delete all the artists in the library and their associated ArtistAlbum entries
            List <Artist> artists = Artists.ArtistCollection.Where(art => art.LibraryId == libId).ToList();

            Artists.DeleteArtists(artists);

            ArtistAlbums.DeleteArtistAlbums(
                ArtistAlbums.ArtistAlbumCollection.Where(artAlb => artists.Any(art => art.Id == artAlb.ArtistId)).Distinct().ToList());

            // Delete all the albums in the library and any tags associated with them
            List <Album> albums = Albums.AlbumCollection.Where(alb => alb.LibraryId == libId).ToList();

            Albums.DeleteAlbums(albums);

            // We can use the FilterManagementController to carry out the Tag deletions.
            new AlbumsDeletedMessage()
            {
                DeletedAlbumIds = albums.Select(alb => alb.Id).ToList()
            }.Send();

            // Delete all the user playlists and thier contents
            Playlists.GetPlaylistsForLibrary(libId).ForEach(play => Playlists.DeletePlaylist(play));

            // Delete the contents of the NowPlayingList but keep the playlist itself
            Playlist nowPlaying = Playlists.GetNowPlayingPlaylist(libId);

            nowPlaying.Clear();
            nowPlaying.SongIndex = -1;

            // Delete all the songs in each of the sources associated with the library
            List <Source> sources = Sources.GetSourcesForLibrary(libId);

            foreach (Source source in sources)
            {
                Songs.DeleteSongs(Songs.GetSourceSongs(source.Id));
                source.Songs = null;
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// Create the dialogue
        /// </summary>
        /// <param name="savedInstanceState"></param>
        /// <returns></returns>
        public override Dialog OnCreateDialog(Bundle savedInstanceState)
        {
            // Create the view here so that we can access the listview
            View layout = LayoutInflater.FromContext(Context).Inflate(Resource.Layout.source_display_dialogue_layout, null);

            // Create an adapter for the list view to display the main source details
            // Keep a reference to the adapter so that we can refresh the data if a source is changed
            ListView sourceView = layout.FindViewById <ListView>(Resource.Id.sourceList);

            sourceAdapter      = new SourceDisplayAdapter(Context, Sources.GetSourcesForLibrary(libraryToDisplay.Id), sourceView, this);
            sourceView.Adapter = sourceAdapter;

            // Add a header to the ListView
            sourceView.AddHeaderView(LayoutInflater.FromContext(Context).Inflate(Resource.Layout.source_header_layout, null));

            // Create the rest of the dialog
            return(new AlertDialog.Builder(Activity)
                   .SetTitle(string.Format("Library {0}", libraryToDisplay.Name))
                   .SetView(layout)
                   .SetPositiveButton("Done", delegate { }).Create());
        }