123
|
@ -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>
|
|
@ -0,0 +1,5 @@
|
|||
<component name="ProjectCodeStyleConfiguration">
|
||||
<state>
|
||||
<option name="USE_PER_PROJECT_SETTINGS" value="true" />
|
||||
</state>
|
||||
</component>
|
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="CompilerConfiguration">
|
||||
<bytecodeTargetLevel target="11" />
|
||||
<bytecodeTargetLevel target="17" />
|
||||
</component>
|
||||
</project>
|
|
@ -17,5 +17,6 @@
|
|||
</option>
|
||||
</GradleProjectSettings>
|
||||
</option>
|
||||
<option name="offlineMode" value="true" />
|
||||
</component>
|
||||
</project>
|
|
@ -1,7 +1,6 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ExternalStorageConfigurationManager" enabled="true" />
|
||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_11" default="true" project-jdk-name="11" project-jdk-type="JavaSDK">
|
||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_17" project-jdk-name="jbr-17" project-jdk-type="JavaSDK">
|
||||
<output url="file://$PROJECT_DIR$/build/classes" />
|
||||
</component>
|
||||
<component name="ProjectType">
|
||||
|
|
|
@ -40,7 +40,12 @@ android {
|
|||
dependencies {
|
||||
implementation 'androidx.room:room-ktx:2.5.2'
|
||||
implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.6.1'
|
||||
implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.1'
|
||||
|
||||
kapt 'androidx.room:room-compiler:2.5.2'
|
||||
implementation 'androidx.fragment:fragment-ktx:1.5.5'
|
||||
|
||||
|
||||
implementation 'androidx.core:core-ktx:1.7.0'
|
||||
implementation 'androidx.appcompat:appcompat:1.6.1'
|
||||
implementation 'com.google.android.material:material:1.9.0'
|
||||
|
|
|
@ -8,16 +8,27 @@
|
|||
android:fullBackupContent="@xml/backup_rules"
|
||||
android:icon="@mipmap/ic_launcher"
|
||||
android:label="@string/app_name"
|
||||
android:requestLegacyExternalStorage="true"
|
||||
android:roundIcon="@mipmap/ic_launcher_logo_rehabilitation"
|
||||
android:supportsRtl="true"
|
||||
android:theme="@style/Theme.Rehabilitation"
|
||||
tools:targetApi="31">
|
||||
<activity
|
||||
android:name=".Admin.activityAdmin.FeedbackActivity"
|
||||
android:exported="false" />
|
||||
<activity
|
||||
android:name=".Admin.activityAdmin.StatisticsActivity"
|
||||
android:exported="false" />
|
||||
<activity
|
||||
android:name=".Admin.activityAdmin.UserSettingActivity"
|
||||
android:exported="false" />
|
||||
<activity
|
||||
android:name=".SettingActivity"
|
||||
android:exported="false" />
|
||||
<activity
|
||||
android:name=".MainActivity"
|
||||
android:exported="true">
|
||||
android:exported="true"
|
||||
android:windowSoftInputMode="adjustPan|stateAlwaysHidden">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
|
||||
|
|
|
@ -0,0 +1,22 @@
|
|||
package com.example.rehabilitation.Admin.activityAdmin
|
||||
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import android.os.Bundle
|
||||
import com.example.rehabilitation.R
|
||||
import com.example.rehabilitation.databinding.ActivityFeedbackBinding
|
||||
import com.example.rehabilitation.databinding.FragmentFeedbackBinding
|
||||
|
||||
class FeedbackActivity : AppCompatActivity() {
|
||||
private lateinit var binding: ActivityFeedbackBinding
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
binding = ActivityFeedbackBinding.inflate(layoutInflater)
|
||||
setContentView(binding.root)
|
||||
|
||||
//Выход
|
||||
binding.btnExit.setOnClickListener{
|
||||
finish()
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,21 @@
|
|||
package com.example.rehabilitation.Admin.activityAdmin
|
||||
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import android.os.Bundle
|
||||
import com.example.rehabilitation.R
|
||||
import com.example.rehabilitation.databinding.ActivityFeedbackBinding
|
||||
import com.example.rehabilitation.databinding.FragmentStatisticsBinding
|
||||
|
||||
class StatisticsActivity : AppCompatActivity() {
|
||||
private lateinit var binding: ActivityFeedbackBinding
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
binding = ActivityFeedbackBinding.inflate(layoutInflater)
|
||||
setContentView(binding.root)
|
||||
|
||||
//Выход
|
||||
binding.btnExit.setOnClickListener{
|
||||
finish()
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,718 @@
|
|||
package com.example.rehabilitation.Admin.activityAdmin
|
||||
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import android.os.Bundle
|
||||
import android.view.View
|
||||
import androidx.activity.viewModels
|
||||
import androidx.lifecycle.asLiveData
|
||||
import com.example.rehabilitation.R
|
||||
import com.example.rehabilitation.databinding.ActivityUserSettingBinding
|
||||
import com.example.rehabilitation.db.Item
|
||||
import com.example.rehabilitation.db.ItemDaySport
|
||||
import com.example.rehabilitation.db.ItemImage
|
||||
import com.example.rehabilitation.db.ItemSportCategory
|
||||
import com.example.rehabilitation.db.MainDB
|
||||
import com.example.rehabilitation.dip.Day.DayAdapter
|
||||
import com.example.rehabilitation.dip.Day.DayModel
|
||||
import com.example.sqlitework.dip.MainViewModel
|
||||
import com.example.rehabilitation.dip.Month.MonthModel
|
||||
import com.example.rehabilitation.dip.Month.MonthAdapter
|
||||
import java.time.LocalDate
|
||||
|
||||
class UserSettingActivity : AppCompatActivity(), MonthAdapter.Listener,DayAdapter.Listener {
|
||||
private lateinit var binding: ActivityUserSettingBinding
|
||||
private val model: MainViewModel by viewModels()//Инициализировали класс
|
||||
lateinit var adapterMonth: MonthAdapter
|
||||
lateinit var adapterDay: DayAdapter
|
||||
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
binding = ActivityUserSettingBinding.inflate(layoutInflater)
|
||||
setContentView(binding.root)
|
||||
// initRcView()
|
||||
// initRcViewDay()
|
||||
// model.liveListList.observe(lifeCy) {//viewLifecycleOwner - следит за циклом жизни fragment
|
||||
// adapterMonth.submitList(it)//Напрямую переадем созданный список в adapter(ProductAdapter)
|
||||
// }
|
||||
//
|
||||
// model.liveDayList.observe(viewLifecycleOwner) {//viewLifecycleOwner - следит за циклом жизни fragment
|
||||
// adapterDay.submitList(it)//Напрямую переадем созданный список в adapter(ProductAdapter)
|
||||
// }
|
||||
|
||||
//Выход
|
||||
binding.btnExit.setOnClickListener{
|
||||
finish()
|
||||
}
|
||||
|
||||
//Выход из добавленеия
|
||||
binding.btnExitAdd.setOnClickListener{
|
||||
binding.CLAdd.visibility = View.GONE
|
||||
binding.CLCreateDeleteUser.visibility = View.VISIBLE
|
||||
}
|
||||
|
||||
//Выход из добавленеия
|
||||
binding.btnCreate.setOnClickListener{
|
||||
binding.CLAdd.visibility = View.VISIBLE
|
||||
binding.CLCreateDeleteUser.visibility = View.GONE
|
||||
}
|
||||
|
||||
binding.cvClearDayUser.setOnClickListener{
|
||||
val db = MainDB.getDB(this)
|
||||
Thread {
|
||||
db.getDaoDaySport().deleteItemDaySport()
|
||||
db.getDao().deleteItem()
|
||||
}.start()
|
||||
}
|
||||
|
||||
//addListModelCards()
|
||||
|
||||
//addDayModelCards()
|
||||
|
||||
|
||||
binding.btnImage.setOnClickListener{
|
||||
createImageBD()
|
||||
}
|
||||
|
||||
binding.btnCategorySport.setOnClickListener {
|
||||
createSportCategory()
|
||||
}
|
||||
|
||||
binding.btnCardC.setOnClickListener {
|
||||
val db = MainDB.getDB(this)
|
||||
for(i in 1..30){
|
||||
val item = Item(null,
|
||||
getDateTomorrow(i, "c"),//"11/11/2023",
|
||||
i.toString(),
|
||||
0
|
||||
)
|
||||
Thread {
|
||||
db.getDao().insertItem(item)
|
||||
}.start()
|
||||
}
|
||||
}
|
||||
binding.btnCardB.setOnClickListener {
|
||||
val db = MainDB.getDB(this)
|
||||
for(i in 1..30){
|
||||
val item = Item(null,
|
||||
getDateTomorrow(i, "b"),//"11/11/2023",
|
||||
i.toString(),
|
||||
0
|
||||
)
|
||||
Thread {
|
||||
db.getDao().insertItem(item)
|
||||
}.start()
|
||||
}
|
||||
}
|
||||
binding.btnCardJ.setOnClickListener {
|
||||
val db = MainDB.getDB(this)
|
||||
for(i in 1..30){
|
||||
val item = Item(null,
|
||||
getDateTomorrow(i, "j"),//"11/11/2023",
|
||||
i.toString(),
|
||||
0
|
||||
)
|
||||
Thread {
|
||||
db.getDao().insertItem(item)
|
||||
}.start()
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private fun createImageBD() {
|
||||
val db = MainDB.getDB(this)
|
||||
|
||||
val itemС1_1 = ItemImage(null, "${R.drawable.c1_1}", "c1","c")
|
||||
val itemС1_2 = ItemImage(null, "${R.drawable.c1_2}", "c1","c")
|
||||
val itemС2_1 = ItemImage(null, "${R.drawable.c2_1}", "c2","c")
|
||||
val itemС2_2 = ItemImage(null, "${R.drawable.c2_2}", "c2","c")
|
||||
val itemС3_1 = ItemImage(null, "${R.drawable.c3_1}", "c3","c")
|
||||
val itemС3_2 = ItemImage(null, "${R.drawable.c3_2}", "c3","c")
|
||||
val itemС4_1 = ItemImage(null, "${R.drawable.c4_1}", "c4","c")
|
||||
val itemС4_2 = ItemImage(null, "${R.drawable.c4_1}", "c4","c")
|
||||
val itemС5_1 = ItemImage(null, "${R.drawable.c5_1}", "c5","c")
|
||||
val itemС5_2 = ItemImage(null, "${R.drawable.c5_2}", "c5","c")
|
||||
val itemС6_1 = ItemImage(null, "${R.drawable.c6_1}", "c6","c")
|
||||
val itemС6_2 = ItemImage(null, "${R.drawable.c6_2}", "c6","c")
|
||||
val itemС6_3 = ItemImage(null, "${R.drawable.c6_3}", "c6","c")
|
||||
val itemС7_1 = ItemImage(null, "${R.drawable.c7_1}", "c7","c")
|
||||
val itemС8_1 = ItemImage(null, "${R.drawable.c8_1}", "c8","c")
|
||||
val itemС8_2 = ItemImage(null, "${R.drawable.c8_2}", "c8","c")
|
||||
val itemС9_1 = ItemImage(null, "${R.drawable.c9_1}", "c9","c")
|
||||
val itemС9_2 = ItemImage(null, "${R.drawable.c9_2}", "c9","c")
|
||||
val itemС9_3 = ItemImage(null, "${R.drawable.c9_3}", "c9","c")
|
||||
val itemС10_1 = ItemImage(null, "${R.drawable.c10_1}", "c10","c")
|
||||
val itemС10_2 = ItemImage(null, "${R.drawable.c10_2}", "c10","c")
|
||||
val itemС10_3 = ItemImage(null, "${R.drawable.c10_3}", "c10","c")
|
||||
val itemС11_1 = ItemImage(null, "${R.drawable.c11_1}", "c11","c")
|
||||
val itemС12_1 = ItemImage(null, "${R.drawable.c12_1}", "c12","c")
|
||||
val itemС12_2 = ItemImage(null, "${R.drawable.c12_2}", "c12","c")
|
||||
val itemС13_1 = ItemImage(null, "${R.drawable.c13_1}", "c13","c")
|
||||
val itemС13_2 = ItemImage(null, "${R.drawable.c13_2}", "c13","c")
|
||||
val itemС14_1 = ItemImage(null, "${R.drawable.c14_1}", "c14","c")
|
||||
val itemС14_2 = ItemImage(null, "${R.drawable.c14_2}", "c14","c")
|
||||
val itemС15_1 = ItemImage(null, "${R.drawable.c15_1}", "c15","c")
|
||||
val itemС15_2 = ItemImage(null, "${R.drawable.c15_2}", "c15","c")
|
||||
val itemС16_1 = ItemImage(null, "${R.drawable.c16_1}", "c16","c")
|
||||
val itemС16_2 = ItemImage(null, "${R.drawable.c16_2}", "c16","c")
|
||||
val itemС17_1 = ItemImage(null, "${R.drawable.c17_1}", "c17","c")
|
||||
val itemС17_2 = ItemImage(null, "${R.drawable.c17_2}", "c17","c")
|
||||
val itemС18_1 = ItemImage(null, "${R.drawable.c18_1}", "c18","c")
|
||||
val itemС18_2 = ItemImage(null, "${R.drawable.c18_2}", "c18","c")
|
||||
val itemС18_3 = ItemImage(null, "${R.drawable.c18_3}", "c18","c")
|
||||
|
||||
val itemB1_1 = ItemImage(null, "${R.drawable.b1_1}", "b1", "b")
|
||||
val itemB1_2 = ItemImage(null, "${R.drawable.b1_2}", "b1", "b")
|
||||
val itemB2_1 = ItemImage(null, "${R.drawable.b2_1}", "b2", "b")
|
||||
val itemB2_2 = ItemImage(null, "${R.drawable.b2_2}", "b2", "b")
|
||||
val itemB3_1 = ItemImage(null, "${R.drawable.b3_1}", "b3", "b")
|
||||
val itemB3_2 = ItemImage(null, "${R.drawable.b3_2}", "b3", "b")
|
||||
val itemB3_3 = ItemImage(null, "${R.drawable.b3_3}", "b3", "b")
|
||||
val itemB4_1 = ItemImage(null, "${R.drawable.b4_1}", "b4", "b")
|
||||
val itemB4_2 = ItemImage(null, "${R.drawable.b4_2}", "b4", "b")
|
||||
|
||||
val itemJ1_1 = ItemImage(null, "${R.drawable.j1_1}", "j1","j")
|
||||
val itemJ1_2 = ItemImage(null, "${R.drawable.j1_2}", "j1","j")
|
||||
val itemJ2_1 = ItemImage(null, "${R.drawable.j2_1}", "j2","j")
|
||||
val itemJ2_2 = ItemImage(null, "${R.drawable.j2_2}", "j2","j")
|
||||
val itemJ3_1 = ItemImage(null, "${R.drawable.j3_1}", "j3","j")
|
||||
val itemJ3_2 = ItemImage(null, "${R.drawable.j3_2}", "j3","j")
|
||||
val itemJ4_1 = ItemImage(null, "${R.drawable.j4_1}", "j4","j")
|
||||
val itemJ4_2 = ItemImage(null, "${R.drawable.j4_2}", "j4","j")
|
||||
val itemJ4_3 = ItemImage(null, "${R.drawable.j4_3}", "j4","j")
|
||||
val itemJ5_1 = ItemImage(null, "${R.drawable.j5_1}", "j5","j")
|
||||
val itemJ6_1 = ItemImage(null, "${R.drawable.j6_1}", "j6","j")
|
||||
val itemJ6_2 = ItemImage(null, "${R.drawable.j6_2}", "j6","j")
|
||||
val itemJ6_3 = ItemImage(null, "${R.drawable.j6_3}", "j6","j")
|
||||
val itemJ6_4 = ItemImage(null, "${R.drawable.j6_4}", "j6","j")
|
||||
val itemJ7_1 = ItemImage(null, "${R.drawable.j7_1}", "j7","j")
|
||||
val itemJ7_2 = ItemImage(null, "${R.drawable.j7_2}", "j7","j")
|
||||
val itemJ7_3 = ItemImage(null, "${R.drawable.j7_3}", "j7","j")
|
||||
val itemJ7_4 = ItemImage(null, "${R.drawable.j7_4}", "j7","j")
|
||||
val itemJ7_5 = ItemImage(null, "${R.drawable.j7_5}", "j7","j")
|
||||
val itemJ7_6 = ItemImage(null, "${R.drawable.j7_6}", "j7","j")
|
||||
val itemJ7_7 = ItemImage(null, "${R.drawable.j7_7}", "j7","j")
|
||||
val itemJ8_1 = ItemImage(null, "${R.drawable.j8_1}", "j8","j")
|
||||
val itemJ8_2 = ItemImage(null, "${R.drawable.j8_2}", "j8","j")
|
||||
val itemJ8_3 = ItemImage(null, "${R.drawable.j8_3}", "j8","j")
|
||||
val itemJ9_1 = ItemImage(null, "${R.drawable.j9_1}", "j9","j")
|
||||
val itemJ10_1 = ItemImage(null, "${R.drawable.j10_1}", "j10","j")
|
||||
val itemJ10_2 = ItemImage(null, "${R.drawable.j10_2}", "j10","j")
|
||||
val itemJ10_3 = ItemImage(null, "${R.drawable.j10_2}", "j10","j")
|
||||
val itemJ11_1 = ItemImage(null, "${R.drawable.j11_1}", "j11","j")
|
||||
val itemJ11_2 = ItemImage(null, "${R.drawable.j11_2}", "j11","j")
|
||||
val itemJ11_3 = ItemImage(null, "${R.drawable.j11_3}", "j11","j")
|
||||
val itemJ11_4 = ItemImage(null, "${R.drawable.j11_4}", "j11","j")
|
||||
val itemJ12_1 = ItemImage(null, "${R.drawable.j12_1}", "j12","j")
|
||||
val itemJ12_2 = ItemImage(null, "${R.drawable.j12_2}", "j12","j")
|
||||
|
||||
Thread {
|
||||
db.getDaoImage().insertItemImage(itemС1_1)
|
||||
db.getDaoImage().insertItemImage(itemС1_2)
|
||||
db.getDaoImage().insertItemImage(itemС2_1)
|
||||
db.getDaoImage().insertItemImage(itemС2_2)
|
||||
db.getDaoImage().insertItemImage(itemС3_1)
|
||||
db.getDaoImage().insertItemImage(itemС3_2)
|
||||
db.getDaoImage().insertItemImage(itemС4_1)
|
||||
db.getDaoImage().insertItemImage(itemС4_2)
|
||||
db.getDaoImage().insertItemImage(itemС5_1)
|
||||
db.getDaoImage().insertItemImage(itemС5_2)
|
||||
db.getDaoImage().insertItemImage(itemС6_1)
|
||||
db.getDaoImage().insertItemImage(itemС6_2)
|
||||
db.getDaoImage().insertItemImage(itemС6_3)
|
||||
db.getDaoImage().insertItemImage(itemС7_1)
|
||||
db.getDaoImage().insertItemImage(itemС8_1)
|
||||
db.getDaoImage().insertItemImage(itemС8_2)
|
||||
db.getDaoImage().insertItemImage(itemС9_1)
|
||||
db.getDaoImage().insertItemImage(itemС9_2)
|
||||
db.getDaoImage().insertItemImage(itemС9_3)
|
||||
db.getDaoImage().insertItemImage(itemС10_1)
|
||||
db.getDaoImage().insertItemImage(itemС10_2)
|
||||
db.getDaoImage().insertItemImage(itemС10_3)
|
||||
db.getDaoImage().insertItemImage(itemС11_1)
|
||||
db.getDaoImage().insertItemImage(itemС12_1)
|
||||
db.getDaoImage().insertItemImage(itemС12_2)
|
||||
db.getDaoImage().insertItemImage(itemС13_1)
|
||||
db.getDaoImage().insertItemImage(itemС13_2)
|
||||
db.getDaoImage().insertItemImage(itemС14_1)
|
||||
db.getDaoImage().insertItemImage(itemС14_2)
|
||||
db.getDaoImage().insertItemImage(itemС15_1)
|
||||
db.getDaoImage().insertItemImage(itemС15_2)
|
||||
db.getDaoImage().insertItemImage(itemС16_1)
|
||||
db.getDaoImage().insertItemImage(itemС16_2)
|
||||
db.getDaoImage().insertItemImage(itemС17_1)
|
||||
db.getDaoImage().insertItemImage(itemС17_2)
|
||||
db.getDaoImage().insertItemImage(itemС18_1)
|
||||
db.getDaoImage().insertItemImage(itemС18_2)
|
||||
db.getDaoImage().insertItemImage(itemС18_3)
|
||||
|
||||
db.getDaoImage().insertItemImage(itemB1_1)
|
||||
db.getDaoImage().insertItemImage(itemB1_2)
|
||||
db.getDaoImage().insertItemImage(itemB2_1)
|
||||
db.getDaoImage().insertItemImage(itemB2_2)
|
||||
db.getDaoImage().insertItemImage(itemB3_1)
|
||||
db.getDaoImage().insertItemImage(itemB3_2)
|
||||
db.getDaoImage().insertItemImage(itemB3_3)
|
||||
db.getDaoImage().insertItemImage(itemB4_1)
|
||||
db.getDaoImage().insertItemImage(itemB4_2)
|
||||
|
||||
db.getDaoImage().insertItemImage(itemJ1_1)
|
||||
db.getDaoImage().insertItemImage(itemJ1_2)
|
||||
db.getDaoImage().insertItemImage(itemJ2_1)
|
||||
db.getDaoImage().insertItemImage(itemJ2_2)
|
||||
db.getDaoImage().insertItemImage(itemJ3_1)
|
||||
db.getDaoImage().insertItemImage(itemJ3_2)
|
||||
db.getDaoImage().insertItemImage(itemJ4_1)
|
||||
db.getDaoImage().insertItemImage(itemJ4_2)
|
||||
db.getDaoImage().insertItemImage(itemJ4_3)
|
||||
db.getDaoImage().insertItemImage(itemJ5_1)
|
||||
db.getDaoImage().insertItemImage(itemJ6_1)
|
||||
db.getDaoImage().insertItemImage(itemJ6_2)
|
||||
db.getDaoImage().insertItemImage(itemJ6_3)
|
||||
db.getDaoImage().insertItemImage(itemJ6_4)
|
||||
db.getDaoImage().insertItemImage(itemJ7_1)
|
||||
db.getDaoImage().insertItemImage(itemJ7_2)
|
||||
db.getDaoImage().insertItemImage(itemJ7_3)
|
||||
db.getDaoImage().insertItemImage(itemJ7_4)
|
||||
db.getDaoImage().insertItemImage(itemJ7_5)
|
||||
db.getDaoImage().insertItemImage(itemJ7_6)
|
||||
db.getDaoImage().insertItemImage(itemJ7_7)
|
||||
db.getDaoImage().insertItemImage(itemJ8_1)
|
||||
db.getDaoImage().insertItemImage(itemJ8_2)
|
||||
db.getDaoImage().insertItemImage(itemJ8_3)
|
||||
db.getDaoImage().insertItemImage(itemJ9_1)
|
||||
db.getDaoImage().insertItemImage(itemJ10_1)
|
||||
db.getDaoImage().insertItemImage(itemJ10_2)
|
||||
db.getDaoImage().insertItemImage(itemJ10_3)
|
||||
db.getDaoImage().insertItemImage(itemJ11_1)
|
||||
db.getDaoImage().insertItemImage(itemJ11_2)
|
||||
db.getDaoImage().insertItemImage(itemJ11_3)
|
||||
db.getDaoImage().insertItemImage(itemJ11_4)
|
||||
db.getDaoImage().insertItemImage(itemJ12_1)
|
||||
db.getDaoImage().insertItemImage(itemJ12_2)
|
||||
|
||||
}.start()
|
||||
|
||||
|
||||
}
|
||||
|
||||
fun createSportCategory(){
|
||||
getDaySport(1, C1,"c","c1")
|
||||
getDaySport(2, C2,"c","c2")
|
||||
getDaySport(3, C3,"c","c3")
|
||||
getDaySport(4, C4,"c","c4")
|
||||
getDaySport(5, C5,"c","c5")
|
||||
getDaySport(6, C6,"c","c6")
|
||||
getDaySport(7, C7,"c","c7")
|
||||
getDaySport(8, C8,"c","c8")
|
||||
getDaySport(9, C9,"c","c9")
|
||||
getDaySport(10, C10,"c","c10")
|
||||
getDaySport(11, C11,"c","c11")
|
||||
getDaySport(12, C12,"c","c12")
|
||||
getDaySport(13, C13,"c","c13")
|
||||
getDaySport(14, C14,"c","c14")
|
||||
getDaySport(15, C15,"c","c15")
|
||||
getDaySport(16, C16,"c","c16")
|
||||
getDaySport(17, C17,"c","c17")
|
||||
getDaySport(18, C18,"c","c18")
|
||||
|
||||
|
||||
getDaySport(19, B1,"b","b1")
|
||||
getDaySport(20, B2,"b","b2")
|
||||
getDaySport(21, B3,"b","b3")
|
||||
getDaySport(22, B4,"b","b4")
|
||||
|
||||
getDaySport(23, J1,"j","j1" )
|
||||
getDaySport(24, J2,"j","j2" )
|
||||
getDaySport(25, J3,"j","j3" )
|
||||
getDaySport(26, C4,"j","j4" )
|
||||
getDaySport(27, J5,"j","j5" )
|
||||
getDaySport(28, J6,"j","j6" )
|
||||
getDaySport(29, J7,"j","j7" )
|
||||
getDaySport(30, J8,"j","j8" )
|
||||
getDaySport(31, J9,"j","j9" )
|
||||
getDaySport(32, J10,"j","j10" )
|
||||
getDaySport(33, J11,"j","j11" )
|
||||
getDaySport(34, J12,"j","j12" )
|
||||
|
||||
}
|
||||
|
||||
|
||||
//Заполнения модели и списка
|
||||
private fun addListModelCards(){
|
||||
val db = MainDB.getDB(this)
|
||||
val list = ArrayList<MonthModel>()
|
||||
db.getDao().getAllItems().asLiveData().observe(this){itList->
|
||||
itList.forEach{
|
||||
//val text = "Id: ${it.id} Name: ${it.name} Proce: ${it.price}"
|
||||
//binding.txtList.append(text)
|
||||
val item = MonthModel(
|
||||
it.id.toString(),
|
||||
it.day.toString(),
|
||||
it.date.toString(),
|
||||
it.check.toString()
|
||||
)
|
||||
//model.liveZakazCurrent.value = item//Передаем в liveDataCurrent один из продуктов, чтобы дальше эти данные использовать и передавать их в пробную ячейку
|
||||
list.add(item)//Передали заполненый список
|
||||
}
|
||||
model.liveListList.value = list
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
binding.btnSaveList.setOnClickListener{
|
||||
// for(i in 1..30){
|
||||
// val item = Item(null,
|
||||
// getDateTomorrow(i, ),//"11/11/2023",
|
||||
// 0
|
||||
// )
|
||||
// Thread {
|
||||
// db.getDao().insertItem(item)
|
||||
// }.start()
|
||||
// }
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
fun getDaySport(i:Int, description:String, categoryImage:String, categorySport:String): String {
|
||||
val db = MainDB.getDB(this)
|
||||
val tomorrow = LocalDate.now().plusDays(i.toLong())
|
||||
val item = ItemSportCategory(null, i.toString(), description,"3",categoryImage, categorySport)
|
||||
Thread {
|
||||
db.getDaoSportCategory().insertItemSportCategory(item)
|
||||
}.start()
|
||||
|
||||
return tomorrow.toString()
|
||||
}
|
||||
|
||||
|
||||
fun getDateTomorrow(i:Int,categorySport:String): String {
|
||||
val db = MainDB.getDB(this)
|
||||
|
||||
val DATE_PATTERN = "MM/dd/yyyy"
|
||||
val tomorrow = LocalDate.now().plusDays(i.toLong())
|
||||
val item = ItemDaySport(null,
|
||||
tomorrow.toString(),
|
||||
categorySport,
|
||||
0
|
||||
)
|
||||
Thread {
|
||||
db.getDaoDaySport().insertItemDaySport(item)
|
||||
}.start()
|
||||
|
||||
return tomorrow.toString()
|
||||
}
|
||||
//Заполнения модели и списка
|
||||
// private fun addDayModelCards(){
|
||||
// val db = MainDB.getDB(this)
|
||||
// val list = ArrayList<DayModel>()
|
||||
// db.getDaoDaySport().getAllItemDaySport().asLiveData().observe(this){itList->
|
||||
// itList.forEach{
|
||||
// //val text = "Id: ${it.id} Name: ${it.name} Proce: ${it.price}"
|
||||
// //binding.txtList.append(text)
|
||||
// val itemDay = DayModel(
|
||||
// it.id.toString(),
|
||||
// it.day.toString(),
|
||||
// it.category.toString(),
|
||||
// it.check.toString(),
|
||||
// )
|
||||
// //model.liveZakazCurrent.value = item//Передаем в liveDataCurrent один из продуктов, чтобы дальше эти данные использовать и передавать их в пробную ячейку
|
||||
// list.add(itemDay)//Передали заполненый список
|
||||
// }
|
||||
// model.liveDayList.value = list
|
||||
// }
|
||||
//
|
||||
// binding.btnSaveDay.setOnClickListener{
|
||||
//// val item = ItemDaySport(null,
|
||||
//// binding.edName.text.toString(),
|
||||
//// binding.edDesc.text.toString(),
|
||||
//// binding.edDayCard.text.toString(),
|
||||
//// binding.edCount.text.toString(),
|
||||
//// binding.edImage.text.toString(),
|
||||
//// 0
|
||||
//// )
|
||||
//// Thread {
|
||||
//// db.getDaoDaySport().insertItemDaySport(item)
|
||||
//// }.start()
|
||||
// }
|
||||
// }
|
||||
|
||||
|
||||
// //Инициализация списка
|
||||
// private fun initRcView() = with(binding) {
|
||||
// todoListRecycleView.layoutManager = GridLayoutManager(this@UserSettingActivity,1)//По вертикали будет выводить по умолчанию
|
||||
// adapterMonth = MonthAdapter(this@UserSettingActivity)
|
||||
// todoListRecycleView.adapter = adapterMonth
|
||||
// }
|
||||
//
|
||||
// //Инициализация списка
|
||||
// private fun initRcViewDay() = with(binding) {
|
||||
// todoDayListRecycleView.layoutManager = GridLayoutManager(this@UserSettingActivity,1)//По вертикали будет выводить по умолчанию
|
||||
// adapterDay = DayAdapter(this@UserSettingActivity)
|
||||
// todoDayListRecycleView.adapter = adapterDay
|
||||
// }
|
||||
|
||||
override fun onClickDay(item: DayModel) {
|
||||
|
||||
}
|
||||
|
||||
override fun onClickExceptionOrder(item: MonthModel) {
|
||||
|
||||
}
|
||||
//Спина
|
||||
val c1 = arrayOf("c1_1", "c1_2")
|
||||
val c2 = arrayOf("c2_1", "c2_2")
|
||||
val c3 = arrayOf("c3_1", "c3_2")
|
||||
val c4 = arrayOf("c4_1", "c4_2")
|
||||
val c5 = arrayOf("c5_1", "c5_2")
|
||||
val c6 = arrayOf("c6_1", "c6_2","c6_3")
|
||||
val c7 = arrayOf("c7_1")
|
||||
val c8 = arrayOf("c8_1", "c8_2")
|
||||
val c9 = arrayOf("c9_1", "c9_2", "c9_3")
|
||||
val c10 = arrayOf("c10_1", "c10_2", "c10_3")
|
||||
val c11 = arrayOf("c11_1")
|
||||
val c12 = arrayOf("c12_1", "c12_2")
|
||||
val c13 = arrayOf("c13_1", "c13_2")
|
||||
val c14 = arrayOf("c14_1", "c14_2")
|
||||
val c15 = arrayOf("c15_1", "c15_2")
|
||||
val c16 = arrayOf("c16_1", "c16_2")
|
||||
val c17 = arrayOf("c17_1", "c17_2")
|
||||
val c18 = arrayOf("c18_1", "c18_2", "c18_3")
|
||||
|
||||
//Бок
|
||||
val b1 = arrayOf("b1_1", "b1_2")
|
||||
val b2 = arrayOf("b2_1", "b2_2")
|
||||
val b3 = arrayOf("b3_1", "b3_2", "b3_3")
|
||||
val b4 = arrayOf("b4_1", "b4_2")
|
||||
|
||||
//Живот
|
||||
val j1 = arrayOf("j1_1", "j1_2")
|
||||
val j2 = arrayOf("j2_1", "j2_2")
|
||||
val j3 = arrayOf("j3_1", "j3_2")
|
||||
val j4 = arrayOf("j4_1", "j4_2", "j4_3")
|
||||
val j5 = arrayOf("j5_1")
|
||||
val j6 = arrayOf("j6_1", "j6_2", "j6_3", "j6_4")
|
||||
val j7 = arrayOf("j7_1", "j7_2", "j7_3", "j7_4", "j7_5", "j7_6", "j7_7")
|
||||
val j8 = arrayOf("j8_1", "j8_2", "j8_3")
|
||||
val j9 = arrayOf("j9_1")
|
||||
val j10 = arrayOf("j10_1", "j10_2", "j10_3")
|
||||
val j11 = arrayOf("j11_1", "j11_2", "j11_3", "j11_4")
|
||||
val j12 = arrayOf("j12_1", "j12_2")
|
||||
|
||||
val C1 = "Исходное положение, положить руки вверх.\n" +
|
||||
"Счет \n" +
|
||||
"1-2-3 - потянуться руками вверх, а пятками — в противоположную сторону;\n" +
|
||||
"4 – Расслабиться\n" +
|
||||
"Повторить 5—6 раз. Дыхание свободное.\n"
|
||||
val C2 = "Исходное положение, руки лежат под головой или направлены вниз, вдоль туловища.\n" +
|
||||
"Счет\n" +
|
||||
"1 - поднять одну прямую ногу на 45°;\n" +
|
||||
"2-3 - удерживать ее;\n" +
|
||||
"4 - опустить в исходное положение.\n" +
|
||||
"То же повторить с другой ноги. С каждой ноги повторить по 4—б раз. Дыхание свободное.\n"
|
||||
val C3 = "Исходное положение, руки лежат вверху.\n" +
|
||||
"Счет\n" +
|
||||
"1 - поднять вперед прямые правую руку и левую ногу; \n" +
|
||||
"2- опустить их в исходное положение;\n" +
|
||||
"3 - поднять вперед левую руку и правую ногу;\n" +
|
||||
"4 - вернуться в исходное положение.\n" +
|
||||
"Повторить 4-6 раз с каждой стороны, опустить их в исходное положение;\n"
|
||||
val C4 = "Исходное положение, руки лежат под головой или направлены вниз, вдоль туловища.\n" +
|
||||
"Счет\n" +
|
||||
"1 – напрячь оба бедра, как при выпрямлении колена;\n" +
|
||||
"2-3 – удерживать в напряжении;\n" +
|
||||
"4 - расслабиться.\n" +
|
||||
"Повторить 6-10 раз. Дыхание произвольное. При ампутации на уровне голени можно подложить под нижнюю треть бедра валик, если есть сгибательная контрактура колена, или если пациент так лучше ощущает работу мышц.\n"
|
||||
val C5 = "Исходное положение, руки лежат вниз вдоль туловища, под культю и под аналогичный сегмент сохранной конечности подложить мячи. \n" +
|
||||
"Счет\n" +
|
||||
"1 — опереться на ноги, поднять таз вверх;\n" +
|
||||
"2-3 — удерживать это положение;\n" +
|
||||
"4 — опуститься в исходное положение. \n" +
|
||||
"Повторить 4-8 раз. Дыхание произвольное, или подъем таза осуществлять на выдохе через рот, губы сложены «трубочкой».\n"
|
||||
val C6 = "Исходное положение, руки лежат вниз вдоль туловища, под культю и под аналогичный сегмент сохранной конечности подложить мячи. \n" +
|
||||
"Счет\n" +
|
||||
"1 — опереться на ноги и поднять таз вверх;\n" +
|
||||
" 2 — поднять одну прямую ногу вверх на 30°—45% \n" +
|
||||
"3 — опустить ногу на мяч;\n" +
|
||||
" 4 — опустить таз и вернуться в исходное положение. Повторить упражнение по 4-8 раз с каждой ноги. Дыхание произвольное. При значительных трудностях с удержанием баланса на мячах данное упражнение можно выполнять на валике или любых стабильных опорах.\n"
|
||||
val C7 = "Дыхательное упражнение — диафрагмальное дыхание. \n" +
|
||||
"Сохранную ногу поставить согнутую, вторая нога или свободно лежит на полу, или бедро закинуто на другое бедро (фото), одна ладонь лежит на животе, а другая — на груди. На вдох носом надуть животом «шарик», на выдох через рот опустить переднюю стенку живота (и втянуть ее) и расслабиться. \n" +
|
||||
"Повторить дыхательный цикл не более 4-6 раз. Дышать глубоко, в комфортном темпе.\n"
|
||||
val C8 = "Исходное положение, руки лежат вниз вдоль туловища, под ноги подложен большой гимнастический мяч.\n" +
|
||||
"Счет\n" +
|
||||
"1 – упереться ногами в мяч, поднять таз вверх;\n" +
|
||||
"2-3 — удерживать это положение;\n" +
|
||||
"4 - опустить таз и вернуться B исходное положение.\n" +
|
||||
"Дыхание произвольное. Повторить упражнение 6-8 раз.\n"
|
||||
val C9 = "Исходное положение, руки лежат вниз вдоль туловища, под ноги подложен большой гимнастический мяч. \n" +
|
||||
"Счет\n" +
|
||||
"1 - поднять таз с опорой на обе ноги;\n" +
|
||||
"2 - поднять сохранную ногу вверх от опоры и остаться стоять на одной культе;\n" +
|
||||
"3 - опустить на опору сохранную ногу;\n" +
|
||||
"4 - опустить таз и вернуться в исходное положение. Повторить упражнение для каждой ноги по 4—6 раз. Дыхание произвольное.\n"
|
||||
val C10 = "Исходное положение, руки лежат вниз вдоль туловища или под головой (усложненный вариант). \n" +
|
||||
"Имитация велосипедных движений. По 6-10 движений сначала одной ногой, затем второй. Усложненный вариант упражнения (фото) — выполнение упражнения одновременно двумя ногами.\n" +
|
||||
"Сначала движение ногами выполняется в направлении движения вперед, а затем — назад. \n" +
|
||||
"Следить за дыханием и за тем, чтобы поясница была прижата к полу.\n"
|
||||
val C11 = "Дыхательное упражнение — диафрагмальное дыхание.\n" +
|
||||
"Повторить дыхательный цикл не более 4-6 раз. В необходимости повторения дыхательного упражнения — ориентироваться на самочувствие пациента.\n"
|
||||
val C12 = "Исходное положение, руки вытянуты перед собой, B руках — резиновая лента-амортизатор.\n" +
|
||||
"Счет\n" +
|
||||
"1 - развести в стороны прямые руки и коснуться кулачками пола, свести лопатки;\n" +
|
||||
"2-3 — удерживать это положение;\n" +
|
||||
"4 — свести руки перед собой и вернуться в исходное положение.\n" +
|
||||
"При выполнении упражнения акцент делать на сведение лопаток в момент растяжения резинового амортизатора.\n"
|
||||
val C13 = "Исходное положение, в руках — резиновый амортизатор; одна рука лежит вниз вдоль туловища, вторая согнута в локте на 90° и отведена от туловища (локоть на уровне плеча), ее плечо лежит на полу. \n" +
|
||||
"Счет\n" +
|
||||
"1 - не разгибая локтя, разворачивая лопатку, положить кисть согнутой руки на пол;\n" +
|
||||
"2-3 — удерживать это положение;\n" +
|
||||
"4 - вернуться в исходное положение. Повторить 10—15-20 раз. Не меняя длины хвата амортизатора, повторить с другой руки. Дыхание произвольное.\n"
|
||||
val C14 = "Исходное положение, поставить руки B упоре на локти, немного отведя их от туловища.\n" +
|
||||
"1 - надавить локтями на пол, свести лопатки прогнуть грудную клетку;\n" +
|
||||
"2-3 — удерживать это напряжение;\n" +
|
||||
"4 - расслабиться и вернуться в исходное положение \n" +
|
||||
"Повторить 4-8 раз. Дыхание ровное, без задержек.\n"
|
||||
val C15 = "Исходное положение, на бедра надета резиновая петля, ногу со стороны ампутации ротировать внутрь (cкосолапить). \n" +
|
||||
"Счет\n" +
|
||||
"1 - скользя по поверхности, отвести ногу со стороны ампутации в сторону; \n" +
|
||||
"2-3 - удерживать ногу в этом положении;\n" +
|
||||
"4 - вернуть ногу в исходное положение.\n" +
|
||||
"Повторить упражнение 10-15-20 раз.\n" +
|
||||
"Повторить 10-15-20 раз. После короткого отдыха сделать второй подход. Дыхание произвольное. Следить, чтобы мышцы плечевого пояса не вовлекались в напряжение, а таз оставался неподвижным. Для улучшения самоконтроля можно руки ставить на пояс и таким 0бразом следить за неподвижностью таза.\n"
|
||||
val C16 = "Исходное положение, бедрами удерживать мяч.\n" +
|
||||
"Счет\n" +
|
||||
"1 - сжать мяч между бедрами; \n" +
|
||||
"2-3 - удерживать это положение; \n" +
|
||||
"4 - расслабиться.\n" +
|
||||
"Повторить упражнение 10-15-20 раз. \n" +
|
||||
"Со временем возможно усложнение упражнения: удерживать сжатие не на счет 2-3, а на 2-3-4-5-6-7, и только на счет 8 — расслабиться. Дыхание произвольное. Следить, чтобы мышцы плечевого пояса не вовлекались B напряжение, и пациент не затаивал дыхание.\n"
|
||||
val C17 = "Исходное положение, руки лежат под головой, на ногу со стороны ампутации надета манжета-утяжелитель.\n" +
|
||||
"Счет\n" +
|
||||
"1 - поднять прямую ногу на 45°; \n" +
|
||||
"2-3 - удерживать ногу в этом положении; \n" +
|
||||
"4 - опустить ногу и вернуться в исходное положение. \n" +
|
||||
"Повторить 10—15—20 раз.\n" +
|
||||
"Усложнение упражнения:\n" +
|
||||
"1 - поднять ногу; \n" +
|
||||
"2-3-4-5-6-7 - держать ногу; \n" +
|
||||
"8 - опустить ногу и вернуться в исходное положение.\n" +
|
||||
"Со временем можно выполнять два подхода к упражнению.\n"
|
||||
val C18 = "Исходное положение, руки лежат под головой, на ногу со стороны ампутации надета манжета-утяжелитель. \n" +
|
||||
"Счет\n" +
|
||||
"1 - поднять прямую ногу на 45°;\n" +
|
||||
"2 - согнуть ногу в бедре и колене до 90°; \n" +
|
||||
"3 - выпрямить ногу обратно; \n" +
|
||||
"4 - опустить ногу и вернуться в исходное положение. \n" +
|
||||
"Повторить упражнение 10—15 раз. \n" +
|
||||
"Усложнение упражнения: \n" +
|
||||
"сгибание и разгибание колена и бедра можно осуществлять не один, а несколько раз подряд, и только потом. опускать ногу. Также можно делать имитацию велосипедных движений вперед, а потом B обратную сторону. \n" +
|
||||
"Со временем весь комплекс упражнений можно выполнять с утяжелителем в постоянном режиме. Со стороны ампутации делать больше подходов и количество повторений предлагаемых упражнений.\n"
|
||||
|
||||
val B1 = "Исходное положение. \n" +
|
||||
"Счет\n" +
|
||||
"1 - поднять верхнюю ногу на 10—35° точно в сторону;\n" +
|
||||
"2-3 - удерживать это положение; \n" +
|
||||
"4 - опустить ногу в исходное положение. \n" +
|
||||
"Повторить упражнение 10—15-20 раз и положить согнутую ногу вперед — для растяжки и отдыха мышц. Во время выполнения упражнения следить за точностью направления движения — отведения.\n"
|
||||
val B2 = "Исходное положение, верхняя нога согнута в колене и лежит впереди. \n" +
|
||||
"Счет \n" +
|
||||
"1 - поднять прямую нижнюю ногу точно вверх (приведение), стопу тянуть на себя;\n" +
|
||||
"2-3 - удерживать ногу в верхней точке.\n" +
|
||||
"4 - опустить ногу в исходное положение \n" +
|
||||
"Повторить 10—15-20 раз. Следить за тем, чтобы нога не уходила вперед или назад, колено было всегда выпрямлено. Дыхание произвольное.\n"
|
||||
val B3 = "Исходное положение. \n" +
|
||||
"Счет\n" +
|
||||
"1 — поднять верхнюю ногу на 10—35° точно в сторону; \n" +
|
||||
"2 — согнуть в колене, не смещая бедро; \n" +
|
||||
"3 — выпрямить колено, не смещая бедро; \n" +
|
||||
"4 — опустить ногу в исходное положение. \n" +
|
||||
"Повторить 10—15—20 раз. Дыхание произвольное. \n" +
|
||||
"Повторяйте те же упражнения, лежа на другом боку.\n"
|
||||
val B4 = "Исходное положение, на уровне бедра надета манжета с утяжелителем. \n" +
|
||||
"Счет \n" +
|
||||
"1 - поднять верхнюю ногу на 10—35° точно в сторону; \n" +
|
||||
"2-3 — удерживать это положение \n" +
|
||||
"4 - опустить ногу в исходное положение.\n" +
|
||||
"Повторить 10—15-20 раз и положить согнутую ногу вперед для отдыха. Следить за точностью направления движения (отведение). \n" +
|
||||
"Подобным образом — с утяжелителем — можно выполнять все упражнения в исходном положении лежа на боку.\n"
|
||||
|
||||
|
||||
val J1 = "Исходное положение, руки лежат под головой, опираясь на лоб. \n" +
|
||||
"1 - поднять плечевой пояс, руки и голову; \n" +
|
||||
"2-3 - удерживать это положение;\n" +
|
||||
"4 — опуститься в исходное положение и расслабиться. Повторить упражнение 6-10 раз. Следить за дыханием. \n" +
|
||||
"Можно при подъеме туловища сводить лопатки, приводя локти к туловищу на все время удержания корпуса.\n"
|
||||
val J2 = "Исходное положение, руки лежат под головой, голова опирается на лоб. \n" +
|
||||
"1 - поднять правую прямую ногу вверх;\n" +
|
||||
"2-3 - удерживать ногу; 4 - опустить ногу в исходное положение. \n" +
|
||||
"С каждой стороны повторить упражнение по 6-10 раз. Следить за дыханием.\n"
|
||||
val J3 = "Исходное положение, ноги лежат чуть шире плеч, руки под головой. \n" +
|
||||
"1 — поднять плечевой пояс, руки и голову, и развести руки в стороны (ладонями вперед); \n" +
|
||||
"2-3 — удерживать это положение;\n" +
|
||||
"4 - опуститься в исходное положение. \n" +
|
||||
"Повторить упражнение 6-10 раз. \n" +
|
||||
"Усложнение: \n" +
|
||||
"можно одновременно с подъемом корпуса поднимать поочередно то одну HOTY, то другую, или две ноги одновременно (фото). Следить за дыханием.\n"
|
||||
val J4 = "Исходное положение, руки лежат наверху, голова опирается на лоб. \n" +
|
||||
"Счет\n" +
|
||||
"1 — поднять вверх одновременно прямые правую руку и левую ногу; \n" +
|
||||
"2-3 - удерживать это положение; \n" +
|
||||
"4 — опуститься в исходное положение. \n" +
|
||||
"С каждой стороны повторить упражнение по 4-8 раз. Следить за дыханием.\n"
|
||||
val J5 = "Дыхательное упражнение. Исходное положение, голова опирается на лоб, руки под толовой. Глубокий вдох HOCOM, долгий выдох через рот, губы сложены «трубочкой». Повторить 4-6 раз.\n"
|
||||
val J6 = "Исходное положение, голова опирается на лоб. Рисуем ногой медленно букву «П».\n" +
|
||||
"Счет\n" +
|
||||
"1 – поднять прямую правую ногу вверх;\n" +
|
||||
"2 – отвести eё B сторону на 30°;\n" +
|
||||
"3 – опустить ногу в стороне на пол;\n" +
|
||||
"4 – поднять правую ногу;\n" +
|
||||
"5 – привести ноту к центру;\n" +
|
||||
"6 – опустить ногу в исходное положение;\n" +
|
||||
"7-12 – повторить то же с левой ноги.\n" +
|
||||
"Упражнение сделать по 4-8 раз на каждую ногу. Следить за дыханием."
|
||||
val J7 = "Предыдущее упражнение можно немного усложнить. \n" +
|
||||
"Счет\n" +
|
||||
"1 — поднять одну ногу; \n" +
|
||||
"2 — отвести ногу в сторону; \n" +
|
||||
"3 — опустить ногу в стороне; \n" +
|
||||
"4 — поднять вверх другую ногу;\n" +
|
||||
"5 - отвести и ее в сторону; \n" +
|
||||
"6 - опустить на пол в стороне; \n" +
|
||||
"7-8 -скользя по опоре, соединить на полу ноги. \n" +
|
||||
"Повторить упражнение с каждой ноги по 4-6 раз. Следить за дыханием.\n"
|
||||
val J8 = "Исходное положение, две ноги поднять поочередно вверх. \n" +
|
||||
"1 - развести ноги в стороны; \n" +
|
||||
"2 - свести ноги вместе, и повторять 10—15-20 раз. \n" +
|
||||
"Следить за дыханием. После небольшой паузы, со временем, можно выполнять второй подход. \n" +
|
||||
"Также возможны следующие варианты:\n" +
|
||||
"1 - развести ноги в стороны;\n" +
|
||||
"2 - свести ноги вместе с перекрестом (одна нога выше, и нижнюю ноги. другая ниже);\n" +
|
||||
"3 - развести ноги в стороны;\n" +
|
||||
"4 - свести ноги и перекрестить их, поменяв верхнюю и нижнюю ноги.\n" +
|
||||
"Упражнение сделать по 4-8 раз на каждую ногу. Следить за дыханием.\n"
|
||||
val J9 = "Дыхательное упражнение. Исходное положение, голова опирается на лоб, руки под головой. Глубокий вдох носом, долгий выдох через POT, губы сложены «трубочкой». Повторить 4-6 раз.\n"
|
||||
val J10 = "Исходное положение, голова опирается на лоб, руки лежат наверху на ширине, в руках — резиновый амортизатор. \n" +
|
||||
"1 — поднять туловище, руки и голову вверх; \n" +
|
||||
"2 — развести руки в стороны так, чтобы амортизатор лег на лопатки; \n" +
|
||||
"3 — свести руки наверху до ширины плеч; \n" +
|
||||
"4 — опуститься в исходное положение. \n" +
|
||||
"Повторить упражнение 6-10 раз. Дыхание произвольное.\n" +
|
||||
" Со временем можно усложнить упражнение: разводить руки в стороны не один раз, а несколько раз подряд; также можно сделать паузу в момент, когда руки разведены в стороны. Дыхание произвольное. Можно одновременно с подъемом туловища поднимать поочередно то одну, то вторую ногу.\n"
|
||||
val J11 = "Исходное положение, руки под головой. Поднять плечевой пояс и согнутые к плечам руки. Имитация плавания брассом. Дыхание ровное. \n" +
|
||||
"Два подхода по 10-15-20 движений. Следить за полным выпрямлением рук наверх, разведением прямых рук B стороны, сведением лопаток B момент приведения плеч, а также за тем, чтобы корпус при выпрямлении рук наверх не опускался. Дыхание произвольное.\n"
|
||||
val J12 = "Исходное положение, руки лежат под головой, голова опирается на лоб. На ноге со стороны ампутации надета манжета с утяжелителем.\n" +
|
||||
"Счет\n" +
|
||||
"1 - поднять ногу с утяжелителем;\n" +
|
||||
"2-3 — удерживать ногу; \n" +
|
||||
"4 — опустить ногу в исходное положение. \n" +
|
||||
"Повторить 10-15-20 раз.\n" +
|
||||
"Усложнение: можно на счет 2 - отвести ногу в сторону, на счет 3 - вернуть ногу к центру, счет 4 — опуститься в исходное положение. Также можно отводить в сторону не один раз, а несколько раз подряд. Дыхание свободное. \n" +
|
||||
"Со временем все упражнения можно выполнять с утяжелителем."
|
||||
|
||||
|
||||
|
||||
}
|
|
@ -0,0 +1,26 @@
|
|||
package com.example.rehabilitation.Admin.fragmrntAdmin
|
||||
|
||||
import android.os.Bundle
|
||||
import androidx.fragment.app.Fragment
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import com.example.rehabilitation.R
|
||||
import com.example.rehabilitation.databinding.FragmentFeedbackBinding
|
||||
|
||||
class FeedbackFragment : Fragment() {
|
||||
private lateinit var binding: FragmentFeedbackBinding
|
||||
|
||||
override fun onCreateView(
|
||||
inflater: LayoutInflater, container: ViewGroup?,
|
||||
savedInstanceState: Bundle?
|
||||
): View? {
|
||||
binding = FragmentFeedbackBinding.inflate(layoutInflater, container,false)
|
||||
return inflater.inflate(R.layout.fragment_feedback, container, false)
|
||||
}
|
||||
|
||||
companion object {
|
||||
|
||||
fun newInstance() = FeedbackFragment()
|
||||
}
|
||||
}
|
|
@ -0,0 +1,49 @@
|
|||
package com.example.rehabilitation.Admin.fragmrntAdmin
|
||||
|
||||
import android.os.Binder
|
||||
import android.os.Bundle
|
||||
import androidx.fragment.app.Fragment
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import com.example.rehabilitation.R
|
||||
import com.example.rehabilitation.databinding.FragmentMainSettingBinding
|
||||
|
||||
|
||||
class MainSettingFragment : Fragment() {
|
||||
private lateinit var binding: FragmentMainSettingBinding
|
||||
|
||||
override fun onCreateView(
|
||||
inflater: LayoutInflater, container: ViewGroup?,
|
||||
savedInstanceState: Bundle?
|
||||
): View? {
|
||||
binding = FragmentMainSettingBinding.inflate(layoutInflater,container,false)
|
||||
return binding.root
|
||||
}
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
|
||||
//Выход на основную часть
|
||||
binding.btnExitSetting.setOnClickListener {
|
||||
activity?.finish()
|
||||
}
|
||||
|
||||
binding.cvSettingUser.setOnClickListener{
|
||||
|
||||
}
|
||||
|
||||
binding.cvFeedback.setOnClickListener{
|
||||
|
||||
}
|
||||
|
||||
binding.cvStatistics.setOnClickListener{
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
companion object {
|
||||
|
||||
fun newInstance() = MainSettingFragment()
|
||||
}
|
||||
}
|
|
@ -0,0 +1,32 @@
|
|||
package com.example.rehabilitation.Admin.fragmrntAdmin
|
||||
|
||||
import android.os.Bundle
|
||||
import androidx.fragment.app.Fragment
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import com.example.rehabilitation.R
|
||||
import com.example.rehabilitation.databinding.FragmentStatisticsBinding
|
||||
|
||||
class StatisticsFragment : Fragment() {
|
||||
private lateinit var binding: FragmentStatisticsBinding
|
||||
|
||||
override fun onCreateView(
|
||||
inflater: LayoutInflater, container: ViewGroup?,
|
||||
savedInstanceState: Bundle?
|
||||
): View? {
|
||||
binding = FragmentStatisticsBinding.inflate(layoutInflater, container,false)
|
||||
return binding.root
|
||||
//ТУТ БОЛЬШЕ НИЧЕГО НЕ ТРОГАЙ
|
||||
}
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
//ВОТ ТУТ ТЫ ВСТАВЛЯЕШЬ КОД
|
||||
}
|
||||
|
||||
companion object {
|
||||
|
||||
fun newInstance() = StatisticsFragment()
|
||||
}
|
||||
}
|
|
@ -1,4 +1,4 @@
|
|||
package com.example.rehabilitation.fragment.User
|
||||
package com.example.rehabilitation.Admin.fragmrntAdmin
|
||||
|
||||
import android.os.Bundle
|
||||
import androidx.fragment.app.Fragment
|
||||
|
@ -6,22 +6,21 @@ import android.view.LayoutInflater
|
|||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import com.example.rehabilitation.R
|
||||
import com.example.rehabilitation.databinding.FragmentCalendarBinding
|
||||
import com.example.rehabilitation.databinding.FragmentUserSettingBinding
|
||||
|
||||
|
||||
class CalendarFragment : Fragment() {
|
||||
private lateinit var binding: FragmentCalendarBinding
|
||||
class UserSettingFragment : Fragment() {
|
||||
private lateinit var binding: FragmentUserSettingBinding
|
||||
|
||||
override fun onCreateView(
|
||||
inflater: LayoutInflater, container: ViewGroup?,
|
||||
savedInstanceState: Bundle?
|
||||
): View? {
|
||||
binding = FragmentCalendarBinding.inflate(layoutInflater,container,false)
|
||||
binding = FragmentUserSettingBinding.inflate(layoutInflater,container,false)
|
||||
return binding.root
|
||||
}
|
||||
|
||||
companion object {
|
||||
|
||||
fun newInstance() = CalendarFragment()
|
||||
fun newInstance() = UserSettingFragment()
|
||||
}
|
||||
}
|
|
@ -1,24 +0,0 @@
|
|||
package com.example.rehabilitation.Baza
|
||||
|
||||
import android.content.Context
|
||||
import androidx.core.content.ContextCompat
|
||||
import com.example.rehabilitation.R
|
||||
import java.time.LocalDate
|
||||
import java.time.LocalTime
|
||||
import java.util.*
|
||||
|
||||
class TaskItem(
|
||||
var name:String,
|
||||
var desc:String,
|
||||
var dueTime: LocalTime?,
|
||||
var completedDate:LocalDate?,
|
||||
var id: UUID = UUID.randomUUID(),
|
||||
) {
|
||||
fun isCompleted() = completedDate !=null
|
||||
fun imageResource(): Int = if(isCompleted()) R.drawable.check_24 else R.drawable.unchecked_24
|
||||
fun imageColor(context:Context): Int = if(isCompleted()) purple(context) else black(context)
|
||||
|
||||
private fun purple(context:Context) = ContextCompat.getColor(context,R.color.purple_500)
|
||||
private fun black(context:Context) = ContextCompat.getColor(context,R.color.black)
|
||||
|
||||
}
|
|
@ -1,25 +0,0 @@
|
|||
package com.example.rehabilitation.Baza
|
||||
|
||||
import android.view.LayoutInflater
|
||||
import android.view.ViewGroup
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import com.example.rehabilitation.databinding.TaskItemBinding
|
||||
|
||||
class TaskItemAdapter(
|
||||
private val taskItems: List<TaskItem>,
|
||||
private val clickListener: TaskItemClickListener
|
||||
|
||||
):RecyclerView.Adapter<TaskItemViewHolder>() {
|
||||
|
||||
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): TaskItemViewHolder {
|
||||
val from = LayoutInflater.from(parent.context)
|
||||
val binding = TaskItemBinding.inflate(from,parent,false)
|
||||
return TaskItemViewHolder(parent.context, binding, clickListener)
|
||||
}
|
||||
|
||||
override fun getItemCount(): Int = taskItems.size
|
||||
|
||||
override fun onBindViewHolder(holder: TaskItemViewHolder, position: Int) {
|
||||
holder.bindTaskItem(taskItems[position])
|
||||
}
|
||||
}
|
|
@ -1,7 +0,0 @@
|
|||
package com.example.rehabilitation.Baza
|
||||
|
||||
interface TaskItemClickListener {
|
||||
fun editTaskItem(taskitem:TaskItem)
|
||||
fun completeTaskItem(taskitem:TaskItem)
|
||||
|
||||
}
|
|
@ -1,41 +0,0 @@
|
|||
package com.example.rehabilitation.Baza
|
||||
|
||||
import android.content.Context
|
||||
import android.graphics.Paint
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import com.example.rehabilitation.databinding.TaskItemBinding
|
||||
import java.time.format.DateTimeFormatter
|
||||
|
||||
class TaskItemViewHolder(
|
||||
private val context: Context,
|
||||
private val binding: TaskItemBinding,
|
||||
private val clickListener: TaskItemClickListener
|
||||
):RecyclerView.ViewHolder(binding.root) {
|
||||
|
||||
private val timeFormat = DateTimeFormatter.ofPattern("HH:mm")
|
||||
fun bindTaskItem(taskItem:TaskItem){
|
||||
binding.txtName.text = taskItem.name
|
||||
//binding.txtDesc.text = taskItem.desc
|
||||
|
||||
if(taskItem.isCompleted()){
|
||||
binding.txtName.paintFlags = Paint.STRIKE_THRU_TEXT_FLAG
|
||||
binding.txtTime.paintFlags = Paint.STRIKE_THRU_TEXT_FLAG
|
||||
}
|
||||
|
||||
binding.btnComplete.setBackgroundResource(taskItem.imageResource())
|
||||
binding.btnComplete.setColorFilter(taskItem.imageColor(context))
|
||||
binding.btnComplete.setOnClickListener{
|
||||
clickListener.completeTaskItem(taskItem)
|
||||
}
|
||||
binding.taskCellContainers.setOnClickListener{
|
||||
clickListener.editTaskItem(taskItem)
|
||||
}
|
||||
|
||||
if(taskItem.dueTime != null){
|
||||
binding.txtTime.text = timeFormat.format(taskItem.dueTime)
|
||||
}
|
||||
else{
|
||||
binding.txtTime.text = ""
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,44 +0,0 @@
|
|||
package com.example.rehabilitation.Baza
|
||||
|
||||
import androidx.lifecycle.MutableLiveData
|
||||
import androidx.lifecycle.ViewModel
|
||||
import java.time.LocalDate
|
||||
import java.time.LocalTime
|
||||
import java.util.UUID
|
||||
|
||||
class TaskViewModel:ViewModel() {
|
||||
var taskItems = MutableLiveData<MutableList<TaskItem>>()
|
||||
|
||||
init{
|
||||
taskItems.value = mutableListOf()
|
||||
}
|
||||
|
||||
//Добавление
|
||||
fun addTaskItem(newTask:TaskItem){
|
||||
val list = taskItems.value
|
||||
list!!.add(newTask)
|
||||
taskItems.postValue(list!!)
|
||||
}
|
||||
|
||||
//Обновление
|
||||
fun updateTaskItem(id: UUID, name:String, desc:String, dueTime: LocalTime?){
|
||||
val list = taskItems.value
|
||||
val task = list!!.find{it.id == id}!!
|
||||
task.name = name
|
||||
task.desc = desc
|
||||
task.dueTime = dueTime
|
||||
taskItems.postValue(list!!)
|
||||
}
|
||||
|
||||
//Вывод
|
||||
fun setCompleted(taskItem:TaskItem){
|
||||
val list = taskItems.value
|
||||
val task = list!!.find{it.id == taskItem.id}!!
|
||||
if(task.completedDate == null){
|
||||
task.completedDate = LocalDate.now()
|
||||
}
|
||||
taskItems.postValue(list!!)
|
||||
}
|
||||
|
||||
|
||||
}
|
|
@ -1,15 +1,21 @@
|
|||
package com.example.rehabilitation
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import android.content.Intent
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import android.os.Bundle
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import com.example.rehabilitation.User.fragmentUser.CalendarFragment
|
||||
import com.example.rehabilitation.User.fragmentUser.HomeFragment
|
||||
import com.example.rehabilitation.User.fragmentUser.InformationFragment
|
||||
import com.example.rehabilitation.User.fragmentUser.ProgresFragment
|
||||
import com.example.rehabilitation.User.fragmentUser.SceduleFragment
|
||||
import com.example.rehabilitation.databinding.ActivityMainBinding
|
||||
import com.example.rehabilitation.fragment.User.*
|
||||
|
||||
class MainActivity : AppCompatActivity() {
|
||||
private lateinit var binding: ActivityMainBinding
|
||||
|
||||
|
||||
@SuppressLint("DiscouragedApi")
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
binding = ActivityMainBinding.inflate(layoutInflater)
|
||||
|
@ -27,6 +33,11 @@ class MainActivity : AppCompatActivity() {
|
|||
val intent = Intent(this, SettingActivity::class.java)
|
||||
startActivity(intent)
|
||||
}
|
||||
|
||||
|
||||
|
||||
//binding.imageView3.resources.getIdentifier("b3_1","drawable",this.packageName);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -3,7 +3,14 @@ package com.example.rehabilitation
|
|||
import android.content.Intent
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import android.os.Bundle
|
||||
import com.example.rehabilitation.Admin.activityAdmin.FeedbackActivity
|
||||
import com.example.rehabilitation.Admin.activityAdmin.StatisticsActivity
|
||||
import com.example.rehabilitation.Admin.activityAdmin.UserSettingActivity
|
||||
import com.example.rehabilitation.databinding.ActivitySettingBinding
|
||||
import com.example.rehabilitation.Admin.fragmrntAdmin.FeedbackFragment
|
||||
import com.example.rehabilitation.Admin.fragmrntAdmin.MainSettingFragment
|
||||
import com.example.rehabilitation.Admin.fragmrntAdmin.StatisticsFragment
|
||||
import com.example.rehabilitation.Admin.fragmrntAdmin.UserSettingFragment
|
||||
|
||||
class SettingActivity : AppCompatActivity() {
|
||||
private lateinit var binding: ActivitySettingBinding
|
||||
|
@ -12,9 +19,33 @@ class SettingActivity : AppCompatActivity() {
|
|||
binding = ActivitySettingBinding.inflate(layoutInflater)
|
||||
setContentView(binding.root)
|
||||
|
||||
// //Выводим фрагмент как экран
|
||||
// supportFragmentManager.beginTransaction()
|
||||
// .replace(R.id.CLMainSetting, MainSettingFragment.newInstance())
|
||||
// .commit()//Заменяем наш экран на фрагмент (используем наш экран как основу)//R.id.placeHolder - куда всталяем //MainFragment.newInstance() - это то что мы вставляем
|
||||
|
||||
|
||||
binding.btnExitSetting.setOnClickListener {
|
||||
finish()
|
||||
}
|
||||
|
||||
binding.cvSettingUser.setOnClickListener{
|
||||
val intent = Intent(this, UserSettingActivity::class.java)
|
||||
startActivity(intent)
|
||||
}
|
||||
|
||||
binding.cvFeedback.setOnClickListener{
|
||||
val intent = Intent(this, FeedbackActivity::class.java)
|
||||
startActivity(intent)
|
||||
}
|
||||
|
||||
binding.cvStatistics.setOnClickListener{
|
||||
val intent = Intent(this, StatisticsActivity::class.java)
|
||||
startActivity(intent)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
|
@ -0,0 +1,132 @@
|
|||
package com.example.rehabilitation.User.fragmentUser
|
||||
|
||||
import android.content.ContentResolver
|
||||
import android.net.Uri
|
||||
import android.os.Bundle
|
||||
import android.util.Log
|
||||
import androidx.fragment.app.Fragment
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.widget.CalendarView
|
||||
import android.widget.Toast
|
||||
import androidx.fragment.app.activityViewModels
|
||||
import androidx.lifecycle.asLiveData
|
||||
import androidx.recyclerview.widget.GridLayoutManager
|
||||
import com.example.rehabilitation.BuildConfig
|
||||
import com.example.rehabilitation.R
|
||||
import com.example.rehabilitation.databinding.FragmentCalendarBinding
|
||||
import com.example.rehabilitation.db.MainDB
|
||||
import com.example.rehabilitation.dip.Day.DayAdapter
|
||||
import com.example.rehabilitation.dip.Day.DayModel
|
||||
import com.example.sqlitework.dip.MainViewModel
|
||||
import java.time.LocalDate
|
||||
import java.util.Calendar
|
||||
|
||||
|
||||
class CalendarFragment : Fragment(),DayAdapter.Listener {
|
||||
private lateinit var binding: FragmentCalendarBinding
|
||||
lateinit var adapterDay: DayAdapter
|
||||
private val model: MainViewModel by activityViewModels()//Инициализировали класс
|
||||
|
||||
override fun onCreateView(
|
||||
inflater: LayoutInflater, container: ViewGroup?,
|
||||
savedInstanceState: Bundle?
|
||||
): View? {
|
||||
binding = FragmentCalendarBinding.inflate(layoutInflater,container,false)
|
||||
return binding.root
|
||||
}
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
initRcViewDay()
|
||||
liveReadOrderDayCurrent()
|
||||
model.liveDayList.observe(viewLifecycleOwner) {//viewLifecycleOwner - следит за циклом жизни fragment
|
||||
adapterDay.submitList(it)//Напрямую переадем созданный список в adapter(ProductAdapter)
|
||||
}
|
||||
addListModelCardsDay("${LocalDate.now()}")
|
||||
|
||||
binding.calendarView.setOnDateChangeListener { calView: CalendarView, year: Int, month: Int, dayOfMonth: Int ->
|
||||
|
||||
// Create calender object with which will have system date time.
|
||||
val calender: Calendar = Calendar.getInstance()
|
||||
|
||||
// Set attributes in calender object as per selected date.
|
||||
calender.set(year, month, dayOfMonth)
|
||||
|
||||
// Now set calenderView with this calender object to highlight selected date on UI.
|
||||
calView.setDate(calender.timeInMillis, true, true)
|
||||
Log.d("SelectedDate", "${LocalDate.of(year, month+1, dayOfMonth)}")
|
||||
if(LocalDate.of(year, month+1, dayOfMonth).toString() == LocalDate.now().toString()){
|
||||
addListModelCardsDay("${LocalDate.of(year, month+1, dayOfMonth)}")
|
||||
}
|
||||
else{
|
||||
Toast.makeText(requireContext(), "Ошибка", Toast.LENGTH_SHORT).show()
|
||||
}
|
||||
}
|
||||
//addListModelCardsDay("2023-7-13")
|
||||
val fileName = "b3_1.png"
|
||||
|
||||
val fileUri = Uri.parse("${ContentResolver.SCHEME_ANDROID_RESOURCE}://"+ BuildConfig.APPLICATION_ID+"/drawable/${fileName}")
|
||||
val filePath = fileUri.path
|
||||
|
||||
// val fileName1 = "my_image.png"
|
||||
// val inputStream1 = assets.open("drawable/${fileName}")
|
||||
// val filePath1 = inputStream.toString()
|
||||
|
||||
// val resourceId12 = R.drawable.b3_1
|
||||
// val fileUri12 = Uri.parse("android.resource://"+ BuildConfig.APPLICATION_ID+"/${resourceId12}")
|
||||
// val filePath12 = fileUri12.path
|
||||
|
||||
// binding.imageView4.setImageResource(filePath12!!.toInt())
|
||||
}
|
||||
|
||||
//Функция запускающая отслеживания за списком, чтобы вовремя обновлять основную карточку продукта
|
||||
private fun liveReadOrderDayCurrent() = with(binding) {
|
||||
model.liveDayCurrent.observe(viewLifecycleOwner) {//viewLifecycleOwner - следит за циклом жизни fragment
|
||||
|
||||
}
|
||||
}
|
||||
//Инициализация списка
|
||||
private fun initRcViewDay() = with(binding) {
|
||||
rcViewDayCalendar.layoutManager = GridLayoutManager(requireContext(),1)//По вертикали будет выводить по умолчанию
|
||||
adapterDay = DayAdapter(this@CalendarFragment)
|
||||
rcViewDayCalendar.adapter = adapterDay
|
||||
}
|
||||
//Заполнения модели и списка
|
||||
private fun addListModelCardsDay(day:String){
|
||||
val db = MainDB.getDB(requireContext())
|
||||
val list = ArrayList<DayModel>()
|
||||
db.getDaoDaySport().getAllItemDaySport(day).asLiveData().observe(requireActivity()){itList->
|
||||
var number = 0;
|
||||
itList.forEach{
|
||||
//val text = "Id: ${it.id} Name: ${it.name} Proce: ${it.price}"
|
||||
//binding.txtList.append(text)
|
||||
val itemDay = DayModel(
|
||||
it.id.toString(),
|
||||
//it.name.toString(),
|
||||
//it.desc.toString(),
|
||||
"123",
|
||||
"321",
|
||||
it.day.toString(),
|
||||
(number++).toString(),
|
||||
it.category.toString(),
|
||||
//it.count.toString(),
|
||||
//it.image.toString(),
|
||||
it.check.toString(),
|
||||
)
|
||||
//model.liveZakazCurrent.value = item//Передаем в liveDataCurrent один из продуктов, чтобы дальше эти данные использовать и передавать их в пробную ячейку
|
||||
list.add(itemDay)//Передали заполненый список
|
||||
}
|
||||
model.liveDayList.value = list
|
||||
}
|
||||
}
|
||||
companion object {
|
||||
|
||||
fun newInstance() = CalendarFragment()
|
||||
}
|
||||
|
||||
override fun onClickDay(item: DayModel) {
|
||||
|
||||
}
|
||||
}
|
|
@ -1,11 +1,10 @@
|
|||
package com.example.rehabilitation.fragment.User
|
||||
package com.example.rehabilitation.User.fragmentUser
|
||||
|
||||
import android.os.Bundle
|
||||
import androidx.fragment.app.Fragment
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import com.example.rehabilitation.R
|
||||
import com.example.rehabilitation.databinding.FragmentHomeBinding
|
||||
|
||||
class HomeFragment : Fragment() {
|
|
@ -1,11 +1,10 @@
|
|||
package com.example.rehabilitation.fragment.User
|
||||
package com.example.rehabilitation.User.fragmentUser
|
||||
|
||||
import android.os.Bundle
|
||||
import androidx.fragment.app.Fragment
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import com.example.rehabilitation.R
|
||||
import com.example.rehabilitation.databinding.FragmentInformationBinding
|
||||
|
||||
|
|
@ -1,11 +1,10 @@
|
|||
package com.example.rehabilitation.fragment.User
|
||||
package com.example.rehabilitation.User.fragmentUser
|
||||
|
||||
import android.os.Bundle
|
||||
import androidx.fragment.app.Fragment
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import com.example.rehabilitation.R
|
||||
import com.example.rehabilitation.databinding.FragmentProgresBinding
|
||||
|
||||
|
|
@ -0,0 +1,266 @@
|
|||
package com.example.rehabilitation.User.fragmentUser
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import android.content.ContentResolver
|
||||
import android.net.Uri
|
||||
import android.os.Bundle
|
||||
import android.os.Environment
|
||||
import android.util.Log
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.widget.HorizontalScrollView
|
||||
import android.widget.Toast
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.fragment.app.activityViewModels
|
||||
import androidx.lifecycle.asLiveData
|
||||
import androidx.recyclerview.widget.GridLayoutManager
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import com.example.rehabilitation.BuildConfig
|
||||
import com.example.rehabilitation.R
|
||||
import com.example.rehabilitation.databinding.FragmentSceduleBinding
|
||||
import com.example.rehabilitation.db.MainDB
|
||||
import com.example.rehabilitation.dip.Day.DayAdapter
|
||||
import com.example.rehabilitation.dip.Day.DayModel
|
||||
import com.example.rehabilitation.dip.Image.ImageSportAdapter
|
||||
import com.example.rehabilitation.dip.Image.ImageSportModel
|
||||
import com.example.rehabilitation.dip.Month.MonthAdapter
|
||||
import com.example.rehabilitation.dip.Month.MonthModel
|
||||
import com.example.sqlitework.dip.MainViewModel
|
||||
import java.io.File
|
||||
import java.time.LocalDate
|
||||
|
||||
|
||||
class SceduleFragment(/*var taskItem: TaskItem?*/) : Fragment(), MonthAdapter.Listener,DayAdapter.Listener{
|
||||
private lateinit var binding: FragmentSceduleBinding
|
||||
// private lateinit var taskViewModel: TaskViewModel
|
||||
private val model: MainViewModel by activityViewModels()//Инициализировали класс
|
||||
lateinit var adapterMonth: MonthAdapter
|
||||
lateinit var adapterDay: DayAdapter
|
||||
lateinit var adapterImage: ImageSportAdapter
|
||||
|
||||
override fun onCreateView(
|
||||
inflater: LayoutInflater, container: ViewGroup?,
|
||||
savedInstanceState: Bundle?
|
||||
): View? {
|
||||
binding = FragmentSceduleBinding.inflate(layoutInflater, container, false)
|
||||
return binding.root
|
||||
}
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
initRcView()
|
||||
initRcViewDay()
|
||||
initRcViewImage()
|
||||
liveReadOrderCurrent()
|
||||
liveReadOrderDayCurrent()
|
||||
model.liveListList.observe(viewLifecycleOwner) {//viewLifecycleOwner - следит за циклом жизни fragment
|
||||
adapterMonth.submitList(it)//Напрямую переадем созданный список в adapter(ProductAdapter)
|
||||
binding.txtNullList.visibility = View.GONE
|
||||
}
|
||||
|
||||
model.liveDayList.observe(viewLifecycleOwner) {//viewLifecycleOwner - следит за циклом жизни fragment
|
||||
adapterDay.submitList(it)//Напрямую переадем созданный список в adapter(ProductAdapter)
|
||||
}
|
||||
|
||||
model.liveImageList.observe(viewLifecycleOwner) {//viewLifecycleOwner - следит за циклом жизни fragment
|
||||
adapterImage.submitList(it)//Напрямую переадем созданный список в adapter(ProductAdapter)
|
||||
}
|
||||
|
||||
|
||||
//Закрытие карточки определенного дня
|
||||
binding.btnExitCardSport.setOnClickListener {
|
||||
visible2()
|
||||
binding.txtNameCard.setText("")
|
||||
binding.txtDescCard.setText("")
|
||||
}
|
||||
|
||||
binding.btnExitCLDayList.setOnClickListener{
|
||||
visible1()
|
||||
}
|
||||
|
||||
//Заполнение списка
|
||||
addListModelCards()
|
||||
|
||||
|
||||
|
||||
}
|
||||
companion object {
|
||||
fun newInstance() = SceduleFragment(/*null*/)
|
||||
}
|
||||
//Функция запускающая отслеживания за списком, чтобы вовремя обновлять основную карточку продукта
|
||||
private fun liveReadOrderCurrent() = with(binding) {
|
||||
model.liveListCurrent.observe(viewLifecycleOwner) {//viewLifecycleOwner - следит за циклом жизни fragment
|
||||
visible2()
|
||||
//addListModelCardsDay(it.day)
|
||||
}
|
||||
|
||||
}
|
||||
//Функция запускающая отслеживания за списком, чтобы вовремя обновлять основную карточку продукта
|
||||
@SuppressLint("DiscouragedApi")
|
||||
private fun liveReadOrderDayCurrent() = with(binding) {
|
||||
model.liveDayCurrent.observe(viewLifecycleOwner) {//viewLifecycleOwner - следит за циклом жизни fragment
|
||||
visible3()
|
||||
//val db = MainDB.getDB(requireContext())
|
||||
//db.getDaoDaySport().getAllItemDaySport(day).asLiveData().observe(requireActivity()){itList->
|
||||
|
||||
|
||||
// var gpath:String = Environment.getExternalStorageDirectory().absolutePath
|
||||
// var spath = R.drawable.b3_1
|
||||
// var fullpath = File(gpath + File.separator + spath)
|
||||
//var image = R.drawable.
|
||||
|
||||
//val mFile1 = Environment.getExternalStorageDirectory()
|
||||
//val fileName = "b3_1.png"
|
||||
//val mFile2 = File(mFile1, fileName)
|
||||
//val sdPath = mFile1.absolutePath.toString() + "/" + fileName
|
||||
// val temp = File(sdPath)
|
||||
val db = MainDB.getDB(requireContext())
|
||||
val listImage = ArrayList<ImageSportModel>()
|
||||
db.getDaoImage().getAllItemImage(it.category).asLiveData().observe(requireActivity()) { itList1 ->
|
||||
itList1.forEach {
|
||||
val item = ImageSportModel(
|
||||
it.id.toString(),
|
||||
it.image,
|
||||
it.name.toString(),
|
||||
)
|
||||
Log.d("sdaasd","${item.article}")
|
||||
listImage.add(item)//Передали заполненый список
|
||||
}
|
||||
|
||||
model.liveImageList.value = listImage
|
||||
|
||||
}
|
||||
//Log.i("5555", "Your IMAGE ABSOLUTE PATH:-$sdPath")
|
||||
//val otherPath = Uri.parse("android.resource://"+ BuildConfig.APPLICATION_ID+"/drawable/b3_1.png")
|
||||
//val path = Uri.parse("android.resource://com.nikhil.material/" + R.drawable.ima)
|
||||
//val fileUri = Uri.parse("${ContentResolver.SCHEME_ANDROID_RESOURCE}://"+ BuildConfig.APPLICATION_ID+"/drawable/${fileName}")
|
||||
binding.txtNameCard.setText("")
|
||||
binding.txtDescCard.setText("")
|
||||
binding.txtTitle.setText("")
|
||||
binding.txtTitle.setText("Упражнение "+it.number)
|
||||
binding.txtNameCard.setText(it.name)
|
||||
binding.txtDescCard.setText(binding.txtDescCard.text.toString()+it.desc)
|
||||
// binding.txtTitle.setText(it.name)
|
||||
//binding.imageView2.setImageResource(R.drawable.b3_1)
|
||||
//val resourceId = resources.getIdentifier("b3_1", "drawable", activity?.packageName)
|
||||
// val sads = "2131231027"
|
||||
// binding.imageView2.setImageResource(sads.toInt());
|
||||
// Log.d("otherPath", sads.toString())
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//Заполнения модели и списка
|
||||
private fun addListModelCards(){
|
||||
val db = MainDB.getDB(requireContext())
|
||||
val list = ArrayList<MonthModel>()
|
||||
db.getDao().getAllItems().asLiveData().observe(requireActivity()){itList->
|
||||
binding.txtList.text = ""
|
||||
itList.forEach{
|
||||
//val text = "Id: ${it.id} Name: ${it.name} Proce: ${it.price}"
|
||||
//binding.txtList.append(text)
|
||||
val item = MonthModel(
|
||||
it.id.toString(),
|
||||
it.day.toString(),
|
||||
it.date.toString(),
|
||||
it.check.toString()
|
||||
)
|
||||
//model.liveZakazCurrent.value = item//Передаем в liveDataCurrent один из продуктов, чтобы дальше эти данные использовать и передавать их в пробную ячейку
|
||||
list.add(item)//Передали заполненый список
|
||||
}
|
||||
model.liveListList.value = list
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
//Заполнения модели и списка
|
||||
private fun addListModelCardsDay(day:String){
|
||||
|
||||
val db = MainDB.getDB(requireContext())
|
||||
val list = ArrayList<DayModel>()
|
||||
db.getDaoDaySport().getAllItemDaySport(day).asLiveData().observe(requireActivity()){itList->
|
||||
var number = 1;
|
||||
itList.forEach{
|
||||
db.getDaoSportCategory().getAllItemsSportCategory("c").asLiveData().observe(requireActivity()){itSport->
|
||||
itSport.forEach {
|
||||
val itemDay = DayModel(
|
||||
it.id.toString(),
|
||||
it.name,
|
||||
it.desc,
|
||||
day,
|
||||
(number++).toString(),
|
||||
it.category.toString(),
|
||||
"0",
|
||||
)
|
||||
list.add(itemDay)//Передали заполненый список
|
||||
}
|
||||
}
|
||||
}
|
||||
model.liveDayList.value = list
|
||||
Log.d("sadas",list.toString())
|
||||
}
|
||||
}
|
||||
|
||||
//Инициализация списка
|
||||
private fun initRcView() = with(binding) {
|
||||
todoListRecycleView.layoutManager = GridLayoutManager(requireContext(),1)//По вертикали будет выводить по умолчанию
|
||||
adapterMonth = MonthAdapter(this@SceduleFragment)
|
||||
todoListRecycleView.adapter = adapterMonth
|
||||
}
|
||||
//Инициализация списка
|
||||
private fun initRcViewDay() = with(binding) {
|
||||
rcVIewDayList.layoutManager = GridLayoutManager(requireContext(),1)//По вертикали будет выводить по умолчанию
|
||||
adapterDay = DayAdapter(this@SceduleFragment)
|
||||
rcVIewDayList.adapter = adapterDay
|
||||
}
|
||||
//Инициализация списка для фотографий
|
||||
private fun initRcViewImage() = with(binding) {
|
||||
rcViewImage.layoutManager = LinearLayoutManager(requireContext(),LinearLayoutManager.HORIZONTAL,false)//По вертикали будет выводить по умолчанию
|
||||
adapterImage = ImageSportAdapter()
|
||||
rcViewImage.adapter = adapterImage
|
||||
}
|
||||
|
||||
|
||||
|
||||
//Вывод первого экрана
|
||||
private fun visible1(){
|
||||
binding.CLListSport.visibility = View.VISIBLE
|
||||
binding.CLCardSport.visibility = View.GONE
|
||||
binding.CLDayList.visibility = View.GONE
|
||||
}
|
||||
//Вывод второго экрана
|
||||
private fun visible2(){
|
||||
binding.CLListSport.visibility = View.GONE
|
||||
binding.CLDayList.visibility = View.VISIBLE
|
||||
binding.CLCardSport.visibility = View.GONE
|
||||
|
||||
}
|
||||
//Вывод второго экрана
|
||||
private fun visible3(){
|
||||
binding.CLListSport.visibility = View.GONE
|
||||
binding.CLDayList.visibility = View.GONE
|
||||
binding.CLCardSport.visibility = View.VISIBLE
|
||||
}
|
||||
override fun onClickExceptionOrder(item: MonthModel) {
|
||||
//Если открываешь тренировку не сегодняшнего дня то тебя ругает
|
||||
// if(item.day.toString() == LocalDate.now().toString()){
|
||||
model.liveListCurrent.value = item
|
||||
addListModelCardsDay(item.day)
|
||||
// }
|
||||
// else{
|
||||
// Toast.makeText(requireContext(), "Ошибка", Toast.LENGTH_SHORT).show()
|
||||
// }
|
||||
}
|
||||
|
||||
override fun onClickDay(item: DayModel) {
|
||||
model.liveDayCurrent.value = item
|
||||
}
|
||||
|
||||
|
||||
}
|
|
@ -1,14 +1,34 @@
|
|||
package com.example.rehabilitation.db
|
||||
|
||||
import androidx.room.Dao
|
||||
import androidx.room.Delete
|
||||
import androidx.room.Insert
|
||||
import androidx.room.OnConflictStrategy
|
||||
import androidx.room.Query
|
||||
import kotlinx.coroutines.flow.Flow
|
||||
|
||||
@Dao
|
||||
interface Dao {
|
||||
//Таблица по по дням
|
||||
@Insert
|
||||
fun insertItem(item:Item)
|
||||
@Query("SELECT * FROM items")
|
||||
//Таблица определенного дня
|
||||
|
||||
|
||||
//Список по дням
|
||||
@Query("SELECT * FROM items ORDER BY day ASC")
|
||||
fun getAllItems(): Flow<List<Item>>
|
||||
|
||||
//Список определенного дня
|
||||
// @Query("SELECT * FROM itemDay")
|
||||
// fun getAllItemDay(): Flow<List<ItemDay>>
|
||||
|
||||
//Обновление по переднному параметру
|
||||
@Query("UPDATE items SET `check` = 1 WHERE id = :id")
|
||||
fun updateItems(id : String)
|
||||
|
||||
//Очистка таблицы
|
||||
@Query("DELETE FROM items")
|
||||
fun deleteItem()
|
||||
|
||||
}
|
|
@ -0,0 +1,26 @@
|
|||
package com.example.rehabilitation.db
|
||||
|
||||
import androidx.room.Dao
|
||||
import androidx.room.Insert
|
||||
import androidx.room.Query
|
||||
import kotlinx.coroutines.flow.Flow
|
||||
|
||||
@Dao
|
||||
interface DaoDaySport {
|
||||
//Таблица определенного дня
|
||||
@Insert
|
||||
fun insertItemDaySport(itemDaySport:ItemDaySport)
|
||||
|
||||
//Список определенного дня
|
||||
@Query("SELECT * FROM itemDaySport ORDER BY id ASC")
|
||||
fun getAllItemDaySport(): Flow<List<ItemDaySport>>
|
||||
|
||||
//Список определенного дня
|
||||
@Query("SELECT * FROM itemDaySport WHERE day = :day ORDER BY id ASC")
|
||||
fun getAllItemDaySport(day:String): Flow<List<ItemDaySport>>
|
||||
|
||||
//Очистка таблицы
|
||||
@Query("DELETE FROM itemDaySport")
|
||||
fun deleteItemDaySport()
|
||||
|
||||
}
|
|
@ -0,0 +1,26 @@
|
|||
package com.example.rehabilitation.db
|
||||
|
||||
import androidx.room.Dao
|
||||
import androidx.room.Insert
|
||||
import androidx.room.Query
|
||||
import kotlinx.coroutines.flow.Flow
|
||||
|
||||
@Dao
|
||||
interface DaoImage {
|
||||
//Таблица определенного дня
|
||||
@Insert
|
||||
fun insertItemImage(itemImage:ItemImage)
|
||||
|
||||
//Список определенного дня
|
||||
@Query("SELECT * FROM itemImage ")
|
||||
fun getAllItemImage(): Flow<List<ItemImage>>
|
||||
|
||||
//Список определенного дня
|
||||
@Query("SELECT * FROM itemImage WHERE article = :article ORDER BY id ASC")
|
||||
fun getAllItemImage(article:String): Flow<List<ItemImage>>
|
||||
|
||||
//Очистка таблицы
|
||||
@Query("DELETE FROM itemImage")
|
||||
fun deleteItemImage()
|
||||
|
||||
}
|
|
@ -0,0 +1,34 @@
|
|||
package com.example.rehabilitation.db
|
||||
|
||||
import androidx.room.Dao
|
||||
import androidx.room.Delete
|
||||
import androidx.room.Insert
|
||||
import androidx.room.OnConflictStrategy
|
||||
import androidx.room.Query
|
||||
import kotlinx.coroutines.flow.Flow
|
||||
|
||||
@Dao
|
||||
interface DaoSportCategory {
|
||||
//Таблица по по дням
|
||||
@Insert
|
||||
fun insertItemSportCategory(item:ItemSportCategory)
|
||||
//Таблица определенного дня
|
||||
|
||||
|
||||
//Список по дням
|
||||
@Query("SELECT * FROM itemSportCategory WHERE image = :category")
|
||||
fun getAllItemsSportCategory(category:String): Flow<List<ItemSportCategory>>
|
||||
|
||||
//Список определенного дня
|
||||
// @Query("SELECT * FROM itemDay")
|
||||
// fun getAllItemDay(): Flow<List<ItemDay>>
|
||||
|
||||
//Обновление по переднному параметру
|
||||
// @Query("UPDATE itemSportCategory SET `check` = 1 WHERE id = :id")
|
||||
// fun updateItemsSportCategory(id : String)
|
||||
|
||||
//Очистка таблицы
|
||||
@Query("DELETE FROM itemSportCategory")
|
||||
fun deleteItemSportCategory()
|
||||
|
||||
}
|
|
@ -3,14 +3,17 @@ package com.example.rehabilitation.db
|
|||
import androidx.room.ColumnInfo
|
||||
import androidx.room.Entity
|
||||
import androidx.room.PrimaryKey
|
||||
import java.util.Date
|
||||
|
||||
@Entity(tableName = "items")
|
||||
data class Item(
|
||||
@PrimaryKey(autoGenerate = true)
|
||||
var id:Int? = null,
|
||||
@ColumnInfo(name = "name")
|
||||
var name:String,
|
||||
@ColumnInfo(name = "price")
|
||||
var price:String,
|
||||
|
||||
@ColumnInfo(name = "day")
|
||||
var day: String,
|
||||
@ColumnInfo(name = "date")
|
||||
var date: String,
|
||||
@ColumnInfo(name = "check")
|
||||
var check:Int
|
||||
)
|
||||
|
||||
|
|
|
@ -0,0 +1,18 @@
|
|||
package com.example.rehabilitation.db
|
||||
|
||||
import androidx.room.ColumnInfo
|
||||
import androidx.room.Entity
|
||||
import androidx.room.PrimaryKey
|
||||
|
||||
@Entity(tableName = "itemDaySport")
|
||||
data class ItemDaySport(
|
||||
@PrimaryKey(autoGenerate = true)
|
||||
var id:Int? = null,
|
||||
@ColumnInfo(name = "day")
|
||||
var day:String,
|
||||
@ColumnInfo(name = "category")
|
||||
var category:String,
|
||||
@ColumnInfo(name = "check")
|
||||
var check:Int,
|
||||
|
||||
)
|
|
@ -0,0 +1,17 @@
|
|||
package com.example.rehabilitation.db
|
||||
|
||||
import androidx.room.ColumnInfo
|
||||
import androidx.room.Entity
|
||||
import androidx.room.PrimaryKey
|
||||
|
||||
@Entity(tableName = "itemImage")
|
||||
data class ItemImage(
|
||||
@PrimaryKey(autoGenerate = true)
|
||||
var id:Int? = null,
|
||||
@ColumnInfo(name = "nameImage")
|
||||
var image:String,
|
||||
@ColumnInfo(name = "article")
|
||||
var name:String,
|
||||
@ColumnInfo(name = "category")
|
||||
var category:String,
|
||||
)
|
|
@ -0,0 +1,23 @@
|
|||
package com.example.rehabilitation.db
|
||||
|
||||
import androidx.room.ColumnInfo
|
||||
import androidx.room.Entity
|
||||
import androidx.room.PrimaryKey
|
||||
import java.util.Date
|
||||
|
||||
@Entity(tableName = "itemSportCategory")
|
||||
data class ItemSportCategory(
|
||||
@PrimaryKey(autoGenerate = true)
|
||||
var id:Int? = null,
|
||||
@ColumnInfo(name = "name")
|
||||
var name:String,
|
||||
@ColumnInfo(name = "desc")
|
||||
var desc:String,
|
||||
@ColumnInfo(name = "count")
|
||||
var count:String,
|
||||
@ColumnInfo(name = "image")
|
||||
var image:String,
|
||||
@ColumnInfo(name = "category")
|
||||
var category:String
|
||||
)
|
||||
|
|
@ -5,15 +5,18 @@ import androidx.room.RoomDatabase
|
|||
import android.content.Context
|
||||
import androidx.room.Database
|
||||
|
||||
@Database(entities = [Item::class], version = 1)
|
||||
@Database(entities = [Item::class, ItemDaySport::class, ItemImage::class, ItemSportCategory::class], version = 1)
|
||||
abstract class MainDB: RoomDatabase() {
|
||||
abstract fun getDao(): Dao
|
||||
abstract fun getDaoDaySport(): DaoDaySport
|
||||
abstract fun getDaoImage(): DaoImage
|
||||
abstract fun getDaoSportCategory(): DaoSportCategory
|
||||
companion object{
|
||||
fun getDB(context: Context):MainDB{
|
||||
return Room.databaseBuilder(
|
||||
context.applicationContext,
|
||||
MainDB::class.java,
|
||||
"tests.db"
|
||||
"tttttttttttttt1.db"
|
||||
).build()
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,78 @@
|
|||
package com.example.rehabilitation.dip.Day
|
||||
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.recyclerview.widget.DiffUtil
|
||||
import androidx.recyclerview.widget.ListAdapter
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import com.example.rehabilitation.R
|
||||
import com.example.rehabilitation.databinding.RcItemBinding
|
||||
import com.example.rehabilitation.databinding.RcItemDayBinding
|
||||
|
||||
|
||||
class DayAdapter(val listener_zakaz: Listener) : ListAdapter<DayModel, DayAdapter.Holder>(
|
||||
Comparator()
|
||||
) {//Productitem - по этой форме будем заполнять.//ProductAdapter.holder - это создаваемый holder который хранит логику как нужно заполнять карточку
|
||||
|
||||
|
||||
//В holder создаетс код с помошью которого мы будем заполнять и сохронять разметку
|
||||
class Holder(view: View, val listener_zakaz: Listener): RecyclerView.ViewHolder(view) {//Класс который будет хранить сссылки на элементы, и отвечает за один элемент за 1 раз, то есть сначсало нулевой элемент заполнит, потом первый, потом второй и т.д.
|
||||
//Для передачи данных
|
||||
|
||||
val binding = RcItemDayBinding.bind(view)//view - здесь храянтся элементы и мы их bind заполним в ListItemBinding//ListItemBinding - это клласс даннйо разметки(карточки) которую мы будем заполнять, а нужна дання переменная(binding), чтобы мжно было при заполнение обращатся к элементам карточки
|
||||
|
||||
var itemTemp: DayModel? = null//Глобальная переменная для нашего item, чтобы можно было передать данные для нажатия
|
||||
|
||||
//init - дает возможность внутри адаптера обращаться к элементам экрана
|
||||
init {
|
||||
itemView.setOnClickListener {//Нажатие на ячейку//itemView - это весь элемент карточки из списка
|
||||
itemTemp?.let { it1 -> listener_zakaz.onClickDay(it1) }
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
//Функция bind для заполнения
|
||||
fun bind(item: DayModel) = with(binding) {//Productitem - перпедаем данные
|
||||
itemTemp = item
|
||||
//txtName.text = item.name
|
||||
//txtCount.text = item.count
|
||||
//txtImage.text = item.image
|
||||
txtName.text = item.number
|
||||
txtDay.text = item.day
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): Holder {
|
||||
val view = LayoutInflater.from(parent.context).inflate(R.layout.rc_item_day, parent, false)//Создаем(надуваем) list_item
|
||||
return Holder(view, listener_zakaz)//Через Holder возврощаем view
|
||||
}
|
||||
|
||||
override fun onBindViewHolder(holder: Holder, position: Int) {
|
||||
val view = holder.bind(getItem(position))//Заполняем по позиции карточку
|
||||
}
|
||||
|
||||
|
||||
//Comparator - сравнивает старый список и новый и если что-то изменилось, то работает с конкретным изменением списке, а не весь список переписывает
|
||||
class Comparator : DiffUtil.ItemCallback<DayModel>() {
|
||||
override fun areItemsTheSame(oldItem: DayModel, newItem: DayModel): Boolean {//Тут лучше всего сравнивать по id//oldItem - элементы старого списка, newItem - элементы нового списка//Возврощает Boolean, тоесть есть изменения или нет
|
||||
return oldItem.id == newItem.id//Сравниваем полностью весь список новы и старый, по очередно по одной карточке и по элементно, то есть нулевой элемент, первый, второй и т.д.. Но лучше сравнивать по id списки, а не просто весь список, так как это эфективнее, так как id уникальный(oldItem.id == newItem.id)
|
||||
}
|
||||
|
||||
override fun areContentsTheSame(oldItem: DayModel, newItem: DayModel): Boolean {//Утут нужно сравнивать весь спсок старых элементов и новых
|
||||
return oldItem == newItem//Сравниваем полностью весь список новы и старый
|
||||
}
|
||||
}
|
||||
|
||||
//Интерфейс нажатия на кнопку удалить товар из корзины
|
||||
interface Listener {
|
||||
fun onClickDay(item: DayModel)
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
package com.example.rehabilitation.dip.Day
|
||||
|
||||
data class DayModel(
|
||||
val id: String,
|
||||
val name: String,
|
||||
val desc:String,
|
||||
val day: String,
|
||||
val number: String,
|
||||
// val count: String,
|
||||
val category: String,
|
||||
// val image: String,
|
||||
val check:String,
|
||||
)
|
||||
|
|
@ -0,0 +1,72 @@
|
|||
package com.example.rehabilitation.dip.Image
|
||||
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.recyclerview.widget.DiffUtil
|
||||
import androidx.recyclerview.widget.ListAdapter
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import com.example.rehabilitation.R
|
||||
import com.example.rehabilitation.databinding.ImageSportCardsBinding
|
||||
import com.example.rehabilitation.databinding.RcItemDayBinding
|
||||
import java.time.LocalDate
|
||||
|
||||
|
||||
class ImageSportAdapter() : ListAdapter<ImageSportModel, ImageSportAdapter.Holder>(
|
||||
Comparator()
|
||||
) {//Productitem - по этой форме будем заполнять.//ProductAdapter.holder - это создаваемый holder который хранит логику как нужно заполнять карточку
|
||||
|
||||
|
||||
//В holder создаетс код с помошью которого мы будем заполнять и сохронять разметку
|
||||
class Holder(view: View): RecyclerView.ViewHolder(view) {//Класс который будет хранить сссылки на элементы, и отвечает за один элемент за 1 раз, то есть сначсало нулевой элемент заполнит, потом первый, потом второй и т.д.
|
||||
//Для передачи данных
|
||||
|
||||
val binding = ImageSportCardsBinding.bind(view)//view - здесь храянтся элементы и мы их bind заполним в ListItemBinding//ListItemBinding - это клласс даннйо разметки(карточки) которую мы будем заполнять, а нужна дання переменная(binding), чтобы мжно было при заполнение обращатся к элементам карточки
|
||||
|
||||
var itemTemp: ImageSportModel? = null//Глобальная переменная для нашего item, чтобы можно было передать данные для нажатия
|
||||
|
||||
//init - дает возможность внутри адаптера обращаться к элементам экрана
|
||||
init {
|
||||
itemView.setOnClickListener {//Нажатие на ячейку//itemView - это весь элемент карточки из списка
|
||||
//itemTemp?.let { it1 -> listener_zakaz.onClickDay(it1) }
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
//Функция bind для заполнения
|
||||
fun bind(item: ImageSportModel) = with(binding) {//Productitem - перпедаем данные
|
||||
itemTemp = item
|
||||
imageSport.setImageResource(item.imageName.toInt())
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): Holder {
|
||||
val view = LayoutInflater.from(parent.context).inflate(R.layout.image_sport_cards, parent, false)//Создаем(надуваем) list_item
|
||||
return Holder(view)//Через Holder возврощаем view
|
||||
}
|
||||
|
||||
override fun onBindViewHolder(holder: Holder, position: Int) {
|
||||
val view = holder.bind(getItem(position))//Заполняем по позиции карточку
|
||||
}
|
||||
|
||||
|
||||
//Comparator - сравнивает старый список и новый и если что-то изменилось, то работает с конкретным изменением списке, а не весь список переписывает
|
||||
class Comparator : DiffUtil.ItemCallback<ImageSportModel>() {
|
||||
override fun areItemsTheSame(oldItem: ImageSportModel, newItem: ImageSportModel): Boolean {//Тут лучше всего сравнивать по id//oldItem - элементы старого списка, newItem - элементы нового списка//Возврощает Boolean, тоесть есть изменения или нет
|
||||
return oldItem.id == newItem.id//Сравниваем полностью весь список новы и старый, по очередно по одной карточке и по элементно, то есть нулевой элемент, первый, второй и т.д.. Но лучше сравнивать по id списки, а не просто весь список, так как это эфективнее, так как id уникальный(oldItem.id == newItem.id)
|
||||
}
|
||||
|
||||
override fun areContentsTheSame(oldItem: ImageSportModel, newItem: ImageSportModel): Boolean {//Утут нужно сравнивать весь спсок старых элементов и новых
|
||||
return oldItem == newItem//Сравниваем полностью весь список новы и старый
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
package com.example.rehabilitation.dip.Image
|
||||
|
||||
data class ImageSportModel(
|
||||
val id: String,
|
||||
val imageName: String,
|
||||
val article: String,
|
||||
)
|
||||
|
|
@ -0,0 +1,25 @@
|
|||
package com.example.sqlitework.dip
|
||||
|
||||
import android.app.Application
|
||||
import androidx.lifecycle.*
|
||||
import com.example.rehabilitation.dip.Day.DayModel
|
||||
import com.example.rehabilitation.dip.Image.ImageSportModel
|
||||
import com.example.rehabilitation.dip.Month.MonthModel
|
||||
|
||||
|
||||
//Тут будут обновлятся данные, следим за списками если что-то обновилось, то уведомлякм и потом ProductAdapter обновит
|
||||
class MainViewModel(application: Application) :AndroidViewModel(application){
|
||||
|
||||
|
||||
//Объявления
|
||||
val liveListCurrent = MutableLiveData<MonthModel>()//Сюда передается новая информация на один день(для слайдера)
|
||||
val liveListList= MutableLiveData<List<MonthModel>>()//Сюда передается новая информация на один день(для все продукции - всего списка)
|
||||
|
||||
val liveDayCurrent = MutableLiveData<DayModel>()//Сюда передается новая информация на один день(для слайдера)
|
||||
val liveDayList= MutableLiveData<List<DayModel>>()//Сюда передается новая информация на один день(для все продукции - всего списка)
|
||||
|
||||
|
||||
val liveImageCurrent = MutableLiveData<ImageSportModel>()//Сюда передается новая информация на один день(для слайдера)
|
||||
val liveImageList= MutableLiveData<List<ImageSportModel>>()//Сюда передается новая информация на один день(для все продукции - всего списка)
|
||||
|
||||
}
|
|
@ -0,0 +1,77 @@
|
|||
package com.example.rehabilitation.dip.Month
|
||||
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.recyclerview.widget.DiffUtil
|
||||
import androidx.recyclerview.widget.ListAdapter
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import com.example.rehabilitation.R
|
||||
import com.example.rehabilitation.databinding.RcItemBinding
|
||||
|
||||
|
||||
class MonthAdapter(val listener_zakaz: Listener) : ListAdapter<MonthModel, MonthAdapter.Holder>(
|
||||
Comparator()
|
||||
) {//Productitem - по этой форме будем заполнять.//ProductAdapter.holder - это создаваемый holder который хранит логику как нужно заполнять карточку
|
||||
|
||||
|
||||
//В holder создаетс код с помошью которого мы будем заполнять и сохронять разметку
|
||||
class Holder(view: View, val listener_zakaz: Listener): RecyclerView.ViewHolder(view) {//Класс который будет хранить сссылки на элементы, и отвечает за один элемент за 1 раз, то есть сначсало нулевой элемент заполнит, потом первый, потом второй и т.д.
|
||||
//Для передачи данных
|
||||
|
||||
val binding = RcItemBinding.bind(view)//view - здесь храянтся элементы и мы их bind заполним в ListItemBinding//ListItemBinding - это клласс даннйо разметки(карточки) которую мы будем заполнять, а нужна дання переменная(binding), чтобы мжно было при заполнение обращатся к элементам карточки
|
||||
|
||||
var itemTemp: MonthModel? = null//Глобальная переменная для нашего item, чтобы можно было передать данные для нажатия
|
||||
|
||||
//init - дает возможность внутри адаптера обращаться к элементам экрана
|
||||
init {
|
||||
itemView.setOnClickListener {//Нажатие на ячейку//itemView - это весь элемент карточки из списка
|
||||
itemTemp?.let { it1 -> listener_zakaz.onClickExceptionOrder(it1) }
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
//Функция bind для заполнения
|
||||
fun bind(item: MonthModel) = with(binding) {//Productitem - перпедаем данные
|
||||
itemTemp = item
|
||||
txtDay.text = item.day
|
||||
txtTitle.text = item.date
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): Holder {
|
||||
val view = LayoutInflater.from(parent.context).inflate(R.layout.rc_item, parent, false)//Создаем(надуваем) list_item
|
||||
return Holder(view, listener_zakaz)//Через Holder возврощаем view
|
||||
}
|
||||
|
||||
override fun onBindViewHolder(holder: Holder, position: Int) {
|
||||
val view = holder.bind(getItem(position))//Заполняем по позиции карточку
|
||||
}
|
||||
|
||||
|
||||
//Comparator - сравнивает старый список и новый и если что-то изменилось, то работает с конкретным изменением списке, а не весь список переписывает
|
||||
class Comparator : DiffUtil.ItemCallback<MonthModel>() {
|
||||
override fun areItemsTheSame(oldItem: MonthModel, newItem: MonthModel): Boolean {//Тут лучше всего сравнивать по id//oldItem - элементы старого списка, newItem - элементы нового списка//Возврощает Boolean, тоесть есть изменения или нет
|
||||
return oldItem.id == newItem.id//Сравниваем полностью весь список новы и старый, по очередно по одной карточке и по элементно, то есть нулевой элемент, первый, второй и т.д.. Но лучше сравнивать по id списки, а не просто весь список, так как это эфективнее, так как id уникальный(oldItem.id == newItem.id)
|
||||
}
|
||||
|
||||
override fun areContentsTheSame(
|
||||
oldItem: MonthModel,
|
||||
newItem: MonthModel
|
||||
): Boolean {//Утут нужно сравнивать весь спсок старых элементов и новых
|
||||
return oldItem == newItem//Сравниваем полностью весь список новы и старый
|
||||
}
|
||||
}
|
||||
|
||||
//Интерфейс нажатия на кнопку удалить товар из корзины
|
||||
interface Listener {
|
||||
fun onClickExceptionOrder(item: MonthModel)
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
package com.example.rehabilitation.dip.Month
|
||||
|
||||
data class MonthModel(
|
||||
val id: String,
|
||||
val day: String,
|
||||
val date: String,
|
||||
val check:String,
|
||||
)
|
||||
|
|
@ -1,109 +0,0 @@
|
|||
package com.example.rehabilitation.fragment.User
|
||||
|
||||
import android.os.Bundle
|
||||
import androidx.fragment.app.Fragment
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import com.example.rehabilitation.Baza.TaskItem
|
||||
import com.example.rehabilitation.Baza.TaskItemAdapter
|
||||
import com.example.rehabilitation.Baza.TaskItemClickListener
|
||||
import com.example.rehabilitation.Baza.TaskViewModel
|
||||
import com.example.rehabilitation.databinding.FragmentSceduleBinding
|
||||
|
||||
|
||||
class SceduleFragment(var taskItem: TaskItem?) : Fragment(), TaskItemClickListener {
|
||||
private lateinit var binding: FragmentSceduleBinding
|
||||
private lateinit var taskViewModel: TaskViewModel
|
||||
|
||||
override fun onCreateView(
|
||||
inflater: LayoutInflater, container: ViewGroup?,
|
||||
savedInstanceState: Bundle?
|
||||
): View? {
|
||||
binding = FragmentSceduleBinding.inflate(layoutInflater, container, false)
|
||||
return binding.root
|
||||
}
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
|
||||
//Закрытие карточки определенного дня
|
||||
binding.btnExitCardSport.setOnClickListener {
|
||||
binding.CLCardSport.visibility = View.GONE
|
||||
binding.CLListSport.visibility = View.VISIBLE
|
||||
binding.txtNameCard.setText("")
|
||||
binding.txtDescCard.setText("")
|
||||
}
|
||||
|
||||
if(taskItem != null){
|
||||
binding.CLCardSport.visibility = View.VISIBLE
|
||||
binding.CLListSport.visibility = View.GONE
|
||||
binding.txtNameCard.text = taskItem!!.name
|
||||
binding.txtDescCard.text = taskItem!!.desc
|
||||
}
|
||||
else{
|
||||
binding.CLCardSport.visibility = View.GONE
|
||||
binding.CLListSport.visibility = View.VISIBLE
|
||||
}
|
||||
|
||||
taskViewModel = ViewModelProvider(requireActivity()).get(TaskViewModel::class.java)
|
||||
binding.btnSave.setOnClickListener {
|
||||
saveAction()
|
||||
}
|
||||
|
||||
setRecycleView()
|
||||
|
||||
}
|
||||
|
||||
private fun setRecycleView() {
|
||||
taskViewModel.taskItems.observe(requireActivity()){
|
||||
binding.todoListRecycleView.apply {
|
||||
layoutManager = LinearLayoutManager(activity?.applicationContext)
|
||||
adapter = TaskItemAdapter(it,this@SceduleFragment)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun saveAction() {
|
||||
val name = binding.edName.text.toString()
|
||||
val desc = binding.edDesc.text.toString()
|
||||
|
||||
if(taskItem == null){
|
||||
val newTask = TaskItem(name,desc,null,null)
|
||||
taskViewModel.addTaskItem(newTask)
|
||||
}
|
||||
else{
|
||||
taskViewModel.updateTaskItem(taskItem!!.id,name,desc,null)
|
||||
}
|
||||
binding.edName.setText("")
|
||||
binding.edDesc.setText("")
|
||||
}
|
||||
|
||||
override fun onResume() {
|
||||
super.onResume()
|
||||
|
||||
}
|
||||
|
||||
override fun onDestroy() {
|
||||
super.onDestroy()
|
||||
|
||||
}
|
||||
|
||||
companion object {
|
||||
fun newInstance() = SceduleFragment(null)
|
||||
}
|
||||
|
||||
override fun editTaskItem(taskitem: TaskItem) {
|
||||
binding.CLCardSport.visibility = View.VISIBLE
|
||||
binding.CLListSport.visibility = View.GONE
|
||||
|
||||
binding.txtNameCard.setText(taskitem.name)
|
||||
binding.txtDescCard.setText(taskitem.desc)
|
||||
}
|
||||
|
||||
override fun completeTaskItem(taskitem: TaskItem) {
|
||||
taskItem?.let { taskViewModel.setCompleted(it) }
|
||||
}
|
||||
}
|
After Width: | Height: | Size: 333 KiB |
After Width: | Height: | Size: 339 KiB |
After Width: | Height: | Size: 382 KiB |
After Width: | Height: | Size: 385 KiB |
After Width: | Height: | Size: 308 KiB |
After Width: | Height: | Size: 334 KiB |
After Width: | Height: | Size: 359 KiB |
After Width: | Height: | Size: 318 KiB |
After Width: | Height: | Size: 365 KiB |
After Width: | Height: | Size: 320 KiB |
After Width: | Height: | Size: 318 KiB |
After Width: | Height: | Size: 301 KiB |
After Width: | Height: | Size: 502 KiB |
After Width: | Height: | Size: 455 KiB |
After Width: | Height: | Size: 426 KiB |
After Width: | Height: | Size: 417 KiB |
After Width: | Height: | Size: 422 KiB |
After Width: | Height: | Size: 324 KiB |
After Width: | Height: | Size: 348 KiB |
After Width: | Height: | Size: 318 KiB |
After Width: | Height: | Size: 344 KiB |
After Width: | Height: | Size: 376 KiB |
After Width: | Height: | Size: 356 KiB |
After Width: | Height: | Size: 293 KiB |
After Width: | Height: | Size: 311 KiB |
After Width: | Height: | Size: 279 KiB |
After Width: | Height: | Size: 316 KiB |
After Width: | Height: | Size: 322 KiB |
After Width: | Height: | Size: 296 KiB |
After Width: | Height: | Size: 297 KiB |
After Width: | Height: | Size: 316 KiB |
After Width: | Height: | Size: 355 KiB |
After Width: | Height: | Size: 278 KiB |
After Width: | Height: | Size: 350 KiB |
After Width: | Height: | Size: 333 KiB |
After Width: | Height: | Size: 365 KiB |
After Width: | Height: | Size: 329 KiB |
After Width: | Height: | Size: 340 KiB |
After Width: | Height: | Size: 315 KiB |
After Width: | Height: | Size: 352 KiB |
After Width: | Height: | Size: 307 KiB |
After Width: | Height: | Size: 543 KiB |
After Width: | Height: | Size: 395 KiB |
After Width: | Height: | Size: 396 KiB |
After Width: | Height: | Size: 361 KiB |
After Width: | Height: | Size: 372 KiB |
After Width: | Height: | Size: 412 KiB |
After Width: | Height: | Size: 310 KiB |
After Width: | Height: | Size: 362 KiB |
After Width: | Height: | Size: 364 KiB |
After Width: | Height: | Size: 246 KiB |
After Width: | Height: | Size: 295 KiB |
After Width: | Height: | Size: 272 KiB |
After Width: | Height: | Size: 235 KiB |
After Width: | Height: | Size: 297 KiB |
After Width: | Height: | Size: 293 KiB |
After Width: | Height: | Size: 386 KiB |