Определена стркутура проекта, верстка основных компонентов

This commit is contained in:
Michael Kits
2023-01-06 01:30:07 +03:00
commit df6d85786b
79 changed files with 2065 additions and 0 deletions
+15
View File
@@ -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
+3
View File
@@ -0,0 +1,3 @@
# Default ignored files
/shelf/
/workspace.xml
+6
View File
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="CompilerConfiguration">
<bytecodeTargetLevel target="17" />
</component>
</project>
+17
View File
@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="deploymentTargetDropDown">
<runningDeviceTargetSelectedWithDropDown>
<Target>
<type value="RUNNING_DEVICE_TARGET" />
<deviceKey>
<Key>
<type value="SERIAL_NUMBER" />
<value value="2a40cdac1f0d7ece" />
</Key>
</deviceKey>
</Target>
</runningDeviceTargetSelectedWithDropDown>
<timeTargetWasSelectedWithDropDown value="2023-01-05T19:44:17.771649600Z" />
</component>
</project>
+20
View File
@@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="GradleMigrationSettings" migrationVersion="1" />
<component name="GradleSettings">
<option name="linkedExternalProjectsSettings">
<GradleProjectSettings>
<option name="testRunner" value="GRADLE" />
<option name="distributionType" value="DEFAULT_WRAPPED" />
<option name="externalProjectPath" value="$PROJECT_DIR$" />
<option name="gradleJvm" value="corretto-17" />
<option name="modules">
<set>
<option value="$PROJECT_DIR$" />
<option value="$PROJECT_DIR$/app" />
</set>
</option>
</GradleProjectSettings>
</option>
</component>
</project>
+23
View File
@@ -0,0 +1,23 @@
<component name="InspectionProjectProfileManager">
<profile version="1.0">
<option name="myName" value="Project Default" />
<inspection_tool class="PreviewAnnotationInFunctionWithParameters" enabled="true" level="ERROR" enabled_by_default="true">
<option name="previewFile" value="true" />
</inspection_tool>
<inspection_tool class="PreviewDimensionRespectsLimit" enabled="true" level="WARNING" enabled_by_default="true">
<option name="previewFile" value="true" />
</inspection_tool>
<inspection_tool class="PreviewMultipleParameterProviders" enabled="true" level="ERROR" enabled_by_default="true">
<option name="previewFile" value="true" />
</inspection_tool>
<inspection_tool class="PreviewMustBeTopLevelFunction" enabled="true" level="ERROR" enabled_by_default="true">
<option name="previewFile" value="true" />
</inspection_tool>
<inspection_tool class="PreviewNeedsComposableAnnotation" enabled="true" level="ERROR" enabled_by_default="true">
<option name="previewFile" value="true" />
</inspection_tool>
<inspection_tool class="PreviewPickerAnnotation" enabled="true" level="ERROR" enabled_by_default="true">
<option name="previewFile" value="true" />
</inspection_tool>
</profile>
</component>
+9
View File
@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectRootManager" version="2" languageLevel="JDK_17" project-jdk-name="Android Studio default JDK" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/build/classes" />
</component>
<component name="ProjectType">
<option name="id" value="Android" />
</component>
</project>
Generated
+6
View File
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" />
</component>
</project>
+1
View File
@@ -0,0 +1 @@
/build
+69
View File
@@ -0,0 +1,69 @@
plugins {
id 'com.android.application'
id 'org.jetbrains.kotlin.android'
}
android {
compileSdk 32
defaultConfig {
applicationId "ru.megboyzz.dnevnik"
minSdk 21
targetSdk 32
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
vectorDrawables {
useSupportLibrary true
}
}
buildTypes {
release {
minifyEnabled 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 compose_version
}
packagingOptions {
resources {
excludes += '/META-INF/{AL2.0,LGPL2.1}'
}
}
}
dependencies {
implementation 'androidx.core:core-ktx:1.7.0'
implementation "androidx.compose.ui:ui:$compose_version"
implementation "androidx.compose.material:material:$compose_version"
implementation "androidx.compose.ui:ui-tooling-preview:$compose_version"
implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.3.1'
implementation 'androidx.activity:activity-compose:1.3.1'
implementation 'androidx.constraintlayout:constraintlayout-compose:1.0.1'
testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.3'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
androidTestImplementation "androidx.compose.ui:ui-test-junit4:$compose_version"
debugImplementation "androidx.compose.ui:ui-tooling:$compose_version"
debugImplementation "androidx.compose.ui:ui-test-manifest:$compose_version"
implementation "androidx.navigation:navigation-compose:2.5.3"
implementation "androidx.compose.runtime:runtime-livedata:$compose_version"
implementation "androidx.compose.material:material-icons-extended:$compose_version"
implementation "com.google.accompanist:accompanist-swiperefresh:0.23.0"
}
+21
View File
@@ -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
@@ -0,0 +1,24 @@
package ru.megboyzz.dnevnik
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("ru.megboyzz.dnevnik", appContext.packageName)
}
}
+32
View File
@@ -0,0 +1,32 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="ru.megboyzz.dnevnik">
<application
android:allowBackup="true"
android:dataExtractionRules="@xml/data_extraction_rules"
android:fullBackupContent="@xml/backup_rules"
android:icon="@drawable/icon"
android:label="@string/app_name"
android:roundIcon="@drawable/icon_rounded"
android:supportsRtl="true"
android:theme="@style/Theme.MyDnevnik"
tools:targetApi="31">
<activity
android:name=".MainActivity"
android:exported="true"
android:theme="@style/Theme.MyDnevnik"
android:windowSoftInputMode="adjustResize">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<meta-data
android:name="preloaded_fonts"
android:resource="@array/preloaded_fonts" />
</application>
</manifest>
@@ -0,0 +1,24 @@
package ru.megboyzz.dnevnik
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.compose.foundation.layout.*
import androidx.compose.material.*
import androidx.compose.ui.Modifier
import ru.megboyzz.dnevnik.navigation.AppNavHost
import ru.megboyzz.dnevnik.ui.theme.*
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
Surface(
modifier = Modifier.fillMaxSize(),
color = lightGray
) {
AppNavHost()
}
}
}
}
@@ -0,0 +1,29 @@
package ru.megboyzz.dnevnik
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.width
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.vector.ImageVector
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.res.vectorResource
import androidx.compose.ui.unit.Dp
@Composable
fun Int.AsPainter() = painterResource(this)
@Composable
fun Int.AsString() = stringResource(this)
@Composable
fun SpacerWidth(width: Dp) = Spacer(Modifier.width(width))
@Composable
fun SpacerHeight(height: Dp) = Spacer(Modifier.height(height))
@Composable
fun Int.AsImageVector() = ImageVector.vectorResource(this)
@@ -0,0 +1,43 @@
package ru.megboyzz.dnevnik.navigation
import android.window.SplashScreen
import androidx.compose.runtime.Composable
import androidx.compose.ui.platform.LocalContext
import androidx.lifecycle.viewmodel.compose.viewModel
import androidx.navigation.compose.NavHost
import androidx.navigation.compose.composable
import androidx.navigation.compose.rememberNavController
sealed class AppNavRoute(val route: String){
object Splash : AppNavRoute("splash_screen")
object Login: AppNavRoute("login_screen")
object Marks: AppNavRoute("marks_screen")
object Schedule: AppNavRoute("schedule_screen")
object HomeWorks: AppNavRoute("hw_screen")
object Settings: AppNavRoute("settings_screen")
}
@Composable
fun AppNavHost(){
val navController = rememberNavController()
/*val activity = LocalContext.current as MainActivity
val application = activity.application as App
val viewModel: AppViewModel = viewModel(factory = AppViewModelFactory(application))*/
NavHost(
navController = navController,
startDestination = AppNavRoute.Splash.route
){
composable(AppNavRoute.Splash.route) { }
composable(AppNavRoute.Marks.route) { }
composable(AppNavRoute.Schedule.route) { }
composable(AppNavRoute.HomeWorks.route) { }
composable(AppNavRoute.Settings.route) { }
}
}
@@ -0,0 +1,2 @@
package ru.megboyzz.dnevnik.navigation
@@ -0,0 +1,494 @@
package ru.megboyzz.dnevnik.screens
import androidx.compose.animation.animateColorAsState
import androidx.compose.animation.core.tween
import androidx.compose.animation.expandHorizontally
import androidx.compose.animation.fadeOut
import androidx.compose.animation.slideInHorizontally
import androidx.compose.foundation.BorderStroke
import androidx.compose.foundation.Image
import androidx.compose.foundation.background
import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.selection.toggleable
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.foundation.text.KeyboardOptions
import androidx.compose.material.*
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Check
import androidx.compose.material.icons.filled.Visibility
import androidx.compose.material.icons.filled.VisibilityOff
import androidx.compose.runtime.*
import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.focus.FocusRequester
import androidx.compose.ui.focus.focusRequester
import androidx.compose.ui.focus.onFocusChanged
import androidx.compose.ui.geometry.CornerRadius
import androidx.compose.ui.geometry.RoundRect
import androidx.compose.ui.geometry.Size
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.Outline
import androidx.compose.ui.graphics.Shape
import androidx.compose.ui.graphics.painter.Painter
import androidx.compose.ui.layout.ContentScale
import androidx.compose.ui.platform.LocalDensity
import androidx.compose.ui.semantics.Role
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.tooling.preview.Preview
import androidx.compose.ui.unit.*
import androidx.constraintlayout.compose.Visibility
import kotlinx.coroutines.launch
import ru.megboyzz.dnevnik.*
import ru.megboyzz.dnevnik.R
import ru.megboyzz.dnevnik.ui.theme.*
@Composable
fun MainScaffold(
icon: Painter,
title: String,
/* TODO viewModel */
content: (@Composable (it: PaddingValues) -> Unit)
) {
val scaffoldState = rememberScaffoldState()
val scope = rememberCoroutineScope()
Scaffold(
scaffoldState = scaffoldState,
topBar = {
TopAppBar(
backgroundColor = mainBlue,
contentColor = Color.White
) {
IconButton(
onClick = {
val drawerState = scaffoldState.drawerState
scope.launch {
if (drawerState.isClosed)
drawerState.open()
else
drawerState.close()
}
}
) {
Image(painter = icon, contentDescription = "icon")
}
Text(
text = title,
fontSize = 16.sp,
color = white
)
}
},
content = content,
drawerBackgroundColor = mainBlue,
drawerContentColor = white,
drawerShape = drawerShape,
drawerContent = { DrawerContent() }
)
}
@Composable
fun DrawerContent() {
Column(
modifier = Modifier
.width(260.dp)
.fillMaxSize()
.padding(10.dp),
horizontalAlignment = Alignment.Start
){
SpacerHeight(10.dp)
ProfileCard(painter = R.drawable.ic_author.AsPainter())
SpacerHeight(15.dp)
AlmostOutlinedText(text = "Идет 3-я четверть")
SpacerHeight(20.dp)
Column(
verticalArrangement = Arrangement.spacedBy(5.dp),
modifier = Modifier.padding(5.dp, 0.dp)
) {
DrawerMainButton(
icon = R.drawable.ic_marks.AsPainter(),
text = R.string.title_marks.AsString()
) { /* TODO */ }
DrawerMainButton(
icon = R.drawable.ic_homework.AsPainter(),
text = R.string.title_hw.AsString()
) { /* TODO */ }
DrawerMainButton(
icon = R.drawable.ic_schedule.AsPainter(),
text = R.string.title_schedule.AsString()
) { /* TODO */ }
DrawerMainButton(
icon = R.drawable.ic_settings.AsPainter(),
text = R.string.title_settings.AsString()
) { /* TODO */ }
}
Spacer(Modifier.weight(1f))
Divider(color = white, thickness = 1.dp)
SpacerHeight(5.dp)
Column(Modifier.padding(5.dp, 0.dp)) {
DrawerMainButton(
icon = R.drawable.ic_exit.AsPainter(),
text = R.string.title_leave_from_acconut.AsString()
) { /* TODO */ }
}
}
}
val drawerShape = object : Shape {
override fun createOutline(
size: Size,
layoutDirection: LayoutDirection,
density: Density
): Outline.Rounded {
val radius = CornerRadius(30f, 30f)
val nullRadius = CornerRadius.Zero
return Outline.Rounded(RoundRect(
left = 0f,
top = 0f,
right = size.width * 26 / 36,
bottom = size.height,
topLeftCornerRadius = nullRadius,
topRightCornerRadius = radius,
bottomRightCornerRadius = radius,
bottomLeftCornerRadius = nullRadius
))
}
}
@Composable
fun AlmostOutlinedText(
text: String
){
Column() {
Divider(color = white, thickness = 1.dp)
Column(
modifier = Modifier
.fillMaxWidth()
.height(30.dp),
verticalArrangement = Arrangement.Center
) {
Text(
text = text,
color = white,
textAlign = TextAlign.Center,
style = H2,
modifier = Modifier
.fillMaxWidth()
)
}
Divider(color = white, thickness = 1.dp)
}
}
@Composable
fun ProfileCard(
textColor: Color = white,
painter: Painter
) {
Row(
verticalAlignment = Alignment.CenterVertically,
horizontalArrangement = Arrangement.Start
) {
Image(
modifier = Modifier.padding(10.dp, 15.dp, 20.dp, 15.dp),
painter = painter, //TODO заменить динмической картинкой
contentDescription = "chel"
)
Column(verticalArrangement = Arrangement.spacedBy(5.dp)) {
Text(
text = "Имя и фамилия",
style = H1,
color = textColor
)
Text(
text = "Класс/Группа",
style = H1,
color = textColor
)
}
}
}
@Composable
fun LoginBackground() {
val icon = R.drawable.ic_header.AsPainter()
val size = icon.intrinsicSize
Column {
Image(
painter = icon,
contentDescription = "",
modifier = Modifier.fillMaxWidth(),
contentScale = ContentScale.FillWidth,
alignment = Alignment.TopStart
)
}
}
@Preview
@Composable
fun ProfilePrev() {
ProfileCard(painter = R.drawable.ic_author.AsPainter())
}
@Composable
fun MainTextField(
value: MutableState<String>,
isError: MutableState<Boolean> = remember { mutableStateOf(false) },
label: String = "",
keyboardType: KeyboardType = KeyboardType.Text,
onChange: (it: String) -> Unit = { value.value = it }
) {
var passwordVisible by rememberSaveable { mutableStateOf(false) }
val focusRequester = FocusRequester()
OutlinedTextField(
value = value.value,
onValueChange = onChange,
label = { Text(
text = label,
style = H2,
color = dark
) },
shape = RoundedCornerShape(10.dp),
textStyle = H2,
colors = TextFieldDefaults.outlinedTextFieldColors(
textColor = dark,
unfocusedBorderColor = if(isError.value) falseColor else mainBlue,
focusedBorderColor = if(isError.value) falseColor else mainBlue,
focusedLabelColor = dark,
unfocusedLabelColor = dark,
cursorColor = dark
),
maxLines = 1,
keyboardOptions = KeyboardOptions(
keyboardType = keyboardType
),
visualTransformation =
if(keyboardType == KeyboardType.Password) {
if (passwordVisible)
VisualTransformation.None
else
PasswordVisualTransformation()
}else VisualTransformation.None,
trailingIcon = {
if(keyboardType == KeyboardType.Password){
val image = if (passwordVisible)
Icons.Filled.Visibility
else Icons.Filled.VisibilityOff
IconButton(onClick = {passwordVisible = !passwordVisible}){
Icon(imageVector = image, "")
}
}
},
modifier = Modifier
.focusRequester(focusRequester)
.onFocusChanged {
if (it.isFocused)
if(isError.value) isError.value = false
},
)
}
@Composable
fun DrawerMainButton(
icon: Painter,
text: String,
textColor: Color = white,
onClick: () -> Unit = {}
) {
Column(
modifier = Modifier
.fillMaxWidth()
.height(30.dp)
.clickable(onClick = onClick),
verticalArrangement = Arrangement.Center
) {
Row(
horizontalArrangement = Arrangement.Start
){
Image(
painter = icon,
contentDescription = "icon"
)
SpacerWidth(13.dp)
Text(
text = text,
style = H2,
color = textColor
)
}
}
}
@Preview
@Composable
fun Almst() {
Column() {
AlmostOutlinedText(text = "Идет 3-я четверть")
}
}
@Preview
@Composable
fun ButtonPrev() {
DrawerMainButton(
icon = R.drawable.ic_marks.AsPainter(),
text = "Оценки"
)
}
@Preview
@Composable
fun DrawerPrev() {
Surface(
color = mainBlue
) {
DrawerContent()
}
}
@Preview
@Composable
fun MainScaffoldPrev() {
MainScaffold(
icon = R.drawable.ic_marks.AsPainter(),
title = R.string.title_marks.AsString()
) {
}
}
@Preview
@Composable
fun CheckBoxed() {
val isCheck = remember { mutableStateOf(false) }
val titleColor = mainBlue
Row {
Card(
elevation = 0.dp,
shape = RoundedCornerShape(6.dp),
border = BorderStroke(1.5.dp, color = titleColor)
) {
Box(
modifier = Modifier
.size(20.dp)
.background(if (isCheck.value) titleColor else Color.White)
.clickable {
isCheck.value = !isCheck.value
},
contentAlignment = Alignment.Center
) {
if(isCheck.value)
Icon(Icons.Default.Check, contentDescription = "", tint = Color.White)
}
}
}
}
@Preview
@Composable
fun PrevCB() {
val checkedState = remember { mutableStateOf(true) }
MainCheckbox(checkedState){
}
}
@Composable
fun MainCheckbox(
isChecked: MutableState<Boolean>,
modifier: Modifier = Modifier,
size: Float = 24f,
checkedColor: Color = mainBlue,
uncheckedColor: Color = white,
checkmarkColor: Color = white,
onValueChange: () -> Unit
) {
val checkboxColor: Color by animateColorAsState(if (isChecked.value) checkedColor else uncheckedColor)
val density = LocalDensity.current
val duration = 200
Row(
modifier = modifier
.toggleable(
value = isChecked.value,
role = Role.Checkbox,
onValueChange = {
isChecked.value = !isChecked.value
onValueChange.invoke()
}
)
) {
Card(
elevation = 0.dp,
shape = RoundedCornerShape(8.dp),
border = BorderStroke(1.dp, color = checkedColor),
) {
Box(
modifier = Modifier
.size(size.dp)
.background(checkboxColor),
contentAlignment = Alignment.Center
) {
androidx.compose.animation.AnimatedVisibility(
visible = isChecked.value,
enter = slideInHorizontally(
animationSpec = tween(duration)
) {
(size * -0.5).toInt()
} + expandHorizontally(
expandFrom = Alignment.Start,
animationSpec = tween(duration)
),
exit = fadeOut()
) {
Icon(
Icons.Default.Check,
contentDescription = null,
tint = checkmarkColor
)
}
}
}
}
}
@Composable
fun MainButton(
text: String,
radius: Dp = 8.dp,
onClick: () -> Unit
) {
Button(
onClick = onClick,
colors = ButtonDefaults.buttonColors(
backgroundColor = mainBlue,
contentColor = Color.White
),
shape = RoundedCornerShape(radius),
modifier = Modifier.fillMaxWidth()
) {
Text(
text = text,
style = H1
)
}
}
@@ -0,0 +1,133 @@
package ru.megboyzz.dnevnik.screens
import androidx.compose.foundation.Image
import androidx.compose.foundation.background
import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material.*
import androidx.compose.runtime.Composable
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.vector.ImageVector
import androidx.compose.ui.modifier.modifierLocalOf
import androidx.compose.ui.platform.LocalConfiguration
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.textInputServiceFactory
import androidx.compose.ui.res.vectorResource
import androidx.compose.ui.text.input.KeyboardType
import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import ru.megboyzz.dnevnik.AsString
import ru.megboyzz.dnevnik.R
import ru.megboyzz.dnevnik.SpacerHeight
import ru.megboyzz.dnevnik.SpacerWidth
import ru.megboyzz.dnevnik.ui.theme.*
@Composable
fun LoginScreen() {
val login = remember {
mutableStateOf("")
}
val password = remember {
mutableStateOf("")
}
val configuration = LocalConfiguration.current
val screenHeight = configuration.screenHeightDp
val screenWidth = configuration.screenWidthDp
val defaultModifier = Modifier.width(500.dp)
Column(
horizontalAlignment = Alignment.CenterHorizontally,
modifier = defaultModifier
) {
if(screenWidth < 500)
LoginBackground()
else{
defaultModifier.then(Modifier.fillMaxWidth())
}
Row(horizontalArrangement = Arrangement.Center) {
Text(
text = R.string.title_welcome.AsString(),
style = Big,
textAlign = TextAlign.Center,
modifier = Modifier.padding(65.dp, 20.dp, 65.dp, 40.dp)
)
}
MainTextField(
value = login,
label = R.string.title_login.AsString()
)
SpacerHeight(15.dp)
MainTextField(
value = password,
keyboardType = KeyboardType.Password,
label = R.string.title_password.AsString()
)
Row(
modifier = Modifier
.fillMaxWidth()
.padding(65.dp, 10.dp)
.height(30.dp),
horizontalArrangement = Arrangement.SpaceBetween,
verticalAlignment = Alignment.CenterVertically
) {
Row(
modifier = Modifier.fillMaxHeight(),
verticalAlignment = Alignment.CenterVertically
) {
val checkedState = remember { mutableStateOf(true) }
MainCheckbox(checkedState) { /* TODO */ }
SpacerWidth(5.dp)
Text(
text = R.string.title_remember_me.AsString(),
style = MainText,
color = dark
)
}
Text(
text = R.string.title_forget_password.AsString(),
style = MainText,
color = dark,
modifier = Modifier.clickable{ /* TODO */ }
)
}
Column(
modifier = Modifier
.fillMaxSize()
.padding(65.dp, 10.dp),
verticalArrangement = Arrangement.Center
) {
MainButton(text = R.string.title_sign_in.AsString()) {
/* TODO */
}
SpacerHeight(5.dp)
Text(
text = R.string.title_sign_up.AsString(),
modifier = Modifier
.clickable {
/* TODO */
}
.padding(5.dp)
.fillMaxWidth(),
textAlign = TextAlign.Center,
style = Mini
)
}
}
}
@Preview
@Composable
fun LoginPagePrev() {
LoginScreen()
}
@@ -0,0 +1,2 @@
package ru.megboyzz.dnevnik.screens
@@ -0,0 +1,2 @@
package ru.megboyzz.dnevnik.screens
@@ -0,0 +1,2 @@
package ru.megboyzz.dnevnik.screens
@@ -0,0 +1,2 @@
package ru.megboyzz.dnevnik.screens.subscreens
@@ -0,0 +1,2 @@
package ru.megboyzz.dnevnik.screens.subscreens
@@ -0,0 +1,24 @@
package ru.megboyzz.dnevnik.ui.theme
import androidx.compose.ui.graphics.Color
val Purple200 = Color(0xFFBB86FC)
val Purple500 = Color(0xFF6200EE)
val Purple700 = Color(0xFF3700B3)
val Teal200 = Color(0xFF03DAC5)
//Цвета из дизайна
val dark = Color(0xFF_272727)
val mainBlue = Color(0xFF_3C95FF)
val lightGray = Color(0xFF_F4F4F4)
val white = Color(0xFF_FFFFFF)
val trueColor = Color(0xFF_56F570)
val falseColor = Color(0xFF_FC5876)
val attentionColor = Color(0xFF_FCF558)
val mainBlur = Color(0xD9_58A3FC)
val blur = Color(0xD9_272727)
//Цвет годовой оценки
val totalMarkColor = Color(0xFF_FCBA58)
@@ -0,0 +1,11 @@
package ru.megboyzz.dnevnik.ui.theme
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material.Shapes
import androidx.compose.ui.unit.dp
val Shapes = Shapes(
small = RoundedCornerShape(4.dp),
medium = RoundedCornerShape(4.dp),
large = RoundedCornerShape(0.dp)
)
@@ -0,0 +1,44 @@
package ru.megboyzz.dnevnik.ui.theme
import androidx.compose.foundation.isSystemInDarkTheme
import androidx.compose.material.MaterialTheme
import androidx.compose.material.darkColors
import androidx.compose.material.lightColors
import androidx.compose.runtime.Composable
private val DarkColorPalette = darkColors(
primary = Purple200,
primaryVariant = Purple700,
secondary = Teal200
)
private val LightColorPalette = lightColors(
primary = Purple500,
primaryVariant = Purple700,
secondary = Teal200
/* Other default colors to override
background = Color.White,
surface = Color.White,
onPrimary = Color.White,
onSecondary = Color.Black,
onBackground = Color.Black,
onSurface = Color.Black,
*/
)
@Composable
fun MyDnevnikTheme(darkTheme: Boolean = isSystemInDarkTheme(), content: @Composable () -> Unit) {
val colors = if (darkTheme) {
DarkColorPalette
} else {
LightColorPalette
}
MaterialTheme(
colors = colors,
typography = Typography,
shapes = Shapes,
content = content
)
}
@@ -0,0 +1,64 @@
package ru.megboyzz.dnevnik.ui.theme
import androidx.compose.material.Typography
import androidx.compose.runtime.Composable
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.text.TextStyle
import androidx.compose.ui.text.font.Font
import androidx.compose.ui.text.font.FontFamily
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.unit.ExperimentalUnitApi
import androidx.compose.ui.unit.TextUnit
import androidx.compose.ui.unit.TextUnitType
import androidx.compose.ui.unit.sp
import androidx.core.content.res.ResourcesCompat
import ru.megboyzz.dnevnik.R
val Typography = Typography(
body1 = TextStyle(
fontFamily = FontFamily.Default,
fontWeight = FontWeight.Normal,
fontSize = 16.sp
),
/* Other default text styles to override
button = TextStyle(
fontFamily = FontFamily.Default,
fontWeight = FontWeight.W500,
fontSize = 14.sp
),
caption = TextStyle(
fontFamily = FontFamily.Default,
fontWeight = FontWeight.Normal,
fontSize = 12.sp
)
*/
)
val H1 = TextStyle(
fontSize = 20.sp,
fontWeight = FontWeight.Bold
)
val H2 = TextStyle(
fontSize = 15.sp,
fontWeight = FontWeight.Bold,
lineHeight = (12 * 1.315).sp
)
val MainText = TextStyle(
fontSize = 12.sp,
fontWeight = FontWeight.Bold,
lineHeight = (10 * 1.56).sp
)
val Big = TextStyle(
fontSize = 27.sp,
fontWeight = FontWeight.Bold,
lineHeight = (22 * 1.475).sp
)
val Mini = TextStyle(
fontSize = 10.sp,
fontWeight = FontWeight.Bold,
)
@@ -0,0 +1,30 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:aapt="http://schemas.android.com/aapt"
android:width="108dp"
android:height="108dp"
android:viewportWidth="108"
android:viewportHeight="108">
<path android:pathData="M31,63.928c0,0 6.4,-11 12.1,-13.1c7.2,-2.6 26,-1.4 26,-1.4l38.1,38.1L107,108.928l-32,-1L31,63.928z">
<aapt:attr name="android:fillColor">
<gradient
android:endX="85.84757"
android:endY="92.4963"
android:startX="42.9492"
android:startY="49.59793"
android:type="linear">
<item
android:color="#44000000"
android:offset="0.0" />
<item
android:color="#00000000"
android:offset="1.0" />
</gradient>
</aapt:attr>
</path>
<path
android:fillColor="#FFFFFF"
android:fillType="nonZero"
android:pathData="M65.3,45.828l3.8,-6.6c0.2,-0.4 0.1,-0.9 -0.3,-1.1c-0.4,-0.2 -0.9,-0.1 -1.1,0.3l-3.9,6.7c-6.3,-2.8 -13.4,-2.8 -19.7,0l-3.9,-6.7c-0.2,-0.4 -0.7,-0.5 -1.1,-0.3C38.8,38.328 38.7,38.828 38.9,39.228l3.8,6.6C36.2,49.428 31.7,56.028 31,63.928h46C76.3,56.028 71.8,49.428 65.3,45.828zM43.4,57.328c-0.8,0 -1.5,-0.5 -1.8,-1.2c-0.3,-0.7 -0.1,-1.5 0.4,-2.1c0.5,-0.5 1.4,-0.7 2.1,-0.4c0.7,0.3 1.2,1 1.2,1.8C45.3,56.528 44.5,57.328 43.4,57.328L43.4,57.328zM64.6,57.328c-0.8,0 -1.5,-0.5 -1.8,-1.2s-0.1,-1.5 0.4,-2.1c0.5,-0.5 1.4,-0.7 2.1,-0.4c0.7,0.3 1.2,1 1.2,1.8C66.5,56.528 65.6,57.328 64.6,57.328L64.6,57.328z"
android:strokeWidth="1"
android:strokeColor="#00000000" />
</vector>
@@ -0,0 +1,12 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="314dp"
android:height="2dp"
android:viewportWidth="314"
android:viewportHeight="2">
<path
android:strokeWidth="1"
android:pathData="M1,1L313,1"
android:fillColor="#fff"
android:strokeColor="#fff"
android:strokeLineCap="round"/>
</vector>
+16
View File
@@ -0,0 +1,16 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="16dp"
android:height="16dp"
android:viewportWidth="16"
android:viewportHeight="16">
<group>
<clip-path
android:pathData="M0,0h16v16h-16z"/>
<path
android:pathData="M12,16C12,16 13,16 13,15C13,14 12,11 8,11C4,11 3,14 3,15C3,16 4,16 4,16L12,16ZM8,10.05C7.337,10.05 6.701,9.786 6.232,9.318C5.763,8.849 5.5,8.213 5.5,7.55C5.5,6.887 5.763,6.251 6.232,5.782C6.701,5.313 7.337,5.05 8,5.05C8.663,5.05 9.299,5.313 9.768,5.782C10.237,6.251 10.5,6.887 10.5,7.55C10.5,8.213 10.237,8.849 9.768,9.318C9.299,9.786 8.663,10.05 8,10.05Z"
android:fillColor="#000000"/>
<path
android:pathData="M14,1C14.53,1 15.039,1.211 15.414,1.586C15.789,1.961 16,2.47 16,3V12.5C16,12.898 15.842,13.279 15.561,13.561C15.279,13.842 14.898,14 14.5,14H13.847C13.638,13.265 13.274,12.583 12.781,12H15L15,3C15,2.735 14.895,2.48 14.707,2.293C14.52,2.105 14.265,2 14,2L2,2C1.735,2 1.48,2.105 1.293,2.293C1.105,2.48 1,2.735 1,3L1,12H3.219C2.665,12.654 2.329,13.373 2.153,14H1.5C1.102,14 0.721,13.842 0.439,13.561C0.158,13.279 0,12.898 0,12.5L0,3C0,2.47 0.211,1.961 0.586,1.586C0.961,1.211 1.47,1 2,1L14,1Z"
android:fillColor="#000000"/>
</group>
</vector>
@@ -0,0 +1,12 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="314dp"
android:height="2dp"
android:viewportWidth="314"
android:viewportHeight="2">
<path
android:strokeWidth="1"
android:pathData="M1,1L313,1"
android:fillColor="#00000000"
android:strokeColor="#272727"
android:strokeLineCap="round"/>
</vector>
@@ -0,0 +1,13 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="16dp"
android:height="16dp"
android:viewportWidth="16"
android:viewportHeight="16">
<group>
<clip-path
android:pathData="M0,0h15.34v16h-15.34z"/>
<path
android:pathData="M7.337,3.478C7.798,3.478 8.24,3.295 8.566,2.969C8.892,2.643 9.075,2.201 9.075,1.739C9.075,1.278 8.892,0.836 8.566,0.51C8.24,0.184 7.798,0.001 7.337,0.001C6.876,0.001 6.433,0.184 6.107,0.51C5.781,0.836 5.598,1.278 5.598,1.739C5.598,2.201 5.781,2.643 6.107,2.969C6.433,3.295 6.876,3.478 7.337,3.478ZM1.597,3.478C2.059,3.478 2.501,3.295 2.827,2.969C3.153,2.643 3.336,2.201 3.336,1.739C3.336,1.278 3.153,0.836 2.827,0.51C2.501,0.184 2.059,0.001 1.597,0.001C1.136,0.001 0.694,0.184 0.368,0.51C0.042,0.836 -0.141,1.278 -0.141,1.739C-0.141,2.201 0.042,2.643 0.368,2.969C0.694,3.295 1.136,3.478 1.597,3.478ZM13.597,3.478C14.059,3.478 14.501,3.295 14.827,2.969C15.153,2.643 15.336,2.201 15.336,1.739C15.336,1.278 15.153,0.836 14.827,0.51C14.501,0.184 14.059,0.001 13.597,0.001C13.136,0.001 12.694,0.184 12.368,0.51C12.042,0.836 11.859,1.278 11.859,1.739C11.859,2.201 12.042,2.643 12.368,2.969C12.694,3.295 13.136,3.478 13.597,3.478ZM7.337,9.739C7.565,9.739 7.791,9.694 8.002,9.606C8.213,9.519 8.405,9.391 8.566,9.229C8.728,9.068 8.856,8.876 8.943,8.665C9.03,8.454 9.075,8.228 9.075,8C9.075,7.772 9.03,7.546 8.943,7.335C8.856,7.124 8.728,6.932 8.566,6.771C8.405,6.609 8.213,6.481 8.002,6.394C7.791,6.306 7.565,6.261 7.337,6.261C6.876,6.261 6.433,6.445 6.107,6.771C5.781,7.097 5.598,7.539 5.598,8C5.598,8.461 5.781,8.903 6.107,9.229C6.433,9.556 6.876,9.739 7.337,9.739ZM1.597,9.739C1.826,9.739 2.052,9.694 2.263,9.606C2.474,9.519 2.665,9.391 2.827,9.229C2.988,9.068 3.116,8.876 3.204,8.665C3.291,8.454 3.336,8.228 3.336,8C3.336,7.772 3.291,7.546 3.204,7.335C3.116,7.124 2.988,6.932 2.827,6.771C2.665,6.609 2.474,6.481 2.263,6.394C2.052,6.306 1.826,6.261 1.597,6.261C1.136,6.261 0.694,6.445 0.368,6.771C0.042,7.097 -0.141,7.539 -0.141,8C-0.141,8.461 0.042,8.903 0.368,9.229C0.694,9.556 1.136,9.739 1.597,9.739ZM13.597,9.739C13.826,9.739 14.052,9.694 14.263,9.606C14.474,9.519 14.665,9.391 14.827,9.229C14.988,9.068 15.116,8.876 15.204,8.665C15.291,8.454 15.336,8.228 15.336,8C15.336,7.772 15.291,7.546 15.204,7.335C15.116,7.124 14.988,6.932 14.827,6.771C14.665,6.609 14.474,6.481 14.263,6.394C14.052,6.306 13.826,6.261 13.597,6.261C13.136,6.261 12.694,6.445 12.368,6.771C12.042,7.097 11.859,7.539 11.859,8C11.859,8.461 12.042,8.903 12.368,9.229C12.694,9.556 13.136,9.739 13.597,9.739ZM7.337,15.999C7.565,15.999 7.791,15.954 8.002,15.867C8.213,15.78 8.405,15.652 8.566,15.49C8.728,15.329 8.856,15.137 8.943,14.926C9.03,14.715 9.075,14.489 9.075,14.261C9.075,14.032 9.03,13.806 8.943,13.595C8.856,13.384 8.728,13.193 8.566,13.031C8.405,12.87 8.213,12.742 8.002,12.654C7.791,12.567 7.565,12.522 7.337,12.522C6.876,12.522 6.433,12.705 6.107,13.031C5.781,13.358 5.598,13.8 5.598,14.261C5.598,14.722 5.781,15.165 6.107,15.491C6.433,15.817 6.876,16 7.337,16V15.999ZM1.597,15.999C1.826,15.999 2.052,15.954 2.263,15.867C2.474,15.78 2.665,15.652 2.827,15.49C2.988,15.329 3.116,15.137 3.204,14.926C3.291,14.715 3.336,14.489 3.336,14.261C3.336,14.032 3.291,13.806 3.204,13.595C3.116,13.384 2.988,13.193 2.827,13.031C2.665,12.87 2.474,12.742 2.263,12.654C2.052,12.567 1.826,12.522 1.597,12.522C1.136,12.522 0.694,12.705 0.368,13.031C0.042,13.357 -0.141,13.8 -0.141,14.261C-0.141,14.722 0.042,15.164 0.368,15.49C0.694,15.816 1.136,15.999 1.597,15.999ZM13.597,15.999C13.826,15.999 14.052,15.954 14.263,15.867C14.474,15.78 14.665,15.652 14.827,15.49C14.988,15.329 15.116,15.137 15.204,14.926C15.291,14.715 15.336,14.489 15.336,14.261C15.336,14.032 15.291,13.806 15.204,13.595C15.116,13.384 14.988,13.193 14.827,13.031C14.665,12.87 14.474,12.742 14.263,12.654C14.052,12.567 13.826,12.522 13.597,12.522C13.136,12.522 12.694,12.705 12.368,13.031C12.042,13.357 11.859,13.8 11.859,14.261C11.859,14.722 12.042,15.164 12.368,15.49C12.694,15.816 13.136,15.999 13.597,15.999Z"
android:fillColor="#000000"/>
</group>
</vector>
+13
View File
@@ -0,0 +1,13 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="14dp"
android:height="12dp"
android:viewportWidth="14"
android:viewportHeight="12">
<path
android:pathData="M1,6.625L4.652,11L13,1"
android:strokeLineJoin="round"
android:strokeWidth="2"
android:fillColor="#00000000"
android:strokeColor="#56F570"
android:strokeLineCap="round"/>
</vector>
+9
View File
@@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="20dp"
android:height="20dp"
android:viewportWidth="20"
android:viewportHeight="20">
<path
android:pathData="M7,9C7.265,9 7.52,9.105 7.707,9.293C7.895,9.48 8,9.735 8,10C8,10.265 7.895,10.52 7.707,10.707C7.52,10.895 7.265,11 7,11C6.735,11 6.48,10.895 6.293,10.707C6.105,10.52 6,10.265 6,10C6,9.735 6.105,9.48 6.293,9.293C6.48,9.105 6.735,9 7,9ZM4,16C4,16.53 4.211,17.039 4.586,17.414C4.961,17.789 5.47,18 6,18H14C14.53,18 15.039,17.789 15.414,17.414C15.789,17.039 16,16.53 16,16L16,4C16,3.47 15.789,2.961 15.414,2.586C15.039,2.211 14.53,2 14,2H6C5.47,2 4.961,2.211 4.586,2.586C4.211,2.961 4,3.47 4,4L4,16ZM6,3L14,3C14.265,3 14.52,3.105 14.707,3.293C14.895,3.48 15,3.735 15,4L15,16C15,16.265 14.895,16.52 14.707,16.707C14.52,16.895 14.265,17 14,17H6C5.735,17 5.48,16.895 5.293,16.707C5.105,16.52 5,16.265 5,16L5,4C5,3.735 5.105,3.48 5.293,3.293C5.48,3.105 5.735,3 6,3Z"
android:fillColor="#ffffff"/>
</vector>
+16
View File
@@ -0,0 +1,16 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="360dp"
android:height="218dp"
android:viewportWidth="360"
android:viewportHeight="218">
<path
android:pathData="M-56,10C-56,-39.71 -15.71,-80 34,-80H386.09C437.3,-80 478.18,-37.33 476.01,13.83L473.74,67.19C471.43,121.43 421.98,161.3 368.49,152.05L313.71,142.58C300.09,140.23 286.1,141.04 272.85,144.96L83.64,200.95C48.75,211.27 11.07,199.57 -11.83,171.29L-35.94,141.53C-48.92,125.5 -56,105.51 -56,84.88V10Z"
android:fillColor="#3C95FF"/>
<group>
<clip-path
android:pathData="M140,39h80v80h-80z"/>
<path
android:pathData="M213.52,56.43L188.94,44.72C183.53,41.49 176.8,41.43 171.33,44.57L146.48,56.43C146.38,56.48 146.29,56.53 146.2,56.58C140.3,59.96 138.25,67.47 141.62,73.37C142.77,75.37 144.45,77.01 146.48,78.1L153.33,81.37V97.7C153.34,105 158.09,111.46 165.06,113.63C169.92,115.03 174.95,115.72 180,115.67C185.05,115.72 190.08,115.04 194.94,113.64C201.91,111.47 206.66,105.02 206.67,97.72V81.36L213.33,78.17V105.67C213.33,107.51 214.82,109 216.67,109C218.51,109 220,107.51 220,105.67V65.67C220.02,61.75 216.93,58.14 213.52,56.43ZM200,97.72C200,102.08 197.17,105.95 193,107.26C188.77,108.47 184.39,109.05 180,109C175.6,109.05 171.23,108.47 167,107.26C162.83,105.95 160,102.08 160,97.72V84.54L171.06,89.81C173.78,91.43 176.9,92.28 180.07,92.27C183.09,92.29 186.06,91.49 188.66,89.96L200,84.54V97.72ZM210.67,72.08L185.53,84.08C182.02,86.12 177.68,86.07 174.23,83.93L149.63,72.23C146.89,70.75 145.86,67.33 147.34,64.59C147.84,63.66 148.59,62.9 149.51,62.37L174.49,50.44C178,48.4 182.34,48.46 185.79,50.59L210.37,62.3C212.18,63.3 213.31,65.2 213.33,67.27C213.34,69.22 212.33,71.05 210.67,72.08Z"
android:fillColor="#ffffff"/>
</group>
</vector>
+13
View File
@@ -0,0 +1,13 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="16dp"
android:height="16dp"
android:viewportWidth="16"
android:viewportHeight="16">
<group>
<clip-path
android:pathData="M0,0h16v16h-16z"/>
<path
android:pathData="M14.8,1.442C14.425,1.129 13.986,0.902 13.514,0.777C13.041,0.653 12.547,0.634 12.067,0.721L9.519,1.184C8.93,1.292 8.396,1.595 8,2.043C7.603,1.594 7.067,1.291 6.477,1.184L3.933,0.721C3.453,0.633 2.959,0.652 2.486,0.776C2.014,0.901 1.574,1.127 1.199,1.44C0.824,1.753 0.522,2.144 0.315,2.587C0.107,3.029 0,3.512 0,4L0,11.195C0,11.976 0.274,12.732 0.774,13.331C1.274,13.93 1.969,14.335 2.737,14.475L6.927,15.237C7.637,15.366 8.363,15.366 9.073,15.237L13.267,14.475C14.034,14.334 14.728,13.929 15.227,13.33C15.727,12.731 16,11.976 16,11.195V4C16,3.512 15.893,3.029 15.686,2.587C15.478,2.145 15.176,1.754 14.8,1.442V1.442ZM7.333,13.952C7.277,13.944 7.221,13.935 7.165,13.925L2.975,13.163C2.515,13.08 2.098,12.837 1.798,12.477C1.498,12.117 1.333,11.664 1.333,11.195V4C1.333,3.47 1.544,2.961 1.919,2.586C2.294,2.211 2.803,2 3.333,2C3.454,2 3.575,2.011 3.693,2.033L6.24,2.499C6.546,2.556 6.824,2.717 7.023,2.956C7.223,3.195 7.333,3.497 7.333,3.808V13.952ZM14.667,11.195C14.667,11.664 14.502,12.117 14.202,12.477C13.902,12.837 13.486,13.08 13.025,13.163L8.835,13.925C8.779,13.935 8.723,13.944 8.667,13.952V3.808C8.667,3.496 8.776,3.193 8.976,2.954C9.176,2.714 9.454,2.552 9.761,2.496L12.309,2.029C12.597,1.977 12.894,1.989 13.177,2.063C13.461,2.138 13.724,2.274 13.949,2.463C14.174,2.651 14.355,2.886 14.479,3.151C14.603,3.417 14.667,3.707 14.667,4V11.195Z"
android:fillColor="#ffffff"/>
</group>
</vector>
@@ -0,0 +1,11 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="25dp"
android:height="20dp"
android:viewportWidth="25"
android:viewportHeight="20">
<path
android:strokeWidth="1"
android:pathData="M9,0.5L16,0.5A8.5,8.5 0,0 1,24.5 9L24.5,11A8.5,8.5 0,0 1,16 19.5L9,19.5A8.5,8.5 0,0 1,0.5 11L0.5,9A8.5,8.5 0,0 1,9 0.5z"
android:fillColor="#ffffff"
android:strokeColor="#3C95FF"/>
</vector>
@@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:pathData="M11.682,14.667C11.838,14.668 11.989,14.614 12.109,14.514L16.109,11.181C16.245,11.068 16.33,10.905 16.347,10.729C16.363,10.552 16.309,10.377 16.195,10.241C16.082,10.105 15.92,10.019 15.743,10.003C15.567,9.987 15.392,10.041 15.255,10.154L11.682,13.141L8.109,10.261C8.041,10.205 7.962,10.164 7.878,10.139C7.794,10.114 7.705,10.106 7.618,10.115C7.531,10.125 7.446,10.151 7.369,10.193C7.292,10.235 7.224,10.292 7.169,10.361C7.108,10.429 7.061,10.51 7.033,10.597C7.004,10.684 6.994,10.776 7.003,10.868C7.012,10.959 7.039,11.048 7.084,11.128C7.128,11.208 7.189,11.278 7.262,11.334L11.262,14.554C11.385,14.638 11.533,14.678 11.682,14.667Z"
android:fillColor="#000000"/>
</vector>
@@ -0,0 +1,170 @@
<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="108dp"
android:height="108dp"
android:viewportWidth="108"
android:viewportHeight="108">
<path
android:fillColor="#3DDC84"
android:pathData="M0,0h108v108h-108z" />
<path
android:fillColor="#00000000"
android:pathData="M9,0L9,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,0L19,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M29,0L29,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M39,0L39,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M49,0L49,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M59,0L59,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M69,0L69,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M79,0L79,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M89,0L89,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M99,0L99,108"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,9L108,9"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,19L108,19"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,29L108,29"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,39L108,39"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,49L108,49"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,59L108,59"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,69L108,69"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,79L108,79"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,89L108,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M0,99L108,99"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,29L89,29"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,39L89,39"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,49L89,49"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,59L89,59"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,69L89,69"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M19,79L89,79"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M29,19L29,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M39,19L39,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M49,19L49,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M59,19L59,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M69,19L69,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
<path
android:fillColor="#00000000"
android:pathData="M79,19L79,89"
android:strokeWidth="0.8"
android:strokeColor="#33FFFFFF" />
</vector>
@@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="360dp"
android:height="205dp"
android:viewportWidth="360"
android:viewportHeight="205">
<path
android:pathData="M-56,10C-56,-39.71 -15.71,-80 34,-80H386.09C437.3,-80 478.18,-37.33 476.01,13.83L473.74,67.19C471.43,121.43 421.98,161.3 368.49,152.05L313.71,142.58C300.09,140.23 286.1,141.04 272.85,144.96L83.64,200.95C48.75,211.27 11.07,199.57 -11.83,171.29L-35.94,141.53C-48.92,125.5 -56,105.51 -56,84.88V10Z"
android:fillColor="#3C95FF"/>
</vector>
+28
View File
@@ -0,0 +1,28 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="16dp"
android:height="16dp"
android:viewportWidth="16"
android:viewportHeight="16">
<group>
<clip-path
android:pathData="M0,0h16v16h-16z"/>
<path
android:pathData="M15.333,14.667H3.333C2.803,14.667 2.294,14.456 1.919,14.081C1.544,13.706 1.333,13.197 1.333,12.667V0.667C1.333,0.49 1.263,0.32 1.138,0.195C1.013,0.07 0.843,0 0.667,0C0.49,0 0.32,0.07 0.195,0.195C0.07,0.32 0,0.49 0,0.667L0,12.667C0.001,13.55 0.353,14.398 0.977,15.023C1.602,15.647 2.45,15.999 3.333,16H15.333C15.51,16 15.68,15.93 15.805,15.805C15.93,15.68 16,15.51 16,15.333C16,15.156 15.93,14.987 15.805,14.862C15.68,14.737 15.51,14.667 15.333,14.667Z"
android:fillColor="#ffffff"/>
<path
android:pathData="M4,13.333C4.177,13.333 4.346,13.263 4.471,13.138C4.597,13.013 4.667,12.843 4.667,12.666V8C4.667,7.823 4.597,7.653 4.471,7.528C4.346,7.403 4.177,7.333 4,7.333C3.823,7.333 3.654,7.403 3.529,7.528C3.404,7.653 3.333,7.823 3.333,8V12.666C3.333,12.843 3.404,13.013 3.529,13.138C3.654,13.263 3.823,13.333 4,13.333Z"
android:fillColor="#ffffff"/>
<path
android:pathData="M6.667,6.667V12.667C6.667,12.844 6.737,13.013 6.862,13.138C6.987,13.263 7.156,13.333 7.333,13.333C7.51,13.333 7.68,13.263 7.805,13.138C7.93,13.013 8,12.844 8,12.667V6.667C8,6.49 7.93,6.32 7.805,6.195C7.68,6.07 7.51,6 7.333,6C7.156,6 6.987,6.07 6.862,6.195C6.737,6.32 6.667,6.49 6.667,6.667Z"
android:fillColor="#ffffff"/>
<path
android:pathData="M10,8.667V12.667C10,12.844 10.07,13.013 10.195,13.138C10.32,13.263 10.49,13.333 10.667,13.333C10.844,13.333 11.013,13.263 11.138,13.138C11.263,13.013 11.333,12.844 11.333,12.667V8.667C11.333,8.49 11.263,8.32 11.138,8.195C11.013,8.07 10.844,8 10.667,8C10.49,8 10.32,8.07 10.195,8.195C10.07,8.32 10,8.49 10,8.667Z"
android:fillColor="#ffffff"/>
<path
android:pathData="M13.333,6V12.666C13.333,12.843 13.404,13.013 13.529,13.138C13.654,13.263 13.823,13.333 14,13.333C14.177,13.333 14.347,13.263 14.472,13.138C14.597,13.013 14.667,12.843 14.667,12.666V6C14.667,5.823 14.597,5.653 14.472,5.528C14.347,5.403 14.177,5.333 14,5.333C13.823,5.333 13.654,5.403 13.529,5.528C13.404,5.653 13.333,5.823 13.333,6Z"
android:fillColor="#ffffff"/>
<path
android:pathData="M4,6C4.177,6 4.346,5.929 4.471,5.804L6.862,3.414C6.989,3.293 7.158,3.225 7.333,3.225C7.509,3.225 7.677,3.293 7.805,3.414L9.253,4.862C9.628,5.237 10.136,5.447 10.667,5.447C11.197,5.447 11.705,5.237 12.081,4.862L15.805,1.138C15.926,1.012 15.993,0.843 15.992,0.669C15.99,0.494 15.92,0.327 15.796,0.203C15.673,0.079 15.506,0.009 15.331,0.008C15.156,0.006 14.988,0.074 14.862,0.195L11.138,3.918C11.013,4.043 10.843,4.113 10.667,4.113C10.49,4.113 10.32,4.043 10.195,3.918L8.747,2.471C8.372,2.096 7.864,1.885 7.333,1.885C6.803,1.885 6.294,2.096 5.919,2.471L3.529,4.862C3.435,4.955 3.372,5.074 3.346,5.203C3.32,5.332 3.334,5.466 3.384,5.588C3.435,5.71 3.52,5.814 3.63,5.887C3.739,5.96 3.868,6 4,6V6Z"
android:fillColor="#ffffff"/>
</group>
</vector>
@@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:pathData="M8.6,14.12L13.19,18.71C13.378,18.896 13.631,19.001 13.895,19.001C14.159,19.001 14.413,18.896 14.6,18.71C14.694,18.617 14.768,18.507 14.819,18.385C14.87,18.263 14.896,18.132 14.896,18C14.896,17.868 14.87,17.737 14.819,17.616C14.768,17.494 14.694,17.383 14.6,17.29L10,12.71C9.906,12.617 9.832,12.507 9.781,12.385C9.731,12.263 9.704,12.132 9.704,12C9.704,11.868 9.731,11.738 9.781,11.616C9.832,11.494 9.906,11.383 10,11.29L14.6,6.71C14.788,6.523 14.895,6.269 14.896,6.004C14.897,5.738 14.792,5.483 14.605,5.295C14.418,5.107 14.164,5.001 13.899,5C13.633,4.999 13.378,5.103 13.19,5.29L8.6,9.88C8.038,10.443 7.723,11.205 7.723,12C7.723,12.795 8.038,13.558 8.6,14.12V14.12Z"
android:fillColor="#272727"/>
</vector>
@@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="40dp"
android:height="40dp"
android:viewportWidth="40"
android:viewportHeight="40">
<path
android:pathData="M20,4.375C23.09,4.375 26.111,5.291 28.681,7.008C31.25,8.725 33.253,11.165 34.436,14.021C35.618,16.876 35.928,20.017 35.325,23.048C34.722,26.079 33.234,28.863 31.049,31.049C28.863,33.234 26.079,34.722 23.048,35.325C20.017,35.928 16.876,35.618 14.021,34.436C11.165,33.253 8.725,31.25 7.008,28.681C5.291,26.111 4.375,23.09 4.375,20C4.383,15.858 6.032,11.889 8.961,8.961C11.889,6.032 15.858,4.383 20,4.375ZM20,34.375C22.843,34.375 25.622,33.532 27.986,31.952C30.35,30.373 32.193,28.128 33.281,25.501C34.369,22.874 34.653,19.984 34.099,17.196C33.544,14.407 32.175,11.846 30.165,9.835C28.154,7.825 25.593,6.456 22.804,5.901C20.016,5.347 17.126,5.631 14.499,6.719C11.872,7.807 9.627,9.65 8.048,12.014C6.468,14.378 5.625,17.157 5.625,20C5.629,23.811 7.145,27.465 9.84,30.16C12.535,32.855 16.189,34.371 20,34.375ZM26.875,16.875C26.875,16.628 26.802,16.386 26.664,16.181C26.527,15.975 26.332,15.815 26.103,15.72C25.875,15.625 25.624,15.601 25.381,15.649C25.139,15.697 24.916,15.816 24.741,15.991C24.566,16.166 24.447,16.389 24.399,16.631C24.351,16.874 24.375,17.125 24.47,17.353C24.565,17.582 24.725,17.777 24.931,17.914C25.136,18.052 25.378,18.125 25.625,18.125C25.956,18.125 26.274,17.993 26.509,17.759C26.743,17.524 26.875,17.206 26.875,16.875ZM15.625,16.875C15.625,16.628 15.552,16.386 15.414,16.181C15.277,15.975 15.082,15.815 14.853,15.72C14.625,15.625 14.374,15.601 14.131,15.649C13.889,15.697 13.666,15.816 13.491,15.991C13.316,16.166 13.197,16.389 13.149,16.631C13.101,16.874 13.125,17.125 13.22,17.353C13.315,17.582 13.475,17.777 13.681,17.914C13.886,18.052 14.128,18.125 14.375,18.125C14.707,18.125 15.024,17.993 15.259,17.759C15.493,17.524 15.625,17.206 15.625,16.875ZM12.969,27.188C12.926,27.258 12.899,27.337 12.887,27.418C12.875,27.5 12.879,27.583 12.899,27.663C12.92,27.743 12.956,27.818 13.005,27.884C13.054,27.949 13.116,28.005 13.188,28.047C13.284,28.096 13.391,28.123 13.5,28.125C13.61,28.124 13.719,28.095 13.814,28.041C13.91,27.986 13.99,27.907 14.047,27.813C14.65,26.768 15.518,25.9 16.563,25.297C17.608,24.694 18.793,24.376 20,24.376C21.206,24.376 22.392,24.694 23.437,25.297C24.482,25.9 25.35,26.768 25.953,27.813C25.99,27.89 26.043,27.959 26.109,28.016C26.174,28.072 26.25,28.114 26.333,28.139C26.415,28.165 26.502,28.173 26.587,28.163C26.673,28.153 26.756,28.126 26.83,28.083C26.905,28.04 26.969,27.982 27.021,27.912C27.072,27.843 27.108,27.763 27.126,27.679C27.145,27.595 27.147,27.508 27.13,27.423C27.114,27.339 27.08,27.258 27.031,27.188C26.321,25.951 25.296,24.923 24.062,24.209C22.827,23.495 21.426,23.118 20,23.118C18.574,23.118 17.173,23.495 15.938,24.209C14.704,24.923 13.679,25.951 12.969,27.188Z"
android:fillColor="#000000"/>
</vector>
+22
View File
@@ -0,0 +1,22 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="16dp"
android:height="16dp"
android:viewportWidth="16"
android:viewportHeight="16">
<group>
<clip-path
android:pathData="M0,0h16v16h-16z"/>
<path
android:pathData="M12.667,1.333H12V0.667C12,0.49 11.93,0.32 11.805,0.195C11.68,0.07 11.51,0 11.333,0C11.156,0 10.987,0.07 10.862,0.195C10.737,0.32 10.667,0.49 10.667,0.667V1.333H5.333V0.667C5.333,0.49 5.263,0.32 5.138,0.195C5.013,0.07 4.843,0 4.667,0C4.49,0 4.32,0.07 4.195,0.195C4.07,0.32 4,0.49 4,0.667V1.333H3.333C2.45,1.334 1.602,1.686 0.977,2.311C0.353,2.936 0.001,3.783 0,4.667L0,12.667C0.001,13.55 0.353,14.398 0.977,15.023C1.602,15.647 2.45,15.999 3.333,16H12.667C13.55,15.999 14.398,15.647 15.023,15.023C15.647,14.398 15.999,13.55 16,12.667V4.667C15.999,3.783 15.647,2.936 15.023,2.311C14.398,1.686 13.55,1.334 12.667,1.333V1.333ZM1.333,4.667C1.333,4.136 1.544,3.628 1.919,3.252C2.294,2.877 2.803,2.667 3.333,2.667H12.667C13.197,2.667 13.706,2.877 14.081,3.252C14.456,3.628 14.667,4.136 14.667,4.667V5.333H1.333V4.667ZM12.667,14.667H3.333C2.803,14.667 2.294,14.456 1.919,14.081C1.544,13.706 1.333,13.197 1.333,12.667V6.667H14.667V12.667C14.667,13.197 14.456,13.706 14.081,14.081C13.706,14.456 13.197,14.667 12.667,14.667Z"
android:fillColor="#ffffff"/>
<path
android:pathData="M8,11C8.552,11 9,10.552 9,10C9,9.448 8.552,9 8,9C7.448,9 7,9.448 7,10C7,10.552 7.448,11 8,11Z"
android:fillColor="#ffffff"/>
<path
android:pathData="M4.667,11C5.219,11 5.667,10.552 5.667,10C5.667,9.448 5.219,9 4.667,9C4.114,9 3.667,9.448 3.667,10C3.667,10.552 4.114,11 4.667,11Z"
android:fillColor="#ffffff"/>
<path
android:pathData="M11.333,11C11.886,11 12.333,10.552 12.333,10C12.333,9.448 11.886,9 11.333,9C10.781,9 10.333,9.448 10.333,10C10.333,10.552 10.781,11 11.333,11Z"
android:fillColor="#ffffff"/>
</group>
</vector>
+30
View File
@@ -0,0 +1,30 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="20dp"
android:height="18dp"
android:viewportWidth="20"
android:viewportHeight="18">
<path
android:pathData="M17.245,3.579H7.391M2.464,13.602H5.748H2.464ZM17.245,13.602H9.033H17.245ZM2.464,8.59H12.318H2.464ZM17.245,8.59H15.603H17.245ZM2.464,3.579H4.106H2.464Z"
android:strokeWidth="1.33333"
android:fillColor="#00000000"
android:strokeColor="#ffffff"
android:strokeLineCap="round"/>
<path
android:pathData="M7.391,12.17C8.298,12.17 9.033,12.811 9.033,13.601C9.033,14.392 8.298,15.033 7.391,15.033C6.484,15.033 5.748,14.392 5.748,13.601C5.748,12.811 6.484,12.17 7.391,12.17Z"
android:strokeWidth="1.33333"
android:fillColor="#00000000"
android:strokeColor="#ffffff"
android:strokeLineCap="round"/>
<path
android:pathData="M13.96,7.159C14.868,7.159 15.603,7.8 15.603,8.591C15.603,9.381 14.868,10.023 13.96,10.023C13.054,10.023 12.318,9.381 12.318,8.591C12.318,7.8 13.054,7.159 13.96,7.159Z"
android:strokeWidth="1.33333"
android:fillColor="#00000000"
android:strokeColor="#ffffff"
android:strokeLineCap="round"/>
<path
android:pathData="M5.748,2.147C6.656,2.147 7.391,2.788 7.391,3.579C7.391,4.37 6.656,5.011 5.748,5.011C4.841,5.011 4.106,4.37 4.106,3.579C4.106,2.788 4.841,2.147 5.748,2.147Z"
android:strokeWidth="1.33333"
android:fillColor="#00000000"
android:strokeColor="#ffffff"
android:strokeLineCap="round"/>
</vector>
+9
View File
@@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="50dp"
android:height="50dp"
android:viewportWidth="50"
android:viewportHeight="50">
<path
android:pathData="M25,5.469C28.863,5.469 32.639,6.614 35.851,8.76C39.063,10.906 41.566,13.957 43.044,17.526C44.523,21.095 44.91,25.022 44.156,28.81C43.402,32.599 41.542,36.079 38.811,38.811C36.079,41.542 32.599,43.402 28.81,44.156C25.022,44.91 21.095,44.523 17.526,43.044C13.957,41.566 10.906,39.063 8.76,35.851C6.614,32.639 5.469,28.863 5.469,25C5.479,19.823 7.54,14.861 11.201,11.201C14.861,7.54 19.823,5.479 25,5.469ZM25,42.969C28.554,42.969 32.028,41.915 34.983,39.94C37.938,37.966 40.241,35.16 41.601,31.876C42.961,28.593 43.317,24.98 42.624,21.494C41.93,18.009 40.219,14.807 37.706,12.294C35.193,9.781 31.991,8.07 28.506,7.377C25.02,6.683 21.407,7.039 18.124,8.399C14.84,9.759 12.034,12.062 10.059,15.017C8.085,17.972 7.031,21.446 7.031,25C7.036,29.764 8.931,34.331 12.3,37.7C15.669,41.069 20.236,42.964 25,42.969ZM33.594,21.094C33.594,20.785 33.502,20.483 33.33,20.226C33.159,19.969 32.915,19.768 32.629,19.65C32.344,19.532 32.029,19.501 31.726,19.561C31.423,19.622 31.145,19.77 30.926,19.989C30.708,20.207 30.559,20.486 30.499,20.789C30.438,21.092 30.469,21.406 30.588,21.692C30.706,21.977 30.906,22.221 31.163,22.393C31.42,22.565 31.722,22.656 32.031,22.656C32.446,22.656 32.843,22.492 33.136,22.199C33.429,21.906 33.594,21.508 33.594,21.094ZM19.531,21.094C19.531,20.785 19.44,20.483 19.268,20.226C19.096,19.969 18.852,19.768 18.567,19.65C18.281,19.532 17.967,19.501 17.664,19.561C17.361,19.622 17.082,19.77 16.864,19.989C16.645,20.207 16.497,20.486 16.436,20.789C16.376,21.092 16.407,21.406 16.525,21.692C16.643,21.977 16.844,22.221 17.101,22.393C17.358,22.565 17.66,22.656 17.969,22.656C18.383,22.656 18.781,22.492 19.074,22.199C19.367,21.906 19.531,21.508 19.531,21.094ZM16.211,30.078C17.099,31.624 18.379,32.908 19.923,33.801C21.466,34.694 23.217,35.165 25,35.165C26.783,35.165 28.534,34.694 30.077,33.801C31.621,32.908 32.901,31.624 33.789,30.078C33.85,29.989 33.892,29.889 33.913,29.783C33.933,29.677 33.932,29.569 33.908,29.463C33.884,29.358 33.839,29.259 33.776,29.173C33.712,29.086 33.631,29.013 33.538,28.959C33.444,28.905 33.341,28.871 33.234,28.858C33.127,28.846 33.019,28.856 32.916,28.888C32.813,28.92 32.717,28.973 32.636,29.043C32.554,29.113 32.488,29.2 32.441,29.297C31.687,30.603 30.602,31.687 29.296,32.441C27.99,33.195 26.508,33.592 25,33.592C23.492,33.592 22.01,33.195 20.704,32.441C19.398,31.687 18.313,30.603 17.559,29.297C17.512,29.2 17.446,29.113 17.364,29.043C17.283,28.973 17.187,28.92 17.084,28.888C16.981,28.856 16.873,28.846 16.766,28.858C16.659,28.871 16.556,28.905 16.462,28.959C16.369,29.013 16.288,29.086 16.224,29.173C16.161,29.259 16.115,29.358 16.092,29.463C16.068,29.569 16.067,29.677 16.087,29.783C16.108,29.889 16.15,29.989 16.211,30.078Z"
android:fillColor="#000000"/>
</vector>
+13
View File
@@ -0,0 +1,13 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="16dp"
android:height="16dp"
android:viewportWidth="16"
android:viewportHeight="16">
<group>
<clip-path
android:pathData="M0,0h16v16h-16z"/>
<path
android:pathData="M0.667,16C0.843,16 1.013,15.93 1.138,15.805L5.551,11.392L6.383,12.253C7.01,12.916 7.874,13.303 8.786,13.329C9.09,13.33 9.392,13.279 9.679,13.178C10.122,13.026 10.511,12.748 10.799,12.378C11.087,12.009 11.262,11.564 11.302,11.097C11.374,10.421 11.324,9.737 11.154,9.079L11.011,8.384C10.984,8.273 10.986,8.157 11.017,8.047C11.048,7.937 11.106,7.836 11.187,7.755L12.245,6.697C12.287,6.655 12.343,6.631 12.403,6.63C12.423,6.626 12.445,6.628 12.464,6.636C12.484,6.644 12.501,6.657 12.514,6.673C12.849,7.028 13.299,7.253 13.784,7.305C14.27,7.358 14.758,7.236 15.161,6.961C15.398,6.793 15.595,6.574 15.739,6.322C15.882,6.069 15.969,5.788 15.993,5.498C16.017,5.209 15.978,4.917 15.878,4.644C15.778,4.371 15.62,4.124 15.414,3.918L12.133,0.636C11.796,0.291 11.349,0.075 10.869,0.026C10.389,-0.023 9.907,0.099 9.508,0.369C9.271,0.538 9.074,0.756 8.93,1.009C8.786,1.262 8.699,1.543 8.675,1.832C8.651,2.122 8.691,2.413 8.791,2.686C8.891,2.959 9.049,3.207 9.255,3.413L9.305,3.463C9.343,3.502 9.365,3.554 9.365,3.608C9.365,3.662 9.343,3.714 9.305,3.753L8.239,4.819C8.157,4.901 8.055,4.96 7.944,4.991C7.832,5.021 7.715,5.022 7.603,4.993L7.058,4.854C6.388,4.679 5.692,4.626 5.003,4.699C4.515,4.749 4.051,4.938 3.667,5.244C3.282,5.549 2.993,5.958 2.833,6.423C2.659,6.9 2.625,7.417 2.734,7.913C2.844,8.409 3.093,8.863 3.452,9.223L4.624,10.436L0.195,14.862C0.102,14.955 0.039,15.074 0.013,15.203C-0.013,15.333 0,15.467 0.051,15.589C0.101,15.71 0.187,15.814 0.296,15.888C0.406,15.961 0.535,16 0.667,16ZM4.09,6.867C4.165,6.64 4.304,6.439 4.491,6.29C4.678,6.14 4.904,6.048 5.142,6.024C5.295,6.008 5.45,6 5.604,6C5.982,6 6.359,6.049 6.725,6.145L7.273,6.285C7.609,6.37 7.962,6.366 8.296,6.275C8.631,6.183 8.935,6.006 9.181,5.761L10.248,4.695C10.536,4.406 10.697,4.015 10.697,3.607C10.697,3.2 10.536,2.809 10.248,2.52L10.197,2.469C10.128,2.401 10.075,2.317 10.042,2.226C10.008,2.134 9.995,2.036 10.004,1.939C10.012,1.842 10.042,1.748 10.091,1.664C10.14,1.579 10.207,1.507 10.286,1.451C10.429,1.365 10.596,1.33 10.761,1.353C10.926,1.376 11.077,1.455 11.191,1.577L14.473,4.86C14.542,4.929 14.595,5.012 14.629,5.104C14.662,5.195 14.675,5.293 14.667,5.39C14.658,5.487 14.628,5.581 14.579,5.666C14.531,5.75 14.464,5.823 14.384,5.879C14.24,5.966 14.07,6 13.904,5.976C13.737,5.952 13.585,5.87 13.472,5.745C13.335,5.604 13.171,5.491 12.989,5.414C12.808,5.338 12.613,5.298 12.416,5.297C12,5.299 11.602,5.463 11.304,5.753L10.247,6.811C10.007,7.052 9.832,7.349 9.739,7.676C9.646,8.002 9.637,8.347 9.714,8.678L9.86,9.383C9.994,9.898 10.035,10.432 9.981,10.961C9.965,11.176 9.886,11.383 9.753,11.554C9.621,11.725 9.442,11.853 9.237,11.923C8.896,12.013 8.537,12.004 8.2,11.898C7.864,11.792 7.565,11.593 7.337,11.323L4.404,8.29C4.221,8.108 4.094,7.877 4.039,7.624C3.983,7.372 4.001,7.109 4.09,6.867Z"
android:fillColor="#272727"/>
</group>
</vector>
+8
View File
@@ -0,0 +1,8 @@
<vector android:height="50dp" android:viewportHeight="150"
android:viewportWidth="150" android:width="50dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="#3C95FF" android:pathData="M10,0L140,0A10,10 0,0 1,150 10L150,140A10,10 0,0 1,140 150L10,150A10,10 0,0 1,0 140L0,10A10,10 0,0 1,10 0z"/>
<group>
<clip-path android:pathData="M45,35L105,35A10,10 0,0 1,115 45L115,105A10,10 0,0 1,105 115L45,115A10,10 0,0 1,35 105L35,45A10,10 0,0 1,45 35z"/>
<path android:fillColor="#ffffff" android:pathData="M108.52,52.43L83.94,40.72C78.53,37.49 71.8,37.43 66.33,40.57L41.48,52.43C41.38,52.48 41.29,52.53 41.2,52.58C35.3,55.96 33.25,63.47 36.62,69.37C37.77,71.37 39.45,73.01 41.48,74.1L48.33,77.37V93.7C48.34,101 53.09,107.46 60.06,109.63C64.92,111.03 69.95,111.72 75,111.67C80.05,111.72 85.08,111.04 89.94,109.64C96.91,107.47 101.66,101.02 101.67,93.72V77.36L108.33,74.17V101.67C108.33,103.51 109.82,105 111.67,105C113.51,105 115,103.51 115,101.67V61.67C115.02,57.75 111.93,54.14 108.52,52.43ZM95,93.72C95,98.08 92.17,101.95 88,103.26C83.77,104.47 79.39,105.05 75,105C70.6,105.05 66.23,104.47 62,103.26C57.83,101.95 55,98.08 55,93.72V80.54L66.06,85.81C68.78,87.43 71.9,88.28 75.07,88.27C78.09,88.29 81.06,87.49 83.66,85.96L95,80.54V93.72ZM105.67,68.08L80.53,80.08C77.02,82.12 72.68,82.07 69.23,79.93L44.63,68.23C41.89,66.75 40.86,63.33 42.34,60.59C42.84,59.66 43.59,58.9 44.51,58.37L69.49,46.44C73,44.4 77.34,44.46 80.79,46.59L105.37,58.3C107.18,59.3 108.31,61.2 108.33,63.27C108.34,65.22 107.33,67.05 105.67,68.08Z"/>
</group>
</vector>
@@ -0,0 +1,8 @@
<vector android:height="50dp" android:viewportHeight="150"
android:viewportWidth="150" android:width="50dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="#3C95FF" android:pathData="M75,75m-75,0a75,75 0,1 1,150 0a75,75 0,1 1,-150 0"/>
<group>
<clip-path android:pathData="M35,35h80v80h-80z"/>
<path android:fillColor="#ffffff" android:pathData="M108.52,52.43L83.94,40.72C78.53,37.49 71.8,37.43 66.33,40.57L41.48,52.43C41.38,52.48 41.29,52.53 41.2,52.58C35.3,55.96 33.25,63.47 36.62,69.37C37.77,71.37 39.45,73.01 41.48,74.1L48.33,77.37V93.7C48.34,101 53.09,107.46 60.06,109.63C64.92,111.03 69.95,111.72 75,111.67C80.05,111.72 85.08,111.04 89.94,109.64C96.91,107.47 101.66,101.02 101.67,93.72V77.36L108.33,74.17V101.67C108.33,103.51 109.82,105 111.67,105C113.51,105 115,103.51 115,101.67V61.67C115.02,57.75 111.93,54.14 108.52,52.43ZM95,93.72C95,98.08 92.17,101.95 88,103.26C83.77,104.47 79.39,105.05 75,105C70.6,105.05 66.23,104.47 62,103.26C57.83,101.95 55,98.08 55,93.72V80.54L66.06,85.81C68.78,87.43 71.9,88.28 75.07,88.27C78.09,88.29 81.06,87.49 83.66,85.96L95,80.54V93.72ZM105.67,68.08L80.53,80.08C77.02,82.12 72.68,82.07 69.23,79.93L44.63,68.23C41.89,66.75 40.86,63.33 42.34,60.59C42.84,59.66 43.59,58.9 44.51,58.37L69.49,46.44C73,44.4 77.34,44.46 80.79,46.59L105.37,58.3C107.18,59.3 108.31,61.2 108.33,63.27C108.34,65.22 107.33,67.05 105.67,68.08Z"/>
</group>
</vector>
+7
View File
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<font-family xmlns:app="http://schemas.android.com/apk/res-auto"
app:fontProviderAuthority="com.google.android.gms.fonts"
app:fontProviderPackage="com.google.android.gms"
app:fontProviderQuery="name=Inter&amp;weight=700"
app:fontProviderCerts="@array/com_google_android_gms_fonts_certs">
</font-family>
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@drawable/ic_launcher_background" />
<foreground android:drawable="@drawable/ic_launcher_foreground" />
</adaptive-icon>
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@drawable/ic_launcher_background" />
<foreground android:drawable="@drawable/ic_launcher_foreground" />
</adaptive-icon>
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 982 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">MyDnevnik</string>
<string name="title_header">Welcome to MyDnevnik</string>
<string name="title_marks">Marks</string>
<string name="title_schedule">Schedule</string>
<string name="title_hw">Home work</string>
<string name="title_settings">Settings</string>
<string name="title_leave_from_acconut">Leave</string>
<string name="title_welcome">Welcome</string>
<string name="title_login">Username/password</string>
<string name="title_password">Password</string>
<string name="title_forget_password">Forgot your password?</string>
<string name="title_remember_me">Remember me</string>
<string name="title_sign_in">Sign in</string>
<string name="title_sign_up">Sign up</string>
</resources>
+10
View File
@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="purple_200">#FFBB86FC</color>
<color name="purple_500">#FF6200EE</color>
<color name="purple_700">#FF3700B3</color>
<color name="teal_200">#FF03DAC5</color>
<color name="teal_700">#FF018786</color>
<color name="black">#FF000000</color>
<color name="white">#FFFFFFFF</color>
</resources>
+17
View File
@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<array name="com_google_android_gms_fonts_certs">
<item>@array/com_google_android_gms_fonts_certs_dev</item>
<item>@array/com_google_android_gms_fonts_certs_prod</item>
</array>
<string-array name="com_google_android_gms_fonts_certs_dev">
<item>
MIIEqDCCA5CgAwIBAgIJANWFuGx90071MA0GCSqGSIb3DQEBBAUAMIGUMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEQMA4GA1UEChMHQW5kcm9pZDEQMA4GA1UECxMHQW5kcm9pZDEQMA4GA1UEAxMHQW5kcm9pZDEiMCAGCSqGSIb3DQEJARYTYW5kcm9pZEBhbmRyb2lkLmNvbTAeFw0wODA0MTUyMzM2NTZaFw0zNTA5MDEyMzM2NTZaMIGUMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEQMA4GA1UEChMHQW5kcm9pZDEQMA4GA1UECxMHQW5kcm9pZDEQMA4GA1UEAxMHQW5kcm9pZDEiMCAGCSqGSIb3DQEJARYTYW5kcm9pZEBhbmRyb2lkLmNvbTCCASAwDQYJKoZIhvcNAQEBBQADggENADCCAQgCggEBANbOLggKv+IxTdGNs8/TGFy0PTP6DHThvbbR24kT9ixcOd9W+EaBPWW+wPPKQmsHxajtWjmQwWfna8mZuSeJS48LIgAZlKkpFeVyxW0qMBujb8X8ETrWy550NaFtI6t9+u7hZeTfHwqNvacKhp1RbE6dBRGWynwMVX8XW8N1+UjFaq6GCJukT4qmpN2afb8sCjUigq0GuMwYXrFVee74bQgLHWGJwPmvmLHC69EH6kWr22ijx4OKXlSIx2xT1AsSHee70w5iDBiK4aph27yH3TxkXy9V89TDdexAcKk/cVHYNnDBapcavl7y0RiQ4biu8ymM8Ga/nmzhRKya6G0cGw8CAQOjgfwwgfkwHQYDVR0OBBYEFI0cxb6VTEM8YYY6FbBMvAPyT+CyMIHJBgNVHSMEgcEwgb6AFI0cxb6VTEM8YYY6FbBMvAPyT+CyoYGapIGXMIGUMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEQMA4GA1UEChMHQW5kcm9pZDEQMA4GA1UECxMHQW5kcm9pZDEQMA4GA1UEAxMHQW5kcm9pZDEiMCAGCSqGSIb3DQEJARYTYW5kcm9pZEBhbmRyb2lkLmNvbYIJANWFuGx90071MAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEEBQADggEBABnTDPEF+3iSP0wNfdIjIz1AlnrPzgAIHVvXxunW7SBrDhEglQZBbKJEk5kT0mtKoOD1JMrSu1xuTKEBahWRbqHsXclaXjoBADb0kkjVEJu/Lh5hgYZnOjvlba8Ld7HCKePCVePoTJBdI4fvugnL8TsgK05aIskyY0hKI9L8KfqfGTl1lzOv2KoWD0KWwtAWPoGChZxmQ+nBli+gwYMzM1vAkP+aayLe0a1EQimlOalO762r0GXO0ks+UeXde2Z4e+8S/pf7pITEI/tP+MxJTALw9QUWEv9lKTk+jkbqxbsh8nfBUapfKqYn0eidpwq2AzVp3juYl7//fKnaPhJD9gs=
</item>
</string-array>
<string-array name="com_google_android_gms_fonts_certs_prod">
<item>
MIIEQzCCAyugAwIBAgIJAMLgh0ZkSjCNMA0GCSqGSIb3DQEBBAUAMHQxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MRQwEgYDVQQKEwtHb29nbGUgSW5jLjEQMA4GA1UECxMHQW5kcm9pZDEQMA4GA1UEAxMHQW5kcm9pZDAeFw0wODA4MjEyMzEzMzRaFw0zNjAxMDcyMzEzMzRaMHQxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpDYWxpZm9ybmlhMRYwFAYDVQQHEw1Nb3VudGFpbiBWaWV3MRQwEgYDVQQKEwtHb29nbGUgSW5jLjEQMA4GA1UECxMHQW5kcm9pZDEQMA4GA1UEAxMHQW5kcm9pZDCCASAwDQYJKoZIhvcNAQEBBQADggENADCCAQgCggEBAKtWLgDYO6IIrgqWbxJOKdoR8qtW0I9Y4sypEwPpt1TTcvZApxsdyxMJZ2JORland2qSGT2y5b+3JKkedxiLDmpHpDsz2WCbdxgxRczfey5YZnTJ4VZbH0xqWVW/8lGmPav5xVwnIiJS6HXk+BVKZF+JcWjAsb/GEuq/eFdpuzSqeYTcfi6idkyugwfYwXFU1+5fZKUaRKYCwkkFQVfcAs1fXA5V+++FGfvjJ/CxURaSxaBvGdGDhfXE28LWuT9ozCl5xw4Yq5OGazvV24mZVSoOO0yZ31j7kYvtwYK6NeADwbSxDdJEqO4k//0zOHKrUiGYXtqw/A0LFFtqoZKFjnkCAQOjgdkwgdYwHQYDVR0OBBYEFMd9jMIhF1Ylmn/Tgt9r45jk14alMIGmBgNVHSMEgZ4wgZuAFMd9jMIhF1Ylmn/Tgt9r45jk14aloXikdjB0MQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzEUMBIGA1UEChMLR29vZ2xlIEluYy4xEDAOBgNVBAsTB0FuZHJvaWQxEDAOBgNVBAMTB0FuZHJvaWSCCQDC4IdGZEowjTAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBBAUAA4IBAQBt0lLO74UwLDYKqs6Tm8/yzKkEu116FmH4rkaymUIE0P9KaMftGlMexFlaYjzmB2OxZyl6euNXEsQH8gjwyxCUKRJNexBiGcCEyj6z+a1fuHHvkiaai+KL8W1EyNmgjmyy8AW7P+LLlkR+ho5zEHatRbM/YAnqGcFh5iZBqpknHf1SKMXFh4dd239FJ1jWYfbMDMy3NS5CTMQ2XFI1MvcyUTdZPErjQfTbQe3aDQsQcafEQPD+nqActifKZ0Np0IS9L9kR/wbNvyz6ENwPiTrjV2KRkEjH78ZMcUQXg0L3BYHJ3lc69Vs5Ddf9uUGGMYldX3WfMBEmh/9iFBDAaTCK
</item>
</string-array>
</resources>
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<array name="preloaded_fonts" translatable="false">
<item>@font/inter_bold</item>
</array>
</resources>
+16
View File
@@ -0,0 +1,16 @@
<resources>
<string name="app_name">MyDnevnik</string>
<string name="title_header">Добро пожаловать в дневник</string>
<string name="title_marks">Оценки</string>
<string name="title_schedule">Расписание</string>
<string name="title_hw">Домашнее занадние</string>
<string name="title_settings">Настройки</string>
<string name="title_leave_from_acconut">Выйти из аккаунта</string>
<string name="title_welcome">Добро пожаловать в дневник</string>
<string name="title_login">Логин</string>
<string name="title_password">Пароль</string>
<string name="title_forget_password">Забыли пароль?</string>
<string name="title_remember_me">Запомнить меня</string>
<string name="title_sign_in">Войти</string>
<string name="title_sign_up">Нет аккаунта? Расскажем как его зарегистрировать и подключить к школе</string>
</resources>
+7
View File
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="Theme.MyDnevnik" parent="android:Theme.Material.Light.NoActionBar">
<item name="android:statusBarColor">@color/purple_700</item>
</style>
</resources>
+13
View File
@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?><!--
Sample backup rules file; uncomment and customize as necessary.
See https://developer.android.com/guide/topics/data/autobackup
for details.
Note: This file is ignored for devices older that API 31
See https://developer.android.com/about/versions/12/backup-restore
-->
<full-backup-content>
<!--
<include domain="sharedpref" path="."/>
<exclude domain="sharedpref" path="device.xml"/>
-->
</full-backup-content>
@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="utf-8"?><!--
Sample data extraction rules file; uncomment and customize as necessary.
See https://developer.android.com/about/versions/12/backup-restore#xml-changes
for details.
-->
<data-extraction-rules>
<cloud-backup>
<!-- TODO: Use <include> and <exclude> to control what is backed up.
<include .../>
<exclude .../>
-->
</cloud-backup>
<!--
<device-transfer>
<include .../>
<exclude .../>
</device-transfer>
-->
</data-extraction-rules>
@@ -0,0 +1,17 @@
package ru.megboyzz.dnevnik
import org.junit.Test
import org.junit.Assert.*
/**
* Example local unit test, which will execute on the development machine (host).
*
* See [testing documentation](http://d.android.com/tools/testing).
*/
class ExampleUnitTest {
@Test
fun addition_isCorrect() {
assertEquals(4, 2 + 2)
}
}
+14
View File
@@ -0,0 +1,14 @@
buildscript {
ext {
compose_version = '1.1.0'
}
}// Top-level build file where you can add configuration options common to all sub-projects/modules.
plugins {
id 'com.android.application' version '7.2.1' apply false
id 'com.android.library' version '7.2.1' apply false
id 'org.jetbrains.kotlin.android' version '1.6.10' apply false
}
task clean(type: Delete) {
delete rootProject.buildDir
}
+23
View File
@@ -0,0 +1,23 @@
# Project-wide Gradle settings.
# IDE (e.g. Android Studio) users:
# Gradle settings configured through the IDE *will override*
# any settings specified in this file.
# For more details on how to configure your build environment visit
# http://www.gradle.org/docs/current/userguide/build_environment.html
# Specifies the JVM arguments used for the daemon process.
# The setting is particularly useful for tweaking memory settings.
org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8
# When configured, Gradle will run in incubating parallel mode.
# This option should only be used with decoupled projects. More details, visit
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
# org.gradle.parallel=true
# AndroidX package structure to make it clearer which packages are bundled with the
# Android operating system, and which are packaged with your app"s APK
# https://developer.android.com/topic/libraries/support-library/androidx-rn
android.useAndroidX=true
# Kotlin code style for this project: "official" or "obsolete":
kotlin.code.style=official
# Enables namespacing of each library's R class so that its R class includes only the
# resources declared in the library itself and none from the library's dependencies,
# thereby reducing the size of the R class for that library
android.nonTransitiveRClass=true
Binary file not shown.
+6
View File
@@ -0,0 +1,6 @@
#Mon Sep 26 23:09:42 MSK 2022
distributionBase=GRADLE_USER_HOME
distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.3-bin.zip
distributionPath=wrapper/dists
zipStorePath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
Vendored
+185
View File
@@ -0,0 +1,185 @@
#!/usr/bin/env sh
#
# Copyright 2015 the original author or authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
##############################################################################
##
## Gradle start up script for UN*X
##
##############################################################################
# Attempt to set APP_HOME
# Resolve links: $0 may be a link
PRG="$0"
# Need this for relative symlinks.
while [ -h "$PRG" ] ; do
ls=`ls -ld "$PRG"`
link=`expr "$ls" : '.*-> \(.*\)$'`
if expr "$link" : '/.*' > /dev/null; then
PRG="$link"
else
PRG=`dirname "$PRG"`"/$link"
fi
done
SAVED="`pwd`"
cd "`dirname \"$PRG\"`/" >/dev/null
APP_HOME="`pwd -P`"
cd "$SAVED" >/dev/null
APP_NAME="Gradle"
APP_BASE_NAME=`basename "$0"`
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD="maximum"
warn () {
echo "$*"
}
die () {
echo
echo "$*"
echo
exit 1
}
# OS specific support (must be 'true' or 'false').
cygwin=false
msys=false
darwin=false
nonstop=false
case "`uname`" in
CYGWIN* )
cygwin=true
;;
Darwin* )
darwin=true
;;
MINGW* )
msys=true
;;
NONSTOP* )
nonstop=true
;;
esac
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
# Determine the Java command to use to start the JVM.
if [ -n "$JAVA_HOME" ] ; then
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
# IBM's JDK on AIX uses strange locations for the executables
JAVACMD="$JAVA_HOME/jre/sh/java"
else
JAVACMD="$JAVA_HOME/bin/java"
fi
if [ ! -x "$JAVACMD" ] ; then
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
else
JAVACMD="java"
which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
# Increase the maximum file descriptors if we can.
if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
MAX_FD_LIMIT=`ulimit -H -n`
if [ $? -eq 0 ] ; then
if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
MAX_FD="$MAX_FD_LIMIT"
fi
ulimit -n $MAX_FD
if [ $? -ne 0 ] ; then
warn "Could not set maximum file descriptor limit: $MAX_FD"
fi
else
warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
fi
fi
# For Darwin, add options to specify how the application appears in the dock
if $darwin; then
GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
fi
# For Cygwin or MSYS, switch paths to Windows format before running java
if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
APP_HOME=`cygpath --path --mixed "$APP_HOME"`
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
JAVACMD=`cygpath --unix "$JAVACMD"`
# We build the pattern for arguments to be converted via cygpath
ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
SEP=""
for dir in $ROOTDIRSRAW ; do
ROOTDIRS="$ROOTDIRS$SEP$dir"
SEP="|"
done
OURCYGPATTERN="(^($ROOTDIRS))"
# Add a user-defined pattern to the cygpath arguments
if [ "$GRADLE_CYGPATTERN" != "" ] ; then
OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
fi
# Now convert the arguments - kludge to limit ourselves to /bin/sh
i=0
for arg in "$@" ; do
CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
else
eval `echo args$i`="\"$arg\""
fi
i=`expr $i + 1`
done
case $i in
0) set -- ;;
1) set -- "$args0" ;;
2) set -- "$args0" "$args1" ;;
3) set -- "$args0" "$args1" "$args2" ;;
4) set -- "$args0" "$args1" "$args2" "$args3" ;;
5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
esac
fi
# Escape application args
save () {
for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
echo " "
}
APP_ARGS=`save "$@"`
# Collect all arguments for the java command, following the shell quoting and substitution rules
eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
exec "$JAVACMD" "$@"
Vendored
+89
View File
@@ -0,0 +1,89 @@
@rem
@rem Copyright 2015 the original author or authors.
@rem
@rem Licensed under the Apache License, Version 2.0 (the "License");
@rem you may not use this file except in compliance with the License.
@rem You may obtain a copy of the License at
@rem
@rem https://www.apache.org/licenses/LICENSE-2.0
@rem
@rem Unless required by applicable law or agreed to in writing, software
@rem distributed under the License is distributed on an "AS IS" BASIS,
@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@rem See the License for the specific language governing permissions and
@rem limitations under the License.
@rem
@if "%DEBUG%" == "" @echo off
@rem ##########################################################################
@rem
@rem Gradle startup script for Windows
@rem
@rem ##########################################################################
@rem Set local scope for the variables with windows NT shell
if "%OS%"=="Windows_NT" setlocal
set DIRNAME=%~dp0
if "%DIRNAME%" == "" set DIRNAME=.
set APP_BASE_NAME=%~n0
set APP_HOME=%DIRNAME%
@rem Resolve any "." and ".." in APP_HOME to make it shorter.
for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
@rem Find java.exe
if defined JAVA_HOME goto findJavaFromJavaHome
set JAVA_EXE=java.exe
%JAVA_EXE% -version >NUL 2>&1
if "%ERRORLEVEL%" == "0" goto execute
echo.
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.
goto fail
:findJavaFromJavaHome
set JAVA_HOME=%JAVA_HOME:"=%
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
if exist "%JAVA_EXE%" goto execute
echo.
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.
goto fail
:execute
@rem Setup the command line
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
@rem Execute Gradle
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
:end
@rem End local scope for the variables with windows NT shell
if "%ERRORLEVEL%"=="0" goto mainEnd
:fail
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
rem the _cmd.exe /c_ return code!
if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
exit /b 1
:mainEnd
if "%OS%"=="Windows_NT" endlocal
:omega
+16
View File
@@ -0,0 +1,16 @@
pluginManagement {
repositories {
gradlePluginPortal()
google()
mavenCentral()
}
}
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
google()
mavenCentral()
}
}
rootProject.name = "MyDnevnik"
include ':app'