Loading bliss/res/values/arrays.xml +4 −0 Original line number Diff line number Diff line Loading @@ -12,4 +12,8 @@ <string-array name="aliased_apps"> <item>com.generalmagic.magicearth</item> <item>@string/maps</item> </string-array> <string-array name="blacklisted_widget_options"> <item>org.chromium.chrome.browser.quickactionsearchwidget.QuickActionSearchWidgetProvider$QuickActionSearchWidgetProviderDino</item> </string-array> </resources> bliss/src/foundation/e/bliss/widgets/WidgetContainer.kt +66 −12 Original line number Diff line number Diff line Loading @@ -9,6 +9,7 @@ package foundation.e.bliss.widgets import android.animation.LayoutTransition import android.app.Activity.RESULT_OK import android.appwidget.AppWidgetHostView import android.appwidget.AppWidgetManager import android.appwidget.AppWidgetManager.EXTRA_APPWIDGET_ID import android.appwidget.AppWidgetProviderInfo Loading @@ -30,6 +31,7 @@ import android.widget.FrameLayout import android.widget.LinearLayout import android.widget.RelativeLayout import android.widget.Toast import androidx.core.view.forEach import com.android.launcher3.InvariantDeviceProfile import com.android.launcher3.Launcher import com.android.launcher3.LauncherPrefs Loading @@ -41,6 +43,7 @@ import com.android.launcher3.widget.LauncherAppWidgetProviderInfo import com.android.launcher3.widget.PendingAddShortcutInfo import com.android.launcher3.widget.WidgetCell import com.android.launcher3.widget.picker.WidgetsFullSheet import com.android.launcher3.widget.util.WidgetSizes import foundation.e.bliss.LauncherAppMonitor import foundation.e.bliss.LauncherAppMonitorCallback import foundation.e.bliss.utils.BlissDbUtils Loading @@ -62,6 +65,7 @@ class WidgetContainer(context: Context, attrs: AttributeSet?) : FrameLayout(cont private lateinit var mRemoveWidgetLayout: FrameLayout private lateinit var mResizeContainer: RelativeLayout private lateinit var mWidgetLinearLayout: LinearLayout private lateinit var mWrapper: LinearLayout private val mResizeContainerRect = Rect() private val mInsetPadding = Loading Loading @@ -99,6 +103,7 @@ class WidgetContainer(context: Context, attrs: AttributeSet?) : FrameLayout(cont context.startActivity(intent) } mWrapper = findViewWithTag<LinearLayout?>("wrapper_children").apply { setOnHierarchyChangeListener( object : OnHierarchyChangeListener { Loading Loading @@ -164,6 +169,36 @@ class WidgetContainer(context: Context, attrs: AttributeSet?) : FrameLayout(cont } } fun updateWidgets() { if (::mWrapper.isInitialized) { val widgetDbHelper = WidgetsDbHelper.getInstance(context) val widgetManager = AppWidgetManager.getInstance(context) mWrapper.forEach { val height = widgetDbHelper.getWidgetHeight(it.id) ?: 0 val info = (it as AppWidgetHostView).appWidgetInfo val opts = WidgetSizes.getWidgetSizeOptions( context, info.provider, mLauncher.deviceProfile.inv.numColumns, mLauncher.deviceProfile.inv.numRows ) if (height > 0) { opts.putInt(AppWidgetManager.OPTION_APPWIDGET_MIN_HEIGHT, height) opts.putInt(AppWidgetManager.OPTION_APPWIDGET_MAX_HEIGHT, height) } val blacklistedComponents = context.resources.getStringArray(R.array.blacklisted_widget_options) if (!blacklistedComponents.contains(info.provider.className)) { widgetManager.updateAppWidgetOptions(it.appWidgetId, opts) } } } } /** A fragment to display the default widgets. */ class WidgetFragment : FragmentWithPreview() { private lateinit var mWrapper: LinearLayout Loading Loading @@ -341,7 +376,7 @@ class WidgetContainer(context: Context, attrs: AttributeSet?) : FrameLayout(cont } } .also { val opts = mWidgetManager.getAppWidgetOptions(it.appWidgetId) var opts = mWidgetManager.getAppWidgetOptions(it.appWidgetId) val params = LayoutParams( -1, Loading Loading @@ -391,6 +426,25 @@ class WidgetContainer(context: Context, attrs: AttributeSet?) : FrameLayout(cont mWrapper.addView(it) } opts = WidgetSizes.getWidgetSizeOptions( context, info.provider, launcher.deviceProfile.inv.numColumns, launcher.deviceProfile.inv.numRows ) if (params.height > 0) { opts.putInt(AppWidgetManager.OPTION_APPWIDGET_MIN_HEIGHT, params.height) opts.putInt(AppWidgetManager.OPTION_APPWIDGET_MAX_HEIGHT, params.height) } val blacklistedComponents = context.resources.getStringArray(R.array.blacklisted_widget_options) if (!blacklistedComponents.contains(info.provider.className)) { mWidgetManager.updateAppWidgetOptions(it.appWidgetId, opts) } widgetsDbHelper.insert( WidgetInfo( mWrapper.indexOfChild(it), Loading src/com/android/launcher3/Launcher.java +3 −0 Original line number Diff line number Diff line Loading @@ -3442,6 +3442,9 @@ public class Launcher extends StatefulActivity<LauncherState> implements Launche @Override public void onStopTrackingTouch(SeekBar seekBar) { int newHeight = minHeight + (normalisedDifference * seekBar.getProgress()); if (getWorkspace().getFirstPagePinnedItem() instanceof WidgetContainer) { ((WidgetContainer) getWorkspace().getFirstPagePinnedItem()).updateWidgets(); } Logger.d("Launcher.WidgetResize", "newHeight: " + newHeight); WidgetsDbHelper.getInstance(getApplicationContext()) .updateHeight(activeRoundedWidgetView.getAppWidgetId(), newHeight); Loading src/com/android/launcher3/Workspace.java +4 −0 Original line number Diff line number Diff line Loading @@ -148,6 +148,7 @@ import foundation.e.bliss.LauncherAppMonitorCallback; import foundation.e.bliss.folder.GridFolder; import foundation.e.bliss.multimode.MultiModeController; import foundation.e.bliss.pageindicators.WorkspacePageIndicatorDots; import foundation.e.bliss.widgets.WidgetContainer; /** * The workspace is a wide area with a wallpaper and a finite number of pages. Loading Loading @@ -375,6 +376,9 @@ public class Workspace extends PagedView<WorkspacePageIndicatorDots> updateWorkspaceScreensPadding(); updateWorkspaceWidgetsSizes(); if (getFirstPagePinnedItem() instanceof WidgetContainer) { ((WidgetContainer) getFirstPagePinnedItem()).updateWidgets(); } } private void updateWorkspaceScreensPadding() { Loading Loading
bliss/res/values/arrays.xml +4 −0 Original line number Diff line number Diff line Loading @@ -12,4 +12,8 @@ <string-array name="aliased_apps"> <item>com.generalmagic.magicearth</item> <item>@string/maps</item> </string-array> <string-array name="blacklisted_widget_options"> <item>org.chromium.chrome.browser.quickactionsearchwidget.QuickActionSearchWidgetProvider$QuickActionSearchWidgetProviderDino</item> </string-array> </resources>
bliss/src/foundation/e/bliss/widgets/WidgetContainer.kt +66 −12 Original line number Diff line number Diff line Loading @@ -9,6 +9,7 @@ package foundation.e.bliss.widgets import android.animation.LayoutTransition import android.app.Activity.RESULT_OK import android.appwidget.AppWidgetHostView import android.appwidget.AppWidgetManager import android.appwidget.AppWidgetManager.EXTRA_APPWIDGET_ID import android.appwidget.AppWidgetProviderInfo Loading @@ -30,6 +31,7 @@ import android.widget.FrameLayout import android.widget.LinearLayout import android.widget.RelativeLayout import android.widget.Toast import androidx.core.view.forEach import com.android.launcher3.InvariantDeviceProfile import com.android.launcher3.Launcher import com.android.launcher3.LauncherPrefs Loading @@ -41,6 +43,7 @@ import com.android.launcher3.widget.LauncherAppWidgetProviderInfo import com.android.launcher3.widget.PendingAddShortcutInfo import com.android.launcher3.widget.WidgetCell import com.android.launcher3.widget.picker.WidgetsFullSheet import com.android.launcher3.widget.util.WidgetSizes import foundation.e.bliss.LauncherAppMonitor import foundation.e.bliss.LauncherAppMonitorCallback import foundation.e.bliss.utils.BlissDbUtils Loading @@ -62,6 +65,7 @@ class WidgetContainer(context: Context, attrs: AttributeSet?) : FrameLayout(cont private lateinit var mRemoveWidgetLayout: FrameLayout private lateinit var mResizeContainer: RelativeLayout private lateinit var mWidgetLinearLayout: LinearLayout private lateinit var mWrapper: LinearLayout private val mResizeContainerRect = Rect() private val mInsetPadding = Loading Loading @@ -99,6 +103,7 @@ class WidgetContainer(context: Context, attrs: AttributeSet?) : FrameLayout(cont context.startActivity(intent) } mWrapper = findViewWithTag<LinearLayout?>("wrapper_children").apply { setOnHierarchyChangeListener( object : OnHierarchyChangeListener { Loading Loading @@ -164,6 +169,36 @@ class WidgetContainer(context: Context, attrs: AttributeSet?) : FrameLayout(cont } } fun updateWidgets() { if (::mWrapper.isInitialized) { val widgetDbHelper = WidgetsDbHelper.getInstance(context) val widgetManager = AppWidgetManager.getInstance(context) mWrapper.forEach { val height = widgetDbHelper.getWidgetHeight(it.id) ?: 0 val info = (it as AppWidgetHostView).appWidgetInfo val opts = WidgetSizes.getWidgetSizeOptions( context, info.provider, mLauncher.deviceProfile.inv.numColumns, mLauncher.deviceProfile.inv.numRows ) if (height > 0) { opts.putInt(AppWidgetManager.OPTION_APPWIDGET_MIN_HEIGHT, height) opts.putInt(AppWidgetManager.OPTION_APPWIDGET_MAX_HEIGHT, height) } val blacklistedComponents = context.resources.getStringArray(R.array.blacklisted_widget_options) if (!blacklistedComponents.contains(info.provider.className)) { widgetManager.updateAppWidgetOptions(it.appWidgetId, opts) } } } } /** A fragment to display the default widgets. */ class WidgetFragment : FragmentWithPreview() { private lateinit var mWrapper: LinearLayout Loading Loading @@ -341,7 +376,7 @@ class WidgetContainer(context: Context, attrs: AttributeSet?) : FrameLayout(cont } } .also { val opts = mWidgetManager.getAppWidgetOptions(it.appWidgetId) var opts = mWidgetManager.getAppWidgetOptions(it.appWidgetId) val params = LayoutParams( -1, Loading Loading @@ -391,6 +426,25 @@ class WidgetContainer(context: Context, attrs: AttributeSet?) : FrameLayout(cont mWrapper.addView(it) } opts = WidgetSizes.getWidgetSizeOptions( context, info.provider, launcher.deviceProfile.inv.numColumns, launcher.deviceProfile.inv.numRows ) if (params.height > 0) { opts.putInt(AppWidgetManager.OPTION_APPWIDGET_MIN_HEIGHT, params.height) opts.putInt(AppWidgetManager.OPTION_APPWIDGET_MAX_HEIGHT, params.height) } val blacklistedComponents = context.resources.getStringArray(R.array.blacklisted_widget_options) if (!blacklistedComponents.contains(info.provider.className)) { mWidgetManager.updateAppWidgetOptions(it.appWidgetId, opts) } widgetsDbHelper.insert( WidgetInfo( mWrapper.indexOfChild(it), Loading
src/com/android/launcher3/Launcher.java +3 −0 Original line number Diff line number Diff line Loading @@ -3442,6 +3442,9 @@ public class Launcher extends StatefulActivity<LauncherState> implements Launche @Override public void onStopTrackingTouch(SeekBar seekBar) { int newHeight = minHeight + (normalisedDifference * seekBar.getProgress()); if (getWorkspace().getFirstPagePinnedItem() instanceof WidgetContainer) { ((WidgetContainer) getWorkspace().getFirstPagePinnedItem()).updateWidgets(); } Logger.d("Launcher.WidgetResize", "newHeight: " + newHeight); WidgetsDbHelper.getInstance(getApplicationContext()) .updateHeight(activeRoundedWidgetView.getAppWidgetId(), newHeight); Loading
src/com/android/launcher3/Workspace.java +4 −0 Original line number Diff line number Diff line Loading @@ -148,6 +148,7 @@ import foundation.e.bliss.LauncherAppMonitorCallback; import foundation.e.bliss.folder.GridFolder; import foundation.e.bliss.multimode.MultiModeController; import foundation.e.bliss.pageindicators.WorkspacePageIndicatorDots; import foundation.e.bliss.widgets.WidgetContainer; /** * The workspace is a wide area with a wallpaper and a finite number of pages. Loading Loading @@ -375,6 +376,9 @@ public class Workspace extends PagedView<WorkspacePageIndicatorDots> updateWorkspaceScreensPadding(); updateWorkspaceWidgetsSizes(); if (getFirstPagePinnedItem() instanceof WidgetContainer) { ((WidgetContainer) getFirstPagePinnedItem()).updateWidgets(); } } private void updateWorkspaceScreensPadding() { Loading