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