mirror of
https://github.com/SimpleMobileTools/Simple-Clock.git
synced 2025-06-05 22:19:17 +02:00
updating Commons + many other things
This commit is contained in:
@ -1,9 +1,7 @@
|
||||
package com.simplemobiletools.clock.activities
|
||||
|
||||
import android.annotation.TargetApi
|
||||
import android.content.Intent
|
||||
import android.graphics.drawable.ColorDrawable
|
||||
import android.os.Build
|
||||
import android.os.Bundle
|
||||
import android.view.Menu
|
||||
import android.view.MenuItem
|
||||
@ -18,6 +16,7 @@ import com.simplemobiletools.clock.extensions.rescheduleEnabledAlarms
|
||||
import com.simplemobiletools.clock.helpers.*
|
||||
import com.simplemobiletools.commons.extensions.*
|
||||
import com.simplemobiletools.commons.helpers.LICENSE_NUMBER_PICKER
|
||||
import com.simplemobiletools.commons.helpers.LICENSE_RTL
|
||||
import com.simplemobiletools.commons.helpers.LICENSE_STETHO
|
||||
import com.simplemobiletools.commons.models.FAQItem
|
||||
import kotlinx.android.synthetic.main.activity_main.*
|
||||
@ -118,7 +117,6 @@ class MainActivity : SimpleActivity() {
|
||||
}
|
||||
}
|
||||
|
||||
@TargetApi(Build.VERSION_CODES.KITKAT)
|
||||
private fun storeNewAlarmSound(resultData: Intent) {
|
||||
val newAlarmSound = storeNewYourAlarmSound(resultData)
|
||||
|
||||
@ -179,7 +177,7 @@ class MainActivity : SimpleActivity() {
|
||||
}
|
||||
|
||||
private fun launchAbout() {
|
||||
val licenses = LICENSE_STETHO or LICENSE_NUMBER_PICKER
|
||||
val licenses = LICENSE_STETHO or LICENSE_NUMBER_PICKER or LICENSE_RTL
|
||||
|
||||
val faqItems = arrayListOf(
|
||||
FAQItem(R.string.faq_1_title, R.string.faq_1_text),
|
||||
|
@ -7,6 +7,7 @@ import android.net.Uri
|
||||
import android.os.Bundle
|
||||
import android.os.Handler
|
||||
import android.view.MotionEvent
|
||||
import android.view.ViewGroup
|
||||
import android.view.animation.AnimationUtils
|
||||
import com.simplemobiletools.clock.R
|
||||
import com.simplemobiletools.clock.extensions.*
|
||||
@ -34,7 +35,7 @@ class ReminderActivity : SimpleActivity() {
|
||||
super.onCreate(savedInstanceState)
|
||||
setContentView(R.layout.activity_reminder)
|
||||
showOverLockscreen()
|
||||
updateTextColors(reminder_holder)
|
||||
updateTextColors(reminder_holder as ViewGroup)
|
||||
|
||||
val id = intent.getIntExtra(ALARM_ID, -1)
|
||||
isAlarmReminder = id != -1
|
||||
|
@ -25,7 +25,6 @@ class SettingsActivity : SimpleActivity() {
|
||||
setupPurchaseThankYou()
|
||||
setupCustomizeColors()
|
||||
setupUseEnglish()
|
||||
setupAvoidWhatsNew()
|
||||
setupPreventPhoneFromSleeping()
|
||||
setupHourFormat()
|
||||
setupSundayFirst()
|
||||
@ -72,14 +71,6 @@ class SettingsActivity : SimpleActivity() {
|
||||
}
|
||||
}
|
||||
|
||||
private fun setupAvoidWhatsNew() {
|
||||
settings_avoid_whats_new.isChecked = config.avoidWhatsNew
|
||||
settings_avoid_whats_new_holder.setOnClickListener {
|
||||
settings_avoid_whats_new.toggle()
|
||||
config.avoidWhatsNew = settings_avoid_whats_new.isChecked
|
||||
}
|
||||
}
|
||||
|
||||
private fun setupPreventPhoneFromSleeping() {
|
||||
settings_prevent_phone_from_sleeping.isChecked = config.preventPhoneFromSleeping
|
||||
settings_prevent_phone_from_sleeping_holder.setOnClickListener {
|
||||
|
@ -1,7 +1,7 @@
|
||||
package com.simplemobiletools.clock.activities
|
||||
|
||||
import android.os.Bundle
|
||||
import android.support.v7.app.AppCompatActivity
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import com.simplemobiletools.clock.extensions.config
|
||||
import com.simplemobiletools.clock.extensions.dbHelper
|
||||
import com.simplemobiletools.clock.extensions.hideNotification
|
||||
|
@ -7,6 +7,8 @@ import com.simplemobiletools.clock.helpers.TAB_CLOCK
|
||||
import com.simplemobiletools.commons.activities.BaseSplashActivity
|
||||
|
||||
class SplashActivity : BaseSplashActivity() {
|
||||
override fun getAppPackageName() = packageName
|
||||
|
||||
override fun initActivity() {
|
||||
when {
|
||||
intent?.action == "android.intent.action.SHOW_ALARMS" -> {
|
||||
|
@ -7,7 +7,6 @@ import android.widget.RelativeLayout
|
||||
import com.simplemobiletools.clock.R
|
||||
import com.simplemobiletools.clock.activities.SimpleActivity
|
||||
import com.simplemobiletools.clock.extensions.config
|
||||
import com.simplemobiletools.clock.extensions.dbHelper
|
||||
import com.simplemobiletools.clock.extensions.getFormattedTime
|
||||
import com.simplemobiletools.clock.interfaces.ToggleAlarmInterface
|
||||
import com.simplemobiletools.clock.models.Alarm
|
||||
@ -30,14 +29,8 @@ class AlarmsAdapter(activity: SimpleActivity, var alarms: ArrayList<Alarm>, val
|
||||
|
||||
override fun prepareActionMode(menu: Menu) {}
|
||||
|
||||
override fun prepareItemSelection(viewHolder: ViewHolder) {}
|
||||
|
||||
override fun markViewHolderSelection(select: Boolean, viewHolder: ViewHolder?) {
|
||||
viewHolder?.itemView?.alarm_frame?.isSelected = select
|
||||
}
|
||||
|
||||
override fun actionItemPressed(id: Int) {
|
||||
if (selectedPositions.isEmpty()) {
|
||||
if (selectedKeys.isEmpty()) {
|
||||
return
|
||||
}
|
||||
|
||||
@ -50,14 +43,18 @@ class AlarmsAdapter(activity: SimpleActivity, var alarms: ArrayList<Alarm>, val
|
||||
|
||||
override fun getIsItemSelectable(position: Int) = true
|
||||
|
||||
override fun getItemSelectionKey(position: Int) = alarms.getOrNull(position)?.id
|
||||
|
||||
override fun getItemKeyPosition(key: Int) = alarms.indexOfFirst { it.id == key }
|
||||
|
||||
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = createViewHolder(R.layout.item_alarm, parent)
|
||||
|
||||
override fun onBindViewHolder(holder: MyRecyclerViewAdapter.ViewHolder, position: Int) {
|
||||
val alarm = alarms[position]
|
||||
val view = holder.bindView(alarm, true, true) { itemView, layoutPosition ->
|
||||
holder.bindView(alarm, true, true) { itemView, layoutPosition ->
|
||||
setupView(itemView, alarm)
|
||||
}
|
||||
bindViewHolder(holder, position, view)
|
||||
bindViewHolder(holder)
|
||||
}
|
||||
|
||||
override fun getItemCount() = alarms.size
|
||||
@ -70,18 +67,20 @@ class AlarmsAdapter(activity: SimpleActivity, var alarms: ArrayList<Alarm>, val
|
||||
|
||||
private fun deleteItems() {
|
||||
val alarmsToRemove = ArrayList<Alarm>()
|
||||
selectedPositions.sortedDescending().forEach {
|
||||
/*selectedPositions.sortedDescending().forEach {
|
||||
val alarm = alarms[it]
|
||||
alarmsToRemove.add(alarm)
|
||||
}
|
||||
|
||||
alarms.removeAll(alarmsToRemove)
|
||||
removeSelectedItems()
|
||||
activity.dbHelper.deleteAlarms(alarmsToRemove)
|
||||
activity.dbHelper.deleteAlarms(alarmsToRemove)*/
|
||||
}
|
||||
|
||||
private fun setupView(view: View, alarm: Alarm) {
|
||||
val isSelected = selectedKeys.contains(alarm.id)
|
||||
view.apply {
|
||||
alarm_frame.isSelected = isSelected
|
||||
alarm_time.text = activity.getFormattedTime(alarm.timeInMinutes * 60, false, true)
|
||||
alarm_time.setTextColor(textColor)
|
||||
|
||||
|
@ -1,89 +1,75 @@
|
||||
package com.simplemobiletools.clock.adapters
|
||||
|
||||
import android.support.v7.widget.RecyclerView
|
||||
import android.util.SparseArray
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import com.simplemobiletools.clock.R
|
||||
import com.simplemobiletools.clock.activities.SimpleActivity
|
||||
import com.simplemobiletools.clock.extensions.config
|
||||
import com.simplemobiletools.clock.models.MyTimeZone
|
||||
import com.simplemobiletools.commons.extensions.getAdjustedPrimaryColor
|
||||
import com.simplemobiletools.commons.interfaces.MyAdapterListener
|
||||
import kotlinx.android.synthetic.main.item_add_time_zone.view.*
|
||||
import java.util.*
|
||||
|
||||
class SelectTimeZonesAdapter(val activity: SimpleActivity, val timeZones: ArrayList<MyTimeZone>) : RecyclerView.Adapter<SelectTimeZonesAdapter.ViewHolder>() {
|
||||
private val itemViews = SparseArray<View>()
|
||||
private val selectedPositions = HashSet<Int>()
|
||||
private val config = activity.config
|
||||
private val textColor = config.textColor
|
||||
private val backgroundColor = config.backgroundColor
|
||||
private val primaryColor = activity.getAdjustedPrimaryColor()
|
||||
var selectedKeys = HashSet<Int>()
|
||||
|
||||
init {
|
||||
val selectedTimeZones = config.selectedTimeZones
|
||||
timeZones.forEachIndexed { index, myTimeZone ->
|
||||
if (selectedTimeZones.contains(myTimeZone.id.toString())) {
|
||||
selectedPositions.add(index)
|
||||
selectedKeys.add(myTimeZone.id)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun toggleItemSelection(select: Boolean, pos: Int) {
|
||||
val itemKey = timeZones.getOrNull(pos)?.id ?: return
|
||||
|
||||
if (select) {
|
||||
if (itemViews[pos] != null) {
|
||||
selectedPositions.add(pos)
|
||||
}
|
||||
selectedKeys.add(itemKey)
|
||||
} else {
|
||||
selectedPositions.remove(pos)
|
||||
selectedKeys.remove(itemKey)
|
||||
}
|
||||
|
||||
itemViews[pos]?.add_time_zone_checkbox?.isChecked = select
|
||||
}
|
||||
|
||||
private val adapterListener = object : MyAdapterListener {
|
||||
override fun toggleItemSelectionAdapter(select: Boolean, position: Int) {
|
||||
toggleItemSelection(select, position)
|
||||
}
|
||||
|
||||
override fun getSelectedPositions() = selectedPositions
|
||||
|
||||
override fun itemLongClicked(position: Int) {}
|
||||
}
|
||||
|
||||
fun getSelectedItemsSet(): HashSet<String> {
|
||||
val selectedItemsSet = HashSet<String>(selectedPositions.size)
|
||||
selectedPositions.forEach { selectedItemsSet.add(timeZones[it].id.toString()) }
|
||||
return selectedItemsSet
|
||||
notifyItemChanged(pos)
|
||||
}
|
||||
|
||||
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
|
||||
val view = activity.layoutInflater.inflate(R.layout.item_add_time_zone, parent, false)
|
||||
return ViewHolder(view, adapterListener)
|
||||
return ViewHolder(view)
|
||||
}
|
||||
|
||||
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
|
||||
val timeZone = timeZones[position]
|
||||
itemViews.put(position, holder.bindView(timeZone, textColor, primaryColor, backgroundColor))
|
||||
toggleItemSelection(selectedPositions.contains(position), position)
|
||||
holder.bindView(timeZones[position], textColor, primaryColor, backgroundColor)
|
||||
}
|
||||
|
||||
override fun getItemCount() = timeZones.size
|
||||
|
||||
class ViewHolder(view: View, val adapterListener: MyAdapterListener) : RecyclerView.ViewHolder(view) {
|
||||
fun bindView(timeZone: MyTimeZone, textColor: Int, primaryColor: Int, backgroundColor: Int): View {
|
||||
inner class ViewHolder(view: View) : RecyclerView.ViewHolder(view) {
|
||||
fun bindView(myTimeZone: MyTimeZone, textColor: Int, primaryColor: Int, backgroundColor: Int): View {
|
||||
val isSelected = selectedKeys.contains(myTimeZone.id)
|
||||
itemView.apply {
|
||||
add_time_zone_title.text = timeZone.title
|
||||
add_time_zone_checkbox.isChecked = isSelected
|
||||
add_time_zone_title.text = myTimeZone.title
|
||||
add_time_zone_title.setTextColor(textColor)
|
||||
|
||||
add_time_zone_checkbox.setColors(textColor, primaryColor, backgroundColor)
|
||||
add_time_zone_holder.setOnClickListener {
|
||||
adapterListener.toggleItemSelectionAdapter(!add_time_zone_checkbox.isChecked, adapterPosition)
|
||||
viewClicked(myTimeZone)
|
||||
}
|
||||
}
|
||||
|
||||
return itemView
|
||||
}
|
||||
|
||||
private fun viewClicked(myTimeZone: MyTimeZone) {
|
||||
val isSelected = selectedKeys.contains(myTimeZone.id)
|
||||
toggleItemSelection(!isSelected, adapterPosition)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -26,24 +26,24 @@ class StopwatchAdapter(activity: SimpleActivity, var laps: ArrayList<Lap>, recyc
|
||||
|
||||
override fun prepareActionMode(menu: Menu) {}
|
||||
|
||||
override fun prepareItemSelection(viewHolder: ViewHolder) {}
|
||||
|
||||
override fun markViewHolderSelection(select: Boolean, viewHolder: ViewHolder?) {}
|
||||
|
||||
override fun actionItemPressed(id: Int) {}
|
||||
|
||||
override fun getSelectableItemCount() = laps.size
|
||||
|
||||
override fun getIsItemSelectable(position: Int) = false
|
||||
|
||||
override fun getItemSelectionKey(position: Int) = laps.getOrNull(position)?.id
|
||||
|
||||
override fun getItemKeyPosition(key: Int) = laps.indexOfFirst { it.id == key }
|
||||
|
||||
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = createViewHolder(R.layout.item_lap, parent)
|
||||
|
||||
override fun onBindViewHolder(holder: MyRecyclerViewAdapter.ViewHolder, position: Int) {
|
||||
val lap = laps[position]
|
||||
val view = holder.bindView(lap, false, false) { itemView, layoutPosition ->
|
||||
holder.bindView(lap, false, false) { itemView, layoutPosition ->
|
||||
setupView(itemView, lap)
|
||||
}
|
||||
bindViewHolder(holder, position, view)
|
||||
bindViewHolder(holder)
|
||||
}
|
||||
|
||||
override fun getItemCount() = laps.size
|
||||
|
@ -5,7 +5,6 @@ import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import com.simplemobiletools.clock.R
|
||||
import com.simplemobiletools.clock.activities.SimpleActivity
|
||||
import com.simplemobiletools.clock.extensions.config
|
||||
import com.simplemobiletools.clock.extensions.getFormattedDate
|
||||
import com.simplemobiletools.clock.extensions.getFormattedTime
|
||||
import com.simplemobiletools.clock.models.MyTimeZone
|
||||
@ -29,14 +28,8 @@ class TimeZonesAdapter(activity: SimpleActivity, var timeZones: ArrayList<MyTime
|
||||
|
||||
override fun prepareActionMode(menu: Menu) {}
|
||||
|
||||
override fun prepareItemSelection(viewHolder: ViewHolder) {}
|
||||
|
||||
override fun markViewHolderSelection(select: Boolean, viewHolder: ViewHolder?) {
|
||||
viewHolder?.itemView?.time_zone_frame?.isSelected = select
|
||||
}
|
||||
|
||||
override fun actionItemPressed(id: Int) {
|
||||
if (selectedPositions.isEmpty()) {
|
||||
if (selectedKeys.isEmpty()) {
|
||||
return
|
||||
}
|
||||
|
||||
@ -49,14 +42,18 @@ class TimeZonesAdapter(activity: SimpleActivity, var timeZones: ArrayList<MyTime
|
||||
|
||||
override fun getIsItemSelectable(position: Int) = true
|
||||
|
||||
override fun getItemSelectionKey(position: Int) = timeZones.getOrNull(position)?.id
|
||||
|
||||
override fun getItemKeyPosition(key: Int) = timeZones.indexOfFirst { it.id == key }
|
||||
|
||||
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = createViewHolder(R.layout.item_time_zone, parent)
|
||||
|
||||
override fun onBindViewHolder(holder: MyRecyclerViewAdapter.ViewHolder, position: Int) {
|
||||
val timeZone = timeZones[position]
|
||||
val view = holder.bindView(timeZone, true, true) { itemView, layoutPosition ->
|
||||
holder.bindView(timeZone, true, true) { itemView, layoutPosition ->
|
||||
setupView(itemView, timeZone)
|
||||
}
|
||||
bindViewHolder(holder, position, view)
|
||||
bindViewHolder(holder)
|
||||
}
|
||||
|
||||
override fun getItemCount() = timeZones.size
|
||||
@ -74,7 +71,7 @@ class TimeZonesAdapter(activity: SimpleActivity, var timeZones: ArrayList<MyTime
|
||||
private fun deleteItems() {
|
||||
val timeZonesToRemove = ArrayList<MyTimeZone>()
|
||||
val timeZoneIDsToRemove = ArrayList<String>()
|
||||
selectedPositions.sortedDescending().forEach {
|
||||
/*selectedPositions.sortedDescending().forEach {
|
||||
val timeZone = timeZones[it]
|
||||
timeZonesToRemove.add(timeZone)
|
||||
timeZoneIDsToRemove.add(timeZone.id.toString())
|
||||
@ -85,7 +82,7 @@ class TimeZonesAdapter(activity: SimpleActivity, var timeZones: ArrayList<MyTime
|
||||
|
||||
val selectedTimeZones = activity.config.selectedTimeZones
|
||||
val newTimeZones = selectedTimeZones.filter { !timeZoneIDsToRemove.contains(it) }.toHashSet()
|
||||
activity.config.selectedTimeZones = newTimeZones
|
||||
activity.config.selectedTimeZones = newTimeZones*/
|
||||
}
|
||||
|
||||
private fun setupView(view: View, timeZone: MyTimeZone) {
|
||||
@ -100,7 +97,9 @@ class TimeZonesAdapter(activity: SimpleActivity, var timeZones: ArrayList<MyTime
|
||||
val formattedTime = activity.getFormattedTime(passedSeconds, false, false)
|
||||
val formattedDate = activity.getFormattedDate(calendar)
|
||||
|
||||
val isSelected = selectedKeys.contains(timeZone.id)
|
||||
view.apply {
|
||||
time_zone_frame.isSelected = isSelected
|
||||
time_zone_title.text = timeZone.title
|
||||
time_zone_title.setTextColor(textColor)
|
||||
|
||||
|
@ -1,9 +1,9 @@
|
||||
package com.simplemobiletools.clock.adapters
|
||||
|
||||
import android.support.v4.app.Fragment
|
||||
import android.support.v4.app.FragmentManager
|
||||
import android.support.v4.app.FragmentStatePagerAdapter
|
||||
import android.view.ViewGroup
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.fragment.app.FragmentManager
|
||||
import androidx.fragment.app.FragmentStatePagerAdapter
|
||||
import com.simplemobiletools.clock.fragments.AlarmFragment
|
||||
import com.simplemobiletools.clock.fragments.ClockFragment
|
||||
import com.simplemobiletools.clock.fragments.StopwatchFragment
|
||||
|
@ -1,6 +1,6 @@
|
||||
package com.simplemobiletools.clock.dialogs
|
||||
|
||||
import android.support.v7.app.AlertDialog
|
||||
import androidx.appcompat.app.AlertDialog
|
||||
import com.simplemobiletools.clock.R
|
||||
import com.simplemobiletools.clock.activities.SimpleActivity
|
||||
import com.simplemobiletools.clock.adapters.SelectTimeZonesAdapter
|
||||
@ -16,7 +16,7 @@ class AddTimeZonesDialog(val activity: SimpleActivity, private val callback: ()
|
||||
view.select_time_zones_list.adapter = SelectTimeZonesAdapter(activity, getAllTimeZones())
|
||||
|
||||
AlertDialog.Builder(activity)
|
||||
.setPositiveButton(R.string.ok, { dialog, which -> dialogConfirmed() })
|
||||
.setPositiveButton(R.string.ok) { dialog, which -> dialogConfirmed() }
|
||||
.setNegativeButton(R.string.cancel, null)
|
||||
.create().apply {
|
||||
activity.setupDialogStuff(view, this)
|
||||
@ -24,7 +24,8 @@ class AddTimeZonesDialog(val activity: SimpleActivity, private val callback: ()
|
||||
}
|
||||
|
||||
private fun dialogConfirmed() {
|
||||
val selectedTimeZones = (view?.select_time_zones_list?.adapter as? SelectTimeZonesAdapter)?.getSelectedItemsSet() ?: LinkedHashSet()
|
||||
val adapter = view?.select_time_zones_list?.adapter as? SelectTimeZonesAdapter
|
||||
val selectedTimeZones = adapter?.selectedKeys?.map { it.toString() }?.toHashSet() ?: LinkedHashSet()
|
||||
activity.config.selectedTimeZones = selectedTimeZones
|
||||
callback()
|
||||
}
|
||||
|
@ -3,7 +3,7 @@ package com.simplemobiletools.clock.dialogs
|
||||
import android.app.TimePickerDialog
|
||||
import android.graphics.drawable.Drawable
|
||||
import android.media.AudioManager
|
||||
import android.support.v7.app.AlertDialog
|
||||
import androidx.appcompat.app.AlertDialog
|
||||
import android.widget.TextView
|
||||
import com.simplemobiletools.clock.R
|
||||
import com.simplemobiletools.clock.activities.SimpleActivity
|
||||
|
@ -1,6 +1,6 @@
|
||||
package com.simplemobiletools.clock.dialogs
|
||||
|
||||
import android.support.v7.app.AlertDialog
|
||||
import androidx.appcompat.app.AlertDialog
|
||||
import com.simplemobiletools.clock.R
|
||||
import com.simplemobiletools.clock.activities.SimpleActivity
|
||||
import com.simplemobiletools.clock.extensions.config
|
||||
|
@ -1,6 +1,6 @@
|
||||
package com.simplemobiletools.clock.dialogs
|
||||
|
||||
import android.support.v7.app.AlertDialog
|
||||
import androidx.appcompat.app.AlertDialog
|
||||
import com.simplemobiletools.clock.R
|
||||
import com.simplemobiletools.clock.activities.SimpleActivity
|
||||
import com.simplemobiletools.clock.extensions.config
|
||||
|
@ -1,7 +1,6 @@
|
||||
package com.simplemobiletools.clock.extensions
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import android.annotation.TargetApi
|
||||
import android.app.*
|
||||
import android.appwidget.AppWidgetManager
|
||||
import android.content.ComponentName
|
||||
@ -10,14 +9,12 @@ import android.content.Intent
|
||||
import android.media.AudioAttributes
|
||||
import android.media.AudioManager
|
||||
import android.net.Uri
|
||||
import android.os.Build
|
||||
import android.os.PowerManager
|
||||
import android.provider.Settings
|
||||
import android.support.v4.app.AlarmManagerCompat
|
||||
import android.support.v4.app.NotificationCompat
|
||||
import android.text.SpannableString
|
||||
import android.text.style.RelativeSizeSpan
|
||||
import android.widget.Toast
|
||||
import androidx.core.app.AlarmManagerCompat
|
||||
import androidx.core.app.NotificationCompat
|
||||
import com.simplemobiletools.clock.R
|
||||
import com.simplemobiletools.clock.activities.ReminderActivity
|
||||
import com.simplemobiletools.clock.activities.SnoozeReminderActivity
|
||||
@ -31,7 +28,10 @@ import com.simplemobiletools.clock.receivers.HideAlarmReceiver
|
||||
import com.simplemobiletools.clock.receivers.HideTimerReceiver
|
||||
import com.simplemobiletools.clock.services.SnoozeService
|
||||
import com.simplemobiletools.commons.extensions.*
|
||||
import com.simplemobiletools.commons.helpers.*
|
||||
import com.simplemobiletools.commons.helpers.ALARM_SOUND_TYPE_ALARM
|
||||
import com.simplemobiletools.commons.helpers.DAY_MINUTES
|
||||
import com.simplemobiletools.commons.helpers.SILENT
|
||||
import com.simplemobiletools.commons.helpers.isOreoPlus
|
||||
import java.util.*
|
||||
import kotlin.math.pow
|
||||
|
||||
@ -165,10 +165,7 @@ fun Context.scheduleNextWidgetUpdate() {
|
||||
|
||||
val alarmManager = getSystemService(Context.ALARM_SERVICE) as AlarmManager
|
||||
val triggerAtMillis = System.currentTimeMillis() + getMSTillNextMinute()
|
||||
when {
|
||||
isKitkatPlus() -> alarmManager.setExact(AlarmManager.RTC, triggerAtMillis, pendingIntent)
|
||||
else -> alarmManager.set(AlarmManager.RTC, triggerAtMillis, pendingIntent)
|
||||
}
|
||||
alarmManager.setExact(AlarmManager.RTC, triggerAtMillis, pendingIntent)
|
||||
}
|
||||
|
||||
fun Context.getFormattedTime(passedSeconds: Int, showSeconds: Boolean, makeAmPmSmaller: Boolean): SpannableString {
|
||||
@ -195,25 +192,20 @@ fun Context.formatTo12HourFormat(showSeconds: Boolean, hours: Int, minutes: Int,
|
||||
return "${formatTime(showSeconds, false, newHours, minutes, seconds)} $appendable"
|
||||
}
|
||||
|
||||
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
|
||||
fun Context.getNextAlarm(): String {
|
||||
if (isLollipopPlus()) {
|
||||
val milliseconds = (getSystemService(Context.ALARM_SERVICE) as AlarmManager).nextAlarmClock?.triggerTime ?: return ""
|
||||
val calendar = Calendar.getInstance()
|
||||
val isDaylightSavingActive = TimeZone.getDefault().inDaylightTime(Date())
|
||||
var offset = calendar.timeZone.rawOffset
|
||||
if (isDaylightSavingActive) {
|
||||
offset += TimeZone.getDefault().dstSavings
|
||||
}
|
||||
|
||||
calendar.timeInMillis = milliseconds
|
||||
val dayOfWeekIndex = (calendar.get(Calendar.DAY_OF_WEEK) + 5) % 7
|
||||
val dayOfWeek = resources.getStringArray(R.array.week_days_short)[dayOfWeekIndex]
|
||||
val formatted = getFormattedTime(((milliseconds + offset) / 1000L).toInt(), false, false)
|
||||
return "$dayOfWeek $formatted"
|
||||
} else {
|
||||
return Settings.System.getString(contentResolver, Settings.System.NEXT_ALARM_FORMATTED) ?: ""
|
||||
val milliseconds = (getSystemService(Context.ALARM_SERVICE) as AlarmManager).nextAlarmClock?.triggerTime ?: return ""
|
||||
val calendar = Calendar.getInstance()
|
||||
val isDaylightSavingActive = TimeZone.getDefault().inDaylightTime(Date())
|
||||
var offset = calendar.timeZone.rawOffset
|
||||
if (isDaylightSavingActive) {
|
||||
offset += TimeZone.getDefault().dstSavings
|
||||
}
|
||||
|
||||
calendar.timeInMillis = milliseconds
|
||||
val dayOfWeekIndex = (calendar.get(Calendar.DAY_OF_WEEK) + 5) % 7
|
||||
val dayOfWeek = resources.getStringArray(R.array.week_days_short)[dayOfWeekIndex]
|
||||
val formatted = getFormattedTime(((milliseconds + offset) / 1000L).toInt(), false, false)
|
||||
return "$dayOfWeek $formatted"
|
||||
}
|
||||
|
||||
fun Context.rescheduleEnabledAlarms() {
|
||||
@ -287,9 +279,7 @@ fun Context.getTimerNotification(pendingIntent: PendingIntent, addDeleteIntent:
|
||||
builder.setDeleteIntent(reminderActivityIntent)
|
||||
}
|
||||
|
||||
if (isLollipopPlus()) {
|
||||
builder.setVisibility(Notification.VISIBILITY_PUBLIC)
|
||||
}
|
||||
builder.setVisibility(Notification.VISIBILITY_PUBLIC)
|
||||
|
||||
if (config.timerVibrate) {
|
||||
val vibrateArray = LongArray(2) { 500 }
|
||||
@ -356,9 +346,7 @@ fun Context.getAlarmNotification(pendingIntent: PendingIntent, alarm: Alarm): No
|
||||
.addAction(R.drawable.ic_snooze, getString(R.string.snooze), getSnoozePendingIntent(alarm))
|
||||
.addAction(R.drawable.ic_cross, getString(R.string.dismiss), getHideAlarmPendingIntent(alarm))
|
||||
|
||||
if (isLollipopPlus()) {
|
||||
builder.setVisibility(Notification.VISIBILITY_PUBLIC)
|
||||
}
|
||||
builder.setVisibility(Notification.VISIBILITY_PUBLIC)
|
||||
|
||||
if (alarm.vibrate) {
|
||||
val vibrateArray = LongArray(2) { 500 }
|
||||
|
@ -1,7 +1,7 @@
|
||||
package com.simplemobiletools.clock.fragments
|
||||
|
||||
import android.os.Bundle
|
||||
import android.support.v4.app.Fragment
|
||||
import androidx.fragment.app.Fragment
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
|
@ -2,7 +2,7 @@ package com.simplemobiletools.clock.fragments
|
||||
|
||||
import android.os.Bundle
|
||||
import android.os.Handler
|
||||
import android.support.v4.app.Fragment
|
||||
import androidx.fragment.app.Fragment
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
|
@ -6,10 +6,10 @@ import android.graphics.Matrix
|
||||
import android.os.Bundle
|
||||
import android.os.Handler
|
||||
import android.os.SystemClock
|
||||
import android.support.v4.app.Fragment
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.fragment.app.Fragment
|
||||
import com.google.gson.Gson
|
||||
import com.google.gson.reflect.TypeToken
|
||||
import com.simplemobiletools.clock.R
|
||||
|
@ -12,11 +12,11 @@ import android.os.Build
|
||||
import android.os.Bundle
|
||||
import android.os.Handler
|
||||
import android.os.SystemClock
|
||||
import android.support.v4.app.Fragment
|
||||
import android.support.v4.app.NotificationCompat
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.core.app.NotificationCompat
|
||||
import androidx.fragment.app.Fragment
|
||||
import com.simplemobiletools.clock.R
|
||||
import com.simplemobiletools.clock.activities.ReminderActivity
|
||||
import com.simplemobiletools.clock.activities.SimpleActivity
|
||||
@ -27,7 +27,6 @@ import com.simplemobiletools.clock.helpers.TIMER_NOTIF_ID
|
||||
import com.simplemobiletools.commons.dialogs.SelectAlarmSoundDialog
|
||||
import com.simplemobiletools.commons.extensions.*
|
||||
import com.simplemobiletools.commons.helpers.ALARM_SOUND_TYPE_ALARM
|
||||
import com.simplemobiletools.commons.helpers.isLollipopPlus
|
||||
import com.simplemobiletools.commons.helpers.isOreoPlus
|
||||
import com.simplemobiletools.commons.models.AlarmSound
|
||||
import kotlinx.android.synthetic.main.fragment_timer.view.*
|
||||
@ -271,10 +270,7 @@ class TimerFragment : Fragment() {
|
||||
.setAutoCancel(true)
|
||||
.setChannelId(channelId)
|
||||
|
||||
if (isLollipopPlus()) {
|
||||
builder.setVisibility(Notification.VISIBILITY_PUBLIC)
|
||||
}
|
||||
|
||||
builder.setVisibility(Notification.VISIBILITY_PUBLIC)
|
||||
notificationManager.notify(TIMER_NOTIF_ID, builder.build())
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user