diff --git a/.idea/misc.xml b/.idea/misc.xml
index e25e9e6..5014ce6 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -22,16 +22,20 @@
+
+
+
+
diff --git a/app/build.gradle b/app/build.gradle
index 8ef0b93..45554c7 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -50,6 +50,9 @@ dependencies {
implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.4.0'
implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.4.0'
+ // Settings
+ implementation "androidx.preference:preference-ktx:1.1.1"
+
// DataStore
implementation "androidx.datastore:datastore:1.0.0"
diff --git a/app/src/main/java/com/dzeio/openhealth/MainActivity.kt b/app/src/main/java/com/dzeio/openhealth/MainActivity.kt
index 053ec3a..977af20 100644
--- a/app/src/main/java/com/dzeio/openhealth/MainActivity.kt
+++ b/app/src/main/java/com/dzeio/openhealth/MainActivity.kt
@@ -9,8 +9,12 @@ import android.os.Bundle
import android.util.Log
import android.view.LayoutInflater
import android.view.Menu
+import android.view.MenuItem
+import androidx.core.content.ContextCompat
+import androidx.lifecycle.lifecycleScope
import androidx.navigation.NavController
import androidx.navigation.fragment.NavHostFragment
+import androidx.navigation.fragment.findNavController
import androidx.navigation.ui.AppBarConfiguration
import androidx.navigation.ui.navigateUp
import androidx.navigation.ui.setupActionBarWithNavController
@@ -20,6 +24,8 @@ 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 com.google.android.material.dialog.MaterialAlertDialogBuilder
import dagger.hilt.android.AndroidEntryPoint
@AndroidEntryPoint
@@ -40,12 +46,11 @@ class MainActivity : BaseActivity() {
val navHostFragment =
supportFragmentManager.findFragmentById(R.id.nav_host_fragment) as NavHostFragment
navController = navHostFragment.navController
- binding.navView.setupWithNavController(navController)
appBarConfiguration = AppBarConfiguration(
setOf(
R.id.nav_home
- ), binding.drawerLayout
+ )
)
setupActionBarWithNavController(navController, appBarConfiguration)
@@ -109,4 +114,23 @@ class MainActivity : BaseActivity() {
}
}
+ override fun onOptionsItemSelected(item: MenuItem): Boolean {
+ return when (item.itemId) {
+ R.id.action_settings -> {
+ navController.navigate(
+ HomeFragmentDirections.actionNavHomeToNavSettings()
+ )
+ true
+ }
+ R.id.action_extensions -> {
+ navController.navigate(
+ HomeFragmentDirections.actionNavHomeToNavExtensions()
+ )
+ true
+ }
+ else -> super.onOptionsItemSelected(item)
+ }
+
+ }
+
}
\ No newline at end of file
diff --git a/app/src/main/java/com/dzeio/openhealth/ui/imports/ImportFragment.kt b/app/src/main/java/com/dzeio/openhealth/ui/extensions/ExtensionsFragment.kt
similarity index 92%
rename from app/src/main/java/com/dzeio/openhealth/ui/imports/ImportFragment.kt
rename to app/src/main/java/com/dzeio/openhealth/ui/extensions/ExtensionsFragment.kt
index 7b4c8bd..9cdd70b 100644
--- a/app/src/main/java/com/dzeio/openhealth/ui/imports/ImportFragment.kt
+++ b/app/src/main/java/com/dzeio/openhealth/ui/extensions/ExtensionsFragment.kt
@@ -1,4 +1,4 @@
-package com.dzeio.openhealth.ui.imports
+package com.dzeio.openhealth.ui.extensions
import android.app.ProgressDialog
import android.content.Intent
@@ -16,17 +16,19 @@ import com.dzeio.openhealth.extensions.GoogleFit
//import com.dzeio.openhealth.connectors.GoogleFit
import com.dzeio.openhealth.extensions.samsunghealth.SamsungHealth
import com.dzeio.openhealth.core.BaseFragment
-import com.dzeio.openhealth.databinding.FragmentImportBinding
+import com.dzeio.openhealth.databinding.FragmentExtensionsBinding
import dagger.hilt.android.AndroidEntryPoint
@AndroidEntryPoint
-class ImportFragment : BaseFragment(ImportViewModel::class.java) {
+class ExtensionsFragment :
+ BaseFragment(ExtensionsViewModel::class.java) {
companion object {
const val TAG = "ImportFragment"
}
- override val bindingInflater: (LayoutInflater, ViewGroup?, Boolean) -> FragmentImportBinding = FragmentImportBinding::inflate
+ override val bindingInflater: (LayoutInflater, ViewGroup?, Boolean) -> FragmentExtensionsBinding =
+ FragmentExtensionsBinding::inflate
private lateinit var progressDialog: ProgressDialog
@@ -111,8 +113,10 @@ class ImportFragment : BaseFragment(Impo
}
@RequiresApi(Build.VERSION_CODES.O)
- override fun onRequestPermissionsResult(requestCode: Int, permissions: Array,
- grantResults: IntArray) {
+ override fun onRequestPermissionsResult(
+ requestCode: Int, permissions: Array,
+ grantResults: IntArray
+ ) {
when {
grantResults.isEmpty() -> {
// If user interaction was interrupted, the permission request
diff --git a/app/src/main/java/com/dzeio/openhealth/ui/imports/ImportViewModel.kt b/app/src/main/java/com/dzeio/openhealth/ui/extensions/ExtensionsViewModel.kt
similarity index 90%
rename from app/src/main/java/com/dzeio/openhealth/ui/imports/ImportViewModel.kt
rename to app/src/main/java/com/dzeio/openhealth/ui/extensions/ExtensionsViewModel.kt
index 86796f6..ec14b23 100644
--- a/app/src/main/java/com/dzeio/openhealth/ui/imports/ImportViewModel.kt
+++ b/app/src/main/java/com/dzeio/openhealth/ui/extensions/ExtensionsViewModel.kt
@@ -1,4 +1,4 @@
-package com.dzeio.openhealth.ui.imports
+package com.dzeio.openhealth.ui.extensions
import androidx.lifecycle.MutableLiveData
import com.dzeio.openhealth.core.BaseViewModel
@@ -9,7 +9,7 @@ import javax.inject.Inject
@HiltViewModel
-class ImportViewModel @Inject internal constructor(
+class ExtensionsViewModel @Inject internal constructor(
private val weightRepository: WeightRepository
) : BaseViewModel() {
diff --git a/app/src/main/java/com/dzeio/openhealth/ui/home/HomeFragment.kt b/app/src/main/java/com/dzeio/openhealth/ui/home/HomeFragment.kt
index edb6a79..1b8ff51 100644
--- a/app/src/main/java/com/dzeio/openhealth/ui/home/HomeFragment.kt
+++ b/app/src/main/java/com/dzeio/openhealth/ui/home/HomeFragment.kt
@@ -11,6 +11,7 @@ import android.view.View
import android.view.ViewGroup
import androidx.lifecycle.lifecycleScope
import androidx.navigation.fragment.findNavController
+import androidx.preference.PreferenceManager
import com.dzeio.openhealth.Application
import com.dzeio.openhealth.R
import com.dzeio.openhealth.core.BaseFragment
@@ -35,6 +36,7 @@ import java.text.DateFormat
import java.text.SimpleDateFormat
import java.util.*
import kotlin.math.min
+import kotlin.properties.Delegates
@AndroidEntryPoint
class HomeFragment : BaseFragment(HomeViewModel::class.java) {
@@ -46,6 +48,8 @@ class HomeFragment : BaseFragment(HomeViewMo
override val bindingInflater: (LayoutInflater, ViewGroup?, Boolean) -> FragmentHomeBinding
get() = FragmentHomeBinding::inflate
+ private var intake by Delegates.notNull()
+
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
@@ -70,6 +74,11 @@ class HomeFragment : BaseFragment(HomeViewMo
}
}
+ intake = PreferenceManager.getDefaultSharedPreferences(requireContext())
+ .getString("water_intake", "1200")?.toFloat() ?: 1200f
+
+ binding.fragmentHomeWaterTotal.text = "${intake.toInt()}ml"
+
binding.fragmentHomeWaterRemove.setOnClickListener { _ ->
val water = viewModel.water.value
@@ -131,8 +140,9 @@ class HomeFragment : BaseFragment(HomeViewMo
description = Description().apply { isEnabled = false }
isScaleXEnabled = true
setPinchZoom(false)
- axisLeft.setLabelCount(0, true)
+ setDrawGridBackground(false)
setDrawBorders(false)
+ axisLeft.setLabelCount(0, true)
xAxis.apply {
valueFormatter = object : ValueFormatter() {
@@ -196,14 +206,14 @@ class HomeFragment : BaseFragment(HomeViewMo
)
graph?.let { btmp ->
- ValueAnimator.ofFloat(min(oldValue.toFloat(), 1200f), min(water.toFloat(), 1200f))
+ ValueAnimator.ofFloat(min(oldValue.toFloat(), intake), min(water.toFloat(), intake))
.apply {
duration = 300
addUpdateListener {
val canvas = Canvas(btmp)
DrawUtils.drawArc(
canvas,
- 100 * it.animatedValue as Float / 1200f,
+ 100 * it.animatedValue as Float / intake,
MaterialColors.getColor(
requireView(),
com.google.android.material.R.attr.colorPrimary
diff --git a/app/src/main/java/com/dzeio/openhealth/ui/home/HomeViewModel.kt b/app/src/main/java/com/dzeio/openhealth/ui/home/HomeViewModel.kt
index 024ccfa..3c07b95 100644
--- a/app/src/main/java/com/dzeio/openhealth/ui/home/HomeViewModel.kt
+++ b/app/src/main/java/com/dzeio/openhealth/ui/home/HomeViewModel.kt
@@ -1,6 +1,5 @@
package com.dzeio.openhealth.ui.home
-import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.viewModelScope
import com.dzeio.openhealth.core.BaseViewModel
@@ -9,9 +8,7 @@ import com.dzeio.openhealth.data.water.WaterRepository
import com.dzeio.openhealth.data.weight.Weight
import com.dzeio.openhealth.data.weight.WeightRepository
import dagger.hilt.android.lifecycle.HiltViewModel
-import kotlinx.coroutines.flow.collect
import kotlinx.coroutines.flow.collectLatest
-import kotlinx.coroutines.flow.flow
import kotlinx.coroutines.launch
import javax.inject.Inject
@@ -48,6 +45,7 @@ class HomeViewModel @Inject internal constructor(
waterRepository.addWater(water)
}
}
+
fun deleteWater(item: Water) {
viewModelScope.launch {
waterRepository.deleteWater(item)
diff --git a/app/src/main/java/com/dzeio/openhealth/ui/settings/SettingsFragment.kt b/app/src/main/java/com/dzeio/openhealth/ui/settings/SettingsFragment.kt
new file mode 100644
index 0000000..e2c44d0
--- /dev/null
+++ b/app/src/main/java/com/dzeio/openhealth/ui/settings/SettingsFragment.kt
@@ -0,0 +1,11 @@
+package com.dzeio.openhealth.ui.settings
+
+import android.os.Bundle
+import androidx.preference.PreferenceFragmentCompat
+import com.dzeio.openhealth.R
+
+class SettingsFragment : PreferenceFragmentCompat() {
+ override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
+ setPreferencesFromResource(R.xml.preferences, rootKey)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/dzeio/openhealth/ui/water/EditWaterDialog.kt b/app/src/main/java/com/dzeio/openhealth/ui/water/EditWaterDialog.kt
new file mode 100644
index 0000000..6b02880
--- /dev/null
+++ b/app/src/main/java/com/dzeio/openhealth/ui/water/EditWaterDialog.kt
@@ -0,0 +1,92 @@
+package com.dzeio.openhealth.ui.water
+
+import android.app.Dialog
+import android.os.Bundle
+import android.view.LayoutInflater
+import android.view.MenuItem
+import android.view.Window
+import androidx.core.content.ContextCompat
+import androidx.core.widget.doOnTextChanged
+import androidx.lifecycle.lifecycleScope
+import androidx.navigation.fragment.findNavController
+import androidx.navigation.fragment.navArgs
+import com.dzeio.openhealth.R
+import com.dzeio.openhealth.core.BaseFullscreenDialog
+import com.dzeio.openhealth.databinding.DialogWaterEditWaterBinding
+import com.google.android.material.dialog.MaterialAlertDialogBuilder
+import dagger.hilt.android.AndroidEntryPoint
+
+@AndroidEntryPoint
+class EditWaterDialog :
+ BaseFullscreenDialog(EditWaterViewModel::class.java) {
+
+ override val bindingInflater: (LayoutInflater) -> DialogWaterEditWaterBinding =
+ DialogWaterEditWaterBinding::inflate
+
+ private val args: EditWaterDialogArgs by navArgs()
+
+ override val isFullscreenLayout = true
+
+ var newValue: Int = 0
+
+ override fun onDialogInit(dialog: Dialog) {
+ super.onDialogInit(dialog)
+
+ dialog.requestWindowFeature(Window.FEATURE_NO_TITLE)
+ }
+
+ override fun onCreated(savedInstanceState: Bundle?) {
+ super.onCreated(savedInstanceState)
+
+ viewModel.water.observe(viewLifecycleOwner) {
+ binding.editTextNumber.setText(it.value.toString())
+ }
+ binding.editTextNumber.doOnTextChanged { text, start, before, count ->
+ newValue = text.toString().toInt()
+ }
+
+ viewModel.init(args.id)
+
+ }
+
+ private fun save() {
+ val water = viewModel.water.value
+ water?.let {
+ it.value = newValue
+ viewModel.save(it)
+ }
+
+ findNavController().popBackStack()
+ }
+
+ override fun onOptionsItemSelected(item: MenuItem): Boolean {
+ return when (item.itemId) {
+ R.id.menu_fullscreen_dialog_save -> {
+ save()
+ true
+ }
+ R.id.menu_fullscreen_dialog_delete -> {
+ MaterialAlertDialogBuilder(requireContext())
+ .setTitle("Delete Water Intake?")
+ .setMessage("Are you sure you want to delete this water intake?")
+ .setPositiveButton("Yes") { _, _ ->
+ lifecycleScope.launchWhenStarted {
+ viewModel.delete()
+ findNavController().popBackStack()
+ }
+ }
+ .setIcon(
+ ContextCompat.getDrawable(
+ requireContext(),
+ R.drawable.ic_outline_delete_24
+ )
+ )
+ .setNegativeButton("No") { _, _ -> }
+ .show()
+ true
+ }
+ else -> super.onOptionsItemSelected(item)
+ }
+
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/dzeio/openhealth/ui/water/EditWaterViewModel.kt b/app/src/main/java/com/dzeio/openhealth/ui/water/EditWaterViewModel.kt
new file mode 100644
index 0000000..06630ba
--- /dev/null
+++ b/app/src/main/java/com/dzeio/openhealth/ui/water/EditWaterViewModel.kt
@@ -0,0 +1,39 @@
+package com.dzeio.openhealth.ui.water
+
+import androidx.lifecycle.MutableLiveData
+import androidx.lifecycle.viewModelScope
+import com.dzeio.openhealth.core.BaseViewModel
+import com.dzeio.openhealth.data.water.Water
+import com.dzeio.openhealth.data.water.WaterRepository
+import dagger.hilt.android.lifecycle.HiltViewModel
+import kotlinx.coroutines.flow.collectLatest
+import kotlinx.coroutines.launch
+import javax.inject.Inject
+
+@HiltViewModel
+class EditWaterViewModel @Inject internal constructor(
+ private val waterRepository: WaterRepository
+) : BaseViewModel() {
+
+ val water: MutableLiveData = MutableLiveData()
+
+ fun init(id: Long) {
+ viewModelScope.launch {
+ waterRepository.getWater(id).collectLatest {
+ water.postValue(it)
+ }
+ }
+ }
+
+ fun delete() {
+ viewModelScope.launch {
+ water.value?.let { waterRepository.deleteWater(it) }
+ }
+ }
+
+ fun save(water: Water) {
+ viewModelScope.launch {
+ waterRepository.addWater(water)
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/dzeio/openhealth/ui/water/WaterHomeFragment.kt b/app/src/main/java/com/dzeio/openhealth/ui/water/WaterHomeFragment.kt
index 7375c32..bd9d61b 100644
--- a/app/src/main/java/com/dzeio/openhealth/ui/water/WaterHomeFragment.kt
+++ b/app/src/main/java/com/dzeio/openhealth/ui/water/WaterHomeFragment.kt
@@ -1,5 +1,6 @@
package com.dzeio.openhealth.ui.water
+import android.graphics.Color
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
@@ -14,8 +15,17 @@ import com.dzeio.openhealth.databinding.FragmentListWeightBinding
import com.dzeio.openhealth.databinding.FragmentMainWaterHomeBinding
import com.dzeio.openhealth.ui.home.HomeViewModel
import com.dzeio.openhealth.ui.weight.ListWeightFragmentDirections
+import com.dzeio.openhealth.utils.GraphUtils
+import com.github.mikephil.charting.data.BarData
+import com.github.mikephil.charting.data.BarDataSet
+import com.github.mikephil.charting.data.BarEntry
+import com.github.mikephil.charting.data.Entry
+import com.google.android.material.color.MaterialColors
import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.flow.collectLatest
+import java.time.Instant
+import java.time.temporal.ChronoUnit
+import java.util.*
@AndroidEntryPoint
class WaterHomeFragment :
@@ -37,16 +47,41 @@ class WaterHomeFragment :
val adapter = WaterAdapter()
adapter.onItemClick = {
findNavController().navigate(
- ListWeightFragmentDirections.actionNavListWeightToNavEditWeight(
+ WaterHomeFragmentDirections.actionNavWaterHomeToNavWaterEdit(
it.id
)
)
- //EditWeightDialog().show(requireActivity().supportFragmentManager, "dialog")
}
recycler.adapter = adapter
- viewModel.items.observe(viewLifecycleOwner) {
- adapter.set(it)
+ val chart = binding.chart
+
+ GraphUtils.barChartSetup(
+ chart, MaterialColors.getColor(
+ requireView(),
+ com.google.android.material.R.attr.colorPrimary
+ )
+ )
+
+
+ viewModel.items.observe(viewLifecycleOwner) { list ->
+ adapter.set(list)
+
+ val dataset = BarDataSet(
+ list.map {
+ val epoch = Calendar.getInstance(TimeZone.getTimeZone("UTC"))
+ epoch.time = Date(0)
+ epoch.add(Calendar.MILLISECOND, it.timestamp.toInt())
+ return@map BarEntry(
+ epoch.get(Calendar.DATE).toFloat(),
+ it.value.toFloat()
+ )
+ },
+ ""
+ )
+
+ chart.data = BarData(dataset)
+ chart.invalidate()
}
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/dzeio/openhealth/ui/weight/EditWeightDialog.kt b/app/src/main/java/com/dzeio/openhealth/ui/weight/EditWeightDialog.kt
index c0a6c7b..de59f88 100644
--- a/app/src/main/java/com/dzeio/openhealth/ui/weight/EditWeightDialog.kt
+++ b/app/src/main/java/com/dzeio/openhealth/ui/weight/EditWeightDialog.kt
@@ -36,22 +36,6 @@ class EditWeightDialog :
lateinit var weight: Weight
-// override fun onBuilderInit(builder: AlertDialog.Builder) {
-// super.onBuilderInit(builder)
-//
-// builder.apply {
-// setTitle("Add your weight (kg)")
-// setIcon(activity?.let { ContextCompat.getDrawable(it, R.drawable.ic_outline_timeline_24) })
-// setPositiveButton("Validate") { dialog, _ ->
-// save()
-// }
-// setNegativeButton("Cancel") { dialog, _ ->
-// dialog.cancel()
-// }
-//
-// }
-// }
-
override fun onDialogInit(dialog: Dialog) {
super.onDialogInit(dialog)
diff --git a/app/src/main/java/com/dzeio/openhealth/utils/GraphUtils.kt b/app/src/main/java/com/dzeio/openhealth/utils/GraphUtils.kt
new file mode 100644
index 0000000..c80c759
--- /dev/null
+++ b/app/src/main/java/com/dzeio/openhealth/utils/GraphUtils.kt
@@ -0,0 +1,77 @@
+package com.dzeio.openhealth.utils
+
+import android.graphics.Color
+import com.github.mikephil.charting.charts.BarChart
+import com.github.mikephil.charting.charts.BarLineChartBase
+import com.github.mikephil.charting.charts.Chart
+import com.github.mikephil.charting.charts.LineChart
+import com.github.mikephil.charting.components.AxisBase
+import com.github.mikephil.charting.components.Description
+import com.github.mikephil.charting.components.XAxis
+import com.github.mikephil.charting.data.BarLineScatterCandleBubbleData
+import com.github.mikephil.charting.data.ChartData
+import com.github.mikephil.charting.data.Entry
+import com.github.mikephil.charting.data.LineData
+import com.github.mikephil.charting.formatter.ValueFormatter
+import com.github.mikephil.charting.interfaces.datasets.IBarLineScatterCandleBubbleDataSet
+import com.github.mikephil.charting.interfaces.datasets.IDataSet
+import com.google.android.material.color.MaterialColors
+import java.text.SimpleDateFormat
+import java.util.*
+
+object GraphUtils {
+
+ fun lineChartSetup(chart: LineChart, mainColor: Int) {
+ barLineChartSetup(chart, mainColor)
+ }
+
+ fun barChartSetup(chart: BarChart, mainColor: Int) {
+ barLineChartSetup(chart, mainColor)
+ }
+
+ fun >?> barLineChartSetup(chart: BarLineChartBase, mainColor: Int) {
+ chart.apply {
+
+ // Setup
+ legend.isEnabled = false
+ description = Description().apply { isEnabled = false }
+
+ xAxis.apply {
+ valueFormatter = object : ValueFormatter() {
+ override fun getAxisLabel(value: Float, axis: AxisBase?): String {
+ return SimpleDateFormat(
+ "yyyy-MM-dd",
+ Locale.getDefault()
+ ).format(Date(value.toLong()))
+ //return super.getAxisLabel(value, axis)
+ }
+ }
+ position = XAxis.XAxisPosition.BOTTOM
+ setDrawGridLines(false)
+ setLabelCount(3, true)
+ textColor = Color.WHITE
+ }
+
+ axisLeft.apply {
+ axisLineColor = mainColor
+ textColor = Color.WHITE
+ setLabelCount(0, true)
+ }
+ axisRight.apply {
+ textColor = Color.WHITE
+ }
+ setNoDataTextColor(Color.WHITE)
+
+
+ isAutoScaleMinMaxEnabled = true
+ legend.isEnabled = false
+ isDragEnabled = true
+ isScaleYEnabled = false
+ description = Description().apply { isEnabled = false }
+ isScaleXEnabled = true
+ setPinchZoom(false)
+ //setDrawGridBackground(false)
+ //setDrawBorders(false)
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_baseline_extension_24.xml b/app/src/main/res/drawable/ic_baseline_extension_24.xml
new file mode 100644
index 0000000..94055ba
--- /dev/null
+++ b/app/src/main/res/drawable/ic_baseline_extension_24.xml
@@ -0,0 +1,10 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_baseline_settings_24.xml b/app/src/main/res/drawable/ic_baseline_settings_24.xml
new file mode 100644
index 0000000..41a82ed
--- /dev/null
+++ b/app/src/main/res/drawable/ic_baseline_settings_24.xml
@@ -0,0 +1,10 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_logo_fit.xml b/app/src/main/res/drawable/ic_logo_fit.xml
new file mode 100644
index 0000000..1d5a524
--- /dev/null
+++ b/app/src/main/res/drawable/ic_logo_fit.xml
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/drawable/logo_shealth.png b/app/src/main/res/drawable/logo_shealth.png
new file mode 100644
index 0000000..2d85c18
Binary files /dev/null and b/app/src/main/res/drawable/logo_shealth.png differ
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
index 340c80d..d72280b 100644
--- a/app/src/main/res/layout/activity_main.xml
+++ b/app/src/main/res/layout/activity_main.xml
@@ -15,11 +15,14 @@
@@ -49,11 +52,4 @@
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/dialog_water_edit_water.xml b/app/src/main/res/layout/dialog_water_edit_water.xml
new file mode 100644
index 0000000..6862567
--- /dev/null
+++ b/app/src/main/res/layout/dialog_water_edit_water.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_extensions.xml b/app/src/main/res/layout/fragment_extensions.xml
new file mode 100644
index 0000000..1db13a2
--- /dev/null
+++ b/app/src/main/res/layout/fragment_extensions.xml
@@ -0,0 +1,122 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_import.xml b/app/src/main/res/layout/fragment_import.xml
deleted file mode 100644
index f3587a8..0000000
--- a/app/src/main/res/layout/fragment_import.xml
+++ /dev/null
@@ -1,43 +0,0 @@
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_main_water_home.xml b/app/src/main/res/layout/fragment_main_water_home.xml
index 145a5d1..eef3ebf 100644
--- a/app/src/main/res/layout/fragment_main_water_home.xml
+++ b/app/src/main/res/layout/fragment_main_water_home.xml
@@ -22,7 +22,7 @@
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/menu/activity_main_drawer.xml b/app/src/main/res/menu/activity_main_drawer.xml
deleted file mode 100644
index 2d0bbbb..0000000
--- a/app/src/main/res/menu/activity_main_drawer.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-
-
\ No newline at end of file
diff --git a/app/src/main/res/menu/main.xml b/app/src/main/res/menu/main.xml
index 412d5f8..83c942e 100644
--- a/app/src/main/res/menu/main.xml
+++ b/app/src/main/res/menu/main.xml
@@ -5,5 +5,12 @@
android:id="@+id/action_settings"
android:orderInCategory="100"
android:title="@string/action_settings"
- app:showAsAction="never" />
+ app:showAsAction="ifRoom"
+ android:icon="@drawable/ic_baseline_settings_24"/>
+
\ No newline at end of file
diff --git a/app/src/main/res/navigation/mobile_navigation.xml b/app/src/main/res/navigation/mobile_navigation.xml
index 5193656..c648752 100644
--- a/app/src/main/res/navigation/mobile_navigation.xml
+++ b/app/src/main/res/navigation/mobile_navigation.xml
@@ -18,22 +18,41 @@
app:popEnterAnim="@android:anim/slide_in_left"
app:popExitAnim="@android:anim/slide_out_right" />
+ app:destination="@id/nav_water_home"
+ app:enterAnim="@android:anim/slide_in_left"
+ app:exitAnim="@android:anim/slide_out_right"
+ app:popEnterAnim="@android:anim/slide_in_left"
+ app:popExitAnim="@android:anim/slide_out_right" />
+
+ tools:layout="@layout/fragment_extensions" >
+
+
+
+ tools:layout="@layout/fragment_main_water_home">
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values/preferenceItems.xml b/app/src/main/res/values/preferenceItems.xml
new file mode 100644
index 0000000..babb856
--- /dev/null
+++ b/app/src/main/res/values/preferenceItems.xml
@@ -0,0 +1,11 @@
+
+
+
+ - Male
+ - Female
+
+
+ - Millimeters
+ - Ounces
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 275c765..e1aca61 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -15,4 +15,5 @@
Edit Weight
Water Intake
Water Intake
+ Extensions
\ No newline at end of file
diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml
new file mode 100644
index 0000000..6e926b0
--- /dev/null
+++ b/app/src/main/res/xml/preferences.xml
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file