package com.mozu.mozuandroidinstoreassistant.app.fragments; import android.app.Activity; import android.app.DialogFragment; import android.content.DialogInterface; import android.os.Bundle; import android.view.KeyEvent; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.ListView; import com.mozu.api.contracts.tenant.Site; import com.mozu.mozuandroidinstoreassistant.app.R; import com.mozu.mozuandroidinstoreassistant.app.adapters.SitesAdapter; import com.mozu.mozuandroidinstoreassistant.app.serialization.SiteListJsonConverter; import java.util.List; public class SiteFragment extends DialogFragment implements ListView.OnItemClickListener, DialogInterface.OnKeyListener { public static final String SITES_AS_JSON = "SITES_AS_JSON"; private SiteSelectionFragmentListener mListener; private ListView mListView; private List<Site> mSites; private SitesAdapter mAdapter; public SiteFragment() { /** * Mandatory empty constructor for the fragment manager to instantiate the * fragment (e.g. upon screen orientation changes). */ } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (savedInstanceState != null) { mSites = new SiteListJsonConverter().getSitesFromJson(savedInstanceState.getString(SITES_AS_JSON, "")); } } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_site_list, container, false); mAdapter = new SitesAdapter(getActivity()); mAdapter.addAll(mSites); mListView = (ListView) view.findViewById(R.id.site_list); mListView.setOnItemClickListener(this); mListView.setAdapter(mAdapter); getDialog().setTitle(getString(R.string.site_selection_dialog_title)); getDialog().setOnKeyListener(this); //this is monster hacky, but not sure how else to change the style of this one bar int divierId = getDialog().getContext().getResources().getIdentifier("android:id/titleDivider", null, null); View divider = getDialog().findViewById(divierId); divider.setBackgroundColor(getActivity().getResources().getColor(R.color.mozu_color)); return view; } @Override public void onAttach(Activity activity) { super.onAttach(activity); mListener = (SiteSelectionFragmentListener) activity; } @Override public void onDetach() { super.onDetach(); mListener = null; } @Override public void onSaveInstanceState(Bundle outState) { outState.putString(SITES_AS_JSON, new SiteListJsonConverter().getSitesJsonFromListOfSites(mSites)); super.onSaveInstanceState(outState); } @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { if (mListener != null) { mListener.siteWasChosen(mAdapter.getItem(position)); } } public void setSites(List<Site> sites) { mSites = sites; } @Override public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_UP && !event.isCanceled()) { //if tenant not chosen then exit out mListener.siteNotChosenButExited(); return true; } return false; } }