EditorPanel.java revision f5eedf1635eba7edfa7d41fd4e991cced978c4b2
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
17package com.android.gallery3d.filtershow.editors;
18
19import android.app.Activity;
20import android.os.Bundle;
21import android.support.v4.app.Fragment;
22import android.support.v4.app.FragmentTransaction;
23import android.view.LayoutInflater;
24import android.view.View;
25import android.view.ViewGroup;
26import android.widget.Button;
27import android.widget.ImageButton;
28import android.widget.LinearLayout;
29import com.android.gallery3d.R;
30import com.android.gallery3d.filtershow.FilterShowActivity;
31import com.android.gallery3d.filtershow.HistoryAdapter;
32import com.android.gallery3d.filtershow.category.MainPanel;
33import com.android.gallery3d.filtershow.imageshow.MasterImage;
34import com.android.gallery3d.filtershow.state.StatePanel;
35
36public 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        HistoryAdapter 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        applyButton.setOnClickListener(new View.OnClickListener() {
92            @Override
93            public void onClick(View v) {
94                MasterImage.getImage().invalidateFiltersOnly();
95                FilterShowActivity activity = (FilterShowActivity) getActivity();
96                activity.backToMain();
97            }
98        });
99
100        Button toggleState = (Button) mMainView.findViewById(R.id.toggle_state);
101
102        mEditor = activity.getEditor(mEditorID);
103        if (mEditor != null) {
104            mEditor.setUpEditorUI(actionControl, editControl, editTitle, toggleState);
105            mEditor.getImageShow().select();
106            mEditor.reflectCurrentFilter();
107            if (mEditor.useUtilityPanel()) {
108                mEditor.openUtilityPanel((LinearLayout) actionControl);
109            }
110        }
111
112        showImageStatePanel(activity.isShowingImageStatePanel());
113        return mMainView;
114    }
115
116    @Override
117    public void onDetach() {
118        if (mEditor != null) {
119            mEditor.detach();
120        }
121        super.onDetach();
122    }
123
124    public void showImageStatePanel(boolean show) {
125        if (mMainView.findViewById(R.id.state_panel_container) == null) {
126            return;
127        }
128        FragmentTransaction transaction = getChildFragmentManager().beginTransaction();
129        Fragment panel = getActivity().getSupportFragmentManager().findFragmentByTag(
130                MainPanel.FRAGMENT_TAG);
131        if (panel == null || panel instanceof MainPanel) {
132            transaction.setCustomAnimations(android.R.anim.fade_in, android.R.anim.fade_out);
133        }
134        if (show) {
135            StatePanel statePanel = new StatePanel();
136            transaction.replace(R.id.state_panel_container, statePanel, StatePanel.FRAGMENT_TAG);
137        } else {
138            Fragment statePanel = getChildFragmentManager().findFragmentByTag(StatePanel.FRAGMENT_TAG);
139            if (statePanel != null) {
140                transaction.remove(statePanel);
141            }
142        }
143        transaction.commit();
144    }
145}
146