package org.kvj.bravo7; import java.io.File; import org.kvj.bravo7.ControllerConnector.ControllerReceiver; import android.annotation.TargetApi; import android.app.Activity; import android.app.AlertDialog; import android.app.ProgressDialog; import android.content.Context; import android.content.DialogInterface; import android.os.Build; import android.os.Bundle; import android.os.Environment; import android.widget.Toast; public class SuperActivity<A extends ApplicationContext, T, S extends SuperService<T, A>> extends Activity implements ControllerReceiver<T> { Class<S> serviceClass = null; public SuperActivity(Class<S> serviceClass) { this.serviceClass = serviceClass; } private static final String TAG = "SuperActivity"; protected T controller = null; ControllerConnector<A, T, S> connector = new ControllerConnector<A, T, S>(this, this); public void onController(T controller) { this.controller = controller; } @Override protected void onStart() { super.onStart(); connector.connectController(serviceClass); } @Override protected void onStop() { super.onStop(); connector.disconnectController(); } public static void notifyUser(Context context, String message) { Toast.makeText(context, message, Toast.LENGTH_SHORT).show(); } public void notifyUser(String message) { Toast.makeText(this, message, Toast.LENGTH_SHORT).show(); } @TargetApi(Build.VERSION_CODES.FROYO) public static File getExternalCacheFolder(Context context) { File dir = null; if (android.os.Build.VERSION.SDK_INT >= 8) { dir = context.getExternalCacheDir(); } else { dir = Environment.getExternalStorageDirectory(); if (null != dir) { dir = new File(dir, "Android/data/" + context.getPackageName() + "/cache/"); } } if (null != dir) { if (!dir.exists()) { if (!dir.mkdirs()) { dir = context.getCacheDir(); } } } return dir; } public static Bundle getData(Activity activity, Bundle inData) { if (null != inData) { // Have data - restore state return inData; } else { // Don't have - new run or from Intent if (activity.getIntent() != null && activity.getIntent().getExtras() != null) { // Have data in Intent return activity.getIntent().getExtras(); } } return new Bundle(); } public static void showQuestionDialog(Context context, String title, String message, final Runnable... buttons) { new AlertDialog.Builder(context).setIcon(android.R.drawable.ic_dialog_alert).setTitle(title) .setMessage(message).setPositiveButton("OK", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { if (buttons.length > 0) { // Have handler buttons[0].run(); } } }).setNegativeButton("Cancel", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { if (buttons.length > 1) { // Have handler buttons[1].run(); } } }).show(); } protected ProgressDialog showProgressDialog(String message) { return showProgressDialog(this, message); } public static ProgressDialog showProgressDialog(Context ctx, String message) { final ProgressDialog progressDialog = new ProgressDialog(ctx); progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); progressDialog.setMessage(message); progressDialog.setCancelable(false); progressDialog.setIndeterminate(true); progressDialog.show(); return progressDialog; } }