OSDN Git Service

Refresh the action bar timeout when button is clicked.
authorOwen Lin <owenlin@google.com>
Wed, 16 May 2012 22:32:02 +0000 (15:32 -0700)
committerOwen Lin <owenlin@google.com>
Thu, 17 May 2012 20:50:06 +0000 (13:50 -0700)
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
src/com/android/gallery3d/app/PhotoPage.java
src/com/android/gallery3d/ui/ImportCompleteListener.java
src/com/android/gallery3d/ui/MenuExecutor.java

index 2e52b8c..cdbbfdc 100644 (file)
@@ -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() {
+    }
 }
index 1778f26..68406cc 100644 (file)
@@ -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);
 
index 2450881..63d6167 100644 (file)
@@ -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() {
+    }
 }
index 14bdc4d..7de07e8 100644 (file)
@@ -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);
         }