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

Commit 0a95cc5f authored by Abhishek Aggarwal's avatar Abhishek Aggarwal Committed by Sahil Sonar
Browse files

launcher: Dont allow 3rd party apps to place widgets on homescreen



[SahilSonar - adapted to A14]

Signed-off-by: default avatarSahilSonar <sss.sonar2003@gmail.com>
parent eb64b878
Loading
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -15,4 +15,5 @@
    <string name="widget_remove">Remove</string>
    <string name="remove_widgets">Remove Widgets</string>
    <string name="show_notification_count">Show notification count</string>
    <string name="add_to_widget_Screen">Add to -1 screen</string>
</resources>
+5 −0
Original line number Diff line number Diff line
@@ -453,6 +453,11 @@ class WidgetContainer(context: Context, attrs: AttributeSet?) : FrameLayout(cont
                    defaultWidgets.add(widget.componentName)
                }
            }

            @JvmStatic
            fun onWidgetAdded(componentName: ComponentName) {
                defaultWidgets.add(componentName)
            }
        }
    }
}
+1 −0
Original line number Diff line number Diff line
@@ -107,6 +107,7 @@
                    android:layout_height="wrap_content" />

                <Button
                    android:id="@+id/add_to_workspace"
                    style="@style/Button.FullRounded.Colored"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
+6 −1
Original line number Diff line number Diff line
@@ -87,6 +87,8 @@ import java.util.Arrays;
import java.util.Map;
import java.util.Stack;

import foundation.e.bliss.multimode.MultiModeController;

public class CellLayout extends ViewGroup {
    private static final String TAG = "CellLayout";
    private static final boolean LOGD = false;
@@ -766,6 +768,9 @@ public class CellLayout extends ViewGroup {
    }

    public boolean acceptsWidget() {
        if (MultiModeController.isSingleLayerMode()) {
            return false;
        }
            return mContainerType == WORKSPACE;
    }

+19 −1
Original line number Diff line number Diff line
@@ -51,6 +51,7 @@ import android.view.View.OnTouchListener;
import android.view.WindowManager;
import android.view.accessibility.AccessibilityEvent;
import android.view.accessibility.AccessibilityManager;
import android.widget.Button;
import android.widget.TextView;

import androidx.annotation.Nullable;
@@ -87,7 +88,9 @@ import com.android.launcher3.widget.WidgetSections;
import java.util.Objects;
import java.util.function.Supplier;

import foundation.e.bliss.multimode.MultiModeController;
import foundation.e.bliss.utils.BlissConstants;
import foundation.e.bliss.widgets.WidgetContainer.WidgetFragment;

/**
 * Activity to show pin widget dialog.
@@ -161,6 +164,11 @@ public class AddItemActivity extends BaseActivity
                break;
            case PinItemRequest.REQUEST_TYPE_APPWIDGET:
                targetApp = setupWidget();
                if (MultiModeController.isSingleLayerMode()) {
                    ((Button) findViewById(R.id.add_to_workspace))
                            .setText(getString(R.string.add_to_widget_Screen));
                    ((TextView)findViewById(R.id.widget_drag_instruction)).setVisibility(View.GONE);
                }
                break;
            default:
                targetApp = null;
@@ -183,6 +191,11 @@ public class AddItemActivity extends BaseActivity
        previewContainer.setOnTouchListener(this);
        previewContainer.setOnLongClickListener(this);

        if (MultiModeController.isSingleLayerMode()) {
            previewContainer.setOnTouchListener(null);
            previewContainer.setOnLongClickListener(null);
        }

        // savedInstanceState is null when the activity is created the first time (i.e., avoids
        // duplicate logging during rotation)
        if (savedInstanceState == null) {
@@ -366,8 +379,13 @@ public class AddItemActivity extends BaseActivity
            return;
        }

        mPendingBindWidgetId = mAppWidgetHolder.allocateAppWidgetId();
        AppWidgetProviderInfo widgetProviderInfo = mRequest.getAppWidgetProviderInfo(this);
        if (MultiModeController.isSingleLayerMode() && widgetProviderInfo!= null) {
            WidgetFragment.onWidgetAdded(widgetProviderInfo.provider);
            return;
        }

        mPendingBindWidgetId = mAppWidgetHolder.allocateAppWidgetId();
        boolean success = mAppWidgetManager.bindAppWidgetIdIfAllowed(
                mPendingBindWidgetId, widgetProviderInfo, mWidgetOptions);
        if (success) {