From 540eb08e22db896cc38324a0fd4acbbac91f9ab0 Mon Sep 17 00:00:00 2001 From: megboyzz Date: Sun, 15 Dec 2024 21:27:01 +0300 Subject: [PATCH] cut devmenu --- app/build.gradle.kts | 17 +- app/src/no_devmenu/AndroidManifest.xml | 13 - devmenu/.gitignore | 1 - devmenu/build.gradle.kts | 88 ------ devmenu/consumer-rules.pro | 0 devmenu/data/.gitignore | 1 - devmenu/data/build.gradle.kts | 45 --- devmenu/data/consumer-rules.pro | 0 devmenu/data/proguard-rules.pro | 21 -- .../devmenu/data/ExampleInstrumentedTest.kt | 24 -- devmenu/data/src/main/AndroidManifest.xml | 4 - .../megboyzz/devmenu/data/ExampleUnitTest.kt | 17 - devmenu/domain/.gitignore | 1 - devmenu/domain/build.gradle.kts | 22 -- .../devmenu/domain/entities/Constants.kt | 3 - .../devmenu/domain/entities/FileProps.kt | 9 - .../devmenu/domain/entities/GameLang.kt | 19 -- .../devmenu/domain/entities/SvmwProps.kt | 8 - .../devmenu/domain/entities/TrackingData.kt | 6 - .../domain/repository/FilesRepository.kt | 20 -- .../repository/ReplacementRepository.kt | 13 - .../domain/repository/SaveRepository.kt | 11 - .../domain/repository/SettingsRepository.kt | 9 - .../domain/repository/SvmwRepository.kt | 20 -- .../domain/repository/TrackingRepository.kt | 13 - .../usecases/IsDevMenuEnabledUseCase.kt | 12 - .../domain/usecases/StartTrackingUseCase.kt | 17 - .../domain/usecases/StopTrackingUseCase.kt | 11 - .../usecases/files/GetExternalFilesUseCase.kt | 11 - .../usecases/files/GetFilePropsUseCase.kt | 12 - .../usecases/files/GetInternalFilesUseCase.kt | 13 - .../usecases/files/RemoveFileUseCase.kt | 8 - .../usecases/files/RenameFileUseCase.kt | 12 - .../hidefiles/GetAllHidedFilesUseCase.kt | 12 - .../usecases/hidefiles/HideFileUseCase.kt | 13 - .../usecases/hidefiles/UnHideAllUseCase.kt | 14 - .../usecases/hidefiles/UnHideFileUseCase.kt | 13 - .../replacement/GetAllReplacedFilesUseCase.kt | 10 - .../RecoverAllReplacementsUseCase.kt | 13 - .../replacement/RecoverReplacementUseCase.kt | 11 - .../replacement/ReplaceFileUseCase.kt | 14 - .../usecases/save/LoadSaveFileUseCase.kt | 11 - .../usecases/save/UploadSaveFileUseCase.kt | 15 - .../settings/RemoveGameDataUseCase.kt | 10 - .../usecases/settings/SetGameLangUseCase.kt | 15 - .../settings/SetTrackingSaveFileUseCase.kt | 15 - .../settings/TurnOffDevMenuUseCase.kt | 12 - .../usecases/svmw/CreateSvmwFileUseCase.kt | 27 -- .../usecases/svmw/GetSvmwFilePropsUseCase.kt | 11 - .../usecases/svmw/GetSvmwPropsUseCase.kt | 10 - .../domain/usecases/svmw/LoadSvmwUseCase.kt | 11 - devmenu/proguard-rules.pro | 21 -- .../devmenu/ExampleInstrumentedTest.kt | 24 -- devmenu/src/main/AndroidManifest.xml | 10 - .../src/main/java/com/megboyzz/devmenu/App.kt | 35 --- .../java/com/megboyzz/devmenu/MainActivity.kt | 46 --- .../com/megboyzz/devmenu/db/AppDatabase.kt | 11 - .../megboyzz/devmenu/db/dao/ReplacementDao.kt | 24 -- .../devmenu/db/entites/Replacement.kt | 18 -- .../di/components/FilesUseCaseComponent.kt | 42 --- .../components/HideFilesUseCaseComponent.kt | 40 --- .../components/ReplacementUseCaseComponent.kt | 39 --- .../di/components/SettingsUseCaseComponent.kt | 39 --- .../TrackingHandlerUseCaseComponent.kt | 36 --- .../devmenu/di/modules/DatabaseModule.kt | 25 -- .../devmenu/di/modules/RepositoryModule.kt | 51 --- .../repositories/FilesRepositoryImpl.kt | 32 -- .../repositories/ReplacementRepositoryImpl.kt | 73 ----- .../repositories/SaveRepositoryImpl.kt | 27 -- .../repositories/SettingsRepositoryImpl.kt | 47 --- .../repositories/TrackingRepositoryImpl.kt | 55 ---- .../java/com/megboyzz/devmenu/ui/Utlil.kt | 66 ---- .../devmenu/ui/components/AnimationSpec.kt | 28 -- .../devmenu/ui/components/ContextMenuState.kt | 290 ------------------ .../megboyzz/devmenu/ui/components/Files.kt | 30 -- .../devmenu/ui/components/FolderStatusBar.kt | 55 ---- .../devmenu/ui/components/HomeScaffold.kt | 172 ----------- .../devmenu/ui/components/Settings.kt | 211 ------------- .../megboyzz/devmenu/ui/components/Shared.kt | 55 ---- .../devmenu/ui/models/FsElementModel.kt | 11 - .../devmenu/ui/models/GameLangModel.kt | 19 -- .../ui/screens/FileContextMenuScreen.kt | 18 -- .../megboyzz/devmenu/ui/screens/HomeScreen.kt | 63 ---- .../devmenu/ui/screens/SettingsScreen.kt | 11 - .../com/megboyzz/devmenu/ui/theme/Color.kt | 11 - .../com/megboyzz/devmenu/ui/theme/Theme.kt | 68 ---- .../com/megboyzz/devmenu/ui/theme/Type.kt | 32 -- .../com/megboyzz/devmenu/util/BaseObserver.kt | 90 ------ .../com/megboyzz/devmenu/util/FileEvent.kt | 22 -- .../megboyzz/devmenu/util/SaveFileObserver.kt | 52 ---- devmenu/src/main/res/drawable/clip.xml | 9 - devmenu/src/main/res/drawable/download.xml | 9 - devmenu/src/main/res/drawable/enter.xml | 9 - devmenu/src/main/res/drawable/folder.xml | 9 - devmenu/src/main/res/drawable/hide.xml | 9 - devmenu/src/main/res/drawable/icon_file.xml | 12 - devmenu/src/main/res/drawable/icon_folder.xml | 12 - .../main/res/drawable/icon_hidden_file.xml | 19 -- .../main/res/drawable/icon_replaced_file.xml | 15 - devmenu/src/main/res/drawable/info.xml | 9 - devmenu/src/main/res/drawable/lang.xml | 9 - devmenu/src/main/res/drawable/star.xml | 9 - devmenu/src/main/res/drawable/tracking.xml | 9 - devmenu/src/main/res/drawable/trash.xml | 9 - devmenu/src/main/res/drawable/unhide.xml | 9 - devmenu/src/main/res/drawable/upload.xml | 9 - .../com/megboyzz/devmenu/ExampleUnitTest.kt | 17 - gradle/wrapper/gradle-wrapper.properties | 4 +- mpcore/build.gradle.kts | 2 +- settings.gradle.kts | 2 - 110 files changed, 4 insertions(+), 2904 deletions(-) delete mode 100644 app/src/no_devmenu/AndroidManifest.xml delete mode 100644 devmenu/.gitignore delete mode 100644 devmenu/build.gradle.kts delete mode 100644 devmenu/consumer-rules.pro delete mode 100644 devmenu/data/.gitignore delete mode 100644 devmenu/data/build.gradle.kts delete mode 100644 devmenu/data/consumer-rules.pro delete mode 100644 devmenu/data/proguard-rules.pro delete mode 100644 devmenu/data/src/androidTest/java/com/megboyzz/devmenu/data/ExampleInstrumentedTest.kt delete mode 100644 devmenu/data/src/main/AndroidManifest.xml delete mode 100644 devmenu/data/src/test/java/com/megboyzz/devmenu/data/ExampleUnitTest.kt delete mode 100644 devmenu/domain/.gitignore delete mode 100644 devmenu/domain/build.gradle.kts delete mode 100644 devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/entities/Constants.kt delete mode 100644 devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/entities/FileProps.kt delete mode 100644 devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/entities/GameLang.kt delete mode 100644 devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/entities/SvmwProps.kt delete mode 100644 devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/entities/TrackingData.kt delete mode 100644 devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/repository/FilesRepository.kt delete mode 100644 devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/repository/ReplacementRepository.kt delete mode 100644 devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/repository/SaveRepository.kt delete mode 100644 devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/repository/SettingsRepository.kt delete mode 100644 devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/repository/SvmwRepository.kt delete mode 100644 devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/repository/TrackingRepository.kt delete mode 100644 devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/IsDevMenuEnabledUseCase.kt delete mode 100644 devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/StartTrackingUseCase.kt delete mode 100644 devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/StopTrackingUseCase.kt delete mode 100644 devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/files/GetExternalFilesUseCase.kt delete mode 100644 devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/files/GetFilePropsUseCase.kt delete mode 100644 devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/files/GetInternalFilesUseCase.kt delete mode 100644 devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/files/RemoveFileUseCase.kt delete mode 100644 devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/files/RenameFileUseCase.kt delete mode 100644 devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/hidefiles/GetAllHidedFilesUseCase.kt delete mode 100644 devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/hidefiles/HideFileUseCase.kt delete mode 100644 devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/hidefiles/UnHideAllUseCase.kt delete mode 100644 devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/hidefiles/UnHideFileUseCase.kt delete mode 100644 devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/replacement/GetAllReplacedFilesUseCase.kt delete mode 100644 devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/replacement/RecoverAllReplacementsUseCase.kt delete mode 100644 devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/replacement/RecoverReplacementUseCase.kt delete mode 100644 devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/replacement/ReplaceFileUseCase.kt delete mode 100644 devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/save/LoadSaveFileUseCase.kt delete mode 100644 devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/save/UploadSaveFileUseCase.kt delete mode 100644 devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/settings/RemoveGameDataUseCase.kt delete mode 100644 devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/settings/SetGameLangUseCase.kt delete mode 100644 devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/settings/SetTrackingSaveFileUseCase.kt delete mode 100644 devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/settings/TurnOffDevMenuUseCase.kt delete mode 100644 devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/svmw/CreateSvmwFileUseCase.kt delete mode 100644 devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/svmw/GetSvmwFilePropsUseCase.kt delete mode 100644 devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/svmw/GetSvmwPropsUseCase.kt delete mode 100644 devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/svmw/LoadSvmwUseCase.kt delete mode 100644 devmenu/proguard-rules.pro delete mode 100644 devmenu/src/androidTest/java/com/megboyzz/devmenu/ExampleInstrumentedTest.kt delete mode 100644 devmenu/src/main/AndroidManifest.xml delete mode 100644 devmenu/src/main/java/com/megboyzz/devmenu/App.kt delete mode 100644 devmenu/src/main/java/com/megboyzz/devmenu/MainActivity.kt delete mode 100644 devmenu/src/main/java/com/megboyzz/devmenu/db/AppDatabase.kt delete mode 100644 devmenu/src/main/java/com/megboyzz/devmenu/db/dao/ReplacementDao.kt delete mode 100644 devmenu/src/main/java/com/megboyzz/devmenu/db/entites/Replacement.kt delete mode 100644 devmenu/src/main/java/com/megboyzz/devmenu/di/components/FilesUseCaseComponent.kt delete mode 100644 devmenu/src/main/java/com/megboyzz/devmenu/di/components/HideFilesUseCaseComponent.kt delete mode 100644 devmenu/src/main/java/com/megboyzz/devmenu/di/components/ReplacementUseCaseComponent.kt delete mode 100644 devmenu/src/main/java/com/megboyzz/devmenu/di/components/SettingsUseCaseComponent.kt delete mode 100644 devmenu/src/main/java/com/megboyzz/devmenu/di/components/TrackingHandlerUseCaseComponent.kt delete mode 100644 devmenu/src/main/java/com/megboyzz/devmenu/di/modules/DatabaseModule.kt delete mode 100644 devmenu/src/main/java/com/megboyzz/devmenu/di/modules/RepositoryModule.kt delete mode 100644 devmenu/src/main/java/com/megboyzz/devmenu/repositories/FilesRepositoryImpl.kt delete mode 100644 devmenu/src/main/java/com/megboyzz/devmenu/repositories/ReplacementRepositoryImpl.kt delete mode 100644 devmenu/src/main/java/com/megboyzz/devmenu/repositories/SaveRepositoryImpl.kt delete mode 100644 devmenu/src/main/java/com/megboyzz/devmenu/repositories/SettingsRepositoryImpl.kt delete mode 100644 devmenu/src/main/java/com/megboyzz/devmenu/repositories/TrackingRepositoryImpl.kt delete mode 100644 devmenu/src/main/java/com/megboyzz/devmenu/ui/Utlil.kt delete mode 100644 devmenu/src/main/java/com/megboyzz/devmenu/ui/components/AnimationSpec.kt delete mode 100644 devmenu/src/main/java/com/megboyzz/devmenu/ui/components/ContextMenuState.kt delete mode 100644 devmenu/src/main/java/com/megboyzz/devmenu/ui/components/Files.kt delete mode 100644 devmenu/src/main/java/com/megboyzz/devmenu/ui/components/FolderStatusBar.kt delete mode 100644 devmenu/src/main/java/com/megboyzz/devmenu/ui/components/HomeScaffold.kt delete mode 100644 devmenu/src/main/java/com/megboyzz/devmenu/ui/components/Settings.kt delete mode 100644 devmenu/src/main/java/com/megboyzz/devmenu/ui/components/Shared.kt delete mode 100644 devmenu/src/main/java/com/megboyzz/devmenu/ui/models/FsElementModel.kt delete mode 100644 devmenu/src/main/java/com/megboyzz/devmenu/ui/models/GameLangModel.kt delete mode 100644 devmenu/src/main/java/com/megboyzz/devmenu/ui/screens/FileContextMenuScreen.kt delete mode 100644 devmenu/src/main/java/com/megboyzz/devmenu/ui/screens/HomeScreen.kt delete mode 100644 devmenu/src/main/java/com/megboyzz/devmenu/ui/screens/SettingsScreen.kt delete mode 100644 devmenu/src/main/java/com/megboyzz/devmenu/ui/theme/Color.kt delete mode 100644 devmenu/src/main/java/com/megboyzz/devmenu/ui/theme/Theme.kt delete mode 100644 devmenu/src/main/java/com/megboyzz/devmenu/ui/theme/Type.kt delete mode 100644 devmenu/src/main/java/com/megboyzz/devmenu/util/BaseObserver.kt delete mode 100644 devmenu/src/main/java/com/megboyzz/devmenu/util/FileEvent.kt delete mode 100644 devmenu/src/main/java/com/megboyzz/devmenu/util/SaveFileObserver.kt delete mode 100644 devmenu/src/main/res/drawable/clip.xml delete mode 100644 devmenu/src/main/res/drawable/download.xml delete mode 100644 devmenu/src/main/res/drawable/enter.xml delete mode 100644 devmenu/src/main/res/drawable/folder.xml delete mode 100644 devmenu/src/main/res/drawable/hide.xml delete mode 100644 devmenu/src/main/res/drawable/icon_file.xml delete mode 100644 devmenu/src/main/res/drawable/icon_folder.xml delete mode 100644 devmenu/src/main/res/drawable/icon_hidden_file.xml delete mode 100644 devmenu/src/main/res/drawable/icon_replaced_file.xml delete mode 100644 devmenu/src/main/res/drawable/info.xml delete mode 100644 devmenu/src/main/res/drawable/lang.xml delete mode 100644 devmenu/src/main/res/drawable/star.xml delete mode 100644 devmenu/src/main/res/drawable/tracking.xml delete mode 100644 devmenu/src/main/res/drawable/trash.xml delete mode 100644 devmenu/src/main/res/drawable/unhide.xml delete mode 100644 devmenu/src/main/res/drawable/upload.xml delete mode 100644 devmenu/src/test/java/com/megboyzz/devmenu/ExampleUnitTest.kt 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")