123
							
								
								
									
										123
									
								
								.idea/codeStyles/Project.xml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1,123 @@
 | 
			
		||||
<component name="ProjectCodeStyleConfiguration">
 | 
			
		||||
  <code_scheme name="Project" version="173">
 | 
			
		||||
    <JetCodeStyleSettings>
 | 
			
		||||
      <option name="CODE_STYLE_DEFAULTS" value="KOTLIN_OFFICIAL" />
 | 
			
		||||
    </JetCodeStyleSettings>
 | 
			
		||||
    <codeStyleSettings language="XML">
 | 
			
		||||
      <option name="FORCE_REARRANGE_MODE" value="1" />
 | 
			
		||||
      <indentOptions>
 | 
			
		||||
        <option name="CONTINUATION_INDENT_SIZE" value="4" />
 | 
			
		||||
      </indentOptions>
 | 
			
		||||
      <arrangement>
 | 
			
		||||
        <rules>
 | 
			
		||||
          <section>
 | 
			
		||||
            <rule>
 | 
			
		||||
              <match>
 | 
			
		||||
                <AND>
 | 
			
		||||
                  <NAME>xmlns:android</NAME>
 | 
			
		||||
                  <XML_ATTRIBUTE />
 | 
			
		||||
                  <XML_NAMESPACE>^$</XML_NAMESPACE>
 | 
			
		||||
                </AND>
 | 
			
		||||
              </match>
 | 
			
		||||
            </rule>
 | 
			
		||||
          </section>
 | 
			
		||||
          <section>
 | 
			
		||||
            <rule>
 | 
			
		||||
              <match>
 | 
			
		||||
                <AND>
 | 
			
		||||
                  <NAME>xmlns:.*</NAME>
 | 
			
		||||
                  <XML_ATTRIBUTE />
 | 
			
		||||
                  <XML_NAMESPACE>^$</XML_NAMESPACE>
 | 
			
		||||
                </AND>
 | 
			
		||||
              </match>
 | 
			
		||||
              <order>BY_NAME</order>
 | 
			
		||||
            </rule>
 | 
			
		||||
          </section>
 | 
			
		||||
          <section>
 | 
			
		||||
            <rule>
 | 
			
		||||
              <match>
 | 
			
		||||
                <AND>
 | 
			
		||||
                  <NAME>.*:id</NAME>
 | 
			
		||||
                  <XML_ATTRIBUTE />
 | 
			
		||||
                  <XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
 | 
			
		||||
                </AND>
 | 
			
		||||
              </match>
 | 
			
		||||
            </rule>
 | 
			
		||||
          </section>
 | 
			
		||||
          <section>
 | 
			
		||||
            <rule>
 | 
			
		||||
              <match>
 | 
			
		||||
                <AND>
 | 
			
		||||
                  <NAME>.*:name</NAME>
 | 
			
		||||
                  <XML_ATTRIBUTE />
 | 
			
		||||
                  <XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
 | 
			
		||||
                </AND>
 | 
			
		||||
              </match>
 | 
			
		||||
            </rule>
 | 
			
		||||
          </section>
 | 
			
		||||
          <section>
 | 
			
		||||
            <rule>
 | 
			
		||||
              <match>
 | 
			
		||||
                <AND>
 | 
			
		||||
                  <NAME>name</NAME>
 | 
			
		||||
                  <XML_ATTRIBUTE />
 | 
			
		||||
                  <XML_NAMESPACE>^$</XML_NAMESPACE>
 | 
			
		||||
                </AND>
 | 
			
		||||
              </match>
 | 
			
		||||
            </rule>
 | 
			
		||||
          </section>
 | 
			
		||||
          <section>
 | 
			
		||||
            <rule>
 | 
			
		||||
              <match>
 | 
			
		||||
                <AND>
 | 
			
		||||
                  <NAME>style</NAME>
 | 
			
		||||
                  <XML_ATTRIBUTE />
 | 
			
		||||
                  <XML_NAMESPACE>^$</XML_NAMESPACE>
 | 
			
		||||
                </AND>
 | 
			
		||||
              </match>
 | 
			
		||||
            </rule>
 | 
			
		||||
          </section>
 | 
			
		||||
          <section>
 | 
			
		||||
            <rule>
 | 
			
		||||
              <match>
 | 
			
		||||
                <AND>
 | 
			
		||||
                  <NAME>.*</NAME>
 | 
			
		||||
                  <XML_ATTRIBUTE />
 | 
			
		||||
                  <XML_NAMESPACE>^$</XML_NAMESPACE>
 | 
			
		||||
                </AND>
 | 
			
		||||
              </match>
 | 
			
		||||
              <order>BY_NAME</order>
 | 
			
		||||
            </rule>
 | 
			
		||||
          </section>
 | 
			
		||||
          <section>
 | 
			
		||||
            <rule>
 | 
			
		||||
              <match>
 | 
			
		||||
                <AND>
 | 
			
		||||
                  <NAME>.*</NAME>
 | 
			
		||||
                  <XML_ATTRIBUTE />
 | 
			
		||||
                  <XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
 | 
			
		||||
                </AND>
 | 
			
		||||
              </match>
 | 
			
		||||
              <order>ANDROID_ATTRIBUTE_ORDER</order>
 | 
			
		||||
            </rule>
 | 
			
		||||
          </section>
 | 
			
		||||
          <section>
 | 
			
		||||
            <rule>
 | 
			
		||||
              <match>
 | 
			
		||||
                <AND>
 | 
			
		||||
                  <NAME>.*</NAME>
 | 
			
		||||
                  <XML_ATTRIBUTE />
 | 
			
		||||
                  <XML_NAMESPACE>.*</XML_NAMESPACE>
 | 
			
		||||
                </AND>
 | 
			
		||||
              </match>
 | 
			
		||||
              <order>BY_NAME</order>
 | 
			
		||||
            </rule>
 | 
			
		||||
          </section>
 | 
			
		||||
        </rules>
 | 
			
		||||
      </arrangement>
 | 
			
		||||
    </codeStyleSettings>
 | 
			
		||||
    <codeStyleSettings language="kotlin">
 | 
			
		||||
      <option name="CODE_STYLE_DEFAULTS" value="KOTLIN_OFFICIAL" />
 | 
			
		||||
    </codeStyleSettings>
 | 
			
		||||
  </code_scheme>
 | 
			
		||||
