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 39fa401a10e7e9341daf6f3c5949bf9331902c26d0Sunny Goyal mHoverColor = getResources().getColor(R.color.info_target_hover_tint); 4071b5c0b988a64b3a0613ded5403749bc537ee8a5Sunny Goyal 4140b626b930a1cf51f422fc3c41661fed14fedb84Sunny Goyal setDrawable(R.drawable.ic_info_launcher); 4271b5c0b988a64b3a0613ded5403749bc537ee8a5Sunny Goyal } 4371b5c0b988a64b3a0613ded5403749bc537ee8a5Sunny Goyal 4471b5c0b988a64b3a0613ded5403749bc537ee8a5Sunny Goyal public static void startDetailsActivityForInfo(Object info, Launcher launcher) { 454c98d9235d164680186180974719f551cf935d08Winson Chung ComponentName componentName = null; 4671b5c0b988a64b3a0613ded5403749bc537ee8a5Sunny Goyal if (info instanceof AppInfo) { 4771b5c0b988a64b3a0613ded5403749bc537ee8a5Sunny Goyal componentName = ((AppInfo) info).componentName; 4871b5c0b988a64b3a0613ded5403749bc537ee8a5Sunny Goyal } else if (info instanceof ShortcutInfo) { 4971b5c0b988a64b3a0613ded5403749bc537ee8a5Sunny Goyal componentName = ((ShortcutInfo) info).intent.getComponent(); 5071b5c0b988a64b3a0613ded5403749bc537ee8a5Sunny Goyal } else if (info instanceof PendingAddItemInfo) { 5171b5c0b988a64b3a0613ded5403749bc537ee8a5Sunny Goyal componentName = ((PendingAddItemInfo) info).componentName; 524c98d9235d164680186180974719f551cf935d08Winson Chung } 53f07af7b77de0319355e228e8630824d924522d78Kenny Guy final UserHandleCompat user; 5471b5c0b988a64b3a0613ded5403749bc537ee8a5Sunny Goyal if (info instanceof ItemInfo) { 5571b5c0b988a64b3a0613ded5403749bc537ee8a5Sunny Goyal user = ((ItemInfo) info).user; 56f07af7b77de0319355e228e8630824d924522d78Kenny Guy } else { 57f07af7b77de0319355e228e8630824d924522d78Kenny Guy user = UserHandleCompat.myUserHandle(); 58f07af7b77de0319355e228e8630824d924522d78Kenny Guy } 59f07af7b77de0319355e228e8630824d924522d78Kenny Guy 604c98d9235d164680186180974719f551cf935d08Winson Chung if (componentName != null) { 6171b5c0b988a64b3a0613ded5403749bc537ee8a5Sunny Goyal launcher.startApplicationDetailsActivity(componentName, user); 624c98d9235d164680186180974719f551cf935d08Winson Chung } 634c98d9235d164680186180974719f551cf935d08Winson Chung } 644c98d9235d164680186180974719f551cf935d08Winson Chung 654c98d9235d164680186180974719f551cf935d08Winson Chung @Override 66fa401a10e7e9341daf6f3c5949bf9331902c26d0Sunny Goyal protected boolean supportsDrop(DragSource source, Object info) { 671a70cef9884270f2f0a760f079a10fdfb1544c98Sunny Goyal return source.supportsAppInfoDropTarget() && supportsDrop(getContext(), info); 681a70cef9884270f2f0a760f079a10fdfb1544c98Sunny Goyal } 691a70cef9884270f2f0a760f079a10fdfb1544c98Sunny Goyal 701a70cef9884270f2f0a760f079a10fdfb1544c98Sunny Goyal public static boolean supportsDrop(Context context, Object info) { 71d7da55fc3230df43b3b0090960b3184e88309ff5Sunny Goyal return info instanceof AppInfo || info instanceof PendingAddItemInfo; 724c98d9235d164680186180974719f551cf935d08Winson Chung } 734c98d9235d164680186180974719f551cf935d08Winson Chung 744c98d9235d164680186180974719f551cf935d08Winson Chung @Override 75fa401a10e7e9341daf6f3c5949bf9331902c26d0Sunny Goyal void completeDrop(DragObject d) { 76fa401a10e7e9341daf6f3c5949bf9331902c26d0Sunny Goyal startDetailsActivityForInfo(d.dragInfo, mLauncher); 774c98d9235d164680186180974719f551cf935d08Winson Chung } 784c98d9235d164680186180974719f551cf935d08Winson Chung} 79