package com.ideabag.playtunes.fragment.xlarge;
import com.ideabag.playtunes.R;
import com.ideabag.playtunes.activity.MainActivity;
import com.ideabag.playtunes.database.MediaQuery;
import com.ideabag.playtunes.dialog.SongMenuDialogFragment;
import com.ideabag.playtunes.media.PlaylistMediaPlayer.PlaybackListener;
import com.ideabag.playtunes.util.AsyncDrawable;
import com.ideabag.playtunes.util.BitmapWorkerTask;
import android.app.Activity;
import android.database.Cursor;
import android.os.Bundle;
import android.provider.MediaStore;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentTransaction;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
public class NowPlayingStub extends Fragment implements View.OnClickListener {
private MainActivity mActivity;
private String songID;
TextView mTitle;
TextView mSubtitle;
ImageView mCompactAlbumArt;
String lastAlbumUri;
@Override public void onAttach( Activity activity ) {
super.onAttach( activity );
mActivity = ( MainActivity ) activity;
}
@Override public View onCreateView( LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState ) {
return inflater.inflate( R.layout.fragment_nowplaying_stub, container, false );
}
@Override public void onActivityCreated( Bundle savedInstanceState ) {
super.onActivityCreated( savedInstanceState );
getView().findViewById( R.id.MenuButton ).setOnClickListener( this );
getView().findViewById( R.id.StarButton ).setOnClickListener( this );
mTitle = ( TextView ) getView().findViewById( R.id.ControlsTitle );
mSubtitle = ( TextView ) getView().findViewById( R.id.ControlsSubtitle );
mCompactAlbumArt = ( ImageView ) getView().findViewById( R.id.CompactAlbumArt );
}
@Override public void onResume() {
super.onResume();
mActivity.addPlaybackListener( mPlaybackListener );
}
@Override public void onPause() {
super.onStart();
mActivity.removePlaybackListener( mPlaybackListener );
}
@Override public void onClick( View v ) {
int id = v.getId();
if ( id == R.id.MenuButton ) {
FragmentTransaction ft = getActivity().getSupportFragmentManager().beginTransaction();
SongMenuDialogFragment newFragment = new SongMenuDialogFragment();
newFragment.setMediaID( songID );
newFragment.show( ft, "dialog" );
} else if ( id == R.id.StarButton ) {
}
}
PlaybackListener mPlaybackListener = new PlaybackListener() {
@Override public void onTrackChanged( String media_id ) {
if ( media_id == null ) {
getView().setVisibility( View.GONE );
songID = null;
} else {
getView().setVisibility( View.VISIBLE );
songID = media_id;
MediaQuery mSongQuery = new MediaQuery(
MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
new String[] {
MediaStore.Audio.Media.ALBUM,
MediaStore.Audio.Media.ARTIST,
MediaStore.Audio.Media.TITLE,
MediaStore.Audio.Media.ALBUM_ID,
MediaStore.Audio.Media.DURATION,
MediaStore.Audio.Media._ID
},
MediaStore.Audio.Media._ID + "=?",
new String[] {
media_id
},
null
);
MediaQuery.executeAsync( mActivity, mSongQuery, new MediaQuery.OnQueryCompletedListener() {
@Override public void onQueryCompleted( MediaQuery mQuery, Cursor mResult ) {
mResult.moveToFirst();
String title = mResult.getString( mResult.getColumnIndexOrThrow( MediaStore.Audio.Media.TITLE ) );
String artist = mResult.getString( mResult.getColumnIndexOrThrow( MediaStore.Audio.Media.ARTIST ) );
String album_id = mResult.getString( mResult.getColumnIndexOrThrow( MediaStore.Audio.Media.ALBUM_ID ) );
mResult.close();
//
// This tests if we loaded previous album art and that it wasn't null
// If the nextAlbumUri is null, it means there's no album art and
// we load from an image resource.
//
MediaQuery albumQuery = new MediaQuery(
MediaStore.Audio.Albums.EXTERNAL_CONTENT_URI,
new String[] {
MediaStore.Audio.Albums.ALBUM_ART,
MediaStore.Audio.Albums._ID
},
MediaStore.Audio.Albums._ID + "=?",
new String[] {
album_id
},
null
);
MediaQuery.executeAsync(getActivity(), albumQuery, new MediaQuery.OnQueryCompletedListener() {
@Override public void onQueryCompleted( MediaQuery mQuery, Cursor mResult ) {
mResult.moveToFirst();
String nextAlbumUri = mResult.getString( mResult.getColumnIndexOrThrow( MediaStore.Audio.Albums.ALBUM_ART ) );
if ( null != nextAlbumUri) {
if ( !nextAlbumUri.equals( lastAlbumUri ) ) {
lastAlbumUri = nextAlbumUri;
final BitmapWorkerTask albumThumbTask = new BitmapWorkerTask( mCompactAlbumArt, getResources().getDimensionPixelSize( R.dimen.footer_height ) );
final AsyncDrawable asyncThumbDrawable =
new AsyncDrawable( getResources(),
null, // BitmapFactory.decodeResource( mContext.getResources(), R.drawable.no_album_art_thumb )
albumThumbTask );
mCompactAlbumArt.setImageDrawable( asyncThumbDrawable );
albumThumbTask.execute( nextAlbumUri );
}
} else {
mCompactAlbumArt.setImageResource( R.drawable.no_album_art_thumb );
}
}
});
mTitle.setText( title );
mSubtitle.setText( artist );
}
}); // End of song query async callback
}
}
@Override public void onPlay() { }
@Override public void onPause() { }
@Override public void onPlaylistDone() {
getView().setVisibility( View.GONE );
}
@Override public void onLoopingChanged( int loop ) { }
@Override public void onShuffleChanged( boolean isShuffling ) { }
@Override public void onDurationChanged( int position, int duration ) { }
};
}