package org.ohmage.activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import org.ohmage.ConfigHelper;
import org.ohmage.R;
import org.ohmage.UserPreferencesHelper;
import org.ohmage.async.CampaignReadLoaderCallbacks;
import org.ohmage.logprobe.Analytics;
import org.ohmage.ui.BaseActivity;
public class DashboardActivity extends BaseActivity {
private static final String TAG = "DashboardActivity";
private Button mCampaignBtn;
private Button mSurveysBtn;
private Button mFeedbackBtn;
private Button mUploadQueueBtn;
private Button mProfileBtn;
private Button mHelpBtn;
private Button mMobilityBtn;
private CampaignReadLoaderCallbacks mCampaignReadLoader;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.dashboard_layout);
getActionBarControl().setShowLogo(true);
// gather up all the buttons and tie them to the dashboard button listener
// you'll specify what the buttons do in DashboardButtonListener rather than here
mCampaignBtn = (Button) findViewById(R.id.dash_campaigns_btn);
mSurveysBtn = (Button) findViewById(R.id.dash_surveys_btn);
mFeedbackBtn = (Button) findViewById(R.id.dash_feedback_btn);
mUploadQueueBtn = (Button) findViewById(R.id.dash_uploadqueue_btn);
mProfileBtn = (Button) findViewById(R.id.dash_profile_btn);
mHelpBtn = (Button) findViewById(R.id.dash_help_btn);
mMobilityBtn = (Button) findViewById(R.id.dash_mobility_btn);
DashboardButtonListener buttonListener = new DashboardButtonListener();
mCampaignBtn.setOnClickListener(buttonListener);
mSurveysBtn.setOnClickListener(buttonListener);
mFeedbackBtn.setOnClickListener(buttonListener);
mUploadQueueBtn.setOnClickListener(buttonListener);
mProfileBtn.setOnClickListener(buttonListener);
mHelpBtn.setOnClickListener(buttonListener);
mMobilityBtn.setOnClickListener(buttonListener);
mCampaignReadLoader = new CampaignReadLoaderCallbacks(this);
mCampaignReadLoader.onCreate();
}
private void ensureUI() {
if(ConfigHelper.isSingleCampaignMode()) {
mCampaignBtn.setVisibility(View.GONE);
} else {
mCampaignBtn.setVisibility(View.VISIBLE);
}
UserPreferencesHelper userPrefs = new UserPreferencesHelper(this);
if(userPrefs.showProfile())
mProfileBtn.setVisibility(View.VISIBLE);
else
mProfileBtn.setVisibility(View.GONE);
if(userPrefs.showFeedback())
mFeedbackBtn.setVisibility(View.VISIBLE);
else
mFeedbackBtn.setVisibility(View.GONE);
if(userPrefs.showUploadQueue())
mUploadQueueBtn.setVisibility(View.VISIBLE);
else
mUploadQueueBtn.setVisibility(View.GONE);
if(userPrefs.showMobility())
mMobilityBtn.setVisibility(View.VISIBLE);
else
mMobilityBtn.setVisibility(View.GONE);
}
@Override
protected void onResume(){
super.onResume();
mCampaignReadLoader.onResume();
//This is to prevent users from clicking an icon multiple times when there is delay on Dashboard somehow.
enableAllButtons();
ensureUI();
}
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
mCampaignReadLoader.onSaveInstanceState(outState);
}
@Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
mCampaignReadLoader.onRestoreInstanceState(savedInstanceState);
}
private void enableAllButtons(){
mCampaignBtn.setClickable(true);
mSurveysBtn.setClickable(true);
mFeedbackBtn.setClickable(true);
mUploadQueueBtn.setClickable(true);
mProfileBtn.setClickable(true);
mHelpBtn.setClickable(true);
mMobilityBtn.setClickable(true);
}
private void disableAllButtons(){
mCampaignBtn.setClickable(false);
mSurveysBtn.setClickable(false);
mFeedbackBtn.setClickable(false);
mUploadQueueBtn.setClickable(false);
mProfileBtn.setClickable(false);
mHelpBtn.setClickable(false);
mMobilityBtn.setClickable(false);
}
protected class DashboardButtonListener implements OnClickListener {
@Override
public void onClick(View v) {
Analytics.widget(v);
Context c = v.getContext();
disableAllButtons();
switch (v.getId()) {
case R.id.dash_campaigns_btn:
startActivity(new Intent(c, CampaignListActivity.class));
break;
case R.id.dash_surveys_btn:
startActivity(new Intent(c, SurveyListActivity.class));
break;
case R.id.dash_feedback_btn:
startActivity(new Intent(DashboardActivity.this, ResponseHistoryActivity.class));
break;
case R.id.dash_uploadqueue_btn:
startActivity(new Intent(c, UploadQueueActivity.class));
break;
case R.id.dash_profile_btn:
// startActivity(new Intent(c, StatusActivity.class));
startActivity(new Intent(c, ProfileActivity.class));
break;
case R.id.dash_help_btn:
startActivity(new Intent(c, HelpActivity.class));
break;
case R.id.dash_mobility_btn:
startActivity(new Intent(c, MobilityActivity.class));
break;
}
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu){
super.onCreateOptionsMenu(menu);
menu.add(0,1,0,R.string.menu_settings);
menu.findItem(1).setIcon(android.R.drawable.ic_menu_preferences);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item){
switch (item.getItemId()){
case 1:
startActivity(new Intent(this, OhmagePreferenceActivity.class));
return true;
}
return false;
}
}