Home | History | Annotate | Download | only in editors
      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 }
    159