diff --git a/app/src/main/kotlin/com/simplemobiletools/clock/activities/SimpleActivity.kt b/app/src/main/kotlin/com/simplemobiletools/clock/activities/SimpleActivity.kt index dbd17a30..d39f35c5 100644 --- a/app/src/main/kotlin/com/simplemobiletools/clock/activities/SimpleActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/clock/activities/SimpleActivity.kt @@ -5,25 +5,25 @@ import com.simplemobiletools.commons.activities.BaseSimpleActivity open class SimpleActivity : BaseSimpleActivity() { override fun getAppIconIDs() = arrayListOf( - R.mipmap.ic_launcher_red, - R.mipmap.ic_launcher_pink, - R.mipmap.ic_launcher_purple, - R.mipmap.ic_launcher_deep_purple, - R.mipmap.ic_launcher_indigo, - R.mipmap.ic_launcher_blue, - R.mipmap.ic_launcher_light_blue, - R.mipmap.ic_launcher_cyan, - R.mipmap.ic_launcher_teal, - R.mipmap.ic_launcher_green, - R.mipmap.ic_launcher_light_green, - R.mipmap.ic_launcher_lime, - R.mipmap.ic_launcher_yellow, - R.mipmap.ic_launcher_amber, - R.mipmap.ic_launcher, - R.mipmap.ic_launcher_deep_orange, - R.mipmap.ic_launcher_brown, - R.mipmap.ic_launcher_blue_grey, - R.mipmap.ic_launcher_grey_black + R.mipmap.ic_launcher_red, + R.mipmap.ic_launcher_pink, + R.mipmap.ic_launcher_purple, + R.mipmap.ic_launcher_deep_purple, + R.mipmap.ic_launcher_indigo, + R.mipmap.ic_launcher_blue, + R.mipmap.ic_launcher_light_blue, + R.mipmap.ic_launcher_cyan, + R.mipmap.ic_launcher_teal, + R.mipmap.ic_launcher_green, + R.mipmap.ic_launcher_light_green, + R.mipmap.ic_launcher_lime, + R.mipmap.ic_launcher_yellow, + R.mipmap.ic_launcher_amber, + R.mipmap.ic_launcher, + R.mipmap.ic_launcher_deep_orange, + R.mipmap.ic_launcher_brown, + R.mipmap.ic_launcher_blue_grey, + R.mipmap.ic_launcher_grey_black ) override fun getAppLauncherName() = getString(R.string.app_launcher_name) diff --git a/app/src/main/kotlin/com/simplemobiletools/clock/activities/SplashActivity.kt b/app/src/main/kotlin/com/simplemobiletools/clock/activities/SplashActivity.kt index cb96e549..8b83ccb8 100644 --- a/app/src/main/kotlin/com/simplemobiletools/clock/activities/SplashActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/clock/activities/SplashActivity.kt @@ -13,6 +13,7 @@ class SplashActivity : BaseSplashActivity() { startActivity(this) } } + intent?.action == STOPWATCH_TOGGLE_ACTION -> { Intent(this, MainActivity::class.java).apply { putExtra(OPEN_TAB, TAB_STOPWATCH) @@ -20,6 +21,7 @@ class SplashActivity : BaseSplashActivity() { startActivity(this) } } + intent.extras?.containsKey(OPEN_TAB) == true -> { Intent(this, MainActivity::class.java).apply { putExtra(OPEN_TAB, intent.getIntExtra(OPEN_TAB, TAB_CLOCK)) @@ -27,6 +29,7 @@ class SplashActivity : BaseSplashActivity() { startActivity(this) } } + else -> startActivity(Intent(this, MainActivity::class.java)) } finish() diff --git a/app/src/main/kotlin/com/simplemobiletools/clock/adapters/TimerAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/clock/adapters/TimerAdapter.kt index 9641727e..d5bbe9ab 100644 --- a/app/src/main/kotlin/com/simplemobiletools/clock/adapters/TimerAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/clock/adapters/TimerAdapter.kt @@ -143,8 +143,11 @@ class TimerAdapter( val state = timer.state val resetPossible = state is TimerState.Running || state is TimerState.Paused || state is TimerState.Finished timerReset.beInvisibleIf(!resetPossible) - val drawableId = - if (state is TimerState.Running) com.simplemobiletools.commons.R.drawable.ic_pause_vector else com.simplemobiletools.commons.R.drawable.ic_play_vector + val drawableId = if (state is TimerState.Running) { + com.simplemobiletools.commons.R.drawable.ic_pause_vector + } else { + com.simplemobiletools.commons.R.drawable.ic_play_vector + } timerPlayPause.setImageDrawable(simpleActivity.resources.getColoredDrawableWithColor(drawableId, textColor)) } } diff --git a/app/src/main/kotlin/com/simplemobiletools/clock/adapters/ViewPagerAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/clock/adapters/ViewPagerAdapter.kt index f5517f93..8094f236 100644 --- a/app/src/main/kotlin/com/simplemobiletools/clock/adapters/ViewPagerAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/clock/adapters/ViewPagerAdapter.kt @@ -8,11 +8,7 @@ import com.simplemobiletools.clock.fragments.AlarmFragment import com.simplemobiletools.clock.fragments.ClockFragment import com.simplemobiletools.clock.fragments.StopwatchFragment import com.simplemobiletools.clock.fragments.TimerFragment -import com.simplemobiletools.clock.helpers.TABS_COUNT -import com.simplemobiletools.clock.helpers.TAB_ALARM -import com.simplemobiletools.clock.helpers.TAB_CLOCK -import com.simplemobiletools.clock.helpers.TAB_TIMER -import com.simplemobiletools.clock.helpers.TAB_STOPWATCH +import com.simplemobiletools.clock.helpers.* import com.simplemobiletools.commons.models.AlarmSound class ViewPagerAdapter(fm: FragmentManager) : FragmentStatePagerAdapter(fm) { diff --git a/app/src/main/kotlin/com/simplemobiletools/clock/dialogs/EditTimerDialog.kt b/app/src/main/kotlin/com/simplemobiletools/clock/dialogs/EditTimerDialog.kt index 07fe7445..e1d2be5d 100644 --- a/app/src/main/kotlin/com/simplemobiletools/clock/dialogs/EditTimerDialog.kt +++ b/app/src/main/kotlin/com/simplemobiletools/clock/dialogs/EditTimerDialog.kt @@ -3,7 +3,6 @@ package com.simplemobiletools.clock.dialogs import android.media.AudioManager import android.media.RingtoneManager import androidx.appcompat.app.AlertDialog -import com.simplemobiletools.clock.R import com.simplemobiletools.clock.activities.SimpleActivity import com.simplemobiletools.clock.databinding.DialogEditTimerBinding import com.simplemobiletools.clock.extensions.* diff --git a/app/src/main/kotlin/com/simplemobiletools/clock/extensions/Context.kt b/app/src/main/kotlin/com/simplemobiletools/clock/extensions/Context.kt index 293cc58a..bcf5dba7 100644 --- a/app/src/main/kotlin/com/simplemobiletools/clock/extensions/Context.kt +++ b/app/src/main/kotlin/com/simplemobiletools/clock/extensions/Context.kt @@ -490,7 +490,11 @@ fun Context.getAlarmNotification(pendingIntent: PendingIntent, alarm: Alarm): No .setDefaults(Notification.DEFAULT_LIGHTS) .setAutoCancel(true) .setChannelId(channelId) - .addAction(com.simplemobiletools.commons.R.drawable.ic_snooze_vector, getString(com.simplemobiletools.commons.R.string.snooze), getSnoozePendingIntent(alarm)) + .addAction( + com.simplemobiletools.commons.R.drawable.ic_snooze_vector, + getString(com.simplemobiletools.commons.R.string.snooze), + getSnoozePendingIntent(alarm) + ) .addAction(com.simplemobiletools.commons.R.drawable.ic_cross_vector, getString(com.simplemobiletools.commons.R.string.dismiss), dismissIntent) .setDeleteIntent(dismissIntent) .setVisibility(NotificationCompat.VISIBILITY_PUBLIC) diff --git a/app/src/main/kotlin/com/simplemobiletools/clock/extensions/Logs.kt b/app/src/main/kotlin/com/simplemobiletools/clock/extensions/Logs.kt index 4a662681..4638f6f9 100644 --- a/app/src/main/kotlin/com/simplemobiletools/clock/extensions/Logs.kt +++ b/app/src/main/kotlin/com/simplemobiletools/clock/extensions/Logs.kt @@ -3,5 +3,5 @@ package com.simplemobiletools.clock.extensions import android.util.Log import com.simplemobiletools.clock.BuildConfig -fun A.log(tag: String) = apply { if (BuildConfig.DEBUG) Log.wtf(tag, this.toString()) } +fun A.log(tag: String) = apply { if (BuildConfig.DEBUG) Log.wtf(tag, this.toString()) } fun A.log(first: String, tag: String) = apply { if (BuildConfig.DEBUG) Log.wtf(tag, first) } diff --git a/app/src/main/kotlin/com/simplemobiletools/clock/extensions/Long.kt b/app/src/main/kotlin/com/simplemobiletools/clock/extensions/Long.kt index d731ed59..6d8c546e 100644 --- a/app/src/main/kotlin/com/simplemobiletools/clock/extensions/Long.kt +++ b/app/src/main/kotlin/com/simplemobiletools/clock/extensions/Long.kt @@ -2,7 +2,8 @@ package com.simplemobiletools.clock.extensions import android.text.format.DateFormat import com.simplemobiletools.commons.extensions.getFormattedDuration -import java.util.* +import java.util.Calendar +import java.util.Locale import java.util.concurrent.TimeUnit import kotlin.math.roundToInt @@ -21,10 +22,12 @@ fun Long.formatStopwatchTime(useLongerMSFormat: Boolean): String { val format = "%02d:%02d:%02d.$MSFormat" String.format(format, hours, minutes, seconds, ms) } + minutes > 0 -> { val format = "%02d:%02d.$MSFormat" String.format(format, minutes, seconds, ms) } + else -> { val format = "%d.$MSFormat" String.format(format, seconds, ms) diff --git a/app/src/main/kotlin/com/simplemobiletools/clock/extensions/gson/RuntimeTypeAdapterFactory.java b/app/src/main/kotlin/com/simplemobiletools/clock/extensions/gson/RuntimeTypeAdapterFactory.java index ad5ce3d0..66097d89 100644 --- a/app/src/main/kotlin/com/simplemobiletools/clock/extensions/gson/RuntimeTypeAdapterFactory.java +++ b/app/src/main/kotlin/com/simplemobiletools/clock/extensions/gson/RuntimeTypeAdapterFactory.java @@ -198,9 +198,9 @@ public final class RuntimeTypeAdapterFactory implements TypeAdapterFactory { } final Map> labelToDelegate - = new LinkedHashMap>(); + = new LinkedHashMap>(); final Map, TypeAdapter> subtypeToDelegate - = new LinkedHashMap, TypeAdapter>(); + = new LinkedHashMap, TypeAdapter>(); for (Map.Entry> entry : labelToSubtype.entrySet()) { TypeAdapter delegate = gson.getDelegateAdapter(this, TypeToken.get(entry.getValue())); labelToDelegate.put(entry.getKey(), delegate); @@ -220,14 +220,14 @@ public final class RuntimeTypeAdapterFactory implements TypeAdapterFactory { if (labelJsonElement == null) { throw new JsonParseException("cannot deserialize " + baseType - + " because it does not define a field named " + typeFieldName); + + " because it does not define a field named " + typeFieldName); } String label = labelJsonElement.getAsString(); @SuppressWarnings("unchecked") // registration requires that subtype extends T - TypeAdapter delegate = (TypeAdapter) labelToDelegate.get(label); + TypeAdapter delegate = (TypeAdapter) labelToDelegate.get(label); if (delegate == null) { throw new JsonParseException("cannot deserialize " + baseType + " subtype named " - + label + "; did you forget to register a subtype?"); + + label + "; did you forget to register a subtype?"); } return delegate.fromJsonTree(jsonElement); } @@ -237,10 +237,10 @@ public final class RuntimeTypeAdapterFactory implements TypeAdapterFactory { Class srcType = value.getClass(); String label = subtypeToLabel.get(srcType); @SuppressWarnings("unchecked") // registration requires that subtype extends T - TypeAdapter delegate = (TypeAdapter) subtypeToDelegate.get(srcType); + TypeAdapter delegate = (TypeAdapter) subtypeToDelegate.get(srcType); if (delegate == null) { throw new JsonParseException("cannot serialize " + srcType.getName() - + "; did you forget to register a subtype?"); + + "; did you forget to register a subtype?"); } JsonObject jsonObject = delegate.toJsonTree(value).getAsJsonObject(); @@ -253,7 +253,7 @@ public final class RuntimeTypeAdapterFactory implements TypeAdapterFactory { if (jsonObject.has(typeFieldName)) { throw new JsonParseException("cannot serialize " + srcType.getName() - + " because it already defines a field named " + typeFieldName); + + " because it already defines a field named " + typeFieldName); } clone.add(typeFieldName, new JsonPrimitive(label)); diff --git a/app/src/main/kotlin/com/simplemobiletools/clock/extensions/gson/TypeAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/clock/extensions/gson/TypeAdapter.kt index 40e948af..86e2c63e 100644 --- a/app/src/main/kotlin/com/simplemobiletools/clock/extensions/gson/TypeAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/clock/extensions/gson/TypeAdapter.kt @@ -6,10 +6,10 @@ import com.google.gson.TypeAdapterFactory import com.simplemobiletools.clock.models.TimerState val timerStates = valueOf() - .registerSubtype(TimerState.Idle::class.java) - .registerSubtype(TimerState.Running::class.java) - .registerSubtype(TimerState.Paused::class.java) - .registerSubtype(TimerState.Finished::class.java) + .registerSubtype(TimerState.Idle::class.java) + .registerSubtype(TimerState.Running::class.java) + .registerSubtype(TimerState.Paused::class.java) + .registerSubtype(TimerState.Finished::class.java) inline fun valueOf(): RuntimeTypeAdapterFactory = RuntimeTypeAdapterFactory.of(T::class.java) diff --git a/app/src/main/kotlin/com/simplemobiletools/clock/helpers/Constants.kt b/app/src/main/kotlin/com/simplemobiletools/clock/helpers/Constants.kt index 46c8fddb..2622a49f 100644 --- a/app/src/main/kotlin/com/simplemobiletools/clock/helpers/Constants.kt +++ b/app/src/main/kotlin/com/simplemobiletools/clock/helpers/Constants.kt @@ -3,7 +3,9 @@ package com.simplemobiletools.clock.helpers import com.simplemobiletools.clock.extensions.isBitSet import com.simplemobiletools.clock.models.MyTimeZone import com.simplemobiletools.commons.extensions.addBit -import java.util.* +import java.util.Calendar +import java.util.Date +import java.util.TimeZone import kotlin.math.pow // shared preferences diff --git a/app/src/main/kotlin/com/simplemobiletools/clock/helpers/DBHelper.kt b/app/src/main/kotlin/com/simplemobiletools/clock/helpers/DBHelper.kt index fa00d23f..7f9d2450 100644 --- a/app/src/main/kotlin/com/simplemobiletools/clock/helpers/DBHelper.kt +++ b/app/src/main/kotlin/com/simplemobiletools/clock/helpers/DBHelper.kt @@ -12,7 +12,6 @@ import com.simplemobiletools.clock.models.Alarm import com.simplemobiletools.commons.extensions.getIntValue import com.simplemobiletools.commons.extensions.getStringValue import com.simplemobiletools.commons.helpers.* -import java.util.* class DBHelper private constructor(val context: Context) : SQLiteOpenHelper(context, DB_NAME, null, DB_VERSION) { private val ALARMS_TABLE_NAME = "contacts" // wrong table name, ignore it @@ -41,8 +40,10 @@ class DBHelper private constructor(val context: Context) : SQLiteOpenHelper(cont } override fun onCreate(db: SQLiteDatabase) { - db.execSQL("CREATE TABLE IF NOT EXISTS $ALARMS_TABLE_NAME ($COL_ID INTEGER PRIMARY KEY AUTOINCREMENT, $COL_TIME_IN_MINUTES INTEGER, $COL_DAYS INTEGER, " + - "$COL_IS_ENABLED INTEGER, $COL_VIBRATE INTEGER, $COL_SOUND_TITLE TEXT, $COL_SOUND_URI TEXT, $COL_LABEL TEXT)") + db.execSQL( + "CREATE TABLE IF NOT EXISTS $ALARMS_TABLE_NAME ($COL_ID INTEGER PRIMARY KEY AUTOINCREMENT, $COL_TIME_IN_MINUTES INTEGER, $COL_DAYS INTEGER, " + + "$COL_IS_ENABLED INTEGER, $COL_VIBRATE INTEGER, $COL_SOUND_TITLE TEXT, $COL_SOUND_URI TEXT, $COL_LABEL TEXT)" + ) insertInitialAlarms(db) } diff --git a/app/src/main/kotlin/com/simplemobiletools/clock/models/Lap.kt b/app/src/main/kotlin/com/simplemobiletools/clock/models/Lap.kt index 2dfc57ec..8c7914f0 100644 --- a/app/src/main/kotlin/com/simplemobiletools/clock/models/Lap.kt +++ b/app/src/main/kotlin/com/simplemobiletools/clock/models/Lap.kt @@ -16,11 +16,13 @@ data class Lap(val id: Int, var lapTime: Long, var totalTime: Long) : Comparable id > other.id -> 1 else -> -1 } + sorting and SORT_BY_LAP_TIME != 0 -> when { lapTime == other.lapTime -> 0 lapTime > other.lapTime -> 1 else -> -1 } + else -> when { totalTime == other.totalTime -> 0 totalTime > other.totalTime -> 1 diff --git a/app/src/main/kotlin/com/simplemobiletools/clock/receivers/AlarmReceiver.kt b/app/src/main/kotlin/com/simplemobiletools/clock/receivers/AlarmReceiver.kt index 39beb965..e14e2eb5 100644 --- a/app/src/main/kotlin/com/simplemobiletools/clock/receivers/AlarmReceiver.kt +++ b/app/src/main/kotlin/com/simplemobiletools/clock/receivers/AlarmReceiver.kt @@ -1,6 +1,5 @@ package com.simplemobiletools.clock.receivers -import android.app.Notification import android.app.NotificationChannel import android.app.NotificationManager import android.app.PendingIntent @@ -18,7 +17,6 @@ import com.simplemobiletools.clock.helpers.ALARM_ID import com.simplemobiletools.clock.helpers.ALARM_NOTIFICATION_CHANNEL_ID import com.simplemobiletools.clock.helpers.ALARM_NOTIF_ID import com.simplemobiletools.clock.helpers.EARLY_ALARM_NOTIF_ID -import com.simplemobiletools.commons.extensions.canUseFullScreenIntent import com.simplemobiletools.commons.extensions.showErrorToast import com.simplemobiletools.commons.helpers.isOreoPlus diff --git a/app/src/main/kotlin/com/simplemobiletools/clock/receivers/EarlyAlarmDismissalReceiver.kt b/app/src/main/kotlin/com/simplemobiletools/clock/receivers/EarlyAlarmDismissalReceiver.kt index fceeba4b..00909356 100644 --- a/app/src/main/kotlin/com/simplemobiletools/clock/receivers/EarlyAlarmDismissalReceiver.kt +++ b/app/src/main/kotlin/com/simplemobiletools/clock/receivers/EarlyAlarmDismissalReceiver.kt @@ -18,7 +18,7 @@ import com.simplemobiletools.commons.helpers.isOreoPlus class EarlyAlarmDismissalReceiver : BroadcastReceiver() { - override fun onReceive(context: Context, intent: Intent) { + override fun onReceive(context: Context, intent: Intent) { val alarmId = intent.getIntExtra(ALARM_ID, -1) if (alarmId == -1) { return diff --git a/app/src/main/kotlin/com/simplemobiletools/clock/receivers/HideTimerReceiver.kt b/app/src/main/kotlin/com/simplemobiletools/clock/receivers/HideTimerReceiver.kt index e13fd0cd..2207f3eb 100644 --- a/app/src/main/kotlin/com/simplemobiletools/clock/receivers/HideTimerReceiver.kt +++ b/app/src/main/kotlin/com/simplemobiletools/clock/receivers/HideTimerReceiver.kt @@ -13,6 +13,6 @@ class HideTimerReceiver : BroadcastReceiver() { override fun onReceive(context: Context, intent: Intent) { val timerId = intent.getIntExtra(TIMER_ID, INVALID_TIMER_ID) context.hideTimerNotification(timerId) - EventBus.getDefault().post(TimerEvent.Reset(timerId, )) + EventBus.getDefault().post(TimerEvent.Reset(timerId)) } }