SearchDropTargetBar.java revision 4c98d9235d164680186180974719f551cf935d08
14c98d9235d164680186180974719f551cf935d08Winson Chung/*
24c98d9235d164680186180974719f551cf935d08Winson Chung * Copyright (C) 2011 The Android Open Source Project
34c98d9235d164680186180974719f551cf935d08Winson Chung *
44c98d9235d164680186180974719f551cf935d08Winson Chung * Licensed under the Apache License, Version 2.0 (the "License");
54c98d9235d164680186180974719f551cf935d08Winson Chung * you may not use this file except in compliance with the License.
64c98d9235d164680186180974719f551cf935d08Winson Chung * You may obtain a copy of the License at
74c98d9235d164680186180974719f551cf935d08Winson Chung *
84c98d9235d164680186180974719f551cf935d08Winson Chung *      http://www.apache.org/licenses/LICENSE-2.0
94c98d9235d164680186180974719f551cf935d08Winson Chung *
104c98d9235d164680186180974719f551cf935d08Winson Chung * Unless required by applicable law or agreed to in writing, software
114c98d9235d164680186180974719f551cf935d08Winson Chung * distributed under the License is distributed on an "AS IS" BASIS,
124c98d9235d164680186180974719f551cf935d08Winson Chung * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
134c98d9235d164680186180974719f551cf935d08Winson Chung * See the License for the specific language governing permissions and
144c98d9235d164680186180974719f551cf935d08Winson Chung * limitations under the License.
154c98d9235d164680186180974719f551cf935d08Winson Chung */
164c98d9235d164680186180974719f551cf935d08Winson Chung
174c98d9235d164680186180974719f551cf935d08Winson Chungpackage com.android.launcher2;
184c98d9235d164680186180974719f551cf935d08Winson Chung
194c98d9235d164680186180974719f551cf935d08Winson Chungimport android.content.Context;
204c98d9235d164680186180974719f551cf935d08Winson Chungimport android.content.res.Resources;
214c98d9235d164680186180974719f551cf935d08Winson Chungimport android.graphics.PorterDuff;
224c98d9235d164680186180974719f551cf935d08Winson Chungimport android.graphics.PorterDuffColorFilter;
234c98d9235d164680186180974719f551cf935d08Winson Chungimport android.util.AttributeSet;
244c98d9235d164680186180974719f551cf935d08Winson Chungimport android.view.View;
254c98d9235d164680186180974719f551cf935d08Winson Chungimport android.widget.FrameLayout;
264c98d9235d164680186180974719f551cf935d08Winson Chung
274c98d9235d164680186180974719f551cf935d08Winson Chungimport com.android.launcher.R;
284c98d9235d164680186180974719f551cf935d08Winson Chung
294c98d9235d164680186180974719f551cf935d08Winson Chung/*
304c98d9235d164680186180974719f551cf935d08Winson Chung * Ths bar will manage the transition between the QSB search bar and the delete drop
314c98d9235d164680186180974719f551cf935d08Winson Chung * targets so that each of the individual IconDropTargets don't have to.
324c98d9235d164680186180974719f551cf935d08Winson Chung */
334c98d9235d164680186180974719f551cf935d08Winson Chungpublic class SearchDropTargetBar extends FrameLayout implements DragController.DragListener {
344c98d9235d164680186180974719f551cf935d08Winson Chung
354c98d9235d164680186180974719f551cf935d08Winson Chung    private static final int sTransitionInDuration = 275;
364c98d9235d164680186180974719f551cf935d08Winson Chung    private static final int sTransitionOutDuration = 200;
374c98d9235d164680186180974719f551cf935d08Winson Chung
384c98d9235d164680186180974719f551cf935d08Winson Chung    private View mQSBSearchBar;
394c98d9235d164680186180974719f551cf935d08Winson Chung    private View mDropTargetBar;
404c98d9235d164680186180974719f551cf935d08Winson Chung    private IconDropTarget mInfoDropTarget;
414c98d9235d164680186180974719f551cf935d08Winson Chung    private IconDropTarget mDeleteDropTarget;
424c98d9235d164680186180974719f551cf935d08Winson Chung
434c98d9235d164680186180974719f551cf935d08Winson Chung    public SearchDropTargetBar(Context context, AttributeSet attrs) {
444c98d9235d164680186180974719f551cf935d08Winson Chung        this(context, attrs, 0);
454c98d9235d164680186180974719f551cf935d08Winson Chung    }
464c98d9235d164680186180974719f551cf935d08Winson Chung
474c98d9235d164680186180974719f551cf935d08Winson Chung    public SearchDropTargetBar(Context context, AttributeSet attrs, int defStyle) {
484c98d9235d164680186180974719f551cf935d08Winson Chung        super(context, attrs, defStyle);
494c98d9235d164680186180974719f551cf935d08Winson Chung    }
504c98d9235d164680186180974719f551cf935d08Winson Chung
514c98d9235d164680186180974719f551cf935d08Winson Chung    public void setup(Launcher launcher, DragController dragController) {
524c98d9235d164680186180974719f551cf935d08Winson Chung        dragController.addDragListener(this);
534c98d9235d164680186180974719f551cf935d08Winson Chung        dragController.addDragListener(mInfoDropTarget);
544c98d9235d164680186180974719f551cf935d08Winson Chung        dragController.addDragListener(mDeleteDropTarget);
554c98d9235d164680186180974719f551cf935d08Winson Chung        dragController.addDropTarget(mInfoDropTarget);
564c98d9235d164680186180974719f551cf935d08Winson Chung        dragController.addDropTarget(mDeleteDropTarget);
574c98d9235d164680186180974719f551cf935d08Winson Chung        mInfoDropTarget.setLauncher(launcher);
584c98d9235d164680186180974719f551cf935d08Winson Chung        mDeleteDropTarget.setLauncher(launcher);
594c98d9235d164680186180974719f551cf935d08Winson Chung    }
604c98d9235d164680186180974719f551cf935d08Winson Chung
614c98d9235d164680186180974719f551cf935d08Winson Chung    @Override
624c98d9235d164680186180974719f551cf935d08Winson Chung    protected void onFinishInflate() {
634c98d9235d164680186180974719f551cf935d08Winson Chung        super.onFinishInflate();
644c98d9235d164680186180974719f551cf935d08Winson Chung
654c98d9235d164680186180974719f551cf935d08Winson Chung        // Get the individual components
664c98d9235d164680186180974719f551cf935d08Winson Chung        mQSBSearchBar = findViewById(R.id.qsb_search_bar);
674c98d9235d164680186180974719f551cf935d08Winson Chung        mDropTargetBar = findViewById(R.id.drag_target_bar);
684c98d9235d164680186180974719f551cf935d08Winson Chung        mInfoDropTarget = (IconDropTarget) mDropTargetBar.findViewById(R.id.info_target);
694c98d9235d164680186180974719f551cf935d08Winson Chung        mDeleteDropTarget = (IconDropTarget) mDropTargetBar.findViewById(R.id.delete_target);
704c98d9235d164680186180974719f551cf935d08Winson Chung    }
714c98d9235d164680186180974719f551cf935d08Winson Chung
724c98d9235d164680186180974719f551cf935d08Winson Chung    /*
734c98d9235d164680186180974719f551cf935d08Winson Chung     * DragController.DragListener implementation
744c98d9235d164680186180974719f551cf935d08Winson Chung     */
754c98d9235d164680186180974719f551cf935d08Winson Chung    @Override
764c98d9235d164680186180974719f551cf935d08Winson Chung    public void onDragStart(DragSource source, Object info, int dragAction) {
774c98d9235d164680186180974719f551cf935d08Winson Chung        // Animate out the QSB search bar, and animate in the drop target bar
784c98d9235d164680186180974719f551cf935d08Winson Chung        mQSBSearchBar.animate().alpha(0f).setDuration(sTransitionOutDuration);
794c98d9235d164680186180974719f551cf935d08Winson Chung        mDropTargetBar.animate().alpha(1f).setDuration(sTransitionInDuration);
804c98d9235d164680186180974719f551cf935d08Winson Chung    }
814c98d9235d164680186180974719f551cf935d08Winson Chung
824c98d9235d164680186180974719f551cf935d08Winson Chung    @Override
834c98d9235d164680186180974719f551cf935d08Winson Chung    public void onDragEnd() {
844c98d9235d164680186180974719f551cf935d08Winson Chung        // Restore the QSB search bar, and animate out the drop target bar
854c98d9235d164680186180974719f551cf935d08Winson Chung        mDropTargetBar.animate().alpha(0f).setDuration(sTransitionOutDuration);
864c98d9235d164680186180974719f551cf935d08Winson Chung        mQSBSearchBar.animate().alpha(1f).setDuration(sTransitionInDuration);
874c98d9235d164680186180974719f551cf935d08Winson Chung    }
884c98d9235d164680186180974719f551cf935d08Winson Chung}
89