</component>
 | 
			
		||||
							
								
								
									
										5
									
								
								.idea/codeStyles/codeStyleConfig.xml
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						@ -0,0 +1,5 @@
 | 
			
		||||
<component name="ProjectCodeStyleConfiguration">
 | 
			
		||||
  <state>
 | 
			
		||||
    <option name="USE_PER_PROJECT_SETTINGS" value="true" />
 | 
			
		||||
  </state>
 | 
			
		||||
</component>
 | 
			
		||||
							
								
								
									
										2
									
								
								.idea/compiler.xml
									
									
									
										generated
									
									
									
								
							
							
						
						@ -1,6 +1,6 @@
 | 
			
		||||
<?xml version="1.0" encoding="UTF-8"?>
 | 
			
		||||
<project version="4">
 | 
			
		||||
  <component name="CompilerConfiguration">
 | 
			
		||||
    <bytecodeTargetLevel target="11" />
 | 
			
		||||
    <bytecodeTargetLevel target="17" />
 | 
			
		||||
  </component>
 | 
			
		||||
</project>
 | 
			
		||||
							
								
								
									
										1
									
								
								.idea/gradle.xml
									
									
									
										generated
									
									
									
								
							
							
						
						@ -17,5 +17,6 @@
 | 
			
		||||
        </option>
 | 
			
		||||
      </GradleProjectSettings>
 | 
			
		||||
    </option>
 | 
			
		||||
    <option name="offlineMode" value="true" />
 | 
			
		||||
  </component>
 | 
			
		||||
