@@ -49,15 +49,17 @@ import java.util.Locale
4949import javax.inject.Inject
5050
5151private const val POS_DONT_CLEAR = 0
52- private const val POS_HALF_AN_HOUR = 1
53- private const val POS_AN_HOUR = 2
54- private const val POS_FOUR_HOURS = 3
55- private const val POS_TODAY = 4
56- private const val POS_END_OF_WEEK = 5
52+ private const val POS_FIFTEEN_MINUTES = 1
53+ private const val POS_HALF_AN_HOUR = 2
54+ private const val POS_AN_HOUR = 3
55+ private const val POS_FOUR_HOURS = 4
56+ private const val POS_TODAY = 5
57+ private const val POS_END_OF_WEEK = 6
5758
5859private const val ONE_SECOND_IN_MILLIS = 1000
5960private const val ONE_MINUTE_IN_SECONDS = 60
6061private const val THIRTY_MINUTES = 30
62+ private const val FIFTEEN_MINUTES = 15
6163private const val FOUR_HOURS = 4
6264private const val LAST_HOUR_OF_DAY = 23
6365private const val LAST_MINUTE_OF_HOUR = 59
@@ -135,6 +137,7 @@ class SetStatusMessageBottomSheet(val user: User, val currentStatus: Status?) :
135137 val adapter = ArrayAdapter <String >(requireContext(), android.R .layout.simple_spinner_item)
136138 adapter.setDropDownViewResource(android.R .layout.simple_spinner_dropdown_item)
137139 adapter.add(getString(R .string.dontClear))
140+ adapter.add(getString(R .string.fifteenMinutes))
138141 adapter.add(getString(R .string.thirtyMinutes))
139142 adapter.add(getString(R .string.oneHour))
140143 adapter.add(getString(R .string.fourHours))
@@ -191,6 +194,10 @@ class SetStatusMessageBottomSheet(val user: User, val currentStatus: Status?) :
191194 private fun setClearStatusAfterValue (item : Int ) {
192195 clearAt = when (item) {
193196 POS_DONT_CLEAR -> null // don't clear
197+ POS_FIFTEEN_MINUTES -> {
198+ // 15 minutes
199+ System .currentTimeMillis() / ONE_SECOND_IN_MILLIS + FIFTEEN_MINUTES * ONE_MINUTE_IN_SECONDS
200+ }
194201 POS_HALF_AN_HOUR -> {
195202 // 30 minutes
196203 System .currentTimeMillis() / ONE_SECOND_IN_MILLIS + THIRTY_MINUTES * ONE_MINUTE_IN_SECONDS
@@ -296,6 +303,9 @@ class SetStatusMessageBottomSheet(val user: User, val currentStatus: Status?) :
296303 }
297304
298305 override fun onClick (predefinedStatus : PredefinedStatus ) {
306+ val oldListener = binding.clearStatusAfterSpinner.onItemSelectedListener
307+ binding.clearStatusAfterSpinner.onItemSelectedListener = null
308+
299309 selectedPredefinedMessageId = predefinedStatus.id
300310 clearAt = clearAtToUnixTime(predefinedStatus.clearAt)
301311 binding.emoji.setText(predefinedStatus.icon)
@@ -315,11 +325,14 @@ class SetStatusMessageBottomSheet(val user: User, val currentStatus: Status?) :
315325 CLEAR_AT_TYPE_END_OF -> updateClearAtViewsForEndOf(clearAt)
316326 }
317327 }
328+
318329 setClearStatusAfterValue(binding.clearStatusAfterSpinner.selectedItemPosition)
330+ binding.clearStatusAfterSpinner.onItemSelectedListener = oldListener
319331 }
320332
321333 private fun updateClearAtViewsForPeriod (clearAt : ClearAt ) {
322334 when (clearAt.time) {
335+ " 900" -> binding.clearStatusAfterSpinner.setSelection(POS_FIFTEEN_MINUTES )
323336 " 1800" -> binding.clearStatusAfterSpinner.setSelection(POS_HALF_AN_HOUR )
324337 " 3600" -> binding.clearStatusAfterSpinner.setSelection(POS_AN_HOUR )
325338 " 14400" -> binding.clearStatusAfterSpinner.setSelection(POS_FOUR_HOURS )
0 commit comments