13d503fbd9468fb2b9fa645f4f7b91e11229edbfaWinson Chung/* 23d503fbd9468fb2b9fa645f4f7b91e11229edbfaWinson Chung * Copyright (C) 2011 The Android Open Source Project 33d503fbd9468fb2b9fa645f4f7b91e11229edbfaWinson Chung * 43d503fbd9468fb2b9fa645f4f7b91e11229edbfaWinson Chung * Licensed under the Apache License, Version 2.0 (the "License"); 53d503fbd9468fb2b9fa645f4f7b91e11229edbfaWinson Chung * you may not use this file except in compliance with the License. 63d503fbd9468fb2b9fa645f4f7b91e11229edbfaWinson Chung * You may obtain a copy of the License at 73d503fbd9468fb2b9fa645f4f7b91e11229edbfaWinson Chung * 83d503fbd9468fb2b9fa645f4f7b91e11229edbfaWinson Chung * http://www.apache.org/licenses/LICENSE-2.0 93d503fbd9468fb2b9fa645f4f7b91e11229edbfaWinson Chung * 103d503fbd9468fb2b9fa645f4f7b91e11229edbfaWinson Chung * Unless required by applicable law or agreed to in writing, software 113d503fbd9468fb2b9fa645f4f7b91e11229edbfaWinson Chung * distributed under the License is distributed on an "AS IS" BASIS, 123d503fbd9468fb2b9fa645f4f7b91e11229edbfaWinson Chung * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 133d503fbd9468fb2b9fa645f4f7b91e11229edbfaWinson Chung * See the License for the specific language governing permissions and 143d503fbd9468fb2b9fa645f4f7b91e11229edbfaWinson Chung * limitations under the License. 153d503fbd9468fb2b9fa645f4f7b91e11229edbfaWinson Chung */ 163d503fbd9468fb2b9fa645f4f7b91e11229edbfaWinson Chung 17325dc23624160689e59fbac708cf6f222b20d025Daniel Sandlerpackage com.android.launcher3; 183d503fbd9468fb2b9fa645f4f7b91e11229edbfaWinson Chung 19e25af795647a19f1a0d60bc4baea5a996d215fdfAdam Cohenimport android.content.ComponentName; 203d503fbd9468fb2b9fa645f4f7b91e11229edbfaWinson Chungimport android.content.Context; 213d503fbd9468fb2b9fa645f4f7b91e11229edbfaWinson Chungimport android.content.res.Configuration; 220e721a4005b4d119cf641ca0dd0d8744672646f0Winson Chungimport android.content.res.Resources; 233a6e7f330e680ef718ca7c0921d842efb4d8bbaeWinson Chungimport android.graphics.Rect; 24c58497ee619416c4949b16eb43486c11618b69e5Winson Chungimport android.graphics.drawable.Drawable; 253d503fbd9468fb2b9fa645f4f7b91e11229edbfaWinson Chungimport android.util.AttributeSet; 2664359a53dc827797917a8d9a0697a91996789801Winson Chungimport android.util.Log; 27c58497ee619416c4949b16eb43486c11618b69e5Winson Chungimport android.view.LayoutInflater; 28a5f4e488dff461fbbc61400a8d284d9886164f76Adam Cohenimport android.view.MotionEvent; 293d503fbd9468fb2b9fa645f4f7b91e11229edbfaWinson Chungimport android.view.View; 303d503fbd9468fb2b9fa645f4f7b91e11229edbfaWinson Chungimport android.widget.FrameLayout; 3161f560d92ab4b11a61beeb8df97b9952027e08e4Adam Cohenimport android.widget.TextView; 323d503fbd9468fb2b9fa645f4f7b91e11229edbfaWinson Chung 33e25af795647a19f1a0d60bc4baea5a996d215fdfAdam Cohenimport java.util.ArrayList; 34e25af795647a19f1a0d60bc4baea5a996d215fdfAdam Cohen 353d503fbd9468fb2b9fa645f4f7b91e11229edbfaWinson Chungpublic class Hotseat extends FrameLayout { 36f30ad5f1bf33baceeca6b770464fb543b58af985Winson Chung private static final String TAG = "Hotseat"; 373d503fbd9468fb2b9fa645f4f7b91e11229edbfaWinson Chung 383d503fbd9468fb2b9fa645f4f7b91e11229edbfaWinson Chung private CellLayout mContent; 393d503fbd9468fb2b9fa645f4f7b91e11229edbfaWinson Chung 40c58497ee619416c4949b16eb43486c11618b69e5Winson Chung private Launcher mLauncher; 41c58497ee619416c4949b16eb43486c11618b69e5Winson Chung 420dca1ec41479a74f8da080224fa0c7eacab674d6Andrew Flynn private int mAllAppsButtonRank; 43307fe23f125cbbd5512ad8d4660025f2ab68f30bAdam Cohen 440e721a4005b4d119cf641ca0dd0d8744672646f0Winson Chung private boolean mTransposeLayoutWithOrientation; 453d503fbd9468fb2b9fa645f4f7b91e11229edbfaWinson Chung private boolean mIsLandscape; 463d503fbd9468fb2b9fa645f4f7b91e11229edbfaWinson Chung 473d503fbd9468fb2b9fa645f4f7b91e11229edbfaWinson Chung public Hotseat(Context context) { 483d503fbd9468fb2b9fa645f4f7b91e11229edbfaWinson Chung this(context, null); 493d503fbd9468fb2b9fa645f4f7b91e11229edbfaWinson Chung } 503d503fbd9468fb2b9fa645f4f7b91e11229edbfaWinson Chung 513d503fbd9468fb2b9fa645f4f7b91e11229edbfaWinson Chung public Hotseat(Context context, AttributeSet attrs) { 523d503fbd9468fb2b9fa645f4f7b91e11229edbfaWinson Chung this(context, attrs, 0); 533d503fbd9468fb2b9fa645f4f7b91e11229edbfaWinson Chung } 543d503fbd9468fb2b9fa645f4f7b91e11229edbfaWinson Chung 553d503fbd9468fb2b9fa645f4f7b91e11229edbfaWinson Chung public Hotseat(Context context, AttributeSet attrs, int defStyle) { 563d503fbd9468fb2b9fa645f4f7b91e11229edbfaWinson Chung super(context, attrs, defStyle); 573d503fbd9468fb2b9fa645f4f7b91e11229edbfaWinson Chung 580e721a4005b4d119cf641ca0dd0d8744672646f0Winson Chung Resources r = context.getResources(); 590e721a4005b4d119cf641ca0dd0d8744672646f0Winson Chung mTransposeLayoutWithOrientation = 600e721a4005b4d119cf641ca0dd0d8744672646f0Winson Chung r.getBoolean(R.bool.hotseat_transpose_layout_with_orientation); 613d503fbd9468fb2b9fa645f4f7b91e11229edbfaWinson Chung mIsLandscape = context.getResources().getConfiguration().orientation == 623d503fbd9468fb2b9fa645f4f7b91e11229edbfaWinson Chung Configuration.ORIENTATION_LANDSCAPE; 633d503fbd9468fb2b9fa645f4f7b91e11229edbfaWinson Chung } 643d503fbd9468fb2b9fa645f4f7b91e11229edbfaWinson Chung 653d503fbd9468fb2b9fa645f4f7b91e11229edbfaWinson Chung public void setup(Launcher launcher) { 66c58497ee619416c4949b16eb43486c11618b69e5Winson Chung mLauncher = launcher; 67ac56cff1860b71d3f164aedd268703936e08fdc0Adam Cohen setOnKeyListener(new HotseatIconKeyEventListener()); 683d503fbd9468fb2b9fa645f4f7b91e11229edbfaWinson Chung } 693d503fbd9468fb2b9fa645f4f7b91e11229edbfaWinson Chung 703d503fbd9468fb2b9fa645f4f7b91e11229edbfaWinson Chung CellLayout getLayout() { 713d503fbd9468fb2b9fa645f4f7b91e11229edbfaWinson Chung return mContent; 723d503fbd9468fb2b9fa645f4f7b91e11229edbfaWinson Chung } 7311a1a53651924b544513f1f6971a735b18d67539Winson Chung 7411a1a53651924b544513f1f6971a735b18d67539Winson Chung /** 7511a1a53651924b544513f1f6971a735b18d67539Winson Chung * Registers the specified listener on the cell layout of the hotseat. 7611a1a53651924b544513f1f6971a735b18d67539Winson Chung */ 7711a1a53651924b544513f1f6971a735b18d67539Winson Chung @Override 7811a1a53651924b544513f1f6971a735b18d67539Winson Chung public void setOnLongClickListener(OnLongClickListener l) { 7911a1a53651924b544513f1f6971a735b18d67539Winson Chung mContent.setOnLongClickListener(l); 8011a1a53651924b544513f1f6971a735b18d67539Winson Chung } 810e721a4005b4d119cf641ca0dd0d8744672646f0Winson Chung 820e721a4005b4d119cf641ca0dd0d8744672646f0Winson Chung private boolean hasVerticalHotseat() { 830e721a4005b4d119cf641ca0dd0d8744672646f0Winson Chung return (mIsLandscape && mTransposeLayoutWithOrientation); 840e721a4005b4d119cf641ca0dd0d8744672646f0Winson Chung } 853d503fbd9468fb2b9fa645f4f7b91e11229edbfaWinson Chung 863d503fbd9468fb2b9fa645f4f7b91e11229edbfaWinson Chung /* Get the orientation invariant order of the item in the hotseat for persistence. */ 873d503fbd9468fb2b9fa645f4f7b91e11229edbfaWinson Chung int getOrderInHotseat(int x, int y) { 880e721a4005b4d119cf641ca0dd0d8744672646f0Winson Chung return hasVerticalHotseat() ? (mContent.getCountY() - y - 1) : x; 893d503fbd9468fb2b9fa645f4f7b91e11229edbfaWinson Chung } 903d503fbd9468fb2b9fa645f4f7b91e11229edbfaWinson Chung /* Get the orientation specific coordinates given an invariant order in the hotseat. */ 913d503fbd9468fb2b9fa645f4f7b91e11229edbfaWinson Chung int getCellXFromOrder(int rank) { 920e721a4005b4d119cf641ca0dd0d8744672646f0Winson Chung return hasVerticalHotseat() ? 0 : rank; 933d503fbd9468fb2b9fa645f4f7b91e11229edbfaWinson Chung } 943d503fbd9468fb2b9fa645f4f7b91e11229edbfaWinson Chung int getCellYFromOrder(int rank) { 950e721a4005b4d119cf641ca0dd0d8744672646f0Winson Chung return hasVerticalHotseat() ? (mContent.getCountY() - (rank + 1)) : 0; 963d503fbd9468fb2b9fa645f4f7b91e11229edbfaWinson Chung } 970dca1ec41479a74f8da080224fa0c7eacab674d6Andrew Flynn public boolean isAllAppsButtonRank(int rank) { 98c58497ee619416c4949b16eb43486c11618b69e5Winson Chung if (AppsCustomizePagedView.DISABLE_ALL_APPS) { 99c58497ee619416c4949b16eb43486c11618b69e5Winson Chung return false; 100c58497ee619416c4949b16eb43486c11618b69e5Winson Chung } else { 101c58497ee619416c4949b16eb43486c11618b69e5Winson Chung return rank == mAllAppsButtonRank; 102c58497ee619416c4949b16eb43486c11618b69e5Winson Chung } 103f30ad5f1bf33baceeca6b770464fb543b58af985Winson Chung } 1043d503fbd9468fb2b9fa645f4f7b91e11229edbfaWinson Chung 1053a6e7f330e680ef718ca7c0921d842efb4d8bbaeWinson Chung /** This returns the coordinates of an app in a given cell, relative to the DragLayer */ 1063a6e7f330e680ef718ca7c0921d842efb4d8bbaeWinson Chung Rect getCellCoordinates(int cellX, int cellY) { 1073a6e7f330e680ef718ca7c0921d842efb4d8bbaeWinson Chung Rect coords = new Rect(); 1083a6e7f330e680ef718ca7c0921d842efb4d8bbaeWinson Chung mContent.cellToRect(cellX, cellY, 1, 1, coords); 1093a6e7f330e680ef718ca7c0921d842efb4d8bbaeWinson Chung int[] hotseatInParent = new int[2]; 1103a6e7f330e680ef718ca7c0921d842efb4d8bbaeWinson Chung Utilities.getDescendantCoordRelativeToParent(this, mLauncher.getDragLayer(), 1113a6e7f330e680ef718ca7c0921d842efb4d8bbaeWinson Chung hotseatInParent, false); 1123a6e7f330e680ef718ca7c0921d842efb4d8bbaeWinson Chung coords.offset(hotseatInParent[0], hotseatInParent[1]); 1133a6e7f330e680ef718ca7c0921d842efb4d8bbaeWinson Chung 1143a6e7f330e680ef718ca7c0921d842efb4d8bbaeWinson Chung // Center the icon 1153a6e7f330e680ef718ca7c0921d842efb4d8bbaeWinson Chung int cWidth = mContent.getShortcutsAndWidgets().getCellContentWidth(); 1163a6e7f330e680ef718ca7c0921d842efb4d8bbaeWinson Chung int cHeight = mContent.getShortcutsAndWidgets().getCellContentHeight(); 1173a6e7f330e680ef718ca7c0921d842efb4d8bbaeWinson Chung int cellPaddingX = (int) Math.max(0, ((coords.width() - cWidth) / 2f)); 1183a6e7f330e680ef718ca7c0921d842efb4d8bbaeWinson Chung int cellPaddingY = (int) Math.max(0, ((coords.height() - cHeight) / 2f)); 1193a6e7f330e680ef718ca7c0921d842efb4d8bbaeWinson Chung coords.offset(cellPaddingX, cellPaddingY); 1203a6e7f330e680ef718ca7c0921d842efb4d8bbaeWinson Chung 1213a6e7f330e680ef718ca7c0921d842efb4d8bbaeWinson Chung return coords; 1223a6e7f330e680ef718ca7c0921d842efb4d8bbaeWinson Chung } 1233a6e7f330e680ef718ca7c0921d842efb4d8bbaeWinson Chung 1243d503fbd9468fb2b9fa645f4f7b91e11229edbfaWinson Chung @Override 1253d503fbd9468fb2b9fa645f4f7b91e11229edbfaWinson Chung protected void onFinishInflate() { 1263d503fbd9468fb2b9fa645f4f7b91e11229edbfaWinson Chung super.onFinishInflate(); 1275f8afe6280eae34620067696173e71943e1a30a3Winson Chung LauncherAppState app = LauncherAppState.getInstance(); 1285f8afe6280eae34620067696173e71943e1a30a3Winson Chung DeviceProfile grid = app.getDynamicGrid().getDeviceProfile(); 1295f8afe6280eae34620067696173e71943e1a30a3Winson Chung 130c58497ee619416c4949b16eb43486c11618b69e5Winson Chung mAllAppsButtonRank = grid.hotseatAllAppsRank; 1313d503fbd9468fb2b9fa645f4f7b91e11229edbfaWinson Chung mContent = (CellLayout) findViewById(R.id.layout); 1325f8afe6280eae34620067696173e71943e1a30a3Winson Chung if (grid.isLandscape && !grid.isLargeTablet()) { 1335f8afe6280eae34620067696173e71943e1a30a3Winson Chung mContent.setGridSize(1, (int) grid.numHotseatIcons); 1345f8afe6280eae34620067696173e71943e1a30a3Winson Chung } else { 1355f8afe6280eae34620067696173e71943e1a30a3Winson Chung mContent.setGridSize((int) grid.numHotseatIcons, 1); 1365f8afe6280eae34620067696173e71943e1a30a3Winson Chung } 1370dca1ec41479a74f8da080224fa0c7eacab674d6Andrew Flynn mContent.setIsHotseat(true); 1383d503fbd9468fb2b9fa645f4f7b91e11229edbfaWinson Chung 1393d503fbd9468fb2b9fa645f4f7b91e11229edbfaWinson Chung resetLayout(); 1403d503fbd9468fb2b9fa645f4f7b91e11229edbfaWinson Chung } 1413d503fbd9468fb2b9fa645f4f7b91e11229edbfaWinson Chung 1423d503fbd9468fb2b9fa645f4f7b91e11229edbfaWinson Chung void resetLayout() { 1433d503fbd9468fb2b9fa645f4f7b91e11229edbfaWinson Chung mContent.removeAllViewsInLayout(); 144c58497ee619416c4949b16eb43486c11618b69e5Winson Chung 145c58497ee619416c4949b16eb43486c11618b69e5Winson Chung if (!AppsCustomizePagedView.DISABLE_ALL_APPS) { 146c58497ee619416c4949b16eb43486c11618b69e5Winson Chung // Add the Apps button 147c58497ee619416c4949b16eb43486c11618b69e5Winson Chung Context context = getContext(); 148c58497ee619416c4949b16eb43486c11618b69e5Winson Chung 149c58497ee619416c4949b16eb43486c11618b69e5Winson Chung LayoutInflater inflater = LayoutInflater.from(context); 15061f560d92ab4b11a61beeb8df97b9952027e08e4Adam Cohen TextView allAppsButton = (TextView) 15161f560d92ab4b11a61beeb8df97b9952027e08e4Adam Cohen inflater.inflate(R.layout.all_apps_button, mContent, false); 15261f560d92ab4b11a61beeb8df97b9952027e08e4Adam Cohen Drawable d = context.getResources().getDrawable(R.drawable.all_apps_button_icon); 1530dbd734384df38960515ce49dfcb5e15a394decaWinson Chung Utilities.resizeIconDrawable(d); 15461f560d92ab4b11a61beeb8df97b9952027e08e4Adam Cohen allAppsButton.setCompoundDrawables(null, d, null, null); 155c58497ee619416c4949b16eb43486c11618b69e5Winson Chung 15661f560d92ab4b11a61beeb8df97b9952027e08e4Adam Cohen allAppsButton.setContentDescription(context.getString(R.string.all_apps_button_label)); 15761f560d92ab4b11a61beeb8df97b9952027e08e4Adam Cohen if (mLauncher != null) { 15861f560d92ab4b11a61beeb8df97b9952027e08e4Adam Cohen allAppsButton.setOnTouchListener(mLauncher.getHapticFeedbackTouchListener()); 15961f560d92ab4b11a61beeb8df97b9952027e08e4Adam Cohen } 160c58497ee619416c4949b16eb43486c11618b69e5Winson Chung allAppsButton.setOnClickListener(new View.OnClickListener() { 161c58497ee619416c4949b16eb43486c11618b69e5Winson Chung @Override 162c58497ee619416c4949b16eb43486c11618b69e5Winson Chung public void onClick(android.view.View v) { 163c58497ee619416c4949b16eb43486c11618b69e5Winson Chung if (mLauncher != null) { 164c58497ee619416c4949b16eb43486c11618b69e5Winson Chung mLauncher.onClickAllAppsButton(v); 165c58497ee619416c4949b16eb43486c11618b69e5Winson Chung } 166c58497ee619416c4949b16eb43486c11618b69e5Winson Chung } 167c58497ee619416c4949b16eb43486c11618b69e5Winson Chung }); 168c58497ee619416c4949b16eb43486c11618b69e5Winson Chung 169c58497ee619416c4949b16eb43486c11618b69e5Winson Chung // Note: We do this to ensure that the hotseat is always laid out in the orientation of 170c58497ee619416c4949b16eb43486c11618b69e5Winson Chung // the hotseat in order regardless of which orientation they were added 171c58497ee619416c4949b16eb43486c11618b69e5Winson Chung int x = getCellXFromOrder(mAllAppsButtonRank); 172c58497ee619416c4949b16eb43486c11618b69e5Winson Chung int y = getCellYFromOrder(mAllAppsButtonRank); 173c58497ee619416c4949b16eb43486c11618b69e5Winson Chung CellLayout.LayoutParams lp = new CellLayout.LayoutParams(x,y,1,1); 174c58497ee619416c4949b16eb43486c11618b69e5Winson Chung lp.canReorder = false; 175c58497ee619416c4949b16eb43486c11618b69e5Winson Chung mContent.addViewToCellLayout(allAppsButton, -1, 0, lp, true); 176c58497ee619416c4949b16eb43486c11618b69e5Winson Chung } 1773d503fbd9468fb2b9fa645f4f7b91e11229edbfaWinson Chung } 178e25af795647a19f1a0d60bc4baea5a996d215fdfAdam Cohen 179a5f4e488dff461fbbc61400a8d284d9886164f76Adam Cohen @Override 180a5f4e488dff461fbbc61400a8d284d9886164f76Adam Cohen public boolean onInterceptTouchEvent(MotionEvent ev) { 181a5f4e488dff461fbbc61400a8d284d9886164f76Adam Cohen // We don't want any clicks to go through to the hotseat unless the workspace is in 182a5f4e488dff461fbbc61400a8d284d9886164f76Adam Cohen // the normal state. 183a5f4e488dff461fbbc61400a8d284d9886164f76Adam Cohen if (mLauncher.getWorkspace().isSmall()) { 184a5f4e488dff461fbbc61400a8d284d9886164f76Adam Cohen return true; 185a5f4e488dff461fbbc61400a8d284d9886164f76Adam Cohen } 186a5f4e488dff461fbbc61400a8d284d9886164f76Adam Cohen return false; 187a5f4e488dff461fbbc61400a8d284d9886164f76Adam Cohen } 188a5f4e488dff461fbbc61400a8d284d9886164f76Adam Cohen 189156ab5b22e45b36a1c5edbe5accccf6aefcb4907Winson Chung void addAllAppsFolder(IconCache iconCache, 190eadbfc564d84aaf1d800da3d0d6edf6312f89648Michael Jurka ArrayList<AppInfo> allApps, ArrayList<ComponentName> onWorkspace, 191156ab5b22e45b36a1c5edbe5accccf6aefcb4907Winson Chung Launcher launcher, Workspace workspace) { 192c58497ee619416c4949b16eb43486c11618b69e5Winson Chung if (AppsCustomizePagedView.DISABLE_ALL_APPS) { 193c58497ee619416c4949b16eb43486c11618b69e5Winson Chung FolderInfo fi = new FolderInfo(); 194c58497ee619416c4949b16eb43486c11618b69e5Winson Chung 195c58497ee619416c4949b16eb43486c11618b69e5Winson Chung fi.cellX = getCellXFromOrder(mAllAppsButtonRank); 196c58497ee619416c4949b16eb43486c11618b69e5Winson Chung fi.cellY = getCellYFromOrder(mAllAppsButtonRank); 197c58497ee619416c4949b16eb43486c11618b69e5Winson Chung fi.spanX = 1; 198c58497ee619416c4949b16eb43486c11618b69e5Winson Chung fi.spanY = 1; 199c58497ee619416c4949b16eb43486c11618b69e5Winson Chung fi.container = LauncherSettings.Favorites.CONTAINER_HOTSEAT; 200c58497ee619416c4949b16eb43486c11618b69e5Winson Chung fi.screenId = mAllAppsButtonRank; 201c58497ee619416c4949b16eb43486c11618b69e5Winson Chung fi.itemType = LauncherSettings.Favorites.ITEM_TYPE_FOLDER; 202c58497ee619416c4949b16eb43486c11618b69e5Winson Chung fi.title = "More Apps"; 203c58497ee619416c4949b16eb43486c11618b69e5Winson Chung LauncherModel.addItemToDatabase(launcher, fi, fi.container, fi.screenId, fi.cellX, 204c58497ee619416c4949b16eb43486c11618b69e5Winson Chung fi.cellY, false); 205c58497ee619416c4949b16eb43486c11618b69e5Winson Chung FolderIcon folder = FolderIcon.fromXml(R.layout.folder_icon, launcher, 206c58497ee619416c4949b16eb43486c11618b69e5Winson Chung getLayout(), fi, iconCache); 207c58497ee619416c4949b16eb43486c11618b69e5Winson Chung workspace.addInScreen(folder, fi.container, fi.screenId, fi.cellX, fi.cellY, 208c58497ee619416c4949b16eb43486c11618b69e5Winson Chung fi.spanX, fi.spanY); 209c58497ee619416c4949b16eb43486c11618b69e5Winson Chung 210c58497ee619416c4949b16eb43486c11618b69e5Winson Chung for (AppInfo info: allApps) { 211c58497ee619416c4949b16eb43486c11618b69e5Winson Chung ComponentName cn = info.intent.getComponent(); 212c58497ee619416c4949b16eb43486c11618b69e5Winson Chung if (!onWorkspace.contains(cn)) { 213c58497ee619416c4949b16eb43486c11618b69e5Winson Chung Log.d(TAG, "Adding to 'more apps': " + info.intent); 214c58497ee619416c4949b16eb43486c11618b69e5Winson Chung ShortcutInfo si = info.makeShortcut(); 215c58497ee619416c4949b16eb43486c11618b69e5Winson Chung fi.add(si); 216c58497ee619416c4949b16eb43486c11618b69e5Winson Chung } 217e25af795647a19f1a0d60bc4baea5a996d215fdfAdam Cohen } 218e25af795647a19f1a0d60bc4baea5a996d215fdfAdam Cohen } 219e25af795647a19f1a0d60bc4baea5a996d215fdfAdam Cohen } 220e25af795647a19f1a0d60bc4baea5a996d215fdfAdam Cohen 221eadbfc564d84aaf1d800da3d0d6edf6312f89648Michael Jurka void addAppsToAllAppsFolder(ArrayList<AppInfo> apps) { 222c58497ee619416c4949b16eb43486c11618b69e5Winson Chung if (AppsCustomizePagedView.DISABLE_ALL_APPS) { 223c58497ee619416c4949b16eb43486c11618b69e5Winson Chung View v = mContent.getChildAt(getCellXFromOrder(mAllAppsButtonRank), getCellYFromOrder(mAllAppsButtonRank)); 224c58497ee619416c4949b16eb43486c11618b69e5Winson Chung FolderIcon fi = null; 225c58497ee619416c4949b16eb43486c11618b69e5Winson Chung 226c58497ee619416c4949b16eb43486c11618b69e5Winson Chung if (v instanceof FolderIcon) { 227c58497ee619416c4949b16eb43486c11618b69e5Winson Chung fi = (FolderIcon) v; 228c58497ee619416c4949b16eb43486c11618b69e5Winson Chung } else { 229c58497ee619416c4949b16eb43486c11618b69e5Winson Chung return; 230c58497ee619416c4949b16eb43486c11618b69e5Winson Chung } 231e25af795647a19f1a0d60bc4baea5a996d215fdfAdam Cohen 232c58497ee619416c4949b16eb43486c11618b69e5Winson Chung FolderInfo info = fi.getFolderInfo(); 233c58497ee619416c4949b16eb43486c11618b69e5Winson Chung for (AppInfo a: apps) { 234c58497ee619416c4949b16eb43486c11618b69e5Winson Chung ShortcutInfo si = a.makeShortcut(); 235c58497ee619416c4949b16eb43486c11618b69e5Winson Chung info.add(si); 236c58497ee619416c4949b16eb43486c11618b69e5Winson Chung } 237e25af795647a19f1a0d60bc4baea5a996d215fdfAdam Cohen } 238e25af795647a19f1a0d60bc4baea5a996d215fdfAdam Cohen } 2393d503fbd9468fb2b9fa645f4f7b91e11229edbfaWinson Chung} 240