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