diff options
Diffstat (limited to 'src/com/android/camera/ui/ListMenu.java')
-rw-r--r-- | src/com/android/camera/ui/ListMenu.java | 63 |
1 files changed, 60 insertions, 3 deletions
diff --git a/src/com/android/camera/ui/ListMenu.java b/src/com/android/camera/ui/ListMenu.java index bb21f7e0a..4cb35981e 100644 --- a/src/com/android/camera/ui/ListMenu.java +++ b/src/com/android/camera/ui/ListMenu.java @@ -19,8 +19,6 @@ package com.android.camera.ui; -import java.util.ArrayList; - import android.content.Context; import android.graphics.Rect; import android.util.AttributeSet; @@ -36,21 +34,42 @@ import android.widget.Space; import com.android.camera.ListPreference; import com.android.camera.PreferenceGroup; +import com.android.camera.SettingsManager; + import org.codeaurora.snapcam.R; +import java.util.ArrayList; +import java.util.List; + /* A popup window that contains several camera settings. */ public class ListMenu extends ListView - implements ListMenuItem.Listener, AdapterView.OnItemClickListener, RotateLayout.Child { + implements ListMenuItem.Listener, + RotateLayout.Child { + AdapterView.OnItemClickListener, + ListSubMenu.Listener { @SuppressWarnings("unused") private static final String TAG = "ListMenu"; private int mHighlighted = -1; private Listener mListener; + private SettingsManager mSettingsManager; private ArrayList<ListPreference> mListItem = new ArrayList<ListPreference>(); private View mHeader, mFooter; // Keep track of which setting items are disabled // e.g. White balance will be disabled when scene mode is set to non-auto private boolean[] mEnabled; + private boolean mForCamera2 = false; + + @Override + public void onListPrefChanged(ListPreference pref) { + // listen from ListSubMenu + if (mListener != null) { + mListener.onSettingChanged(pref); + } + if (mSettingsManager != null) { + mSettingsManager.onSettingChanged(pref); + } + } static public interface Listener { public void onSettingChanged(ListPreference pref); @@ -62,6 +81,11 @@ public class ListMenu extends ListView public void onListMenuTouched(); } + static public interface SettingsListener { + // notify SettingsManager + public void onSettingChanged(ListPreference pref); + } + private class MoreSettingAdapter extends ArrayAdapter<ListPreference> { LayoutInflater mInflater; String mOnString; @@ -92,6 +116,9 @@ public class ListMenu extends ListView view.setSettingChangedListener(ListMenu.this); if (position >= 0 && position < mEnabled.length) { view.setEnabled(mEnabled[position]); + if (mForCamera2 && !mEnabled[position]) { + view.overrideSettings(pref.getOffValue()); + } } else { Log.w(TAG, "Invalid input: enabled list length, " + mEnabled.length + " position " + position); @@ -135,6 +162,10 @@ public class ListMenu extends ListView view.setLayoutParams(lp); } + public void setSettingsManager(SettingsManager settingsManager) { + mSettingsManager = settingsManager; + } + public void setSettingChangedListener(Listener listener) { mListener = listener; } @@ -143,6 +174,32 @@ public class ListMenu extends ListView super(context, attrs); } + public void initializeForCamera2(String[] keys) { + mForCamera2 = true; + PreferenceGroup group = mSettingsManager.getPreferenceGroup(); + List<String> disabledList = mSettingsManager.getDisabledList(); + // Prepare the setting items. + for (int i = 0; i < keys.length; ++i) { + ListPreference pref = group.findPreference(keys[i]); + if (pref != null) + mListItem.add(pref); + } + + ArrayAdapter<ListPreference> mListItemAdapter = new MoreSettingAdapter(); + setAdapter(mListItemAdapter); + setOnItemClickListener(this); + setSelector(android.R.color.transparent); + // Initialize mEnabled + mEnabled = new boolean[mListItem.size()]; + for (int i = 0; i < mEnabled.length; i++) { + mEnabled[i] = true; + } + + for (String s: disabledList) { + setPreferenceEnabled(s, false); + } + } + public void initialize(PreferenceGroup group, String[] keys) { // Prepare the setting items. for (int i = 0; i < keys.length; ++i) { |