Skip to content

Commit

Permalink
update and bugs fixed🛠 🛠🛠✔
Browse files Browse the repository at this point in the history
  • Loading branch information
subhajit4980 committed Jan 21, 2024
1 parent 53d864b commit 7a0355b
Show file tree
Hide file tree
Showing 48 changed files with 2,431 additions and 1,148 deletions.
2 changes: 1 addition & 1 deletion .idea/compiler.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions .idea/kotlinc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 1 addition & 2 deletions .idea/misc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

50 changes: 25 additions & 25 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ apply plugin: 'kotlin-android'

android {
namespace 'com.example.HealthyMode'
compileSdk 33
compileSdk 34
packagingOptions{
exclude 'AndroidManifest.xml'
exclude 'lib/arm64-v8a/libcardioDecider.so'
Expand Down Expand Up @@ -39,7 +39,7 @@ android {
defaultConfig {
applicationId "com.example.HealthyMode"
minSdk 21
targetSdk 33
targetSdk 34
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
Expand All @@ -53,40 +53,40 @@ android {
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_11
targetCompatibility JavaVersion.VERSION_11
sourceCompatibility JavaVersion.VERSION_17
targetCompatibility JavaVersion.VERSION_17
}
buildFeatures{
viewBinding true
}
kotlinOptions {
jvmTarget = '11'
jvmTarget = '17'
}
kapt {
correctErrorTypes true
}
}
dependencies {
implementation 'androidx.core:core-ktx:1.9.0'
implementation 'androidx.core:core-ktx:1.10.1'
implementation 'androidx.appcompat:appcompat:1.6.1'
implementation 'com.google.android.material:material:1.8.0'
implementation 'com.google.android.material:material:1.9.0'
// implementation 'com.android.support:design:28.0.0'
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'

// firebase
implementation 'com.google.firebase:firebase-auth:21.1.0'
implementation 'com.google.firebase:firebase-database:20.1.0'
implementation 'com.google.firebase:firebase-auth:22.1.1'
implementation 'com.google.firebase:firebase-database:20.2.2'
implementation platform('com.google.firebase:firebase-bom:31.1.1')
implementation 'com.google.firebase:firebase-firestore-ktx:24.4.4'
implementation 'com.google.firebase:firebase-firestore-ktx:24.7.1'
implementation 'com.firebaseui:firebase-ui-firestore:8.0.1'
implementation 'com.google.firebase:firebase-auth-ktx:21.1.0'
implementation 'com.google.firebase:firebase-auth-ktx:22.1.1'
// location
implementation 'com.google.android.gms:play-services-location:21.0.1'

testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.5'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1'
implementation 'com.google.android.material:material:1.8.0'
implementation 'com.google.android.material:material:1.9.0'
// circularprogressbar
implementation 'com.mikhaellopez:circularprogressbar:3.1.0'
// lottie
Expand All @@ -97,33 +97,33 @@ dependencies {
// chart
implementation 'com.github.PhilJay:MPAndroidChart:3.1.0'
// workmanager
implementation "androidx.work:work-runtime-ktx:2.8.0"
implementation "androidx.work:work-runtime-ktx:2.8.1"
// volley library
implementation "com.android.volley:volley:1.2.1"
// coroutines
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.6.4"
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.4"
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.1"
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.1"
// room database
implementation "androidx.room:room-runtime:2.5.0"
kapt "androidx.room:room-compiler:2.5.0"
implementation "androidx.room:room-ktx:2.5.0"
implementation "androidx.room:room-runtime:2.5.2"
kapt "androidx.room:room-compiler:2.5.2"
implementation "androidx.room:room-ktx:2.5.2"
// lifecycle
implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.6.0"
implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.0"
implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.6.1"
implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.1"
// Bottom Navigation bar moves up with keyboard
implementation 'net.yslibrary.keyboardvisibilityevent:keyboardvisibilityevent:2.1.0'
implementation 'androidx.fragment:fragment-ktx:1.5.5'
implementation 'androidx.fragment:fragment-ktx:1.6.1'
// shimmer library
implementation 'io.supercharge:shimmerlayout:2.1.0'
// dagger hilt
implementation "com.google.dagger:hilt-android:2.44"
kapt "com.google.dagger:hilt-compiler:2.44"
implementation "com.google.dagger:hilt-android:2.45"
kapt "com.google.dagger:hilt-compiler:2.45"
// timeline view
implementation 'com.github.po10cio:TimeLineView:1.0.2'
//
implementation 'com.robinhood.spark:spark:1.2.0'
implementation 'com.github.majorkik:SparkLineLayout:1.0.1'

implementation "androidx.paging:paging-runtime-ktx:3.1.1"
implementation "androidx.paging:paging-common-ktx:3.1.1"
implementation "androidx.paging:paging-runtime-ktx:3.2.0"
implementation "androidx.paging:paging-common-ktx:3.2.0"
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.codinginflow.mvvmtodo.ui.tasks
package com.example.HealthyMode.Adapter

import android.graphics.Paint
import android.view.LayoutInflater
Expand Down
85 changes: 59 additions & 26 deletions app/src/main/java/com/example/HealthyMode/Adapter/FoodAdapter.kt
Original file line number Diff line number Diff line change
@@ -1,36 +1,69 @@
package com.example.HealthyMode.Adapter

import android.annotation.SuppressLint
import android.content.Context
import android.os.Build
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.TextView
import android.widget.Toast
import androidx.annotation.RequiresApi
import androidx.recyclerview.widget.ItemTouchHelper
import androidx.recyclerview.widget.RecyclerView
import com.example.HealthyMode.data_Model.Food
import com.example.HealthyMode.R

class FoodAdapter(private val foodd:ArrayList<Food>, private val context: Context):RecyclerView.Adapter<FoodAdapter.MyVIewHolder> (){

inner class MyVIewHolder(itemView: View): RecyclerView.ViewHolder(itemView){
private val date: TextView =itemView.findViewById(R.id.fdate)
private val foods: TextView =itemView.findViewById(R.id.food_item)
@SuppressLint("UseCompatLoadingForDrawables")
fun initialize(item: Food){
date.text=item.date
foods.text=item.foods.toString()
}

}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyVIewHolder {
val itemView=
LayoutInflater.from(parent.context).inflate(R.layout.food_trck,parent,false)
return MyVIewHolder(itemView)
import com.example.HealthyMode.data_Model.Nutrient
import com.example.HealthyMode.databinding.FoodListBinding
import com.firebase.ui.firestore.FirestoreRecyclerAdapter
import com.firebase.ui.firestore.FirestoreRecyclerOptions
import com.google.firebase.auth.FirebaseAuth
import com.google.firebase.firestore.DocumentReference
import com.google.firebase.firestore.ktx.firestore
import com.google.firebase.ktx.Firebase
import java.time.LocalDate
class FoodAdapter(val context:Context,val time:String,options: FirestoreRecyclerOptions<Nutrient>): FirestoreRecyclerAdapter<Nutrient, FoodAdapter.ViewHolder>(options) {
private var userDitails: DocumentReference = Firebase.firestore.collection("user").document(
FirebaseAuth.getInstance().currentUser!!.uid
)
class ViewHolder(val binding: FoodListBinding):RecyclerView.ViewHolder(binding.root)
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
val binding= FoodListBinding.inflate(LayoutInflater.from(parent.context),parent,false)
return ViewHolder(binding)
}
@RequiresApi(Build.VERSION_CODES.O)
override fun onBindViewHolder(holder: ViewHolder, position: Int, model: Nutrient) {
holder.binding.itemName.text=model.foodName
holder.binding.amount.text=model.quantity
holder.binding.unit.text=model.unit
holder.binding.calo.text=model.calories
}
private val touchHelper=object :ItemTouchHelper.SimpleCallback(
0,ItemTouchHelper.RIGHT or ItemTouchHelper.LEFT
){
override fun onMove(
recyclerView: RecyclerView,
viewHolder: RecyclerView.ViewHolder,
target: RecyclerView.ViewHolder
): Boolean {
return false
}
override fun getItemCount(): Int {
return foodd.size

@RequiresApi(Build.VERSION_CODES.O)
override fun onSwiped(viewHolder: RecyclerView.ViewHolder, direction: Int) {
val position = viewHolder.adapterPosition
val item = getItem(position)
// Delete item from Firestore
userDitails.collection("Meals").document(LocalDate.now().toString()).collection(time)
.document(item.foodName!!)
.delete()
.addOnSuccessListener {
Toast.makeText(context, "$time ${item.foodName} deleted successfully", Toast.LENGTH_SHORT).show()
}
.addOnFailureListener {
// Show error message here
}
}
override fun onBindViewHolder(holder: MyVIewHolder, position: Int) {
holder.initialize(foodd[position])
}
fun attachswipetoDelete(rec_v:RecyclerView)
{
val itemtouchHelper=ItemTouchHelper(touchHelper)
itemtouchHelper.attachToRecyclerView(rec_v)
}

}
Original file line number Diff line number Diff line change
@@ -1,13 +1,19 @@
package com.example.HealthyMode.Adapter

import android.content.Context
import android.os.Build
import android.view.LayoutInflater
import android.view.ViewGroup
import android.widget.Toast
import androidx.annotation.RequiresApi
import androidx.recyclerview.widget.ItemTouchHelper
import androidx.recyclerview.widget.RecyclerView
import com.example.HealthyMode.FireStore.di.FirebaseModule.userDitails
import com.example.HealthyMode.data_Model.Nutrient
import com.example.HealthyMode.databinding.FoodListBinding
import java.time.LocalDate

class FoodNameAdapter(val foodlist:ArrayList<Nutrient>):
class FoodNameAdapter(val foodlist:ArrayList<Nutrient>,val context:Context):
RecyclerView.Adapter<FoodNameAdapter.MyViewHolder>() {
inner class MyViewHolder(val binding: FoodListBinding) : RecyclerView.ViewHolder(binding.root)
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyViewHolder {
Expand Down Expand Up @@ -39,9 +45,22 @@ class FoodNameAdapter(val foodlist:ArrayList<Nutrient>):
return false
}

@RequiresApi(Build.VERSION_CODES.O)
override fun onSwiped(viewHolder: RecyclerView.ViewHolder, direction: Int) {
try {
val position=viewHolder.adapterPosition
val item=foodlist[position]
// Delete item from Firestore
userDitails.collection("Meals").document(LocalDate.now().toString()).collection("time")
.document(item.foodName!!)
.delete()
.addOnSuccessListener {
// Show snackbar or toast message here to notify user
Toast.makeText(context, "${item.foodName}deleted successfully", Toast.LENGTH_SHORT).show()
}
.addOnFailureListener {
// Show error message here
}
foodlist.removeAt(position)
notifyItemRemoved(position)
}catch(_:IndexOutOfBoundsException){}
Expand Down
8 changes: 6 additions & 2 deletions app/src/main/java/com/example/HealthyMode/Adapter/Weight.kt
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package com.example.HealthyMode.Adapter

import android.annotation.SuppressLint
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.recyclerview.widget.RecyclerView
import com.example.HealthyMode.data_Model.weight
Expand All @@ -15,10 +16,13 @@ class Weight(options: FirestoreRecyclerOptions<weight>): FirestoreRecyclerAdapte
val binding= WeightListBinding.inflate(LayoutInflater.from(parent.context),parent,false)
return ViewHolder(binding)
}


@SuppressLint("SetTextI18n")
override fun onBindViewHolder(holder: ViewHolder, position: Int, model: weight) {
val c=itemCount-1
if(position==c) {
holder.binding.view.visibility = View.GONE
// holder.binding.
}
holder.binding.date.text=model.date
holder.binding.weight.text= "${model.weight} Kg"
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package com.example.HealthyMode.ChartRender

import android.annotation.SuppressLint
import android.content.Context
import android.widget.TextView
import android.widget.Toast
import com.example.HealthyMode.R
import com.example.HealthyMode.Utils.Constant.convertMillisecondsToDate
import com.github.mikephil.charting.components.MarkerView
import com.github.mikephil.charting.data.Entry
import com.github.mikephil.charting.highlight.Highlight
import com.github.mikephil.charting.utils.MPPointF

class CustomMarkerView(context: Context, layoutResource: Int, private val check:Long) : MarkerView(context, layoutResource) {
private val tvContent: TextView = findViewById(R.id.chartContent)
private val date: TextView = findViewById(R.id.date)

@SuppressLint("SetTextI18n")
override fun refreshContent(e: Entry?, highlight: Highlight?) {
if (e == null) {
Toast.makeText(context, " null value", Toast.LENGTH_SHORT).show()
return
}
tvContent.text = "${e.y}"
if(check==0L)
date.text=convertMillisecondsToDate(e.x.toLong() ,"dd-MM-yyyy")
super.refreshContent(e, highlight)
}
override fun getOffset(): MPPointF {
return MPPointF((-(width / 2)).toFloat(), (-height).toFloat())
}
}
Original file line number Diff line number Diff line change
@@ -1,11 +1,19 @@
package com.example.HealthyMode.FireStore.Repository

import android.content.Context
import androidx.lifecycle.LiveData
import com.example.HealthyMode.Utils.UIstate
import com.example.HealthyMode.data_Model.Nutrient
import com.example.HealthyMode.data_Model.weight
import com.github.mikephil.charting.data.Entry

interface Repository {
fun getWeight(result: (UIstate<ArrayList<Entry>>) -> Unit)
fun changedWeight(weight: weight, result: (UIstate<String>) -> Unit)
fun addFood(nutrient: Nutrient, result: (UIstate<Nutrient>) -> Unit)
fun getNutrients(mealTimes: List<String>): LiveData<ArrayList<Float>>
fun getcalories(mealTimes: List<String>): LiveData<ArrayList<Float>>
fun changeHeight(height: String,context:Context)
fun getheight(result: (UIstate<String>) -> Unit)

}
Loading

0 comments on commit 7a0355b

Please sign in to comment.