package jm.org.data.area; import static jm.org.data.area.AreaConstants.CHILD_POSITION; import static jm.org.data.area.AreaConstants.COLLECTION_CHARTS; import static jm.org.data.area.AreaConstants.COUNTRY_CHARTS; import static jm.org.data.area.AreaConstants.GROUP_POSITION; import static jm.org.data.area.AreaConstants.SAVED_CHARTS; import static jm.org.data.area.AreaConstants.S_INDICATORS; import static jm.org.data.area.DBConstants.CHART_COUNTRIES; import static jm.org.data.area.DBConstants.CHART_DESC; import static jm.org.data.area.DBConstants.CHART_NAME; import static jm.org.data.area.DBConstants.I_GROUP; import static jm.org.data.area.DBConstants.I_ID; import static jm.org.data.area.DBConstants.I_POSITION; import static jm.org.data.area.DBConstants.SELECTION_ID; import static jm.org.data.area.DBConstants.SELECTION_NAME; import static jm.org.data.area.DBConstants.WB_INDICATOR_ID; import java.util.Arrays; import android.app.Activity; import android.app.ProgressDialog; import android.content.Intent; import android.database.Cursor; import android.os.Bundle; import android.support.v4.app.ListFragment; import android.support.v4.app.LoaderManager; import android.support.v4.content.Loader; import android.support.v4.widget.SimpleCursorAdapter; import android.text.Html; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ListView; import android.widget.TextView; import com.google.analytics.tracking.android.EasyTracker; import com.google.analytics.tracking.android.MapBuilder; public class ChartsListFragment extends ListFragment implements LoaderManager.LoaderCallbacks<Cursor> { public final String TAG = getClass().getSimpleName(); //private String indicator, country; private String country; //private IndicatorActivity act; private CountryActivity cAct; private CollectionsActivity colAct; private SavedDataActivity sAct; private Activity parent; //private SearchCursorAdapter mAdapter; private SimpleCursorAdapter tAdapter; private ProgressDialog dialog; private int searchType, collection, country_id; private String title_text, empty_text; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setHasOptionsMenu(true); try{ parent = getActivity(); if (parent instanceof CollectionsActivity){ colAct = (CollectionsActivity) getActivity(); dialog = new ProgressDialog(colAct); searchType = COLLECTION_CHARTS; collection = colAct.getCollection(); //title_text = "Collections Charts"; empty_text = getResources().getString(R.string.charts_empty);// "There are no saved Charts for Collection ID: " + collection; }else if (parent instanceof CountryActivity){ cAct = (CountryActivity) getActivity(); dialog = new ProgressDialog(cAct); searchType = COUNTRY_CHARTS; country = cAct.getCountry(); //title_text = "Country Charts"; empty_text = getResources().getString(R.string.charts_empty);// "Your Query returned no Charts for Country: " + country; }else if(parent instanceof SavedDataActivity){ sAct = (SavedDataActivity) getActivity(); dialog = new ProgressDialog(sAct); //indicator = null; searchType = SAVED_CHARTS; //title_text = "Saved Charts"; empty_text = getResources().getString(R.string.charts_empty);// "There are no Saved Charts "; }else{ Log.d(TAG,"We Have no clue what the starting activity is. Hmm, not sure what is happening"); } }catch (ClassCastException actException){ Log.e(TAG,"We Have no clue what the starting activity is"); } Log.e(TAG, "Creating Charts List Fragment"); } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); //setEmptyText(empty_text); dialog = ProgressDialog.show(getActivity(), "", "Loading Charts Data. Please wait...", true); Log.e(TAG, "Charts List Fragment dialog created"); String[] from = { CHART_NAME, CHART_DESC }; int[] to = { R.id.list_item_title, R.id.list_item_desc }; tAdapter = new SimpleCursorAdapter(getActivity(), R.layout.list_item_dual, null, from, to, 0); setListAdapter(tAdapter); getLoaderManager().initLoader(0, null, this); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { //return inflater.inflate(R.layout.chart_list, container, false); View view; view = inflater.inflate(R.layout.chart_list, container, false); //((TextView) view.findViewById(R.id.chartText)).setText(title_text); ((TextView) view.findViewById(android.R.id.empty)).setText(Html.fromHtml(empty_text)); return view; } /*@Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { MenuInflater menuInflater = getActivity().getMenuInflater(); menuInflater.inflate(R.menu.report_list, menu); super.onCreateOptionsMenu(menu, inflater); }*/ /*@Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.menu_reload: Toast.makeText(getActivity(), "Refreshing report list...", Toast.LENGTH_LONG).show(); dialog = ProgressDialog.show(getActivity(), "", "Loading Reports Data. Please wait...", true); reload(); break; default: return super.onOptionsItemSelected(item); } return super.onOptionsItemSelected(item); }*/ @Override public void onListItemClick(ListView l, View v, int position, long id) { super.onListItemClick(l, v, position, id); Cursor cursor = (Cursor) getListAdapter().getItem(position); //FROM_CHARTS = { CHART_ID, CHART_NAME, CHART_DESC, I_ID, CHART_COUNTRIES}; String item = cursor.getString(cursor.getColumnIndex(CHART_NAME)); int indicator = cursor.getInt(cursor.getColumnIndex(I_ID)); String wb_indicator = cursor.getString(cursor.getColumnIndex("wb_id")); String itemDesc = cursor.getString(cursor .getColumnIndex(CHART_DESC)); String countries = cursor.getString(cursor .getColumnIndex(CHART_COUNTRIES)); int group = cursor.getInt(cursor.getColumnIndex(I_GROUP)); int child = cursor.getInt(cursor.getColumnIndex(I_POSITION)); Log.d(TAG, "Chart selected is: " + item + " : " + itemDesc); // May return null if a EasyTracker has not yet been initialized with a // property ID. EasyTracker easyTracker = EasyTracker.getInstance(getActivity()); // MapBuilder.createEvent().build() returns a Map of event fields and // values // that are set and sent with the hit. easyTracker.send(MapBuilder.createEvent("ui_action", // Event category // (required) "Charts_List_Selction", // Event action (required) "chart selected is: " + item + " : " + itemDesc, // Event // label null) // Event value .build()); Log.i(TAG, String.format("Data Being Sent Over \nIndicator:%s \nCountries:%s", indicator, countries)); // Launch Report View Intent intent = new Intent(getActivity().getApplicationContext(), IndicatorActivity.class); intent.putExtra(WB_INDICATOR_ID, wb_indicator); intent.putExtra("ind_id", indicator); intent.putExtra(SELECTION_ID, S_INDICATORS); intent.putExtra(SELECTION_NAME, "Indicators"); intent.putExtra("countries", countries); intent.putExtra(GROUP_POSITION, group); intent.putExtra(CHILD_POSITION, child); // intent.putExtra(BING_URL, itemURL); if (dialog.isShowing()) { dialog.dismiss(); } startActivity(intent); this.getActivity().finish(); } @Override public Loader<Cursor> onCreateLoader(int arg0, Bundle arg1) { if(searchType == COLLECTION_CHARTS){ return new ChartListAdapter(getActivity(), searchType, collection); }else if(searchType == COUNTRY_CHARTS){ return new ChartListAdapter(getActivity(), searchType, country); }else{ return new ChartListAdapter(getActivity(), searchType, 0); } } @Override public void onLoadFinished(Loader<Cursor> arg0, Cursor cursor) { if (cursor != null) { Log.e(TAG, String.format( "Report list Cursor size: %d. Cursor columns: %s. Cursor column count: %d", cursor.getCount(), Arrays.toString(cursor.getColumnNames()), cursor.getCount())); tAdapter.swapCursor(cursor); // loadingAnimator.setDisplayedChild(0); if (isResumed()) { // setListShown(true); } else { // setListShownNoAnimation(true); } } if (dialog.isShowing()) { dialog.dismiss(); } } @Override public void onLoaderReset(Loader<Cursor> arg0) { tAdapter.swapCursor(null); } public void reload() { getLoaderManager().restartLoader(0, null, this); if (dialog.isShowing()) { dialog.dismiss(); } } }