package com.rapidftr.activity;
import android.media.MediaPlayer;
import android.media.MediaRecorder;
import android.os.Bundle;
import android.support.v4.view.ViewPager;
import android.view.View;
import android.widget.*;
import com.google.inject.Inject;
import com.rapidftr.R;
import com.rapidftr.adapter.FormSectionPagerAdapter;
import com.rapidftr.features.FeatureToggle;
import com.rapidftr.forms.FormSection;
import com.rapidftr.model.BaseModel;
import com.rapidftr.service.FormService;
import lombok.Getter;
import lombok.Setter;
import org.json.JSONException;
import java.io.IOException;
import java.util.List;
public abstract class CollectionActivity extends RapidFtrActivity {
@Getter
@Setter
MediaRecorder mediaRecorder;
@Getter
@Setter
MediaPlayer mediaPlayer;
protected FormService formService;
protected List<FormSection> formSections;
protected abstract BaseModel getModel();
protected abstract Boolean getEditable();
protected Spinner getSpinner() {
return ((Spinner) findViewById(R.id.spinner));
}
protected ViewPager getPager() {
return (ViewPager) findViewById(R.id.pager);
}
protected CollectionActivity() {
super();
}
protected void initializePager() {
getPager().setAdapter(new FormSectionPagerAdapter(formSections, getModel(), getEditable()));
getPager().setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
@Override
public void onPageSelected(int position) {
getSpinner().setSelection(position);
}
});
}
protected void initializeSpinner() {
getSpinner().setAdapter(new ArrayAdapter<FormSection>(this, android.R.layout.simple_spinner_item, formSections));
getSpinner().setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
getPager().setCurrentItem(position);
}
public void onNothingSelected(AdapterView<?> parent) {
}
});
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
try {
formService = inject(FormService.class);
initializeView();
try {
initializeData(savedInstanceState);
} catch (IOException e) {
e.printStackTrace();
}
initializePager();
initializeSpinner();
initializeLabels();
} catch (JSONException e) {
throw new RuntimeException(e);
}
}
protected void initializeLabels() throws JSONException {
}
;
protected abstract void initializeView();
protected abstract void initializeData(Bundle savedInstanceState) throws JSONException, IOException;
protected void setLabel(int label) {
((Button) findViewById(R.id.submit)).setText(label);
}
protected void setTitle(String title) {
((TextView) findViewById(R.id.title)).setText(title);
}
protected FormService getFormService() {
if (this.formService == null)
formService = inject(FormService.class);
return formService;
}
}