</project>
 | 
			
		||||
							
								
								
									
										3
									
								
								.idea/misc.xml
									
									
									
										generated
									
									
									
								
							
							
						
						@ -1,7 +1,6 @@
 | 
			
		||||
<?xml version="1.0" encoding="UTF-8"?>
 | 
			
		||||
<project version="4">
 | 
			
		||||
  <component name="ExternalStorageConfigurationManager" enabled="true" />
 | 
			
		||||
  <component name="ProjectRootManager" version="2" languageLevel="JDK_11" default="true" project-jdk-name="11" project-jdk-type="JavaSDK">
 | 
			
		||||
  <component name="ProjectRootManager" version="2" languageLevel="JDK_17" project-jdk-name="jbr-17" project-jdk-type="JavaSDK">
 | 
			
		||||
    <output url="file://$PROJECT_DIR$/build/classes" />
 | 
			
		||||
  </component>
 | 
			
		||||
  <component name="ProjectType">
 | 
			
		||||
 | 
			
		||||
@ -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'
 | 
			
		||||
 | 
			
		||||
@ -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">
 | 
			
		||||
        <activity
 | 
			
		||||
            android:name=".Admin.activityAdmin.FeedbackActivity"
 | 
			
		||||
            android:exported="false" />
 | 
			
		||||
        <activity
 | 
			
		||||
            android:name=".Admin.activityAdmin.StatisticsActivity"
 | 
			
		||||
            android:exported="false" />
 | 
			
		||||
        <activity
 | 
			
		||||
            android:name=".Admin.activityAdmin.UserSettingActivity"
 | 
			
		||||
            android:exported="false" />
 | 
			
		||||
        <activity
 | 
			
		||||
            android:name=".SettingActivity"
 | 
			
		||||
            android:exported="false" />
 | 
			
		||||
        <activity
 | 
			
		||||
            android:name=".MainActivity"
 | 
			
		||||
            android:exported="true">
 | 
			
		||||
            android:exported="true"
 | 
			
		||||
            android:windowSoftInputMode="adjustPan|stateAlwaysHidden">
 | 
			
		||||
            <intent-filter>
 | 
			
		||||
                <action android:name="android.intent.action.MAIN" />
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -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()
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@ -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()
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@ -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<MonthModel>()
 | 
			
		||||
        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<DayModel>()
 | 
			
		||||
//        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" +
 | 
			
		||||
            "Со временем все упражнения можно выполнять с утяжелителем."
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
@ -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()
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@ -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()
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@ -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()
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@ -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()
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@ -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)
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
@ -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<TaskItem>,
 | 
			
		||||
    private val clickListener: TaskItemClickListener
 | 
			
		||||
 | 
			
		||||
):RecyclerView.Adapter<TaskItemViewHolder>() {
 | 
			
		||||
 | 
			
		||||
    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])
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@ -1,7 +0,0 @@
 | 
			
		||||
package com.example.rehabilitation.Baza
 | 
			
		||||
 | 
			
		||||
interface TaskItemClickListener {
 | 
			
		||||
    fun editTaskItem(taskitem:TaskItem)
 | 
			
		||||
    fun completeTaskItem(taskitem:TaskItem)
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
@ -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 = ""
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@ -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<MutableList<TaskItem>>()
 | 
			
		||||
 | 
			
