package treehou.se.habit.ui.control.config.cells; import android.graphics.PorterDuff; import android.os.Bundle; import android.support.v4.app.Fragment; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.Spinner; import java.util.ArrayList; import java.util.List; import se.treehou.ng.ohcommunicator.connector.models.OHItem; import se.treehou.ng.ohcommunicator.connector.models.OHServer; import se.treehou.ng.ohcommunicator.services.Connector; import se.treehou.ng.ohcommunicator.services.IServerHandler; import se.treehou.ng.ohcommunicator.services.callbacks.OHCallback; import se.treehou.ng.ohcommunicator.services.callbacks.OHResponse; import treehou.se.habit.R; import treehou.se.habit.core.db.model.controller.CellDB; import treehou.se.habit.core.db.model.controller.ColorCellDB; import treehou.se.habit.ui.adapter.IconAdapter; public class CellColorConfigFragment extends Fragment { private static final String TAG = "CellColorConfigFragment"; private static String ARG_CELL_ID = "ARG_CELL_ID"; private CellDB cell; private ColorCellDB colorCell; private Spinner sprItems; private ArrayAdapter<OHItem> mItemAdapter ; private ArrayList<OHItem> mItems = new ArrayList<>(); public static CellColorConfigFragment newInstance(CellDB cell) { CellColorConfigFragment fragment = new CellColorConfigFragment(); Bundle args = new Bundle(); args.putLong(ARG_CELL_ID, cell.getId()); fragment.setArguments(args); return fragment; } public CellColorConfigFragment() { // Required empty public constructor } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mItemAdapter = new ArrayAdapter<>(getActivity(), android.R.layout.simple_spinner_dropdown_item, mItems); /*if (getArguments() != null) { int id = getArguments().getInt(ARG_CELL_ID); cell = CellDB.load(id); colorCell = ColorCellDB.getCell(cell); if(colorCell == null){ colorCell = new ColorCellDB(); colorCell.setCell(cell); ColorCellDB.save(colorCell); } }*/ } private List<OHItem> filterItems(List<OHItem> items){ List<OHItem> tempItems = new ArrayList<>(); for(OHItem item : items){ if(item.getType().equals(OHItem.TYPE_COLOR) || item.getType().equals(OHItem.TYPE_GROUP)){ tempItems.add(item); } } items.clear(); items.addAll(tempItems); return items; } @Override public void onPause() { super.onPause(); Log.d(TAG, "onPause"); //ColorCellDB.save(colorCell); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView = inflater.inflate(R.layout.fragment_cell_color_config, container, false); rootView.getBackground().setColorFilter(cell.getColor(), PorterDuff.Mode.MULTIPLY); sprItems = (Spinner) rootView.findViewById(R.id.spr_items); sprItems.setAdapter(mItemAdapter); List<OHServer> servers = null; // TODO OHServer.loadAll(); mItems.clear(); for(final OHServer server : servers) { OHCallback<List<OHItem>> callback = new OHCallback<List<OHItem>>() { @Override public void onUpdate(OHResponse<List<OHItem>> response) { List<OHItem> items = filterItems(response.body()); mItems.addAll(items); mItemAdapter.notifyDataSetChanged(); int position = mItems.indexOf(colorCell.getItem()); if(position != -1){ sprItems.setSelection(position); } } @Override public void onError() { } }; IServerHandler serverHandler = new Connector.ServerHandler(server, getContext()); serverHandler.requestItem(callback); } sprItems.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { OHItem item = (OHItem) sprItems.getItemAtPosition(position); // TODO item.save(); // colorCell.setItem(item.getDB()); //ColorCellDB.save(colorCell); } @Override public void onNothingSelected(AdapterView<?> parent) { } }); final Spinner sprIcons = (Spinner) rootView.findViewById(R.id.spr_icons); IconAdapter iconAdapter = new IconAdapter(getActivity()); /*sprIcons.setAdapter(iconAdapter); sprIcons.setSelection(iconAdapter.getIndexOf(icon)); sprIcons.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { IIcon icon = (IIcon)sprIcons.getItemAtPosition(position); colorCell.setIcon(icon.getName()); colorCell.save(); } @Override public void onNothingSelected(AdapterView<?> parent) { } });*/ return rootView; } }