Better debug menu

This commit is contained in:
NerdNumber9 2019-04-14 12:12:58 -04:00
parent 6da504c999
commit 07fd3575c5
2 changed files with 42 additions and 3 deletions

View File

@ -4,11 +4,15 @@ import com.pushtorefresh.storio.sqlite.queries.RawQuery
import eu.kanade.tachiyomi.data.database.DatabaseHelper import eu.kanade.tachiyomi.data.database.DatabaseHelper
import eu.kanade.tachiyomi.data.database.tables.MangaTable import eu.kanade.tachiyomi.data.database.tables.MangaTable
import eu.kanade.tachiyomi.data.preference.PreferencesHelper import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.source.SourceManager
import exh.EH_SOURCE_ID
import exh.EXH_SOURCE_ID
import uy.kohesive.injekt.injectLazy import uy.kohesive.injekt.injectLazy
object DebugFunctions { object DebugFunctions {
val db: DatabaseHelper by injectLazy() val db: DatabaseHelper by injectLazy()
val prefs: PreferencesHelper by injectLazy() val prefs: PreferencesHelper by injectLazy()
val sourceManager: SourceManager by injectLazy()
fun addAllMangaInDatabaseToLibrary() { fun addAllMangaInDatabaseToLibrary() {
db.inTransaction { db.inTransaction {
@ -35,4 +39,23 @@ object DebugFunctions {
} }
fun clearSavedSearches() = prefs.eh_savedSearches().set(emptySet()) fun clearSavedSearches() = prefs.eh_savedSearches().set(emptySet())
fun listAllSources() = sourceManager.getCatalogueSources().map {
"${it.id}: ${it.name} (${it.lang.toUpperCase()})"
}.joinToString("\n")
fun convertAllEhentaiGalleriesToExhentai() = convertSources(EH_SOURCE_ID, EXH_SOURCE_ID)
fun convertAllExhentaiGalleriesToEhentai() = convertSources(EXH_SOURCE_ID, EH_SOURCE_ID)
private fun convertSources(from: Long, to: Long) {
db.lowLevel().executeSQL(RawQuery.builder()
.query("""
UPDATE ${MangaTable.TABLE}
SET ${MangaTable.COL_SOURCE} = $to
WHERE ${MangaTable.COL_SOURCE} = $from
""".trimIndent())
.affectsTables(MangaTable.TABLE)
.build())
}
} }

View File

@ -1,30 +1,46 @@
package exh.debug package exh.debug
import android.annotation.SuppressLint
import android.support.v7.preference.PreferenceScreen import android.support.v7.preference.PreferenceScreen
import android.util.Log import android.util.Log
import android.widget.HorizontalScrollView
import android.widget.TextView
import com.afollestad.materialdialogs.MaterialDialog import com.afollestad.materialdialogs.MaterialDialog
import eu.kanade.tachiyomi.ui.setting.SettingsController import eu.kanade.tachiyomi.ui.setting.SettingsController
import eu.kanade.tachiyomi.ui.setting.onClick import eu.kanade.tachiyomi.ui.setting.onClick
import eu.kanade.tachiyomi.ui.setting.preference import eu.kanade.tachiyomi.ui.setting.preference
import kotlin.reflect.KVisibility
import kotlin.reflect.full.declaredFunctions import kotlin.reflect.full.declaredFunctions
class SettingsDebugController : SettingsController() { class SettingsDebugController : SettingsController() {
@SuppressLint("SetTextI18n")
override fun setupPreferenceScreen(screen: PreferenceScreen) = with(screen) { override fun setupPreferenceScreen(screen: PreferenceScreen) = with(screen) {
title = "DEBUG MENU" title = "DEBUG MENU"
DebugFunctions::class.declaredFunctions.forEach { DebugFunctions::class.declaredFunctions.filter {
it.visibility == KVisibility.PUBLIC
}.forEach {
preference { preference {
title = it.name.replace(Regex("(.)(\\p{Upper})"), "$1 $2").toLowerCase().capitalize() title = it.name.replace(Regex("(.)(\\p{Upper})"), "$1 $2").toLowerCase().capitalize()
isPersistent = false isPersistent = false
onClick { onClick {
val view = TextView(context)
view.setHorizontallyScrolling(true)
view.setTextIsSelectable(true)
val hView = HorizontalScrollView(context)
hView.addView(view)
try { try {
val result = it.call(DebugFunctions) val result = it.call(DebugFunctions)
view.text = "Function returned result:\n\n$result"
MaterialDialog.Builder(context) MaterialDialog.Builder(context)
.content("Function returned result:\n\n$result") .customView(hView, true)
} catch(t: Throwable) { } catch(t: Throwable) {
view.text = "Function threw exception:\n\n${Log.getStackTraceString(t)}"
MaterialDialog.Builder(context) MaterialDialog.Builder(context)
.content("Function threw exception:\n\n${Log.getStackTraceString(t)}") .customView(hView, true)
}.show() }.show()
} }
} }