package org.ohmage.activity;
import org.ohmage.ConfigHelper;
import org.ohmage.R;
import org.ohmage.db.DbContract.Surveys;
import org.ohmage.fragments.SurveyListFragment;
import org.ohmage.fragments.SurveyListFragment.OnSurveyActionListener;
import org.ohmage.ui.CampaignFilterActivity;
import org.ohmage.ui.OhmageFilterable.CampaignFilterable;
import org.ohmage.ui.TabsAdapter;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.Intent;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.support.v4.view.ViewPager;
import android.widget.TabHost;
import android.widget.Toast;
public class SurveyListActivity extends CampaignFilterActivity implements OnSurveyActionListener {
static final String TAG = "SurveyListActivity";
public static final String EXTRA_SHOW_PENDING = "extra_show_pending";
private static final int DIALOG_ERROR_ID = 0;
TabHost mTabHost;
ViewPager mViewPager;
TabsAdapter mTabsAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.survey_list_layout);
if(ConfigHelper.isSingleCampaignMode())
setActionBarShadowVisibility(false);
mTabHost = (TabHost)findViewById(android.R.id.tabhost);
mTabHost.setup();
mViewPager = (ViewPager)findViewById(R.id.pager);
mTabsAdapter = new TabsAdapter(this, mTabHost, mViewPager);
Bundle args = intentToFragmentArguments(getIntent());
args.putBoolean(SurveyListFragment.KEY_PENDING, false);
mTabsAdapter.addTab(getString(R.string.surveys_all), SurveyListFragment.class, args);
args = intentToFragmentArguments(getIntent());
args.putBoolean(SurveyListFragment.KEY_PENDING, true);
mTabsAdapter.addTab(getString(R.string.surveys_pending), SurveyListFragment.class, args);
boolean showPending = getIntent().getBooleanExtra(EXTRA_SHOW_PENDING, false);
if (savedInstanceState != null) {
mTabHost.setCurrentTabByTag(savedInstanceState.getString("tab"));
} else {
mTabHost.setCurrentTab(showPending ? 1 : 0);
}
}
@Override
protected void onCampaignFilterChanged(String filter) {
super.onCampaignFilterChanged(filter);
for(int i=0;i<mTabsAdapter.getCount();i++)
((CampaignFilterable) mTabsAdapter.getItem(i)).setCampaignUrn(filter);
}
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putString("tab", mTabHost.getCurrentTabTag());
}
@Override
public void onSurveyActionView(Uri surveyUri) {
Intent i = new Intent(this, SurveyInfoActivity.class);
i.setData(surveyUri);
startActivity(i);
}
@Override
public void onSurveyActionStart(Uri surveyUri) {
Cursor cursor = getContentResolver().query(surveyUri, null, null, null, null);
if (cursor.moveToFirst()) {
Intent intent = new Intent(this, SurveyActivity.class);
intent.putExtra("campaign_urn", cursor.getString(cursor.getColumnIndex(Surveys.CAMPAIGN_URN)));
intent.putExtra("survey_id", cursor.getString(cursor.getColumnIndex(Surveys.SURVEY_ID)));
intent.putExtra("survey_title", cursor.getString(cursor.getColumnIndex(Surveys.SURVEY_TITLE)));
intent.putExtra("survey_submit_text", cursor.getString(cursor.getColumnIndex(Surveys.SURVEY_SUBMIT_TEXT)));
startActivity(intent);
} else {
Toast.makeText(this, R.string.survey_list_invalid_survey, Toast.LENGTH_SHORT).show();
}
cursor.close();
}
@Override
public void onSurveyActionUnavailable(Uri surveyUri) {
Toast.makeText(this, R.string.survey_list_must_trigger, Toast.LENGTH_SHORT).show();
}
@Override
public void onSurveyActionError(Uri surveyUri, int status) {
showDialog(DIALOG_ERROR_ID);
}
/* (non-Javadoc)
* @see android.app.Activity#onCreateDialog(int, android.os.Bundle)
*/
@Override
protected Dialog onCreateDialog(final int id, Bundle args) {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
switch (id) {
case DIALOG_ERROR_ID:
builder.setMessage(R.string.survey_list_campaign_error);
break;
}
builder.setCancelable(true).setNegativeButton(R.string.ok, null);
return builder.create();
}
}