11package com.simplemobiletools.flashlight.activities
22
3+ import android.annotation.SuppressLint
34import android.content.Intent
45import android.content.pm.ActivityInfo
6+ import android.content.pm.ShortcutInfo
7+ import android.graphics.drawable.Icon
8+ import android.graphics.drawable.LayerDrawable
59import android.os.Bundle
610import android.view.Menu
711import android.view.MenuItem
812import android.view.WindowManager
913import android.widget.ImageView
10- import android.widget.SeekBar
1114import com.simplemobiletools.commons.extensions.*
1215import com.simplemobiletools.commons.helpers.LICENSE_OTTO
1316import com.simplemobiletools.commons.helpers.PERMISSION_CAMERA
17+ import com.simplemobiletools.commons.helpers.isNougatMR1Plus
1418import com.simplemobiletools.commons.helpers.isNougatPlus
1519import com.simplemobiletools.commons.models.FAQItem
1620import com.simplemobiletools.flashlight.BuildConfig
@@ -22,6 +26,7 @@ import com.simplemobiletools.flashlight.models.Events
2226import com.squareup.otto.Bus
2327import com.squareup.otto.Subscribe
2428import kotlinx.android.synthetic.main.activity_main.*
29+ import java.util.*
2530
2631class MainActivity : SimpleActivity () {
2732 private val MAX_STROBO_DELAY = 2000L
@@ -85,6 +90,7 @@ class MainActivity : SimpleActivity() {
8590
8691 requestedOrientation = if (config.forcePortraitMode) ActivityInfo .SCREEN_ORIENTATION_PORTRAIT else ActivityInfo .SCREEN_ORIENTATION_SENSOR
8792 invalidateOptionsMenu()
93+ checkShortcuts()
8894 }
8995
9096 override fun onStart () {
@@ -148,10 +154,10 @@ class MainActivity : SimpleActivity() {
148154 val licenses = LICENSE_OTTO
149155
150156 val faqItems = arrayListOf (
151- FAQItem (R .string.faq_1_title_commons, R .string.faq_1_text_commons),
152- FAQItem (R .string.faq_4_title_commons, R .string.faq_4_text_commons),
153- FAQItem (R .string.faq_2_title_commons, R .string.faq_2_text_commons),
154- FAQItem (R .string.faq_6_title_commons, R .string.faq_6_text_commons)
157+ FAQItem (R .string.faq_1_title_commons, R .string.faq_1_text_commons),
158+ FAQItem (R .string.faq_4_title_commons, R .string.faq_4_text_commons),
159+ FAQItem (R .string.faq_2_title_commons, R .string.faq_2_text_commons),
160+ FAQItem (R .string.faq_6_title_commons, R .string.faq_6_text_commons)
155161 )
156162
157163 startAboutActivity(R .string.app_name, licenses, BuildConfig .VERSION_NAME , faqItems, true )
@@ -167,22 +173,12 @@ class MainActivity : SimpleActivity() {
167173 private fun setupStroboscope () {
168174 stroboscope_bar.max = (MAX_STROBO_DELAY - MIN_STROBO_DELAY ).toInt()
169175 stroboscope_bar.progress = config.stroboscopeProgress
170- stroboscope_bar.setOnSeekBarChangeListener(object : SeekBar .OnSeekBarChangeListener {
171- override fun onProgressChanged (seekBar : SeekBar , progress : Int , b : Boolean ) {
172- val frequency = stroboscope_bar.max - progress + MIN_STROBO_DELAY
173- mCameraImpl?.stroboFrequency = frequency
174- config.stroboscopeFrequency = frequency
175- config.stroboscopeProgress = progress
176- }
177-
178- override fun onStartTrackingTouch (seekBar : SeekBar ) {
179-
180- }
181-
182- override fun onStopTrackingTouch (seekBar : SeekBar ) {
183-
184- }
185- })
176+ stroboscope_bar.onSeekBarChangeListener { progress ->
177+ val frequency = stroboscope_bar.max - progress + MIN_STROBO_DELAY
178+ mCameraImpl?.stroboFrequency = frequency
179+ config.stroboscopeFrequency = frequency
180+ config.stroboscopeProgress = progress
181+ }
186182 }
187183
188184 private fun toggleStroboscope (isSOS : Boolean ) {
@@ -264,6 +260,37 @@ class MainActivity : SimpleActivity() {
264260 imageView!! .background.mutate().applyColorFilter(color)
265261 }
266262
263+ @SuppressLint(" NewApi" )
264+ private fun checkShortcuts () {
265+ val appIconColor = config.appIconColor
266+ if (isNougatMR1Plus() && config.lastHandledShortcutColor != appIconColor) {
267+ val createNewContact = getBrightDisplayShortcut(appIconColor)
268+
269+ try {
270+ shortcutManager.dynamicShortcuts = Arrays .asList(createNewContact)
271+ config.lastHandledShortcutColor = appIconColor
272+ } catch (ignored: Exception ) {
273+ }
274+ }
275+ }
276+
277+ @SuppressLint(" NewApi" )
278+ private fun getBrightDisplayShortcut (appIconColor : Int ): ShortcutInfo {
279+ val brightDisplay = getString(R .string.bright_display)
280+ val drawable = resources.getDrawable(R .drawable.shortcut_bright_display)
281+ (drawable as LayerDrawable ).findDrawableByLayerId(R .id.shortcut_bright_display_background).applyColorFilter(appIconColor)
282+ val bmp = drawable.convertToBitmap()
283+
284+ val intent = Intent (this , BrightDisplayActivity ::class .java)
285+ intent.action = Intent .ACTION_VIEW
286+ return ShortcutInfo .Builder (this , " bright_display" )
287+ .setShortLabel(brightDisplay)
288+ .setLongLabel(brightDisplay)
289+ .setIcon(Icon .createWithBitmap(bmp))
290+ .setIntent(intent)
291+ .build()
292+ }
293+
267294 @Subscribe
268295 fun cameraUnavailable (event : Events .CameraUnavailable ) {
269296 toast(R .string.camera_error)
0 commit comments