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

Commit 85c9eef7 authored by Abhishek Aggarwal's avatar Abhishek Aggarwal Committed by Sahil Sonar
Browse files

feat(widget) : Properly sets insets and utilise full screen

[SahilSonar - adapted to A14]
parent 191152d6
Loading
Loading
Loading
Loading
Loading
+8 −5
Original line number Diff line number Diff line
@@ -19,9 +19,11 @@
        android:scrollbars="none">

        <LinearLayout
            android:id="@+id/widget_linear_layout"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center_horizontal"
            android:paddingTop="50dp"
            android:orientation="vertical">

            <include layout="@layout/search_bar" />
@@ -42,7 +44,7 @@
                android:layout_height="wrap_content"
                android:gravity="center_horizontal"
                android:orientation="horizontal"
                android:paddingBottom="12dp">
                android:paddingTop="10dp">

                <foundation.e.bliss.blur.BlurLayout
                    android:layout_width="wrap_content"
@@ -63,9 +65,9 @@
                        android:paddingHorizontal="24dp"
                        android:paddingVertical="6dp"
                        android:stateListAnimator="@null"
                        android:text="Add"
                        android:text="@string/widget_add"
                        android:textAllCaps="false"
                        android:textColor="#FFF" />
                        android:textColor="@color/white" />
                </foundation.e.bliss.blur.BlurLayout>

                <Space
@@ -92,15 +94,16 @@
                        android:paddingHorizontal="24dp"
                        android:paddingVertical="6dp"
                        android:stateListAnimator="@null"
                        android:text="Remove"
                        android:text="@string/widget_remove"
                        android:textAllCaps="false"
                        android:textColor="#FFF" />
                        android:textColor="@color/white" />
                </foundation.e.bliss.blur.BlurLayout>
            </LinearLayout>
        </LinearLayout>
    </ScrollView>

    <RelativeLayout
        android:layout_marginBottom="@dimen/widget_page_inset_padding"
        android:id="@+id/widget_resizer_container"
        android:layout_width="match_parent"
        android:layout_height="48dp"
+1 −0
Original line number Diff line number Diff line
@@ -2,4 +2,5 @@
<resources>
    <dimen name="grid_folder_content_padding">12dp</dimen>
    <dimen name="grid_folder_footer_height">32dp</dimen>
    <dimen name="widget_page_inset_padding">10dp</dimen>
</resources>
 No newline at end of file
+2 −0
Original line number Diff line number Diff line
@@ -11,4 +11,6 @@
    <string name="max">Max</string>
    <string name="min">Min</string>
    <string name="widget_no_resize">Cannot resize this widget</string>
    <string name="widget_add">Add</string>
    <string name="widget_remove">Remove</string>
</resources>
+31 −4
Original line number Diff line number Diff line
@@ -32,6 +32,7 @@ import android.widget.RelativeLayout
import android.widget.Toast
import com.android.app.animation.R.id.launcher
import com.android.internal.appwidget.IAppWidgetService
import com.android.launcher3.Insettable
import com.android.launcher3.InvariantDeviceProfile
import com.android.launcher3.Launcher
import com.android.launcher3.LauncherPrefs
@@ -51,6 +52,7 @@ import foundation.e.bliss.utils.Logger
import foundation.e.bliss.utils.ObservableList
import foundation.e.bliss.utils.disableComponent
import foundation.e.bliss.widgets.BlissAppWidgetHost.Companion.REQUEST_CONFIGURE_APPWIDGET
import foundation.e.bliss.widgets.DefaultWidgets.defaultWidgets
import io.reactivex.rxjava3.disposables.Disposable
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
@@ -58,7 +60,8 @@ import kotlinx.coroutines.flow.MutableSharedFlow
import kotlinx.coroutines.launch

