package com.byagowi.persiancalendar.view.fragment; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.RelativeLayout; import android.widget.Spinner; import android.widget.TextView; import com.byagowi.persiancalendar.Constants; import com.byagowi.persiancalendar.R; import com.byagowi.persiancalendar.adapter.ShapedArrayAdapter; import com.byagowi.persiancalendar.util.Utils; import java.util.ArrayList; import java.util.List; import calendar.CivilDate; import calendar.DateConverter; import calendar.IslamicDate; import calendar.PersianDate; /** * Program activity for android * * @author ebraminio */ public class ConverterFragment extends Fragment implements AdapterView.OnItemSelectedListener, View.OnClickListener { private Utils utils; private Spinner calendarTypeSpinner; private Spinner yearSpinner; private Spinner monthSpinner; private Spinner daySpinner; private int startingYearOnYearSpinner = 0; private TextView date0; private TextView date1; private TextView date2; private RelativeLayout moreDate; @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_converter, container, false); utils = Utils.getInstance(getContext()); utils.setActivityTitleAndSubtitle(getActivity(), getString(R.string.date_converter), ""); // fill members calendarTypeSpinner = (Spinner) view.findViewById(R.id.calendarTypeSpinner); yearSpinner = (Spinner) view.findViewById(R.id.yearSpinner); monthSpinner = (Spinner) view.findViewById(R.id.monthSpinner); daySpinner = (Spinner) view.findViewById(R.id.daySpinner); date0 = (TextView) view.findViewById(R.id.date0); date1 = (TextView) view.findViewById(R.id.date1); date2 = (TextView) view.findViewById(R.id.date2); date0.setOnClickListener(this); date1.setOnClickListener(this); date2.setOnClickListener(this); moreDate = (RelativeLayout) view.findViewById(R.id.more_date); // Shape and set font utils.setFontAndShape((TextView) view.findViewById(R.id.converterLabelDay)); utils.setFontAndShape((TextView) view.findViewById(R.id.converterLabelMonth)); utils.setFontAndShape((TextView) view.findViewById(R.id.converterLabelYear)); utils.setFontAndShape((TextView) view.findViewById(R.id.calendarTypeTitle)); utils.setFont(date0); utils.setFont(date1); utils.setFont(date2); // // fill views calendarTypeSpinner.setAdapter(new ShapedArrayAdapter<>(getContext(), Utils.DROPDOWN_LAYOUT, getResources().getStringArray(R.array.calendar_type))); calendarTypeSpinner.setSelection(0); startingYearOnYearSpinner = utils.fillYearMonthDaySpinners(getContext(), calendarTypeSpinner, yearSpinner, monthSpinner, daySpinner); calendarTypeSpinner.setOnItemSelectedListener(this); yearSpinner.setOnItemSelectedListener(this); monthSpinner.setOnItemSelectedListener(this); daySpinner.setOnItemSelectedListener(this); // return view; } private void fillCalendarInfo() { int year = startingYearOnYearSpinner + yearSpinner.getSelectedItemPosition(); int month = monthSpinner.getSelectedItemPosition() + 1; int day = daySpinner.getSelectedItemPosition() + 1; CivilDate civilDate = null; PersianDate persianDate; IslamicDate islamicDate; StringBuilder sb = new StringBuilder(); try { moreDate.setVisibility(View.VISIBLE); List<String> calendarsTextList = new ArrayList<>(); switch (utils.calendarTypeFromPosition(calendarTypeSpinner.getSelectedItemPosition())) { case GREGORIAN: civilDate = new CivilDate(year, month, day); islamicDate = DateConverter.civilToIslamic(civilDate, 0); persianDate = DateConverter.civilToPersian(civilDate); calendarsTextList.add(utils.dateToString(civilDate)); calendarsTextList.add(utils.dateToString(persianDate)); calendarsTextList.add(utils.dateToString(islamicDate)); break; case ISLAMIC: islamicDate = new IslamicDate(year, month, day); civilDate = DateConverter.islamicToCivil(islamicDate); persianDate = DateConverter.islamicToPersian(islamicDate); calendarsTextList.add(utils.dateToString(islamicDate)); calendarsTextList.add(utils.dateToString(civilDate)); calendarsTextList.add(utils.dateToString(persianDate)); break; case SHAMSI: persianDate = new PersianDate(year, month, day); civilDate = DateConverter.persianToCivil(persianDate); islamicDate = DateConverter.persianToIslamic(persianDate); calendarsTextList.add(utils.dateToString(persianDate)); calendarsTextList.add(utils.dateToString(civilDate)); calendarsTextList.add(utils.dateToString(islamicDate)); break; } sb.append(utils.getWeekDayName(civilDate)); sb.append(Constants.PERSIAN_COMMA); sb.append(" "); sb.append(calendarsTextList.get(0)); date0.setText(utils.shape(sb.toString())); date1.setText(utils.shape(calendarsTextList.get(1))); date2.setText(utils.shape(calendarsTextList.get(2))); } catch (RuntimeException e) { moreDate.setVisibility(View.GONE); date0.setText(utils.shape(getString(R.string.date_exception))); } } @Override public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { switch (parent.getId()) { case R.id.yearSpinner: case R.id.monthSpinner: case R.id.daySpinner: fillCalendarInfo(); break; case R.id.calendarTypeSpinner: startingYearOnYearSpinner = utils.fillYearMonthDaySpinners(getContext(), calendarTypeSpinner, yearSpinner, monthSpinner, daySpinner); break; } } @Override public void onNothingSelected(AdapterView<?> parent) { } @Override public void onClick(View view) { utils.copyToClipboard(view); } }