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

Commit a7bf32ef authored by Edward Cross's avatar Edward Cross Committed by Bruno Martins
Browse files

QSB: request round search bar

Change-Id: Icf81d36e467fdbe5cc4e4a081c8e3ec2ebaa4263
parent 7f3d8d10
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -16,6 +16,11 @@
  public <init>(...);
}

# QSB
-keep class com.android.launcher3.qsb.QsbContainerView$QsbFragment {
  public <init>(...);
}

# The support library contains references to newer platform versions.
# Don't warn about those in case this app is linking against an older
# platform version.  We know about them, and they are safe.
+29 −0
Original line number Diff line number Diff line
@@ -30,6 +30,8 @@ import android.appwidget.AppWidgetProviderInfo;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.pm.ActivityInfo;
import android.content.pm.PackageManager;
import android.graphics.Rect;
import android.os.Bundle;
import android.util.AttributeSet;
@@ -54,6 +56,8 @@ import com.android.launcher3.graphics.FragmentWithPreview;
 * AppWidgetManager directly, so that it keeps working in that case.
 */
public class QsbContainerView extends FrameLayout {
    private static final String QSB_PROVIDER_CLASS
            = "com.google.android.googlequicksearchbox.SearchWidgetProvider";

    public QsbContainerView(Context context) {
        super(context);
@@ -76,6 +80,26 @@ public class QsbContainerView extends FrameLayout {
        super.setPadding(left, top, right, bottom);
    }

    public static void updateDefaultLayout(Context context, AppWidgetProviderInfo info) {
        ComponentName provider = info.provider;
        if (QSB_PROVIDER_CLASS.equals(provider.getClassName())) {
            try {
                ActivityInfo activityInfo =
                    context.getPackageManager().getReceiverInfo(provider,
                        PackageManager.GET_META_DATA);
                Bundle metaData = activityInfo.metaData;
                int resId = metaData.getInt(
                    "com.google.android.gsa.searchwidget.alt_initial_layout_cqsb", -1);
                if (resId != -1) {
                    info.initialLayout = resId;
                }
            } catch (Exception e) {
                // Ignore the exception since if any exceptions happen
                //  the original initialyLayout would be used.
            }
        }
    }

    /**
     * A fragment to display the QSB.
     */
@@ -126,6 +150,11 @@ public class QsbContainerView extends FrameLayout {
                return getDefaultView(container, false /* show setup icon */);
            }
            Bundle opts = createBindOptions();
            // round quick search bar
            opts.putString("attached-launcher-identifier",
                    getActivity().getPackageName());
            opts.putString("requested-widget-style", "cqsb");

            Context context = getContext();
            AppWidgetManager widgetManager = AppWidgetManager.getInstance(context);

+6 −0
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@

package com.android.launcher3.qsb;

import android.appwidget.AppWidgetProviderInfo;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
@@ -48,6 +49,11 @@ public class QsbWidgetHostView extends NavigableAppWidgetHostView {
        super.updateAppWidget(remoteViews);
    }

    @Override
    public void setAppWidget(int appWidgetId, AppWidgetProviderInfo info) {
        QsbContainerView.updateDefaultLayout(getContext(), info);
        super.setAppWidget(appWidgetId, info);
    }

    public boolean isReinflateRequired(int orientation) {
        // Re-inflate is required if the orientation has changed since last inflation.