package com.ushahidi.android.app.ui.tablet;
import android.content.Intent;
import android.content.res.Configuration;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.SpinnerAdapter;
import com.actionbarsherlock.app.ActionBar;
import com.actionbarsherlock.view.Menu;
import com.actionbarsherlock.view.MenuItem;
import com.ushahidi.android.app.Preferences;
import com.ushahidi.android.app.R;
import com.ushahidi.android.app.activities.BaseActivity;
import com.ushahidi.android.app.ui.phone.ReportMapActivity;
import com.ushahidi.android.app.ui.phone.ReportTabActivity;
public class DashboardActivity
extends BaseActivity<com.ushahidi.android.app.views.View> implements
ListMapFragmentListener,
ActionBar.OnNavigationListener {
private boolean detailsInline = false;
private SpinnerAdapter mSpinnerAdapter;
private ListMapFragment maps;
private static final int DIALOG_DISTANCE = 0;
private static final int DIALOG_CLEAR_DEPLOYMENT = 1;
private static final int DIALOG_ADD_DEPLOYMENT = 2;
public DashboardActivity() {
super(com.ushahidi.android.app.views.View.class, R.layout.dashboard_items, 0,
R.id.drawer_layout,
R.id.left_drawer);
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getSupportActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
Preferences.loadSettings(this);
mSpinnerAdapter = ArrayAdapter
.createFromResource(this, R.array.nav_list,
android.R.layout.simple_spinner_dropdown_item);
getSupportActionBar().setListNavigationCallbacks(mSpinnerAdapter, this);
getSupportActionBar().setDisplayShowTitleEnabled(false);
maps = (ListMapFragment) getSupportFragmentManager().findFragmentById(
R.id.list_map_fragment);
maps.setListMapListener(this);
// check if we have a frame to embed list fragment
Fragment f = getSupportFragmentManager().findFragmentById(
R.id.show_report_fragment);
detailsInline = (f != null && (getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE));
if (detailsInline) {
maps.enablePersistentSelection();
} else if (f != null) {
f.getView().setVisibility(View.GONE);
}
}
@Override
public void onMapSelected() {
if (detailsInline) {
((ListReportFragment) getSupportFragmentManager().findFragmentById(
R.id.show_report_fragment)).refreshReportLists();
} else {
Intent i = new Intent(this, ReportTabActivity.class);
startActivity(i);
overridePendingTransition(R.anim.home_enter, R.anim.home_exit);
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getSupportMenuInflater().inflate(R.menu.dashboard, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == R.id.menu_report_map) {
Intent launchIntent;
launchIntent = new Intent(this, ReportMapActivity.class);
startActivityZoomIn(launchIntent);
setResult(RESULT_OK);
return true;
}
return super.onOptionsItemSelected(item);
}
/*
* (non-Javadoc)
* @see android.support.v4.app.ActionBar.OnNavigationListener#
* onNavigationItemSelected(int, long)
*/
@Override
public boolean onNavigationItemSelected(int itemPosition, long itemId) {
// add map is selected
if (itemPosition == 1) {
maps.edit = false;
maps.createDialog(DIALOG_ADD_DEPLOYMENT);
return true;
} else if (itemPosition == 2) { // find map around me
maps.createDialog(DIALOG_DISTANCE);
return true;
} else if (itemPosition == 3) { // clear all map
maps.createDialog(DIALOG_CLEAR_DEPLOYMENT);
return true;
}
return false;
}
}