package com.eyeem.theroll.fragment; import android.content.Context; import android.graphics.Typeface; import android.os.Bundle; import android.os.Handler; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.ScrollView; import android.widget.TextView; import com.actionbarsherlock.app.SherlockFragment; import com.eyeem.storage.Storage; import com.eyeem.theroll.GridActivity; import com.eyeem.theroll.R; import com.eyeem.theroll.storage.PhotoStorage; import com.eyeem.theroll.widgets.Cities; import com.eyeem.theroll.widgets.ColorPie; import com.eyeem.theroll.widgets.TimeOfADay; import com.slidingmenu.lib.app.SlidingFragmentActivity; import org.achartengine.model.SeriesSelection; /** * Created with IntelliJ IDEA. * User: vishna * Date: 3/17/13 * Time: 6:11 PM * To change this template use File | Settings | File Templates. */ public class MenuFragment extends SherlockFragment implements Storage.Subscription { ScrollView scrollView; LinearLayout ll; Handler handler; @Override public View onCreateView(LayoutInflater inflater, ViewGroup root, Bundle bundle) { handler = new Handler(); scrollView = new ScrollView(getSherlockActivity()); ll = new LinearLayout(getSherlockActivity()); ll.setOrientation(LinearLayout.VERTICAL); scrollView.addView(ll, -1, -1); scrollView.setBackgroundColor(getResources().getColor(R.color.bg)); return scrollView; } @Override public void onUpdate(Action action) { if (getSherlockActivity() == null) return; try { handler.post(new Runnable() { @Override public void run() { final Context ctx = getSherlockActivity(); ll.removeAllViews(); final TimeOfADay timeOfADay = new TimeOfADay(ctx); final Cities cities = new Cities(ctx); final ColorPie colorPie = new ColorPie(ctx); int h = getResources().getDimensionPixelSize(R.dimen.graph_height); int h8 = getResources().getDimensionPixelSize(R.dimen.paddin_menu); // 8dip int h4 = h8/2; spacing(ll, h8); ll.addView(prepareText("LATEST", 0xff2cddd4)); spacing(ll, h8); ImageView iv = new ImageView(getSherlockActivity()); iv.setImageResource(R.drawable.live); iv.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { GridActivity.setQuery(null); hideMe(); } }); ll.addView(iv, -2, -2); spacing(ll, h4); separator(ll); spacing(ll, h8); ll.addView(prepareText("AROUND YOU", 0xff2cddd4)); spacing(ll, h8); iv = new ImageView(getSherlockActivity()); iv.setImageResource(R.drawable.aroundyou); iv.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { PhotoStorage.CityQuery q = new PhotoStorage.CityQuery(); q.city = "Menlo Park"; GridActivity.setQuery(q); hideMe(); } }); ll.addView(iv, -2, -2); spacing(ll, h4); separator(ll); spacing(ll, h8); ll.addView(prepareText("TIME OF DAY", 0xff555555)); spacing(ll, h4); ll.addView(timeOfADay, -1, h); spacing(ll, h8); ll.addView(prepareText("CITIES", 0xff555555)); spacing(ll, h4); ll.addView(cities, -1, h); spacing(ll, h8); ll.addView(prepareText("COLORS", 0xff555555)); spacing(ll, h4); ll.addView(colorPie, -1, h); int p = (int) getSherlockActivity().getResources().getDimension(R.dimen.label_text_size); ll.setPadding(p, 0, p, 0); timeOfADay.setValues(PhotoStorage.daysStats); timeOfADay.repaint(); timeOfADay.invalidate(); timeOfADay.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { final SeriesSelection seriesSelection = timeOfADay.getCurrentSeriesAndPoint(); if (seriesSelection == null) { //Toast.makeText(Dashboard.this, "No chart element", Toast.LENGTH_SHORT).show(); } else { // display information of the clicked point PhotoStorage.TimeQuery q = new PhotoStorage.TimeQuery(); q.timeOfDay = new String[]{"Morning", "Afternoon", "Evening", "Night"}[(int) seriesSelection.getXValue() - 1]; GridActivity.setQuery(q); hideMe(); } } }); cities.setupValues(PhotoStorage.cityStats); cities.repaint(); cities.invalidate(); cities.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { try { final SeriesSelection seriesSelection = cities.getCurrentSeriesAndPoint(); if (seriesSelection == null) { //Toast.makeText(Dashboard.this, "No chart element", Toast.LENGTH_SHORT).show(); } else { // display information of the clicked point PhotoStorage.CityQuery q = new PhotoStorage.CityQuery(); q.city = cities.inOrder.get((int) seriesSelection.getXValue()); GridActivity.setQuery(q); hideMe(); } } catch (NullPointerException npe) { } } }); colorPie.setupValues(PhotoStorage.colorStats); colorPie.repaint(); colorPie.invalidate(); colorPie.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { try { SeriesSelection seriesSelection = colorPie.getCurrentSeriesAndPoint(); int index = seriesSelection.getPointIndex(); PhotoStorage.ColorQuery q = new PhotoStorage.ColorQuery(); q.color = colorPie.inOrder.get(index); GridActivity.setQuery(q); hideMe(); } catch (NullPointerException npe) { } } }); } }); } catch (NullPointerException npe) { } } private TextView prepareText(String text, int color) { TextView tv = new TextView(getSherlockActivity()); tv.setText(text); tv.setTypeface(Typeface.DEFAULT_BOLD); tv.setTextColor(color); //tv.setPadding((int)getSherlockActivity().getResources().getDimensionPixelSize(R.dimen.paddin_left_text), 0, 0, 0); return tv; } private void separator(LinearLayout ll) { View view = new View(getSherlockActivity()); view.setBackgroundColor(0xffc19c33); ll.addView(view, -1, 3); } @Override public void onResume() { super.onResume(); PhotoStorage.all.subscribe(this); onUpdate(null); } @Override public void onPause() { super.onPause(); PhotoStorage.all.unsubscribe(this); } public void hideMe() { ((SlidingFragmentActivity) getActivity()).getSlidingMenu().showAbove(); } public void spacing(LinearLayout ll, int size) { View view = new View(getSherlockActivity()); ll.addView(view, -1, -2); view.getLayoutParams().height = size; } }