Merged PR 244831: Accessible Date Picker
This PR adds a Date Picker for accessibility that includes month, day and year pickers as well as refactors parts of the DateTimePicker control. - Added new functionality to `DateTimePicker` to enable picking of dates (month, day, year) in TalkBack mode. - Refactored function names and enums for more clarity and broader usage. - Added functionality to automatically switch to accessibility date picker in `DateTimePickerDialog` depending on TalkBack mode - Removed unused DisplayModes and unused DisplayMode properties - Updated dialog titles to reflect different representations depending on TalkBack mode - Modified DateTime Picker demo to reflect different accessibility modes Accessibility interaction for the whole DateTimePicker control will be implemented in another work item. **Accessible Date Picker** | **Demo** -|- ![Screenshot_1552932429.png](https://onedrive.visualstudio.com/4dcbf0bc-c3cd-49c8-a7c3-ec1924691d9b/_apis/git/repositories/32fa6338-45ea-42a0-aca0-484938e1962a/pullRequests/244831/attachments/Screenshot_1552932429.png) | ![Screenshot_1552935346.png](https://onedrive.visualstudio.com/4dcbf0bc-c3cd-49c8-a7c3-ec1924691d9b/_apis/git/repositories/32fa6338-45ea-42a0-aca0-484938e1962a/pullRequests/244831/attachments/Screenshot_1552935346.png) Related work items: #667471, #702105
This commit is contained in:
Родитель
ffbb198eec
Коммит
0b34e11c72
|
@ -6,12 +6,15 @@
|
|||
package com.microsoft.officeuifabricdemo.demos
|
||||
|
||||
import android.os.Bundle
|
||||
import android.view.View
|
||||
import android.widget.Button
|
||||
import com.microsoft.officeuifabric.datetimepicker.DatePickMode
|
||||
import com.microsoft.officeuifabric.datetimepicker.DateRangeMode
|
||||
import com.microsoft.officeuifabric.datetimepicker.DateTimePickerDialog
|
||||
import com.microsoft.officeuifabric.datetimepicker.DateTimePickerDialog.Mode
|
||||
import com.microsoft.officeuifabric.datetimepicker.OnDateTimePickedListener
|
||||
import com.microsoft.officeuifabric.util.DateStringUtils
|
||||
import com.microsoft.officeuifabric.util.accessibilityManager
|
||||
import com.microsoft.officeuifabric.util.isAccessibilityEnabled
|
||||
import com.microsoft.officeuifabricdemo.DemoActivity
|
||||
import com.microsoft.officeuifabricdemo.R
|
||||
import kotlinx.android.synthetic.main.activity_date_time_picker_dialog.*
|
||||
|
@ -37,13 +40,13 @@ class DateTimePickerDialogActivity : DemoActivity(), OnDateTimePickedListener {
|
|||
private const val DIALOG_TAG = "dialogTag"
|
||||
}
|
||||
|
||||
enum class DatePickerType(val buttonId: Int, val tag: String, val mode: Mode, val datePickMode: DatePickMode) {
|
||||
DATE(R.id.date_picker_button, TAG_DATE_PICKER, Mode.DATE, DatePickMode.SINGLE),
|
||||
DATE_TIME(R.id.date_time_picker_date_selected_button, TAG_DATE_TIME_PICKER, Mode.DATE_TIME, DatePickMode.SINGLE),
|
||||
TIME_DATE(R.id.date_time_picker_time_selected_button, TAG_DATE_TIME_PICKER, Mode.TIME_DATE, DatePickMode.SINGLE),
|
||||
START_DATE(R.id.date_range_start_button, TAG_START_DATE_PICKER, Mode.DATE, DatePickMode.RANGE_START),
|
||||
END_DATE(R.id.date_range_end_button, TAG_END_DATE_PICKER, Mode.DATE, DatePickMode.RANGE_END),
|
||||
START_DATE_TIME(R.id.date_time_range_start_button, TAG_DATE_TIME_RANGE_PICKER, Mode.DATE_TIME, DatePickMode.RANGE_START)
|
||||
enum class DatePickerType(val buttonId: Int, val tag: String, val mode: Mode, val dateRangeMode: DateRangeMode) {
|
||||
DATE(R.id.date_picker_button, TAG_DATE_PICKER, Mode.DATE, DateRangeMode.NONE),
|
||||
DATE_TIME(R.id.date_time_picker_date_selected_button, TAG_DATE_TIME_PICKER, Mode.DATE_TIME, DateRangeMode.NONE),
|
||||
TIME_DATE(R.id.date_time_picker_time_selected_button, TAG_DATE_TIME_PICKER, Mode.TIME_DATE, DateRangeMode.NONE),
|
||||
START_DATE(R.id.date_range_start_button, TAG_START_DATE_PICKER, Mode.DATE, DateRangeMode.START),
|
||||
END_DATE(R.id.date_range_end_button, TAG_END_DATE_PICKER, Mode.DATE, DateRangeMode.END),
|
||||
START_DATE_TIME(R.id.date_time_range_start_button, TAG_DATE_TIME_RANGE_PICKER, Mode.DATE_TIME, DateRangeMode.START)
|
||||
}
|
||||
|
||||
override val contentLayoutId: Int
|
||||
|
@ -55,11 +58,11 @@ class DateTimePickerDialogActivity : DemoActivity(), OnDateTimePickedListener {
|
|||
private var startDate: ZonedDateTime? = null
|
||||
private var startDateTime: ZonedDateTime? = null
|
||||
|
||||
private var datePickMode: DatePickMode = DatePickMode.SINGLE
|
||||
private var dateRangeMode: DateRangeMode = DateRangeMode.NONE
|
||||
private var singleModeDialogTag: String? = null
|
||||
private var dialogTag: String? = null
|
||||
set(value) {
|
||||
if (datePickMode == DatePickMode.SINGLE) {
|
||||
if (dateRangeMode == DateRangeMode.NONE) {
|
||||
singleModeDialogTag = value
|
||||
}
|
||||
field = value
|
||||
|
@ -84,17 +87,24 @@ class DateTimePickerDialogActivity : DemoActivity(), OnDateTimePickedListener {
|
|||
|
||||
DatePickerType.values().forEach { picker ->
|
||||
findViewById<Button>(picker.buttonId).setOnClickListener {
|
||||
datePickMode = picker.datePickMode
|
||||
dateRangeMode = picker.dateRangeMode
|
||||
dialogTag = picker.tag
|
||||
val dialog = DateTimePickerDialog.newInstance(
|
||||
this,
|
||||
getDateTime(),
|
||||
getDuration(),
|
||||
picker.mode,
|
||||
picker.datePickMode
|
||||
picker.dateRangeMode
|
||||
)
|
||||
dialog.show(supportFragmentManager, picker.tag)
|
||||
}
|
||||
}
|
||||
|
||||
updateButtonsForAccessibility(isAccessibilityEnabled)
|
||||
|
||||
accessibilityManager.addAccessibilityStateChangeListener {
|
||||
updateButtonsForAccessibility(it)
|
||||
}
|
||||
}
|
||||
|
||||
override fun onSaveInstanceState(outState: Bundle) {
|
||||
|
@ -127,6 +137,16 @@ class DateTimePickerDialogActivity : DemoActivity(), OnDateTimePickedListener {
|
|||
}
|
||||
}
|
||||
|
||||
private fun updateButtonsForAccessibility(accessibilityEnabled: Boolean) {
|
||||
if (accessibilityEnabled) {
|
||||
date_time_picker_time_selected_button.visibility = View.GONE
|
||||
date_time_picker_date_selected_button.setText(R.string.date_time_picker_dialog_date_time_button)
|
||||
} else {
|
||||
date_time_picker_time_selected_button.visibility = View.VISIBLE
|
||||
date_time_picker_date_selected_button.setText(R.string.date_time_picker_dialog_calendar_date_time_button)
|
||||
}
|
||||
}
|
||||
|
||||
private fun updateDateTimeText() {
|
||||
val tag = singleModeDialogTag ?: return
|
||||
val dateTime = dateTime ?: return
|
||||
|
|
|
@ -18,6 +18,7 @@
|
|||
<string name="date_time_picker_dialog_date_button">Show date picker</string>
|
||||
<string name="date_time_picker_dialog_calendar_date_time_button">Show date time picker with date tab selected</string>
|
||||
<string name="date_time_picker_dialog_date_time_calendar_button">Show date time picker with time tab selected</string>
|
||||
<string name="date_time_picker_dialog_date_time_button">Show date time picker</string>
|
||||
<string name="date_time_picker_dialog_date_start_button">Select start date</string>
|
||||
<string name="date_time_picker_dialog_date_time_range_button">Select date time range</string>
|
||||
<string name="date_time_picker_dialog_date_end_button">Select end date</string>
|
||||
|
|
|
@ -32,7 +32,7 @@ internal class DatePickerFragment : Fragment(), OnDateSelectedListener {
|
|||
|
||||
private lateinit var date: ZonedDateTime
|
||||
private lateinit var duration: Duration
|
||||
private lateinit var datePickMode: DatePickMode
|
||||
private lateinit var dateRangeMode: DateRangeMode
|
||||
|
||||
fun setTimeSlot(timeSlot: TimeSlot) {
|
||||
date = timeSlot.start
|
||||
|
@ -54,7 +54,7 @@ internal class DatePickerFragment : Fragment(), OnDateSelectedListener {
|
|||
val bundle = savedInstanceState ?: arguments ?: return
|
||||
date = bundle.getSerializable(DateTimePickerExtras.DATE_TIME) as ZonedDateTime
|
||||
duration = bundle.getSerializable(DateTimePickerExtras.DURATION) as Duration
|
||||
datePickMode = bundle.getSerializable(DateTimePickerExtras.DATE_PICK_MODE) as DatePickMode
|
||||
dateRangeMode = bundle.getSerializable(DateTimePickerExtras.DATE_RANGE_MODE) as DateRangeMode
|
||||
}
|
||||
|
||||
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
|
||||
|
@ -72,19 +72,19 @@ internal class DatePickerFragment : Fragment(), OnDateSelectedListener {
|
|||
super.onSaveInstanceState(bundle)
|
||||
bundle.putSerializable(DateTimePickerExtras.DATE_TIME, date)
|
||||
bundle.putSerializable(DateTimePickerExtras.DURATION, duration)
|
||||
bundle.putSerializable(DateTimePickerExtras.DATE_PICK_MODE, datePickMode)
|
||||
bundle.putSerializable(DateTimePickerExtras.DATE_RANGE_MODE, dateRangeMode)
|
||||
}
|
||||
|
||||
override fun onDateSelected(date: ZonedDateTime) {
|
||||
when (datePickMode) {
|
||||
DatePickMode.SINGLE -> {
|
||||
when (dateRangeMode) {
|
||||
DateRangeMode.NONE -> {
|
||||
this.date = date
|
||||
duration = Duration.ZERO
|
||||
}
|
||||
DatePickMode.RANGE_START -> {
|
||||
DateRangeMode.START -> {
|
||||
this.date = date
|
||||
}
|
||||
DatePickMode.RANGE_END -> {
|
||||
DateRangeMode.END -> {
|
||||
if (date.isBefore(this.date))
|
||||
this.date = date.minus(duration)
|
||||
else
|
||||
|
@ -101,6 +101,6 @@ internal class DatePickerFragment : Fragment(), OnDateSelectedListener {
|
|||
}
|
||||
|
||||
private fun updateCalendarSelectedDateRange() {
|
||||
calendar_view.setSelectedDateRange(date.toLocalDate(), duration, datePickMode == DatePickMode.RANGE_END)
|
||||
calendar_view.setSelectedDateRange(date.toLocalDate(), duration, dateRangeMode == DateRangeMode.END)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -5,6 +5,6 @@
|
|||
|
||||
package com.microsoft.officeuifabric.datetimepicker
|
||||
|
||||
enum class DatePickMode {
|
||||
SINGLE, RANGE_START, RANGE_END
|
||||
enum class DateRangeMode {
|
||||
NONE, START, END
|
||||
}
|
|
@ -22,35 +22,46 @@ import kotlinx.android.synthetic.main.view_date_time_picker.view.*
|
|||
|
||||
import org.threeten.bp.Duration
|
||||
import org.threeten.bp.LocalDate
|
||||
import org.threeten.bp.YearMonth
|
||||
import org.threeten.bp.ZonedDateTime
|
||||
import org.threeten.bp.temporal.ChronoUnit
|
||||
import java.text.DateFormatSymbols
|
||||
|
||||
// TODO support date only mode for accessibility
|
||||
/**
|
||||
* [DateTimePicker] houses [NumberPicker]s that allow users to pick dates, times and periods(12 hour clocks)
|
||||
* [DateTimePicker] houses [NumberPicker]s that allow users to pick dates, times and periods (12 hour clocks).
|
||||
* When [PickerMode.DATE] is the pickerMode months, days and years are shown.
|
||||
*/
|
||||
internal class DateTimePicker : LinearLayout, NumberPicker.OnValueChangeListener {
|
||||
companion object {
|
||||
private const val MONTH_LIMIT = 1200L
|
||||
private const val MIN_DAYS = 1
|
||||
private const val MAX_HOURS_24_CLOCK = 23
|
||||
private const val MAX_HOURS_12_CLOCK = 12
|
||||
private const val MIN_HOURS_24_CLOCK = 0
|
||||
private const val MIN_HOURS_12_CLOCK = 1
|
||||
private const val MAX_MINUTES = 59
|
||||
private const val MIN_MINUTES = 0
|
||||
private const val MIN_MONTHS = 1
|
||||
private const val MIN_PERIOD = 0
|
||||
private const val MAX_PERIOD = 1
|
||||
}
|
||||
|
||||
enum class Tab {
|
||||
START_TIME, END_TIME, NO_DURATION
|
||||
START, END, NONE
|
||||
}
|
||||
|
||||
enum class PickerMode {
|
||||
DATE, DATE_TIME
|
||||
}
|
||||
|
||||
val selectedTab: Tab
|
||||
get() = Tab.values()[start_end_tabs.selectedTabPosition]
|
||||
|
||||
var timeSlot: TimeSlot? = null
|
||||
get() {
|
||||
val updatedTime = computeTime()
|
||||
val updatedTime = pickerValue
|
||||
|
||||
if (selectedTab == Tab.START_TIME)
|
||||
if (selectedTab == Tab.START)
|
||||
dateTime = updatedTime
|
||||
else
|
||||
duration = if (updatedTime.isBefore(dateTime)) Duration.ZERO else Duration.between(dateTime, updatedTime)
|
||||
|
@ -60,18 +71,33 @@ internal class DateTimePicker : LinearLayout, NumberPicker.OnValueChangeListener
|
|||
set(value) {
|
||||
field = value
|
||||
value?.let {
|
||||
dateTime = value.start
|
||||
dateTime = value.start.truncatedTo(ChronoUnit.MINUTES)
|
||||
duration = value.duration
|
||||
displayTime(selectedTab == Tab.START_TIME, false)
|
||||
setPickerValues(selectedTab == Tab.END, false)
|
||||
}
|
||||
}
|
||||
|
||||
val selectedTab: Tab
|
||||
get() = Tab.values()[start_end_time_tab.selectedTabPosition]
|
||||
/**
|
||||
* Determines whether date and time are shown or just date.
|
||||
*/
|
||||
var pickerMode: PickerMode = PickerMode.DATE_TIME
|
||||
set(value) {
|
||||
field = value
|
||||
when (pickerMode) {
|
||||
PickerMode.DATE -> initDateNumberPickers()
|
||||
PickerMode.DATE_TIME -> initDateTimeNumberPickers()
|
||||
}
|
||||
}
|
||||
|
||||
var onDateTimeSelectedListener: OnDateTimeSelectedListener? = null
|
||||
|
||||
private var dateTime: ZonedDateTime = ZonedDateTime.now()
|
||||
private val pickerValue: ZonedDateTime
|
||||
get() = when (pickerMode) {
|
||||
PickerMode.DATE -> datePickerValue
|
||||
PickerMode.DATE_TIME -> dateTimePickerValue
|
||||
}
|
||||
|
||||
private var dateTime: ZonedDateTime = ZonedDateTime.now().truncatedTo(ChronoUnit.MINUTES)
|
||||
private var duration: Duration = Duration.ZERO
|
||||
private val is24Hour: Boolean
|
||||
private var daysBack: Int = 0
|
||||
|
@ -80,11 +106,7 @@ internal class DateTimePicker : LinearLayout, NumberPicker.OnValueChangeListener
|
|||
private val onTabSelectedListener = object : TabLayout.OnTabSelectedListener {
|
||||
override fun onTabSelected(tab: TabLayout.Tab) {
|
||||
// Adjust start time and duration when switching tabs
|
||||
if (tab.tag === Tab.START_TIME) {
|
||||
displayTime(true, true)
|
||||
} else {
|
||||
displayTime(false, true)
|
||||
}
|
||||
setPickerValues(tab.tag === Tab.END, true)
|
||||
}
|
||||
|
||||
override fun onTabUnselected(tab: TabLayout.Tab) { }
|
||||
|
@ -99,92 +121,89 @@ internal class DateTimePicker : LinearLayout, NumberPicker.OnValueChangeListener
|
|||
}
|
||||
|
||||
/**
|
||||
* Selects either start or end tab, or in the case of NO_DURATION hides the tabs
|
||||
* Selects either START or END tab, or in the case of NONE hides the tabs.
|
||||
*/
|
||||
fun selectTab(tab: Tab) {
|
||||
if (tab == Tab.NO_DURATION)
|
||||
start_end_time_tab.visibility = View.GONE
|
||||
else
|
||||
with(start_end_time_tab) {
|
||||
if (tab == Tab.NONE) {
|
||||
start_end_tabs.visibility = View.GONE
|
||||
} else {
|
||||
with(start_end_tabs) {
|
||||
removeOnTabSelectedListener(onTabSelectedListener)
|
||||
getTabAt(tab.ordinal)?.select()
|
||||
addOnTabSelectedListener(onTabSelectedListener)
|
||||
visibility = View.VISIBLE
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets time depending on start/end mode as well as determines whether animation is to be applied
|
||||
* to the [NumberPicker]s
|
||||
* Sets the pickers values
|
||||
* @param showEndTime is a flag that sets the [NumberPicker]s' end date / time, start date / time or,
|
||||
* in the case of no duration, a selected date / time.
|
||||
* @param animate is a flag that sets whether the [NumberPicker]s animate to their set values.
|
||||
*/
|
||||
fun displayTime(showStartTime: Boolean, animate: Boolean) {
|
||||
val time = if (showStartTime) dateTime else dateTime.plus(duration)
|
||||
val today = LocalDate.now()
|
||||
val daysBetween = ChronoUnit.DAYS.between(today, time).toInt()
|
||||
val dateValue = daysBack + daysBetween
|
||||
val hourValue = if (is24Hour)
|
||||
time.hour
|
||||
else if (time.hour == MAX_HOURS_12_CLOCK)
|
||||
time.hour
|
||||
else
|
||||
time.hour % MAX_HOURS_12_CLOCK
|
||||
val minuteValue = time.minute
|
||||
val ampmValue = if (time.hour < 12) 0 else 1
|
||||
|
||||
if (animate) {
|
||||
date_picker.quicklyAnimateValueTo(dateValue)
|
||||
hour_picker.animateValueTo(hourValue)
|
||||
minute_picker.quicklyAnimateValueTo(minuteValue)
|
||||
if (!is24Hour)
|
||||
period_picker.animateValueTo(ampmValue)
|
||||
} else {
|
||||
date_picker.value = dateValue
|
||||
hour_picker.value = hourValue
|
||||
minute_picker.value = minuteValue
|
||||
if (!is24Hour)
|
||||
period_picker.value = ampmValue
|
||||
fun setPickerValues(showEndTime: Boolean, animate: Boolean) {
|
||||
when (pickerMode) {
|
||||
PickerMode.DATE -> setDatePickerValues(showEndTime, animate)
|
||||
PickerMode.DATE_TIME -> setDateTimePickerValues(showEndTime, animate)
|
||||
}
|
||||
}
|
||||
|
||||
override fun onFinishInflate() {
|
||||
super.onFinishInflate()
|
||||
|
||||
with(start_end_time_tab) {
|
||||
addTab(start_end_time_tab.newTab().setText(R.string.date_time_picker_start_time).setTag(Tab.START_TIME))
|
||||
addTab(start_end_time_tab.newTab().setText(R.string.date_time_picker_end_time).setTag(Tab.END_TIME))
|
||||
with(start_end_tabs) {
|
||||
addTab(newTab())
|
||||
addTab(newTab())
|
||||
addOnTabSelectedListener(onTabSelectedListener)
|
||||
tabGravity = TabLayout.GRAVITY_FILL
|
||||
}
|
||||
|
||||
initDatePicker()
|
||||
initHourPicker()
|
||||
initMinutePicker()
|
||||
initPeriodPicker()
|
||||
getTab(Tab.START)?.tag = Tab.START
|
||||
getTab(Tab.END)?.tag = Tab.END
|
||||
}
|
||||
|
||||
override fun onValueChange(picker: NumberPicker, oldVal: Int, newVal: Int) {
|
||||
if (pickerMode == PickerMode.DATE)
|
||||
updateDayPicker()
|
||||
|
||||
timeSlot?.let { onDateTimeSelectedListener?.onDateTimeSelected(it.start, it.duration) }
|
||||
}
|
||||
|
||||
private fun computeTime(): ZonedDateTime {
|
||||
val now = ZonedDateTime.now().truncatedTo(ChronoUnit.MINUTES)
|
||||
private fun getTab(tab: Tab): TabLayout.Tab? = start_end_tabs.getTabAt(tab.ordinal)
|
||||
|
||||
// Date Time NumberPickers
|
||||
|
||||
private val dateTimePickerValue: ZonedDateTime
|
||||
get() {
|
||||
val now = ZonedDateTime.now().truncatedTo(ChronoUnit.MINUTES)
|
||||
val dayDiff = date_picker.value - daysBack
|
||||
var hour = hour_picker.value
|
||||
val minute = minute_picker.value
|
||||
|
||||
if (!is24Hour) {
|
||||
val isMorning = period_picker.value == 0
|
||||
if (hour == MAX_HOURS_12_CLOCK) {
|
||||
hour = if (isMorning) 0 else MAX_HOURS_12_CLOCK
|
||||
} else {
|
||||
hour += if (isMorning) 0 else MAX_HOURS_12_CLOCK
|
||||
}
|
||||
val periodStartHour = if (isMorning) 0 else MAX_HOURS_12_CLOCK
|
||||
if (hour == MAX_HOURS_12_CLOCK)
|
||||
hour = periodStartHour
|
||||
else
|
||||
hour += periodStartHour
|
||||
}
|
||||
|
||||
return now.plusDays(dayDiff.toLong()).withHour(hour).withMinute(minute)
|
||||
}
|
||||
|
||||
private fun initDateTimeNumberPickers() {
|
||||
getTab(Tab.START)?.setText(R.string.date_time_picker_start_time)
|
||||
getTab(Tab.END)?.setText(R.string.date_time_picker_end_time)
|
||||
|
||||
date_time_pickers.visibility = View.VISIBLE
|
||||
|
||||
initDatePicker()
|
||||
initHourPicker()
|
||||
initMinutePicker()
|
||||
initPeriodPicker()
|
||||
}
|
||||
|
||||
private fun initDatePicker() {
|
||||
val firstDayOfWeek = PreferencesManager.getWeekStart(context)
|
||||
val today = LocalDate.now()
|
||||
|
@ -236,6 +255,96 @@ internal class DateTimePicker : LinearLayout, NumberPicker.OnValueChangeListener
|
|||
}
|
||||
}
|
||||
|
||||
private fun setDateTimePickerValues(showEndTime: Boolean, animate: Boolean) {
|
||||
val time = if (showEndTime) dateTime.plus(duration) else dateTime
|
||||
val today = LocalDate.now()
|
||||
val daysBetween = ChronoUnit.DAYS.between(today, time).toInt()
|
||||
val dateValue = daysBack + daysBetween
|
||||
val hourValue = when {
|
||||
is24Hour || time.hour == MAX_HOURS_12_CLOCK -> time.hour
|
||||
else -> time.hour % MAX_HOURS_12_CLOCK
|
||||
}
|
||||
val minuteValue = time.minute
|
||||
val ampmValue = if (time.hour < 12) 0 else 1
|
||||
|
||||
if (animate) {
|
||||
date_picker.quicklyAnimateValueTo(dateValue)
|
||||
hour_picker.animateValueTo(hourValue)
|
||||
minute_picker.quicklyAnimateValueTo(minuteValue)
|
||||
if (!is24Hour)
|
||||
period_picker.animateValueTo(ampmValue)
|
||||
} else {
|
||||
date_picker.value = dateValue
|
||||
hour_picker.value = hourValue
|
||||
minute_picker.value = minuteValue
|
||||
if (!is24Hour)
|
||||
period_picker.value = ampmValue
|
||||
}
|
||||
}
|
||||
|
||||
// Date NumberPickers
|
||||
|
||||
private val datePickerValue: ZonedDateTime
|
||||
get() = ZonedDateTime.now().withYear(year_picker.value).withMonth(month_picker.value).withDayOfMonth(day_picker.value)
|
||||
|
||||
private fun initDateNumberPickers() {
|
||||
getTab(Tab.START)?.setText(R.string.date_time_picker_start_date)
|
||||
getTab(Tab.END)?.setText(R.string.date_time_picker_end_date)
|
||||
|
||||
date_pickers.visibility = View.VISIBLE
|
||||
|
||||
initMonthPicker()
|
||||
initDayPicker()
|
||||
initYearPicker()
|
||||
}
|
||||
|
||||
private fun initMonthPicker() {
|
||||
val months = DateFormatSymbols().months
|
||||
with(month_picker) {
|
||||
minValue = MIN_MONTHS
|
||||
maxValue = months.size
|
||||
displayedValues = months
|
||||
setOnValueChangedListener(this@DateTimePicker)
|
||||
}
|
||||
}
|
||||
|
||||
private fun initDayPicker() {
|
||||
updateDayPicker()
|
||||
day_picker.setOnValueChangedListener(this@DateTimePicker)
|
||||
}
|
||||
|
||||
private fun initYearPicker() {
|
||||
val today = LocalDate.now()
|
||||
with(year_picker) {
|
||||
minValue = today.minusMonths(MONTH_LIMIT).year
|
||||
maxValue = today.plusMonths(MONTH_LIMIT).year
|
||||
wrapSelectorWheel = false
|
||||
setOnValueChangedListener(this@DateTimePicker)
|
||||
}
|
||||
}
|
||||
|
||||
private fun setDatePickerValues(showEndTime: Boolean, animate: Boolean) {
|
||||
val time = if (showEndTime) dateTime.plus(duration) else dateTime
|
||||
|
||||
if (animate) {
|
||||
month_picker.quicklyAnimateValueTo(time.monthValue)
|
||||
day_picker.quicklyAnimateValueTo(time.dayOfMonth)
|
||||
year_picker.animateValueTo(time.year)
|
||||
} else {
|
||||
month_picker.value = time.monthValue
|
||||
day_picker.value = time.dayOfMonth
|
||||
year_picker.value = time.year
|
||||
}
|
||||
}
|
||||
|
||||
private fun updateDayPicker() {
|
||||
val yearMonth = YearMonth.of(year_picker.value, month_picker.value)
|
||||
with(day_picker) {
|
||||
minValue = MIN_DAYS
|
||||
maxValue = yearMonth.lengthOfMonth()
|
||||
}
|
||||
}
|
||||
|
||||
private class DateFormatter(
|
||||
private val context: Context,
|
||||
private val today: LocalDate,
|
||||
|
@ -253,15 +362,14 @@ internal class DateTimePicker : LinearLayout, NumberPicker.OnValueChangeListener
|
|||
else -> {
|
||||
val today = LocalDate.now()
|
||||
val date = this.today.plusDays((value - todayIndex).toLong())
|
||||
if (DateTimeUtils.isSameYear(today, date)) {
|
||||
if (DateTimeUtils.isSameYear(today, date))
|
||||
DateStringUtils.formatDateAbbrevAll(context, date)
|
||||
} else {
|
||||
else
|
||||
DateStringUtils.formatWeekdayDateYearAbbrev(context, date)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
internal interface OnDateTimeSelectedListener {
|
||||
/**
|
||||
|
|
|
@ -7,6 +7,7 @@ package com.microsoft.officeuifabric.datetimepicker
|
|||
|
||||
import android.animation.Animator
|
||||
import android.animation.AnimatorListenerAdapter
|
||||
import android.content.Context
|
||||
import android.os.Bundle
|
||||
import android.support.v4.app.Fragment
|
||||
import android.support.v4.app.FragmentManager
|
||||
|
@ -20,14 +21,15 @@ import android.view.ViewGroup
|
|||
|
||||
import com.microsoft.officeuifabric.R
|
||||
import com.microsoft.officeuifabric.calendar.OnDateSelectedListener
|
||||
import com.microsoft.officeuifabric.datetimepicker.DateTimePicker.PickerMode
|
||||
import com.microsoft.officeuifabric.util.*
|
||||
import com.microsoft.officeuifabric.view.ResizableDialog
|
||||
import kotlinx.android.synthetic.main.dialog_date_time_picker.*
|
||||
import org.threeten.bp.Duration
|
||||
import org.threeten.bp.ZonedDateTime
|
||||
|
||||
// TODO implement accessible Modes
|
||||
// TODO consider merging Mode and DatePickMode since not all combinations will work
|
||||
// TODO consider merging PickerMode and DateRangeMode since not all combinations will work
|
||||
// TODO KitKat design alignment
|
||||
/**
|
||||
* [DateTimePickerDialog] provides a dialog view housing both a [DatePickerFragment] and [DateTimePickerFragment] in a [WrapContentViewPager]
|
||||
* as well as includes toolbar UI and menu buttons to dismiss the dialog and accept a date/ time
|
||||
|
@ -38,57 +40,50 @@ class DateTimePickerDialog : ResizableDialog(), Toolbar.OnMenuItemClickListener,
|
|||
|
||||
@JvmStatic
|
||||
fun newInstance(
|
||||
context: Context,
|
||||
dateTime: ZonedDateTime,
|
||||
duration: Duration,
|
||||
mode: Mode,
|
||||
datePickMode: DatePickMode
|
||||
dateRangeMode: DateRangeMode
|
||||
): DateTimePickerDialog {
|
||||
val args = Bundle()
|
||||
args.putSerializable(DateTimePickerExtras.DATE_TIME, dateTime)
|
||||
args.putSerializable(DateTimePickerExtras.DURATION, duration)
|
||||
args.putSerializable(DateTimePickerExtras.DISPLAY_MODE, getDisplayMode(dateTime, duration, mode))
|
||||
args.putSerializable(DateTimePickerExtras.DATE_PICK_MODE, datePickMode)
|
||||
args.putSerializable(DateTimePickerExtras.DISPLAY_MODE, getDisplayMode(context, dateTime, duration, mode))
|
||||
args.putSerializable(DateTimePickerExtras.DATE_RANGE_MODE, dateRangeMode)
|
||||
|
||||
val dialog = DateTimePickerDialog()
|
||||
dialog.arguments = args
|
||||
return dialog
|
||||
}
|
||||
|
||||
private fun getDisplayMode(dateTime: ZonedDateTime, duration: Duration, mode: Mode): DisplayMode {
|
||||
if (mode != Mode.DATE) {
|
||||
private fun getDisplayMode(context: Context, dateTime: ZonedDateTime, duration: Duration, mode: Mode): DisplayMode {
|
||||
if (context.isAccessibilityEnabled) {
|
||||
return mode.accessibleMode
|
||||
} else {
|
||||
val endTime = dateTime.plus(duration)
|
||||
val isSameDayEvent = DateTimeUtils.isSameDay(dateTime, endTime)
|
||||
return if (isSameDayEvent) mode.defaultMode else DisplayMode.TIME
|
||||
}
|
||||
|
||||
if (isSameDayEvent || mode == Mode.DATE)
|
||||
return mode.defaultMode
|
||||
else
|
||||
return DisplayMode.TIME
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
enum class Mode(internal val defaultMode: DisplayMode, internal val accessibleMode: DisplayMode) {
|
||||
DATE(DisplayMode.DATE, DisplayMode.ACCESSIBLE_DATE),
|
||||
DATE_TIME(DisplayMode.DATE_TIME, DisplayMode.ACCESSIBLE_DATE_TIME),
|
||||
TIME_DATE(DisplayMode.TIME_DATE, DisplayMode.ACCESSIBLE_DATE_TIME),
|
||||
DATE_TIME_RANGE(DisplayMode.DATE_TIME_RANGE, DisplayMode.ACCESSIBLE_DATE_TIME_RANGE)
|
||||
TIME_DATE(DisplayMode.TIME_DATE, DisplayMode.ACCESSIBLE_DATE_TIME)
|
||||
}
|
||||
|
||||
private enum class DisplayMode(
|
||||
val showDatePicker: Boolean,
|
||||
val showDateTimePicker: Boolean,
|
||||
val showTime: Boolean,
|
||||
val showDateTimeRange: Boolean,
|
||||
val dateTabIndex: Int,
|
||||
val dateTimeTabIndex: Int,
|
||||
val initialIndex: Int
|
||||
) {
|
||||
ACCESSIBLE_DATE(false, true, false, false, -1, 0, 0),
|
||||
ACCESSIBLE_DATE_TIME(false, true, true, false, -1, 0, 0),
|
||||
ACCESSIBLE_DATE_TIME_RANGE(false, true, true, true, -1, 0, 0),
|
||||
DATE(true, false, false, false, 0, -1, 0),
|
||||
DATE_TIME(true, true, true, false, 0, 1, 0),
|
||||
DATE_TIME_RANGE(true, true, true, true, 0, 1, 1),
|
||||
TIME(false, false, true, true, -1, 0, 0),
|
||||
TIME_DATE(true, true, true, false, 0, 1, 1),
|
||||
private enum class DisplayMode(val dateTabIndex: Int, val dateTimeTabIndex: Int) {
|
||||
ACCESSIBLE_DATE(0, -1),
|
||||
ACCESSIBLE_DATE_TIME(-1, 0),
|
||||
DATE(0, -1),
|
||||
DATE_TIME(0, 1),
|
||||
TIME(-1, 0),
|
||||
TIME_DATE(0, 1)
|
||||
}
|
||||
|
||||
var onDateTimePickedListener: OnDateTimePickedListener? = null
|
||||
|
@ -97,28 +92,28 @@ class DateTimePickerDialog : ResizableDialog(), Toolbar.OnMenuItemClickListener,
|
|||
private lateinit var dateTime: ZonedDateTime
|
||||
private lateinit var duration: Duration
|
||||
private lateinit var displayMode: DisplayMode
|
||||
private lateinit var datePickMode: DatePickMode
|
||||
private lateinit var dateRangeMode: DateRangeMode
|
||||
private lateinit var pagerAdapter: DateTimePagerAdapter
|
||||
private var selectedDateTimeTab: DateTimePicker.Tab = DateTimePicker.Tab.START_TIME
|
||||
get() = pagerAdapter.dateTimePicker?.selectedTab ?: field ?: DateTimePicker.Tab.START_TIME
|
||||
private var selectedDateTimeTab: DateTimePicker.Tab = DateTimePicker.Tab.START
|
||||
get() = pagerAdapter.dateTimePickerFragment?.selectedTab ?: field ?: DateTimePicker.Tab.START
|
||||
|
||||
private val animatorListener = object : AnimatorListenerAdapter() {
|
||||
override fun onAnimationCancel(animation: Animator) {
|
||||
super.onAnimationCancel(animation)
|
||||
pagerAdapter.datePicker?.collapseCalendarView()
|
||||
pagerAdapter.datePickerFragment?.collapseCalendarView()
|
||||
}
|
||||
|
||||
override fun onAnimationEnd(animation: Animator) {
|
||||
super.onAnimationEnd(animation)
|
||||
pagerAdapter.datePicker?.collapseCalendarView()
|
||||
pagerAdapter.datePickerFragment?.collapseCalendarView()
|
||||
}
|
||||
}
|
||||
|
||||
private val pageChangeListener = object : ViewPager.SimpleOnPageChangeListener() {
|
||||
override fun onPageSelected(position: Int) {
|
||||
updateTitles()
|
||||
val datePicker = pagerAdapter.datePicker
|
||||
val dateTimePicker = pagerAdapter.dateTimePicker
|
||||
val datePicker = pagerAdapter.datePickerFragment
|
||||
val dateTimePicker = pagerAdapter.dateTimePickerFragment
|
||||
if (position == displayMode.dateTabIndex && datePicker != null) {
|
||||
view_pager.currentObject = datePicker
|
||||
// We're switching from the tall time picker to the short date picker. Layout transition
|
||||
|
@ -141,10 +136,11 @@ class DateTimePickerDialog : ResizableDialog(), Toolbar.OnMenuItemClickListener,
|
|||
dateTime = bundle.getSerializable(DateTimePickerExtras.DATE_TIME) as ZonedDateTime
|
||||
duration = bundle.getSerializable(DateTimePickerExtras.DURATION) as Duration
|
||||
displayMode = bundle.getSerializable(DateTimePickerExtras.DISPLAY_MODE) as DisplayMode
|
||||
datePickMode = bundle.getSerializable(DateTimePickerExtras.DATE_PICK_MODE) as DatePickMode
|
||||
dateRangeMode = bundle.getSerializable(DateTimePickerExtras.DATE_RANGE_MODE) as DateRangeMode
|
||||
|
||||
savedInstanceState?.let {
|
||||
selectedDateTimeTab = it.getSerializable(SELECTED_DATE_TIME_TAB) as DateTimePicker.Tab
|
||||
displayMode = it.getSerializable(DateTimePickerExtras.DISPLAY_MODE) as DisplayMode
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -183,7 +179,7 @@ class DateTimePickerDialog : ResizableDialog(), Toolbar.OnMenuItemClickListener,
|
|||
bundle.putSerializable(DateTimePickerExtras.DATE_TIME, dateTime)
|
||||
bundle.putSerializable(DateTimePickerExtras.DURATION, duration)
|
||||
bundle.putSerializable(DateTimePickerExtras.DISPLAY_MODE, displayMode)
|
||||
bundle.putSerializable(DateTimePickerExtras.DATE_PICK_MODE, datePickMode)
|
||||
bundle.putSerializable(DateTimePickerExtras.DATE_RANGE_MODE, dateRangeMode)
|
||||
bundle.putSerializable(SELECTED_DATE_TIME_TAB, selectedDateTimeTab)
|
||||
}
|
||||
|
||||
|
@ -196,7 +192,7 @@ class DateTimePickerDialog : ResizableDialog(), Toolbar.OnMenuItemClickListener,
|
|||
}
|
||||
|
||||
override fun onDateSelected(dateTime: ZonedDateTime) {
|
||||
if (datePickMode === DatePickMode.RANGE_END) {
|
||||
if (dateRangeMode === DateRangeMode.END) {
|
||||
if (dateTime.isBefore(this.dateTime))
|
||||
this.dateTime = dateTime.minus(duration)
|
||||
else
|
||||
|
@ -207,7 +203,7 @@ class DateTimePickerDialog : ResizableDialog(), Toolbar.OnMenuItemClickListener,
|
|||
|
||||
updateTitles()
|
||||
|
||||
pagerAdapter.dateTimePicker?.setDate(this.dateTime)
|
||||
pagerAdapter.dateTimePickerFragment?.setDate(this.dateTime)
|
||||
}
|
||||
|
||||
override fun onDateTimeSelected(dateTime: ZonedDateTime, duration: Duration) {
|
||||
|
@ -216,21 +212,27 @@ class DateTimePickerDialog : ResizableDialog(), Toolbar.OnMenuItemClickListener,
|
|||
|
||||
updateTitles()
|
||||
|
||||
pagerAdapter.datePicker?.setTimeSlot(TimeSlot(this.dateTime, this.duration))
|
||||
pagerAdapter.datePickerFragment?.setTimeSlot(TimeSlot(this.dateTime, this.duration))
|
||||
}
|
||||
|
||||
private fun updateTitles() {
|
||||
val context = context ?: return
|
||||
when (displayMode) {
|
||||
DisplayMode.DATE -> {
|
||||
toolbar.title = if (datePickMode == DatePickMode.RANGE_START)
|
||||
toolbar.title = if (dateRangeMode == DateRangeMode.START)
|
||||
DateStringUtils.formatDateAbbrevAll(context, dateTime)
|
||||
else
|
||||
DateStringUtils.formatDateAbbrevAll(context, dateTime.plus(duration))
|
||||
}
|
||||
DisplayMode.ACCESSIBLE_DATE_TIME -> {
|
||||
toolbar.title = if (datePickMode == DatePickMode.RANGE_START)
|
||||
DateStringUtils.formatAbbrevDateAtTime(context, dateTime)
|
||||
DisplayMode.ACCESSIBLE_DATE -> {
|
||||
toolbar.title = if (dateRangeMode != DateRangeMode.NONE)
|
||||
resources.getString(R.string.date_time_picker_choose_date)
|
||||
else
|
||||
DateStringUtils.formatDateAbbrevAll(context, dateTime.plus(duration))
|
||||
}
|
||||
DisplayMode.TIME, DisplayMode.ACCESSIBLE_DATE_TIME -> {
|
||||
toolbar.title = if (dateRangeMode != DateRangeMode.NONE)
|
||||
resources.getString(R.string.date_time_picker_choose_time)
|
||||
else
|
||||
DateStringUtils.formatAbbrevDateTime(context, dateTime.plus(duration))
|
||||
}
|
||||
|
@ -238,7 +240,7 @@ class DateTimePickerDialog : ResizableDialog(), Toolbar.OnMenuItemClickListener,
|
|||
val currentTab = view_pager.currentItem
|
||||
toolbar.setTitle(if (currentTab == displayMode.dateTabIndex) R.string.date_time_picker_choose_date else R.string.date_time_picker_choose_time)
|
||||
|
||||
val tabDate = if (selectedDateTimeTab == DateTimePicker.Tab.END_TIME) dateTime.plus(duration) else dateTime
|
||||
val tabDate = if (selectedDateTimeTab == DateTimePicker.Tab.END) dateTime.plus(duration) else dateTime
|
||||
|
||||
// Set tab titles
|
||||
if (displayMode.dateTabIndex != -1)
|
||||
|
@ -254,28 +256,35 @@ class DateTimePickerDialog : ResizableDialog(), Toolbar.OnMenuItemClickListener,
|
|||
}
|
||||
|
||||
private inner class DateTimePagerAdapter(fragmentManager: FragmentManager) : FragmentPagerAdapter(fragmentManager) {
|
||||
var datePicker: DatePickerFragment? = null
|
||||
var dateTimePicker: DateTimePickerFragment? = null
|
||||
var datePickerFragment: DatePickerFragment? = null
|
||||
var dateTimePickerFragment: DateTimePickerFragment? = null
|
||||
|
||||
override fun getItem(position: Int): Fragment {
|
||||
val fragment: Fragment = if (position == displayMode.dateTabIndex) DatePickerFragment() else DateTimePickerFragment()
|
||||
val fragment: Fragment = if (useDatePickerFragment(position))
|
||||
DatePickerFragment()
|
||||
else
|
||||
DateTimePickerFragment()
|
||||
|
||||
fragment.arguments = arguments
|
||||
|
||||
return fragment
|
||||
}
|
||||
|
||||
override fun getCount(): Int = if (displayMode == DisplayMode.DATE_TIME || displayMode == DisplayMode.TIME_DATE) 2 else 1
|
||||
override fun getCount(): Int = if ((displayMode == DisplayMode.DATE_TIME || displayMode == DisplayMode.TIME_DATE)) 2 else 1
|
||||
|
||||
override fun instantiateItem(container: ViewGroup, position: Int): Any {
|
||||
val fragment = super.instantiateItem(container, position) as Fragment
|
||||
val currentItem = view_pager.currentItem
|
||||
if (fragment is DatePickerFragment) {
|
||||
datePickerFragment = fragment
|
||||
datePickerFragment?.arguments?.putBoolean(DateTimePickerExtras.EXPAND_ON_START, position != currentItem)
|
||||
datePickerFragment?.onDateSelectedListener = this@DateTimePickerDialog
|
||||
} else {
|
||||
dateTimePickerFragment = fragment as DateTimePickerFragment
|
||||
dateTimePickerFragment?.onDateTimeSelectedListener = this@DateTimePickerDialog
|
||||
|
||||
if (position == displayMode.dateTabIndex) {
|
||||
datePicker = fragment as DatePickerFragment
|
||||
datePicker?.arguments?.putBoolean(DateTimePickerExtras.EXPAND_ON_START, position != currentItem)
|
||||
datePicker?.onDateSelectedListener = this@DateTimePickerDialog
|
||||
} else if (position == displayMode.dateTimeTabIndex) {
|
||||
dateTimePicker = fragment as DateTimePickerFragment
|
||||
dateTimePicker?.onDateTimeSelectedListener = this@DateTimePickerDialog
|
||||
val pickerMode = if (displayMode == DisplayMode.ACCESSIBLE_DATE) PickerMode.DATE else PickerMode.DATE_TIME
|
||||
dateTimePickerFragment?.arguments?.putSerializable(DateTimePickerExtras.PICKER_MODE, pickerMode)
|
||||
}
|
||||
|
||||
if (position == currentItem)
|
||||
|
@ -284,15 +293,8 @@ class DateTimePickerDialog : ResizableDialog(), Toolbar.OnMenuItemClickListener,
|
|||
return fragment
|
||||
}
|
||||
|
||||
override fun destroyItem(container: ViewGroup, position: Int, `object`: Any) {
|
||||
if (position == displayMode.dateTabIndex) {
|
||||
datePicker = null
|
||||
} else if (position == displayMode.dateTimeTabIndex) {
|
||||
dateTimePicker = null
|
||||
}
|
||||
|
||||
super.destroyItem(container, position, `object`)
|
||||
}
|
||||
private fun useDatePickerFragment(position: Int): Boolean =
|
||||
position == displayMode.dateTabIndex && (displayMode == DisplayMode.DATE || displayMode == DisplayMode.TIME_DATE || displayMode == DisplayMode.DATE_TIME)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -6,9 +6,10 @@
|
|||
package com.microsoft.officeuifabric.datetimepicker
|
||||
|
||||
internal object DateTimePickerExtras {
|
||||
const val DATE_RANGE_MODE = "DATE_RANGE_MODE"
|
||||
const val DATE_TIME = "DATE_TIME"
|
||||
const val DISPLAY_MODE = "DISPLAY_MODE"
|
||||
const val DURATION = "DURATION"
|
||||
const val EXPAND_ON_START = "EXPAND_ON_START"
|
||||
const val DATE_PICK_MODE = "DATE_PICK_MODE"
|
||||
const val PICKER_MODE = "PICKER_MODE"
|
||||
}
|
||||
|
|
|
@ -18,7 +18,9 @@ import org.threeten.bp.Duration
|
|||
import org.threeten.bp.ZonedDateTime
|
||||
|
||||
/**
|
||||
* [DateTimePickerFragment] houses a [DateTimePicker] instance and configures aspects of the view
|
||||
* [DateTimePickerFragment] houses a [DateTimePicker] instance and configures aspects of the view.
|
||||
* When in TalkBalk this takes over date picking responsibilities from [DatePickerFragment] and
|
||||
* [DateTimePicker] shows months, days and years instead of date, hour, minute and period.
|
||||
*/
|
||||
internal class DateTimePickerFragment : Fragment(), OnDateTimeSelectedListener {
|
||||
var onDateTimeSelectedListener: OnDateTimeSelectedListener? = null
|
||||
|
@ -26,7 +28,8 @@ internal class DateTimePickerFragment : Fragment(), OnDateTimeSelectedListener {
|
|||
val selectedTab: DateTimePicker.Tab
|
||||
get() = date_time_picker.selectedTab
|
||||
|
||||
private var datePickMode: DatePickMode? = null
|
||||
private lateinit var dateRangeMode: DateRangeMode
|
||||
private lateinit var pickerMode: DateTimePicker.PickerMode
|
||||
|
||||
fun setDate(date: ZonedDateTime) {
|
||||
val range = date_time_picker.timeSlot ?: return
|
||||
|
@ -39,7 +42,7 @@ internal class DateTimePickerFragment : Fragment(), OnDateTimeSelectedListener {
|
|||
super.onCreate(savedInstanceState)
|
||||
|
||||
val bundle = savedInstanceState ?: arguments ?: return
|
||||
datePickMode = bundle.getSerializable(DateTimePickerExtras.DATE_PICK_MODE) as DatePickMode
|
||||
dateRangeMode = bundle.getSerializable(DateTimePickerExtras.DATE_RANGE_MODE) as DateRangeMode
|
||||
}
|
||||
|
||||
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
|
||||
|
@ -48,12 +51,17 @@ internal class DateTimePickerFragment : Fragment(), OnDateTimeSelectedListener {
|
|||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
|
||||
val bundle = savedInstanceState ?: arguments
|
||||
if (bundle != null) {
|
||||
pickerMode = bundle.getSerializable(DateTimePickerExtras.PICKER_MODE) as DateTimePicker.PickerMode
|
||||
|
||||
val dateTime = bundle.getSerializable(DateTimePickerExtras.DATE_TIME) as ZonedDateTime
|
||||
val duration = bundle.getSerializable(DateTimePickerExtras.DURATION) as Duration
|
||||
date_time_picker.timeSlot = TimeSlot(dateTime, duration)
|
||||
}
|
||||
|
||||
date_time_picker.pickerMode = pickerMode
|
||||
date_time_picker.onDateTimeSelectedListener = this
|
||||
|
||||
initUI()
|
||||
|
@ -62,16 +70,17 @@ internal class DateTimePickerFragment : Fragment(), OnDateTimeSelectedListener {
|
|||
override fun onSaveInstanceState(bundle: Bundle) {
|
||||
super.onSaveInstanceState(bundle)
|
||||
|
||||
if (datePickMode != DatePickMode.SINGLE) {
|
||||
datePickMode = if (date_time_picker.selectedTab == DateTimePicker.Tab.START_TIME)
|
||||
DatePickMode.RANGE_START
|
||||
if (dateRangeMode != DateRangeMode.NONE) {
|
||||
dateRangeMode = if (date_time_picker.selectedTab == DateTimePicker.Tab.START)
|
||||
DateRangeMode.START
|
||||
else
|
||||
DatePickMode.RANGE_END
|
||||
DateRangeMode.END
|
||||
}
|
||||
|
||||
bundle.putSerializable(DateTimePickerExtras.DATE_PICK_MODE, datePickMode)
|
||||
bundle.putSerializable(DateTimePickerExtras.DATE_RANGE_MODE, dateRangeMode)
|
||||
bundle.putSerializable(DateTimePickerExtras.DATE_TIME, date_time_picker.timeSlot?.start)
|
||||
bundle.putSerializable(DateTimePickerExtras.DURATION, date_time_picker.timeSlot?.duration)
|
||||
bundle.putSerializable(DateTimePickerExtras.PICKER_MODE, pickerMode)
|
||||
}
|
||||
|
||||
override fun onDateTimeSelected(dateTime: ZonedDateTime, duration: Duration) {
|
||||
|
@ -79,18 +88,18 @@ internal class DateTimePickerFragment : Fragment(), OnDateTimeSelectedListener {
|
|||
}
|
||||
|
||||
private fun initUI() {
|
||||
when (datePickMode) {
|
||||
DatePickMode.RANGE_START -> {
|
||||
date_time_picker.selectTab(DateTimePicker.Tab.START_TIME)
|
||||
date_time_picker.displayTime(true, false)
|
||||
when (dateRangeMode) {
|
||||
DateRangeMode.START -> {
|
||||
date_time_picker.selectTab(DateTimePicker.Tab.START)
|
||||
date_time_picker.setPickerValues(false, false)
|
||||
}
|
||||
DatePickMode.RANGE_END -> {
|
||||
date_time_picker.selectTab(DateTimePicker.Tab.END_TIME)
|
||||
date_time_picker.displayTime(false, false)
|
||||
DateRangeMode.END -> {
|
||||
date_time_picker.selectTab(DateTimePicker.Tab.END)
|
||||
date_time_picker.setPickerValues(true, false)
|
||||
}
|
||||
DatePickMode.SINGLE -> {
|
||||
date_time_picker.selectTab(DateTimePicker.Tab.NO_DURATION)
|
||||
date_time_picker.displayTime(true, false)
|
||||
DateRangeMode.NONE -> {
|
||||
date_time_picker.selectTab(DateTimePicker.Tab.NONE)
|
||||
date_time_picker.setPickerValues(false, false)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -14,5 +14,5 @@ import android.view.accessibility.AccessibilityManager
|
|||
val Context.isAccessibilityEnabled: Boolean
|
||||
get() = accessibilityManager.isTouchExplorationEnabled
|
||||
|
||||
private val Context.accessibilityManager: AccessibilityManager
|
||||
val Context.accessibilityManager: AccessibilityManager
|
||||
get() = getSystemService(Context.ACCESSIBILITY_SERVICE) as AccessibilityManager
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
android:showDividers="middle|end">
|
||||
|
||||
<android.support.design.widget.TabLayout
|
||||
android:id="@+id/start_end_time_tab"
|
||||
android:id="@+id/start_end_tabs"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
app:tabGravity="fill"
|
||||
|
@ -22,10 +22,12 @@
|
|||
style="@style/Widget.UIFabric.TabLayout" />
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/date_time_pickers"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center"
|
||||
android:orientation="horizontal"
|
||||
android:visibility="gone"
|
||||
android:padding="@dimen/uifabric_date_time_picker_padding">
|
||||
|
||||
<com.microsoft.officeuifabric.view.NumberPicker
|
||||
|
@ -33,7 +35,7 @@
|
|||
style="@style/Widget.UIFabric.NumberPicker"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:internalMinWidth="@dimen/uifabric_number_picker_date_internalMinWidth" />
|
||||
app:internalMinWidth="@dimen/uifabric_date_time_picker_date_internal_min_width" />
|
||||
|
||||
<com.microsoft.officeuifabric.view.NumberPicker
|
||||
android:id="@+id/hour_picker"
|
||||
|
@ -55,4 +57,35 @@
|
|||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/date_pickers"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center"
|
||||
android:visibility="gone"
|
||||
android:orientation="horizontal"
|
||||
android:padding="@dimen/uifabric_date_time_picker_padding">
|
||||
|
||||
<com.microsoft.officeuifabric.view.NumberPicker
|
||||
android:id="@+id/month_picker"
|
||||
style="@style/Widget.UIFabric.NumberPicker"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:internalMinWidth="@dimen/uifabric_date_time_picker_month_internal_min_width" />
|
||||
|
||||
<com.microsoft.officeuifabric.view.NumberPicker
|
||||
android:id="@+id/day_picker"
|
||||
style="@style/Widget.UIFabric.NumberPicker"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content" />
|
||||
|
||||
<com.microsoft.officeuifabric.view.NumberPicker
|
||||
android:id="@+id/year_picker"
|
||||
style="@style/Widget.UIFabric.NumberPicker"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:internalMinWidth="@dimen/uifabric_date_time_picker_year_internal_min_width" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</LinearLayout>
|
|
@ -18,6 +18,8 @@
|
|||
<string name="accessibility_selected">Gekies</string>
|
||||
<string name="date_time_picker_start_time">Begintyd</string>
|
||||
<string name="date_time_picker_end_time">Eindtyd</string>
|
||||
<string name="date_time_picker_start_date">Begindatum</string>
|
||||
<string name="date_time_picker_end_date">Einddatum</string>
|
||||
<string name="date_time_picker_choose_time">Kies tyd</string>
|
||||
<string name="date_time_picker_choose_date">Kies datum</string>
|
||||
<string name="people_picker_sample_label">Etiket</string>
|
||||
|
|
|
@ -18,6 +18,8 @@
|
|||
<string name="accessibility_selected">ምርጥ</string>
|
||||
<string name="date_time_picker_start_time">መጀመሪያ ጊዜ</string>
|
||||
<string name="date_time_picker_end_time">መጨረሻ ጊዜ</string>
|
||||
<string name="date_time_picker_start_date">የተጀመረበት ቀን</string>
|
||||
<string name="date_time_picker_end_date">የመጨረሻ ቀን</string>
|
||||
<string name="date_time_picker_choose_time">ጊዜ ይምረጡ</string>
|
||||
<string name="date_time_picker_choose_date">ቀን ይምረጡ</string>
|
||||
<string name="people_picker_sample_label">መለያ</string>
|
||||
|
|
|
@ -18,6 +18,8 @@
|
|||
<string name="accessibility_selected">محدد</string>
|
||||
<string name="date_time_picker_start_time">وقت البدء</string>
|
||||
<string name="date_time_picker_end_time">وقت الانتهاء</string>
|
||||
<string name="date_time_picker_start_date">تاريخ البدء</string>
|
||||
<string name="date_time_picker_end_date">تاريخ الانتهاء</string>
|
||||
<string name="date_time_picker_choose_time">اختيار الوقت</string>
|
||||
<string name="date_time_picker_choose_date">اختيار التاريخ</string>
|
||||
<string name="people_picker_sample_label">تسمية</string>
|
||||
|
|
|
@ -18,6 +18,8 @@
|
|||
<string name="accessibility_selected">Seçilib</string>
|
||||
<string name="date_time_picker_start_time">Başlama vaxtı</string>
|
||||
<string name="date_time_picker_end_time">Bitmə vaxtı</string>
|
||||
<string name="date_time_picker_start_date">Başlama tarixi</string>
|
||||
<string name="date_time_picker_end_date">Bitmə tarixi</string>
|
||||
<string name="date_time_picker_choose_time">Vaxt seçin</string>
|
||||
<string name="date_time_picker_choose_date">Tarix seçin</string>
|
||||
<string name="people_picker_sample_label">Nişan</string>
|
||||
|
|
|
@ -18,6 +18,8 @@
|
|||
<string name="accessibility_selected">Izabrano</string>
|
||||
<string name="date_time_picker_start_time">Vreme početka</string>
|
||||
<string name="date_time_picker_end_time">Vreme završetka</string>
|
||||
<string name="date_time_picker_start_date">Datum početka</string>
|
||||
<string name="date_time_picker_end_date">Datum završetka</string>
|
||||
<string name="date_time_picker_choose_time">Odaberite vreme</string>
|
||||
<string name="date_time_picker_choose_date">Odaberite datum</string>
|
||||
<string name="people_picker_sample_label">Oznaka</string>
|
||||
|
|
|
@ -18,6 +18,8 @@
|
|||
<string name="accessibility_selected">Вылучана</string>
|
||||
<string name="date_time_picker_start_time">Час пачатку</string>
|
||||
<string name="date_time_picker_end_time">Час заканчэння</string>
|
||||
<string name="date_time_picker_start_date">Дата пачатку</string>
|
||||
<string name="date_time_picker_end_date">Дата заканчэння</string>
|
||||
<string name="date_time_picker_choose_time">Выбар часу</string>
|
||||
<string name="date_time_picker_choose_date">Выбар даты</string>
|
||||
<string name="people_picker_sample_label">Пазнака</string>
|
||||
|
|
|
@ -18,6 +18,8 @@
|
|||
<string name="accessibility_selected">Избрано</string>
|
||||
<string name="date_time_picker_start_time">Начален час</string>
|
||||
<string name="date_time_picker_end_time">Краен час</string>
|
||||
<string name="date_time_picker_start_date">Начална дата</string>
|
||||
<string name="date_time_picker_end_date">Крайна дата</string>
|
||||
<string name="date_time_picker_choose_time">Изберете час</string>
|
||||
<string name="date_time_picker_choose_date">Изберете дата</string>
|
||||
<string name="people_picker_sample_label">Етикет</string>
|
||||
|
|
|
@ -18,6 +18,8 @@
|
|||
<string name="accessibility_selected">নির্বাচিত</string>
|
||||
<string name="date_time_picker_start_time">শুরু করার সময়</string>
|
||||
<string name="date_time_picker_end_time">সমাপ্তির সময়</string>
|
||||
<string name="date_time_picker_start_date">শুরু করার তারিখ</string>
|
||||
<string name="date_time_picker_end_date">শেষ করার তারিখ</string>
|
||||
<string name="date_time_picker_choose_time">সময় বেছে নিন</string>
|
||||
<string name="date_time_picker_choose_date">তারিখ বেছে নিন</string>
|
||||
<string name="people_picker_sample_label">লেবেল</string>
|
||||
|
|
|
@ -18,6 +18,8 @@
|
|||
<string name="accessibility_selected">Odabrano</string>
|
||||
<string name="date_time_picker_start_time">Vrijeme početka</string>
|
||||
<string name="date_time_picker_end_time">Vrijeme završetka</string>
|
||||
<string name="date_time_picker_start_date">Datum početka</string>
|
||||
<string name="date_time_picker_end_date">Datum završetka</string>
|
||||
<string name="date_time_picker_choose_time">Izaberite vrijeme</string>
|
||||
<string name="date_time_picker_choose_date">Izaberite datum</string>
|
||||
<string name="people_picker_sample_label">Oznaka</string>
|
||||
|
|
|
@ -18,6 +18,8 @@
|
|||
<string name="accessibility_selected">Seleccionat</string>
|
||||
<string name="date_time_picker_start_time">Hora d\'inici</string>
|
||||
<string name="date_time_picker_end_time">Hora de finalització</string>
|
||||
<string name="date_time_picker_start_date">Data d\'inici</string>
|
||||
<string name="date_time_picker_end_date">Data de finalització</string>
|
||||
<string name="date_time_picker_choose_time">Tria l\'hora</string>
|
||||
<string name="date_time_picker_choose_date">Tria la data</string>
|
||||
<string name="people_picker_sample_label">Etiqueta</string>
|
||||
|
|
|
@ -18,6 +18,8 @@
|
|||
<string name="accessibility_selected">Vybráno</string>
|
||||
<string name="date_time_picker_start_time">Počáteční čas</string>
|
||||
<string name="date_time_picker_end_time">Koncový čas</string>
|
||||
<string name="date_time_picker_start_date">Počáteční datum</string>
|
||||
<string name="date_time_picker_end_date">Koncové datum</string>
|
||||
<string name="date_time_picker_choose_time">Zvolte čas</string>
|
||||
<string name="date_time_picker_choose_date">Zvolte datum</string>
|
||||
<string name="people_picker_sample_label">Popisek</string>
|
||||
|
|
|
@ -18,6 +18,8 @@
|
|||
<string name="accessibility_selected">Markeret</string>
|
||||
<string name="date_time_picker_start_time">Starttidspunkt</string>
|
||||
<string name="date_time_picker_end_time">Sluttidspunkt</string>
|
||||
<string name="date_time_picker_start_date">Startdato</string>
|
||||
<string name="date_time_picker_end_date">Slutdato</string>
|
||||
<string name="date_time_picker_choose_time">Vælg tid</string>
|
||||
<string name="date_time_picker_choose_date">Vælg en dato</string>
|
||||
<string name="people_picker_sample_label">Mærkat</string>
|
||||
|
|
|
@ -18,6 +18,8 @@
|
|||
<string name="accessibility_selected">Ausgewählt</string>
|
||||
<string name="date_time_picker_start_time">Startzeit</string>
|
||||
<string name="date_time_picker_end_time">Endzeit</string>
|
||||
<string name="date_time_picker_start_date">Startdatum</string>
|
||||
<string name="date_time_picker_end_date">Enddatum</string>
|
||||
<string name="date_time_picker_choose_time">Zeit auswählen</string>
|
||||
<string name="date_time_picker_choose_date">Datum auswählen</string>
|
||||
<string name="people_picker_sample_label">Bezeichnung</string>
|
||||
|
|
|
@ -18,6 +18,8 @@
|
|||
<string name="accessibility_selected">Επιλεγμένο</string>
|
||||
<string name="date_time_picker_start_time">Ώρα έναρξης</string>
|
||||
<string name="date_time_picker_end_time">Ώρα λήξης</string>
|
||||
<string name="date_time_picker_start_date">Ημερομηνία έναρξης</string>
|
||||
<string name="date_time_picker_end_date">Ημερομηνία λήξης</string>
|
||||
<string name="date_time_picker_choose_time">Επιλογή ώρας</string>
|
||||
<string name="date_time_picker_choose_date">Επιλογή ημερομηνίας</string>
|
||||
<string name="people_picker_sample_label">Ετικέτα</string>
|
||||
|
|
|
@ -18,6 +18,8 @@
|
|||
<string name="accessibility_selected">Selected</string>
|
||||
<string name="date_time_picker_start_time">Start time</string>
|
||||
<string name="date_time_picker_end_time">End time</string>
|
||||
<string name="date_time_picker_start_date">Start date</string>
|
||||
<string name="date_time_picker_end_date">End date</string>
|
||||
<string name="date_time_picker_choose_time">Choose time</string>
|
||||
<string name="date_time_picker_choose_date">Choose date</string>
|
||||
<string name="people_picker_sample_label">Label</string>
|
||||
|
|
|
@ -18,6 +18,8 @@
|
|||
<string name="accessibility_selected">Seleccionado</string>
|
||||
<string name="date_time_picker_start_time">Hora de inicio</string>
|
||||
<string name="date_time_picker_end_time">Hora de finalización</string>
|
||||
<string name="date_time_picker_start_date">Fecha de inicio</string>
|
||||
<string name="date_time_picker_end_date">Fecha de finalización</string>
|
||||
<string name="date_time_picker_choose_time">Elegir hora</string>
|
||||
<string name="date_time_picker_choose_date">Elegir fecha</string>
|
||||
<string name="people_picker_sample_label">Etiqueta</string>
|
||||
|
|
|
@ -18,6 +18,8 @@
|
|||
<string name="accessibility_selected">Seleccionado</string>
|
||||
<string name="date_time_picker_start_time">Hora de inicio</string>
|
||||
<string name="date_time_picker_end_time">Hora de finalización</string>
|
||||
<string name="date_time_picker_start_date">Fecha de inicio</string>
|
||||
<string name="date_time_picker_end_date">Fecha de finalización</string>
|
||||
<string name="date_time_picker_choose_time">Elegir hora</string>
|
||||
<string name="date_time_picker_choose_date">Elegir fecha</string>
|
||||
<string name="people_picker_sample_label">Etiqueta</string>
|
||||
|
|
|
@ -18,6 +18,8 @@
|
|||
<string name="accessibility_selected">Valitud</string>
|
||||
<string name="date_time_picker_start_time">Algusaeg</string>
|
||||
<string name="date_time_picker_end_time">Lõppaeg</string>
|
||||
<string name="date_time_picker_start_date">Alguskuupäev</string>
|
||||
<string name="date_time_picker_end_date">Lõppkuupäev</string>
|
||||
<string name="date_time_picker_choose_time">Valige kellaaeg</string>
|
||||
<string name="date_time_picker_choose_date">Valige kuupäev</string>
|
||||
<string name="people_picker_sample_label">Silt</string>
|
||||
|
|
|
@ -18,6 +18,8 @@
|
|||
<string name="accessibility_selected">Hautatuta</string>
|
||||
<string name="date_time_picker_start_time">Hasiera-ordua</string>
|
||||
<string name="date_time_picker_end_time">Amaiera-ordua</string>
|
||||
<string name="date_time_picker_start_date">Hasiera-data</string>
|
||||
<string name="date_time_picker_end_date">Amaiera-data</string>
|
||||
<string name="date_time_picker_choose_time">Aukeratu ordua</string>
|
||||
<string name="date_time_picker_choose_date">Aukeratu data</string>
|
||||
<string name="people_picker_sample_label">Etiketa</string>
|
||||
|
|
|
@ -18,6 +18,8 @@
|
|||
<string name="accessibility_selected">انتخابشده</string>
|
||||
<string name="date_time_picker_start_time">زمان شروع</string>
|
||||
<string name="date_time_picker_end_time">زمان پایان</string>
|
||||
<string name="date_time_picker_start_date">تاریخ شروع</string>
|
||||
<string name="date_time_picker_end_date">تاریخ پایان</string>
|
||||
<string name="date_time_picker_choose_time">انتخاب زمان</string>
|
||||
<string name="date_time_picker_choose_date">انتخاب تاریخ</string>
|
||||
<string name="people_picker_sample_label">برچسب</string>
|
||||
|
|
|
@ -18,6 +18,8 @@
|
|||
<string name="accessibility_selected">Valittu</string>
|
||||
<string name="date_time_picker_start_time">Alkamisaika</string>
|
||||
<string name="date_time_picker_end_time">Päättymisaika</string>
|
||||
<string name="date_time_picker_start_date">Alkamispäivä</string>
|
||||
<string name="date_time_picker_end_date">Päättymispäivä</string>
|
||||
<string name="date_time_picker_choose_time">Valitse aika</string>
|
||||
<string name="date_time_picker_choose_date">Valitse päivämäärä</string>
|
||||
<string name="people_picker_sample_label">Otsikko</string>
|
||||
|
|
|
@ -18,6 +18,8 @@
|
|||
<string name="accessibility_selected">Napili</string>
|
||||
<string name="date_time_picker_start_time">Oras ng pagsisimula</string>
|
||||
<string name="date_time_picker_end_time">Oras ng pagtatapos</string>
|
||||
<string name="date_time_picker_start_date">Petsa ng pagsisimula</string>
|
||||
<string name="date_time_picker_end_date">Petsa ng pagtatapos</string>
|
||||
<string name="date_time_picker_choose_time">Pumili ng oras</string>
|
||||
<string name="date_time_picker_choose_date">Pumili ng petsa</string>
|
||||
<string name="people_picker_sample_label">Label</string>
|
||||
|
|
|
@ -18,6 +18,8 @@
|
|||
<string name="accessibility_selected">Sélectionné</string>
|
||||
<string name="date_time_picker_start_time">Heure de début</string>
|
||||
<string name="date_time_picker_end_time">Heure de fin</string>
|
||||
<string name="date_time_picker_start_date">Date de début</string>
|
||||
<string name="date_time_picker_end_date">Date de fin</string>
|
||||
<string name="date_time_picker_choose_time">Choisir l’heure</string>
|
||||
<string name="date_time_picker_choose_date">Choisir la date</string>
|
||||
<string name="people_picker_sample_label">Étiquette</string>
|
||||
|
|
|
@ -18,6 +18,8 @@
|
|||
<string name="accessibility_selected">Sélectionné</string>
|
||||
<string name="date_time_picker_start_time">Heure de début</string>
|
||||
<string name="date_time_picker_end_time">Heure de fin</string>
|
||||
<string name="date_time_picker_start_date">Date de début</string>
|
||||
<string name="date_time_picker_end_date">Date de fin</string>
|
||||
<string name="date_time_picker_choose_time">Choisir l’heure</string>
|
||||
<string name="date_time_picker_choose_date">Choisir la date</string>
|
||||
<string name="people_picker_sample_label">Étiquette</string>
|
||||
|
|
|
@ -18,6 +18,8 @@
|
|||
<string name="accessibility_selected">Seleccionado</string>
|
||||
<string name="date_time_picker_start_time">Hora de inicio</string>
|
||||
<string name="date_time_picker_end_time">Hora de finalización</string>
|
||||
<string name="date_time_picker_start_date">Data inicial</string>
|
||||
<string name="date_time_picker_end_date">Data final</string>
|
||||
<string name="date_time_picker_choose_time">Escoller hora</string>
|
||||
<string name="date_time_picker_choose_date">Escoller data</string>
|
||||
<string name="people_picker_sample_label">Etiqueta</string>
|
||||
|
|
|
@ -18,6 +18,8 @@
|
|||
<string name="accessibility_selected">Zaɓaɓɓe</string>
|
||||
<string name="date_time_picker_start_time">Lokacin farawa</string>
|
||||
<string name="date_time_picker_end_time">Lokacin ƙarewa</string>
|
||||
<string name="date_time_picker_start_date">Ranar farawa</string>
|
||||
<string name="date_time_picker_end_date">Ranar ƙarewa</string>
|
||||
<string name="date_time_picker_choose_time">Zaɓi lokaci</string>
|
||||
<string name="date_time_picker_choose_date">Zaɓi kwanan wata</string>
|
||||
<string name="people_picker_sample_label">Lamba</string>
|
||||
|
|
|
@ -18,6 +18,8 @@
|
|||
<string name="accessibility_selected">चयनित</string>
|
||||
<string name="date_time_picker_start_time">प्रारंभ समय</string>
|
||||
<string name="date_time_picker_end_time">समाप्ति समय</string>
|
||||
<string name="date_time_picker_start_date">प्रारंभ दिनांक</string>
|
||||
<string name="date_time_picker_end_date">समाप्ति दिनांक</string>
|
||||
<string name="date_time_picker_choose_time">समय चुनें</string>
|
||||
<string name="date_time_picker_choose_date">दिनांक चुनें</string>
|
||||
<string name="people_picker_sample_label">लेबल</string>
|
||||
|
|
|
@ -18,6 +18,8 @@
|
|||
<string name="accessibility_selected">Odabrano</string>
|
||||
<string name="date_time_picker_start_time">Vrijeme početka</string>
|
||||
<string name="date_time_picker_end_time">Vrijeme završetka</string>
|
||||
<string name="date_time_picker_start_date">Datum početka</string>
|
||||
<string name="date_time_picker_end_date">Datum završetka</string>
|
||||
<string name="date_time_picker_choose_time">Odaberite vrijeme</string>
|
||||
<string name="date_time_picker_choose_date">Odaberite datum</string>
|
||||
<string name="people_picker_sample_label">Oznaka</string>
|
||||
|
|
|
@ -18,6 +18,8 @@
|
|||
<string name="accessibility_selected">Kijelölve</string>
|
||||
<string name="date_time_picker_start_time">Kezdés ideje</string>
|
||||
<string name="date_time_picker_end_time">Befejezés ideje</string>
|
||||
<string name="date_time_picker_start_date">Kezdés</string>
|
||||
<string name="date_time_picker_end_date">Befejezés</string>
|
||||
<string name="date_time_picker_choose_time">Időpont kiválasztása</string>
|
||||
<string name="date_time_picker_choose_date">Dátum kiválasztása</string>
|
||||
<string name="people_picker_sample_label">Címke</string>
|
||||
|
|
|
@ -18,6 +18,8 @@
|
|||
<string name="accessibility_selected">Dipilih</string>
|
||||
<string name="date_time_picker_start_time">Waktu mulai</string>
|
||||
<string name="date_time_picker_end_time">Waktu selesai</string>
|
||||
<string name="date_time_picker_start_date">Tanggal mulai</string>
|
||||
<string name="date_time_picker_end_date">Tanggal selesai</string>
|
||||
<string name="date_time_picker_choose_time">Pilih waktu</string>
|
||||
<string name="date_time_picker_choose_date">Pilih tanggal</string>
|
||||
<string name="people_picker_sample_label">Label</string>
|
||||
|
|
|
@ -18,6 +18,8 @@
|
|||
<string name="accessibility_selected">Valið</string>
|
||||
<string name="date_time_picker_start_time">Upphafstími</string>
|
||||
<string name="date_time_picker_end_time">Lokatími</string>
|
||||
<string name="date_time_picker_start_date">Upphafsdagur</string>
|
||||
<string name="date_time_picker_end_date">Lokadagur</string>
|
||||
<string name="date_time_picker_choose_time">Veldu tíma</string>
|
||||
<string name="date_time_picker_choose_date">Veldu dagsetningu</string>
|
||||
<string name="people_picker_sample_label">Merki</string>
|
||||
|
|
|
@ -18,6 +18,8 @@
|
|||
<string name="accessibility_selected">Selezionato</string>
|
||||
<string name="date_time_picker_start_time">Ora di inizio</string>
|
||||
<string name="date_time_picker_end_time">Ora di fine</string>
|
||||
<string name="date_time_picker_start_date">Data di inizio</string>
|
||||
<string name="date_time_picker_end_date">Data di fine</string>
|
||||
<string name="date_time_picker_choose_time">Scegli un orario</string>
|
||||
<string name="date_time_picker_choose_date">Scegli una data</string>
|
||||
<string name="people_picker_sample_label">Etichetta</string>
|
||||
|
|
|
@ -18,6 +18,8 @@
|
|||
<string name="accessibility_selected">נבחר</string>
|
||||
<string name="date_time_picker_start_time">שעת התחלה</string>
|
||||
<string name="date_time_picker_end_time">שעת סיום</string>
|
||||
<string name="date_time_picker_start_date">תאריך התחלה</string>
|
||||
<string name="date_time_picker_end_date">תאריך סיום</string>
|
||||
<string name="date_time_picker_choose_time">בחר שעה</string>
|
||||
<string name="date_time_picker_choose_date">בחר תאריך</string>
|
||||
<string name="people_picker_sample_label">תווית</string>
|
||||
|
|
|
@ -18,6 +18,8 @@
|
|||
<string name="accessibility_selected">選択済み</string>
|
||||
<string name="date_time_picker_start_time">開始時刻</string>
|
||||
<string name="date_time_picker_end_time">終了時刻</string>
|
||||
<string name="date_time_picker_start_date">開始日</string>
|
||||
<string name="date_time_picker_end_date">終了日</string>
|
||||
<string name="date_time_picker_choose_time">時間の選択</string>
|
||||
<string name="date_time_picker_choose_date">日付を選択</string>
|
||||
<string name="people_picker_sample_label">ラベル</string>
|
||||
|
|
|
@ -18,6 +18,8 @@
|
|||
<string name="accessibility_selected">Таңдалған</string>
|
||||
<string name="date_time_picker_start_time">Басталу уақыты</string>
|
||||
<string name="date_time_picker_end_time">Аяқталу уақыты</string>
|
||||
<string name="date_time_picker_start_date">Басталу күні</string>
|
||||
<string name="date_time_picker_end_date">Аяқталу күні</string>
|
||||
<string name="date_time_picker_choose_time">Уақытты таңдаңыз</string>
|
||||
<string name="date_time_picker_choose_date">Күнді таңдаңыз</string>
|
||||
<string name="people_picker_sample_label">Белгі</string>
|
||||
|
|
|
@ -18,6 +18,8 @@
|
|||
<string name="accessibility_selected">បានជ្រើសរើស</string>
|
||||
<string name="date_time_picker_start_time">ពេលវេលាចាប់ផ្ដើម</string>
|
||||
<string name="date_time_picker_end_time">ពេលវេលាបញ្ចប់</string>
|
||||
<string name="date_time_picker_start_date">កាលបរិច្ឆេទចាប់ផ្តើម</string>
|
||||
<string name="date_time_picker_end_date">កាលបរិច្ឆេទបញ្ចប់</string>
|
||||
<string name="date_time_picker_choose_time">ជ្រើសរើសពេលវេលា</string>
|
||||
<string name="date_time_picker_choose_date">ជ្រើសរើសកាលបរិច្ឆេទ</string>
|
||||
<string name="people_picker_sample_label">ស្លាក</string>
|
||||
|
|
|
@ -18,6 +18,8 @@
|
|||
<string name="accessibility_selected">ಆಯ್ಕೆಮಾಡಲಾಗಿದೆ</string>
|
||||
<string name="date_time_picker_start_time">ಪ್ರಾರಂಭ ಸಮಯ</string>
|
||||
<string name="date_time_picker_end_time">ಅಂತ್ಯ ಸಮಯ</string>
|
||||
<string name="date_time_picker_start_date">ಆರಂಭದ ದಿನಾಂಕ</string>
|
||||
<string name="date_time_picker_end_date">ಅಂತ್ಯ ದಿನಾಂಕ</string>
|
||||
<string name="date_time_picker_choose_time">ಸಮಯ ಆರಿಸಿ</string>
|
||||
<string name="date_time_picker_choose_date">ದಿನಾಂಕ ಆರಿಸಿ</string>
|
||||
<string name="people_picker_sample_label">ಲೇಬಲ್</string>
|
||||
|
|
|
@ -18,6 +18,8 @@
|
|||
<string name="accessibility_selected">선택됨</string>
|
||||
<string name="date_time_picker_start_time">시작 시간</string>
|
||||
<string name="date_time_picker_end_time">종료 시간</string>
|
||||
<string name="date_time_picker_start_date">시작 날짜</string>
|
||||
<string name="date_time_picker_end_date">종료 날짜</string>
|
||||
<string name="date_time_picker_choose_time">시간 선택</string>
|
||||
<string name="date_time_picker_choose_date">날짜 선택</string>
|
||||
<string name="people_picker_sample_label">레이블</string>
|
||||
|
|
|
@ -18,6 +18,8 @@
|
|||
<string name="accessibility_selected">ເລືອກແລ້ວ</string>
|
||||
<string name="date_time_picker_start_time">ເວລາເລີ່ມຕົ້ນ</string>
|
||||
<string name="date_time_picker_end_time">ເວລາສິ້ນສຸດ</string>
|
||||
<string name="date_time_picker_start_date">ວັນທີເລີ່ມຕົ້ນ</string>
|
||||
<string name="date_time_picker_end_date">ວັນທີສິ້ນສຸດ</string>
|
||||
<string name="date_time_picker_choose_time">ເລືອກເວລາ</string>
|
||||
<string name="date_time_picker_choose_date">ເລືອກວັນທີ</string>
|
||||
<string name="people_picker_sample_label">ປ້າຍກຳກັບ</string>
|
||||
|
|
|
@ -18,6 +18,8 @@
|
|||
<string name="accessibility_selected">Pasirinkta</string>
|
||||
<string name="date_time_picker_start_time">Pradžios laikas</string>
|
||||
<string name="date_time_picker_end_time">Pabaigos laikas</string>
|
||||
<string name="date_time_picker_start_date">Pradžios data</string>
|
||||
<string name="date_time_picker_end_date">Pabaigos data</string>
|
||||
<string name="date_time_picker_choose_time">Pasirinkite laiką</string>
|
||||
<string name="date_time_picker_choose_date">Pasirinkite datą</string>
|
||||
<string name="people_picker_sample_label">Žyma</string>
|
||||
|
|
|
@ -18,6 +18,8 @@
|
|||
<string name="accessibility_selected">Atlasīts</string>
|
||||
<string name="date_time_picker_start_time">Sākuma laiks</string>
|
||||
<string name="date_time_picker_end_time">Beigu laiks</string>
|
||||
<string name="date_time_picker_start_date">Sākuma datums</string>
|
||||
<string name="date_time_picker_end_date">Beigu datums</string>
|
||||
<string name="date_time_picker_choose_time">Izvēlieties laiku</string>
|
||||
<string name="date_time_picker_choose_date">Izvēlieties datumu</string>
|
||||
<string name="people_picker_sample_label">Etiķete</string>
|
||||
|
|
|
@ -18,6 +18,8 @@
|
|||
<string name="accessibility_selected">Избрано</string>
|
||||
<string name="date_time_picker_start_time">Време на започнување</string>
|
||||
<string name="date_time_picker_end_time">Време на завршување</string>
|
||||
<string name="date_time_picker_start_date">Датум на започнување</string>
|
||||
<string name="date_time_picker_end_date">Датум на завршување</string>
|
||||
<string name="date_time_picker_choose_time">Изберете време</string>
|
||||
<string name="date_time_picker_choose_date">Изберете датум</string>
|
||||
<string name="people_picker_sample_label">Етикета</string>
|
||||
|
|
|
@ -18,6 +18,8 @@
|
|||
<string name="accessibility_selected">തിരഞ്ഞെടുത്തു</string>
|
||||
<string name="date_time_picker_start_time">ആരംഭിക്കുന്ന സമയം</string>
|
||||
<string name="date_time_picker_end_time">അവസാനിക്കുന്ന സമയം</string>
|
||||
<string name="date_time_picker_start_date">ആരംഭിക്കുന്ന തീയതി</string>
|
||||
<string name="date_time_picker_end_date">അവസാനിക്കുന്ന തീയതി</string>
|
||||
<string name="date_time_picker_choose_time">സമയം നോക്കിയെടുക്കുക</string>
|
||||
<string name="date_time_picker_choose_date">തീയതി നോക്കിയെടുക്കുക</string>
|
||||
<string name="people_picker_sample_label">ലേബൽ</string>
|
||||
|
|
|
@ -18,6 +18,8 @@
|
|||
<string name="accessibility_selected">Dipilih</string>
|
||||
<string name="date_time_picker_start_time">Masa mula</string>
|
||||
<string name="date_time_picker_end_time">Masa tamat</string>
|
||||
<string name="date_time_picker_start_date">Tarikh mula</string>
|
||||
<string name="date_time_picker_end_date">Tarikh tamat</string>
|
||||
<string name="date_time_picker_choose_time">Pilih masa</string>
|
||||
<string name="date_time_picker_choose_date">Pilih tarikh</string>
|
||||
<string name="people_picker_sample_label">Label</string>
|
||||
|
|
|
@ -18,6 +18,8 @@
|
|||
<string name="accessibility_selected">Merket</string>
|
||||
<string name="date_time_picker_start_time">Starttidspunkt</string>
|
||||
<string name="date_time_picker_end_time">Sluttidspunkt</string>
|
||||
<string name="date_time_picker_start_date">Startdato</string>
|
||||
<string name="date_time_picker_end_date">Sluttdato</string>
|
||||
<string name="date_time_picker_choose_time">Velg tidspunkt</string>
|
||||
<string name="date_time_picker_choose_date">Velg dato</string>
|
||||
<string name="people_picker_sample_label">Etikett</string>
|
||||
|
|
|
@ -18,6 +18,8 @@
|
|||
<string name="accessibility_selected">Geselecteerd</string>
|
||||
<string name="date_time_picker_start_time">Begintijd</string>
|
||||
<string name="date_time_picker_end_time">Eindtijd</string>
|
||||
<string name="date_time_picker_start_date">Begindatum</string>
|
||||
<string name="date_time_picker_end_date">Einddatum</string>
|
||||
<string name="date_time_picker_choose_time">Tijd kiezen</string>
|
||||
<string name="date_time_picker_choose_date">Datum kiezen</string>
|
||||
<string name="people_picker_sample_label">Label</string>
|
||||
|
|
|
@ -18,6 +18,8 @@
|
|||
<string name="accessibility_selected">Merkt</string>
|
||||
<string name="date_time_picker_start_time">Starttidspunkt</string>
|
||||
<string name="date_time_picker_end_time">Sluttidspunkt</string>
|
||||
<string name="date_time_picker_start_date">Startdato</string>
|
||||
<string name="date_time_picker_end_date">Sluttdato</string>
|
||||
<string name="date_time_picker_choose_time">Vel tidspunkt</string>
|
||||
<string name="date_time_picker_choose_date">Vel dato</string>
|
||||
<string name="people_picker_sample_label">Etikett</string>
|
||||
|
|
|
@ -18,6 +18,8 @@
|
|||
<string name="accessibility_selected">Zaznaczone</string>
|
||||
<string name="date_time_picker_start_time">Godzina rozpoczęcia</string>
|
||||
<string name="date_time_picker_end_time">Godzina zakończenia</string>
|
||||
<string name="date_time_picker_start_date">Data rozpoczęcia</string>
|
||||
<string name="date_time_picker_end_date">Data zakończenia</string>
|
||||
<string name="date_time_picker_choose_time">Wybierz czas</string>
|
||||
<string name="date_time_picker_choose_date">Wybierz datę</string>
|
||||
<string name="people_picker_sample_label">Etykieta</string>
|
||||
|
|
|
@ -18,6 +18,8 @@
|
|||
<string name="accessibility_selected">Selecionado</string>
|
||||
<string name="date_time_picker_start_time">Hora de início</string>
|
||||
<string name="date_time_picker_end_time">Hora de término</string>
|
||||
<string name="date_time_picker_start_date">Data de início</string>
|
||||
<string name="date_time_picker_end_date">Data de término</string>
|
||||
<string name="date_time_picker_choose_time">Escolher hora</string>
|
||||
<string name="date_time_picker_choose_date">Escolher data</string>
|
||||
<string name="people_picker_sample_label">Rótulo</string>
|
||||
|
|
|
@ -18,6 +18,8 @@
|
|||
<string name="accessibility_selected">Selecionado</string>
|
||||
<string name="date_time_picker_start_time">Hora de início</string>
|
||||
<string name="date_time_picker_end_time">Hora de fim</string>
|
||||
<string name="date_time_picker_start_date">Data de início</string>
|
||||
<string name="date_time_picker_end_date">Data de fim</string>
|
||||
<string name="date_time_picker_choose_time">Selecionar hora</string>
|
||||
<string name="date_time_picker_choose_date">Selecionar data</string>
|
||||
<string name="people_picker_sample_label">Etiqueta</string>
|
||||
|
|
|
@ -18,6 +18,8 @@
|
|||
<string name="accessibility_selected">Selectat</string>
|
||||
<string name="date_time_picker_start_time">Ora de început</string>
|
||||
<string name="date_time_picker_end_time">Ora de sfârșit</string>
|
||||
<string name="date_time_picker_start_date">Data de început</string>
|
||||
<string name="date_time_picker_end_date">Data de sfârșit</string>
|
||||
<string name="date_time_picker_choose_time">Alegeți ora</string>
|
||||
<string name="date_time_picker_choose_date">Alegeți data</string>
|
||||
<string name="people_picker_sample_label">Etichetă</string>
|
||||
|
|
|
@ -18,6 +18,8 @@
|
|||
<string name="accessibility_selected">Выбрано</string>
|
||||
<string name="date_time_picker_start_time">Время начала</string>
|
||||
<string name="date_time_picker_end_time">Время окончания</string>
|
||||
<string name="date_time_picker_start_date">Дата начала</string>
|
||||
<string name="date_time_picker_end_date">Дата окончания</string>
|
||||
<string name="date_time_picker_choose_time">Выберите время</string>
|
||||
<string name="date_time_picker_choose_date">Выберите дату</string>
|
||||
<string name="people_picker_sample_label">Метка</string>
|
||||
|
|
|
@ -18,6 +18,8 @@
|
|||
<string name="accessibility_selected">Vybraté</string>
|
||||
<string name="date_time_picker_start_time">Čas začatia</string>
|
||||
<string name="date_time_picker_end_time">Čas ukončenia</string>
|
||||
<string name="date_time_picker_start_date">Dátum začatia</string>
|
||||
<string name="date_time_picker_end_date">Dátum ukončenia</string>
|
||||
<string name="date_time_picker_choose_time">Vyberte čas</string>
|
||||
<string name="date_time_picker_choose_date">Vyberte dátum</string>
|
||||
<string name="people_picker_sample_label">Označenie</string>
|
||||
|
|
|
@ -18,6 +18,8 @@
|
|||
<string name="accessibility_selected">Izbrano</string>
|
||||
<string name="date_time_picker_start_time">Čas začetka</string>
|
||||
<string name="date_time_picker_end_time">Čas konca</string>
|
||||
<string name="date_time_picker_start_date">Začetni datum</string>
|
||||
<string name="date_time_picker_end_date">Končni datum</string>
|
||||
<string name="date_time_picker_choose_time">Izberite uro</string>
|
||||
<string name="date_time_picker_choose_date">Izberite datum</string>
|
||||
<string name="people_picker_sample_label">Oznaka</string>
|
||||
|
|
|
@ -18,6 +18,8 @@
|
|||
<string name="accessibility_selected">E përzgjedhur</string>
|
||||
<string name="date_time_picker_start_time">Ora e fillimit</string>
|
||||
<string name="date_time_picker_end_time">Ora e mbarimit</string>
|
||||
<string name="date_time_picker_start_date">Data e fillimit</string>
|
||||
<string name="date_time_picker_end_date">Data e mbarimit</string>
|
||||
<string name="date_time_picker_choose_time">Zgjidh orën</string>
|
||||
<string name="date_time_picker_choose_date">Zgjidh datën</string>
|
||||
<string name="people_picker_sample_label">Etiketa</string>
|
||||
|
|
|
@ -18,6 +18,8 @@
|
|||
<string name="accessibility_selected">Изабрано</string>
|
||||
<string name="date_time_picker_start_time">Време почетка</string>
|
||||
<string name="date_time_picker_end_time">Време завршетка</string>
|
||||
<string name="date_time_picker_start_date">Датум почетка</string>
|
||||
<string name="date_time_picker_end_date">Датум завршетка</string>
|
||||
<string name="date_time_picker_choose_time">Одаберите време</string>
|
||||
<string name="date_time_picker_choose_date">Одаберите датум</string>
|
||||
<string name="people_picker_sample_label">Ознака</string>
|
||||
|
|
|
@ -18,6 +18,8 @@
|
|||
<string name="accessibility_selected">Markerat</string>
|
||||
<string name="date_time_picker_start_time">Starttid</string>
|
||||
<string name="date_time_picker_end_time">Sluttid</string>
|
||||
<string name="date_time_picker_start_date">Startdatum</string>
|
||||
<string name="date_time_picker_end_date">Slutdatum</string>
|
||||
<string name="date_time_picker_choose_time">Välj tid</string>
|
||||
<string name="date_time_picker_choose_date">Välj datum</string>
|
||||
<string name="people_picker_sample_label">Etikett</string>
|
||||
|
|
|
@ -18,6 +18,8 @@
|
|||
<string name="accessibility_selected">Imeteuliwa</string>
|
||||
<string name="date_time_picker_start_time">Wakati wa kuanza</string>
|
||||
<string name="date_time_picker_end_time">Wakati wa kuisha</string>
|
||||
<string name="date_time_picker_start_date">Tarehe ya kuanza</string>
|
||||
<string name="date_time_picker_end_date">Tarehe ya mwisho</string>
|
||||
<string name="date_time_picker_choose_time">Chagua wakati</string>
|
||||
<string name="date_time_picker_choose_date">Chagua tarehe</string>
|
||||
<string name="people_picker_sample_label">Lebo</string>
|
||||
|
|
|
@ -18,6 +18,8 @@
|
|||
<string name="accessibility_selected">தேர்ந்தெடுக்கப்பட்டது</string>
|
||||
<string name="date_time_picker_start_time">தொடக்க நேரம்</string>
|
||||
<string name="date_time_picker_end_time">முடிவு நேரம்</string>
|
||||
<string name="date_time_picker_start_date">தொடக்கத் தேதி</string>
|
||||
<string name="date_time_picker_end_date">முடிவுத் தேதி</string>
|
||||
<string name="date_time_picker_choose_time">நேரத்தைத் தேர்வுசெய்க</string>
|
||||
<string name="date_time_picker_choose_date">தேதியைத் தேர்வுசெய்க</string>
|
||||
<string name="people_picker_sample_label">சிட்டை இணை</string>
|
||||
|
|
|
@ -18,6 +18,8 @@
|
|||
<string name="accessibility_selected">ఎంచుకోబడింది</string>
|
||||
<string name="date_time_picker_start_time">ప్రారంభ సమయం</string>
|
||||
<string name="date_time_picker_end_time">ముగింపు సమయం</string>
|
||||
<string name="date_time_picker_start_date">ప్రారంభ తేదీ</string>
|
||||
<string name="date_time_picker_end_date">ముగింపు తేది</string>
|
||||
<string name="date_time_picker_choose_time">సమయాన్ని ఎంచుకోండి</string>
|
||||
<string name="date_time_picker_choose_date">తేదీని ఎంచుకోండి</string>
|
||||
<string name="people_picker_sample_label">లేబుల్</string>
|
||||
|
|
|
@ -18,6 +18,8 @@
|
|||
<string name="accessibility_selected">เลือกแล้ว</string>
|
||||
<string name="date_time_picker_start_time">เวลาเริ่มต้น</string>
|
||||
<string name="date_time_picker_end_time">เวลาสิ้นสุด</string>
|
||||
<string name="date_time_picker_start_date">วันที่เริ่มต้น</string>
|
||||
<string name="date_time_picker_end_date">วันที่สิ้นสุด</string>
|
||||
<string name="date_time_picker_choose_time">เลือกเวลา</string>
|
||||
<string name="date_time_picker_choose_date">เลือกวันที่</string>
|
||||
<string name="people_picker_sample_label">ป้ายชื่อ</string>
|
||||
|
|
|
@ -18,6 +18,8 @@
|
|||
<string name="accessibility_selected">Seçildi</string>
|
||||
<string name="date_time_picker_start_time">Başlangıç saati</string>
|
||||
<string name="date_time_picker_end_time">Bitiş saati</string>
|
||||
<string name="date_time_picker_start_date">Başlangıç tarihi</string>
|
||||
<string name="date_time_picker_end_date">Bitiş tarihi</string>
|
||||
<string name="date_time_picker_choose_time">Saat seçin</string>
|
||||
<string name="date_time_picker_choose_date">Tarih seçin</string>
|
||||
<string name="people_picker_sample_label">Etiket</string>
|
||||
|
|
|
@ -18,6 +18,8 @@
|
|||
<string name="accessibility_selected">Вибрано</string>
|
||||
<string name="date_time_picker_start_time">Час початку</string>
|
||||
<string name="date_time_picker_end_time">Час завершення</string>
|
||||
<string name="date_time_picker_start_date">Дата початку</string>
|
||||
<string name="date_time_picker_end_date">Дата завершення</string>
|
||||
<string name="date_time_picker_choose_time">Виберіть час</string>
|
||||
<string name="date_time_picker_choose_date">Виберіть дату</string>
|
||||
<string name="people_picker_sample_label">Мітка</string>
|
||||
|
|
|
@ -18,6 +18,8 @@
|
|||
<string name="accessibility_selected">Tanlangan</string>
|
||||
<string name="date_time_picker_start_time">Boshlanish vaqti</string>
|
||||
<string name="date_time_picker_end_time">Tugash vaqti</string>
|
||||
<string name="date_time_picker_start_date">Boshlanish sanasi</string>
|
||||
<string name="date_time_picker_end_date">Tugash sanasi</string>
|
||||
<string name="date_time_picker_choose_time">Vaqtni tanlang</string>
|
||||
<string name="date_time_picker_choose_date">Sanani tanlang</string>
|
||||
<string name="people_picker_sample_label">Yorliq</string>
|
||||
|
|
|
@ -18,6 +18,8 @@
|
|||
<string name="accessibility_selected">Đã chọn</string>
|
||||
<string name="date_time_picker_start_time">Thời gian bắt đầu</string>
|
||||
<string name="date_time_picker_end_time">Thời gian kết thúc</string>
|
||||
<string name="date_time_picker_start_date">Ngày bắt đầu</string>
|
||||
<string name="date_time_picker_end_date">Ngày kết thúc</string>
|
||||
<string name="date_time_picker_choose_time">Chọn thời gian</string>
|
||||
<string name="date_time_picker_choose_date">Chọn ngày</string>
|
||||
<string name="people_picker_sample_label">Nhãn</string>
|
||||
|
|
|
@ -18,6 +18,8 @@
|
|||
<string name="accessibility_selected">已选定</string>
|
||||
<string name="date_time_picker_start_time">开始时间</string>
|
||||
<string name="date_time_picker_end_time">结束时间</string>
|
||||
<string name="date_time_picker_start_date">开始日期</string>
|
||||
<string name="date_time_picker_end_date">结束日期</string>
|
||||
<string name="date_time_picker_choose_time">选择时间</string>
|
||||
<string name="date_time_picker_choose_date">选择日期</string>
|
||||
<string name="people_picker_sample_label">标签</string>
|
||||
|
|
|
@ -18,6 +18,8 @@
|
|||
<string name="accessibility_selected">已選取</string>
|
||||
<string name="date_time_picker_start_time">開始時間</string>
|
||||
<string name="date_time_picker_end_time">結束時間</string>
|
||||
<string name="date_time_picker_start_date">開始日期</string>
|
||||
<string name="date_time_picker_end_date">結束日期</string>
|
||||
<string name="date_time_picker_choose_time">選擇時間</string>
|
||||
<string name="date_time_picker_choose_date">選擇日期</string>
|
||||
<string name="people_picker_sample_label">標籤</string>
|
||||
|
|
|
@ -29,6 +29,13 @@
|
|||
|
||||
<!--DateTimePicker-->
|
||||
<dimen name="uifabric_date_time_picker_padding">16dp</dimen>
|
||||
<dimen name="uifabric_date_time_picker_date_internal_min_width">160dp</dimen>
|
||||
<dimen name="uifabric_date_time_picker_month_internal_min_width">100dp</dimen>
|
||||
<dimen name="uifabric_date_time_picker_year_internal_min_width">80dp</dimen>
|
||||
<dimen name="uifabric_date_time_picker_fading_edge_length">50dp</dimen>
|
||||
<dimen name="uifabric_date_time_picker_internal_min_width">48dp</dimen>
|
||||
<dimen name="uifabric_date_time_picker_max_height">336dp</dimen>
|
||||
<dimen name="uifabric_date_time_picker_padding_right">8dp</dimen>
|
||||
|
||||
<!--Dialog-->
|
||||
<dimen name="uifabric_dialog_background_light_shadow_width">8dp</dimen>
|
||||
|
@ -37,13 +44,6 @@
|
|||
<dimen name="uifabric_resizable_dialog_card_elevation">2dp</dimen>
|
||||
<dimen name="uifabric_resizable_dialog_card_tools_width">300dp</dimen>
|
||||
|
||||
<!--NumberPicker-->
|
||||
<dimen name="uifabric_number_picker_date_internalMinWidth">160dp</dimen>
|
||||
<dimen name="uifabric_number_picker_fading_edge_length">50dp</dimen>
|
||||
<dimen name="uifabric_number_picker_internal_min_width">48dp</dimen>
|
||||
<dimen name="uifabric_number_picker_max_height">336dp</dimen>
|
||||
<dimen name="uifabric_number_picker_padding_right">8dp</dimen>
|
||||
|
||||
<!--PeoplePicker-->
|
||||
<dimen name="uifabric_people_picker_accessibility_search_constraint_extra_space">5dp</dimen>
|
||||
<!--30dp is an approximation of how much space 3 digits take up for the count span-->
|
||||
|
|
|
@ -30,9 +30,17 @@
|
|||
|
||||
<!-- *** DateTimePicker *** -->
|
||||
|
||||
<!--date picker tab title for start time range-->
|
||||
<string name="date_time_picker_start_time">Start time</string>
|
||||
<!--date picker tab title for end time range-->
|
||||
<string name="date_time_picker_end_time">End time</string>
|
||||
<!--date picker tab title for start date range-->
|
||||
<string name="date_time_picker_start_date">Start date</string>
|
||||
<!--date picker tab title for end date range-->
|
||||
<string name="date_time_picker_end_date">End date</string>
|
||||
<!--date picker dialog title for time selection-->
|
||||
<string name="date_time_picker_choose_time">Choose time</string>
|
||||
<!--date picker dialog title for date selection-->
|
||||
<string name="date_time_picker_choose_date">Choose date</string>
|
||||
|
||||
<!-- *** PeoplePicker *** -->
|
||||
|
|
|
@ -38,13 +38,13 @@
|
|||
<item name="allowKeyboardInput">false</item>
|
||||
<item name="android:orientation">vertical</item>
|
||||
<item name="android:fadingEdge">vertical</item>
|
||||
<item name="android:fadingEdgeLength">@dimen/uifabric_number_picker_fading_edge_length</item>
|
||||
<item name="android:fadingEdgeLength">@dimen/uifabric_date_time_picker_fading_edge_length</item>
|
||||
<item name="solidColor">@android:color/transparent</item>
|
||||
<item name="internalMinWidth">@dimen/uifabric_number_picker_internal_min_width</item>
|
||||
<item name="internalMaxHeight">@dimen/uifabric_number_picker_max_height</item>
|
||||
<item name="internalMinWidth">@dimen/uifabric_date_time_picker_internal_min_width</item>
|
||||
<item name="internalMaxHeight">@dimen/uifabric_date_time_picker_max_height</item>
|
||||
<item name="selectorWheelItemCount">7</item>
|
||||
<item name="textAlign">center</item>
|
||||
<item name="android:paddingRight">@dimen/uifabric_number_picker_padding_right</item>
|
||||
<item name="android:paddingRight">@dimen/uifabric_date_time_picker_padding_right</item>
|
||||
</style>
|
||||
|
||||
<!--PeoplePicker-->
|
||||
|
|
Загрузка…
Ссылка в новой задаче