diff --git a/app/src/main/java/com/dzeio/openhealth/Application.kt b/app/src/main/java/com/dzeio/openhealth/Application.kt index 491b442..218b901 100644 --- a/app/src/main/java/com/dzeio/openhealth/Application.kt +++ b/app/src/main/java/com/dzeio/openhealth/Application.kt @@ -19,6 +19,7 @@ class Application : Application() { val prefs = PreferenceManager.getDefaultSharedPreferences(this) + // setup the CrashHandler CrashHandler.Builder() .withActivity(ErrorActivity::class.java) .withPrefs(prefs) @@ -28,12 +29,15 @@ class Application : Application() { .build() .setup(this) - // Android Dynamics Colors + // setup for Android Dynamics Colors DynamicColors.applyToActivitiesIfAvailable(this) super.onCreate() } + /** + * Change the language of the application if said in the settings + */ override fun attachBaseContext(base: Context) { super.attachBaseContext(LocaleUtils.onAttach(base)) } diff --git a/app/src/main/java/com/dzeio/openhealth/Settings.kt b/app/src/main/java/com/dzeio/openhealth/Settings.kt index 16ccca4..25aecbc 100644 --- a/app/src/main/java/com/dzeio/openhealth/Settings.kt +++ b/app/src/main/java/com/dzeio/openhealth/Settings.kt @@ -1,5 +1,8 @@ package com.dzeio.openhealth +/** + * Object containing every keys for the different settings of the application + */ object Settings { /** diff --git a/app/src/main/java/com/dzeio/openhealth/units/UnitFactory.kt b/app/src/main/java/com/dzeio/openhealth/units/UnitFactory.kt deleted file mode 100644 index 07ee51a..0000000 --- a/app/src/main/java/com/dzeio/openhealth/units/UnitFactory.kt +++ /dev/null @@ -1,22 +0,0 @@ -package com.dzeio.openhealth.units - -object UnitFactory { - @Deprecated("Move to Units.Mass.find") - fun mass(unit: String): Units.Mass { - return when (unit.lowercase()) { - "kilogram", "kilograms", "kg" -> Units.Mass.KILOGRAM - "pound", "pounds", "lb" -> Units.Mass.POUND - else -> Units.Mass.KILOGRAM - } - } - - @Deprecated("Move to Units.Volume.find") - fun volume(unit: String): Units.Volume { - return when (unit.lowercase()) { - "milliliter", "milliliters", "ml" -> Units.Volume.MILLILITER - "imperial ounce", "imperial ounces", "oz" -> Units.Volume.IMPERIAL_OUNCE - "us ounce", "us ounces" -> Units.Volume.US_OUNCE - else -> Units.Volume.MILLILITER - } - } -} diff --git a/app/src/main/java/com/dzeio/openhealth/units/Units.kt b/app/src/main/java/com/dzeio/openhealth/units/Units.kt index c2c1fa3..443f502 100644 --- a/app/src/main/java/com/dzeio/openhealth/units/Units.kt +++ b/app/src/main/java/com/dzeio/openhealth/units/Units.kt @@ -2,7 +2,13 @@ package com.dzeio.openhealth.units import com.dzeio.openhealth.R +/** + * Object containing the differents units and how they are converted + */ object Units { + /** + * the Mass Unit + */ enum class Mass( val id: String, /** @@ -41,11 +47,17 @@ object Units { return value * modifier } + /** + * Format the value and let the hundred of grams to be outputed + */ fun formatToString(value: Float): String { return String.format("%.1f", value * modifier) } } + /** + * the Volume unit + */ enum class Volume( val id: String, /** diff --git a/app/src/main/java/com/dzeio/openhealth/units/WaterUnit.kt b/app/src/main/java/com/dzeio/openhealth/units/WaterUnit.kt deleted file mode 100644 index 2d998eb..0000000 --- a/app/src/main/java/com/dzeio/openhealth/units/WaterUnit.kt +++ /dev/null @@ -1,22 +0,0 @@ -package com.dzeio.openhealth.units - -@Deprecated("Move to Units.Volume") -enum class WaterUnit( - val unit: String, - val fromML: Float -) { - ML("ml", 1f), - US_OZ("oz", 0.03381413f), - IMP_OZ("oz", 0.03519503f); - - companion object { - fun fromSettings(value: String): WaterUnit { - return when (value.lowercase()) { - "milliliter" -> ML - "us ounce" -> US_OZ - "imperial ounce" -> IMP_OZ - else -> ML - } - } - } -} diff --git a/app/src/main/java/com/dzeio/openhealth/utils/BitmapUtils.kt b/app/src/main/java/com/dzeio/openhealth/utils/BitmapUtils.kt index fc4cb76..be399e9 100644 --- a/app/src/main/java/com/dzeio/openhealth/utils/BitmapUtils.kt +++ b/app/src/main/java/com/dzeio/openhealth/utils/BitmapUtils.kt @@ -9,7 +9,9 @@ import java.nio.channels.FileChannel object BitmapUtils { /** - * Find source of function lol + * Stolen from StackOverflow but I don't remember where... + * + * Convert an immutable Bitmap to a mutable one if possible */ fun convertToMutable(context: Context, imgIn: Bitmap): Bitmap? { val width = imgIn.width @@ -46,4 +48,4 @@ object BitmapUtils { } return null } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/dzeio/openhealth/utils/Configuration.kt b/app/src/main/java/com/dzeio/openhealth/utils/Configuration.kt index 8d3201b..eefde14 100644 --- a/app/src/main/java/com/dzeio/openhealth/utils/Configuration.kt +++ b/app/src/main/java/com/dzeio/openhealth/utils/Configuration.kt @@ -6,6 +6,11 @@ import androidx.core.content.edit import com.dzeio.openhealth.Application import com.dzeio.openhealth.core.Observable +/** + * Class that ease the SharedPreferences works + * + * It allow to use others types simpler and to export them as LiveData for realtime updates + */ class Configuration( private val prefs: SharedPreferences ) : SharedPreferences.OnSharedPreferenceChangeListener { diff --git a/app/src/main/java/com/dzeio/openhealth/utils/DownloadImageTask.kt b/app/src/main/java/com/dzeio/openhealth/utils/DownloadImageTask.kt index 19ab927..83d952a 100644 --- a/app/src/main/java/com/dzeio/openhealth/utils/DownloadImageTask.kt +++ b/app/src/main/java/com/dzeio/openhealth/utils/DownloadImageTask.kt @@ -7,6 +7,13 @@ import android.util.Log import android.widget.ImageView import java.net.URL +/** + * Stolen from StackOverflow https://stackoverflow.com/a/10868126/7335674 + * + * Allows to download an image asynchronously + * + * TODO: rework so it is not deprecated anymore + */ class DownloadImageTask(var bmImage: ImageView) : AsyncTask() { @Deprecated("Deprecated in Java") diff --git a/app/src/main/java/com/dzeio/openhealth/utils/DrawUtils.kt b/app/src/main/java/com/dzeio/openhealth/utils/DrawUtils.kt index 35fcde5..871ae06 100644 --- a/app/src/main/java/com/dzeio/openhealth/utils/DrawUtils.kt +++ b/app/src/main/java/com/dzeio/openhealth/utils/DrawUtils.kt @@ -4,10 +4,13 @@ import android.graphics.Canvas import android.graphics.Paint import android.graphics.RectF +/** + * Utils class to draw more complexe elements on a canvas + */ object DrawUtils { /** - * Fuck Graphics + * Draw an arc on a canvas or a the previous comment was "Fuck Graphics" */ fun drawArc(canvas: Canvas, percent: Float, rect: RectF, pColor: Int, strokeWidth: Float = 1f) { val r1 = RectF( @@ -26,25 +29,6 @@ object DrawUtils { canvas.drawArc(r1, 180f, 180 * percent / 100f, false, paint) } - /** - * Fuck Graphics - */ - fun drawRect(canvas: Canvas, rect: RectF, pColor: Int, strokeWidth: Float = 1f) { - val r1 = RectF( - canvas.realSize(true, rect.left), - canvas.realSize(false, rect.top), - canvas.realSize(true, rect.right), - canvas.realSize(false, rect.bottom) - ) - val paint = Paint().apply { - this.strokeWidth = canvas.realSize(true, strokeWidth) - style = Paint.Style.STROKE - color = pColor - isAntiAlias = true - } - canvas.drawRect(r1, paint) - } - private fun Canvas.realSize(isWidth: Boolean, value: Float): Float { val it = if (isWidth) this.width else this.height return it * value / 100 @@ -55,4 +39,4 @@ object DrawUtils { return it * value / 100 } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/dzeio/openhealth/utils/GraphUtils.kt b/app/src/main/java/com/dzeio/openhealth/utils/GraphUtils.kt index 9af6325..87112d0 100644 --- a/app/src/main/java/com/dzeio/openhealth/utils/GraphUtils.kt +++ b/app/src/main/java/com/dzeio/openhealth/utils/GraphUtils.kt @@ -15,6 +15,11 @@ import java.text.SimpleDateFormat import java.util.Date import java.util.Locale +/** + * Utils object to create graphics using the mikephil charting library + * + * TODO: migrate to DzeioCharts once it is ready + */ object GraphUtils { fun lineChartSetup(chart: LineChart, mainColor: Int, textColor: Int) { @@ -96,16 +101,4 @@ object GraphUtils { // return super.getAxisLabel(value, axis) } } - - class DateTimeValueFormatter( - private val transformer: Int = 1 - ) : ValueFormatter() { - override fun getAxisLabel(value: Float, axis: AxisBase?): String { - return SimpleDateFormat( - "yyyy-MM-dd hh", - Locale.getDefault() - ).format(Date(value.toLong() * transformer)) - // return super.getAxisLabel(value, axis) - } - } } diff --git a/app/src/main/java/com/dzeio/openhealth/utils/LocaleUtils.kt b/app/src/main/java/com/dzeio/openhealth/utils/LocaleUtils.kt index 70819d5..67d5e79 100644 --- a/app/src/main/java/com/dzeio/openhealth/utils/LocaleUtils.kt +++ b/app/src/main/java/com/dzeio/openhealth/utils/LocaleUtils.kt @@ -5,7 +5,6 @@ import android.content.Context import android.content.res.Configuration import android.os.Build import android.os.LocaleList -import android.util.Log import androidx.preference.PreferenceManager import com.dzeio.openhealth.Settings import java.util.Locale @@ -44,18 +43,19 @@ object LocaleUtils { } private fun getPersistedData(context: Context): String { + // TODO: use the config class val preferences = PreferenceManager.getDefaultSharedPreferences(context) return preferences.getString(Settings.APP_LANGUAGE, Locale.getDefault().language) ?: Locale.getDefault().language } private fun persist(context: Context, language: String?) { + // TODO: use the config class val preferences = PreferenceManager.getDefaultSharedPreferences(context) preferences.edit().putString(Settings.APP_LANGUAGE, language).apply() } private fun updateResources(context: Context, language: String): Context { - Log.d("LocaleUtils", language) if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { val locale = Locale(language) Locale.setDefault(locale) @@ -73,4 +73,4 @@ object LocaleUtils { resources.updateConfiguration(configuration, resources.displayMetrics) return context } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/dzeio/openhealth/utils/PermissionsManager.kt b/app/src/main/java/com/dzeio/openhealth/utils/PermissionsManager.kt index a8c6a76..3354bcf 100644 --- a/app/src/main/java/com/dzeio/openhealth/utils/PermissionsManager.kt +++ b/app/src/main/java/com/dzeio/openhealth/utils/PermissionsManager.kt @@ -5,8 +5,14 @@ import android.content.pm.PackageManager import android.os.Build import androidx.core.content.ContextCompat +/** + * Simple Utils class to check for permissions in multiple android environments + */ object PermissionsManager { + /** + * Allow to check for one permission + */ fun hasPermission(context: Context, permission: String): Boolean = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { context.checkSelfPermission(permission) == PackageManager.PERMISSION_GRANTED @@ -17,6 +23,9 @@ object PermissionsManager { ) == PackageManager.PERMISSION_GRANTED } + /** + * Check for multiple permissions at once + */ fun hasPermission(context: Context, permissions: Array): Boolean { for (permission in permissions) { val res = hasPermission(context, permission) diff --git a/app/src/main/java/com/dzeio/openhealth/utils/ServiceUtils.kt b/app/src/main/java/com/dzeio/openhealth/utils/ServiceUtils.kt index 4413afe..eff427e 100644 --- a/app/src/main/java/com/dzeio/openhealth/utils/ServiceUtils.kt +++ b/app/src/main/java/com/dzeio/openhealth/utils/ServiceUtils.kt @@ -6,7 +6,16 @@ import android.content.Intent import android.util.Log import com.dzeio.openhealth.ui.MainActivity +/** + * Utils class for services + */ object ServiceUtils { + + /** + * Function that start a service + * + * If I remember correctly I stole this from StackOverflow... TODO: get the original URL + */ fun startService(context: Context, service: Class) { val activityManager = context.getSystemService(Context.ACTIVITY_SERVICE) as ActivityManager for (runninService in activityManager.getRunningServices(Integer.MAX_VALUE)) { @@ -18,4 +27,4 @@ object ServiceUtils { Log.i(MainActivity.TAG, "Starting service ${service.name}") Intent(context, service).also { intent -> context.startService(intent) } } -} \ No newline at end of file +} diff --git a/app/src/main/java/com/dzeio/openhealth/utils/fields/IntEditTextPreference.kt b/app/src/main/java/com/dzeio/openhealth/utils/fields/IntEditTextPreference.kt index e203d2d..deb4360 100644 --- a/app/src/main/java/com/dzeio/openhealth/utils/fields/IntEditTextPreference.kt +++ b/app/src/main/java/com/dzeio/openhealth/utils/fields/IntEditTextPreference.kt @@ -8,7 +8,11 @@ import android.util.Log import android.widget.EditText import androidx.preference.EditTextPreference - +/** + * TOTALLY BASED on stolen code from stackoverflow that I don't remember where... f*ck + * + * Basically it allows to change the way `EditTextPreference` works to allow only numbers + */ class IntEditTextPreference : EditTextPreference, EditTextPreference.OnBindEditTextListener { private var txt: String? = null diff --git a/app/src/main/java/com/dzeio/openhealth/workers/WaterReminderWorker.kt b/app/src/main/java/com/dzeio/openhealth/workers/WaterReminderWorker.kt index 3829842..60f740e 100644 --- a/app/src/main/java/com/dzeio/openhealth/workers/WaterReminderWorker.kt +++ b/app/src/main/java/com/dzeio/openhealth/workers/WaterReminderWorker.kt @@ -17,6 +17,9 @@ import com.dzeio.openhealth.interfaces.NotificationIds import java.util.Date import java.util.concurrent.TimeUnit +/** + * The worker that remind the user to drink water hourly + */ class WaterReminderWorker( private val context: Context, params: WorkerParameters @@ -24,6 +27,10 @@ class WaterReminderWorker( companion object { const val TAG = "${Application.TAG}/WaterWorker" + + /** + * functio nthat setup the worker + */ fun setup(context: Context) { schedule( TAG, @@ -37,6 +44,8 @@ class WaterReminderWorker( override fun doWork(): Result { Log.d(TAG, "Ran! ${Date().toLocaleString()}") + + // send a new notification to the user with(NotificationManagerCompat.from(context)) { val flag = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) PendingIntent.FLAG_IMMUTABLE else 0 diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml index 16defc6..af29945 100644 --- a/app/src/main/res/xml/preferences.xml +++ b/app/src/main/res/xml/preferences.xml @@ -58,11 +58,10 @@ + android:title="Number of steps each days" />