package co.smartreceipts.android.date; import android.app.Dialog; import android.content.Context; import android.view.View; import android.view.View.OnClickListener; import android.view.WindowManager; import java.sql.Date; import javax.inject.Inject; import co.smartreceipts.android.di.scopes.ApplicationScope; import co.smartreceipts.android.settings.UserPreferenceManager; import co.smartreceipts.android.settings.catalog.UserPreference; @ApplicationScope public class DateManager { @Inject UserPreferenceManager mPreferences; private Date mDate; private DateEditTextListener mDateEditTextListener; private MyCalendarDialog.Listener mListener; @Inject public DateManager() { } public final void setCachedDate(Date date) { mDate = date; } public final Date getCachedDate(Date date) { return mDate; } private final void initCalendar(DateEditText edit, Dialog dialog) { Context activityContext = edit.getContext(); MyCalendarDialog calendar = new MyCalendarDialog(activityContext, this); calendar.set(edit.date); calendar.setEditText(edit); calendar.buildDialog(activityContext).show(); calendar.setListener(mListener); if (dialog != null) { dialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN); } } private final void initDurationCalendar(DateEditText start, DateEditText end) { Context activityContext = start.getContext(); MyCalendarDialog calendar = new MyCalendarDialog(activityContext, this); calendar.set(start.date); calendar.setEditText(start); calendar.setEnd(end, mPreferences.get(UserPreference.General.DefaultReportDuration)); calendar.buildDialog(activityContext).show(); } public OnClickListener getDateEditTextListener() { mDateEditTextListener = new DateEditTextListener(this); mListener = null; return mDateEditTextListener; } public OnClickListener getDateEditTextListener(MyCalendarDialog.Listener listener) { mDateEditTextListener = new DateEditTextListener(this); mListener = listener; return mDateEditTextListener; } public void setDateEditTextListenerDialogHolder(Dialog dialogHolder) { if (mDateEditTextListener != null) mDateEditTextListener.setDialogHolder(dialogHolder); } public OnClickListener getDurationDateEditTextListener(DateEditText end) { DurationDateEditTextListener durationDateListener = new DurationDateEditTextListener(this); durationDateListener.setEnd(end); return durationDateListener; } //Private Listener Classes private final class DateEditTextListener implements OnClickListener { private final DateManager mHolder; private Dialog mDialogHolder; public DateEditTextListener(DateManager holder) { mHolder = holder; } public final void setDialogHolder(Dialog dialogHolder) { mDialogHolder = dialogHolder; } @Override public final void onClick(final View v) { mHolder.initCalendar((DateEditText)v, mDialogHolder); } } private final class DurationDateEditTextListener implements OnClickListener { private final DateManager mHolder; private DateEditText mEnd; public DurationDateEditTextListener(DateManager holder) { mHolder = holder; } public final void setEnd(DateEditText end) { mEnd = end; } @Override public final void onClick(final View v) { mHolder.initDurationCalendar((DateEditText)v, mEnd); } } }