PinWidgetFlowHandler.java revision 8a0dc38aebdc7624db3de2cdfecb9d11e2baee04
18a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyal/*
28a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyal * Copyright (C) 2017 The Android Open Source Project
38a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyal *
48a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyal * Licensed under the Apache License, Version 2.0 (the "License");
58a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyal * you may not use this file except in compliance with the License.
68a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyal * You may obtain a copy of the License at
78a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyal *
88a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyal *      http://www.apache.org/licenses/LICENSE-2.0
98a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyal *
108a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyal * Unless required by applicable law or agreed to in writing, software
118a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyal * distributed under the License is distributed on an "AS IS" BASIS,
128a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyal * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
138a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyal * See the License for the specific language governing permissions and
148a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyal * limitations under the License.
158a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyal */
168a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyal
178a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyalpackage com.android.launcher3.dragndrop;
188a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyal
198a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyalimport android.appwidget.AppWidgetManager;
208a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyalimport android.appwidget.AppWidgetProviderInfo;
218a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyalimport android.os.Bundle;
228a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyalimport android.os.Parcel;
238a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyalimport android.os.Parcelable;
248a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyal
258a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyalimport com.android.launcher3.ItemInfo;
268a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyalimport com.android.launcher3.Launcher;
278a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyalimport com.android.launcher3.compat.PinItemRequestCompat;
288a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyalimport com.android.launcher3.widget.WidgetAddFlowHandler;
298a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyal
308a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyal/**
318a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyal * Extension of WidgetAddFlowHandler to handle pin item request behavior.
328a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyal *
338a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyal * No config activity is shown even if it is defined in widget config. And a callback is sent when
348a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyal * the widget is bound.
358a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyal */
368a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyalpublic class PinWidgetFlowHandler extends WidgetAddFlowHandler implements Parcelable {
378a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyal
388a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyal    private final PinItemRequestCompat mRequest;
398a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyal
408a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyal    public PinWidgetFlowHandler(AppWidgetProviderInfo providerInfo, PinItemRequestCompat request) {
418a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyal        super(providerInfo);
428a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyal        mRequest = request;
438a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyal    }
448a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyal
458a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyal    protected PinWidgetFlowHandler(Parcel parcel) {
468a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyal        super(parcel);
478a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyal        mRequest = PinItemRequestCompat.CREATOR.createFromParcel(parcel);
488a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyal    }
498a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyal
508a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyal    @Override
518a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyal    public void writeToParcel(Parcel parcel, int i) {
528a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyal        super.writeToParcel(parcel, i);
538a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyal        mRequest.writeToParcel(parcel, i);
548a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyal    }
558a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyal
568a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyal    @Override
578a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyal    public boolean startConfigActivity(Launcher launcher, int appWidgetId, ItemInfo info,
588a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyal            int requestCode) {
598a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyal        Bundle extras = new Bundle();
608a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyal        extras.putInt(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
618a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyal        mRequest.accept(extras);
628a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyal        return false;
638a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyal    }
648a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyal
658a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyal    @Override
668a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyal    public boolean needsConfigure() {
678a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyal        return false;
688a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyal    }
698a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyal
708a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyal    public static final Parcelable.Creator<PinWidgetFlowHandler> CREATOR =
718a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyal            new Parcelable.Creator<PinWidgetFlowHandler>() {
728a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyal                public PinWidgetFlowHandler createFromParcel(Parcel source) {
738a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyal                    return new PinWidgetFlowHandler(source);
748a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyal                }
758a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyal
768a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyal                public PinWidgetFlowHandler[] newArray(int size) {
778a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyal                    return new PinWidgetFlowHandler[size];
788a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyal                }
798a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyal            };
808a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyal}
81