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