refactor: packages

This commit is contained in:
rhunk
2023-08-02 21:44:07 +02:00
parent b35bbfb6b2
commit 853ceec290
30 changed files with 93 additions and 73 deletions

View File

@ -38,7 +38,7 @@
</service>
<activity
android:name=".manager.MainActivity"
android:name=".ui.manager.MainActivity"
android:theme="@style/AppTheme"
android:exported="true">
<intent-filter>
@ -47,7 +47,7 @@
</intent-filter>
</activity>
<activity
android:name=".manager.setup.SetupActivity"
android:name=".ui.setup.SetupActivity"
android:exported="true"
android:theme="@style/AppTheme"
android:excludeFromRecents="true">

View File

@ -1,4 +0,0 @@
package me.rhunk.snapenhance.manager.sections
class DebugSection {
}

View File

@ -1,4 +1,4 @@
package me.rhunk.snapenhance.manager
package me.rhunk.snapenhance.ui
import android.os.Build
import androidx.compose.foundation.isSystemInDarkTheme

View File

@ -1,4 +1,4 @@
package me.rhunk.snapenhance.manager
package me.rhunk.snapenhance.ui.manager
import android.annotation.SuppressLint
import android.os.Bundle
@ -7,8 +7,8 @@ import androidx.activity.compose.setContent
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Scaffold
import androidx.navigation.compose.rememberNavController
import me.rhunk.snapenhance.manager.data.ManagerContext
import me.rhunk.snapenhance.manager.util.SaveFolderChecker
import me.rhunk.snapenhance.ui.AppMaterialTheme
import me.rhunk.snapenhance.ui.manager.util.SaveFolderChecker
import me.rhunk.snapenhance.util.ActivityResultCallback
class MainActivity : ComponentActivity() {

View File

@ -1,15 +1,18 @@
package me.rhunk.snapenhance.manager.data
package me.rhunk.snapenhance.ui.manager
import android.content.Context
import me.rhunk.snapenhance.bridge.wrapper.MappingsWrapper
import me.rhunk.snapenhance.bridge.wrapper.TranslationWrapper
import me.rhunk.snapenhance.bridge.wrapper.LocaleWrapper
import me.rhunk.snapenhance.core.config.ModConfig
import me.rhunk.snapenhance.ui.manager.data.InstallationSummary
import me.rhunk.snapenhance.ui.manager.data.ModMappingsInfo
import me.rhunk.snapenhance.ui.manager.data.SnapchatAppInfo
class ManagerContext(
private val context: Context
) {
val config = ModConfig()
val translation = TranslationWrapper()
val translation = LocaleWrapper()
val mappings = MappingsWrapper(context)
init {

View File

@ -1,4 +1,4 @@
package me.rhunk.snapenhance.manager
package me.rhunk.snapenhance.ui.manager
import androidx.compose.animation.core.animateDpAsState
import androidx.compose.foundation.layout.PaddingValues
@ -21,7 +21,6 @@ import androidx.navigation.NavGraph.Companion.findStartDestination
import androidx.navigation.NavHostController
import androidx.navigation.compose.NavHost
import androidx.navigation.compose.currentBackStackEntryAsState
import me.rhunk.snapenhance.manager.data.ManagerContext
class Navigation(

View File

@ -1,4 +1,4 @@
package me.rhunk.snapenhance.manager
package me.rhunk.snapenhance.ui.manager
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.BugReport
@ -11,10 +11,9 @@ import androidx.compose.ui.graphics.vector.ImageVector
import androidx.navigation.NavController
import androidx.navigation.NavGraphBuilder
import androidx.navigation.compose.composable
import me.rhunk.snapenhance.manager.data.ManagerContext
import me.rhunk.snapenhance.manager.sections.HomeSection
import me.rhunk.snapenhance.manager.sections.NotImplemented
import me.rhunk.snapenhance.manager.sections.features.FeaturesSection
import me.rhunk.snapenhance.ui.manager.sections.HomeSection
import me.rhunk.snapenhance.ui.manager.sections.NotImplemented
import me.rhunk.snapenhance.ui.manager.sections.features.FeaturesSection
import kotlin.reflect.KClass
enum class EnumSection(

View File

@ -1,4 +1,4 @@
package me.rhunk.snapenhance.manager.data
package me.rhunk.snapenhance.ui.manager.data
data class SnapchatAppInfo(

View File

@ -0,0 +1,4 @@
package me.rhunk.snapenhance.ui.manager.sections
class DebugSection {
}

View File

@ -1,4 +1,4 @@
package me.rhunk.snapenhance.manager.sections
package me.rhunk.snapenhance.ui.manager.sections
import androidx.compose.foundation.ScrollState
import androidx.compose.foundation.layout.Arrangement
@ -23,8 +23,8 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import me.rhunk.snapenhance.manager.Section
import me.rhunk.snapenhance.manager.data.InstallationSummary
import me.rhunk.snapenhance.ui.manager.Section
import me.rhunk.snapenhance.ui.manager.data.InstallationSummary
class HomeSection : Section() {
companion object {

View File

@ -1,9 +1,9 @@
package me.rhunk.snapenhance.manager.sections
package me.rhunk.snapenhance.ui.manager.sections
import androidx.compose.foundation.layout.Column
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import me.rhunk.snapenhance.manager.Section
import me.rhunk.snapenhance.ui.manager.Section
class NotImplemented : Section() {
@Composable

View File

@ -1,4 +1,4 @@
package me.rhunk.snapenhance.manager.sections.features
package me.rhunk.snapenhance.ui.manager.sections.features
typealias ClickCallback = (Boolean) -> Unit
typealias RegisterClickCallback = (ClickCallback) -> ClickCallback

View File

@ -1,4 +1,4 @@
package me.rhunk.snapenhance.manager.sections.features
package me.rhunk.snapenhance.ui.manager.sections.features
import androidx.compose.foundation.ScrollState
import androidx.compose.foundation.clickable

View File

@ -1,4 +1,4 @@
package me.rhunk.snapenhance.manager.sections.features
package me.rhunk.snapenhance.ui.manager.sections.features
import androidx.compose.foundation.background
import androidx.compose.foundation.clickable
@ -54,7 +54,7 @@ import kotlinx.coroutines.launch
import me.rhunk.snapenhance.core.config.ConfigContainer
import me.rhunk.snapenhance.core.config.DataProcessors
import me.rhunk.snapenhance.core.config.PropertyPair
import me.rhunk.snapenhance.manager.Section
import me.rhunk.snapenhance.ui.manager.Section
class FeaturesSection : Section() {
private val dialogs by lazy { Dialogs() }

View File

@ -1,4 +1,4 @@
package me.rhunk.snapenhance.manager.util
package me.rhunk.snapenhance.ui.manager.util
import android.app.Activity
import android.app.AlertDialog

View File

@ -1,4 +1,4 @@
package me.rhunk.snapenhance.manager.setup
package me.rhunk.snapenhance.ui.setup
import android.os.Bundle

View File

@ -1,4 +1,4 @@
package me.rhunk.snapenhance.manager.setup
package me.rhunk.snapenhance.ui.setup
import android.os.Bundle
import androidx.activity.ComponentActivity
@ -28,13 +28,13 @@ import androidx.compose.ui.unit.dp
import androidx.navigation.compose.NavHost
import androidx.navigation.compose.composable
import androidx.navigation.compose.rememberNavController
import me.rhunk.snapenhance.manager.AppMaterialTheme
import me.rhunk.snapenhance.manager.setup.screens.SetupScreen
import me.rhunk.snapenhance.manager.setup.screens.impl.FfmpegScreen
import me.rhunk.snapenhance.manager.setup.screens.impl.LanguageScreen
import me.rhunk.snapenhance.manager.setup.screens.impl.MappingsScreen
import me.rhunk.snapenhance.manager.setup.screens.impl.SaveFolderScreen
import me.rhunk.snapenhance.manager.setup.screens.impl.WelcomeScreen
import me.rhunk.snapenhance.ui.AppMaterialTheme
import me.rhunk.snapenhance.ui.setup.screens.SetupScreen
import me.rhunk.snapenhance.ui.setup.screens.impl.FfmpegScreen
import me.rhunk.snapenhance.ui.setup.screens.impl.LanguageScreen
import me.rhunk.snapenhance.ui.setup.screens.impl.MappingsScreen
import me.rhunk.snapenhance.ui.setup.screens.impl.SaveFolderScreen
import me.rhunk.snapenhance.ui.setup.screens.impl.WelcomeScreen
class SetupActivity : ComponentActivity() {

View File

@ -0,0 +1,14 @@
package me.rhunk.snapenhance.ui.setup
import android.content.Context
import me.rhunk.snapenhance.core.config.ModConfig
class SetupContext(
private val context: Context
) {
val config = ModConfig()
init {
config.loadFromContext(context)
}
}

View File

@ -1,4 +1,4 @@
package me.rhunk.snapenhance.manager.setup.screens
package me.rhunk.snapenhance.ui.setup.screens
import androidx.compose.runtime.Composable

View File

@ -1,9 +1,9 @@
package me.rhunk.snapenhance.manager.setup.screens.impl
package me.rhunk.snapenhance.ui.setup.screens.impl
import androidx.compose.material3.Button
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import me.rhunk.snapenhance.manager.setup.screens.SetupScreen
import me.rhunk.snapenhance.ui.setup.screens.SetupScreen
class FfmpegScreen : SetupScreen() {

View File

@ -1,10 +1,9 @@
package me.rhunk.snapenhance.manager.setup.screens.impl
package me.rhunk.snapenhance.ui.setup.screens.impl
import androidx.compose.runtime.Composable
import me.rhunk.snapenhance.manager.setup.screens.SetupScreen
import me.rhunk.snapenhance.ui.setup.screens.SetupScreen
class LanguageScreen : SetupScreen(){
@Composable
override fun Content() {

View File

@ -1,9 +1,9 @@
package me.rhunk.snapenhance.manager.setup.screens.impl
package me.rhunk.snapenhance.ui.setup.screens.impl
import androidx.compose.material3.Button
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import me.rhunk.snapenhance.manager.setup.screens.SetupScreen
import me.rhunk.snapenhance.ui.setup.screens.SetupScreen
class MappingsScreen : SetupScreen() {
@Composable

View File

@ -1,9 +1,9 @@
package me.rhunk.snapenhance.manager.setup.screens.impl
package me.rhunk.snapenhance.ui.setup.screens.impl
import androidx.compose.material3.Button
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import me.rhunk.snapenhance.manager.setup.screens.SetupScreen
import me.rhunk.snapenhance.ui.setup.screens.SetupScreen
class SaveFolderScreen : SetupScreen() {

View File

@ -1,9 +1,9 @@
package me.rhunk.snapenhance.manager.setup.screens.impl
package me.rhunk.snapenhance.ui.setup.screens.impl
import androidx.compose.material3.Button
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import me.rhunk.snapenhance.manager.setup.screens.SetupScreen
import me.rhunk.snapenhance.ui.setup.screens.SetupScreen
class WelcomeScreen : SetupScreen() {

View File

@ -12,7 +12,7 @@ import com.google.gson.Gson
import com.google.gson.GsonBuilder
import kotlinx.coroutines.asCoroutineDispatcher
import me.rhunk.snapenhance.bridge.BridgeClient
import me.rhunk.snapenhance.bridge.wrapper.TranslationWrapper
import me.rhunk.snapenhance.bridge.wrapper.LocaleWrapper
import me.rhunk.snapenhance.core.config.ModConfig
import me.rhunk.snapenhance.core.eventbus.EventBus
import me.rhunk.snapenhance.data.MessageSender
@ -45,7 +45,7 @@ class ModContext {
val event = EventBus(this)
val eventDispatcher = EventDispatcher(this)
val translation = TranslationWrapper()
val translation = LocaleWrapper()
val features = FeatureManager(this)
val mappings = MappingManager(this)
val actionManager = ActionManager(this)

View File

@ -7,7 +7,7 @@ import android.content.Intent
import android.os.Build
import android.os.Environment
import android.provider.Settings
import me.rhunk.snapenhance.bridge.wrapper.TranslationWrapper
import me.rhunk.snapenhance.bridge.wrapper.LocaleWrapper
import me.rhunk.snapenhance.download.DownloadTaskManager
import kotlin.system.exitProcess
@ -16,7 +16,7 @@ import kotlin.system.exitProcess
*/
object SharedContext {
lateinit var downloadTaskManager: DownloadTaskManager
lateinit var translation: TranslationWrapper
lateinit var translation: LocaleWrapper
private fun askForStoragePermission(context: Context) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
@ -70,7 +70,7 @@ object SharedContext {
}
}
if (!this::translation.isInitialized) {
translation = TranslationWrapper().apply {
translation = LocaleWrapper().apply {
loadFromContext(context)
}
}

View File

@ -6,7 +6,7 @@ import android.os.IBinder
import me.rhunk.snapenhance.SharedContext
import me.rhunk.snapenhance.bridge.types.BridgeFileType
import me.rhunk.snapenhance.bridge.wrapper.MessageLoggerWrapper
import me.rhunk.snapenhance.bridge.wrapper.TranslationWrapper
import me.rhunk.snapenhance.bridge.wrapper.LocaleWrapper
import me.rhunk.snapenhance.download.DownloadProcessor
class BridgeService : Service() {
@ -85,7 +85,7 @@ class BridgeService : Service() {
override fun clearMessageLogger() = messageLoggerWrapper.clearMessages()
override fun fetchTranslations() = TranslationWrapper.fetchLocales(context = this@BridgeService).associate {
override fun fetchTranslations() = LocaleWrapper.fetchLocales(context = this@BridgeService).associate {
it.locale to it.content
}

View File

@ -9,9 +9,9 @@ import me.rhunk.snapenhance.data.LocalePair
import java.util.Locale
class TranslationWrapper {
class LocaleWrapper {
companion object {
private const val DEFAULT_LOCALE = "en_US"
const val DEFAULT_LOCALE = "en_US"
fun fetchLocales(context: Context): List<LocalePair> {
val deviceLocale = Locale.getDefault().toString()
@ -85,10 +85,10 @@ class TranslationWrapper {
}
}
fun getCategory(key: String): TranslationWrapper {
return TranslationWrapper().apply {
fun getCategory(key: String): LocaleWrapper {
return LocaleWrapper().apply {
translationMap.putAll(
this@TranslationWrapper.translationMap
this@LocaleWrapper.translationMap
.filterKeys { it.startsWith("$key.") }
.mapKeys { it.key.substring(key.length + 1) }
)

View File

@ -8,17 +8,21 @@ import me.rhunk.snapenhance.Logger
import me.rhunk.snapenhance.bridge.BridgeClient
import me.rhunk.snapenhance.bridge.FileLoaderWrapper
import me.rhunk.snapenhance.bridge.types.BridgeFileType
import me.rhunk.snapenhance.bridge.wrapper.LocaleWrapper
import me.rhunk.snapenhance.core.config.impl.RootConfig
class ModConfig() {
val root = RootConfig()
class ModConfig {
companion object {
val gson: Gson = GsonBuilder().setPrettyPrinting().create()
var locale: String = LocaleWrapper.DEFAULT_LOCALE
set(value) {
field = value
writeConfig()
}
private val gson: Gson = GsonBuilder().setPrettyPrinting().create()
private val file = FileLoaderWrapper(BridgeFileType.CONFIG, "{}".toByteArray(Charsets.UTF_8))
val root = RootConfig()
operator fun getValue(thisRef: Any?, property: Any?) = root
private fun load() {
@ -36,12 +40,14 @@ class ModConfig() {
}
private fun loadConfig() {
val configContent = file.read()
root.fromJson(gson.fromJson(configContent.toString(Charsets.UTF_8), JsonObject::class.java))
val configFileContent = file.read()
val configObject = gson.fromJson(configFileContent.toString(Charsets.UTF_8), JsonObject::class.java)
locale = configObject.get("language")?.asString ?: LocaleWrapper.DEFAULT_LOCALE
}
fun writeConfig() {
val configObject = root.toJson()
configObject.addProperty("language", locale)
file.write(configObject.toString().toByteArray(Charsets.UTF_8))
}

View File

@ -16,13 +16,13 @@ import android.widget.TextView
import androidx.recyclerview.widget.ItemTouchHelper
import androidx.recyclerview.widget.RecyclerView
import me.rhunk.snapenhance.SharedContext
import me.rhunk.snapenhance.bridge.wrapper.TranslationWrapper
import me.rhunk.snapenhance.bridge.wrapper.LocaleWrapper
import me.rhunk.snapenhance.core.BuildConfig
import me.rhunk.snapenhance.core.R
import me.rhunk.snapenhance.download.data.PendingDownload
class DownloadManagerActivity : Activity() {
lateinit var translation: TranslationWrapper
lateinit var translation: LocaleWrapper
private val backCallbacks = mutableListOf<() -> Unit>()
private val fetchedDownloadTasks = mutableListOf<PendingDownload>()