diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml
new file mode 100644
index 0000000..7643783
--- /dev/null
+++ b/.idea/codeStyles/Project.xml
@@ -0,0 +1,123 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ xmlns:android
+
+ ^$
+
+
+
+
+
+
+
+
+ xmlns:.*
+
+ ^$
+
+
+ BY_NAME
+
+
+
+
+
+
+ .*:id
+
+ http://schemas.android.com/apk/res/android
+
+
+
+
+
+
+
+
+ .*:name
+
+ http://schemas.android.com/apk/res/android
+
+
+
+
+
+
+
+
+ name
+
+ ^$
+
+
+
+
+
+
+
+
+ style
+
+ ^$
+
+
+
+
+
+
+
+
+ .*
+
+ ^$
+
+
+ BY_NAME
+
+
+
+
+
+
+ .*
+
+ http://schemas.android.com/apk/res/android
+
+
+ ANDROID_ATTRIBUTE_ORDER
+
+
+
+
+
+
+ .*
+
+ .*
+
+
+ BY_NAME
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/codeStyles/codeStyleConfig.xml b/.idea/codeStyles/codeStyleConfig.xml
new file mode 100644
index 0000000..79ee123
--- /dev/null
+++ b/.idea/codeStyles/codeStyleConfig.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/compiler.xml b/.idea/compiler.xml
index fb7f4a8..b589d56 100644
--- a/.idea/compiler.xml
+++ b/.idea/compiler.xml
@@ -1,6 +1,6 @@
-
+
\ No newline at end of file
diff --git a/.idea/gradle.xml b/.idea/gradle.xml
index 8f684dc..de2c1e8 100644
--- a/.idea/gradle.xml
+++ b/.idea/gradle.xml
@@ -17,5 +17,6 @@
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
index 54d5acd..773fe0f 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -1,7 +1,6 @@
-
-
+
diff --git a/app/build.gradle b/app/build.gradle
index ff07d54..6d5baed 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -40,7 +40,12 @@ android {
dependencies {
implementation 'androidx.room:room-ktx:2.5.2'
implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.6.1'
+ implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.1'
+
kapt 'androidx.room:room-compiler:2.5.2'
+ implementation 'androidx.fragment:fragment-ktx:1.5.5'
+
+
implementation 'androidx.core:core-ktx:1.7.0'
implementation 'androidx.appcompat:appcompat:1.6.1'
implementation 'com.google.android.material:material:1.9.0'
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 0ff8b48..f590832 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -8,16 +8,27 @@
android:fullBackupContent="@xml/backup_rules"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
+ android:requestLegacyExternalStorage="true"
android:roundIcon="@mipmap/ic_launcher_logo_rehabilitation"
android:supportsRtl="true"
android:theme="@style/Theme.Rehabilitation"
tools:targetApi="31">
+
+
+
+ android:exported="true"
+ android:windowSoftInputMode="adjustPan|stateAlwaysHidden">
diff --git a/app/src/main/java/com/example/rehabilitation/Admin/activityAdmin/FeedbackActivity.kt b/app/src/main/java/com/example/rehabilitation/Admin/activityAdmin/FeedbackActivity.kt
new file mode 100644
index 0000000..ea8a4fa
--- /dev/null
+++ b/app/src/main/java/com/example/rehabilitation/Admin/activityAdmin/FeedbackActivity.kt
@@ -0,0 +1,22 @@
+package com.example.rehabilitation.Admin.activityAdmin
+
+import androidx.appcompat.app.AppCompatActivity
+import android.os.Bundle
+import com.example.rehabilitation.R
+import com.example.rehabilitation.databinding.ActivityFeedbackBinding
+import com.example.rehabilitation.databinding.FragmentFeedbackBinding
+
+class FeedbackActivity : AppCompatActivity() {
+ private lateinit var binding: ActivityFeedbackBinding
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ binding = ActivityFeedbackBinding.inflate(layoutInflater)
+ setContentView(binding.root)
+
+ //Выход
+ binding.btnExit.setOnClickListener{
+ finish()
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/rehabilitation/Admin/activityAdmin/StatisticsActivity.kt b/app/src/main/java/com/example/rehabilitation/Admin/activityAdmin/StatisticsActivity.kt
new file mode 100644
index 0000000..0eb43f7
--- /dev/null
+++ b/app/src/main/java/com/example/rehabilitation/Admin/activityAdmin/StatisticsActivity.kt
@@ -0,0 +1,21 @@
+package com.example.rehabilitation.Admin.activityAdmin
+
+import androidx.appcompat.app.AppCompatActivity
+import android.os.Bundle
+import com.example.rehabilitation.R
+import com.example.rehabilitation.databinding.ActivityFeedbackBinding
+import com.example.rehabilitation.databinding.FragmentStatisticsBinding
+
+class StatisticsActivity : AppCompatActivity() {
+ private lateinit var binding: ActivityFeedbackBinding
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ binding = ActivityFeedbackBinding.inflate(layoutInflater)
+ setContentView(binding.root)
+
+ //Выход
+ binding.btnExit.setOnClickListener{
+ finish()
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/rehabilitation/Admin/activityAdmin/UserSettingActivity.kt b/app/src/main/java/com/example/rehabilitation/Admin/activityAdmin/UserSettingActivity.kt
new file mode 100644
index 0000000..2919917
--- /dev/null
+++ b/app/src/main/java/com/example/rehabilitation/Admin/activityAdmin/UserSettingActivity.kt
@@ -0,0 +1,718 @@
+package com.example.rehabilitation.Admin.activityAdmin
+
+import androidx.appcompat.app.AppCompatActivity
+import android.os.Bundle
+import android.view.View
+import androidx.activity.viewModels
+import androidx.lifecycle.asLiveData
+import com.example.rehabilitation.R
+import com.example.rehabilitation.databinding.ActivityUserSettingBinding
+import com.example.rehabilitation.db.Item
+import com.example.rehabilitation.db.ItemDaySport
+import com.example.rehabilitation.db.ItemImage
+import com.example.rehabilitation.db.ItemSportCategory
+import com.example.rehabilitation.db.MainDB
+import com.example.rehabilitation.dip.Day.DayAdapter
+import com.example.rehabilitation.dip.Day.DayModel
+import com.example.sqlitework.dip.MainViewModel
+import com.example.rehabilitation.dip.Month.MonthModel
+import com.example.rehabilitation.dip.Month.MonthAdapter
+import java.time.LocalDate
+
+class UserSettingActivity : AppCompatActivity(), MonthAdapter.Listener,DayAdapter.Listener {
+ private lateinit var binding: ActivityUserSettingBinding
+ private val model: MainViewModel by viewModels()//Инициализировали класс
+ lateinit var adapterMonth: MonthAdapter
+ lateinit var adapterDay: DayAdapter
+
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ binding = ActivityUserSettingBinding.inflate(layoutInflater)
+ setContentView(binding.root)
+// initRcView()
+// initRcViewDay()
+// model.liveListList.observe(lifeCy) {//viewLifecycleOwner - следит за циклом жизни fragment
+// adapterMonth.submitList(it)//Напрямую переадем созданный список в adapter(ProductAdapter)
+// }
+//
+// model.liveDayList.observe(viewLifecycleOwner) {//viewLifecycleOwner - следит за циклом жизни fragment
+// adapterDay.submitList(it)//Напрямую переадем созданный список в adapter(ProductAdapter)
+// }
+
+ //Выход
+ binding.btnExit.setOnClickListener{
+ finish()
+ }
+
+ //Выход из добавленеия
+ binding.btnExitAdd.setOnClickListener{
+ binding.CLAdd.visibility = View.GONE
+ binding.CLCreateDeleteUser.visibility = View.VISIBLE
+ }
+
+ //Выход из добавленеия
+ binding.btnCreate.setOnClickListener{
+ binding.CLAdd.visibility = View.VISIBLE
+ binding.CLCreateDeleteUser.visibility = View.GONE
+ }
+
+ binding.cvClearDayUser.setOnClickListener{
+ val db = MainDB.getDB(this)
+ Thread {
+ db.getDaoDaySport().deleteItemDaySport()
+ db.getDao().deleteItem()
+ }.start()
+ }
+
+ //addListModelCards()
+
+ //addDayModelCards()
+
+
+ binding.btnImage.setOnClickListener{
+ createImageBD()
+ }
+
+ binding.btnCategorySport.setOnClickListener {
+ createSportCategory()
+ }
+
+ binding.btnCardC.setOnClickListener {
+ val db = MainDB.getDB(this)
+ for(i in 1..30){
+ val item = Item(null,
+ getDateTomorrow(i, "c"),//"11/11/2023",
+ i.toString(),
+ 0
+ )
+ Thread {
+ db.getDao().insertItem(item)
+ }.start()
+ }
+ }
+ binding.btnCardB.setOnClickListener {
+ val db = MainDB.getDB(this)
+ for(i in 1..30){
+ val item = Item(null,
+ getDateTomorrow(i, "b"),//"11/11/2023",
+ i.toString(),
+ 0
+ )
+ Thread {
+ db.getDao().insertItem(item)
+ }.start()
+ }
+ }
+ binding.btnCardJ.setOnClickListener {
+ val db = MainDB.getDB(this)
+ for(i in 1..30){
+ val item = Item(null,
+ getDateTomorrow(i, "j"),//"11/11/2023",
+ i.toString(),
+ 0
+ )
+ Thread {
+ db.getDao().insertItem(item)
+ }.start()
+ }
+ }
+
+ }
+
+ private fun createImageBD() {
+ val db = MainDB.getDB(this)
+
+ val itemС1_1 = ItemImage(null, "${R.drawable.c1_1}", "c1","c")
+ val itemС1_2 = ItemImage(null, "${R.drawable.c1_2}", "c1","c")
+ val itemС2_1 = ItemImage(null, "${R.drawable.c2_1}", "c2","c")
+ val itemС2_2 = ItemImage(null, "${R.drawable.c2_2}", "c2","c")
+ val itemС3_1 = ItemImage(null, "${R.drawable.c3_1}", "c3","c")
+ val itemС3_2 = ItemImage(null, "${R.drawable.c3_2}", "c3","c")
+ val itemС4_1 = ItemImage(null, "${R.drawable.c4_1}", "c4","c")
+ val itemС4_2 = ItemImage(null, "${R.drawable.c4_1}", "c4","c")
+ val itemС5_1 = ItemImage(null, "${R.drawable.c5_1}", "c5","c")
+ val itemС5_2 = ItemImage(null, "${R.drawable.c5_2}", "c5","c")
+ val itemС6_1 = ItemImage(null, "${R.drawable.c6_1}", "c6","c")
+ val itemС6_2 = ItemImage(null, "${R.drawable.c6_2}", "c6","c")
+ val itemС6_3 = ItemImage(null, "${R.drawable.c6_3}", "c6","c")
+ val itemС7_1 = ItemImage(null, "${R.drawable.c7_1}", "c7","c")
+ val itemС8_1 = ItemImage(null, "${R.drawable.c8_1}", "c8","c")
+ val itemС8_2 = ItemImage(null, "${R.drawable.c8_2}", "c8","c")
+ val itemС9_1 = ItemImage(null, "${R.drawable.c9_1}", "c9","c")
+ val itemС9_2 = ItemImage(null, "${R.drawable.c9_2}", "c9","c")
+ val itemС9_3 = ItemImage(null, "${R.drawable.c9_3}", "c9","c")
+ val itemС10_1 = ItemImage(null, "${R.drawable.c10_1}", "c10","c")
+ val itemС10_2 = ItemImage(null, "${R.drawable.c10_2}", "c10","c")
+ val itemС10_3 = ItemImage(null, "${R.drawable.c10_3}", "c10","c")
+ val itemС11_1 = ItemImage(null, "${R.drawable.c11_1}", "c11","c")
+ val itemС12_1 = ItemImage(null, "${R.drawable.c12_1}", "c12","c")
+ val itemС12_2 = ItemImage(null, "${R.drawable.c12_2}", "c12","c")
+ val itemС13_1 = ItemImage(null, "${R.drawable.c13_1}", "c13","c")
+ val itemС13_2 = ItemImage(null, "${R.drawable.c13_2}", "c13","c")
+ val itemС14_1 = ItemImage(null, "${R.drawable.c14_1}", "c14","c")
+ val itemС14_2 = ItemImage(null, "${R.drawable.c14_2}", "c14","c")
+ val itemС15_1 = ItemImage(null, "${R.drawable.c15_1}", "c15","c")
+ val itemС15_2 = ItemImage(null, "${R.drawable.c15_2}", "c15","c")
+ val itemС16_1 = ItemImage(null, "${R.drawable.c16_1}", "c16","c")
+ val itemС16_2 = ItemImage(null, "${R.drawable.c16_2}", "c16","c")
+ val itemС17_1 = ItemImage(null, "${R.drawable.c17_1}", "c17","c")
+ val itemС17_2 = ItemImage(null, "${R.drawable.c17_2}", "c17","c")
+ val itemС18_1 = ItemImage(null, "${R.drawable.c18_1}", "c18","c")
+ val itemС18_2 = ItemImage(null, "${R.drawable.c18_2}", "c18","c")
+ val itemС18_3 = ItemImage(null, "${R.drawable.c18_3}", "c18","c")
+
+ val itemB1_1 = ItemImage(null, "${R.drawable.b1_1}", "b1", "b")
+ val itemB1_2 = ItemImage(null, "${R.drawable.b1_2}", "b1", "b")
+ val itemB2_1 = ItemImage(null, "${R.drawable.b2_1}", "b2", "b")
+ val itemB2_2 = ItemImage(null, "${R.drawable.b2_2}", "b2", "b")
+ val itemB3_1 = ItemImage(null, "${R.drawable.b3_1}", "b3", "b")
+ val itemB3_2 = ItemImage(null, "${R.drawable.b3_2}", "b3", "b")
+ val itemB3_3 = ItemImage(null, "${R.drawable.b3_3}", "b3", "b")
+ val itemB4_1 = ItemImage(null, "${R.drawable.b4_1}", "b4", "b")
+ val itemB4_2 = ItemImage(null, "${R.drawable.b4_2}", "b4", "b")
+
+ val itemJ1_1 = ItemImage(null, "${R.drawable.j1_1}", "j1","j")
+ val itemJ1_2 = ItemImage(null, "${R.drawable.j1_2}", "j1","j")
+ val itemJ2_1 = ItemImage(null, "${R.drawable.j2_1}", "j2","j")
+ val itemJ2_2 = ItemImage(null, "${R.drawable.j2_2}", "j2","j")
+ val itemJ3_1 = ItemImage(null, "${R.drawable.j3_1}", "j3","j")
+ val itemJ3_2 = ItemImage(null, "${R.drawable.j3_2}", "j3","j")
+ val itemJ4_1 = ItemImage(null, "${R.drawable.j4_1}", "j4","j")
+ val itemJ4_2 = ItemImage(null, "${R.drawable.j4_2}", "j4","j")
+ val itemJ4_3 = ItemImage(null, "${R.drawable.j4_3}", "j4","j")
+ val itemJ5_1 = ItemImage(null, "${R.drawable.j5_1}", "j5","j")
+ val itemJ6_1 = ItemImage(null, "${R.drawable.j6_1}", "j6","j")
+ val itemJ6_2 = ItemImage(null, "${R.drawable.j6_2}", "j6","j")
+ val itemJ6_3 = ItemImage(null, "${R.drawable.j6_3}", "j6","j")
+ val itemJ6_4 = ItemImage(null, "${R.drawable.j6_4}", "j6","j")
+ val itemJ7_1 = ItemImage(null, "${R.drawable.j7_1}", "j7","j")
+ val itemJ7_2 = ItemImage(null, "${R.drawable.j7_2}", "j7","j")
+ val itemJ7_3 = ItemImage(null, "${R.drawable.j7_3}", "j7","j")
+ val itemJ7_4 = ItemImage(null, "${R.drawable.j7_4}", "j7","j")
+ val itemJ7_5 = ItemImage(null, "${R.drawable.j7_5}", "j7","j")
+ val itemJ7_6 = ItemImage(null, "${R.drawable.j7_6}", "j7","j")
+ val itemJ7_7 = ItemImage(null, "${R.drawable.j7_7}", "j7","j")
+ val itemJ8_1 = ItemImage(null, "${R.drawable.j8_1}", "j8","j")
+ val itemJ8_2 = ItemImage(null, "${R.drawable.j8_2}", "j8","j")
+ val itemJ8_3 = ItemImage(null, "${R.drawable.j8_3}", "j8","j")
+ val itemJ9_1 = ItemImage(null, "${R.drawable.j9_1}", "j9","j")
+ val itemJ10_1 = ItemImage(null, "${R.drawable.j10_1}", "j10","j")
+ val itemJ10_2 = ItemImage(null, "${R.drawable.j10_2}", "j10","j")
+ val itemJ10_3 = ItemImage(null, "${R.drawable.j10_2}", "j10","j")
+ val itemJ11_1 = ItemImage(null, "${R.drawable.j11_1}", "j11","j")
+ val itemJ11_2 = ItemImage(null, "${R.drawable.j11_2}", "j11","j")
+ val itemJ11_3 = ItemImage(null, "${R.drawable.j11_3}", "j11","j")
+ val itemJ11_4 = ItemImage(null, "${R.drawable.j11_4}", "j11","j")
+ val itemJ12_1 = ItemImage(null, "${R.drawable.j12_1}", "j12","j")
+ val itemJ12_2 = ItemImage(null, "${R.drawable.j12_2}", "j12","j")
+
+ Thread {
+ db.getDaoImage().insertItemImage(itemС1_1)
+ db.getDaoImage().insertItemImage(itemС1_2)
+ db.getDaoImage().insertItemImage(itemС2_1)
+ db.getDaoImage().insertItemImage(itemС2_2)
+ db.getDaoImage().insertItemImage(itemС3_1)
+ db.getDaoImage().insertItemImage(itemС3_2)
+ db.getDaoImage().insertItemImage(itemС4_1)
+ db.getDaoImage().insertItemImage(itemС4_2)
+ db.getDaoImage().insertItemImage(itemС5_1)
+ db.getDaoImage().insertItemImage(itemС5_2)
+ db.getDaoImage().insertItemImage(itemС6_1)
+ db.getDaoImage().insertItemImage(itemС6_2)
+ db.getDaoImage().insertItemImage(itemС6_3)
+ db.getDaoImage().insertItemImage(itemС7_1)
+ db.getDaoImage().insertItemImage(itemС8_1)
+ db.getDaoImage().insertItemImage(itemС8_2)
+ db.getDaoImage().insertItemImage(itemС9_1)
+ db.getDaoImage().insertItemImage(itemС9_2)
+ db.getDaoImage().insertItemImage(itemС9_3)
+ db.getDaoImage().insertItemImage(itemС10_1)
+ db.getDaoImage().insertItemImage(itemС10_2)
+ db.getDaoImage().insertItemImage(itemС10_3)
+ db.getDaoImage().insertItemImage(itemС11_1)
+ db.getDaoImage().insertItemImage(itemС12_1)
+ db.getDaoImage().insertItemImage(itemС12_2)
+ db.getDaoImage().insertItemImage(itemС13_1)
+ db.getDaoImage().insertItemImage(itemС13_2)
+ db.getDaoImage().insertItemImage(itemС14_1)
+ db.getDaoImage().insertItemImage(itemС14_2)
+ db.getDaoImage().insertItemImage(itemС15_1)
+ db.getDaoImage().insertItemImage(itemС15_2)
+ db.getDaoImage().insertItemImage(itemС16_1)
+ db.getDaoImage().insertItemImage(itemС16_2)
+ db.getDaoImage().insertItemImage(itemС17_1)
+ db.getDaoImage().insertItemImage(itemС17_2)
+ db.getDaoImage().insertItemImage(itemС18_1)
+ db.getDaoImage().insertItemImage(itemС18_2)
+ db.getDaoImage().insertItemImage(itemС18_3)
+
+ db.getDaoImage().insertItemImage(itemB1_1)
+ db.getDaoImage().insertItemImage(itemB1_2)
+ db.getDaoImage().insertItemImage(itemB2_1)
+ db.getDaoImage().insertItemImage(itemB2_2)
+ db.getDaoImage().insertItemImage(itemB3_1)
+ db.getDaoImage().insertItemImage(itemB3_2)
+ db.getDaoImage().insertItemImage(itemB3_3)
+ db.getDaoImage().insertItemImage(itemB4_1)
+ db.getDaoImage().insertItemImage(itemB4_2)
+
+ db.getDaoImage().insertItemImage(itemJ1_1)
+ db.getDaoImage().insertItemImage(itemJ1_2)
+ db.getDaoImage().insertItemImage(itemJ2_1)
+ db.getDaoImage().insertItemImage(itemJ2_2)
+ db.getDaoImage().insertItemImage(itemJ3_1)
+ db.getDaoImage().insertItemImage(itemJ3_2)
+ db.getDaoImage().insertItemImage(itemJ4_1)
+ db.getDaoImage().insertItemImage(itemJ4_2)
+ db.getDaoImage().insertItemImage(itemJ4_3)
+ db.getDaoImage().insertItemImage(itemJ5_1)
+ db.getDaoImage().insertItemImage(itemJ6_1)
+ db.getDaoImage().insertItemImage(itemJ6_2)
+ db.getDaoImage().insertItemImage(itemJ6_3)
+ db.getDaoImage().insertItemImage(itemJ6_4)
+ db.getDaoImage().insertItemImage(itemJ7_1)
+ db.getDaoImage().insertItemImage(itemJ7_2)
+ db.getDaoImage().insertItemImage(itemJ7_3)
+ db.getDaoImage().insertItemImage(itemJ7_4)
+ db.getDaoImage().insertItemImage(itemJ7_5)
+ db.getDaoImage().insertItemImage(itemJ7_6)
+ db.getDaoImage().insertItemImage(itemJ7_7)
+ db.getDaoImage().insertItemImage(itemJ8_1)
+ db.getDaoImage().insertItemImage(itemJ8_2)
+ db.getDaoImage().insertItemImage(itemJ8_3)
+ db.getDaoImage().insertItemImage(itemJ9_1)
+ db.getDaoImage().insertItemImage(itemJ10_1)
+ db.getDaoImage().insertItemImage(itemJ10_2)
+ db.getDaoImage().insertItemImage(itemJ10_3)
+ db.getDaoImage().insertItemImage(itemJ11_1)
+ db.getDaoImage().insertItemImage(itemJ11_2)
+ db.getDaoImage().insertItemImage(itemJ11_3)
+ db.getDaoImage().insertItemImage(itemJ11_4)
+ db.getDaoImage().insertItemImage(itemJ12_1)
+ db.getDaoImage().insertItemImage(itemJ12_2)
+
+ }.start()
+
+
+ }
+
+ fun createSportCategory(){
+ getDaySport(1, C1,"c","c1")
+ getDaySport(2, C2,"c","c2")
+ getDaySport(3, C3,"c","c3")
+ getDaySport(4, C4,"c","c4")
+ getDaySport(5, C5,"c","c5")
+ getDaySport(6, C6,"c","c6")
+ getDaySport(7, C7,"c","c7")
+ getDaySport(8, C8,"c","c8")
+ getDaySport(9, C9,"c","c9")
+ getDaySport(10, C10,"c","c10")
+ getDaySport(11, C11,"c","c11")
+ getDaySport(12, C12,"c","c12")
+ getDaySport(13, C13,"c","c13")
+ getDaySport(14, C14,"c","c14")
+ getDaySport(15, C15,"c","c15")
+ getDaySport(16, C16,"c","c16")
+ getDaySport(17, C17,"c","c17")
+ getDaySport(18, C18,"c","c18")
+
+
+ getDaySport(19, B1,"b","b1")
+ getDaySport(20, B2,"b","b2")
+ getDaySport(21, B3,"b","b3")
+ getDaySport(22, B4,"b","b4")
+
+ getDaySport(23, J1,"j","j1" )
+ getDaySport(24, J2,"j","j2" )
+ getDaySport(25, J3,"j","j3" )
+ getDaySport(26, C4,"j","j4" )
+ getDaySport(27, J5,"j","j5" )
+ getDaySport(28, J6,"j","j6" )
+ getDaySport(29, J7,"j","j7" )
+ getDaySport(30, J8,"j","j8" )
+ getDaySport(31, J9,"j","j9" )
+ getDaySport(32, J10,"j","j10" )
+ getDaySport(33, J11,"j","j11" )
+ getDaySport(34, J12,"j","j12" )
+
+ }
+
+
+ //Заполнения модели и списка
+ private fun addListModelCards(){
+ val db = MainDB.getDB(this)
+ val list = ArrayList()
+ db.getDao().getAllItems().asLiveData().observe(this){itList->
+ itList.forEach{
+ //val text = "Id: ${it.id} Name: ${it.name} Proce: ${it.price}"
+ //binding.txtList.append(text)
+ val item = MonthModel(
+ it.id.toString(),
+ it.day.toString(),
+ it.date.toString(),
+ it.check.toString()
+ )
+ //model.liveZakazCurrent.value = item//Передаем в liveDataCurrent один из продуктов, чтобы дальше эти данные использовать и передавать их в пробную ячейку
+ list.add(item)//Передали заполненый список
+ }
+ model.liveListList.value = list
+ }
+
+
+
+
+ binding.btnSaveList.setOnClickListener{
+// for(i in 1..30){
+// val item = Item(null,
+// getDateTomorrow(i, ),//"11/11/2023",
+// 0
+// )
+// Thread {
+// db.getDao().insertItem(item)
+// }.start()
+// }
+ }
+
+
+
+ }
+
+ fun getDaySport(i:Int, description:String, categoryImage:String, categorySport:String): String {
+ val db = MainDB.getDB(this)
+ val tomorrow = LocalDate.now().plusDays(i.toLong())
+ val item = ItemSportCategory(null, i.toString(), description,"3",categoryImage, categorySport)
+ Thread {
+ db.getDaoSportCategory().insertItemSportCategory(item)
+ }.start()
+
+ return tomorrow.toString()
+ }
+
+
+ fun getDateTomorrow(i:Int,categorySport:String): String {
+ val db = MainDB.getDB(this)
+
+ val DATE_PATTERN = "MM/dd/yyyy"
+ val tomorrow = LocalDate.now().plusDays(i.toLong())
+ val item = ItemDaySport(null,
+ tomorrow.toString(),
+ categorySport,
+ 0
+ )
+ Thread {
+ db.getDaoDaySport().insertItemDaySport(item)
+ }.start()
+
+ return tomorrow.toString()
+ }
+ //Заполнения модели и списка
+// private fun addDayModelCards(){
+// val db = MainDB.getDB(this)
+// val list = ArrayList()
+// db.getDaoDaySport().getAllItemDaySport().asLiveData().observe(this){itList->
+// itList.forEach{
+// //val text = "Id: ${it.id} Name: ${it.name} Proce: ${it.price}"
+// //binding.txtList.append(text)
+// val itemDay = DayModel(
+// it.id.toString(),
+// it.day.toString(),
+// it.category.toString(),
+// it.check.toString(),
+// )
+// //model.liveZakazCurrent.value = item//Передаем в liveDataCurrent один из продуктов, чтобы дальше эти данные использовать и передавать их в пробную ячейку
+// list.add(itemDay)//Передали заполненый список
+// }
+// model.liveDayList.value = list
+// }
+//
+// binding.btnSaveDay.setOnClickListener{
+//// val item = ItemDaySport(null,
+//// binding.edName.text.toString(),
+//// binding.edDesc.text.toString(),
+//// binding.edDayCard.text.toString(),
+//// binding.edCount.text.toString(),
+//// binding.edImage.text.toString(),
+//// 0
+//// )
+//// Thread {
+//// db.getDaoDaySport().insertItemDaySport(item)
+//// }.start()
+// }
+// }
+
+
+// //Инициализация списка
+// private fun initRcView() = with(binding) {
+// todoListRecycleView.layoutManager = GridLayoutManager(this@UserSettingActivity,1)//По вертикали будет выводить по умолчанию
+// adapterMonth = MonthAdapter(this@UserSettingActivity)
+// todoListRecycleView.adapter = adapterMonth
+// }
+//
+// //Инициализация списка
+// private fun initRcViewDay() = with(binding) {
+// todoDayListRecycleView.layoutManager = GridLayoutManager(this@UserSettingActivity,1)//По вертикали будет выводить по умолчанию
+// adapterDay = DayAdapter(this@UserSettingActivity)
+// todoDayListRecycleView.adapter = adapterDay
+// }
+
+ override fun onClickDay(item: DayModel) {
+
+ }
+
+ override fun onClickExceptionOrder(item: MonthModel) {
+
+ }
+ //Спина
+ val c1 = arrayOf("c1_1", "c1_2")
+ val c2 = arrayOf("c2_1", "c2_2")
+ val c3 = arrayOf("c3_1", "c3_2")
+ val c4 = arrayOf("c4_1", "c4_2")
+ val c5 = arrayOf("c5_1", "c5_2")
+ val c6 = arrayOf("c6_1", "c6_2","c6_3")
+ val c7 = arrayOf("c7_1")
+ val c8 = arrayOf("c8_1", "c8_2")
+ val c9 = arrayOf("c9_1", "c9_2", "c9_3")
+ val c10 = arrayOf("c10_1", "c10_2", "c10_3")
+ val c11 = arrayOf("c11_1")
+ val c12 = arrayOf("c12_1", "c12_2")
+ val c13 = arrayOf("c13_1", "c13_2")
+ val c14 = arrayOf("c14_1", "c14_2")
+ val c15 = arrayOf("c15_1", "c15_2")
+ val c16 = arrayOf("c16_1", "c16_2")
+ val c17 = arrayOf("c17_1", "c17_2")
+ val c18 = arrayOf("c18_1", "c18_2", "c18_3")
+
+ //Бок
+ val b1 = arrayOf("b1_1", "b1_2")
+ val b2 = arrayOf("b2_1", "b2_2")
+ val b3 = arrayOf("b3_1", "b3_2", "b3_3")
+ val b4 = arrayOf("b4_1", "b4_2")
+
+ //Живот
+ val j1 = arrayOf("j1_1", "j1_2")
+ val j2 = arrayOf("j2_1", "j2_2")
+ val j3 = arrayOf("j3_1", "j3_2")
+ val j4 = arrayOf("j4_1", "j4_2", "j4_3")
+ val j5 = arrayOf("j5_1")
+ val j6 = arrayOf("j6_1", "j6_2", "j6_3", "j6_4")
+ val j7 = arrayOf("j7_1", "j7_2", "j7_3", "j7_4", "j7_5", "j7_6", "j7_7")
+ val j8 = arrayOf("j8_1", "j8_2", "j8_3")
+ val j9 = arrayOf("j9_1")
+ val j10 = arrayOf("j10_1", "j10_2", "j10_3")
+ val j11 = arrayOf("j11_1", "j11_2", "j11_3", "j11_4")
+ val j12 = arrayOf("j12_1", "j12_2")
+
+ val C1 = "Исходное положение, положить руки вверх.\n" +
+ "Счет \n" +
+ "1-2-3 - потянуться руками вверх, а пятками — в противоположную сторону;\n" +
+ "4 – Расслабиться\n" +
+ "Повторить 5—6 раз. Дыхание свободное.\n"
+ val C2 = "Исходное положение, руки лежат под головой или направлены вниз, вдоль туловища.\n" +
+ "Счет\n" +
+ "1 - поднять одну прямую ногу на 45°;\n" +
+ "2-3 - удерживать ее;\n" +
+ "4 - опустить в исходное положение.\n" +
+ "То же повторить с другой ноги. С каждой ноги повторить по 4—б раз. Дыхание свободное.\n"
+ val C3 = "Исходное положение, руки лежат вверху.\n" +
+ "Счет\n" +
+ "1 - поднять вперед прямые правую руку и левую ногу; \n" +
+ "2- опустить их в исходное положение;\n" +
+ "3 - поднять вперед левую руку и правую ногу;\n" +
+ "4 - вернуться в исходное положение.\n" +
+ "Повторить 4-6 раз с каждой стороны, опустить их в исходное положение;\n"
+ val C4 = "Исходное положение, руки лежат под головой или направлены вниз, вдоль туловища.\n" +
+ "Счет\n" +
+ "1 – напрячь оба бедра, как при выпрямлении колена;\n" +
+ "2-3 – удерживать в напряжении;\n" +
+ "4 - расслабиться.\n" +
+ "Повторить 6-10 раз. Дыхание произвольное. При ампутации на уровне голени можно подложить под нижнюю треть бедра валик, если есть сгибательная контрактура колена, или если пациент так лучше ощущает работу мышц.\n"
+ val C5 = "Исходное положение, руки лежат вниз вдоль туловища, под культю и под аналогичный сегмент сохранной конечности подложить мячи. \n" +
+ "Счет\n" +
+ "1 — опереться на ноги, поднять таз вверх;\n" +
+ "2-3 — удерживать это положение;\n" +
+ "4 — опуститься в исходное положение. \n" +
+ "Повторить 4-8 раз. Дыхание произвольное, или подъем таза осуществлять на выдохе через рот, губы сложены «трубочкой».\n"
+ val C6 = "Исходное положение, руки лежат вниз вдоль туловища, под культю и под аналогичный сегмент сохранной конечности подложить мячи. \n" +
+ "Счет\n" +
+ "1 — опереться на ноги и поднять таз вверх;\n" +
+ " 2 — поднять одну прямую ногу вверх на 30°—45% \n" +
+ "3 — опустить ногу на мяч;\n" +
+ " 4 — опустить таз и вернуться в исходное положение. Повторить упражнение по 4-8 раз с каждой ноги. Дыхание произвольное. При значительных трудностях с удержанием баланса на мячах данное упражнение можно выполнять на валике или любых стабильных опорах.\n"
+ val C7 = "Дыхательное упражнение — диафрагмальное дыхание. \n" +
+ "Сохранную ногу поставить согнутую, вторая нога или свободно лежит на полу, или бедро закинуто на другое бедро (фото), одна ладонь лежит на животе, а другая — на груди. На вдох носом надуть животом «шарик», на выдох через рот опустить переднюю стенку живота (и втянуть ее) и расслабиться. \n" +
+ "Повторить дыхательный цикл не более 4-6 раз. Дышать глубоко, в комфортном темпе.\n"
+ val C8 = "Исходное положение, руки лежат вниз вдоль туловища, под ноги подложен большой гимнастический мяч.\n" +
+ "Счет\n" +
+ "1 – упереться ногами в мяч, поднять таз вверх;\n" +
+ "2-3 — удерживать это положение;\n" +
+ "4 - опустить таз и вернуться B исходное положение.\n" +
+ "Дыхание произвольное. Повторить упражнение 6-8 раз.\n"
+ val C9 = "Исходное положение, руки лежат вниз вдоль туловища, под ноги подложен большой гимнастический мяч. \n" +
+ "Счет\n" +
+ "1 - поднять таз с опорой на обе ноги;\n" +
+ "2 - поднять сохранную ногу вверх от опоры и остаться стоять на одной культе;\n" +
+ "3 - опустить на опору сохранную ногу;\n" +
+ "4 - опустить таз и вернуться в исходное положение. Повторить упражнение для каждой ноги по 4—6 раз. Дыхание произвольное.\n"
+ val C10 = "Исходное положение, руки лежат вниз вдоль туловища или под головой (усложненный вариант). \n" +
+ "Имитация велосипедных движений. По 6-10 движений сначала одной ногой, затем второй. Усложненный вариант упражнения (фото) — выполнение упражнения одновременно двумя ногами.\n" +
+ "Сначала движение ногами выполняется в направлении движения вперед, а затем — назад. \n" +
+ "Следить за дыханием и за тем, чтобы поясница была прижата к полу.\n"
+ val C11 = "Дыхательное упражнение — диафрагмальное дыхание.\n" +
+ "Повторить дыхательный цикл не более 4-6 раз. В необходимости повторения дыхательного упражнения — ориентироваться на самочувствие пациента.\n"
+ val C12 = "Исходное положение, руки вытянуты перед собой, B руках — резиновая лента-амортизатор.\n" +
+ "Счет\n" +
+ "1 - развести в стороны прямые руки и коснуться кулачками пола, свести лопатки;\n" +
+ "2-3 — удерживать это положение;\n" +
+ "4 — свести руки перед собой и вернуться в исходное положение.\n" +
+ "При выполнении упражнения акцент делать на сведение лопаток в момент растяжения резинового амортизатора.\n"
+ val C13 = "Исходное положение, в руках — резиновый амортизатор; одна рука лежит вниз вдоль туловища, вторая согнута в локте на 90° и отведена от туловища (локоть на уровне плеча), ее плечо лежит на полу. \n" +
+ "Счет\n" +
+ "1 - не разгибая локтя, разворачивая лопатку, положить кисть согнутой руки на пол;\n" +
+ "2-3 — удерживать это положение;\n" +
+ "4 - вернуться в исходное положение. Повторить 10—15-20 раз. Не меняя длины хвата амортизатора, повторить с другой руки. Дыхание произвольное.\n"
+ val C14 = "Исходное положение, поставить руки B упоре на локти, немного отведя их от туловища.\n" +
+ "1 - надавить локтями на пол, свести лопатки прогнуть грудную клетку;\n" +
+ "2-3 — удерживать это напряжение;\n" +
+ "4 - расслабиться и вернуться в исходное положение \n" +
+ "Повторить 4-8 раз. Дыхание ровное, без задержек.\n"
+ val C15 = "Исходное положение, на бедра надета резиновая петля, ногу со стороны ампутации ротировать внутрь (cкосолапить). \n" +
+ "Счет\n" +
+ "1 - скользя по поверхности, отвести ногу со стороны ампутации в сторону; \n" +
+ "2-3 - удерживать ногу в этом положении;\n" +
+ "4 - вернуть ногу в исходное положение.\n" +
+ "Повторить упражнение 10-15-20 раз.\n" +
+ "Повторить 10-15-20 раз. После короткого отдыха сделать второй подход. Дыхание произвольное. Следить, чтобы мышцы плечевого пояса не вовлекались в напряжение, а таз оставался неподвижным. Для улучшения самоконтроля можно руки ставить на пояс и таким 0бразом следить за неподвижностью таза.\n"
+ val C16 = "Исходное положение, бедрами удерживать мяч.\n" +
+ "Счет\n" +
+ "1 - сжать мяч между бедрами; \n" +
+ "2-3 - удерживать это положение; \n" +
+ "4 - расслабиться.\n" +
+ "Повторить упражнение 10-15-20 раз. \n" +
+ "Со временем возможно усложнение упражнения: удерживать сжатие не на счет 2-3, а на 2-3-4-5-6-7, и только на счет 8 — расслабиться. Дыхание произвольное. Следить, чтобы мышцы плечевого пояса не вовлекались B напряжение, и пациент не затаивал дыхание.\n"
+ val C17 = "Исходное положение, руки лежат под головой, на ногу со стороны ампутации надета манжета-утяжелитель.\n" +
+ "Счет\n" +
+ "1 - поднять прямую ногу на 45°; \n" +
+ "2-3 - удерживать ногу в этом положении; \n" +
+ "4 - опустить ногу и вернуться в исходное положение. \n" +
+ "Повторить 10—15—20 раз.\n" +
+ "Усложнение упражнения:\n" +
+ "1 - поднять ногу; \n" +
+ "2-3-4-5-6-7 - держать ногу; \n" +
+ "8 - опустить ногу и вернуться в исходное положение.\n" +
+ "Со временем можно выполнять два подхода к упражнению.\n"
+ val C18 = "Исходное положение, руки лежат под головой, на ногу со стороны ампутации надета манжета-утяжелитель. \n" +
+ "Счет\n" +
+ "1 - поднять прямую ногу на 45°;\n" +
+ "2 - согнуть ногу в бедре и колене до 90°; \n" +
+ "3 - выпрямить ногу обратно; \n" +
+ "4 - опустить ногу и вернуться в исходное положение. \n" +
+ "Повторить упражнение 10—15 раз. \n" +
+ "Усложнение упражнения: \n" +
+ "сгибание и разгибание колена и бедра можно осуществлять не один, а несколько раз подряд, и только потом. опускать ногу. Также можно делать имитацию велосипедных движений вперед, а потом B обратную сторону. \n" +
+ "Со временем весь комплекс упражнений можно выполнять с утяжелителем в постоянном режиме. Со стороны ампутации делать больше подходов и количество повторений предлагаемых упражнений.\n"
+
+ val B1 = "Исходное положение. \n" +
+ "Счет\n" +
+ "1 - поднять верхнюю ногу на 10—35° точно в сторону;\n" +
+ "2-3 - удерживать это положение; \n" +
+ "4 - опустить ногу в исходное положение. \n" +
+ "Повторить упражнение 10—15-20 раз и положить согнутую ногу вперед — для растяжки и отдыха мышц. Во время выполнения упражнения следить за точностью направления движения — отведения.\n"
+ val B2 = "Исходное положение, верхняя нога согнута в колене и лежит впереди. \n" +
+ "Счет \n" +
+ "1 - поднять прямую нижнюю ногу точно вверх (приведение), стопу тянуть на себя;\n" +
+ "2-3 - удерживать ногу в верхней точке.\n" +
+ "4 - опустить ногу в исходное положение \n" +
+ "Повторить 10—15-20 раз. Следить за тем, чтобы нога не уходила вперед или назад, колено было всегда выпрямлено. Дыхание произвольное.\n"
+ val B3 = "Исходное положение. \n" +
+ "Счет\n" +
+ "1 — поднять верхнюю ногу на 10—35° точно в сторону; \n" +
+ "2 — согнуть в колене, не смещая бедро; \n" +
+ "3 — выпрямить колено, не смещая бедро; \n" +
+ "4 — опустить ногу в исходное положение. \n" +
+ "Повторить 10—15—20 раз. Дыхание произвольное. \n" +
+ "Повторяйте те же упражнения, лежа на другом боку.\n"
+ val B4 = "Исходное положение, на уровне бедра надета манжета с утяжелителем. \n" +
+ "Счет \n" +
+ "1 - поднять верхнюю ногу на 10—35° точно в сторону; \n" +
+ "2-3 — удерживать это положение \n" +
+ "4 - опустить ногу в исходное положение.\n" +
+ "Повторить 10—15-20 раз и положить согнутую ногу вперед для отдыха. Следить за точностью направления движения (отведение). \n" +
+ "Подобным образом — с утяжелителем — можно выполнять все упражнения в исходном положении лежа на боку.\n"
+
+
+ val J1 = "Исходное положение, руки лежат под головой, опираясь на лоб. \n" +
+ "1 - поднять плечевой пояс, руки и голову; \n" +
+ "2-3 - удерживать это положение;\n" +
+ "4 — опуститься в исходное положение и расслабиться. Повторить упражнение 6-10 раз. Следить за дыханием. \n" +
+ "Можно при подъеме туловища сводить лопатки, приводя локти к туловищу на все время удержания корпуса.\n"
+ val J2 = "Исходное положение, руки лежат под головой, голова опирается на лоб. \n" +
+ "1 - поднять правую прямую ногу вверх;\n" +
+ "2-3 - удерживать ногу; 4 - опустить ногу в исходное положение. \n" +
+ "С каждой стороны повторить упражнение по 6-10 раз. Следить за дыханием.\n"
+ val J3 = "Исходное положение, ноги лежат чуть шире плеч, руки под головой. \n" +
+ "1 — поднять плечевой пояс, руки и голову, и развести руки в стороны (ладонями вперед); \n" +
+ "2-3 — удерживать это положение;\n" +
+ "4 - опуститься в исходное положение. \n" +
+ "Повторить упражнение 6-10 раз. \n" +
+ "Усложнение: \n" +
+ "можно одновременно с подъемом корпуса поднимать поочередно то одну HOTY, то другую, или две ноги одновременно (фото). Следить за дыханием.\n"
+ val J4 = "Исходное положение, руки лежат наверху, голова опирается на лоб. \n" +
+ "Счет\n" +
+ "1 — поднять вверх одновременно прямые правую руку и левую ногу; \n" +
+ "2-3 - удерживать это положение; \n" +
+ "4 — опуститься в исходное положение. \n" +
+ "С каждой стороны повторить упражнение по 4-8 раз. Следить за дыханием.\n"
+ val J5 = "Дыхательное упражнение. Исходное положение, голова опирается на лоб, руки под толовой. Глубокий вдох HOCOM, долгий выдох через рот, губы сложены «трубочкой». Повторить 4-6 раз.\n"
+ val J6 = "Исходное положение, голова опирается на лоб. Рисуем ногой медленно букву «П».\n" +
+ "Счет\n" +
+ "1 – поднять прямую правую ногу вверх;\n" +
+ "2 – отвести eё B сторону на 30°;\n" +
+ "3 – опустить ногу в стороне на пол;\n" +
+ "4 – поднять правую ногу;\n" +
+ "5 – привести ноту к центру;\n" +
+ "6 – опустить ногу в исходное положение;\n" +
+ "7-12 – повторить то же с левой ноги.\n" +
+ "Упражнение сделать по 4-8 раз на каждую ногу. Следить за дыханием."
+ val J7 = "Предыдущее упражнение можно немного усложнить. \n" +
+ "Счет\n" +
+ "1 — поднять одну ногу; \n" +
+ "2 — отвести ногу в сторону; \n" +
+ "3 — опустить ногу в стороне; \n" +
+ "4 — поднять вверх другую ногу;\n" +
+ "5 - отвести и ее в сторону; \n" +
+ "6 - опустить на пол в стороне; \n" +
+ "7-8 -скользя по опоре, соединить на полу ноги. \n" +
+ "Повторить упражнение с каждой ноги по 4-6 раз. Следить за дыханием.\n"
+ val J8 = "Исходное положение, две ноги поднять поочередно вверх. \n" +
+ "1 - развести ноги в стороны; \n" +
+ "2 - свести ноги вместе, и повторять 10—15-20 раз. \n" +
+ "Следить за дыханием. После небольшой паузы, со временем, можно выполнять второй подход. \n" +
+ "Также возможны следующие варианты:\n" +
+ "1 - развести ноги в стороны;\n" +
+ "2 - свести ноги вместе с перекрестом (одна нога выше, и нижнюю ноги. другая ниже);\n" +
+ "3 - развести ноги в стороны;\n" +
+ "4 - свести ноги и перекрестить их, поменяв верхнюю и нижнюю ноги.\n" +
+ "Упражнение сделать по 4-8 раз на каждую ногу. Следить за дыханием.\n"
+ val J9 = "Дыхательное упражнение. Исходное положение, голова опирается на лоб, руки под головой. Глубокий вдох носом, долгий выдох через POT, губы сложены «трубочкой». Повторить 4-6 раз.\n"
+ val J10 = "Исходное положение, голова опирается на лоб, руки лежат наверху на ширине, в руках — резиновый амортизатор. \n" +
+ "1 — поднять туловище, руки и голову вверх; \n" +
+ "2 — развести руки в стороны так, чтобы амортизатор лег на лопатки; \n" +
+ "3 — свести руки наверху до ширины плеч; \n" +
+ "4 — опуститься в исходное положение. \n" +
+ "Повторить упражнение 6-10 раз. Дыхание произвольное.\n" +
+ " Со временем можно усложнить упражнение: разводить руки в стороны не один раз, а несколько раз подряд; также можно сделать паузу в момент, когда руки разведены в стороны. Дыхание произвольное. Можно одновременно с подъемом туловища поднимать поочередно то одну, то вторую ногу.\n"
+ val J11 = "Исходное положение, руки под головой. Поднять плечевой пояс и согнутые к плечам руки. Имитация плавания брассом. Дыхание ровное. \n" +
+ "Два подхода по 10-15-20 движений. Следить за полным выпрямлением рук наверх, разведением прямых рук B стороны, сведением лопаток B момент приведения плеч, а также за тем, чтобы корпус при выпрямлении рук наверх не опускался. Дыхание произвольное.\n"
+ val J12 = "Исходное положение, руки лежат под головой, голова опирается на лоб. На ноге со стороны ампутации надета манжета с утяжелителем.\n" +
+ "Счет\n" +
+ "1 - поднять ногу с утяжелителем;\n" +
+ "2-3 — удерживать ногу; \n" +
+ "4 — опустить ногу в исходное положение. \n" +
+ "Повторить 10-15-20 раз.\n" +
+ "Усложнение: можно на счет 2 - отвести ногу в сторону, на счет 3 - вернуть ногу к центру, счет 4 — опуститься в исходное положение. Также можно отводить в сторону не один раз, а несколько раз подряд. Дыхание свободное. \n" +
+ "Со временем все упражнения можно выполнять с утяжелителем."
+
+
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/rehabilitation/Admin/fragmrntAdmin/FeedbackFragment.kt b/app/src/main/java/com/example/rehabilitation/Admin/fragmrntAdmin/FeedbackFragment.kt
new file mode 100644
index 0000000..7cf5dc8
--- /dev/null
+++ b/app/src/main/java/com/example/rehabilitation/Admin/fragmrntAdmin/FeedbackFragment.kt
@@ -0,0 +1,26 @@
+package com.example.rehabilitation.Admin.fragmrntAdmin
+
+import android.os.Bundle
+import androidx.fragment.app.Fragment
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import com.example.rehabilitation.R
+import com.example.rehabilitation.databinding.FragmentFeedbackBinding
+
+class FeedbackFragment : Fragment() {
+ private lateinit var binding: FragmentFeedbackBinding
+
+ override fun onCreateView(
+ inflater: LayoutInflater, container: ViewGroup?,
+ savedInstanceState: Bundle?
+ ): View? {
+ binding = FragmentFeedbackBinding.inflate(layoutInflater, container,false)
+ return inflater.inflate(R.layout.fragment_feedback, container, false)
+ }
+
+ companion object {
+
+ fun newInstance() = FeedbackFragment()
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/rehabilitation/Admin/fragmrntAdmin/MainSettingFragment.kt b/app/src/main/java/com/example/rehabilitation/Admin/fragmrntAdmin/MainSettingFragment.kt
new file mode 100644
index 0000000..17680e6
--- /dev/null
+++ b/app/src/main/java/com/example/rehabilitation/Admin/fragmrntAdmin/MainSettingFragment.kt
@@ -0,0 +1,49 @@
+package com.example.rehabilitation.Admin.fragmrntAdmin
+
+import android.os.Binder
+import android.os.Bundle
+import androidx.fragment.app.Fragment
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import com.example.rehabilitation.R
+import com.example.rehabilitation.databinding.FragmentMainSettingBinding
+
+
+class MainSettingFragment : Fragment() {
+ private lateinit var binding: FragmentMainSettingBinding
+
+ override fun onCreateView(
+ inflater: LayoutInflater, container: ViewGroup?,
+ savedInstanceState: Bundle?
+ ): View? {
+ binding = FragmentMainSettingBinding.inflate(layoutInflater,container,false)
+ return binding.root
+ }
+
+ override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+ super.onViewCreated(view, savedInstanceState)
+
+ //Выход на основную часть
+ binding.btnExitSetting.setOnClickListener {
+ activity?.finish()
+ }
+
+ binding.cvSettingUser.setOnClickListener{
+
+ }
+
+ binding.cvFeedback.setOnClickListener{
+
+ }
+
+ binding.cvStatistics.setOnClickListener{
+
+ }
+ }
+
+ companion object {
+
+ fun newInstance() = MainSettingFragment()
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/rehabilitation/Admin/fragmrntAdmin/StatisticsFragment.kt b/app/src/main/java/com/example/rehabilitation/Admin/fragmrntAdmin/StatisticsFragment.kt
new file mode 100644
index 0000000..e529e6c
--- /dev/null
+++ b/app/src/main/java/com/example/rehabilitation/Admin/fragmrntAdmin/StatisticsFragment.kt
@@ -0,0 +1,32 @@
+package com.example.rehabilitation.Admin.fragmrntAdmin
+
+import android.os.Bundle
+import androidx.fragment.app.Fragment
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import com.example.rehabilitation.R
+import com.example.rehabilitation.databinding.FragmentStatisticsBinding
+
+class StatisticsFragment : Fragment() {
+ private lateinit var binding: FragmentStatisticsBinding
+
+ override fun onCreateView(
+ inflater: LayoutInflater, container: ViewGroup?,
+ savedInstanceState: Bundle?
+ ): View? {
+ binding = FragmentStatisticsBinding.inflate(layoutInflater, container,false)
+ return binding.root
+ //ТУТ БОЛЬШЕ НИЧЕГО НЕ ТРОГАЙ
+ }
+
+ override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+ super.onViewCreated(view, savedInstanceState)
+ //ВОТ ТУТ ТЫ ВСТАВЛЯЕШЬ КОД
+ }
+
+ companion object {
+
+ fun newInstance() = StatisticsFragment()
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/rehabilitation/fragment/User/CalendarFragment.kt b/app/src/main/java/com/example/rehabilitation/Admin/fragmrntAdmin/UserSettingFragment.kt
similarity index 51%
rename from app/src/main/java/com/example/rehabilitation/fragment/User/CalendarFragment.kt
rename to app/src/main/java/com/example/rehabilitation/Admin/fragmrntAdmin/UserSettingFragment.kt
index e7f0e99..8b967c5 100644
--- a/app/src/main/java/com/example/rehabilitation/fragment/User/CalendarFragment.kt
+++ b/app/src/main/java/com/example/rehabilitation/Admin/fragmrntAdmin/UserSettingFragment.kt
@@ -1,4 +1,4 @@
-package com.example.rehabilitation.fragment.User
+package com.example.rehabilitation.Admin.fragmrntAdmin
import android.os.Bundle
import androidx.fragment.app.Fragment
@@ -6,22 +6,21 @@ import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import com.example.rehabilitation.R
-import com.example.rehabilitation.databinding.FragmentCalendarBinding
+import com.example.rehabilitation.databinding.FragmentUserSettingBinding
-
-class CalendarFragment : Fragment() {
- private lateinit var binding: FragmentCalendarBinding
+class UserSettingFragment : Fragment() {
+ private lateinit var binding: FragmentUserSettingBinding
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
- binding = FragmentCalendarBinding.inflate(layoutInflater,container,false)
+ binding = FragmentUserSettingBinding.inflate(layoutInflater,container,false)
return binding.root
}
companion object {
- fun newInstance() = CalendarFragment()
+ fun newInstance() = UserSettingFragment()
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/rehabilitation/Baza/TaskItem.kt b/app/src/main/java/com/example/rehabilitation/Baza/TaskItem.kt
deleted file mode 100644
index 23a87f0..0000000
--- a/app/src/main/java/com/example/rehabilitation/Baza/TaskItem.kt
+++ /dev/null
@@ -1,24 +0,0 @@
-package com.example.rehabilitation.Baza
-
-import android.content.Context
-import androidx.core.content.ContextCompat
-import com.example.rehabilitation.R
-import java.time.LocalDate
-import java.time.LocalTime
-import java.util.*
-
-class TaskItem(
- var name:String,
- var desc:String,
- var dueTime: LocalTime?,
- var completedDate:LocalDate?,
- var id: UUID = UUID.randomUUID(),
- ) {
- fun isCompleted() = completedDate !=null
- fun imageResource(): Int = if(isCompleted()) R.drawable.check_24 else R.drawable.unchecked_24
- fun imageColor(context:Context): Int = if(isCompleted()) purple(context) else black(context)
-
- private fun purple(context:Context) = ContextCompat.getColor(context,R.color.purple_500)
- private fun black(context:Context) = ContextCompat.getColor(context,R.color.black)
-
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/rehabilitation/Baza/TaskItemAdapter.kt b/app/src/main/java/com/example/rehabilitation/Baza/TaskItemAdapter.kt
deleted file mode 100644
index 3ba5d97..0000000
--- a/app/src/main/java/com/example/rehabilitation/Baza/TaskItemAdapter.kt
+++ /dev/null
@@ -1,25 +0,0 @@
-package com.example.rehabilitation.Baza
-
-import android.view.LayoutInflater
-import android.view.ViewGroup
-import androidx.recyclerview.widget.RecyclerView
-import com.example.rehabilitation.databinding.TaskItemBinding
-
-class TaskItemAdapter(
- private val taskItems: List,
- private val clickListener: TaskItemClickListener
-
-):RecyclerView.Adapter() {
-
- override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): TaskItemViewHolder {
- val from = LayoutInflater.from(parent.context)
- val binding = TaskItemBinding.inflate(from,parent,false)
- return TaskItemViewHolder(parent.context, binding, clickListener)
- }
-
- override fun getItemCount(): Int = taskItems.size
-
- override fun onBindViewHolder(holder: TaskItemViewHolder, position: Int) {
- holder.bindTaskItem(taskItems[position])
- }
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/rehabilitation/Baza/TaskItemClickListener.kt b/app/src/main/java/com/example/rehabilitation/Baza/TaskItemClickListener.kt
deleted file mode 100644
index aa4e0df..0000000
--- a/app/src/main/java/com/example/rehabilitation/Baza/TaskItemClickListener.kt
+++ /dev/null
@@ -1,7 +0,0 @@
-package com.example.rehabilitation.Baza
-
-interface TaskItemClickListener {
- fun editTaskItem(taskitem:TaskItem)
- fun completeTaskItem(taskitem:TaskItem)
-
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/rehabilitation/Baza/TaskItemViewHolder.kt b/app/src/main/java/com/example/rehabilitation/Baza/TaskItemViewHolder.kt
deleted file mode 100644
index 4470c61..0000000
--- a/app/src/main/java/com/example/rehabilitation/Baza/TaskItemViewHolder.kt
+++ /dev/null
@@ -1,41 +0,0 @@
-package com.example.rehabilitation.Baza
-
-import android.content.Context
-import android.graphics.Paint
-import androidx.recyclerview.widget.RecyclerView
-import com.example.rehabilitation.databinding.TaskItemBinding
-import java.time.format.DateTimeFormatter
-
-class TaskItemViewHolder(
- private val context: Context,
- private val binding: TaskItemBinding,
- private val clickListener: TaskItemClickListener
-):RecyclerView.ViewHolder(binding.root) {
-
- private val timeFormat = DateTimeFormatter.ofPattern("HH:mm")
- fun bindTaskItem(taskItem:TaskItem){
- binding.txtName.text = taskItem.name
- //binding.txtDesc.text = taskItem.desc
-
- if(taskItem.isCompleted()){
- binding.txtName.paintFlags = Paint.STRIKE_THRU_TEXT_FLAG
- binding.txtTime.paintFlags = Paint.STRIKE_THRU_TEXT_FLAG
- }
-
- binding.btnComplete.setBackgroundResource(taskItem.imageResource())
- binding.btnComplete.setColorFilter(taskItem.imageColor(context))
- binding.btnComplete.setOnClickListener{
- clickListener.completeTaskItem(taskItem)
- }
- binding.taskCellContainers.setOnClickListener{
- clickListener.editTaskItem(taskItem)
- }
-
- if(taskItem.dueTime != null){
- binding.txtTime.text = timeFormat.format(taskItem.dueTime)
- }
- else{
- binding.txtTime.text = ""
- }
- }
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/rehabilitation/Baza/TaskViewModel.kt b/app/src/main/java/com/example/rehabilitation/Baza/TaskViewModel.kt
deleted file mode 100644
index 4b12b36..0000000
--- a/app/src/main/java/com/example/rehabilitation/Baza/TaskViewModel.kt
+++ /dev/null
@@ -1,44 +0,0 @@
-package com.example.rehabilitation.Baza
-
-import androidx.lifecycle.MutableLiveData
-import androidx.lifecycle.ViewModel
-import java.time.LocalDate
-import java.time.LocalTime
-import java.util.UUID
-
-class TaskViewModel:ViewModel() {
- var taskItems = MutableLiveData>()
-
- init{
- taskItems.value = mutableListOf()
- }
-
- //Добавление
- fun addTaskItem(newTask:TaskItem){
- val list = taskItems.value
- list!!.add(newTask)
- taskItems.postValue(list!!)
- }
-
- //Обновление
- fun updateTaskItem(id: UUID, name:String, desc:String, dueTime: LocalTime?){
- val list = taskItems.value
- val task = list!!.find{it.id == id}!!
- task.name = name
- task.desc = desc
- task.dueTime = dueTime
- taskItems.postValue(list!!)
- }
-
- //Вывод
- fun setCompleted(taskItem:TaskItem){
- val list = taskItems.value
- val task = list!!.find{it.id == taskItem.id}!!
- if(task.completedDate == null){
- task.completedDate = LocalDate.now()
- }
- taskItems.postValue(list!!)
- }
-
-
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/rehabilitation/MainActivity.kt b/app/src/main/java/com/example/rehabilitation/MainActivity.kt
index 3a4ed62..bed5581 100644
--- a/app/src/main/java/com/example/rehabilitation/MainActivity.kt
+++ b/app/src/main/java/com/example/rehabilitation/MainActivity.kt
@@ -1,15 +1,21 @@
package com.example.rehabilitation
+import android.annotation.SuppressLint
import android.content.Intent
-import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
+import androidx.appcompat.app.AppCompatActivity
+import com.example.rehabilitation.User.fragmentUser.CalendarFragment
+import com.example.rehabilitation.User.fragmentUser.HomeFragment
+import com.example.rehabilitation.User.fragmentUser.InformationFragment
+import com.example.rehabilitation.User.fragmentUser.ProgresFragment
+import com.example.rehabilitation.User.fragmentUser.SceduleFragment
import com.example.rehabilitation.databinding.ActivityMainBinding
-import com.example.rehabilitation.fragment.User.*
class MainActivity : AppCompatActivity() {
private lateinit var binding: ActivityMainBinding
+ @SuppressLint("DiscouragedApi")
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
@@ -27,6 +33,11 @@ class MainActivity : AppCompatActivity() {
val intent = Intent(this, SettingActivity::class.java)
startActivity(intent)
}
+
+
+
+ //binding.imageView3.resources.getIdentifier("b3_1","drawable",this.packageName);
+
}
diff --git a/app/src/main/java/com/example/rehabilitation/SettingActivity.kt b/app/src/main/java/com/example/rehabilitation/SettingActivity.kt
index 4803c25..4ee6f56 100644
--- a/app/src/main/java/com/example/rehabilitation/SettingActivity.kt
+++ b/app/src/main/java/com/example/rehabilitation/SettingActivity.kt
@@ -3,7 +3,14 @@ package com.example.rehabilitation
import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
+import com.example.rehabilitation.Admin.activityAdmin.FeedbackActivity
+import com.example.rehabilitation.Admin.activityAdmin.StatisticsActivity
+import com.example.rehabilitation.Admin.activityAdmin.UserSettingActivity
import com.example.rehabilitation.databinding.ActivitySettingBinding
+import com.example.rehabilitation.Admin.fragmrntAdmin.FeedbackFragment
+import com.example.rehabilitation.Admin.fragmrntAdmin.MainSettingFragment
+import com.example.rehabilitation.Admin.fragmrntAdmin.StatisticsFragment
+import com.example.rehabilitation.Admin.fragmrntAdmin.UserSettingFragment
class SettingActivity : AppCompatActivity() {
private lateinit var binding: ActivitySettingBinding
@@ -12,9 +19,33 @@ class SettingActivity : AppCompatActivity() {
binding = ActivitySettingBinding.inflate(layoutInflater)
setContentView(binding.root)
+// //Выводим фрагмент как экран
+// supportFragmentManager.beginTransaction()
+// .replace(R.id.CLMainSetting, MainSettingFragment.newInstance())
+// .commit()//Заменяем наш экран на фрагмент (используем наш экран как основу)//R.id.placeHolder - куда всталяем //MainFragment.newInstance() - это то что мы вставляем
+
+
binding.btnExitSetting.setOnClickListener {
finish()
}
+
+ binding.cvSettingUser.setOnClickListener{
+ val intent = Intent(this, UserSettingActivity::class.java)
+ startActivity(intent)
+ }
+
+ binding.cvFeedback.setOnClickListener{
+ val intent = Intent(this, FeedbackActivity::class.java)
+ startActivity(intent)
+ }
+
+ binding.cvStatistics.setOnClickListener{
+ val intent = Intent(this, StatisticsActivity::class.java)
+ startActivity(intent)
+ }
+
}
+
+
}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/rehabilitation/User/fragmentUser/CalendarFragment.kt b/app/src/main/java/com/example/rehabilitation/User/fragmentUser/CalendarFragment.kt
new file mode 100644
index 0000000..1e8d158
--- /dev/null
+++ b/app/src/main/java/com/example/rehabilitation/User/fragmentUser/CalendarFragment.kt
@@ -0,0 +1,132 @@
+package com.example.rehabilitation.User.fragmentUser
+
+import android.content.ContentResolver
+import android.net.Uri
+import android.os.Bundle
+import android.util.Log
+import androidx.fragment.app.Fragment
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.CalendarView
+import android.widget.Toast
+import androidx.fragment.app.activityViewModels
+import androidx.lifecycle.asLiveData
+import androidx.recyclerview.widget.GridLayoutManager
+import com.example.rehabilitation.BuildConfig
+import com.example.rehabilitation.R
+import com.example.rehabilitation.databinding.FragmentCalendarBinding
+import com.example.rehabilitation.db.MainDB
+import com.example.rehabilitation.dip.Day.DayAdapter
+import com.example.rehabilitation.dip.Day.DayModel
+import com.example.sqlitework.dip.MainViewModel
+import java.time.LocalDate
+import java.util.Calendar
+
+
+class CalendarFragment : Fragment(),DayAdapter.Listener {
+ private lateinit var binding: FragmentCalendarBinding
+ lateinit var adapterDay: DayAdapter
+ private val model: MainViewModel by activityViewModels()//Инициализировали класс
+
+ override fun onCreateView(
+ inflater: LayoutInflater, container: ViewGroup?,
+ savedInstanceState: Bundle?
+ ): View? {
+ binding = FragmentCalendarBinding.inflate(layoutInflater,container,false)
+ return binding.root
+ }
+
+ override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+ super.onViewCreated(view, savedInstanceState)
+ initRcViewDay()
+ liveReadOrderDayCurrent()
+ model.liveDayList.observe(viewLifecycleOwner) {//viewLifecycleOwner - следит за циклом жизни fragment
+ adapterDay.submitList(it)//Напрямую переадем созданный список в adapter(ProductAdapter)
+ }
+ addListModelCardsDay("${LocalDate.now()}")
+
+ binding.calendarView.setOnDateChangeListener { calView: CalendarView, year: Int, month: Int, dayOfMonth: Int ->
+
+ // Create calender object with which will have system date time.
+ val calender: Calendar = Calendar.getInstance()
+
+ // Set attributes in calender object as per selected date.
+ calender.set(year, month, dayOfMonth)
+
+ // Now set calenderView with this calender object to highlight selected date on UI.
+ calView.setDate(calender.timeInMillis, true, true)
+ Log.d("SelectedDate", "${LocalDate.of(year, month+1, dayOfMonth)}")
+ if(LocalDate.of(year, month+1, dayOfMonth).toString() == LocalDate.now().toString()){
+ addListModelCardsDay("${LocalDate.of(year, month+1, dayOfMonth)}")
+ }
+ else{
+ Toast.makeText(requireContext(), "Ошибка", Toast.LENGTH_SHORT).show()
+ }
+ }
+ //addListModelCardsDay("2023-7-13")
+ val fileName = "b3_1.png"
+
+ val fileUri = Uri.parse("${ContentResolver.SCHEME_ANDROID_RESOURCE}://"+ BuildConfig.APPLICATION_ID+"/drawable/${fileName}")
+ val filePath = fileUri.path
+
+// val fileName1 = "my_image.png"
+// val inputStream1 = assets.open("drawable/${fileName}")
+// val filePath1 = inputStream.toString()
+
+// val resourceId12 = R.drawable.b3_1
+// val fileUri12 = Uri.parse("android.resource://"+ BuildConfig.APPLICATION_ID+"/${resourceId12}")
+// val filePath12 = fileUri12.path
+
+ // binding.imageView4.setImageResource(filePath12!!.toInt())
+ }
+
+ //Функция запускающая отслеживания за списком, чтобы вовремя обновлять основную карточку продукта
+ private fun liveReadOrderDayCurrent() = with(binding) {
+ model.liveDayCurrent.observe(viewLifecycleOwner) {//viewLifecycleOwner - следит за циклом жизни fragment
+
+ }
+ }
+ //Инициализация списка
+ private fun initRcViewDay() = with(binding) {
+ rcViewDayCalendar.layoutManager = GridLayoutManager(requireContext(),1)//По вертикали будет выводить по умолчанию
+ adapterDay = DayAdapter(this@CalendarFragment)
+ rcViewDayCalendar.adapter = adapterDay
+ }
+ //Заполнения модели и списка
+ private fun addListModelCardsDay(day:String){
+ val db = MainDB.getDB(requireContext())
+ val list = ArrayList()
+ db.getDaoDaySport().getAllItemDaySport(day).asLiveData().observe(requireActivity()){itList->
+ var number = 0;
+ itList.forEach{
+ //val text = "Id: ${it.id} Name: ${it.name} Proce: ${it.price}"
+ //binding.txtList.append(text)
+ val itemDay = DayModel(
+ it.id.toString(),
+ //it.name.toString(),
+ //it.desc.toString(),
+ "123",
+ "321",
+ it.day.toString(),
+ (number++).toString(),
+ it.category.toString(),
+ //it.count.toString(),
+ //it.image.toString(),
+ it.check.toString(),
+ )
+ //model.liveZakazCurrent.value = item//Передаем в liveDataCurrent один из продуктов, чтобы дальше эти данные использовать и передавать их в пробную ячейку
+ list.add(itemDay)//Передали заполненый список
+ }
+ model.liveDayList.value = list
+ }
+ }
+ companion object {
+
+ fun newInstance() = CalendarFragment()
+ }
+
+ override fun onClickDay(item: DayModel) {
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/rehabilitation/fragment/User/HomeFragment.kt b/app/src/main/java/com/example/rehabilitation/User/fragmentUser/HomeFragment.kt
similarity index 88%
rename from app/src/main/java/com/example/rehabilitation/fragment/User/HomeFragment.kt
rename to app/src/main/java/com/example/rehabilitation/User/fragmentUser/HomeFragment.kt
index abf1365..deecba4 100644
--- a/app/src/main/java/com/example/rehabilitation/fragment/User/HomeFragment.kt
+++ b/app/src/main/java/com/example/rehabilitation/User/fragmentUser/HomeFragment.kt
@@ -1,11 +1,10 @@
-package com.example.rehabilitation.fragment.User
+package com.example.rehabilitation.User.fragmentUser
import android.os.Bundle
import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
-import com.example.rehabilitation.R
import com.example.rehabilitation.databinding.FragmentHomeBinding
class HomeFragment : Fragment() {
diff --git a/app/src/main/java/com/example/rehabilitation/fragment/User/InformationFragment.kt b/app/src/main/java/com/example/rehabilitation/User/fragmentUser/InformationFragment.kt
similarity index 88%
rename from app/src/main/java/com/example/rehabilitation/fragment/User/InformationFragment.kt
rename to app/src/main/java/com/example/rehabilitation/User/fragmentUser/InformationFragment.kt
index d8e76ff..36b6f2d 100644
--- a/app/src/main/java/com/example/rehabilitation/fragment/User/InformationFragment.kt
+++ b/app/src/main/java/com/example/rehabilitation/User/fragmentUser/InformationFragment.kt
@@ -1,11 +1,10 @@
-package com.example.rehabilitation.fragment.User
+package com.example.rehabilitation.User.fragmentUser
import android.os.Bundle
import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
-import com.example.rehabilitation.R
import com.example.rehabilitation.databinding.FragmentInformationBinding
diff --git a/app/src/main/java/com/example/rehabilitation/fragment/User/ProgresFragment.kt b/app/src/main/java/com/example/rehabilitation/User/fragmentUser/ProgresFragment.kt
similarity index 88%
rename from app/src/main/java/com/example/rehabilitation/fragment/User/ProgresFragment.kt
rename to app/src/main/java/com/example/rehabilitation/User/fragmentUser/ProgresFragment.kt
index 5b59f57..75ab5aa 100644
--- a/app/src/main/java/com/example/rehabilitation/fragment/User/ProgresFragment.kt
+++ b/app/src/main/java/com/example/rehabilitation/User/fragmentUser/ProgresFragment.kt
@@ -1,11 +1,10 @@
-package com.example.rehabilitation.fragment.User
+package com.example.rehabilitation.User.fragmentUser
import android.os.Bundle
import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
-import com.example.rehabilitation.R
import com.example.rehabilitation.databinding.FragmentProgresBinding
diff --git a/app/src/main/java/com/example/rehabilitation/User/fragmentUser/SceduleFragment.kt b/app/src/main/java/com/example/rehabilitation/User/fragmentUser/SceduleFragment.kt
new file mode 100644
index 0000000..f30f79f
--- /dev/null
+++ b/app/src/main/java/com/example/rehabilitation/User/fragmentUser/SceduleFragment.kt
@@ -0,0 +1,266 @@
+package com.example.rehabilitation.User.fragmentUser
+
+import android.annotation.SuppressLint
+import android.content.ContentResolver
+import android.net.Uri
+import android.os.Bundle
+import android.os.Environment
+import android.util.Log
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.HorizontalScrollView
+import android.widget.Toast
+import androidx.fragment.app.Fragment
+import androidx.fragment.app.activityViewModels
+import androidx.lifecycle.asLiveData
+import androidx.recyclerview.widget.GridLayoutManager
+import androidx.recyclerview.widget.LinearLayoutManager
+import com.example.rehabilitation.BuildConfig
+import com.example.rehabilitation.R
+import com.example.rehabilitation.databinding.FragmentSceduleBinding
+import com.example.rehabilitation.db.MainDB
+import com.example.rehabilitation.dip.Day.DayAdapter
+import com.example.rehabilitation.dip.Day.DayModel
+import com.example.rehabilitation.dip.Image.ImageSportAdapter
+import com.example.rehabilitation.dip.Image.ImageSportModel
+import com.example.rehabilitation.dip.Month.MonthAdapter
+import com.example.rehabilitation.dip.Month.MonthModel
+import com.example.sqlitework.dip.MainViewModel
+import java.io.File
+import java.time.LocalDate
+
+
+class SceduleFragment(/*var taskItem: TaskItem?*/) : Fragment(), MonthAdapter.Listener,DayAdapter.Listener{
+ private lateinit var binding: FragmentSceduleBinding
+ // private lateinit var taskViewModel: TaskViewModel
+ private val model: MainViewModel by activityViewModels()//Инициализировали класс
+ lateinit var adapterMonth: MonthAdapter
+ lateinit var adapterDay: DayAdapter
+ lateinit var adapterImage: ImageSportAdapter
+
+ override fun onCreateView(
+ inflater: LayoutInflater, container: ViewGroup?,
+ savedInstanceState: Bundle?
+ ): View? {
+ binding = FragmentSceduleBinding.inflate(layoutInflater, container, false)
+ return binding.root
+ }
+
+ override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+ super.onViewCreated(view, savedInstanceState)
+ initRcView()
+ initRcViewDay()
+ initRcViewImage()
+ liveReadOrderCurrent()
+ liveReadOrderDayCurrent()
+ model.liveListList.observe(viewLifecycleOwner) {//viewLifecycleOwner - следит за циклом жизни fragment
+ adapterMonth.submitList(it)//Напрямую переадем созданный список в adapter(ProductAdapter)
+ binding.txtNullList.visibility = View.GONE
+ }
+
+ model.liveDayList.observe(viewLifecycleOwner) {//viewLifecycleOwner - следит за циклом жизни fragment
+ adapterDay.submitList(it)//Напрямую переадем созданный список в adapter(ProductAdapter)
+ }
+
+ model.liveImageList.observe(viewLifecycleOwner) {//viewLifecycleOwner - следит за циклом жизни fragment
+ adapterImage.submitList(it)//Напрямую переадем созданный список в adapter(ProductAdapter)
+ }
+
+
+ //Закрытие карточки определенного дня
+ binding.btnExitCardSport.setOnClickListener {
+ visible2()
+ binding.txtNameCard.setText("")
+ binding.txtDescCard.setText("")
+ }
+
+ binding.btnExitCLDayList.setOnClickListener{
+ visible1()
+ }
+
+ //Заполнение списка
+ addListModelCards()
+
+
+
+ }
+ companion object {
+ fun newInstance() = SceduleFragment(/*null*/)
+ }
+ //Функция запускающая отслеживания за списком, чтобы вовремя обновлять основную карточку продукта
+ private fun liveReadOrderCurrent() = with(binding) {
+ model.liveListCurrent.observe(viewLifecycleOwner) {//viewLifecycleOwner - следит за циклом жизни fragment
+ visible2()
+ //addListModelCardsDay(it.day)
+ }
+
+ }
+ //Функция запускающая отслеживания за списком, чтобы вовремя обновлять основную карточку продукта
+ @SuppressLint("DiscouragedApi")
+ private fun liveReadOrderDayCurrent() = with(binding) {
+ model.liveDayCurrent.observe(viewLifecycleOwner) {//viewLifecycleOwner - следит за циклом жизни fragment
+ visible3()
+ //val db = MainDB.getDB(requireContext())
+ //db.getDaoDaySport().getAllItemDaySport(day).asLiveData().observe(requireActivity()){itList->
+
+
+// var gpath:String = Environment.getExternalStorageDirectory().absolutePath
+// var spath = R.drawable.b3_1
+// var fullpath = File(gpath + File.separator + spath)
+ //var image = R.drawable.
+
+ //val mFile1 = Environment.getExternalStorageDirectory()
+ //val fileName = "b3_1.png"
+ //val mFile2 = File(mFile1, fileName)
+ //val sdPath = mFile1.absolutePath.toString() + "/" + fileName
+ // val temp = File(sdPath)
+ val db = MainDB.getDB(requireContext())
+ val listImage = ArrayList()
+ db.getDaoImage().getAllItemImage(it.category).asLiveData().observe(requireActivity()) { itList1 ->
+ itList1.forEach {
+ val item = ImageSportModel(
+ it.id.toString(),
+ it.image,
+ it.name.toString(),
+ )
+ Log.d("sdaasd","${item.article}")
+ listImage.add(item)//Передали заполненый список
+ }
+
+ model.liveImageList.value = listImage
+
+ }
+ //Log.i("5555", "Your IMAGE ABSOLUTE PATH:-$sdPath")
+ //val otherPath = Uri.parse("android.resource://"+ BuildConfig.APPLICATION_ID+"/drawable/b3_1.png")
+ //val path = Uri.parse("android.resource://com.nikhil.material/" + R.drawable.ima)
+ //val fileUri = Uri.parse("${ContentResolver.SCHEME_ANDROID_RESOURCE}://"+ BuildConfig.APPLICATION_ID+"/drawable/${fileName}")
+ binding.txtNameCard.setText("")
+ binding.txtDescCard.setText("")
+ binding.txtTitle.setText("")
+ binding.txtTitle.setText("Упражнение "+it.number)
+ binding.txtNameCard.setText(it.name)
+ binding.txtDescCard.setText(binding.txtDescCard.text.toString()+it.desc)
+ // binding.txtTitle.setText(it.name)
+ //binding.imageView2.setImageResource(R.drawable.b3_1)
+ //val resourceId = resources.getIdentifier("b3_1", "drawable", activity?.packageName)
+// val sads = "2131231027"
+// binding.imageView2.setImageResource(sads.toInt());
+// Log.d("otherPath", sads.toString())
+
+
+
+ }
+
+ }
+
+ //Заполнения модели и списка
+ private fun addListModelCards(){
+ val db = MainDB.getDB(requireContext())
+ val list = ArrayList()
+ db.getDao().getAllItems().asLiveData().observe(requireActivity()){itList->
+ binding.txtList.text = ""
+ itList.forEach{
+ //val text = "Id: ${it.id} Name: ${it.name} Proce: ${it.price}"
+ //binding.txtList.append(text)
+ val item = MonthModel(
+ it.id.toString(),
+ it.day.toString(),
+ it.date.toString(),
+ it.check.toString()
+ )
+ //model.liveZakazCurrent.value = item//Передаем в liveDataCurrent один из продуктов, чтобы дальше эти данные использовать и передавать их в пробную ячейку
+ list.add(item)//Передали заполненый список
+ }
+ model.liveListList.value = list
+ }
+
+
+
+ }
+
+ //Заполнения модели и списка
+ private fun addListModelCardsDay(day:String){
+
+ val db = MainDB.getDB(requireContext())
+ val list = ArrayList()
+ db.getDaoDaySport().getAllItemDaySport(day).asLiveData().observe(requireActivity()){itList->
+ var number = 1;
+ itList.forEach{
+ db.getDaoSportCategory().getAllItemsSportCategory("c").asLiveData().observe(requireActivity()){itSport->
+ itSport.forEach {
+ val itemDay = DayModel(
+ it.id.toString(),
+ it.name,
+ it.desc,
+ day,
+ (number++).toString(),
+ it.category.toString(),
+ "0",
+ )
+ list.add(itemDay)//Передали заполненый список
+ }
+ }
+ }
+ model.liveDayList.value = list
+ Log.d("sadas",list.toString())
+ }
+ }
+
+ //Инициализация списка
+ private fun initRcView() = with(binding) {
+ todoListRecycleView.layoutManager = GridLayoutManager(requireContext(),1)//По вертикали будет выводить по умолчанию
+ adapterMonth = MonthAdapter(this@SceduleFragment)
+ todoListRecycleView.adapter = adapterMonth
+ }
+ //Инициализация списка
+ private fun initRcViewDay() = with(binding) {
+ rcVIewDayList.layoutManager = GridLayoutManager(requireContext(),1)//По вертикали будет выводить по умолчанию
+ adapterDay = DayAdapter(this@SceduleFragment)
+ rcVIewDayList.adapter = adapterDay
+ }
+ //Инициализация списка для фотографий
+ private fun initRcViewImage() = with(binding) {
+ rcViewImage.layoutManager = LinearLayoutManager(requireContext(),LinearLayoutManager.HORIZONTAL,false)//По вертикали будет выводить по умолчанию
+ adapterImage = ImageSportAdapter()
+ rcViewImage.adapter = adapterImage
+ }
+
+
+
+ //Вывод первого экрана
+ private fun visible1(){
+ binding.CLListSport.visibility = View.VISIBLE
+ binding.CLCardSport.visibility = View.GONE
+ binding.CLDayList.visibility = View.GONE
+ }
+ //Вывод второго экрана
+ private fun visible2(){
+ binding.CLListSport.visibility = View.GONE
+ binding.CLDayList.visibility = View.VISIBLE
+ binding.CLCardSport.visibility = View.GONE
+
+ }
+ //Вывод второго экрана
+ private fun visible3(){
+ binding.CLListSport.visibility = View.GONE
+ binding.CLDayList.visibility = View.GONE
+ binding.CLCardSport.visibility = View.VISIBLE
+ }
+ override fun onClickExceptionOrder(item: MonthModel) {
+ //Если открываешь тренировку не сегодняшнего дня то тебя ругает
+ // if(item.day.toString() == LocalDate.now().toString()){
+ model.liveListCurrent.value = item
+ addListModelCardsDay(item.day)
+// }
+// else{
+// Toast.makeText(requireContext(), "Ошибка", Toast.LENGTH_SHORT).show()
+// }
+ }
+
+ override fun onClickDay(item: DayModel) {
+ model.liveDayCurrent.value = item
+ }
+
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/rehabilitation/db/Dao.kt b/app/src/main/java/com/example/rehabilitation/db/Dao.kt
index f29c941..63053bf 100644
--- a/app/src/main/java/com/example/rehabilitation/db/Dao.kt
+++ b/app/src/main/java/com/example/rehabilitation/db/Dao.kt
@@ -1,14 +1,34 @@
package com.example.rehabilitation.db
import androidx.room.Dao
+import androidx.room.Delete
import androidx.room.Insert
+import androidx.room.OnConflictStrategy
import androidx.room.Query
import kotlinx.coroutines.flow.Flow
@Dao
interface Dao {
+ //Таблица по по дням
@Insert
fun insertItem(item:Item)
- @Query("SELECT * FROM items")
+ //Таблица определенного дня
+
+
+ //Список по дням
+ @Query("SELECT * FROM items ORDER BY day ASC")
fun getAllItems(): Flow>
+
+ //Список определенного дня
+// @Query("SELECT * FROM itemDay")
+// fun getAllItemDay(): Flow>
+
+ //Обновление по переднному параметру
+ @Query("UPDATE items SET `check` = 1 WHERE id = :id")
+ fun updateItems(id : String)
+
+ //Очистка таблицы
+ @Query("DELETE FROM items")
+ fun deleteItem()
+
}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/rehabilitation/db/DaoDaySport.kt b/app/src/main/java/com/example/rehabilitation/db/DaoDaySport.kt
new file mode 100644
index 0000000..d89683e
--- /dev/null
+++ b/app/src/main/java/com/example/rehabilitation/db/DaoDaySport.kt
@@ -0,0 +1,26 @@
+package com.example.rehabilitation.db
+
+import androidx.room.Dao
+import androidx.room.Insert
+import androidx.room.Query
+import kotlinx.coroutines.flow.Flow
+
+@Dao
+interface DaoDaySport {
+ //Таблица определенного дня
+ @Insert
+ fun insertItemDaySport(itemDaySport:ItemDaySport)
+
+ //Список определенного дня
+ @Query("SELECT * FROM itemDaySport ORDER BY id ASC")
+ fun getAllItemDaySport(): Flow>
+
+ //Список определенного дня
+ @Query("SELECT * FROM itemDaySport WHERE day = :day ORDER BY id ASC")
+ fun getAllItemDaySport(day:String): Flow>
+
+ //Очистка таблицы
+ @Query("DELETE FROM itemDaySport")
+ fun deleteItemDaySport()
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/rehabilitation/db/DaoImage.kt b/app/src/main/java/com/example/rehabilitation/db/DaoImage.kt
new file mode 100644
index 0000000..0f1603f
--- /dev/null
+++ b/app/src/main/java/com/example/rehabilitation/db/DaoImage.kt
@@ -0,0 +1,26 @@
+package com.example.rehabilitation.db
+
+import androidx.room.Dao
+import androidx.room.Insert
+import androidx.room.Query
+import kotlinx.coroutines.flow.Flow
+
+@Dao
+interface DaoImage {
+ //Таблица определенного дня
+ @Insert
+ fun insertItemImage(itemImage:ItemImage)
+
+ //Список определенного дня
+ @Query("SELECT * FROM itemImage ")
+ fun getAllItemImage(): Flow>
+
+ //Список определенного дня
+ @Query("SELECT * FROM itemImage WHERE article = :article ORDER BY id ASC")
+ fun getAllItemImage(article:String): Flow>
+
+ //Очистка таблицы
+ @Query("DELETE FROM itemImage")
+ fun deleteItemImage()
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/rehabilitation/db/DaoSportCategory.kt b/app/src/main/java/com/example/rehabilitation/db/DaoSportCategory.kt
new file mode 100644
index 0000000..4fb85cb
--- /dev/null
+++ b/app/src/main/java/com/example/rehabilitation/db/DaoSportCategory.kt
@@ -0,0 +1,34 @@
+package com.example.rehabilitation.db
+
+import androidx.room.Dao
+import androidx.room.Delete
+import androidx.room.Insert
+import androidx.room.OnConflictStrategy
+import androidx.room.Query
+import kotlinx.coroutines.flow.Flow
+
+@Dao
+interface DaoSportCategory {
+ //Таблица по по дням
+ @Insert
+ fun insertItemSportCategory(item:ItemSportCategory)
+ //Таблица определенного дня
+
+
+ //Список по дням
+ @Query("SELECT * FROM itemSportCategory WHERE image = :category")
+ fun getAllItemsSportCategory(category:String): Flow>
+
+ //Список определенного дня
+// @Query("SELECT * FROM itemDay")
+// fun getAllItemDay(): Flow>
+
+ //Обновление по переднному параметру
+// @Query("UPDATE itemSportCategory SET `check` = 1 WHERE id = :id")
+// fun updateItemsSportCategory(id : String)
+
+ //Очистка таблицы
+ @Query("DELETE FROM itemSportCategory")
+ fun deleteItemSportCategory()
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/rehabilitation/db/Item.kt b/app/src/main/java/com/example/rehabilitation/db/Item.kt
index 97890d3..6dcdacb 100644
--- a/app/src/main/java/com/example/rehabilitation/db/Item.kt
+++ b/app/src/main/java/com/example/rehabilitation/db/Item.kt
@@ -3,14 +3,17 @@ package com.example.rehabilitation.db
import androidx.room.ColumnInfo
import androidx.room.Entity
import androidx.room.PrimaryKey
+import java.util.Date
@Entity(tableName = "items")
data class Item(
@PrimaryKey(autoGenerate = true)
var id:Int? = null,
- @ColumnInfo(name = "name")
- var name:String,
- @ColumnInfo(name = "price")
- var price:String,
-
+ @ColumnInfo(name = "day")
+ var day: String,
+ @ColumnInfo(name = "date")
+ var date: String,
+ @ColumnInfo(name = "check")
+ var check:Int
)
+
diff --git a/app/src/main/java/com/example/rehabilitation/db/ItemDaySport.kt b/app/src/main/java/com/example/rehabilitation/db/ItemDaySport.kt
new file mode 100644
index 0000000..67018bf
--- /dev/null
+++ b/app/src/main/java/com/example/rehabilitation/db/ItemDaySport.kt
@@ -0,0 +1,18 @@
+package com.example.rehabilitation.db
+
+import androidx.room.ColumnInfo
+import androidx.room.Entity
+import androidx.room.PrimaryKey
+
+@Entity(tableName = "itemDaySport")
+data class ItemDaySport(
+ @PrimaryKey(autoGenerate = true)
+ var id:Int? = null,
+ @ColumnInfo(name = "day")
+ var day:String,
+ @ColumnInfo(name = "category")
+ var category:String,
+ @ColumnInfo(name = "check")
+ var check:Int,
+
+)
diff --git a/app/src/main/java/com/example/rehabilitation/db/ItemImage.kt b/app/src/main/java/com/example/rehabilitation/db/ItemImage.kt
new file mode 100644
index 0000000..2693b22
--- /dev/null
+++ b/app/src/main/java/com/example/rehabilitation/db/ItemImage.kt
@@ -0,0 +1,17 @@
+package com.example.rehabilitation.db
+
+import androidx.room.ColumnInfo
+import androidx.room.Entity
+import androidx.room.PrimaryKey
+
+@Entity(tableName = "itemImage")
+data class ItemImage(
+ @PrimaryKey(autoGenerate = true)
+ var id:Int? = null,
+ @ColumnInfo(name = "nameImage")
+ var image:String,
+ @ColumnInfo(name = "article")
+ var name:String,
+ @ColumnInfo(name = "category")
+ var category:String,
+)
diff --git a/app/src/main/java/com/example/rehabilitation/db/ItemSportCategory.kt b/app/src/main/java/com/example/rehabilitation/db/ItemSportCategory.kt
new file mode 100644
index 0000000..7a15ad4
--- /dev/null
+++ b/app/src/main/java/com/example/rehabilitation/db/ItemSportCategory.kt
@@ -0,0 +1,23 @@
+package com.example.rehabilitation.db
+
+import androidx.room.ColumnInfo
+import androidx.room.Entity
+import androidx.room.PrimaryKey
+import java.util.Date
+
+@Entity(tableName = "itemSportCategory")
+data class ItemSportCategory(
+ @PrimaryKey(autoGenerate = true)
+ var id:Int? = null,
+ @ColumnInfo(name = "name")
+ var name:String,
+ @ColumnInfo(name = "desc")
+ var desc:String,
+ @ColumnInfo(name = "count")
+ var count:String,
+ @ColumnInfo(name = "image")
+ var image:String,
+ @ColumnInfo(name = "category")
+ var category:String
+)
+
diff --git a/app/src/main/java/com/example/rehabilitation/db/MainDB.kt b/app/src/main/java/com/example/rehabilitation/db/MainDB.kt
index bf40c2f..5bdc6ca 100644
--- a/app/src/main/java/com/example/rehabilitation/db/MainDB.kt
+++ b/app/src/main/java/com/example/rehabilitation/db/MainDB.kt
@@ -5,15 +5,18 @@ import androidx.room.RoomDatabase
import android.content.Context
import androidx.room.Database
-@Database(entities = [Item::class], version = 1)
+@Database(entities = [Item::class, ItemDaySport::class, ItemImage::class, ItemSportCategory::class], version = 1)
abstract class MainDB: RoomDatabase() {
abstract fun getDao(): Dao
+ abstract fun getDaoDaySport(): DaoDaySport
+ abstract fun getDaoImage(): DaoImage
+ abstract fun getDaoSportCategory(): DaoSportCategory
companion object{
fun getDB(context: Context):MainDB{
return Room.databaseBuilder(
context.applicationContext,
MainDB::class.java,
- "tests.db"
+ "tttttttttttttt1.db"
).build()
}
}
diff --git a/app/src/main/java/com/example/rehabilitation/dip/Day/DayAdapter.kt b/app/src/main/java/com/example/rehabilitation/dip/Day/DayAdapter.kt
new file mode 100644
index 0000000..efb6b11
--- /dev/null
+++ b/app/src/main/java/com/example/rehabilitation/dip/Day/DayAdapter.kt
@@ -0,0 +1,78 @@
+package com.example.rehabilitation.dip.Day
+
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import androidx.recyclerview.widget.DiffUtil
+import androidx.recyclerview.widget.ListAdapter
+import androidx.recyclerview.widget.RecyclerView
+import com.example.rehabilitation.R
+import com.example.rehabilitation.databinding.RcItemBinding
+import com.example.rehabilitation.databinding.RcItemDayBinding
+
+
+class DayAdapter(val listener_zakaz: Listener) : ListAdapter(
+ Comparator()
+) {//Productitem - по этой форме будем заполнять.//ProductAdapter.holder - это создаваемый holder который хранит логику как нужно заполнять карточку
+
+
+ //В holder создаетс код с помошью которого мы будем заполнять и сохронять разметку
+ class Holder(view: View, val listener_zakaz: Listener): RecyclerView.ViewHolder(view) {//Класс который будет хранить сссылки на элементы, и отвечает за один элемент за 1 раз, то есть сначсало нулевой элемент заполнит, потом первый, потом второй и т.д.
+ //Для передачи данных
+
+ val binding = RcItemDayBinding.bind(view)//view - здесь храянтся элементы и мы их bind заполним в ListItemBinding//ListItemBinding - это клласс даннйо разметки(карточки) которую мы будем заполнять, а нужна дання переменная(binding), чтобы мжно было при заполнение обращатся к элементам карточки
+
+ var itemTemp: DayModel? = null//Глобальная переменная для нашего item, чтобы можно было передать данные для нажатия
+
+ //init - дает возможность внутри адаптера обращаться к элементам экрана
+ init {
+ itemView.setOnClickListener {//Нажатие на ячейку//itemView - это весь элемент карточки из списка
+ itemTemp?.let { it1 -> listener_zakaz.onClickDay(it1) }
+
+ }
+ }
+
+ //Функция bind для заполнения
+ fun bind(item: DayModel) = with(binding) {//Productitem - перпедаем данные
+ itemTemp = item
+ //txtName.text = item.name
+ //txtCount.text = item.count
+ //txtImage.text = item.image
+ txtName.text = item.number
+ txtDay.text = item.day
+ }
+
+ }
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): Holder {
+ val view = LayoutInflater.from(parent.context).inflate(R.layout.rc_item_day, parent, false)//Создаем(надуваем) list_item
+ return Holder(view, listener_zakaz)//Через Holder возврощаем view
+ }
+
+ override fun onBindViewHolder(holder: Holder, position: Int) {
+ val view = holder.bind(getItem(position))//Заполняем по позиции карточку
+ }
+
+
+ //Comparator - сравнивает старый список и новый и если что-то изменилось, то работает с конкретным изменением списке, а не весь список переписывает
+ class Comparator : DiffUtil.ItemCallback() {
+ override fun areItemsTheSame(oldItem: DayModel, newItem: DayModel): Boolean {//Тут лучше всего сравнивать по id//oldItem - элементы старого списка, newItem - элементы нового списка//Возврощает Boolean, тоесть есть изменения или нет
+ return oldItem.id == newItem.id//Сравниваем полностью весь список новы и старый, по очередно по одной карточке и по элементно, то есть нулевой элемент, первый, второй и т.д.. Но лучше сравнивать по id списки, а не просто весь список, так как это эфективнее, так как id уникальный(oldItem.id == newItem.id)
+ }
+
+ override fun areContentsTheSame(oldItem: DayModel, newItem: DayModel): Boolean {//Утут нужно сравнивать весь спсок старых элементов и новых
+ return oldItem == newItem//Сравниваем полностью весь список новы и старый
+ }
+ }
+
+ //Интерфейс нажатия на кнопку удалить товар из корзины
+ interface Listener {
+ fun onClickDay(item: DayModel)
+ }
+
+
+}
+
+
+
+
diff --git a/app/src/main/java/com/example/rehabilitation/dip/Day/DayModel.kt b/app/src/main/java/com/example/rehabilitation/dip/Day/DayModel.kt
new file mode 100644
index 0000000..6d194b2
--- /dev/null
+++ b/app/src/main/java/com/example/rehabilitation/dip/Day/DayModel.kt
@@ -0,0 +1,14 @@
+package com.example.rehabilitation.dip.Day
+
+data class DayModel(
+ val id: String,
+ val name: String,
+ val desc:String,
+ val day: String,
+ val number: String,
+ // val count: String,
+ val category: String,
+ // val image: String,
+ val check:String,
+)
+
diff --git a/app/src/main/java/com/example/rehabilitation/dip/Image/ImageSportAdapter.kt b/app/src/main/java/com/example/rehabilitation/dip/Image/ImageSportAdapter.kt
new file mode 100644
index 0000000..38064ff
--- /dev/null
+++ b/app/src/main/java/com/example/rehabilitation/dip/Image/ImageSportAdapter.kt
@@ -0,0 +1,72 @@
+package com.example.rehabilitation.dip.Image
+
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import androidx.recyclerview.widget.DiffUtil
+import androidx.recyclerview.widget.ListAdapter
+import androidx.recyclerview.widget.RecyclerView
+import com.example.rehabilitation.R
+import com.example.rehabilitation.databinding.ImageSportCardsBinding
+import com.example.rehabilitation.databinding.RcItemDayBinding
+import java.time.LocalDate
+
+
+class ImageSportAdapter() : ListAdapter(
+ Comparator()
+) {//Productitem - по этой форме будем заполнять.//ProductAdapter.holder - это создаваемый holder который хранит логику как нужно заполнять карточку
+
+
+ //В holder создаетс код с помошью которого мы будем заполнять и сохронять разметку
+ class Holder(view: View): RecyclerView.ViewHolder(view) {//Класс который будет хранить сссылки на элементы, и отвечает за один элемент за 1 раз, то есть сначсало нулевой элемент заполнит, потом первый, потом второй и т.д.
+ //Для передачи данных
+
+ val binding = ImageSportCardsBinding.bind(view)//view - здесь храянтся элементы и мы их bind заполним в ListItemBinding//ListItemBinding - это клласс даннйо разметки(карточки) которую мы будем заполнять, а нужна дання переменная(binding), чтобы мжно было при заполнение обращатся к элементам карточки
+
+ var itemTemp: ImageSportModel? = null//Глобальная переменная для нашего item, чтобы можно было передать данные для нажатия
+
+ //init - дает возможность внутри адаптера обращаться к элементам экрана
+ init {
+ itemView.setOnClickListener {//Нажатие на ячейку//itemView - это весь элемент карточки из списка
+ //itemTemp?.let { it1 -> listener_zakaz.onClickDay(it1) }
+
+ }
+ }
+
+ //Функция bind для заполнения
+ fun bind(item: ImageSportModel) = with(binding) {//Productitem - перпедаем данные
+ itemTemp = item
+ imageSport.setImageResource(item.imageName.toInt())
+ }
+
+ }
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): Holder {
+ val view = LayoutInflater.from(parent.context).inflate(R.layout.image_sport_cards, parent, false)//Создаем(надуваем) list_item
+ return Holder(view)//Через Holder возврощаем view
+ }
+
+ override fun onBindViewHolder(holder: Holder, position: Int) {
+ val view = holder.bind(getItem(position))//Заполняем по позиции карточку
+ }
+
+
+ //Comparator - сравнивает старый список и новый и если что-то изменилось, то работает с конкретным изменением списке, а не весь список переписывает
+ class Comparator : DiffUtil.ItemCallback() {
+ override fun areItemsTheSame(oldItem: ImageSportModel, newItem: ImageSportModel): Boolean {//Тут лучше всего сравнивать по id//oldItem - элементы старого списка, newItem - элементы нового списка//Возврощает Boolean, тоесть есть изменения или нет
+ return oldItem.id == newItem.id//Сравниваем полностью весь список новы и старый, по очередно по одной карточке и по элементно, то есть нулевой элемент, первый, второй и т.д.. Но лучше сравнивать по id списки, а не просто весь список, так как это эфективнее, так как id уникальный(oldItem.id == newItem.id)
+ }
+
+ override fun areContentsTheSame(oldItem: ImageSportModel, newItem: ImageSportModel): Boolean {//Утут нужно сравнивать весь спсок старых элементов и новых
+ return oldItem == newItem//Сравниваем полностью весь список новы и старый
+ }
+ }
+
+
+
+
+}
+
+
+
+
diff --git a/app/src/main/java/com/example/rehabilitation/dip/Image/ImageSportModel.kt b/app/src/main/java/com/example/rehabilitation/dip/Image/ImageSportModel.kt
new file mode 100644
index 0000000..e3458f4
--- /dev/null
+++ b/app/src/main/java/com/example/rehabilitation/dip/Image/ImageSportModel.kt
@@ -0,0 +1,8 @@
+package com.example.rehabilitation.dip.Image
+
+data class ImageSportModel(
+ val id: String,
+ val imageName: String,
+ val article: String,
+)
+
diff --git a/app/src/main/java/com/example/rehabilitation/dip/MainViewModel.kt b/app/src/main/java/com/example/rehabilitation/dip/MainViewModel.kt
new file mode 100644
index 0000000..b0d001e
--- /dev/null
+++ b/app/src/main/java/com/example/rehabilitation/dip/MainViewModel.kt
@@ -0,0 +1,25 @@
+package com.example.sqlitework.dip
+
+import android.app.Application
+import androidx.lifecycle.*
+import com.example.rehabilitation.dip.Day.DayModel
+import com.example.rehabilitation.dip.Image.ImageSportModel
+import com.example.rehabilitation.dip.Month.MonthModel
+
+
+//Тут будут обновлятся данные, следим за списками если что-то обновилось, то уведомлякм и потом ProductAdapter обновит
+class MainViewModel(application: Application) :AndroidViewModel(application){
+
+
+ //Объявления
+ val liveListCurrent = MutableLiveData()//Сюда передается новая информация на один день(для слайдера)
+ val liveListList= MutableLiveData>()//Сюда передается новая информация на один день(для все продукции - всего списка)
+
+ val liveDayCurrent = MutableLiveData()//Сюда передается новая информация на один день(для слайдера)
+ val liveDayList= MutableLiveData>()//Сюда передается новая информация на один день(для все продукции - всего списка)
+
+
+ val liveImageCurrent = MutableLiveData()//Сюда передается новая информация на один день(для слайдера)
+ val liveImageList= MutableLiveData>()//Сюда передается новая информация на один день(для все продукции - всего списка)
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/rehabilitation/dip/Month/MonthAdapter.kt b/app/src/main/java/com/example/rehabilitation/dip/Month/MonthAdapter.kt
new file mode 100644
index 0000000..bafebb4
--- /dev/null
+++ b/app/src/main/java/com/example/rehabilitation/dip/Month/MonthAdapter.kt
@@ -0,0 +1,77 @@
+package com.example.rehabilitation.dip.Month
+
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import androidx.recyclerview.widget.DiffUtil
+import androidx.recyclerview.widget.ListAdapter
+import androidx.recyclerview.widget.RecyclerView
+import com.example.rehabilitation.R
+import com.example.rehabilitation.databinding.RcItemBinding
+
+
+class MonthAdapter(val listener_zakaz: Listener) : ListAdapter(
+ Comparator()
+) {//Productitem - по этой форме будем заполнять.//ProductAdapter.holder - это создаваемый holder который хранит логику как нужно заполнять карточку
+
+
+ //В holder создаетс код с помошью которого мы будем заполнять и сохронять разметку
+ class Holder(view: View, val listener_zakaz: Listener): RecyclerView.ViewHolder(view) {//Класс который будет хранить сссылки на элементы, и отвечает за один элемент за 1 раз, то есть сначсало нулевой элемент заполнит, потом первый, потом второй и т.д.
+ //Для передачи данных
+
+ val binding = RcItemBinding.bind(view)//view - здесь храянтся элементы и мы их bind заполним в ListItemBinding//ListItemBinding - это клласс даннйо разметки(карточки) которую мы будем заполнять, а нужна дання переменная(binding), чтобы мжно было при заполнение обращатся к элементам карточки
+
+ var itemTemp: MonthModel? = null//Глобальная переменная для нашего item, чтобы можно было передать данные для нажатия
+
+ //init - дает возможность внутри адаптера обращаться к элементам экрана
+ init {
+ itemView.setOnClickListener {//Нажатие на ячейку//itemView - это весь элемент карточки из списка
+ itemTemp?.let { it1 -> listener_zakaz.onClickExceptionOrder(it1) }
+
+ }
+ }
+
+ //Функция bind для заполнения
+ fun bind(item: MonthModel) = with(binding) {//Productitem - перпедаем данные
+ itemTemp = item
+ txtDay.text = item.day
+ txtTitle.text = item.date
+ }
+
+ }
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): Holder {
+ val view = LayoutInflater.from(parent.context).inflate(R.layout.rc_item, parent, false)//Создаем(надуваем) list_item
+ return Holder(view, listener_zakaz)//Через Holder возврощаем view
+ }
+
+ override fun onBindViewHolder(holder: Holder, position: Int) {
+ val view = holder.bind(getItem(position))//Заполняем по позиции карточку
+ }
+
+
+ //Comparator - сравнивает старый список и новый и если что-то изменилось, то работает с конкретным изменением списке, а не весь список переписывает
+ class Comparator : DiffUtil.ItemCallback() {
+ override fun areItemsTheSame(oldItem: MonthModel, newItem: MonthModel): Boolean {//Тут лучше всего сравнивать по id//oldItem - элементы старого списка, newItem - элементы нового списка//Возврощает Boolean, тоесть есть изменения или нет
+ return oldItem.id == newItem.id//Сравниваем полностью весь список новы и старый, по очередно по одной карточке и по элементно, то есть нулевой элемент, первый, второй и т.д.. Но лучше сравнивать по id списки, а не просто весь список, так как это эфективнее, так как id уникальный(oldItem.id == newItem.id)
+ }
+
+ override fun areContentsTheSame(
+ oldItem: MonthModel,
+ newItem: MonthModel
+ ): Boolean {//Утут нужно сравнивать весь спсок старых элементов и новых
+ return oldItem == newItem//Сравниваем полностью весь список новы и старый
+ }
+ }
+
+ //Интерфейс нажатия на кнопку удалить товар из корзины
+ interface Listener {
+ fun onClickExceptionOrder(item: MonthModel)
+ }
+
+
+}
+
+
+
+
diff --git a/app/src/main/java/com/example/rehabilitation/dip/Month/MonthModel.kt b/app/src/main/java/com/example/rehabilitation/dip/Month/MonthModel.kt
new file mode 100644
index 0000000..115bc49
--- /dev/null
+++ b/app/src/main/java/com/example/rehabilitation/dip/Month/MonthModel.kt
@@ -0,0 +1,9 @@
+package com.example.rehabilitation.dip.Month
+
+data class MonthModel(
+ val id: String,
+ val day: String,
+ val date: String,
+ val check:String,
+)
+
diff --git a/app/src/main/java/com/example/rehabilitation/fragment/User/SceduleFragment.kt b/app/src/main/java/com/example/rehabilitation/fragment/User/SceduleFragment.kt
deleted file mode 100644
index f44dfed..0000000
--- a/app/src/main/java/com/example/rehabilitation/fragment/User/SceduleFragment.kt
+++ /dev/null
@@ -1,109 +0,0 @@
-package com.example.rehabilitation.fragment.User
-
-import android.os.Bundle
-import androidx.fragment.app.Fragment
-import android.view.LayoutInflater
-import android.view.View
-import android.view.ViewGroup
-import androidx.lifecycle.ViewModelProvider
-import androidx.recyclerview.widget.LinearLayoutManager
-import com.example.rehabilitation.Baza.TaskItem
-import com.example.rehabilitation.Baza.TaskItemAdapter
-import com.example.rehabilitation.Baza.TaskItemClickListener
-import com.example.rehabilitation.Baza.TaskViewModel
-import com.example.rehabilitation.databinding.FragmentSceduleBinding
-
-
-class SceduleFragment(var taskItem: TaskItem?) : Fragment(), TaskItemClickListener {
- private lateinit var binding: FragmentSceduleBinding
- private lateinit var taskViewModel: TaskViewModel
-
- override fun onCreateView(
- inflater: LayoutInflater, container: ViewGroup?,
- savedInstanceState: Bundle?
- ): View? {
- binding = FragmentSceduleBinding.inflate(layoutInflater, container, false)
- return binding.root
- }
-
- override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
- super.onViewCreated(view, savedInstanceState)
-
- //Закрытие карточки определенного дня
- binding.btnExitCardSport.setOnClickListener {
- binding.CLCardSport.visibility = View.GONE
- binding.CLListSport.visibility = View.VISIBLE
- binding.txtNameCard.setText("")
- binding.txtDescCard.setText("")
- }
-
- if(taskItem != null){
- binding.CLCardSport.visibility = View.VISIBLE
- binding.CLListSport.visibility = View.GONE
- binding.txtNameCard.text = taskItem!!.name
- binding.txtDescCard.text = taskItem!!.desc
- }
- else{
- binding.CLCardSport.visibility = View.GONE
- binding.CLListSport.visibility = View.VISIBLE
- }
-
- taskViewModel = ViewModelProvider(requireActivity()).get(TaskViewModel::class.java)
- binding.btnSave.setOnClickListener {
- saveAction()
- }
-
- setRecycleView()
-
- }
-
- private fun setRecycleView() {
- taskViewModel.taskItems.observe(requireActivity()){
- binding.todoListRecycleView.apply {
- layoutManager = LinearLayoutManager(activity?.applicationContext)
- adapter = TaskItemAdapter(it,this@SceduleFragment)
- }
- }
- }
-
- private fun saveAction() {
- val name = binding.edName.text.toString()
- val desc = binding.edDesc.text.toString()
-
- if(taskItem == null){
- val newTask = TaskItem(name,desc,null,null)
- taskViewModel.addTaskItem(newTask)
- }
- else{
- taskViewModel.updateTaskItem(taskItem!!.id,name,desc,null)
- }
- binding.edName.setText("")
- binding.edDesc.setText("")
- }
-
- override fun onResume() {
- super.onResume()
-
- }
-
- override fun onDestroy() {
- super.onDestroy()
-
- }
-
- companion object {
- fun newInstance() = SceduleFragment(null)
- }
-
- override fun editTaskItem(taskitem: TaskItem) {
- binding.CLCardSport.visibility = View.VISIBLE
- binding.CLListSport.visibility = View.GONE
-
- binding.txtNameCard.setText(taskitem.name)
- binding.txtDescCard.setText(taskitem.desc)
- }
-
- override fun completeTaskItem(taskitem: TaskItem) {
- taskItem?.let { taskViewModel.setCompleted(it) }
- }
-}
\ No newline at end of file
diff --git a/app/src/main/res/drawable/B1_1.png b/app/src/main/res/drawable/B1_1.png
new file mode 100644
index 0000000..38d7f95
Binary files /dev/null and b/app/src/main/res/drawable/B1_1.png differ
diff --git a/app/src/main/res/drawable/B1_2.png b/app/src/main/res/drawable/B1_2.png
new file mode 100644
index 0000000..5b0a40e
Binary files /dev/null and b/app/src/main/res/drawable/B1_2.png differ
diff --git a/app/src/main/res/drawable/B2_1.png b/app/src/main/res/drawable/B2_1.png
new file mode 100644
index 0000000..a21f50d
Binary files /dev/null and b/app/src/main/res/drawable/B2_1.png differ
diff --git a/app/src/main/res/drawable/B2_2.png b/app/src/main/res/drawable/B2_2.png
new file mode 100644
index 0000000..cc2e245
Binary files /dev/null and b/app/src/main/res/drawable/B2_2.png differ
diff --git a/app/src/main/res/drawable/B3_1.png b/app/src/main/res/drawable/B3_1.png
new file mode 100644
index 0000000..71bd281
Binary files /dev/null and b/app/src/main/res/drawable/B3_1.png differ
diff --git a/app/src/main/res/drawable/B3_2.png b/app/src/main/res/drawable/B3_2.png
new file mode 100644
index 0000000..7f4d88b
Binary files /dev/null and b/app/src/main/res/drawable/B3_2.png differ
diff --git a/app/src/main/res/drawable/B3_3.png b/app/src/main/res/drawable/B3_3.png
new file mode 100644
index 0000000..96da2a8
Binary files /dev/null and b/app/src/main/res/drawable/B3_3.png differ
diff --git a/app/src/main/res/drawable/B4_1.png b/app/src/main/res/drawable/B4_1.png
new file mode 100644
index 0000000..f273f74
Binary files /dev/null and b/app/src/main/res/drawable/B4_1.png differ
diff --git a/app/src/main/res/drawable/B4_2.png b/app/src/main/res/drawable/B4_2.png
new file mode 100644
index 0000000..4e5cc96
Binary files /dev/null and b/app/src/main/res/drawable/B4_2.png differ
diff --git a/app/src/main/res/drawable/C10_1.png b/app/src/main/res/drawable/C10_1.png
new file mode 100644
index 0000000..3c1f1bf
Binary files /dev/null and b/app/src/main/res/drawable/C10_1.png differ
diff --git a/app/src/main/res/drawable/C10_2.png b/app/src/main/res/drawable/C10_2.png
new file mode 100644
index 0000000..7ce21b7
Binary files /dev/null and b/app/src/main/res/drawable/C10_2.png differ
diff --git a/app/src/main/res/drawable/C10_3.png b/app/src/main/res/drawable/C10_3.png
new file mode 100644
index 0000000..307174e
Binary files /dev/null and b/app/src/main/res/drawable/C10_3.png differ
diff --git a/app/src/main/res/drawable/C11_1.png b/app/src/main/res/drawable/C11_1.png
new file mode 100644
index 0000000..b558e6e
Binary files /dev/null and b/app/src/main/res/drawable/C11_1.png differ
diff --git a/app/src/main/res/drawable/C12_1.png b/app/src/main/res/drawable/C12_1.png
new file mode 100644
index 0000000..fde0a57
Binary files /dev/null and b/app/src/main/res/drawable/C12_1.png differ
diff --git a/app/src/main/res/drawable/C12_2.png b/app/src/main/res/drawable/C12_2.png
new file mode 100644
index 0000000..79e34fb
Binary files /dev/null and b/app/src/main/res/drawable/C12_2.png differ
diff --git a/app/src/main/res/drawable/C13_1.png b/app/src/main/res/drawable/C13_1.png
new file mode 100644
index 0000000..bbb38f0
Binary files /dev/null and b/app/src/main/res/drawable/C13_1.png differ
diff --git a/app/src/main/res/drawable/C13_2.png b/app/src/main/res/drawable/C13_2.png
new file mode 100644
index 0000000..e1c1277
Binary files /dev/null and b/app/src/main/res/drawable/C13_2.png differ
diff --git a/app/src/main/res/drawable/C14_1.png b/app/src/main/res/drawable/C14_1.png
new file mode 100644
index 0000000..de3ec55
Binary files /dev/null and b/app/src/main/res/drawable/C14_1.png differ
diff --git a/app/src/main/res/drawable/C14_2.png b/app/src/main/res/drawable/C14_2.png
new file mode 100644
index 0000000..f8204ac
Binary files /dev/null and b/app/src/main/res/drawable/C14_2.png differ
diff --git a/app/src/main/res/drawable/C15_1.png b/app/src/main/res/drawable/C15_1.png
new file mode 100644
index 0000000..9156b9a
Binary files /dev/null and b/app/src/main/res/drawable/C15_1.png differ
diff --git a/app/src/main/res/drawable/C15_2.png b/app/src/main/res/drawable/C15_2.png
new file mode 100644
index 0000000..6139efd
Binary files /dev/null and b/app/src/main/res/drawable/C15_2.png differ
diff --git a/app/src/main/res/drawable/C16_1.png b/app/src/main/res/drawable/C16_1.png
new file mode 100644
index 0000000..90dd73b
Binary files /dev/null and b/app/src/main/res/drawable/C16_1.png differ
diff --git a/app/src/main/res/drawable/C16_2.png b/app/src/main/res/drawable/C16_2.png
new file mode 100644
index 0000000..d1d05bb
Binary files /dev/null and b/app/src/main/res/drawable/C16_2.png differ
diff --git a/app/src/main/res/drawable/C17_1.png b/app/src/main/res/drawable/C17_1.png
new file mode 100644
index 0000000..284f249
Binary files /dev/null and b/app/src/main/res/drawable/C17_1.png differ
diff --git a/app/src/main/res/drawable/C17_2.png b/app/src/main/res/drawable/C17_2.png
new file mode 100644
index 0000000..5d3741d
Binary files /dev/null and b/app/src/main/res/drawable/C17_2.png differ
diff --git a/app/src/main/res/drawable/C18_1.png b/app/src/main/res/drawable/C18_1.png
new file mode 100644
index 0000000..8ab9c86
Binary files /dev/null and b/app/src/main/res/drawable/C18_1.png differ
diff --git a/app/src/main/res/drawable/C18_2.png b/app/src/main/res/drawable/C18_2.png
new file mode 100644
index 0000000..283ec72
Binary files /dev/null and b/app/src/main/res/drawable/C18_2.png differ
diff --git a/app/src/main/res/drawable/C18_3.png b/app/src/main/res/drawable/C18_3.png
new file mode 100644
index 0000000..1af0652
Binary files /dev/null and b/app/src/main/res/drawable/C18_3.png differ
diff --git a/app/src/main/res/drawable/C1_1.png b/app/src/main/res/drawable/C1_1.png
new file mode 100644
index 0000000..db596c4
Binary files /dev/null and b/app/src/main/res/drawable/C1_1.png differ
diff --git a/app/src/main/res/drawable/C1_2.png b/app/src/main/res/drawable/C1_2.png
new file mode 100644
index 0000000..2f37975
Binary files /dev/null and b/app/src/main/res/drawable/C1_2.png differ
diff --git a/app/src/main/res/drawable/C2_1.png b/app/src/main/res/drawable/C2_1.png
new file mode 100644
index 0000000..195ab42
Binary files /dev/null and b/app/src/main/res/drawable/C2_1.png differ
diff --git a/app/src/main/res/drawable/C2_2.png b/app/src/main/res/drawable/C2_2.png
new file mode 100644
index 0000000..bbfdf70
Binary files /dev/null and b/app/src/main/res/drawable/C2_2.png differ
diff --git a/app/src/main/res/drawable/C3_1.png b/app/src/main/res/drawable/C3_1.png
new file mode 100644
index 0000000..6b1cec2
Binary files /dev/null and b/app/src/main/res/drawable/C3_1.png differ
diff --git a/app/src/main/res/drawable/C3_2.png b/app/src/main/res/drawable/C3_2.png
new file mode 100644
index 0000000..be3a522
Binary files /dev/null and b/app/src/main/res/drawable/C3_2.png differ
diff --git a/app/src/main/res/drawable/C4_1.png b/app/src/main/res/drawable/C4_1.png
new file mode 100644
index 0000000..2e9d4f4
Binary files /dev/null and b/app/src/main/res/drawable/C4_1.png differ
diff --git a/app/src/main/res/drawable/C4_2.png b/app/src/main/res/drawable/C4_2.png
new file mode 100644
index 0000000..c14b7d3
Binary files /dev/null and b/app/src/main/res/drawable/C4_2.png differ
diff --git a/app/src/main/res/drawable/C5_1.png b/app/src/main/res/drawable/C5_1.png
new file mode 100644
index 0000000..54c6668
Binary files /dev/null and b/app/src/main/res/drawable/C5_1.png differ
diff --git a/app/src/main/res/drawable/C5_2.png b/app/src/main/res/drawable/C5_2.png
new file mode 100644
index 0000000..28d6fee
Binary files /dev/null and b/app/src/main/res/drawable/C5_2.png differ
diff --git a/app/src/main/res/drawable/C6_1.png b/app/src/main/res/drawable/C6_1.png
new file mode 100644
index 0000000..4c8122d
Binary files /dev/null and b/app/src/main/res/drawable/C6_1.png differ
diff --git a/app/src/main/res/drawable/C6_2.png b/app/src/main/res/drawable/C6_2.png
new file mode 100644
index 0000000..5c837e9
Binary files /dev/null and b/app/src/main/res/drawable/C6_2.png differ
diff --git a/app/src/main/res/drawable/C6_3.png b/app/src/main/res/drawable/C6_3.png
new file mode 100644
index 0000000..859a503
Binary files /dev/null and b/app/src/main/res/drawable/C6_3.png differ
diff --git a/app/src/main/res/drawable/C7_1.png b/app/src/main/res/drawable/C7_1.png
new file mode 100644
index 0000000..ac9d45f
Binary files /dev/null and b/app/src/main/res/drawable/C7_1.png differ
diff --git a/app/src/main/res/drawable/C8_1.png b/app/src/main/res/drawable/C8_1.png
new file mode 100644
index 0000000..bb72bf6
Binary files /dev/null and b/app/src/main/res/drawable/C8_1.png differ
diff --git a/app/src/main/res/drawable/C8_2.png b/app/src/main/res/drawable/C8_2.png
new file mode 100644
index 0000000..f29a960
Binary files /dev/null and b/app/src/main/res/drawable/C8_2.png differ
diff --git a/app/src/main/res/drawable/C9_1.png b/app/src/main/res/drawable/C9_1.png
new file mode 100644
index 0000000..4e95b28
Binary files /dev/null and b/app/src/main/res/drawable/C9_1.png differ
diff --git a/app/src/main/res/drawable/C9_2.png b/app/src/main/res/drawable/C9_2.png
new file mode 100644
index 0000000..4abd1dc
Binary files /dev/null and b/app/src/main/res/drawable/C9_2.png differ
diff --git a/app/src/main/res/drawable/C9_3.png b/app/src/main/res/drawable/C9_3.png
new file mode 100644
index 0000000..3e27358
Binary files /dev/null and b/app/src/main/res/drawable/C9_3.png differ
diff --git a/app/src/main/res/drawable/J10_1.png b/app/src/main/res/drawable/J10_1.png
new file mode 100644
index 0000000..d77adb2
Binary files /dev/null and b/app/src/main/res/drawable/J10_1.png differ
diff --git a/app/src/main/res/drawable/J10_2.png b/app/src/main/res/drawable/J10_2.png
new file mode 100644
index 0000000..f8e0ab4
Binary files /dev/null and b/app/src/main/res/drawable/J10_2.png differ
diff --git a/app/src/main/res/drawable/J10_3.png b/app/src/main/res/drawable/J10_3.png
new file mode 100644
index 0000000..49bf3d0
Binary files /dev/null and b/app/src/main/res/drawable/J10_3.png differ
diff --git a/app/src/main/res/drawable/J11_1.png b/app/src/main/res/drawable/J11_1.png
new file mode 100644
index 0000000..b675fdc
Binary files /dev/null and b/app/src/main/res/drawable/J11_1.png differ
diff --git a/app/src/main/res/drawable/J11_2.png b/app/src/main/res/drawable/J11_2.png
new file mode 100644
index 0000000..09261db
Binary files /dev/null and b/app/src/main/res/drawable/J11_2.png differ
diff --git a/app/src/main/res/drawable/J11_3.png b/app/src/main/res/drawable/J11_3.png
new file mode 100644
index 0000000..2ff5526
Binary files /dev/null and b/app/src/main/res/drawable/J11_3.png differ
diff --git a/app/src/main/res/drawable/J11_4.png b/app/src/main/res/drawable/J11_4.png
new file mode 100644
index 0000000..a721360
Binary files /dev/null and b/app/src/main/res/drawable/J11_4.png differ
diff --git a/app/src/main/res/drawable/J12_1.png b/app/src/main/res/drawable/J12_1.png
new file mode 100644
index 0000000..d754974
Binary files /dev/null and b/app/src/main/res/drawable/J12_1.png differ
diff --git a/app/src/main/res/drawable/J12_2.png b/app/src/main/res/drawable/J12_2.png
new file mode 100644
index 0000000..03c6d9a
Binary files /dev/null and b/app/src/main/res/drawable/J12_2.png differ
diff --git a/app/src/main/res/drawable/J1_1.png b/app/src/main/res/drawable/J1_1.png
new file mode 100644
index 0000000..93f4c68
Binary files /dev/null and b/app/src/main/res/drawable/J1_1.png differ
diff --git a/app/src/main/res/drawable/J1_2.png b/app/src/main/res/drawable/J1_2.png
new file mode 100644
index 0000000..be7b521
Binary files /dev/null and b/app/src/main/res/drawable/J1_2.png differ
diff --git a/app/src/main/res/drawable/J2_1.png b/app/src/main/res/drawable/J2_1.png
new file mode 100644
index 0000000..85742d8
Binary files /dev/null and b/app/src/main/res/drawable/J2_1.png differ
diff --git a/app/src/main/res/drawable/J2_2.png b/app/src/main/res/drawable/J2_2.png
new file mode 100644
index 0000000..a86f139
Binary files /dev/null and b/app/src/main/res/drawable/J2_2.png differ
diff --git a/app/src/main/res/drawable/J3_1.png b/app/src/main/res/drawable/J3_1.png
new file mode 100644
index 0000000..3d991f8
Binary files /dev/null and b/app/src/main/res/drawable/J3_1.png differ
diff --git a/app/src/main/res/drawable/J3_2.png b/app/src/main/res/drawable/J3_2.png
new file mode 100644
index 0000000..b16c802
Binary files /dev/null and b/app/src/main/res/drawable/J3_2.png differ
diff --git a/app/src/main/res/drawable/J4_1.png b/app/src/main/res/drawable/J4_1.png
new file mode 100644
index 0000000..71558be
Binary files /dev/null and b/app/src/main/res/drawable/J4_1.png differ
diff --git a/app/src/main/res/drawable/J4_2.png b/app/src/main/res/drawable/J4_2.png
new file mode 100644
index 0000000..3e6ddb8
Binary files /dev/null and b/app/src/main/res/drawable/J4_2.png differ
diff --git a/app/src/main/res/drawable/J4_3.png b/app/src/main/res/drawable/J4_3.png
new file mode 100644
index 0000000..336caf8
Binary files /dev/null and b/app/src/main/res/drawable/J4_3.png differ
diff --git a/app/src/main/res/drawable/J5_1.png b/app/src/main/res/drawable/J5_1.png
new file mode 100644
index 0000000..a1fabd8
Binary files /dev/null and b/app/src/main/res/drawable/J5_1.png differ
diff --git a/app/src/main/res/drawable/J6_1.png b/app/src/main/res/drawable/J6_1.png
new file mode 100644
index 0000000..f823a96
Binary files /dev/null and b/app/src/main/res/drawable/J6_1.png differ
diff --git a/app/src/main/res/drawable/J6_2.png b/app/src/main/res/drawable/J6_2.png
new file mode 100644
index 0000000..eee4957
Binary files /dev/null and b/app/src/main/res/drawable/J6_2.png differ
diff --git a/app/src/main/res/drawable/J6_3.png b/app/src/main/res/drawable/J6_3.png
new file mode 100644
index 0000000..464122a
Binary files /dev/null and b/app/src/main/res/drawable/J6_3.png differ
diff --git a/app/src/main/res/drawable/J6_4.png b/app/src/main/res/drawable/J6_4.png
new file mode 100644
index 0000000..24e63bc
Binary files /dev/null and b/app/src/main/res/drawable/J6_4.png differ
diff --git a/app/src/main/res/drawable/J7_1.png b/app/src/main/res/drawable/J7_1.png
new file mode 100644
index 0000000..75769dc
Binary files /dev/null and b/app/src/main/res/drawable/J7_1.png differ
diff --git a/app/src/main/res/drawable/J7_2.png b/app/src/main/res/drawable/J7_2.png
new file mode 100644
index 0000000..4d951d8
Binary files /dev/null and b/app/src/main/res/drawable/J7_2.png differ
diff --git a/app/src/main/res/drawable/J7_3.png b/app/src/main/res/drawable/J7_3.png
new file mode 100644
index 0000000..f3e2fee
Binary files /dev/null and b/app/src/main/res/drawable/J7_3.png differ
diff --git a/app/src/main/res/drawable/J7_4.png b/app/src/main/res/drawable/J7_4.png
new file mode 100644
index 0000000..2c60264
Binary files /dev/null and b/app/src/main/res/drawable/J7_4.png differ
diff --git a/app/src/main/res/drawable/J7_5.png b/app/src/main/res/drawable/J7_5.png
new file mode 100644
index 0000000..f773ce3
Binary files /dev/null and b/app/src/main/res/drawable/J7_5.png differ
diff --git a/app/src/main/res/drawable/J7_6.png b/app/src/main/res/drawable/J7_6.png
new file mode 100644
index 0000000..8d6d4b2
Binary files /dev/null and b/app/src/main/res/drawable/J7_6.png differ
diff --git a/app/src/main/res/drawable/J7_7.png b/app/src/main/res/drawable/J7_7.png
new file mode 100644
index 0000000..7928aa0
Binary files /dev/null and b/app/src/main/res/drawable/J7_7.png differ
diff --git a/app/src/main/res/drawable/J8_1.png b/app/src/main/res/drawable/J8_1.png
new file mode 100644
index 0000000..3514aa2
Binary files /dev/null and b/app/src/main/res/drawable/J8_1.png differ
diff --git a/app/src/main/res/drawable/J8_2.png b/app/src/main/res/drawable/J8_2.png
new file mode 100644
index 0000000..d4f43c6
Binary files /dev/null and b/app/src/main/res/drawable/J8_2.png differ
diff --git a/app/src/main/res/drawable/J8_3.png b/app/src/main/res/drawable/J8_3.png
new file mode 100644
index 0000000..3d34487
Binary files /dev/null and b/app/src/main/res/drawable/J8_3.png differ
diff --git a/app/src/main/res/drawable/J9_1.png b/app/src/main/res/drawable/J9_1.png
new file mode 100644
index 0000000..31f97b5
Binary files /dev/null and b/app/src/main/res/drawable/J9_1.png differ
diff --git a/app/src/main/res/layout/activity_feedback.xml b/app/src/main/res/layout/activity_feedback.xml
new file mode 100644
index 0000000..6b1ad41
--- /dev/null
+++ b/app/src/main/res/layout/activity_feedback.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_setting.xml b/app/src/main/res/layout/activity_setting.xml
index a4a300d..0217d4a 100644
--- a/app/src/main/res/layout/activity_setting.xml
+++ b/app/src/main/res/layout/activity_setting.xml
@@ -2,6 +2,7 @@
@@ -13,6 +14,7 @@
android:layout_marginStart="10dp"
android:layout_marginTop="10dp"
android:background="@drawable/door_24"
+ android:visibility="visible"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
@@ -26,17 +28,19 @@
android:text="Профиль"
android:textColor="#000000"
android:textSize="24sp"
+ android:visibility="visible"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
+ app:layout_constraintEnd_toEndOf="@+id/cvSettingUser"
+ app:layout_constraintStart_toStartOf="@+id/cvSettingUser"
+ app:layout_constraintTop_toBottomOf="@+id/cvSettingUser">
+ app:layout_constraintEnd_toEndOf="@+id/cvStatistics"
+ app:layout_constraintStart_toStartOf="@+id/cvStatistics"
+ app:layout_constraintTop_toBottomOf="@+id/cvStatistics">
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_statistics.xml b/app/src/main/res/layout/activity_statistics.xml
new file mode 100644
index 0000000..87da473
--- /dev/null
+++ b/app/src/main/res/layout/activity_statistics.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_user_setting.xml b/app/src/main/res/layout/activity_user_setting.xml
new file mode 100644
index 0000000..5c62a91
--- /dev/null
+++ b/app/src/main/res/layout/activity_user_setting.xml
@@ -0,0 +1,316 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_calendar.xml b/app/src/main/res/layout/fragment_calendar.xml
index 40f6c84..977ed23 100644
--- a/app/src/main/res/layout/fragment_calendar.xml
+++ b/app/src/main/res/layout/fragment_calendar.xml
@@ -4,16 +4,29 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
- tools:context=".fragment.User.CalendarFragment">
+ tools:context=".User.fragmentUser.CalendarFragment">
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_feedback.xml b/app/src/main/res/layout/fragment_feedback.xml
new file mode 100644
index 0000000..0cedfbe
--- /dev/null
+++ b/app/src/main/res/layout/fragment_feedback.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_home.xml b/app/src/main/res/layout/fragment_home.xml
index 153a7d5..45c7b81 100644
--- a/app/src/main/res/layout/fragment_home.xml
+++ b/app/src/main/res/layout/fragment_home.xml
@@ -4,7 +4,7 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
- tools:context=".fragment.User.HomeFragment">
+ tools:context=".User.fragmentUser.HomeFragment">
+ tools:context=".User.fragmentUser.InformationFragment">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_progres.xml b/app/src/main/res/layout/fragment_progres.xml
index 63790b4..da256a4 100644
--- a/app/src/main/res/layout/fragment_progres.xml
+++ b/app/src/main/res/layout/fragment_progres.xml
@@ -4,7 +4,7 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
- tools:context=".fragment.User.ProgresFragment">
+ tools:context=".User.fragmentUser.ProgresFragment">
+ tools:context=".User.fragmentUser.SceduleFragment">
+
+
+
+
+
+
+
+ android:visibility="gone">
-
-
-
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toTopOf="parent" />
-
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toTopOf="parent" />
+ app:layout_constraintTop_toBottomOf="@+id/textView8" />
+
+
@@ -67,7 +92,7 @@
android:id="@+id/CLCardSport"
android:layout_width="match_parent"
android:layout_height="match_parent"
- android:visibility="gone">
+ android:visibility="visible">
+
+
+ app:layout_constraintStart_toStartOf="@+id/imageView2"
+ app:layout_constraintTop_toBottomOf="@+id/imageView2" />
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toBottomOf="@+id/rcViewImage" />
+
+
diff --git a/app/src/main/res/layout/fragment_statistics.xml b/app/src/main/res/layout/fragment_statistics.xml
new file mode 100644
index 0000000..38b21f7
--- /dev/null
+++ b/app/src/main/res/layout/fragment_statistics.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_user_setting.xml b/app/src/main/res/layout/fragment_user_setting.xml
new file mode 100644
index 0000000..cdf1cc8
--- /dev/null
+++ b/app/src/main/res/layout/fragment_user_setting.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/image_sport_cards.xml b/app/src/main/res/layout/image_sport_cards.xml
new file mode 100644
index 0000000..77fe1ed
--- /dev/null
+++ b/app/src/main/res/layout/image_sport_cards.xml
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/rc_item.xml b/app/src/main/res/layout/rc_item.xml
index 9a29d50..a35c005 100644
--- a/app/src/main/res/layout/rc_item.xml
+++ b/app/src/main/res/layout/rc_item.xml
@@ -6,34 +6,68 @@
android:layout_height="wrap_content"
android:layout_marginStart="3dp"
android:layout_marginTop="3dp"
- android:layout_marginEnd="3dp"
- android:background="#4D728F">
+ android:layout_marginEnd="3dp">
-
+ app:layout_constraintTop_toTopOf="parent">
+
+
+
+
+
+
+
+
+
+
+
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/rc_item_day.xml b/app/src/main/res/layout/rc_item_day.xml
new file mode 100644
index 0000000..4392ef4
--- /dev/null
+++ b/app/src/main/res/layout/rc_item_day.xml
@@ -0,0 +1,74 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file