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