diff --git a/app/build.gradle b/app/build.gradle
index 42f0a2b..7e92f3b 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -23,8 +23,8 @@ android {
minSdkVersion 21
targetSdkVersion 35
compileSdk 35
- versionCode 46
- versionName "0.2.1"
+ versionCode 45
+ versionName "0.2.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 1b10784..e60a85b 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -27,7 +27,6 @@
android:exported="false" />
= mutableSetOf()
-
- if (!BuildConfig.DEBUG) {
- val launcher = DetailedAppInfo.fromAppInfo(
- AppInfo(
- BuildConfig.APPLICATION_ID,
- HomeActivity::class.java.name,
- INVALID_USER
- ), context
- )
- launcher?.getRawInfo()?.let { hidden.add(it) }
- Log.i(TAG, "Hiding ${launcher?.getRawInfo()}")
- }
+ val launcher = DetailedAppInfo.fromAppInfo(
+ AppInfo(
+ BuildConfig.APPLICATION_ID,
+ HomeActivity::class.java.name,
+ INVALID_USER
+ ), context
+ )
+ launcher?.getRawInfo()?.let { hidden.add(it) }
+ Log.i(TAG,"Hiding ${launcher?.getRawInfo()}")
LauncherPreferences.apps().hidden(hidden)
Action.resetToDefaultActions(context)
diff --git a/app/src/main/java/de/jrpie/android/launcher/preferences/legacy/Version4.kt b/app/src/main/java/de/jrpie/android/launcher/preferences/legacy/Version4.kt
index a9ab3a1..aaeeb18 100644
--- a/app/src/main/java/de/jrpie/android/launcher/preferences/legacy/Version4.kt
+++ b/app/src/main/java/de/jrpie/android/launcher/preferences/legacy/Version4.kt
@@ -21,5 +21,7 @@ fun migratePreferencesFromVersion4(context: Context) {
)
)
)
+
+
LauncherPreferences.internal().versionCode(100)
}
\ No newline at end of file
diff --git a/app/src/main/java/de/jrpie/android/launcher/ui/HomeActivity.kt b/app/src/main/java/de/jrpie/android/launcher/ui/HomeActivity.kt
index f501107..192a8e9 100644
--- a/app/src/main/java/de/jrpie/android/launcher/ui/HomeActivity.kt
+++ b/app/src/main/java/de/jrpie/android/launcher/ui/HomeActivity.kt
@@ -12,10 +12,11 @@ import android.view.MotionEvent
import android.view.View
import android.window.OnBackInvokedDispatcher
import de.jrpie.android.launcher.Application
+import de.jrpie.android.launcher.R
import de.jrpie.android.launcher.actions.Action
import de.jrpie.android.launcher.actions.Gesture
import de.jrpie.android.launcher.actions.LauncherAction
-import de.jrpie.android.launcher.databinding.ActivityHomeBinding
+import de.jrpie.android.launcher.databinding.HomeBinding
import de.jrpie.android.launcher.openTutorial
import de.jrpie.android.launcher.preferences.LauncherPreferences
import de.jrpie.android.launcher.ui.tutorial.TutorialActivity
@@ -34,7 +35,7 @@ import de.jrpie.android.launcher.ui.tutorial.TutorialActivity
*/
class HomeActivity : UIObject, Activity() {
- private lateinit var binding: ActivityHomeBinding
+ private lateinit var binding: HomeBinding
private var touchGestureDetector: TouchGestureDetector? = null
private var sharedPreferencesListener =
@@ -59,7 +60,7 @@ class HomeActivity : UIObject, Activity() {
// Initialise layout
- binding = ActivityHomeBinding.inflate(layoutInflater)
+ binding = HomeBinding.inflate(layoutInflater)
setContentView(binding.root)
@@ -128,7 +129,15 @@ class HomeActivity : UIObject, Activity() {
}
override fun getTheme(): Resources.Theme {
- return modifyTheme(super.getTheme())
+ val mTheme = modifyTheme(super.getTheme())
+ mTheme.applyStyle(R.style.backgroundWallpaper, true)
+ LauncherPreferences.clock().font().applyToTheme(mTheme)
+ LauncherPreferences.theme().colorTheme().applyToTheme(
+ mTheme,
+ LauncherPreferences.theme().textShadow()
+ )
+
+ return mTheme
}
override fun onResume() {
diff --git a/app/src/main/java/de/jrpie/android/launcher/ui/UIObject.kt b/app/src/main/java/de/jrpie/android/launcher/ui/UIObject.kt
index b292425..51324f4 100644
--- a/app/src/main/java/de/jrpie/android/launcher/ui/UIObject.kt
+++ b/app/src/main/java/de/jrpie/android/launcher/ui/UIObject.kt
@@ -10,7 +10,6 @@ import android.view.WindowInsets
import android.view.WindowInsetsController
import android.view.WindowManager
import de.jrpie.android.launcher.preferences.LauncherPreferences
-import de.jrpie.android.launcher.preferences.theme.Background
/**
* An interface implemented by every [Activity], Fragment etc. in Launcher.
@@ -66,14 +65,8 @@ interface UIObject {
theme,
LauncherPreferences.theme().textShadow()
)
-
- if (isHomeScreen()) {
- Background.TRANSPARENT.applyToTheme(theme)
- LauncherPreferences.clock().font().applyToTheme(theme)
- } else {
- LauncherPreferences.theme().background().applyToTheme(theme)
- LauncherPreferences.theme().font().applyToTheme(theme)
- }
+ LauncherPreferences.theme().background().applyToTheme(theme)
+ LauncherPreferences.theme().font().applyToTheme(theme)
return theme
}
diff --git a/app/src/main/java/de/jrpie/android/launcher/ui/settings/meta/SettingsFragmentMeta.kt b/app/src/main/java/de/jrpie/android/launcher/ui/settings/meta/SettingsFragmentMeta.kt
index 759d8cd..dea0bcf 100644
--- a/app/src/main/java/de/jrpie/android/launcher/ui/settings/meta/SettingsFragmentMeta.kt
+++ b/app/src/main/java/de/jrpie/android/launcher/ui/settings/meta/SettingsFragmentMeta.kt
@@ -132,12 +132,7 @@ class SettingsFragmentMeta : Fragment(), UIObject {
startActivity(Intent(this.context, LegalInfoActivity::class.java))
}
- // version
binding.settingsMetaTextVersion.text = BuildConfig.VERSION_NAME
- binding.settingsMetaTextVersion.setOnClickListener {
- val deviceInfo = getDeviceInfo()
- copyToClipboard(requireContext(), deviceInfo)
- }
}
}
diff --git a/app/src/main/java/de/jrpie/android/launcher/ui/widgets/ClockView.kt b/app/src/main/java/de/jrpie/android/launcher/ui/widgets/ClockView.kt
index 54d3869..33c4888 100644
--- a/app/src/main/java/de/jrpie/android/launcher/ui/widgets/ClockView.kt
+++ b/app/src/main/java/de/jrpie/android/launcher/ui/widgets/ClockView.kt
@@ -6,13 +6,13 @@ import android.view.LayoutInflater
import androidx.constraintlayout.widget.ConstraintLayout
import androidx.core.view.isVisible
import de.jrpie.android.launcher.actions.Gesture
-import de.jrpie.android.launcher.databinding.WidgetClockBinding
+import de.jrpie.android.launcher.databinding.ClockBinding
import de.jrpie.android.launcher.preferences.LauncherPreferences
import java.util.Locale
class ClockView(context: Context, attrs: AttributeSet? = null, val appWidgetId: Int): ConstraintLayout(context, attrs) {
- val binding: WidgetClockBinding = WidgetClockBinding.inflate(LayoutInflater.from(context), this, true)
+ val binding: ClockBinding = ClockBinding.inflate(LayoutInflater.from(context), this, true)
init {
initClock()
setOnClicks()
diff --git a/app/src/main/java/de/jrpie/android/launcher/ui/widgets/DebugInfoView.kt b/app/src/main/java/de/jrpie/android/launcher/ui/widgets/DebugInfoView.kt
deleted file mode 100644
index d0ab70a..0000000
--- a/app/src/main/java/de/jrpie/android/launcher/ui/widgets/DebugInfoView.kt
+++ /dev/null
@@ -1,17 +0,0 @@
-package de.jrpie.android.launcher.ui.widgets
-
-import android.content.Context
-import android.util.AttributeSet
-import android.view.LayoutInflater
-import androidx.constraintlayout.widget.ConstraintLayout
-import de.jrpie.android.launcher.databinding.WidgetDebugInfoBinding
-import de.jrpie.android.launcher.getDeviceInfo
-
-class DebugInfoView(context: Context, attrs: AttributeSet? = null, val appWidgetId: Int): ConstraintLayout(context, attrs) {
-
- val binding: WidgetDebugInfoBinding = WidgetDebugInfoBinding.inflate(LayoutInflater.from(context), this, true)
-
- init {
- binding.debugInfoText.text = getDeviceInfo()
- }
-}
\ No newline at end of file
diff --git a/app/src/main/java/de/jrpie/android/launcher/ui/widgets/WidgetPanelActivity.kt b/app/src/main/java/de/jrpie/android/launcher/ui/widgets/WidgetPanelActivity.kt
index 4392451..5217bff 100644
--- a/app/src/main/java/de/jrpie/android/launcher/ui/widgets/WidgetPanelActivity.kt
+++ b/app/src/main/java/de/jrpie/android/launcher/ui/widgets/WidgetPanelActivity.kt
@@ -3,7 +3,6 @@ package de.jrpie.android.launcher.ui.widgets
import android.app.Activity
import android.content.res.Resources
import android.os.Bundle
-import androidx.core.view.ViewCompat
import de.jrpie.android.launcher.R
import de.jrpie.android.launcher.databinding.ActivityWidgetPanelBinding
import de.jrpie.android.launcher.preferences.LauncherPreferences
@@ -13,20 +12,13 @@ import de.jrpie.android.launcher.widgets.WidgetPanel
class WidgetPanelActivity : Activity(), UIObject {
lateinit var binding: ActivityWidgetPanelBinding
- private var widgetPanelId: Int = WidgetPanel.HOME.id
+ var widgetPanelId: Int = WidgetPanel.Companion.HOME.id
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
super.onCreate()
- widgetPanelId = intent.getIntExtra(EXTRA_PANEL_ID, WidgetPanel.HOME.id)
+ widgetPanelId = intent.getIntExtra(EXTRA_PANEL_ID, WidgetPanel.Companion.HOME.id)
val binding = ActivityWidgetPanelBinding.inflate(layoutInflater)
setContentView(binding.root)
-
- // The widget container should extend below the status and navigation bars,
- // so let's set an empty WindowInsetsListener to prevent it from being moved.
- ViewCompat.setOnApplyWindowInsetsListener(binding.root) { _, windowInsets ->
- windowInsets
- }
-
binding.widgetPanelWidgetContainer.widgetPanelId = widgetPanelId
binding.widgetPanelWidgetContainer.updateWidgets(
this,
@@ -46,13 +38,6 @@ class WidgetPanelActivity : Activity(), UIObject {
return mTheme
}
- override fun onWindowFocusChanged(hasFocus: Boolean) {
- super.onWindowFocusChanged(hasFocus)
-
- if (hasFocus && LauncherPreferences.display().hideNavigationBar()) {
- hideNavigationBar()
- }
- }
override fun onStart() {
super.onStart()
diff --git a/app/src/main/java/de/jrpie/android/launcher/ui/widgets/manage/ManageWidgetPanelsActivity.kt b/app/src/main/java/de/jrpie/android/launcher/ui/widgets/manage/ManageWidgetPanelsActivity.kt
index 163777f..cb57fda 100644
--- a/app/src/main/java/de/jrpie/android/launcher/ui/widgets/manage/ManageWidgetPanelsActivity.kt
+++ b/app/src/main/java/de/jrpie/android/launcher/ui/widgets/manage/ManageWidgetPanelsActivity.kt
@@ -18,16 +18,13 @@ import de.jrpie.android.launcher.widgets.updateWidgetPanel
class ManageWidgetPanelsActivity : AppCompatActivity(), UIObject {
- @SuppressLint("NotifyDataSetChanged")
private val sharedPreferencesListener =
SharedPreferences.OnSharedPreferenceChangeListener { _, prefKey ->
- if (
- prefKey == LauncherPreferences.widgets().keys().customPanels()
- || prefKey == LauncherPreferences.widgets().keys().widgets()
- ) {
+ if (prefKey == LauncherPreferences.widgets().keys().customPanels()) {
viewAdapter.widgetPanels =
(LauncherPreferences.widgets().customPanels() ?: setOf()).toTypedArray()
+ @SuppressLint("NotifyDataSetChanged")
viewAdapter.notifyDataSetChanged()
}
}
@@ -79,6 +76,7 @@ class ManageWidgetPanelsActivity : AppCompatActivity(), UIObject {
)
)
}
+ true
}
}
diff --git a/app/src/main/java/de/jrpie/android/launcher/ui/widgets/manage/ManageWidgetsActivity.kt b/app/src/main/java/de/jrpie/android/launcher/ui/widgets/manage/ManageWidgetsActivity.kt
index 4b5c0c2..a841919 100644
--- a/app/src/main/java/de/jrpie/android/launcher/ui/widgets/manage/ManageWidgetsActivity.kt
+++ b/app/src/main/java/de/jrpie/android/launcher/ui/widgets/manage/ManageWidgetsActivity.kt
@@ -8,21 +8,18 @@ import android.content.res.Resources
import android.graphics.Rect
import android.os.Bundle
import android.util.Log
-import android.view.ViewGroup
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
-import androidx.core.view.updateLayoutParams
+import com.google.android.material.floatingactionbutton.FloatingActionButton
import de.jrpie.android.launcher.Application
-import de.jrpie.android.launcher.databinding.ActivityManageWidgetsBinding
+import de.jrpie.android.launcher.R
import de.jrpie.android.launcher.preferences.LauncherPreferences
import de.jrpie.android.launcher.ui.UIObject
+import de.jrpie.android.launcher.ui.widgets.WidgetContainerView
import de.jrpie.android.launcher.widgets.AppWidget
-import de.jrpie.android.launcher.widgets.GRID_SIZE
import de.jrpie.android.launcher.widgets.WidgetPanel
import de.jrpie.android.launcher.widgets.WidgetPosition
-import kotlin.math.max
import kotlin.math.min
-import kotlin.math.roundToInt
// http://coderender.blogspot.com/2012/01/hosting-android-widgets-my.html
@@ -33,16 +30,14 @@ const val REQUEST_PICK_APPWIDGET = 2
const val EXTRA_PANEL_ID = "widgetPanelId"
// We can't use AppCompatActivity, since some AppWidgets don't work there.
-class ManageWidgetsActivity : UIObject, Activity() {
+class ManageWidgetsActivity : Activity(), UIObject {
private var panelId: Int = WidgetPanel.HOME.id
- private lateinit var binding: ActivityManageWidgetsBinding
private var sharedPreferencesListener =
SharedPreferences.OnSharedPreferenceChangeListener { _, prefKey ->
if (prefKey == LauncherPreferences.widgets().keys().widgets()) {
- binding.manageWidgetsContainer.updateWidgets(
- this,
+ findViewById(R.id.manage_widgets_container).updateWidgets(this,
LauncherPreferences.widgets().widgets()
)
}
@@ -51,33 +46,21 @@ class ManageWidgetsActivity : UIObject, Activity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
super.onCreate()
- binding = ActivityManageWidgetsBinding.inflate(layoutInflater)
- setContentView(binding.root)
+ setContentView(R.layout.activity_manage_widgets)
panelId = intent.extras?.getInt(EXTRA_PANEL_ID, WidgetPanel.HOME.id) ?: WidgetPanel.HOME.id
- binding.manageWidgetsButtonAdd.setOnClickListener {
+ findViewById(R.id.manage_widgets_button_add).setOnClickListener {
selectWidget()
}
- // The widget container should extend below the status and navigation bars,
- // so let's set an empty WindowInsetsListener to prevent it from being moved.
- ViewCompat.setOnApplyWindowInsetsListener(binding.root) { _, windowInsets ->
- windowInsets
+ ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main)) { v, insets ->
+ val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars())
+ v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom)
+ insets
}
- // The button must not be placed under the navigation bar
- ViewCompat.setOnApplyWindowInsetsListener(binding.manageWidgetsButtonAdd) { v, windowInsets ->
- val insets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars())
- v.updateLayoutParams {
- leftMargin = insets.left
- bottomMargin = insets.bottom
- rightMargin = insets.right
- }
- WindowInsetsCompat.CONSUMED
- }
-
- binding.manageWidgetsContainer.let {
+ findViewById(R.id.manage_widgets_container).let {
it.widgetPanelId = panelId
it.updateWidgets(this, LauncherPreferences.widgets().widgets())
}
@@ -94,23 +77,20 @@ class ManageWidgetsActivity : UIObject, Activity() {
override fun onResume() {
super.onResume()
- binding.manageWidgetsContainer.updateWidgets(
- this,
+ findViewById(R.id.manage_widgets_container).updateWidgets(this,
LauncherPreferences.widgets().widgets()
)
}
-
- override fun onWindowFocusChanged(hasFocus: Boolean) {
- super.onWindowFocusChanged(hasFocus)
-
- if (hasFocus && LauncherPreferences.display().hideNavigationBar()) {
- hideNavigationBar()
- }
- }
-
override fun getTheme(): Resources.Theme {
- return modifyTheme(super.getTheme())
+ val mTheme = modifyTheme(super.getTheme())
+ mTheme.applyStyle(R.style.backgroundWallpaper, true)
+ LauncherPreferences.clock().font().applyToTheme(mTheme)
+ LauncherPreferences.theme().colorTheme().applyToTheme(
+ mTheme,
+ LauncherPreferences.theme().textShadow()
+ )
+ return mTheme
}
override fun onDestroy() {
@@ -120,7 +100,7 @@ class ManageWidgetsActivity : UIObject, Activity() {
}
- private fun selectWidget() {
+ fun selectWidget() {
val appWidgetHost = (application as Application).appWidgetHost
startActivityForResult(
Intent(this, SelectWidgetActivity::class.java).also {
@@ -137,7 +117,7 @@ class ManageWidgetsActivity : UIObject, Activity() {
}
- private fun createWidget(data: Intent) {
+ fun createWidget(data: Intent) {
Log.i("Launcher", "creating widget")
val appWidgetManager = (application as Application).appWidgetManager
val appWidgetId = data.extras?.getInt(AppWidgetManager.EXTRA_APPWIDGET_ID) ?: return
@@ -146,12 +126,13 @@ class ManageWidgetsActivity : UIObject, Activity() {
val display = windowManager.defaultDisplay
- val widgetInfo = appWidgetManager.getAppWidgetInfo(appWidgetId)
-
- val position = WidgetPosition.findFreeSpace(
- WidgetPanel.byId(panelId),
- max(3, (GRID_SIZE * (widgetInfo.minWidth) / display.width.toFloat()).roundToInt()),
- max(3, (GRID_SIZE * (widgetInfo.minHeight) / display.height.toFloat()).roundToInt())
+ val position = WidgetPosition.fromAbsoluteRect(
+ Rect(0,0,
+ min(400, appWidgetManager.getAppWidgetInfo(appWidgetId).minWidth),
+ min(400, appWidgetManager.getAppWidgetInfo(appWidgetId).minHeight)
+ ),
+ display.width,
+ display.height
)
val widget = AppWidget(appWidgetId, position, panelId, provider)
diff --git a/app/src/main/java/de/jrpie/android/launcher/ui/widgets/manage/WidgetOverlayView.kt b/app/src/main/java/de/jrpie/android/launcher/ui/widgets/manage/WidgetOverlayView.kt
index 61006b8..1b8a2d2 100644
--- a/app/src/main/java/de/jrpie/android/launcher/ui/widgets/manage/WidgetOverlayView.kt
+++ b/app/src/main/java/de/jrpie/android/launcher/ui/widgets/manage/WidgetOverlayView.kt
@@ -2,13 +2,11 @@ package de.jrpie.android.launcher.ui.widgets.manage
import android.content.Context
import android.graphics.Canvas
-import android.graphics.Color
import android.graphics.Paint
import android.graphics.Rect
import android.graphics.drawable.Drawable
import android.util.AttributeSet
import android.view.View
-import android.view.ViewGroup
import android.widget.PopupMenu
import androidx.core.graphics.toRectF
import de.jrpie.android.launcher.R
@@ -22,32 +20,23 @@ private const val HANDLE_EDGE_SIZE = (1.2 * HANDLE_SIZE).toInt()
/**
* An overlay to show configuration options for a widget in [WidgetManagerView]
*/
-class WidgetOverlayView : ViewGroup {
+class WidgetOverlayView : View {
- private val paint = Paint()
- private val handlePaint = Paint()
- private val selectedHandlePaint = Paint()
-
- private val popupAnchor = View(context)
+ val paint = Paint()
+ val handlePaint = Paint()
+ val selectedHandlePaint = Paint()
var mode: WidgetManagerView.EditMode? = null
-
class Handle(val mode: WidgetManagerView.EditMode, val position: Rect)
init {
- addView(popupAnchor)
- setWillNotDraw(false)
handlePaint.style = Paint.Style.STROKE
- handlePaint.color = Color.WHITE
- handlePaint.strokeWidth = 2f
- handlePaint.setShadowLayer(10f,0f,0f, Color.BLACK)
+ handlePaint.setARGB(255, 255, 255, 255)
selectedHandlePaint.style = Paint.Style.FILL_AND_STROKE
selectedHandlePaint.setARGB(100, 255, 255, 255)
- handlePaint.setShadowLayer(10f,0f,0f, Color.BLACK)
paint.style = Paint.Style.STROKE
- paint.color = Color.WHITE
- paint.setShadowLayer(10f,0f,0f, Color.BLACK)
+ paint.setARGB(255, 255, 255, 255)
}
private var preview: Drawable? = null
@@ -86,23 +75,21 @@ class WidgetOverlayView : ViewGroup {
}
}
val bounds = getBounds()
-
canvas.drawRoundRect(bounds.toRectF(), 5f, 5f, paint)
if (mode == null) {
return
}
+
//preview?.bounds = bounds
//preview?.draw(canvas)
- }
- override fun onLayout(changed: Boolean, l: Int, t: Int, r: Int, b: Int) {
- popupAnchor.layout(0,0,0,0)
+
}
fun showPopupMenu() {
val widget = Widget.byId(context, widgetId)?: return
- val menu = PopupMenu(context, popupAnchor)
+ val menu = PopupMenu(context, this)
menu.menu.let {
it.add(
context.getString(R.string.widget_menu_remove)
diff --git a/app/src/main/java/de/jrpie/android/launcher/ui/widgets/manage/WidgetPanelsRecyclerAdapter.kt b/app/src/main/java/de/jrpie/android/launcher/ui/widgets/manage/WidgetPanelsRecyclerAdapter.kt
index d27ba9a..40c2c2f 100644
--- a/app/src/main/java/de/jrpie/android/launcher/ui/widgets/manage/WidgetPanelsRecyclerAdapter.kt
+++ b/app/src/main/java/de/jrpie/android/launcher/ui/widgets/manage/WidgetPanelsRecyclerAdapter.kt
@@ -26,16 +26,10 @@ class WidgetPanelsRecyclerAdapter(
class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
var labelView: TextView = itemView.findViewById(R.id.list_widget_panels_label)
- var infoView: TextView = itemView.findViewById(R.id.list_widget_panels_info)
}
override fun onBindViewHolder(viewHolder: ViewHolder, i: Int) {
viewHolder.labelView.text = widgetPanels[i].label
- val numWidgets = widgetPanels[i].getWidgets().size
- viewHolder.infoView.text = context.resources.getQuantityString(
- R.plurals.widget_panel_number_of_widgets,
- numWidgets, numWidgets
- )
viewHolder.itemView.setOnClickListener {
onSelectWidgetPanel(widgetPanels[i])
diff --git a/app/src/main/java/de/jrpie/android/launcher/widgets/DebugInfoWidget.kt b/app/src/main/java/de/jrpie/android/launcher/widgets/DebugInfoWidget.kt
deleted file mode 100644
index 01ecddc..0000000
--- a/app/src/main/java/de/jrpie/android/launcher/widgets/DebugInfoWidget.kt
+++ /dev/null
@@ -1,42 +0,0 @@
-package de.jrpie.android.launcher.widgets
-
-import android.app.Activity
-import android.content.Context
-import android.graphics.drawable.Drawable
-import android.view.View
-import de.jrpie.android.launcher.ui.widgets.DebugInfoView
-import kotlinx.serialization.SerialName
-import kotlinx.serialization.Serializable
-
-
-@Serializable
-@SerialName("widget:debuginfo")
-class DebugInfoWidget(
- override val id: Int,
- override var position: WidgetPosition,
- override val panelId: Int,
- override var allowInteraction: Boolean = true
-) : Widget() {
-
- override fun createView(activity: Activity): View {
- return DebugInfoView(activity, null, id)
- }
-
- override fun findView(views: Sequence): DebugInfoView? {
- return views.mapNotNull { it as? DebugInfoView }.firstOrNull { it.appWidgetId == id }
- }
-
- override fun getPreview(context: Context): Drawable? {
- return null
- }
-
- override fun getIcon(context: Context): Drawable? {
- return null
- }
-
- override fun isConfigurable(context: Context): Boolean {
- return false
- }
-
- override fun configure(activity: Activity, requestCode: Int) { }
-}
\ No newline at end of file
diff --git a/app/src/main/java/de/jrpie/android/launcher/widgets/LauncherWidgetProvider.kt b/app/src/main/java/de/jrpie/android/launcher/widgets/LauncherWidgetProvider.kt
index 92f33a9..018b29b 100644
--- a/app/src/main/java/de/jrpie/android/launcher/widgets/LauncherWidgetProvider.kt
+++ b/app/src/main/java/de/jrpie/android/launcher/widgets/LauncherWidgetProvider.kt
@@ -37,14 +37,13 @@ class LauncherAppWidgetProvider(val info: AppWidgetProviderInfo) : LauncherWidge
}
}
+class LauncherClockWidgetProvider : LauncherWidgetProvider() {
-data object LauncherClockWidgetProvider : LauncherWidgetProvider() {
-
- override fun loadLabel(context: Context): CharSequence {
+ override fun loadLabel(context: Context): CharSequence? {
return context.getString(R.string.widget_clock_label)
}
- override fun loadDescription(context: Context): CharSequence {
+ override fun loadDescription(context: Context): CharSequence? {
return context.getString(R.string.widget_clock_description)
}
@@ -55,4 +54,5 @@ data object LauncherClockWidgetProvider : LauncherWidgetProvider() {
override fun loadIcon(context: Context): Drawable? {
return AppCompatResources.getDrawable(context, R.drawable.baseline_clock_24)
}
-}
\ No newline at end of file
+}
+
diff --git a/app/src/main/java/de/jrpie/android/launcher/widgets/Widget.kt b/app/src/main/java/de/jrpie/android/launcher/widgets/Widget.kt
index 28539a2..e31250b 100644
--- a/app/src/main/java/de/jrpie/android/launcher/widgets/Widget.kt
+++ b/app/src/main/java/de/jrpie/android/launcher/widgets/Widget.kt
@@ -4,6 +4,7 @@ import android.app.Activity
import android.content.Context
import android.graphics.drawable.Drawable
import android.view.View
+import de.jrpie.android.launcher.Application
import de.jrpie.android.launcher.preferences.LauncherPreferences
import kotlinx.serialization.Serializable
import kotlinx.serialization.json.Json
diff --git a/app/src/main/java/de/jrpie/android/launcher/widgets/WidgetPanel.kt b/app/src/main/java/de/jrpie/android/launcher/widgets/WidgetPanel.kt
index e56983a..93e588d 100644
--- a/app/src/main/java/de/jrpie/android/launcher/widgets/WidgetPanel.kt
+++ b/app/src/main/java/de/jrpie/android/launcher/widgets/WidgetPanel.kt
@@ -32,12 +32,6 @@ class WidgetPanel(val id: Int, var label: String) {
.filter { it.panelId == this.id }.forEach { it.delete(context) }
}
- fun getWidgets(): List {
- return LauncherPreferences.widgets().widgets().filter {
- it.panelId == this.id
- }
- }
-
companion object {
val HOME = WidgetPanel(0, "home")
diff --git a/app/src/main/java/de/jrpie/android/launcher/widgets/WidgetPosition.kt b/app/src/main/java/de/jrpie/android/launcher/widgets/WidgetPosition.kt
index e51f00c..b575665 100644
--- a/app/src/main/java/de/jrpie/android/launcher/widgets/WidgetPosition.kt
+++ b/app/src/main/java/de/jrpie/android/launcher/widgets/WidgetPosition.kt
@@ -11,20 +11,9 @@ const val GRID_SIZE: Short = 12
@Serializable
data class WidgetPosition(var x: Short, var y: Short, var width: Short, var height: Short) {
- constructor(rect: Rect) : this(
- rect.left.toShort(),
- rect.top.toShort(),
- (rect.right - rect.left).toShort(),
- (rect.bottom - rect.top).toShort()
- )
-
- fun toRect(): Rect {
- return Rect(x.toInt(), y.toInt(), x + width, y + height)
- }
-
fun getAbsoluteRect(screenWidth: Int, screenHeight: Int): Rect {
val gridWidth = screenWidth / GRID_SIZE.toFloat()
- val gridHeight = screenHeight / GRID_SIZE.toFloat()
+ val gridHeight= screenHeight / GRID_SIZE.toFloat()
return Rect(
(x * gridWidth).toInt(),
@@ -34,33 +23,25 @@ data class WidgetPosition(var x: Short, var y: Short, var width: Short, var heig
)
}
-
companion object {
fun fromAbsoluteRect(absolute: Rect, screenWidth: Int, screenHeight: Int): WidgetPosition {
val gridWidth = screenWidth / GRID_SIZE.toFloat()
- val gridHeight = screenHeight / GRID_SIZE.toFloat()
+ val gridHeight= screenHeight / GRID_SIZE.toFloat()
- val x = (absolute.left / gridWidth).roundToInt().toShort()
- .coerceIn(0, (GRID_SIZE - 1).toShort())
- val y = (absolute.top / gridHeight).roundToInt().toShort()
- .coerceIn(0, (GRID_SIZE - 1).toShort())
+ val x = (absolute.left / gridWidth).roundToInt().toShort().coerceIn(0, (GRID_SIZE-1).toShort())
+ val y = (absolute.top / gridHeight).roundToInt().toShort().coerceIn(0, (GRID_SIZE-1).toShort())
val w = max(2, ((absolute.right - absolute.left) / gridWidth).roundToInt()).toShort()
val h = max(2, ((absolute.bottom - absolute.top) / gridHeight).roundToInt()).toShort()
- return WidgetPosition(x, y, w, h)
+ return WidgetPosition(x,y,w,h)
}
- fun center(
- minWidth: Int,
- minHeight: Int,
- screenWidth: Int,
- screenHeight: Int
- ): WidgetPosition {
+ fun center(minWidth: Int, minHeight: Int, screenWidth: Int, screenHeight: Int): WidgetPosition {
val gridWidth = screenWidth / GRID_SIZE.toFloat()
- val gridHeight = screenHeight / GRID_SIZE.toFloat()
+ val gridHeight= screenHeight / GRID_SIZE.toFloat()
val cellsWidth = ceil(minWidth / gridWidth).toInt().toShort()
val cellsHeight = ceil(minHeight / gridHeight).toInt().toShort()
@@ -71,32 +52,7 @@ data class WidgetPosition(var x: Short, var y: Short, var width: Short, var heig
cellsWidth,
cellsHeight
)
- }
- fun findFreeSpace(
- widgetPanel: WidgetPanel?,
- minWidth: Int,
- minHeight: Int
- ): WidgetPosition {
- val rect = Rect(0, 0, minWidth, minHeight)
- if (widgetPanel == null) {
- return WidgetPosition(rect)
- }
-
- val widgets = widgetPanel.getWidgets().map { it.position.toRect() }
-
- for (x in 0.. {
- val list = mutableListOf(LauncherClockWidgetProvider)
+ val list = mutableListOf(LauncherClockWidgetProvider())
val appWidgetManager = context.getAppWidgetManager()
val profiles =
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
@@ -68,9 +68,11 @@ fun getAppWidgetProviders( context: Context ): List {
}.flatten()
)
+
return list
}
+
fun updateWidget(widget: Widget) {
LauncherPreferences.widgets().widgets(
(LauncherPreferences.widgets().widgets() ?: setOf())
diff --git a/app/src/main/res/layout/activity_manage_widgets.xml b/app/src/main/res/layout/activity_manage_widgets.xml
index 66404ee..c77f0e3 100644
--- a/app/src/main/res/layout/activity_manage_widgets.xml
+++ b/app/src/main/res/layout/activity_manage_widgets.xml
@@ -1,6 +1,5 @@
-
-
-
-
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/widget_clock.xml b/app/src/main/res/layout/clock.xml
similarity index 100%
rename from app/src/main/res/layout/widget_clock.xml
rename to app/src/main/res/layout/clock.xml
diff --git a/app/src/main/res/layout/activity_home.xml b/app/src/main/res/layout/home.xml
similarity index 100%
rename from app/src/main/res/layout/activity_home.xml
rename to app/src/main/res/layout/home.xml
diff --git a/app/src/main/res/layout/list_widget_panels_row.xml b/app/src/main/res/layout/list_widget_panels_row.xml
index 835050f..53f7449 100644
--- a/app/src/main/res/layout/list_widget_panels_row.xml
+++ b/app/src/main/res/layout/list_widget_panels_row.xml
@@ -1,7 +1,6 @@
-
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/widget_debug_info.xml b/app/src/main/res/layout/widget_debug_info.xml
deleted file mode 100644
index 1de9e43..0000000
--- a/app/src/main/res/layout/widget_debug_info.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index d399d12..46fce3d 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -406,8 +406,8 @@
Widget Panel #%1$d
- - Contains %1$d widget.
- - Contains %1$d widgets.
+ - Contains %d widget.
+ - Contains %d widgets.
diff --git a/fastlane/metadata/android/en-US/changelogs/46.txt b/fastlane/metadata/android/en-US/changelogs/46.txt
deleted file mode 100644
index 7d7f599..0000000
--- a/fastlane/metadata/android/en-US/changelogs/46.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-* Fixed several bugs related to widgets
-* Copy device info when clicking the version number (thank you, wassupluke!)