Implement reminder day picker

pull/605/head
Alinson S. Xavier 5 years ago
parent 424a282847
commit 9ccb2b2737

@ -23,12 +23,14 @@ import android.content.res.*
import android.graphics.* import android.graphics.*
import android.os.* import android.os.*
import android.text.format.* import android.text.format.*
import android.view.*
import androidx.appcompat.app.* import androidx.appcompat.app.*
import com.android.datetimepicker.time.* import com.android.datetimepicker.time.*
import org.isoron.androidbase.utils.* import org.isoron.androidbase.utils.*
import org.isoron.uhabits.* import org.isoron.uhabits.*
import org.isoron.uhabits.activities.* import org.isoron.uhabits.activities.*
import org.isoron.uhabits.activities.common.dialogs.* import org.isoron.uhabits.activities.common.dialogs.*
import org.isoron.uhabits.core.models.*
import org.isoron.uhabits.core.preferences.* import org.isoron.uhabits.core.preferences.*
import org.isoron.uhabits.databinding.* import org.isoron.uhabits.databinding.*
import org.isoron.uhabits.preferences.* import org.isoron.uhabits.preferences.*
@ -47,6 +49,7 @@ class EditHabitActivity : AppCompatActivity() {
var freqDen = 1 var freqDen = 1
var reminderHour = -1 var reminderHour = -1
var reminderMin = -1 var reminderMin = -1
var reminderDays = WeekdayList.EVERY_DAY
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
@ -84,6 +87,7 @@ class EditHabitActivity : AppCompatActivity() {
dialog.show(supportFragmentManager, "frequencyPicker") dialog.show(supportFragmentManager, "frequencyPicker")
} }
populateReminder()
binding.reminderTimePicker.setOnClickListener { binding.reminderTimePicker.setOnClickListener {
val currentHour = if (reminderHour >= 0) reminderHour else 8 val currentHour = if (reminderHour >= 0) reminderHour else 8
val currentMin = if (reminderMin >= 0) reminderMin else 0 val currentMin = if (reminderMin >= 0) reminderMin else 0
@ -97,12 +101,24 @@ class EditHabitActivity : AppCompatActivity() {
override fun onTimeCleared(view: RadialPickerLayout?) { override fun onTimeCleared(view: RadialPickerLayout?) {
reminderHour = -1 reminderHour = -1
reminderMin = -1 reminderMin = -1
reminderDays = WeekdayList.EVERY_DAY
populateReminder() populateReminder()
} }
}, currentHour, currentMin, is24HourMode, androidColor) }, currentHour, currentMin, is24HourMode, androidColor)
dialog.show(supportFragmentManager, "timePicker") dialog.show(supportFragmentManager, "timePicker")
} }
binding.reminderDatePicker.setOnClickListener {
val dialog = WeekdayPickerDialog()
dialog.setListener { days ->
reminderDays = days
if (reminderDays.isEmpty) reminderDays = WeekdayList.EVERY_DAY
populateReminder()
}
dialog.setSelectedDays(reminderDays)
dialog.show(supportFragmentManager, "dayPicker")
}
binding.buttonSave.setOnClickListener { binding.buttonSave.setOnClickListener {
finish() finish()
} }
@ -111,9 +127,15 @@ class EditHabitActivity : AppCompatActivity() {
private fun populateReminder() { private fun populateReminder() {
if (reminderHour < 0) { if (reminderHour < 0) {
binding.reminderTimePicker.text = getString(R.string.reminder_off) binding.reminderTimePicker.text = getString(R.string.reminder_off)
binding.reminderDatePicker.visibility = View.GONE
binding.reminderDivider.visibility = View.GONE
} else { } else {
val time = AndroidDateUtils.formatTime(this, reminderHour, reminderMin) val time = AndroidDateUtils.formatTime(this, reminderHour, reminderMin)
val daysArray = reminderDays.toArray()
binding.reminderTimePicker.text = time binding.reminderTimePicker.text = time
binding.reminderDatePicker.visibility = View.VISIBLE
binding.reminderDivider.visibility = View.VISIBLE
binding.reminderDatePicker.text = AndroidDateUtils.formatWeekdayList(this, daysArray)
} }
} }

@ -68,38 +68,20 @@
android:orientation="vertical" android:orientation="vertical"
android:padding="8dp"> android:padding="8dp">
<LinearLayout <LinearLayout style="@style/FormInnerBox">
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/bg_input_group"
android:clipChildren="false"
android:clipToPadding="false"
android:orientation="vertical">
<TextView <TextView
android:layout_width="wrap_content" style="@style/FormLabel"
android:layout_height="wrap_content" android:text="@string/name" />
android:layout_marginStart="8dp"
android:layout_marginTop="-17dp"
android:layout_marginBottom="-4dp"
android:background="?attr/highContrastReverseTextColor"
android:paddingStart="8dp"
android:paddingEnd="8dp"
android:text="@string/name"
android:textSize="@dimen/smallTextSize" />
<EditText <EditText
android:layout_width="match_parent" style="@style/FormInput"
android:layout_height="wrap_content" android:hint="@string/exercise_habit_name"
android:background="@color/transparent" />
android:hint="e.g. Exercise"
android:padding="16dp"
android:textSize="@dimen/regularTextSize" />
</LinearLayout> </LinearLayout>
</FrameLayout> </FrameLayout>
<!-- Habit Color --> <!-- Habit Color -->
<FrameLayout <FrameLayut
android:layout_width="80dp" android:layout_width="80dp"
android:layout_height="match_parent" android:layout_height="match_parent"
android:clipChildren="false" android:clipChildren="false"
@ -108,25 +90,10 @@
android:padding="8dp" android:padding="8dp"
android:paddingStart="0dp"> android:paddingStart="0dp">
<LinearLayout <LinearLayout style="@style/FormInnerBox">
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/bg_input_group"
android:clipChildren="false"
android:clipToPadding="false"
android:orientation="vertical">
<TextView <TextView
android:layout_width="wrap_content" style="@style/FormLabel"
android:layout_height="wrap_content" android:text="Color" />
android:layout_marginStart="8dp"
android:layout_marginTop="-17dp"
android:layout_marginBottom="-4dp"
android:background="?attr/highContrastReverseTextColor"
android:paddingStart="8dp"
android:paddingEnd="8dp"
android:text="Color"
android:textSize="@dimen/smallTextSize" />
<androidx.appcompat.widget.AppCompatButton <androidx.appcompat.widget.AppCompatButton
android:id="@+id/colorButton" android:id="@+id/colorButton"
@ -139,7 +106,7 @@
android:backgroundTint="#E23673" /> android:backgroundTint="#E23673" />
</LinearLayout> </LinearLayout>
</FrameLayout> </FrameLayut>
</LinearLayout> </LinearLayout>
@ -155,34 +122,15 @@
android:padding="8dp" android:padding="8dp"
android:paddingTop="4dp"> android:paddingTop="4dp">
<LinearLayout <LinearLayout style="@style/FormInnerBox">
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/bg_input_group"
android:clipChildren="false"
android:clipToPadding="false"
android:orientation="vertical">
<TextView <TextView
android:layout_width="wrap_content" style="@style/FormLabel"
android:layout_height="wrap_content" android:text="@string/question" />
android:layout_marginStart="8dp"
android:layout_marginTop="-17dp"
android:layout_marginBottom="-4dp"
android:background="?attr/highContrastReverseTextColor"
android:paddingStart="8dp"
android:paddingEnd="8dp"
android:text="@string/question"
android:textSize="@dimen/smallTextSize" />
<EditText <EditText
android:layout_width="match_parent" style="@style/FormInput"
android:layout_height="wrap_content"
android:background="@color/transparent"
android:hint="@string/example_question_boolean" android:hint="@string/example_question_boolean"
android:padding="16dp" />
android:text=""
android:textSize="@dimen/regularTextSize" />
</LinearLayout> </LinearLayout>
</FrameLayout> </FrameLayout>
@ -196,35 +144,16 @@
android:padding="8dp" android:padding="8dp"
android:paddingTop="4dp"> android:paddingTop="4dp">
<LinearLayout <LinearLayout style="@style/FormInnerBox">
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/bg_input_group"
android:clipChildren="false"
android:clipToPadding="false"
android:orientation="vertical">
<TextView <TextView
android:layout_width="wrap_content" style="@style/FormLabel"
android:layout_height="wrap_content" android:text="@string/frequency" />
android:layout_marginStart="8dp"
android:layout_marginTop="-17dp"
android:layout_marginBottom="-4dp"
android:background="?attr/highContrastReverseTextColor"
android:paddingStart="8dp"
android:paddingEnd="8dp"
android:text="@string/frequency"
android:textSize="@dimen/smallTextSize" />
<TextView <TextView
style="@style/FormDropdown"
android:id="@+id/frequencyPicker" android:id="@+id/frequencyPicker"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:drawableEnd="@drawable/ic_arrow_drop_down_dark"
android:padding="16dp"
android:text="@string/every_day"
android:textColor="?attr/highContrastTextColor" android:textColor="?attr/highContrastTextColor"
android:textSize="@dimen/regularTextSize" /> />
</LinearLayout> </LinearLayout>
</FrameLayout> </FrameLayout>
@ -237,35 +166,24 @@
android:orientation="vertical" android:orientation="vertical"
android:padding="8dp"> android:padding="8dp">
<LinearLayout <LinearLayout style="@style/FormInnerBox">
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/bg_input_group"
android:clipChildren="false"
android:clipToPadding="false"
android:orientation="vertical">
<TextView <TextView
android:layout_width="wrap_content" style="@style/FormLabel"
android:layout_height="wrap_content" android:text="@string/reminder" />
android:layout_marginStart="8dp"
android:layout_marginTop="-17dp"
android:layout_marginBottom="-4dp"
android:background="?attr/highContrastReverseTextColor"
android:paddingStart="8dp"
android:paddingEnd="8dp"
android:text="@string/reminder"
android:textSize="@dimen/smallTextSize" />
<TextView <TextView
style="@style/FormDropdown"
android:id="@+id/reminderTimePicker" android:id="@+id/reminderTimePicker"
android:layout_width="match_parent" android:text="@string/reminder_off" />
android:layout_height="wrap_content"
android:drawableEnd="@drawable/ic_arrow_drop_down_dark" <View
android:padding="16dp" style="@style/FormDivider"
android:text="@string/reminder_off" android:id="@+id/reminderDivider"/>
android:textColor="?attr/highContrastTextColor"
android:textSize="@dimen/regularTextSize" /> <TextView
style="@style/FormDropdown"
android:id="@+id/reminderDatePicker"
android:text="" />
</LinearLayout> </LinearLayout>
</FrameLayout> </FrameLayout>
@ -279,34 +197,14 @@
android:orientation="vertical" android:orientation="vertical"
android:padding="8dp"> android:padding="8dp">
<LinearLayout <LinearLayout style="@style/FormInnerBox">
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/bg_input_group"
android:clipChildren="false"
android:clipToPadding="false"
android:orientation="vertical">
<TextView <TextView
android:layout_width="wrap_content" style="@style/FormLabel"
android:layout_height="wrap_content" android:text="@string/notes" />
android:layout_marginStart="8dp"
android:layout_marginTop="-17dp"
android:layout_marginBottom="-4dp"
android:background="?attr/highContrastReverseTextColor"
android:paddingStart="8dp"
android:paddingEnd="8dp"
android:text="Notes"
android:textSize="@dimen/smallTextSize" />
<EditText <EditText
android:layout_width="match_parent" style="@style/FormInput"
android:layout_height="wrap_content" android:hint="@string/example_notes" />
android:background="@color/transparent"
android:hint="(Optional)"
android:padding="16dp"
android:textColor="?attr/highContrastTextColor"
android:textSize="@dimen/regularTextSize" />
</LinearLayout> </LinearLayout>
</FrameLayout> </FrameLayout>
</LinearLayout> </LinearLayout>

@ -245,7 +245,7 @@
<string name="first_day_of_the_week">First day of the week</string> <string name="first_day_of_the_week">First day of the week</string>
<string name="default_reminder_question">Have you completed this habit today?</string> <string name="default_reminder_question">Have you completed this habit today?</string>
<string name="notes">Notes</string> <string name="notes">Notes</string>
<string name="example_notes">You can put whatever you want here!</string> <string name="example_notes">(Optional)</string>
<string name="yes_or_no_example">e.g. Did you wake up early today? Did you exercise? Did you play chess?</string> <string name="yes_or_no_example">e.g. Did you wake up early today? Did you exercise? Did you play chess?</string>
<string name="measurable">Measurable</string> <string name="measurable">Measurable</string>
@ -254,5 +254,6 @@
<string name="subjective_example">e.g. Are you felling happy today? Definitely, somewhat, not at all? How frequently did you snack? Very often, sometimes, never?</string> <string name="subjective_example">e.g. Are you felling happy today? Definitely, somewhat, not at all? How frequently did you snack? Very often, sometimes, never?</string>
<string name="x_times_per_week">%d times per week</string> <string name="x_times_per_week">%d times per week</string>
<string name="x_times_per_month">%d times per month</string> <string name="x_times_per_month">%d times per month</string>
<string name="exercise_habit_name">e.g. Exercise</string>
</resources> </resources>

@ -292,4 +292,51 @@
<item name="android:windowIsTranslucent">true</item> <item name="android:windowIsTranslucent">true</item>
<item name="android:windowTranslucentStatus">true</item> <item name="android:windowTranslucentStatus">true</item>
</style> </style>
<style name="FormLabel">
<item name="android:layout_width">wrap_content</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:layout_marginStart">8dp</item>
<item name="android:layout_marginTop">-17dp</item>
<item name="android:layout_marginBottom">-4dp</item>
<item name="android:background">?attr/highContrastReverseTextColor</item>
<item name="android:paddingStart">8dp</item>
<item name="android:paddingEnd">8dp</item>
<item name="android:textSize">@dimen/smallerTextSize</item>
</style>
<style name="FormInput">
<item name="android:layout_width">match_parent</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:background">@color/transparent</item>
<item name="android:paddingLeft">16dp</item>
<item name="android:paddingRight">16dp</item>
<item name="android:paddingTop">16dp</item>
<item name="android:paddingBottom">16dp</item>
<item name="android:textSize">@dimen/regularTextSize</item>
</style>
<style name="FormDropdown">
<item name="android:layout_width">match_parent</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:drawableEnd">@drawable/ic_arrow_drop_down_dark</item>
<item name="android:padding">16dp</item>
<item name="android:text">@string/every_day</item>
<item name="android:textSize">@dimen/regularTextSize</item>
</style>
<style name="FormInnerBox">
<item name="android:background">@drawable/bg_input_group</item>
<item name="android:clipChildren">false</item>
<item name="android:clipToPadding">false</item>
<item name="android:orientation">vertical</item>
<item name="android:layout_width">match_parent</item>
<item name="android:layout_height">match_parent</item>
</style>
<style name="FormDivider">
<item name="android:layout_width">match_parent</item>
<item name="android:layout_height">1dp</item>
<item name="android:background">?attr/lowContrastTextColor</item>
</style>
</resources> </resources>

Loading…
Cancel
Save