OSDN Git Service

merge in klp-release history after reset to klp-dev
[android-x86/packages-apps-Gallery2.git] / src / com / android / gallery3d / filtershow / editors / EditorDraw.java
index 1cc8aa2..4886821 100644 (file)
 
 package com.android.gallery3d.filtershow.editors;
 
-import android.app.Dialog;
+import android.app.ActionBar;
 import android.content.Context;
+import android.content.res.Resources;
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
+import android.graphics.Color;
+import android.graphics.drawable.GradientDrawable;
+import android.view.LayoutInflater;
 import android.view.MenuItem;
 import android.view.View;
 import android.view.View.OnClickListener;
-import android.view.WindowManager.LayoutParams;
+import android.view.ViewGroup;
 import android.widget.Button;
 import android.widget.FrameLayout;
+import android.widget.ImageButton;
+import android.widget.ImageView;
 import android.widget.LinearLayout;
 import android.widget.PopupMenu;
 import android.widget.SeekBar;
 
 import com.android.gallery3d.R;
-import com.android.gallery3d.filtershow.FilterShowActivity;
-import com.android.gallery3d.filtershow.colorpicker.ColorGridDialog;
-import com.android.gallery3d.filtershow.colorpicker.RGBListener;
+import com.android.gallery3d.filtershow.colorpicker.ColorHueView;
+import com.android.gallery3d.filtershow.colorpicker.ColorListener;
+import com.android.gallery3d.filtershow.colorpicker.ColorOpacityView;
+import com.android.gallery3d.filtershow.colorpicker.ColorSVRectView;
+import com.android.gallery3d.filtershow.controller.BitmapCaller;
+import com.android.gallery3d.filtershow.controller.ColorChooser;
+import com.android.gallery3d.filtershow.controller.FilterView;
+import com.android.gallery3d.filtershow.controller.ParameterColor;
 import com.android.gallery3d.filtershow.filters.FilterDrawRepresentation;
 import com.android.gallery3d.filtershow.filters.FilterRepresentation;
 import com.android.gallery3d.filtershow.filters.ImageFilterDraw;
 import com.android.gallery3d.filtershow.imageshow.ImageDraw;
 
