diff --git a/.idea/caches/build_file_checksums.ser b/.idea/caches/build_file_checksums.ser index 15ec0f7..9faaba0 100644 Binary files a/.idea/caches/build_file_checksums.ser and b/.idea/caches/build_file_checksums.ser differ diff --git a/app/build.gradle b/app/build.gradle index 66d5db6..85c017f 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -22,7 +22,7 @@ android { applicationId "com.tommasoberlose.anotherwidget" minSdkVersion 23 targetSdkVersion 29 - versionCode 90 + versionCode 91 versionName "2.0.9" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" diff --git a/app/release/app-release.aab b/app/release/app-release.aab index 33949e0..43e5701 100644 Binary files a/app/release/app-release.aab and b/app/release/app-release.aab differ diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index dfc784b..335e8f6 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -17,15 +17,15 @@ - + tools:ignore="LockedOrientationActivity" + android:fullBackupContent="@xml/backup_descriptor"> + diff --git a/app/src/main/java/com/tommasoberlose/anotherwidget/db/EventRepository.kt b/app/src/main/java/com/tommasoberlose/anotherwidget/db/EventRepository.kt index 55c1a31..5e63de8 100644 --- a/app/src/main/java/com/tommasoberlose/anotherwidget/db/EventRepository.kt +++ b/app/src/main/java/com/tommasoberlose/anotherwidget/db/EventRepository.kt @@ -22,6 +22,12 @@ class EventRepository(val context: Context) { } } + fun clearEvents() { + realm.executeTransaction { realm -> + realm.where(Event::class.java).findAll().deleteAllFromRealm() + } + } + fun resetNextEventData() { Preferences.bulk { remove(Preferences::nextEventId) diff --git a/app/src/main/java/com/tommasoberlose/anotherwidget/helpers/CalendarHelper.kt b/app/src/main/java/com/tommasoberlose/anotherwidget/helpers/CalendarHelper.kt index b96f456..307381a 100644 --- a/app/src/main/java/com/tommasoberlose/anotherwidget/helpers/CalendarHelper.kt +++ b/app/src/main/java/com/tommasoberlose/anotherwidget/helpers/CalendarHelper.kt @@ -102,6 +102,7 @@ object CalendarHelper { if (eventList.isEmpty()) { eventRepository.resetNextEventData() + eventRepository.clearEvents() } else { eventList.sortWith(Comparator { event: Event, event1: Event -> if (event.allDay && event1.allDay) { @@ -134,6 +135,7 @@ object CalendarHelper { MainWidget.updateWidget(context) EventBus.getDefault().post(MainFragment.UpdateUiMessageEvent()) + eventRepository.close() } fun getCalendarList(context: Context): List { 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 84bbe2a..5accf9d 100644 --- a/app/src/main/java/com/tommasoberlose/anotherwidget/helpers/GlanceProviderHelper.kt +++ b/app/src/main/java/com/tommasoberlose/anotherwidget/helpers/GlanceProviderHelper.kt @@ -79,12 +79,15 @@ object GlanceProviderHelper { } fun showGlanceProviders(context: Context): Boolean { - return Preferences.showGlance && EventRepository(context).getEventsCount() == 0 && ( + val eventRepository = EventRepository(context) + val showGlance = Preferences.showGlance && eventRepository.getEventsCount() == 0 && ( (Preferences.showNextAlarm && AlarmHelper.getNextAlarm(context) != "") || (MediaPlayerHelper.isSomeonePlaying(context)) || (Preferences.isBatteryLevelLow) || (Preferences.customNotes.isNotEmpty()) || (Preferences.showDailySteps && Preferences.googleFitSteps > 0) ) + eventRepository.close() + return showGlance } } \ No newline at end of file diff --git a/app/src/main/java/com/tommasoberlose/anotherwidget/helpers/WeatherHelper.kt b/app/src/main/java/com/tommasoberlose/anotherwidget/helpers/WeatherHelper.kt index dcbbe3d..ffb15fc 100644 --- a/app/src/main/java/com/tommasoberlose/anotherwidget/helpers/WeatherHelper.kt +++ b/app/src/main/java/com/tommasoberlose/anotherwidget/helpers/WeatherHelper.kt @@ -5,7 +5,6 @@ import android.content.Context import android.os.Build import com.google.android.gms.location.LocationServices import com.tommasoberlose.anotherwidget.R -import com.tommasoberlose.anotherwidget.db.EventRepository import com.tommasoberlose.anotherwidget.global.Constants import com.tommasoberlose.anotherwidget.global.Preferences import com.tommasoberlose.anotherwidget.network.WeatherNetworkApi diff --git a/app/src/main/java/com/tommasoberlose/anotherwidget/receivers/NewCalendarEventReceiver.kt b/app/src/main/java/com/tommasoberlose/anotherwidget/receivers/NewCalendarEventReceiver.kt index 9567036..3ff5e57 100644 --- a/app/src/main/java/com/tommasoberlose/anotherwidget/receivers/NewCalendarEventReceiver.kt +++ b/app/src/main/java/com/tommasoberlose/anotherwidget/receivers/NewCalendarEventReceiver.kt @@ -24,5 +24,6 @@ class NewCalendarEventReceiver : BroadcastReceiver() { eventRepository.goToPreviousEvent() } } + eventRepository.close() } } 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 e6577b4..d91ce02 100644 --- a/app/src/main/java/com/tommasoberlose/anotherwidget/receivers/UpdatesReceiver.kt +++ b/app/src/main/java/com/tommasoberlose/anotherwidget/receivers/UpdatesReceiver.kt @@ -59,6 +59,7 @@ class UpdatesReceiver : BroadcastReceiver() { setEventUpdate(context, event) } } + eventRepository.close() } private fun setEventUpdate(context: Context, event: Event) { @@ -135,9 +136,11 @@ class UpdatesReceiver : BroadcastReceiver() { fun removeUpdates(context: Context) { with(context.getSystemService(Context.ALARM_SERVICE) as AlarmManager) { - EventRepository(context).getEvents().forEach { + val eventRepository = EventRepository(context) + eventRepository.getEvents().forEach { cancel(PendingIntent.getBroadcast(context, it.eventID.toInt(), Intent(context, UpdatesReceiver::class.java), 0)) } + eventRepository.close() } } } diff --git a/app/src/main/java/com/tommasoberlose/anotherwidget/ui/activities/MainActivity.kt b/app/src/main/java/com/tommasoberlose/anotherwidget/ui/activities/MainActivity.kt index 66ecb7f..2c833d5 100644 --- a/app/src/main/java/com/tommasoberlose/anotherwidget/ui/activities/MainActivity.kt +++ b/app/src/main/java/com/tommasoberlose/anotherwidget/ui/activities/MainActivity.kt @@ -76,7 +76,9 @@ class MainActivity : AppCompatActivity() { viewModel = ViewModelProvider(this).get(MainViewModel::class.java) controlExtras(intent) - requirePermission() + if (Preferences.showWallpaper) { + requirePermission() + } } override fun onBackPressed() { diff --git a/app/src/main/java/com/tommasoberlose/anotherwidget/ui/fragments/GeneralTabFragment.kt b/app/src/main/java/com/tommasoberlose/anotherwidget/ui/fragments/GeneralTabFragment.kt index 319382d..f79eea6 100644 --- a/app/src/main/java/com/tommasoberlose/anotherwidget/ui/fragments/GeneralTabFragment.kt +++ b/app/src/main/java/com/tommasoberlose/anotherwidget/ui/fragments/GeneralTabFragment.kt @@ -321,7 +321,7 @@ class GeneralTabFragment : Fragment() { } action_show_dividers.setOnClickListener { - BottomSheetMenu(requireContext(), header = getString(R.string.settings_show_multiple_events_title)).setSelectedValue(Preferences.showDividers) + BottomSheetMenu(requireContext(), header = getString(R.string.settings_show_dividers_title)).setSelectedValue(Preferences.showDividers) .addItem(getString(R.string.settings_visible), true) .addItem(getString(R.string.settings_not_visible), false) .addOnSelectItemListener { value -> 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 05b0f0c..b9922b2 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 @@ -145,7 +145,7 @@ class MainFragment : Fragment(), SharedPreferences.OnSharedPreferenceChangeList ColorHelper.getBackgroundColor() ) ) - uiJob = viewLifecycleOwner.lifecycleScope.launch(Dispatchers.IO) { + uiJob = lifecycleScope.launch(Dispatchers.IO) { val generatedView = MainWidget.generateWidgetView(requireContext()) withContext(Dispatchers.Main) { @@ -230,10 +230,12 @@ class MainFragment : Fragment(), SharedPreferences.OnSharedPreferenceChangeList ).apply { duration = 500L addUpdateListener { - val animatedValue = animatedValue as Int - val layoutParams = preview.layoutParams - layoutParams.height = animatedValue - preview.layoutParams = layoutParams + if (preview != null) { + val animatedValue = animatedValue as Int + val layoutParams = preview.layoutParams + layoutParams.height = animatedValue + preview.layoutParams = layoutParams + } } }.start() } @@ -253,10 +255,12 @@ class MainFragment : Fragment(), SharedPreferences.OnSharedPreferenceChangeList ).apply { duration = 300L addUpdateListener { - val animatedValue = animatedValue as Int - val layoutParams = preview.layoutParams - layoutParams.height = animatedValue - preview?.layoutParams = layoutParams + if (preview != null) { + val animatedValue = animatedValue as Int + val layoutParams = preview.layoutParams + layoutParams.height = animatedValue + preview?.layoutParams = layoutParams + } } }.start() } @@ -264,8 +268,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() } @@ -278,10 +282,12 @@ class MainFragment : Fragment(), SharedPreferences.OnSharedPreferenceChangeList ).apply { duration = 300L addUpdateListener { - val animatedValue = animatedValue as Int - val layoutParams = preview.layoutParams - layoutParams.height = animatedValue - preview.layoutParams = layoutParams + if (preview != null) { + val animatedValue = animatedValue as Int + val layoutParams = preview.layoutParams + layoutParams.height = animatedValue + preview.layoutParams = layoutParams + } } }.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 487896f..d503fdf 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 @@ -36,6 +36,7 @@ import java.text.DateFormat import java.util.* import java.util.concurrent.TimeUnit import kotlin.math.min +import kotlin.math.roundToInt class MainWidget : AppWidgetProvider() { @@ -140,9 +141,8 @@ class MainWidget : AppWidgetProvider() { } private fun updateCalendarView(context: Context, v: View, views: RemoteViews, widgetID: Int): RemoteViews { + val eventRepository = EventRepository(context) try { - val eventRepository = EventRepository(context) - views.setImageViewBitmap( R.id.empty_date_rect, BitmapHelper.getBitmapFromView(v.empty_date, draw = false) @@ -340,6 +340,8 @@ class MainWidget : AppWidgetProvider() { } catch (ex: Exception) { ex.printStackTrace() CrashlyticsReceiver.sendCrash(context, ex) + } finally { + eventRepository.close() } return views @@ -698,7 +700,7 @@ class MainWidget : AppWidgetProvider() { v.weather.visibility = View.VISIBLE v.calendar_weather.visibility = View.VISIBLE v.special_weather.visibility = View.VISIBLE - val currentTemp = String.format(Locale.getDefault(), "%.0f °%s", Preferences.weatherTemp, Preferences.weatherRealTempUnit) + val currentTemp = String.format(Locale.getDefault(), "%d °%s", Preferences.weatherTemp.roundToInt(), Preferences.weatherRealTempUnit) val icon: String = Preferences.weatherIcon if (icon == "") { @@ -734,6 +736,8 @@ class MainWidget : AppWidgetProvider() { it.isVisible = Preferences.showDividers } + eventRepository.close() + return v } } diff --git a/app/src/main/res/layout/custom_notes_dialog_layout.xml b/app/src/main/res/layout/custom_notes_dialog_layout.xml index 74f4a27..1227e59 100644 --- a/app/src/main/res/layout/custom_notes_dialog_layout.xml +++ b/app/src/main/res/layout/custom_notes_dialog_layout.xml @@ -15,7 +15,7 @@ android:paddingBottom="8dp" android:paddingLeft="32dp" android:paddingRight="32dp" - android:textSize="16sp" + android:textSize="18sp" android:gravity="start" android:textAlignment="viewStart" android:id="@+id/header_text" diff --git a/app/src/main/res/layout/glance_provider_sort_bottom_menu.xml b/app/src/main/res/layout/glance_provider_sort_bottom_menu.xml index 77039db..3a20279 100644 --- a/app/src/main/res/layout/glance_provider_sort_bottom_menu.xml +++ b/app/src/main/res/layout/glance_provider_sort_bottom_menu.xml @@ -19,7 +19,7 @@ android:paddingBottom="8dp" android:paddingLeft="32dp" android:paddingRight="32dp" - android:textSize="16sp" + android:textSize="18sp" android:gravity="start" android:textAlignment="viewStart" android:id="@+id/header_text" diff --git a/app/src/main/res/xml/backup_descriptor.xml b/app/src/main/res/xml/backup_descriptor.xml new file mode 100644 index 0000000..45845c3 --- /dev/null +++ b/app/src/main/res/xml/backup_descriptor.xml @@ -0,0 +1,4 @@ + + + + diff --git a/app/src/main/res/xml/my_backup_rules.xml b/app/src/main/res/xml/my_backup_rules.xml deleted file mode 100644 index 231c813..0000000 --- a/app/src/main/res/xml/my_backup_rules.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file