add debug info widget in debug mode

This commit is contained in:
Josia Pietsch 2025-05-12 15:37:18 +02:00
parent 5f2d0aa426
commit 8173993601
Signed by: jrpie
GPG key ID: E70B571D66986A2D
11 changed files with 112 additions and 24 deletions

View file

@ -16,6 +16,7 @@ import de.jrpie.android.launcher.preferences.legacy.migratePreferencesFromVersio
import de.jrpie.android.launcher.preferences.legacy.migratePreferencesFromVersionUnknown import de.jrpie.android.launcher.preferences.legacy.migratePreferencesFromVersionUnknown
import de.jrpie.android.launcher.ui.HomeActivity import de.jrpie.android.launcher.ui.HomeActivity
import de.jrpie.android.launcher.widgets.ClockWidget import de.jrpie.android.launcher.widgets.ClockWidget
import de.jrpie.android.launcher.widgets.DebugInfoWidget
import de.jrpie.android.launcher.widgets.WidgetPanel import de.jrpie.android.launcher.widgets.WidgetPanel
import de.jrpie.android.launcher.widgets.WidgetPosition import de.jrpie.android.launcher.widgets.WidgetPosition
import de.jrpie.android.launcher.widgets.deleteAllWidgets import de.jrpie.android.launcher.widgets.deleteAllWidgets
@ -95,17 +96,33 @@ fun resetPreferences(context: Context) {
) )
) )
if (BuildConfig.DEBUG) {
LauncherPreferences.widgets().widgets(
LauncherPreferences.widgets().widgets().also {
it.add(
DebugInfoWidget(
(context.applicationContext as Application).appWidgetHost.allocateAppWidgetId(),
WidgetPosition(1, 1, 10, 4),
WidgetPanel.HOME.id
)
)
}
)
}
val hidden: MutableSet<AbstractAppInfo> = mutableSetOf() val hidden: MutableSet<AbstractAppInfo> = mutableSetOf()
val launcher = DetailedAppInfo.fromAppInfo(
AppInfo( if (!BuildConfig.DEBUG) {
BuildConfig.APPLICATION_ID, val launcher = DetailedAppInfo.fromAppInfo(
HomeActivity::class.java.name, AppInfo(
INVALID_USER BuildConfig.APPLICATION_ID,
), context HomeActivity::class.java.name,
) INVALID_USER
launcher?.getRawInfo()?.let { hidden.add(it) } ), context
Log.i(TAG,"Hiding ${launcher?.getRawInfo()}") )
launcher?.getRawInfo()?.let { hidden.add(it) }
Log.i(TAG, "Hiding ${launcher?.getRawInfo()}")
}
LauncherPreferences.apps().hidden(hidden) LauncherPreferences.apps().hidden(hidden)
Action.resetToDefaultActions(context) Action.resetToDefaultActions(context)

View file

