From eaf93ae9970f34ed2d69fbd8b66beddaa82d37f6 Mon Sep 17 00:00:00 2001 From: nicolasroard Date: Sun, 21 Oct 2012 18:42:07 -0700 Subject: Fix the undo/redo/reset menu item state bug:7357734 - enable/disable the undo/redo/reset menu item depending on the history. Change-Id: I633008bc9a99eef2e7289b290fc96120f09b3825 --- .../gallery3d/filtershow/FilterShowActivity.java | 5 ++ .../gallery3d/filtershow/HistoryAdapter.java | 58 ++++++++++++++++++++-- 2 files changed, 59 insertions(+), 4 deletions(-) diff --git a/src/com/android/gallery3d/filtershow/FilterShowActivity.java b/src/com/android/gallery3d/filtershow/FilterShowActivity.java index cac8aadd6..3d968867f 100644 --- a/src/com/android/gallery3d/filtershow/FilterShowActivity.java +++ b/src/com/android/gallery3d/filtershow/FilterShowActivity.java @@ -464,6 +464,11 @@ public class FilterShowActivity extends Activity implements OnItemClickListener, .getActionProvider(); mShareActionProvider.setShareIntent(getDefaultShareIntent()); mShareActionProvider.setOnShareTargetSelectedListener(this); + + MenuItem undoItem = menu.findItem(R.id.undoButton); + MenuItem redoItem = menu.findItem(R.id.redoButton); + MenuItem resetItem = menu.findItem(R.id.resetHistoryButton); + mImageShow.getHistory().setMenuItems(undoItem, redoItem, resetItem); return true; } diff --git a/src/com/android/gallery3d/filtershow/HistoryAdapter.java b/src/com/android/gallery3d/filtershow/HistoryAdapter.java index 475f44313..684c2fc46 100644 --- a/src/com/android/gallery3d/filtershow/HistoryAdapter.java +++ b/src/com/android/gallery3d/filtershow/HistoryAdapter.java @@ -3,6 +3,7 @@ package com.android.gallery3d.filtershow; import android.content.Context; import android.view.LayoutInflater; +import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; @@ -17,16 +18,61 @@ import java.util.Vector; public class HistoryAdapter extends ArrayAdapter { private static final String LOGTAG = "HistoryAdapter"; private int mCurrentPresetPosition = 0; + private MenuItem mUndoMenuItem = null; + private MenuItem mRedoMenuItem = null; + private MenuItem mResetMenuItem = null; + + public HistoryAdapter(Context context, int resource, int textViewResourceId) { + super(context, resource, textViewResourceId); + FilterShowActivity activity = (FilterShowActivity) context; + } + + public void setMenuItems(MenuItem undoItem, MenuItem redoItem, MenuItem resetItem) { + mUndoMenuItem = undoItem; + mRedoMenuItem = redoItem; + mResetMenuItem = resetItem; + updateMenuItems(); + } + + public boolean canReset() { + if (getCount() <= 1) { + return false; + } + return true; + } + + public boolean canUndo() { + if (mCurrentPresetPosition == getCount() - 1) { + return false; + } + return true; + } + + public boolean canRedo() { + if (mCurrentPresetPosition == 0) { + return false; + } + return true; + } + + public void updateMenuItems() { + if (mUndoMenuItem != null) { + mUndoMenuItem.setEnabled(canUndo()); + } + if (mRedoMenuItem != null) { + mRedoMenuItem.setEnabled(canRedo()); + } + if (mResetMenuItem != null) { + mResetMenuItem.setEnabled(canReset()); + } + } public void setCurrentPreset(int n) { mCurrentPresetPosition = n; + updateMenuItems(); this.notifyDataSetChanged(); } - public HistoryAdapter(Context context, int resource, int textViewResourceId) { - super(context, resource, textViewResourceId); - } - public void reset() { if (getCount() == 0) { return; @@ -34,6 +80,7 @@ public class HistoryAdapter extends ArrayAdapter { ImagePreset first = getItem(getCount() - 1); clear(); addHistoryItem(first); + updateMenuItems(); } public ImagePreset getLast() { @@ -46,6 +93,7 @@ public class HistoryAdapter extends ArrayAdapter { public void addHistoryItem(ImagePreset preset) { if (canAddHistoryItem(preset)) { insert(preset, 0); + updateMenuItems(); } } @@ -89,6 +137,7 @@ public class HistoryAdapter extends ArrayAdapter { mCurrentPresetPosition = 0; } this.notifyDataSetChanged(); + updateMenuItems(); return mCurrentPresetPosition; } @@ -98,6 +147,7 @@ public class HistoryAdapter extends ArrayAdapter { mCurrentPresetPosition = getCount() - 1; } this.notifyDataSetChanged(); + updateMenuItems(); return mCurrentPresetPosition; } -- cgit v1.2.3