package fr.tvbarthel.apps.simplethermometer.dialogfragments; import android.app.AlertDialog; import android.app.Dialog; import android.content.Context; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.support.v4.app.DialogFragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.ImageView; import android.widget.ListView; import android.widget.RelativeLayout; import android.widget.TextView; import java.util.ArrayList; import java.util.List; import fr.tvbarthel.apps.simplethermometer.R; import fr.tvbarthel.apps.simplethermometer.models.App; /** * A simple {@link android.support.v4.app.DialogFragment} used to promote our other applications. */ public class MoreAppsDialogFragment extends DialogFragment { private static final String URI_ROOT_MARKET = "market://details?id="; private static final String URI_ROOT_PLAY_STORE = "http://play.google.com/store/apps/details?id="; @Override public Dialog onCreateDialog(Bundle savedInstanceState) { final LayoutInflater inflater = getActivity().getLayoutInflater(); final ListView listView = (ListView) inflater.inflate(R.layout.dialog_more_apps, null); final AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(getActivity()); dialogBuilder.setPositiveButton(android.R.string.ok, null); dialogBuilder.setTitle(R.string.dialog_more_apps_title); dialogBuilder.setView(listView); dialogBuilder.setInverseBackgroundForced(true); App chaseWhisply = new App(); chaseWhisply.setLogoResourceId(R.drawable.ic_chase_whisply); chaseWhisply.setNameResourceId(R.string.dialog_more_apps_chase_whisply_app_name); chaseWhisply.setPackageNameResourceId(R.string.dialog_more_apps_chase_whisply_package_name); App googlyZoo = new App(); googlyZoo.setLogoResourceId(R.drawable.ic_googly_zoo); googlyZoo.setNameResourceId(R.string.dialog_more_apps_googly_zoo_app_name); googlyZoo.setPackageNameResourceId(R.string.dialog_more_apps_googly_zoo_package_name); App simpleWeatherForecast = new App(); simpleWeatherForecast.setLogoResourceId(R.drawable.ic_simple_weather_forecast); simpleWeatherForecast.setNameResourceId(R.string.dialog_more_apps_simple_weather_forecast_app_name); simpleWeatherForecast.setPackageNameResourceId(R.string.dialog_more_apps_simple_weather_forecast_package_name); final ArrayList<App> apps = new ArrayList<App>(); apps.add(chaseWhisply); apps.add(googlyZoo); apps.add(simpleWeatherForecast); listView.setAdapter(new MoreAppsAdapter(getActivity(), apps)); listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { App appClicked = apps.get(position); launchPlayStoreDetails(getResources().getString(appClicked.getPackageNameResourceId())); } }); return dialogBuilder.create(); } private void launchPlayStoreDetails(String appPackageName) { try { startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(URI_ROOT_MARKET + appPackageName))); } catch (android.content.ActivityNotFoundException activityNotFoundException) { startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(URI_ROOT_PLAY_STORE + appPackageName))); } } /** * A simple {@link android.widget.ArrayAdapter} used to adapt {@link fr.tvbarthel.apps.simplethermometer.models.App}. */ private static class MoreAppsAdapter extends ArrayAdapter<App> { public MoreAppsAdapter(Context context, List<App> apps) { super(context, R.layout.row_more_apps, apps); } @Override public View getView(int position, View convertView, ViewGroup parent) { RelativeLayout appView = (RelativeLayout) convertView; App app = getItem(position); if (appView == null) { LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); appView = (RelativeLayout) inflater.inflate(R.layout.row_more_apps, parent, false); ViewHolder holder = new ViewHolder(); holder.appName = (TextView) appView.findViewById(R.id.row_more_apps_name); holder.appLogo = (ImageView) appView.findViewById(R.id.row_more_apps_logo); appView.setTag(holder); } ViewHolder holder = (ViewHolder) appView.getTag(); holder.appName.setText(app.getNameResourceId()); holder.appLogo.setImageResource(app.getLogoResourceId()); return appView; } private static class ViewHolder { TextView appName; ImageView appLogo; } } }