From c905e2f9331f6c7b53bd301ac3ce12d62182cc97 Mon Sep 17 00:00:00 2001 From: Jay Wang Date: Tue, 13 Sep 2016 17:07:14 -0700 Subject: SnapdragonGallery: Check for dialog before creating new one Check to see if dialog fragment already exists before creating new one. If exists, show that one. Use positive button instead of neutral button for OK. CRs-Fixed: 1062659 Change-Id: I963cc91888217f00e9aceb820962ecc4f043a693 --- .../category/TruePortraitMaskEditorPanel.java | 25 +++++++++--- .../editors/EditorTruePortraitFusion.java | 44 ++++++++++++++++------ .../gallery3d/filtershow/ui/AlertMsgDialog.java | 2 +- .../filtershow/ui/DoNotShowAgainDialog.java | 9 ++++- 4 files changed, 62 insertions(+), 18 deletions(-) (limited to 'src') diff --git a/src/com/android/gallery3d/filtershow/category/TruePortraitMaskEditorPanel.java b/src/com/android/gallery3d/filtershow/category/TruePortraitMaskEditorPanel.java index 03935edc0..4390b90a7 100644 --- a/src/com/android/gallery3d/filtershow/category/TruePortraitMaskEditorPanel.java +++ b/src/com/android/gallery3d/filtershow/category/TruePortraitMaskEditorPanel.java @@ -33,6 +33,8 @@ package com.android.gallery3d.filtershow.category; import android.content.Context; import android.os.Bundle; import android.support.v4.app.Fragment; +import android.support.v4.app.FragmentManager; +import android.support.v4.app.FragmentTransaction; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -69,11 +71,24 @@ public class TruePortraitMaskEditorPanel extends Fragment { boolean skipIntro = GalleryUtils.getBooleanPref(context, context.getString(R.string.pref_trueportrait_edit_intro_show_key), false); if(!skipIntro) { - DoNotShowAgainDialog dialog = new DoNotShowAgainDialog( - R.string.trueportrait_touch_up, R.string.trueportrait_edit_intro, - R.string.pref_trueportrait_edit_intro_show_key); - dialog.setCancelable(false); - dialog.show(getFragmentManager(), "trueportrait_edit_intro"); + FragmentManager fm = getFragmentManager(); + DoNotShowAgainDialog dialog = + (DoNotShowAgainDialog) fm.findFragmentByTag("trueportrait_edit_intro"); + if(dialog == null) { + dialog = new DoNotShowAgainDialog( + R.string.trueportrait_touch_up, R.string.trueportrait_edit_intro, + R.string.pref_trueportrait_edit_intro_show_key); + dialog.setCancelable(false); + dialog.show(fm, "trueportrait_edit_intro"); + } else if (dialog.isDetached()) { + FragmentTransaction ft = fm.beginTransaction(); + ft.attach(dialog); + ft.commit(); + } else if (dialog.isHidden()) { + FragmentTransaction ft = fm.beginTransaction(); + ft.show(dialog); + ft.commit(); + } } } diff --git a/src/com/android/gallery3d/filtershow/editors/EditorTruePortraitFusion.java b/src/com/android/gallery3d/filtershow/editors/EditorTruePortraitFusion.java index cfeea1375..da6118c63 100644 --- a/src/com/android/gallery3d/filtershow/editors/EditorTruePortraitFusion.java +++ b/src/com/android/gallery3d/filtershow/editors/EditorTruePortraitFusion.java @@ -37,6 +37,7 @@ import android.content.Context; import android.content.DialogInterface; import android.net.Uri; import android.support.v4.app.FragmentManager; +import android.support.v4.app.FragmentTransaction; import android.view.LayoutInflater; import android.view.Menu; import android.view.View; @@ -46,6 +47,7 @@ import android.widget.FrameLayout; import android.widget.LinearLayout; import org.codeaurora.gallery.R; + import com.android.gallery3d.filtershow.FilterShowActivity; import com.android.gallery3d.filtershow.filters.FilterRepresentation; import com.android.gallery3d.filtershow.filters.FilterTruePortraitFusionRepresentation; @@ -171,18 +173,38 @@ public class EditorTruePortraitFusion extends Editor { boolean skipIntro = GalleryUtils.getBooleanPref(mContext, mContext.getString(R.string.pref_trueportrait_fusion_intro_show_key), false); if(!skipIntro) { - DoNotShowAgainDialog dialog = new DoNotShowAgainDialog( - R.string.fusion_pick_background, R.string.trueportrait_fusion_intro, - R.string.pref_trueportrait_fusion_intro_show_key) { - @Override - public void onDismiss(DialogInterface dialog) { - super.onDismiss(dialog); - MasterImage.getImage().getActivity().pickImage(FilterShowActivity.SELECT_FUSION_UNDERLAY); - } - }; FragmentManager fm = ((FilterShowActivity)mContext).getSupportFragmentManager(); - dialog.setCancelable(false); - dialog.show(fm, "trueportrait_fusion_intro"); + DoNotShowAgainDialog dialog = + (DoNotShowAgainDialog) fm.findFragmentByTag("trueportrait_fusion_intro"); + if(dialog == null) { + dialog = new DoNotShowAgainDialog( + R.string.fusion_pick_background, R.string.trueportrait_fusion_intro, + R.string.pref_trueportrait_fusion_intro_show_key) { + @Override + public void onCancel(DialogInterface dialog) { + super.onCancel(dialog); + FilterShowActivity activity = (FilterShowActivity) mContext; + activity.cancelCurrentFilter(); + activity.leaveSeekBarPanel(); + } + }; + dialog.setOnOkButtonClickListener(new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int id) { + MasterImage.getImage().getActivity().pickImage(FilterShowActivity.SELECT_FUSION_UNDERLAY); + } + }); + dialog.setCancelable(true); + dialog.show(fm, "trueportrait_fusion_intro"); + } else if (dialog.isDetached()) { + FragmentTransaction ft = fm.beginTransaction(); + ft.attach(dialog); + ft.commit(); + } else if (dialog.isHidden()) { + FragmentTransaction ft = fm.beginTransaction(); + ft.show(dialog); + ft.commit(); + } } } } diff --git a/src/com/android/gallery3d/filtershow/ui/AlertMsgDialog.java b/src/com/android/gallery3d/filtershow/ui/AlertMsgDialog.java index 2041eb2ce..252e32ca7 100644 --- a/src/com/android/gallery3d/filtershow/ui/AlertMsgDialog.java +++ b/src/com/android/gallery3d/filtershow/ui/AlertMsgDialog.java @@ -51,7 +51,7 @@ public class AlertMsgDialog extends DialogFragment { ab.setTitle(mTitleId); ab.setMessage(mMessageId); ab.setCancelable(false); - ab.setNeutralButton(R.string.ok, null); + ab.setPositiveButton(R.string.ok, null); return ab.create(); } } diff --git a/src/com/android/gallery3d/filtershow/ui/DoNotShowAgainDialog.java b/src/com/android/gallery3d/filtershow/ui/DoNotShowAgainDialog.java index aad403bd1..e9245d540 100644 --- a/src/com/android/gallery3d/filtershow/ui/DoNotShowAgainDialog.java +++ b/src/com/android/gallery3d/filtershow/ui/DoNotShowAgainDialog.java @@ -48,11 +48,13 @@ public class DoNotShowAgainDialog extends DialogFragment { private int mTitleId; private int mMessageId; private CheckBox mDoNotShowAgainChk; + private DialogInterface.OnClickListener mButtonClickListener; public DoNotShowAgainDialog(int titleId, int msgId, int sharedPrefKeyId) { mTitleId = titleId; mMessageId = msgId; mSharedPrefKeyId = sharedPrefKeyId; + mButtonClickListener = null; } @Override @@ -67,13 +69,18 @@ public class DoNotShowAgainDialog extends DialogFragment { ab.setTitle(mTitleId); ab.setView(view); ab.setCancelable(false); - ab.setNeutralButton(R.string.ok, new DialogInterface.OnClickListener() { + ab.setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { Context context = getActivity(); GalleryUtils.setBooleanPref(context, context.getString(mSharedPrefKeyId), mDoNotShowAgainChk.isChecked()); + if(mButtonClickListener != null) mButtonClickListener.onClick(dialog, id); } }); return ab.create(); } + + public void setOnOkButtonClickListener(DialogInterface.OnClickListener listener) { + mButtonClickListener = listener; + } } -- cgit v1.2.3