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
1922ca9ec137ec8eb70026f90591ae01af7669a3b7Sunny Goyalimport android.annotation.TargetApi;
208a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyalimport android.appwidget.AppWidgetManager;
218a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyalimport android.appwidget.AppWidgetProviderInfo;
2222ca9ec137ec8eb70026f90591ae01af7669a3b7Sunny Goyalimport android.content.pm.LauncherApps.PinItemRequest;
2322ca9ec137ec8eb70026f90591ae01af7669a3b7Sunny Goyalimport android.os.Build;
248a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyalimport android.os.Bundle;
258a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyalimport android.os.Parcel;
268a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyalimport android.os.Parcelable;
278a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyal
288a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyalimport com.android.launcher3.ItemInfo;
298a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyalimport com.android.launcher3.Launcher;
308a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyalimport com.android.launcher3.widget.WidgetAddFlowHandler;
318a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyal
328a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyal/**
338a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyal * Extension of WidgetAddFlowHandler to handle pin item request behavior.
348a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyal *
358a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyal * No config activity is shown even if it is defined in widget config. And a callback is sent when
368a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyal * the widget is bound.
378a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyal */
3822ca9ec137ec8eb70026f90591ae01af7669a3b7Sunny Goyal@TargetApi(Build.VERSION_CODES.O)
398a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyalpublic class PinWidgetFlowHandler extends WidgetAddFlowHandler implements Parcelable {
408a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyal
4122ca9ec137ec8eb70026f90591ae01af7669a3b7Sunny Goyal    private final PinItemRequest mRequest;
428a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyal
4322ca9ec137ec8eb70026f90591ae01af7669a3b7Sunny Goyal    public PinWidgetFlowHandler(AppWidgetProviderInfo providerInfo, PinItemRequest request) {
448a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyal        super(providerInfo);
458a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyal        mRequest = request;
468a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyal    }
478a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyal
488a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyal    protected PinWidgetFlowHandler(Parcel parcel) {
498a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyal        super(parcel);
5022ca9ec137ec8eb70026f90591ae01af7669a3b7Sunny Goyal        mRequest = PinItemRequest.CREATOR.createFromParcel(parcel);
518a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyal    }
528a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyal
538a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyal    @Override
548a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyal    public void writeToParcel(Parcel parcel, int i) {
558a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyal        super.writeToParcel(parcel, i);
568a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyal        mRequest.writeToParcel(parcel, i);
578a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyal    }
588a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyal
598a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyal    @Override
608a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyal    public boolean startConfigActivity(Launcher launcher, int appWidgetId, ItemInfo info,
618a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyal            int requestCode) {
628a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyal        Bundle extras = new Bundle();
638a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyal        extras.putInt(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
648a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyal        mRequest.accept(extras);
658a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyal        return false;
668a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyal    }
678a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyal
688a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyal    @Override
698a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyal    public boolean needsConfigure() {
708a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyal        return false;
718a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyal    }
728a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyal
738a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyal    public static final Parcelable.Creator<PinWidgetFlowHandler> CREATOR =
748a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyal            new Parcelable.Creator<PinWidgetFlowHandler>() {
758a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyal                public PinWidgetFlowHandler createFromParcel(Parcel source) {
768a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyal                    return new PinWidgetFlowHandler(source);
778a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyal                }
788a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyal
798a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyal                public PinWidgetFlowHandler[] newArray(int size) {
808a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyal                    return new PinWidgetFlowHandler[size];
818a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyal                }
828a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyal            };
838a0dc38aebdc7624db3de2cdfecb9d11e2baee04Sunny Goyal}
84