Thanks to visit codestin.com
Credit goes to github.com

Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 11 additions & 3 deletions app/src/androidTest/java/com/futsch1/medtimer/BasicUITest.java
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,11 @@
import org.junit.Test;

import java.text.DateFormat;
import java.time.DayOfWeek;
import java.time.LocalTime;
import java.time.format.TextStyle;
import java.util.Calendar;
import java.util.Locale;
import java.util.concurrent.atomic.AtomicReference;

public class BasicUITest extends BaseTestHelper {
Expand Down Expand Up @@ -228,7 +231,10 @@ public void overviewFilters() {
//@AllowFlaky(attempts = 1)
@SuppressWarnings("java:S2699") // Using internal assert
public void overviewDaySelection() {
clickOn("2");
String secondDay = DayOfWeek.SATURDAY.getDisplayName(TextStyle.SHORT, Locale.getDefault()) + "\n2";
String today = DayOfWeek.FRIDAY.getDisplayName(TextStyle.SHORT, Locale.getDefault()) + "\n1";

clickOn(secondDay);

navigateTo(MEDICINES);

Expand All @@ -238,11 +244,13 @@ public void overviewDaySelection() {
view.set(baristaRule.getActivityTestRule().getActivity().findViewById(R.id.overviewWeek));

TextView currentDay = view.get().findViewWithTag("selected");
internalAssert(currentDay.getText().equals("2"));
internalAssert(currentDay.getText().equals(secondDay));

clickOn(R.id.overviewFragment);

navigateTo(OVERVIEW);
view.set(baristaRule.getActivityTestRule().getActivity().findViewById(R.id.overviewWeek));
currentDay = view.get().findViewWithTag("selected");
internalAssert(currentDay.getText().equals("1"));
internalAssert(currentDay.getText().equals(today));
}
}
44 changes: 17 additions & 27 deletions app/src/main/java/com/futsch1/medtimer/overview/DaySelector.kt
Original file line number Diff line number Diff line change
@@ -1,33 +1,35 @@
package com.futsch1.medtimer.overview

import android.annotation.SuppressLint
import android.content.Context
import android.content.res.ColorStateList
import android.view.View
import android.widget.TextView
import com.futsch1.medtimer.R
import com.futsch1.medtimer.helpers.TimeHelper
import com.google.android.material.button.MaterialButton
import com.google.android.material.color.MaterialColors
import com.google.android.material.shape.MaterialShapeDrawable
import com.google.android.material.shape.ShapeAppearanceModel
import com.kizitonwose.calendar.core.Week
import com.kizitonwose.calendar.core.WeekDay
import com.kizitonwose.calendar.core.WeekDayPosition
import com.kizitonwose.calendar.view.ViewContainer
import com.kizitonwose.calendar.view.WeekCalendarView
import com.kizitonwose.calendar.view.WeekDayBinder
import com.kizitonwose.calendar.view.WeekHeaderFooterBinder
import java.time.LocalDate
import java.time.format.TextStyle
import java.util.Locale

class DaySelector(val context: Context, val calendarView: WeekCalendarView, startDay: LocalDate, val daySelected: (LocalDate) -> Unit) {
class DaySelector(
val context: Context,
val calendarView: WeekCalendarView,
startDay: LocalDate,
val daySelected: (LocalDate) -> Unit
) {
private var currentDay: WeekDay = WeekDay(startDay, WeekDayPosition.RangeDate)
val startDate: LocalDate = LocalDate.now().minusDays(5)
val endDate: LocalDate = LocalDate.now().plusDays(1)

init {
setupDayBinder()
setupWeekHeaderBinder()
calendarView.setup(
startDate,
endDate,
Expand All @@ -51,7 +53,7 @@ class DaySelector(val context: Context, val calendarView: WeekCalendarView, star
lateinit var day: WeekDay

init {
textView.setOnClickListener {
view.setOnClickListener {
notifyDaySelected(day)
calendarView.notifyDayChanged(day)
}
Expand Down Expand Up @@ -94,9 +96,15 @@ class DaySelector(val context: Context, val calendarView: WeekCalendarView, star

override fun create(view: View) = DayViewContainer(view)

@SuppressLint("SetTextI18n")
override fun bind(container: DayViewContainer, data: WeekDay) {
container.textView.text =
String.format(Locale.getDefault(), "%d", data.date.dayOfMonth)
container.textView.text = "${data.date.dayOfWeek.getDisplayName(TextStyle.SHORT, Locale.getDefault())}\n${
String.format(
Locale.getDefault(),
"%d",
data.date.dayOfMonth
)
}"
container.day = data
if (data == currentDay) {
container.textView.setTextColor(selectedTextColor)
Expand All @@ -117,24 +125,6 @@ class DaySelector(val context: Context, val calendarView: WeekCalendarView, star
}
}

private fun setupWeekHeaderBinder() {
class WeekViewContainer(view: View) : ViewContainer(view) {
val textView: TextView = view.findViewById(R.id.calendarHeaderText)
val prevButton: MaterialButton = view.findViewById(R.id.prevCalendar)
val nextButton: MaterialButton = view.findViewById(R.id.nextCalendar)
}

calendarView.weekHeaderBinder = object : WeekHeaderFooterBinder<WeekViewContainer> {
override fun create(view: View): WeekViewContainer = WeekViewContainer(view)
override fun bind(container: WeekViewContainer, data: Week) {
container.textView.text = TimeHelper.localDateToFullDateString(context, currentDay.date)

container.prevButton.visibility = View.GONE
container.nextButton.visibility = View.GONE
}
}
}

fun selectPreviousDay() {
if (currentDay.date.minusDays(1) >= startDate) {
notifyDaySelected(WeekDay(currentDay.date.minusDays(1), WeekDayPosition.RangeDate))
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.futsch1.medtimer.statistics

import android.content.res.ColorStateList
import android.graphics.Paint
import android.graphics.Typeface
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
Expand Down Expand Up @@ -34,16 +34,16 @@ import java.util.Locale

class CalendarFragment : Fragment() {
private var idlingResource = SimpleIdlingResource(CalendarFragment::class.java.name)
private var calendarView: CalendarView? = null
private lateinit var calendarView: CalendarView
private var currentDayEvents: EditText? = null
private var calendarEventsViewModel: CalendarEventsViewModel? = null
private lateinit var calendarEventsViewModel: CalendarEventsViewModel
private var currentDay: CalendarDay = CalendarDay(LocalDate.now(), DayPosition.MonthDate)
private var dayStrings: Map<LocalDate, String>? = null
private var startMonth: YearMonth? = null
private var endMonth: YearMonth? = null

private fun daySelected(data: CalendarDay) {
calendarView?.notifyDayChanged(currentDay)
calendarView.notifyDayChanged(currentDay)
currentDay = data
updateCurrentDay()
}
Expand All @@ -68,14 +68,14 @@ class CalendarFragment : Fragment() {
setupCalendarView(medicineCalenderArgs)

calendarEventsViewModel = ViewModelProvider(this)[CalendarEventsViewModel::class.java]
calendarEventsViewModel!!.getEventForDays(
calendarEventsViewModel.getEventForDays(
medicineCalenderArgs.medicineId,
medicineCalenderArgs.pastDays,
medicineCalenderArgs.futureDays
)
.observe(viewLifecycleOwner) { dayStrings: Map<LocalDate, String> ->
this.dayStrings = dayStrings
calendarView?.notifyCalendarChanged()
calendarView.notifyCalendarChanged()
updateCurrentDay()
idlingResource.setIdle()
}
Expand All @@ -99,13 +99,13 @@ class CalendarFragment : Fragment() {
startMonth = YearMonth.now().minusMonths(medicineCalenderArgs.pastDays / 30)
endMonth = YearMonth.now().plusMonths(medicineCalenderArgs.futureDays / 30)

calendarView?.setup(
calendarView.setup(
startMonth!!,
endMonth!!,
if (LocalePreferences.getFirstDayOfWeek() == LocalePreferences.FirstDayOfWeek.SUNDAY)
DayOfWeek.SUNDAY else DayOfWeek.MONDAY
)
calendarView?.scrollToMonth(YearMonth.now())
calendarView.scrollToMonth(YearMonth.now())
}

private fun setupMonthBinder() {
Expand All @@ -116,15 +116,15 @@ class CalendarFragment : Fragment() {

init {
prevButton.setOnClickListener {
calendarView?.scrollToMonth(calendarView?.findFirstVisibleMonth()?.yearMonth!!.previousMonth)
calendarView.scrollToMonth(calendarView.findFirstVisibleMonth()?.yearMonth!!.previousMonth)
}
nextButton.setOnClickListener {
calendarView?.scrollToMonth(calendarView?.findFirstVisibleMonth()?.yearMonth!!.nextMonth)
calendarView.scrollToMonth(calendarView.findFirstVisibleMonth()?.yearMonth!!.nextMonth)
}
}
}

calendarView?.monthHeaderBinder = object : MonthHeaderFooterBinder<MonthViewContainer> {
calendarView.monthHeaderBinder = object : MonthHeaderFooterBinder<MonthViewContainer> {
override fun create(view: View): MonthViewContainer = MonthViewContainer(view)
override fun bind(container: MonthViewContainer, data: CalendarMonth) {
container.textView.text = data.yearMonth.format(
Expand All @@ -151,14 +151,14 @@ class CalendarFragment : Fragment() {
init {
textView.setOnClickListener {
daySelected(day)
calendarView?.notifyDayChanged(day)
calendarView.notifyDayChanged(day)
}
}
}

calendarView?.dayBinder = object : MonthDayBinder<DayViewContainer> {
calendarView.dayBinder = object : MonthDayBinder<DayViewContainer> {
private fun getColor(colorId: Int) = MaterialColors.getColor(
calendarView!!,
calendarView,
colorId
)

Expand Down Expand Up @@ -187,8 +187,7 @@ class CalendarFragment : Fragment() {
container.textView.text =
String.format(Locale.getDefault(), "%d", data.date.dayOfMonth)
if (dayStrings?.get(data.date)?.isNotEmpty() == true) {
container.textView.paintFlags =
container.textView.paintFlags or Paint.UNDERLINE_TEXT_FLAG
container.textView.setTypeface(container.textView.typeface, Typeface.BOLD)
}
container.day = data
if (data == currentDay) {
Expand Down
6 changes: 3 additions & 3 deletions app/src/main/res/layout-land/fragment_overview.xml
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,8 @@
android:id="@+id/overviewWeek"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginHorizontal="8dp"
android:layout_marginHorizontal="4dp"
app:cv_dayViewResource="@layout/calendar_day_layout"
app:cv_weekHeaderResource="@layout/calendar_header_layout"
app:layout_constraintEnd_toStartOf="@id/separator"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
Expand All @@ -31,10 +30,11 @@
android:id="@+id/filterButtons"
android:layout_width="0dp"
android:layout_height="48dp"
android:layout_marginTop="2dp"
android:layout_marginTop="8dp"
android:layout_marginBottom="4dp"
android:orientation="horizontal"
app:layout_constraintEnd_toEndOf="@id/separator"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/overviewWeek">

Expand Down
4 changes: 2 additions & 2 deletions app/src/main/res/layout/calendar_day_layout.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/calendarDayText"
style="@style/Widget.Material3.MaterialCalendar.Day"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:textSize="16sp" />
11 changes: 7 additions & 4 deletions app/src/main/res/layout/fragment_overview.xml
Original file line number Diff line number Diff line change
Expand Up @@ -11,19 +11,20 @@

<com.kizitonwose.calendar.view.WeekCalendarView
android:id="@+id/overviewWeek"
android:layout_width="match_parent"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginHorizontal="8dp"
android:layout_marginHorizontal="4dp"
app:cv_dayViewResource="@layout/calendar_day_layout"
app:cv_weekHeaderResource="@layout/calendar_header_layout"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />

<com.google.android.material.button.MaterialButtonToggleGroup
android:id="@+id/filterButtons"
android:layout_width="wrap_content"
android:layout_height="48dp"
android:layout_marginTop="2dp"
android:layout_marginTop="4dp"
android:contentDescription="@string/filter"
android:orientation="horizontal"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
Expand All @@ -34,13 +35,15 @@
style="@style/Widget.MedTimer.Button.OutlinedButton.IconOnly"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="@string/taken"
app:icon="@drawable/check2_circle" />

<Button
android:id="@+id/filterSkipped"
style="@style/Widget.MedTimer.Button.OutlinedButton.IconOnly"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="@string/skipped"
app:icon="@drawable/x_circle" />

<Button
Expand Down
Loading