mirror of
https://github.com/SimpleMobileTools/Simple-Clock.git
synced 2025-06-05 22:19:17 +02:00
Merge branch 'master' into feat/alarm-sort
This commit is contained in:
@ -49,15 +49,16 @@ class SettingsActivity : SimpleActivity() {
|
||||
}
|
||||
|
||||
private fun setupPurchaseThankYou() {
|
||||
settings_purchase_thank_you_holder.beVisibleIf(!isThankYouInstalled())
|
||||
settings_purchase_thank_you_holder.beGoneIf(isOrWasThankYouInstalled())
|
||||
settings_purchase_thank_you_holder.setOnClickListener {
|
||||
launchPurchaseThankYouIntent()
|
||||
}
|
||||
}
|
||||
|
||||
private fun setupCustomizeColors() {
|
||||
settings_customize_colors_label.text = getCustomizeColorsString()
|
||||
settings_customize_colors_holder.setOnClickListener {
|
||||
startCustomizationActivity()
|
||||
handleCustomizeColorsClick()
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -3,6 +3,7 @@ package com.simplemobiletools.clock.dialogs
|
||||
import android.app.TimePickerDialog
|
||||
import android.graphics.drawable.Drawable
|
||||
import android.media.AudioManager
|
||||
import android.media.RingtoneManager
|
||||
import android.widget.TextView
|
||||
import androidx.appcompat.app.AlertDialog
|
||||
import com.simplemobiletools.clock.R
|
||||
@ -13,9 +14,9 @@ import com.simplemobiletools.clock.helpers.TODAY_BIT
|
||||
import com.simplemobiletools.clock.helpers.TOMORROW_BIT
|
||||
import com.simplemobiletools.clock.helpers.getCurrentDayMinutes
|
||||
import com.simplemobiletools.clock.models.Alarm
|
||||
import com.simplemobiletools.commons.dialogs.ConfirmationDialog
|
||||
import com.simplemobiletools.commons.dialogs.SelectAlarmSoundDialog
|
||||
import com.simplemobiletools.commons.extensions.*
|
||||
import com.simplemobiletools.commons.helpers.ALARM_SOUND_TYPE_ALARM
|
||||
import com.simplemobiletools.commons.models.AlarmSound
|
||||
import kotlinx.android.synthetic.main.dialog_edit_alarm.view.*
|
||||
import java.util.*
|
||||
@ -36,18 +37,18 @@ class EditAlarmDialog(val activity: SimpleActivity, val alarm: Alarm, val callba
|
||||
edit_alarm_sound.colorLeftDrawable(textColor)
|
||||
edit_alarm_sound.text = alarm.soundTitle
|
||||
edit_alarm_sound.setOnClickListener {
|
||||
SelectAlarmSoundDialog(activity, alarm.soundUri, AudioManager.STREAM_ALARM, PICK_AUDIO_FILE_INTENT_ID, ALARM_SOUND_TYPE_ALARM, true,
|
||||
SelectAlarmSoundDialog(activity, alarm.soundUri, AudioManager.STREAM_ALARM, PICK_AUDIO_FILE_INTENT_ID, RingtoneManager.TYPE_ALARM, true,
|
||||
onAlarmPicked = {
|
||||
if (it != null) {
|
||||
updateSelectedAlarmSound(it)
|
||||
}
|
||||
}, onAlarmSoundDeleted = {
|
||||
if (alarm.soundUri == it.uri) {
|
||||
val defaultAlarm = context.getDefaultAlarmSound(ALARM_SOUND_TYPE_ALARM)
|
||||
updateSelectedAlarmSound(defaultAlarm)
|
||||
}
|
||||
activity.checkAlarmsWithDeletedSoundUri(it.uri)
|
||||
})
|
||||
if (alarm.soundUri == it.uri) {
|
||||
val defaultAlarm = context.getDefaultAlarmSound(RingtoneManager.TYPE_ALARM)
|
||||
updateSelectedAlarmSound(defaultAlarm)
|
||||
}
|
||||
activity.checkAlarmsWithDeletedSoundUri(it.uri)
|
||||
})
|
||||
}
|
||||
|
||||
edit_alarm_vibrate.colorLeftDrawable(textColor)
|
||||
@ -101,6 +102,15 @@ class EditAlarmDialog(val activity: SimpleActivity, val alarm: Alarm, val callba
|
||||
.create().apply {
|
||||
activity.setupDialogStuff(view, this) {
|
||||
getButton(AlertDialog.BUTTON_POSITIVE).setOnClickListener {
|
||||
if (!activity.config.wasAlarmWarningShown) {
|
||||
ConfirmationDialog(activity, messageId = R.string.alarm_warning, positive = R.string.ok, negative = 0) {
|
||||
activity.config.wasAlarmWarningShown = true
|
||||
it.performClick()
|
||||
}
|
||||
|
||||
return@setOnClickListener
|
||||
}
|
||||
|
||||
if (alarm.days <= 0) {
|
||||
alarm.days = if (alarm.timeInMinutes > getCurrentDayMinutes()) {
|
||||
TODAY_BIT
|
||||
|
@ -7,8 +7,8 @@ import android.content.ComponentName
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.media.AudioAttributes
|
||||
import android.media.AudioManager
|
||||
import android.media.AudioManager.STREAM_ALARM
|
||||
import android.media.RingtoneManager
|
||||
import android.net.Uri
|
||||
import android.os.PowerManager
|
||||
import android.text.SpannableString
|
||||
@ -33,7 +33,6 @@ import com.simplemobiletools.commons.helpers.*
|
||||
import java.util.*
|
||||
import kotlin.math.pow
|
||||
|
||||
|
||||
val Context.config: Config get() = Config.newInstance(applicationContext)
|
||||
|
||||
val Context.dbHelper: DBHelper get() = DBHelper.newInstance(applicationContext)
|
||||
@ -74,7 +73,7 @@ fun Context.getAllTimeZonesModified(): ArrayList<MyTimeZone> {
|
||||
fun Context.getModifiedTimeZoneTitle(id: Int) = getAllTimeZonesModified().firstOrNull { it.id == id }?.title ?: getDefaultTimeZoneTitle(id)
|
||||
|
||||
fun Context.createNewAlarm(timeInMinutes: Int, weekDays: Int): Alarm {
|
||||
val defaultAlarmSound = getDefaultAlarmSound(ALARM_SOUND_TYPE_ALARM)
|
||||
val defaultAlarmSound = getDefaultAlarmSound(RingtoneManager.TYPE_ALARM)
|
||||
return Alarm(0, timeInMinutes, weekDays, false, false, defaultAlarmSound.title, defaultAlarmSound.uri, "")
|
||||
}
|
||||
|
||||
@ -408,7 +407,7 @@ fun Context.getReminderActivityIntent(): PendingIntent {
|
||||
}
|
||||
|
||||
fun Context.checkAlarmsWithDeletedSoundUri(uri: String) {
|
||||
val defaultAlarmSound = getDefaultAlarmSound(ALARM_SOUND_TYPE_ALARM)
|
||||
val defaultAlarmSound = getDefaultAlarmSound(RingtoneManager.TYPE_ALARM)
|
||||
dbHelper.getAlarmsWithUri(uri).forEach {
|
||||
it.soundTitle = defaultAlarmSound.title
|
||||
it.soundUri = defaultAlarmSound.uri
|
||||
|
@ -2,6 +2,7 @@ package com.simplemobiletools.clock.fragments
|
||||
|
||||
import android.graphics.Color
|
||||
import android.media.AudioManager
|
||||
import android.media.RingtoneManager
|
||||
import android.os.Bundle
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
@ -15,7 +16,6 @@ import com.simplemobiletools.clock.helpers.PICK_AUDIO_FILE_INTENT_ID
|
||||
import com.simplemobiletools.clock.models.TimerState
|
||||
import com.simplemobiletools.commons.dialogs.SelectAlarmSoundDialog
|
||||
import com.simplemobiletools.commons.extensions.*
|
||||
import com.simplemobiletools.commons.helpers.ALARM_SOUND_TYPE_ALARM
|
||||
import com.simplemobiletools.commons.models.AlarmSound
|
||||
import kotlinx.android.synthetic.main.fragment_timer.view.*
|
||||
import org.greenrobot.eventbus.EventBus
|
||||
@ -45,7 +45,7 @@ class TimerFragment : Fragment() {
|
||||
timer_time.text = config.timerSeconds.getFormattedDuration()
|
||||
timer_label.setText(config.timerLabel)
|
||||
|
||||
requiredActivity.updateTextColors(timer_fragment)
|
||||
activity?.updateTextColors(timer_fragment)
|
||||
timer_play_pause.background = resources.getColoredDrawableWithColor(R.drawable.circle_background_filled, requireContext().getAdjustedPrimaryColor())
|
||||
timer_play_pause.applyColorFilter(if (requireContext().getAdjustedPrimaryColor() == Color.WHITE) Color.BLACK else Color.WHITE)
|
||||
timer_reset.applyColorFilter(textColor)
|
||||
@ -80,12 +80,12 @@ class TimerFragment : Fragment() {
|
||||
stopTimer()
|
||||
}
|
||||
|
||||
timer_time.setOnClickListener {
|
||||
changeDuration()
|
||||
}
|
||||
|
||||
timer_initial_time.setOnClickListener {
|
||||
MyTimePickerDialogDialog(activity as SimpleActivity, config.timerSeconds) { seconds ->
|
||||
val timerSeconds = if (seconds <= 0) 10 else seconds
|
||||
config.timerSeconds = timerSeconds
|
||||
timer_initial_time.text = timerSeconds.getFormattedDuration()
|
||||
}
|
||||
changeDuration()
|
||||
}
|
||||
|
||||
timer_vibrate_holder.setOnClickListener {
|
||||
@ -96,7 +96,7 @@ class TimerFragment : Fragment() {
|
||||
|
||||
timer_sound.setOnClickListener {
|
||||
SelectAlarmSoundDialog(activity as SimpleActivity, config.timerSoundUri, AudioManager.STREAM_ALARM, PICK_AUDIO_FILE_INTENT_ID,
|
||||
ALARM_SOUND_TYPE_ALARM, true,
|
||||
RingtoneManager.TYPE_ALARM, true,
|
||||
onAlarmPicked = { sound ->
|
||||
if (sound != null) {
|
||||
updateAlarmSound(sound)
|
||||
@ -104,7 +104,7 @@ class TimerFragment : Fragment() {
|
||||
},
|
||||
onAlarmSoundDeleted = { sound ->
|
||||
if (config.timerSoundUri == sound.uri) {
|
||||
val defaultAlarm = context.getDefaultAlarmSound(ALARM_SOUND_TYPE_ALARM)
|
||||
val defaultAlarm = context.getDefaultAlarmSound(RingtoneManager.TYPE_ALARM)
|
||||
updateAlarmSound(defaultAlarm)
|
||||
}
|
||||
|
||||
@ -122,8 +122,21 @@ class TimerFragment : Fragment() {
|
||||
|
||||
private fun stopTimer() {
|
||||
EventBus.getDefault().post(TimerState.Idle)
|
||||
requiredActivity.hideTimerNotification()
|
||||
view.timer_time.text = requiredActivity.config.timerSeconds.getFormattedDuration()
|
||||
activity?.hideTimerNotification()
|
||||
view.timer_time.text = activity?.config?.timerSeconds?.getFormattedDuration()
|
||||
}
|
||||
|
||||
private fun changeDuration() {
|
||||
MyTimePickerDialogDialog(activity as SimpleActivity, requireContext().config.timerSeconds) { seconds ->
|
||||
val timerSeconds = if (seconds <= 0) 10 else seconds
|
||||
activity?.config?.timerSeconds = timerSeconds
|
||||
val duration = timerSeconds.getFormattedDuration()
|
||||
view.timer_initial_time.text = duration
|
||||
|
||||
if (view.timer_reset.isGone()) {
|
||||
stopTimer()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
@ -159,7 +172,7 @@ class TimerFragment : Fragment() {
|
||||
R.drawable.ic_play_vector
|
||||
}
|
||||
|
||||
val iconColor = if (requiredActivity.getAdjustedPrimaryColor() == Color.WHITE) {
|
||||
val iconColor = if (activity?.getAdjustedPrimaryColor() == Color.WHITE) {
|
||||
Color.BLACK
|
||||
} else {
|
||||
Color.WHITE
|
||||
@ -169,8 +182,8 @@ class TimerFragment : Fragment() {
|
||||
}
|
||||
|
||||
fun updateAlarmSound(alarmSound: AlarmSound) {
|
||||
requiredActivity.config.timerSoundTitle = alarmSound.title
|
||||
requiredActivity.config.timerSoundUri = alarmSound.uri
|
||||
activity?.config?.timerSoundTitle = alarmSound.title
|
||||
activity?.config?.timerSoundUri = alarmSound.uri
|
||||
view.timer_sound.text = alarmSound.title
|
||||
}
|
||||
}
|
||||
|
@ -2,13 +2,13 @@ package com.simplemobiletools.clock.helpers
|
||||
|
||||
import android.content.Context
|
||||
import com.simplemobiletools.clock.models.AlarmSort
|
||||
import android.media.RingtoneManager
|
||||
import com.simplemobiletools.clock.extensions.gson.gson
|
||||
import com.simplemobiletools.clock.models.Alarm
|
||||
import com.simplemobiletools.clock.models.StateWrapper
|
||||
import com.simplemobiletools.clock.models.TimerState
|
||||
import com.simplemobiletools.commons.extensions.getDefaultAlarmSound
|
||||
import com.simplemobiletools.commons.extensions.getDefaultAlarmTitle
|
||||
import com.simplemobiletools.commons.extensions.getDefaultAlarmUri
|
||||
import com.simplemobiletools.commons.helpers.ALARM_SOUND_TYPE_ALARM
|
||||
import com.simplemobiletools.commons.helpers.BaseConfig
|
||||
|
||||
class Config(context: Context) : BaseConfig(context) {
|
||||
@ -43,11 +43,11 @@ class Config(context: Context) : BaseConfig(context) {
|
||||
set(timerVibrate) = prefs.edit().putBoolean(TIMER_VIBRATE, timerVibrate).apply()
|
||||
|
||||
var timerSoundUri: String
|
||||
get() = prefs.getString(TIMER_SOUND_URI, context.getDefaultAlarmUri(ALARM_SOUND_TYPE_ALARM).toString())!!
|
||||
get() = prefs.getString(TIMER_SOUND_URI, context.getDefaultAlarmSound(RingtoneManager.TYPE_ALARM).uri)!!
|
||||
set(timerSoundUri) = prefs.edit().putString(TIMER_SOUND_URI, timerSoundUri).apply()
|
||||
|
||||
var timerSoundTitle: String
|
||||
get() = prefs.getString(TIMER_SOUND_TITLE, context.getDefaultAlarmTitle(ALARM_SOUND_TYPE_ALARM))!!
|
||||
get() = prefs.getString(TIMER_SOUND_TITLE, context.getDefaultAlarmTitle(RingtoneManager.TYPE_ALARM))!!
|
||||
set(timerSoundTitle) = prefs.edit().putString(TIMER_SOUND_TITLE, timerSoundTitle).apply()
|
||||
|
||||
var timerMaxReminderSecs: Int
|
||||
@ -59,8 +59,7 @@ class Config(context: Context) : BaseConfig(context) {
|
||||
set(label) = prefs.edit().putString(TIMER_LABEL, label).apply()
|
||||
|
||||
var alarmSort: AlarmSort
|
||||
get() = AlarmSort.valueOf(prefs.getInt(ALARM_SORT, AlarmSort.default().value))
|
||||
?: AlarmSort.default()
|
||||
get() = AlarmSort.valueOf(prefs.getInt(ALARM_SORT, AlarmSort.default().value)) ?: AlarmSort.default()
|
||||
set(alarmSort) = prefs.edit().putInt(ALARM_SORT, alarmSort.value).apply()
|
||||
|
||||
var alarmMaxReminderSecs: Int
|
||||
|
@ -16,6 +16,7 @@ import com.simplemobiletools.clock.activities.ReminderActivity
|
||||
import com.simplemobiletools.clock.extensions.*
|
||||
import com.simplemobiletools.clock.helpers.ALARM_ID
|
||||
import com.simplemobiletools.clock.helpers.ALARM_NOTIF_ID
|
||||
import com.simplemobiletools.commons.extensions.showErrorToast
|
||||
import com.simplemobiletools.commons.helpers.isOreoPlus
|
||||
|
||||
class AlarmReceiver : BroadcastReceiver() {
|
||||
@ -59,7 +60,11 @@ class AlarmReceiver : BroadcastReceiver() {
|
||||
.setCategory(NotificationCompat.CATEGORY_ALARM)
|
||||
.setFullScreenIntent(pendingIntent, true)
|
||||
|
||||
notificationManager.notify(ALARM_NOTIF_ID, builder.build())
|
||||
try {
|
||||
notificationManager.notify(ALARM_NOTIF_ID, builder.build())
|
||||
} catch (e: Exception) {
|
||||
context.showErrorToast(e)
|
||||
}
|
||||
} else {
|
||||
Intent(context, ReminderActivity::class.java).apply {
|
||||
addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
|
||||
|
Reference in New Issue
Block a user