diff options
| author | nicolasroard <nicolasroard@google.com> | 2013-08-14 09:20:55 -0700 |
|---|---|---|
| committer | Android Git Automerger <android-git-automerger@android.com> | 2013-08-14 09:20:55 -0700 |
| commit | 13736593b969f29dea99480c7692c9256bebfb43 (patch) | |
| tree | bdbbf2659e370e163e2729d0d945f4dd7cb3d180 | |
| parent | 49a3822bee0fd6a09db152d10402d9a4fe5f9c0f (diff) | |
| parent | dc31fa1390a18192287d9a5998c894386b05d997 (diff) | |
| download | android_packages_apps_Gallery2-13736593b969f29dea99480c7692c9256bebfb43.tar.gz android_packages_apps_Gallery2-13736593b969f29dea99480c7692c9256bebfb43.tar.bz2 android_packages_apps_Gallery2-13736593b969f29dea99480c7692c9256bebfb43.zip | |
am dc31fa13: am 59d0ef1e: am 2e1bc2e3: Fix UI Tablet for saturation panel
* commit 'dc31fa1390a18192287d9a5998c894386b05d997':
Fix UI Tablet for saturation panel
4 files changed, 340 insertions, 71 deletions
diff --git a/res/layout-land/filtershow_editor_panel.xml b/res/layout-land/filtershow_editor_panel.xml index 2cb00e3b9..fc3246826 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 000000000..42c9dc094 --- /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 95a30e7fa..0069aae3c 100644 --- a/src/com/android/gallery3d/filtershow/editors/EditorChanSat.java +++ b/src/com/android/gallery3d/filtershow/editors/EditorChanSat.java @@ -18,24 +18,27 @@ package com.android.gallery3d.filtershow.editors; 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 @@ public class EditorChanSat extends ParametricEditor implements OnSeekBarChangeLi 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 @@ public class EditorChanSat extends ParametricEditor implements OnSeekBarChangeLi 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 @@ public class EditorChanSat extends ParametricEditor implements OnSeekBarChangeLi @Override public void detach() { + if (mButton == null) { + return; + } mButton.setListener(null); mButton.setOnClickListener(null); } @@ -181,6 +292,9 @@ public class EditorChanSat extends ParametricEditor implements OnSeekBarChangeLi } 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 @@ public class EditorChanSat extends ParametricEditor implements OnSeekBarChangeLi } @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 6f0a79222..d80b1473c 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 @@ public class ParametricEditor extends Editor { }; } - // 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) { |
