Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2668e731 authored by Cyrus Boadway's avatar Cyrus Boadway
Browse files

Add activity-start/return animation to widget configuration

When launching the configuration activity for a widget, use the
activity transition animation.

Test: manual
Bug: 190487998

Change-Id: Ife84e86eec74f81fecddce07c833356a7962fd4b
parent 0dfabe0a
Loading
Loading
Loading
Loading
+27 −3
Original line number Original line Diff line number Diff line
@@ -25,15 +25,20 @@ import android.appwidget.AppWidgetProviderInfo;
import android.content.ActivityNotFoundException;
import android.content.ActivityNotFoundException;
import android.content.Context;
import android.content.Context;
import android.content.Intent;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Handler;
import android.util.SparseArray;
import android.util.SparseArray;
import android.widget.Toast;
import android.widget.Toast;


import androidx.annotation.Nullable;

import com.android.launcher3.BaseActivity;
import com.android.launcher3.BaseActivity;
import com.android.launcher3.BaseDraggingActivity;
import com.android.launcher3.LauncherAppState;
import com.android.launcher3.LauncherAppState;
import com.android.launcher3.R;
import com.android.launcher3.R;
import com.android.launcher3.Utilities;
import com.android.launcher3.Utilities;
import com.android.launcher3.model.WidgetsModel;
import com.android.launcher3.model.WidgetsModel;
import com.android.launcher3.model.data.ItemInfo;
import com.android.launcher3.testing.TestLogging;
import com.android.launcher3.testing.TestLogging;
import com.android.launcher3.testing.TestProtocol;
import com.android.launcher3.testing.TestProtocol;
import com.android.launcher3.widget.custom.CustomWidgetManager;
import com.android.launcher3.widget.custom.CustomWidgetManager;
@@ -292,8 +297,13 @@ public class LauncherAppWidgetHost extends AppWidgetHost {
        activity.startActivityForResult(intent, requestCode);
        activity.startActivityForResult(intent, requestCode);
    }
    }



    /**
    public void startConfigActivity(BaseActivity activity, int widgetId, int requestCode) {
     * Launches an app widget's configuration activity.
     * @param activity The activity from which to launch the configuration activity
     * @param widgetId The id of the bound app widget to be configured
     * @param requestCode An optional request code to be returned with the result
     */
    public void startConfigActivity(BaseDraggingActivity activity, int widgetId, int requestCode) {
        if (WidgetsModel.GO_DISABLE_WIDGETS) {
        if (WidgetsModel.GO_DISABLE_WIDGETS) {
            sendActionCancelled(activity, requestCode);
            sendActionCancelled(activity, requestCode);
            return;
            return;
@@ -301,13 +311,27 @@ public class LauncherAppWidgetHost extends AppWidgetHost {


        try {
        try {
            TestLogging.recordEvent(TestProtocol.SEQUENCE_MAIN, "start: startConfigActivity");
            TestLogging.recordEvent(TestProtocol.SEQUENCE_MAIN, "start: startConfigActivity");
            startAppWidgetConfigureActivityForResult(activity, widgetId, 0, requestCode, null);
            startAppWidgetConfigureActivityForResult(activity, widgetId, 0, requestCode,
                    getConfigurationActivityOptions(activity, widgetId));
        } catch (ActivityNotFoundException | SecurityException e) {
        } catch (ActivityNotFoundException | SecurityException e) {
            Toast.makeText(activity, R.string.activity_not_found, Toast.LENGTH_SHORT).show();
            Toast.makeText(activity, R.string.activity_not_found, Toast.LENGTH_SHORT).show();
            sendActionCancelled(activity, requestCode);
            sendActionCancelled(activity, requestCode);
        }
        }
    }
    }


    /**
     * Returns an {@link android.app.ActivityOptions} bundle from the {code activity} for launching
     * the configuration of the {@code widgetId} app widget, or null of options cannot be produced.
     */
    @Nullable
    private Bundle getConfigurationActivityOptions(BaseDraggingActivity activity, int widgetId) {
        LauncherAppWidgetHostView view = mViews.get(widgetId);
        if (view == null) return null;
        Object tag = view.getTag();
        if (!(tag instanceof ItemInfo)) return null;
        return activity.getActivityLaunchOptions(view, (ItemInfo) tag).toBundle();
    }

    private void sendActionCancelled(final BaseActivity activity, final int requestCode) {
    private void sendActionCancelled(final BaseActivity activity, final int requestCode) {
        new Handler().post(() -> activity.onActivityResult(requestCode, RESULT_CANCELED, null));
        new Handler().post(() -> activity.onActivityResult(requestCode, RESULT_CANCELED, null));
    }
    }