patient
Clogon 2023-07-14 15:32:30 +03:00
parent 6b493a4ebb
commit 2293d1f5cf
140 changed files with 2802 additions and 414 deletions

View File

@ -0,0 +1,123 @@
<component name="ProjectCodeStyleConfiguration">
<code_scheme name="Project" version="173">
<JetCodeStyleSettings>
<option name="CODE_STYLE_DEFAULTS" value="KOTLIN_OFFICIAL" />
</JetCodeStyleSettings>
<codeStyleSettings language="XML">
<option name="FORCE_REARRANGE_MODE" value="1" />
<indentOptions>
<option name="CONTINUATION_INDENT_SIZE" value="4" />
</indentOptions>
<arrangement>
<rules>
<section>
<rule>
<match>
<AND>
<NAME>xmlns:android</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>^$</XML_NAMESPACE>
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>xmlns:.*</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>^$</XML_NAMESPACE>
</AND>
</match>
<order>BY_NAME</order>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*:id</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*:name</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>name</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>^$</XML_NAMESPACE>
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>style</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>^$</XML_NAMESPACE>
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>^$</XML_NAMESPACE>
</AND>
</match>
<order>BY_NAME</order>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
</AND>
</match>
<order>ANDROID_ATTRIBUTE_ORDER</order>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>.*</XML_NAMESPACE>
</AND>
</match>
<order>BY_NAME</order>
</rule>
</section>
</rules>
</arrangement>
</codeStyleSettings>
<codeStyleSettings language="kotlin">
<option name="CODE_STYLE_DEFAULTS" value="KOTLIN_OFFICIAL" />
</codeStyleSettings>
</code_scheme>
</component>

View File

@ -0,0 +1,5 @@
<component name="ProjectCodeStyleConfiguration">
<state>
<option name="USE_PER_PROJECT_SETTINGS" value="true" />
</state>
</component>

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<project version="4"> <project version="4">
<component name="CompilerConfiguration"> <component name="CompilerConfiguration">
<bytecodeTargetLevel target="11" /> <bytecodeTargetLevel target="17" />
</component> </component>
</project> </project>

View File

@ -17,5 +17,6 @@
</option> </option>
</GradleProjectSettings> </GradleProjectSettings>
</option> </option>
<option name="offlineMode" value="true" />
</component> </component>
</project> </project>

View File

@ -1,7 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4"> <project version="4">
<component name="ExternalStorageConfigurationManager" enabled="true" /> <component name="ExternalStorageConfigurationManager" enabled="true" />
<component name="ProjectRootManager" version="2" languageLevel="JDK_11" default="true" project-jdk-name="11" project-jdk-type="JavaSDK"> <component name="ProjectRootManager" version="2" languageLevel="JDK_17" project-jdk-name="jbr-17" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/build/classes" /> <output url="file://$PROJECT_DIR$/build/classes" />
</component> </component>
<component name="ProjectType"> <component name="ProjectType">

View File

@ -40,7 +40,12 @@ android {
dependencies { dependencies {
implementation 'androidx.room:room-ktx:2.5.2' implementation 'androidx.room:room-ktx:2.5.2'
implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.6.1' implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.6.1'
implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.1'
kapt 'androidx.room:room-compiler:2.5.2' kapt 'androidx.room:room-compiler:2.5.2'
implementation 'androidx.fragment:fragment-ktx:1.5.5'
implementation 'androidx.core:core-ktx:1.7.0' implementation 'androidx.core:core-ktx:1.7.0'
implementation 'androidx.appcompat:appcompat:1.6.1' implementation 'androidx.appcompat:appcompat:1.6.1'
implementation 'com.google.android.material:material:1.9.0' implementation 'com.google.android.material:material:1.9.0'

View File

@ -8,16 +8,27 @@
android:fullBackupContent="@xml/backup_rules" android:fullBackupContent="@xml/backup_rules"
android:icon="@mipmap/ic_launcher" android:icon="@mipmap/ic_launcher"
android:label="@string/app_name" android:label="@string/app_name"
android:requestLegacyExternalStorage="true"
android:roundIcon="@mipmap/ic_launcher_logo_rehabilitation" android:roundIcon="@mipmap/ic_launcher_logo_rehabilitation"
android:supportsRtl="true" android:supportsRtl="true"
android:theme="@style/Theme.Rehabilitation" android:theme="@style/Theme.Rehabilitation"
tools:targetApi="31"> tools:targetApi="31">
<activity
android:name=".Admin.activityAdmin.FeedbackActivity"
android:exported="false" />
<activity
android:name=".Admin.activityAdmin.StatisticsActivity"
android:exported="false" />
<activity
android:name=".Admin.activityAdmin.UserSettingActivity"
android:exported="false" />
<activity <activity
android:name=".SettingActivity" android:name=".SettingActivity"
android:exported="false" /> android:exported="false" />
<activity <activity
android:name=".MainActivity" android:name=".MainActivity"
android:exported="true"> android:exported="true"
android:windowSoftInputMode="adjustPan|stateAlwaysHidden">
<intent-filter> <intent-filter>
<action android:name="android.intent.action.MAIN" /> <action android:name="android.intent.action.MAIN" />

View File

@ -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()
}
}
}

