diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 39cca59..2392da2 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -40,7 +40,16 @@
android:theme="@style/AppTheme" />
+
+
+
+
+
+
@@ -79,7 +88,7 @@
android:parentActivityName="com.simplemobiletools.commons.activities.AboutActivity" />
@@ -90,6 +99,18 @@
android:resource="@xml/widget_torch" />
+
+
+
+
+
+
+
+
+ if (wasPositivePressed) {
+ mWidgetColorWithoutTransparency = color
+ updateColors()
+ }
+ }
+ }
+
+ private fun requestWidgetUpdate() {
+ Intent(AppWidgetManager.ACTION_APPWIDGET_UPDATE, null, this, MyWidgetTorchProvider::class.java).apply {
+ putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, intArrayOf(mWidgetId))
+ sendBroadcast(this)
+ }
+
+ updateBrightDisplayWidget()
+ }
+
+ private fun updateColors() {
+ mWidgetColor = mWidgetColorWithoutTransparency.adjustAlpha(mWidgetAlpha)
+ config_widget_color.setFillWithStroke(mWidgetColor, Color.BLACK)
+ config_image.background.mutate().applyColorFilter(mWidgetColor)
+ }
+
+ private val seekbarChangeListener = object : SeekBar.OnSeekBarChangeListener {
+ override fun onProgressChanged(seekBar: SeekBar, progress: Int, fromUser: Boolean) {
+ mWidgetAlpha = progress.toFloat() / 100.toFloat()
+ updateColors()
+ }
+
+ override fun onStartTrackingTouch(seekBar: SeekBar) {}
+
+ override fun onStopTrackingTouch(seekBar: SeekBar) {}
+ }
+}
diff --git a/app/src/main/kotlin/com/simplemobiletools/flashlight/extensions/Context.kt b/app/src/main/kotlin/com/simplemobiletools/flashlight/extensions/Context.kt
index 8c710b4..d6683d7 100644
--- a/app/src/main/kotlin/com/simplemobiletools/flashlight/extensions/Context.kt
+++ b/app/src/main/kotlin/com/simplemobiletools/flashlight/extensions/Context.kt
@@ -7,22 +7,32 @@ import android.content.Intent
import android.graphics.Bitmap
import android.graphics.Canvas
import android.graphics.drawable.Drawable
-import com.simplemobiletools.flashlight.helpers.Config
-import com.simplemobiletools.flashlight.helpers.IS_ENABLED
-import com.simplemobiletools.flashlight.helpers.MyWidgetProvider
-import com.simplemobiletools.flashlight.helpers.TOGGLE_WIDGET_UI
+import com.simplemobiletools.flashlight.helpers.*
val Context.config: Config get() = Config.newInstance(applicationContext)
fun Context.updateWidgets(isEnabled: Boolean) {
- val widgetIDs = AppWidgetManager.getInstance(applicationContext).getAppWidgetIds(ComponentName(applicationContext, MyWidgetProvider::class.java))
+ val widgetIDs = AppWidgetManager.getInstance(applicationContext).getAppWidgetIds(ComponentName(applicationContext, MyWidgetTorchProvider::class.java))
if (widgetIDs.isNotEmpty()) {
- Intent(applicationContext, MyWidgetProvider::class.java).apply {
+ Intent(applicationContext, MyWidgetTorchProvider::class.java).apply {
action = TOGGLE_WIDGET_UI
putExtra(IS_ENABLED, isEnabled)
sendBroadcast(this)
}
}
+
+ updateBrightDisplayWidget()
+}
+
+fun Context.updateBrightDisplayWidget() {
+ val widgetIDs = AppWidgetManager.getInstance(applicationContext).getAppWidgetIds(ComponentName(applicationContext, MyWidgetBrightDisplayProvider::class.java))
+ if (widgetIDs.isNotEmpty()) {
+ Intent(applicationContext, MyWidgetBrightDisplayProvider::class.java).apply {
+ action = AppWidgetManager.ACTION_APPWIDGET_UPDATE
+ putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, widgetIDs)
+ sendBroadcast(this)
+ }
+ }
}
fun Context.drawableToBitmap(drawable: Drawable): Bitmap {
diff --git a/app/src/main/kotlin/com/simplemobiletools/flashlight/helpers/MyWidgetBrightDisplayProvider.kt b/app/src/main/kotlin/com/simplemobiletools/flashlight/helpers/MyWidgetBrightDisplayProvider.kt
new file mode 100644
index 0000000..2a28a48
--- /dev/null
+++ b/app/src/main/kotlin/com/simplemobiletools/flashlight/helpers/MyWidgetBrightDisplayProvider.kt
@@ -0,0 +1,50 @@
+package com.simplemobiletools.flashlight.helpers
+
+import android.app.PendingIntent
+import android.appwidget.AppWidgetManager
+import android.appwidget.AppWidgetProvider
+import android.content.ComponentName
+import android.content.Context
+import android.content.Intent
+import android.graphics.Bitmap
+import android.graphics.Color
+import android.widget.RemoteViews
+import com.simplemobiletools.commons.extensions.getColoredDrawableWithColor
+import com.simplemobiletools.flashlight.R
+import com.simplemobiletools.flashlight.activities.BrightDisplayActivity
+import com.simplemobiletools.flashlight.extensions.config
+import com.simplemobiletools.flashlight.extensions.drawableToBitmap
+
+class MyWidgetBrightDisplayProvider : AppWidgetProvider() {
+ private val OPEN_APP_INTENT_ID = 1
+
+ override fun onUpdate(context: Context, appWidgetManager: AppWidgetManager, appWidgetIds: IntArray) {
+ appWidgetManager.getAppWidgetIds(getComponentName(context)).forEach {
+ RemoteViews(context.packageName, R.layout.widget_bright_display).apply {
+ setupAppOpenIntent(context, this)
+
+ val selectedColor = context.config.widgetBgColor
+ val alpha = Color.alpha(selectedColor)
+
+ val bmp = getColoredIcon(context, selectedColor, alpha)
+ setImageViewBitmap(R.id.bright_display_btn, bmp)
+
+ appWidgetManager.updateAppWidget(it, this)
+ }
+ }
+ }
+
+ private fun getComponentName(context: Context) = ComponentName(context, MyWidgetBrightDisplayProvider::class.java)
+
+ private fun setupAppOpenIntent(context: Context, views: RemoteViews) {
+ Intent(context, BrightDisplayActivity::class.java).apply {
+ val pendingIntent = PendingIntent.getActivity(context, OPEN_APP_INTENT_ID, this, PendingIntent.FLAG_UPDATE_CURRENT)
+ views.setOnClickPendingIntent(R.id.bright_display_btn, pendingIntent)
+ }
+ }
+
+ private fun getColoredIcon(context: Context, color: Int, alpha: Int): Bitmap {
+ val drawable = context.resources.getColoredDrawableWithColor(R.drawable.ic_bright_display, color, alpha)
+ return context.drawableToBitmap(drawable)
+ }
+}
diff --git a/app/src/main/kotlin/com/simplemobiletools/flashlight/helpers/MyWidgetProvider.kt b/app/src/main/kotlin/com/simplemobiletools/flashlight/helpers/MyWidgetTorchProvider.kt
similarity index 88%
rename from app/src/main/kotlin/com/simplemobiletools/flashlight/helpers/MyWidgetProvider.kt
rename to app/src/main/kotlin/com/simplemobiletools/flashlight/helpers/MyWidgetTorchProvider.kt
index a3c499f..6e2411a 100644
--- a/app/src/main/kotlin/com/simplemobiletools/flashlight/helpers/MyWidgetProvider.kt
+++ b/app/src/main/kotlin/com/simplemobiletools/flashlight/helpers/MyWidgetTorchProvider.kt
@@ -14,7 +14,7 @@ import com.simplemobiletools.flashlight.R
import com.simplemobiletools.flashlight.extensions.config
import com.simplemobiletools.flashlight.extensions.drawableToBitmap
-class MyWidgetProvider : AppWidgetProvider() {
+class MyWidgetTorchProvider : AppWidgetProvider() {
override fun onUpdate(context: Context, appWidgetManager: AppWidgetManager, appWidgetIds: IntArray) {
performUpdate(context)
}
@@ -22,8 +22,8 @@ class MyWidgetProvider : AppWidgetProvider() {
private fun performUpdate(context: Context) {
val selectedColor = context.config.widgetBgColor
val alpha = Color.alpha(selectedColor)
- val bmp = getColoredCircles(context, Color.WHITE, alpha)
- val intent = Intent(context, MyWidgetProvider::class.java)
+ val bmp = getColoredIcon(context, Color.WHITE, alpha)
+ val intent = Intent(context, MyWidgetTorchProvider::class.java)
intent.action = TOGGLE
val appWidgetManager = AppWidgetManager.getInstance(context)
@@ -37,7 +37,7 @@ class MyWidgetProvider : AppWidgetProvider() {
}
}
- private fun getComponentName(context: Context) = ComponentName(context, MyWidgetProvider::class.java)
+ private fun getComponentName(context: Context) = ComponentName(context, MyWidgetTorchProvider::class.java)
override fun onReceive(context: Context, intent: Intent) {
when (intent.action) {
@@ -57,7 +57,7 @@ class MyWidgetProvider : AppWidgetProvider() {
val widgetBgColor = context.config.widgetBgColor
val alpha = Color.alpha(widgetBgColor)
val selectedColor = if (enable) widgetBgColor else Color.WHITE
- val bmp = getColoredCircles(context, selectedColor, alpha)
+ val bmp = getColoredIcon(context, selectedColor, alpha)
val appWidgetManager = AppWidgetManager.getInstance(context)
appWidgetManager.getAppWidgetIds(getComponentName(context)).forEach {
@@ -68,7 +68,7 @@ class MyWidgetProvider : AppWidgetProvider() {
}
}
- private fun getColoredCircles(context: Context, color: Int, alpha: Int): Bitmap {
+ private fun getColoredIcon(context: Context, color: Int, alpha: Int): Bitmap {
val drawable = context.resources.getColoredDrawableWithColor(R.drawable.ic_flashlight, color, alpha)
return context.drawableToBitmap(drawable)
}
diff --git a/app/src/main/res/layout/widget_bright_display.xml b/app/src/main/res/layout/widget_bright_display.xml
new file mode 100644
index 0000000..5be026d
--- /dev/null
+++ b/app/src/main/res/layout/widget_bright_display.xml
@@ -0,0 +1,6 @@
+
+
diff --git a/app/src/main/res/layout/widget_bright_display_config.xml b/app/src/main/res/layout/widget_bright_display_config.xml
new file mode 100644
index 0000000..c947183
--- /dev/null
+++ b/app/src/main/res/layout/widget_bright_display_config.xml
@@ -0,0 +1,61 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/widget_config.xml b/app/src/main/res/layout/widget_torch_config.xml
similarity index 100%
rename from app/src/main/res/layout/widget_config.xml
rename to app/src/main/res/layout/widget_torch_config.xml
diff --git a/app/src/main/res/xml/widget_bright_display.xml b/app/src/main/res/xml/widget_bright_display.xml
new file mode 100644
index 0000000..3c865a4
--- /dev/null
+++ b/app/src/main/res/xml/widget_bright_display.xml
@@ -0,0 +1,8 @@
+
+
diff --git a/app/src/main/res/xml/widget_torch.xml b/app/src/main/res/xml/widget_torch.xml
index 723420c..68138ee 100644
--- a/app/src/main/res/xml/widget_torch.xml
+++ b/app/src/main/res/xml/widget_torch.xml
@@ -1,6 +1,6 @@