package com.google.android.stardroid.activities.dialogs; import android.app.Activity; import android.app.AlertDialog; import android.app.Dialog; import android.content.DialogInterface; import android.os.Bundle; import android.text.Html; import android.text.Spanned; import android.view.LayoutInflater; import android.view.View; import android.widget.TextView; import com.google.android.stardroid.R; import com.google.android.stardroid.StardroidApplication; import com.google.android.stardroid.inject.HasComponent; import com.google.android.stardroid.util.MiscUtil; import javax.inject.Inject; /** * Created by johntaylor on 6/10/16. */ public class WhatsNewDialogFragment extends DialogFragment { private static final String TAG = MiscUtil.getTag(WhatsNewDialogFragment.class); @Inject Activity parentActivity; private CloseListener closeListener; public interface CloseListener { void dialogClosed(); } public void setCloseListener(CloseListener closeListener) { this.closeListener = closeListener; } public interface ActivityComponent { void inject(WhatsNewDialogFragment fragment); } @Override public Dialog onCreateDialog(Bundle savedInstanceState) { // Activities using this dialog MUST implement this interface. Obviously. ((HasComponent<ActivityComponent>) getActivity()).getComponent().inject(this); LayoutInflater inflater = parentActivity.getLayoutInflater(); View view = inflater.inflate(R.layout.whatsnew_view, null); String whatsNewText = String.format(parentActivity.getString(R.string.whats_new_text), getVersionName()); Spanned formattedWhatsNewText = Html.fromHtml(whatsNewText); TextView whatsNewTextView = (TextView) view.findViewById(R.id.whats_new_box_text); whatsNewTextView.setText(formattedWhatsNewText, TextView.BufferType.SPANNABLE); AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(parentActivity) .setTitle(getString(R.string.whats_new_dialog_title)) .setView(view) .setNegativeButton(R.string.dialog_ok_button, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { endItNow(dialog); } }); return dialogBuilder.create(); } private void endItNow(DialogInterface dialog) { if (closeListener != null) { closeListener.dialogClosed(); } dialog.dismiss(); } @Override public void onCancel(DialogInterface dialog) { endItNow(dialog); } private String getVersionName() { return ((StardroidApplication) parentActivity.getApplication()).getVersionName(); } }