com.robwilliamson.healthyesther.fragment.dialog.AbstractDateTimePickerFragment.java Source code

Java tutorial

Introduction

Here is the source code for com.robwilliamson.healthyesther.fragment.dialog.AbstractDateTimePickerFragment.java

Source

/**
  *  Robert Williamson 2014-2016.
  * This program is distributed under the terms of the GNU General Public License.
  */
package com.robwilliamson.healthyesther.fragment.dialog;

import android.os.Bundle;

import com.robwilliamson.healthyesther.db.Utils;

import org.joda.time.DateTime;
import org.joda.time.DateTimeZone;

import java.util.TimeZone;

public abstract class AbstractDateTimePickerFragment extends FixedDialogFragment {
    private DateTimePickerListener mListener;
    private DateTime mDateTime;

    protected void restoreDialog(Bundle savedInstanceState) {
        if (savedInstanceState != null) {
            mDateTime = Utils.Time.unBundle(savedInstanceState, getClass().getCanonicalName());
        }
    }

    @Override
    public void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        Utils.Time.bundle(outState, getClass().getCanonicalName(), mDateTime);
    }

    public void show(android.support.v4.app.FragmentManager manager, DateTime initialTime) {
        setDateTime(initialTime);
        show(manager, getName());
    }

    protected DateTime getLocalDateTime() {
        return mDateTime;
    }

    public void setDateTime(DateTime dateTime) {
        mDateTime = dateTime.withZone(DateTimeZone.forTimeZone(TimeZone.getDefault()));
    }

    protected abstract String getName();

    protected DateTimePickerListener getListener() {
        return mListener;
    }

    public void setListener(DateTimePickerListener listener) {
        mListener = listener;
    }

    protected void callCallback() {
        getListener().onDateTimeChange(getLocalDateTime());
    }
}