From 742f6e5bbc975c30156b55af60c9b0ffa2e4f2d3 Mon Sep 17 00:00:00 2001 From: AnnZhimol Date: Mon, 9 Oct 2023 23:55:12 +0400 Subject: [PATCH] lab2 --- .gitignore | 15 + .idea/.gitignore | 3 + .idea/compiler.xml | 6 + .idea/deploymentTargetDropDown.xml | 17 + .idea/gradle.xml | 20 + .idea/inspectionProfiles/Project_Default.xml | 41 ++ .idea/kotlinc.xml | 6 + .idea/misc.xml | 9 + app/.gitignore | 1 + app/build.gradle.kts | 75 +++ app/proguard-rules.pro | 21 + .../pmulabs/ExampleInstrumentedTest.kt | 24 + app/src/main/AndroidManifest.xml | 28 ++ .../java/com/example/pmulabs/MainActivity.kt | 24 + .../basecomponents/navigate/BackButton.kt | 47 ++ .../navigate/BottomBarScreen.kt | 87 ++++ .../basecomponents/navigate/EmailTextInput.kt | 63 +++ .../example/pmulabs/designElem/ArticleItem.kt | 191 ++++++++ .../example/pmulabs/designElem/BottomBar.kt | 132 +++++ .../example/pmulabs/designElem/CommentItem.kt | 76 +++ .../example/pmulabs/designElem/LeftCircles.kt | 60 +++ .../example/pmulabs/designElem/LogoMobile.kt | 52 ++ .../pmulabs/designElem/RightCircles.kt | 59 +++ .../pmulabs/designElem/SearchViewModel.kt | 29 ++ .../pmulabs/designElem/SearchWidget.kt | 6 + .../pmulabs/designElem/SharedViewModel.kt | 12 + .../com/example/pmulabs/designElem/TagItem.kt | 63 +++ .../com/example/pmulabs/designElem/TopBar.kt | 155 ++++++ .../example/pmulabs/graphs/AuthNavGraph.kt | 34 ++ .../example/pmulabs/graphs/HomeNavGraph.kt | 83 ++++ .../example/pmulabs/graphs/RootNavGraph.kt | 39 ++ .../com/example/pmulabs/models/Article.kt | 11 + .../com/example/pmulabs/models/Comment.kt | 8 + .../java/com/example/pmulabs/models/Teg.kt | 6 + .../java/com/example/pmulabs/models/User.kt | 9 + .../pmulabs/repository/ArticleRepository.kt | 70 +++ .../pmulabs/repository/CommentRepository.kt | 86 ++++ .../pmulabs/repository/TegRepository.kt | 37 ++ .../pmulabs/repository/UserRepository.kt | 48 ++ .../screensMobile/ArticlePageScreen.kt | 174 +++++++ .../pmulabs/screensMobile/CalendarScreen.kt | 52 ++ .../pmulabs/screensMobile/CoopScreen.kt | 200 ++++++++ .../pmulabs/screensMobile/EntryScreen.kt | 234 +++++++++ .../pmulabs/screensMobile/InfoScreen.kt | 230 +++++++++ .../pmulabs/screensMobile/MainScreen.kt | 268 +++++++++++ .../pmulabs/screensMobile/ProfileScreen.kt | 213 ++++++++ .../pmulabs/screensMobile/RegisterScreen.kt | 454 ++++++++++++++++++ .../screensMobile/SearchByTagScreen.kt | 45 ++ .../pmulabs/screensMobile/SearchScreen.kt | 46 ++ .../pmulabs/screensMobile/SplashScreen.kt | 143 ++++++ .../pmulabs/screensMobile/TagsScreen.kt | 37 ++ .../com/example/pmulabs/ui/theme/Color.kt | 11 + .../com/example/pmulabs/ui/theme/Theme.kt | 70 +++ .../java/com/example/pmulabs/ui/theme/Type.kt | 34 ++ app/src/main/res/drawable/ellipse7.png | Bin 0 -> 2066 bytes .../res/drawable/ic_bottom_categories.xml | 5 + .../drawable/ic_bottom_categories_focused.xml | 5 + .../res/drawable/ic_bottom_cooperation.xml | 5 + .../ic_bottom_cooperation_focused.xml | 5 + app/src/main/res/drawable/ic_bottom_info.xml | 5 + .../res/drawable/ic_bottom_info_focused.xml | 5 + app/src/main/res/drawable/ic_bottom_main.xml | 5 + .../res/drawable/ic_bottom_main_focused.xml | 5 + .../main/res/drawable/ic_bottom_profile.xml | 6 + .../drawable/ic_bottom_profile_focused.xml | 5 + app/src/main/res/drawable/ic_comment.xml | 5 + .../res/drawable/ic_launcher_background.xml | 170 +++++++ .../res/drawable/ic_launcher_foreground.xml | 30 ++ app/src/main/res/drawable/iconhashtag1.png | Bin 0 -> 515 bytes app/src/main/res/drawable/image2.png | Bin 0 -> 36791 bytes app/src/main/res/drawable/image3.png | Bin 0 -> 109078 bytes .../res/drawable/ixbtcom_colored_logo1.png | Bin 0 -> 12599 bytes .../res/mipmap-anydpi-v26/ic_launcher.xml | 6 + .../mipmap-anydpi-v26/ic_launcher_round.xml | 6 + app/src/main/res/mipmap-hdpi/ic_launcher.webp | Bin 0 -> 1404 bytes .../res/mipmap-hdpi/ic_launcher_round.webp | Bin 0 -> 2898 bytes app/src/main/res/mipmap-mdpi/ic_launcher.webp | Bin 0 -> 982 bytes .../res/mipmap-mdpi/ic_launcher_round.webp | Bin 0 -> 1772 bytes .../main/res/mipmap-xhdpi/ic_launcher.webp | Bin 0 -> 1900 bytes .../res/mipmap-xhdpi/ic_launcher_round.webp | Bin 0 -> 3918 bytes .../main/res/mipmap-xxhdpi/ic_launcher.webp | Bin 0 -> 2884 bytes .../res/mipmap-xxhdpi/ic_launcher_round.webp | Bin 0 -> 5914 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.webp | Bin 0 -> 3844 bytes .../res/mipmap-xxxhdpi/ic_launcher_round.webp | Bin 0 -> 7778 bytes app/src/main/res/values/colors.xml | 10 + app/src/main/res/values/strings.xml | 3 + app/src/main/res/values/themes.xml | 5 + app/src/main/res/xml/backup_rules.xml | 13 + .../main/res/xml/data_extraction_rules.xml | 19 + .../com/example/pmulabs/ExampleUnitTest.kt | 17 + build.gradle.kts | 5 + gradle.properties | 23 + gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 59203 bytes gradle/wrapper/gradle-wrapper.properties | 6 + gradlew | 185 +++++++ gradlew.bat | 89 ++++ settings.gradle.kts | 18 + 97 files changed, 4625 insertions(+) create mode 100644 .gitignore create mode 100644 .idea/.gitignore create mode 100644 .idea/compiler.xml create mode 100644 .idea/deploymentTargetDropDown.xml create mode 100644 .idea/gradle.xml create mode 100644 .idea/inspectionProfiles/Project_Default.xml create mode 100644 .idea/kotlinc.xml create mode 100644 .idea/misc.xml create mode 100644 app/.gitignore create mode 100644 app/build.gradle.kts create mode 100644 app/proguard-rules.pro create mode 100644 app/src/androidTest/java/com/example/pmulabs/ExampleInstrumentedTest.kt create mode 100644 app/src/main/AndroidManifest.xml create mode 100644 app/src/main/java/com/example/pmulabs/MainActivity.kt create mode 100644 app/src/main/java/com/example/pmulabs/basecomponents/navigate/BackButton.kt create mode 100644 app/src/main/java/com/example/pmulabs/basecomponents/navigate/BottomBarScreen.kt create mode 100644 app/src/main/java/com/example/pmulabs/basecomponents/navigate/EmailTextInput.kt create mode 100644 app/src/main/java/com/example/pmulabs/designElem/ArticleItem.kt create mode 100644 app/src/main/java/com/example/pmulabs/designElem/BottomBar.kt create mode 100644 app/src/main/java/com/example/pmulabs/designElem/CommentItem.kt create mode 100644 app/src/main/java/com/example/pmulabs/designElem/LeftCircles.kt create mode 100644 app/src/main/java/com/example/pmulabs/designElem/LogoMobile.kt create mode 100644 app/src/main/java/com/example/pmulabs/designElem/RightCircles.kt create mode 100644 app/src/main/java/com/example/pmulabs/designElem/SearchViewModel.kt create mode 100644 app/src/main/java/com/example/pmulabs/designElem/SearchWidget.kt create mode 100644 app/src/main/java/com/example/pmulabs/designElem/SharedViewModel.kt create mode 100644 app/src/main/java/com/example/pmulabs/designElem/TagItem.kt create mode 100644 app/src/main/java/com/example/pmulabs/designElem/TopBar.kt create mode 100644 app/src/main/java/com/example/pmulabs/graphs/AuthNavGraph.kt create mode 100644 app/src/main/java/com/example/pmulabs/graphs/HomeNavGraph.kt create mode 100644 app/src/main/java/com/example/pmulabs/graphs/RootNavGraph.kt create mode 100644 app/src/main/java/com/example/pmulabs/models/Article.kt create mode 100644 app/src/main/java/com/example/pmulabs/models/Comment.kt create mode 100644 app/src/main/java/com/example/pmulabs/models/Teg.kt create mode 100644 app/src/main/java/com/example/pmulabs/models/User.kt create mode 100644 app/src/main/java/com/example/pmulabs/repository/ArticleRepository.kt create mode 100644 app/src/main/java/com/example/pmulabs/repository/CommentRepository.kt create mode 100644 app/src/main/java/com/example/pmulabs/repository/TegRepository.kt create mode 100644 app/src/main/java/com/example/pmulabs/repository/UserRepository.kt create mode 100644 app/src/main/java/com/example/pmulabs/screensMobile/ArticlePageScreen.kt create mode 100644 app/src/main/java/com/example/pmulabs/screensMobile/CalendarScreen.kt create mode 100644 app/src/main/java/com/example/pmulabs/screensMobile/CoopScreen.kt create mode 100644 app/src/main/java/com/example/pmulabs/screensMobile/EntryScreen.kt create mode 100644 app/src/main/java/com/example/pmulabs/screensMobile/InfoScreen.kt create mode 100644 app/src/main/java/com/example/pmulabs/screensMobile/MainScreen.kt create mode 100644 app/src/main/java/com/example/pmulabs/screensMobile/ProfileScreen.kt create mode 100644 app/src/main/java/com/example/pmulabs/screensMobile/RegisterScreen.kt create mode 100644 app/src/main/java/com/example/pmulabs/screensMobile/SearchByTagScreen.kt create mode 100644 app/src/main/java/com/example/pmulabs/screensMobile/SearchScreen.kt create mode 100644 app/src/main/java/com/example/pmulabs/screensMobile/SplashScreen.kt create mode 100644 app/src/main/java/com/example/pmulabs/screensMobile/TagsScreen.kt create mode 100644 app/src/main/java/com/example/pmulabs/ui/theme/Color.kt create mode 100644 app/src/main/java/com/example/pmulabs/ui/theme/Theme.kt create mode 100644 app/src/main/java/com/example/pmulabs/ui/theme/Type.kt create mode 100644 app/src/main/res/drawable/ellipse7.png create mode 100644 app/src/main/res/drawable/ic_bottom_categories.xml create mode 100644 app/src/main/res/drawable/ic_bottom_categories_focused.xml create mode 100644 app/src/main/res/drawable/ic_bottom_cooperation.xml create mode 100644 app/src/main/res/drawable/ic_bottom_cooperation_focused.xml create mode 100644 app/src/main/res/drawable/ic_bottom_info.xml create mode 100644 app/src/main/res/drawable/ic_bottom_info_focused.xml create mode 100644 app/src/main/res/drawable/ic_bottom_main.xml create mode 100644 app/src/main/res/drawable/ic_bottom_main_focused.xml create mode 100644 app/src/main/res/drawable/ic_bottom_profile.xml create mode 100644 app/src/main/res/drawable/ic_bottom_profile_focused.xml create mode 100644 app/src/main/res/drawable/ic_comment.xml create mode 100644 app/src/main/res/drawable/ic_launcher_background.xml create mode 100644 app/src/main/res/drawable/ic_launcher_foreground.xml create mode 100644 app/src/main/res/drawable/iconhashtag1.png create mode 100644 app/src/main/res/drawable/image2.png create mode 100644 app/src/main/res/drawable/image3.png create mode 100644 app/src/main/res/drawable/ixbtcom_colored_logo1.png create mode 100644 app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml create mode 100644 app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml create mode 100644 app/src/main/res/mipmap-hdpi/ic_launcher.webp create mode 100644 app/src/main/res/mipmap-hdpi/ic_launcher_round.webp create mode 100644 app/src/main/res/mipmap-mdpi/ic_launcher.webp create mode 100644 app/src/main/res/mipmap-mdpi/ic_launcher_round.webp create mode 100644 app/src/main/res/mipmap-xhdpi/ic_launcher.webp create mode 100644 app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp create mode 100644 app/src/main/res/mipmap-xxhdpi/ic_launcher.webp create mode 100644 app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp create mode 100644 app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp create mode 100644 app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp create mode 100644 app/src/main/res/values/colors.xml create mode 100644 app/src/main/res/values/strings.xml create mode 100644 app/src/main/res/values/themes.xml create mode 100644 app/src/main/res/xml/backup_rules.xml create mode 100644 app/src/main/res/xml/data_extraction_rules.xml create mode 100644 app/src/test/java/com/example/pmulabs/ExampleUnitTest.kt create mode 100644 build.gradle.kts create mode 100644 gradle.properties create mode 100644 gradle/wrapper/gradle-wrapper.jar create mode 100644 gradle/wrapper/gradle-wrapper.properties create mode 100644 gradlew create mode 100644 gradlew.bat create mode 100644 settings.gradle.kts diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..aa724b7 --- /dev/null +++ b/.gitignore @@ -0,0 +1,15 @@ +*.iml +.gradle +/local.properties +/.idea/caches +/.idea/libraries +/.idea/modules.xml +/.idea/workspace.xml +/.idea/navEditor.xml +/.idea/assetWizardSettings.xml +.DS_Store +/build +/captures +.externalNativeBuild +.cxx +local.properties diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..26d3352 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/.idea/compiler.xml b/.idea/compiler.xml new file mode 100644 index 0000000..b589d56 --- /dev/null +++ b/.idea/compiler.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/deploymentTargetDropDown.xml b/.idea/deploymentTargetDropDown.xml new file mode 100644 index 0000000..3f24034 --- /dev/null +++ b/.idea/deploymentTargetDropDown.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/gradle.xml b/.idea/gradle.xml new file mode 100644 index 0000000..ae388c2 --- /dev/null +++ b/.idea/gradle.xml @@ -0,0 +1,20 @@ + + + + + + + \ No newline at end of file diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml new file mode 100644 index 0000000..44ca2d9 --- /dev/null +++ b/.idea/inspectionProfiles/Project_Default.xml @@ -0,0 +1,41 @@ + + + + \ No newline at end of file diff --git a/.idea/kotlinc.xml b/.idea/kotlinc.xml new file mode 100644 index 0000000..0fc3113 --- /dev/null +++ b/.idea/kotlinc.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..8978d23 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,9 @@ + + + + + + + + \ No newline at end of file diff --git a/app/.gitignore b/app/.gitignore new file mode 100644 index 0000000..42afabf --- /dev/null +++ b/app/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/app/build.gradle.kts b/app/build.gradle.kts new file mode 100644 index 0000000..3e9fdaf --- /dev/null +++ b/app/build.gradle.kts @@ -0,0 +1,75 @@ +plugins { + id("com.android.application") + id("org.jetbrains.kotlin.android") +} + +android { + namespace = "com.example.pmulabs" + compileSdk = 34 + + defaultConfig { + applicationId = "com.example.pmulabs" + minSdk = 24 + targetSdk = 34 + versionCode = 1 + versionName = "1.0" + + testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" + 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 + } + kotlinOptions { + jvmTarget = "1.8" + } + buildFeatures { + compose = true + } + composeOptions { + kotlinCompilerExtensionVersion = "1.4.3" + } + packaging { + resources { + excludes += "/META-INF/{AL2.0,LGPL2.1}" + } + } +} + +dependencies { + + implementation("androidx.core:core-ktx:1.9.0") + implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.6.2") + implementation("androidx.activity:activity-compose:1.7.2") + implementation(platform("androidx.compose:compose-bom:2023.03.00")) + implementation("androidx.compose.ui:ui") + implementation("androidx.compose.ui:ui-graphics") + implementation("androidx.compose.ui:ui-tooling-preview") + implementation("androidx.compose.material3:material3:1.2.0-alpha08") + implementation("androidx.compose.ui:ui-tooling-preview-android:1.5.2") + implementation("androidx.leanback:leanback:1.0.0") + testImplementation("junit:junit:4.13.2") + androidTestImplementation("androidx.test.ext:junit:1.1.5") + androidTestImplementation("androidx.test.espresso:espresso-core:3.5.1") + androidTestImplementation(platform("androidx.compose:compose-bom:2023.03.00")) + androidTestImplementation("androidx.compose.ui:ui-test-junit4") + debugImplementation("androidx.compose.ui:ui-tooling") + debugImplementation("androidx.compose.ui:ui-test-manifest") + implementation("androidx.compose.material:material-icons-extended") + implementation("androidx.navigation:navigation-compose:2.6.0") + implementation("androidx.navigation:navigation-compose:2.4.0-alpha10") + +} \ No newline at end of file diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro new file mode 100644 index 0000000..481bb43 --- /dev/null +++ b/app/proguard-rules.pro @@ -0,0 +1,21 @@ +# 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/app/src/androidTest/java/com/example/pmulabs/ExampleInstrumentedTest.kt b/app/src/androidTest/java/com/example/pmulabs/ExampleInstrumentedTest.kt new file mode 100644 index 0000000..0eb42e3 --- /dev/null +++ b/app/src/androidTest/java/com/example/pmulabs/ExampleInstrumentedTest.kt @@ -0,0 +1,24 @@ +package com.example.pmulabs + +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.example.pmulabs", appContext.packageName) + } +} \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..c303088 --- /dev/null +++ b/app/src/main/AndroidManifest.xml @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/example/pmulabs/MainActivity.kt b/app/src/main/java/com/example/pmulabs/MainActivity.kt new file mode 100644 index 0000000..20b4f9a --- /dev/null +++ b/app/src/main/java/com/example/pmulabs/MainActivity.kt @@ -0,0 +1,24 @@ +package com.example.pmulabs + +import android.os.Bundle +import androidx.activity.ComponentActivity +import androidx.activity.compose.setContent +import androidx.activity.viewModels +import androidx.navigation.compose.rememberNavController +import com.example.pmulabs.designElem.SearchViewModel +import com.example.pmulabs.designElem.SharedViewModel +import com.example.pmulabs.graphs.RootNavigationGraph +import com.example.pmulabs.ui.theme.PMULabsTheme + +class MainActivity : ComponentActivity() { + private val searchViewModel: SearchViewModel by viewModels() + private val sharedViewModel: SharedViewModel by viewModels() + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContent { + PMULabsTheme { + RootNavigationGraph(navController = rememberNavController(),searchViewModel, sharedViewModel = sharedViewModel) + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/pmulabs/basecomponents/navigate/BackButton.kt b/app/src/main/java/com/example/pmulabs/basecomponents/navigate/BackButton.kt new file mode 100644 index 0000000..6cc6d80 --- /dev/null +++ b/app/src/main/java/com/example/pmulabs/basecomponents/navigate/BackButton.kt @@ -0,0 +1,47 @@ +package com.example.pmulabs.basecomponents.navigate + +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.offset +import androidx.compose.foundation.layout.requiredHeight +import androidx.compose.foundation.layout.requiredWidth +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.text.TextStyle +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp + +@Composable +fun BackButton(modifier: Modifier = Modifier) { + Box( + modifier = modifier + .requiredWidth(width = 80.dp) + .requiredHeight(height = 30.dp) + ) { + Box( + modifier = Modifier + .requiredWidth(width = 80.dp) + .requiredHeight(height = 30.dp) + .clip(shape = RoundedCornerShape(6.dp)) + .background(color = Color(0xff423a99))) + Text( + text = "Back", + color = Color.White, + textAlign = TextAlign.Center, + style = TextStyle( + fontSize = 20.sp, + fontWeight = FontWeight.Bold), + modifier = Modifier + .align(alignment = Alignment.TopStart) + .offset(x = 17.dp, + y = 3.dp)) + } +} + diff --git a/app/src/main/java/com/example/pmulabs/basecomponents/navigate/BottomBarScreen.kt b/app/src/main/java/com/example/pmulabs/basecomponents/navigate/BottomBarScreen.kt new file mode 100644 index 0000000..797fea2 --- /dev/null +++ b/app/src/main/java/com/example/pmulabs/basecomponents/navigate/BottomBarScreen.kt @@ -0,0 +1,87 @@ +package com.example.pmulabs.basecomponents.navigate + +import com.example.pmulabs.R + +const val SEARCH_ARGUMENT_TEXT="text" +const val CALENDAR_ARGUMENT_DATE="date" +const val SEARCHBYTAG_ARGUMENT_KEY="id" +const val ARTICLE_ARGUMENT_KEY="id" + +sealed class BottomBarScreen( + val route: String, + val title: String, + val icon: Int, + val iconFocused: Int + +){ + object Profile: BottomBarScreen( + route = "PROFILE", + title="Me", + icon= R.drawable.ic_bottom_profile, + iconFocused=R.drawable.ic_bottom_profile_focused + ) + object Categories: BottomBarScreen( + route = "CATEGORIES", + title="Tags", + icon= R.drawable.ic_bottom_categories, + iconFocused=R.drawable.ic_bottom_categories_focused + ) + object Main: BottomBarScreen( + route = "MAIN", + title="Main", + icon= R.drawable.ic_bottom_main, + iconFocused=R.drawable.ic_bottom_main_focused + ) + object ArticlePage: BottomBarScreen( + route = "ARTICLEPAGE/{$ARTICLE_ARGUMENT_KEY}", + title="Article", + icon= R.drawable.ic_bottom_main, + iconFocused=R.drawable.ic_bottom_main_focused + ){ + fun passId(id: String): String{ + return "ARTICLEPAGE/$id" + } + } + object Search: BottomBarScreen( + route = "SEARCH/{$SEARCH_ARGUMENT_TEXT}", + title="Search", + icon= R.drawable.ic_bottom_main, + iconFocused=R.drawable.ic_bottom_main_focused + ){ + fun passText(text: String): String{ + return "SEARCH/$text" + } + } + object Calendar: BottomBarScreen( + route = "CALENDAR/{$CALENDAR_ARGUMENT_DATE}", + title="Calendar", + icon= R.drawable.ic_bottom_main, + iconFocused=R.drawable.ic_bottom_main_focused + ){ + fun passDate(date: String): String{ + return "CALENDAR/$date" + } + } + object SearchByTag: BottomBarScreen( + route = "SEARCHBYTAG/{$SEARCHBYTAG_ARGUMENT_KEY}", + title="SEARCHBYTAG", + icon= R.drawable.ic_bottom_main, + iconFocused=R.drawable.ic_bottom_main_focused + ){ + fun passId(id: String): String{ + return "SEARCHBYTAG/$id" + } + } + object Cooperation: BottomBarScreen( + route = "COOPERATION", + title="Coop", + icon= R.drawable.ic_bottom_cooperation, + iconFocused=R.drawable.ic_bottom_cooperation_focused + ) + object Info: BottomBarScreen( + route = "INFO", + title="Info", + icon= R.drawable.ic_bottom_info, + iconFocused=R.drawable.ic_bottom_info_focused + ) +} diff --git a/app/src/main/java/com/example/pmulabs/basecomponents/navigate/EmailTextInput.kt b/app/src/main/java/com/example/pmulabs/basecomponents/navigate/EmailTextInput.kt new file mode 100644 index 0000000..0dddc3e --- /dev/null +++ b/app/src/main/java/com/example/pmulabs/basecomponents/navigate/EmailTextInput.kt @@ -0,0 +1,63 @@ +package com.example.pmulabs.basecomponents.navigate + +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.requiredHeight +import androidx.compose.foundation.layout.requiredWidth +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.foundation.text.KeyboardOptions +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.Text +import androidx.compose.material3.TextField +import androidx.compose.material3.TextFieldDefaults +import androidx.compose.runtime.Composable +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.text.input.KeyboardType +import androidx.compose.ui.unit.dp + +@OptIn(ExperimentalMaterial3Api::class) +@Composable +fun EmailTextField(email: String, onEmailChange: (String) -> Unit) { + TextField( + value = email, + onValueChange = { + onEmailChange(it) + }, + colors = TextFieldDefaults.textFieldColors( + containerColor = Color.White + ), + modifier = Modifier + .requiredWidth(width = 269.dp) + .requiredHeight(height = 53.dp) + .shadow(shape = RoundedCornerShape(40.dp), elevation = 5.dp) + .clip(shape = RoundedCornerShape(40.dp)), + label = { Text("Email") }, + placeholder = { Text("Email") }, + keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Email), + singleLine = true, + ) +} + +fun isValidEmail(email: String): Boolean { + val emailRegex = "[a-zA-Z0-9._-]+@[a-z]+\\.+[a-z]+".toRegex() + return email.matches(emailRegex) +} + +@Composable +fun ValidateEmail(email: String, onEmailChange: (String) -> Unit) { + + Column (modifier = Modifier.padding(16.dp)) { + EmailTextField(email = email, onEmailChange = { onEmailChange(it)}) + + if (email.isNotEmpty()) { + if (isValidEmail(email)) { + Text(text = "Email is valid", color = Color(0xFF5D925E)) + } else { + Text(text = "Email is not valid", color = Color(0xFF94474D)) + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/pmulabs/designElem/ArticleItem.kt b/app/src/main/java/com/example/pmulabs/designElem/ArticleItem.kt new file mode 100644 index 0000000..e79539b --- /dev/null +++ b/app/src/main/java/com/example/pmulabs/designElem/ArticleItem.kt @@ -0,0 +1,191 @@ +package com.example.pmulabs.designElem + +import androidx.compose.foundation.BorderStroke +import androidx.compose.foundation.Image +import androidx.compose.foundation.background +import androidx.compose.foundation.border +import androidx.compose.foundation.clickable +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.offset +import androidx.compose.foundation.layout.requiredHeight +import androidx.compose.foundation.layout.requiredWidth +import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.lazy.LazyRow +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material3.Card +import androidx.compose.material3.CardDefaults +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.text.TextStyle +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import com.example.pmulabs.R +import com.example.pmulabs.models.Article +import com.example.pmulabs.repository.CommentRepository +import com.example.pmulabs.repository.TegRepository +import java.text.SimpleDateFormat + +@Composable +fun ArticleItem(article: Article,modifier: Modifier = Modifier,onArticleClick: () -> Unit) { + + val tagRepository= TegRepository() + val getAllData= tagRepository.getAllData() + val commRepository= CommentRepository() + val countComm= commRepository.getCountComment(article.id) + val formatter = SimpleDateFormat("dd.MM.YY") + val publishDate=formatter.format(article.publishDate) + var tagName="" + getAllData.forEach{teg -> + if(article.tagId == teg.id){ + tagName=teg.title + } + } + + Card( + colors = CardDefaults.outlinedCardColors( + containerColor = Color.White, + contentColor = Color(0xff423a99) + ), + border = BorderStroke(3.dp, Color(0xffdbdbf1)), + modifier = modifier + .clip(shape = RoundedCornerShape(5.dp)) + .clickable{onArticleClick()} + ) { + Box( + modifier = Modifier + .requiredWidth(width = 393.dp) + .requiredHeight(height = 199.dp) + ) { + Card( + colors = CardDefaults.outlinedCardColors( + containerColor = Color.White + ), + border = BorderStroke(3.dp, Color(0xffdbdbf1)), + content = {}, + modifier = Modifier + .requiredWidth(width = 393.dp) + .requiredHeight(height = 199.dp) + .clip(shape = RoundedCornerShape(5.dp)) + .background(color = Color.White) + .border(border = BorderStroke(3.dp, Color(0xffdbdbf1)), + shape = RoundedCornerShape(5.dp))) + LazyRow( + modifier = Modifier + .requiredWidth(width = 387.dp) + .requiredHeight(height = 199.dp) + ) { + item { + Image( + painter = painterResource(id = R.drawable.image2), + contentDescription = "image 2", + modifier = Modifier + .requiredWidth(width = 180.dp) + .requiredHeight(height = 199.dp) + .clip(shape = RoundedCornerShape(5.dp)) + .border(border = BorderStroke(3.dp, Color(0xffdbdbf1)), + shape = RoundedCornerShape(5.dp))) + } + item { + Column( + modifier = Modifier + .align(alignment = Alignment.TopStart) + .offset(x = 5.dp, + y = 8.dp) + .requiredWidth(width = 201.dp) + .requiredHeight(height = 177.dp) + ) { + LazyColumn( + modifier = Modifier + .requiredWidth(width = 201.dp) + .requiredHeight(height = 150.dp) + ) { + item { + LazyRow( + modifier = Modifier + .requiredWidth(width = 150.dp) + .requiredHeight(height = 20.dp) + ) { + item { + Text( + text = "${publishDate}", + color = Color(0xff423a99), + style = TextStyle( + fontSize = 17.sp)) + } + item { + Text( + text = "#${tagName}", + color = Color(0xff423a99), + style = TextStyle( + fontSize = 17.sp), + modifier = Modifier + //.align(alignment = Alignment.TopStart) + .offset(x = 12.dp, + y = 0.dp)) + } + } + } + item { + Text( + text = "${article.title}", + maxLines=4, + color = Color(0xff423a99), + style = TextStyle( + fontSize = 20.sp, + fontWeight = FontWeight.Bold), + modifier = Modifier + //.align(alignment = Alignment.TopStart) + .offset(x = 0.dp, + y = 15.dp) + .requiredWidth(width = 201.dp) + .requiredHeight(height = 100.dp)) + } + } + LazyRow( + modifier = Modifier + //.align(alignment = Alignment.TopStart) + .offset(x = 3.dp, + y = 5.dp) + .requiredWidth(width = 80.dp) + .requiredHeight(height = 25.dp) + ) { + item { + Row( + modifier = Modifier + .requiredWidth(width = 58.dp) + .requiredHeight(height = 22.dp) + ) { + Image( + painter = painterResource(id = R.drawable.ic_comment), + contentDescription = "icon \"heart\"", + modifier = Modifier + .requiredWidth(width = 25.dp) + .requiredHeight(height = 22.dp)) + Text( + text = "${countComm}", + color = Color(0xff423a99), + style = TextStyle( + fontSize = 17.sp), + modifier = Modifier + //.align(alignment = Alignment.TopStart) + .offset(x = 5.dp, + y = 1.dp)) + } + } + } + } + } + } + } + } +} + + diff --git a/app/src/main/java/com/example/pmulabs/designElem/BottomBar.kt b/app/src/main/java/com/example/pmulabs/designElem/BottomBar.kt new file mode 100644 index 0000000..3b66a51 --- /dev/null +++ b/app/src/main/java/com/example/pmulabs/designElem/BottomBar.kt @@ -0,0 +1,132 @@ +package com.example.pmulabs.designElem + +import androidx.compose.animation.AnimatedVisibility +import androidx.compose.foundation.background +import androidx.compose.foundation.clickable +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.RowScope +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.shape.CircleShape +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material3.Icon +import androidx.compose.material3.NavigationBar +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.unit.dp +import androidx.navigation.NavController +import androidx.navigation.NavDestination +import androidx.navigation.NavDestination.Companion.hierarchy +import androidx.navigation.NavGraph.Companion.findStartDestination +import androidx.navigation.NavHostController +import androidx.navigation.compose.currentBackStackEntryAsState +import com.example.pmulabs.basecomponents.navigate.BottomBarScreen + +@Composable +fun BottomBar(navController: NavHostController){ + val screens = listOf( + BottomBarScreen.Profile, + BottomBarScreen.Categories, + BottomBarScreen.Main, + BottomBarScreen.Cooperation, + BottomBarScreen.Info + ) + val navBackStackEntry by navController.currentBackStackEntryAsState() + val currentDestination=navBackStackEntry?.destination + val bottomBarDestination=screens.any{ it.route==currentDestination?.route } + Row( + modifier = Modifier + .padding(start = 17.dp, end = 17.dp, top = 8.dp, bottom = 8.dp) + .background(Color.Transparent), + horizontalArrangement = Arrangement.SpaceEvenly, + verticalAlignment = Alignment.CenterVertically + ) { + if (bottomBarDestination) { + NavigationBar( + containerColor = Color(0xFFDBDBF1), + modifier = Modifier + .height(40.dp) + .clip(shape = RoundedCornerShape(20.dp)) + ) { + screens.forEach { screen -> + AddItem( + screen = screen, + currentDestination = currentDestination, + navController = navController + ) + } + } + } + } +} + +@Composable +fun RowScope.AddItem( + screen: BottomBarScreen, + currentDestination: NavDestination?, + navController: NavController +){ + val selected = currentDestination?.hierarchy?.any { it.route == screen.route } == true + + val background = if (selected) Color(0xff423a99) else Color.Transparent + + val contentColor = + if (selected) Color.White else Color(0xff423a99) + + Box( + modifier = Modifier + .height(40.dp) + .clip(CircleShape) + .background(background) + .clickable(onClick = { + navController.navigate(screen.route) { + popUpTo(navController.graph.findStartDestination().id) + launchSingleTop = true + } + }) + ) { + Row( + modifier = Modifier + .padding(start = 17.dp, end = 17.dp, top = 8.dp, bottom = 8.dp), + verticalAlignment = Alignment.CenterVertically, + horizontalArrangement = Arrangement.spacedBy(4.dp) + ) { + Icon( + painter = painterResource(id = if (selected) screen.iconFocused else screen.icon), + contentDescription = "icon", + tint = Color.Unspecified + ) + AnimatedVisibility(visible = selected) { + Text( + text = screen.title, + color = contentColor + ) + } + } + } + + /*NavigationBarItem( + label = { + Text(text=screen.title, color = Color(0xff423a99)) + }, + icon = { + Icon( + painter = painterResource(id = screen.icon), + tint = Color.Unspecified, + contentDescription = "navigation icon") + }, + selected = selected, + onClick = { + navController.navigate(screen.route) + } + + )*/ +} diff --git a/app/src/main/java/com/example/pmulabs/designElem/CommentItem.kt b/app/src/main/java/com/example/pmulabs/designElem/CommentItem.kt new file mode 100644 index 0000000..37c70f3 --- /dev/null +++ b/app/src/main/java/com/example/pmulabs/designElem/CommentItem.kt @@ -0,0 +1,76 @@ +package com.example.pmulabs.designElem + +import androidx.compose.foundation.BorderStroke +import androidx.compose.foundation.background +import androidx.compose.foundation.border +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.offset +import androidx.compose.foundation.layout.requiredHeight +import androidx.compose.foundation.layout.requiredWidth +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material3.HorizontalDivider +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.text.TextStyle +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import com.example.pmulabs.models.Comment +import com.example.pmulabs.repository.UserRepository + +@Composable +fun CommentItem(modifier: Modifier = Modifier,comm : Comment) { + + val userRep= UserRepository() + val user=userRep.getUserById(comm.userId.toString()) + + Box( + modifier = modifier + .requiredWidth(width = 376.dp) + .requiredHeight(height = 105.dp) + .offset( + y=10.dp + ) + ) { + Box( + modifier = Modifier + .requiredWidth(width = 376.dp) + .requiredHeight(height = 87.dp) + .clip(shape = RoundedCornerShape(10.dp)) + .background(color = Color.White) + .border(border = BorderStroke(3.dp, Color(0xff423a99)), + shape = RoundedCornerShape(10.dp))) + HorizontalDivider( + thickness=3.dp, + modifier = Modifier + .align(alignment = Alignment.TopStart) + .offset(x = 1.dp, + y = 31.dp) + .requiredWidth(width = 374.dp), color = Color(0xff423a99) + ) + Text( + text = "${user.nickname}", + color = Color(0xff423a99), + style = TextStyle( + fontSize = 15.sp, + fontWeight = FontWeight.Bold), + modifier = Modifier + .align(alignment = Alignment.TopStart) + .offset(x = 13.dp, + y = 7.dp)) + Text( + text = "${comm.text}", + color = Color(0xff423a99), + style = TextStyle( + fontSize = 15.sp, + fontWeight = FontWeight.Bold), + modifier = Modifier + .align(alignment = Alignment.TopStart) + .offset(x = 13.dp, + y = 36.dp)) + } +} diff --git a/app/src/main/java/com/example/pmulabs/designElem/LeftCircles.kt b/app/src/main/java/com/example/pmulabs/designElem/LeftCircles.kt new file mode 100644 index 0000000..d7798c0 --- /dev/null +++ b/app/src/main/java/com/example/pmulabs/designElem/LeftCircles.kt @@ -0,0 +1,60 @@ +package com.example.pmulabs.designElem + +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.offset +import androidx.compose.foundation.layout.requiredHeight +import androidx.compose.foundation.layout.requiredSize +import androidx.compose.foundation.layout.requiredWidth +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.draw.rotate +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import androidx.compose.foundation.shape.CircleShape + +@Composable +fun LeftCircles(modifier: Modifier = Modifier) { + Box( + modifier = modifier + .requiredWidth(width = 250.dp) + .requiredHeight(height = 290.dp) + .rotate(degrees = -13.96f) + ) { + Box( + modifier = Modifier + .align(alignment = Alignment.TopStart) + .offset(x = 166.4320068359375.dp, + y = 30.8746337890625.dp) + .requiredWidth(width = 122.dp) + .requiredHeight(height = 115.dp) + .clip(shape = CircleShape) + .background(color = Color(0xff423a99).copy(alpha = 0.7f))) + Box( + modifier = Modifier + .align(alignment = Alignment.TopStart) + .offset(x = (-0.000030517578125).dp, + y = 145.57101440429688.dp) + .requiredWidth(width = 144.dp) + .requiredHeight(height = 140.dp) + .clip(shape = CircleShape) + .background(color = Color(0xff423a99).copy(alpha = 0.7f))) + Box( + modifier = Modifier + .align(alignment = Alignment.TopStart) + .offset(x = 74.10296630859375.dp, + y = 48.450347900390625.dp) + .requiredSize(size = 155.dp) + .clip(shape = CircleShape) + .background(color = Color(0xffb7b7e3).copy(alpha = 0.5f))) + } +} + +@Preview(widthDp = 250, heightDp = 290) +@Composable +private fun LeftCirclesPreview() { + LeftCircles(Modifier) +} \ No newline at end of file diff --git a/app/src/main/java/com/example/pmulabs/designElem/LogoMobile.kt b/app/src/main/java/com/example/pmulabs/designElem/LogoMobile.kt new file mode 100644 index 0000000..48a260e --- /dev/null +++ b/app/src/main/java/com/example/pmulabs/designElem/LogoMobile.kt @@ -0,0 +1,52 @@ +package com.example.pmulabs.designElem + +import androidx.compose.foundation.Image +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.offset +import androidx.compose.foundation.layout.requiredHeight +import androidx.compose.foundation.layout.requiredWidth +import androidx.compose.foundation.shape.CircleShape +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.draw.rotate +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import com.example.pmulabs.R + +@Composable +fun LogoMobile(modifier: Modifier = Modifier) { + Box( + modifier = modifier + .requiredWidth(width = 250.dp) + .requiredHeight(height = 138.dp) + ) { + Image( + painter = painterResource(id = R.drawable.ellipse7), + contentDescription = "Ellipse 7", + modifier = Modifier + .fillMaxWidth() + .requiredHeight(height = 115.dp) + ) + Image( + painter = painterResource(id = R.drawable.ixbtcom_colored_logo1), + contentDescription = "IXBT.com_colored_logo 1", + modifier = Modifier + .align(alignment = Alignment.TopStart) + .offset(x = 0.dp, + y = 0.dp) + .fillMaxWidth() + .requiredHeight(height = 113.dp)) + } +} + +@Preview(widthDp = 250, heightDp = 138) +@Composable +private fun LogoMobilePreview() { + LogoMobile(Modifier) +} \ No newline at end of file diff --git a/app/src/main/java/com/example/pmulabs/designElem/RightCircles.kt b/app/src/main/java/com/example/pmulabs/designElem/RightCircles.kt new file mode 100644 index 0000000..13b564a --- /dev/null +++ b/app/src/main/java/com/example/pmulabs/designElem/RightCircles.kt @@ -0,0 +1,59 @@ +package com.example.pmulabs.designElem + +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.offset +import androidx.compose.foundation.layout.requiredHeight +import androidx.compose.foundation.layout.requiredSize +import androidx.compose.foundation.layout.requiredWidth +import androidx.compose.foundation.shape.CircleShape +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.draw.rotate +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp + +@Composable +fun RightCircles(modifier: Modifier = Modifier) { + Box( + modifier = modifier + .requiredWidth(width = 355.dp) + .requiredHeight(height = 267.dp) + .rotate(degrees = -6.33f) + ) { + Box( + modifier = Modifier + .align(alignment = Alignment.TopStart) + .offset(x = 171.71197509765625.dp, + y = 17.979248046875.dp) + .requiredWidth(width = 192.dp) + .requiredHeight(height = 179.dp) + .clip(shape = CircleShape) + .background(color = Color(0xff423a99).copy(alpha = 0.7f))) + Box( + modifier = Modifier + .align(alignment = Alignment.TopStart) + .offset(x = 86.4691162109375.dp, + y = 75.193603515625.dp) + .requiredSize(size = 201.dp) + .clip(shape = CircleShape) + .background(color = Color(0xff423a99).copy(alpha = 0.7f))) + Box( + modifier = Modifier + .align(alignment = Alignment.TopStart) + .offset(x = 0.7720947265625.dp, + y = 122.24951171875.dp) + .requiredSize(size = 137.dp) + .clip(shape = CircleShape) + .background(color = Color(0xffb7b7e3).copy(alpha = 0.5f))) + } +} + +@Preview(widthDp = 355, heightDp = 267) +@Composable +private fun RightCirclesPreview() { + RightCircles(Modifier) +} \ No newline at end of file diff --git a/app/src/main/java/com/example/pmulabs/designElem/SearchViewModel.kt b/app/src/main/java/com/example/pmulabs/designElem/SearchViewModel.kt new file mode 100644 index 0000000..6c2d465 --- /dev/null +++ b/app/src/main/java/com/example/pmulabs/designElem/SearchViewModel.kt @@ -0,0 +1,29 @@ +package com.example.pmulabs.designElem + +import androidx.compose.runtime.MutableState +import androidx.compose.runtime.State +import androidx.compose.runtime.mutableStateOf +import androidx.lifecycle.ViewModel +import com.example.pmulabs.screensMobile.MainScreen + +class SearchViewModel : ViewModel() { + + private val _searchWidgetState: MutableState = + mutableStateOf(value = SearchWidget.CLOSED) + + val searchWidgetState: State = _searchWidgetState + + private val _searchTextState: MutableState = + mutableStateOf(value = "") + + val searchTextState: State = _searchTextState + + fun updateSearchWidgetState(newValue: SearchWidget) { + _searchWidgetState.value = newValue + } + + fun updateSearchTextState(newValue: String) { + _searchTextState.value = newValue + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/example/pmulabs/designElem/SearchWidget.kt b/app/src/main/java/com/example/pmulabs/designElem/SearchWidget.kt new file mode 100644 index 0000000..54a5e1e --- /dev/null +++ b/app/src/main/java/com/example/pmulabs/designElem/SearchWidget.kt @@ -0,0 +1,6 @@ +package com.example.pmulabs.designElem + +enum class SearchWidget { + OPENED, + CLOSED +} \ No newline at end of file diff --git a/app/src/main/java/com/example/pmulabs/designElem/SharedViewModel.kt b/app/src/main/java/com/example/pmulabs/designElem/SharedViewModel.kt new file mode 100644 index 0000000..f292ba1 --- /dev/null +++ b/app/src/main/java/com/example/pmulabs/designElem/SharedViewModel.kt @@ -0,0 +1,12 @@ +package com.example.pmulabs.designElem + +import androidx.compose.runtime.mutableStateOf +import androidx.lifecycle.ViewModel + +class SharedViewModel : ViewModel() { + val argument = mutableStateOf(null) + + fun setArgument(arg: String) { + argument.value = arg + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/pmulabs/designElem/TagItem.kt b/app/src/main/java/com/example/pmulabs/designElem/TagItem.kt new file mode 100644 index 0000000..3c4f914 --- /dev/null +++ b/app/src/main/java/com/example/pmulabs/designElem/TagItem.kt @@ -0,0 +1,63 @@ +package com.example.pmulabs.designElem + +import androidx.compose.foundation.background +import androidx.compose.foundation.clickable +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.offset +import androidx.compose.foundation.layout.requiredHeight +import androidx.compose.foundation.layout.requiredWidth +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material3.Icon +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.text.TextStyle +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import com.example.pmulabs.R +import com.example.pmulabs.models.Teg + +@Composable +fun TagItem(teg: Teg, modifier: Modifier = Modifier,onTagClick: () -> Unit) { + Box( + modifier = modifier + .requiredWidth(width = 365.dp) + .requiredHeight(height = 58.dp) + ) { + Box( + modifier = Modifier + .requiredWidth(width = 365.dp) + .requiredHeight(height = 58.dp) + .clip(shape = RoundedCornerShape(15.dp)) + .background(color = Color(0xFFDBDBF1)) + .clickable { onTagClick() } + ) + Icon( + painter = painterResource(id = R.drawable.iconhashtag1), + tint= Color(0xff423a99), + contentDescription = "icon \"hashtag 1\"", + modifier = Modifier + .align(alignment = Alignment.TopStart) + .offset(x = 20.dp, + y = 14.dp) + .requiredWidth(width = 31.dp) + .requiredHeight(height = 29.dp)) + Text( + text = "${teg.title}", + color = Color(0xff423a99), + textAlign = TextAlign.Center, + style = TextStyle( + fontSize = 24.sp, + fontWeight = FontWeight.Bold), + modifier = Modifier + .align(alignment = Alignment.TopStart) + .offset(x = 64.dp, + y = 14.dp)) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/pmulabs/designElem/TopBar.kt b/app/src/main/java/com/example/pmulabs/designElem/TopBar.kt new file mode 100644 index 0000000..e1ac41a --- /dev/null +++ b/app/src/main/java/com/example/pmulabs/designElem/TopBar.kt @@ -0,0 +1,155 @@ +package com.example.pmulabs.designElem + +import androidx.compose.foundation.Image +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.offset +import androidx.compose.foundation.layout.requiredHeight +import androidx.compose.foundation.text.KeyboardActions +import androidx.compose.foundation.text.KeyboardOptions +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.CalendarToday +import androidx.compose.material.icons.filled.Close +import androidx.compose.material.icons.filled.Search +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.Icon +import androidx.compose.material3.IconButton +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Surface +import androidx.compose.material3.Text +import androidx.compose.material3.TextField +import androidx.compose.material3.TextFieldDefaults +import androidx.compose.material3.TopAppBar +import androidx.compose.material3.TopAppBarDefaults +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.text.TextStyle +import androidx.compose.ui.text.input.ImeAction +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import com.example.pmulabs.R + +@OptIn(ExperimentalMaterial3Api::class) +@Composable +fun TopBar(onSearchClicked:() -> Unit, onCalendarClicked: () -> Unit) { + TopAppBar( + colors = TopAppBarDefaults.smallTopAppBarColors(containerColor = Color(0xff423a99) ), + title = { + Image( + painter = painterResource(id = R.drawable.ellipse7), + contentDescription = "Ellipse 7", + modifier = Modifier + .requiredHeight(height = 62.dp) + ) + Image( + painter = painterResource(id = R.drawable.ixbtcom_colored_logo1), + contentDescription = "IXBT.com_colored_logo 1", + modifier = Modifier + .offset( + x = 4.dp, + y = 0.dp + ) + .requiredHeight(height = 60.dp) + ) + }, + actions = { + IconButton(onClick = { onSearchClicked() }) { + Icon( + imageVector = Icons.Filled.Search, + contentDescription = "Search Icon", + tint = Color.White + ) + } + IconButton(onClick = { onCalendarClicked() }) { + Icon( + imageVector = Icons.Filled.CalendarToday, + contentDescription = "Calendar Icon", + tint = Color.White + ) + } + }) + } + +@OptIn(ExperimentalMaterial3Api::class) +@Composable +fun SearchAppBar( + text: String, + onTextChange: (String) -> Unit, + onCloseClicked: () -> Unit, + onSearchClicked: (String) -> Unit +){ + Surface( + modifier = Modifier + .fillMaxWidth() + .height(62.dp), + color = Color(0xff423a99) + ) { + TextField( + colors=TextFieldDefaults.textFieldColors( + Color.White, containerColor = Color(0xff423a99) + ), + modifier = Modifier + .fillMaxWidth(), + value=text, + onValueChange={ + onTextChange(it) + }, + placeholder = { + Text( + text ="Search...", + color = Color.White + ) + }, + textStyle = TextStyle( + fontSize = MaterialTheme.typography.titleMedium.fontSize + ), + singleLine = true, + leadingIcon = { + IconButton( + onClick = { } + ) { + Icon(imageVector = Icons.Default.Search, + contentDescription = "Search Icon", + tint = Color.White) + } + }, + trailingIcon = { + IconButton( + onClick = { + if(text.isNotEmpty()){ + onTextChange("") + }else{ + onCloseClicked() + } + } + ) { + Icon(imageVector = Icons.Default.Close, + contentDescription = "Close Icon", + tint = Color.White) + } + }, + keyboardOptions = KeyboardOptions( + imeAction = ImeAction.Search, + ), + keyboardActions = KeyboardActions( + onSearch = { + onSearchClicked(text) + } + ) + ) + } +} + +@Composable +@Preview +fun TopBarPreview(){ + TopBar(onSearchClicked = {},onCalendarClicked = {}) +} + +@Composable +@Preview +fun SearchBarPreview(){ + SearchAppBar(text = "вапвапв", onSearchClicked = {}, onCloseClicked = {}, onTextChange = {}) +} \ No newline at end of file diff --git a/app/src/main/java/com/example/pmulabs/graphs/AuthNavGraph.kt b/app/src/main/java/com/example/pmulabs/graphs/AuthNavGraph.kt new file mode 100644 index 0000000..b622a04 --- /dev/null +++ b/app/src/main/java/com/example/pmulabs/graphs/AuthNavGraph.kt @@ -0,0 +1,34 @@ +package com.example.pmulabs.graphs + +import androidx.compose.ui.Modifier +import androidx.navigation.NavGraphBuilder +import androidx.navigation.NavHostController +import androidx.navigation.compose.composable +import androidx.navigation.navigation +import com.example.pmulabs.designElem.SharedViewModel +import com.example.pmulabs.screensMobile.EntryScreen +import com.example.pmulabs.screensMobile.RegisterScreen +import com.example.pmulabs.screensMobile.SplashScreen + +fun NavGraphBuilder.authNavGraph(navController: NavHostController,sharedViewModel: SharedViewModel){ + navigation( + route=Graph.AUTHENTICATION, + startDestination = AuthScreen.Splash.route + ){ + composable(route=AuthScreen.Splash.route){ + SplashScreen(navController = navController, Modifier) + } + composable(route=AuthScreen.Entry.route){ + EntryScreen(navController = navController, Modifier,sharedViewModel) + } + composable(route=AuthScreen.Register.route){ + RegisterScreen(navController = navController, Modifier) + } + } +} + +sealed class AuthScreen(val route: String){ + object Splash : AuthScreen(route = "SPLASH") + object Entry : AuthScreen(route = "ENTRY") + object Register : AuthScreen(route="REGISTER") +} \ No newline at end of file diff --git a/app/src/main/java/com/example/pmulabs/graphs/HomeNavGraph.kt b/app/src/main/java/com/example/pmulabs/graphs/HomeNavGraph.kt new file mode 100644 index 0000000..d7dd5d2 --- /dev/null +++ b/app/src/main/java/com/example/pmulabs/graphs/HomeNavGraph.kt @@ -0,0 +1,83 @@ +package com.example.pmulabs.graphs + +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.navigation.NavHostController +import androidx.navigation.NavType +import androidx.navigation.compose.NavHost +import androidx.navigation.compose.composable +import androidx.navigation.navArgument +import com.example.pmulabs.basecomponents.navigate.ARTICLE_ARGUMENT_KEY +import com.example.pmulabs.basecomponents.navigate.BottomBarScreen +import com.example.pmulabs.basecomponents.navigate.CALENDAR_ARGUMENT_DATE +import com.example.pmulabs.basecomponents.navigate.SEARCHBYTAG_ARGUMENT_KEY +import com.example.pmulabs.basecomponents.navigate.SEARCH_ARGUMENT_TEXT +import com.example.pmulabs.designElem.SharedViewModel +import com.example.pmulabs.screensMobile.ArticlePageScreen +import com.example.pmulabs.screensMobile.CalendarScreen +import com.example.pmulabs.screensMobile.CoopScreen +import com.example.pmulabs.screensMobile.InfoScreen +import com.example.pmulabs.screensMobile.MainScreen +import com.example.pmulabs.screensMobile.ProfileScreen +import com.example.pmulabs.screensMobile.SearchByTagScreen +import com.example.pmulabs.screensMobile.SearchScreen +import com.example.pmulabs.screensMobile.TagsScreen + +@Composable +fun HomeNavGraph(navController: NavHostController,sharedViewModel: SharedViewModel){ + NavHost( + navController = navController, + route = Graph.MAIN, + startDestination = BottomBarScreen.Main.route + ){ + composable( + route=BottomBarScreen.Main.route + ){ + MainScreen(navController,Modifier) + } + composable( + route=BottomBarScreen.SearchByTag.route, + arguments = listOf(navArgument(SEARCHBYTAG_ARGUMENT_KEY){ + type= NavType.StringType + }) + ){ + SearchByTagScreen(navController,Modifier) + } + composable( + route=BottomBarScreen.ArticlePage.route, + arguments = listOf(navArgument(ARTICLE_ARGUMENT_KEY){ + type= NavType.StringType + }) + ){ + ArticlePageScreen(navController,Modifier) + } + composable( + route=BottomBarScreen.Search.route, + arguments = listOf(navArgument(SEARCH_ARGUMENT_TEXT){ + type= NavType.StringType + }) + ){ + SearchScreen(navController,Modifier) + } + composable( + route=BottomBarScreen.Calendar.route, + arguments = listOf(navArgument(CALENDAR_ARGUMENT_DATE){ + type= NavType.StringType + }) + ){ + CalendarScreen(navController,Modifier) + } + composable(route=BottomBarScreen.Profile.route){ + ProfileScreen(navController,Modifier,sharedViewModel) + } + composable(route=BottomBarScreen.Info.route){ + InfoScreen(navController,Modifier) + } + composable(route=BottomBarScreen.Cooperation.route){ + CoopScreen(navController,Modifier) + } + composable(route=BottomBarScreen.Categories.route){ + TagsScreen(navController,Modifier) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/pmulabs/graphs/RootNavGraph.kt b/app/src/main/java/com/example/pmulabs/graphs/RootNavGraph.kt new file mode 100644 index 0000000..37faec4 --- /dev/null +++ b/app/src/main/java/com/example/pmulabs/graphs/RootNavGraph.kt @@ -0,0 +1,39 @@ +package com.example.pmulabs.graphs + +import androidx.compose.runtime.Composable +import androidx.navigation.NavHostController +import androidx.navigation.NavType +import androidx.navigation.compose.NavHost +import androidx.navigation.compose.composable +import androidx.navigation.navArgument +import com.example.pmulabs.designElem.SearchViewModel +import com.example.pmulabs.designElem.SharedViewModel +import com.example.pmulabs.screensMobile.LoadScreen + +const val USERID_ARGUMENT="userId" + +@Composable +fun RootNavigationGraph(navController: NavHostController,searchViewModel: SearchViewModel, sharedViewModel: SharedViewModel){ + NavHost( + navController=navController, + route = Graph.ROOT, + startDestination = Graph.AUTHENTICATION + ){ + authNavGraph(navController=navController,sharedViewModel) + composable(route=Graph.MAIN, + arguments = listOf(navArgument(USERID_ARGUMENT){ + type= NavType.StringType + })){ + LoadScreen(searchViewModel = searchViewModel, sharedViewModel = sharedViewModel) + } + } +} + +object Graph{ + const val ROOT="root_graph" + const val AUTHENTICATION="auth_graph" + const val MAIN="main_graph/{$USERID_ARGUMENT}" + fun passUserId(userId: String): String{ + return "main_graph/$userId" + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/pmulabs/models/Article.kt b/app/src/main/java/com/example/pmulabs/models/Article.kt new file mode 100644 index 0000000..038bb5e --- /dev/null +++ b/app/src/main/java/com/example/pmulabs/models/Article.kt @@ -0,0 +1,11 @@ +package com.example.pmulabs.models + +import java.util.Date + +data class Article( + val id: Int, + val title: String, + val text: String, + val publishDate: Date, + val tagId: Int +) \ No newline at end of file diff --git a/app/src/main/java/com/example/pmulabs/models/Comment.kt b/app/src/main/java/com/example/pmulabs/models/Comment.kt new file mode 100644 index 0000000..5acb650 --- /dev/null +++ b/app/src/main/java/com/example/pmulabs/models/Comment.kt @@ -0,0 +1,8 @@ +package com.example.pmulabs.models + +data class Comment( + val id: Int, + val userId: Int, + val text: String, + val articleId: Int +) diff --git a/app/src/main/java/com/example/pmulabs/models/Teg.kt b/app/src/main/java/com/example/pmulabs/models/Teg.kt new file mode 100644 index 0000000..f96d3e9 --- /dev/null +++ b/app/src/main/java/com/example/pmulabs/models/Teg.kt @@ -0,0 +1,6 @@ +package com.example.pmulabs.models + +data class Teg( + val id: Int, + val title: String, +) \ No newline at end of file diff --git a/app/src/main/java/com/example/pmulabs/models/User.kt b/app/src/main/java/com/example/pmulabs/models/User.kt new file mode 100644 index 0000000..b24c870 --- /dev/null +++ b/app/src/main/java/com/example/pmulabs/models/User.kt @@ -0,0 +1,9 @@ +package com.example.pmulabs.models + +data class User( + val id: Int, + val nickname: String, + val email: String, + val password: String, + val role: String +) \ No newline at end of file diff --git a/app/src/main/java/com/example/pmulabs/repository/ArticleRepository.kt b/app/src/main/java/com/example/pmulabs/repository/ArticleRepository.kt new file mode 100644 index 0000000..eede451 --- /dev/null +++ b/app/src/main/java/com/example/pmulabs/repository/ArticleRepository.kt @@ -0,0 +1,70 @@ +package com.example.pmulabs.repository + +import com.example.pmulabs.models.Article +import java.util.Date + +class ArticleRepository { + fun getArticleById(articleId : String): Article { + return getAllData()[articleId.toInt()] + } + fun getAllData(): List
{ + return listOf( + Article( + id=0, + title = "Заголовок 1", + text = "Текст статьи с заголовком 1", + publishDate = Date(2023,5,22), + tagId=5 + ), + Article( + id=1, + title = "Заголовок 2", + text = "Текст статьи с заголовком 2", + publishDate = Date(2022,11,13), + tagId=1 + ), + Article( + id=2, + title = "Заголовок 3", + text = "Текст статьи с заголовком 3", + publishDate = Date(2023,5,4), + tagId=0 + ), + Article( + id=3, + title = "Заголовок 4", + text = "Текст статьи с заголовком 4", + publishDate = Date(2023,2,14), + tagId=2 + ), + Article( + id=4, + title = "Заголовок 5", + text = "Текст статьи с заголовком 5", + publishDate = Date(2023,0,19), + tagId=3 + ), + Article( + id=5, + title = "Заголовок 6", + text = "Текст статьи с заголовком 6", + publishDate = Date(2023,5,22), + tagId=3 + ), + Article( + id=6, + title = "Заголовок 7", + text = "Текст статьи с заголовком 7", + publishDate = Date(2023,0,19), + tagId=4 + ), + Article( + id=7, + title = "Заголовок 8", + text = "Текст статьи с заголовком 8", + publishDate = Date(2022,11,13), + tagId=5 + ) + ) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/pmulabs/repository/CommentRepository.kt b/app/src/main/java/com/example/pmulabs/repository/CommentRepository.kt new file mode 100644 index 0000000..e6faf75 --- /dev/null +++ b/app/src/main/java/com/example/pmulabs/repository/CommentRepository.kt @@ -0,0 +1,86 @@ +package com.example.pmulabs.repository + +import com.example.pmulabs.models.Comment + +class CommentRepository { + fun getCountComment(articleId: Int): Int { + var count=0; + getAllData().forEach{ + comm -> + if(comm.articleId==articleId){ + count++ + } + } + return count + } + fun getAllData(): List{ + return listOf( + Comment( + id=0, + text = "Текст комментария 1", + userId = 0, + articleId = 7 + ), + Comment( + id=1, + text = "Текст комментария 2", + userId = 1, + articleId = 1 + ), + Comment( + id=2, + text = "Текст комментария 3", + userId = 2, + articleId = 2 + ), + Comment( + id=3, + text = "Текст комментария 4", + userId = 0, + articleId = 3 + ), + Comment( + id=4, + text = "Текст комментария 5", + userId = 1, + articleId = 0 + ), + Comment( + id=5, + text = "Текст комментария 6", + userId = 2, + articleId = 4 + ), + Comment( + id=6, + text = "Текст комментария 7", + userId = 0, + articleId = 5 + ), + Comment( + id=7, + text = "Текст комментария 8", + userId = 1, + articleId = 6 + ), + Comment( + id=8, + text = "Текст комментария 9", + userId = 2, + articleId = 0 + ), + Comment( + id=9, + text = "Текст комментария 10", + userId = 0, + articleId = 1 + ), + Comment( + id=10, + text = "Текст комментария 11", + userId = 1, + articleId = 2 + ), + ) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/pmulabs/repository/TegRepository.kt b/app/src/main/java/com/example/pmulabs/repository/TegRepository.kt new file mode 100644 index 0000000..dc695b3 --- /dev/null +++ b/app/src/main/java/com/example/pmulabs/repository/TegRepository.kt @@ -0,0 +1,37 @@ +package com.example.pmulabs.repository + +import com.example.pmulabs.models.Teg + +class TegRepository { + fun getTagById(tagId : String): Teg { + return getAllData()[tagId.toInt()] + } + fun getAllData(): List{ + return listOf( + Teg( + id=0, + title = "Тег_1" + ), + Teg( + id=1, + title = "Тег_2" + ), + Teg( + id=2, + title = "Тег_3" + ), + Teg( + id=3, + title = "Тег_4" + ), + Teg( + id=4, + title = "Тег_5" + ), + Teg( + id=5, + title = "Тег_6" + ), + ) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/pmulabs/repository/UserRepository.kt b/app/src/main/java/com/example/pmulabs/repository/UserRepository.kt new file mode 100644 index 0000000..60d074c --- /dev/null +++ b/app/src/main/java/com/example/pmulabs/repository/UserRepository.kt @@ -0,0 +1,48 @@ +package com.example.pmulabs.repository + +import com.example.pmulabs.models.Comment +import com.example.pmulabs.models.User + +class UserRepository { + val commRepository=CommentRepository() + val getAlDataComm=commRepository.getAllData() + fun getAllData(): List{ + return listOf( + User( + id=0, + nickname = "LatinMisha", + email = "llmisha@gmail.com", + password = "user1", + role = "user" + ), + User( + id=1, + nickname = "Kasablanka", + email = "kasyul@gmail.com", + password = "user2", + role = "user" + ), + User( + id=2, + nickname = "Ilonherber", + email = "ihlon82@gmail.com", + password = "user3", + role = "user" + ) + ) + } + + fun getUserById(userId : String): User { + return getAllData()[userId.toInt()] + } + + fun getUserComm(userId : String): List { + val list = mutableListOf() + for (comm in getAlDataComm) { + if (comm.userId == userId.toInt()) { + list.add(comm) + } + } + return list + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/pmulabs/screensMobile/ArticlePageScreen.kt b/app/src/main/java/com/example/pmulabs/screensMobile/ArticlePageScreen.kt new file mode 100644 index 0000000..692ec2d --- /dev/null +++ b/app/src/main/java/com/example/pmulabs/screensMobile/ArticlePageScreen.kt @@ -0,0 +1,174 @@ +package com.example.pmulabs.screensMobile + +import androidx.compose.foundation.BorderStroke +import androidx.compose.foundation.Image +import androidx.compose.foundation.background +import androidx.compose.foundation.border +import androidx.compose.foundation.clickable +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.fillMaxSize +import androidx.compose.foundation.layout.offset +import androidx.compose.foundation.layout.requiredHeight +import androidx.compose.foundation.layout.requiredWidth +import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.material3.HorizontalDivider +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.graphics.Color +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.text.TextStyle +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import androidx.navigation.NavController +import com.example.pmulabs.R +import com.example.pmulabs.basecomponents.navigate.ARTICLE_ARGUMENT_KEY +import com.example.pmulabs.basecomponents.navigate.BackButton +import com.example.pmulabs.designElem.CommentItem +import com.example.pmulabs.repository.ArticleRepository +import com.example.pmulabs.repository.CommentRepository +import com.example.pmulabs.repository.TegRepository +import java.text.SimpleDateFormat + +@Composable +fun ArticlePageScreen(navController: NavController,modifier: Modifier = Modifier) { + + var id=navController.currentBackStackEntry?.arguments?.getString(ARTICLE_ARGUMENT_KEY).toString() + val articleRep=ArticleRepository() + var article= articleRep.getArticleById("0") + if (id.toString() != "null") { + article = articleRep.getArticleById(id) + } + val tegRep=TegRepository() + val teg= tegRep.getTagById(article?.tagId.toString()) + val formatter = SimpleDateFormat("dd.MM.YY") + val publishDate=formatter.format(article?.publishDate) + + val commRep=CommentRepository() + val allComm=commRep.getAllData() + + LazyColumn( + contentPadding= PaddingValues(top=105.dp, bottom = 20.dp,start=15.dp,end=15.dp), + modifier = modifier + .requiredWidth(width = 412.dp) + .requiredHeight(height = 915.dp) + .background(color = Color.White) + .fillMaxSize(), + verticalArrangement = Arrangement.spacedBy(10.dp) + ) { + item{ + BackButton(modifier=Modifier + .clickable { navController.popBackStack()} + .offset( + y=0.dp + )) + } + item { + Row( + modifier = Modifier + .requiredWidth(width = 245.dp) + .requiredHeight(height = 33.dp) + .offset( + y=0.dp + ) + ) { + Text( + text = "${publishDate}", + color = Color(0xff423a99), + style = MaterialTheme.typography.headlineMedium) + Text( + text = "#${teg.title}", + color = Color(0xff423a99), + style = MaterialTheme.typography.headlineMedium, + modifier = Modifier + .offset(x = 60.dp, + y = 0.dp)) + } + } + item { + Text( + text = "${article?.title}", + color = Color(0xff423a99), + style = TextStyle( + fontSize = 32.sp, + fontWeight = FontWeight.Bold), + modifier = Modifier + .offset(x = 10.dp, + y = 0.dp) + .requiredWidth(width = 395.dp)) + + } + item { + Image( + painter = painterResource(id = R.drawable.image3), + contentDescription = "image 3", + modifier = Modifier + .requiredWidth(width = 412.dp) + .requiredHeight(height = 242.dp) + .offset( + y=0.dp + )) + } + item { + Text( + text = "${article?.text}", + color = Color(0xff423a99), + style = MaterialTheme.typography.headlineMedium, + modifier = Modifier + .offset(x = 5.dp, + y = 0.dp) + .requiredWidth(width = 375.dp)) + } + item { + Box( + modifier = modifier + .requiredWidth(width = 412.dp) + .requiredHeight(height = 53.dp) + .offset( + y=0.dp + ) + ) { + Text( + text = "Комментарии:", + color = Color(0xff423a99), + style = TextStyle( + fontSize = 32.sp, + fontWeight = FontWeight.Bold), + modifier = Modifier + .align(alignment = Alignment.TopStart) + .offset(x = 15.dp, + y = 6.dp) + .requiredWidth(width = 395.dp) + .requiredHeight(height = 43.dp)) + HorizontalDivider( + thickness=5.dp, + modifier = Modifier + .requiredWidth(width = 270.dp) + .border(BorderStroke(3.dp, Color(0xff423a99))), color = Color(0xff423a99) + ) + HorizontalDivider( + thickness=5.dp, + modifier = Modifier + .align(alignment = Alignment.TopStart) + .border(BorderStroke(3.dp, Color(0xff423a99))) + .offset(x = 142.dp, + y = 53.dp) + .requiredWidth(width = 270.dp), color = Color(0xff423a99) + ) + } + } + item{ + allComm.forEach{ comm -> + if(comm.articleId==article.id) { + CommentItem(comm = comm, modifier = Modifier.offset( y = 10.dp)) + } + } + } + } +} diff --git a/app/src/main/java/com/example/pmulabs/screensMobile/CalendarScreen.kt b/app/src/main/java/com/example/pmulabs/screensMobile/CalendarScreen.kt new file mode 100644 index 0000000..b41659e --- /dev/null +++ b/app/src/main/java/com/example/pmulabs/screensMobile/CalendarScreen.kt @@ -0,0 +1,52 @@ +package com.example.pmulabs.screensMobile + +import android.util.Log +import androidx.compose.foundation.background +import androidx.compose.foundation.clickable +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.PaddingValues +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.lazy.items +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.unit.dp +import androidx.navigation.NavController +import com.example.pmulabs.basecomponents.navigate.BackButton +import com.example.pmulabs.basecomponents.navigate.BottomBarScreen +import com.example.pmulabs.basecomponents.navigate.CALENDAR_ARGUMENT_DATE +import com.example.pmulabs.designElem.ArticleItem +import com.example.pmulabs.repository.ArticleRepository +import java.text.SimpleDateFormat + +@Composable +fun CalendarScreen(navController: NavController, modifier: Modifier = Modifier){ + + val articleRepository= ArticleRepository() + val getAllData= articleRepository.getAllData() + var date=navController.currentBackStackEntry?.arguments?.getString(CALENDAR_ARGUMENT_DATE).toString() + Log.d("date: ",date) + val formatter = SimpleDateFormat("dd-MMMM-YY") + + LazyColumn( + modifier= Modifier + .background(Color.White) + .fillMaxSize(), + contentPadding = PaddingValues(top =75.dp, bottom = 10.dp, start = 10.dp,end=10.dp), + verticalArrangement = Arrangement.spacedBy(1.dp)){ + item{ + BackButton(modifier=Modifier + .clickable { navController.popBackStack()}) + } + items(items = getAllData){ article -> + val publishDate=formatter.format(article.publishDate) + if(publishDate==date) { + ArticleItem( + article = article, + onArticleClick = {navController.navigate(BottomBarScreen.ArticlePage.passId(article.id.toString()))} + ) + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/pmulabs/screensMobile/CoopScreen.kt b/app/src/main/java/com/example/pmulabs/screensMobile/CoopScreen.kt new file mode 100644 index 0000000..82968e3 --- /dev/null +++ b/app/src/main/java/com/example/pmulabs/screensMobile/CoopScreen.kt @@ -0,0 +1,200 @@ +package com.example.pmulabs.screensMobile + +import androidx.compose.foundation.BorderStroke +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.offset +import androidx.compose.foundation.layout.requiredHeight +import androidx.compose.foundation.layout.requiredWidth +import androidx.compose.foundation.layout.wrapContentHeight +import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.text.SpanStyle +import androidx.compose.ui.text.TextStyle +import androidx.compose.ui.text.buildAnnotatedString +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.text.withStyle +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import androidx.navigation.NavController + +@Composable +fun CoopScreen(navController: NavController,modifier: Modifier = Modifier) { + LazyColumn( + modifier = modifier + .background(Color.White), + contentPadding = PaddingValues(top =70.dp, bottom = 105.dp, start = 10.dp), + verticalArrangement = Arrangement.spacedBy(15.dp) + ) { + item { + Box( + modifier = Modifier + .requiredWidth(width = 393.dp) + .requiredHeight(height = 275.dp) + ) { + Box( + modifier = Modifier + .align(alignment = Alignment.TopStart) + .offset(x = 0.dp, + y = 21.810302734375.dp) + .requiredWidth(width = 393.dp) + .requiredHeight(height = 253.dp) + ) { + Box( + modifier = Modifier + .requiredWidth(width = 393.dp) + .requiredHeight(height = 253.dp) + .clip(shape = RoundedCornerShape(5.dp)) + .background(color = Color.White) + .border(border = BorderStroke(3.dp, Color(0xffdbdbf1)), + shape = RoundedCornerShape(5.dp))) + Text( + text = " Мы предлагаем рекламные размещения под любой бюджет и аудиторию. \n\n На ресурсе самые лучшие посетители. У нас нет \"школьников\", \"мимо проходящих\", ботов, \"просто интересующихся\". Нас читают те, кто глубоко погружен в технику.\n\n У нас много трафика и нормальные цены за нормальную отдачу,а также рекламные возможности на любой бюджет. ", + color = Color(0xff423a99), + style = TextStyle( + fontSize = 15.sp, + fontWeight = FontWeight.Bold), + modifier = Modifier + .align(alignment = Alignment.TopStart) + .offset(x = 14.dp, + y = 34.189697265625.dp) + .requiredWidth(width = 368.dp) + .wrapContentHeight(align = Alignment.CenterVertically)) + } + Box( + modifier = Modifier + .requiredWidth(width = 393.dp) + .requiredHeight(height = 44.dp) + ) { + Box( + modifier = Modifier + .requiredWidth(width = 393.dp) + .requiredHeight(height = 44.dp) + .clip(shape = RoundedCornerShape(15.dp)) + .background(color = Color(0xff423a99))) + Text( + text = "О рекламе", + color = Color.White, + style = TextStyle( + fontSize = 17.sp, + fontWeight = FontWeight.Bold), + modifier = Modifier + .align(alignment = Alignment.TopStart) + .offset(x = 24.dp, + y = 0.dp) + .requiredWidth(width = 210.dp) + .requiredHeight(height = 44.dp) + .wrapContentHeight(align = Alignment.CenterVertically)) + } + } + } + item { + Box( + modifier = Modifier + .offset(x = 0.dp, + y = 11.dp) + .requiredWidth(width = 404.dp) + .requiredHeight(height = 420.dp) + ) { + Box( + modifier = Modifier + .align(alignment = Alignment.TopStart) + .offset(x = 0.dp, + y = 21.dp) + .requiredWidth(width = 404.dp) + .requiredHeight(height = 420.dp) + ) { + Box( + modifier = Modifier + .requiredWidth(width = 393.dp) + .requiredHeight(height = 420.dp) + .clip(shape = RoundedCornerShape(5.dp)) + .background(color = Color.White) + .border(border = BorderStroke(3.dp, Color(0xffdbdbf1)), + shape = RoundedCornerShape(5.dp))) + Text( + text = buildAnnotatedString { + withStyle(style = SpanStyle( + color = Color(0xff423a99), + fontSize = 15.sp, + fontWeight = FontWeight.Bold)) {append("КОММЕРЧЕСКИЙ ДИРЕКТОР:\n")} + withStyle(style = SpanStyle( + color = Color(0xff847fbe), + fontSize = 15.sp, + fontWeight = FontWeight.Bold)) {append("Александр Воробьёв\nvorobiev@ixbt.com\n+7 (499) 519-00-95\n")} + withStyle(style = SpanStyle( + color = Color(0xff423a99), + fontSize = 15.sp, + fontWeight = FontWeight.Bold)) {append("ДИРЕКТОР ПО РЕКЛАМЕ:\n")} + withStyle(style = SpanStyle( + color = Color(0xff847fbe), + fontSize = 15.sp, + fontWeight = FontWeight.Bold)) {append("Владимир Сливко\nvslivko@ixbt.com\n+7 (916) 134-14-72\n")} + withStyle(style = SpanStyle( + color = Color(0xff423a99), + fontSize = 15.sp, + fontWeight = FontWeight.Bold)) {append("ПРОДАКТ-МЕНЕДЖЕР:")} + withStyle(style = SpanStyle( + color = Color(0xff423a99), + fontSize = 15.sp, + fontWeight = FontWeight.Bold)) {append(" \n")} + withStyle(style = SpanStyle( + color = Color(0xff847fbe), + fontSize = 15.sp, + fontWeight = FontWeight.Bold)) {append("Дарья Галиева\ndgalieva@ixbt.games\n+7 (499) 519-00-95\n")} + withStyle(style = SpanStyle( + color = Color(0xff423a99), + fontSize = 15.sp, + fontWeight = FontWeight.Bold)) {append("ГЛАВНЫЙ РЕДАКТОР:\n")} + withStyle(style = SpanStyle( + color = Color(0xff847fbe), + fontSize = 15.sp, + fontWeight = FontWeight.Bold)) {append("Виталий Казунов\nlock@ixbt.com\n+7 (499) 519-00-95")}}, + modifier = Modifier + .align(alignment = Alignment.TopStart) + .offset(x = 11.dp, + y = 10.dp) + .requiredWidth(width = 393.dp) + .requiredHeight(height = 420.dp) + .wrapContentHeight(align = Alignment.CenterVertically)) + } + Box( + modifier = Modifier + .requiredWidth(width = 393.dp) + .requiredHeight(height = 42.dp) + ) { + Box( + modifier = Modifier + .requiredWidth(width = 393.dp) + .requiredHeight(height = 42.dp) + .clip(shape = RoundedCornerShape(15.dp)) + .background(color = Color(0xff423a99))) + Text( + text = "Контакты", + color = Color.White, + style = TextStyle( + fontSize = 17.sp, + fontWeight = FontWeight.Bold), + modifier = Modifier + .align(alignment = Alignment.TopStart) + .offset(x = 24.dp, + y = 0.dp) + .requiredWidth(width = 210.dp) + .requiredHeight(height = 42.dp) + .wrapContentHeight(align = Alignment.CenterVertically)) + } + } + } + } +} + + diff --git a/app/src/main/java/com/example/pmulabs/screensMobile/EntryScreen.kt b/app/src/main/java/com/example/pmulabs/screensMobile/EntryScreen.kt new file mode 100644 index 0000000..9148fa7 --- /dev/null +++ b/app/src/main/java/com/example/pmulabs/screensMobile/EntryScreen.kt @@ -0,0 +1,234 @@ +package com.example.pmulabs.screensMobile + +import androidx.compose.foundation.background +import androidx.compose.foundation.clickable +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxHeight +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.offset +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.requiredHeight +import androidx.compose.foundation.layout.requiredWidth +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.foundation.text.KeyboardOptions +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.Visibility +import androidx.compose.material.icons.filled.VisibilityOff +import androidx.compose.material3.Button +import androidx.compose.material3.ButtonColors +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.Icon +import androidx.compose.material3.IconButton +import androidx.compose.material3.Text +import androidx.compose.material3.TextField +import androidx.compose.material3.TextFieldDefaults +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.saveable.rememberSaveable +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.rotate +import androidx.compose.ui.draw.shadow +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.text.TextStyle +import androidx.compose.ui.text.input.KeyboardType +import androidx.compose.ui.text.input.PasswordVisualTransformation +import androidx.compose.ui.text.input.VisualTransformation +import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import androidx.navigation.NavController +import com.example.pmulabs.basecomponents.navigate.ValidateEmail +import com.example.pmulabs.basecomponents.navigate.isValidEmail +import com.example.pmulabs.designElem.LeftCircles +import com.example.pmulabs.designElem.LogoMobile +import com.example.pmulabs.designElem.RightCircles +import com.example.pmulabs.designElem.SharedViewModel +import com.example.pmulabs.graphs.AuthScreen +import com.example.pmulabs.graphs.Graph +import com.example.pmulabs.repository.UserRepository + +@OptIn(ExperimentalMaterial3Api::class) +@Composable +fun EntryScreen(navController: NavController,modifier: Modifier = Modifier, sharedViewModel: SharedViewModel) { + + var emailValue by rememberSaveable { mutableStateOf("") } + var passwordValue by rememberSaveable { mutableStateOf("") } + val userRepository= UserRepository() + val getAllData= userRepository.getAllData() + val argument = sharedViewModel.argument.value + + var passwordVisibility by rememberSaveable { mutableStateOf(false) } + val emailRegex = "[a-zA-Z0-9._-]+@[a-z]+\\.+[a-z]+".toRegex() + + Box( + modifier = modifier + .requiredWidth(width = 412.dp) + .requiredHeight(height = 915.dp) + .background(color = Color.White) + ) { + Box( + modifier = Modifier + .align(alignment = Alignment.TopStart) + .offset( + x = 128.dp, + y = 730.dp + ) + .requiredWidth(width = 381.dp) + .requiredHeight(height = 268.dp) + .rotate(degrees = 8.33f) + ) { + RightCircles() + } + Box( + modifier = Modifier + .align(alignment = Alignment.TopStart) + .offset( + x = (-111.28436279296875).dp, + y = (-96.86965942382812).dp + ) + .requiredWidth(width = 250.dp) + .requiredHeight(height = 290.dp) + .rotate(degrees = 12.96f) + ) { + LeftCircles() + } + + } + + Box(modifier = Modifier.fillMaxSize(), contentAlignment = Alignment.BottomCenter) { + + Column( + horizontalAlignment = Alignment.CenterHorizontally, + verticalArrangement = Arrangement.Center, + modifier = Modifier + .fillMaxWidth() + .fillMaxHeight(0.8f) + .clip(RoundedCornerShape(15.dp)) + .background(Color.Transparent) + .padding(10.dp) + ) { + + Column(horizontalAlignment = Alignment.CenterHorizontally) { + Box( + modifier = Modifier + .fillMaxWidth() + .background(Color.Transparent), contentAlignment = Alignment.TopCenter + ) { + + LogoMobile( + modifier = Modifier + .align(alignment = Alignment.TopStart) + .fillMaxWidth() + .requiredHeight(height = 131.dp) + ) + + } + Text( + text = "Please, Sign In to your account", + color = Color(0xff7d7dbd), + textAlign = TextAlign.Center, + style = TextStyle( + fontSize = 20.sp + ), + modifier = modifier + .requiredWidth(width = 436.dp) + .requiredHeight(height = 27.dp) + ) + Spacer(modifier = Modifier.padding(10.dp)) + + Column(horizontalAlignment = Alignment.CenterHorizontally) { + ValidateEmail(emailValue, {emailValue=it} ) + Spacer(modifier = Modifier.padding(3.dp)) + TextField( + value = passwordValue, + onValueChange = { passwordValue = it }, + colors = TextFieldDefaults.textFieldColors( + containerColor = Color.White + ), + modifier = modifier + .requiredWidth(width = 269.dp) + .requiredHeight(height = 53.dp) + .shadow(shape = RoundedCornerShape(40.dp), elevation = 5.dp) + .clip(shape = RoundedCornerShape(40.dp)), + label = { Text("Password") }, + singleLine = true, + placeholder = { Text("Password") }, + visualTransformation = if (passwordVisibility) VisualTransformation.None else PasswordVisualTransformation(), + keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Password), + trailingIcon = { + val image = if (passwordVisibility) + Icons.Filled.Visibility + else Icons.Filled.VisibilityOff + + val description = + if (passwordVisibility) "Hide password" else "Show password" + + IconButton(onClick = { passwordVisibility = !passwordVisibility }) { + Icon(imageVector = image, description) + } + } + ) + + Spacer(modifier = Modifier.padding(10.dp)) + Button( + colors = ButtonColors( + containerColor = Color(0xff423a99), + disabledContainerColor = Color(0xff423a99), + contentColor = Color.White, + disabledContentColor = Color.White + ), + onClick = { + if (passwordValue.isNotEmpty() && isValidEmail(emailValue)) { + getAllData.forEach { user -> + if (user.password == passwordValue && user.email == emailValue) { + sharedViewModel.setArgument(user.id.toString()) + navController.navigate(route = Graph.passUserId(user.id.toString())) { + } + } + } + } + }, + modifier = Modifier + .fillMaxWidth(0.5f) + .height(50.dp) + ) { + Text(text = "Sign In", fontSize = 20.sp) + } + + Spacer(modifier = Modifier.padding(3.dp)) + + Text( + text = "Don't have an account yet? Sign Up", + color = Color(0xff7d7dbd), + textAlign = TextAlign.Center, + style = TextStyle( + fontSize = 20.sp + ), + modifier = Modifier + .fillMaxSize() + .offset( + x = 0.dp, + y = 75.dp + ) + .clickable { + navController.navigate(route = AuthScreen.Register.route) + { + popUpTo(AuthScreen.Splash.route) + } + } + ) + Spacer(modifier = Modifier.padding(20.dp)) + } + } + } + } +} diff --git a/app/src/main/java/com/example/pmulabs/screensMobile/InfoScreen.kt b/app/src/main/java/com/example/pmulabs/screensMobile/InfoScreen.kt new file mode 100644 index 0000000..193730c --- /dev/null +++ b/app/src/main/java/com/example/pmulabs/screensMobile/InfoScreen.kt @@ -0,0 +1,230 @@ +package com.example.pmulabs.screensMobile + +import androidx.compose.foundation.BorderStroke +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.offset +import androidx.compose.foundation.layout.requiredHeight +import androidx.compose.foundation.layout.requiredWidth +import androidx.compose.foundation.layout.wrapContentHeight +import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.text.TextStyle +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import androidx.navigation.NavController + +@Composable +fun InfoScreen(navController: NavController,modifier: Modifier = Modifier) { + LazyColumn( + modifier = modifier + .background(Color.White), + contentPadding = PaddingValues(top =75.dp, bottom = 85.dp, start = 10.dp), + verticalArrangement = Arrangement.spacedBy(15.dp) + ) { + item { + Box( + modifier = Modifier + .requiredWidth(width = 400.dp) + .requiredHeight(height = 309.dp) + ) { + Box( + modifier = Modifier + .align(alignment = Alignment.TopStart) + .offset(x = 0.dp, + y = 22.dp) + .requiredWidth(width = 393.dp) + .requiredHeight(height = 287.dp) + ) { + Box( + modifier = Modifier + .requiredWidth(width = 393.dp) + .requiredHeight(height = 287.dp) + .clip(shape = RoundedCornerShape(5.dp)) + .background(color = Color.White) + .border(border = BorderStroke(3.dp, Color(0xffdbdbf1)), + shape = RoundedCornerShape(5.dp))) + Text( + text=" iXBT.com — специализированный российский информационно-аналитический сайт с самыми актуальными новостями из сферы компьютерных и мобильных игр, развлекательной и интернет-индустрии, детальными обзорами персональных компьютеров, компьютерных комплектующих, периферийных устройств и техники для гейминга. Мы работаем для вас с 2007 года.\n\n Наш адрес: \"115201, Москва, Каширское шоссе, д. 22 кор. 3 стр. 2; тел. +7(499)519-00-95\"", + color = Color(0xff423a99), + style = TextStyle( + fontSize = 15.sp, + fontWeight = FontWeight.Bold), + modifier = Modifier + .align(alignment = Alignment.TopStart) + .offset(x = 12.dp, + y = 27.dp) + .requiredWidth(width = 364.dp) + .requiredHeight(height = 250.dp) + .wrapContentHeight(align = Alignment.CenterVertically)) + + } + Box( + modifier = Modifier + .requiredWidth(width = 393.dp) + .requiredHeight(height = 44.dp) + ) { + Box( + modifier = Modifier + .requiredWidth(width = 393.dp) + .requiredHeight(height = 44.dp) + .clip(shape = RoundedCornerShape(15.dp)) + .background(color = Color(0xff423a99))) + Text( + text = "О сайте iXBT.com", + color = Color.White, + style = TextStyle( + fontSize = 17.sp, + fontWeight = FontWeight.Bold), + modifier = Modifier + .align(alignment = Alignment.TopStart) + .offset(x = 24.dp, + y = 0.dp) + .requiredWidth(width = 210.dp) + .requiredHeight(height = 44.dp) + .wrapContentHeight(align = Alignment.CenterVertically)) + } + } + } + item { + Box( + modifier = Modifier + .offset(x = 0.dp, + y = 15.dp) + .requiredWidth(width = 400.dp) + .requiredHeight(height = 200.dp) + ) { + Box( + modifier = Modifier + .align(alignment = Alignment.TopStart) + .offset(x = 0.dp, + y = 23.dp) + .requiredWidth(width = 393.dp) + .requiredHeight(height = 177.dp) + ) { + Box( + modifier = Modifier + .requiredWidth(width = 393.dp) + .requiredHeight(height = 177.dp) + .clip(shape = RoundedCornerShape(5.dp)) + .background(color = Color.White) + .border(border = BorderStroke(3.dp, Color(0xffdbdbf1)), + shape = RoundedCornerShape(5.dp))) + Text( + text = " Информация, размещенная на сайте iXBT.games, может быть изменена без предварительного уведомления. Все названия компаний, их логотипы и названия продуктов являются зарегистрированными торговыми марками соответствующих компаний.", + color = Color(0xff423a99), + style = TextStyle( + fontSize = 15.sp, + fontWeight = FontWeight.Bold), + modifier = Modifier + .align(alignment = Alignment.TopStart) + .offset(x = 12.dp, + y = 20.dp) + .requiredWidth(width = 364.dp) + .requiredHeight(height = 144.dp) + .wrapContentHeight(align = Alignment.CenterVertically)) + } + Box( + modifier = Modifier + .requiredWidth(width = 393.dp) + .requiredHeight(height = 42.dp) + ) { + Box( + modifier = Modifier + .requiredWidth(width = 393.dp) + .requiredHeight(height = 42.dp) + .clip(shape = RoundedCornerShape(15.dp)) + .background(color = Color(0xff423a99))) + Text( + text = "Прежде всего", + color = Color.White, + style = TextStyle( + fontSize = 17.sp, + fontWeight = FontWeight.Bold), + modifier = Modifier + .align(alignment = Alignment.TopStart) + .offset(x = 24.dp, + y = 0.dp) + .requiredWidth(width = 210.dp) + .requiredHeight(height = 42.dp) + .wrapContentHeight(align = Alignment.CenterVertically)) + } + } + } + item { + Box( + modifier = Modifier + .offset(x = 0.dp, + y = 25.dp) + .requiredWidth(width = 400.dp) + .requiredHeight(height = 782.dp) + ) { + Box( + modifier = Modifier + .align(alignment = Alignment.TopStart) + .offset(x = 0.dp, + y = 0.dp) + .requiredWidth(width = 393.dp) + .requiredHeight(height = 759.dp) + ) { + Box( + modifier = Modifier + .requiredWidth(width = 393.dp) + .requiredHeight(height = 759.dp) + .clip(shape = RoundedCornerShape(5.dp)) + .background(color = Color.White) + .border(border = BorderStroke(3.dp, Color(0xffdbdbf1)), + shape = RoundedCornerShape(5.dp))) + Text( + text = " Проект iXBT.games (Ай-Экс-Би-Ти Дот Геймс) является частью проекта iXBT.com (Ай-Экс-Би-Ти Дот Ком) - интернет-портала, освещающего новости ИТ-индустрии, технологий, техники, ПО и сети Интернет.\n\n Компания «Аспект Исследования и Публикации» (Aspect Research and Publishing, Ltd) имеет свидетельство о регистрации средства массовой информации iXBT.com (Ай-Экс-Би-Ти Дот Ком) за номером: ЭЛ № ФС 77 - 56280 от 28 ноября 2013 года. Свидетельство выдано Федеральной службой по надзору в сфере связи, информационных технологий и массовых коммуникаций в соответствии с Законом Российской Федерации от 27 декабря 1991 года.\n\n Ранее электронное периодическое издание iXBT.com (Ай-Экс-Би-Ти Дот Ком) было зарегистрировано за номером: ЭЛ № ФС77-22565 от 20 декабря 2005. СМИ перерегистрировано в связи со сменой учредителя 28 ноября 2013 года.\n\n Ранее электронное периодическое издание «Ай-Экс-Би-Ти дот ком / iXBT.com» («iXBT.com / Ай-Экс-Би-Ти дот ком») зарегистрировано Министерством Российской Федерации по делам печати, телерадиовещания и средств массовых коммуникаций — свидетельство ЭЛ № 77-6328 от 10 июня 2002 года. СМИ перерегистрировано в связи со сменой учредителя и изменением названия 20 декабря 2005 года.\n\n На все материалы, опубликованные на сайте iXBT.games, распространяются нормы законодательства о СМИ РФ.", + color = Color(0xff423a99), + style = TextStyle( + fontSize = 15.sp, + fontWeight = FontWeight.Bold), + modifier = Modifier + .align(alignment = Alignment.TopStart) + .offset(x = 12.dp, + y = 30.dp) + .requiredWidth(width = 368.dp) + .requiredHeight(height = 727.dp) + .wrapContentHeight(align = Alignment.CenterVertically)) + } + Box( + modifier = Modifier + .requiredWidth(width = 393.dp) + .requiredHeight(height = 42.dp) + ) { + Box( + modifier = Modifier + .requiredWidth(width = 393.dp) + .requiredHeight(height = 42.dp) + .clip(shape = RoundedCornerShape(15.dp)) + .background(color = Color(0xff423a99))) + Text( + text = "Правовые основы деятельности сайта", + color = Color.White, + style = TextStyle( + fontSize = 17.sp, + fontWeight = FontWeight.Bold), + modifier = Modifier + .align(alignment = Alignment.TopStart) + .offset(x = 24.dp, + y = 0.dp) + .requiredWidth(width = 354.dp) + .requiredHeight(height = 42.dp) + .wrapContentHeight(align = Alignment.CenterVertically)) + } + } + } + } +} diff --git a/app/src/main/java/com/example/pmulabs/screensMobile/MainScreen.kt b/app/src/main/java/com/example/pmulabs/screensMobile/MainScreen.kt new file mode 100644 index 0000000..d61c7a6 --- /dev/null +++ b/app/src/main/java/com/example/pmulabs/screensMobile/MainScreen.kt @@ -0,0 +1,268 @@ +package com.example.pmulabs.screensMobile + +import android.annotation.SuppressLint +import android.util.Log +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.PaddingValues +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.lazy.items +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material3.ButtonColors +import androidx.compose.material3.DatePicker +import androidx.compose.material3.DatePickerColors +import androidx.compose.material3.DatePickerDialog +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.Scaffold +import androidx.compose.material3.Text +import androidx.compose.material3.TextButton +import androidx.compose.material3.TextFieldDefaults +import androidx.compose.material3.rememberDatePickerState +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableLongStateOf +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.unit.dp +import androidx.navigation.NavController +import androidx.navigation.NavHostController +import androidx.navigation.compose.rememberNavController +import com.example.pmulabs.basecomponents.navigate.BottomBarScreen +import com.example.pmulabs.designElem.ArticleItem +import com.example.pmulabs.designElem.BottomBar +import com.example.pmulabs.designElem.SearchAppBar +import com.example.pmulabs.designElem.SearchViewModel +import com.example.pmulabs.designElem.SearchWidget +import com.example.pmulabs.designElem.SharedViewModel +import com.example.pmulabs.designElem.TopBar +import com.example.pmulabs.graphs.HomeNavGraph +import com.example.pmulabs.repository.ArticleRepository +import java.text.SimpleDateFormat +import java.util.Calendar +import java.util.Date + +@Composable +fun MainScreen(navController: NavController, modifier: Modifier = Modifier){ + + val articleRepository=ArticleRepository() + val getAllData= articleRepository.getAllData() + + LazyColumn( + modifier=Modifier + .background(Color.White) + .fillMaxSize(), + contentPadding = PaddingValues(top=75.dp, bottom = 70.dp, start = 10.dp,end=10.dp), + verticalArrangement = Arrangement.spacedBy(15.dp)){ + items(items = getAllData){ article -> + ArticleItem(article = article,onArticleClick = {navController.navigate(BottomBarScreen.ArticlePage.passId(article.id.toString()))}) + } + } +} + +@SuppressLint("UnusedMaterial3ScaffoldPaddingParameter") +@OptIn(ExperimentalMaterial3Api::class) +@Composable +fun LoadScreen(navController: NavHostController=rememberNavController(), searchViewModel: SearchViewModel,sharedViewModel: SharedViewModel){ + + val searchWidgetState by searchViewModel.searchWidgetState + val searchTextState by searchViewModel.searchTextState + val formatter = SimpleDateFormat("dd-MMMM-YY") + + val calendar = Calendar.getInstance() + calendar.set(2023, 0, 1) // add year, month (Jan), date + + // set the initial date + val datePickerState = rememberDatePickerState(initialSelectedDateMillis = calendar.timeInMillis) + + var showDatePicker by remember { + mutableStateOf(false) + } + + var selectedDate by remember { + mutableLongStateOf(calendar.timeInMillis) // or use mutableStateOf(calendar.timeInMillis) + } + + if (showDatePicker) { + DatePickerDialog( + colors= DatePickerColors( + containerColor = Color.White, + currentYearContentColor=Color(0xff423a99), + dateTextFieldColors = TextFieldDefaults.textFieldColors( + Color(0xff423a99), + containerColor = Color.White, + focusedLabelColor = Color(0xff423a99), + focusedPlaceholderColor = Color(0xff423a99), + focusedTrailingIconColor = Color(0xff423a99) + ), + dayContentColor=Color(0xff423a99), + dayInSelectionRangeContainerColor=Color(0xff423a99), + dayInSelectionRangeContentColor=Color(0xff423a99), + disabledDayContentColor=Color(0xff423a99), + disabledSelectedDayContainerColor=Color(0xff423a99), + disabledSelectedDayContentColor=Color(0xff423a99), + disabledSelectedYearContainerColor=Color(0xff423a99), + disabledSelectedYearContentColor=Color(0xff423a99), + disabledYearContentColor=Color(0xff423a99), + dividerColor=Color(0xff423a99), + headlineContentColor=Color(0xff423a99), + navigationContentColor=Color(0xff423a99), + selectedDayContainerColor=Color(0xff423a99), + selectedDayContentColor=Color.White, + selectedYearContainerColor=Color(0xff423a99), + selectedYearContentColor=Color.White, + subheadContentColor=Color(0xff423a99), + titleContentColor=Color(0xff423a99), + todayContentColor=Color.White, + todayDateBorderColor=Color(0xff423a99), + weekdayContentColor=Color(0xff423a99), + yearContentColor=Color(0xff423a99) + ), + onDismissRequest = { + showDatePicker = false + }, + confirmButton = { + TextButton( + modifier=Modifier + .background(Color.White), + colors = ButtonColors( + contentColor = Color(0xff423a99), + containerColor=Color.Transparent, + disabledContainerColor=Color.Transparent, + disabledContentColor= Color.Transparent + ), + onClick = { + showDatePicker = false + selectedDate = datePickerState.selectedDateMillis!! + Log.d("Selected date: ", formatter.format(Date(selectedDate))) + navController.navigate(BottomBarScreen.Calendar.passDate(formatter.format(Date(selectedDate)))){ + popUpTo(BottomBarScreen.Main.route) + } + }) { + Text(text = "Confirm") + } + }, + dismissButton = { + TextButton( + modifier=Modifier + .background(Color.White), + colors = ButtonColors( + contentColor = Color(0xff423a99), + containerColor=Color.Transparent, + disabledContainerColor=Color.Transparent, + disabledContentColor= Color.Transparent + ), + onClick = { + showDatePicker = false + navController.navigate(BottomBarScreen.Main.route) + }) { + Text(text = "Cancel") + } + } + ) { + DatePicker( + modifier= Modifier + .background(Color.White) + .clip(RoundedCornerShape(15.dp)), + colors = DatePickerColors( + containerColor = Color.White, + currentYearContentColor=Color(0xff423a99), + dateTextFieldColors = TextFieldDefaults.textFieldColors( + Color(0xff423a99), + containerColor = Color.White, + focusedLabelColor = Color(0xff423a99), + focusedPlaceholderColor = Color(0xff423a99), + focusedTrailingIconColor = Color(0xff423a99) + ), + dayContentColor=Color(0xff423a99), + dayInSelectionRangeContainerColor=Color(0xff423a99), + dayInSelectionRangeContentColor=Color(0xff423a99), + disabledDayContentColor=Color(0xff423a99), + disabledSelectedDayContainerColor=Color(0xff423a99), + disabledSelectedDayContentColor=Color(0xff423a99), + disabledSelectedYearContainerColor=Color(0xff423a99), + disabledSelectedYearContentColor=Color(0xff423a99), + disabledYearContentColor=Color(0xff423a99), + dividerColor=Color(0xff423a99), + headlineContentColor=Color(0xff423a99), + navigationContentColor=Color(0xff423a99), + selectedDayContainerColor=Color(0xff423a99), + selectedDayContentColor=Color.White, + selectedYearContainerColor=Color(0xff423a99), + selectedYearContentColor=Color.White, + subheadContentColor=Color(0xff423a99), + titleContentColor=Color(0xff423a99), + todayContentColor=Color.White, + todayDateBorderColor=Color(0xff423a99), + weekdayContentColor=Color(0xff423a99), + yearContentColor=Color(0xff423a99) + ), + state = datePickerState + ) + } + } + + Scaffold( + bottomBar = { BottomBar(navController = navController) }, + topBar = { MainAppBar(searchWidgetState= searchWidgetState, + searchTextState= searchTextState, + onTextChange= { searchViewModel.updateSearchTextState(newValue = it) + if(it!="") { + navController.navigate(BottomBarScreen.Search.passText(it)) + }}, + onCloseClicked= { + searchViewModel.updateSearchWidgetState(newValue = SearchWidget.CLOSED) + navController.navigate(BottomBarScreen.Main.route) + }, + onSearchClicked= { + navController.navigate(BottomBarScreen.Search.passText(it)) + }, + onSearchTriggered= { + searchViewModel.updateSearchWidgetState(newValue = SearchWidget.OPENED) + }, + onCalendarTriggered = { + showDatePicker = true + })} + ) { + Modifier + .padding(it) + HomeNavGraph(navController = navController,sharedViewModel) + } +} + +@Composable +fun MainAppBar( + searchWidgetState: SearchWidget, + searchTextState: String, + onTextChange: (String) -> Unit, + onCloseClicked: () -> Unit, + onSearchClicked: (String) -> Unit, + onSearchTriggered: () -> Unit, + onCalendarTriggered: () -> Unit +) { + when (searchWidgetState) { + SearchWidget.CLOSED -> { + TopBar( + onSearchClicked = onSearchTriggered, + onCalendarClicked = onCalendarTriggered + ) + } + SearchWidget.OPENED -> { + SearchAppBar( + text = searchTextState, + onTextChange = onTextChange, + onCloseClicked = onCloseClicked, + onSearchClicked = onSearchClicked + ) + } + } +} + + + + diff --git a/app/src/main/java/com/example/pmulabs/screensMobile/ProfileScreen.kt b/app/src/main/java/com/example/pmulabs/screensMobile/ProfileScreen.kt new file mode 100644 index 0000000..49bae84 --- /dev/null +++ b/app/src/main/java/com/example/pmulabs/screensMobile/ProfileScreen.kt @@ -0,0 +1,213 @@ +package com.example.pmulabs.screensMobile + +import android.util.Log +import androidx.compose.foundation.BorderStroke +import androidx.compose.foundation.Image +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.offset +import androidx.compose.foundation.layout.requiredHeight +import androidx.compose.foundation.layout.requiredSize +import androidx.compose.foundation.layout.requiredWidth +import androidx.compose.foundation.layout.wrapContentHeight +import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.lazy.items +import androidx.compose.foundation.shape.CircleShape +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.text.TextStyle +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import androidx.navigation.NavController +import com.example.pmulabs.R +import com.example.pmulabs.designElem.SharedViewModel +import com.example.pmulabs.repository.UserRepository + +@Composable +fun ProfileScreen(navController: NavController, modifier: Modifier = Modifier,sharedViewModel: SharedViewModel) { + val argument = sharedViewModel.argument.value + val userRepository =UserRepository() + var getUser=userRepository.getUserById(argument.toString()) + var getComms=userRepository.getUserComm(argument.toString()) + Log.d("UserId", argument.toString()) + LazyColumn( + modifier = modifier + .requiredWidth(width = 412.dp) + .requiredHeight(height = 915.dp) + .background(color = Color.White) + ) { + item { + Box( + modifier = Modifier + .offset( + x = 106.dp, + y = 95.dp + ) + .requiredWidth(width = 200.dp) + .requiredHeight(height = 310.dp) + ) { + Image( + painter = painterResource(id = R.drawable.ixbtcom_colored_logo1), + contentDescription = "Ellipse 8", + modifier = Modifier + .requiredSize(size = 200.dp) + .clip(shape = CircleShape)) + Box( + modifier = Modifier + .align(alignment = Alignment.TopStart) + .offset( + x = 0.dp, + y = 215.dp + ) + .requiredWidth(width = 200.dp) + .requiredHeight(height = 44.dp) + ) { + Box( + modifier = Modifier + .requiredWidth(width = 200.dp) + .requiredHeight(height = 44.dp) + .clip(shape = RoundedCornerShape(15.dp)) + .background(color = Color(0xffdbdbf1))) + Text( + text = "${getUser.nickname}", + color = Color(0xff423a99), + textAlign = TextAlign.Center, + style = TextStyle( + fontSize = 17.sp, + fontWeight = FontWeight.Bold), + modifier = Modifier + .requiredWidth(width = 200.dp) + .requiredHeight(height = 44.dp) + .wrapContentHeight(align = Alignment.CenterVertically)) + } + Box( + modifier = Modifier + .align(alignment = Alignment.TopStart) + .offset( + x = 0.dp, + y = 266.dp + ) + .requiredWidth(width = 200.dp) + .requiredHeight(height = 44.dp) + ) { + Box( + modifier = Modifier + .requiredWidth(width = 200.dp) + .requiredHeight(height = 44.dp) + .clip(shape = RoundedCornerShape(15.dp)) + .background(color = Color(0xffdbdbf1))) + Text( + text = "${getUser.email}", + color = Color(0xff423a99), + textAlign = TextAlign.Center, + style = TextStyle( + fontSize = 17.sp, + fontWeight = FontWeight.Bold), + modifier = Modifier + .requiredWidth(width = 200.dp) + .requiredHeight(height = 44.dp) + .wrapContentHeight(align = Alignment.CenterVertically)) + } + } + } + item { + Box( + modifier = Modifier + .offset( + x = 9.dp, + y = 120.dp + ) + .requiredWidth(width = 393.dp) + .requiredHeight(height = 342.dp) + ) { + Box( + modifier = Modifier + .align(alignment = Alignment.TopStart) + .offset( + x = 0.dp, + y = 27.1240234375.dp + ) + .requiredWidth(width = 393.dp) + .requiredHeight(height = 315.dp) + ) { + Box( + modifier = Modifier + .requiredWidth(width = 393.dp) + .requiredHeight(height = 315.dp) + .clip(shape = RoundedCornerShape(5.dp)) + .background(color = Color.White) + .border( + border = BorderStroke(3.dp, Color(0xffdbdbf1)), + shape = RoundedCornerShape(5.dp) + ) + ) + + LazyColumn( + + contentPadding = PaddingValues( + top = 38.dp, + bottom = 50.dp, + start = 30.dp, + end = 30.dp + ), + verticalArrangement = Arrangement.spacedBy(1.dp) + ) { + items(items = getComms) { comment -> + Text( + text = "${comment.text}", + color = Color(0xff423a99), + style = TextStyle( + fontSize = 15.sp, + fontWeight = FontWeight.Bold + ), + modifier = Modifier + .align(alignment = Alignment.TopStart) + ) + + } + + } + + } + Box( + modifier = Modifier + .requiredWidth(width = 393.dp) + .requiredHeight(height = 54.dp) + ) { + Box( + modifier = Modifier + .requiredWidth(width = 393.dp) + .requiredHeight(height = 54.dp) + .clip(shape = RoundedCornerShape(15.dp)) + .background(color = Color(0xff423a99))) + Text( + text = "Комментарии:", + color = Color.White, + style = TextStyle( + fontSize = 17.sp, + fontWeight = FontWeight.Bold), + modifier = Modifier + .align(alignment = Alignment.TopStart) + .offset( + x = 24.dp, + y = 0.dp + ) + .requiredWidth(width = 210.dp) + .requiredHeight(height = 54.dp) + .wrapContentHeight(align = Alignment.CenterVertically)) + } + } + } + } +} diff --git a/app/src/main/java/com/example/pmulabs/screensMobile/RegisterScreen.kt b/app/src/main/java/com/example/pmulabs/screensMobile/RegisterScreen.kt new file mode 100644 index 0000000..27da7cb --- /dev/null +++ b/app/src/main/java/com/example/pmulabs/screensMobile/RegisterScreen.kt @@ -0,0 +1,454 @@ +package com.example.pmulabs.screensMobile + +import android.util.Log +import androidx.compose.foundation.background +import androidx.compose.foundation.clickable +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxHeight +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.offset +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.requiredHeight +import androidx.compose.foundation.layout.requiredWidth +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.foundation.text.KeyboardOptions +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.Visibility +import androidx.compose.material.icons.filled.VisibilityOff +import androidx.compose.material3.Button +import androidx.compose.material3.ButtonColors +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.Icon +import androidx.compose.material3.IconButton +import androidx.compose.material3.Text +import androidx.compose.material3.TextField +import androidx.compose.material3.TextFieldDefaults +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.saveable.rememberSaveable +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.rotate +import androidx.compose.ui.draw.shadow +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.text.TextStyle +import androidx.compose.ui.text.input.KeyboardType +import androidx.compose.ui.text.input.PasswordVisualTransformation +import androidx.compose.ui.text.input.VisualTransformation +import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import androidx.navigation.NavController +import com.example.pmulabs.basecomponents.navigate.ValidateEmail +import com.example.pmulabs.basecomponents.navigate.isValidEmail +import com.example.pmulabs.designElem.LeftCircles +import com.example.pmulabs.designElem.LogoMobile +import com.example.pmulabs.designElem.RightCircles +import com.example.pmulabs.graphs.AuthScreen +import com.example.pmulabs.graphs.Graph +import com.example.pmulabs.repository.UserRepository + +@OptIn(ExperimentalMaterial3Api::class) +@Composable +fun RegisterScreen(navController: NavController,modifier: Modifier = Modifier) { + + var emailValue by rememberSaveable { mutableStateOf("") } + var passwordValue by rememberSaveable { mutableStateOf("") } + var nicknameValue by rememberSaveable { mutableStateOf("") } + val userRepository= UserRepository() + val getAllData= userRepository.getAllData() + + var passwordVisibility by rememberSaveable { mutableStateOf(false) } + val emailRegex = "[a-zA-Z0-9._-]+@[a-z]+\\.+[a-z]+".toRegex() + + Box( + modifier = modifier + .requiredWidth(width = 412.dp) + .requiredHeight(height = 915.dp) + .background(color = Color.White) + ) { + Box( + modifier = Modifier + .align(alignment = Alignment.TopStart) + .offset( + x = 128.dp, + y = 730.dp + ) + .requiredWidth(width = 381.dp) + .requiredHeight(height = 268.dp) + .rotate(degrees = 8.33f) + ) { + RightCircles() + } + Box( + modifier = Modifier + .align(alignment = Alignment.TopStart) + .offset( + x = (-111.28436279296875).dp, + y = (-96.86965942382812).dp + ) + .requiredWidth(width = 250.dp) + .requiredHeight(height = 290.dp) + .rotate(degrees = 12.96f) + ) { + LeftCircles() + } + + } + + Box(modifier = Modifier.fillMaxSize(), contentAlignment = Alignment.BottomCenter) { + + Column( + horizontalAlignment = Alignment.CenterHorizontally, + verticalArrangement = Arrangement.Center, + modifier = Modifier + .fillMaxWidth() + .fillMaxHeight(0.8f) + .clip(RoundedCornerShape(15.dp)) + .background(Color.Transparent) + .padding(10.dp) + ) { + + Column(horizontalAlignment = Alignment.CenterHorizontally) { + Box( + modifier = Modifier + .fillMaxWidth() + .background(Color.Transparent), contentAlignment = Alignment.TopCenter + ) { + + LogoMobile( + modifier = Modifier + .align(alignment = Alignment.TopStart) + .fillMaxWidth() + .requiredHeight(height = 131.dp) + ) + + } + Text( + text = "Please, Sign In to your account", + color = Color(0xff7d7dbd), + textAlign = TextAlign.Center, + style = TextStyle( + fontSize = 20.sp + ), + modifier = modifier + .requiredWidth(width = 436.dp) + .requiredHeight(height = 27.dp) + ) + Spacer(modifier = Modifier.padding(10.dp)) + + Column(horizontalAlignment = Alignment.CenterHorizontally) { + TextField( + value = nicknameValue, + onValueChange = { + nicknameValue=it + }, + colors = TextFieldDefaults.textFieldColors( + containerColor = Color.White + ), + modifier = Modifier + .requiredWidth(width = 269.dp) + .requiredHeight(height = 53.dp) + .shadow(shape = RoundedCornerShape(40.dp), elevation = 5.dp) + .clip(shape = RoundedCornerShape(40.dp)), + label = { Text("Nickname") }, + placeholder = { Text("Nickname") }, + keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Email), + singleLine = true, + ) + Spacer(modifier = Modifier.padding(3.dp)) + ValidateEmail(emailValue, {emailValue=it} ) + Spacer(modifier = Modifier.padding(3.dp)) + TextField( + value = passwordValue, + onValueChange = { passwordValue = it }, + colors = TextFieldDefaults.textFieldColors( + containerColor = Color.White + ), + modifier = modifier + .requiredWidth(width = 269.dp) + .requiredHeight(height = 53.dp) + .shadow(shape = RoundedCornerShape(40.dp), elevation = 5.dp) + .clip(shape = RoundedCornerShape(40.dp)), + label = { Text("Password") }, + singleLine = true, + placeholder = { Text("Password") }, + visualTransformation = if (passwordVisibility) VisualTransformation.None else PasswordVisualTransformation(), + keyboardOptions = KeyboardOptions(keyboardType = KeyboardType.Password), + trailingIcon = { + val image = if (passwordVisibility) + Icons.Filled.Visibility + else Icons.Filled.VisibilityOff + + val description = + if (passwordVisibility) "Hide password" else "Show password" + + IconButton(onClick = { passwordVisibility = !passwordVisibility }) { + Icon(imageVector = image, description) + } + } + ) + + Spacer(modifier = Modifier.padding(10.dp)) + Button( + colors = ButtonColors( + containerColor = Color(0xff423a99), + disabledContainerColor = Color(0xff423a99), + contentColor = Color.White, + disabledContentColor = Color.White + ), + onClick = { + if (passwordValue.isNotEmpty() && isValidEmail(emailValue) && nicknameValue.isNotEmpty()) { + if(!isUserExist(passwordValue,emailValue,nicknameValue)){ + navController.navigate(route = Graph.MAIN){ + popUpTo(Graph.MAIN) + } + } + } + + }, + modifier = Modifier + .fillMaxWidth(0.5f) + .height(50.dp) + ) { + Text(text = "Sign Up", fontSize = 20.sp) + } + + Spacer(modifier = Modifier.padding(0.dp)) + + Text( + text = "Do you have an account? Sign In", + color = Color(0xff7d7dbd), + textAlign = TextAlign.Center, + style = TextStyle( + fontSize = 20.sp + ), + modifier = Modifier + .fillMaxSize() + .offset( + x = 0.dp, + y = 75.dp + ) + .clickable { + navController.navigate(route = AuthScreen.Entry.route) + { + popUpTo(AuthScreen.Splash.route) + } + } + ) + Spacer(modifier = Modifier.padding(20.dp)) + } + } + } + } +} + +fun isUserExist(passwordValue: String, emailValue: String, nicknameValue: String): Boolean { + val userRepository = UserRepository() + val getAllData = userRepository.getAllData() + + if (passwordValue.isNotEmpty() && isValidEmail(emailValue) && nicknameValue.isNotEmpty()) { + getAllData.forEach { user -> + if (user.email == emailValue || user.nickname == nicknameValue) { + Log.d("User already exist. User id: ", user.id.toString()) + return true + } + } + } + + return false +} + +/* +@Composable +fun RegisterScreen(navController: NavController,modifier: Modifier = Modifier) { + Box( + modifier = modifier + .requiredWidth(width = 412.dp) + .requiredHeight(height = 915.dp) + .background(color = Color.White) + ) { + Box( + modifier = Modifier + .align(alignment = Alignment.TopStart) + .offset( + x = (-17).dp, + y = 329.dp + ) + .requiredWidth(width = 436.dp) + .requiredHeight(height = 325.dp) + ) { + Box( + modifier = Modifier + .align(alignment = Alignment.TopStart) + .offset( + x = 69.1444091796875.dp, + y = 122.9124755859375.dp + ) + .requiredWidth(width = 308.dp) + .requiredHeight(height = 61.dp) + ) { + + } + Box( + modifier = Modifier + .align(alignment = Alignment.TopStart) + .offset( + x = 69.1444091796875.dp, + y = 193.824951171875.dp + ) + .requiredWidth(width = 308.dp) + .requiredHeight(height = 61.dp) + ) { + + } + Box( + modifier = Modifier + .align(alignment = Alignment.TopStart) + .offset( + x = 68.dp, + y = 52.dp + ) + .requiredWidth(width = 308.dp) + .requiredHeight(height = 61.dp) + ) { + + } + Text( + textAlign = TextAlign.Center, + text = buildAnnotatedString { + withStyle(style = SpanStyle( + color = Color(0xff7d7dbd), + fontSize = 20.sp)) {append("Please, ")} + withStyle(style = SpanStyle( + color = Color(0xff7d7dbd), + fontSize = 20.sp, + fontWeight = FontWeight.Bold)) {append("Sign Up")}}, + modifier = Modifier + .fillMaxSize()) + } + Box( + modifier = Modifier + .align(alignment = Alignment.TopStart) + .offset( + x = 128.dp, + y = 730.dp + ) + .requiredWidth(width = 381.dp) + .requiredHeight(height = 268.dp) + .rotate(degrees = 8.33f) + ) { + RightCircles() + } + Box( + modifier = Modifier + .align(alignment = Alignment.TopStart) + .offset( + x = (-111.28436279296875).dp, + y = (-96.86965942382812).dp + ) + .requiredWidth(width = 250.dp) + .requiredHeight(height = 290.dp) + ) { + Box( + modifier = Modifier + .rotate(degrees = 12.96f) + ) { + LeftCircles() + } + Box( + modifier = Modifier + .align(alignment = Alignment.TopStart) + .offset( + x = 140.35101318359375.dp, + y = 152.06341552734375.dp + ) + .requiredWidth(width = 66.dp) + .requiredHeight(height = 27.dp) + ) { + BackButton(modifier=Modifier + .clickable { navController.navigate(route = AuthScreen.Entry.route){ + popUpTo(AuthScreen.Splash.route) + } })} + } + Box( + modifier = Modifier + .align(alignment = Alignment.TopStart) + .offset( + x = 50.dp, + y = 681.dp + ) + .requiredWidth(width = 308.dp) + .requiredHeight(height = 127.dp) + ) { + Text( + text = "Do you have an account? ", + color = Color(0xff7d7dbd), + textAlign = TextAlign.Center, + style = TextStyle( + fontSize = 20.sp), + modifier = Modifier + .fillMaxSize() + .offset( + x = 0.dp, + y = 75.dp + )) + Text( + text = "Sign In", + color = Color(0xff7d7dbd), + textAlign = TextAlign.Center, + style = TextStyle( + fontSize = 20.sp, + fontWeight = FontWeight.Bold), + modifier = Modifier + .fillMaxSize() + .offset( + x = 0.dp, + y = 95.dp + ) + .clickable { navController.navigate(route = AuthScreen.Entry.route) + { + popUpTo(AuthScreen.Splash.route) + }}) + Box( + modifier = Modifier + .requiredWidth(width = 308.dp) + .requiredHeight(height = 82.dp) + ) { + ButtonCustom(name = "Sign Up",modifier = Modifier + .fillMaxSize() + .clickable { navController.navigate(route = Graph.MAIN){ + popUpTo(Graph.MAIN) + } } + ) + } + } + Box( + modifier = Modifier + .align(alignment = Alignment.TopStart) + .offset( + x = 57.dp, + y = 165.dp + ) + .requiredWidth(width = 302.dp) + .requiredHeight(height = 140.dp) + ) { + LogoMobile(modifier = Modifier + .align(alignment = Alignment.TopStart) + .offset( + x = 0.dp, + y = 9.dp + ) + .fillMaxWidth() + .requiredHeight(height = 131.dp)) + } + } +}*/ diff --git a/app/src/main/java/com/example/pmulabs/screensMobile/SearchByTagScreen.kt b/app/src/main/java/com/example/pmulabs/screensMobile/SearchByTagScreen.kt new file mode 100644 index 0000000..3fef6d6 --- /dev/null +++ b/app/src/main/java/com/example/pmulabs/screensMobile/SearchByTagScreen.kt @@ -0,0 +1,45 @@ +package com.example.pmulabs.screensMobile + +import android.util.Log +import androidx.compose.foundation.background +import androidx.compose.foundation.clickable +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.PaddingValues +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.lazy.items +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.unit.dp +import androidx.navigation.NavController +import com.example.pmulabs.basecomponents.navigate.BackButton +import com.example.pmulabs.basecomponents.navigate.BottomBarScreen +import com.example.pmulabs.basecomponents.navigate.SEARCHBYTAG_ARGUMENT_KEY +import com.example.pmulabs.designElem.ArticleItem +import com.example.pmulabs.repository.ArticleRepository + +@Composable +fun SearchByTagScreen(navController: NavController, modifier: Modifier = Modifier){ + + val articleRepository= ArticleRepository() + val getAllData= articleRepository.getAllData() + var id=navController.currentBackStackEntry?.arguments?.getString(SEARCHBYTAG_ARGUMENT_KEY).toString() + Log.d("id: ",id) + + LazyColumn(modifier= Modifier + .background(Color.White) + .fillMaxSize(), + contentPadding = PaddingValues(top =75.dp, bottom = 10.dp, start = 10.dp,end=10.dp), + verticalArrangement = Arrangement.spacedBy(1.dp)){ + item{ + BackButton(modifier=Modifier + .clickable { navController.popBackStack()}) + } + items(items = getAllData){ article -> + if(article.tagId.toString()==id) { + ArticleItem(article = article, onArticleClick = {navController.navigate(BottomBarScreen.ArticlePage.passId(article.id.toString()))}) + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/pmulabs/screensMobile/SearchScreen.kt b/app/src/main/java/com/example/pmulabs/screensMobile/SearchScreen.kt new file mode 100644 index 0000000..136611b --- /dev/null +++ b/app/src/main/java/com/example/pmulabs/screensMobile/SearchScreen.kt @@ -0,0 +1,46 @@ +package com.example.pmulabs.screensMobile + +import android.util.Log +import androidx.compose.foundation.background +import androidx.compose.foundation.clickable +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.PaddingValues +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.lazy.items +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.unit.dp +import androidx.navigation.NavController +import com.example.pmulabs.basecomponents.navigate.BackButton +import com.example.pmulabs.basecomponents.navigate.BottomBarScreen +import com.example.pmulabs.basecomponents.navigate.SEARCH_ARGUMENT_TEXT +import com.example.pmulabs.designElem.ArticleItem +import com.example.pmulabs.repository.ArticleRepository + +@Composable +fun SearchScreen(navController: NavController, modifier: Modifier = Modifier){ + + val articleRepository= ArticleRepository() + val getAllData= articleRepository.getAllData() + var text=navController.currentBackStackEntry?.arguments?.getString(SEARCH_ARGUMENT_TEXT).toString() + Log.d("text: ",text) + + LazyColumn( + modifier= Modifier + .background(Color.White) + .fillMaxSize(), + contentPadding = PaddingValues(top =75.dp, bottom = 10.dp, start = 10.dp,end=10.dp), + verticalArrangement = Arrangement.spacedBy(1.dp)){ + item{ + BackButton(modifier=Modifier + .clickable { navController.popBackStack()}) + } + items(items = getAllData){ article -> + if(article.title.contains(text)) { + ArticleItem(article = article,onArticleClick = {navController.navigate(BottomBarScreen.ArticlePage.passId(article.id.toString()))}) + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/pmulabs/screensMobile/SplashScreen.kt b/app/src/main/java/com/example/pmulabs/screensMobile/SplashScreen.kt new file mode 100644 index 0000000..3fe5b9f --- /dev/null +++ b/app/src/main/java/com/example/pmulabs/screensMobile/SplashScreen.kt @@ -0,0 +1,143 @@ +package com.example.pmulabs.screensMobile + +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.offset +import androidx.compose.foundation.layout.requiredHeight +import androidx.compose.foundation.layout.requiredWidth +import androidx.compose.material3.Button +import androidx.compose.material3.ButtonColors +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.rotate +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.text.TextStyle +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import androidx.navigation.NavController +import com.example.pmulabs.designElem.LeftCircles +import com.example.pmulabs.designElem.LogoMobile +import com.example.pmulabs.designElem.RightCircles +import com.example.pmulabs.graphs.AuthScreen + +@Composable +fun SplashScreen(navController: NavController,modifier: Modifier = Modifier) { + Box( + modifier = modifier + .requiredWidth(width = 412.dp) + .requiredHeight(height = 915.dp) + .background(color = Color.White) + ) { + Box( + modifier = Modifier + .align(alignment = Alignment.TopStart) + .offset( + x = 128.dp, + y = 730.dp + ) + .requiredWidth(width = 381.dp) + .requiredHeight(height = 268.dp) + .rotate(degrees = 8.33f) + ) { + RightCircles() + } + Box( + modifier = Modifier + .align(alignment = Alignment.TopStart) + .offset( + x = (-111.28436279296875).dp, + y = (-96.86965942382812).dp + ) + .requiredWidth(width = 250.dp) + .requiredHeight(height = 290.dp) + .rotate(degrees = 12.96f) + ) { + LeftCircles() + } + Box( + modifier = Modifier + .align(alignment = Alignment.TopStart) + .offset( + x = 0.dp, + y = 200.dp + ) + .requiredWidth(width = 412.dp) + .requiredHeight(height = 190.dp) + ) { + Box( + modifier = Modifier + .align(alignment = Alignment.TopStart) + .offset( + x = 62.00006103515625.dp, + y = 50.dp + ) + .requiredWidth(width = 302.dp) + .requiredHeight(height = 140.dp) + ) { + LogoMobile(modifier = Modifier + .align(alignment = Alignment.TopStart) + .offset( + x = 0.dp, + y = 9.dp + ) + .fillMaxWidth() + .requiredHeight(height = 131.dp)) + } + Text( + text = "Welcome to", + color = Color(0xff7d7dbd), + textAlign = TextAlign.Center, + style = TextStyle( + fontSize = 48.sp, + fontWeight = FontWeight.Bold), + modifier = Modifier + .fillMaxSize()) + } + Box( + modifier = Modifier + .align(alignment = Alignment.TopStart) + .offset( + x = 0.dp, + y = 649.2312622070312.dp + ) + .requiredWidth(width = 412.dp) + .requiredHeight(height = 92.dp) + ) { + Text( + text = "Best app with game news!", + color = Color(0xff7d7dbd), + textAlign = TextAlign.Center, + style = TextStyle( + fontSize = 20.sp), + modifier = Modifier + .fillMaxSize()) + Button( + colors = ButtonColors( + containerColor = Color(0xff423a99), + disabledContainerColor = Color(0xff423a99), + contentColor = Color.White, + disabledContentColor = Color.White + ), + onClick = {navController.navigate(route = AuthScreen.Entry.route)}, + modifier = Modifier + .fillMaxWidth(0.5f) + .height(50.dp) + .align(alignment = Alignment.TopStart) + .offset( + x = 106.5.dp, + y = 31.31878662109375.dp + ) + ) { + Text(text = "Get Started", fontSize = 20.sp) + } + + } + } +} diff --git a/app/src/main/java/com/example/pmulabs/screensMobile/TagsScreen.kt b/app/src/main/java/com/example/pmulabs/screensMobile/TagsScreen.kt new file mode 100644 index 0000000..bf9b4bd --- /dev/null +++ b/app/src/main/java/com/example/pmulabs/screensMobile/TagsScreen.kt @@ -0,0 +1,37 @@ +package com.example.pmulabs.screensMobile + +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.PaddingValues +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.lazy.items +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.unit.dp +import androidx.navigation.NavController +import com.example.pmulabs.basecomponents.navigate.BottomBarScreen +import com.example.pmulabs.designElem.TagItem +import com.example.pmulabs.repository.TegRepository + +@Composable +fun TagsScreen(navController: NavController, modifier: Modifier = Modifier){ + + val tegRepository= TegRepository() + val getAllData= tegRepository.getAllData() + + LazyColumn( + modifier= Modifier + .background(Color.White) + .fillMaxSize(), + contentPadding = PaddingValues(top =75.dp, bottom = 10.dp, start = 25.dp,end=25.dp), + verticalArrangement = Arrangement.spacedBy(15.dp)){ + items(items = getAllData){ tag -> + TagItem( + teg = tag, + onTagClick = {navController.navigate(BottomBarScreen.SearchByTag.passId(tag.id.toString()))} + ) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/pmulabs/ui/theme/Color.kt b/app/src/main/java/com/example/pmulabs/ui/theme/Color.kt new file mode 100644 index 0000000..da0688c --- /dev/null +++ b/app/src/main/java/com/example/pmulabs/ui/theme/Color.kt @@ -0,0 +1,11 @@ +package com.example.pmulabs.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/app/src/main/java/com/example/pmulabs/ui/theme/Theme.kt b/app/src/main/java/com/example/pmulabs/ui/theme/Theme.kt new file mode 100644 index 0000000..bc0364e --- /dev/null +++ b/app/src/main/java/com/example/pmulabs/ui/theme/Theme.kt @@ -0,0 +1,70 @@ +package com.example.pmulabs.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.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 = Purple40, + secondary = PurpleGrey40, + tertiary = Pink40 + + /* Other default colors to override + background = Color(0xFFFFFBFE), + surface = Color(0xFFFFFBFE), + onPrimary = Color.White, + onSecondary = Color.White, + onTertiary = Color.White, + onBackground = Color(0xFF1C1B1F), + onSurface = Color(0xFF1C1B1F), + */ +) + +@Composable +fun PMULabsTheme( + 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/app/src/main/java/com/example/pmulabs/ui/theme/Type.kt b/app/src/main/java/com/example/pmulabs/ui/theme/Type.kt new file mode 100644 index 0000000..433b3ea --- /dev/null +++ b/app/src/main/java/com/example/pmulabs/ui/theme/Type.kt @@ -0,0 +1,34 @@ +package com.example.pmulabs.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 + ) + /* Other default text styles to override + 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/app/src/main/res/drawable/ellipse7.png b/app/src/main/res/drawable/ellipse7.png new file mode 100644 index 0000000000000000000000000000000000000000..2e42650e8f7f683f2c24b8dd29e3eb32e2647c62 GIT binary patch literal 2066 zcmV+t2<`WYP)o~muCVSO$4(_eINIrX-2E!8x<6m()V0d}FyrE1n!LSSQ~p)PFva)B-c ztw=V&*0OJ<3at(To0dYVmi{IzmK`jq0NZ)&Osba61!Gc(1)7GgFZuvm)1C>Tof1Fg z{_4gx=g^x)8Q@@gtP4=NVCuA)3!$AKi7LRh5OpfmG?{Z+tW(N;n7_)z4IW_H77gfB zTSGkAFb@{s;N14T(6(rv(J-`GPJt(DW=8Lf}fb|w&f{TF^ZY*4oFJ*)} z4=}++Buc5md_JaD?lizIyfb(BBm@_6DP$zA+)034aCI-T1~(TVUZopzNqDnJs{szC z%O3?uM=6O;uUiYSweFR0Lp;*9kc5K#L|Wj&tF8M(2rtq%bK}PSKm8?mAYrr`HLy*Y zwRLj=#%UoDH}b&&w%<0k-qqPXbI= z>Bc;U>&SZr*oAj4Tp|KI-EaM2$Z2)$RcOKsJfgS2-dHvUQLBNOHUm4AZoKRJR>qwH zcH!0EGFJkij?Yr9R`>Fh&8-2pOGUatgVkoBzS501eY~Y&<2kTx($MR?gcsOP=Ejdc z&W$%Vux=%jYFinA!&0OM z=K`QlnN&^uLJkx*@Qtu|1q?yAU7j4$#LEV@-vF5a7{YSb;~`D#r_iqiz>s{1vwi-N z4{#^DL;&n%?+`D~f!#m&E!?yK#6r)7PwL!~_{8Sjgcpd1e>KrgI)x^@KzwHQB%G}@ zz?lGu(WhN2(;DEX0w7jfZ+>Xy-ADjBlgXBQ6bLX7zcYIq$|D3ANW_>Eu0qJ@Dp zQgP}(_yAuEfK<%=IiZvr3{xqexFGsAb` z@v=ZF{$1S*eJ%h}kv#~oEoK!0AO+9Y-Hk*G18F#Z6ku8yNXGG|`++|Qfat9au)U*Y zE&!so?TH*0!c7i9)HVj#o(lg?*kTF9>Tc^Zv1}^Msx%O%a_2+sT!=rr!)E~yo7*)q1R~oe#fpqZ9x!DD+G1=R(`FvrdE%12I@$A=>M~?iONg zVpgVsVSUvvwa$T8*&EaJoS0XW0{tspnLg7G2fbRwE-&eHnkEMNSNIPHHL&NJIFqW0 zGXc<-XLdT!?Wg#7h!P=Xv@rn_j2`ztxTa;*<*QhajOsjO)b`iS9Q|B zA*R$oBc-gFI(wZ5SaH1=IEZePdbugQs*@@7DqE%2tzUBiP}kYE@Ty)KI7Ax*wai_3 zcRmfLmj({e#=uUs!mE03;E=VkE^^HTfT|r{HE4i67vz~#LCyr2uD!ymq6n}@kTFrZ z+I+U@TJJVd1z6d%`mJz|jAF*0tz?Y?YdO7P4BDFb=hjQz8OMS ztQP`|i%ywOnuJ$H+rX=6WQ;^9)r|?)(t>0H>{*cCyYX6B>_S@fe))5I&U!173vh^4 zYb2tO>Jm{ats6=@z@7{8sXLsxkqZzHZCVZPg>+;T0rrCPy19ZAs6OXQUy5|!i?qy3$8b*0EY-O z8YrZCx!C1U!SyB^;1FR(4H{Gp?V^jzL5Cv1D=f^qNhBBEG=YfPb{zt|g)M;PZk*bY z*QriJVME*YRw71#_h9Xu2Lt0#NFt#P5#R&4Fl!q>mukALQ|(-k5}ghgHlmy!*Fk_= zWDV`ZtjA0clfsXf7NVLUz#X!4Xl?0SszB@DJh~s+sQQ$P!p5&uTXq`)+_NCmKG2!4 z+TD}}vy>{R%h0BD9@_)~j)V)ghWM#GY-$?&u~Mp#`r~B6x()%3T(DT?1D)A84vu4T zC->7|e=P0zXN=R}CJ1oiEZ~_N|Hyry{m(M{YvIp_QU=G>&l*Z?(ce>U(?by8338!- wY9F)U$Lj*VDfGT2SCw}B2ocEZJCasU7T07*qoM6N<$f?IOd1ONa4 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/ic_bottom_categories.xml b/app/src/main/res/drawable/ic_bottom_categories.xml new file mode 100644 index 0000000..04e91fa --- /dev/null +++ b/app/src/main/res/drawable/ic_bottom_categories.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/drawable/ic_bottom_categories_focused.xml b/app/src/main/res/drawable/ic_bottom_categories_focused.xml new file mode 100644 index 0000000..5a08903 --- /dev/null +++ b/app/src/main/res/drawable/ic_bottom_categories_focused.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/drawable/ic_bottom_cooperation.xml b/app/src/main/res/drawable/ic_bottom_cooperation.xml new file mode 100644 index 0000000..728f75e --- /dev/null +++ b/app/src/main/res/drawable/ic_bottom_cooperation.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/drawable/ic_bottom_cooperation_focused.xml b/app/src/main/res/drawable/ic_bottom_cooperation_focused.xml new file mode 100644 index 0000000..d9889a4 --- /dev/null +++ b/app/src/main/res/drawable/ic_bottom_cooperation_focused.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/drawable/ic_bottom_info.xml b/app/src/main/res/drawable/ic_bottom_info.xml new file mode 100644 index 0000000..1295f47 --- /dev/null +++ b/app/src/main/res/drawable/ic_bottom_info.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/drawable/ic_bottom_info_focused.xml b/app/src/main/res/drawable/ic_bottom_info_focused.xml new file mode 100644 index 0000000..654cfb3 --- /dev/null +++ b/app/src/main/res/drawable/ic_bottom_info_focused.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/drawable/ic_bottom_main.xml b/app/src/main/res/drawable/ic_bottom_main.xml new file mode 100644 index 0000000..8cd1f3d --- /dev/null +++ b/app/src/main/res/drawable/ic_bottom_main.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/drawable/ic_bottom_main_focused.xml b/app/src/main/res/drawable/ic_bottom_main_focused.xml new file mode 100644 index 0000000..4c5e854 --- /dev/null +++ b/app/src/main/res/drawable/ic_bottom_main_focused.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/drawable/ic_bottom_profile.xml b/app/src/main/res/drawable/ic_bottom_profile.xml new file mode 100644 index 0000000..2ed616d --- /dev/null +++ b/app/src/main/res/drawable/ic_bottom_profile.xml @@ -0,0 +1,6 @@ + + + + diff --git a/app/src/main/res/drawable/ic_bottom_profile_focused.xml b/app/src/main/res/drawable/ic_bottom_profile_focused.xml new file mode 100644 index 0000000..d92f742 --- /dev/null +++ b/app/src/main/res/drawable/ic_bottom_profile_focused.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/drawable/ic_comment.xml b/app/src/main/res/drawable/ic_comment.xml new file mode 100644 index 0000000..a33cc70 --- /dev/null +++ b/app/src/main/res/drawable/ic_comment.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/drawable/ic_launcher_background.xml b/app/src/main/res/drawable/ic_launcher_background.xml new file mode 100644 index 0000000..07d5da9 --- /dev/null +++ b/app/src/main/res/drawable/ic_launcher_background.xml @@ -0,0 +1,170 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/ic_launcher_foreground.xml b/app/src/main/res/drawable/ic_launcher_foreground.xml new file mode 100644 index 0000000..2b068d1 --- /dev/null +++ b/app/src/main/res/drawable/ic_launcher_foreground.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/iconhashtag1.png b/app/src/main/res/drawable/iconhashtag1.png new file mode 100644 index 0000000000000000000000000000000000000000..05d9870bbb0a86dea4319855dbf543a027f931b2 GIT binary patch literal 515 zcmV+e0{s1nP)c}2DtRzR zjAeN%@QS6yd@FfpP#{GNUvaAuV~mkR&k|!J)yV~*NpHi&jnrwhw*CI#AIg)x5JKaQ@(?yLu>dIy0e}bu)}x` z`7y*04$!+yW2Q>`tS$cwP;AYrO#w^R-2&aI4t`=l>=(~43(9+w=j-H?d4Ob_str ztrUZ*kZ&+PM|kwP4LR{0jDtFFeEFl;hFQB7co#qwTJ^!`ZoXo002ovPDHLk FV1mio(QW_$ literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/image2.png b/app/src/main/res/drawable/image2.png new file mode 100644 index 0000000000000000000000000000000000000000..7a78c7bdb5c71b0ac13ab9cb969bfdf88e3558e9 GIT binary patch literal 36791 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/image3.png b/app/src/main/res/drawable/image3.png new file mode 100644 index 0000000000000000000000000000000000000000..e47c903a1455623105262bb209183693ea07e8fa GIT binary patch literal 109078 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

t_!QXZI%j8;0(Pp%LX_X49xc<4zj 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 z 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 W&l0QG^4bmn000013v-yQinR-ulk^ipUQ? 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 Z{68?`iEHBjzbF6z002ovPDHLkV1n7-m!tpy literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml new file mode 100644 index 0000000..6f3b755 --- /dev/null +++ b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml new file mode 100644 index 0000000..6f3b755 --- /dev/null +++ b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher.webp b/app/src/main/res/mipmap-hdpi/ic_launcher.webp new file mode 100644 index 0000000000000000000000000000000000000000..c209e78ecd372343283f4157dcfd918ec5165bb3 GIT binary patch literal 1404 zcmV-?1%vuhNk&F=1pok7MM6+kP&il$0000G0000-002h-06|PpNX!5L00Dqw+t%{r zzW2vH!KF=w&cMnnN@{whkTw+#mAh0SV?YL=)3MimFYCWp#fpdtz~8$hD5VPuQgtcN zXl<@<#Cme5f5yr2h%@8TWh?)bSK`O z^Z@d={gn7J{iyxL_y_%J|L>ep{dUxUP8a{byupH&!UNR*OutO~0{*T4q5R6@ApLF! z5{w?Z150gC7#>(VHFJZ-^6O@PYp{t!jH(_Z*nzTK4 zkc{fLE4Q3|mA2`CWQ3{8;gxGizgM!zccbdQoOLZc8hThi-IhN90RFT|zlxh3Ty&VG z?Fe{#9RrRnxzsu|Lg2ddugg7k%>0JeD+{XZ7>Z~{=|M+sh1MF7~ zz>To~`~LVQe1nNoR-gEzkpe{Ak^7{{ZBk2i_<+`Bq<^GB!RYG+z)h;Y3+<{zlMUYd zrd*W4w&jZ0%kBuDZ1EW&KLpyR7r2=}fF2%0VwHM4pUs}ZI2egi#DRMYZPek*^H9YK zay4Iy3WXFG(F14xYsoDA|KXgGc5%2DhmQ1gFCkrgHBm!lXG8I5h*uf{rn48Z!_@ z4Bk6TJAB2CKYqPjiX&mWoW>OPFGd$wqroa($ne7EUK;#3VYkXaew%Kh^3OrMhtjYN?XEoY`tRPQsAkH-DSL^QqyN0>^ zmC>{#F14jz4GeW{pJoRpLFa_*GI{?T93^rX7SPQgT@LbLqpNA}<@2wH;q493)G=1Y z#-sCiRNX~qf3KgiFzB3I>4Z%AfS(3$`-aMIBU+6?gbgDb!)L~A)je+;fR0jWLL-Fu z4)P{c7{B4Hp91&%??2$v9iRSFnuckHUm}or9seH6 z>%NbT+5*@L5(I9j@06@(!{ZI?U0=pKn8uwIg&L{JV14+8s2hnvbRrU|hZCd}IJu7*;;ECgO%8_*W Kmw_-CKmY()leWbG literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp new file mode 100644 index 0000000000000000000000000000000000000000..b2dfe3d1ba5cf3ee31b3ecc1ced89044a1f3b7a9 GIT binary patch literal 2898 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher.webp b/app/src/main/res/mipmap-mdpi/ic_launcher.webp new file mode 100644 index 0000000000000000000000000000000000000000..4f0f1d64e58ba64d180ce43ee13bf9a17835fbca GIT binary patch literal 982 zcmV;{11bDcNk&G_0{{S5MM6+kP&il$0000G0000l001ul06|PpNU8t;00Dqo+t#w^ z^1csucXz7-Qrhzl9HuHB%l>&>1tG2^vb*E&k^T3$FG1eQZ51g$uv4V+kI`0<^1Z@N zk?Jjh$olyC%l>)Xq;7!>{iBj&BjJ`P&$fsCfpve_epJOBkTF?nu-B7D!hO=2ZR}

C%4 zc_9eOXvPbC4kzU8YowIA8cW~Uv|eB&yYwAObSwL2vY~UYI7NXPvf3b+c^?wcs~_t{ ze_m66-0)^{JdOMKPwjpQ@Sna!*?$wTZ~su*tNv7o!gXT!GRgivP}ec?5>l1!7<(rT zds|8x(qGc673zrvYIz;J23FG{9nHMnAuP}NpAED^laz3mAN1sy+NXK)!6v1FxQ;lh zOBLA>$~P3r4b*NcqR;y6pwyhZ3_PiDb|%n1gGjl3ZU}ujInlP{eks-#oA6>rh&g+!f`hv#_%JrgYPu z(U^&XLW^QX7F9Z*SRPpQl{B%x)_AMp^}_v~?j7 zapvHMKxSf*Mtyx8I}-<*UGn3)oHd(nn=)BZ`d$lDBwq_GL($_TPaS{UeevT(AJ`p0 z9%+hQb6z)U9qjbuXjg|dExCLjpS8$VKQ55VsIC%@{N5t{NsW)=hNGI`J=x97_kbz@ E0Of=7!TQj4N+cqN`nQhxvX7dAV-`K|Ub$-q+H-5I?Tx0g9jWxd@A|?POE8`3b8fO$T))xP* z(X?&brZw({`)WU&rdAs1iTa0x6F@PIxJ&&L|dpySV!ID|iUhjCcKz(@mE z!x@~W#3H<)4Ae(4eQJRk`Iz3<1)6^m)0b_4_TRZ+cz#eD3f8V;2r-1fE!F}W zEi0MEkTTx}8i1{`l_6vo0(Vuh0HD$I4SjZ=?^?k82R51bC)2D_{y8mi_?X^=U?2|F{Vr7s!k(AZC$O#ZMyavHhlQ7 zUR~QXuH~#o#>(b$u4?s~HLF*3IcF7023AlwAYudn0FV~|odGH^05AYPEfR)8p`i{n zwg3zPVp{+wOsxKc>)(pMupKF!Y2HoUqQ3|Yu|8lwR=?5zZuhG6J?H`bSNk_wPoM{u zSL{c@pY7+c2kck>`^q1^^gR0QB7Y?KUD{vz-uVX~;V-rW)PDcI)$_UjgVV?S?=oLR zf4}zz{#*R_{LkiJ#0RdQLNC^2Vp%JPEUvG9ra2BVZ92(p9h7Ka@!yf9(lj#}>+|u* z;^_?KWdzkM`6gqPo9;;r6&JEa)}R3X{(CWv?NvgLeOTq$cZXqf7|sPImi-7cS8DCN zGf;DVt3Am`>hH3{4-WzH43Ftx)SofNe^-#|0HdCo<+8Qs!}TZP{HH8~z5n`ExcHuT zDL1m&|DVpIy=xsLO>8k92HcmfSKhflQ0H~9=^-{#!I1g(;+44xw~=* zxvNz35vfsQE)@)Zsp*6_GjYD};Squ83<_?^SbALb{a`j<0Gn%6JY!zhp=Fg}Ga2|8 z52e1WU%^L1}15Ex0fF$e@eCT(()_P zvV?CA%#Sy08_U6VPt4EtmVQraWJX` zh=N|WQ>LgrvF~R&qOfB$!%D3cGv?;Xh_z$z7k&s4N)$WYf*k=|*jCEkO19{h_(%W4 zPuOqbCw`SeAX*R}UUsbVsgtuG?xs(#Ikx9`JZoQFz0n*7ZG@Fv@kZk`gzO$HoA9kN z8U5{-yY zvV{`&WKU2$mZeoBmiJrEdzUZAv1sRxpePdg1)F*X^Y)zp^Y*R;;z~vOv-z&)&G)JQ{m!C9cmziu1^nHA z`#`0c>@PnQ9CJKgC5NjJD8HM3|KC(g5nnCq$n0Gsu_DXk36@ql%npEye|?%RmG)

FJ$wK}0tWNB{uH;AM~i literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher.webp b/app/src/main/res/mipmap-xhdpi/ic_launcher.webp new file mode 100644 index 0000000000000000000000000000000000000000..948a3070fe34c611c42c0d3ad3013a0dce358be0 GIT binary patch literal 1900 zcmV-y2b1_xNk&Fw2LJ$9MM6+kP&il$0000G0001A003VA06|PpNH75a00DqwTbm-~ zullQTcXxO9ki!OCRx^i?oR|n!<8G0=kI^!JSjFi-LL*`V;ET0H2IXfU0*i>o6o6Gy zRq6Ap5(_{XLdXcL-MzlN`ugSdZY_`jXhcENAu)N_0?GhF))9R;E`!bo9p?g?SRgw_ zEXHhFG$0{qYOqhdX<(wE4N@es3VIo$%il%6xP9gjiBri+2pI6aY4 zJbgh-Ud|V%3O!IcHKQx1FQH(_*TK;1>FQWbt^$K1zNn^cczkBs=QHCYZ8b&l!UV{K z{L0$KCf_&KR^}&2Fe|L&?1I7~pBENnCtCuH3sjcx6$c zwqkNkru);ie``q+_QI;IYLD9OV0ZxkuyBz|5<$1BH|vtey$> z5oto4=l-R-Aaq`Dk0}o9N0VrkqW_#;!u{!bJLDq%0092{Ghe=F;(kn} z+sQ@1=UlX30+2nWjkL$B^b!H2^QYO@iFc0{(-~yXj2TWz?VG{v`Jg zg}WyYnwGgn>{HFaG7E~pt=)sOO}*yd(UU-D(E&x{xKEl6OcU?pl)K%#U$dn1mDF19 zSw@l8G!GNFB3c3VVK0?uyqN&utT-D5%NM4g-3@Sii9tSXKtwce~uF zS&Jn746EW^wV~8zdQ1XC28~kXu8+Yo9p!<8h&(Q({J*4DBglPdpe4M_mD8AguZFn~ ztiuO~{6Bx?SfO~_ZV(GIboeR9~hAym{{fV|VM=77MxDrbW6`ujX z<3HF(>Zr;#*uCvC*bpoSr~C$h?_%nXps@A)=l_;({Fo#6Y1+Zv`!T5HB+)#^-Ud_; zBwftPN=d8Vx)*O1Mj+0oO=mZ+NVH*ptNDC-&zZ7Hwho6UQ#l-yNvc0Cm+2$$6YUk2D2t#vdZX-u3>-Be1u9gtTBiMB^xwWQ_rgvGpZ6(C@e23c!^K=>ai-Rqu zhqT`ZQof;9Bu!AD(i^PCbYV%yha9zuoKMp`U^z;3!+&d@Hud&_iy!O-$b9ZLcSRh? z)R|826w}TU!J#X6P%@Zh=La$I6zXa#h!B;{qfug}O%z@K{EZECu6zl)7CiNi%xti0 zB{OKfAj83~iJvmpTU|&q1^?^cIMn2RQ?jeSB95l}{DrEPTW{_gmU_pqTc)h@4T>~& zluq3)GM=xa(#^VU5}@FNqpc$?#SbVsX!~RH*5p0p@w z;~v{QMX0^bFT1!cXGM8K9FP+=9~-d~#TK#ZE{4umGT=;dfvWi?rYj;^l_Zxywze`W z^Cr{55U@*BalS}K%Czii_80e0#0#Zkhlij4-~I@}`-JFJ7$5{>LnoJSs??J8kWVl6|8A}RCGAu9^rAsfCE=2}tHwl93t0C?#+jMpvr7O3`2=tr{Hg$=HlnjVG^ewm|Js0J*kfPa6*GhtB>`fN!m#9J(sU!?(OSfzY*zS(FJ<-Vb zfAIg+`U)YaXv#sY(c--|X zEB+TVyZ%Ie4L$gi#Fc++`h6%vzsS$pjz9aLt+ZL(g;n$Dzy5=m=_TV(3H8^C{r0xd zp#a%}ht55dOq?yhwYPrtp-m1xXp;4X;)NhxxUpgP%XTLmO zcjaFva^}dP3$&sfFTIR_jC=2pHh9kpI@2(6V*GQo7Ws)`j)hd+tr@P~gR*2gO@+1? zG<`_tB+LJuF|SZ9tIec;h%}}6WClT`L>HSW?E{Hp1h^+mlbf_$9zA>!ug>NALJsO{ mU%z=YwVD?}XMya)Bp;vlyE5&E_6!fzx9pwrdz474!~g(M6R?N? literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp new file mode 100644 index 0000000000000000000000000000000000000000..1b9a6956b3acdc11f40ce2bb3f6efbd845cc243f GIT binary patch literal 3918 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�(p-{x$&=IACIfoAR!za)F-^da-t3#0Dycnp zwO~NVXwXCl;jE<}>%@xz|=8fIJAB?>+E{7)|4l${4ngA3G|=r z2Dyv;VVWSgZx9Wj>qUjleGl3Ei9K4>h!(lPS%8VOG>Xu0%6VDz^O=bjJmuP7>DeUv zrbI}MlHB^^d?{zv6d=@_ZD2lg1&G7UjnVN{1}9WkaM3H~btX0GtSzB+tZ^qRgWo4m z!GmimlG$=wgXCnr6j@m<1gAL46#T~5Bnm=2{^@>|t&`9mkEPddj zAvG~@Tv~TAm2i%VW}R-g(Z0)z-Y|szHr@rk>4MAyG*Ma*7Yh#H7(!-5>DZ@8r;_dx z{prSe<>~099F8vsYd2xff7uAS%7{S)f(|@me3t2$iy&NEc7OUEchp@9A|X;;IA>8!oX+y(BKJ$EzV* znR$z;!L$s7uy@{OT~nG#B!NRraT8(X##Ho!0r_o@gg0CA-9H^;-uE&?$2$nHv_00o z%cbuUc-tCx$Uh&EZ4Nf4Zgqv)Y6>usG3>GeQnxx_Z6+PcbX-+ysbt1hQ`K1LDpOE? zrAhIZhSN9yVIAOa22gn577tbc&i3|3V8NWy&!tw##`}9*x}gtI^h1DzZRA>UuaJG) zaZ7j)dq!O}{?#8Y7~7i6fHh4{`pL?>-18|p!S75Y#^DM>-S3)vuZG+Q7l@ek zQP~#cBpWgg#mApc_sPYjpw8odQuRokmTkzcNl`^CcKB7e&;zViV;{Y{o^Y$%7i0m# z62%#1Lq!RC?}lK>%mp}T!3Xv;L*0v*>USLm``N%>w>@fwC+#T&Tx2bN4w(20JB}oU zuSa6v^kXi0xPs?pbaOHnyiqq6By1EZY9OZ^^QA>{q-Hsd&m`pbQ%8121aWG-F5xf zlZ%;B{;C>X19|`^_?dVyCq>n+41w7|!tUS!{9rHlbhX=SZO5CQ^;!Du_E7*`GiR^Q w)2!4MKjfSAeNo!9>IaV6aUZ*?W>} zs4%E?srLW`CJh0GCIK@hTkrW7A15Iu%N&?Q^$0+!{Tv&|t^Y@u%!L zglTg&?Q5q#ijZ;&HBQ?FNPp;k3J5!&{^+SGq?AX~SiOM9jJMRpyP?RCr@z38AQyy&WRMaC;n4una$~nJKSp?q|s8F00c9?Q! zY_ovvjTFm+DeQM^LXJ#v0}6HRt3R1%5PT*}W!k8BEM;Jrj8dIceFo2fhzTqaB3KKk zGlCLI)gU25(#u6ch6GeB1k@eHq7l{EHXv0n6xE#ws#ri}08kkCf8hUt{|Ejb`2YW* zvg}0nSSX1m=76s?sZhRY$K=3dpJ+y*eDULGnL2}4>4nvW^7_<~wIM_5fjvwt4h1|g z)g0Z6ZFq9j<~9~b8((~TN{Z?ZQfw|is&Xp~AC61sj;xItKyCHdI|tCMC_LbXF>~vR z=w6V3^H=W4CbAgR4#xw}ETTwu2guW~=Crl@SMXv85jQ=%y!s^?m4PI0My7MWICO;- z175jm%&PcPWh8QdOU(#8bp4!N7ET-+)N}N2zk2)8ch|4Q&lPFNQgT-thu053`r*h3 z_8dI@G;`zn;lH$zX3RzIk`E8~`J=BBdR}qD%n@vVG1834)!pS1Y?zVkJGtsa(sB~y zNfMYKsOJb%5J(0ivK8d+l2D2y&5X!cg3BG!AJ}910|_${nF}sC1QF^nLIhzXk-Y#x z0)&1iK!O;Og0Ky!;`b~v%b$`S4E&fB)1NB4v@8wr( z&+NX4e^&o)ecb=)dd~C!{(1e6t?&9j{l8%U*k4)?`(L3;Qjw z#w7FS+U(94MaJKS!J9O8^$)36_J8;thW#2$y9i{bB{?M{QS_inZIJ!jwqAbfXYVd$ zQ5fC$6Nc9hFi8m^;oI-%C#BS|c8vy+@{jx6hFcf^_;2VRgkoN(0h!_VSGmgNPRsxI z8$rTo0LaYq-H5i&gtj81=&xU?H-Y2==G@uQV7E`@+2E9XQW@{&j`?EOktk|Ho{HU>ZqDzvgjwBmdex z&uZNd2C1h{{}2k6Ys9$*nFP3;K%u!MhW`uZy7Sn`1M1zs@Es&;z*Z>Gsh@-3Fe6pE zQD2@cqF((NrRevgvLsvM_8;;iNyJ5nyPyy?e!kvKjGj`6diRFBEe49Oa7wwkJFV7Z z$YT&DWloYu-H?3<0BKn9L&JYDT-SK~*6c5pi18P26$JESKRYj{T7Zk6KiRJcbvOO*{P56Q6s8msbeI3>|j>K9}Q9UBeq*inXKemCm`-<5|-$ZyN4u$(3 z&HcvqehFD%5Yrmykg-^d`=BSa8(i=>ZoC77^mWY{evp(km@aHqhUECBz76YiR+VYK zY_avFC~V3$=`6C4JhfHAQ@DZtUOwH`L;oYX6zK0-uI^?hS$ALfq}A7evR;ohJHij} zHSZdW?EKv9U1s4oD*<(0oQ*;MaQ6@cvGL zuHCPgm_NhVsgp^sfr*ia^Db}swo1?O(_Q2)y+S$CBm+g=9wCOUPbz(x)_GbaKa@A7 zuI&!ynLiZRT#V%_y_-D`0Z5lT*auoe{(U5NylTzFSJW()W-#F6*&A`LNO1bV#Y;QJ zSbLBnp|B^dtK|KIWC|No>JjWBWE@n7O)x{&^E(WMeMvp57#qA8m* zeTow*U@_86B#Fm*rxyYu5PRWaWHx8y> z*qmHEp(AMDl0v)ij(AY8fnH=~ZwwjVAbu*m5;xPfidh@ov6d8g zfJsi&!QyK53Es%sC39ts;54V68koALD4b|%tNHW0bIkZAJKa=W&FomJSEDT>W1xIX z1x%Z>AvNIsSPLcn3RTcHXb@KB?cuM)=x6fcIx>&(GxqZ8w3p#jJ(GVgc*`c0HG}dv zIop&Qim!K1NFwic%07KcjWgHBPUkq7f~lj;TPqVGTiT#cUeim>;nY`>h@a*S{qQex zQ`z62WK|Mj)Y{tfF{;T4P;c8$Q|KU?Joh zIkA^z%X7z|r>4aTh@|StTi!-r1D!g=zb#3d#{{&K3CqE$Iz-UH<%37c zRfkO`&uM%#AD3PHv`g5t0e^O%nVL0d{Xlx^EjEC3#skF@`zl-7PF^0oxW)1!C!JxR zWvuAHH?)61FKA1QeT*_sY7;_Id#!GmV4n`MO{~sv}VLSK` zXRw=Y=Clz*00B(5y^K;gCZMAzjT5+c3IC=)l(9VIDdatpxj3y89WwI|bH&$!ZEvp` zPR!T@#!(|KfI-w?!&+7$N3F6>tD{YO4Qg$d_`nNEdfVCha9vaPn0jI0`)`@*72hq! zpU5ND^P*RoEkbD5o#az(-g=Y)L>HH>Oc%}$ zT3Rs_ih0;4+Lv4Y;@Iv(;fUbQ=i-G(#>vghec~*j(I#r|5mqFiJBpzi&hzEcD{u$< zRsm0BVYn=pT;0>R(itW|*D&;O%bOc7et9ACaH#J>z3A1A~6fdP>pmbM%xzm4>|;c_?B+%sl;Qs2{t!60$^u zH1t@9^6>;?!FuusnISi$f5CL&;z?EqJN$FBuWDA#D5`cy_UvCFIVvf{c?4N0teh;d zET$7aVbj08KTQS!x?Nd1Is8q8qFzs}a=!@nJ;7FSfCY^T@D-gpw`w<6e#X3+;O}1h z$%I!M)0bg|EKUA04Qjn@+x{Rj8vt6Wn!R|3A92z}^$KfF5(#CWr4y#~re1CN4i4w0 z#GsypBR{xA3Er7sgAi(|}1-W?s~n$7?K|9WL8kpVfw-;#b9 z+mn;=ep!162U5R>_t}fOt~tE?s#m( zO-S$7>Ay6*hHdZ)7_oU915WYYCIX;hFI-U2EWYX!pllONr@Q--2o~`!isi6vTPLJ4@(|o=%NHYjo0_S&q*UQIROw@*N-By@PaQ&;YxFZ0aR zX&}LeOEz);#m~Hwm^VAY8DK}b$F4bo{jMN?d!lxKPhNklzr^Cd`0f4oJr^z=I|l`* zm8AHm*fPV`0=lF3Pnnp}&J0N1X@}-D94YvmUabFrLGSnTz7Mu^21F#O5tN#CuY9Vh zUZBH=ez%h*wkf0hBtXJh1SN3d+IF{gzT7lp)j}n?03lt;XSQRAh7qd&v;RwTYDuQ# zbI2*r<>?x-G0@hM{;%{VBD7nLKt~D`T~-HAt5;h%i0_=Ifs=yHma5dhJ+QMG?Ux(a z|E?1CMy1!~oA`FP!k~iG=t&5#>bVdz=peT8HMB6Y)#7PpETtNryT^+Rv3vpJaF^zP z{H}0-LyV9Fu21ID%wO9f1IKlFr1p4c{o-?03vyB-tr5duk^&L$;m_|f$vs`^Sl{j2 z95}oY{LlY+=ZS%J+tZoXCd0*sSU7w^gjovXn+g7uyra5{cU49@yHf#Z^Jl-$9cIfo z+AJuxH$VLb=#+uBbVmUjnx zxb1pZ@-O9=AIk4@S)m6fJ2?{HrNYwwnL3a45muuNjr;6$O`bGEM0T4A2_S$t=86*- zcO+0mywg*j#A4mU}enR_!cGmIYQ;qwfchWtFEXL)AK%*;=j znYne+hS4EMy3S)C*mZ1KI>!+)0V@9!N6H$Y}~MJ{rYuf zz^KljIWvFi-?#?V@LPR&c6Nn{!=XM z>}-h$S76;$H{E{Y%@^zlmOl^efBwa%UU+jJD9UVukQ3ti_kH-?H*RC0?M1W%FCvMB zM_+v6fk$6X2sx)-p~B3&Kl{nscK}pNLM*qjtpaf9>AU{-iPKQZR8yCg!TY}Qg*(;) z)gdvCcB%kppZc$VdvsK@)3l1{&DG!d_6OHOS`y=ITLEVu`unSKA2E%JD*DVX{LJ}K z9l>hMRDqxQh0lnpGHpVYneX}eA3Pt|2v%=q;rt)``R|#bDyB)OXY&vI_@|*}h}G?^ z@aZ4_!7cQPX`!fW_?{oT1NTwHs#l5L-0`E|y@48<3Q^HFf8=Idi zpJYD%1MkII!~|7I^WGo)IF=?{>ACnjJ_WUi39C}!Q{QnheVJqeKKqq5^o5CBde(g9 zvw$X6^jz_^E2$wSw4!q5*RG(C2_^XO$HBn_55vbl44OnTTRwRaePP0vo{K)U1#99& z<>rq7V&V(<&@I%MFoN5zrY}sz=(*-L&}1QQ*a%`u25h{cFj===17eB_uGuzG&byQ< zrm8BJZl4r_E$3k|Wo6FW0-6M7>qac5uFQsQcmkLWGfeH74S3Z_rJ!jgN++!@i=HW8 zkyjI(oPH-+-N#Qc^-mpNO`bc6r=2-<%&Wy5K1vfFJB(L_IkpS6fY^NmuL8qsgj>MD zn~BHH9WM~32_3vd=W&B)k7F9q%stJx+b_L_X-4zr^LVUMCmyCTA3sWtkvsmME?Xiy z?xOSfB=_$oY06~J-HcCq&)qcW{j;uP;?Dm}=hkq?zh&n!;m((-G-u_t|6x399Q;>A zgNpxoJNj{u|MFDH7Rhq@FCAl0dE|ddnl!oh9{Lq?@JDoR6L;C941IK`ISfdE$4S zE0AUQ8+2|Ncl_q5QkSp#AODp~(^mfP&%Au@@|TBQwoP`UU+V{6u8|)6ZA{~uKmQ*M zmrMTDU8S~8Eqi{^v0Ug&5Upcm#y7Z1(RbgZAG8jB$eRwCspQ)>5;U)oGZ&E5aeR*K z8Yt`Y0$G))Yd(Y3KH}tA4`-_QmNke5hU_|nq=xtyjwW(_o?itz>B>WM&^63bNdQ)k@-IgDHW*RW$Xo9#RzrTrCn7L2H{9Amq|qNg@#eZY=|P zCoI?2s+L)zsM%WX(NbVEY^`C>lFjIBYmJ6@DKJ0ZT4&F&WHW!dwa%QzOG!?jY_2(S zDcEzZbz*2Q!43|z))9yOP9X1Xt%DXzwY(3tl-TR=Qb_MbZYRrooh;dYYmS!U_as1(=YVB?Q_A|tNu5Ut&_q3jbfDM zoFxT^uEuH`nX3*sB%K?GuHUkweYReBwnHqh3P)~`+s3+Tj!rDA1e)8vuBv5J*IsxC zkd^~b(aGzArj08{>cnzOuy04C+C`}gb|Yz-1avxeWzev3NzcHbz_&4W@QCr$z3~w=8Ua- z`;vfG1~BP8CyLb=F7t1am~ph_#|O%$khSJ9%Vtcn)YmpgQxF?xM^_Vb+5fnpB^W0I`f%X8gb9#X{Q-yJG0{Z56aWeI&zPxnf5pdJA38bM`cYnS#x)% z`n1tFf$i)W-hGm(f9mde^=X@NcV_lFb=P`4&CI&H=IArijGwdCk&X@uQ$5xmj!~^? z#$ROCI)V-~t%L%GS#wo@U27ddR`4`3)WoB{R-4snfNrfee|kI8^bu#yDgYqOwas9# zmcb`3!kRJ`Cr=_tq)8aMt{aGtUZsqwVlj6DgCGre>AEt&x8H_in!x@uwgExIh|-mA zjdaC(29~CTVSaaF7HPbql&*9Uo8P@f)>LqCXclr}peS7_1BQ28u9PO8Eq1@`l3q9o zkfKCaO2?T?ZyA6loW<#9_c^O=m<&h}CA!ineAD@=(gbq`vyT|tiJ6#^B1$P;;qax` z55k&Q?wEh#87niLo*+n4L@65J(Nz~=Ya%7^(miLb(E>A3B@|Jjl;FU&D>o|9#7PJH z?|ago!o;WC^h=|T7PVBg(DAB}72cyUS zb(f>Bwbr!F1eTCO5fpj<{PqhY5>143p?~5ZA5H40);=@M#MYvrB6gqHbU_!GSY??i z%s=>-ciA4*zOOZHds0a(kWewZ4h(k8h(ua7HX)Au&mY~H8KY6(_cb$_&fA@QjIW-*heP3%$d!m5^AdnT}`12qA^c@!g3DOwZ5WwE2?)-yU z!)Vx#Mtxt?FzFTwK!77sy7)sMzUd->w4^bxtpM2j!b1pjgyk zGKwWGeb4)^zjy{9Es&PU1}gwg?|J#L$KJB7ett9@4M%-nGtIQr0>Fl@8-yh`-+1ed zS6r}(MeSvgSoFmH*_WPu@i?}!AB~2?;i&IxrkNg~cQ9Som98tcq)k^|eeER|Zl77t za-TVUc;DNvzVXJ%w52+#weN?+;i#{f#!Oc&z?81*N>^e~ltRS%ZI@lR{rs()HmqG! zx*}ZrI-EZ}ckJMiy>A^oofwDfC~IH)z8{VHKGT@#E5I(Ll&+MnMCl>~AV7+>Gi%mF zkU1QlKASdR0B80!YhP<$Ywi0?W2Ux45oPfxv9QolWzJPD^weBfvo4SONxP35106sAmh(e+vAs0GboFD@PvNs)jNPvarhW}0YliZEg{Gazv z+JDIpoojRVPr<*C|BTq<`6ga{5q^8^!|0cxe=rZ!zxH3%f5ZO0cQ*Z<^$Yt2{|Ek0 zyT|*F+CO@K;(owBKtGg!S^xj-Z~rga2m6nxKl9J=fBSuNKW_dLKWhJKeg^-Xe`^1? z`TyJj)8E!#>_3Y?uKrwqq3LJ#SGU>AzUO|6`nR^u&3FNN_jGOc zw)Nw`wr3yIKhgcee6IaN=ws>M{6677%)hPwx&HzC(f&u~&)6@b2kNRzBDQAP0*H73 zq%McOmRk{B3i47qRe=DA*$&odrbEJZ*pV9XXa&p@wlW~@Yfs>V{yiTtplMhgM*-Bz zsSnlq&pG;z0OUN%$~$3=g1UF+G*>+17eRbBf3=y79J}KR8owon@$1Z7MIrvvWWH)34nK2SD)GsrJ{l z1Cl#oVo3A8qY3e=aF)qzms~FG#2$LzT=gs&aVMOj>(%{y<&O0cG!nCiESl~x=^dF{ zKvj8F1K8Ng171wwM5Fh4KoQw`_c6#y$(5cAm7e}~nJ#A*fx+c9;y#&W!#VukR)ugk zKp3=+;Ut+IYn%m+r4d*<`L2h%aDnX5}^!5R|H;(34AoVWjRx(msBZvk;rCI*|~ zdOijqI@9Z{Vu!~jvHW{lBa$rnl4+!s_5sfK3bCGk-B%iDe&@-}+%fOKU|(9?V1 zHE8&@4z)Kx!RAvAs z!Wic9=o#(bg?kc-G68-m(jZ`^=XGUXb)}t(%&~sjFnV^sEX%hSy6UKC4iOhgV=BHV z2w`4g7Y=s#Vu2B_?#VQ|hP39@eArgfX>-0S+dd&^mx0*wp}>)x;c4RUgxz%;oNe?& z-7-lJ@Y^2^C;=qJsxx5|xF)*pTGhch2B&kxtn;f!7=gznk}I3}Dh}(CoMXgA5-p&kS202!l?!fT3t|HG*rIP~mS* z$Wjo}jq3}z$Qq!9yrtd3fM0N629ZM?LU$nv@Tv9b7I;D|;0H2dsA~g7Z7zp1| zB)XmrkMgF6OQr|R)HHD^TE{Y#j!~SR?b`Xt3Qs`B+x<hxexYeAjMUWdZ-*n9%(1)Wb(n2U<><7&9dwGJmrob)4%H? zlQ%z+L-^$dFhhH|@u$%97Qz?*Ynh2VG@q|?8vY&L74&fs&_b&3$x&Oyjl~LQDRRap zJU4U*R+(2Dd!G+lh8!V{pT_UJn+^1Qg6$` zqkNm(a#hWyc6SP+p5=C4HL8-m`pO`5o~`-LI?_h5CsH?F_%?nDodmz&pWR20WTpJE z?N|wSzLjMUK8E)a2tI}Lf;+;*M|h3Y(U#>)g1>zk9|Hd}oZAa2 zLYBWBoSW!Ts!RwXr^8h+U*@{9{zqS^iH)Op<;r`Uw~nc}<^$V~_i%$GFjaG?X1@E|M`h)nekvFKt`Dh-f>@|0-`Xoq)o` zx;JmzDfOV9qCx|EVpogEe0LK~tGS?5$$L_i6P$P6wIsCQaP_;d{{N=iV@+8LI}o#( zvo*Ejy=IIn{rdIQh1&q-{EuohpVOjJ^Q3lD*YTp37$^RRgn8ihpdu5{Ct%5-KO!VL zcNB6dUajXI9jkm-P|i3~GB-A(X`P1Oqqb$tcku)UJw0w3GeUijb__#QT4j%64z%EeB7S?jlWwx_7&+EEvB|6N=kV}DwnyAlX=?j`) zmU#!$*^@NIu#n_d7;WoJV@*Fbv9|yJO4;n|BNF2xy(54RyB>t~8lUOUW$&2%Nwi1y zx6JxW88>U2$#qhl^6KUbtmg9}D0o5vYDT7kWJthLGkpGnN4T>{St^_EU>4;DmLF9o zr|LqsA8_MoNLQ=}w?8u!ziSZ@PC#Y<#9uJFo-ozVo6D;<8j^1$c|qAE3ZTE5i~zmE z$BU5lw6l=EWsg^y^;8>r9qH{xfL|~PZYK#md$zZ0?o11gV<*WSW~cgy2GYGQir%wf zt4iW8D+;s*;RGrmd(-T<@2&j(Cb9xhV*l-x`TpK`xq|7p?5R%5*s!69?2c!cC*VY* z2DE^9pvOPLU!1e}wA8S8opcTJ3`NB>hY=JQnL~QFXR4K8A$BqJnoEB$wn-%u@E6Mh zCfMF4kusv3N!(aHC}4)Xs^xoOwXd%e^6pi5|DZo=Q25j+6HlJ^7FodH6y1bMROR^q zGu6)fopS`h%Sw<;ZH%TEPf+#81-#_v+@8nlR0jLcIDKQtLleOC)6yLZgC!D9X3GgS zohwU{v$jl=quD#Go^hB{`@Qw*a%`(^jyT~=q^bWgGzRj;|12J55HWdCWV}EB|K=%N z3Nq-qxJJ`>^|1MNN+q}zTB&ooE3j==AgK@^UW<^oSbeALa2peF)Th6{@sj0KyMNHZ zksk1+MXN2tv+22A%cQOGpS9)77(uP9mh+!5T5ERLvF@b}$+WvXM45Z?-kCa)fb~f1 znVbTD$Gx-0Zxc`0D@YgHakge6SL0H`-vN_x?AP0>iGH0_EE&=v83hMJgaKAI0jJXm zVxVz;X<$v6WW7}fxROO7vr#YLP;;lij5VrX{;>7kK6TtOH&6|Ar^xo>00%+u$C4@# z>!jOt6*3><171+WxoZnKDTzJtDRw+T030;yI}~uV@9fCnei^I*j>Bp&mzP2d=FPb_ zCM*l_+$LDR3B*a!A$g#>xsrZvw0lckxmMg>0aQd7tPyN=t{dgXb;Ie+T8{fZH=gdu zM7Rg9c(kg(Jg0?ARRRl=AONFKrvFj)lTY$KfT%6^6s`mk*ABGhsce*LsoD>K{z_M2 ziPpnu+lw22PfF!CoId^6n*G4H(Ix+#+N{C(da7t1BYMGEaE#PdpOLxsVD5riQXHp@OX;`S`8VnpM~)I920w~<3|mo0 zf8~Az`*?2?H&gZ&*K&bRkV@qzvMlRHXys8*Ze2+1c?5o!^+$&MHxB@4Ee5cke52R! zmn7AZtY6ST%ixgU5)%$%QcwHj7Es-Qu^kLAPwy%7pGBw_4Q9#da^W2$}axNHr03)_nw z5?yuNmXrI5HgS46)c5&}B)Tts49oU92>3xBLLy}FMUW=84DQbVq^;7_e7|(Sdz|&J z73N+M`rc2rt*oSWu#7S{*s~nH6HRHJS1SmzeXk|;CA)FI4bat3<%}nkB%;;?=F>B7ms9QSxv#@+69;@>QaR?REYX4&)=itG>rM{<{A79Rmk)`5ON#GL`*KX%}Ihk3w(RtM-WLt z?f&FLF}4N^yE!(pZ&Yj&Bc`~K0@4_}*0Om?wN|}4WJ>WL;G^H2*QpgEkGA~OET-Km zkwz|5{6dnz1U<2Pe9DNL>3g5FEIvp1jzP&2K#z~j%g6!7B;^zF+o95?fV{3mnB8*RMhCDNp>Am-3e@jNfMj?jHV$MWjk!DDKP zkAz$Y?Sr)!GUOX}qTQ5aMh|wq1uq}~joWyKl=b_LboM#wi{CMuz5x6BKlA-qy++cM01D3b7`uD z#l6M4pI;JCypO8JZ6?U&wNxR!{4oB_ zlV!x9+-&Qy6{%MQ{~yoZGkKiTSC`YS_j22~G;xUV855g2&C(zm^V!(wpcm@zn{%!g z4}JGo(sGZ1O~to-}le

UmY2RIYtNPVDpE$%vda+HD#3m z&VuXJ{BK&Qe+rBa7eq}Q(bq|tn(RrJAk|ztj2(i{d>nmQnM?;HF2k&9sA6up5tmjl z7lySlzMbifH17-m-Lwa_F&e7nOH?ESi3#ckR3tsM+jsck3`oG!uMS}|eAwVXv>}qxwq?QY%QJ0}r@^;fhuUA9W z*BVl>TGo&N004@xSiwDUXUvp51sVmqO3m)=B55aPwf@0=e}cN+$-BdKxY`YrT_4)0 z_d10#i44Q*rFr8MC>*)v$EJvz``(pb{e&*6k+b zsMz%($|1+8hn8c2?P(l@;Rb&CsZeYoCI3?2!LqjbwPXW3z4G$Qfj=cT5Yb%vY0(AX oeb?AaKtwrnc|$|zzw9vfvn^aJJ!zd)XFXqqy0000001=f@-~a#s literal 0 HcmV?d00001 diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml new file mode 100644 index 0000000..f8c6127 --- /dev/null +++ b/app/src/main/res/values/colors.xml @@ -0,0 +1,10 @@ + + + #FFBB86FC + #FF6200EE + #FF3700B3 + #FF03DAC5 + #FF018786 + #FF000000 + #FFFFFFFF + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml new file mode 100644 index 0000000..f38ba96 --- /dev/null +++ b/app/src/main/res/values/strings.xml @@ -0,0 +1,3 @@ + + PMULabs + \ No newline at end of file diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml new file mode 100644 index 0000000..6a339ac --- /dev/null +++ b/app/src/main/res/values/themes.xml @@ -0,0 +1,5 @@ + + + +