OSDN Git Service

Merge "Import translations. DO NOT MERGE"
[android-x86/packages-apps-Gallery2.git] / src / com / android / gallery3d / filtershow / category / MainPanel.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.category;
18
19 import android.os.Bundle;
20 import android.support.v4.app.Fragment;
21 import android.support.v4.app.FragmentTransaction;
22 import android.view.LayoutInflater;
23 import android.view.View;
24 import android.view.ViewGroup;
25 import android.widget.ImageButton;
26 import android.widget.LinearLayout;
27
28 import com.android.gallery3d.R;
29 import com.android.gallery3d.filtershow.FilterShowActivity;
30 import com.android.gallery3d.filtershow.state.StatePanel;
31
32 public class MainPanel extends Fragment {
33
34     private static final String LOGTAG = "MainPanel";
35
36     private LinearLayout mMainView;
37     private ImageButton looksButton;
38     private ImageButton bordersButton;
39     private ImageButton geometryButton;
40     private ImageButton filtersButton;
41
42     public static final String FRAGMENT_TAG = "MainPanel";
43     public static final int LOOKS = 0;
44     public static final int BORDERS = 1;
45     public static final int GEOMETRY = 2;
46     public static final int FILTERS = 3;
47
48     private int mCurrentSelected = -1;
49
50     private void selection(int position, boolean value) {
51         if (value) {
52             FilterShowActivity activity = (FilterShowActivity) getActivity();
53             activity.setCurrentPanel(position);
54         }
55         switch (position) {
56             case LOOKS: {
57                 looksButton.setSelected(value);
58                 break;
59             }
60             case BORDERS: {
61                 bordersButton.setSelected(value);
62                 break;
63             }
64             case GEOMETRY: {
65                 geometryButton.setSelected(value);
66                 break;
67             }
68             case FILTERS: {
69                 filtersButton.setSelected(value);
70                 break;
71             }
72         }
73     }
74
75     @Override
76     public void onDestroyView() {
77         super.onDestroyView();
78         if (mMainView != null) {
79             if (mMainView.getParent() != null) {
80                 ViewGroup parent = (ViewGroup) mMainView.getParent();
81                 parent.removeView(mMainView);
82             }
83         }
84     }
85
86     @Override
87     public View onCreateView(LayoutInflater inflater, ViewGroup container,
88                              Bundle savedInstanceState) {
89
90         mMainView = (LinearLayout) inflater.inflate(
91                 R.layout.filtershow_main_panel, null, false);
92
93         looksButton = (ImageButton) mMainView.findViewById(R.id.fxButton);
94         bordersButton = (ImageButton) mMainView.findViewById(R.id.borderButton);
95         geometryButton = (ImageButton) mMainView.findViewById(R.id.geometryButton);
96         filtersButton = (ImageButton) mMainView.findViewById(R.id.colorsButton);
97
98         looksButton.setOnClickListener(new View.OnClickListener() {
99             @Override
100             public void onClick(View v) {
101                 showPanel(LOOKS);
102             }
103         });
104         bordersButton.setOnClickListener(new View.OnClickListener() {
105             @Override
106             public void onClick(View v) {
107                 showPanel(BORDERS);
108             }
109         });
110         geometryButton.setOnClickListener(new View.OnClickListener() {
111             @Override
112             public void onClick(View v) {
113                 showPanel(GEOMETRY);
114             }
115         });
116         filtersButton.setOnClickListener(new View.OnClickListener() {
117             @Override
118             public void onClick(View v) {
119                 showPanel(FILTERS);
120             }
121         });
122
123         FilterShowActivity activity = (FilterShowActivity) getActivity();
124         showImageStatePanel(activity.isShowingImageStatePanel());
125         showPanel(activity.getCurrentPanel());
126         return mMainView;
127     }
128
129     private boolean isRightAnimation(int newPos) {
130         if (newPos < mCurrentSelected) {
131             return false;
132         }
133         return true;
134     }
135
136     private void setCategoryFragment(CategoryPanel category, boolean fromRight) {
137         FragmentTransaction transaction = getChildFragmentManager().beginTransaction();
138         if (fromRight) {
139             transaction.setCustomAnimations(R.anim.slide_in_right, R.anim.slide_out_right);
140         } else {
141             transaction.setCustomAnimations(R.anim.slide_in_left, R.anim.slide_out_left);
142         }
143         transaction.replace(R.id.category_panel_container, category, CategoryPanel.FRAGMENT_TAG);
144         transaction.commit();
145     }
146
147     public void loadCategoryLookPanel() {
148         if (mCurrentSelected == LOOKS) {
149             return;
150         }
151         boolean fromRight = isRightAnimation(LOOKS);
152         selection(mCurrentSelected, false);
153         CategoryPanel categoryPanel = new CategoryPanel();
154         categoryPanel.setAdapter(LOOKS);
155         setCategoryFragment(categoryPanel, fromRight);
156         mCurrentSelected = LOOKS;
157         selection(mCurrentSelected, true);
158     }
159
160     public void loadCategoryBorderPanel() {
161         if (mCurrentSelected == BORDERS) {
162             return;
163         }
164         boolean fromRight = isRightAnimation(BORDERS);
165         selection(mCurrentSelected, false);
166         CategoryPanel categoryPanel = new CategoryPanel();
167         categoryPanel.setAdapter(BORDERS);
168         setCategoryFragment(categoryPanel, fromRight);
169         mCurrentSelected = BORDERS;
170         selection(mCurrentSelected, true);
171     }
172
173     public void loadCategoryGeometryPanel() {
174         if (mCurrentSelected == GEOMETRY) {
175             return;
176         }
177         boolean fromRight = isRightAnimation(GEOMETRY);
178         selection(mCurrentSelected, false);
179         CategoryPanel categoryPanel = new CategoryPanel();
180         categoryPanel.setAdapter(GEOMETRY);
181         setCategoryFragment(categoryPanel, fromRight);
182         mCurrentSelected = GEOMETRY;
183         selection(mCurrentSelected, true);
184     }
185
186     public void loadCategoryFiltersPanel() {
187         if (mCurrentSelected == FILTERS) {
188             return;
189         }
190         boolean fromRight = isRightAnimation(FILTERS);
191         selection(mCurrentSelected, false);
192         CategoryPanel categoryPanel = new CategoryPanel();
193         categoryPanel.setAdapter(FILTERS);
194         setCategoryFragment(categoryPanel, fromRight);
195         mCurrentSelected = FILTERS;
196         selection(mCurrentSelected, true);
197     }
198
199     public void showPanel(int currentPanel) {
200         switch (currentPanel) {
201             case LOOKS: {
202                 loadCategoryLookPanel();
203                 break;
204             }
205             case BORDERS: {
206                 loadCategoryBorderPanel();
207                 break;
208             }
209             case GEOMETRY: {
210                 loadCategoryGeometryPanel();
211                 break;
212             }
213             case FILTERS: {
214                 loadCategoryFiltersPanel();
215                 break;
216             }
217         }
218     }
219
220     public void showImageStatePanel(boolean show) {
221         if (mMainView.findViewById(R.id.state_panel_container) == null) {
222             return;
223         }
224         FragmentTransaction transaction = getChildFragmentManager().beginTransaction();
225         final View container = mMainView.findViewById(R.id.state_panel_container);
226         if (show) {
227             container.setVisibility(View.VISIBLE);
228             StatePanel statePanel = new StatePanel();
229             transaction.replace(R.id.state_panel_container, statePanel, StatePanel.FRAGMENT_TAG);
230         } else {
231             container.setVisibility(View.GONE);
232             Fragment statePanel = getChildFragmentManager().findFragmentByTag(StatePanel.FRAGMENT_TAG);
233             if (statePanel != null) {
234                 transaction.remove(statePanel);
235             }
236         }
237         transaction.commit();
238     }
239 }