package com.ideabag.playtunes.fragment; import com.google.android.gms.analytics.HitBuilders; import com.google.android.gms.analytics.Tracker; import com.ideabag.playtunes.R; import com.ideabag.playtunes.activity.MainActivity; import com.ideabag.playtunes.adapter.PlaylistsAllAdapter; import com.ideabag.playtunes.dialog.CreatePlaylistDialogFragment; import com.ideabag.playtunes.dialog.PlaylistMenuDialogFragment; 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.database.ContentObserver; import android.database.Cursor; import android.os.Bundle; import android.os.Handler; import android.provider.MediaStore; import android.support.v4.app.DialogFragment; import android.support.v4.app.FragmentTransaction; import android.support.v4.app.ListFragment; import android.util.Log; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.LinearLayout; import android.widget.ListView; import android.widget.TextView; import android.widget.Toast; public class PlaylistsAllFragment extends SaveScrollListFragment implements IMusicBrowser { public static final String TAG = "All Playlists Fragment"; PlaylistsAllAdapter adapter; //MergeAdapter adapter; private MainActivity mActivity; private Tracker mTracker; @Override public void onAttach( Activity activity ) { super.onAttach( activity ); mActivity = ( MainActivity ) activity; mTracker = TrackerSingleton.getDefaultTracker( mActivity ); mActivity.setActionbarTitle( getString( R.string.playlists_plural ) ); mActivity.setActionbarSubtitle( null ); // Set screen name. mTracker.setScreenName( TAG ); } @Override public void onActivityCreated( Bundle savedInstanceState ) { super.onActivityCreated( savedInstanceState ); adapter = new PlaylistsAllAdapter( getActivity(), playlistMenuClickListener ); LayoutInflater inflater = mActivity.getLayoutInflater(); LinearLayout starredPlaylist = ( LinearLayout ) inflater.inflate( R.layout.list_item_playlist_starred, null ); starredPlaylist.setTag( R.id.tag_playlist_id, mActivity.PlaylistManager.createStarredIfNotExist() ); Cursor mStarredCursor = mActivity.PlaylistManager.getStarredCursor(); ( ( TextView ) starredPlaylist.findViewById( R.id.SongCount ) ).setText( "" + mStarredCursor.getCount() ); mStarredCursor.close(); setHasOptionsMenu( true ); getView().setBackgroundColor( getResources().getColor( android.R.color.white ) ); getListView().setDivider( getResources().getDrawable( R.drawable.list_divider ) ); getListView().setDividerHeight( 1 ); getListView().setSelector( R.drawable.list_item_background ); getListView().setOnItemLongClickListener( mPlaylistLongClickListener ); //adapter.addView( mActivity.AdContainer, false ); getListView().addHeaderView( starredPlaylist, null, true ); setListAdapter( adapter ); getActivity().getContentResolver().registerContentObserver( MediaStore.Audio.Playlists.EXTERNAL_CONTENT_URI, true, mediaStoreChanged ); } @Override public void onResume() { super.onResume(); mActivity.setActionbarTitle( getString( R.string.playlists_plural ) ); mActivity.setActionbarSubtitle( null ); // Send a screen view. mTracker.send( new HitBuilders.AppViewBuilder().build() ); mTracker.send( new HitBuilders.EventBuilder() .setCategory( Categories.PLAYLIST ) .setAction( Playlist.ACTION_SHOWLIST ) .setValue( adapter.getCount() ) .build()); //mActivity.AdView.resume(); } @Override public void onPause() { super.onPause(); } @Override public void onDestroy() { super.onDestroy(); setHasOptionsMenu( false ); //getListView().removeHeaderView( mActivity.AdContainer ); getActivity().getContentResolver().unregisterContentObserver( mediaStoreChanged ); } @Override public void onDestroyView() { super.onDestroyView(); setListAdapter( null ); } @Override public void onCreateOptionsMenu( Menu menu, MenuInflater inflater ) { super.onCreateOptionsMenu(menu, inflater); inflater.inflate( R.menu.menu_playlists_all, menu ); } @Override public boolean onOptionsItemSelected( MenuItem item ) { super.onOptionsItemSelected(item); int id = item.getItemId(); if ( id == R.id.MenuPlaylistsAdd ) { FragmentTransaction ft = getActivity().getSupportFragmentManager().beginTransaction(); DialogFragment newFragment = new CreatePlaylistDialogFragment(); newFragment.show(ft, "dialog"); } return true; } @Override public void onListItemClick( ListView l, View v, int position, long id ) { String playlist_id = (String) v.getTag( R.id.tag_playlist_id ); PlaylistsOneFragment playlistFragment = new PlaylistsOneFragment(); playlistFragment.setMediaID( playlist_id ); mActivity.transactFragment( playlistFragment ); mTracker.send( new HitBuilders.EventBuilder() .setCategory( Categories.PLAYLIST ) .setAction( Playlist.ACTION_CLICK ) .setValue( position ) .build()); } protected AdapterView.OnItemLongClickListener mPlaylistLongClickListener = new AdapterView.OnItemLongClickListener() { @Override public boolean onItemLongClick( AdapterView<?> arg0, View v, int position, long id ) { // Subtract one from position because the starred playlist is seperate showPlaylistMenuDialog( "" + adapter.getItemId( position - 1 ) ); mTracker.send( new HitBuilders.EventBuilder() .setCategory( Categories.PLAYLIST ) .setAction( Playlist.ACTION_LONGCLICK ) .setValue( position ) .build()); return true; } }; public View.OnClickListener playlistMenuClickListener = new View.OnClickListener() { @Override public void onClick(View v) { //int id = v.getId(); ViewGroup list_item = ( ViewGroup ) v.getParent(); String playlist_id = ( String ) list_item.getTag( R.id.tag_playlist_id); showPlaylistMenuDialog( playlist_id ); } }; private void showPlaylistMenuDialog( String playlist_id ) { FragmentTransaction ft = getActivity().getSupportFragmentManager().beginTransaction(); PlaylistMenuDialogFragment newFragment = new PlaylistMenuDialogFragment(); newFragment.setMediaID( playlist_id ); newFragment.show( ft, "dialog" ); } // PlaylistBrowser interface methods @Override public void setMediaID(String media_id) { /* ... */ } @Override public String getMediaID() { return ""; } ContentObserver mediaStoreChanged = new ContentObserver( new Handler() ) { @Override public void onChange( boolean selfChange ) { mActivity.runOnUiThread( new Runnable() { @Override public void run() { saveScrollPosition(); adapter.requery(); } }); super.onChange( selfChange ); } }; }