package com.byagowi.persiancalendar.view.dialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatDialogFragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.AdapterView;
import android.widget.Spinner;
import android.widget.TextView;
import com.byagowi.persiancalendar.R;
import com.byagowi.persiancalendar.adapter.ShapedArrayAdapter;
import com.byagowi.persiancalendar.util.Utils;
import com.byagowi.persiancalendar.view.fragment.CalendarFragment;
import calendar.CivilDate;
import calendar.DateConverter;
import calendar.IslamicDate;
import calendar.PersianDate;
/**
* Created by ebrahim on 3/20/16.
*/
public class SelectDayDialog extends AppCompatDialogFragment {
private int startingYearOnYearSpinner = 0;
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
LayoutInflater inflater = getActivity().getLayoutInflater();
View view = inflater.inflate(R.layout.selectday_fragment, null);
final Utils utils = Utils.getInstance(getContext());
// fill members
final Spinner calendarTypeSpinner = (Spinner) view.findViewById(R.id.calendarTypeSpinner);
final Spinner yearSpinner = (Spinner) view.findViewById(R.id.yearSpinner);
final Spinner monthSpinner = (Spinner) view.findViewById(R.id.monthSpinner);
final Spinner daySpinner = (Spinner) view.findViewById(R.id.daySpinner);
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));
startingYearOnYearSpinner = utils.fillYearMonthDaySpinners(getContext(),
calendarTypeSpinner, yearSpinner, monthSpinner, daySpinner);
calendarTypeSpinner.setAdapter(new ShapedArrayAdapter<>(getContext(),
Utils.DROPDOWN_LAYOUT, getResources().getStringArray(R.array.calendar_type)));
calendarTypeSpinner.setSelection(0);
calendarTypeSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
startingYearOnYearSpinner = utils.fillYearMonthDaySpinners(getContext(),
calendarTypeSpinner, yearSpinner, monthSpinner, daySpinner);
}
@Override
public void onNothingSelected(AdapterView<?> adapterView) { }
});
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setView(view);
builder.setCustomTitle(null);
builder.setPositiveButton(R.string.select, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
int year = startingYearOnYearSpinner + yearSpinner.getSelectedItemPosition();
int month = monthSpinner.getSelectedItemPosition() + 1;
int day = daySpinner.getSelectedItemPosition() + 1;
CalendarFragment calendarFragment = (CalendarFragment) getActivity()
.getSupportFragmentManager()
.findFragmentByTag(CalendarFragment.class.getName());
try {
switch (utils.calendarTypeFromPosition(calendarTypeSpinner.getSelectedItemPosition())) {
case GREGORIAN:
calendarFragment.bringDate(DateConverter.civilToPersian(
new CivilDate(year, month, day)));
break;
case ISLAMIC:
calendarFragment.bringDate(DateConverter.islamicToPersian(
new IslamicDate(year, month, day)));
break;
case SHAMSI:
calendarFragment.bringDate(new PersianDate(year, month, day));
break;
}
} catch (RuntimeException e) {
utils.quickToast(getString(R.string.date_exception));
Log.e("SelectDayDialog", "", e);
}
}
});
return builder.create();
}
}