mirror of
https://github.com/SimpleMobileTools/Simple-Launcher.git
synced 2025-02-18 12:30:38 +01:00
parent
552b7e561a
commit
79d047c852
@ -152,8 +152,8 @@ class MainActivity : SimpleActivity(), FlingListener {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (checkedYCell in 0 until COLUMN_COUNT) {
|
for (checkedYCell in 0 until getHomeColumnCount()) {
|
||||||
for (checkedXCell in 0 until ROW_COUNT - 1) {
|
for (checkedXCell in 0 until getHomeRowCount() - 1) {
|
||||||
val wantedCell = Pair(checkedXCell, checkedYCell)
|
val wantedCell = Pair(checkedXCell, checkedYCell)
|
||||||
if (!occupiedCells.contains(wantedCell)) {
|
if (!occupiedCells.contains(wantedCell)) {
|
||||||
return Rect(wantedCell.first, wantedCell.second, wantedCell.first, wantedCell.second)
|
return Rect(wantedCell.first, wantedCell.second, wantedCell.first, wantedCell.second)
|
||||||
@ -208,6 +208,11 @@ class MainActivity : SimpleActivity(), FlingListener {
|
|||||||
if (window.navigationBarColor != resources.getColor(R.color.semitransparent_navigation)) {
|
if (window.navigationBarColor != resources.getColor(R.color.semitransparent_navigation)) {
|
||||||
window.navigationBarColor = Color.TRANSPARENT
|
window.navigationBarColor = Color.TRANSPARENT
|
||||||
}
|
}
|
||||||
|
|
||||||
|
home_screen_grid?.resizeGrid(
|
||||||
|
newRowCount = getHomeRowCount(),
|
||||||
|
newColumnCount = getHomeColumnCount()
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onStop() {
|
override fun onStop() {
|
||||||
@ -469,7 +474,7 @@ class MainActivity : SimpleActivity(), FlingListener {
|
|||||||
mLongPressedIcon = gridItem
|
mLongPressedIcon = gridItem
|
||||||
val anchorY = if (isOnAllAppsFragment || gridItem.type == ITEM_TYPE_WIDGET) {
|
val anchorY = if (isOnAllAppsFragment || gridItem.type == ITEM_TYPE_WIDGET) {
|
||||||
y
|
y
|
||||||
} else if (gridItem.top == ROW_COUNT - 1) {
|
} else if (gridItem.top == getHomeRowCount() - 1) {
|
||||||
home_screen_grid.sideMargins.top + (gridItem.top * home_screen_grid.cellHeight.toFloat())
|
home_screen_grid.sideMargins.top + (gridItem.top * home_screen_grid.cellHeight.toFloat())
|
||||||
} else {
|
} else {
|
||||||
(gridItem.top * home_screen_grid.cellHeight.toFloat())
|
(gridItem.top * home_screen_grid.cellHeight.toFloat())
|
||||||
@ -699,7 +704,7 @@ class MainActivity : SimpleActivity(), FlingListener {
|
|||||||
val defaultDialerPackage = (getSystemService(Context.TELECOM_SERVICE) as TelecomManager).defaultDialerPackage
|
val defaultDialerPackage = (getSystemService(Context.TELECOM_SERVICE) as TelecomManager).defaultDialerPackage
|
||||||
appLaunchers.firstOrNull { it.packageName == defaultDialerPackage }?.apply {
|
appLaunchers.firstOrNull { it.packageName == defaultDialerPackage }?.apply {
|
||||||
val dialerIcon =
|
val dialerIcon =
|
||||||
HomeScreenGridItem(null, 0, ROW_COUNT - 1, 0, ROW_COUNT - 1, defaultDialerPackage, "", title, ITEM_TYPE_ICON, "", -1, "", "", null)
|
HomeScreenGridItem(null, 0, getHomeRowCount() - 1, 0, getHomeRowCount() - 1, defaultDialerPackage, "", title, ITEM_TYPE_ICON, "", -1, "", "", null)
|
||||||
homeScreenGridItems.add(dialerIcon)
|
homeScreenGridItems.add(dialerIcon)
|
||||||
}
|
}
|
||||||
} catch (e: Exception) {
|
} catch (e: Exception) {
|
||||||
@ -709,7 +714,7 @@ class MainActivity : SimpleActivity(), FlingListener {
|
|||||||
val defaultSMSMessengerPackage = Telephony.Sms.getDefaultSmsPackage(this)
|
val defaultSMSMessengerPackage = Telephony.Sms.getDefaultSmsPackage(this)
|
||||||
appLaunchers.firstOrNull { it.packageName == defaultSMSMessengerPackage }?.apply {
|
appLaunchers.firstOrNull { it.packageName == defaultSMSMessengerPackage }?.apply {
|
||||||
val SMSMessengerIcon =
|
val SMSMessengerIcon =
|
||||||
HomeScreenGridItem(null, 1, ROW_COUNT - 1, 1, ROW_COUNT - 1, defaultSMSMessengerPackage, "", title, ITEM_TYPE_ICON, "", -1, "", "", null)
|
HomeScreenGridItem(null, 1, getHomeRowCount() - 1, 1, getHomeRowCount() - 1, defaultSMSMessengerPackage, "", title, ITEM_TYPE_ICON, "", -1, "", "", null)
|
||||||
homeScreenGridItems.add(SMSMessengerIcon)
|
homeScreenGridItems.add(SMSMessengerIcon)
|
||||||
}
|
}
|
||||||
} catch (e: Exception) {
|
} catch (e: Exception) {
|
||||||
@ -721,7 +726,7 @@ class MainActivity : SimpleActivity(), FlingListener {
|
|||||||
val defaultBrowserPackage = resolveInfo!!.activityInfo.packageName
|
val defaultBrowserPackage = resolveInfo!!.activityInfo.packageName
|
||||||
appLaunchers.firstOrNull { it.packageName == defaultBrowserPackage }?.apply {
|
appLaunchers.firstOrNull { it.packageName == defaultBrowserPackage }?.apply {
|
||||||
val browserIcon =
|
val browserIcon =
|
||||||
HomeScreenGridItem(null, 2, ROW_COUNT - 1, 2, ROW_COUNT - 1, defaultBrowserPackage, "", title, ITEM_TYPE_ICON, "", -1, "", "", null)
|
HomeScreenGridItem(null, 2, getHomeRowCount() - 1, 2, getHomeRowCount() - 1, defaultBrowserPackage, "", title, ITEM_TYPE_ICON, "", -1, "", "", null)
|
||||||
homeScreenGridItems.add(browserIcon)
|
homeScreenGridItems.add(browserIcon)
|
||||||
}
|
}
|
||||||
} catch (e: Exception) {
|
} catch (e: Exception) {
|
||||||
@ -732,7 +737,7 @@ class MainActivity : SimpleActivity(), FlingListener {
|
|||||||
val storePackage = potentialStores.firstOrNull { isPackageInstalled(it) && appLaunchers.map { it.packageName }.contains(it) }
|
val storePackage = potentialStores.firstOrNull { isPackageInstalled(it) && appLaunchers.map { it.packageName }.contains(it) }
|
||||||
if (storePackage != null) {
|
if (storePackage != null) {
|
||||||
appLaunchers.firstOrNull { it.packageName == storePackage }?.apply {
|
appLaunchers.firstOrNull { it.packageName == storePackage }?.apply {
|
||||||
val storeIcon = HomeScreenGridItem(null, 3, ROW_COUNT - 1, 3, ROW_COUNT - 1, storePackage, "", title, ITEM_TYPE_ICON, "", -1, "", "", null)
|
val storeIcon = HomeScreenGridItem(null, 3, getHomeRowCount() - 1, 3, getHomeRowCount() - 1, storePackage, "", title, ITEM_TYPE_ICON, "", -1, "", "", null)
|
||||||
homeScreenGridItems.add(storeIcon)
|
homeScreenGridItems.add(storeIcon)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -745,7 +750,7 @@ class MainActivity : SimpleActivity(), FlingListener {
|
|||||||
val defaultCameraPackage = resolveInfo!!.activityInfo.packageName
|
val defaultCameraPackage = resolveInfo!!.activityInfo.packageName
|
||||||
appLaunchers.firstOrNull { it.packageName == defaultCameraPackage }?.apply {
|
appLaunchers.firstOrNull { it.packageName == defaultCameraPackage }?.apply {
|
||||||
val cameraIcon =
|
val cameraIcon =
|
||||||
HomeScreenGridItem(null, 4, ROW_COUNT - 1, 4, ROW_COUNT - 1, defaultCameraPackage, "", title, ITEM_TYPE_ICON, "", -1, "", "", null)
|
HomeScreenGridItem(null, 4, getHomeRowCount() - 1, 4, getHomeRowCount() - 1, defaultCameraPackage, "", title, ITEM_TYPE_ICON, "", -1, "", "", null)
|
||||||
homeScreenGridItems.add(cameraIcon)
|
homeScreenGridItems.add(cameraIcon)
|
||||||
}
|
}
|
||||||
} catch (e: Exception) {
|
} catch (e: Exception) {
|
||||||
|
@ -2,13 +2,21 @@ package com.simplemobiletools.launcher.activities
|
|||||||
|
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
|
import com.simplemobiletools.commons.dialogs.RadioGroupDialog
|
||||||
import com.simplemobiletools.commons.extensions.*
|
import com.simplemobiletools.commons.extensions.*
|
||||||
import com.simplemobiletools.commons.helpers.NavigationIcon
|
import com.simplemobiletools.commons.helpers.NavigationIcon
|
||||||
import com.simplemobiletools.commons.helpers.isTiramisuPlus
|
import com.simplemobiletools.commons.helpers.isTiramisuPlus
|
||||||
import com.simplemobiletools.commons.models.FAQItem
|
import com.simplemobiletools.commons.models.FAQItem
|
||||||
|
import com.simplemobiletools.commons.models.RadioItem
|
||||||
import com.simplemobiletools.launcher.BuildConfig
|
import com.simplemobiletools.launcher.BuildConfig
|
||||||
import com.simplemobiletools.launcher.R
|
import com.simplemobiletools.launcher.R
|
||||||
import com.simplemobiletools.launcher.extensions.config
|
import com.simplemobiletools.launcher.extensions.config
|
||||||
|
import com.simplemobiletools.launcher.extensions.getHomeColumnCount
|
||||||
|
import com.simplemobiletools.launcher.extensions.getHomeRowCount
|
||||||
|
import com.simplemobiletools.launcher.helpers.MAX_COLUMN_COUNT
|
||||||
|
import com.simplemobiletools.launcher.helpers.MAX_ROW_COUNT
|
||||||
|
import com.simplemobiletools.launcher.helpers.MIN_COLUMN_COUNT
|
||||||
|
import com.simplemobiletools.launcher.helpers.MIN_ROW_COUNT
|
||||||
import kotlinx.android.synthetic.main.activity_settings.*
|
import kotlinx.android.synthetic.main.activity_settings.*
|
||||||
import java.util.*
|
import java.util.*
|
||||||
import kotlin.system.exitProcess
|
import kotlin.system.exitProcess
|
||||||
@ -32,11 +40,13 @@ class SettingsActivity : SimpleActivity() {
|
|||||||
setupPurchaseThankYou()
|
setupPurchaseThankYou()
|
||||||
setupCustomizeColors()
|
setupCustomizeColors()
|
||||||
setupUseEnglish()
|
setupUseEnglish()
|
||||||
|
setupHomeRowCount()
|
||||||
|
setupHomeColumnCount()
|
||||||
setupLanguage()
|
setupLanguage()
|
||||||
setupManageHiddenIcons()
|
setupManageHiddenIcons()
|
||||||
updateTextColors(settings_holder)
|
updateTextColors(settings_holder)
|
||||||
|
|
||||||
arrayOf(settings_color_customization_section_label, settings_general_settings_label).forEach {
|
arrayOf(settings_color_customization_section_label, settings_general_settings_label, settings_home_screen_label).forEach {
|
||||||
it.setTextColor(getProperPrimaryColor())
|
it.setTextColor(getProperPrimaryColor())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -82,6 +92,52 @@ class SettingsActivity : SimpleActivity() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun setupHomeRowCount() {
|
||||||
|
val currentRowCount = getHomeRowCount()
|
||||||
|
settings_home_screen_row_count.text = currentRowCount.toString()
|
||||||
|
settings_home_screen_row_count_holder.setOnClickListener {
|
||||||
|
val items = ArrayList<RadioItem>()
|
||||||
|
for (i in MIN_ROW_COUNT..MAX_ROW_COUNT) {
|
||||||
|
items.add(RadioItem(i, resources.getQuantityString(R.plurals.column_counts, i, i)))
|
||||||
|
}
|
||||||
|
|
||||||
|
RadioGroupDialog(this, items, currentRowCount) {
|
||||||
|
val newRowCount = it as Int
|
||||||
|
if (currentRowCount != newRowCount) {
|
||||||
|
if (portrait) {
|
||||||
|
config.portraitHomeRowCount = newRowCount
|
||||||
|
} else {
|
||||||
|
config.landscapeHomeRowCount = newRowCount
|
||||||
|
}
|
||||||
|
setupHomeRowCount()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun setupHomeColumnCount() {
|
||||||
|
val currentColumnCount = getHomeColumnCount()
|
||||||
|
settings_home_screen_column_count.text = currentColumnCount.toString()
|
||||||
|
settings_home_screen_column_count_holder.setOnClickListener {
|
||||||
|
val items = ArrayList<RadioItem>()
|
||||||
|
for (i in MIN_COLUMN_COUNT..MAX_COLUMN_COUNT) {
|
||||||
|
items.add(RadioItem(i, resources.getQuantityString(R.plurals.column_counts, i, i)))
|
||||||
|
}
|
||||||
|
|
||||||
|
RadioGroupDialog(this, items, currentColumnCount) {
|
||||||
|
val newColumnCount = it as Int
|
||||||
|
if (currentColumnCount != newColumnCount) {
|
||||||
|
if (portrait) {
|
||||||
|
config.portraitHomeColumnCount = newColumnCount
|
||||||
|
} else {
|
||||||
|
config.landscapeHomeColumnCount = newColumnCount
|
||||||
|
}
|
||||||
|
setupHomeColumnCount()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private fun setupLanguage() {
|
private fun setupLanguage() {
|
||||||
settings_language.text = Locale.getDefault().displayLanguage
|
settings_language.text = Locale.getDefault().displayLanguage
|
||||||
settings_language_holder.beVisibleIf(isTiramisuPlus())
|
settings_language_holder.beVisibleIf(isTiramisuPlus())
|
||||||
|
@ -31,6 +31,22 @@ fun Context.getColumnCount(): Int {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun Context.getHomeRowCount(): Int {
|
||||||
|
return if (portrait) {
|
||||||
|
config.portraitHomeRowCount
|
||||||
|
} else {
|
||||||
|
config.landscapeHomeRowCount
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun Context.getHomeColumnCount(): Int {
|
||||||
|
return if (portrait) {
|
||||||
|
config.portraitHomeColumnCount
|
||||||
|
} else {
|
||||||
|
config.landscapeHomeColumnCount
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
fun Context.getDrawableForPackageName(packageName: String): Drawable? {
|
fun Context.getDrawableForPackageName(packageName: String): Drawable? {
|
||||||
var drawable: Drawable? = null
|
var drawable: Drawable? = null
|
||||||
try {
|
try {
|
||||||
|
@ -11,4 +11,20 @@ class Config(context: Context) : BaseConfig(context) {
|
|||||||
var wasHomeScreenInit: Boolean
|
var wasHomeScreenInit: Boolean
|
||||||
get() = prefs.getBoolean(WAS_HOME_SCREEN_INIT, false)
|
get() = prefs.getBoolean(WAS_HOME_SCREEN_INIT, false)
|
||||||
set(wasHomeScreenInit) = prefs.edit().putBoolean(WAS_HOME_SCREEN_INIT, wasHomeScreenInit).apply()
|
set(wasHomeScreenInit) = prefs.edit().putBoolean(WAS_HOME_SCREEN_INIT, wasHomeScreenInit).apply()
|
||||||
|
|
||||||
|
var portraitHomeColumnCount: Int
|
||||||
|
get() = prefs.getInt(PORTRAIT_HOME_COLUMN_COUNT, COLUMN_COUNT)
|
||||||
|
set(portraitHomeColumnCount) = prefs.edit().putInt(PORTRAIT_HOME_COLUMN_COUNT, portraitHomeColumnCount).apply()
|
||||||
|
|
||||||
|
var landscapeHomeColumnCount: Int
|
||||||
|
get() = prefs.getInt(LANDSCAPE_HOME_COLUMN_COUNT, COLUMN_COUNT)
|
||||||
|
set(landscapeHomeColumnCount) = prefs.edit().putInt(LANDSCAPE_HOME_COLUMN_COUNT, landscapeHomeColumnCount).apply()
|
||||||
|
|
||||||
|
var portraitHomeRowCount: Int
|
||||||
|
get() = prefs.getInt(PORTRAIT_HOME_ROW_COUNT, ROW_COUNT)
|
||||||
|
set(portraitHomeRowCount) = prefs.edit().putInt(PORTRAIT_HOME_ROW_COUNT, portraitHomeRowCount).apply()
|
||||||
|
|
||||||
|
var landscapeHomeRowCount: Int
|
||||||
|
get() = prefs.getInt(LANDSCAPE_HOME_ROW_COUNT, ROW_COUNT)
|
||||||
|
set(landscapeHomeRowCount) = prefs.edit().putInt(LANDSCAPE_HOME_ROW_COUNT, landscapeHomeRowCount).apply()
|
||||||
}
|
}
|
||||||
|
@ -5,10 +5,18 @@ const val WIDGET_LIST_ITEMS_HOLDER = 1
|
|||||||
|
|
||||||
// shared prefs
|
// shared prefs
|
||||||
const val WAS_HOME_SCREEN_INIT = "was_home_screen_init"
|
const val WAS_HOME_SCREEN_INIT = "was_home_screen_init"
|
||||||
|
const val PORTRAIT_HOME_ROW_COUNT = "portrait_home_row_count"
|
||||||
|
const val LANDSCAPE_HOME_ROW_COUNT = "landscape_home_row_count"
|
||||||
|
const val PORTRAIT_HOME_COLUMN_COUNT = "portrait_home_column_count"
|
||||||
|
const val LANDSCAPE_HOME_COLUMN_COUNT = "landscape_home_column_count"
|
||||||
|
|
||||||
// default home screen grid size
|
// default home screen grid size
|
||||||
const val ROW_COUNT = 6
|
const val ROW_COUNT = 6
|
||||||
const val COLUMN_COUNT = 5
|
const val COLUMN_COUNT = 5
|
||||||
|
const val MIN_ROW_COUNT = 2
|
||||||
|
const val MAX_ROW_COUNT = 15
|
||||||
|
const val MIN_COLUMN_COUNT = 2
|
||||||
|
const val MAX_COLUMN_COUNT = 15
|
||||||
|
|
||||||
const val UNINSTALL_APP_REQUEST_CODE = 50
|
const val UNINSTALL_APP_REQUEST_CODE = 50
|
||||||
const val REQUEST_CONFIGURE_WIDGET = 51
|
const val REQUEST_CONFIGURE_WIDGET = 51
|
||||||
|
@ -23,10 +23,14 @@ import com.simplemobiletools.commons.helpers.isSPlus
|
|||||||
import com.simplemobiletools.launcher.R
|
import com.simplemobiletools.launcher.R
|
||||||
import com.simplemobiletools.launcher.activities.MainActivity
|
import com.simplemobiletools.launcher.activities.MainActivity
|
||||||
import com.simplemobiletools.launcher.extensions.getDrawableForPackageName
|
import com.simplemobiletools.launcher.extensions.getDrawableForPackageName
|
||||||
|
import com.simplemobiletools.launcher.extensions.getHomeColumnCount
|
||||||
|
import com.simplemobiletools.launcher.extensions.getHomeRowCount
|
||||||
import com.simplemobiletools.launcher.extensions.homeScreenGridItemsDB
|
import com.simplemobiletools.launcher.extensions.homeScreenGridItemsDB
|
||||||
import com.simplemobiletools.launcher.helpers.*
|
import com.simplemobiletools.launcher.helpers.*
|
||||||
import com.simplemobiletools.launcher.models.HomeScreenGridItem
|
import com.simplemobiletools.launcher.models.HomeScreenGridItem
|
||||||
import kotlinx.android.synthetic.main.activity_main.view.*
|
import kotlinx.android.synthetic.main.activity_main.view.*
|
||||||
|
import kotlin.math.max
|
||||||
|
import kotlin.math.min
|
||||||
|
|
||||||
class HomeScreenGrid(context: Context, attrs: AttributeSet, defStyle: Int) : RelativeLayout(context, attrs, defStyle) {
|
class HomeScreenGrid(context: Context, attrs: AttributeSet, defStyle: Int) : RelativeLayout(context, attrs, defStyle) {
|
||||||
constructor(context: Context, attrs: AttributeSet) : this(context, attrs, 0)
|
constructor(context: Context, attrs: AttributeSet) : this(context, attrs, 0)
|
||||||
@ -41,9 +45,10 @@ class HomeScreenGrid(context: Context, attrs: AttributeSet, defStyle: Int) : Rel
|
|||||||
private var isFirstDraw = true
|
private var isFirstDraw = true
|
||||||
private var iconSize = 0
|
private var iconSize = 0
|
||||||
|
|
||||||
// let's use a 6x5 grid for now with 1 special row at the bottom, prefilled with default apps
|
private var columnCount = context.getHomeColumnCount()
|
||||||
private var cellXCoords = ArrayList<Int>(COLUMN_COUNT)
|
private var rowCount = context.getHomeRowCount()
|
||||||
private var cellYCoords = ArrayList<Int>(ROW_COUNT)
|
private var cellXCoords = ArrayList<Int>(columnCount)
|
||||||
|
private var cellYCoords = ArrayList<Int>(rowCount)
|
||||||
var cellWidth = 0
|
var cellWidth = 0
|
||||||
var cellHeight = 0
|
var cellHeight = 0
|
||||||
|
|
||||||
@ -106,6 +111,16 @@ class HomeScreenGrid(context: Context, attrs: AttributeSet, defStyle: Int) : Rel
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun resizeGrid(newRowCount: Int, newColumnCount: Int) {
|
||||||
|
if (columnCount != newColumnCount || rowCount != newRowCount){
|
||||||
|
rowCount = newRowCount
|
||||||
|
columnCount = newColumnCount
|
||||||
|
cellXCoords = ArrayList(columnCount)
|
||||||
|
cellYCoords = ArrayList(rowCount)
|
||||||
|
invalidate()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
fun removeAppIcon(item: HomeScreenGridItem) {
|
fun removeAppIcon(item: HomeScreenGridItem) {
|
||||||
ensureBackgroundThread {
|
ensureBackgroundThread {
|
||||||
removeItemFromHomeScreen(item)
|
removeItemFromHomeScreen(item)
|
||||||
@ -521,11 +536,15 @@ class HomeScreenGrid(context: Context, attrs: AttributeSet, defStyle: Int) : Rel
|
|||||||
}
|
}
|
||||||
|
|
||||||
gridItems.filter { it.drawable != null && it.type == ITEM_TYPE_ICON || it.type == ITEM_TYPE_SHORTCUT }.forEach { item ->
|
gridItems.filter { it.drawable != null && it.type == ITEM_TYPE_ICON || it.type == ITEM_TYPE_SHORTCUT }.forEach { item ->
|
||||||
|
if (item.outOfBounds()) {
|
||||||
|
return@forEach
|
||||||
|
}
|
||||||
|
|
||||||
if (item.id != draggedItem?.id) {
|
if (item.id != draggedItem?.id) {
|
||||||
val drawableX = cellXCoords[item.left] + iconMargin + sideMargins.left
|
val drawableX = cellXCoords[item.left] + iconMargin + sideMargins.left
|
||||||
|
|
||||||
// icons at the bottom are drawn at the bottom of the grid and they have no label
|
// icons at the bottom are drawn at the bottom of the grid and they have no label
|
||||||
if (item.top == ROW_COUNT - 1) {
|
if (item.top == context.getHomeRowCount() - 1) {
|
||||||
val drawableY = cellYCoords[item.top] + cellHeight - iconSize - iconMargin * 2 + sideMargins.top
|
val drawableY = cellYCoords[item.top] + cellHeight - iconSize - iconMargin * 2 + sideMargins.top
|
||||||
item.drawable!!.setBounds(drawableX, drawableY, drawableX + iconSize, drawableY + iconSize)
|
item.drawable!!.setBounds(drawableX, drawableY, drawableX + iconSize, drawableY + iconSize)
|
||||||
} else {
|
} else {
|
||||||
@ -569,7 +588,7 @@ class HomeScreenGrid(context: Context, attrs: AttributeSet, defStyle: Int) : Rel
|
|||||||
val gridCells = getClosestGridCells(center)
|
val gridCells = getClosestGridCells(center)
|
||||||
if (gridCells != null) {
|
if (gridCells != null) {
|
||||||
val shadowX = cellXCoords[gridCells.first] + iconMargin.toFloat() + iconSize / 2 + sideMargins.left
|
val shadowX = cellXCoords[gridCells.first] + iconMargin.toFloat() + iconSize / 2 + sideMargins.left
|
||||||
val shadowY = if (gridCells.second == ROW_COUNT - 1) {
|
val shadowY = if (gridCells.second == context.getHomeRowCount() - 1) {
|
||||||
cellYCoords[gridCells.second] + cellHeight - iconSize / 2 - iconMargin * 2
|
cellYCoords[gridCells.second] + cellHeight - iconSize / 2 - iconMargin * 2
|
||||||
} else {
|
} else {
|
||||||
cellYCoords[gridCells.second] + iconSize
|
cellYCoords[gridCells.second] + iconSize
|
||||||
@ -621,14 +640,14 @@ class HomeScreenGrid(context: Context, attrs: AttributeSet, defStyle: Int) : Rel
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun fillCellSizes() {
|
private fun fillCellSizes() {
|
||||||
cellWidth = getFakeWidth() / COLUMN_COUNT
|
cellWidth = getFakeWidth() / context.getHomeColumnCount()
|
||||||
cellHeight = getFakeHeight() / ROW_COUNT
|
cellHeight = getFakeHeight() / context.getHomeRowCount()
|
||||||
iconSize = cellWidth - 2 * iconMargin
|
iconSize = min(cellWidth, cellHeight) - 2 * iconMargin
|
||||||
for (i in 0 until COLUMN_COUNT) {
|
for (i in 0 until context.getHomeColumnCount()) {
|
||||||
cellXCoords.add(i, i * cellWidth)
|
cellXCoords.add(i, i * cellWidth)
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i in 0 until ROW_COUNT) {
|
for (i in 0 until context.getHomeRowCount()) {
|
||||||
cellYCoords.add(i, i * cellHeight)
|
cellYCoords.add(i, i * cellHeight)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -669,15 +688,15 @@ class HomeScreenGrid(context: Context, attrs: AttributeSet, defStyle: Int) : Rel
|
|||||||
if (rect.left < 0) {
|
if (rect.left < 0) {
|
||||||
rect.right -= rect.left
|
rect.right -= rect.left
|
||||||
rect.left = 0
|
rect.left = 0
|
||||||
} else if (rect.right > COLUMN_COUNT - 1) {
|
} else if (rect.right > context.getHomeColumnCount() - 1) {
|
||||||
val diff = rect.right - COLUMN_COUNT + 1
|
val diff = rect.right - context.getHomeColumnCount() + 1
|
||||||
rect.right -= diff
|
rect.right -= diff
|
||||||
rect.left -= diff
|
rect.left -= diff
|
||||||
}
|
}
|
||||||
|
|
||||||
// do not allow placing widgets at the bottom row, that is for pinned default apps
|
// do not allow placing widgets at the bottom row, that is for pinned default apps
|
||||||
if (rect.bottom >= ROW_COUNT - 1) {
|
if (rect.bottom >= context.getHomeRowCount() - 1) {
|
||||||
val diff = rect.bottom - ROW_COUNT + 2
|
val diff = rect.bottom - context.getHomeRowCount() + 2
|
||||||
rect.bottom -= diff
|
rect.bottom -= diff
|
||||||
rect.top -= diff
|
rect.top -= diff
|
||||||
}
|
}
|
||||||
@ -687,6 +706,10 @@ class HomeScreenGrid(context: Context, attrs: AttributeSet, defStyle: Int) : Rel
|
|||||||
|
|
||||||
fun isClickingGridItem(x: Int, y: Int): HomeScreenGridItem? {
|
fun isClickingGridItem(x: Int, y: Int): HomeScreenGridItem? {
|
||||||
for (gridItem in gridItems) {
|
for (gridItem in gridItems) {
|
||||||
|
if (gridItem.outOfBounds()) {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
if (gridItem.type == ITEM_TYPE_ICON || gridItem.type == ITEM_TYPE_SHORTCUT) {
|
if (gridItem.type == ITEM_TYPE_ICON || gridItem.type == ITEM_TYPE_SHORTCUT) {
|
||||||
val rect = getClickableRect(gridItem)
|
val rect = getClickableRect(gridItem)
|
||||||
if (x >= rect.left && x <= rect.right && y >= rect.top && y <= rect.bottom) {
|
if (x >= rect.left && x <= rect.right && y >= rect.top && y <= rect.bottom) {
|
||||||
@ -706,4 +729,8 @@ class HomeScreenGrid(context: Context, attrs: AttributeSet, defStyle: Int) : Rel
|
|||||||
|
|
||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun HomeScreenGridItem.outOfBounds(): Boolean {
|
||||||
|
return (left >= cellXCoords.size || right >= cellXCoords.size || top >= cellYCoords.size || bottom >= cellYCoords.size)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -10,9 +10,9 @@ 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.getCellCount
|
import com.simplemobiletools.launcher.extensions.getCellCount
|
||||||
import com.simplemobiletools.launcher.helpers.COLUMN_COUNT
|
import com.simplemobiletools.launcher.extensions.getHomeColumnCount
|
||||||
|
import com.simplemobiletools.launcher.extensions.getHomeRowCount
|
||||||
import com.simplemobiletools.launcher.helpers.MAX_CLICK_DURATION
|
import com.simplemobiletools.launcher.helpers.MAX_CLICK_DURATION
|
||||||
import com.simplemobiletools.launcher.helpers.ROW_COUNT
|
|
||||||
import com.simplemobiletools.launcher.models.HomeScreenGridItem
|
import com.simplemobiletools.launcher.models.HomeScreenGridItem
|
||||||
|
|
||||||
@SuppressLint("ViewConstructor")
|
@SuppressLint("ViewConstructor")
|
||||||
@ -76,8 +76,8 @@ class MyAppWidgetResizeFrame(context: Context, attrs: AttributeSet, defStyle: In
|
|||||||
it.provider.className == gridItem.className
|
it.provider.className == gridItem.className
|
||||||
} ?: return
|
} ?: return
|
||||||
|
|
||||||
minResizeWidthCells = Math.min(COLUMN_COUNT, context.getCellCount(providerInfo.minResizeWidth))
|
minResizeWidthCells = Math.min(context.getHomeColumnCount(), context.getCellCount(providerInfo.minResizeWidth))
|
||||||
minResizeHeightCells = Math.min(ROW_COUNT, context.getCellCount(providerInfo.minResizeHeight))
|
minResizeHeightCells = Math.min(context.getHomeRowCount(), context.getCellCount(providerInfo.minResizeHeight))
|
||||||
redrawFrame()
|
redrawFrame()
|
||||||
|
|
||||||
occupiedCells.clear()
|
occupiedCells.clear()
|
||||||
@ -224,7 +224,7 @@ class MyAppWidgetResizeFrame(context: Context, attrs: AttributeSet, defStyle: In
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (wantedBottomCellY == ROW_COUNT - 1) {
|
if (wantedBottomCellY == context.getHomeRowCount() - 1) {
|
||||||
areAllCellsFree = false
|
areAllCellsFree = false
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -322,7 +322,7 @@ class MyAppWidgetResizeFrame(context: Context, attrs: AttributeSet, defStyle: In
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (wantedBottomCellY == ROW_COUNT - 1) {
|
if (wantedBottomCellY == context.getHomeRowCount() - 1) {
|
||||||
areAllCellsFree = false
|
areAllCellsFree = false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -135,6 +135,65 @@
|
|||||||
android:text="@string/manage_hidden_icons" />
|
android:text="@string/manage_hidden_icons" />
|
||||||
|
|
||||||
</RelativeLayout>
|
</RelativeLayout>
|
||||||
|
|
||||||
|
<include
|
||||||
|
android:id="@+id/settings_general_settings_divider"
|
||||||
|
layout="@layout/divider" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/settings_home_screen_label"
|
||||||
|
style="@style/SettingsSectionLabelStyle"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="Home screen" />
|
||||||
|
|
||||||
|
<RelativeLayout
|
||||||
|
android:id="@+id/settings_home_screen_row_count_holder"
|
||||||
|
style="@style/SettingsHolderTextViewOneLinerStyle"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:background="@drawable/ripple_bottom_corners">
|
||||||
|
|
||||||
|
<com.simplemobiletools.commons.views.MyTextView
|
||||||
|
android:id="@+id/settings_home_screen_row_count_label"
|
||||||
|
style="@style/SettingsTextLabelStyle"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="Home screen row count" />
|
||||||
|
|
||||||
|
<com.simplemobiletools.commons.views.MyTextView
|
||||||
|
android:id="@+id/settings_home_screen_row_count"
|
||||||
|
style="@style/SettingsTextValueStyle"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_below="@+id/settings_home_screen_row_count_label"
|
||||||
|
tools:text="3" />
|
||||||
|
|
||||||
|
</RelativeLayout>
|
||||||
|
|
||||||
|
<RelativeLayout
|
||||||
|
android:id="@+id/settings_home_screen_column_count_holder"
|
||||||
|
style="@style/SettingsHolderTextViewOneLinerStyle"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:background="@drawable/ripple_bottom_corners">
|
||||||
|
|
||||||
|
<com.simplemobiletools.commons.views.MyTextView
|
||||||
|
android:id="@+id/settings_home_screen_column_count_label"
|
||||||
|
style="@style/SettingsTextLabelStyle"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="Home screen column count" />
|
||||||
|
|
||||||
|
<com.simplemobiletools.commons.views.MyTextView
|
||||||
|
android:id="@+id/settings_home_screen_column_count"
|
||||||
|
style="@style/SettingsTextValueStyle"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_below="@+id/settings_home_screen_column_count_label"
|
||||||
|
tools:text="3" />
|
||||||
|
|
||||||
|
</RelativeLayout>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
</androidx.core.widget.NestedScrollView>
|
</androidx.core.widget.NestedScrollView>
|
||||||
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user