package net.sf.openrocket.android.motor;
import net.sf.openrocket.R;
import net.sf.openrocket.android.ActivityHelpers;
import net.sf.openrocket.android.PreferencesActivity;
import net.sf.openrocket.android.db.DbAdapter;
import net.sf.openrocket.android.util.AndroidLogWrapper;
import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentTransaction;
import android.view.View;
import com.actionbarsherlock.app.SherlockFragmentActivity;
import com.actionbarsherlock.view.Menu;
import com.actionbarsherlock.view.MenuInflater;
import com.actionbarsherlock.view.MenuItem;
public class MotorBrowserActivity extends SherlockFragmentActivity
implements MotorListFragment.OnMotorSelectedListener
{
MotorListFragment motorList;
private final static int DOWNLOAD_REQUEST_CODE = 1;
private final static String MOTOR_LIST_FRAGMENT = "motor_list";
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.motorbrowser);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setTitle(R.string.motorbrowsertitle);
// Only create the motorBrowser fragment if it doesn't already exist.
Fragment motorBrowser = getSupportFragmentManager().findFragmentByTag(MOTOR_LIST_FRAGMENT);
if ( motorBrowser == null ) {
getSupportFragmentManager()
.beginTransaction()
.add( R.id.motorBrowserList, new MotorListFragment(), MOTOR_LIST_FRAGMENT)
.commit();
}
}
@Override
protected void onStart() {
super.onStart();
int motorCount = 0;
DbAdapter mDbHelper = new DbAdapter(this);
mDbHelper.open();
try {
Cursor motorCounter = mDbHelper.getMotorDao().fetchAllMotors();
motorCount = motorCounter.getCount();
motorCounter.close();
} finally {
mDbHelper.close();
}
if ( motorCount == 0 ) {
ActivityHelpers.downloadFromThrustcurve(this,DOWNLOAD_REQUEST_CODE);
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getSupportMenuInflater();
inflater.inflate(R.menu.motor_browser_option_menu, menu);
return true;
}
@Override
public boolean onMenuItemSelected(int featureId, MenuItem item) {
AndroidLogWrapper.d(MotorBrowserActivity.class,"onMenuItemSelected" + item.getItemId());
switch(item.getItemId()) {
case android.R.id.home:
// we implement home in the motor browser as "back" since then it will return to
// either main or the viewer.
finish();
return true;
case R.id.download_from_thrustcurve_menu_option:
ActivityHelpers.downloadFromThrustcurve(this,DOWNLOAD_REQUEST_CODE);
return true;
case R.id.preference_menu_option:
Intent intent = new Intent().setClass(this, PreferencesActivity.class);
this.startActivity(intent);
return true;
case R.id.menu_about:
ActivityHelpers.showAbout(this);
return true;
}
return super.onMenuItemSelected(featureId, item);
}
@Override
protected void onActivityResult(int requestCode, int responseCode, Intent intent) {
if ( requestCode == DOWNLOAD_REQUEST_CODE ) {
MotorListFragment frag = (MotorListFragment) getSupportFragmentManager().findFragmentById(R.id.motorBrowserList);
frag.refreshData();
}
}
@Override
public void onMotorSelected(long motorId) {
View sidepane = findViewById(R.id.sidepane);
if ( /* if multi pane */ sidepane != null ) {
Fragment graph = BurnPlotFragment.newInstance(motorId);
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
ft.replace(R.id.sidepane, graph);
ft.show(graph);
ft.commit();
} else {
Intent i = new Intent(this,BurnPlotActivity.class);
i.putExtra("Motor", motorId);
startActivity(i);
}
}
}