package org.ohmage.fragments;
import org.ohmage.ui.OhmageFilterable.CampaignSurveyFilter;
import org.ohmage.ui.OhmageFilterable.FilterableFragmentLoader;
import org.ohmage.ui.OhmageFilterable.TimeFilter;
import android.os.Bundle;
import android.support.v4.app.Fragment;
/**
* Fragments can extend the {@link FilterableFragment} if the want to easily be able to filter by campaign, survey, and month/year
* @author cketcham
*
*/
public abstract class FilterableFragment extends Fragment implements FilterableFragmentLoader {
CampaignSurveyFilter mCampaignSurveyFilter;
TimeFilter mTimeFilter;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mCampaignSurveyFilter = new CampaignSurveyFilter(getArguments());
mTimeFilter = new TimeFilter(getArguments());
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
getLoaderManager().initLoader(0, null, this);
}
@Override
public void setCampaignUrn(String campaignUrn) {
if (mCampaignSurveyFilter != null) {
mCampaignSurveyFilter.setCampaignUrn(campaignUrn);
getLoaderManager().restartLoader(0, null, this);
}
}
@Override
public String getCampaignUrn() {
return (mCampaignSurveyFilter != null) ? mCampaignSurveyFilter.getCampaignUrn() : null;
}
@Override
public void setSurveyId(String surveyId) {
if (mCampaignSurveyFilter != null) {
mCampaignSurveyFilter.setSurveyId(surveyId);
getLoaderManager().restartLoader(0, null, this);
}
}
@Override
public String getSurveyId() {
return (mCampaignSurveyFilter != null) ? mCampaignSurveyFilter.getSurveyId() : null;
}
@Override
public void setDate(int day, int month, int year) {
if (mTimeFilter != null) {
mTimeFilter.setDate(day, month, year);
getLoaderManager().restartLoader(0, null, this);
}
}
@Override
public void setMonth(int month, int year) {
if (mTimeFilter != null) {
mTimeFilter.setMonth(month, year);
getLoaderManager().restartLoader(0, null, this);
}
}
@Override
public long getStartBounds() {
return (mTimeFilter != null) ? mTimeFilter.getStartBounds() : 0;
}
@Override
public long getEndBounds() {
return (mTimeFilter != null) ? mTimeFilter.getEndBounds() : 0;
}
@Override
public int getMonth() {
return (mTimeFilter != null) ? mTimeFilter.getMonth() : 0;
}
@Override
public int getYear() {
return (mTimeFilter != null) ? mTimeFilter.getYear() : 0;
}
}