-public class EditorDraw extends Editor {
+public class EditorDraw extends ParametricEditor implements FilterView {
     private static final String LOGTAG = "EditorDraw";
     public static final int ID = R.id.editorDraw;
     public ImageDraw mImageDraw;
+    private static final int MODE_SIZE = FilterDrawRepresentation.PARAM_SIZE;
+    private static final int MODE_SIZEE = FilterDrawRepresentation.PARAM_SIZE;
+    private static final int MODE_STYLE = FilterDrawRepresentation.PARAM_STYLE;
+    private static final int MODE_COLOR = FilterDrawRepresentation.PARAM_COLOR;
+    int[] brushIcons = {
+            R.drawable.brush_flat,
+            R.drawable.brush_round,
+            R.drawable.brush_gauss,
+            R.drawable.brush_marker,
+            R.drawable.brush_spatter
+    };
+
+    int[] mBasColors = {
+            FilterDrawRepresentation.DEFAULT_MENU_COLOR1,
+            FilterDrawRepresentation.DEFAULT_MENU_COLOR2,
+            FilterDrawRepresentation.DEFAULT_MENU_COLOR3,
+            FilterDrawRepresentation.DEFAULT_MENU_COLOR4,
+            FilterDrawRepresentation.DEFAULT_MENU_COLOR5,
+    };
+    private EditorDrawTabletUI mTabletUI;
+    private String mParameterString;
+    private int mSelectedColorButton;
 
     public EditorDraw() {
         super(ID);
     }
 
     @Override
+    public String calculateUserMessage(Context context, String effectName, Object parameterValue) {
+        FilterDrawRepresentation rep = getDrawRep();
+        if (rep == null) {
+            return "";
+        }
+        if (mParameterString == null) {
+            mParameterString = "";
+        }
+        String paramString;
+        String val = rep.getValueString();
+
+        mImageDraw.displayDrawLook();
+        return mParameterString + val;
+    }
+
+    @Override
     public void createEditor(Context context, FrameLayout frameLayout) {
-        super.createEditor(context, frameLayout);
         mView = mImageShow = mImageDraw = new ImageDraw(context);
+        super.createEditor(context, frameLayout);
         mImageDraw.setEditor(this);
 
     }
@@ -58,26 +109,42 @@ public class EditorDraw extends Editor {
     public void reflectCurrentFilter() {
         super.reflectCurrentFilter();
         FilterRepresentation rep = getLocalRepresentation();
-
         if (rep != null && getLocalRepresentation() instanceof FilterDrawRepresentation) {
             FilterDrawRepresentation drawRep = (FilterDrawRepresentation) getLocalRepresentation();
             mImageDraw.setFilterDrawRepresentation(drawRep);
+            if (!ParametricEditor.useCompact(mContext)) {
+                if (mTabletUI != null) {
+
+                    mTabletUI.setDrawRepresentation(drawRep);
+                }
+                return;
+            }
+
+            drawRep.getParam(FilterDrawRepresentation.PARAM_STYLE).setFilterView(this);
+            drawRep.setPramMode(FilterDrawRepresentation.PARAM_COLOR);
+            mParameterString = mContext.getString(R.string.draw_hue);
+            control(drawRep.getCurrentParam(), mEditControl);
         }
     }
 
     @Override
     public void openUtilityPanel(final LinearLayout accessoryViewList) {
         Button view = (Button) accessoryViewList.findViewById(R.id.applyEffect);
-        view.setText(mContext.getString(R.string.draw_style));
+        view.setText(mContext.getString(R.string.draw_hue));
         view.setOnClickListener(new OnClickListener() {
 
-                @Override
+            @Override
             public void onClick(View arg0) {
                 showPopupMenu(accessoryViewList);
             }
         });
     }
 
+    @Override
+    public boolean showsSeekBar() {
+        return false;
+    }
+
     private void showPopupMenu(LinearLayout accessoryViewList) {
         final Button button = (Button) accessoryViewList.findViewById(
                 R.id.applyEffect);
@@ -90,64 +157,92 @@ public class EditorDraw extends Editor {
 
             @Override
             public boolean onMenuItemClick(MenuItem item) {
-                ImageFilterDraw filter = (ImageFilterDraw) mImageShow.getCurrentFilter();
-                if (item.getItemId() == R.id.draw_menu_color) {
-                    showColorGrid(item);
-                } else if (item.getItemId() == R.id.draw_menu_size) {
-                    showSizeDialog(item);
-                } else if (item.getItemId() == R.id.draw_menu_style_brush_marker) {
-                    ImageDraw idraw = (ImageDraw) mImageShow;
-                    idraw.setStyle(ImageFilterDraw.BRUSH_STYLE_MARKER);
-                } else if (item.getItemId() == R.id.draw_menu_style_brush_spatter) {
-                    ImageDraw idraw = (ImageDraw) mImageShow;
-                    idraw.setStyle(ImageFilterDraw.BRUSH_STYLE_SPATTER);
-                } else if (item.getItemId() == R.id.draw_menu_style_line) {
-                    ImageDraw idraw = (ImageDraw) mImageShow;
-                    idraw.setStyle(ImageFilterDraw.SIMPLE_STYLE);
-                } else if (item.getItemId() == R.id.draw_menu_clear) {
-                    ImageDraw idraw = (ImageDraw) mImageShow;
-                    idraw.resetParameter();
-                    commitLocalRepresentation();
-                }
-                mView.invalidate();
+                selectMenuItem(item);
                 return true;
             }
         });
         popupMenu.show();
+
     }
 
-    public void showSizeDialog(final MenuItem item) {
-        FilterShowActivity ctx = mImageShow.getActivity();
-        final Dialog dialog = new Dialog(ctx);
-        dialog.setTitle(R.string.draw_size_title);
-        dialog.setContentView(R.layout.filtershow_draw_size);
-        final SeekBar bar = (SeekBar) dialog.findViewById(R.id.sizeSeekBar);
+    protected void selectMenuItem(MenuItem item) {
+        ImageFilterDraw filter = (ImageFilterDraw) mImageShow.getCurrentFilter();
+        FilterDrawRepresentation rep = getDrawRep();
+        if (rep == null) {
+            return;
+        }
+
+        switch (item.getItemId()) {
+            case R.id.draw_menu_clear:
+                clearDrawing();
+                break;
+            case R.id.draw_menu_size:
+                rep.setPramMode(FilterDrawRepresentation.PARAM_SIZE);
+                break;
+            case R.id.draw_menu_style:
+                rep.setPramMode(FilterDrawRepresentation.PARAM_STYLE);
+                break;
+            case R.id.draw_menu_color:
+                rep.setPramMode(FilterDrawRepresentation.PARAM_COLOR);
+                break;
+        }
+        if (item.getItemId() != R.id.draw_menu_clear) {
+            mParameterString = item.getTitle().toString();
+        }
+        if (mControl instanceof ColorChooser) {
+            ColorChooser c = (ColorChooser) mControl;
+            mBasColors = c.getColorSet();
+        }
+        control(rep.getCurrentParam(), mEditControl);
+        if (mControl instanceof ColorChooser) {
+            ColorChooser c = (ColorChooser) mControl;
+            c.setColorSet(mBasColors);
+        }
+        mControl.updateUI();
+        mView.invalidate();
+    }
+
+    public void clearDrawing(){
         ImageDraw idraw = (ImageDraw) mImageShow;
-        bar.setProgress(idraw.getSize());
-        Button button = (Button) dialog.findViewById(R.id.sizeAcceptButton);
-        button.setOnClickListener(new OnClickListener() {
+        idraw.resetParameter();
+        commitLocalRepresentation();
+    }
+
+    @Override
+    public void setUtilityPanelUI(View actionButton, View editControl) {
+        if (ParametricEditor.useCompact(mContext)) {
+            super.setUtilityPanelUI(actionButton, editControl);
+            return;
+        }
+        mSeekBar = (SeekBar) editControl.findViewById(R.id.primarySeekBar);
+        if (mSeekBar != null) {
+            mSeekBar.setVisibility(View.GONE);
+        }
+        LayoutInflater inflater =
+                (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
+        LinearLayout lp = (LinearLayout) inflater.inflate(
+                R.layout.filtershow_draw_ui, (ViewGroup) editControl, true);
+
+        mTabletUI = new EditorDrawTabletUI(this, mContext, lp);
 
-            @Override
-            public void onClick(View arg0) {
-                int p = bar.getProgress();
-                ImageDraw idraw = (ImageDraw) mImageShow;
-                idraw.setSize(p + 1);
-                dialog.dismiss();
-            }
-        });
-        dialog.show();
     }
 
-    public void showColorGrid(final MenuItem item) {
-        RGBListener cl = new RGBListener() {
-            @Override
-            public void setColor(int rgb) {
-                ImageDraw idraw = (ImageDraw) mImageShow;
-                idraw.setColor(rgb);
-            }
-        };
-        ColorGridDialog cpd = new ColorGridDialog(mImageShow.getActivity(), cl);
-        cpd.show();
-        LayoutParams params = cpd.getWindow().getAttributes();
+    FilterDrawRepresentation getDrawRep() {
+        FilterRepresentation rep = getLocalRepresentation();
+        if (rep instanceof FilterDrawRepresentation) {
+            return (FilterDrawRepresentation) rep;
+        }
+        return null;
     }
+
+    @Override
+    public void computeIcon(int index, BitmapCaller caller) {
+        Bitmap bitmap = BitmapFactory.decodeResource(mContext.getResources(), brushIcons[index]);
+        caller.available(bitmap);
+    }
+
+    public int getBrushIcon(int type) {
+        return brushIcons[type];
+    }
+
 }