@ -12,11 +12,10 @@ import android.view.MotionEvent
import android.view.View import android.view.View
import android.window.OnBackInvokedDispatcher import android.window.OnBackInvokedDispatcher
import de.jrpie.android.launcher.Application 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.Action
import de.jrpie.android.launcher.actions.Gesture import de.jrpie.android.launcher.actions.Gesture
import de.jrpie.android.launcher.actions.LauncherAction import de.jrpie.android.launcher.actions.LauncherAction
import de.jrpie.android.launcher.databinding.HomeBinding import de.jrpie.android.launcher.databinding.ActivityHomeBinding
import de.jrpie.android.launcher.openTutorial import de.jrpie.android.launcher.openTutorial
import de.jrpie.android.launcher.preferences.LauncherPreferences import de.jrpie.android.launcher.preferences.LauncherPreferences
import de.jrpie.android.launcher.ui.tutorial.TutorialActivity import de.jrpie.android.launcher.ui.tutorial.TutorialActivity
@ -35,7 +34,7 @@ import de.jrpie.android.launcher.ui.tutorial.TutorialActivity
*/ */
class HomeActivity : UIObject, Activity() { class HomeActivity : UIObject, Activity() {
private lateinit var binding: HomeBinding private lateinit var binding: ActivityHomeBinding
private var touchGestureDetector: TouchGestureDetector? = null private var touchGestureDetector: TouchGestureDetector? = null
private var sharedPreferencesListener = private var sharedPreferencesListener =
@ -60,7 +59,7 @@ class HomeActivity : UIObject, Activity() {
// Initialise layout // Initialise layout
binding = HomeBinding.inflate(layoutInflater) binding = ActivityHomeBinding.inflate(layoutInflater)
setContentView(binding.root) setContentView(binding.root)

View file

@ -6,13 +6,13 @@ import android.view.LayoutInflater
import androidx.constraintlayout.widget.ConstraintLayout import androidx.constraintlayout.widget.ConstraintLayout
import androidx.core.view.isVisible import androidx.core.view.isVisible
import de.jrpie.android.launcher.actions.Gesture import de.jrpie.android.launcher.actions.Gesture
import de.jrpie.android.launcher.databinding.ClockBinding import de.jrpie.android.launcher.databinding.WidgetClockBinding
import de.jrpie.android.launcher.preferences.LauncherPreferences import de.jrpie.android.launcher.preferences.LauncherPreferences
import java.util.Locale import java.util.Locale
class ClockView(context: Context, attrs: AttributeSet? = null, val appWidgetId: Int): ConstraintLayout(context, attrs) { class ClockView(context: Context, attrs: AttributeSet? = null, val appWidgetId: Int): ConstraintLayout(context, attrs) {
val binding: ClockBinding = ClockBinding.inflate(LayoutInflater.from(context), this, true) val binding: WidgetClockBinding = WidgetClockBinding.inflate(LayoutInflater.from(context), this, true)
init { init {
initClock() initClock()
setOnClicks() setOnClicks()

View file

@ -0,0 +1,17 @@
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()
}
}

View file

@ -0,0 +1,42 @@
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<View>): 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) { }
}

View file

@ -37,13 +37,14 @@ class LauncherAppWidgetProvider(val info: AppWidgetProviderInfo) : LauncherWidge
} }
} }
class LauncherClockWidgetProvider : LauncherWidgetProvider() {
override fun loadLabel(context: Context): CharSequence? { data object LauncherClockWidgetProvider : LauncherWidgetProvider() {
override fun loadLabel(context: Context): CharSequence {
return context.getString(R.string.widget_clock_label) 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) return context.getString(R.string.widget_clock_description)
} }
@ -54,5 +55,4 @@ class LauncherClockWidgetProvider : LauncherWidgetProvider() {
override fun loadIcon(context: Context): Drawable? { override fun loadIcon(context: Context): Drawable? {
return AppCompatResources.getDrawable(context, R.drawable.baseline_clock_24) return AppCompatResources.getDrawable(context, R.drawable.baseline_clock_24)
} }
} }

View file

@ -4,7 +4,6 @@ import android.app.Activity
import android.content.Context import android.content.Context
import android.graphics.drawable.Drawable import android.graphics.drawable.Drawable
import android.view.View import android.view.View
import de.jrpie.android.launcher.Application
import de.jrpie.android.launcher.preferences.LauncherPreferences import de.jrpie.android.launcher.preferences.LauncherPreferences
import kotlinx.serialization.Serializable import kotlinx.serialization.Serializable
import kotlinx.serialization.json.Json import kotlinx.serialization.json.Json

View file

@ -53,7 +53,7 @@ fun bindAppWidgetOrRequestPermission(activity: Activity, providerInfo: AppWidget
fun getAppWidgetProviders( context: Context ): List<LauncherWidgetProvider> { fun getAppWidgetProviders( context: Context ): List<LauncherWidgetProvider> {
val list = mutableListOf<LauncherWidgetProvider>(LauncherClockWidgetProvider()) val list = mutableListOf<LauncherWidgetProvider>(LauncherClockWidgetProvider)
val appWidgetManager = context.getAppWidgetManager() val appWidgetManager = context.getAppWidgetManager()
val profiles = val profiles =
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
@ -68,11 +68,9 @@ fun getAppWidgetProviders( context: Context ): List<LauncherWidgetProvider> {
}.flatten() }.flatten()
) )
return list return list
} }
fun updateWidget(widget: Widget) { fun updateWidget(widget: Widget) {
LauncherPreferences.widgets().widgets( LauncherPreferences.widgets().widgets(
(LauncherPreferences.widgets().widgets() ?: setOf()) (LauncherPreferences.widgets().widgets() ?: setOf())

View file

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:longClickable="false"
android:fitsSystemWindows="true"
tools:context=".ui.widgets.DebugInfoView">
<TextView
android:id="@+id/debugInfoText"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</androidx.constraintlayout.widget.ConstraintLayout>