diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index 5ab6347..9a24948 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -50,21 +50,6 @@ android {
}
}
- productFlavors {
-
- flavorDimensions.add("nfsmw")
-
- create("devmenu") {
- dimension = "nfsmw"
- minSdk = 21
- }
- create("no_devmenu") {
- dimension = "nfsmw"
- minSdk = 21
- }
- }
-
-
compileOptions {
sourceCompatibility = JavaVersion.VERSION_11
@@ -104,7 +89,7 @@ dependencies {
androidTestImplementation(libs.ui.test.junit4)
debugImplementation(libs.ui.tooling)
debugImplementation(libs.ui.test.manifest)
- implementation(project(mapOf("path" to ":devmenu")))
+ //implementation(project(mapOf("path" to ":devmenu")))
implementation ("commons-codec:commons-codec:1.15")
diff --git a/app/src/no_devmenu/AndroidManifest.xml b/app/src/no_devmenu/AndroidManifest.xml
deleted file mode 100644
index bff0de9..0000000
--- a/app/src/no_devmenu/AndroidManifest.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/devmenu/.gitignore b/devmenu/.gitignore
deleted file mode 100644
index 42afabf..0000000
--- a/devmenu/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/build
\ No newline at end of file
diff --git a/devmenu/build.gradle.kts b/devmenu/build.gradle.kts
deleted file mode 100644
index 4889a0e..0000000
--- a/devmenu/build.gradle.kts
+++ /dev/null
@@ -1,88 +0,0 @@
-plugins {
- alias(libs.plugins.androidLibrary)
- alias(libs.plugins.kotlinAndroid)
- kotlin("kapt")
- //alias(libs.plugins.ksp)
-
-}
-
-android {
- namespace = "com.megboyzz.devmenu"
- compileSdk = 34
-
- defaultConfig {
- minSdk = 21
-
- testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
- consumerProguardFiles("consumer-rules.pro")
- vectorDrawables {
- useSupportLibrary = true
- }
- }
-
- buildTypes {
- release {
- isMinifyEnabled = false
- proguardFiles(
- getDefaultProguardFile("proguard-android-optimize.txt"),
- "proguard-rules.pro"
- )
- }
- }
- compileOptions {
- sourceCompatibility = JavaVersion.VERSION_1_8
- targetCompatibility = JavaVersion.VERSION_1_8
- isCoreLibraryDesugaringEnabled = true
- }
- kotlinOptions {
- jvmTarget = "1.8"
- }
- buildFeatures {
- compose = true
- }
- composeOptions {
- kotlinCompilerExtensionVersion = "1.5.7"
- }
- packaging {
- resources {
- excludes += "/META-INF/{AL2.0,LGPL2.1}"
- }
- }
-
-}
-
-dependencies {
-
- implementation(libs.core.ktx)
- implementation(libs.appcompat)
- implementation(libs.material)
- implementation(libs.lifecycle.runtime.ktx)
- implementation(libs.activity.compose)
- implementation(platform(libs.compose.bom))
- implementation(libs.ui)
- implementation(libs.ui.graphics)
- implementation(libs.ui.tooling.preview)
- implementation(libs.material3)
- implementation(project(mapOf("path" to ":devmenu:domain")))
- testImplementation(libs.junit)
- androidTestImplementation(libs.androidx.test.ext.junit)
- androidTestImplementation(libs.espresso.core)
- androidTestImplementation(platform(libs.compose.bom))
- androidTestImplementation(libs.ui.test.junit4)
- debugImplementation(libs.ui.tooling)
- debugImplementation(libs.ui.test.manifest)
-
- coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:2.0.4")
-
- implementation(libs.compose.settings.ui.m3)
-
- implementation(libs.voyager.navigator)
- implementation(libs.voyager.bottomSheetNavigator)
- implementation(libs.voyager.transitions)
- implementation(libs.voyager.screenModel)
-
- implementation(libs.dagger)
- kapt(libs.dagger.compiler)
- implementation(libs.room)
- kapt(libs.room.compiler)
-}
\ No newline at end of file
diff --git a/devmenu/consumer-rules.pro b/devmenu/consumer-rules.pro
deleted file mode 100644
index e69de29..0000000
diff --git a/devmenu/data/.gitignore b/devmenu/data/.gitignore
deleted file mode 100644
index 42afabf..0000000
--- a/devmenu/data/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/build
\ No newline at end of file
diff --git a/devmenu/data/build.gradle.kts b/devmenu/data/build.gradle.kts
deleted file mode 100644
index edc6321..0000000
--- a/devmenu/data/build.gradle.kts
+++ /dev/null
@@ -1,45 +0,0 @@
-@Suppress("DSL_SCOPE_VIOLATION") // TODO: Remove once KTIJ-19369 is fixed
-plugins {
- alias(libs.plugins.androidLibrary)
- alias(libs.plugins.kotlinAndroid)
-}
-
-android {
- namespace = "com.megboyzz.devmenu.data"
- compileSdk = 34
-
- defaultConfig {
- minSdk = 21
-
- testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
- consumerProguardFiles("consumer-rules.pro")
- }
-
- buildTypes {
- release {
- isMinifyEnabled = false
- proguardFiles(
- getDefaultProguardFile("proguard-android-optimize.txt"),
- "proguard-rules.pro"
- )
- }
- }
- compileOptions {
- sourceCompatibility = JavaVersion.VERSION_1_8
- targetCompatibility = JavaVersion.VERSION_1_8
- }
- kotlinOptions {
- jvmTarget = "1.8"
- }
-}
-
-dependencies {
-
- implementation(libs.core.ktx)
- implementation(libs.appcompat)
- implementation(libs.material)
- implementation(project(mapOf("path" to ":devmenu:domain")))
- testImplementation(libs.junit)
- androidTestImplementation(libs.androidx.test.ext.junit)
- androidTestImplementation(libs.espresso.core)
-}
\ No newline at end of file
diff --git a/devmenu/data/consumer-rules.pro b/devmenu/data/consumer-rules.pro
deleted file mode 100644
index e69de29..0000000
diff --git a/devmenu/data/proguard-rules.pro b/devmenu/data/proguard-rules.pro
deleted file mode 100644
index 481bb43..0000000
--- a/devmenu/data/proguard-rules.pro
+++ /dev/null
@@ -1,21 +0,0 @@
-# Add project specific ProGuard rules here.
-# You can control the set of applied configuration files using the
-# proguardFiles setting in build.gradle.
-#
-# For more details, see
-# http://developer.android.com/guide/developing/tools/proguard.html
-
-# If your project uses WebView with JS, uncomment the following
-# and specify the fully qualified class name to the JavaScript interface
-# class:
-#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
-# public *;
-#}
-
-# Uncomment this to preserve the line number information for
-# debugging stack traces.
-#-keepattributes SourceFile,LineNumberTable
-
-# If you keep the line number information, uncomment this to
-# hide the original source file name.
-#-renamesourcefileattribute SourceFile
\ No newline at end of file
diff --git a/devmenu/data/src/androidTest/java/com/megboyzz/devmenu/data/ExampleInstrumentedTest.kt b/devmenu/data/src/androidTest/java/com/megboyzz/devmenu/data/ExampleInstrumentedTest.kt
deleted file mode 100644
index a757b3d..0000000
--- a/devmenu/data/src/androidTest/java/com/megboyzz/devmenu/data/ExampleInstrumentedTest.kt
+++ /dev/null
@@ -1,24 +0,0 @@
-package com.megboyzz.devmenu.data
-
-import androidx.test.platform.app.InstrumentationRegistry
-import androidx.test.ext.junit.runners.AndroidJUnit4
-
-import org.junit.Test
-import org.junit.runner.RunWith
-
-import org.junit.Assert.*
-
-/**
- * Instrumented test, which will execute on an Android device.
- *
- * See [testing documentation](http://d.android.com/tools/testing).
- */
-@RunWith(AndroidJUnit4::class)
-class ExampleInstrumentedTest {
- @Test
- fun useAppContext() {
- // Context of the app under test.
- val appContext = InstrumentationRegistry.getInstrumentation().targetContext
- assertEquals("com.megboyzz.devmenu.data.test", appContext.packageName)
- }
-}
\ No newline at end of file
diff --git a/devmenu/data/src/main/AndroidManifest.xml b/devmenu/data/src/main/AndroidManifest.xml
deleted file mode 100644
index a5918e6..0000000
--- a/devmenu/data/src/main/AndroidManifest.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
\ No newline at end of file
diff --git a/devmenu/data/src/test/java/com/megboyzz/devmenu/data/ExampleUnitTest.kt b/devmenu/data/src/test/java/com/megboyzz/devmenu/data/ExampleUnitTest.kt
deleted file mode 100644
index 5b4be67..0000000
--- a/devmenu/data/src/test/java/com/megboyzz/devmenu/data/ExampleUnitTest.kt
+++ /dev/null
@@ -1,17 +0,0 @@
-package com.megboyzz.devmenu.data
-
-import org.junit.Test
-
-import org.junit.Assert.*
-
-/**
- * Example local unit test, which will execute on the development machine (host).
- *
- * See [testing documentation](http://d.android.com/tools/testing).
- */
-class ExampleUnitTest {
- @Test
- fun addition_isCorrect() {
- assertEquals(4, 2 + 2)
- }
-}
\ No newline at end of file
diff --git a/devmenu/domain/.gitignore b/devmenu/domain/.gitignore
deleted file mode 100644
index 42afabf..0000000
--- a/devmenu/domain/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/build
\ No newline at end of file
diff --git a/devmenu/domain/build.gradle.kts b/devmenu/domain/build.gradle.kts
deleted file mode 100644
index c71b0ef..0000000
--- a/devmenu/domain/build.gradle.kts
+++ /dev/null
@@ -1,22 +0,0 @@
-plugins {
- id("java-library")
- alias(libs.plugins.org.jetbrains.kotlin.jvm)
-}
-
-java {
- sourceCompatibility = JavaVersion.VERSION_17
- targetCompatibility = JavaVersion.VERSION_17
-}
-
-dependencies {
- implementation("javax.inject:javax.inject:1")
- testImplementation("junit:junit:4.13.2")
- //testImplementation("org.mockito:mockito-core:5.7.0")
- //testImplementation("org.mockito.kotlin:mockito-kotlin:5.7.0")
-}
-/*
-sourceSets {
- test {
- java.srcDir("src/test/java") // Путь к исходным файлам тестов на Kotlin
- }
-}*/
\ No newline at end of file
diff --git a/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/entities/Constants.kt b/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/entities/Constants.kt
deleted file mode 100644
index e1902e1..0000000
--- a/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/entities/Constants.kt
+++ /dev/null
@@ -1,3 +0,0 @@
-package com.megboyzz.devmenu.domain.entities
-
-val devmenuId = "DevMenu"
\ No newline at end of file
diff --git a/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/entities/FileProps.kt b/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/entities/FileProps.kt
deleted file mode 100644
index 1cccd68..0000000
--- a/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/entities/FileProps.kt
+++ /dev/null
@@ -1,9 +0,0 @@
-package com.megboyzz.devmenu.domain.entities
-
-import java.util.Date
-
-data class FileProps(
- val fileName: String,
- val size: Long,
- val lastModify: Date
-)
diff --git a/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/entities/GameLang.kt b/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/entities/GameLang.kt
deleted file mode 100644
index be09998..0000000
--- a/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/entities/GameLang.kt
+++ /dev/null
@@ -1,19 +0,0 @@
-package com.megboyzz.devmenu.domain.entities
-
-enum class GameLang(private val lang: String) {
- System("sys"),
- Chinese("cn"),
- Dutch("nl"),
- English("en"),
- French("fr"),
- Deutsch("de"),
- Italian("it"),
- Japanese("ja"),
- Korean("kr"),
- Portuguese("br"),
- Russian("ru"),
- Spanish("es");
-
- override fun toString() = lang
-
-}
\ No newline at end of file
diff --git a/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/entities/SvmwProps.kt b/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/entities/SvmwProps.kt
deleted file mode 100644
index 61866ec..0000000
--- a/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/entities/SvmwProps.kt
+++ /dev/null
@@ -1,8 +0,0 @@
-package com.megboyzz.devmenu.domain.entities
-
-import java.util.Date
-
-data class SvmwProps(
- val description: String,
- val date: Date
-)
diff --git a/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/entities/TrackingData.kt b/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/entities/TrackingData.kt
deleted file mode 100644
index 656c0cb..0000000
--- a/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/entities/TrackingData.kt
+++ /dev/null
@@ -1,6 +0,0 @@
-package com.megboyzz.devmenu.domain.entities
-
-data class TrackingData(
- val enabled: Boolean,
- val pathToSave: String
-)
diff --git a/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/repository/FilesRepository.kt b/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/repository/FilesRepository.kt
deleted file mode 100644
index 01a93bc..0000000
--- a/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/repository/FilesRepository.kt
+++ /dev/null
@@ -1,20 +0,0 @@
-package com.megboyzz.devmenu.domain.repository
-
-import com.megboyzz.devmenu.domain.entities.FileProps
-import java.io.File
-
-interface FilesRepository {
-
- val internalRoot: File
-
- val externalRoot: File
-
- fun getFileProps(file: File): FileProps
-
- suspend fun hideFile(file: File): Boolean
-
- suspend fun unHideFile(file: File): Boolean
-
- val allHidedFiles: List
-
-}
\ No newline at end of file
diff --git a/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/repository/ReplacementRepository.kt b/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/repository/ReplacementRepository.kt
deleted file mode 100644
index bbcb249..0000000
--- a/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/repository/ReplacementRepository.kt
+++ /dev/null
@@ -1,13 +0,0 @@
-package com.megboyzz.devmenu.domain.repository
-
-import java.io.File
-
-interface ReplacementRepository {
-
- suspend fun replaceFile(what: File, to: File): Result
-
- suspend fun recoverReplacement(replacement: File): Result
-
- suspend fun getAllReplacements(): List
-
-}
\ No newline at end of file
diff --git a/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/repository/SaveRepository.kt b/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/repository/SaveRepository.kt
deleted file mode 100644
index 1eec314..0000000
--- a/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/repository/SaveRepository.kt
+++ /dev/null
@@ -1,11 +0,0 @@
-package com.megboyzz.devmenu.domain.repository
-
-import java.io.File
-
-interface SaveRepository {
-
- suspend fun loadSaveFile(file: File): Boolean
-
- suspend fun uploadCurrentSaveFile(fileToUpload: File): Boolean
-
-}
\ No newline at end of file
diff --git a/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/repository/SettingsRepository.kt b/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/repository/SettingsRepository.kt
deleted file mode 100644
index da5e07b..0000000
--- a/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/repository/SettingsRepository.kt
+++ /dev/null
@@ -1,9 +0,0 @@
-package com.megboyzz.devmenu.domain.repository
-
-import com.megboyzz.devmenu.domain.entities.GameLang
-
-interface SettingsRepository {
-
- var gameLang: GameLang
-
-}
\ No newline at end of file
diff --git a/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/repository/SvmwRepository.kt b/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/repository/SvmwRepository.kt
deleted file mode 100644
index 6049243..0000000
--- a/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/repository/SvmwRepository.kt
+++ /dev/null
@@ -1,20 +0,0 @@
-package com.megboyzz.devmenu.domain.repository
-
-import com.megboyzz.devmenu.domain.entities.SvmwProps
-import java.io.File
-
-interface SvmwRepository {
-
- suspend fun createSvmwFromCurrentSaveFileAndSetIt(): Boolean
-
- suspend fun createSvmwFromCurrentSaveFile(fileToSave: File): Boolean
-
- suspend fun createSvmw(fileToSave: File, saveFile: File): Boolean
-
- suspend fun loadSvmw(svmw: File): Boolean
-
- suspend fun getInfoAboutSvmw(svmw: File): SvmwProps?
-
- suspend fun getInfoAboutLoadedSvmw(): SvmwProps?
-
-}
\ No newline at end of file
diff --git a/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/repository/TrackingRepository.kt b/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/repository/TrackingRepository.kt
deleted file mode 100644
index 01f8bb6..0000000
--- a/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/repository/TrackingRepository.kt
+++ /dev/null
@@ -1,13 +0,0 @@
-package com.megboyzz.devmenu.domain.repository
-
-import com.megboyzz.devmenu.domain.entities.TrackingData
-
-interface TrackingRepository {
-
- var trackingData: TrackingData
-
- fun startTracking()
-
- fun stopTracking()
-
-}
\ No newline at end of file
diff --git a/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/IsDevMenuEnabledUseCase.kt b/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/IsDevMenuEnabledUseCase.kt
deleted file mode 100644
index 3e6a848..0000000
--- a/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/IsDevMenuEnabledUseCase.kt
+++ /dev/null
@@ -1,12 +0,0 @@
-package com.megboyzz.devmenu.domain.usecases
-
-import com.megboyzz.devmenu.domain.entities.devmenuId
-import com.megboyzz.devmenu.domain.repository.FilesRepository
-import java.io.File
-import javax.inject.Inject
-
-class IsDevMenuEnabledUseCase @Inject constructor(
- private val filesRepository: FilesRepository
-) {
- operator fun invoke() = File(filesRepository.externalRoot, devmenuId).exists()
-}
\ No newline at end of file
diff --git a/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/StartTrackingUseCase.kt b/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/StartTrackingUseCase.kt
deleted file mode 100644
index 85a7a7a..0000000
--- a/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/StartTrackingUseCase.kt
+++ /dev/null
@@ -1,17 +0,0 @@
-package com.megboyzz.devmenu.domain.usecases
-
-import com.megboyzz.devmenu.domain.repository.TrackingRepository
-import javax.inject.Inject
-
-class StartTrackingUseCase @Inject constructor(
- private val trackingRepository: TrackingRepository
-) {
-
- operator fun invoke(){
-
- if(trackingRepository.trackingData.enabled)
- trackingRepository.startTracking()
-
- }
-
-}
\ No newline at end of file
diff --git a/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/StopTrackingUseCase.kt b/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/StopTrackingUseCase.kt
deleted file mode 100644
index 979c5af..0000000
--- a/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/StopTrackingUseCase.kt
+++ /dev/null
@@ -1,11 +0,0 @@
-package com.megboyzz.devmenu.domain.usecases
-
-import com.megboyzz.devmenu.domain.repository.TrackingRepository
-import javax.inject.Inject
-class StopTrackingUseCase @Inject constructor(
- private val trackingRepository: TrackingRepository
-) {
-
- operator fun invoke() = trackingRepository.stopTracking()
-
-}
\ No newline at end of file
diff --git a/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/files/GetExternalFilesUseCase.kt b/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/files/GetExternalFilesUseCase.kt
deleted file mode 100644
index d95d575..0000000
--- a/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/files/GetExternalFilesUseCase.kt
+++ /dev/null
@@ -1,11 +0,0 @@
-package com.megboyzz.devmenu.domain.usecases.files
-
-import com.megboyzz.devmenu.domain.repository.FilesRepository
-import java.io.File
-import javax.inject.Inject
-
-class GetExternalFilesUseCase @Inject constructor(
- private val filesRepository: FilesRepository
-) {
- operator fun invoke(childPath: String = ""): File = File(filesRepository.externalRoot, childPath)
-}
\ No newline at end of file
diff --git a/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/files/GetFilePropsUseCase.kt b/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/files/GetFilePropsUseCase.kt
deleted file mode 100644
index 0a40b80..0000000
--- a/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/files/GetFilePropsUseCase.kt
+++ /dev/null
@@ -1,12 +0,0 @@
-package com.megboyzz.devmenu.domain.usecases.files
-
-import com.megboyzz.devmenu.domain.entities.FileProps
-import com.megboyzz.devmenu.domain.repository.FilesRepository
-import java.io.File
-import javax.inject.Inject
-
-class GetFilePropsUseCase @Inject constructor(
- private val filesRepository: FilesRepository
-) {
- operator fun invoke(file: File): FileProps = filesRepository.getFileProps(file)
-}
\ No newline at end of file
diff --git a/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/files/GetInternalFilesUseCase.kt b/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/files/GetInternalFilesUseCase.kt
deleted file mode 100644
index 24c985f..0000000
--- a/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/files/GetInternalFilesUseCase.kt
+++ /dev/null
@@ -1,13 +0,0 @@
-package com.megboyzz.devmenu.domain.usecases.files
-
-import com.megboyzz.devmenu.domain.repository.FilesRepository
-import java.io.File
-import javax.inject.Inject
-
-class GetInternalFilesUseCase @Inject constructor(
- private val filesRepository: FilesRepository
-) {
-
- operator fun invoke(childPath: String = ""): File = File(filesRepository.internalRoot, childPath)
-
-}
\ No newline at end of file
diff --git a/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/files/RemoveFileUseCase.kt b/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/files/RemoveFileUseCase.kt
deleted file mode 100644
index 30d2f2f..0000000
--- a/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/files/RemoveFileUseCase.kt
+++ /dev/null
@@ -1,8 +0,0 @@
-package com.megboyzz.devmenu.domain.usecases.files
-
-import java.io.File
-import javax.inject.Inject
-
-class RemoveFileUseCase @Inject constructor() {
- operator fun invoke(file: File): Boolean = file.delete()
-}
\ No newline at end of file
diff --git a/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/files/RenameFileUseCase.kt b/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/files/RenameFileUseCase.kt
deleted file mode 100644
index a9a877d..0000000
--- a/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/files/RenameFileUseCase.kt
+++ /dev/null
@@ -1,12 +0,0 @@
-package com.megboyzz.devmenu.domain.usecases.files
-
-import java.io.File
-import javax.inject.Inject
-
-class RenameFileUseCase @Inject constructor() {
- operator fun invoke(file: File, newName: String) =
- if(file.exists())
- file.renameTo(File(file.parent, newName))
- else
- false
-}
\ No newline at end of file
diff --git a/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/hidefiles/GetAllHidedFilesUseCase.kt b/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/hidefiles/GetAllHidedFilesUseCase.kt
deleted file mode 100644
index 87131dd..0000000
--- a/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/hidefiles/GetAllHidedFilesUseCase.kt
+++ /dev/null
@@ -1,12 +0,0 @@
-package com.megboyzz.devmenu.domain.usecases.hidefiles
-
-import com.megboyzz.devmenu.domain.repository.FilesRepository
-import javax.inject.Inject
-
-class GetAllHidedFilesUseCase @Inject constructor(
- private val filesRepository: FilesRepository
-) {
-
- operator fun invoke() = filesRepository.allHidedFiles
-
-}
\ No newline at end of file
diff --git a/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/hidefiles/HideFileUseCase.kt b/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/hidefiles/HideFileUseCase.kt
deleted file mode 100644
index 3289262..0000000
--- a/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/hidefiles/HideFileUseCase.kt
+++ /dev/null
@@ -1,13 +0,0 @@
-package com.megboyzz.devmenu.domain.usecases.hidefiles
-
-import com.megboyzz.devmenu.domain.repository.FilesRepository
-import java.io.File
-import javax.inject.Inject
-
-class HideFileUseCase @Inject constructor(
- private val filesRepository: FilesRepository
-) {
-
- suspend operator fun invoke(file: File) = filesRepository.hideFile(file)
-
-}
\ No newline at end of file
diff --git a/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/hidefiles/UnHideAllUseCase.kt b/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/hidefiles/UnHideAllUseCase.kt
deleted file mode 100644
index e2ad68d..0000000
--- a/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/hidefiles/UnHideAllUseCase.kt
+++ /dev/null
@@ -1,14 +0,0 @@
-package com.megboyzz.devmenu.domain.usecases.hidefiles
-
-import javax.inject.Inject
-
-class UnHideAllUseCase @Inject constructor(
- private val unHideFileUseCase: UnHideFileUseCase,
- private val getAllHidedFilesUseCase: GetAllHidedFilesUseCase
-) {
-
- suspend operator fun invoke() = getAllHidedFilesUseCase().forEach {
- unHideFileUseCase(it)
- }
-
-}
\ No newline at end of file
diff --git a/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/hidefiles/UnHideFileUseCase.kt b/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/hidefiles/UnHideFileUseCase.kt
deleted file mode 100644
index f17c24b..0000000
--- a/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/hidefiles/UnHideFileUseCase.kt
+++ /dev/null
@@ -1,13 +0,0 @@
-package com.megboyzz.devmenu.domain.usecases.hidefiles
-
-import com.megboyzz.devmenu.domain.repository.FilesRepository
-import java.io.File
-import javax.inject.Inject
-
-class UnHideFileUseCase @Inject constructor(
- private val filesRepository: FilesRepository
-) {
-
- suspend operator fun invoke(file: File) = filesRepository.unHideFile(file)
-
-}
\ No newline at end of file
diff --git a/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/replacement/GetAllReplacedFilesUseCase.kt b/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/replacement/GetAllReplacedFilesUseCase.kt
deleted file mode 100644
index ac69349..0000000
--- a/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/replacement/GetAllReplacedFilesUseCase.kt
+++ /dev/null
@@ -1,10 +0,0 @@
-package com.megboyzz.devmenu.domain.usecases.replacement
-
-import com.megboyzz.devmenu.domain.repository.ReplacementRepository
-import javax.inject.Inject
-
-class GetAllReplacedFilesUseCase @Inject constructor(
- private val replacementRepository: ReplacementRepository
-) {
- suspend operator fun invoke() = replacementRepository.getAllReplacements()
-}
\ No newline at end of file
diff --git a/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/replacement/RecoverAllReplacementsUseCase.kt b/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/replacement/RecoverAllReplacementsUseCase.kt
deleted file mode 100644
index d0b571b..0000000
--- a/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/replacement/RecoverAllReplacementsUseCase.kt
+++ /dev/null
@@ -1,13 +0,0 @@
-package com.megboyzz.devmenu.domain.usecases.replacement
-
-import javax.inject.Inject
-
-class RecoverAllReplacementsUseCase @Inject constructor(
- private val getAllReplacedFilesUseCase: GetAllReplacedFilesUseCase,
- private val recoverReplacementUseCase: RecoverReplacementUseCase
-) {
- suspend operator fun invoke(){
- val listReplacedFiles = getAllReplacedFilesUseCase()
- listReplacedFiles.forEach { recoverReplacementUseCase(it) }
- }
-}
\ No newline at end of file
diff --git a/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/replacement/RecoverReplacementUseCase.kt b/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/replacement/RecoverReplacementUseCase.kt
deleted file mode 100644
index 265d10b..0000000
--- a/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/replacement/RecoverReplacementUseCase.kt
+++ /dev/null
@@ -1,11 +0,0 @@
-package com.megboyzz.devmenu.domain.usecases.replacement
-
-import com.megboyzz.devmenu.domain.repository.ReplacementRepository
-import java.io.File
-import javax.inject.Inject
-
-class RecoverReplacementUseCase @Inject constructor(
- private val replacementRepository: ReplacementRepository
-) {
- suspend operator fun invoke(replacement: File) = replacementRepository.recoverReplacement(replacement)
-}
\ No newline at end of file
diff --git a/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/replacement/ReplaceFileUseCase.kt b/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/replacement/ReplaceFileUseCase.kt
deleted file mode 100644
index 9d4e3ff..0000000
--- a/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/replacement/ReplaceFileUseCase.kt
+++ /dev/null
@@ -1,14 +0,0 @@
-package com.megboyzz.devmenu.domain.usecases.replacement
-
-import com.megboyzz.devmenu.domain.repository.ReplacementRepository
-import java.io.File
-import javax.inject.Inject
-
-class ReplaceFileUseCase @Inject constructor(
- private val replacementRepository: ReplacementRepository
-) {
-
- suspend operator fun invoke(what: File, to: File): Result
- = replacementRepository.replaceFile(what, to)
-
-}
\ No newline at end of file
diff --git a/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/save/LoadSaveFileUseCase.kt b/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/save/LoadSaveFileUseCase.kt
deleted file mode 100644
index 4dbb301..0000000
--- a/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/save/LoadSaveFileUseCase.kt
+++ /dev/null
@@ -1,11 +0,0 @@
-package com.megboyzz.devmenu.domain.usecases.save
-
-import com.megboyzz.devmenu.domain.repository.SaveRepository
-import java.io.File
-import javax.inject.Inject
-
-class LoadSaveFileUseCase @Inject constructor(
- private val saveRepository: SaveRepository
-) {
- suspend operator fun invoke(file: File) = if(file.exists()) saveRepository.loadSaveFile(file) else false
-}
\ No newline at end of file
diff --git a/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/save/UploadSaveFileUseCase.kt b/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/save/UploadSaveFileUseCase.kt
deleted file mode 100644
index 1b7d78d..0000000
--- a/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/save/UploadSaveFileUseCase.kt
+++ /dev/null
@@ -1,15 +0,0 @@
-package com.megboyzz.devmenu.domain.usecases.save
-
-import com.megboyzz.devmenu.domain.repository.SaveRepository
-import java.io.File
-import javax.inject.Inject
-
-class UploadSaveFileUseCase @Inject constructor(
- private val saveRepository: SaveRepository
-) {
- suspend operator fun invoke(fileToUpload: File) =
- if(fileToUpload.exists())
- saveRepository.uploadCurrentSaveFile(fileToUpload)
- else
- false
-}
\ No newline at end of file
diff --git a/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/settings/RemoveGameDataUseCase.kt b/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/settings/RemoveGameDataUseCase.kt
deleted file mode 100644
index b4a96ec..0000000
--- a/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/settings/RemoveGameDataUseCase.kt
+++ /dev/null
@@ -1,10 +0,0 @@
-package com.megboyzz.devmenu.domain.usecases.settings
-
-import com.megboyzz.devmenu.domain.usecases.files.GetInternalFilesUseCase
-import javax.inject.Inject
-
-class RemoveGameDataUseCase @Inject constructor(
- private val getInternalFilesUseCase: GetInternalFilesUseCase
-) {
- operator fun invoke() = getInternalFilesUseCase().listFiles()?.forEach { it.delete() }
-}
\ No newline at end of file
diff --git a/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/settings/SetGameLangUseCase.kt b/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/settings/SetGameLangUseCase.kt
deleted file mode 100644
index 338f964..0000000
--- a/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/settings/SetGameLangUseCase.kt
+++ /dev/null
@@ -1,15 +0,0 @@
-package com.megboyzz.devmenu.domain.usecases.settings
-
-import com.megboyzz.devmenu.domain.entities.GameLang
-import com.megboyzz.devmenu.domain.repository.SettingsRepository
-import javax.inject.Inject
-
-class SetGameLangUseCase @Inject constructor(
- private val settingsRepository: SettingsRepository
-) {
-
- operator fun invoke(gameLang: GameLang){
- settingsRepository.gameLang = gameLang
- }
-
-}
\ No newline at end of file
diff --git a/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/settings/SetTrackingSaveFileUseCase.kt b/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/settings/SetTrackingSaveFileUseCase.kt
deleted file mode 100644
index 4ce20ae..0000000
--- a/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/settings/SetTrackingSaveFileUseCase.kt
+++ /dev/null
@@ -1,15 +0,0 @@
-package com.megboyzz.devmenu.domain.usecases.settings
-
-import com.megboyzz.devmenu.domain.entities.TrackingData
-import com.megboyzz.devmenu.domain.repository.TrackingRepository
-import javax.inject.Inject
-
-class SetTrackingSaveFileUseCase @Inject constructor(
- private val trackingRepository: TrackingRepository
-) {
-
- operator fun invoke(enabled: Boolean, pathToSave: String) {
- trackingRepository.trackingData = TrackingData(enabled, pathToSave)
- }
-
-}
\ No newline at end of file
diff --git a/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/settings/TurnOffDevMenuUseCase.kt b/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/settings/TurnOffDevMenuUseCase.kt
deleted file mode 100644
index d6b1d35..0000000
--- a/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/settings/TurnOffDevMenuUseCase.kt
+++ /dev/null
@@ -1,12 +0,0 @@
-package com.megboyzz.devmenu.domain.usecases.settings
-
-import com.megboyzz.devmenu.domain.entities.devmenuId
-import com.megboyzz.devmenu.domain.repository.FilesRepository
-import java.io.File
-import javax.inject.Inject
-
-class TurnOffDevMenuUseCase @Inject constructor(
- private val filesRepository: FilesRepository
-) {
- operator fun invoke() = File(filesRepository.externalRoot, devmenuId).delete()
-}
\ No newline at end of file
diff --git a/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/svmw/CreateSvmwFileUseCase.kt b/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/svmw/CreateSvmwFileUseCase.kt
deleted file mode 100644
index ebed805..0000000
--- a/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/svmw/CreateSvmwFileUseCase.kt
+++ /dev/null
@@ -1,27 +0,0 @@
-package com.megboyzz.devmenu.domain.usecases.svmw
-
-import com.megboyzz.devmenu.domain.repository.SvmwRepository
-import java.io.File
-import javax.inject.Inject
-
-class CreateSvmwFileUseCase @Inject constructor(
- private val svmwRepository: SvmwRepository
-) {
-
- suspend operator fun invoke(
- fileToSave: File? = null,
- saveFile: File? = null
- ){
-
- val a = fileToSave != null
- val b = saveFile != null
-
- when {
- a && b -> svmwRepository.createSvmw(fileToSave!!, saveFile!!)
- a && !b -> svmwRepository.createSvmwFromCurrentSaveFile(fileToSave!!)
- !a && !b -> svmwRepository.createSvmwFromCurrentSaveFileAndSetIt()
- }
-
- }
-
-}
\ No newline at end of file
diff --git a/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/svmw/GetSvmwFilePropsUseCase.kt b/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/svmw/GetSvmwFilePropsUseCase.kt
deleted file mode 100644
index d8c65a9..0000000
--- a/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/svmw/GetSvmwFilePropsUseCase.kt
+++ /dev/null
@@ -1,11 +0,0 @@
-package com.megboyzz.devmenu.domain.usecases.svmw
-
-import com.megboyzz.devmenu.domain.repository.SvmwRepository
-import java.io.File
-import javax.inject.Inject
-
-class GetSvmwFilePropsUseCase @Inject constructor(
- private val svmwRepository: SvmwRepository
-) {
- suspend operator fun invoke(file: File) = svmwRepository.getInfoAboutSvmw(file)
-}
\ No newline at end of file
diff --git a/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/svmw/GetSvmwPropsUseCase.kt b/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/svmw/GetSvmwPropsUseCase.kt
deleted file mode 100644
index 48afe3f..0000000
--- a/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/svmw/GetSvmwPropsUseCase.kt
+++ /dev/null
@@ -1,10 +0,0 @@
-package com.megboyzz.devmenu.domain.usecases.svmw
-
-import com.megboyzz.devmenu.domain.repository.SvmwRepository
-import javax.inject.Inject
-
-class GetSvmwPropsUseCase @Inject constructor(
- private val svmwRepository: SvmwRepository
-) {
- suspend operator fun invoke() = svmwRepository.getInfoAboutLoadedSvmw()
-}
\ No newline at end of file
diff --git a/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/svmw/LoadSvmwUseCase.kt b/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/svmw/LoadSvmwUseCase.kt
deleted file mode 100644
index 3c4d4f1..0000000
--- a/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/svmw/LoadSvmwUseCase.kt
+++ /dev/null
@@ -1,11 +0,0 @@
-package com.megboyzz.devmenu.domain.usecases.svmw
-
-import com.megboyzz.devmenu.domain.repository.SvmwRepository
-import java.io.File
-import javax.inject.Inject
-
-class LoadSvmwUseCase @Inject constructor(
- private val svmwRepository: SvmwRepository
-) {
- suspend operator fun invoke(file: File) = if(file.exists()) svmwRepository.loadSvmw(file) else false
-}
\ No newline at end of file
diff --git a/devmenu/proguard-rules.pro b/devmenu/proguard-rules.pro
deleted file mode 100644
index 481bb43..0000000
--- a/devmenu/proguard-rules.pro
+++ /dev/null
@@ -1,21 +0,0 @@
-# Add project specific ProGuard rules here.
-# You can control the set of applied configuration files using the
-# proguardFiles setting in build.gradle.
-#
-# For more details, see
-# http://developer.android.com/guide/developing/tools/proguard.html
-
-# If your project uses WebView with JS, uncomment the following
-# and specify the fully qualified class name to the JavaScript interface
-# class:
-#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
-# public *;
-#}
-
-# Uncomment this to preserve the line number information for
-# debugging stack traces.
-#-keepattributes SourceFile,LineNumberTable
-
-# If you keep the line number information, uncomment this to
-# hide the original source file name.
-#-renamesourcefileattribute SourceFile
\ No newline at end of file
diff --git a/devmenu/src/androidTest/java/com/megboyzz/devmenu/ExampleInstrumentedTest.kt b/devmenu/src/androidTest/java/com/megboyzz/devmenu/ExampleInstrumentedTest.kt
deleted file mode 100644
index 81aeaca..0000000
--- a/devmenu/src/androidTest/java/com/megboyzz/devmenu/ExampleInstrumentedTest.kt
+++ /dev/null
@@ -1,24 +0,0 @@
-package com.megboyzz.devmenu
-
-import androidx.test.platform.app.InstrumentationRegistry
-import androidx.test.ext.junit.runners.AndroidJUnit4
-
-import org.junit.Test
-import org.junit.runner.RunWith
-
-import org.junit.Assert.*
-
-/**
- * Instrumented test, which will execute on an Android device.
- *
- * See [testing documentation](http://d.android.com/tools/testing).
- */
-@RunWith(AndroidJUnit4::class)
-class ExampleInstrumentedTest {
- @Test
- fun useAppContext() {
- // Context of the app under test.
- val appContext = InstrumentationRegistry.getInstrumentation().targetContext
- assertEquals("com.megboyzz.devmenu.test", appContext.packageName)
- }
-}
\ No newline at end of file
diff --git a/devmenu/src/main/AndroidManifest.xml b/devmenu/src/main/AndroidManifest.xml
deleted file mode 100644
index fba782d..0000000
--- a/devmenu/src/main/AndroidManifest.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/devmenu/src/main/java/com/megboyzz/devmenu/App.kt b/devmenu/src/main/java/com/megboyzz/devmenu/App.kt
deleted file mode 100644
index fe0d66a..0000000
--- a/devmenu/src/main/java/com/megboyzz/devmenu/App.kt
+++ /dev/null
@@ -1,35 +0,0 @@
-package com.megboyzz.devmenu
-
-import android.app.Application
-import com.megboyzz.devmenu.di.components.DaggerFilesUseCaseComponent
-import com.megboyzz.devmenu.di.components.DaggerHideFilesUseCaseComponent
-import com.megboyzz.devmenu.di.components.DaggerReplacementUseCaseComponent
-import com.megboyzz.devmenu.di.components.DaggerSettingsUseCaseComponent
-import com.megboyzz.devmenu.di.components.DaggerTrackingHandlerUseCaseComponent
-import com.megboyzz.devmenu.di.components.FilesUseCaseComponent
-import com.megboyzz.devmenu.di.components.HideFilesUseCaseComponent
-import com.megboyzz.devmenu.di.components.ReplacementUseCaseComponent
-import com.megboyzz.devmenu.di.components.SettingsUseCaseComponent
-import com.megboyzz.devmenu.di.components.TrackingHandlerUseCaseComponent
-import kotlinx.coroutines.coroutineScope
-import kotlin.concurrent.thread
-
-class App: Application() {
-
- lateinit var filesUseCaseComponent: FilesUseCaseComponent
- lateinit var hideFilesUseCaseComponent: HideFilesUseCaseComponent
- lateinit var replacementUseCaseComponent: ReplacementUseCaseComponent
- lateinit var settingsUseCaseComponent: SettingsUseCaseComponent
- lateinit var trackingHandlerUseCaseComponent: TrackingHandlerUseCaseComponent
- override fun onCreate() {
- super.onCreate()
-
- filesUseCaseComponent = DaggerFilesUseCaseComponent.builder().context(this).build()
- hideFilesUseCaseComponent = DaggerHideFilesUseCaseComponent.builder().context(this).build()
- replacementUseCaseComponent = DaggerReplacementUseCaseComponent.builder().context(this).build()
- settingsUseCaseComponent = DaggerSettingsUseCaseComponent.builder().context(this).build()
- trackingHandlerUseCaseComponent = DaggerTrackingHandlerUseCaseComponent.builder().context(this).build()
-
- }
-
-}
\ No newline at end of file
diff --git a/devmenu/src/main/java/com/megboyzz/devmenu/MainActivity.kt b/devmenu/src/main/java/com/megboyzz/devmenu/MainActivity.kt
deleted file mode 100644
index f862884..0000000
--- a/devmenu/src/main/java/com/megboyzz/devmenu/MainActivity.kt
+++ /dev/null
@@ -1,46 +0,0 @@
-package com.megboyzz.devmenu
-
-import android.content.Intent
-import android.os.Bundle
-import androidx.activity.ComponentActivity
-import androidx.activity.compose.setContent
-import androidx.compose.foundation.shape.RoundedCornerShape
-import androidx.compose.ui.unit.dp
-import cafe.adriel.voyager.navigator.Navigator
-import cafe.adriel.voyager.navigator.bottomSheet.BottomSheetNavigator
-import com.megboyzz.devmenu.ui.components.MainScaffold
-import com.megboyzz.devmenu.ui.screens.HomeScreen
-
-class MainActivity : ComponentActivity() {
-
- private fun runGame(){
-
- val gameActivityClass = classLoader.loadClass("com.ea.ironmonkey.GameActivity")
- val intent = Intent(this, gameActivityClass)
-
- startActivity(intent)
- finish()
-
- }
-
- override fun onCreate(savedInstanceState: Bundle?) {
- super.onCreate(savedInstanceState)
-
- val isDevMenuEnabled = (application as App)
- .trackingHandlerUseCaseComponent
- .isDevMenuEnabledUseCase()
-
- if(!isDevMenuEnabled){
- runGame()
- return
- }
-
- setContent {
- BottomSheetNavigator(
- sheetShape = RoundedCornerShape(topStart = 10.dp, topEnd = 10.dp)
- ) {
- Navigator(HomeScreen(::runGame))
- }
- }
- }
-}
diff --git a/devmenu/src/main/java/com/megboyzz/devmenu/db/AppDatabase.kt b/devmenu/src/main/java/com/megboyzz/devmenu/db/AppDatabase.kt
deleted file mode 100644
index 52c2b6d..0000000
--- a/devmenu/src/main/java/com/megboyzz/devmenu/db/AppDatabase.kt
+++ /dev/null
@@ -1,11 +0,0 @@
-package com.megboyzz.devmenu.db
-
-import androidx.room.Database
-import androidx.room.RoomDatabase
-import com.megboyzz.devmenu.db.dao.ReplacementDao
-import com.megboyzz.devmenu.db.entites.Replacement
-
-@Database(entities = [Replacement::class], version = 1, exportSchema = false)
-abstract class AppDatabase: RoomDatabase() {
- abstract val replacementDao: ReplacementDao
-}
\ No newline at end of file
diff --git a/devmenu/src/main/java/com/megboyzz/devmenu/db/dao/ReplacementDao.kt b/devmenu/src/main/java/com/megboyzz/devmenu/db/dao/ReplacementDao.kt
deleted file mode 100644
index 5cfeaa1..0000000
--- a/devmenu/src/main/java/com/megboyzz/devmenu/db/dao/ReplacementDao.kt
+++ /dev/null
@@ -1,24 +0,0 @@
-package com.megboyzz.devmenu.db.dao
-
-import androidx.room.Dao
-import androidx.room.Delete
-import androidx.room.Insert
-import androidx.room.Query
-import com.megboyzz.devmenu.db.entites.Replacement
-
-@Dao
-interface ReplacementDao {
-
- @get:Query("SELECT * from replacement")
- val all: List
-
- @Insert
- fun addReplacement(replacement: Replacement)
-
- @Query("SELECT * FROM replacement WHERE original_file_name=:originalFileName")
- fun getReplacementByOriginalName(originalFileName: String): Replacement
-
- @Delete
- fun removeReplacement(replacement: Replacement)
-
-}
\ No newline at end of file
diff --git a/devmenu/src/main/java/com/megboyzz/devmenu/db/entites/Replacement.kt b/devmenu/src/main/java/com/megboyzz/devmenu/db/entites/Replacement.kt
deleted file mode 100644
index fb7431c..0000000
--- a/devmenu/src/main/java/com/megboyzz/devmenu/db/entites/Replacement.kt
+++ /dev/null
@@ -1,18 +0,0 @@
-package com.megboyzz.devmenu.db.entites
-
-import androidx.room.ColumnInfo
-import androidx.room.Entity
-import androidx.room.PrimaryKey
-
-@Entity
-data class Replacement(
-
- @PrimaryKey(autoGenerate = true)
- val id: Int = 0,
-
- @ColumnInfo(name = "original_file_name")
- val originalFileName: String,
-
- @ColumnInfo(name = "replacement_file_name")
- val replacementFileName: String
-)
diff --git a/devmenu/src/main/java/com/megboyzz/devmenu/di/components/FilesUseCaseComponent.kt b/devmenu/src/main/java/com/megboyzz/devmenu/di/components/FilesUseCaseComponent.kt
deleted file mode 100644
index ad3f53d..0000000
--- a/devmenu/src/main/java/com/megboyzz/devmenu/di/components/FilesUseCaseComponent.kt
+++ /dev/null
@@ -1,42 +0,0 @@
-package com.megboyzz.devmenu.di.components
-
-import android.content.Context
-import com.megboyzz.devmenu.di.modules.DatabaseModule
-import com.megboyzz.devmenu.di.modules.RepositoryModule
-import com.megboyzz.devmenu.domain.usecases.files.GetExternalFilesUseCase
-import com.megboyzz.devmenu.domain.usecases.files.GetFilePropsUseCase
-import com.megboyzz.devmenu.domain.usecases.files.GetInternalFilesUseCase
-import com.megboyzz.devmenu.domain.usecases.files.RemoveFileUseCase
-import com.megboyzz.devmenu.domain.usecases.files.RenameFileUseCase
-import dagger.BindsInstance
-import dagger.Component
-import javax.inject.Singleton
-
-@Component(
- modules = [
- DatabaseModule::class,
- RepositoryModule::class
- ]
-)
-@Singleton
-interface FilesUseCaseComponent {
-
- val getExternalFilesUseCase: GetExternalFilesUseCase
-
- val getInternalFilesUseCase: GetInternalFilesUseCase
-
- val getFilePropsUseCase: GetFilePropsUseCase
-
- val removeFileUseCase: RemoveFileUseCase
-
- val renameFileUseCase: RenameFileUseCase
-
- @Component.Builder
- interface Builder{
-
- @BindsInstance
- fun context(context: Context): Builder
- fun build(): FilesUseCaseComponent
- }
-
-}
\ No newline at end of file
diff --git a/devmenu/src/main/java/com/megboyzz/devmenu/di/components/HideFilesUseCaseComponent.kt b/devmenu/src/main/java/com/megboyzz/devmenu/di/components/HideFilesUseCaseComponent.kt
deleted file mode 100644
index b5d0e94..0000000
--- a/devmenu/src/main/java/com/megboyzz/devmenu/di/components/HideFilesUseCaseComponent.kt
+++ /dev/null
@@ -1,40 +0,0 @@
-package com.megboyzz.devmenu.di.components
-
-import android.content.Context
-import com.megboyzz.devmenu.di.modules.DatabaseModule
-import com.megboyzz.devmenu.di.modules.RepositoryModule
-import com.megboyzz.devmenu.domain.usecases.hidefiles.GetAllHidedFilesUseCase
-import com.megboyzz.devmenu.domain.usecases.hidefiles.HideFileUseCase
-import com.megboyzz.devmenu.domain.usecases.hidefiles.UnHideAllUseCase
-import com.megboyzz.devmenu.domain.usecases.hidefiles.UnHideFileUseCase
-import dagger.BindsInstance
-import dagger.Component
-import javax.inject.Singleton
-
-@Component(
- modules = [
- DatabaseModule::class,
- RepositoryModule::class
- ]
-)
-@Singleton
-interface HideFilesUseCaseComponent {
-
- val getAllHidedFilesUseCase: GetAllHidedFilesUseCase
-
- val hideFileUseCase: HideFileUseCase
-
- val unHideFileUseCase: UnHideFileUseCase
-
- val unHideAllUseCase: UnHideAllUseCase
-
- @Component.Builder
- interface Builder{
-
- @BindsInstance
- fun context(context: Context): Builder
-
- fun build(): HideFilesUseCaseComponent
- }
-
-}
\ No newline at end of file
diff --git a/devmenu/src/main/java/com/megboyzz/devmenu/di/components/ReplacementUseCaseComponent.kt b/devmenu/src/main/java/com/megboyzz/devmenu/di/components/ReplacementUseCaseComponent.kt
deleted file mode 100644
index 9fd662d..0000000
--- a/devmenu/src/main/java/com/megboyzz/devmenu/di/components/ReplacementUseCaseComponent.kt
+++ /dev/null
@@ -1,39 +0,0 @@
-package com.megboyzz.devmenu.di.components
-
-import android.content.Context
-import com.megboyzz.devmenu.di.modules.DatabaseModule
-import com.megboyzz.devmenu.di.modules.RepositoryModule
-import com.megboyzz.devmenu.domain.usecases.replacement.GetAllReplacedFilesUseCase
-import com.megboyzz.devmenu.domain.usecases.replacement.RecoverAllReplacementsUseCase
-import com.megboyzz.devmenu.domain.usecases.replacement.RecoverReplacementUseCase
-import com.megboyzz.devmenu.domain.usecases.replacement.ReplaceFileUseCase
-import dagger.BindsInstance
-import dagger.Component
-import javax.inject.Singleton
-
-@Component(
- modules = [
- DatabaseModule::class,
- RepositoryModule::class
- ]
-)
-@Singleton
-interface ReplacementUseCaseComponent {
-
- val getAllReplacedFilesUseCase: GetAllReplacedFilesUseCase
-
- val recoverAllReplacedFilesUseCase: RecoverAllReplacementsUseCase
-
- val recoverReplacementUseCase: RecoverReplacementUseCase
-
- val replaceFileUseCase: ReplaceFileUseCase
-
- @Component.Builder
- interface Builder{
-
- @BindsInstance
- fun context(context: Context): Builder
- fun build(): ReplacementUseCaseComponent
- }
-
-}
\ No newline at end of file
diff --git a/devmenu/src/main/java/com/megboyzz/devmenu/di/components/SettingsUseCaseComponent.kt b/devmenu/src/main/java/com/megboyzz/devmenu/di/components/SettingsUseCaseComponent.kt
deleted file mode 100644
index fb090ed..0000000
--- a/devmenu/src/main/java/com/megboyzz/devmenu/di/components/SettingsUseCaseComponent.kt
+++ /dev/null
@@ -1,39 +0,0 @@
-package com.megboyzz.devmenu.di.components
-
-import android.content.Context
-import com.megboyzz.devmenu.di.modules.DatabaseModule
-import com.megboyzz.devmenu.di.modules.RepositoryModule
-import com.megboyzz.devmenu.domain.usecases.settings.RemoveGameDataUseCase
-import com.megboyzz.devmenu.domain.usecases.settings.SetGameLangUseCase
-import com.megboyzz.devmenu.domain.usecases.settings.SetTrackingSaveFileUseCase
-import com.megboyzz.devmenu.domain.usecases.settings.TurnOffDevMenuUseCase
-import dagger.BindsInstance
-import dagger.Component
-import javax.inject.Singleton
-
-@Component(
- modules = [
- DatabaseModule::class,
- RepositoryModule::class
- ]
-)
-@Singleton
-interface SettingsUseCaseComponent {
-
- val removeGameDataUseCase: RemoveGameDataUseCase
-
- val setGameLangUseCase: SetGameLangUseCase
-
- val setTrackingSaveFileUseCase: SetTrackingSaveFileUseCase
-
- val turnOffDevMenuUseCase: TurnOffDevMenuUseCase
-
- @Component.Builder
- interface Builder{
-
- @BindsInstance
- fun context(context: Context): Builder
- fun build(): SettingsUseCaseComponent
- }
-
-}
\ No newline at end of file
diff --git a/devmenu/src/main/java/com/megboyzz/devmenu/di/components/TrackingHandlerUseCaseComponent.kt b/devmenu/src/main/java/com/megboyzz/devmenu/di/components/TrackingHandlerUseCaseComponent.kt
deleted file mode 100644
index e3fad99..0000000
--- a/devmenu/src/main/java/com/megboyzz/devmenu/di/components/TrackingHandlerUseCaseComponent.kt
+++ /dev/null
@@ -1,36 +0,0 @@
-package com.megboyzz.devmenu.di.components
-
-import android.content.Context
-import com.megboyzz.devmenu.di.modules.DatabaseModule
-import com.megboyzz.devmenu.di.modules.RepositoryModule
-import com.megboyzz.devmenu.domain.usecases.IsDevMenuEnabledUseCase
-import com.megboyzz.devmenu.domain.usecases.StartTrackingUseCase
-import com.megboyzz.devmenu.domain.usecases.StopTrackingUseCase
-import dagger.BindsInstance
-import dagger.Component
-import javax.inject.Singleton
-
-@Component(
- modules = [
- DatabaseModule::class,
- RepositoryModule::class
- ]
-)
-@Singleton
-interface TrackingHandlerUseCaseComponent {
-
- val isDevMenuEnabledUseCase: IsDevMenuEnabledUseCase
-
- val startTrackingUseCase: StartTrackingUseCase
-
- val stopTrackingUseCase: StopTrackingUseCase
-
- @Component.Builder
- interface Builder{
-
- @BindsInstance
- fun context(context: Context): Builder
- fun build(): TrackingHandlerUseCaseComponent
- }
-
-}
\ No newline at end of file
diff --git a/devmenu/src/main/java/com/megboyzz/devmenu/di/modules/DatabaseModule.kt b/devmenu/src/main/java/com/megboyzz/devmenu/di/modules/DatabaseModule.kt
deleted file mode 100644
index ffe966a..0000000
--- a/devmenu/src/main/java/com/megboyzz/devmenu/di/modules/DatabaseModule.kt
+++ /dev/null
@@ -1,25 +0,0 @@
-package com.megboyzz.devmenu.di.modules
-
-import android.content.Context
-import androidx.room.Room
-import androidx.room.RoomDatabase
-import com.megboyzz.devmenu.db.AppDatabase
-import dagger.Module
-import dagger.Provides
-
-@Module
-class DatabaseModule {
-
- @Provides
- fun providesDataBase(context: Context): AppDatabase =
- Room.databaseBuilder(
- context,
- AppDatabase::class.java,
- "replacement-db"
- ).build()
-
-
- @Provides
- fun providesReplacementDao(appDatabase: AppDatabase) = appDatabase.replacementDao
-
-}
\ No newline at end of file
diff --git a/devmenu/src/main/java/com/megboyzz/devmenu/di/modules/RepositoryModule.kt b/devmenu/src/main/java/com/megboyzz/devmenu/di/modules/RepositoryModule.kt
deleted file mode 100644
index 9ae1dc1..0000000
--- a/devmenu/src/main/java/com/megboyzz/devmenu/di/modules/RepositoryModule.kt
+++ /dev/null
@@ -1,51 +0,0 @@
-package com.megboyzz.devmenu.di.modules
-
-import android.content.Context
-import com.megboyzz.devmenu.db.dao.ReplacementDao
-import com.megboyzz.devmenu.domain.repository.FilesRepository
-import com.megboyzz.devmenu.domain.repository.ReplacementRepository
-import com.megboyzz.devmenu.domain.repository.SaveRepository
-import com.megboyzz.devmenu.domain.repository.SettingsRepository
-import com.megboyzz.devmenu.domain.repository.TrackingRepository
-import com.megboyzz.devmenu.repositories.FilesRepositoryImpl
-import com.megboyzz.devmenu.repositories.ReplacementRepositoryImpl
-import com.megboyzz.devmenu.repositories.SaveRepositoryImpl
-import com.megboyzz.devmenu.repositories.SettingsRepositoryImpl
-import com.megboyzz.devmenu.repositories.TrackingRepositoryImpl
-import dagger.Module
-import dagger.Provides
-
-@Module
-class RepositoryModule {
-
- @Provides
- fun providesFilesRepository(context: Context): FilesRepository =
- FilesRepositoryImpl(context)
-
- @Provides
- fun providesReplacementRepository(
- replacementDao: ReplacementDao,
- filesRepository: FilesRepository
- ): ReplacementRepository =
- ReplacementRepositoryImpl(replacementDao, filesRepository)
-
- @Provides
- fun providesSaveRepositoryImpl(
- filesRepository: FilesRepository
- ): SaveRepository =
- SaveRepositoryImpl(filesRepository)
-
- @Provides
- fun providesSettingsRepository(
- filesRepository: FilesRepository
- ): SettingsRepository =
- SettingsRepositoryImpl(filesRepository)
-
- @Provides
- fun providesTrackingRepository(
- context: Context,
- filesRepository: FilesRepository
- ): TrackingRepository =
- TrackingRepositoryImpl(context, filesRepository)
-
-}
\ No newline at end of file
diff --git a/devmenu/src/main/java/com/megboyzz/devmenu/repositories/FilesRepositoryImpl.kt b/devmenu/src/main/java/com/megboyzz/devmenu/repositories/FilesRepositoryImpl.kt
deleted file mode 100644
index e54738b..0000000
--- a/devmenu/src/main/java/com/megboyzz/devmenu/repositories/FilesRepositoryImpl.kt
+++ /dev/null
@@ -1,32 +0,0 @@
-package com.megboyzz.devmenu.repositories
-
-import android.content.Context
-import com.megboyzz.devmenu.domain.entities.FileProps
-import com.megboyzz.devmenu.domain.repository.FilesRepository
-import java.io.File
-import java.util.Date
-
-class FilesRepositoryImpl(
- private val context: Context
-): FilesRepository {
-
- override val internalRoot = File(context.applicationInfo.dataDir)
- override val externalRoot = context.getExternalFilesDir(null)!!
-
- override fun getFileProps(file: File) = FileProps(
- fileName = file.name,
- size = file.length(),
- lastModify = Date(file.lastModified())
- )
-
- override suspend fun hideFile(file: File): Boolean {
- TODO("Not yet implemented")
- }
-
- override suspend fun unHideFile(file: File): Boolean {
- TODO("Not yet implemented")
- }
-
- override val allHidedFiles: List
- get() = TODO("Not yet implemented")
-}
\ No newline at end of file
diff --git a/devmenu/src/main/java/com/megboyzz/devmenu/repositories/ReplacementRepositoryImpl.kt b/devmenu/src/main/java/com/megboyzz/devmenu/repositories/ReplacementRepositoryImpl.kt
deleted file mode 100644
index d47cceb..0000000
--- a/devmenu/src/main/java/com/megboyzz/devmenu/repositories/ReplacementRepositoryImpl.kt
+++ /dev/null
@@ -1,73 +0,0 @@
-package com.megboyzz.devmenu.repositories
-
-import com.megboyzz.devmenu.db.dao.ReplacementDao
-import com.megboyzz.devmenu.db.entites.Replacement
-import com.megboyzz.devmenu.domain.repository.FilesRepository
-import com.megboyzz.devmenu.domain.repository.ReplacementRepository
-import java.io.File
-import java.lang.Exception
-import javax.inject.Inject
-import kotlin.random.Random
-
-class ReplacementRepositoryImpl @Inject constructor(
- private val replacementDao: ReplacementDao,
- private val filesRepository: FilesRepository
-): ReplacementRepository {
-
- private val folderToSaveReplacements = File("${filesRepository.internalRoot}/replacements")
-
- private fun generateRandomPostfix(): String {
- val length = 10
- return (1..length)
- .map { _ -> Random.nextInt(0, 36) }
- .joinToString("") { charIndex -> charIndex.toString(radix = 36) }
- }
- override suspend fun replaceFile(what: File, to: File): Result {
-
- return kotlin.runCatching {
- val replacementFile =
- File(folderToSaveReplacements, "replacement-${generateRandomPostfix()}")
- replacementFile.createNewFile()
-
- to.copyTo(replacementFile, overwrite = true)
- what.copyTo(to, overwrite = true)
-
- val replacement = Replacement(
- originalFileName = what.absolutePath,
- replacementFileName = replacementFile.absolutePath
- )
- replacementDao.addReplacement(replacement)
-
- return Result.success(true)
- }.onFailure {
- return Result.failure(it)
- }
-
- }
-
- override suspend fun recoverReplacement(replacement: File): Result {
- return kotlin.runCatching {
- val rep = replacementDao.getReplacementByOriginalName(replacement.absolutePath)
-
- val repFile = File(rep.replacementFileName)
-
- repFile.copyTo(File(rep.originalFileName), overwrite = true)
-
- repFile.delete()
-
- replacementDao.removeReplacement(rep)
-
- return Result.success(true)
- }.onFailure {
- return Result.failure(it)
- }
- }
-
- override suspend fun getAllReplacements(): List {
- return replacementDao.all.map {
- File(it.originalFileName)
- }
- }
-
-
-}
\ No newline at end of file
diff --git a/devmenu/src/main/java/com/megboyzz/devmenu/repositories/SaveRepositoryImpl.kt b/devmenu/src/main/java/com/megboyzz/devmenu/repositories/SaveRepositoryImpl.kt
deleted file mode 100644
index 2aac431..0000000
--- a/devmenu/src/main/java/com/megboyzz/devmenu/repositories/SaveRepositoryImpl.kt
+++ /dev/null
@@ -1,27 +0,0 @@
-package com.megboyzz.devmenu.repositories
-
-import com.megboyzz.devmenu.domain.repository.FilesRepository
-import com.megboyzz.devmenu.domain.repository.SaveRepository
-import java.io.File
-
-class SaveRepositoryImpl(
- private val filesRepository: FilesRepository
-): SaveRepository {
-
- private val saveFile = File(filesRepository.internalRoot, "/files/var/nfstr_save.sb")
-
- override suspend fun loadSaveFile(file: File): Boolean {
-
- file.copyTo(saveFile, overwrite = true)
-
- return true
- }
-
- override suspend fun uploadCurrentSaveFile(fileToUpload: File): Boolean {
-
- saveFile.copyTo(fileToUpload, overwrite = true)
-
- return true
- }
-
-}
\ No newline at end of file
diff --git a/devmenu/src/main/java/com/megboyzz/devmenu/repositories/SettingsRepositoryImpl.kt b/devmenu/src/main/java/com/megboyzz/devmenu/repositories/SettingsRepositoryImpl.kt
deleted file mode 100644
index b9ef077..0000000
--- a/devmenu/src/main/java/com/megboyzz/devmenu/repositories/SettingsRepositoryImpl.kt
+++ /dev/null
@@ -1,47 +0,0 @@
-package com.megboyzz.devmenu.repositories
-
-import android.content.res.Resources
-import com.megboyzz.devmenu.domain.entities.GameLang
-import com.megboyzz.devmenu.domain.repository.FilesRepository
-import com.megboyzz.devmenu.domain.repository.SettingsRepository
-import java.io.File
-import java.nio.charset.Charset
-import javax.inject.Inject
-
-class SettingsRepositoryImpl @Inject constructor(
- private val filesRepository: FilesRepository
-): SettingsRepository {
-
- private val localeFile = File(filesRepository.internalRoot, "files/var/locale")
-
- private fun getSystemLangAsGameLang(): GameLang {
-
- val configuration = Resources.getSystem().configuration
- return GameLang.values().find { it.name == configuration.locale.language } ?: GameLang.Russian
-
- }
-
-
- override var gameLang: GameLang
- get() {
-
- val systemLang = getSystemLangAsGameLang()
-
- if(!localeFile.exists()){
- localeFile.createNewFile()
- localeFile.writeBytes(byteArrayOf(0x02, 0x0) + systemLang.name.toByteArray())
- return systemLang
- }
-
- val curLocale = String(localeFile.readBytes().takeLast(2).toByteArray())
- return GameLang.values().find { it.name == curLocale } ?: systemLang
- }
- set(value) {
-
- if(!localeFile.exists()) localeFile.createNewFile()
-
- localeFile.writeBytes(byteArrayOf(0x02, 0x0) + value.name.toByteArray())
-
- }
-
-}
\ No newline at end of file
diff --git a/devmenu/src/main/java/com/megboyzz/devmenu/repositories/TrackingRepositoryImpl.kt b/devmenu/src/main/java/com/megboyzz/devmenu/repositories/TrackingRepositoryImpl.kt
deleted file mode 100644
index 7359006..0000000
--- a/devmenu/src/main/java/com/megboyzz/devmenu/repositories/TrackingRepositoryImpl.kt
+++ /dev/null
@@ -1,55 +0,0 @@
-package com.megboyzz.devmenu.repositories
-
-import android.content.Context
-import com.megboyzz.devmenu.domain.entities.TrackingData
-import com.megboyzz.devmenu.domain.repository.FilesRepository
-import com.megboyzz.devmenu.domain.repository.TrackingRepository
-import com.megboyzz.devmenu.util.SaveFileObserver
-import javax.inject.Inject
-
-class TrackingRepositoryImpl @Inject constructor(
- private val context: Context,
- private val filesRepository: FilesRepository
-) : TrackingRepository {
-
- private val TAG = this::class.simpleName
-
- private val trackingStateKey = "tracking_enabled"
- private val trackingSavePath = "tracking_save_path"
- private val defaultPathToSave = "${filesRepository.externalRoot}/files/saveTracking"
-
- private val saveFile = "${filesRepository.internalRoot}/files/var/nfstr_save.sb"
-
- private val sharedPreferences = context.getSharedPreferences("tracking", Context.MODE_PRIVATE)
-
- private val editor = sharedPreferences.edit()
-
- private lateinit var saveFileObserver: SaveFileObserver
-
- override var trackingData: TrackingData
- get() {
- val enabled = sharedPreferences.getBoolean(trackingStateKey, false)
- val path = sharedPreferences.getString(trackingStateKey, defaultPathToSave)?: defaultPathToSave
-
- return TrackingData(
- enabled = enabled,
- pathToSave = path
- )
- }
- set(value) {
- with(editor) {
- putBoolean(trackingStateKey, value.enabled)
- putString(trackingSavePath, value.pathToSave)
- apply()
- }
- }
-
- override fun startTracking() {
- saveFileObserver = SaveFileObserver(saveFile, trackingData.pathToSave)
- saveFileObserver.startWatching()
- }
-
- override fun stopTracking() {
- saveFileObserver.stopWatching()
- }
-}
\ No newline at end of file
diff --git a/devmenu/src/main/java/com/megboyzz/devmenu/ui/Utlil.kt b/devmenu/src/main/java/com/megboyzz/devmenu/ui/Utlil.kt
deleted file mode 100644
index 34d25d6..0000000
--- a/devmenu/src/main/java/com/megboyzz/devmenu/ui/Utlil.kt
+++ /dev/null
@@ -1,66 +0,0 @@
-package com.megboyzz.devmenu.ui
-
-import android.annotation.SuppressLint
-import androidx.compose.foundation.layout.Spacer
-import androidx.compose.foundation.layout.height
-import androidx.compose.foundation.layout.width
-import androidx.compose.runtime.Composable
-import androidx.compose.ui.Modifier
-import androidx.compose.ui.res.painterResource
-import androidx.compose.ui.res.stringResource
-import androidx.compose.ui.unit.Dp
-import java.text.CharacterIterator
-import java.text.SimpleDateFormat
-import java.text.StringCharacterIterator
-import java.util.Date
-
-
-@Composable
-fun Int.asPainter() = painterResource(this)
-
-
-
-@Composable
-fun Int.asString() = stringResource(this)
-
-@Composable
-fun SpacerWidth(width: Dp) = Spacer(Modifier.width(width))
-
-@Composable
-fun SpacerHeight(height: Dp) = Spacer(Modifier.height(height))
-
-fun humanReadableByteCountSI(bytes: Long): String {
- var b = bytes
- if (-1000 < b && b < 1000) {
- return "$b B"
- }
- val ci: CharacterIterator = StringCharacterIterator("kMGTPE")
- while (b <= -999950 || b >= 999950) {
- b /= 1000
- ci.next()
- }
- return String.format("%.1f %cB", b / 1000.0, ci.current())
-}
-
-@SuppressLint("SimpleDateFormat")
-fun formatDate(date: Date) = SimpleDateFormat("dd.MM.yyyy HH:mm:ss").format(date)
-
-
-/**
- * Возвращает лямбду того типа которая требуется в Composable контексте
- * например есть функция
- *
- * fun example(
- * a: @Composable () -> SomeType
- * )
- *
- * Чтобы предать туда параметр нужно обернуть это в скобки
- *
- * example(a = { SomeType() })
- *
- * а можно не создавать еще один уровень вложения и использовать asComposableLambda
- *
- * example(a = SomeType().asComposableLambda)
- */
-val T.asComposableLambda: @Composable () -> T
- get() = { this }
\ No newline at end of file
diff --git a/devmenu/src/main/java/com/megboyzz/devmenu/ui/components/AnimationSpec.kt b/devmenu/src/main/java/com/megboyzz/devmenu/ui/components/AnimationSpec.kt
deleted file mode 100644
index e20e5bf..0000000
--- a/devmenu/src/main/java/com/megboyzz/devmenu/ui/components/AnimationSpec.kt
+++ /dev/null
@@ -1,28 +0,0 @@
-package com.megboyzz.devmenu.ui.components
-
-import androidx.compose.animation.core.tween
-import androidx.compose.animation.expandIn
-
-import androidx.compose.animation.shrinkOut
-import androidx.compose.animation.slideInVertically
-import androidx.compose.animation.slideOutVertically
-
-import androidx.compose.ui.Alignment
-
-val enter = expandIn(
- expandFrom = Alignment.CenterStart,
- animationSpec = tween(250)
-)
-
-val exit = shrinkOut(
- shrinkTowards = Alignment.CenterStart,
- animationSpec = tween(250)
-)
-
-fun searchFieldEnter(duration: Int) = slideInVertically(animationSpec = tween(durationMillis = duration)) {
- -it / 3
-}
-
-fun searchFieldExit(duration: Int) = slideOutVertically(animationSpec = tween(durationMillis = duration)) {
- -it / 3
-}
\ No newline at end of file
diff --git a/devmenu/src/main/java/com/megboyzz/devmenu/ui/components/ContextMenuState.kt b/devmenu/src/main/java/com/megboyzz/devmenu/ui/components/ContextMenuState.kt
deleted file mode 100644
index 417e758..0000000
--- a/devmenu/src/main/java/com/megboyzz/devmenu/ui/components/ContextMenuState.kt
+++ /dev/null
@@ -1,290 +0,0 @@
-package com.megboyzz.devmenu.ui.components
-
-import androidx.compose.animation.AnimatedVisibility
-import androidx.compose.foundation.Image
-import androidx.compose.foundation.background
-import androidx.compose.foundation.layout.Arrangement
-import androidx.compose.foundation.layout.Box
-import androidx.compose.foundation.layout.Column
-import androidx.compose.foundation.layout.ColumnScope
-import androidx.compose.foundation.layout.Row
-import androidx.compose.foundation.layout.fillMaxWidth
-import androidx.compose.foundation.layout.padding
-import androidx.compose.foundation.layout.size
-import androidx.compose.foundation.layout.wrapContentHeight
-import androidx.compose.foundation.shape.RoundedCornerShape
-import androidx.compose.material3.Button
-import androidx.compose.material3.Divider
-import androidx.compose.material3.Text
-import androidx.compose.runtime.Composable
-import androidx.compose.runtime.getValue
-import androidx.compose.runtime.mutableStateOf
-import androidx.compose.runtime.remember
-import androidx.compose.runtime.setValue
-import androidx.compose.ui.Alignment
-import androidx.compose.ui.Modifier
-import androidx.compose.ui.draw.clip
-import androidx.compose.ui.draw.shadow
-import androidx.compose.ui.graphics.Color
-import androidx.compose.ui.graphics.painter.Painter
-import androidx.compose.ui.unit.dp
-import com.megboyzz.devmenu.R
-import com.megboyzz.devmenu.ui.SpacerHeight
-import com.megboyzz.devmenu.ui.asPainter
-import com.megboyzz.devmenu.ui.models.FsElementModel
-import com.megboyzz.devmenu.ui.formatDate
-import com.megboyzz.devmenu.ui.humanReadableByteCountSI
-
-@Composable
-fun ClickableMenuPosition(
- name: String,
- icon: Painter,
- onClick: () -> Unit = {},
- withEnd: Boolean = true
-) {
-
- Row(
- verticalAlignment = Alignment.CenterVertically,
- horizontalArrangement = Arrangement.SpaceBetween,
- modifier = Modifier
- .clickableWithRipple(onClick = onClick, enabled = withEnd)
- .padding(4.dp)
- .fillMaxWidth()
- ) {
- CoreMenuPosition(name = name, icon = icon)
- if (withEnd) Image(painter = R.drawable.enter.asPainter(), contentDescription = null)
- }
-
-}
-
-@Composable
-fun CoreMenuPosition(
- name: String,
- icon: Painter
-) {
- Row(
- verticalAlignment = Alignment.CenterVertically,
- horizontalArrangement = Arrangement.spacedBy(20.dp),
- ) {
- Image(
- painter = icon,
- contentDescription = null,
- Modifier.size(24.dp)
- )
- Text(text = name)
- }
-}
-
-@Composable
-fun FsElementInContextMenu(
- name: String,
- type: ElementType,
-) {
-
- Row(
- verticalAlignment = Alignment.CenterVertically,
- horizontalArrangement = Arrangement.spacedBy(20.dp)
- ) {
-
- val modifier = Modifier
- .size(36.dp)
- .clip(RoundedCornerShape(10.dp))
- .shadow(elevation = 6.dp)
-
- FsElementIcon(type, modifier)
- Text(
- text = name
- )
- }
-}
-
-enum class ContextMenuState {
- Main,
- Delete,
- Props
-}
-
-@Composable
-fun FileContextMenu(
- fsElementEntity: FsElementModel,
- onRemoveElement: () -> Unit,
- onUpdateType: (ElementType) -> ElementType?
-) {
-
- var innerType by remember { mutableStateOf(fsElementEntity.type) }
- var state by remember { mutableStateOf(ContextMenuState.Main) }
-
-
- CoreFileContextMenu(fsElementEntity = fsElementEntity) {
- AnimatedBoxForContextMenuContent(isVisible = state == ContextMenuState.Main){
- AnimatedBoxForContextMenuContent(isVisible = innerType == ElementType.isFile) {
- ClickableMenuPosition(
- name = "Заменить",
- icon = R.drawable.star.asPainter(),
- onClick = {
- innerType = onUpdateType(ElementType.isReplaced) ?: ElementType.isReplaced
- }
- )
- ClickableMenuPosition(
- name = "Скрыть для игры",
- icon = R.drawable.hide.asPainter(),
- onClick = {
- innerType = onUpdateType(ElementType.isHidden) ?: ElementType.isHidden
- }
- )
- }
- AnimatedBoxForContextMenuContent(isVisible = innerType == ElementType.isHidden) {
- ClickableMenuPosition(
- name = "Показать игре",
- icon = R.drawable.unhide.asPainter(),
- onClick = {
- innerType = onUpdateType(ElementType.isFile) ?: ElementType.isFile
- }
- )
- }
- AnimatedBoxForContextMenuContent(isVisible = innerType == ElementType.isReplaced) {
- ClickableMenuPosition(
- name = "Воостановить",
- icon = R.drawable.star.asPainter(),
- onClick = {
- innerType = onUpdateType(ElementType.isFile) ?: ElementType.isFile
- }
- )
- }
-
- ClickableMenuPosition(
- name = "Свойства",
- icon = R.drawable.info.asPainter(),
- onClick = { state = ContextMenuState.Props }
- )
- ClickableMenuPosition(
- name = "Удалить",
- icon = R.drawable.trash.asPainter(),
- onClick = { state = ContextMenuState.Delete }
- )
- }
-
- AnimatedBoxForContextMenuContent(isVisible = state == ContextMenuState.Delete) {
- ClickableMenuPosition(
- name = "Удалить",
- icon = R.drawable.trash.asPainter(),
- withEnd = false
- )
- RemoveFileButtonsGroup(
- onDelete = onRemoveElement,
- onCancel = { state = ContextMenuState.Main }
- )
- }
-
- AnimatedBoxForContextMenuContent(isVisible = state == ContextMenuState.Props) {
- ClickableMenuPosition(
- name = "Свойства",
- icon = R.drawable.info.asPainter(),
- withEnd = false,
- )
- PropsView(fsElementEntity = fsElementEntity)
- RemoveButton(text = "Назад") {
- state = ContextMenuState.Main
- }
- }
- }
-}
-
-@Composable
-fun PropsView(
- fsElementEntity: FsElementModel
-) {
-
- Column(verticalArrangement = Arrangement.spacedBy(12.dp)) {
- Text(text = "Изменен: ${formatDate(fsElementEntity.date)}")
- Text(text = "Размер: ${humanReadableByteCountSI(fsElementEntity.size)} (${fsElementEntity.size} B)")
- }
-}
-
-
-
-@Composable
-fun AnimatedBoxForContextMenuContent(
- isVisible: Boolean,
- content: @Composable ColumnScope.() -> Unit
-) {
- AnimatedVisibility(
- visible = isVisible,
- enter = enter,
- exit = exit
- ) {
- Column(
- verticalArrangement = Arrangement.spacedBy(12.dp),
- content = content
- )
- }
-}
-
-@Composable
-fun RemoveFileButtonsGroup(
- onDelete: () -> Unit,
- onCancel: () -> Unit
-) {
- Row(
- horizontalArrangement = Arrangement.spacedBy(12.dp),
- ) {
- RemoveButton(text = "Удалить", onClick = onDelete, modifier = Modifier.weight(1f))
- RemoveButton(text = "Отмена", onClick = onCancel, modifier = Modifier.weight(1f))
- }
-}
-
-
-@Composable
-fun RemoveButton(
- text: String,
- modifier: Modifier = Modifier,
- onClick: () -> Unit
-) {
- Button(
- onClick = onClick,
- shape = RoundedCornerShape(10.dp),
- modifier = modifier
- ) {
- Text(text = text)
- }
-}
-
-@Composable
-fun CoreFileContextMenu(
- fsElementEntity: FsElementModel,
- content: @Composable () -> Unit
-) {
-
- val shape = RoundedCornerShape(topStart = 10.dp, topEnd = 10.dp)
-
- Box(
- modifier = Modifier
- .wrapContentHeight()
- .fillMaxWidth()
- //TODO отвязать от цвета
- .clip(shape)
- .background(Color.White),
- contentAlignment = Alignment.TopCenter
- ) {
- Image(
- painter = R.drawable.clip.asPainter(),
- contentDescription = null,
- modifier = Modifier.padding(top = 8.dp)
- )
- Box(
- modifier = Modifier.padding(
- horizontal = 28.dp,
- vertical = 32.dp
- ),
- ){
- Column {
- Column(verticalArrangement = Arrangement.spacedBy(16.dp)) {
- FsElementInContextMenu(name = fsElementEntity.name, type = fsElementEntity.type)
- Divider()
- SpacerHeight(height = 0.dp)
- }
- content()
- }
- }
- }
-}
diff --git a/devmenu/src/main/java/com/megboyzz/devmenu/ui/components/Files.kt b/devmenu/src/main/java/com/megboyzz/devmenu/ui/components/Files.kt
deleted file mode 100644
index 051a869..0000000
--- a/devmenu/src/main/java/com/megboyzz/devmenu/ui/components/Files.kt
+++ /dev/null
@@ -1,30 +0,0 @@
-package com.megboyzz.devmenu.ui.components
-
-import androidx.compose.foundation.layout.Arrangement
-import androidx.compose.foundation.layout.Column
-import androidx.compose.material3.Text
-import androidx.compose.runtime.Composable
-import androidx.compose.ui.Alignment
-import androidx.compose.ui.Modifier
-import androidx.compose.ui.unit.dp
-import com.megboyzz.devmenu.ui.models.FsElementModel
-
-@Composable
-fun FsElement(
- fsElementEntity: FsElementModel,
- onClick: () -> Unit,
- onLongPressClick: () -> Unit
-) {
-
- Column(
- verticalArrangement = Arrangement.spacedBy(10.dp),
- horizontalAlignment = Alignment.CenterHorizontally,
- modifier = Modifier.clickableWithRipple(
- onClick = onClick,
- onLongClick = onLongPressClick
- )
- ) {
- FsElementIcon(type = fsElementEntity.type)
- Text(text = fsElementEntity.name)
- }
-}
\ No newline at end of file
diff --git a/devmenu/src/main/java/com/megboyzz/devmenu/ui/components/FolderStatusBar.kt b/devmenu/src/main/java/com/megboyzz/devmenu/ui/components/FolderStatusBar.kt
deleted file mode 100644
index 0fd4519..0000000
--- a/devmenu/src/main/java/com/megboyzz/devmenu/ui/components/FolderStatusBar.kt
+++ /dev/null
@@ -1,55 +0,0 @@
-package com.megboyzz.devmenu.ui.components
-
-import androidx.compose.foundation.Image
-import androidx.compose.foundation.layout.Row
-import androidx.compose.foundation.layout.padding
-import androidx.compose.foundation.layout.size
-import androidx.compose.foundation.lazy.LazyRow
-import androidx.compose.foundation.lazy.items
-import androidx.compose.material3.MaterialTheme
-import androidx.compose.material3.Text
-import androidx.compose.runtime.Composable
-import androidx.compose.ui.Alignment
-import androidx.compose.ui.Modifier
-import androidx.compose.ui.tooling.preview.Preview
-import androidx.compose.ui.unit.dp
-import com.megboyzz.devmenu.R
-import com.megboyzz.devmenu.ui.asPainter
-
-@Composable
-fun CoreBar(folders: List) {
-
- LazyRow(verticalAlignment = Alignment.CenterVertically) {
- items(folders){
- Text(
- text = it,
- style = MaterialTheme.typography.labelSmall
- )
- Image(
- painter = R.drawable.enter.asPainter(),
- modifier = Modifier
- .padding(4.dp)
- .size(8.dp),
- contentDescription = null
- )
- }
- }
-
-}
-
-@Composable
-fun StatusBarInCurFolder(
- path: String
-) {
- if(path.isEmpty()) return
- val pathAsArray = path.split("/").filter { it.isNotEmpty() }
- CoreBar(folders = pathAsArray)
-}
-
-
-@Preview
-@Composable
-fun CoreBarPrev() {
- val path = "/data/data/com.ea.games.nfs13_na/files/var/".split("/").filter { it.isNotEmpty() }
- CoreBar(folders = path)
-}
\ No newline at end of file
diff --git a/devmenu/src/main/java/com/megboyzz/devmenu/ui/components/HomeScaffold.kt b/devmenu/src/main/java/com/megboyzz/devmenu/ui/components/HomeScaffold.kt
deleted file mode 100644
index 3b628d3..0000000
--- a/devmenu/src/main/java/com/megboyzz/devmenu/ui/components/HomeScaffold.kt
+++ /dev/null
@@ -1,172 +0,0 @@
-package com.megboyzz.devmenu.ui.components
-
-import androidx.compose.foundation.background
-import androidx.compose.foundation.border
-import androidx.compose.foundation.layout.Arrangement
-import androidx.compose.foundation.layout.Box
-import androidx.compose.foundation.layout.PaddingValues
-import androidx.compose.foundation.layout.Row
-import androidx.compose.foundation.layout.fillMaxWidth
-import androidx.compose.foundation.layout.padding
-import androidx.compose.foundation.shape.CircleShape
-import androidx.compose.foundation.shape.RoundedCornerShape
-import androidx.compose.foundation.text.BasicTextField
-import androidx.compose.material.icons.Icons
-import androidx.compose.material.icons.filled.PlayArrow
-import androidx.compose.material.icons.outlined.Search
-import androidx.compose.material.icons.outlined.Settings
-import androidx.compose.material3.ExperimentalMaterial3Api
-import androidx.compose.material3.FloatingActionButton
-import androidx.compose.material3.Icon
-import androidx.compose.material3.IconButton
-import androidx.compose.material3.Scaffold
-import androidx.compose.material3.Text
-import androidx.compose.material3.TopAppBar
-import androidx.compose.runtime.Composable
-import androidx.compose.runtime.getValue
-import androidx.compose.runtime.mutableStateOf
-import androidx.compose.runtime.remember
-import androidx.compose.runtime.setValue
-import androidx.compose.ui.Alignment
-import androidx.compose.ui.Modifier
-import androidx.compose.ui.graphics.Color
-import androidx.compose.ui.platform.LocalContext
-import androidx.compose.ui.tooling.preview.Preview
-import androidx.compose.ui.unit.dp
-import com.megboyzz.devmenu.ui.theme.DevMenuTheme
-
-@OptIn(ExperimentalMaterial3Api::class)
-@Composable
-fun MainScaffold(
- onSettingsClick: () -> Unit,
- searchValue: String,
- onSearchValueChanged: (String) -> Unit,
- onFloatingButtonClick: () -> Unit,
- content: @Composable (PaddingValues) -> Unit
-) {
-
- var searchValue by remember { mutableStateOf(searchValue) }
-
- Scaffold(
-
- topBar = {
- TopBar(
- searchValue = searchValue,
- onSearchValueChanged = {
- searchValue = it
- onSearchValueChanged(it)
- },
- onSettingsClick = onSettingsClick
- )
- },
-
- floatingActionButton = {
- FloatingActionButton(
- onClick = onFloatingButtonClick,
- shape = CircleShape,
- content = {Icon(imageVector = Icons.Default.PlayArrow, contentDescription = null)}
- )
- },
-
- content = content
-
- )
-}
-
-
-@OptIn(ExperimentalMaterial3Api::class)
-@Composable
-fun TopBar(
- searchValue: String,
- onSearchValueChanged: (String) -> Unit,
- onSettingsClick: () -> Unit
-) {
-
- var isSearching by remember { mutableStateOf(false) }
- val context = LocalContext.current
- TopAppBar(
- title = {
- if(isSearching){
- SearchFileTextField(
- value = searchValue,
- onValueChange = onSearchValueChanged
- )
- }else Text("NFSMW DevMenu")
- },
- actions = {
- SearchButton {
- isSearching = !isSearching
- }
- SettingsButton(onClick = onSettingsClick)
- },
- )
-}
-
-@Composable
-fun SettingsButton(
- onClick: () -> Unit
-) {
- IconButton(onClick) {
- Icon(
- imageVector = Icons.Outlined.Settings,
- contentDescription = null
- )
- }
-}
-
-@Composable
-fun SearchButton(
- onClick: () -> Unit
-) {
- IconButton(onClick) {
- Icon(
- imageVector = Icons.Outlined.Search,
- contentDescription = null
- )
- }
-}
-
-@Preview
-@Composable
-fun ScaffoldPreview() {
- DevMenuTheme {
- MainScaffold(
- onSettingsClick = { /*TODO*/ },
- onSearchValueChanged = {},
- searchValue = "",
- onFloatingButtonClick = { /*TODO*/ }
- ) {
-
- }
- }
-}
-
-@Composable
-fun SearchFileTextField(
- value: String,
- onValueChange: (String) -> Unit
-) {
- BasicTextField(
- value = value,
- onValueChange = onValueChange,
- decorationBox = { innerTextField ->
- Box(Modifier.padding(end = 12.dp)) {
- Row(
- Modifier
- .fillMaxWidth()
- .background(Color.White, RoundedCornerShape(percent = 30))
- .border(1.dp, Color.Black, RoundedCornerShape(percent = 30))
- .padding(start = 12.dp),
- horizontalArrangement = Arrangement.SpaceBetween,
- verticalAlignment = Alignment.CenterVertically
- ) {
- Box(Modifier.padding(vertical = 4.dp)) {
- innerTextField()
- }
- }
- }
- },
- )
-
-
-}
diff --git a/devmenu/src/main/java/com/megboyzz/devmenu/ui/components/Settings.kt b/devmenu/src/main/java/com/megboyzz/devmenu/ui/components/Settings.kt
deleted file mode 100644
index 82b3ce6..0000000
--- a/devmenu/src/main/java/com/megboyzz/devmenu/ui/components/Settings.kt
+++ /dev/null
@@ -1,211 +0,0 @@
-package com.megboyzz.devmenu.ui.components
-
-import android.media.audiofx.Equalizer.Settings
-import androidx.compose.foundation.layout.Arrangement
-import androidx.compose.foundation.layout.Column
-import androidx.compose.foundation.layout.ColumnScope
-import androidx.compose.foundation.layout.PaddingValues
-import androidx.compose.foundation.layout.Row
-import androidx.compose.material.icons.Icons
-import androidx.compose.material.icons.filled.ArrowBack
-import androidx.compose.material.icons.filled.Settings
-import androidx.compose.material.icons.sharp.Home
-import androidx.compose.material.icons.sharp.List
-import androidx.compose.material.icons.sharp.Notifications
-import androidx.compose.material3.AlertDialog
-import androidx.compose.material3.Divider
-import androidx.compose.material3.ExperimentalMaterial3Api
-import androidx.compose.material3.Icon
-import androidx.compose.material3.IconButton
-import androidx.compose.material3.Scaffold
-import androidx.compose.material3.Text
-import androidx.compose.material3.TextButton
-import androidx.compose.material3.TopAppBar
-import androidx.compose.runtime.Composable
-import androidx.compose.runtime.getValue
-import androidx.compose.runtime.mutableStateOf
-import androidx.compose.runtime.remember
-import androidx.compose.runtime.setValue
-import androidx.compose.ui.graphics.Color
-import androidx.compose.ui.platform.LocalContext
-import androidx.compose.ui.tooling.preview.Preview
-import androidx.compose.ui.unit.dp
-import com.alorma.compose.settings.storage.base.getValue
-import com.alorma.compose.settings.storage.base.rememberBooleanSettingState
-import com.alorma.compose.settings.storage.base.rememberIntSettingState
-import com.alorma.compose.settings.ui.SettingsCheckbox
-import com.alorma.compose.settings.ui.SettingsList
-import com.alorma.compose.settings.ui.SettingsMenuLink
-import com.alorma.compose.settings.ui.SettingsSwitch
-import com.megboyzz.devmenu.R
-import com.megboyzz.devmenu.ui.SpacerHeight
-import com.megboyzz.devmenu.ui.asPainter
-import com.megboyzz.devmenu.ui.models.GameLangModel
-
-@Composable
-fun SettingsScaffold(
- onBackClick: () -> Unit,
- content: @Composable ColumnScope.() -> Unit
-) {
- Scaffold(
- topBar = { SettingsTopBar(onBackClick = onBackClick) },
- ){
- Column {
- SpacerHeight(height = it.calculateTopPadding())
- content(this)
- }
- }
-}
-
-@OptIn(ExperimentalMaterial3Api::class)
-@Composable
-fun SettingsTopBar(
- onBackClick: () -> Unit
-) {
- TopAppBar(
- navigationIcon = {
- IconButton(onClick = onBackClick) {
- Icon(imageVector = Icons.Filled.ArrowBack, contentDescription = null)
- }
- },
- title = { Text("Настройки") }
- )
-}
-
-@Composable
-fun LangDialog(
- langModel: GameLangModel,
- onUpdateLanguage: (GameLangModel) -> Unit
-) {
-
- val items = GameLangModel.values().map { it.name }
-
- val curItem = items.indexOf(langModel.name)
-
- val lang = rememberIntSettingState(curItem)
-
- SettingsList(
- icon = { Icon(painter = R.drawable.lang.asPainter(), contentDescription = null) },
- title = { Text(text = "Сменить язык") },
- items = items,
- state = lang,
- onItemSelected = { index, _ ->
- onUpdateLanguage(GameLangModel.values()[index])
- }
- )
-}
-
-@Composable
-fun DevMenuOffDialog(
- onDevMenuOff: () -> Unit,
- onDismiss: () -> Unit,
-) {
- AlertDialog(
- title = {
- Text(text = "Выключить DevMenu")
- },
- text = {
- Text(text = "Уверен что хочешь выключить DevMenu? Чтобы его включить нужно будет создать пустой файл c именем DevMenu в корне кэша игры")
- },
- onDismissRequest = onDismiss,
- confirmButton = {
- TextButton(
- onClick = onDevMenuOff
- ) {
- Text("OK")
- }
- },
- dismissButton = {
- TextButton(
- onClick = onDismiss
- ) {
- Text("Отмена")
- }
- }
- )
-}
-
-
-@Composable
-fun SettingsScreenContent(
- onBackClick: () -> Unit,
- langModel: GameLangModel,
- onUpdateLanguage: (GameLangModel) -> Unit,
- isTrackingSaveFile: Boolean,
- onUpdateTrackingSaveFileState: (Boolean) -> Unit,
- onChooseTrackingPathToSave: () -> Unit,
- onUploadSaveFile: () -> Unit,
- onDownloadSaveFile: () -> Unit,
- onDevMenuOff: () -> Unit
-) {
-
- var isDevMenuOffDialog by remember { mutableStateOf(false) }
-
- if(isDevMenuOffDialog){
- DevMenuOffDialog(
- onDevMenuOff = {
- onDevMenuOff()
- isDevMenuOffDialog =! isDevMenuOffDialog
- },
- onDismiss = { isDevMenuOffDialog =! isDevMenuOffDialog }
- )
- }
-
- SettingsScaffold(onBackClick = onBackClick) {
- LangDialog(langModel = langModel, onUpdateLanguage = onUpdateLanguage)
- Divider()
- SettingsSwitch(
- icon = {
- Icon(painter = R.drawable.tracking.asPainter(), contentDescription = null)
- },
- title = {
- Text(text = "Отслеживание файла сохранения")
- },
- state = rememberBooleanSettingState(isTrackingSaveFile),
- onCheckedChange = onUpdateTrackingSaveFileState
- )
- SettingsMenuLink(
- icon = { Icon(painter = R.drawable.folder.asPainter(), contentDescription = null) },
- title = { Text(text = "Выбрать путь сохранения отслеживаемого сохранения") },
- onClick = onChooseTrackingPathToSave,
- )
- Divider()
- SettingsMenuLink(
- icon = { Icon(painter = R.drawable.download.asPainter(), contentDescription = null) },
- title = { Text(text = "Выгрузить файл сохранения") },
- subtitle = { Text(text = "Получить текущий nfstr_save.sb") },
- onClick = onDownloadSaveFile,
- )
- SettingsMenuLink(
- icon = { Icon(painter = R.drawable.upload.asPainter(), contentDescription = null) },
- title = { Text(text = "Загрузить файл сохранения") },
- subtitle = { Text(text = "Загрузить в игру nfstr_save.sb") },
- onClick = onUploadSaveFile,
- )
- Divider()
- SettingsMenuLink(
- title = {
- Text(
- text = "Выключить DevMenu",
- color = Color.Red
- )
- },
- onClick = { isDevMenuOffDialog =! isDevMenuOffDialog },
- )
- }
-}
-
-@Preview
-@Composable
-fun SettingsTopBarPreview() {
- SettingsScreenContent(
- onBackClick = { /*TODO*/ },
- langModel = GameLangModel.System,
- onUpdateLanguage = {},
- isTrackingSaveFile = false,
- onUpdateTrackingSaveFileState = {},
- onChooseTrackingPathToSave = { /*TODO*/ },
- onUploadSaveFile = { /*TODO*/ },
- onDownloadSaveFile = { /*TODO*/ },
- onDevMenuOff = {})
-}
\ No newline at end of file
diff --git a/devmenu/src/main/java/com/megboyzz/devmenu/ui/components/Shared.kt b/devmenu/src/main/java/com/megboyzz/devmenu/ui/components/Shared.kt
deleted file mode 100644
index fd75705..0000000
--- a/devmenu/src/main/java/com/megboyzz/devmenu/ui/components/Shared.kt
+++ /dev/null
@@ -1,55 +0,0 @@
-package com.megboyzz.devmenu.ui.components
-
-import android.annotation.SuppressLint
-import androidx.compose.foundation.ExperimentalFoundationApi
-import androidx.compose.foundation.Image
-import androidx.compose.foundation.combinedClickable
-import androidx.compose.foundation.interaction.MutableInteractionSource
-import androidx.compose.material.ripple.rememberRipple
-import androidx.compose.runtime.Composable
-import androidx.compose.runtime.remember
-import androidx.compose.ui.Modifier
-import androidx.compose.ui.unit.Dp
-import com.megboyzz.devmenu.R
-import com.megboyzz.devmenu.ui.asPainter
-
-enum class ElementType {
- isHidden,
- isReplaced,
- isFile,
- isDir
-}
-
-@SuppressLint("ModifierFactoryUnreferencedReceiver")
-@OptIn(ExperimentalFoundationApi::class)
-@Composable
-fun Modifier.clickableWithRipple(
- onClick: () -> Unit,
- onLongClick: () -> Unit = {},
- enabled: Boolean = true
-): Modifier {
- return Modifier.combinedClickable(
- enabled = enabled,
- interactionSource = remember { MutableInteractionSource() },
- indication = rememberRipple(),
- onClick = onClick,
- onLongClick = onLongClick
- )
-}
-
-@Composable
-fun FsElementIcon(
- type: ElementType,
- modifier: Modifier = Modifier
-) {
-
- val painter = when(type){
- ElementType.isHidden -> R.drawable.icon_hidden_file.asPainter()
- ElementType.isFile -> R.drawable.icon_file.asPainter()
- ElementType.isDir -> R.drawable.icon_folder.asPainter()
- ElementType.isReplaced -> R.drawable.icon_replaced_file.asPainter()
- }
-
- Image(painter = painter, contentDescription = null, modifier)
-}
-
diff --git a/devmenu/src/main/java/com/megboyzz/devmenu/ui/models/FsElementModel.kt b/devmenu/src/main/java/com/megboyzz/devmenu/ui/models/FsElementModel.kt
deleted file mode 100644
index 0b92b39..0000000
--- a/devmenu/src/main/java/com/megboyzz/devmenu/ui/models/FsElementModel.kt
+++ /dev/null
@@ -1,11 +0,0 @@
-package com.megboyzz.devmenu.ui.models
-
-import com.megboyzz.devmenu.ui.components.ElementType
-import java.util.Date
-
-data class FsElementModel(
- val name: String,
- val type: ElementType,
- val size: Long,
- val date: Date
-)
diff --git a/devmenu/src/main/java/com/megboyzz/devmenu/ui/models/GameLangModel.kt b/devmenu/src/main/java/com/megboyzz/devmenu/ui/models/GameLangModel.kt
deleted file mode 100644
index f270738..0000000
--- a/devmenu/src/main/java/com/megboyzz/devmenu/ui/models/GameLangModel.kt
+++ /dev/null
@@ -1,19 +0,0 @@
-package com.megboyzz.devmenu.ui.models
-
-enum class GameLangModel(private val lang: String) {
- System("sys"),
- Chinese("cn"),
- Dutch("nl"),
- English("en"),
- French("fr"),
- Deutsch("de"),
- Italian("it"),
- Japanese("ja"),
- Korean("kr"),
- Portuguese("br"),
- Russian("ru"),
- Spanish("es");
-
- override fun toString() = lang
-
-}
\ No newline at end of file
diff --git a/devmenu/src/main/java/com/megboyzz/devmenu/ui/screens/FileContextMenuScreen.kt b/devmenu/src/main/java/com/megboyzz/devmenu/ui/screens/FileContextMenuScreen.kt
deleted file mode 100644
index ef84bb6..0000000
--- a/devmenu/src/main/java/com/megboyzz/devmenu/ui/screens/FileContextMenuScreen.kt
+++ /dev/null
@@ -1,18 +0,0 @@
-package com.megboyzz.devmenu.ui.screens
-
-import androidx.compose.runtime.Composable
-import cafe.adriel.voyager.core.screen.Screen
-import com.megboyzz.devmenu.ui.components.FileContextMenu
-import com.megboyzz.devmenu.ui.models.FsElementModel
-
-class FileContextMenuScreen(
- private val fsElementModel: FsElementModel,
- private val onRemoveFile: () -> Unit,
-) : Screen {
- @Composable
- override fun Content() = FileContextMenu(
- fsElementEntity = fsElementModel,
- onRemoveElement = onRemoveFile,
- onUpdateType = {null}
- )
-}
\ No newline at end of file
diff --git a/devmenu/src/main/java/com/megboyzz/devmenu/ui/screens/HomeScreen.kt b/devmenu/src/main/java/com/megboyzz/devmenu/ui/screens/HomeScreen.kt
deleted file mode 100644
index 25fd2c0..0000000
--- a/devmenu/src/main/java/com/megboyzz/devmenu/ui/screens/HomeScreen.kt
+++ /dev/null
@@ -1,63 +0,0 @@
-package com.megboyzz.devmenu.ui.screens
-
-import androidx.compose.foundation.layout.Column
-import androidx.compose.runtime.Composable
-import androidx.compose.runtime.getValue
-import androidx.compose.runtime.mutableStateOf
-import androidx.compose.runtime.remember
-import androidx.compose.runtime.setValue
-import cafe.adriel.voyager.core.screen.Screen
-import cafe.adriel.voyager.navigator.bottomSheet.LocalBottomSheetNavigator
-import com.megboyzz.devmenu.ui.SpacerHeight
-import com.megboyzz.devmenu.ui.components.ElementType
-import com.megboyzz.devmenu.ui.components.FsElement
-import com.megboyzz.devmenu.ui.components.MainScaffold
-import com.megboyzz.devmenu.ui.models.FsElementModel
-import java.util.Date
-
-class HomeScreen(
- private val onFloatingButtonClick: () -> Unit
-): Screen {
- @Composable
- override fun Content() {
-
- val bottomSheetNavigator = LocalBottomSheetNavigator.current
-
- var searchValue by remember{ mutableStateOf("") }
-
- val fsElementModel = FsElementModel(
- name = "my_txt.txt",
- type = ElementType.isHidden,
- size = 123,
- date = Date()
- )
-
-
-
- MainScaffold(
- onSettingsClick = { /*TODO Переход к настройкам */ },
- onSearchValueChanged = { searchValue = it },
- searchValue = searchValue,
- onFloatingButtonClick = onFloatingButtonClick
- ) {
- Column {
- SpacerHeight(height = it.calculateTopPadding())
- FsElement(
- fsElementEntity = fsElementModel,
- onClick = { /*TODO*/ },
- onLongPressClick = {
- bottomSheetNavigator.show(
- FileContextMenuScreen(
- fsElementModel = fsElementModel,
- onRemoveFile = {}
- )
- )
- }
- )
- }
-
- }
-
- }
-
-}
\ No newline at end of file
diff --git a/devmenu/src/main/java/com/megboyzz/devmenu/ui/screens/SettingsScreen.kt b/devmenu/src/main/java/com/megboyzz/devmenu/ui/screens/SettingsScreen.kt
deleted file mode 100644
index 1f0da10..0000000
--- a/devmenu/src/main/java/com/megboyzz/devmenu/ui/screens/SettingsScreen.kt
+++ /dev/null
@@ -1,11 +0,0 @@
-package com.megboyzz.devmenu.ui.screens
-
-import androidx.compose.runtime.Composable
-import cafe.adriel.voyager.core.screen.Screen
-
-class SettingsScreen : Screen {
- @Composable
- override fun Content() {
- TODO("Not yet implemented")
- }
-}
\ No newline at end of file
diff --git a/devmenu/src/main/java/com/megboyzz/devmenu/ui/theme/Color.kt b/devmenu/src/main/java/com/megboyzz/devmenu/ui/theme/Color.kt
deleted file mode 100644
index 231d948..0000000
--- a/devmenu/src/main/java/com/megboyzz/devmenu/ui/theme/Color.kt
+++ /dev/null
@@ -1,11 +0,0 @@
-package com.megboyzz.devmenu.ui.theme
-
-import androidx.compose.ui.graphics.Color
-
-val Purple80 = Color(0xFFD0BCFF)
-val PurpleGrey80 = Color(0xFFCCC2DC)
-val Pink80 = Color(0xFFEFB8C8)
-
-val Purple40 = Color(0xFF6650a4)
-val PurpleGrey40 = Color(0xFF625b71)
-val Pink40 = Color(0xFF7D5260)
\ No newline at end of file
diff --git a/devmenu/src/main/java/com/megboyzz/devmenu/ui/theme/Theme.kt b/devmenu/src/main/java/com/megboyzz/devmenu/ui/theme/Theme.kt
deleted file mode 100644
index 08f649f..0000000
--- a/devmenu/src/main/java/com/megboyzz/devmenu/ui/theme/Theme.kt
+++ /dev/null
@@ -1,68 +0,0 @@
-package com.megboyzz.devmenu.ui.theme
-
-import android.app.Activity
-import android.os.Build
-import androidx.compose.foundation.isSystemInDarkTheme
-import androidx.compose.material3.MaterialTheme
-import androidx.compose.material3.darkColorScheme
-import androidx.compose.material3.dynamicDarkColorScheme
-import androidx.compose.material3.dynamicLightColorScheme
-import androidx.compose.material3.lightColorScheme
-import androidx.compose.runtime.Composable
-import androidx.compose.runtime.SideEffect
-import androidx.compose.ui.graphics.Color
-import androidx.compose.ui.graphics.toArgb
-import androidx.compose.ui.platform.LocalContext
-import androidx.compose.ui.platform.LocalView
-import androidx.core.view.WindowCompat
-
-private val DarkColorScheme = darkColorScheme(
- primary = Purple80,
- secondary = PurpleGrey80,
- tertiary = Pink80
-)
-
-private val LightColorScheme = lightColorScheme(
- primary = Color(0xFF36A0EA),
- secondary = PurpleGrey40,
- tertiary = Pink40,
- background = Color(0xFFF2F7FA),
- surface = Color(0xFFFFFBFE),
- onPrimary = Color.White,
- onSecondary = Color.White,
- onTertiary = Color.White,
- onBackground = Color(0xFF1B3D54),
- onSurface = Color(0xFF1C1B1F),
-)
-
-@Composable
-fun DevMenuTheme(
- darkTheme: Boolean = isSystemInDarkTheme(),
- // Dynamic color is available on Android 12+
- dynamicColor: Boolean = true,
- content: @Composable () -> Unit
-) {
- val colorScheme = when {
- dynamicColor && Build.VERSION.SDK_INT >= Build.VERSION_CODES.S -> {
- val context = LocalContext.current
- if (darkTheme) dynamicDarkColorScheme(context) else dynamicLightColorScheme(context)
- }
-
- darkTheme -> DarkColorScheme
- else -> LightColorScheme
- }
- val view = LocalView.current
- if (!view.isInEditMode) {
- SideEffect {
- val window = (view.context as Activity).window
- window.statusBarColor = colorScheme.primary.toArgb()
- WindowCompat.getInsetsController(window, view).isAppearanceLightStatusBars = darkTheme
- }
- }
-
- MaterialTheme(
- colorScheme = colorScheme,
- typography = Typography,
- content = content
- )
-}
\ No newline at end of file
diff --git a/devmenu/src/main/java/com/megboyzz/devmenu/ui/theme/Type.kt b/devmenu/src/main/java/com/megboyzz/devmenu/ui/theme/Type.kt
deleted file mode 100644
index 1c9c359..0000000
--- a/devmenu/src/main/java/com/megboyzz/devmenu/ui/theme/Type.kt
+++ /dev/null
@@ -1,32 +0,0 @@
-package com.megboyzz.devmenu.ui.theme
-
-import androidx.compose.material3.Typography
-import androidx.compose.ui.text.TextStyle
-import androidx.compose.ui.text.font.FontFamily
-import androidx.compose.ui.text.font.FontWeight
-import androidx.compose.ui.unit.sp
-
-// Set of Material typography styles to start with
-val Typography = Typography(
- bodyLarge = TextStyle(
- fontFamily = FontFamily.Default,
- fontWeight = FontWeight.Normal,
- fontSize = 16.sp,
- lineHeight = 24.sp,
- letterSpacing = 0.5.sp
- ),
- titleLarge = TextStyle(
- fontFamily = FontFamily.Default,
- fontWeight = FontWeight.Normal,
- fontSize = 22.sp,
- lineHeight = 28.sp,
- letterSpacing = 0.sp
- ),
- labelSmall = TextStyle(
- fontFamily = FontFamily.Default,
- fontWeight = FontWeight.Medium,
- fontSize = 11.sp,
- lineHeight = 16.sp,
- letterSpacing = 0.5.sp
- )
-)
\ No newline at end of file
diff --git a/devmenu/src/main/java/com/megboyzz/devmenu/util/BaseObserver.kt b/devmenu/src/main/java/com/megboyzz/devmenu/util/BaseObserver.kt
deleted file mode 100644
index 3707ee1..0000000
--- a/devmenu/src/main/java/com/megboyzz/devmenu/util/BaseObserver.kt
+++ /dev/null
@@ -1,90 +0,0 @@
-package com.megboyzz.devmenu.util
-
-import android.os.FileObserver
-import android.util.Log
-import java.io.File
-import java.io.FileInputStream
-import java.io.FileOutputStream
-import java.util.LinkedList
-import java.util.Queue
-import java.util.zip.ZipEntry
-import java.util.zip.ZipOutputStream
-
-abstract class BaseObserver(source: String) : FileObserver(source) {
-
- private val eventQueue : Queue = LinkedList()
-
- @OptIn(ExperimentalStdlibApi::class)
- final override fun onEvent(event: Int, path: String?) {
-
- val e = FileEvent.entries.find { it.value == event }
-
- val fileEvent = e ?: FileEvent.UNKNOWN
-
- Log.i("BaseObserver", "event code = ${event.toHexString()}, FileEvent is $fileEvent")
-
- onEvent(fileEvent, path)
- }
-
- private fun hasLastThreeEvents() = runCatching {
- eventQueue.size == 3 && eventQueue.poll() == OPEN && eventQueue.poll() == ACCESS && eventQueue.poll() == CLOSE_NOWRITE
- }.getOrNull() ?: false
-
- abstract fun onEvent(event: FileEvent, path: String?)
-
- protected fun File.list(regex: String = ".") =
- this.list { dir, _ -> Regex(regex).matches(dir.absolutePath) }?.asList() ?: listOf()
-
-
- protected infix fun File.copyToThe(destination: File){
- this.copyTo(destination, overwrite = true)
- }
-
- protected fun zipAll(outputFolder: String, filesToCompress: List) {
- if(filesToCompress.isEmpty()){
- Log.i("BaseObserver", "no files exit!")
- return
- }
- try {
- // Проверяем, существует ли выходная папка. Если нет, создаем её.
- val outputDir = File(outputFolder)
- if (!outputDir.exists()) outputDir.mkdirs()
-
- // Генерируем имя ZIP-архива на основе времени
- val timestamp = System.currentTimeMillis()
- val zipFileName = "$outputFolder/saves_$timestamp.zip"
- val zipOutputStream = ZipOutputStream(FileOutputStream(zipFileName))
-
- for (fileToCompress in filesToCompress) {
- // Проверяем, существует ли файл
- val inputFile = File(fileToCompress)
- if (inputFile.exists()) {
- // Создаем объект ZipEntry для каждого файла
- val zipEntry = ZipEntry(inputFile.name)
- zipOutputStream.putNextEntry(zipEntry)
-
- // Читаем содержимое файла и записываем его в ZIP-архив
- val fileInputStream = FileInputStream(inputFile)
- val buffer = ByteArray(1024)
- var len: Int
- while (fileInputStream.read(buffer).also { len = it } > 0) {
- zipOutputStream.write(buffer, 0, len)
- }
- fileInputStream.close()
-
- // Закрываем текущий ZipEntry
- zipOutputStream.closeEntry()
- } else {
- Log.i("SaveFileObserver", "Файл не существует: $fileToCompress")
- }
- }
-
- // Закрываем ZipOutputStream
- zipOutputStream.close()
- Log.i("SaveFileObserver", "Архивация завершена. Архив создан: $zipFileName")
- } catch (e: Exception) {
- e.printStackTrace()
- }
- }
-
-}
\ No newline at end of file
diff --git a/devmenu/src/main/java/com/megboyzz/devmenu/util/FileEvent.kt b/devmenu/src/main/java/com/megboyzz/devmenu/util/FileEvent.kt
deleted file mode 100644
index 1af0974..0000000
--- a/devmenu/src/main/java/com/megboyzz/devmenu/util/FileEvent.kt
+++ /dev/null
@@ -1,22 +0,0 @@
-package com.megboyzz.devmenu.util
-
-import android.os.FileObserver
-
-enum class FileEvent(val value: Int) {
-
- ACCESS(FileObserver.ACCESS),
- MODIFY(FileObserver.MODIFY),
- ATTRIB(FileObserver.ATTRIB),
- CLOSE_WRITE(FileObserver.CLOSE_WRITE),
- CLOSE_NOWRITE(FileObserver.CLOSE_NOWRITE),
- OPEN(FileObserver.OPEN),
- MOVED_FROM(FileObserver.MOVED_FROM),
- MOVED_TO(FileObserver.MOVED_TO),
- CREATE(FileObserver.CREATE),
- DELETE(FileObserver.DELETE),
- DELETE_SELF(FileObserver.DELETE_SELF),
- MOVE_SELF(FileObserver.MOVE_SELF),
- UNKNOWN(-1);
-
- override fun toString() = this.name
-}
\ No newline at end of file
diff --git a/devmenu/src/main/java/com/megboyzz/devmenu/util/SaveFileObserver.kt b/devmenu/src/main/java/com/megboyzz/devmenu/util/SaveFileObserver.kt
deleted file mode 100644
index e6b072a..0000000
--- a/devmenu/src/main/java/com/megboyzz/devmenu/util/SaveFileObserver.kt
+++ /dev/null
@@ -1,52 +0,0 @@
-package com.megboyzz.devmenu.util
-
-import android.util.Log
-import java.io.File
-import kotlin.concurrent.thread
-
-
-class SaveFileObserver(
- private val source: String,
- private val destinationFolder: String
-) : BaseObserver(source) {
-
- private var countSnapshots: Int = 1
-
- private val checkList = listOf(
- //FileEvent.CLOSE_WRITE,
- //FileEvent.MODIFY,
- //FileEvent.DELETE,
- //FileEvent.CREATE,
- //FileEvent.ACCESS,
- //FileEvent.OPEN,
- FileEvent.CLOSE_NOWRITE
- )
- init {
- val dest = File(destinationFolder)
- if(dest.isFile) dest.delete()
- if(!dest.exists()) dest.mkdir()
- val list = dest.list{
- dir, name -> name.endsWith(".sb")
- }
- list?.forEach { File(dest, it).delete() }
- File(source) copyToThe File(destinationFolder, "BASE.sb")
- }
-
- override fun onEvent(event: FileEvent, path: String?) {
- Log.i("SaveFileObserver", "onEvent $event")
- if (event in checkList) {
- Log.d("SaveFileObserver", "File created or modified: $source")
- File(source) copyToThe File(destinationFolder, "$event-$countSnapshots.sb")
- countSnapshots++
- }
- }
-
- override fun stopWatching() {
- super.stopWatching()
- val filesList = File(destinationFolder).list{ _, name -> name.endsWith(".sb") }?.map { it }
- if (filesList != null) {
- zipAll(destinationFolder, filesList)
- }
- }
-}
-
diff --git a/devmenu/src/main/res/drawable/clip.xml b/devmenu/src/main/res/drawable/clip.xml
deleted file mode 100644
index 114cc8e..0000000
--- a/devmenu/src/main/res/drawable/clip.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
diff --git a/devmenu/src/main/res/drawable/download.xml b/devmenu/src/main/res/drawable/download.xml
deleted file mode 100644
index 844165f..0000000
--- a/devmenu/src/main/res/drawable/download.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
diff --git a/devmenu/src/main/res/drawable/enter.xml b/devmenu/src/main/res/drawable/enter.xml
deleted file mode 100644
index 661a8ce..0000000
--- a/devmenu/src/main/res/drawable/enter.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
diff --git a/devmenu/src/main/res/drawable/folder.xml b/devmenu/src/main/res/drawable/folder.xml
deleted file mode 100644
index d0a9fe7..0000000
--- a/devmenu/src/main/res/drawable/folder.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
diff --git a/devmenu/src/main/res/drawable/hide.xml b/devmenu/src/main/res/drawable/hide.xml
deleted file mode 100644
index 3ab24c5..0000000
--- a/devmenu/src/main/res/drawable/hide.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
diff --git a/devmenu/src/main/res/drawable/icon_file.xml b/devmenu/src/main/res/drawable/icon_file.xml
deleted file mode 100644
index dc9ca64..0000000
--- a/devmenu/src/main/res/drawable/icon_file.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
diff --git a/devmenu/src/main/res/drawable/icon_folder.xml b/devmenu/src/main/res/drawable/icon_folder.xml
deleted file mode 100644
index 987d740..0000000
--- a/devmenu/src/main/res/drawable/icon_folder.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
diff --git a/devmenu/src/main/res/drawable/icon_hidden_file.xml b/devmenu/src/main/res/drawable/icon_hidden_file.xml
deleted file mode 100644
index b1a000e..0000000
--- a/devmenu/src/main/res/drawable/icon_hidden_file.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/devmenu/src/main/res/drawable/icon_replaced_file.xml b/devmenu/src/main/res/drawable/icon_replaced_file.xml
deleted file mode 100644
index a63783a..0000000
--- a/devmenu/src/main/res/drawable/icon_replaced_file.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-
-
-
diff --git a/devmenu/src/main/res/drawable/info.xml b/devmenu/src/main/res/drawable/info.xml
deleted file mode 100644
index 3a8fdb5..0000000
--- a/devmenu/src/main/res/drawable/info.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
diff --git a/devmenu/src/main/res/drawable/lang.xml b/devmenu/src/main/res/drawable/lang.xml
deleted file mode 100644
index f6e7b46..0000000
--- a/devmenu/src/main/res/drawable/lang.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
diff --git a/devmenu/src/main/res/drawable/star.xml b/devmenu/src/main/res/drawable/star.xml
deleted file mode 100644
index 4c7ae31..0000000
--- a/devmenu/src/main/res/drawable/star.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
diff --git a/devmenu/src/main/res/drawable/tracking.xml b/devmenu/src/main/res/drawable/tracking.xml
deleted file mode 100644
index 8ed1fb1..0000000
--- a/devmenu/src/main/res/drawable/tracking.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
diff --git a/devmenu/src/main/res/drawable/trash.xml b/devmenu/src/main/res/drawable/trash.xml
deleted file mode 100644
index 9abc031..0000000
--- a/devmenu/src/main/res/drawable/trash.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
diff --git a/devmenu/src/main/res/drawable/unhide.xml b/devmenu/src/main/res/drawable/unhide.xml
deleted file mode 100644
index 9e7bd16..0000000
--- a/devmenu/src/main/res/drawable/unhide.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
diff --git a/devmenu/src/main/res/drawable/upload.xml b/devmenu/src/main/res/drawable/upload.xml
deleted file mode 100644
index 4f812f7..0000000
--- a/devmenu/src/main/res/drawable/upload.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
diff --git a/devmenu/src/test/java/com/megboyzz/devmenu/ExampleUnitTest.kt b/devmenu/src/test/java/com/megboyzz/devmenu/ExampleUnitTest.kt
deleted file mode 100644
index 849e182..0000000
--- a/devmenu/src/test/java/com/megboyzz/devmenu/ExampleUnitTest.kt
+++ /dev/null
@@ -1,17 +0,0 @@
-package com.megboyzz.devmenu
-
-import org.junit.Test
-
-import org.junit.Assert.*
-
-/**
- * Example local unit test, which will execute on the development machine (host).
- *
- * See [testing documentation](http://d.android.com/tools/testing).
- */
-class ExampleUnitTest {
- @Test
- fun addition_isCorrect() {
- assertEquals(4, 2 + 2)
- }
-}
\ No newline at end of file
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index 907d93f..4eb49ac 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,6 @@
-#Wed Nov 08 15:56:25 MSK 2023
+#Sun Dec 15 21:22:43 MSK 2024
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-8.2-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-8.9-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
diff --git a/mpcore/build.gradle.kts b/mpcore/build.gradle.kts
index 2146e56..8105a46 100644
--- a/mpcore/build.gradle.kts
+++ b/mpcore/build.gradle.kts
@@ -6,7 +6,7 @@ plugins {
android {
namespace = "ru.megboyzz.mpcore"
- compileSdk = 33
+ compileSdk = 34
defaultConfig {
minSdk = 21
diff --git a/settings.gradle.kts b/settings.gradle.kts
index f7ac2d7..47ff2f2 100644
--- a/settings.gradle.kts
+++ b/settings.gradle.kts
@@ -21,6 +21,4 @@ dependencyResolutionManagement {
rootProject.name = "NFS Most Wanted"
include(":app")
-include(":devmenu")
-include(":devmenu:domain")
include(":mpcore")