mirror of
https://github.com/SimpleMobileTools/Simple-Launcher.git
synced 2025-02-17 03:50:56 +01:00
calculate the minimal cell count at resizing
This commit is contained in:
parent
4921159242
commit
2fd48bdf53
@ -46,3 +46,8 @@ fun Context.getDrawableForPackageName(packageName: String): Drawable? {
|
|||||||
|
|
||||||
return drawable
|
return drawable
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun Context.getTileCount(size: Int): Int {
|
||||||
|
val tiles = Math.ceil(((size / resources.displayMetrics.density) - 30) / 70.0).toInt()
|
||||||
|
return Math.max(tiles, 1)
|
||||||
|
}
|
||||||
|
@ -16,6 +16,7 @@ import com.simplemobiletools.commons.helpers.ensureBackgroundThread
|
|||||||
import com.simplemobiletools.commons.helpers.isRPlus
|
import com.simplemobiletools.commons.helpers.isRPlus
|
||||||
import com.simplemobiletools.launcher.activities.MainActivity
|
import com.simplemobiletools.launcher.activities.MainActivity
|
||||||
import com.simplemobiletools.launcher.adapters.WidgetsAdapter
|
import com.simplemobiletools.launcher.adapters.WidgetsAdapter
|
||||||
|
import com.simplemobiletools.launcher.extensions.getTileCount
|
||||||
import com.simplemobiletools.launcher.helpers.COLUMN_COUNT
|
import com.simplemobiletools.launcher.helpers.COLUMN_COUNT
|
||||||
import com.simplemobiletools.launcher.helpers.ITEM_TYPE_SHORTCUT
|
import com.simplemobiletools.launcher.helpers.ITEM_TYPE_SHORTCUT
|
||||||
import com.simplemobiletools.launcher.helpers.ITEM_TYPE_WIDGET
|
import com.simplemobiletools.launcher.helpers.ITEM_TYPE_WIDGET
|
||||||
@ -93,8 +94,8 @@ class WidgetsFragment(context: Context, attributeSet: AttributeSet) : MyFragment
|
|||||||
val appIcon = appMetadata.appIcon
|
val appIcon = appMetadata.appIcon
|
||||||
val widgetTitle = info.loadLabel(packageManager)
|
val widgetTitle = info.loadLabel(packageManager)
|
||||||
val widgetPreviewImage = info.loadPreviewImage(context, resources.displayMetrics.densityDpi) ?: appIcon
|
val widgetPreviewImage = info.loadPreviewImage(context, resources.displayMetrics.densityDpi) ?: appIcon
|
||||||
val widthCells = Math.min(COLUMN_COUNT, getTileCount(info.minWidth))
|
val widthCells = Math.min(COLUMN_COUNT, context.getTileCount(info.minWidth))
|
||||||
val heightCells = Math.min(ROW_COUNT, getTileCount(info.minHeight))
|
val heightCells = Math.min(ROW_COUNT, context.getTileCount(info.minHeight))
|
||||||
val className = info.provider.className
|
val className = info.provider.className
|
||||||
val widget = AppWidget(appPackageName, appTitle, appIcon, widgetTitle, widgetPreviewImage, widthCells, heightCells, false, className, info)
|
val widget = AppWidget(appPackageName, appTitle, appIcon, widgetTitle, widgetPreviewImage, widthCells, heightCells, false, className, info)
|
||||||
appWidgets.add(widget)
|
appWidgets.add(widget)
|
||||||
@ -120,11 +121,6 @@ class WidgetsFragment(context: Context, attributeSet: AttributeSet) : MyFragment
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun getTileCount(size: Int): Int {
|
|
||||||
val tiles = Math.ceil(((size / resources.displayMetrics.density) - 30) / 70.0).toInt()
|
|
||||||
return Math.max(tiles, 1)
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun splitWidgetsByApps(appWidgets: ArrayList<AppWidget>) {
|
private fun splitWidgetsByApps(appWidgets: ArrayList<AppWidget>) {
|
||||||
var currentAppPackageName = ""
|
var currentAppPackageName = ""
|
||||||
val widgetListItems = ArrayList<WidgetsListItem>()
|
val widgetListItems = ArrayList<WidgetsListItem>()
|
||||||
|
@ -177,7 +177,10 @@ class HomeScreenGrid(context: Context, attrs: AttributeSet, defStyle: Int) : Rel
|
|||||||
val widgetView = widgetViews.firstOrNull { it.tag == resizedWidget!!.widgetId }
|
val widgetView = widgetViews.firstOrNull { it.tag == resizedWidget!!.widgetId }
|
||||||
resize_frame.beGone()
|
resize_frame.beGone()
|
||||||
if (widgetView != null) {
|
if (widgetView != null) {
|
||||||
val appWidgetProviderInfo = item.providerInfo ?: appWidgetManager!!.installedProviders.firstOrNull { it.provider.className == item.className }
|
val appWidgetProviderInfo = item.providerInfo ?: appWidgetManager!!.installedProviders.firstOrNull {
|
||||||
|
it.provider.className == item.className
|
||||||
|
} ?: return
|
||||||
|
|
||||||
val viewX = widgetView.x.toInt()
|
val viewX = widgetView.x.toInt()
|
||||||
val viewY = widgetView.y.toInt()
|
val viewY = widgetView.y.toInt()
|
||||||
val frameRect = Rect(viewX, viewY, viewX + widgetView.width, viewY + widgetView.height)
|
val frameRect = Rect(viewX, viewY, viewX + widgetView.width, viewY + widgetView.height)
|
||||||
|
@ -9,7 +9,10 @@ import android.util.AttributeSet
|
|||||||
import android.view.MotionEvent
|
import android.view.MotionEvent
|
||||||
import android.widget.RelativeLayout
|
import android.widget.RelativeLayout
|
||||||
import com.simplemobiletools.launcher.R
|
import com.simplemobiletools.launcher.R
|
||||||
|
import com.simplemobiletools.launcher.extensions.getTileCount
|
||||||
|
import com.simplemobiletools.launcher.helpers.COLUMN_COUNT
|
||||||
import com.simplemobiletools.launcher.helpers.MAX_CLICK_DURATION
|
import com.simplemobiletools.launcher.helpers.MAX_CLICK_DURATION
|
||||||
|
import com.simplemobiletools.launcher.helpers.ROW_COUNT
|
||||||
|
|
||||||
@SuppressLint("ViewConstructor")
|
@SuppressLint("ViewConstructor")
|
||||||
class MyAppWidgetResizeFrame(context: Context, attrs: AttributeSet, defStyle: Int) : RelativeLayout(context, attrs, defStyle) {
|
class MyAppWidgetResizeFrame(context: Context, attrs: AttributeSet, defStyle: Int) : RelativeLayout(context, attrs, defStyle) {
|
||||||
@ -22,6 +25,8 @@ class MyAppWidgetResizeFrame(context: Context, attrs: AttributeSet, defStyle: In
|
|||||||
private var frameRect = Rect(0, 0, 0, 0)
|
private var frameRect = Rect(0, 0, 0, 0)
|
||||||
private var cellWidth = 0
|
private var cellWidth = 0
|
||||||
private var cellHeight = 0
|
private var cellHeight = 0
|
||||||
|
private var minResizeWidthCells = 1
|
||||||
|
private var minResizeHeightCells = 1
|
||||||
private var providerInfo: AppWidgetProviderInfo? = null
|
private var providerInfo: AppWidgetProviderInfo? = null
|
||||||
private var sideMargins = Rect()
|
private var sideMargins = Rect()
|
||||||
private val lineDotRadius = context.resources.getDimension(R.dimen.resize_frame_dot_radius)
|
private val lineDotRadius = context.resources.getDimension(R.dimen.resize_frame_dot_radius)
|
||||||
@ -49,12 +54,14 @@ class MyAppWidgetResizeFrame(context: Context, attrs: AttributeSet, defStyle: In
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun updateFrameCoords(coords: Rect, cellWidth: Int, cellHeight: Int, sideMargins: Rect, providerInfo: AppWidgetProviderInfo?) {
|
fun updateFrameCoords(coords: Rect, cellWidth: Int, cellHeight: Int, sideMargins: Rect, providerInfo: AppWidgetProviderInfo) {
|
||||||
frameRect = coords
|
frameRect = coords
|
||||||
this.cellWidth = cellWidth
|
this.cellWidth = cellWidth
|
||||||
this.cellHeight = cellHeight
|
this.cellHeight = cellHeight
|
||||||
this.sideMargins = sideMargins
|
this.sideMargins = sideMargins
|
||||||
this.providerInfo = providerInfo
|
this.providerInfo = providerInfo
|
||||||
|
minResizeWidthCells = Math.min(COLUMN_COUNT, context.getTileCount(providerInfo.minResizeWidth))
|
||||||
|
minResizeHeightCells = Math.min(ROW_COUNT, context.getTileCount(providerInfo.minResizeHeight))
|
||||||
redrawFrame()
|
redrawFrame()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user