@Suppress("Deprecation", "NewApi")
class WidgetContainer(context: Context, attrs: AttributeSet?) : FrameLayout(context, attrs) {
class WidgetContainer(context: Context, attrs: AttributeSet?) :
    FrameLayout(context, attrs), Insettable {
    private val mLauncher by lazy { Launcher.getLauncher(context) }

    private lateinit var mRemoveWidgetLayout: FrameLayout
@@ -67,6 +70,7 @@ class WidgetContainer(context: Context, attrs: AttributeSet?) : FrameLayout(cont

    private var mWrapperChildCount = 0
    private val mResizeContainerRect = Rect()
    private var mInsets: Rect? = null

    private val layoutListener = OnLayoutChangeListener { view, _, _, _, _, _, _, _, _ ->
        val childCount = (view as LinearLayout).childCount
@@ -91,6 +95,9 @@ class WidgetContainer(context: Context, attrs: AttributeSet?) : FrameLayout(cont

    override fun onAttachedToWindow() {
        super.onAttachedToWindow()

        val insetPadding = context.resources.getDimension(R.dimen.widget_page_inset_padding).toInt()

        findViewById<Button>(R.id.manage_widgets)!!.setOnClickListener {
            WidgetsFullSheet.show(mLauncher, true, true)
        }
@@ -107,7 +114,22 @@ class WidgetContainer(context: Context, attrs: AttributeSet?) : FrameLayout(cont
                addOnLayoutChangeListener(layoutListener)
                handleRemoveButtonVisibility(childCount)
            }
        mResizeContainer = findViewById(R.id.widget_resizer_container)!!

        mResizeContainer =
            findViewById<RelativeLayout?>(R.id.widget_resizer_container)!!.apply {
                val layoutParams = this.layoutParams as LayoutParams
                layoutParams.bottomMargin = insetPadding + (mInsets?.bottom ?: 0)
                this.layoutParams = layoutParams
            }

        findViewById<LinearLayout>(R.id.widget_linear_layout)!!.apply {
            setPadding(
                this.paddingLeft,
                insetPadding + (mInsets?.top ?: 0),
                this.paddingRight,
                (mInsets?.bottom ?: 0),
            )
        }
    }

    override fun onDetachedFromWindow() {
@@ -115,6 +137,10 @@ class WidgetContainer(context: Context, attrs: AttributeSet?) : FrameLayout(cont
        mWrapper.removeOnLayoutChangeListener(layoutListener)
    }

    override fun setInsets(insets: Rect?) {
        mInsets = insets
    }

    private fun handleRemoveButtonVisibility(childCount: Int) {
        mWrapperChildCount = childCount
        CoroutineScope(Dispatchers.Main).launch {
@@ -294,8 +320,9 @@ class WidgetContainer(context: Context, attrs: AttributeSet?) : FrameLayout(cont
                    }
                    .also {
                        val opts = mWidgetManager.getAppWidgetOptions(it.appWidgetId)
                        val maxWidth = launcher.deviceProfile.availableWidthPx - 2 *
                                ResourceUtils.pxFromDp(8f, launcher.resources.displayMetrics)
                        val maxWidth =
                            launcher.deviceProfile.availableWidthPx -
                                    2 * ResourceUtils.pxFromDp(8f, launcher.resources.displayMetrics)
                        val params =
                            LayoutParams(
                                maxWidth,
+2 −1
Original line number Diff line number Diff line
@@ -53,6 +53,7 @@ import android.widget.FrameLayout;
import android.widget.LinearLayout;

import com.android.launcher3.DeviceProfile;
import com.android.launcher3.PagedView;
import com.android.launcher3.R;
import com.android.launcher3.Utilities;
import com.android.launcher3.touch.SingleAxisSwipeDetector;
@@ -398,7 +399,7 @@ public class LandscapePagedViewHandler implements RecentsPagedOrientationHandler

    @Override
    public ChildBounds getChildBounds(View child, int childStart, int pageCenter,
            boolean layoutChild) {
                                      boolean layoutChild, PagedView.LayoutParams lp, int offsetY) {
        final int childHeight = child.getMeasuredHeight();
        final int childBottom = childStart + childHeight;
        final int childWidth = child.getMeasuredWidth();
Loading