• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2008 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.launcher3;
18 
19 import android.content.ComponentName;
20 import android.content.ContentValues;
21 import android.content.Intent;
22 import android.os.Process;
23 import android.os.UserHandle;
24 
25 import com.android.launcher3.util.ContentWriter;
26 
27 /**
28  * Represents an item in the launcher.
29  */
30 public class ItemInfo {
31 
32     public static final int NO_ID = -1;
33 
34     /**
35      * The id in the settings database for this item
36      */
37     public long id = NO_ID;
38 
39     /**
40      * One of {@link LauncherSettings.Favorites#ITEM_TYPE_APPLICATION},
41      * {@link LauncherSettings.Favorites#ITEM_TYPE_SHORTCUT},
42      * {@link LauncherSettings.Favorites#ITEM_TYPE_FOLDER}, or
43      * {@link LauncherSettings.Favorites#ITEM_TYPE_APPWIDGET}.
44      */
45     public int itemType;
46 
47     /**
48      * The id of the container that holds this item. For the desktop, this will be
49      * {@link LauncherSettings.Favorites#CONTAINER_DESKTOP}. For the all applications folder it
50      * will be {@link #NO_ID} (since it is not stored in the settings DB). For user folders
51      * it will be the id of the folder.
52      */
53     public long container = NO_ID;
54 
55     /**
56      * Indicates the screen in which the shortcut appears.
57      */
58     public long screenId = -1;
59 
60     /**
61      * Indicates the X position of the associated cell.
62      */
63     public int cellX = -1;
64 
65     /**
66      * Indicates the Y position of the associated cell.
67      */
68     public int cellY = -1;
69 
70     /**
71      * Indicates the X cell span.
72      */
73     public int spanX = 1;
74 
75     /**
76      * Indicates the Y cell span.
77      */
78     public int spanY = 1;
79 
80     /**
81      * Indicates the minimum X cell span.
82      */
83     public int minSpanX = 1;
84 
85     /**
86      * Indicates the minimum Y cell span.
87      */
88     public int minSpanY = 1;
89 
90     /**
91      * Indicates the position in an ordered list.
92      */
93     public int rank = 0;
94 
95     /**
96      * Title of the item
97      */
98     public CharSequence title;
99 
100     /**
101      * Content description of the item.
102      */
103     public CharSequence contentDescription;
104 
105     public UserHandle user;
106 
ItemInfo()107     public ItemInfo() {
108         user = Process.myUserHandle();
109     }
110 
ItemInfo(ItemInfo info)111     ItemInfo(ItemInfo info) {
112         copyFrom(info);
113         // tempdebug:
114         LauncherModel.checkItemInfo(this);
115     }
116 
copyFrom(ItemInfo info)117     public void copyFrom(ItemInfo info) {
118         id = info.id;
119         cellX = info.cellX;
120         cellY = info.cellY;
121         spanX = info.spanX;
122         spanY = info.spanY;
123         rank = info.rank;
124         screenId = info.screenId;
125         itemType = info.itemType;
126         container = info.container;
127         user = info.user;
128         contentDescription = info.contentDescription;
129     }
130 
getIntent()131     public Intent getIntent() {
132         return null;
133     }
134 
getTargetComponent()135     public ComponentName getTargetComponent() {
136         return getIntent() == null ? null : getIntent().getComponent();
137     }
138 
writeToValues(ContentWriter writer)139     public void writeToValues(ContentWriter writer) {
140         writer.put(LauncherSettings.Favorites.ITEM_TYPE, itemType)
141                 .put(LauncherSettings.Favorites.CONTAINER, container)
142                 .put(LauncherSettings.Favorites.SCREEN, screenId)
143                 .put(LauncherSettings.Favorites.CELLX, cellX)
144                 .put(LauncherSettings.Favorites.CELLY, cellY)
145                 .put(LauncherSettings.Favorites.SPANX, spanX)
146                 .put(LauncherSettings.Favorites.SPANY, spanY)
147                 .put(LauncherSettings.Favorites.RANK, rank);
148     }
149 
readFromValues(ContentValues values)150     public void readFromValues(ContentValues values) {
151         itemType = values.getAsInteger(LauncherSettings.Favorites.ITEM_TYPE);
152         container = values.getAsLong(LauncherSettings.Favorites.CONTAINER);
153         screenId = values.getAsLong(LauncherSettings.Favorites.SCREEN);
154         cellX = values.getAsInteger(LauncherSettings.Favorites.CELLX);
155         cellY = values.getAsInteger(LauncherSettings.Favorites.CELLY);
156         spanX = values.getAsInteger(LauncherSettings.Favorites.SPANX);
157         spanY = values.getAsInteger(LauncherSettings.Favorites.SPANY);
158         rank = values.getAsInteger(LauncherSettings.Favorites.RANK);
159     }
160 
161     /**
162      * Write the fields of this item to the DB
163      */
onAddToDatabase(ContentWriter writer)164     public void onAddToDatabase(ContentWriter writer) {
165         if (screenId == Workspace.EXTRA_EMPTY_SCREEN_ID) {
166             // We should never persist an item on the extra empty screen.
167             throw new RuntimeException("Screen id should not be EXTRA_EMPTY_SCREEN_ID");
168         }
169 
170         writeToValues(writer);
171         writer.put(LauncherSettings.Favorites.PROFILE_ID, user);
172     }
173 
174     @Override
toString()175     public final String toString() {
176         return getClass().getSimpleName() + "(" + dumpProperties() + ")";
177     }
178 
dumpProperties()179     protected String dumpProperties() {
180         return "id=" + id
181                 + " type=" + itemType
182                 + " container=" + container
183                 + " screen=" + screenId
184                 + " cellX=" + cellX
185                 + " cellY=" + cellY
186                 + " spanX=" + spanX
187                 + " spanY=" + spanY
188                 + " minSpanX=" + minSpanX
189                 + " minSpanY=" + minSpanY
190                 + " rank=" + rank
191                 + " user=" + user
192                 + " title=" + title;
193     }
194 
195     /**
196      * Whether this item is disabled.
197      */
isDisabled()198     public boolean isDisabled() {
199         return false;
200     }
201 }
202