• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2018 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package com.android.car.carlauncher;
18 
19 import com.android.car.carlauncher.LauncherItemProto.LauncherItemListMessage;
20 import com.android.car.carlauncher.LauncherItemProto.LauncherItemMessage;
21 
22 import java.util.ArrayList;
23 import java.util.Collections;
24 import java.util.Comparator;
25 import java.util.List;
26 
27 /**
28  * Helper class that provides method used by LauncherModel
29  */
30 public class LauncherItemHelper {
31     private static final String TAG = "LauncherItemHelper";
32 
33     /**
34      * This method is used to convert a list of launcher items into protobuf class
35      */
launcherList2Msg(List<LauncherItem> launcherItemList)36     public LauncherItemListMessage launcherList2Msg(List<LauncherItem> launcherItemList) {
37         List<LauncherItemMessage> msgList = new ArrayList<LauncherItemMessage>();
38         if (launcherItemList == null) {
39             return null;
40         } else {
41             for (int i = 0; i < launcherItemList.size(); i++) {
42                 msgList.add(launcherItemList.get(i).launcherItem2Msg(i, -1));
43             }
44         }
45         LauncherItemListMessage.Builder builder =
46                 LauncherItemListMessage.newBuilder().addAllLauncherItemMessage(msgList);
47         return builder.build();
48     }
49 
50     /**
51      * This method converts sort the LauncherItemList based on their
52      * relative order in the proto file
53      */
sortLauncherItemListMsg( LauncherItemListMessage launcherItemListMsg)54     public List<LauncherItemMessage> sortLauncherItemListMsg(
55             LauncherItemListMessage launcherItemListMsg) {
56         List<LauncherItemMessage> itemListMsg = launcherItemListMsg.getLauncherItemMessageList();
57         List<LauncherItemMessage> items = new ArrayList<>();
58         if (!itemListMsg.isEmpty() && itemListMsg.size() > 0) {
59             //Need to create a new list for sorting purposes since ProtobufArrayList is not mutable
60             items.addAll(itemListMsg);
61             Collections.sort(items,
62                     Comparator.comparingInt(LauncherItemMessage::getRelativePosition));
63         }
64         return items;
65     }
66 }
67 
68