/* * Copyright (C) 2011 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.launcher2; import android.content.Context; import android.util.AttributeSet; import android.view.View; import android.widget.FrameLayout; import com.android.launcher.R; /* * Ths bar will manage the transition between the QSB search bar and the delete drop * targets so that each of the individual IconDropTargets don't have to. */ public class SearchDropTargetBar extends FrameLayout implements DragController.DragListener { private static final int sTransitionInDuration = 275; private static final int sTransitionOutDuration = 100; private boolean mIsSearchBarHidden; private View mQSBSearchBar; private View mDropTargetBar; private ButtonDropTarget mInfoDropTarget; private ButtonDropTarget mDeleteDropTarget; public SearchDropTargetBar(Context context, AttributeSet attrs) { this(context, attrs, 0); } public SearchDropTargetBar(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } public void setup(Launcher launcher, DragController dragController) { dragController.addDragListener(this); dragController.addDragListener(mInfoDropTarget); dragController.addDragListener(mDeleteDropTarget); dragController.addDropTarget(mInfoDropTarget); dragController.addDropTarget(mDeleteDropTarget); mInfoDropTarget.setLauncher(launcher); mDeleteDropTarget.setLauncher(launcher); mDropTargetBar.setBackgroundColor(0x33000000); } @Override protected void onFinishInflate() { super.onFinishInflate(); // Get the individual components mQSBSearchBar = findViewById(R.id.qsb_search_bar); mDropTargetBar = findViewById(R.id.drag_target_bar); mInfoDropTarget = (ButtonDropTarget) mDropTargetBar.findViewById(R.id.info_target); mDeleteDropTarget = (ButtonDropTarget) mDropTargetBar.findViewById(R.id.delete_target); } /* * Shows and hides the search bar. */ public void showSearchBar(boolean animated) { if (animated) { mQSBSearchBar.animate().alpha(1f).setDuration(sTransitionInDuration); } else { mQSBSearchBar.setAlpha(1f); } mIsSearchBarHidden = false; } public void hideSearchBar(boolean animated) { if (animated) { mQSBSearchBar.animate().alpha(0f).setDuration(sTransitionOutDuration); } else { mQSBSearchBar.setAlpha(0f); } mIsSearchBarHidden = true; } /* * Gets various transition durations. */ public int getTransitionInDuration() { return sTransitionInDuration; } public int getTransitionOutDuration() { return sTransitionOutDuration; } /* * DragController.DragListener implementation */ @Override public void onDragStart(DragSource source, Object info, int dragAction) { // Animate out the QSB search bar, and animate in the drop target bar mDropTargetBar.animate().alpha(1f).setDuration(sTransitionInDuration); if (!mIsSearchBarHidden) { mQSBSearchBar.animate().alpha(0f).setDuration(sTransitionOutDuration); } } @Override public void onDragEnd() { // Restore the QSB search bar, and animate out the drop target bar mDropTargetBar.animate().alpha(0f).setDuration(sTransitionOutDuration); if (!mIsSearchBarHidden) { mQSBSearchBar.animate().alpha(1f).setDuration(sTransitionInDuration); } } }