package com.kuxhausen.huemore.editmood;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.GridView;
import com.kuxhausen.huemore.R;
import com.kuxhausen.huemore.state.BulbState;
import com.kuxhausen.huemore.state.BulbState.Effect;
import java.util.ArrayList;
public class SampleStatesFragment extends Fragment implements
EditStateDialogFragment.StateSelector,
OnClickListener {
private BulbState mInitialState;
private GridView mGrid;
private StateCellAdapter mCellAdapter;
private int mLastSelectedPosition = -1;
private EditStateDialogFragment mStatePager;
private ArrayList<StateCell> mList;
@Override
public void initialize(EditStateDialogFragment statePage, BulbState initialState) {
mStatePager = statePage;
loadPresets();
mInitialState = initialState;
}
private void loadPresets() {
mList = new ArrayList<StateCell>();
String[] simpleNames =
{"Reading", "Relax", "Concentrate", "Energize", "Deep Sea1", "Deep Sea2", "Fruit1",
"Fruit2", "Fruit3"};
float[] simpleX =
{0.4571f, 0.5119f, 0.368f, 0.3151f, 0.1859f, 0.6367f, 0.5089f, 0.5651f, 0.4081f};
float[] simpleY =
{0.4123f, 0.4147f, 0.3686f, 0.3252f, 0.0771f, 0.3349f, 0.438f, 0.3306f, 0.518f};
for (int i = 0; i < simpleX.length; i++) {
BulbState hs = new BulbState();
float[] conversionXY = {simpleX[i], simpleY[i]};
hs.setXY(conversionXY);
hs.setOn(true);
hs.setEffect(Effect.NONE);
hs.setTransitionTime(BulbState.TRANSITION_TIME_DEFAULT);
StateCell mr = new StateCell(mStatePager.getActivity());
mr.hs = hs;
mr.name = simpleNames[i];
mList.add(mr);
}
{
BulbState hs = new BulbState();
hs.setOn(true);
hs.setEffect(Effect.NONE);
StateCell mr = new StateCell(mStatePager.getActivity());
mr.hs = hs;
mr.name = mStatePager.getActivity().getResources().getString(R.string.cap_on);
mList.add(mr);
}
{
BulbState hs = new BulbState();
hs.setOn(false);
hs.setEffect(Effect.NONE);
StateCell mr = new StateCell(mStatePager.getActivity());
mr.hs = hs;
mr.name = mStatePager.getActivity().getResources().getString(R.string.cap_off);
mList.add(mr);
}
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
View myView = inflater.inflate(R.layout.grid_view, null);
mGrid = (GridView) myView.findViewById(R.id.myGrid);
mCellAdapter = new StateCellAdapter(this, mList, this);
mGrid.setAdapter(mCellAdapter);
stateChanged(mInitialState);
return myView;
}
@Override
public void onClick(View v) {
if (mLastSelectedPosition > -1) {
mList.get(mLastSelectedPosition).selected = false;
}
mLastSelectedPosition = (Integer) v.getTag();
mList.get(mLastSelectedPosition).selected = true;
mCellAdapter.notifyDataSetChanged();
mStatePager
.setStateIfVisible(mList.get(mLastSelectedPosition).hs, this, EditStatePager.SAMPLE_PAGE);
}
@Override
public BulbState getState() {
if (mLastSelectedPosition > -1) {
return mList.get(mLastSelectedPosition).hs;
} else {
return new BulbState();
}
}
@Override
public void stateChanged(BulbState newState) {
int newSelectedPosition = -1;
for (int i = 0; i < mList.size(); i++) {
if (mList.get(i).hs.equals(newState)) {
newSelectedPosition = i;
mList.get(i).selected = true;
} else {
mList.get(i).selected = false;
}
}
if (mLastSelectedPosition != newSelectedPosition) {
mLastSelectedPosition = newSelectedPosition;
if (mCellAdapter != null) {
mCellAdapter.notifyDataSetChanged();
}
}
}
}