Home | History | Annotate | Download | only in custom
      1 /*
      2  * Copyright (C) 2017 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.widget.custom;
     18 
     19 import android.content.ComponentName;
     20 import android.content.Context;
     21 import android.content.pm.PackageManager;
     22 import android.os.Parcel;
     23 import android.os.Parcelable;
     24 
     25 import com.android.launcher3.LauncherAppWidgetProviderInfo;
     26 import com.android.launcher3.Utilities;
     27 
     28 /**
     29  * Custom app widget provider info that can be used as a widget, but provide extra functionality
     30  * by allowing custom code and views.
     31  */
     32 public class CustomAppWidgetProviderInfo extends LauncherAppWidgetProviderInfo
     33         implements Parcelable {
     34 
     35     public final int providerId;
     36 
     37     protected CustomAppWidgetProviderInfo(Parcel parcel, boolean readSelf, int providerId) {
     38         super(parcel);
     39         if (readSelf) {
     40             this.providerId = parcel.readInt();
     41 
     42             provider = new ComponentName(parcel.readString(), CLS_CUSTOM_WIDGET_PREFIX + providerId);
     43 
     44             label = parcel.readString();
     45             initialLayout = parcel.readInt();
     46             icon = parcel.readInt();
     47             previewImage = parcel.readInt();
     48 
     49             resizeMode = parcel.readInt();
     50             spanX = parcel.readInt();
     51             spanY = parcel.readInt();
     52             minSpanX = parcel.readInt();
     53             minSpanY = parcel.readInt();
     54         } else {
     55             this.providerId = providerId;
     56         }
     57     }
     58 
     59     @Override
     60     public void initSpans(Context context) { }
     61 
     62     @Override
     63     public String getLabel(PackageManager packageManager) {
     64         return Utilities.trim(label);
     65     }
     66 
     67     @Override
     68     public String toString() {
     69         return "WidgetProviderInfo(" + provider + ")";
     70     }
     71 
     72     @Override
     73     public void writeToParcel(Parcel out, int flags) {
     74         super.writeToParcel(out, flags);
     75         out.writeInt(providerId);
     76         out.writeString(provider.getPackageName());
     77 
     78         out.writeString(label);
     79         out.writeInt(initialLayout);
     80         out.writeInt(icon);
     81         out.writeInt(previewImage);
     82 
     83         out.writeInt(resizeMode);
     84         out.writeInt(spanX);
     85         out.writeInt(spanY);
     86         out.writeInt(minSpanX);
     87         out.writeInt(minSpanY);
     88     }
     89 
     90     public static final Parcelable.Creator<CustomAppWidgetProviderInfo> CREATOR
     91             = new Parcelable.Creator<CustomAppWidgetProviderInfo>() {
     92 
     93         @Override
     94         public CustomAppWidgetProviderInfo createFromParcel(Parcel parcel) {
     95             return new CustomAppWidgetProviderInfo(parcel, true, 0);
     96         }
     97 
     98         @Override
     99         public CustomAppWidgetProviderInfo[] newArray(int size) {
    100             return new CustomAppWidgetProviderInfo[size];
    101         }
    102     };
    103 }
    104