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.view.View;
import android.widget.ListView;
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.search.SearchAlbumsAdapter;
import com.ideabag.playtunes.database.MediaQuery;
import com.ideabag.playtunes.fragment.AlbumsOneFragment;
import com.ideabag.playtunes.fragment.SaveScrollListFragment;
import com.ideabag.playtunes.util.ISearchableAdapter;
import com.ideabag.playtunes.util.TrackerSingleton;
import com.ideabag.playtunes.util.GAEvent.Categories;
import com.ideabag.playtunes.util.GAEvent.Playlist;
public class SearchAlbumsFragment extends SaveScrollListFragment implements ISearchableAdapter {
public static final String TAG = "Album Search Fragment";
private static final int SEARCH_RESULT_NO_LIMIT = -1;
private MainActivity mActivity;
private Tracker mTracker;
private SearchAlbumsAdapter adapter;
String mQuery;
public SearchAlbumsFragment() { /* ... */ }
public SearchAlbumsFragment( SearchAlbumsAdapter mAdapter ) {
adapter = mAdapter;
}
@Override public void onAttach( Activity activity ) {
super.onAttach( activity );
mActivity = ( MainActivity ) activity;
mTracker = TrackerSingleton.getDefaultTracker( mActivity );
mTracker.setScreenName( TAG );
}
@Override public void onActivityCreated( Bundle savedInstanceState ) {
super.onActivityCreated( savedInstanceState );
if ( null != savedInstanceState ) {
mQuery = savedInstanceState.getString( getString( R.string.key_state_query_string ) );
}
if ( null == adapter ) {
adapter = new SearchAlbumsAdapter( getActivity(), mQuery, SEARCH_RESULT_NO_LIMIT, queryCompleted );
} else {
adapter.setTruncateAmount( SEARCH_RESULT_NO_LIMIT );
adapter.setOnQueryCompletedListener( queryCompleted );
}
setListAdapter( adapter );
}
@Override public void onResume() {
super.onResume();
mTracker.send( new HitBuilders.AppViewBuilder().build() );
mTracker.send( new HitBuilders.EventBuilder()
.setCategory( Categories.PLAYLIST )
.setAction( Playlist.ACTION_SHOWLIST )
.setValue( adapter.getCount() )
.build());
}
@Override
public void setSearchTerms( String queryString ) {
mQuery = queryString;
if ( null != adapter ) {
adapter.setSearchTerms( mQuery );
}
}
@Override public void onListItemClick( ListView l, 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());
}
ContentObserver mediaStoreChanged = new ContentObserver(new Handler()) {
@Override public void onChange( boolean selfChange ) {
mActivity.runOnUiThread( new Runnable() {
@Override public void run() {
adapter.requery();
}
});
super.onChange( selfChange );
}
};
MediaQuery.OnQueryCompletedListener queryCompleted = new MediaQuery.OnQueryCompletedListener() {
@Override public void onQueryCompleted( MediaQuery mQuery, Cursor mResult ) {
}
};
}