OSDN Git Service

Merge "Lock focus during countdown" into gb-ub-photos-bryce
[android-x86/packages-apps-Gallery2.git] / src / com / android / gallery3d / filtershow / editors / EditorDraw.java
1 /*
2  * Copyright (C) 2013 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 package com.android.gallery3d.filtershow.editors;
18
19 import android.app.Dialog;
20 import android.content.Context;
21 import android.view.LayoutInflater;
22 import android.view.MenuItem;
23 import android.view.View;
24 import android.view.View.OnClickListener;
25 import android.view.WindowManager.LayoutParams;
26 import android.widget.Button;
27 import android.widget.FrameLayout;
28 import android.widget.LinearLayout;
29 import android.widget.PopupMenu;
30 import android.widget.SeekBar;
31
32 import com.android.gallery3d.R;
33 import com.android.gallery3d.filtershow.FilterShowActivity;
34 import com.android.gallery3d.filtershow.colorpicker.ColorGridDialog;
35 import com.android.gallery3d.filtershow.colorpicker.RGBListener;
36 import com.android.gallery3d.filtershow.filters.FilterDrawRepresentation;
37 import com.android.gallery3d.filtershow.filters.FilterRepresentation;
38 import com.android.gallery3d.filtershow.filters.ImageFilterDraw;
39 import com.android.gallery3d.filtershow.imageshow.ImageDraw;
40 import com.android.gallery3d.filtershow.ui.FramedTextButton;
41
42 public class EditorDraw extends Editor {
43     private static final String LOGTAG = "EditorDraw";
44     public static final int ID = R.id.editorDraw;
45     public ImageDraw mImageDraw;
46
47     public EditorDraw() {
48         super(ID);
49     }
50
51     @Override
52     public void createEditor(Context context, FrameLayout frameLayout) {
53         super.createEditor(context, frameLayout);
54         mView = mImageShow = mImageDraw = new ImageDraw(context);
55         mImageDraw.setEditor(this);
56
57     }
58
59     @Override
60     public boolean useUtilityPanel() {
61         return true;
62     }
63
64     @Override
65     public void reflectCurrentFilter() {
66         super.reflectCurrentFilter();
67         FilterRepresentation rep = getLocalRepresentation();
68
69         if (rep != null && getLocalRepresentation() instanceof FilterDrawRepresentation) {
70             FilterDrawRepresentation drawRep = (FilterDrawRepresentation) getLocalRepresentation();
71             mImageDraw.setFilterDrawRepresentation(drawRep);
72         }
73     }
74
75     @Override
76     public void openUtilityPanel(final LinearLayout accessoryViewList) {
77         View view = accessoryViewList.findViewById(R.id.drawUtilityButton);
78         if (view == null) {
79             LayoutInflater inflater = (LayoutInflater) mImageShow.getActivity().getSystemService
80                     (Context.LAYOUT_INFLATER_SERVICE);
81             view = inflater.inflate(R.layout.filtershow_draw_button, accessoryViewList, false);
82             accessoryViewList.addView(view, view.getLayoutParams());
83             view.setOnClickListener(new OnClickListener() {
84
85                 @Override
86                 public void onClick(View arg0) {
87                     showPopupMenu(accessoryViewList);
88                 }
89             });
90         }
91
92         if (view != null) {
93             view.setVisibility(View.VISIBLE);
94         }
95     }
96
97     private void showPopupMenu(LinearLayout accessoryViewList) {
98         final FramedTextButton button = (FramedTextButton) accessoryViewList.findViewById(
99                 R.id.drawUtilityButton);
100         if (button == null) {
101             return;
102         }
103         final PopupMenu popupMenu = new PopupMenu(mImageShow.getActivity(), button);
104         popupMenu.getMenuInflater().inflate(R.menu.filtershow_menu_draw, popupMenu.getMenu());
105         popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
106
107             @Override
108             public boolean onMenuItemClick(MenuItem item) {
109                 ImageFilterDraw filter = (ImageFilterDraw) mImageShow.getCurrentFilter();
110                 if (item.getItemId() == R.id.draw_menu_color) {
111                     showColorGrid(item);
112                 } else if (item.getItemId() == R.id.draw_menu_size) {
113                     showSizeDialog(item);
114                 } else if (item.getItemId() == R.id.draw_menu_style_brush) {
115                     ImageDraw idraw = (ImageDraw) mImageShow;
116                     idraw.setStyle((byte) (idraw.getStyle() + 1));
117                     item.setIcon(idraw.getIcon(mContext));
118                     popupMenu.show();
119                 } else if (item.getItemId() == R.id.draw_menu_style_line) {
120                     ImageDraw idraw = (ImageDraw) mImageShow;
121                     idraw.setStyle(ImageFilterDraw.SIMPLE_STYLE);
122                 }
123                 mView.invalidate();
124                 return true;
125             }
126         });
127         popupMenu.show();
128     }
129
130     public void showSizeDialog(final MenuItem item) {
131         FilterShowActivity ctx = mImageShow.getActivity();
132         final Dialog dialog = new Dialog(ctx);
133         dialog.setTitle(R.string.draw_size_title);
134         dialog.setContentView(R.layout.filtershow_draw_size);
135         final SeekBar bar = (SeekBar) dialog.findViewById(R.id.sizeSeekBar);
136         ImageDraw idraw = (ImageDraw) mImageShow;
137         bar.setProgress(idraw.getSize());
138         Button button = (Button) dialog.findViewById(R.id.sizeAcceptButton);
139         button.setOnClickListener(new OnClickListener() {
140
141             @Override
142             public void onClick(View arg0) {
143                 int p = bar.getProgress();
144                 ImageDraw idraw = (ImageDraw) mImageShow;
145                 idraw.setSize(p + 1);
146                 dialog.dismiss();
147             }
148         });
149         dialog.show();
150     }
151
152     public void showColorGrid(final MenuItem item) {
153         RGBListener cl = new RGBListener() {
154             @Override
155             public void setColor(int rgb) {
156                 ImageDraw idraw = (ImageDraw) mImageShow;
157                 idraw.setColor(rgb);
158             }
159         };
160         ColorGridDialog cpd = new ColorGridDialog(mImageShow.getActivity(), cl);
161         cpd.show();
162         LayoutParams params = cpd.getWindow().getAttributes();
163     }
164 }