Home | History | Annotate | Download | only in appwidget
      1 /*
      2  * Copyright (C) 2006 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 android.appwidget;
     18 
     19 import android.os.Parcel;
     20 import android.os.Parcelable;
     21 import android.content.ComponentName;
     22 
     23 /**
     24  * Describes the meta data for an installed AppWidget provider.  The fields in this class
     25  * correspond to the fields in the <code>&lt;appwidget-provider&gt;</code> xml tag.
     26  */
     27 public class AppWidgetProviderInfo implements Parcelable {
     28     /**
     29      * Identity of this AppWidget component.  This component should be a {@link
     30      * android.content.BroadcastReceiver}, and it will be sent the AppWidget intents
     31      * {@link android.appwidget as described in the AppWidget package documentation}.
     32      *
     33      * <p>This field corresponds to the <code>android:name</code> attribute in
     34      * the <code>&lt;receiver&gt;</code> element in the AndroidManifest.xml file.
     35      */
     36     public ComponentName provider;
     37 
     38     /**
     39      * Minimum width of the AppWidget, in dp.
     40      *
     41      * <p>This field corresponds to the <code>android:minWidth</code> attribute in
     42      * the AppWidget meta-data file.
     43      */
     44     public int minWidth;
     45 
     46     /**
     47      * Minimum height of the AppWidget, in dp.
     48      *
     49      * <p>This field corresponds to the <code>android:minHeight</code> attribute in
     50      * the AppWidget meta-data file.
     51      */
     52     public int minHeight;
     53 
     54     /**
     55      * How often, in milliseconds, that this AppWidget wants to be updated.
     56      * The AppWidget manager may place a limit on how often a AppWidget is updated.
     57      *
     58      * <p>This field corresponds to the <code>android:updatePeriodMillis</code> attribute in
     59      * the AppWidget meta-data file.
     60      *
     61      * <p class="note"><b>Note:</b> Updates requested with <code>updatePeriodMillis</code>
     62      * will not be delivered more than once every 30 minutes.</p>
     63      */
     64     public int updatePeriodMillis;
     65 
     66     /**
     67      * The resource id of the initial layout for this AppWidget.  This should be
     68      * displayed until the RemoteViews for the AppWidget is available.
     69      *
     70      * <p>This field corresponds to the <code>android:initialLayout</code> attribute in
     71      * the AppWidget meta-data file.
     72      */
     73     public int initialLayout;
     74 
     75     /**
     76      * The activity to launch that will configure the AppWidget.
     77      *
     78      * <p>This class name of field corresponds to the <code>android:configure</code> attribute in
     79      * the AppWidget meta-data file.  The package name always corresponds to the package containing
     80      * the AppWidget provider.
     81      */
     82     public ComponentName configure;
     83 
     84     /**
     85      * The label to display to the user in the AppWidget picker.  If not supplied in the
     86      * xml, the application label will be used.
     87      *
     88      * <p>This field corresponds to the <code>android:label</code> attribute in
     89      * the <code>&lt;receiver&gt;</code> element in the AndroidManifest.xml file.
     90      */
     91     public String label;
     92 
     93     /**
     94      * The icon to display for this AppWidget in the AppWidget picker.  If not supplied in the
     95      * xml, the application icon will be used.
     96      *
     97      * <p>This field corresponds to the <code>android:icon</code> attribute in
     98      * the <code>&lt;receiver&gt;</code> element in the AndroidManifest.xml file.
     99      */
    100     public int icon;
    101 
    102 
    103     /**
    104      * The previous name, if any, of the app widget receiver. If not supplied, it will be
    105      * ignored.
    106      *
    107      * <p>This field corresponds to the <code>&lt;meta-data /&gt;</code> with the name
    108      * <code>android.appwidget.oldName</code>.
    109      *
    110      * @hide Pending API approval
    111      */
    112     public String oldName;
    113 
    114     public AppWidgetProviderInfo() {
    115     }
    116 
    117     /**
    118      * Unflatten the AppWidgetProviderInfo from a parcel.
    119      */
    120     public AppWidgetProviderInfo(Parcel in) {
    121         if (0 != in.readInt()) {
    122             this.provider = new ComponentName(in);
    123         }
    124         this.minWidth = in.readInt();
    125         this.minHeight = in.readInt();
    126         this.updatePeriodMillis = in.readInt();
    127         this.initialLayout = in.readInt();
    128         if (0 != in.readInt()) {
    129             this.configure = new ComponentName(in);
    130         }
    131         this.label = in.readString();
    132         this.icon = in.readInt();
    133     }
    134 
    135 
    136     public void writeToParcel(android.os.Parcel out, int flags) {
    137         if (this.provider != null) {
    138             out.writeInt(1);
    139             this.provider.writeToParcel(out, flags);
    140         } else {
    141             out.writeInt(0);
    142         }
    143         out.writeInt(this.minWidth);
    144         out.writeInt(this.minHeight);
    145         out.writeInt(this.updatePeriodMillis);
    146         out.writeInt(this.initialLayout);
    147         if (this.configure != null) {
    148             out.writeInt(1);
    149             this.configure.writeToParcel(out, flags);
    150         } else {
    151             out.writeInt(0);
    152         }
    153         out.writeString(this.label);
    154         out.writeInt(this.icon);
    155     }
    156 
    157     public int describeContents() {
    158         return 0;
    159     }
    160 
    161     /**
    162      * Parcelable.Creator that instantiates AppWidgetProviderInfo objects
    163      */
    164     public static final Parcelable.Creator<AppWidgetProviderInfo> CREATOR
    165             = new Parcelable.Creator<AppWidgetProviderInfo>()
    166     {
    167         public AppWidgetProviderInfo createFromParcel(Parcel parcel)
    168         {
    169             return new AppWidgetProviderInfo(parcel);
    170         }
    171 
    172         public AppWidgetProviderInfo[] newArray(int size)
    173         {
    174             return new AppWidgetProviderInfo[size];
    175         }
    176     };
    177 
    178     public String toString() {
    179         return "AppWidgetProviderInfo(provider=" + this.provider + ")";
    180     }
    181 }
    182 
    183 
    184