View File

@ -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()
}
}
}

View File

@ -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" +
"Со временем все упражнения можно выполнять с утяжелителем."
}

View File

@ -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()
}
}

View File

@ -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()
}
}

View File

@ -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()
}
}

View File

@ -1,4 +1,4 @@
package com.example.rehabilitation.fragment.User package com.example.rehabilitation.Admin.fragmrntAdmin
import android.os.Bundle import android.os.Bundle
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
@ -6,22 +6,21 @@ import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import com.example.rehabilitation.R import com.example.rehabilitation.R
import com.example.rehabilitation.databinding.FragmentCalendarBinding import com.example.rehabilitation.databinding.FragmentUserSettingBinding
class UserSettingFragment : Fragment() {
class CalendarFragment : Fragment() { private lateinit var binding: FragmentUserSettingBinding
private lateinit var binding: FragmentCalendarBinding
override fun onCreateView( override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?, inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle? savedInstanceState: Bundle?
): View? { ): View? {
binding = FragmentCalendarBinding.inflate(layoutInflater,container,false) binding = FragmentUserSettingBinding.inflate(layoutInflater,container,false)
return binding.root return binding.root
} }
companion object { companion object {
fun newInstance() = CalendarFragment() fun newInstance() = UserSettingFragment()
} }
} }

View File

@ -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)
}

View File

@ -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])
}
}

View File

@ -1,7 +0,0 @@
package com.example.rehabilitation.Baza
interface TaskItemClickListener {
fun editTaskItem(taskitem:TaskItem)
fun completeTaskItem(taskitem:TaskItem)
}

View File

@ -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 = ""
}
}
}

View File

@ -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!!)
}
}

View File

@ -1,15 +1,21 @@
package com.example.rehabilitation package com.example.rehabilitation
import android.annotation.SuppressLint
import android.content.Intent import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import com.example.rehabilitation.User.fragmentUser.CalendarFragment
import com.example.rehabilitation.User.fragmentUser.HomeFragment
import com.example.rehabilitation.User.fragmentUser.InformationFragment
import com.example.rehabilitation.User.fragmentUser.ProgresFragment
import com.example.rehabilitation.User.fragmentUser.SceduleFragment
import com.example.rehabilitation.databinding.ActivityMainBinding import com.example.rehabilitation.databinding.ActivityMainBinding
import com.example.rehabilitation.fragment.User.*
class MainActivity : AppCompatActivity() { class MainActivity : AppCompatActivity() {
private lateinit var binding: ActivityMainBinding private lateinit var binding: ActivityMainBinding
@SuppressLint("DiscouragedApi")
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater) binding = ActivityMainBinding.inflate(layoutInflater)
@ -27,6 +33,11 @@ class MainActivity : AppCompatActivity() {
val intent = Intent(this, SettingActivity::class.java) val intent = Intent(this, SettingActivity::class.java)
startActivity(intent) startActivity(intent)
} }
//binding.imageView3.resources.getIdentifier("b3_1","drawable",this.packageName);
} }

View File

