package com.ideabag.playtunes.fragment; import com.ideabag.playtunes.R; import com.ideabag.playtunes.activity.SettingsActivity; import com.ideabag.playtunes.adapter.AlbumsAllAdapter; import com.ideabag.playtunes.adapter.ArtistsAllAdapter; import com.ideabag.playtunes.adapter.GenresAllAdapter; import com.ideabag.playtunes.adapter.PlaylistsAllAdapter; import com.ideabag.playtunes.adapter.PlaylistsOneAdapter; import com.ideabag.playtunes.adapter.SongsAllAdapter; import com.ideabag.playtunes.database.MediaQuery; import com.ideabag.playtunes.fragment.search.SearchFragment; import com.ideabag.playtunes.util.QueryCountTask; import android.content.Intent; import android.database.ContentObserver; import android.graphics.PorterDuff.Mode; import android.os.Bundle; import android.os.Handler; import android.provider.MediaStore; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TextView; public class NavigationFragment extends BaseNavigationFragment implements View.OnClickListener { public static final String TAG = "NavigationFragment"; private TextView mBadgeSongsAll; private TextView mBadgeAlbumsAll; private TextView mBadgeArtistsAll; private TextView mBadgeGenresAll; private TextView mBadgePlaylistsAll; private TextView mBadgeStarredCount; MediaQuery mArtistsAllQuery; MediaQuery mGenresAllQuery; MediaQuery mPlaylistsAllQuery; MediaQuery mStarredCountQuery; MediaQuery mSongsAllQuery; MediaQuery mAlbumsAllQuery; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate( R.layout.fragment_navigation, container, false ); } @Override public void onActivityCreated( Bundle savedInstanceState ) { super.onActivityCreated( savedInstanceState ); mBadgeStarredCount = ( TextView ) getView().findViewById( R.id.BadgeStarredCount ); mBadgeSongsAll = ( TextView ) getView().findViewById( R.id.BadgeSongsAll ); mBadgeAlbumsAll = ( TextView ) getView().findViewById( R.id.BadgeAlbumsAll ); mBadgeArtistsAll = ( TextView ) getView().findViewById( R.id.BadgeArtistsAll ); mBadgeGenresAll = ( TextView ) getView().findViewById( R.id.BadgeGenresAll ); mBadgePlaylistsAll = ( TextView ) getView().findViewById( R.id.BadgePlaylistsAll ); mArtistsAllQuery = new MediaQuery( MediaStore.Audio.Artists.EXTERNAL_CONTENT_URI, ArtistsAllAdapter.SELECTION, null, null, MediaStore.Audio.Artists.DEFAULT_SORT_ORDER ); mGenresAllQuery = new MediaQuery( MediaStore.Audio.Genres.EXTERNAL_CONTENT_URI, GenresAllAdapter.SELECTION, null, null, MediaStore.Audio.Genres.DEFAULT_SORT_ORDER ); String mStarredId = mPlaylistManager.createStarredIfNotExist(); mPlaylistsAllQuery = new MediaQuery( MediaStore.Audio.Playlists.EXTERNAL_CONTENT_URI, PlaylistsAllAdapter.SELECTION, MediaStore.Audio.Playlists._ID + " !=?", new String[] { mStarredId }, null ); mStarredCountQuery = new MediaQuery( MediaStore.Audio.Playlists.Members.getContentUri( "external", Long.parseLong( mStarredId ) ), PlaylistsOneAdapter.SELECTION, MediaStore.Audio.Playlists.Members.PLAYLIST_ID + "=?", new String[] { mStarredId }, null ); mSongsAllQuery = new MediaQuery( MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, SongsAllAdapter.SELECTION, MediaStore.Audio.Media.IS_MUSIC + " != 0", null, null ); mAlbumsAllQuery = new MediaQuery(MediaStore.Audio.Albums.EXTERNAL_CONTENT_URI, AlbumsAllAdapter.SELECTION, MediaStore.Audio.Media.ALBUM + "!=?", new String[] { getString( R.string.no_album_string ) }, MediaStore.Audio.Albums.DEFAULT_SORT_ORDER ); getView().findViewById( R.id.NavigationArtistsAll ).setOnClickListener( this ); getView().findViewById( R.id.NavigationAlbumsAll ).setOnClickListener( this ); getView().findViewById( R.id.NavigationGenresAll ).setOnClickListener( this ); getView().findViewById( R.id.NavigationPlaylistsAll ).setOnClickListener( this ); getView().findViewById( R.id.NavigationSearch ).setOnClickListener( this ); getView().findViewById( R.id.NavigationStarred ).setOnClickListener( this ); getView().findViewById( R.id.NavigationSongsAll ).setOnClickListener( this ); View settingsButton = getView().findViewById( R.id.SettingsButton ); if ( null != settingsButton ) { settingsButton.setOnClickListener( this ); ImageView settingsIcon = ( ImageView ) getView().findViewById( R.id.SettingsIcon ); settingsIcon.getDrawable().mutate().setColorFilter( 0xFF999999, Mode.MULTIPLY ); } getActivity().getContentResolver().registerContentObserver( MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, true, mediaStoreChanged ); getActivity().getContentResolver().registerContentObserver( MediaStore.Audio.Playlists.Members.getContentUri( "external", Long.parseLong( mPlaylistManager.createStarredIfNotExist() ) ), true, mediaStoreChanged ); updateBadges(); } @Override public void onPause() { super.onPause(); } @Override public void onDestroy() { super.onDestroy(); getActivity().getContentResolver().unregisterContentObserver( mediaStoreChanged ); } @Override public void onClick( View v ) { int id = v.getId(); load( id ); } protected void load( int id ) { Fragment mNewFragment = null; switch ( id ) { case R.id.NavigationArtistsAll: mNewFragment = new ArtistsAllFragment(); break; case R.id.NavigationAlbumsAll: mNewFragment = new AlbumsAllFragment(); break; case R.id.NavigationGenresAll: mNewFragment = new GenresAllFragment(); break; case R.id.NavigationSongsAll: mNewFragment = new SongsFragment(); break; case R.id.NavigationStarred: mNewFragment = new PlaylistsOneFragment(); ((PlaylistsOneFragment)mNewFragment).setMediaID( mPlaylistManager.createStarredIfNotExist() ); break; case R.id.NavigationSearch: mNewFragment = new SearchFragment(); break; case R.id.SettingsButton: Intent launchSettingsIntent = new Intent( getActivity(), SettingsActivity.class); getActivity().startActivity( launchSettingsIntent ); break; default: mNewFragment = new PlaylistsAllFragment(); break; } if ( null != mNewFragment ) { transactFragment( mNewFragment ); } } ContentObserver mediaStoreChanged = new ContentObserver(new Handler()) { @Override public void onChange( boolean selfChange ) { mActivity.runOnUiThread( new Runnable() { @Override public void run() { //adapter.notifyDataSetChanged(); updateBadges(); } }); super.onChange( selfChange ); } }; public void updateBadges() { new QueryCountTask( mBadgeSongsAll ).execute( mSongsAllQuery ); new QueryCountTask( mBadgeArtistsAll ).execute( mArtistsAllQuery ); new QueryCountTask( mBadgeAlbumsAll ).execute( mAlbumsAllQuery ); new QueryCountTask( mBadgePlaylistsAll ).execute( mPlaylistsAllQuery ); new QueryCountTask( mBadgeSongsAll ).execute( mSongsAllQuery ); new QueryCountTask( mBadgeGenresAll ).execute( mGenresAllQuery ); new QueryCountTask( mBadgeStarredCount ).execute( mStarredCountQuery ); } }