diff --git a/app/src/main/kotlin/com/simplemobiletools/calendar/pro/fragments/WeekFragmentsHolder.kt b/app/src/main/kotlin/com/simplemobiletools/calendar/pro/fragments/WeekFragmentsHolder.kt index b55858e87..29bb6d3a5 100644 --- a/app/src/main/kotlin/com/simplemobiletools/calendar/pro/fragments/WeekFragmentsHolder.kt +++ b/app/src/main/kotlin/com/simplemobiletools/calendar/pro/fragments/WeekFragmentsHolder.kt @@ -5,7 +5,9 @@ import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import android.widget.DatePicker import android.widget.TextView +import androidx.appcompat.app.AlertDialog import androidx.viewpager.widget.ViewPager import com.simplemobiletools.calendar.pro.R import com.simplemobiletools.calendar.pro.activities.MainActivity @@ -16,6 +18,8 @@ import com.simplemobiletools.calendar.pro.helpers.Formatter import com.simplemobiletools.calendar.pro.helpers.WEEK_START_DATE_TIME import com.simplemobiletools.calendar.pro.interfaces.WeekFragmentListener import com.simplemobiletools.calendar.pro.views.MyScrollView +import com.simplemobiletools.commons.extensions.getDialogTheme +import com.simplemobiletools.commons.extensions.setupDialogStuff import com.simplemobiletools.commons.extensions.updateActionBarSubtitle import com.simplemobiletools.commons.extensions.updateActionBarTitle import com.simplemobiletools.commons.helpers.WEEK_SECONDS @@ -131,7 +135,34 @@ class WeekFragmentsHolder : MyFragmentHolder(), WeekFragmentListener { } override fun showGoToDateDialog() { + activity!!.setTheme(context!!.getDialogTheme()) + val view = layoutInflater.inflate(R.layout.date_picker, null) + val datePicker = view.findViewById(R.id.date_picker) + val dateTime = Formatter.getDateTimeFromTS(currentWeekTS) + datePicker.init(dateTime.year, dateTime.monthOfYear - 1, dateTime.dayOfMonth, null) + + AlertDialog.Builder(context!!) + .setNegativeButton(R.string.cancel, null) + .setPositiveButton(R.string.ok) { dialog, which -> dateSelected(dateTime, datePicker) } + .create().apply { + activity?.setupDialogStuff(view, this) + } + } + + private fun dateSelected(dateTime: DateTime, datePicker: DatePicker) { + val month = datePicker.month + 1 + val year = datePicker.year + val day = datePicker.dayOfMonth + val newDateTime = dateTime.withDate(year, month, day) + + var selectedWeek = newDateTime.withDayOfWeek(1).withTimeAtStartOfDay().minusDays(if (context!!.config.isSundayFirst) 1 else 0) + if (newDateTime.minusDays(7).seconds() > selectedWeek.seconds()) { + selectedWeek = selectedWeek.plusDays(7) + } + + currentWeekTS = selectedWeek.seconds() + setupFragment() } override fun refreshEvents() {