@ -3,7 +3,14 @@ package com.example.rehabilitation
import android.content.Intent import android.content.Intent
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle import android.os.Bundle
import com.example.rehabilitation.Admin.activityAdmin.FeedbackActivity
import com.example.rehabilitation.Admin.activityAdmin.StatisticsActivity
import com.example.rehabilitation.Admin.activityAdmin.UserSettingActivity
import com.example.rehabilitation.databinding.ActivitySettingBinding import com.example.rehabilitation.databinding.ActivitySettingBinding
import com.example.rehabilitation.Admin.fragmrntAdmin.FeedbackFragment
import com.example.rehabilitation.Admin.fragmrntAdmin.MainSettingFragment
import com.example.rehabilitation.Admin.fragmrntAdmin.StatisticsFragment
import com.example.rehabilitation.Admin.fragmrntAdmin.UserSettingFragment
class SettingActivity : AppCompatActivity() { class SettingActivity : AppCompatActivity() {
private lateinit var binding: ActivitySettingBinding private lateinit var binding: ActivitySettingBinding
@ -12,9 +19,33 @@ class SettingActivity : AppCompatActivity() {
binding = ActivitySettingBinding.inflate(layoutInflater) binding = ActivitySettingBinding.inflate(layoutInflater)
setContentView(binding.root) setContentView(binding.root)
// //Выводим фрагмент как экран
// supportFragmentManager.beginTransaction()
// .replace(R.id.CLMainSetting, MainSettingFragment.newInstance())
// .commit()//Заменяем наш экран на фрагмент (используем наш экран как основу)//R.id.placeHolder - куда всталяем //MainFragment.newInstance() - это то что мы вставляем
binding.btnExitSetting.setOnClickListener { binding.btnExitSetting.setOnClickListener {
finish() finish()
} }
binding.cvSettingUser.setOnClickListener{
val intent = Intent(this, UserSettingActivity::class.java)
startActivity(intent)
} }
binding.cvFeedback.setOnClickListener{
val intent = Intent(this, FeedbackActivity::class.java)
startActivity(intent)
}
binding.cvStatistics.setOnClickListener{
val intent = Intent(this, StatisticsActivity::class.java)
startActivity(intent)
}
}
} }

View File

@ -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) {
}
}

View File

@ -1,11 +1,10 @@
package com.example.rehabilitation.fragment.User package com.example.rehabilitation.User.fragmentUser
import android.os.Bundle import android.os.Bundle
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import com.example.rehabilitation.R
import com.example.rehabilitation.databinding.FragmentHomeBinding import com.example.rehabilitation.databinding.FragmentHomeBinding
class HomeFragment : Fragment() { class HomeFragment : Fragment() {

View File

@ -1,11 +1,10 @@
package com.example.rehabilitation.fragment.User package com.example.rehabilitation.User.fragmentUser
import android.os.Bundle import android.os.Bundle
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import com.example.rehabilitation.R
import com.example.rehabilitation.databinding.FragmentInformationBinding import com.example.rehabilitation.databinding.FragmentInformationBinding

View File

@ -1,11 +1,10 @@
package com.example.rehabilitation.fragment.User package com.example.rehabilitation.User.fragmentUser
import android.os.Bundle import android.os.Bundle
import androidx.fragment.app.Fragment import androidx.fragment.app.Fragment
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import com.example.rehabilitation.R
import com.example.rehabilitation.databinding.FragmentProgresBinding import com.example.rehabilitation.databinding.FragmentProgresBinding

View File

@ -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
}
}

View File

@ -1,14 +1,34 @@
package com.example.rehabilitation.db package com.example.rehabilitation.db
import androidx.room.Dao import androidx.room.Dao
import androidx.room.Delete
import androidx.room.Insert import androidx.room.Insert
import androidx.room.OnConflictStrategy
import androidx.room.Query import androidx.room.Query
import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.Flow
@Dao @Dao
interface Dao { interface Dao {
//Таблица по по дням
@Insert @Insert
fun insertItem(item:Item) fun insertItem(item:Item)
@Query("SELECT * FROM items") //Таблица определенного дня
//Список по дням
@Query("SELECT * FROM items ORDER BY day ASC")
fun getAllItems(): Flow<List<Item>> fun getAllItems(): Flow<List<Item>>
//Список определенного дня
// @Query("SELECT * FROM itemDay")
// fun getAllItemDay(): Flow<List<ItemDay>>
//Обновление по переднному параметру
@Query("UPDATE items SET `check` = 1 WHERE id = :id")
fun updateItems(id : String)
//Очистка таблицы
@Query("DELETE FROM items")
fun deleteItem()
} }

View File

@ -0,0 +1,26 @@
package com.example.rehabilitation.db
import androidx.room.Dao
import androidx.room.Insert
import androidx.room.Query
import kotlinx.coroutines.flow.Flow
@Dao
interface 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()
}

