diff --git a/app/src/main/java/com/dzeio/openhealth/MainActivity.kt b/app/src/main/java/com/dzeio/openhealth/MainActivity.kt index 760a4c2..e65f806 100644 --- a/app/src/main/java/com/dzeio/openhealth/MainActivity.kt +++ b/app/src/main/java/com/dzeio/openhealth/MainActivity.kt @@ -12,13 +12,16 @@ import android.view.Menu import android.view.MenuItem import androidx.navigation.NavController import androidx.navigation.fragment.NavHostFragment -import androidx.navigation.ui.* +import androidx.navigation.ui.AppBarConfiguration +import androidx.navigation.ui.NavigationUI +import androidx.navigation.ui.navigateUp +import androidx.navigation.ui.setupActionBarWithNavController +import androidx.navigation.ui.setupWithNavController import androidx.work.WorkManager import com.dzeio.openhealth.core.BaseActivity import com.dzeio.openhealth.databinding.ActivityMainBinding import com.dzeio.openhealth.interfaces.NotificationChannels import com.dzeio.openhealth.services.WaterReminderService -import com.dzeio.openhealth.ui.home.HomeFragmentDirections import dagger.hilt.android.AndroidEntryPoint @AndroidEntryPoint @@ -81,7 +84,8 @@ class MainActivity : BaseActivity() { navController.navigateUp(appBarConfiguration) || super.onSupportNavigateUp() override fun onOptionsItemSelected(item: MenuItem): Boolean = - NavigationUI.onNavDestinationSelected(item, navController) || super.onOptionsItemSelected(item) + NavigationUI.onNavDestinationSelected(item, navController) || + super.onOptionsItemSelected(item) override fun onRequestPermissionsResult( requestCode: Int, @@ -125,5 +129,4 @@ class MainActivity : BaseActivity() { } } } - } diff --git a/app/src/main/java/com/dzeio/openhealth/data/AppDatabase.kt b/app/src/main/java/com/dzeio/openhealth/data/AppDatabase.kt index c01ca8b..638981b 100644 --- a/app/src/main/java/com/dzeio/openhealth/data/AppDatabase.kt +++ b/app/src/main/java/com/dzeio/openhealth/data/AppDatabase.kt @@ -6,14 +6,16 @@ import androidx.room.Room import androidx.room.RoomDatabase import com.dzeio.openhealth.data.water.Water import com.dzeio.openhealth.data.water.WaterDao -import com.dzeio.openhealth.data.weight.WeightDao import com.dzeio.openhealth.data.weight.Weight +import com.dzeio.openhealth.data.weight.WeightDao @Database( entities = [ Weight::class, Water::class - ], version = 1, exportSchema = false + ], + version = 1, + exportSchema = false ) abstract class AppDatabase : RoomDatabase() { abstract fun weightDao(): WeightDao @@ -50,4 +52,4 @@ abstract class AppDatabase : RoomDatabase() { .build() } } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/dzeio/openhealth/data/water/Water.kt b/app/src/main/java/com/dzeio/openhealth/data/water/Water.kt index db71538..2cbf4ae 100644 --- a/app/src/main/java/com/dzeio/openhealth/data/water/Water.kt +++ b/app/src/main/java/com/dzeio/openhealth/data/water/Water.kt @@ -5,7 +5,8 @@ import androidx.room.Entity import androidx.room.PrimaryKey import java.sql.Date import java.text.DateFormat.getDateInstance -import java.util.* +import java.util.Calendar +import java.util.TimeZone @Entity() data class Water( @@ -16,7 +17,7 @@ data class Water( var source: String = "OpenHealth" ) { init { - if (timestamp == (0).toLong()) { + if (timestamp == 0L) { val cal = Calendar.getInstance(TimeZone.getTimeZone("UTC")) cal.set(Calendar.HOUR_OF_DAY, 0) cal.set(Calendar.MINUTE, 0) @@ -37,4 +38,4 @@ data class Water( cal.set(Calendar.MILLISECOND, 0) return timestamp == cal.timeInMillis } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/dzeio/openhealth/data/water/WaterDao.kt b/app/src/main/java/com/dzeio/openhealth/data/water/WaterDao.kt index 87995a9..2f97568 100644 --- a/app/src/main/java/com/dzeio/openhealth/data/water/WaterDao.kt +++ b/app/src/main/java/com/dzeio/openhealth/data/water/WaterDao.kt @@ -14,7 +14,6 @@ interface WaterDao : BaseDao { @Query("SELECT * FROM Water where id = :weightId") fun getOne(weightId: Long): Flow - @Query("Select count(*) from Water") fun getCount(): Flow @@ -23,4 +22,4 @@ interface WaterDao : BaseDao { @Query("DELETE FROM Water where source = :source") suspend fun deleteFromSource(source: String) -} \ No newline at end of file +} diff --git a/app/src/main/java/com/dzeio/openhealth/ui/browse/BrowseFragment.kt b/app/src/main/java/com/dzeio/openhealth/ui/browse/BrowseFragment.kt index d9d9e82..e1e29d9 100644 --- a/app/src/main/java/com/dzeio/openhealth/ui/browse/BrowseFragment.kt +++ b/app/src/main/java/com/dzeio/openhealth/ui/browse/BrowseFragment.kt @@ -5,6 +5,7 @@ import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import androidx.navigation.fragment.findNavController import androidx.preference.PreferenceManager import com.dzeio.openhealth.core.BaseFragment import com.dzeio.openhealth.databinding.FragmentBrowseBinding @@ -23,5 +24,13 @@ class BrowseFragment : override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) + + binding.weight.setOnClickListener { + findNavController().navigate(BrowseFragmentDirections.actionNavBrowseToNavListWeight()) + } + + binding.waterIntake.setOnClickListener { + findNavController().navigate(BrowseFragmentDirections.actionNavBrowseToNavWaterHome()) + } } } diff --git a/app/src/main/java/com/dzeio/openhealth/ui/weight/ListWeightFragment.kt b/app/src/main/java/com/dzeio/openhealth/ui/weight/ListWeightFragment.kt index 2f63f07..fd4b5c0 100644 --- a/app/src/main/java/com/dzeio/openhealth/ui/weight/ListWeightFragment.kt +++ b/app/src/main/java/com/dzeio/openhealth/ui/weight/ListWeightFragment.kt @@ -17,7 +17,6 @@ import com.dzeio.openhealth.core.BaseFragment import com.dzeio.openhealth.data.weight.Weight import com.dzeio.openhealth.databinding.FragmentListWeightBinding import com.dzeio.openhealth.graphs.WeightChart -import com.dzeio.openhealth.ui.home.HomeViewModel import com.dzeio.openhealth.units.WeightUnit import com.dzeio.openhealth.utils.GraphUtils import com.google.android.material.color.MaterialColors @@ -26,10 +25,10 @@ import kotlinx.coroutines.flow.collectLatest @AndroidEntryPoint class ListWeightFragment : - BaseFragment(HomeViewModel::class.java) { + BaseFragment(ListWeightViewModel::class.java) { - override val bindingInflater: (LayoutInflater, ViewGroup?, Boolean) -> FragmentListWeightBinding = - FragmentListWeightBinding::inflate + override val bindingInflater: (LayoutInflater, ViewGroup?, Boolean) -> + FragmentListWeightBinding = FragmentListWeightBinding::inflate val settings: SharedPreferences by lazy { PreferenceManager.getDefaultSharedPreferences(requireContext()) @@ -40,6 +39,10 @@ class ListWeightFragment : setHasOptionsMenu(true) + if (viewModel.goalWeight != null) { + binding.goalButton.setText(R.string.edit_goal) + } + val recycler = binding.list val manager = LinearLayoutManager(requireContext()) @@ -103,7 +106,9 @@ class ListWeightFragment : override fun onOptionsItemSelected(item: MenuItem): Boolean { return when (item.itemId) { R.id.action_add -> { - findNavController().navigate(ListWeightFragmentDirections.actionNavListWeightToNavAddWeightDialog()) + findNavController().navigate( + ListWeightFragmentDirections.actionNavListWeightToNavAddWeightDialog() + ) true } else -> super.onOptionsItemSelected(item) diff --git a/app/src/main/java/com/dzeio/openhealth/ui/weight/ListWeightViewModel.kt b/app/src/main/java/com/dzeio/openhealth/ui/weight/ListWeightViewModel.kt new file mode 100644 index 0000000..ceed1ed --- /dev/null +++ b/app/src/main/java/com/dzeio/openhealth/ui/weight/ListWeightViewModel.kt @@ -0,0 +1,23 @@ +package com.dzeio.openhealth.ui.weight + +import android.content.SharedPreferences +import com.dzeio.openhealth.core.BaseViewModel +import com.dzeio.openhealth.data.weight.WeightRepository +import com.dzeio.openhealth.units.UnitFactory +import dagger.hilt.android.lifecycle.HiltViewModel +import javax.inject.Inject + +@HiltViewModel +class ListWeightViewModel @Inject internal constructor( + private val weightRepository: WeightRepository, + settings: SharedPreferences +) : BaseViewModel() { + + var weightUnit = + UnitFactory.mass(settings.getString("weight_unit", "kilogram") ?: "kilogram") + + val goalWeight: Float? = + (settings.getString("weight_goal", null)?.toFloatOrNull()) + + fun fetchWeights() = weightRepository.getWeights() +} diff --git a/app/src/main/res/drawable/ic_outline_monitor_weight_24.xml b/app/src/main/res/drawable/ic_outline_monitor_weight_24.xml new file mode 100644 index 0000000..3d215d6 --- /dev/null +++ b/app/src/main/res/drawable/ic_outline_monitor_weight_24.xml @@ -0,0 +1,6 @@ + + + diff --git a/app/src/main/res/layout/fragment_browse.xml b/app/src/main/res/layout/fragment_browse.xml index 4e81a1b..0610bf2 100644 --- a/app/src/main/res/layout/fragment_browse.xml +++ b/app/src/main/res/layout/fragment_browse.xml @@ -34,6 +34,7 @@ + android:text="xxxx of xxxx steps" /> @@ -98,11 +99,12 @@ @@ -203,6 +206,7 @@ - + android:layout_height="wrap_content" + android:orientation="vertical" + > + + + + + + + + + + + + + + + +