/* * Calendula - An assistant for personal medication management. * Copyright (C) 2016 CITIUS - USC * * Calendula is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this software. If not, see <http://www.gnu.org/licenses/>. */ package es.usc.citius.servando.calendula.fragments; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.ImageView; import android.widget.ListView; import android.widget.TextView; import com.mikepenz.iconics.IconicsDrawable; import java.util.Collections; import java.util.List; import es.usc.citius.servando.calendula.R; import es.usc.citius.servando.calendula.activities.MedicinesActivity; import es.usc.citius.servando.calendula.activities.ScheduleCreationActivity; import es.usc.citius.servando.calendula.database.DB; import es.usc.citius.servando.calendula.persistence.Medicine; import es.usc.citius.servando.calendula.persistence.Presentation; import es.usc.citius.servando.calendula.util.ScheduleHelper; /** * Created by joseangel.pineiro on 12/2/13. */ public class SelectMedicineListFragment extends Fragment { List<Medicine> mMedicines; ArrayAdapter adapter; ListView listview; long selectedId = -1; ScheduleCreationActivity mActivity; int pColor; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView = inflater.inflate(R.layout.fragment_select_medicine_list, container, false); listview = (ListView) rootView.findViewById(R.id.medicines_list); pColor = DB.patients().getActive(getActivity()).color(); Medicine med = ScheduleHelper.instance().getSelectedMed(); if (med != null) selectedId = med.getId(); rootView.findViewById(R.id.add_medicine_button).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent i = new Intent(getActivity(), MedicinesActivity.class); i.putExtra("create", true); startActivity(i); } }); mMedicines = DB.medicines().findAllForActivePatient(getContext()); Collections.sort(mMedicines); adapter = new MedicinesListAdapter(getActivity(), R.layout.medicines_list_item, mMedicines); listview.setAdapter(adapter); return rootView; } private View createMedicineListItem(LayoutInflater inflater, final Medicine medicine) { final View item = inflater.inflate(R.layout.select_medicines_list_item, null); ((TextView) item.findViewById(R.id.medicines_list_item_name)).setText(medicine.name()); ImageView icon = (ImageView) item.findViewById(R.id.imageButton); icon.setImageDrawable(iconFor(medicine.presentation())); View overlay = item.findViewById(R.id.medicines_list_item_container); overlay.setTag(medicine); if (selectedId == medicine.getId()) { item.findViewById(R.id.selection_indicator).setVisibility(View.VISIBLE); item.findViewById(R.id.selection_mask).setVisibility(View.VISIBLE); item.findViewById(R.id.imageView2).setVisibility(View.VISIBLE); } else { item.findViewById(R.id.selection_indicator).setVisibility(View.INVISIBLE); item.findViewById(R.id.selection_mask).setVisibility(View.INVISIBLE); item.findViewById(R.id.imageView2).setVisibility(View.INVISIBLE); } View.OnClickListener clickListener = new View.OnClickListener() { @Override public void onClick(View view) { Medicine m = (Medicine) view.getTag(); selectedId = m.getId(); if (mActivity != null) { mActivity.onMedicineSelected(m, true); } adapter.notifyDataSetChanged(); } }; overlay.setOnClickListener(clickListener); return item; } IconicsDrawable iconFor(Presentation p){ return new IconicsDrawable(getContext()) .icon(Presentation.iconFor(p)) .colorRes(R.color.agenda_item_title) .paddingDp(5) .sizeDp(55); } @Override public void onAttach(Activity activity) { super.onAttach(activity); if (activity instanceof ScheduleCreationActivity) { mActivity = (ScheduleCreationActivity) activity; } } @Override public void onDetach() { mActivity = null; super.onDetach(); } public void setSelectedMed(Long id) { this.selectedId = id; Medicine m = Medicine.findById(id); if (m != null) { mMedicines.clear(); mMedicines.addAll(DB.medicines().findAllForActivePatient(getContext())); Collections.sort(mMedicines); mActivity.onMedicineSelected(m, false); adapter.notifyDataSetChanged(); } } private class MedicinesListAdapter extends ArrayAdapter<Medicine> { public MedicinesListAdapter(Context context, int layoutResourceId, List<Medicine> items) { super(context, layoutResourceId, items); } @Override public View getView(int position, View convertView, ViewGroup parent) { final LayoutInflater layoutInflater = getActivity().getLayoutInflater(); return createMedicineListItem(layoutInflater, mMedicines.get(position)); } } }