View File

@ -0,0 +1,26 @@
package com.example.rehabilitation.db
import androidx.room.Dao
import androidx.room.Insert
import androidx.room.Query
import kotlinx.coroutines.flow.Flow
@Dao
interface DaoImage {
//Таблица определенного дня
@Insert
fun insertItemImage(itemImage:ItemImage)
//Список определенного дня
@Query("SELECT * FROM itemImage ")
fun getAllItemImage(): Flow<List<ItemImage>>
//Список определенного дня
@Query("SELECT * FROM itemImage WHERE article = :article ORDER BY id ASC")
fun getAllItemImage(article:String): Flow<List<ItemImage>>
//Очистка таблицы
@Query("DELETE FROM itemImage")
fun deleteItemImage()
}

View File

@ -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()
}

View File

@ -3,14 +3,17 @@ package com.example.rehabilitation.db
import androidx.room.ColumnInfo import androidx.room.ColumnInfo
import androidx.room.Entity import androidx.room.Entity
import androidx.room.PrimaryKey import androidx.room.PrimaryKey
import java.util.Date
@Entity(tableName = "items") @Entity(tableName = "items")
data class Item( data class Item(
@PrimaryKey(autoGenerate = true) @PrimaryKey(autoGenerate = true)
var id:Int? = null, var id:Int? = null,
@ColumnInfo(name = "name") @ColumnInfo(name = "day")
var name:String, var day: String,
@ColumnInfo(name = "price") @ColumnInfo(name = "date")
var price:String, var date: String,
@ColumnInfo(name = "check")
var check:Int
) )

View File

@ -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,
)

View File

@ -0,0 +1,17 @@
package com.example.rehabilitation.db
import androidx.room.ColumnInfo
import androidx.room.Entity
import androidx.room.PrimaryKey
@Entity(tableName = "itemImage")
data class ItemImage(
@PrimaryKey(autoGenerate = true)
var id:Int? = null,
@ColumnInfo(name = "nameImage")
var image:String,
@ColumnInfo(name = "article")
var name:String,
@ColumnInfo(name = "category")
var category:String,
)

View File

@ -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
)

View File

@ -5,15 +5,18 @@ import androidx.room.RoomDatabase
import android.content.Context import android.content.Context
import androidx.room.Database import androidx.room.Database
@Database(entities = [Item::class], version = 1) @Database(entities = [Item::class, ItemDaySport::class, ItemImage::class, ItemSportCategory::class], version = 1)
abstract class MainDB: RoomDatabase() { abstract class MainDB: RoomDatabase() {
abstract fun getDao(): Dao abstract fun getDao(): Dao
abstract fun getDaoDaySport(): DaoDaySport
abstract fun getDaoImage(): DaoImage
abstract fun getDaoSportCategory(): DaoSportCategory
companion object{ companion object{
fun getDB(context: Context):MainDB{ fun getDB(context: Context):MainDB{
return Room.databaseBuilder( return Room.databaseBuilder(
context.applicationContext, context.applicationContext,
MainDB::class.java, MainDB::class.java,
"tests.db" "tttttttttttttt1.db"
).build() ).build()
} }
} }

View File

@ -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)
}
}

View File

@ -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,
)

View File

@ -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//Сравниваем полностью весь список новы и старый
}
}
}

View File

@ -0,0 +1,8 @@
package com.example.rehabilitation.dip.Image
data class ImageSportModel(
val id: String,
val imageName: String,
val article: String,
)

View File

@ -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>>()//Сюда передается новая информация на один день(для все продукции - всего списка)
}

View File

@ -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)
}
}

View File

@ -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,
)

View File

@ -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) }
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 333 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 339 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 382 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 385 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 308 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 334 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 359 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 318 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 365 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 320 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 318 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 301 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 502 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 455 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 426 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 417 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 422 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 324 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 348 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 318 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 344 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 376 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 356 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 293 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 311 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 279 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 316 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 322 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 296 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 297 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 316 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 355 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 278 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 350 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 333 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 365 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 329 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 340 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 315 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 352 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 307 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 543 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 395 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 396 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 361 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 372 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 412 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 310 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 362 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 364 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 246 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 295 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 272 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 235 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 297 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 293 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 386 KiB

Some files were not shown because too many files have changed in this diff Show More