From 5f75aa09526930eb47b83eb73fbde7cd8a244837 Mon Sep 17 00:00:00 2001
From: VankaGam <122173219+VankaGam@users.noreply.github.com>
Date: Mon, 6 Oct 2025 21:59:31 +0300
Subject: [PATCH 1/3] creat vetka
---
.idea/deploymentTargetSelector.xml | 4 ++--
.idea/misc.xml | 2 ++
.idea/vcs.xml | 1 -
app/build.gradle.kts | 15 +++++++++++++++
.../playlistmaker/settingsjc/ui/SettingsScreen.kt | 2 ++
.../com/example/playlistmaker/ui/theme/Theme.kt | 3 +++
6 files changed, 24 insertions(+), 3 deletions(-)
create mode 100644 app/src/main/java/com/example/playlistmaker/settingsjc/ui/SettingsScreen.kt
create mode 100644 app/src/main/java/com/example/playlistmaker/ui/theme/Theme.kt
diff --git a/.idea/deploymentTargetSelector.xml b/.idea/deploymentTargetSelector.xml
index 066b899..e72705f 100644
--- a/.idea/deploymentTargetSelector.xml
+++ b/.idea/deploymentTargetSelector.xml
@@ -15,10 +15,10 @@
-
+
-
+
diff --git a/.idea/misc.xml b/.idea/misc.xml
index c9b1536..02a7102 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -1,4 +1,6 @@
+
+
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
index 4e98c8e..94a25f7 100644
--- a/.idea/vcs.xml
+++ b/.idea/vcs.xml
@@ -1,7 +1,6 @@
-
\ No newline at end of file
diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index 284c15a..11f6702 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -47,6 +47,10 @@ android {
checkReleaseBuilds = false
abortOnError = false
}
+ buildFeatures { compose = true }
+ composeOptions {
+ kotlinCompilerExtensionVersion = "1.5.10"
+ }
}
dependencies {
@@ -77,4 +81,15 @@ dependencies {
implementation("androidx.room:room-runtime:2.6.1")
kapt("androidx.room:room-compiler:2.6.1")
implementation("androidx.room:room-ktx:2.6.1")
+ val composeBom = platform("androidx.compose:compose-bom:2024.06.00")
+ implementation(composeBom)
+ androidTestImplementation(composeBom)
+ implementation("androidx.activity:activity-compose:1.8.0")
+ implementation("androidx.compose.ui:ui")
+ implementation("androidx.compose.material3:material3")
+ implementation("androidx.compose.ui:ui-tooling-preview")
+ debugImplementation("androidx.compose.ui:ui-tooling")
+ implementation("androidx.compose.runtime:runtime-livedata")
+ implementation("androidx.lifecycle:lifecycle-runtime-compose:2.8.0")
+ implementation("io.coil-kt:coil-compose:2.7.0")
}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/playlistmaker/settingsjc/ui/SettingsScreen.kt b/app/src/main/java/com/example/playlistmaker/settingsjc/ui/SettingsScreen.kt
new file mode 100644
index 0000000..258f717
--- /dev/null
+++ b/app/src/main/java/com/example/playlistmaker/settingsjc/ui/SettingsScreen.kt
@@ -0,0 +1,2 @@
+package com.example.playlistmaker.settingsjc.ui
+
diff --git a/app/src/main/java/com/example/playlistmaker/ui/theme/Theme.kt b/app/src/main/java/com/example/playlistmaker/ui/theme/Theme.kt
new file mode 100644
index 0000000..6743f81
--- /dev/null
+++ b/app/src/main/java/com/example/playlistmaker/ui/theme/Theme.kt
@@ -0,0 +1,3 @@
+package com.example.playlistmaker.ui.theme
+
+class Theme
\ No newline at end of file
From 09fc2cc5f90ed23fe270fb24ff9f7f15db82df5e Mon Sep 17 00:00:00 2001
From: VankaGam <122173219+VankaGam@users.noreply.github.com>
Date: Sun, 12 Oct 2025 18:24:24 +0300
Subject: [PATCH 2/3] Level 1
---
.idea/AndroidProjectSystem.xml | 6 +
.idea/deploymentTargetSelector.xml | 2 +-
.idea/deviceManager.xml | 13 +
app/build.gradle.kts | 4 +-
.../java/com/example/playlistmaker/App.kt | 4 +-
.../playlistmaker/di/ViewModelModule.kt | 24 +-
.../di/mediaLibraryComposeModule.kt | 38 ++
.../media/ui/Fragment/FavoritesFragment.kt | 78 ---
.../media/ui/Fragment/PlaylistsFragment.kt | 81 ---
.../media/ui/MediaLibraryFragment.kt | 86 ++-
.../media/ui/MediaLibraryScreen.kt | 373 ++++++++++++
.../media/ui/MediaLibraryState.kt | 16 +
.../media/ui/MediaLibraryViewModel.kt | 37 ++
.../ui/adapter/MediaLibraryPagerAdapter.kt | 23 -
.../playlistmaker/search/ui/SearchFragment.kt | 252 +++-----
.../playlistmaker/search/ui/SearchScreen.kt | 547 ++++++++++++++++++
.../settings/ui/viewmodel/SettingsFragment.kt | 100 ++--
.../settingsjc/ui/SettingsScreen.kt | 182 ++++++
.../example/playlistmaker/ui/theme/Theme.kt | 19 +-
.../main/res/layout/fragment_favorites.xml | 49 --
.../res/layout/fragment_media_library.xml | 49 --
app/src/main/res/layout/fragment_search.xml | 173 ------
app/src/main/res/layout/fragment_settings.xml | 98 ----
app/src/main/res/values/strings.xml | 8 +
gradle/libs.versions.toml | 2 +-
25 files changed, 1435 insertions(+), 829 deletions(-)
create mode 100644 .idea/AndroidProjectSystem.xml
create mode 100644 .idea/deviceManager.xml
create mode 100644 app/src/main/java/com/example/playlistmaker/di/mediaLibraryComposeModule.kt
delete mode 100644 app/src/main/java/com/example/playlistmaker/media/ui/Fragment/FavoritesFragment.kt
delete mode 100644 app/src/main/java/com/example/playlistmaker/media/ui/Fragment/PlaylistsFragment.kt
create mode 100644 app/src/main/java/com/example/playlistmaker/media/ui/MediaLibraryScreen.kt
create mode 100644 app/src/main/java/com/example/playlistmaker/media/ui/MediaLibraryState.kt
create mode 100644 app/src/main/java/com/example/playlistmaker/media/ui/MediaLibraryViewModel.kt
delete mode 100644 app/src/main/java/com/example/playlistmaker/media/ui/adapter/MediaLibraryPagerAdapter.kt
create mode 100644 app/src/main/java/com/example/playlistmaker/search/ui/SearchScreen.kt
delete mode 100644 app/src/main/res/layout/fragment_favorites.xml
delete mode 100644 app/src/main/res/layout/fragment_media_library.xml
delete mode 100644 app/src/main/res/layout/fragment_search.xml
delete mode 100644 app/src/main/res/layout/fragment_settings.xml
diff --git a/.idea/AndroidProjectSystem.xml b/.idea/AndroidProjectSystem.xml
new file mode 100644
index 0000000..4a53bee
--- /dev/null
+++ b/.idea/AndroidProjectSystem.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/deploymentTargetSelector.xml b/.idea/deploymentTargetSelector.xml
index e72705f..8ac2031 100644
--- a/.idea/deploymentTargetSelector.xml
+++ b/.idea/deploymentTargetSelector.xml
@@ -15,7 +15,7 @@
-
+
diff --git a/.idea/deviceManager.xml b/.idea/deviceManager.xml
new file mode 100644
index 0000000..91f9558
--- /dev/null
+++ b/.idea/deviceManager.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index 11f6702..1d55704 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -9,7 +9,7 @@ plugins {
android {
namespace = "com.example.playlistmaker"
- compileSdk = 34
+ compileSdk = 35
defaultConfig {
applicationId = "com.example.playlistmaker"
@@ -92,4 +92,6 @@ dependencies {
implementation("androidx.compose.runtime:runtime-livedata")
implementation("androidx.lifecycle:lifecycle-runtime-compose:2.8.0")
implementation("io.coil-kt:coil-compose:2.7.0")
+ implementation("androidx.compose.material:material")
+ implementation("androidx.compose.material:material-icons-extended")
}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/playlistmaker/App.kt b/app/src/main/java/com/example/playlistmaker/App.kt
index 1ec4a87..3a4c47c 100644
--- a/app/src/main/java/com/example/playlistmaker/App.kt
+++ b/app/src/main/java/com/example/playlistmaker/App.kt
@@ -6,6 +6,7 @@ import com.example.playlistmaker.di.DomainModule
import com.example.playlistmaker.di.dataModule
import com.example.playlistmaker.di.repositoryModule
import com.example.playlistmaker.di.interactorModule
+import com.example.playlistmaker.di.mediaLibraryComposeModule
import com.example.playlistmaker.di.mediaModule
import com.example.playlistmaker.di.viewModelModule
import com.example.playlistmaker.di.navigationModule
@@ -29,7 +30,8 @@ class App : Application() {
mediaModule,
navigationModule,
DomainModule,
- playlistWorkModule
+ playlistWorkModule,
+ mediaLibraryComposeModule
)
}
diff --git a/app/src/main/java/com/example/playlistmaker/di/ViewModelModule.kt b/app/src/main/java/com/example/playlistmaker/di/ViewModelModule.kt
index a7541f7..caf8157 100644
--- a/app/src/main/java/com/example/playlistmaker/di/ViewModelModule.kt
+++ b/app/src/main/java/com/example/playlistmaker/di/ViewModelModule.kt
@@ -1,14 +1,20 @@
package com.example.playlistmaker.di
+import com.example.playlistmaker.media.domain.interactor.PlaylistInteractor
+import com.example.playlistmaker.media.ui.MediaLibraryViewModel
+import com.example.playlistmaker.media.ui.PlaylistUi
import com.example.playlistmaker.media.ui.viewmodel.CreatePlaylistViewModel
import com.example.playlistmaker.media.ui.viewmodel.FavoritesViewModel
import com.example.playlistmaker.media.ui.viewmodel.PlaylistViewModel
import com.example.playlistmaker.media.ui.viewmodel.PlaylistsViewModel
-import com.example.playlistmaker.search.ui.viewmodel.SearchViewModel
+import com.example.playlistmaker.player.domain.interactor.FavoritesInteractor
import com.example.playlistmaker.player.ui.viewmodel.PlayerViewModel
import com.example.playlistmaker.search.domain.model.Track
+import com.example.playlistmaker.search.ui.viewmodel.SearchViewModel
import com.example.playlistmaker.settings.ui.viewmodel.SettingsViewModel
+import kotlinx.coroutines.flow.first
import org.koin.androidx.viewmodel.dsl.viewModel
+import org.koin.core.qualifier.named
import org.koin.dsl.module
val viewModelModule = module {
@@ -21,7 +27,6 @@ val viewModelModule = module {
)
}
-
viewModel {
SettingsViewModel(
getTheme = get(),
@@ -40,17 +45,8 @@ val viewModelModule = module {
)
}
- viewModel {
- FavoritesViewModel(
- favoritesInteractor = get()
- )
- }
+ viewModel { FavoritesViewModel(favoritesInteractor = get()) }
+ viewModel { CreatePlaylistViewModel(get()) }
+ viewModel { PlaylistsViewModel(get()) }
- viewModel {
- CreatePlaylistViewModel(get())
- }
-
- viewModel {
- PlaylistsViewModel(get())
- }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/playlistmaker/di/mediaLibraryComposeModule.kt b/app/src/main/java/com/example/playlistmaker/di/mediaLibraryComposeModule.kt
new file mode 100644
index 0000000..751ab86
--- /dev/null
+++ b/app/src/main/java/com/example/playlistmaker/di/mediaLibraryComposeModule.kt
@@ -0,0 +1,38 @@
+package com.example.playlistmaker.di
+
+import com.example.playlistmaker.media.domain.interactor.PlaylistInteractor
+import com.example.playlistmaker.media.ui.MediaLibraryViewModel
+import com.example.playlistmaker.media.ui.PlaylistUi
+import com.example.playlistmaker.player.domain.interactor.FavoritesInteractor
+import com.example.playlistmaker.search.domain.model.Track
+import kotlinx.coroutines.flow.first
+import org.koin.androidx.viewmodel.dsl.viewModel
+import org.koin.core.qualifier.named
+import org.koin.dsl.module
+
+val mediaLibraryComposeModule = module {
+
+ single List