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
17325dc23624160689e59fbac708cf6f222b20d025Daniel Sandlerpackage com.android.launcher3;
184c98d9235d164680186180974719f551cf935d08Winson Chung
194c98d9235d164680186180974719f551cf935d08Winson Chungimport android.content.ComponentName;
204c98d9235d164680186180974719f551cf935d08Winson Chungimport android.content.Context;
214c98d9235d164680186180974719f551cf935d08Winson Chungimport android.util.AttributeSet;
224c98d9235d164680186180974719f551cf935d08Winson Chung
23f07af7b77de0319355e228e8630824d924522d78Kenny Guyimport com.android.launcher3.compat.UserHandleCompat;
24f07af7b77de0319355e228e8630824d924522d78Kenny Guy
2561fa4197c4316bb0f9b05fcefb676f86197a2273Winson Chungpublic class InfoDropTarget extends ButtonDropTarget {
264c98d9235d164680186180974719f551cf935d08Winson Chung
274c98d9235d164680186180974719f551cf935d08Winson Chung    public InfoDropTarget(Context context, AttributeSet attrs) {
284c98d9235d164680186180974719f551cf935d08Winson Chung        this(context, attrs, 0);
294c98d9235d164680186180974719f551cf935d08Winson Chung    }
304c98d9235d164680186180974719f551cf935d08Winson Chung
314c98d9235d164680186180974719f551cf935d08Winson Chung    public InfoDropTarget(Context context, AttributeSet attrs, int defStyle) {
324c98d9235d164680186180974719f551cf935d08Winson Chung        super(context, attrs, defStyle);
334c98d9235d164680186180974719f551cf935d08Winson Chung    }
344c98d9235d164680186180974719f551cf935d08Winson Chung
354c98d9235d164680186180974719f551cf935d08Winson Chung    @Override
364c98d9235d164680186180974719f551cf935d08Winson Chung    protected void onFinishInflate() {
374c98d9235d164680186180974719f551cf935d08Winson Chung        super.onFinishInflate();
384c98d9235d164680186180974719f551cf935d08Winson Chung        // Get the hover color
39e612775922ec9f8cc4e5cb976bc62b3312a3de0eHyunyoung Song        mHoverColor = getResources().getColor(R.color.info_target_hover_tint);
4018bbc6a013e10b1fe384b7d3798622e087c813d2Adam Cohen
41e612775922ec9f8cc4e5cb976bc62b3312a3de0eHyunyoung Song        setDrawable(R.drawable.ic_info_launcher);
424c98d9235d164680186180974719f551cf935d08Winson Chung    }
434c98d9235d164680186180974719f551cf935d08Winson Chung
44e612775922ec9f8cc4e5cb976bc62b3312a3de0eHyunyoung Song    public static void startDetailsActivityForInfo(Object info, Launcher launcher) {
454c98d9235d164680186180974719f551cf935d08Winson Chung        ComponentName componentName = null;
46e612775922ec9f8cc4e5cb976bc62b3312a3de0eHyunyoung Song        if (info instanceof AppInfo) {
47e612775922ec9f8cc4e5cb976bc62b3312a3de0eHyunyoung Song            componentName = ((AppInfo) info).componentName;
48e612775922ec9f8cc4e5cb976bc62b3312a3de0eHyunyoung Song        } else if (info instanceof ShortcutInfo) {
49e612775922ec9f8cc4e5cb976bc62b3312a3de0eHyunyoung Song            componentName = ((ShortcutInfo) info).intent.getComponent();
50e612775922ec9f8cc4e5cb976bc62b3312a3de0eHyunyoung Song        } else if (info instanceof PendingAddItemInfo) {
51e612775922ec9f8cc4e5cb976bc62b3312a3de0eHyunyoung Song            componentName = ((PendingAddItemInfo) info).componentName;
524c98d9235d164680186180974719f551cf935d08Winson Chung        }
53f07af7b77de0319355e228e8630824d924522d78Kenny Guy        final UserHandleCompat user;
54e612775922ec9f8cc4e5cb976bc62b3312a3de0eHyunyoung Song        if (info instanceof ItemInfo) {
55e612775922ec9f8cc4e5cb976bc62b3312a3de0eHyunyoung Song            user = ((ItemInfo) info).user;
56f07af7b77de0319355e228e8630824d924522d78Kenny Guy        } else {
57f07af7b77de0319355e228e8630824d924522d78Kenny Guy            user = UserHandleCompat.myUserHandle();
58f07af7b77de0319355e228e8630824d924522d78Kenny Guy        }
59f07af7b77de0319355e228e8630824d924522d78Kenny Guy
604c98d9235d164680186180974719f551cf935d08Winson Chung        if (componentName != null) {
61e612775922ec9f8cc4e5cb976bc62b3312a3de0eHyunyoung Song            launcher.startApplicationDetailsActivity(componentName, user);
624c98d9235d164680186180974719f551cf935d08Winson Chung        }
634c98d9235d164680186180974719f551cf935d08Winson Chung    }
644c98d9235d164680186180974719f551cf935d08Winson Chung
654c98d9235d164680186180974719f551cf935d08Winson Chung    @Override
66e612775922ec9f8cc4e5cb976bc62b3312a3de0eHyunyoung Song    protected boolean supportsDrop(DragSource source, Object info) {
67e612775922ec9f8cc4e5cb976bc62b3312a3de0eHyunyoung Song        return source.supportsAppInfoDropTarget() && supportsDrop(getContext(), info);
684c98d9235d164680186180974719f551cf935d08Winson Chung    }
694c98d9235d164680186180974719f551cf935d08Winson Chung
70e612775922ec9f8cc4e5cb976bc62b3312a3de0eHyunyoung Song    public static boolean supportsDrop(Context context, Object info) {
71e612775922ec9f8cc4e5cb976bc62b3312a3de0eHyunyoung Song        return info instanceof AppInfo || info instanceof PendingAddItemInfo;
724c98d9235d164680186180974719f551cf935d08Winson Chung    }
734c98d9235d164680186180974719f551cf935d08Winson Chung
74e612775922ec9f8cc4e5cb976bc62b3312a3de0eHyunyoung Song    @Override
75e612775922ec9f8cc4e5cb976bc62b3312a3de0eHyunyoung Song    void completeDrop(DragObject d) {
76e612775922ec9f8cc4e5cb976bc62b3312a3de0eHyunyoung Song        startDetailsActivityForInfo(d.dragInfo, mLauncher);
774c98d9235d164680186180974719f551cf935d08Winson Chung    }
784c98d9235d164680186180974719f551cf935d08Winson Chung}
79