OSDN Git Service

a60b6722c8ea41353577ef2d81fa473b5273729b
[android-x86/packages-apps-Gallery2.git] / src / com / android / gallery3d / filtershow / editors / EditorPanel.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.Activity;
20 import android.os.Bundle;
21 import android.support.v4.app.Fragment;
22 import android.support.v4.app.FragmentTransaction;
23 import android.view.LayoutInflater;
24 import android.view.View;
25 import android.view.ViewGroup;
26 import android.widget.Button;
27 import android.widget.ImageButton;
28 import android.widget.LinearLayout;
29 import com.android.gallery3d.R;
30 import com.android.gallery3d.filtershow.FilterShowActivity;
31 import com.android.gallery3d.filtershow.history.HistoryManager;
32 import com.android.gallery3d.filtershow.category.MainPanel;
33 import com.android.gallery3d.filtershow.imageshow.MasterImage;
34 import com.android.gallery3d.filtershow.state.StatePanel;
35
36 public class EditorPanel extends Fragment {
37
38     private static final String LOGTAG = "EditorPanel";
39
40     private LinearLayout mMainView;
41     private Editor mEditor;
42     private int mEditorID;
43
44     public void setEditor(int editor) {
45         mEditorID = editor;
46     }
47
48     @Override
49     public void onAttach(Activity activity) {
50         super.onAttach(activity);
51         FilterShowActivity filterShowActivity = (FilterShowActivity) activity;
52         mEditor = filterShowActivity.getEditor(mEditorID);
53     }
54
55     public void cancelCurrentFilter() {
56         MasterImage masterImage = MasterImage.getImage();
57         HistoryManager adapter = masterImage.getHistory();
58
59         int position = adapter.undo();
60         masterImage.onHistoryItemClick(position);
61         ((FilterShowActivity)getActivity()).invalidateViews();
62     }
63
64     @Override
65     public View onCreateView(LayoutInflater inflater, ViewGroup container,
66                              Bundle savedInstanceState) {
67         FilterShowActivity activity = (FilterShowActivity) getActivity();
68         if (mMainView != null) {
69             if (mMainView.getParent() != null) {
70                 ViewGroup parent = (ViewGroup) mMainView.getParent();
71                 parent.removeView(mMainView);
72             }
73             showImageStatePanel(activity.isShowingImageStatePanel());
74             return mMainView;
75         }
76         mMainView = (LinearLayout) inflater.inflate(R.layout.filtershow_editor_panel, null);
77
78         View actionControl = mMainView.findViewById(R.id.panelAccessoryViewList);
79         View editControl = mMainView.findViewById(R.id.controlArea);
80         ImageButton cancelButton = (ImageButton) mMainView.findViewById(R.id.cancelFilter);
81         ImageButton applyButton = (ImageButton) mMainView.findViewById(R.id.applyFilter);
82         Button editTitle = (Button) mMainView.findViewById(R.id.applyEffect);
83         cancelButton.setOnClickListener(new View.OnClickListener() {
84             @Override
85             public void onClick(View v) {
86                 cancelCurrentFilter();
87                 FilterShowActivity activity = (FilterShowActivity) getActivity();
88                 activity.backToMain();
89             }
90         });
91
92         Button toggleState = (Button) mMainView.findViewById(R.id.toggle_state);
93         mEditor = activity.getEditor(mEditorID);
94         if (mEditor != null) {
95             mEditor.setUpEditorUI(actionControl, editControl, editTitle, toggleState);
96             mEditor.reflectCurrentFilter();
97             if (mEditor.useUtilityPanel()) {
98                 mEditor.openUtilityPanel((LinearLayout) actionControl);
99             }
100         }
101         applyButton.setOnClickListener(new View.OnClickListener() {
102             @Override
103             public void onClick(View v) {
104                 FilterShowActivity activity = (FilterShowActivity) getActivity();
105                 mEditor.finalApplyCalled();
106                 activity.backToMain();
107             }
108         });
109
110         showImageStatePanel(activity.isShowingImageStatePanel());
111         return mMainView;
112     }
113
114     @Override
115     public void onDetach() {
116         if (mEditor != null) {
117             mEditor.detach();
118         }
119         super.onDetach();
120     }
121
122     public void showImageStatePanel(boolean show) {
123         View container = mMainView.findViewById(R.id.state_panel_container);
124         FragmentTransaction transaction = null;
125         boolean child = false;
126         if (container == null) {
127             FilterShowActivity activity = (FilterShowActivity) getActivity();
128             container = activity.getMainStatePanelContainer(R.id.state_panel_container);
129         } else {
130             transaction = getChildFragmentManager().beginTransaction();
131             child = true;
132         }
133         if (container == null) {
134             return;
135         } else {
136             transaction = getFragmentManager().beginTransaction();
137         }
138         Fragment panel = getActivity().getSupportFragmentManager().findFragmentByTag(
139                 MainPanel.FRAGMENT_TAG);
140         if (panel == null || panel instanceof MainPanel) {
141             transaction.setCustomAnimations(android.R.anim.fade_in, android.R.anim.fade_out);
142         }
143         if (show) {
144             container.setVisibility(View.VISIBLE);
145             StatePanel statePanel = new StatePanel();
146             transaction.replace(R.id.state_panel_container, statePanel, StatePanel.FRAGMENT_TAG);
147         } else {
148             Fragment statePanel = getChildFragmentManager().findFragmentByTag(StatePanel.FRAGMENT_TAG);
149             if (child) {
150                 statePanel = getFragmentManager().findFragmentByTag(StatePanel.FRAGMENT_TAG);
151             }
152             if (statePanel != null) {
153                 transaction.remove(statePanel);
154             }
155         }
156         transaction.commit();
157     }
158 }