From 0e195b0aeeab9a13c0c4d02e74d22214a8136810 Mon Sep 17 00:00:00 2001 From: ikits Date: Mon, 27 Nov 2023 07:07:37 +0300 Subject: [PATCH] last commit --- .../devmenu/data/repositories/MyClass.kt | 26 +++ .../devmenu/data/util/BaseObserver.kt | 8 +- .../devmenu/data/util/SaveFileObserver.kt | 6 +- devmenu/domain/build.gradle.kts | 8 +- .../devmenu/domain/entities/Settings.kt | 8 - .../domain/repository/FilesRepository.kt | 6 + .../domain/repository/SettingsRepository.kt | 5 +- .../domain/repository/TrackingRepository.kt | 7 + .../files/RemoveInternalDataUseCase.kt | 14 -- .../usecases/files/RenameFileUseCase.kt | 11 ++ .../hidefiles/GetAllHidedFilesUseCase.kt | 12 ++ .../usecases/hidefiles/HideFileUseCase.kt | 13 ++ .../usecases/hidefiles/UnHideAllUseCase.kt | 14 ++ .../usecases/hidefiles/UnHideFileUseCase.kt | 13 ++ .../ReplaceFileUseCase.kt | 2 +- .../settings/RemoveGameDataUseCase.kt | 10 ++ ...ttingsUseCase.kt => SetGameLangUseCase.kt} | 8 +- .../usecases/settings/SetSettingsUseCase.kt | 11 -- .../settings/SetTrackingSaveFileUseCase.kt | 13 ++ devmenu/domain/src/test/java/UseCaseTest.kt | 3 - .../java/com/megboyzz/devmenu/ui/Utlil.kt | 22 +++ .../devmenu/ui/components/Scaffold.kt | 151 ++++++++++++++++++ .../com/megboyzz/devmenu/ui/theme/Theme.kt | 6 +- .../com/megboyzz/devmenu/ui/theme/Type.kt | 4 +- gradle/libs.versions.toml | 2 +- gradle/wrapper/gradle-wrapper.properties | 4 +- 26 files changed, 324 insertions(+), 63 deletions(-) create mode 100644 devmenu/data/src/main/java/com/megboyzz/devmenu/data/repositories/MyClass.kt delete mode 100644 devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/entities/Settings.kt create 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/files/RemoveInternalDataUseCase.kt create mode 100644 devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/files/RenameFileUseCase.kt create mode 100644 devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/hidefiles/GetAllHidedFilesUseCase.kt create mode 100644 devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/hidefiles/HideFileUseCase.kt create mode 100644 devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/hidefiles/UnHideAllUseCase.kt create mode 100644 devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/hidefiles/UnHideFileUseCase.kt rename devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/{files => replacement}/ReplaceFileUseCase.kt (86%) create mode 100644 devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/settings/RemoveGameDataUseCase.kt rename devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/settings/{GetSettingsUseCase.kt => SetGameLangUseCase.kt} (52%) delete mode 100644 devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/settings/SetSettingsUseCase.kt create mode 100644 devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/settings/SetTrackingSaveFileUseCase.kt create mode 100644 devmenu/src/main/java/com/megboyzz/devmenu/ui/Utlil.kt create mode 100644 devmenu/src/main/java/com/megboyzz/devmenu/ui/components/Scaffold.kt diff --git a/devmenu/data/src/main/java/com/megboyzz/devmenu/data/repositories/MyClass.kt b/devmenu/data/src/main/java/com/megboyzz/devmenu/data/repositories/MyClass.kt new file mode 100644 index 0000000..d48b0d7 --- /dev/null +++ b/devmenu/data/src/main/java/com/megboyzz/devmenu/data/repositories/MyClass.kt @@ -0,0 +1,26 @@ +package com.megboyzz.devmenu.data.repositories + +class MyClass { + + fun main(){ + + val input = readln().split(",").associate { + val s = it.trim().split(" ") + s[0] to s[1].toInt() + } + + var sum = 0 + + readln().split(" ").forEach { + + val s = input[it] ?: 0 + sum += s + + } + + println(sum) + + + } + +} \ No newline at end of file diff --git a/devmenu/data/src/main/java/com/megboyzz/devmenu/data/util/BaseObserver.kt b/devmenu/data/src/main/java/com/megboyzz/devmenu/data/util/BaseObserver.kt index feecd52..2f4d5c3 100644 --- a/devmenu/data/src/main/java/com/megboyzz/devmenu/data/util/BaseObserver.kt +++ b/devmenu/data/src/main/java/com/megboyzz/devmenu/data/util/BaseObserver.kt @@ -17,15 +17,13 @@ abstract class BaseObserver(source: String) : FileObserver(source) { @OptIn(ExperimentalStdlibApi::class) final override fun onEvent(event: Int, path: String?) { - if(eventQueue.size < 3) eventQueue.add(event) - val e = FileEvent.entries.find { it.value == event } val fileEvent = e ?: FileEvent.UNKNOWN Log.i("BaseObserver", "event code = ${event.toHexString()}, FileEvent is $fileEvent") - if(hasLastThreeEvents()) onEvent(fileEvent, path) + onEvent(fileEvent, path) } private fun hasLastThreeEvents() = runCatching { @@ -38,7 +36,9 @@ abstract class BaseObserver(source: String) : FileObserver(source) { this.list { dir, _ -> Regex(regex).matches(dir.absolutePath) }?.asList() ?: listOf() - protected infix fun File.copyToThe(destination: File) = this.copyTo(destination, overwrite = true) + protected infix fun File.copyToThe(destination: File){ + this.copyTo(destination, overwrite = true) + } protected fun zipAll(outputFolder: String, filesToCompress: List) { if(filesToCompress.isEmpty()){ diff --git a/devmenu/data/src/main/java/com/megboyzz/devmenu/data/util/SaveFileObserver.kt b/devmenu/data/src/main/java/com/megboyzz/devmenu/data/util/SaveFileObserver.kt index 88f0d52..55b9701 100644 --- a/devmenu/data/src/main/java/com/megboyzz/devmenu/data/util/SaveFileObserver.kt +++ b/devmenu/data/src/main/java/com/megboyzz/devmenu/data/util/SaveFileObserver.kt @@ -15,10 +15,10 @@ class SaveFileObserver( private val checkList = listOf( FileEvent.CLOSE_WRITE, FileEvent.MODIFY, - FileEvent.DELETE, + //FileEvent.DELETE, FileEvent.CREATE, - FileEvent.ACCESS, - FileEvent.OPEN, + //FileEvent.ACCESS, + //FileEvent.OPEN, FileEvent.CLOSE_NOWRITE ) init { diff --git a/devmenu/domain/build.gradle.kts b/devmenu/domain/build.gradle.kts index 5c30334..c71b0ef 100644 --- a/devmenu/domain/build.gradle.kts +++ b/devmenu/domain/build.gradle.kts @@ -11,12 +11,12 @@ java { dependencies { implementation("javax.inject:javax.inject:1") testImplementation("junit:junit:4.13.2") - testImplementation("org.mockito:mockito-core:3.12.4") - testImplementation("org.mockito.kotlin:mockito-kotlin:3.12.4") + //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 +}*/ \ No newline at end of file diff --git a/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/entities/Settings.kt b/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/entities/Settings.kt deleted file mode 100644 index 4a24b89..0000000 --- a/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/entities/Settings.kt +++ /dev/null @@ -1,8 +0,0 @@ -package com.megboyzz.devmenu.domain.entities - -data class Settings( - val enable: Boolean, - val trackingInterval: Int, - val pathToSaveTrackable: String, - val lang: GameLang -) 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 index e120983..01a93bc 100644 --- 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 @@ -11,4 +11,10 @@ interface FilesRepository { 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/SettingsRepository.kt b/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/repository/SettingsRepository.kt index 564f354..27d886b 100644 --- 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 @@ -1,11 +1,10 @@ package com.megboyzz.devmenu.domain.repository -import com.megboyzz.devmenu.domain.entities.Settings +import com.megboyzz.devmenu.domain.entities.GameLang interface SettingsRepository { - suspend fun getSettings(): Settings + fun setGameLang(lang: GameLang): Boolean - suspend fun setSettings(settings: Settings) } \ 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 new file mode 100644 index 0000000..a58c6e1 --- /dev/null +++ b/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/repository/TrackingRepository.kt @@ -0,0 +1,7 @@ +package com.megboyzz.devmenu.domain.repository + +interface TrackingRepository { + + fun setTracking(enabled: Boolean, pathToSave: String): Boolean + +} \ No newline at end of file diff --git a/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/files/RemoveInternalDataUseCase.kt b/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/files/RemoveInternalDataUseCase.kt deleted file mode 100644 index d336489..0000000 --- a/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/files/RemoveInternalDataUseCase.kt +++ /dev/null @@ -1,14 +0,0 @@ -package com.megboyzz.devmenu.domain.usecases.files - -import com.megboyzz.devmenu.domain.repository.FilesRepository -import javax.inject.Inject - -class RemoveInternalDataUseCase @Inject constructor( - private val filesRepository: FilesRepository -) { - operator fun invoke(): Boolean{ - val listFiles = filesRepository.internalRoot.listFiles() ?: return false - listFiles.forEach { it.deleteRecursively() } - return true - } -} \ 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 new file mode 100644 index 0000000..4dfa2c7 --- /dev/null +++ b/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/files/RenameFileUseCase.kt @@ -0,0 +1,11 @@ +package com.megboyzz.devmenu.domain.usecases.files + +import java.io.File + +class RenameFileUseCase { + 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 new file mode 100644 index 0000000..87131dd --- /dev/null +++ b/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/hidefiles/GetAllHidedFilesUseCase.kt @@ -0,0 +1,12 @@ +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 new file mode 100644 index 0000000..3289262 --- /dev/null +++ b/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/hidefiles/HideFileUseCase.kt @@ -0,0 +1,13 @@ +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 new file mode 100644 index 0000000..e2ad68d --- /dev/null +++ b/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/hidefiles/UnHideAllUseCase.kt @@ -0,0 +1,14 @@ +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 new file mode 100644 index 0000000..f17c24b --- /dev/null +++ b/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/hidefiles/UnHideFileUseCase.kt @@ -0,0 +1,13 @@ +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/files/ReplaceFileUseCase.kt b/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/replacement/ReplaceFileUseCase.kt similarity index 86% rename from devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/files/ReplaceFileUseCase.kt rename to devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/replacement/ReplaceFileUseCase.kt index 0c69a47..9d4e3ff 100644 --- a/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/files/ReplaceFileUseCase.kt +++ b/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/replacement/ReplaceFileUseCase.kt @@ -1,4 +1,4 @@ -package com.megboyzz.devmenu.domain.usecases.files +package com.megboyzz.devmenu.domain.usecases.replacement import com.megboyzz.devmenu.domain.repository.ReplacementRepository import java.io.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 new file mode 100644 index 0000000..b4a96ec --- /dev/null +++ b/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/settings/RemoveGameDataUseCase.kt @@ -0,0 +1,10 @@ +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/GetSettingsUseCase.kt b/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/settings/SetGameLangUseCase.kt similarity index 52% rename from devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/settings/GetSettingsUseCase.kt rename to devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/settings/SetGameLangUseCase.kt index e253cef..edb131f 100644 --- a/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/settings/GetSettingsUseCase.kt +++ b/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/settings/SetGameLangUseCase.kt @@ -1,11 +1,13 @@ package com.megboyzz.devmenu.domain.usecases.settings -import com.megboyzz.devmenu.domain.entities.Settings +import com.megboyzz.devmenu.domain.entities.GameLang import com.megboyzz.devmenu.domain.repository.SettingsRepository import javax.inject.Inject -class GetSettingsUseCase @Inject constructor( +class SetGameLangUseCase @Inject constructor( private val settingsRepository: SettingsRepository ) { - suspend operator fun invoke(): Settings = settingsRepository.getSettings() + + operator fun invoke(gameLang: GameLang) = settingsRepository.setGameLang(gameLang) + } \ No newline at end of file diff --git a/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/settings/SetSettingsUseCase.kt b/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/settings/SetSettingsUseCase.kt deleted file mode 100644 index a288672..0000000 --- a/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/settings/SetSettingsUseCase.kt +++ /dev/null @@ -1,11 +0,0 @@ -package com.megboyzz.devmenu.domain.usecases.settings - -import com.megboyzz.devmenu.domain.entities.Settings -import com.megboyzz.devmenu.domain.repository.SettingsRepository -import javax.inject.Inject - -class SetSettingsUseCase @Inject constructor( - private val settingsRepository: SettingsRepository -) { - suspend operator fun invoke(settings: Settings) = settingsRepository.setSettings(settings) -} \ 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 new file mode 100644 index 0000000..afb1eb7 --- /dev/null +++ b/devmenu/domain/src/main/java/com/megboyzz/devmenu/domain/usecases/settings/SetTrackingSaveFileUseCase.kt @@ -0,0 +1,13 @@ +package com.megboyzz.devmenu.domain.usecases.settings + +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.setTracking(enabled, pathToSave) + +} \ No newline at end of file diff --git a/devmenu/domain/src/test/java/UseCaseTest.kt b/devmenu/domain/src/test/java/UseCaseTest.kt index 8c5501a..38320bb 100644 --- a/devmenu/domain/src/test/java/UseCaseTest.kt +++ b/devmenu/domain/src/test/java/UseCaseTest.kt @@ -1,19 +1,16 @@ 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.SvmwRepository import org.mockito.Mockito.mock import org.mockito.Mockito.`when` import java.io.File -import kotlin.coroutines.coroutineContext class UseCaseTest { private val filesRepository = mock(FilesRepository::class.java) private val replacementRepository = mock(ReplacementRepository::class.java) private val saveRepository = mock(SaveRepository::class.java) - private val settingsRepository = mock(SettingsRepository::class.java) private val svmwRepository = mock(SvmwRepository::class.java) private val externalFile = File("D:\\NFSMW Online\\com.ea.games.nfs13_na") diff --git a/devmenu/src/main/java/com/megboyzz/devmenu/ui/Utlil.kt b/devmenu/src/main/java/com/megboyzz/devmenu/ui/Utlil.kt new file mode 100644 index 0000000..c7eebee --- /dev/null +++ b/devmenu/src/main/java/com/megboyzz/devmenu/ui/Utlil.kt @@ -0,0 +1,22 @@ +package com.megboyzz.devmenu.ui + +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 + +@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)) \ No newline at end of file diff --git a/devmenu/src/main/java/com/megboyzz/devmenu/ui/components/Scaffold.kt b/devmenu/src/main/java/com/megboyzz/devmenu/ui/components/Scaffold.kt new file mode 100644 index 0000000..5cd75b2 --- /dev/null +++ b/devmenu/src/main/java/com/megboyzz/devmenu/ui/components/Scaffold.kt @@ -0,0 +1,151 @@ +package com.megboyzz.devmenu.ui.components + +import android.util.Log +import android.widget.Toast +import androidx.compose.animation.AnimatedVisibility +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.Row +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.foundation.text.BasicTextField +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.Search +import androidx.compose.material.icons.outlined.Settings +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.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() { + Scaffold( + topBar = { + TopAppBar( + title = { Text("") }, + + ) + } + ) { + it.calculateBottomPadding() + } +} + + +@OptIn(ExperimentalMaterial3Api::class) +@Composable +fun TopBar( + searchValue: String, + onSearchValueChanged: (String) -> Unit, + onSettingsClick: () -> Unit +) { + + var text by remember { mutableStateOf("") } + + var isSearching by remember { mutableStateOf(false) } + val context = LocalContext.current + TopAppBar( + title = { + Box { + if(isSearching) { + SearchFileTextField( + value = text, + onValueChange = { text = it } + ) + } else Text("NFSMW DevMenu") + } + + }, + actions = { + SearchButton { + Toast.makeText(context, "hh", Toast.LENGTH_LONG).show() + 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 TopBarPrev() { + DevMenuTheme { + TopBar( + searchValue = "А как какать", + onSearchValueChanged = {}, + onSettingsClick = {} + ) + } +} + +@Composable +fun SearchFileTextField( + value: String, + onValueChange: (String) -> Unit +) { + BasicTextField( + value = value, + onValueChange = onValueChange, + decorationBox = { innerTextField -> + Box( + + ) { + Row( + Modifier + .fillMaxWidth() + .background(Color.White, RoundedCornerShape(percent = 30)) + .padding(start = 12.dp), + horizontalArrangement = Arrangement.SpaceBetween, + verticalAlignment = Alignment.CenterVertically + ) { + innerTextField() + } + } + }, + ) + + +} 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 index a9fa830..08f649f 100644 --- a/devmenu/src/main/java/com/megboyzz/devmenu/ui/theme/Theme.kt +++ b/devmenu/src/main/java/com/megboyzz/devmenu/ui/theme/Theme.kt @@ -23,15 +23,15 @@ private val DarkColorScheme = darkColorScheme( ) private val LightColorScheme = lightColorScheme( - primary = Purple40, + primary = Color(0xFF36A0EA), secondary = PurpleGrey40, tertiary = Pink40, - background = Color(0xFFFFFBFE), + background = Color(0xFFF2F7FA), surface = Color(0xFFFFFBFE), onPrimary = Color.White, onSecondary = Color.White, onTertiary = Color.White, - onBackground = Color(0xFF1C1B1F), + onBackground = Color(0xFF1B3D54), onSurface = Color(0xFF1C1B1F), ) 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 index 3c110ed..1c9c359 100644 --- a/devmenu/src/main/java/com/megboyzz/devmenu/ui/theme/Type.kt +++ b/devmenu/src/main/java/com/megboyzz/devmenu/ui/theme/Type.kt @@ -14,8 +14,7 @@ val Typography = Typography( fontSize = 16.sp, lineHeight = 24.sp, letterSpacing = 0.5.sp - ) - /* Other default text styles to override + ), titleLarge = TextStyle( fontFamily = FontFamily.Default, fontWeight = FontWeight.Normal, @@ -30,5 +29,4 @@ val Typography = Typography( lineHeight = 16.sp, letterSpacing = 0.5.sp ) - */ ) \ No newline at end of file diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 9612d6b..8112cc2 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,5 +1,5 @@ [versions] -agp = "8.3.0-alpha05" +agp = "8.1.2" junit-junit = "4.13.2" kotlin = "1.9.0" core-ktx = "1.12.0" diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 3aa4d95..907d93f 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Thu Oct 12 20:31:26 MSK 2023 +#Wed Nov 08 15:56:25 MSK 2023 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.3-rc-2-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.2-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists