--- /dev/null
+package org.openintents.filemanager;
+
+import org.openintents.util.VersionUtils;
+
+import android.app.AlertDialog;
+import android.app.Dialog;
+import android.content.ActivityNotFoundException;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.content.Intent;
+import android.net.Uri;
+import android.os.Bundle;
+import android.view.Menu;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.AdapterView;
+import android.widget.AdapterView.OnItemClickListener;
+import android.widget.ArrayAdapter;
+import android.widget.ListView;
+import android.widget.TextView;
+import android.widget.Toast;
+
+public class InfoActivity extends DistributionLibraryListActivity implements OnItemClickListener {
+
+ // Override the following variables in init()
+ protected int[] mApplications = {};
+ protected String[] mPackageNames = {};
+ protected int[] mMinVersionCodes = {};
+ protected String[] mMinVersionName = {};
+ protected int[] mInfoText = {};
+ protected String[] mDeveloperUris = {};
+ protected String[] mIntentAction = {};
+ protected String[] mIntentData = {};
+
+ //
+
+ private static final int MENU_DISTRIBUTION_START = Menu.FIRST + 100; // MUST BE LAST
+
+ public static final int DIALOG_INFO = 0;
+ public static final int DIALOG_GET_FROM_MARKET = 100;
+ private static final int DIALOG_DISTRIBUTION_START = 200; // MUST BE LAST
+
+
+ private String[] mApplicationStrings;
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ mDistribution.setFirst(MENU_DISTRIBUTION_START, DIALOG_DISTRIBUTION_START);
+
+ // Check whether EULA has been accepted
+ // or information about new version can be presented.
+ if (mDistribution.showEulaOrNewVersion()) {
+ return;
+ }
+
+ setContentView(R.layout.oi_distribution_infoactivity);
+
+ init();
+
+ mApplicationStrings = new String[mApplications.length];
+ for (int i = 0; i < mApplications.length; i++) {
+ mApplicationStrings[i] = getString(mApplications[i]);
+ }
+ setListAdapter(new FontArrayAdapter<String>(this,
+ android.R.layout.simple_list_item_1, mApplicationStrings));
+ ListView listview = getListView();
+
+ listview.setOnItemClickListener(this);
+
+ // Set message of activity
+ String appname = VersionUtils.getApplicationName(this);
+ String message = getString(R.string.oi_distribution_info_activity_text,
+ appname);
+ TextView tv = (TextView) findViewById(R.id.text);
+ tv.setText(message);
+
+ /*
+ TypedArray a = obtainStyledAttributes(mTheme, R.styleable.ShoppingList);
+ String typefaceName = a.getString(R.styleable.ShoppingList_textTypeface);
+ mTextSizeMedium = a.getDimensionPixelOffset(R.styleable.ShoppingList_textSizeMedium, 23);
+ mTextSizeLarge = a.getDimensionPixelOffset(R.styleable.ShoppingList_textSizeLarge, 28);
+ mTextColor = a.getColor(R.styleable.ShoppingList_textColor, Color.BLACK);
+ Drawable background = a.getDrawable(R.styleable.ShoppingList_background);
+
+
+ View v = findViewById(R.id.background);
+ v.setBackgroundDrawable(background);
+
+ mTypeface = Typeface.createFromAsset(getResources().getAssets(), typefaceName);
+
+ TextView tv = (TextView) findViewById(R.id.text);
+ tv.setTypeface(mTypeface);
+ tv.setTextSize(mTextSizeMedium);
+ tv.setTextColor(mTextColor);
+ */
+ }
+
+ public void init() {
+
+ }
+
+ public void onItemClick(AdapterView<?> parent, View view, int pos, long id) {
+ if (VersionUtils.isPackageAvailable(this, mPackageNames[pos], mMinVersionCodes[pos])) {
+ showDialog(DIALOG_INFO + pos);
+ } else {
+ showDialog(DIALOG_GET_FROM_MARKET + pos);
+ }
+ }
+
+ private class FontArrayAdapter<T> extends ArrayAdapter<T> {
+
+ public FontArrayAdapter(Context context, int textViewResourceId,
+ T[] objects) {
+ super(context, textViewResourceId, objects);
+ }
+
+ @Override
+ public View getView(int position, View convertView, ViewGroup parent) {
+ // TODO Auto-generated method stub
+ TextView tv = (TextView) super.getView(position, convertView, parent);
+ /*
+ tv.setTypeface(mTypeface);
+ tv.setTextSize(mTextSizeLarge);
+ tv.setTextColor(mTextColor);
+ */
+ return tv;
+ }
+ }
+
+
+ @Override
+ protected Dialog onCreateDialog(int id) {
+ Dialog dialog = super.onCreateDialog(id);
+
+ if (dialog != null) {
+ return dialog;
+ }
+
+ if (id >= DIALOG_INFO && id < DIALOG_GET_FROM_MARKET) {
+ dialog = buildInfoDialog(id - DIALOG_INFO);
+ } else if (id >= DIALOG_GET_FROM_MARKET && id < DIALOG_DISTRIBUTION_START){
+ dialog = buildGetFromMarketDialog(id - DIALOG_GET_FROM_MARKET);
+ }
+ /*if (dialog == null) {
+ dialog = super.onCreateDialog(id);
+ }*/
+ return dialog;
+ }
+
+ @Override
+ protected void onPrepareDialog(int id, Dialog dialog) {
+ super.onPrepareDialog(id, dialog);
+ if (id >= DIALOG_INFO && id < DIALOG_GET_FROM_MARKET) {
+ dialog.findViewById(android.R.id.button1).setVisibility(View.GONE);
+ } else if (id >= DIALOG_GET_FROM_MARKET && id < DIALOG_DISTRIBUTION_START){
+ DownloadAppDialog.onPrepareDialog(this, dialog);
+ }
+
+ }
+
+ private AlertDialog buildInfoDialog(final int pos) {
+ String infotext = getString(mInfoText[pos], mApplicationStrings[pos]);
+ String infolaunch = getString(R.string.oi_distribution_info_launch, mApplicationStrings[pos]);
+
+ // Trick for Android 2.3:
+ // To achieve the visual trick of extending the button over the whole width,
+ // we first set a positive button, and then set its visibility to GONE in
+ // onPrepareDialog().
+
+ return new AlertDialog.Builder(this)
+ .setIcon(android.R.drawable.ic_dialog_info)
+ .setTitle(R.string.oi_distribution_info_instructions)
+ .setMessage(infotext)
+ .setPositiveButton("", null)
+ .setNegativeButton(infolaunch,
+ new DialogInterface.OnClickListener() {
+ public void onClick(DialogInterface dialog,
+ int whichButton) {
+ // click Ok
+ launchApplication(pos);
+ }
+ })
+ .create();
+ }
+
+ void launchApplication(int pos) {
+ Intent intent = new Intent();
+ intent.setAction(mIntentAction[pos]);
+ if (mIntentAction[pos].equals(Intent.ACTION_MAIN)) {
+ // Exception for ACTION_MAIN:
+ // Use data as class name.
+ if (mPackageNames[pos] != null && mIntentData[pos] != null) {
+ intent.setClassName(mPackageNames[pos], mIntentData[pos]);
+ }
+ } else {
+ if (mIntentData[pos] != null) {
+ intent.setData(Uri.parse(mIntentData[pos]));
+ }
+ }
+
+ try {
+ startActivity(intent);
+ } catch (ActivityNotFoundException e) {
+
+ Toast.makeText(this,
+ R.string.oi_distribution_launch_error,
+ Toast.LENGTH_SHORT).show();
+ }
+ }
+
+ private AlertDialog buildGetFromMarketDialog(int pos) {
+ String this_appname = VersionUtils.getApplicationName(this);
+ String info_not_available = getString(R.string.oi_distribution_info_not_available,
+ this_appname, mApplicationStrings[pos], mMinVersionName[pos]);
+ String download_appname = getString(mApplications[pos]);
+
+ return new DownloadAppDialog(this,
+ info_not_available,
+ download_appname,
+ mPackageNames[pos],
+ mDeveloperUris[pos]);
+ }
+}