package com.ideabag.playtunes.fragment.search; import android.app.Activity; import android.database.ContentObserver; import android.database.Cursor; import android.os.Bundle; import android.os.Handler; import android.support.v4.app.FragmentTransaction; import android.view.View; import android.widget.ListView; import android.widget.ToggleButton; import com.ideabag.playtunes.R; import com.ideabag.playtunes.activity.MainActivity; import com.ideabag.playtunes.adapter.search.SearchSongsAdapter; import com.ideabag.playtunes.database.MediaQuery; import com.ideabag.playtunes.dialog.SongMenuDialogFragment; import com.ideabag.playtunes.fragment.SaveScrollListFragment; import com.ideabag.playtunes.fragment.SongsFragment; import com.ideabag.playtunes.util.ISearchableAdapter; public class SearchSongsFragment extends SaveScrollListFragment implements ISearchableAdapter { public static final String TAG = "SearchSongsFragment"; private static final int SEARCH_RESULT_NO_LIMIT = -1; private MainActivity mActivity; private SearchSongsAdapter adapter; String mQuery; public SearchSongsFragment() { } public SearchSongsFragment( SearchSongsAdapter mAdapter ) { adapter = mAdapter; } @Override public void onAttach( Activity activity ) { super.onAttach( activity ); mActivity = ( MainActivity ) activity; } @Override public void onActivityCreated( Bundle savedInstanceState ) { super.onActivityCreated( savedInstanceState ); if ( null != savedInstanceState ) { mQuery = savedInstanceState.getString( getString( R.string.key_state_query_string ) ); } if ( adapter == null ) { adapter = new SearchSongsAdapter( getActivity(), songMenuClickListener, mQuery, SEARCH_RESULT_NO_LIMIT, queryCompleted ); } else { adapter.setTruncateAmount( SEARCH_RESULT_NO_LIMIT ); adapter.setOnQueryCompletedListener( queryCompleted ); } setListAdapter( adapter ); } @Override public void setSearchTerms( String queryString ) { // TODO Auto-generated method stub mQuery = queryString; if ( null != adapter ) { adapter.setSearchTerms( mQuery ); } } @Override public void onListItemClick( ListView l, View v, int position, long id ) { String playlistName = ( String ) mActivity.getSupportActionBar().getTitle(); mActivity.mBoundService.setPlaylist( adapter.getQuery(), playlistName, SearchFragment.class, mQuery ); mActivity.mBoundService.setPlaylistPosition( position ); mActivity.mBoundService.play(); } View.OnClickListener songMenuClickListener = new View.OnClickListener() { @Override public void onClick( View v ) { int viewID = v.getId(); String songID = "" + v.getTag( R.id.tag_song_id ); if ( viewID == R.id.StarButton ) { ToggleButton starButton = ( ToggleButton ) v; if ( starButton.isChecked() ) { mActivity.PlaylistManager.addFavorite( songID ); //android.util.Log.i( "starred", songID ); } else { mActivity.PlaylistManager.removeFavorite( songID ); //android.util.Log.i( "unstarred", songID ); } } else if ( viewID == R.id.MenuButton ) { FragmentTransaction ft = getActivity().getSupportFragmentManager().beginTransaction(); SongMenuDialogFragment newFragment = new SongMenuDialogFragment(); newFragment.setMediaID( songID ); newFragment.show( ft, "dialog" ); } } }; ContentObserver mediaStoreChanged = new ContentObserver(new Handler()) { @Override public void onChange( boolean selfChange ) { mActivity.runOnUiThread( new Runnable() { @Override public void run() { adapter.notifyDataSetChanged(); } }); super.onChange( selfChange ); } }; MediaQuery.OnQueryCompletedListener queryCompleted = new MediaQuery.OnQueryCompletedListener() { @Override public void onQueryCompleted( MediaQuery mQuery, Cursor mResult ) { } }; }