		||||
    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!!)
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
@ -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);
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -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)
 | 
			
		||||
       }
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
@ -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<DayModel>()
 | 
			
		||||
        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) {
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@ -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() {
 | 
			
		||||
@ -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
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -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
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -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<ImageSportModel>()
 | 
			
		||||
            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<MonthModel>()
 | 
			
		||||
        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<DayModel>()
 | 
			
		||||
        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
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
@ -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<List<Item>>
 | 
			
		||||
 | 
			
		||||
    //Список определенного дня
 | 
			
		||||
//    @Query("SELECT * FROM itemDay")
 | 
			
		||||
//    fun getAllItemDay(): Flow<List<ItemDay>>
 | 
			
		||||
 | 
			
		||||
    //Обновление по переднному параметру
 | 
			
		||||
    @Query("UPDATE items SET `check` = 1 WHERE id = :id")
 | 
			
		||||
    fun updateItems(id : String)
 | 
			
		||||
 | 
			
		||||
     //Очистка таблицы
 | 
			
		||||
    @Query("DELETE FROM items")
 | 
			
		||||
    fun deleteItem()
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
@ -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<List<ItemDaySport>>
 | 
			
		||||
 | 
			
		||||
    //Список определенного дня
 | 
			
		||||
    @Query("SELECT * FROM itemDaySport WHERE day = :day ORDER BY id ASC")
 | 
			
		||||
    fun getAllItemDaySport(day:String): Flow<List<ItemDaySport>>
 | 
			
		||||
 | 
			
		||||
    //Очистка таблицы
 | 
			
		||||
    @Query("DELETE FROM itemDaySport")
 | 
			
		||||
    fun deleteItemDaySport()
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										26
									
								
								app/src/main/java/com/example/rehabilitation/db/DaoImage.kt
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -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<List<ItemImage>>
 | 
			
		||||
 | 
			
		||||
    //Список определенного дня
 | 
			
		||||
    @Query("SELECT * FROM itemImage WHERE article = :article ORDER BY id ASC")
 | 
			
		||||
    fun getAllItemImage(article:String): Flow<List<ItemImage>>
 | 
			
		||||
 | 
			
		||||
    //Очистка таблицы
 | 
			
		||||
    @Query("DELETE FROM itemImage")
 | 
			
		||||
    fun deleteItemImage()
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
@ -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<List<ItemSportCategory>>
 | 
			
		||||
 | 
			
		||||
    //Список определенного дня
 | 
			
		||||
//    @Query("SELECT * FROM itemDay")
 | 
			
		||||
//    fun getAllItemDay(): Flow<List<ItemDay>>
 | 
			
		||||
 | 
			
		||||
    //Обновление по переднному параметру
 | 
			
		||||
//    @Query("UPDATE itemSportCategory SET `check` = 1 WHERE id = :id")
 | 
			
		||||
//    fun updateItemsSportCategory(id : String)
 | 
			
		||||
 | 
			
		||||
     //Очистка таблицы
 | 
			
		||||
    @Query("DELETE FROM itemSportCategory")
 | 
			
		||||
    fun deleteItemSportCategory()
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
@ -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
 | 
			
		||||
    )
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -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,
 | 
			
		||||
 | 
			
		||||
)
 | 
			
		||||
							
								
								
									
										17
									
								
								app/src/main/java/com/example/rehabilitation/db/ItemImage.kt
									
									
									
									
									
										Normal file
									
								
							
							
						
						@ -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,
 | 
			
		||||
)
 | 
			
		||||
