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.launcher2;
18 
19 import android.net.Uri;
20 import android.provider.BaseColumns;
21 
22 /**
23  * Settings related utilities.
24  */
25 class LauncherSettings {
26     static interface BaseLauncherColumns extends BaseColumns {
27         /**
28          * Descriptive name of the gesture that can be displayed to the user.
29          * <P>Type: TEXT</P>
30          */
31         static final String TITLE = "title";
32 
33         /**
34          * The Intent URL of the gesture, describing what it points to. This
35          * value is given to {@link android.content.Intent#parseUri(String, int)} to create
36          * an Intent that can be launched.
37          * <P>Type: TEXT</P>
38          */
39         static final String INTENT = "intent";
40 
41         /**
42          * The type of the gesture
43          *
44          * <P>Type: INTEGER</P>
45          */
46         static final String ITEM_TYPE = "itemType";
47 
48         /**
49          * The gesture is an application
50          */
51         static final int ITEM_TYPE_APPLICATION = 0;
52 
53         /**
54          * The gesture is an application created shortcut
55          */
56         static final int ITEM_TYPE_SHORTCUT = 1;
57 
58         /**
59          * The icon type.
60          * <P>Type: INTEGER</P>
61          */
62         static final String ICON_TYPE = "iconType";
63 
64         /**
65          * The icon is a resource identified by a package name and an integer id.
66          */
67         static final int ICON_TYPE_RESOURCE = 0;
68 
69         /**
70          * The icon is a bitmap.
71          */
72         static final int ICON_TYPE_BITMAP = 1;
73 
74         /**
75          * The icon package name, if icon type is ICON_TYPE_RESOURCE.
76          * <P>Type: TEXT</P>
77          */
78         static final String ICON_PACKAGE = "iconPackage";
79 
80         /**
81          * The icon resource id, if icon type is ICON_TYPE_RESOURCE.
82          * <P>Type: TEXT</P>
83          */
84         static final String ICON_RESOURCE = "iconResource";
85 
86         /**
87          * The custom icon bitmap, if icon type is ICON_TYPE_BITMAP.
88          * <P>Type: BLOB</P>
89          */
90         static final String ICON = "icon";
91     }
92 
93     /**
94      * Favorites.
95      */
96     static final class Favorites implements BaseLauncherColumns {
97         /**
98          * The content:// style URL for this table
99          */
100         static final Uri CONTENT_URI = Uri.parse("content://" +
101                 LauncherProvider.AUTHORITY + "/" + LauncherProvider.TABLE_FAVORITES +
102                 "?" + LauncherProvider.PARAMETER_NOTIFY + "=true");
103 
104         /**
105          * The content:// style URL for this table. When this Uri is used, no notification is
106          * sent if the content changes.
107          */
108         static final Uri CONTENT_URI_NO_NOTIFICATION = Uri.parse("content://" +
109                 LauncherProvider.AUTHORITY + "/" + LauncherProvider.TABLE_FAVORITES +
110                 "?" + LauncherProvider.PARAMETER_NOTIFY + "=false");
111 
112         /**
113          * The content:// style URL for a given row, identified by its id.
114          *
115          * @param id The row id.
116          * @param notify True to send a notification is the content changes.
117          *
118          * @return The unique content URL for the specified row.
119          */
getContentUri(long id, boolean notify)120         static Uri getContentUri(long id, boolean notify) {
121             return Uri.parse("content://" + LauncherProvider.AUTHORITY +
122                     "/" + LauncherProvider.TABLE_FAVORITES + "/" + id + "?" +
123                     LauncherProvider.PARAMETER_NOTIFY + "=" + notify);
124         }
125 
126         /**
127          * The container holding the favorite
128          * <P>Type: INTEGER</P>
129          */
130         static final String CONTAINER = "container";
131 
132         /**
133          * The icon is a resource identified by a package name and an integer id.
134          */
135         static final int CONTAINER_DESKTOP = -100;
136         static final int CONTAINER_HOTSEAT = -101;
137 
138         /**
139          * The screen holding the favorite (if container is CONTAINER_DESKTOP)
140          * <P>Type: INTEGER</P>
141          */
142         static final String SCREEN = "screen";
143 
144         /**
145          * The X coordinate of the cell holding the favorite
146          * (if container is CONTAINER_HOTSEAT or CONTAINER_HOTSEAT)
147          * <P>Type: INTEGER</P>
148          */
149         static final String CELLX = "cellX";
150 
151         /**
152          * The Y coordinate of the cell holding the favorite
153          * (if container is CONTAINER_DESKTOP)
154          * <P>Type: INTEGER</P>
155          */
156         static final String CELLY = "cellY";
157 
158         /**
159          * The X span of the cell holding the favorite
160          * <P>Type: INTEGER</P>
161          */
162         static final String SPANX = "spanX";
163 
164         /**
165          * The Y span of the cell holding the favorite
166          * <P>Type: INTEGER</P>
167          */
168         static final String SPANY = "spanY";
169 
170         /**
171          * The profile id of the item in the cell.
172          * <P>
173          * Type: INTEGER
174          * </P>
175          */
176         static final String PROFILE_ID = "profileId";
177 
178         /**
179          * The favorite is a user created folder
180          */
181         static final int ITEM_TYPE_FOLDER = 2;
182 
183         /**
184         * The favorite is a live folder
185         *
186         * Note: live folders can no longer be added to Launcher, and any live folders which
187         * exist within the launcher database will be ignored when loading.  That said, these
188         * entries in the database may still exist, and are not automatically stripped.
189         */
190         static final int ITEM_TYPE_LIVE_FOLDER = 3;
191 
192         /**
193          * The favorite is a widget
194          */
195         static final int ITEM_TYPE_APPWIDGET = 4;
196 
197         /**
198          * The favorite is a clock
199          */
200         static final int ITEM_TYPE_WIDGET_CLOCK = 1000;
201 
202         /**
203          * The favorite is a search widget
204          */
205         static final int ITEM_TYPE_WIDGET_SEARCH = 1001;
206 
207         /**
208          * The favorite is a photo frame
209          */
210         static final int ITEM_TYPE_WIDGET_PHOTO_FRAME = 1002;
211 
212         /**
213          * The appWidgetId of the widget
214          *
215          * <P>Type: INTEGER</P>
216          */
217         static final String APPWIDGET_ID = "appWidgetId";
218 
219         /**
220          * Indicates whether this favorite is an application-created shortcut or not.
221          * If the value is 0, the favorite is not an application-created shortcut, if the
222          * value is 1, it is an application-created shortcut.
223          * <P>Type: INTEGER</P>
224          */
225         @Deprecated
226         static final String IS_SHORTCUT = "isShortcut";
227 
228         /**
229          * The URI associated with the favorite. It is used, for instance, by
230          * live folders to find the content provider.
231          * <P>Type: TEXT</P>
232          */
233         static final String URI = "uri";
234 
235         /**
236          * The display mode if the item is a live folder.
237          * <P>Type: INTEGER</P>
238          *
239          * @see android.provider.LiveFolders#DISPLAY_MODE_GRID
240          * @see android.provider.LiveFolders#DISPLAY_MODE_LIST
241          */
242         static final String DISPLAY_MODE = "displayMode";
243     }
244 }
245