Java tutorial
/* * 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.content.Intent; 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.Button; import android.widget.ImageView; import android.widget.TextView; import com.mikepenz.iconics.IconicsDrawable; import org.joda.time.LocalDate; import java.util.List; import es.usc.citius.servando.calendula.R; import es.usc.citius.servando.calendula.activities.SummaryCalendarActivity; 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.persistence.Schedule; import es.usc.citius.servando.calendula.persistence.ScheduleItem; import es.usc.citius.servando.calendula.scheduling.ScheduleUtils; import es.usc.citius.servando.calendula.util.ScheduleHelper; /** * A simple {@link android.support.v4.app.Fragment} subclass. */ public class ScheduleSummaryFragment extends Fragment { public static final String TAG = ScheduleSummaryFragment.class.getName(); public ScheduleSummaryFragment() { // Required empty public constructor } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.fragment_schedule_summary, container, false); } @Override public void setUserVisibleHint(boolean isVisibleToUser) { super.setUserVisibleHint(isVisibleToUser); if (isVisibleToUser) { // update summary info when this fragment becomes visible updateSummary(); } } IconicsDrawable iconFor(Presentation p) { return new IconicsDrawable(getContext()).icon(Presentation.iconFor(p)).colorRes(R.color.agenda_item_title) .sizeDp(60); } public void updateSummary() { int color = DB.patients().getActive(getActivity()).color(); Log.d(TAG, "updateSummary ScheduleSUmmaryFragment"); View rootView = getView(); Medicine med = ScheduleHelper.instance().getSelectedMed(); Schedule s = ScheduleHelper.instance().getSchedule(); List<ScheduleItem> items = ScheduleHelper.instance().getScheduleItems(); final TextView summaryTitle = (TextView) rootView.findViewById(R.id.summaryTitle); final TextView medNameTv = (TextView) rootView.findViewById(R.id.sched_summary_medname); final TextView medDaysTv = (TextView) rootView.findViewById(R.id.sched_summary_medi_days); final TextView medDailyFreqTv = (TextView) rootView.findViewById(R.id.sched_summary_medi_dailyfreq); final ImageView medIconImage = (ImageView) rootView.findViewById(R.id.sched_summary_medicon); final Button showCalendarButton = (Button) rootView.findViewById(R.id.button_show_calendar); if (med != null) { medNameTv.setText(med.name()); } medDaysTv.setText(s.toReadableString(getActivity())); medIconImage.setImageDrawable(iconFor(med != null ? med.presentation() : Presentation.PILLS)); if (s.type() != Schedule.SCHEDULE_TYPE_HOURLY) { String freq = ScheduleUtils.getTimesStr(items != null ? items.size() : 0, getActivity()); medDailyFreqTv.setText(freq); } else { String freq = ScheduleUtils.getTimesStr(24 / s.rule().interval(), getActivity()); medDailyFreqTv.setText(freq); } showCalendarButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Schedule s = ScheduleHelper.instance().getSchedule(); LocalDate start = s.start(); Intent i = new Intent(getActivity(), SummaryCalendarActivity.class); if (start != null) { i.putExtra("start", start.toString(SummaryCalendarActivity.START_DATE_FORMAT)); } if (s.type() == Schedule.SCHEDULE_TYPE_CYCLE) { i.putExtra("active_days", s.getCycleDays()); i.putExtra("rest_days", s.getCycleRest()); } else { i.putExtra("rule", s.rule().toIcal()); } startActivity(i); } }); summaryTitle.setTextColor(color); medNameTv.setTextColor(color); medDailyFreqTv.setTextColor(color); summaryTitle.setVisibility(View.VISIBLE); medNameTv.setVisibility(View.VISIBLE); medDailyFreqTv.setVisibility(View.VISIBLE); medIconImage.setVisibility(View.VISIBLE); } }