diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 335e8f6..89c42be 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -116,6 +116,8 @@
+
+
@@ -131,6 +133,7 @@
+
diff --git a/app/src/main/java/com/tommasoberlose/anotherwidget/global/Preferences.kt b/app/src/main/java/com/tommasoberlose/anotherwidget/global/Preferences.kt
index e2a8182..033ad2d 100755
--- a/app/src/main/java/com/tommasoberlose/anotherwidget/global/Preferences.kt
+++ b/app/src/main/java/com/tommasoberlose/anotherwidget/global/Preferences.kt
@@ -91,6 +91,7 @@ object Preferences : KotprefModel() {
var showNextAlarm by booleanPref(default = true)
var showBatteryCharging by booleanPref(default = false)
var isBatteryLevelLow by booleanPref(default = false)
+ var isCharging by booleanPref(default = false)
var googleFitSteps by longPref(default = -1)
var showDailySteps by booleanPref(default = false)
diff --git a/app/src/main/java/com/tommasoberlose/anotherwidget/helpers/BatteryHelper.kt b/app/src/main/java/com/tommasoberlose/anotherwidget/helpers/BatteryHelper.kt
new file mode 100644
index 0000000..e75ad7c
--- /dev/null
+++ b/app/src/main/java/com/tommasoberlose/anotherwidget/helpers/BatteryHelper.kt
@@ -0,0 +1,23 @@
+package com.tommasoberlose.anotherwidget.helpers
+
+import android.content.Context
+import android.content.Context.BATTERY_SERVICE
+import android.os.BatteryManager
+import androidx.core.content.ContextCompat.getSystemService
+import com.tommasoberlose.anotherwidget.global.Preferences
+
+
+object BatteryHelper {
+ fun updateBatteryInfo(context: Context) {
+ with(context.getSystemService(BATTERY_SERVICE) as BatteryManager) {
+ Preferences.isBatteryLevelLow = getIntProperty(BatteryManager.BATTERY_PROPERTY_CAPACITY) <= 15
+ Preferences.isCharging = isCharging
+ }
+ }
+
+ fun getBatteryLevel(context: Context): Int {
+ with(context.getSystemService(BATTERY_SERVICE) as BatteryManager) {
+ return getIntProperty(BatteryManager.BATTERY_PROPERTY_CAPACITY)
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/tommasoberlose/anotherwidget/helpers/GlanceProviderHelper.kt b/app/src/main/java/com/tommasoberlose/anotherwidget/helpers/GlanceProviderHelper.kt
index 5accf9d..a179cc0 100644
--- a/app/src/main/java/com/tommasoberlose/anotherwidget/helpers/GlanceProviderHelper.kt
+++ b/app/src/main/java/com/tommasoberlose/anotherwidget/helpers/GlanceProviderHelper.kt
@@ -14,7 +14,6 @@ object GlanceProviderHelper {
val enabledProviders = Preferences.enabledGlanceProviderOrder.split(",").filter { it != "" }
val providers = Constants.GlanceProviderId.values()
- .filter { it != Constants.GlanceProviderId.BATTERY_LEVEL_LOW }
.filter {
context.checkIfFitInstalled() || it != Constants.GlanceProviderId.GOOGLE_FIT_STEPS
}.toTypedArray()
@@ -80,10 +79,11 @@ object GlanceProviderHelper {
fun showGlanceProviders(context: Context): Boolean {
val eventRepository = EventRepository(context)
+ BatteryHelper.updateBatteryInfo(context)
val showGlance = Preferences.showGlance && eventRepository.getEventsCount() == 0 && (
(Preferences.showNextAlarm && AlarmHelper.getNextAlarm(context) != "") ||
(MediaPlayerHelper.isSomeonePlaying(context)) ||
- (Preferences.isBatteryLevelLow) ||
+ (Preferences.showBatteryCharging && Preferences.isCharging || Preferences.isBatteryLevelLow) ||
(Preferences.customNotes.isNotEmpty()) ||
(Preferences.showDailySteps && Preferences.googleFitSteps > 0)
)
diff --git a/app/src/main/java/com/tommasoberlose/anotherwidget/helpers/IntentHelper.kt b/app/src/main/java/com/tommasoberlose/anotherwidget/helpers/IntentHelper.kt
index d122242..8b00585 100644
--- a/app/src/main/java/com/tommasoberlose/anotherwidget/helpers/IntentHelper.kt
+++ b/app/src/main/java/com/tommasoberlose/anotherwidget/helpers/IntentHelper.kt
@@ -182,6 +182,10 @@ object IntentHelper {
}
}
+ fun getBatteryIntent(context: Context): Intent {
+ return Intent(Intent.ACTION_POWER_USAGE_SUMMARY)
+ }
+
fun getMusicIntent(context: Context): Intent {
return when (Preferences.mediaPlayerPackage) {
"" -> {
diff --git a/app/src/main/java/com/tommasoberlose/anotherwidget/receivers/BatteryLevelReceiver.kt b/app/src/main/java/com/tommasoberlose/anotherwidget/receivers/BatteryLevelReceiver.kt
index 9acba62..51802d9 100644
--- a/app/src/main/java/com/tommasoberlose/anotherwidget/receivers/BatteryLevelReceiver.kt
+++ b/app/src/main/java/com/tommasoberlose/anotherwidget/receivers/BatteryLevelReceiver.kt
@@ -7,12 +7,15 @@ import android.os.BatteryManager
import android.util.Log
import com.tommasoberlose.anotherwidget.global.Preferences
import com.tommasoberlose.anotherwidget.ui.widgets.MainWidget
+import com.tommasoberlose.anotherwidget.utils.toast
class BatteryLevelReceiver : BroadcastReceiver() {
override fun onReceive(context: Context, intent: Intent) {
when(intent.action) {
Intent.ACTION_BATTERY_LOW -> Preferences.isBatteryLevelLow = true
Intent.ACTION_BATTERY_OKAY -> Preferences.isBatteryLevelLow = false
+ Intent.ACTION_POWER_CONNECTED -> Preferences.isCharging = true
+ Intent.ACTION_POWER_DISCONNECTED -> Preferences.isCharging = false
}
MainWidget.updateWidget(context)
}
diff --git a/app/src/main/java/com/tommasoberlose/anotherwidget/receivers/UpdatesReceiver.kt b/app/src/main/java/com/tommasoberlose/anotherwidget/receivers/UpdatesReceiver.kt
index d91ce02..f9c4e85 100644
--- a/app/src/main/java/com/tommasoberlose/anotherwidget/receivers/UpdatesReceiver.kt
+++ b/app/src/main/java/com/tommasoberlose/anotherwidget/receivers/UpdatesReceiver.kt
@@ -12,6 +12,7 @@ import com.tommasoberlose.anotherwidget.db.EventRepository
import com.tommasoberlose.anotherwidget.global.Actions
import com.tommasoberlose.anotherwidget.global.Constants
import com.tommasoberlose.anotherwidget.global.Preferences
+import com.tommasoberlose.anotherwidget.helpers.BatteryHelper
import com.tommasoberlose.anotherwidget.helpers.CalendarHelper
import com.tommasoberlose.anotherwidget.models.Event
import com.tommasoberlose.anotherwidget.ui.widgets.MainWidget
@@ -28,7 +29,9 @@ class UpdatesReceiver : BroadcastReceiver() {
Intent.ACTION_TIME_CHANGED,
Intent.ACTION_TIMEZONE_CHANGED,
Intent.ACTION_LOCALE_CHANGED,
- Actions.ACTION_CALENDAR_UPDATE -> CalendarHelper.updateEventList(context)
+ Actions.ACTION_CALENDAR_UPDATE -> {
+ CalendarHelper.updateEventList(context)
+ }
"com.sec.android.widgetapp.APPWIDGET_RESIZE",
Intent.ACTION_DATE_CHANGED,
diff --git a/app/src/main/java/com/tommasoberlose/anotherwidget/services/BatteryListenerJob.kt b/app/src/main/java/com/tommasoberlose/anotherwidget/services/BatteryListenerJob.kt
new file mode 100644
index 0000000..a726a99
--- /dev/null
+++ b/app/src/main/java/com/tommasoberlose/anotherwidget/services/BatteryListenerJob.kt
@@ -0,0 +1,61 @@
+package com.tommasoberlose.anotherwidget.services
+
+import android.app.job.JobInfo
+import android.app.job.JobParameters
+import android.app.job.JobScheduler
+import android.app.job.JobService
+import android.content.ComponentName
+import android.content.Context
+import android.os.Build
+import android.provider.CalendarContract
+import com.tommasoberlose.anotherwidget.helpers.CalendarHelper
+import com.tommasoberlose.anotherwidget.ui.widgets.MainWidget
+
+class BatteryListenerJob : JobService() {
+ override fun onStartJob(params: JobParameters): Boolean {
+ MainWidget.updateWidget(this)
+ schedule(
+ this
+ )
+ return false
+ }
+
+ @Synchronized
+ override fun onStopJob(params: JobParameters): Boolean {
+ return false
+ }
+
+ companion object {
+ private const val chargingJobId = 1006
+ private const val notChargingJobId = 1007
+ fun schedule(context: Context) {
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
+ remove(context)
+ val componentName = ComponentName(
+ context,
+ EventListenerJob::class.java
+ )
+ with(context.getSystemService(Context.JOB_SCHEDULER_SERVICE) as JobScheduler) {
+ schedule(
+ JobInfo.Builder(chargingJobId, componentName)
+ .setRequiresCharging(true)
+ .setPersisted(true)
+ .build()
+ )
+ schedule(
+ JobInfo.Builder(notChargingJobId, componentName)
+ .setRequiresCharging(false)
+ .setPersisted(true)
+ .build()
+ )
+ }
+ }
+ }
+
+ fun remove(context: Context) {
+ val js = context.getSystemService(JobScheduler::class.java)
+ js?.cancel(chargingJobId)
+ js?.cancel(notChargingJobId)
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/tommasoberlose/anotherwidget/ui/fragments/MainFragment.kt b/app/src/main/java/com/tommasoberlose/anotherwidget/ui/fragments/MainFragment.kt
index b9922b2..8566a62 100644
--- a/app/src/main/java/com/tommasoberlose/anotherwidget/ui/fragments/MainFragment.kt
+++ b/app/src/main/java/com/tommasoberlose/anotherwidget/ui/fragments/MainFragment.kt
@@ -36,6 +36,7 @@ import com.tommasoberlose.anotherwidget.helpers.BitmapHelper
import com.tommasoberlose.anotherwidget.helpers.ColorHelper
import com.tommasoberlose.anotherwidget.helpers.ColorHelper.isColorDark
import com.tommasoberlose.anotherwidget.ui.activities.MainActivity
+import com.tommasoberlose.anotherwidget.ui.activities.SupportDevActivity
import com.tommasoberlose.anotherwidget.ui.adapters.ViewPagerAdapter
import com.tommasoberlose.anotherwidget.ui.viewmodels.MainViewModel
import com.tommasoberlose.anotherwidget.ui.widgets.MainWidget
@@ -268,8 +269,8 @@ class MainFragment : Fragment(), SharedPreferences.OnSharedPreferenceChangeList
widget_loader?.animate()?.scaleX(0f)?.scaleY(0f)?.alpha(0f)?.setDuration(200L)?.start()
bitmap_container?.apply {
setImageBitmap(bitmap)
-// scaleX = 0.9f
-// scaleY = 0.9f
+ scaleX = 0.9f
+ scaleY = 0.9f
}
widget?.animate()?.alpha(1f)?.start()
}
diff --git a/app/src/main/java/com/tommasoberlose/anotherwidget/ui/widgets/MainWidget.kt b/app/src/main/java/com/tommasoberlose/anotherwidget/ui/widgets/MainWidget.kt
index d503fdf..68f8038 100644
--- a/app/src/main/java/com/tommasoberlose/anotherwidget/ui/widgets/MainWidget.kt
+++ b/app/src/main/java/com/tommasoberlose/anotherwidget/ui/widgets/MainWidget.kt
@@ -291,15 +291,18 @@ class MainWidget : AppWidgetProvider() {
}
}
Constants.GlanceProviderId.BATTERY_LEVEL_LOW -> {
- if (Preferences.isBatteryLevelLow) {
- val alarmIntent = PendingIntent.getActivity(
- context,
- widgetID,
- IntentHelper.getClockIntent(context),
- 0
- )
- views.setOnClickPendingIntent(R.id.second_row_rect, alarmIntent)
- break@loop
+ if (Preferences.showBatteryCharging) {
+ BatteryHelper.updateBatteryInfo(context)
+ if (Preferences.isCharging || Preferences.isBatteryLevelLow) {
+ val batteryIntent = PendingIntent.getActivity(
+ context,
+ widgetID,
+ IntentHelper.getBatteryIntent(context),
+ 0
+ )
+ views.setOnClickPendingIntent(R.id.second_row_rect, batteryIntent)
+ break@loop
+ }
}
}
Constants.GlanceProviderId.CUSTOM_INFO -> {
@@ -562,15 +565,24 @@ class MainWidget : AppWidgetProvider() {
}
}
Constants.GlanceProviderId.BATTERY_LEVEL_LOW -> {
- if (Preferences.isBatteryLevelLow) {
- v.second_row_icon.setImageDrawable(
- ContextCompat.getDrawable(
- context,
- R.drawable.round_battery_charging_full
- )
- )
- v.next_event_date.text = context.getString(R.string.battery_low_warning)
- break@loop
+ Log.d("ciao", "isChargin: ${Preferences.isCharging} ")
+ if (Preferences.showBatteryCharging) {
+ BatteryHelper.updateBatteryInfo(context)
+ if (Preferences.isCharging) {
+ v.second_row_icon.isVisible = false
+ val batteryLevel = BatteryHelper.getBatteryLevel(context)
+ if (batteryLevel == 100) {
+ v.next_event_date.text = "%s - %d%%".format(context.getString(R.string.charging), batteryLevel)
+ } else {
+ v.next_event_date.text = context.getString(R.string.charging)
+ }
+ break@loop
+ } else if (Preferences.isBatteryLevelLow) {
+ v.second_row_icon.isVisible = false
+ v.next_event_date.text =
+ context.getString(R.string.battery_low_warning)
+ break@loop
+ }
}
}
Constants.GlanceProviderId.CUSTOM_INFO -> {
diff --git a/app/src/main/res/layout/fragment_clock_settings.xml b/app/src/main/res/layout/fragment_clock_settings.xml
index 1ed40a2..a89db9b 100644
--- a/app/src/main/res/layout/fragment_clock_settings.xml
+++ b/app/src/main/res/layout/fragment_clock_settings.xml
@@ -298,27 +298,27 @@
style="@style/AnotherWidget.Settings.Subtitle"/>
-
-
-
+ android:id="@+id/small_clock_warning"
+ android:orientation="vertical">
+
+
diff --git a/app/src/main/res/layout/fragment_glance_settings.xml b/app/src/main/res/layout/fragment_glance_settings.xml
index 4b6474b..b39883b 100644
--- a/app/src/main/res/layout/fragment_glance_settings.xml
+++ b/app/src/main/res/layout/fragment_glance_settings.xml
@@ -74,6 +74,56 @@
android:id="@+id/calendar_settings"
android:alpha="@{isGlanceVisible ? 1f : 0.2f, default=1}"
android:orientation="vertical">
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index cd9f5fd..1f47bc7 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -118,7 +118,7 @@
Clock visibility
Clock is hidden
Clock text size
- Next clock Alarm
+ Next clock alarm
Show the next clock alarm
Text shadow
None
@@ -213,14 +213,15 @@
Integrations
%d installed integrations
Show at a glance info
- Show multiple provider data when there are no events displayed.
+ Show some useful info
Show text dividers
Data source priority
Change the data provider importance
Custom notes
- Battery level
+ Battery
Daily steps
Low battery level
+ Charging
Show AM/PM Indicator
%d steps so far
soon