LauncherAppWidgetInfo.java revision ded9f8d8658d0b6601006c0a954cd3bf530e55c1
131dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project/*
231dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project * Copyright (C) 2009 The Android Open Source Project
331dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project *
431dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License");
531dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project * you may not use this file except in compliance with the License.
631dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project * You may obtain a copy of the License at
731dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project *
831dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project *      http://www.apache.org/licenses/LICENSE-2.0
931dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project *
1031dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project * Unless required by applicable law or agreed to in writing, software
1131dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS,
1231dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1331dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project * See the License for the specific language governing permissions and
1431dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project * limitations under the License.
1531dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project */
1631dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project
17a5902524d4403885eb4c50360bf3465c6be796efJoe Onoratopackage com.android.launcher2;
1831dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project
197376faefbbcbe30cc4e3f706ab95c254a4707d98The Android Open Source Projectimport android.appwidget.AppWidgetHostView;
20af44209bfa60da3c7ab49b7f508f9effd316ee41Michael Jurkaimport android.content.ComponentName;
2131dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Projectimport android.content.ContentValues;
2231dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project
2331dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project/**
246569f2c80e179c2f8ed73dae6b01d971ec20f005Patrick Dubroy * Represents a widget (either instantiated or about to be) in the Launcher.
2531dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project */
267376faefbbcbe30cc4e3f706ab95c254a4707d98The Android Open Source Projectclass LauncherAppWidgetInfo extends ItemInfo {
2731dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project
2831dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project    /**
296569f2c80e179c2f8ed73dae6b01d971ec20f005Patrick Dubroy     * Indicates that the widget hasn't been instantiated yet.
306569f2c80e179c2f8ed73dae6b01d971ec20f005Patrick Dubroy     */
316569f2c80e179c2f8ed73dae6b01d971ec20f005Patrick Dubroy    static final int NO_ID = -1;
326569f2c80e179c2f8ed73dae6b01d971ec20f005Patrick Dubroy
336569f2c80e179c2f8ed73dae6b01d971ec20f005Patrick Dubroy    /**
34629de3ef739883c0962423cc0c3a26299f162d3dRomain Guy     * Identifier for this widget when talking with
35629de3ef739883c0962423cc0c3a26299f162d3dRomain Guy     * {@link android.appwidget.AppWidgetManager} for updates.
3631dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project     */
376569f2c80e179c2f8ed73dae6b01d971ec20f005Patrick Dubroy    int appWidgetId = NO_ID;
386569f2c80e179c2f8ed73dae6b01d971ec20f005Patrick Dubroy
39af44209bfa60da3c7ab49b7f508f9effd316ee41Michael Jurka    ComponentName providerName;
40ded9f8d8658d0b6601006c0a954cd3bf530e55c1Adam Cohen
416569f2c80e179c2f8ed73dae6b01d971ec20f005Patrick Dubroy    // TODO: Are these necessary here?
426569f2c80e179c2f8ed73dae6b01d971ec20f005Patrick Dubroy    int minWidth = -1;
436569f2c80e179c2f8ed73dae6b01d971ec20f005Patrick Dubroy    int minHeight = -1;
446569f2c80e179c2f8ed73dae6b01d971ec20f005Patrick Dubroy
4531dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project    /**
467376faefbbcbe30cc4e3f706ab95c254a4707d98The Android Open Source Project     * View that holds this widget after it's been created.  This view isn't created
4731dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project     * until Launcher knows it's needed.
4831dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project     */
497376faefbbcbe30cc4e3f706ab95c254a4707d98The Android Open Source Project    AppWidgetHostView hostView = null;
5031dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project
516569f2c80e179c2f8ed73dae6b01d971ec20f005Patrick Dubroy    /**
526569f2c80e179c2f8ed73dae6b01d971ec20f005Patrick Dubroy     * Constructor for use with AppWidgets that haven't been instantiated yet.
536569f2c80e179c2f8ed73dae6b01d971ec20f005Patrick Dubroy     */
546569f2c80e179c2f8ed73dae6b01d971ec20f005Patrick Dubroy    LauncherAppWidgetInfo(ComponentName providerName) {
556569f2c80e179c2f8ed73dae6b01d971ec20f005Patrick Dubroy        itemType = LauncherSettings.Favorites.ITEM_TYPE_APPWIDGET;
566569f2c80e179c2f8ed73dae6b01d971ec20f005Patrick Dubroy        this.providerName = providerName;
576569f2c80e179c2f8ed73dae6b01d971ec20f005Patrick Dubroy
586569f2c80e179c2f8ed73dae6b01d971ec20f005Patrick Dubroy        // Since the widget isn't instantiated yet, we don't know these values. Set them to -1
596569f2c80e179c2f8ed73dae6b01d971ec20f005Patrick Dubroy        // to indicate that they should be calculated based on the layout and minWidth/minHeight
606569f2c80e179c2f8ed73dae6b01d971ec20f005Patrick Dubroy        spanX = -1;
616569f2c80e179c2f8ed73dae6b01d971ec20f005Patrick Dubroy        spanY = -1;
626569f2c80e179c2f8ed73dae6b01d971ec20f005Patrick Dubroy    }
636569f2c80e179c2f8ed73dae6b01d971ec20f005Patrick Dubroy
647376faefbbcbe30cc4e3f706ab95c254a4707d98The Android Open Source Project    LauncherAppWidgetInfo(int appWidgetId) {
657376faefbbcbe30cc4e3f706ab95c254a4707d98The Android Open Source Project        itemType = LauncherSettings.Favorites.ITEM_TYPE_APPWIDGET;
667376faefbbcbe30cc4e3f706ab95c254a4707d98The Android Open Source Project        this.appWidgetId = appWidgetId;
6731dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project    }
68ded9f8d8658d0b6601006c0a954cd3bf530e55c1Adam Cohen
6931dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project    @Override
7031dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project    void onAddToDatabase(ContentValues values) {
7131dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project        super.onAddToDatabase(values);
727376faefbbcbe30cc4e3f706ab95c254a4707d98The Android Open Source Project        values.put(LauncherSettings.Favorites.APPWIDGET_ID, appWidgetId);
7331dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project    }
7431dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project
7531dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project    @Override
7631dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project    public String toString() {
778802e960495e61803c18ea3dda2e30ef0a611d8fDaniel Sandler        return "AppWidget(id=" + Integer.toString(appWidgetId) + ")";
7831dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project    }
799c1289cb3bfb74f86e53ec7ac6dd76bb39666b2dJoe Onorato
809c1289cb3bfb74f86e53ec7ac6dd76bb39666b2dJoe Onorato    @Override
819c1289cb3bfb74f86e53ec7ac6dd76bb39666b2dJoe Onorato    void unbind() {
829c1289cb3bfb74f86e53ec7ac6dd76bb39666b2dJoe Onorato        super.unbind();
839c1289cb3bfb74f86e53ec7ac6dd76bb39666b2dJoe Onorato        hostView = null;
849c1289cb3bfb74f86e53ec7ac6dd76bb39666b2dJoe Onorato    }
8531dd503c6aa69018e694d91724d46db49ea09327The Android Open Source Project}
86