package com.ideabag.playtunes.fragment.xlarge;
import android.app.Activity;
import android.view.View;
import android.widget.ListView;
import com.ideabag.playtunes.R;
import com.ideabag.playtunes.activity.MainActivity;
import com.ideabag.playtunes.fragment.AlbumsOneFragment;
import com.ideabag.playtunes.fragment.ArtistsOneFragment;
import com.ideabag.playtunes.fragment.search.SearchAlbumsFragment;
import com.ideabag.playtunes.fragment.search.SearchAllFragment;
import com.ideabag.playtunes.fragment.search.SearchArtistsFragment;
import com.ideabag.playtunes.fragment.search.SearchSongsFragment;
import com.ideabag.playtunes.util.IMusicBrowser;
public class SearchFragment extends SearchAllFragment implements IMusicBrowser {
MainActivity mActivity;
@Override public void onAttach( Activity activity ) {
super.onAttach( activity );
mActivity = ( MainActivity ) activity;
}
@Override public void setMediaID( String media_id ) {
setSearchTerms( media_id );
}
@Override public String getMediaID() {
return mQueryString;
}
@Override public void onListItemClick( ListView l, View v, int position, long id ) {
//convertView.setTag( R.id.tag_album_id, cursor.getString( cursor.getColumnIndexOrThrow( MediaStore.Audio.Albums.ALBUM ) ) );
int mSongSection = mSearchSongs.getCount() + 1;
int mAlbumsSection = mSongSection + mSearchAlbums.getCount() + 1;
int mArtistsSection = mAlbumsSection + mSearchArtists.getCount();
if ( position == 0 ) {
// Songs header
SearchSongsFragment songFragment = new SearchSongsFragment( mSearchSongs );
//SearchSongsAdapter.
mActivity.NavigationFragment.transactFragment( songFragment );
} else if ( position > 0 && position < mSongSection ) {
// Play song
String playlistName = getString( R.string.search ) + " \"" + mQueryString + "\"";
//
// A bit of explanation is required here.
// The setPlaylist method takes a Fragment class and a media id
// When the user wants to return to "now playing", this information is used to regenerate the playing fragment
// In this case, the media_id is the search query instead of a normal media id for an album, playlist, or artist
//
mActivity.mBoundService.setPlaylist( mSearchSongs.getQuery(), playlistName, SearchFragment.class, mQueryString );
mActivity.mBoundService.setPlaylistPosition( position - 1 ); // subtract one for the SONGS header
mActivity.mBoundService.play();
} else if ( position == mSongSection ) { // Album Header
SearchAlbumsFragment albumFragment = new SearchAlbumsFragment( mSearchAlbums );
mActivity.NavigationFragment.transactFragment( albumFragment );
} else if ( position > mSongSection && position < mAlbumsSection ) {
// Show Album
String albumID = ( String ) v.getTag( R.id.tag_album_id );
AlbumsOneFragment albumFragment = new AlbumsOneFragment( );
albumFragment.setMediaID( albumID );
mActivity.NavigationFragment.transactFragment( albumFragment );
//mSearchFragment.transactFragment( albumFragment );
} else if ( position == mAlbumsSection ) { // Artists Header
SearchArtistsFragment artistFragment = new SearchArtistsFragment( mSearchArtists );
mActivity.NavigationFragment.transactFragment( artistFragment );
} else if ( position > mAlbumsSection && position <= mArtistsSection ) {
// Show Artist
String artistID = ( String ) v.getTag( R.id.tag_artist_id );
ArtistsOneFragment artistFragment = new ArtistsOneFragment();
artistFragment.setMediaID( artistID );
mActivity.NavigationFragment.transactFragment( artistFragment );
}
}
}