package me.guillaumin.android.osmtracker.activity; import me.guillaumin.android.osmtracker.OSMTracker; import me.guillaumin.android.osmtracker.R; import me.guillaumin.android.osmtracker.db.DatabaseHelper; import me.guillaumin.android.osmtracker.db.ExportDatabaseTask; import android.app.Activity; import android.app.AlertDialog; import android.app.Dialog; import android.app.ProgressDialog; import android.content.DialogInterface; import android.content.Intent; import android.content.pm.PackageInfo; import android.content.pm.PackageManager.NameNotFoundException; import android.os.Bundle; import android.os.Environment; import android.preference.PreferenceManager; import android.provider.Settings; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.TextView; import java.io.File; /** * Simply display the about screen. * * @author Nicolas Guillaumin * */ public class About extends Activity { public static final int DIALOG_EXPORT_DB = 0; public static final int DIALOG_EXPORT_DB_COMPLETED = 1; private ProgressDialog exportDbProgressDialog; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.about); // Retrieve app. version number try { PackageInfo pi = getPackageManager().getPackageInfo(getPackageName(), 0); ((TextView) findViewById(R.id.about_version)).setText(pi.versionName); } catch (NameNotFoundException nnfe) { // Should not occur } ((Button) findViewById(R.id.about_debug_info_button)).setOnClickListener( new OnClickListener() { @Override public void onClick(View v) { new AlertDialog.Builder(v.getContext()) .setTitle(R.string.about_debug_info) .setMessage(getDebugInfo()) .setCancelable(true) .setNeutralButton(android.R.string.ok, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } }) .create().show(); } } ); ((Button) findViewById(R.id.about_export_db_button)).setOnClickListener( new OnClickListener() { @Override public void onClick(View view) { showDialog(DIALOG_EXPORT_DB); File dbFile = getDatabasePath(DatabaseHelper.DB_NAME); File targetFolder = new File( Environment.getExternalStorageDirectory(), PreferenceManager.getDefaultSharedPreferences(About.this).getString( OSMTracker.Preferences.KEY_STORAGE_DIR, OSMTracker.Preferences.VAL_STORAGE_DIR)); new ExportDatabaseTask(About.this, targetFolder) .execute(dbFile); } } ); } @Override protected Dialog onCreateDialog(int id, Bundle args) { switch(id) { case DIALOG_EXPORT_DB: exportDbProgressDialog = new ProgressDialog(this); exportDbProgressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); exportDbProgressDialog.setIndeterminate(false); exportDbProgressDialog.setProgress(0); exportDbProgressDialog.setMax(100); exportDbProgressDialog.setCancelable(false); exportDbProgressDialog.setMessage(getResources().getString(R.string.about_exporting_db)); exportDbProgressDialog.show(); return exportDbProgressDialog; case DIALOG_EXPORT_DB_COMPLETED: new AlertDialog.Builder(this) .setTitle(R.string.about_export_db) .setIcon(android.R.drawable.ic_dialog_info) .setMessage(getString(R.string.about_export_db_result, args.getString("result"))) .setCancelable(true) .setNeutralButton(android.R.string.ok, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } }) .create() .show(); } return null; } public ProgressDialog getExportDbProgressDialog() { return exportDbProgressDialog; } private String getDebugInfo() { return "Environment.getExternalStorageDirectory: '" + Environment.getExternalStorageDirectory().getAbsolutePath() + "'\n" + "Environment.getExternalStorageState: '" + Environment.getExternalStorageState() + "'\n" + "Can write to external storage: " + Boolean.toString(Environment.getExternalStorageDirectory().canWrite()) + "\n" ; } }