1f0ba8b7ca1dc8fd53451d3d16e9f4fc306cddcd4Sunny Goyal/* 2f0ba8b7ca1dc8fd53451d3d16e9f4fc306cddcd4Sunny Goyal * Copyright (C) 2016 The Android Open Source Project 3f0ba8b7ca1dc8fd53451d3d16e9f4fc306cddcd4Sunny Goyal * 4f0ba8b7ca1dc8fd53451d3d16e9f4fc306cddcd4Sunny Goyal * Licensed under the Apache License, Version 2.0 (the "License"); 5f0ba8b7ca1dc8fd53451d3d16e9f4fc306cddcd4Sunny Goyal * you may not use this file except in compliance with the License. 6f0ba8b7ca1dc8fd53451d3d16e9f4fc306cddcd4Sunny Goyal * You may obtain a copy of the License at 7f0ba8b7ca1dc8fd53451d3d16e9f4fc306cddcd4Sunny Goyal * 8f0ba8b7ca1dc8fd53451d3d16e9f4fc306cddcd4Sunny Goyal * http://www.apache.org/licenses/LICENSE-2.0 9f0ba8b7ca1dc8fd53451d3d16e9f4fc306cddcd4Sunny Goyal * 10f0ba8b7ca1dc8fd53451d3d16e9f4fc306cddcd4Sunny Goyal * Unless required by applicable law or agreed to in writing, software 11f0ba8b7ca1dc8fd53451d3d16e9f4fc306cddcd4Sunny Goyal * distributed under the License is distributed on an "AS IS" BASIS, 12f0ba8b7ca1dc8fd53451d3d16e9f4fc306cddcd4Sunny Goyal * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13f0ba8b7ca1dc8fd53451d3d16e9f4fc306cddcd4Sunny Goyal * See the License for the specific language governing permissions and 14f0ba8b7ca1dc8fd53451d3d16e9f4fc306cddcd4Sunny Goyal * limitations under the License. 15f0ba8b7ca1dc8fd53451d3d16e9f4fc306cddcd4Sunny Goyal */ 16f0ba8b7ca1dc8fd53451d3d16e9f4fc306cddcd4Sunny Goyalpackage com.android.launcher3.model; 17f0ba8b7ca1dc8fd53451d3d16e9f4fc306cddcd4Sunny Goyal 187c74e4ae641e76f73d74348e293c244a157f6585Sunny Goyalimport android.os.UserHandle; 197c74e4ae641e76f73d74348e293c244a157f6585Sunny Goyal 207c74e4ae641e76f73d74348e293c244a157f6585Sunny Goyalimport com.android.launcher3.LauncherModel.BaseModelUpdateTask; 21f0ba8b7ca1dc8fd53451d3d16e9f4fc306cddcd4Sunny Goyalimport com.android.launcher3.LauncherModel.CallbackTask; 22f0ba8b7ca1dc8fd53451d3d16e9f4fc306cddcd4Sunny Goyalimport com.android.launcher3.LauncherModel.Callbacks; 23f0ba8b7ca1dc8fd53451d3d16e9f4fc306cddcd4Sunny Goyalimport com.android.launcher3.ShortcutInfo; 24f0ba8b7ca1dc8fd53451d3d16e9f4fc306cddcd4Sunny Goyalimport com.android.launcher3.util.ComponentKey; 25f0ba8b7ca1dc8fd53451d3d16e9f4fc306cddcd4Sunny Goyalimport com.android.launcher3.util.MultiHashMap; 26f0ba8b7ca1dc8fd53451d3d16e9f4fc306cddcd4Sunny Goyal 27f0ba8b7ca1dc8fd53451d3d16e9f4fc306cddcd4Sunny Goyalimport java.util.ArrayList; 28f0ba8b7ca1dc8fd53451d3d16e9f4fc306cddcd4Sunny Goyal 29f0ba8b7ca1dc8fd53451d3d16e9f4fc306cddcd4Sunny Goyal/** 30f0ba8b7ca1dc8fd53451d3d16e9f4fc306cddcd4Sunny Goyal * Extension of {@link BaseModelUpdateTask} with some utility methods 31f0ba8b7ca1dc8fd53451d3d16e9f4fc306cddcd4Sunny Goyal */ 32f0ba8b7ca1dc8fd53451d3d16e9f4fc306cddcd4Sunny Goyalpublic abstract class ExtendedModelTask extends BaseModelUpdateTask { 33f0ba8b7ca1dc8fd53451d3d16e9f4fc306cddcd4Sunny Goyal 34f0ba8b7ca1dc8fd53451d3d16e9f4fc306cddcd4Sunny Goyal public void bindUpdatedShortcuts( 357c74e4ae641e76f73d74348e293c244a157f6585Sunny Goyal ArrayList<ShortcutInfo> updatedShortcuts, UserHandle user) { 36f0ba8b7ca1dc8fd53451d3d16e9f4fc306cddcd4Sunny Goyal bindUpdatedShortcuts(updatedShortcuts, new ArrayList<ShortcutInfo>(), user); 37f0ba8b7ca1dc8fd53451d3d16e9f4fc306cddcd4Sunny Goyal } 38f0ba8b7ca1dc8fd53451d3d16e9f4fc306cddcd4Sunny Goyal 39f0ba8b7ca1dc8fd53451d3d16e9f4fc306cddcd4Sunny Goyal public void bindUpdatedShortcuts( 40f0ba8b7ca1dc8fd53451d3d16e9f4fc306cddcd4Sunny Goyal final ArrayList<ShortcutInfo> updatedShortcuts, 41f0ba8b7ca1dc8fd53451d3d16e9f4fc306cddcd4Sunny Goyal final ArrayList<ShortcutInfo> removedShortcuts, 427c74e4ae641e76f73d74348e293c244a157f6585Sunny Goyal final UserHandle user) { 43f0ba8b7ca1dc8fd53451d3d16e9f4fc306cddcd4Sunny Goyal if (!updatedShortcuts.isEmpty() || !removedShortcuts.isEmpty()) { 44f0ba8b7ca1dc8fd53451d3d16e9f4fc306cddcd4Sunny Goyal scheduleCallbackTask(new CallbackTask() { 45f0ba8b7ca1dc8fd53451d3d16e9f4fc306cddcd4Sunny Goyal @Override 46f0ba8b7ca1dc8fd53451d3d16e9f4fc306cddcd4Sunny Goyal public void execute(Callbacks callbacks) { 47f0ba8b7ca1dc8fd53451d3d16e9f4fc306cddcd4Sunny Goyal callbacks.bindShortcutsChanged(updatedShortcuts, removedShortcuts, user); 48f0ba8b7ca1dc8fd53451d3d16e9f4fc306cddcd4Sunny Goyal } 49f0ba8b7ca1dc8fd53451d3d16e9f4fc306cddcd4Sunny Goyal }); 50f0ba8b7ca1dc8fd53451d3d16e9f4fc306cddcd4Sunny Goyal } 51f0ba8b7ca1dc8fd53451d3d16e9f4fc306cddcd4Sunny Goyal } 52f0ba8b7ca1dc8fd53451d3d16e9f4fc306cddcd4Sunny Goyal 53f0ba8b7ca1dc8fd53451d3d16e9f4fc306cddcd4Sunny Goyal public void bindDeepShortcuts(BgDataModel dataModel) { 54f0ba8b7ca1dc8fd53451d3d16e9f4fc306cddcd4Sunny Goyal final MultiHashMap<ComponentKey, String> shortcutMapCopy = dataModel.deepShortcutMap.clone(); 55f0ba8b7ca1dc8fd53451d3d16e9f4fc306cddcd4Sunny Goyal scheduleCallbackTask(new CallbackTask() { 56f0ba8b7ca1dc8fd53451d3d16e9f4fc306cddcd4Sunny Goyal @Override 57f0ba8b7ca1dc8fd53451d3d16e9f4fc306cddcd4Sunny Goyal public void execute(Callbacks callbacks) { 58f0ba8b7ca1dc8fd53451d3d16e9f4fc306cddcd4Sunny Goyal callbacks.bindDeepShortcutMap(shortcutMapCopy); 59f0ba8b7ca1dc8fd53451d3d16e9f4fc306cddcd4Sunny Goyal } 60f0ba8b7ca1dc8fd53451d3d16e9f4fc306cddcd4Sunny Goyal }); 61f0ba8b7ca1dc8fd53451d3d16e9f4fc306cddcd4Sunny Goyal } 62f0ba8b7ca1dc8fd53451d3d16e9f4fc306cddcd4Sunny Goyal} 63