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"?> | <?xml version="1.0" encoding="UTF-8"?> | ||||||
| <project version="4"> | <project version="4"> | ||||||
|   <component name="CompilerConfiguration"> |   <component name="CompilerConfiguration"> | ||||||
|     <bytecodeTargetLevel target="11" /> |     <bytecodeTargetLevel target="17" /> | ||||||
|   </component> |   </component> | ||||||
| </project> | </project> | ||||||
							
								
								
									
										1
									
								
								.idea/gradle.xml
									
									
									
										generated
									
									
									
								
							
							
						
						| @ -17,5 +17,6 @@ | |||||||
|         </option> |         </option> | ||||||
|       </GradleProjectSettings> |       </GradleProjectSettings> | ||||||
|     </option> |     </option> | ||||||
|  |     <option name="offlineMode" value="true" /> | ||||||
|   </component> |   </component> | ||||||
| </project> | </project> | ||||||
							
								
								
									
										3
									
								
								.idea/misc.xml
									
									
									
										generated
									
									
									
								
							
							
						
						| @ -1,7 +1,6 @@ | |||||||
| <?xml version="1.0" encoding="UTF-8"?> |  | ||||||
| <project version="4"> | <project version="4"> | ||||||
|   <component name="ExternalStorageConfigurationManager" enabled="true" /> |   <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" /> |     <output url="file://$PROJECT_DIR$/build/classes" /> | ||||||
|   </component> |   </component> | ||||||
|   <component name="ProjectType"> |   <component name="ProjectType"> | ||||||
|  | |||||||
| @ -40,7 +40,12 @@ android { | |||||||
| dependencies { | dependencies { | ||||||
|     implementation 'androidx.room:room-ktx:2.5.2' |     implementation 'androidx.room:room-ktx:2.5.2' | ||||||
|     implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.6.1' |     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' |     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.core:core-ktx:1.7.0' | ||||||
|     implementation 'androidx.appcompat:appcompat:1.6.1' |     implementation 'androidx.appcompat:appcompat:1.6.1' | ||||||
|     implementation 'com.google.android.material:material:1.9.0' |     implementation 'com.google.android.material:material:1.9.0' | ||||||
|  | |||||||
| @ -8,16 +8,27 @@ | |||||||
|         android:fullBackupContent="@xml/backup_rules" |         android:fullBackupContent="@xml/backup_rules" | ||||||
|         android:icon="@mipmap/ic_launcher" |         android:icon="@mipmap/ic_launcher" | ||||||
|         android:label="@string/app_name" |         android:label="@string/app_name" | ||||||
|  |         android:requestLegacyExternalStorage="true" | ||||||
|         android:roundIcon="@mipmap/ic_launcher_logo_rehabilitation" |         android:roundIcon="@mipmap/ic_launcher_logo_rehabilitation" | ||||||
|         android:supportsRtl="true" |         android:supportsRtl="true" | ||||||
|         android:theme="@style/Theme.Rehabilitation" |         android:theme="@style/Theme.Rehabilitation" | ||||||
|         tools:targetApi="31"> |         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 |         <activity | ||||||
|             android:name=".SettingActivity" |             android:name=".SettingActivity" | ||||||
|             android:exported="false" /> |             android:exported="false" /> | ||||||
|         <activity |         <activity | ||||||
|             android:name=".MainActivity" |             android:name=".MainActivity" | ||||||
|             android:exported="true"> |             android:exported="true" | ||||||
|  |             android:windowSoftInputMode="adjustPan|stateAlwaysHidden"> | ||||||
|             <intent-filter> |             <intent-filter> | ||||||
|                 <action android:name="android.intent.action.MAIN" /> |                 <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 android.os.Bundle | ||||||
| import androidx.fragment.app.Fragment | import androidx.fragment.app.Fragment | ||||||
| @ -6,22 +6,21 @@ import android.view.LayoutInflater | |||||||
| import android.view.View | import android.view.View | ||||||
| import android.view.ViewGroup | import android.view.ViewGroup | ||||||
| import com.example.rehabilitation.R | import com.example.rehabilitation.R | ||||||
| import com.example.rehabilitation.databinding.FragmentCalendarBinding | import com.example.rehabilitation.databinding.FragmentUserSettingBinding | ||||||
| 
 | 
 | ||||||
| 
 | class UserSettingFragment : Fragment() { | ||||||
| class CalendarFragment : Fragment() { |     private lateinit var binding: FragmentUserSettingBinding | ||||||
|     private lateinit var binding: FragmentCalendarBinding |  | ||||||
| 
 | 
 | ||||||
|     override fun onCreateView( |     override fun onCreateView( | ||||||
|         inflater: LayoutInflater, container: ViewGroup?, |         inflater: LayoutInflater, container: ViewGroup?, | ||||||
|         savedInstanceState: Bundle? |         savedInstanceState: Bundle? | ||||||
|     ): View? { |     ): View? { | ||||||
|         binding = FragmentCalendarBinding.inflate(layoutInflater,container,false) |         binding = FragmentUserSettingBinding.inflate(layoutInflater,container,false) | ||||||
|         return binding.root |         return binding.root | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     companion object { |     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 | package com.example.rehabilitation | ||||||
| 
 | 
 | ||||||
|  | import android.annotation.SuppressLint | ||||||
| import android.content.Intent | import android.content.Intent | ||||||
| import androidx.appcompat.app.AppCompatActivity |  | ||||||
| import android.os.Bundle | 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.databinding.ActivityMainBinding | ||||||
| import com.example.rehabilitation.fragment.User.* |  | ||||||
| 
 | 
 | ||||||
| class MainActivity : AppCompatActivity() { | class MainActivity : AppCompatActivity() { | ||||||
|     private lateinit var binding: ActivityMainBinding |     private lateinit var binding: ActivityMainBinding | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  |     @SuppressLint("DiscouragedApi") | ||||||
|     override fun onCreate(savedInstanceState: Bundle?) { |     override fun onCreate(savedInstanceState: Bundle?) { | ||||||
|         super.onCreate(savedInstanceState) |         super.onCreate(savedInstanceState) | ||||||
|         binding = ActivityMainBinding.inflate(layoutInflater) |         binding = ActivityMainBinding.inflate(layoutInflater) | ||||||
| @ -27,6 +33,11 @@ class MainActivity : AppCompatActivity() { | |||||||
|             val intent = Intent(this, SettingActivity::class.java) |             val intent = Intent(this, SettingActivity::class.java) | ||||||
|             startActivity(intent) |             startActivity(intent) | ||||||
|         } |         } | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |         //binding.imageView3.resources.getIdentifier("b3_1","drawable",this.packageName); | ||||||
|  | 
 | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -3,7 +3,14 @@ package com.example.rehabilitation | |||||||
| import android.content.Intent | import android.content.Intent | ||||||
| import androidx.appcompat.app.AppCompatActivity | import androidx.appcompat.app.AppCompatActivity | ||||||
| import android.os.Bundle | 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.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() { | class SettingActivity : AppCompatActivity() { | ||||||
|     private lateinit var binding: ActivitySettingBinding |     private lateinit var binding: ActivitySettingBinding | ||||||
| @ -12,9 +19,33 @@ class SettingActivity : AppCompatActivity() { | |||||||
|         binding = ActivitySettingBinding.inflate(layoutInflater) |         binding = ActivitySettingBinding.inflate(layoutInflater) | ||||||
|         setContentView(binding.root) |         setContentView(binding.root) | ||||||
| 
 | 
 | ||||||
|  | //        //Выводим фрагмент как экран | ||||||
|  | //        supportFragmentManager.beginTransaction() | ||||||
|  | //            .replace(R.id.CLMainSetting, MainSettingFragment.newInstance()) | ||||||
|  | //            .commit()//Заменяем наш экран на фрагмент (используем наш экран как основу)//R.id.placeHolder - куда всталяем //MainFragment.newInstance() - это то что мы вставляем | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|         binding.btnExitSetting.setOnClickListener { |         binding.btnExitSetting.setOnClickListener { | ||||||
|             finish() |             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 android.os.Bundle | ||||||
| import androidx.fragment.app.Fragment | import androidx.fragment.app.Fragment | ||||||
| import android.view.LayoutInflater | import android.view.LayoutInflater | ||||||
| import android.view.View | import android.view.View | ||||||
| import android.view.ViewGroup | import android.view.ViewGroup | ||||||
| import com.example.rehabilitation.R |  | ||||||
| import com.example.rehabilitation.databinding.FragmentHomeBinding | import com.example.rehabilitation.databinding.FragmentHomeBinding | ||||||
| 
 | 
 | ||||||
| class HomeFragment : Fragment() { | class HomeFragment : Fragment() { | ||||||
| @ -1,11 +1,10 @@ | |||||||
| package com.example.rehabilitation.fragment.User | package com.example.rehabilitation.User.fragmentUser | ||||||
| 
 | 
 | ||||||
| import android.os.Bundle | import android.os.Bundle | ||||||
| import androidx.fragment.app.Fragment | import androidx.fragment.app.Fragment | ||||||
| import android.view.LayoutInflater | import android.view.LayoutInflater | ||||||
| import android.view.View | import android.view.View | ||||||
| import android.view.ViewGroup | import android.view.ViewGroup | ||||||
| import com.example.rehabilitation.R |  | ||||||
| import com.example.rehabilitation.databinding.FragmentInformationBinding | 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 android.os.Bundle | ||||||
| import androidx.fragment.app.Fragment | import androidx.fragment.app.Fragment | ||||||
| import android.view.LayoutInflater | import android.view.LayoutInflater | ||||||
| import android.view.View | import android.view.View | ||||||
| import android.view.ViewGroup | import android.view.ViewGroup | ||||||
| import com.example.rehabilitation.R |  | ||||||
| import com.example.rehabilitation.databinding.FragmentProgresBinding | 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 | package com.example.rehabilitation.db | ||||||
| 
 | 
 | ||||||
| import androidx.room.Dao | import androidx.room.Dao | ||||||
|  | import androidx.room.Delete | ||||||
| import androidx.room.Insert | import androidx.room.Insert | ||||||
|  | import androidx.room.OnConflictStrategy | ||||||
| import androidx.room.Query | import androidx.room.Query | ||||||
| import kotlinx.coroutines.flow.Flow | import kotlinx.coroutines.flow.Flow | ||||||
| 
 | 
 | ||||||
| @Dao | @Dao | ||||||
| interface Dao { | interface Dao { | ||||||
|  |     //Таблица по по дням | ||||||
|     @Insert |     @Insert | ||||||
|     fun insertItem(item:Item) |     fun insertItem(item:Item) | ||||||
|     @Query("SELECT * FROM items") |     //Таблица определенного дня | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     //Список по дням | ||||||
|  |     @Query("SELECT * FROM items ORDER BY day ASC") | ||||||
|     fun getAllItems(): Flow<List<Item>> |     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.ColumnInfo | ||||||
| import androidx.room.Entity | import androidx.room.Entity | ||||||
| import androidx.room.PrimaryKey | import androidx.room.PrimaryKey | ||||||
|  | import java.util.Date | ||||||
| 
 | 
 | ||||||
| @Entity(tableName = "items") | @Entity(tableName = "items") | ||||||
| data class Item( | data class Item( | ||||||
|     @PrimaryKey(autoGenerate = true) |     @PrimaryKey(autoGenerate = true) | ||||||
|     var id:Int? = null, |     var id:Int? = null, | ||||||
|     @ColumnInfo(name = "name") |     @ColumnInfo(name = "day") | ||||||
|     var name:String, |     var day: String, | ||||||
|     @ColumnInfo(name = "price") |     @ColumnInfo(name = "date") | ||||||
|     var price:String, |     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 android.content.Context | ||||||
| import androidx.room.Database | 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 class MainDB: RoomDatabase() { | ||||||
|     abstract fun getDao(): Dao |     abstract fun getDao(): Dao | ||||||
|  |     abstract fun getDaoDaySport(): DaoDaySport | ||||||
|  |     abstract fun getDaoImage(): DaoImage | ||||||
|  |     abstract fun getDaoSportCategory(): DaoSportCategory | ||||||
|     companion object{ |     companion object{ | ||||||
|         fun getDB(context: Context):MainDB{ |         fun getDB(context: Context):MainDB{ | ||||||
|             return Room.databaseBuilder( |             return Room.databaseBuilder( | ||||||
|                 context.applicationContext, |                 context.applicationContext, | ||||||
|                 MainDB::class.java, |                 MainDB::class.java, | ||||||
|                 "tests.db" |                 "tttttttttttttt1.db" | ||||||
|             ).build() |             ).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 |