am dc31fa13: am 59d0ef1e: am 2e1bc2e3: Fix UI Tablet for saturation panel
* commit 'dc31fa1390a18192287d9a5998c894386b05d997':
Fix UI Tablet for saturation panel
diff --git a/res/layout-land/filtershow_editor_panel.xml b/res/layout-land/filtershow_editor_panel.xml
index 2cb00e3..fc32468 100644
--- a/res/layout-land/filtershow_editor_panel.xml
+++ b/res/layout-land/filtershow_editor_panel.xml
@@ -22,51 +22,30 @@
android:orientation="vertical"
android:visibility="visible">
- <Button
- android:id="@+id/toggle_state"
+ <RelativeLayout
android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:text="@string/imageState"
- android:background="@color/background_main_toolbar"
- />
+ android:layout_height="match_parent"
+ >
- <View
- android:layout_width="match_parent"
- android:layout_height="0dip"
- android:visibility="invisible"
- android:layout_gravity="top"
- android:layout_weight="1" />
-
- <LinearLayout
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:orientation="vertical"
- android:layout_gravity="bottom">
-
- <LinearLayout
- android:id="@+id/controlArea"
+ <Button
+ android:id="@+id/toggle_state"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:orientation="horizontal"
- android:layout_alignParentBottom="true"
- android:visibility="visible">
-
- <SeekBar
- android:id="@+id/primarySeekBar"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_gravity="center_vertical"
- style="@style/FilterShowSlider"/>
-
- </LinearLayout>
+ android:text="@string/imageState"
+ android:background="@color/background_main_toolbar"
+ android:layout_alignParentTop="true"
+ />
<LinearLayout
+ android:id="@+id/applyBar"
android:layout_width="match_parent"
android:layout_height="48dip"
android:background="@color/background_main_toolbar"
android:orientation="horizontal"
android:baselineAligned="false"
- android:visibility="visible">
+ android:visibility="visible"
+ android:layout_alignParentBottom="true"
+ >
<ImageButton
android:id="@+id/cancelFilter"
@@ -102,7 +81,7 @@
android:text="@string/apply_effect"
android:textSize="18dip"
android:drawableRight="@drawable/filtershow_menu_marker"
- android:textAllCaps="true" />
+ android:textAllCaps="true"/>
</LinearLayout>
@@ -122,6 +101,25 @@
android:src="@drawable/ic_menu_done_holo_light"
android:textSize="18dip"/>
</LinearLayout>
- </LinearLayout>
+ <LinearLayout
+ android:id="@+id/controlArea"
+ android:layout_width="match_parent"
+ android:layout_height="fill_parent"
+ android:orientation="vertical"
+ android:layout_above="@id/applyBar"
+ android:layout_below="@id/toggle_state"
+ android:gravity="bottom"
+ android:visibility="visible">
+
+ <SeekBar
+ android:id="@+id/primarySeekBar"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center_vertical"
+ style="@style/FilterShowSlider"/>
+
+ </LinearLayout>
+
+ </RelativeLayout>
</LinearLayout>
diff --git a/res/layout-land/filtershow_saturation_controls.xml b/res/layout-land/filtershow_saturation_controls.xml
new file mode 100644
index 0000000..42c9dc0
--- /dev/null
+++ b/res/layout-land/filtershow_saturation_controls.xml
@@ -0,0 +1,130 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:orientation="vertical"
+ android:layout_width="match_parent"
+ android:layout_height="0dp"
+ android:layout_weight="1">
+
+ <ScrollView
+ android:layout_width="match_parent"
+ android:layout_height="0dp"
+ android:layout_weight="1">
+
+ <GridLayout
+ android:orientation="horizontal"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:alignmentMode="alignBounds"
+ android:useDefaultMargins="true"
+ android:columnOrderPreserved="false"
+ android:columnCount="2">
+
+ <TextView
+ android:layout_gravity="left|center_vertical"
+ android:text="@string/editor_chan_sat_main"
+ android:layout_marginLeft="8dp"/>
+ <TextView
+ android:layout_gravity="right|center_vertical"
+ android:id="@+id/mainValue"
+ android:layout_marginRight="8dp"/>
+ <SeekBar
+ android:id="@+id/mainSeekbar"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ style="@style/FilterShowSlider"
+ android:layout_columnSpan="2"/>
+
+ <TextView
+ android:layout_gravity="left|center_vertical"
+ android:text="@string/editor_chan_sat_red"
+ android:layout_marginLeft="8dp"/>
+ <TextView
+ android:layout_gravity="right|center_vertical"
+ android:id="@+id/redValue"
+ android:layout_marginRight="8dp"/>
+ <SeekBar
+ android:id="@+id/redSeekBar"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ style="@style/FilterShowSlider"
+ android:layout_columnSpan="2"/>
+
+ <TextView
+ android:layout_gravity="left|center_vertical"
+ android:text="@string/editor_chan_sat_yellow"
+ android:layout_marginLeft="8dp"/>
+ <TextView
+ android:layout_gravity="right|center_vertical"
+ android:id="@+id/yellowValue"
+ android:layout_marginRight="8dp"/>
+ <SeekBar
+ android:id="@+id/yellowSeekBar"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ style="@style/FilterShowSlider"
+ android:layout_columnSpan="2"/>
+
+ <TextView
+ android:layout_gravity="left|center_vertical"
+ android:text="@string/editor_chan_sat_green"
+ android:layout_marginLeft="8dp"/>
+ <TextView
+ android:layout_gravity="right|center_vertical"
+ android:id="@+id/greenValue"
+ android:layout_marginRight="8dp"/>
+ <SeekBar
+ android:id="@+id/greenSeekBar"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ style="@style/FilterShowSlider"
+ android:layout_columnSpan="2"/>
+
+ <TextView
+ android:layout_gravity="left|center_vertical"
+ android:text="@string/editor_chan_sat_cyan"
+ android:layout_marginLeft="8dp"/>
+ <TextView
+ android:layout_gravity="right|center_vertical"
+ android:id="@+id/cyanValue"
+ android:layout_marginRight="8dp"/>
+ <SeekBar
+ android:id="@+id/cyanSeekBar"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ style="@style/FilterShowSlider"
+ android:layout_columnSpan="2"/>
+
+ <TextView
+ android:layout_gravity="left|center_vertical"
+ android:text="@string/editor_chan_sat_blue"
+ android:layout_marginLeft="8dp"/>
+ <TextView
+ android:layout_gravity="right|center_vertical"
+ android:id="@+id/blueValue"
+ android:layout_marginRight="8dp"/>
+ <SeekBar
+ android:id="@+id/blueSeekBar"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ style="@style/FilterShowSlider"
+ android:layout_columnSpan="2"/>
+
+ <TextView
+ android:layout_gravity="left|center_vertical"
+ android:text="@string/editor_chan_sat_magenta"
+ android:layout_marginLeft="8dp"/>
+ <TextView
+ android:layout_gravity="right|center_vertical"
+ android:id="@+id/magentaValue"
+ android:layout_marginRight="8dp"/>
+ <SeekBar
+ android:id="@+id/magentaSeekBar"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ style="@style/FilterShowSlider"
+ android:layout_columnSpan="2"/>
+ </GridLayout>
+ </ScrollView>
+
+</LinearLayout>
\ No newline at end of file
diff --git a/src/com/android/gallery3d/filtershow/editors/EditorChanSat.java b/src/com/android/gallery3d/filtershow/editors/EditorChanSat.java
index 95a30e7..0069aae 100644
--- a/src/com/android/gallery3d/filtershow/editors/EditorChanSat.java
+++ b/src/com/android/gallery3d/filtershow/editors/EditorChanSat.java
@@ -18,24 +18,27 @@
import android.content.Context;
import android.graphics.Bitmap;
import android.os.Handler;
+import android.view.LayoutInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
+import android.view.ViewGroup;
import android.widget.LinearLayout;
import android.widget.PopupMenu;
+import android.widget.SeekBar;
import android.widget.SeekBar.OnSeekBarChangeListener;
+import android.widget.TextView;
import com.android.gallery3d.R;
import com.android.gallery3d.filtershow.controller.BasicParameterStyle;
import com.android.gallery3d.filtershow.controller.BitmapCaller;
import com.android.gallery3d.filtershow.controller.FilterView;
import com.android.gallery3d.filtershow.controller.Parameter;
+import com.android.gallery3d.filtershow.filters.FilterBasicRepresentation;
import com.android.gallery3d.filtershow.filters.FilterChanSatRepresentation;
import com.android.gallery3d.filtershow.filters.FilterRepresentation;
import com.android.gallery3d.filtershow.imageshow.MasterImage;
import com.android.gallery3d.filtershow.pipeline.ImagePreset;
-import com.android.gallery3d.filtershow.pipeline.RenderingRequest;
-import com.android.gallery3d.filtershow.pipeline.RenderingRequestCaller;
public class EditorChanSat extends ParametricEditor implements OnSeekBarChangeListener, FilterView {
public static final int ID = R.id.editorChanSat;
@@ -43,6 +46,21 @@
private SwapButton mButton;
private final Handler mHandler = new Handler();
+ private SeekBar mMainBar;
+ private SeekBar mRedBar;
+ private SeekBar mYellowBar;
+ private SeekBar mGreenBar;
+ private SeekBar mCyanBar;
+ private SeekBar mBlueBar;
+ private SeekBar mMagentaBar;
+ private TextView mMainValue;
+ private TextView mRedValue;
+ private TextView mYellowValue;
+ private TextView mGreenValue;
+ private TextView mCyanValue;
+ private TextView mBlueValue;
+ private TextView mMagentaValue;
+
int[] mMenuStrings = {
R.string.editor_chan_sat_main,
R.string.editor_chan_sat_red,
@@ -80,29 +98,119 @@
mButton = (SwapButton) accessoryViewList.findViewById(R.id.applyEffect);
mButton.setText(mContext.getString(R.string.editor_chan_sat_main));
- final PopupMenu popupMenu = new PopupMenu(mImageShow.getActivity(), mButton);
+ if (useCompact(mContext)) {
+ final PopupMenu popupMenu = new PopupMenu(mImageShow.getActivity(), mButton);
- popupMenu.getMenuInflater().inflate(R.menu.filtershow_menu_chan_sat, popupMenu.getMenu());
+ popupMenu.getMenuInflater().inflate(R.menu.filtershow_menu_chan_sat,
+ popupMenu.getMenu());
- popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
- @Override
- public boolean onMenuItemClick(MenuItem item) {
- selectMenuItem(item);
- return true;
- }
- });
- mButton.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View arg0) {
- popupMenu.show();
- }
- });
- mButton.setListener(this);
+ popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
+ @Override
+ public boolean onMenuItemClick(MenuItem item) {
+ selectMenuItem(item);
+ return true;
+ }
+ });
+ mButton.setOnClickListener(new OnClickListener() {
+ @Override
+ public void onClick(View arg0) {
+ popupMenu.show();
+ }
+ });
+ mButton.setListener(this);
- FilterChanSatRepresentation csrep = getChanSatRep();
- String menuString = mContext.getString(mMenuStrings[0]);
- switchToMode(csrep, FilterChanSatRepresentation.MODE_MASTER, menuString);
+ FilterChanSatRepresentation csrep = getChanSatRep();
+ String menuString = mContext.getString(mMenuStrings[0]);
+ switchToMode(csrep, FilterChanSatRepresentation.MODE_MASTER, menuString);
+ }
+ }
+ @Override
+ public void reflectCurrentFilter() {
+ if (useCompact(mContext)) {
+ super.reflectCurrentFilter();
+ updateText();
+ return;
+ }
+ mLocalRepresentation = null;
+ if (getLocalRepresentation() != null
+ && getLocalRepresentation() instanceof FilterChanSatRepresentation) {
+ FilterChanSatRepresentation rep =
+ (FilterChanSatRepresentation) getLocalRepresentation();
+ int value = rep.getValue(FilterChanSatRepresentation.MODE_MASTER);
+ mMainBar.setProgress(value + 100);
+ mMainValue.setText("" + value);
+ value = rep.getValue(FilterChanSatRepresentation.MODE_RED);
+ mRedBar.setProgress(value + 100);
+ mRedValue.setText("" + value);
+ value = rep.getValue(FilterChanSatRepresentation.MODE_YELLOW);
+ mYellowBar.setProgress(value + 100);
+ mYellowValue.setText("" + value);
+ value = rep.getValue(FilterChanSatRepresentation.MODE_GREEN);
+ mGreenBar.setProgress(value + 100);
+ mGreenValue.setText("" + value);
+ value = rep.getValue(FilterChanSatRepresentation.MODE_CYAN);
+ mCyanBar.setProgress(value + 100);
+ mCyanValue.setText("" + value);
+ value = rep.getValue(FilterChanSatRepresentation.MODE_BLUE);
+ mBlueBar.setProgress(value + 100);
+ mBlueValue.setText("" + value);
+ value = rep.getValue(FilterChanSatRepresentation.MODE_MAGENTA);
+ mMagentaBar.setProgress(value + 100);
+ mMagentaValue.setText("" + value);
+ String text = mContext.getString(rep.getTextId()).toUpperCase();
+ mFilterTitle.setText(text);
+ updateText();
+ }
+ }
+
+ @Override
+ public void setUtilityPanelUI(View actionButton, View editControl) {
+ if (useCompact(mContext)) {
+ super.setUtilityPanelUI(actionButton, editControl);
+ return;
+ }
+ mActionButton = actionButton;
+ mEditControl = editControl;
+ mEditTitle.setCompoundDrawables(null, null, null, null);
+ LinearLayout group = (LinearLayout) editControl;
+ LayoutInflater inflater =
+ (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
+ LinearLayout controls = (LinearLayout) inflater.inflate(
+ R.layout.filtershow_saturation_controls, group, false);
+ ViewGroup.LayoutParams lp = new LinearLayout.LayoutParams(
+ ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
+ controls.setLayoutParams(lp);
+ group.removeAllViews();
+ group.addView(controls);
+ mMainBar = (SeekBar) controls.findViewById(R.id.mainSeekbar);
+ mMainBar.setMax(200);
+ mMainBar.setOnSeekBarChangeListener(this);
+ mMainValue = (TextView) controls.findViewById(R.id.mainValue);
+ mRedBar = (SeekBar) controls.findViewById(R.id.redSeekBar);
+ mRedBar.setMax(200);
+ mRedBar.setOnSeekBarChangeListener(this);
+ mRedValue = (TextView) controls.findViewById(R.id.redValue);
+ mYellowBar = (SeekBar) controls.findViewById(R.id.yellowSeekBar);
+ mYellowBar.setMax(200);
+ mYellowBar.setOnSeekBarChangeListener(this);
+ mYellowValue = (TextView) controls.findViewById(R.id.yellowValue);
+ mGreenBar = (SeekBar) controls.findViewById(R.id.greenSeekBar);
+ mGreenBar.setMax(200);
+ mGreenBar.setOnSeekBarChangeListener(this);
+ mGreenValue = (TextView) controls.findViewById(R.id.greenValue);
+ mCyanBar = (SeekBar) controls.findViewById(R.id.cyanSeekBar);
+ mCyanBar.setMax(200);
+ mCyanBar.setOnSeekBarChangeListener(this);
+ mCyanValue = (TextView) controls.findViewById(R.id.cyanValue);
+ mBlueBar = (SeekBar) controls.findViewById(R.id.blueSeekBar);
+ mBlueBar.setMax(200);
+ mBlueBar.setOnSeekBarChangeListener(this);
+ mBlueValue = (TextView) controls.findViewById(R.id.blueValue);
+ mMagentaBar = (SeekBar) controls.findViewById(R.id.magentaSeekBar);
+ mMagentaBar.setMax(200);
+ mMagentaBar.setOnSeekBarChangeListener(this);
+ mMagentaValue = (TextView) controls.findViewById(R.id.magentaValue);
}
public int getParameterIndex(int id) {
@@ -127,6 +235,9 @@
@Override
public void detach() {
+ if (mButton == null) {
+ return;
+ }
mButton.setListener(null);
mButton.setOnClickListener(null);
}
@@ -181,6 +292,9 @@
}
protected void switchToMode(FilterChanSatRepresentation csrep, int mode, String title) {
+ if (csrep == null) {
+ return;
+ }
csrep.setParameterMode(mode);
mCurrentlyEditing = title;
mButton.setText(mCurrentlyEditing);
@@ -194,6 +308,44 @@
}
@Override
+ public void onProgressChanged(SeekBar sbar, int progress, boolean arg2) {
+ FilterChanSatRepresentation rep = getChanSatRep();
+ int value = progress - 100;
+ switch (sbar.getId()) {
+ case R.id.mainSeekbar:
+ rep.setParameterMode(FilterChanSatRepresentation.MODE_MASTER);
+ mMainValue.setText("" + value);
+ break;
+ case R.id.redSeekBar:
+ rep.setParameterMode(FilterChanSatRepresentation.MODE_RED);
+ mRedValue.setText("" + value);
+ break;
+ case R.id.yellowSeekBar:
+ rep.setParameterMode(FilterChanSatRepresentation.MODE_YELLOW);
+ mYellowValue.setText("" + value);
+ break;
+ case R.id.greenSeekBar:
+ rep.setParameterMode(FilterChanSatRepresentation.MODE_GREEN);
+ mGreenValue.setText("" + value);
+ break;
+ case R.id.cyanSeekBar:
+ rep.setParameterMode(FilterChanSatRepresentation.MODE_CYAN);
+ mCyanValue.setText("" + value);
+ break;
+ case R.id.blueSeekBar:
+ rep.setParameterMode(FilterChanSatRepresentation.MODE_BLUE);
+ mBlueValue.setText("" + value);
+ break;
+ case R.id.magentaSeekBar:
+ rep.setParameterMode(FilterChanSatRepresentation.MODE_MAGENTA);
+ mMagentaValue.setText("" + value);
+ break;
+ }
+ rep.setCurrentParameter(value);
+ commitLocalRepresentation();
+ }
+
+ @Override
public void swapLeft(MenuItem item) {
super.swapLeft(item);
mButton.setTranslationX(0);
diff --git a/src/com/android/gallery3d/filtershow/editors/ParametricEditor.java b/src/com/android/gallery3d/filtershow/editors/ParametricEditor.java
index 6f0a792..d80b147 100644
--- a/src/com/android/gallery3d/filtershow/editors/ParametricEditor.java
+++ b/src/com/android/gallery3d/filtershow/editors/ParametricEditor.java
@@ -17,6 +17,7 @@
package com.android.gallery3d.filtershow.editors;
import android.content.Context;
+import android.content.res.Configuration;
import android.graphics.Point;
import android.util.Log;
import android.view.View;
@@ -144,21 +145,9 @@
};
}
- // TODO: need a better way to decide which representation
static boolean useCompact(Context context) {
- WindowManager w = ((WindowManager) context.getSystemService(Context.WINDOW_SERVICE));
- Point size = new Point();
- w.getDefaultDisplay().getSize(size);
- if (size.x < size.y) { // if tall than wider
- return true;
- }
- if (size.x < MINIMUM_WIDTH) {
- return true;
- }
- if (size.y < MINIMUM_HEIGHT) {
- return true;
- }
- return false;
+ return context.getResources().getConfiguration().orientation
+ == Configuration.ORIENTATION_PORTRAIT;
}
protected Parameter getParameterToEdit(FilterRepresentation rep) {