diff --git a/app/src/main/kotlin/com/simplemobiletools/launcher/activities/MainActivity.kt b/app/src/main/kotlin/com/simplemobiletools/launcher/activities/MainActivity.kt index 2d98f76..fe30653 100644 --- a/app/src/main/kotlin/com/simplemobiletools/launcher/activities/MainActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/launcher/activities/MainActivity.kt @@ -357,6 +357,10 @@ class MainActivity : SimpleActivity(), FlingListener { val yOffset = resources.getDimension(R.dimen.long_press_anchor_button_offset_y) * (visibleMenuButtons - 1) anchorView.y -= yOffset + if (gridItem.type == ITEM_TYPE_WIDGET) { + home_screen_grid.widgetLongPressed(gridItem) + } + val contextTheme = ContextThemeWrapper(this, getPopupMenuTheme()) return PopupMenu(contextTheme, anchorView, Gravity.TOP or Gravity.END).apply { setForceShowIcon(true) @@ -377,6 +381,10 @@ class MainActivity : SimpleActivity(), FlingListener { setOnDismissListener { mOpenPopupMenu = null (all_apps_fragment as AllAppsFragment).ignoreTouches = false + + if (gridItem.type == ITEM_TYPE_WIDGET) { + home_screen_grid.hideResizeLines() + } } show() diff --git a/app/src/main/kotlin/com/simplemobiletools/launcher/views/HomeScreenGrid.kt b/app/src/main/kotlin/com/simplemobiletools/launcher/views/HomeScreenGrid.kt index 5228208..fb09768 100644 --- a/app/src/main/kotlin/com/simplemobiletools/launcher/views/HomeScreenGrid.kt +++ b/app/src/main/kotlin/com/simplemobiletools/launcher/views/HomeScreenGrid.kt @@ -32,7 +32,9 @@ class HomeScreenGrid(context: Context, attrs: AttributeSet, defStyle: Int) : Rel private var roundedCornerRadius = context.resources.getDimension(R.dimen.activity_margin) private var textPaint: TextPaint private var dragShadowCirclePaint: Paint + private var resizeWidgetLinePaint: Paint private var draggedItem: HomeScreenGridItem? = null + private var resizedWidget: HomeScreenGridItem? = null private var isFirstDraw = true // let's use a 6x5 grid for now with 1 special row at the bottom, prefilled with default apps @@ -66,6 +68,12 @@ class HomeScreenGrid(context: Context, attrs: AttributeSet, defStyle: Int) : Rel style = Paint.Style.STROKE } + resizeWidgetLinePaint = Paint(Paint.ANTI_ALIAS_FLAG).apply { + color = Color.WHITE + strokeWidth = context.resources.getDimension(R.dimen.tiny_margin) + style = Paint.Style.STROKE + } + val sideMargin = context.resources.getDimension(R.dimen.normal_margin).toInt() sideMargins.apply { top = context.statusBarHeight @@ -164,6 +172,16 @@ class HomeScreenGrid(context: Context, attrs: AttributeSet, defStyle: Int) : Rel } } + fun widgetLongPressed(item: HomeScreenGridItem) { + resizedWidget = item + redrawGrid() + } + + fun hideResizeLines() { + resizedWidget = null + redrawGrid() + } + private fun addAppIcon() { val center = gridCenters.minBy { Math.abs(it.first - draggedItemCurrentCoords.first + sideMargins.left) + Math.abs(it.second - draggedItemCurrentCoords.second + sideMargins.top) @@ -532,6 +550,15 @@ class HomeScreenGrid(context: Context, attrs: AttributeSet, defStyle: Int) : Rel } } + if (resizedWidget != null) { + val widgetView = widgetViews.firstOrNull { it.tag == resizedWidget!!.widgetId } + if (widgetView != null) { + val viewX = widgetView.x.toInt() + val viewY = widgetView.y.toInt() + canvas.drawRect(Rect(viewX, viewY, viewX + widgetView.width, viewY + widgetView.height), resizeWidgetLinePaint) + } + } + isFirstDraw = false }