package eu.robertboloc.holaurv.fragments; import org.joda.time.Period; import org.joda.time.format.PeriodFormatter; import org.joda.time.format.PeriodFormatterBuilder; 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.LinearLayout; import android.widget.TextView; import eu.robertboloc.holaurv.HoLaURV; import eu.robertboloc.holaurv.R; import eu.robertboloc.holaurv.activities.LoginActivity_; import eu.robertboloc.holaurv.helpers.Evalos; import eu.robertboloc.holaurv.models.Day; import eu.robertboloc.holaurv.models.Entry; public class DayObjectFragment extends Fragment { public static final String ARG_OBJECT = "object"; TextView mFirstEntry; TextView mFirstExit; TextView mSecondEntry; TextView mSecondExit; TextView mFirstAccumulate; TextView mSecondAccumulate; LinearLayout mDisplay; LayoutInflater mInflater; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { this.mInflater = inflater; View rootView = inflater.inflate(R.layout.fragment_collection_object, container, false); mDisplay = (LinearLayout) rootView.findViewById(R.id.display); Bundle args = getArguments(); // Obtain the application state HoLaURV appState = ((HoLaURV) getActivity().getApplicationContext()); Evalos eva = appState.getEva(); // In case the app was killed by the OS if (!(eva instanceof Evalos)) { Intent intent = new Intent(getActivity(), LoginActivity_.class); startActivity(intent); getActivity().finish(); } else { // If the day is greater than today, then just load the ad if (args.getInt(ARG_OBJECT) < Day.today()) { refresh(eva.getDay(args.getInt(ARG_OBJECT))); } } return rootView; } protected void refresh(Day day) { Period accumulate = null; // Period formatter instance PeriodFormatter HHMMSSFormater = new PeriodFormatterBuilder() .printZeroAlways().minimumPrintedDigits(2).appendHours() .appendSeparator("h").appendMinutes().appendLiteral("m") .toFormatter(); // First Entry if (day.getEntry(Entry.FIRST_ENTRY) != null) { mDisplay.addView(mInflater.inflate(R.layout.first_entry, mDisplay, false)); mFirstEntry = (TextView) mDisplay.findViewById(R.id.firstEntry); mFirstEntry.setText(day.getEntry(Entry.FIRST_ENTRY) .getDisplayHourAndMinute()); } // First Exit if (day.getEntry(Entry.FIRST_EXIT) != null) { mDisplay.addView(mInflater.inflate(R.layout.first_exit, mDisplay, false)); mFirstExit = (TextView) mDisplay.findViewById(R.id.firstExit); mFirstExit.setText(day.getEntry(Entry.FIRST_EXIT) .getDisplayHourAndMinute()); // Compute the first accumulated accumulate = day.getAccumulate(Entry.FIRST_ENTRY, Entry.FIRST_EXIT); mFirstAccumulate = (TextView) mDisplay .findViewById(R.id.firstAccumulated); mFirstAccumulate.setText(HHMMSSFormater.print(accumulate)); } // Second Entry if (day.getEntry(Entry.SECOND_ENTRY) != null) { mDisplay.addView(mInflater.inflate(R.layout.second_entry, mDisplay, false)); mSecondEntry = (TextView) mDisplay.findViewById(R.id.secondEntry); mSecondEntry.setText(day.getEntry(Entry.SECOND_ENTRY) .getDisplayHourAndMinute()); } // Second Exit if (day.getEntry(Entry.SECOND_EXIT) != null) { mDisplay.addView(mInflater.inflate(R.layout.second_exit, mDisplay, false)); mSecondExit = (TextView) mDisplay.findViewById(R.id.secondExit); mSecondExit.setText(day.getEntry(Entry.SECOND_EXIT) .getDisplayHourAndMinute()); Period secondAccumulate = day.getAccumulate(Entry.SECOND_ENTRY, Entry.SECOND_EXIT); accumulate = accumulate.plusHours(secondAccumulate.getHours()) .plusMinutes(secondAccumulate.getMinutes()).toPeriod() .normalizedStandard(); mSecondAccumulate = (TextView) mDisplay .findViewById(R.id.secondAccumulate); mSecondAccumulate.setText(HHMMSSFormater.print(accumulate)); } } }