@ -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
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
@ -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()
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@ -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<DayModel, DayAdapter.Holder>(
 | 
			
		||||
    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<DayModel>() {
 | 
			
		||||
        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)
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -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,
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
@ -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<ImageSportModel, ImageSportAdapter.Holder>(
 | 
			
		||||
    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<ImageSportModel>() {
 | 
			
		||||
        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//Сравниваем полностью весь список новы и старый
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -0,0 +1,8 @@
 | 
			
		||||
package com.example.rehabilitation.dip.Image
 | 
			
		||||
 | 
			
		||||
data class ImageSportModel(
 | 
			
		||||
    val id: String,
 | 
			
		||||
    val imageName: String,
 | 
			
		||||
    val article: String,
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
@ -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<MonthModel>()//Сюда передается новая информация на один день(для слайдера)
 | 
			
		||||
    val liveListList= MutableLiveData<List<MonthModel>>()//Сюда передается новая информация на один день(для все продукции - всего списка)
 | 
			
		||||
 | 
			
		||||
    val liveDayCurrent = MutableLiveData<DayModel>()//Сюда передается новая информация на один день(для слайдера)
 | 
			
		||||
    val liveDayList= MutableLiveData<List<DayModel>>()//Сюда передается новая информация на один день(для все продукции - всего списка)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    val liveImageCurrent = MutableLiveData<ImageSportModel>()//Сюда передается новая информация на один день(для слайдера)
 | 
			
		||||
    val liveImageList= MutableLiveData<List<ImageSportModel>>()//Сюда передается новая информация на один день(для все продукции - всего списка)
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
@ -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<MonthModel, MonthAdapter.Holder>(
 | 
			
		||||
    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<MonthModel>() {
 | 
			
		||||
        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)
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -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,
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
@ -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) }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								app/src/main/res/drawable/B1_1.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 333 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								app/src/main/res/drawable/B1_2.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 339 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								app/src/main/res/drawable/B2_1.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 382 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								app/src/main/res/drawable/B2_2.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 385 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								app/src/main/res/drawable/B3_1.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 308 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								app/src/main/res/drawable/B3_2.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 334 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								app/src/main/res/drawable/B3_3.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 359 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								app/src/main/res/drawable/B4_1.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 318 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								app/src/main/res/drawable/B4_2.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 365 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								app/src/main/res/drawable/C10_1.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 320 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								app/src/main/res/drawable/C10_2.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 318 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								app/src/main/res/drawable/C10_3.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 301 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								app/src/main/res/drawable/C11_1.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 502 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								app/src/main/res/drawable/C12_1.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 455 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								app/src/main/res/drawable/C12_2.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 426 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								app/src/main/res/drawable/C13_1.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 417 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								app/src/main/res/drawable/C13_2.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 422 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								app/src/main/res/drawable/C14_1.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 324 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								app/src/main/res/drawable/C14_2.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 348 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								app/src/main/res/drawable/C15_1.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 318 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								app/src/main/res/drawable/C15_2.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 344 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								app/src/main/res/drawable/C16_1.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 376 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								app/src/main/res/drawable/C16_2.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 356 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								app/src/main/res/drawable/C17_1.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 293 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								app/src/main/res/drawable/C17_2.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 311 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								app/src/main/res/drawable/C18_1.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 279 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								app/src/main/res/drawable/C18_2.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 316 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								app/src/main/res/drawable/C18_3.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 322 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								app/src/main/res/drawable/C1_1.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 296 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								app/src/main/res/drawable/C1_2.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 297 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								app/src/main/res/drawable/C2_1.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 316 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								app/src/main/res/drawable/C2_2.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 355 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								app/src/main/res/drawable/C3_1.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 278 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								app/src/main/res/drawable/C3_2.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 350 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								app/src/main/res/drawable/C4_1.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 333 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								app/src/main/res/drawable/C4_2.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 365 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								app/src/main/res/drawable/C5_1.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 329 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								app/src/main/res/drawable/C5_2.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 340 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								app/src/main/res/drawable/C6_1.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 315 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								app/src/main/res/drawable/C6_2.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 352 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								app/src/main/res/drawable/C6_3.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 307 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								app/src/main/res/drawable/C7_1.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 543 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								app/src/main/res/drawable/C8_1.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 395 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								app/src/main/res/drawable/C8_2.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 396 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								app/src/main/res/drawable/C9_1.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 361 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								app/src/main/res/drawable/C9_2.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 372 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								app/src/main/res/drawable/C9_3.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 412 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								app/src/main/res/drawable/J10_1.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 310 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								app/src/main/res/drawable/J10_2.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 362 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								app/src/main/res/drawable/J10_3.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 364 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								app/src/main/res/drawable/J11_1.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 246 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								app/src/main/res/drawable/J11_2.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 295 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								app/src/main/res/drawable/J11_3.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 272 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								app/src/main/res/drawable/J11_4.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 235 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								app/src/main/res/drawable/J12_1.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 297 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								app/src/main/res/drawable/J12_2.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 293 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								app/src/main/res/drawable/J1_1.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 386 KiB  |