package com.ideabag.playtunes.fragment.xlarge;
import com.google.android.gms.analytics.HitBuilders;
import com.google.android.gms.analytics.Tracker;
import com.ideabag.playtunes.R;
import com.ideabag.playtunes.DragNDrop.DynamicListView;
import com.ideabag.playtunes.activity.MainActivity;
import com.ideabag.playtunes.adapter.AlbumsAllAdapter;
import com.ideabag.playtunes.database.MediaQuery;
import com.ideabag.playtunes.fragment.AlbumsOneFragment;
import com.ideabag.playtunes.util.IMusicBrowser;
import com.ideabag.playtunes.util.TrackerSingleton;
import com.ideabag.playtunes.util.GAEvent.Categories;
import com.ideabag.playtunes.util.GAEvent.Playlist;
import android.app.Activity;
import android.content.res.Resources;
import android.database.ContentObserver;
import android.database.Cursor;
import android.os.Bundle;
import android.os.Handler;
import android.provider.MediaStore;
import android.support.v4.app.Fragment;
import android.util.TypedValue;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.GridView;
import android.widget.AdapterView;
/*
The big difference between this and the other AlbumsAllFragment is that it uses a GridView instead of ListView
Note:
In the future, this Fragment may toggle between GridView and ListView
*/
public class AlbumsAllFragment extends Fragment implements IMusicBrowser, AdapterView.OnItemClickListener {
public static final String TAG = "All Albums Grid Fragment";
private MainActivity mActivity;
private Tracker mTracker;
AlbumsAllAdapter adapter;
GridView mGridView;
@Override public View onCreateView( LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState ) {
Resources r = getResources();
float px = TypedValue.applyDimension( TypedValue.COMPLEX_UNIT_DIP, 14, r.getDisplayMetrics() );
mGridView = new GridView( getActivity() );
mGridView.setHorizontalSpacing( r.getDimensionPixelSize( R.dimen.spacing_medium ) );
mGridView.setVerticalSpacing( r.getDimensionPixelSize( R.dimen.spacing_medium ) );
mGridView.setNumColumns( -1 ); // -1 = auto_fit
mGridView.setColumnWidth( ( int ) TypedValue.applyDimension( TypedValue.COMPLEX_UNIT_DIP, 240, r.getDisplayMetrics() ) );
return mGridView;
}
@Override public void onAttach( Activity activity ) {
super.onAttach( activity );
mActivity = ( MainActivity ) activity;
mTracker = TrackerSingleton.getDefaultTracker( mActivity.getBaseContext() );
mTracker.setScreenName( TAG );
mActivity.setActionbarTitle( getString( R.string.albums_plural) );
}
@Override public void onActivityCreated( Bundle savedInstanceState ) {
super.onActivityCreated( savedInstanceState );
adapter = new AlbumsAllAdapter( getActivity(), new MediaQuery.OnQueryCompletedListener() {
@Override public void onQueryCompleted( MediaQuery mQuery, Cursor mResult ) {
mActivity.setActionbarSubtitle( mResult.getCount() + " " + ( mResult.getCount() == 1 ? getString( R.string.album_singular ) : getString( R.string.albums_plural ) ) );
//restoreScrollPosition();
mTracker.send( new HitBuilders.EventBuilder()
.setCategory( Categories.PLAYLIST )
.setAction( Playlist.ACTION_SHOWLIST )
.setValue( mResult.getCount() )
.build());
}
});
//adapter.setOn
getView().setBackgroundColor( getResources().getColor( android.R.color.white ) );
//getListView().setDivider( getResources().getDrawable( R.drawable.list_divider ) );
//getListView().setDividerHeight( 1 );
mGridView.setSelector( R.drawable.list_item_background );
mGridView.setOnItemClickListener( this );
mGridView.setAdapter( adapter );
getActivity().getContentResolver().registerContentObserver(
MediaStore.Audio.Albums.EXTERNAL_CONTENT_URI, true, mediaStoreChanged );
}
@Override public void onResume() {
super.onResume();
//mActivity.setActionbarTitle( getString( R.string.albums_plural) );
mActivity.setActionbarTitle( getString( R.string.albums_plural) );
// Set screen name.
// Where path is a String representing the screen name.
//t.set( "_count", ""+adapter.getCount() );
// Send a screen view.
mTracker.send( new HitBuilders.AppViewBuilder().build() );
}
@Override public void onPause() {
super.onPause();
}
@Override public void onDestroy() {
super.onDestroy();
getActivity().getContentResolver().unregisterContentObserver( mediaStoreChanged );
}
@Override
public void setMediaID(String media_id) {
// TODO Auto-generated method stub
}
@Override
public String getMediaID() {
// TODO Auto-generated method stub
return null;
}
ContentObserver mediaStoreChanged = new ContentObserver( new Handler() ) {
@Override public void onChange( boolean selfChange ) {
mActivity.runOnUiThread( new Runnable() {
@Override public void run() {
//saveScrollPosition();
adapter.requery();
//adapter.notifyDataSetChanged();
}
});
super.onChange( selfChange );
}
};
@Override public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
String albumID = ( String ) v.getTag( R.id.tag_album_id );
AlbumsOneFragment albumFragment = new AlbumsOneFragment( );
albumFragment.setMediaID( albumID );
mActivity.transactFragment( albumFragment );
mTracker.send( new HitBuilders.EventBuilder()
.setCategory( Categories.PLAYLIST )
.setAction( Playlist.ACTION_CLICK )
.setValue( position )
.build());
}
}