From d759b7c1fc449f4f0ef91997738bbef1bbd96677 Mon Sep 17 00:00:00 2001 From: Owen Lin Date: Wed, 16 May 2012 15:32:02 -0700 Subject: Refresh the action bar timeout when button is clicked. Also handle with the confirm dialog, we show the action bar as long as the confirm dialog is shown. And we start to timeout the action bar when the confirm dialog get dismissed. bug: 6478646 Change-Id: I3f0e7e61b43b0dd2bb2b1e2b4444c8dcb5706e1a --- src/com/android/gallery3d/app/ManageCachePage.java | 8 ++++ src/com/android/gallery3d/app/PhotoPage.java | 29 ++++++++++++-- .../gallery3d/ui/ImportCompleteListener.java | 9 +++++ src/com/android/gallery3d/ui/MenuExecutor.java | 46 +++++++++++++++++++--- 4 files changed, 82 insertions(+), 10 deletions(-) (limited to 'src') diff --git a/src/com/android/gallery3d/app/ManageCachePage.java b/src/com/android/gallery3d/app/ManageCachePage.java index 2e52b8cbb..cdbbfdc50 100644 --- a/src/com/android/gallery3d/app/ManageCachePage.java +++ b/src/com/android/gallery3d/app/ManageCachePage.java @@ -398,4 +398,12 @@ public class ManageCachePage extends ActivityState implements @Override public void onSelectionChange(Path path, boolean selected) { } + + @Override + public void onConfirmDialogDismissed(boolean confirmed) { + } + + @Override + public void onConfirmDialogShown() { + } } diff --git a/src/com/android/gallery3d/app/PhotoPage.java b/src/com/android/gallery3d/app/PhotoPage.java index 1778f261b..68406ccd2 100644 --- a/src/com/android/gallery3d/app/PhotoPage.java +++ b/src/com/android/gallery3d/app/PhotoPage.java @@ -521,8 +521,28 @@ public class PhotoPage extends ActivityState implements return true; } + private MenuExecutor.ProgressListener mConfirmDialogListener = + new MenuExecutor.ProgressListener() { + @Override + public void onProgressUpdate(int index) {} + + @Override + public void onProgressComplete(int result) {} + + @Override + public void onConfirmDialogShown() { + mHandler.removeMessages(MSG_HIDE_BARS); + } + + @Override + public void onConfirmDialogDismissed(boolean confirmed) { + refreshHidingMessage(); + } + }; + @Override protected boolean onItemSelected(MenuItem item) { + refreshHidingMessage(); MediaItem current = mModel.getMediaItem(0); if (current == null) { @@ -586,7 +606,7 @@ public class PhotoPage extends ActivityState implements case R.id.action_show_on_map: mSelectionManager.deSelectAll(); mSelectionManager.toggle(path); - mMenuExecutor.onMenuClicked(item, confirmMsg, null); + mMenuExecutor.onMenuClicked(item, confirmMsg, mConfirmDialogListener); return true; case R.id.action_import: mSelectionManager.deSelectAll(); @@ -767,11 +787,12 @@ public class PhotoPage extends ActivityState implements @Override public void onPause() { + super.onPause(); + mIsActive = false; + mActivity.getGLRoot().unfreeze(); mHandler.removeMessages(MSG_UNFREEZE_GLROOT); - super.onPause(); if (isFinishing()) preparePhotoFallbackView(); - mIsActive = false; DetailsHelper.pause(); mPhotoView.pause(); @@ -789,8 +810,8 @@ public class PhotoPage extends ActivityState implements @Override protected void onResume() { - mActivity.getGLRoot().freeze(); super.onResume(); + mActivity.getGLRoot().freeze(); mIsActive = true; setContentPane(mRootPane); diff --git a/src/com/android/gallery3d/ui/ImportCompleteListener.java b/src/com/android/gallery3d/ui/ImportCompleteListener.java index 245088179..63d616751 100644 --- a/src/com/android/gallery3d/ui/ImportCompleteListener.java +++ b/src/com/android/gallery3d/ui/ImportCompleteListener.java @@ -31,6 +31,7 @@ public class ImportCompleteListener implements MenuExecutor.ProgressListener { mActivity = galleryActivity; } + @Override public void onProgressComplete(int result) { int message; if (result == MenuExecutor.EXECUTION_RESULT_SUCCESS) { @@ -42,6 +43,7 @@ public class ImportCompleteListener implements MenuExecutor.ProgressListener { Toast.makeText(mActivity.getAndroidContext(), message, Toast.LENGTH_LONG).show(); } + @Override public void onProgressUpdate(int index) { } @@ -52,4 +54,11 @@ public class ImportCompleteListener implements MenuExecutor.ProgressListener { mActivity.getStateManager().startState(AlbumPage.class, data); } + @Override + public void onConfirmDialogDismissed(boolean confirmed) { + } + + @Override + public void onConfirmDialogShown() { + } } diff --git a/src/com/android/gallery3d/ui/MenuExecutor.java b/src/com/android/gallery3d/ui/MenuExecutor.java index 14bdc4d53..7de07e821 100644 --- a/src/com/android/gallery3d/ui/MenuExecutor.java +++ b/src/com/android/gallery3d/ui/MenuExecutor.java @@ -21,6 +21,7 @@ import android.app.AlertDialog; import android.app.ProgressDialog; import android.content.Context; import android.content.DialogInterface; +import android.content.DialogInterface.OnCancelListener; import android.content.DialogInterface.OnClickListener; import android.content.Intent; import android.os.Handler; @@ -77,6 +78,8 @@ public class MenuExecutor { } public interface ProgressListener { + public void onConfirmDialogShown(); + public void onConfirmDialogDismissed(boolean confirmed); public void onProgressUpdate(int index); public void onProgressComplete(int result); } @@ -232,19 +235,50 @@ public class MenuExecutor { startAction(action, title, listener); } + private class ConfirmDialogListener implements OnClickListener, OnCancelListener { + private final int mActionId; + private final ProgressListener mListener; + + public ConfirmDialogListener(int actionId, ProgressListener listener) { + mActionId = actionId; + mListener = listener; + } + + @Override + public void onClick(DialogInterface dialog, int which) { + if (which == DialogInterface.BUTTON_POSITIVE) { + if (mListener != null) { + mListener.onConfirmDialogDismissed(true); + } + onMenuClicked(mActionId, mListener); + } else { + if (mListener != null) { + mListener.onConfirmDialogDismissed(false); + } + } + } + + @Override + public void onCancel(DialogInterface dialog) { + if (mListener != null) { + mListener.onConfirmDialogDismissed(false); + } + } + } + public void onMenuClicked(MenuItem menuItem, String confirmMsg, final ProgressListener listener) { final int action = menuItem.getItemId(); if (confirmMsg != null) { + if (listener != null) listener.onConfirmDialogShown(); + ConfirmDialogListener cdl = new ConfirmDialogListener(action, listener); new AlertDialog.Builder(mActivity.getAndroidContext()) .setMessage(confirmMsg) - .setPositiveButton(R.string.ok, new OnClickListener() { - public void onClick(DialogInterface dialog, int which) { - onMenuClicked(action, listener); - } - }) - .setNegativeButton(R.string.cancel, null).create().show(); + .setOnCancelListener(cdl) + .setPositiveButton(R.string.ok, cdl) + .setNegativeButton(R.string.cancel, cdl) + .create().show(); } else { onMenuClicked(action, listener); } -- cgit v1.2.3