diff --git a/.idea/caches/build_file_checksums.ser b/.idea/caches/build_file_checksums.ser index 0343a7c..5374b1a 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 93d15b2..0741efe 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -18,7 +18,7 @@ android { applicationId "com.tommasoberlose.anotherwidget" minSdkVersion 23 targetSdkVersion 29 - versionCode 71 + versionCode 74 versionName "2.0.5" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" diff --git a/app/release/app-release.aab b/app/release/app-release.aab index 4c7b4de..1776539 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 2abaaa1..41a05f7 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -13,6 +13,7 @@ + android:exported="true" + tools:ignore="ExportedReceiver"> @@ -126,6 +128,15 @@ + + + + + + diff --git a/app/src/main/java/com/tommasoberlose/anotherwidget/components/BottomSheetColorPicker.kt b/app/src/main/java/com/tommasoberlose/anotherwidget/components/BottomSheetColorPicker.kt index cf140cb..beda22c 100644 --- a/app/src/main/java/com/tommasoberlose/anotherwidget/components/BottomSheetColorPicker.kt +++ b/app/src/main/java/com/tommasoberlose/anotherwidget/components/BottomSheetColorPicker.kt @@ -8,18 +8,23 @@ import android.text.TextWatcher import android.util.Log import android.view.View import android.widget.GridLayout +import android.widget.ImageView import android.widget.SeekBar import androidx.annotation.ColorInt +import androidx.appcompat.widget.AppCompatImageView import androidx.core.content.ContextCompat import androidx.core.view.isVisible import androidx.core.widget.addTextChangedListener +import androidx.recyclerview.widget.GridLayoutManager import com.google.android.material.bottomsheet.BottomSheetBehavior import com.google.android.material.bottomsheet.BottomSheetDialog +import com.google.android.material.card.MaterialCardView import com.tommasoberlose.anotherwidget.R import com.tommasoberlose.anotherwidget.helpers.ColorHelper import com.tommasoberlose.anotherwidget.helpers.ColorHelper.isColorDark import com.tommasoberlose.anotherwidget.utils.expand import com.tommasoberlose.anotherwidget.utils.reveal +import com.tommasoberlose.anotherwidget.utils.toPixel import com.warkiz.widget.IndicatorSeekBar import com.warkiz.widget.OnSeekChangeListener import com.warkiz.widget.SeekParams @@ -28,13 +33,14 @@ import kotlinx.android.synthetic.main.bottom_sheet_menu_hor.view.* import kotlinx.android.synthetic.main.bottom_sheet_menu_hor.view.color_loader import kotlinx.android.synthetic.main.color_picker_menu_item.view.* import kotlinx.coroutines.* +import net.idik.lib.slimadapter.SlimAdapter import java.lang.Exception import java.util.prefs.Preferences class BottomSheetColorPicker( context: Context, private val colors: IntArray = intArrayOf(), - private val selected: Int? = null, + private val getSelected: (() -> Int)? = null, private val header: String? = null, private val onColorSelected: ((selectedValue: Int) -> Unit)? = null, private val showAlphaSelector: Boolean = false, @@ -42,15 +48,19 @@ class BottomSheetColorPicker( private val onAlphaChangeListener: ((alpha: Int) -> Unit)? = null ) : BottomSheetDialog(context, R.style.BottomSheetDialogTheme) { - private val loadingJob: Job? = null + private var loadingJobs: ArrayList = ArrayList() + private lateinit var adapter: SlimAdapter override fun show() { val view = View.inflate(context, R.layout.bottom_sheet_menu_hor, null) + window?.setDimAmount(0f) + // Header view.header.isVisible = header != null view.header_text.text = header ?: "" + // Alpha view.alpha_selector_container.isVisible = showAlphaSelector view.alpha_selector.setProgress(alpha.toFloat()) view.text_alpha.text = "%s: %s%%".format(context.getString(R.string.alpha), alpha) @@ -67,44 +77,72 @@ class BottomSheetColorPicker( } } - val itemViews: ArrayList = ArrayList() + // List - GlobalScope.launch(Dispatchers.IO) { - for (@ColorInt color: Int in colors) { - val itemView = View.inflate(context, R.layout.color_picker_menu_item, null) - itemView.color.setCardBackgroundColor(ColorStateList.valueOf(color)) - itemView.check.setColorFilter(ContextCompat.getColor(context, - if (color.isColorDark()) android.R.color.white else android.R.color.black - ), android.graphics.PorterDuff.Mode.MULTIPLY) - itemView.check.isVisible = selected == color - itemView.color.setOnClickListener { - onColorSelected?.invoke(color) - this@BottomSheetColorPicker.dismiss() + view.menu.setHasFixedSize(true) + val mLayoutManager = GridLayoutManager(context, 6) + view.menu.layoutManager = mLayoutManager + + adapter = SlimAdapter.create() + + adapter + .register(R.layout.color_picker_menu_item) { item, injector -> + injector + .with(R.id.color) { + loadingJobs.add(GlobalScope.launch(Dispatchers.IO) { + val colorList = ColorStateList.valueOf(item) + withContext(Dispatchers.Main) { + it.setCardBackgroundColor(colorList) + } + }) + } + .with(R.id.check) { + if (getSelected?.invoke() == item) { + loadingJobs.add(GlobalScope.launch(Dispatchers.IO) { + val colorList = ContextCompat.getColor( + context, + if (item.isColorDark()) android.R.color.white else android.R.color.black + ) + withContext(Dispatchers.Main) { + it.setColorFilter( + colorList, + android.graphics.PorterDuff.Mode.MULTIPLY + ) + it.isVisible = true + } + }) + } else { + it.isVisible = false + } + } + injector.clicked(R.id.color) { + adapter.notifyItemChanged(adapter.data.indexOf(getSelected?.invoke())) + onColorSelected?.invoke(item) + val position = adapter.data.indexOf(item) + adapter.notifyItemChanged(position) + (view.menu.layoutManager as GridLayoutManager).scrollToPositionWithOffset(position,0) } - itemViews.add(itemView) } + .attachTo(view.menu) + + loadingJobs.add(GlobalScope.launch(Dispatchers.IO) { + + adapter.updateData(colors.toList()) withContext(Dispatchers.Main) { - itemViews.forEach { - view.menu.addView(it, GridLayout.LayoutParams( - GridLayout.spec(GridLayout.UNDEFINED, 1f), - GridLayout.spec(GridLayout.UNDEFINED, 1f) - )) - } - color_loader.isVisible = false - view.menu.isVisible = true + view.color_loader.isVisible = false this@BottomSheetColorPicker.behavior.state = BottomSheetBehavior.STATE_EXPANDED +// this@BottomSheetColorPicker.behavior.isFitToContents = false + view.menu.isVisible = true } - } - - // Menu + }) setContentView(view) super.show() } override fun onStop() { - loadingJob?.cancel() + loadingJobs.forEach { it.cancel() } super.onStop() } diff --git a/app/src/main/java/com/tommasoberlose/anotherwidget/global/Actions.kt b/app/src/main/java/com/tommasoberlose/anotherwidget/global/Actions.kt index e70a6b5..9e774c6 100644 --- a/app/src/main/java/com/tommasoberlose/anotherwidget/global/Actions.kt +++ b/app/src/main/java/com/tommasoberlose/anotherwidget/global/Actions.kt @@ -4,10 +4,11 @@ object Actions { const val ACTION_EXTRA_OPEN_WEATHER_PROVIDER = "ACTION_EXTRA_OPEN_WEATHER_PROVIDER" const val ACTION_EXTRA_DISABLE_GPS_NOTIFICATION = "ACTION_EXTRA_DISABLE_GPS_NOTIFICATION" - const val ACTION_TIME_UPDATE = "com.tommasoberlose.anotherwidget.action.ACTION_TIME_UPDATE" - const val ACTION_CALENDAR_UPDATE = "com.tommasoberlose.anotherwidget.action.ACTION_CALENDAR_UPDATE" - const val ACTION_WEATHER_UPDATE = "com.tommasoberlose.anotherwidget.action.ACTION_WEATHER_UPDATE" - const val ACTION_OPEN_WEATHER_INTENT = "com.tommasoberlose.anotherwidget.action.ACTION_OPEN_WEATHER_INTENT" + const val ACTION_TIME_UPDATE = "com.tommasoberlose.anotherwidget.action.TIME_UPDATE" + const val ACTION_CALENDAR_UPDATE = "com.tommasoberlose.anotherwidget.action.CALENDAR_UPDATE" + const val ACTION_WEATHER_UPDATE = "com.tommasoberlose.anotherwidget.action.WEATHER_UPDATE" + const val ACTION_OPEN_WEATHER_INTENT = "com.tommasoberlose.anotherwidget.action.OPEN_WEATHER_INTENT" const val ACTION_GO_TO_NEXT_EVENT = "com.tommasoberlose.anotherwidget.action.GO_TO_NEXT_EVENT" const val ACTION_GO_TO_PREVIOUS_EVENT = "com.tommasoberlose.anotherwidget.action.GO_TO_PREVIOUS_EVENT" + const val ACTION_REPORT_CRASH = "com.tommasoberlose.anotherwidget.action.REPORT_CRASH" } \ No newline at end of file diff --git a/app/src/main/java/com/tommasoberlose/anotherwidget/helpers/BitmapHelper.kt b/app/src/main/java/com/tommasoberlose/anotherwidget/helpers/BitmapHelper.kt index 3073d0c..d633335 100644 --- a/app/src/main/java/com/tommasoberlose/anotherwidget/helpers/BitmapHelper.kt +++ b/app/src/main/java/com/tommasoberlose/anotherwidget/helpers/BitmapHelper.kt @@ -19,6 +19,14 @@ object BitmapHelper { val measuredHeight = View.MeasureSpec.makeMeasureSpec(height ?: view.height, if (height != null) View.MeasureSpec.EXACTLY else View.MeasureSpec.UNSPECIFIED) view.measure(measuredWidth, measuredHeight) + if (draw) { + FirebaseCrashlytics.getInstance().setCustomKey("measuredWidth", view.measuredWidth) + FirebaseCrashlytics.getInstance().setCustomKey("measuredWidth_spec", measuredWidth) + FirebaseCrashlytics.getInstance().setCustomKey("measuredHeight", view.measuredHeight) + FirebaseCrashlytics.getInstance() + .setCustomKey("measuredHeight_spec", measuredHeight) + } + return try { val btm = Bitmap.createBitmap( view.measuredWidth, 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 4378e9d..ff0d1e1 100644 --- a/app/src/main/java/com/tommasoberlose/anotherwidget/helpers/CalendarHelper.kt +++ b/app/src/main/java/com/tommasoberlose/anotherwidget/helpers/CalendarHelper.kt @@ -4,6 +4,7 @@ import android.Manifest import android.content.ContentUris import android.content.Context import android.provider.CalendarContract +import android.util.Log import com.tommasoberlose.anotherwidget.services.EventListenerJob import com.tommasoberlose.anotherwidget.db.EventRepository import com.tommasoberlose.anotherwidget.models.Event diff --git a/app/src/main/java/com/tommasoberlose/anotherwidget/helpers/ColorHelper.kt b/app/src/main/java/com/tommasoberlose/anotherwidget/helpers/ColorHelper.kt index 3c5bbb6..78435ce 100644 --- a/app/src/main/java/com/tommasoberlose/anotherwidget/helpers/ColorHelper.kt +++ b/app/src/main/java/com/tommasoberlose/anotherwidget/helpers/ColorHelper.kt @@ -15,6 +15,22 @@ object ColorHelper { } } + fun getFontColorAlpha(): Int { + return try { + Preferences.textGlobalAlpha.toIntValue().toDouble() * 255 / 100 + } catch (e: Exception) { + "FF".toIntValue().toDouble() * 255 / 100 + }.roundToInt() + } + + fun getFontColorRgb(): Int { + return try { + Color.parseColor(Preferences.textGlobalColor) + } catch (e: Exception) { + Color.parseColor("#000000") + } + } + fun getBackgroundColor(): Int { return try { Color.parseColor("#%s%s".format(Preferences.backgroundCardAlpha, Preferences.backgroundCardColor.replace("#", ""))) 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 f11d662..b44ba04 100644 --- a/app/src/main/java/com/tommasoberlose/anotherwidget/helpers/IntentHelper.kt +++ b/app/src/main/java/com/tommasoberlose/anotherwidget/helpers/IntentHelper.kt @@ -10,6 +10,7 @@ import android.net.Uri import android.provider.AlarmClock import android.provider.CalendarContract import android.provider.CalendarContract.Events +import android.util.Log import com.tommasoberlose.anotherwidget.global.Preferences import com.tommasoberlose.anotherwidget.models.Event import com.tommasoberlose.anotherwidget.ui.widgets.MainWidget @@ -78,14 +79,12 @@ object IntentHelper { val calendarUri = CalendarContract.CONTENT_URI .buildUpon() .appendPath("time") - .appendPath(Date(Calendar.getInstance().timeInMillis).toString()) + .appendPath("0".toString()) .build() return when (Preferences.calendarAppPackage) { "" -> { - Intent(Intent.ACTION_MAIN).apply { -// data = calendarUri - addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) - addCategory(Intent.CATEGORY_APP_CALENDAR) + Intent(Intent.ACTION_VIEW).apply { + data = calendarUri } } "_" -> { @@ -95,16 +94,13 @@ object IntentHelper { val pm: PackageManager = context.packageManager try { pm.getLaunchIntentForPackage(Preferences.calendarAppPackage)!!.apply { -// data = calendarUri - addCategory(Intent.CATEGORY_LAUNCHER) - addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) + action = Intent.ACTION_VIEW + data = calendarUri } } catch (e: Exception) { e.printStackTrace() - Intent(Intent.ACTION_MAIN).apply { -// data = calendarUri - addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) - addCategory(Intent.CATEGORY_APP_CALENDAR) + Intent(Intent.ACTION_VIEW).apply { + data = calendarUri } } } @@ -118,7 +114,6 @@ object IntentHelper { if (Preferences.calendarAppPackage == "") { Intent(Intent.ACTION_VIEW).apply { data = uri - addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) putExtra(CalendarContract.EXTRA_EVENT_BEGIN_TIME, e.startDate) putExtra(CalendarContract.EXTRA_EVENT_END_TIME, e.endDate) } 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 cec54b4..0971aab 100644 --- a/app/src/main/java/com/tommasoberlose/anotherwidget/helpers/WeatherHelper.kt +++ b/app/src/main/java/com/tommasoberlose/anotherwidget/helpers/WeatherHelper.kt @@ -3,6 +3,7 @@ package com.tommasoberlose.anotherwidget.helpers import android.Manifest import android.content.Context import android.os.Build +import android.util.EventLog import android.util.Log import com.google.android.gms.location.LocationServices import com.kwabenaberko.openweathermaplib.constants.Units @@ -12,8 +13,10 @@ import com.kwabenaberko.openweathermaplib.models.currentweather.CurrentWeather import com.tommasoberlose.anotherwidget.R import com.tommasoberlose.anotherwidget.global.Preferences import com.tommasoberlose.anotherwidget.network.WeatherNetworkApi +import com.tommasoberlose.anotherwidget.ui.activities.MainActivity import com.tommasoberlose.anotherwidget.ui.widgets.MainWidget import com.tommasoberlose.anotherwidget.utils.checkGrantedPermission +import org.greenrobot.eventbus.EventBus /** @@ -35,6 +38,7 @@ object WeatherHelper { Preferences.customLocationLon = location.longitude.toString() networkApi.updateWeather() + EventBus.getDefault().post(MainActivity.UpdateUiMessageEvent()) } } } diff --git a/app/src/main/java/com/tommasoberlose/anotherwidget/models/Event.kt b/app/src/main/java/com/tommasoberlose/anotherwidget/models/Event.kt index e19369a..dce92bb 100644 --- a/app/src/main/java/com/tommasoberlose/anotherwidget/models/Event.kt +++ b/app/src/main/java/com/tommasoberlose/anotherwidget/models/Event.kt @@ -16,6 +16,6 @@ open class Event(var id: Long = 0, var allDay: Boolean = false, var address: String = "") : RealmObject() { override fun toString(): String { - return "Event:\nID: " + eventID + "\nTITLE: " + title + "\nSTART DATE: " + Date(startDate) + "\nEND DATE: " + Date(endDate) + "\nCAL ID: " + calendarID + "\nADDRESS: " + address + return "Event:\nEVENT ID: " + eventID + "\nTITLE: " + title + "\nSTART DATE: " + Date(startDate) + "\nEND DATE: " + Date(endDate) + "\nCAL ID: " + calendarID + "\nADDRESS: " + address } } diff --git a/app/src/main/java/com/tommasoberlose/anotherwidget/receivers/CrashlyticsReceiver.kt b/app/src/main/java/com/tommasoberlose/anotherwidget/receivers/CrashlyticsReceiver.kt new file mode 100644 index 0000000..d3f36a4 --- /dev/null +++ b/app/src/main/java/com/tommasoberlose/anotherwidget/receivers/CrashlyticsReceiver.kt @@ -0,0 +1,32 @@ +package com.tommasoberlose.anotherwidget.receivers + +import android.content.BroadcastReceiver +import android.content.Context +import android.content.Intent +import android.util.Log +import com.google.firebase.crashlytics.FirebaseCrashlytics +import com.tommasoberlose.anotherwidget.global.Actions +import java.lang.Exception + +class CrashlyticsReceiver : BroadcastReceiver() { + override fun onReceive(context: Context, intent: Intent) { + if (intent.action == Actions.ACTION_REPORT_CRASH) { + val exception: Exception = intent.getSerializableExtra(EXCEPTION) as Exception + FirebaseCrashlytics.getInstance().recordException(exception) + FirebaseCrashlytics.getInstance().sendUnsentReports() + } + } + + + companion object { + private const val EXCEPTION = "EXCEPTION" + + fun sendCrash(context: Context, exception: Exception) { + context.sendBroadcast(Intent(context, CrashlyticsReceiver::class.java).apply { + action = Actions.ACTION_REPORT_CRASH + putExtra(EXCEPTION, exception) + }) + } + } + +} \ No newline at end of file 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 3a1f546..19cdd04 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 @@ -6,10 +6,14 @@ import android.app.Activity import android.appwidget.AppWidgetManager import android.content.Intent import android.content.SharedPreferences +import android.graphics.Bitmap +import android.graphics.Matrix import android.net.Uri import android.os.Build import android.os.Bundle import android.provider.Settings +import android.util.DisplayMetrics +import android.util.Log import android.util.TypedValue import android.view.View import android.widget.RelativeLayout @@ -267,7 +271,16 @@ class MainActivity : AppCompatActivity(), SharedPreferences.OnSharedPreferenceCh private fun subscribeUi(viewModel: MainViewModel) { viewModel.showWallpaper.observe(this, Observer { - widget_bg.setImageDrawable(if (it) getCurrentWallpaper() else null) + val wallpaper = getCurrentWallpaper() + widget_bg.setImageDrawable(if (it) wallpaper else null) + widget_bg.layoutParams = widget_bg.layoutParams.apply { + + val metrics = DisplayMetrics() + windowManager.defaultDisplay.getMetrics(metrics) + + height = metrics.heightPixels + width = (wallpaper?.intrinsicWidth ?: 1) * metrics.heightPixels / (wallpaper?.intrinsicWidth ?: 1) + } }) logo.setOnClickListener { diff --git a/app/src/main/java/com/tommasoberlose/anotherwidget/ui/fragments/ClockSettingsFragment.kt b/app/src/main/java/com/tommasoberlose/anotherwidget/ui/fragments/ClockSettingsFragment.kt index eb96e65..12d8bd6 100644 --- a/app/src/main/java/com/tommasoberlose/anotherwidget/ui/fragments/ClockSettingsFragment.kt +++ b/app/src/main/java/com/tommasoberlose/anotherwidget/ui/fragments/ClockSettingsFragment.kt @@ -106,9 +106,7 @@ class ClockSettingsFragment : Fragment() { }) viewModel.showNextAlarm.observe(viewLifecycleOwner, Observer { - maintainScrollPosition { - show_next_alarm_label?.text = if (it) getString(R.string.settings_visible) else getString(R.string.settings_not_visible) - } + updateNextAlarmWarningUi() }) viewModel.clockAppName.observe(viewLifecycleOwner, Observer { @@ -168,17 +166,20 @@ class ClockSettingsFragment : Fragment() { } private fun updateNextAlarmWarningUi() { - show_next_alarm_warning.isVisible = AlarmHelper.isAlarmProbablyWrong(requireContext()) with(requireContext().getSystemService(Context.ALARM_SERVICE) as AlarmManager) { val alarm = nextAlarmClock - if (alarm != null) { + if (AlarmHelper.isAlarmProbablyWrong(requireContext()) && alarm != null && alarm.showIntent != null) { val pm = requireContext().packageManager as PackageManager val appNameOrPackage = try { - pm.getApplicationLabel(pm.getApplicationInfo(nextAlarmClock.showIntent.creatorPackage ?: "", 0)) + pm.getApplicationLabel(pm.getApplicationInfo(alarm.showIntent?.creatorPackage ?: "", 0)) } catch (e: Exception) { - nextAlarmClock.showIntent.creatorPackage + alarm.showIntent?.creatorPackage ?: "" } show_next_alarm_warning.text = getString(R.string.next_alarm_warning).format(appNameOrPackage) + } else { + maintainScrollPosition { + show_next_alarm_label?.text = if (Preferences.showNextAlarm) getString(R.string.settings_visible) else getString(R.string.settings_not_visible) + } } } } diff --git a/app/src/main/java/com/tommasoberlose/anotherwidget/ui/fragments/GeneralSettingsFragment.kt b/app/src/main/java/com/tommasoberlose/anotherwidget/ui/fragments/GeneralSettingsFragment.kt index e920e07..8f66f79 100644 --- a/app/src/main/java/com/tommasoberlose/anotherwidget/ui/fragments/GeneralSettingsFragment.kt +++ b/app/src/main/java/com/tommasoberlose/anotherwidget/ui/fragments/GeneralSettingsFragment.kt @@ -184,7 +184,7 @@ class GeneralSettingsFragment : Fragment() { BottomSheetColorPicker(requireContext(), colors = colors, header = getString(R.string.settings_font_color_title), - selected = ColorHelper.getFontColor(), + getSelected = ColorHelper::getFontColorRgb, onColorSelected = { color: Int -> val colorString = Integer.toHexString(color) Preferences.textGlobalColor = "#" + if (colorString.length > 6) colorString.substring(2) else colorString @@ -201,7 +201,7 @@ class GeneralSettingsFragment : Fragment() { BottomSheetColorPicker(requireContext(), colors = colors, header = getString(R.string.settings_background_color_title), - selected = ColorHelper.getBackgroundColor(), + getSelected = { ColorHelper.getBackgroundColorRgb() }, onColorSelected = { color: Int -> val colorString = Integer.toHexString(color) Preferences.backgroundCardColor = "#" + if (colorString.length > 6) colorString.substring(2) else colorString 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 e25e4a5..e75200b 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 @@ -26,10 +26,7 @@ import com.tommasoberlose.anotherwidget.global.Actions import com.tommasoberlose.anotherwidget.global.Constants import com.tommasoberlose.anotherwidget.global.Preferences import com.tommasoberlose.anotherwidget.helpers.* -import com.tommasoberlose.anotherwidget.receivers.NewCalendarEventReceiver -import com.tommasoberlose.anotherwidget.receivers.UpdatesReceiver -import com.tommasoberlose.anotherwidget.receivers.WeatherReceiver -import com.tommasoberlose.anotherwidget.receivers.WidgetClickListenerReceiver +import com.tommasoberlose.anotherwidget.receivers.* import com.tommasoberlose.anotherwidget.utils.checkGrantedPermission import com.tommasoberlose.anotherwidget.utils.getCapWordString import com.tommasoberlose.anotherwidget.utils.toPixel @@ -95,26 +92,46 @@ class MainWidget : AppWidgetProvider() { private fun generateWidgetView(context: Context, appWidgetId: Int, appWidgetManager: AppWidgetManager, w: Int) { var views = RemoteViews(context.packageName, R.layout.the_widget_sans) - val generatedView = generateWidgetView(context) - views.setImageViewBitmap(R.id.bitmap_container, BitmapHelper.getBitmapFromView(generatedView, width = w)) - - // Background - views.setInt(R.id.widget_shape_background, "setColorFilter", ColorHelper.getBackgroundColorRgb()) - views.setInt(R.id.widget_shape_background, "setImageAlpha", ColorHelper.getBackgroundAlpha()) - val refreshIntent = PendingIntent.getActivity( - context, - appWidgetId, - IntentHelper.getWidgetUpdateIntent(context), - 0 - ) - views.setOnClickPendingIntent(R.id.widget_shape_background, refreshIntent) + try { + // Background + views.setInt( + R.id.widget_shape_background, + "setColorFilter", + ColorHelper.getBackgroundColorRgb() + ) + views.setInt( + R.id.widget_shape_background, + "setImageAlpha", + ColorHelper.getBackgroundAlpha() + ) + val refreshIntent = PendingIntent.getActivity( + context, + appWidgetId, + IntentHelper.getWidgetUpdateIntent(context), + 0 + ) + views.setOnClickPendingIntent(R.id.widget_shape_background, refreshIntent) + } catch (ex: Exception) { + ex.printStackTrace() + CrashlyticsReceiver.sendCrash(context, ex) + } // Clock views = updateClockView(context, views, appWidgetId) // Setup listener - views = updateCalendarView(context, generatedView, views, appWidgetId) - views = updateWeatherView(context, generatedView, views, appWidgetId) + try { + val generatedView = generateWidgetView(context) + views.setImageViewBitmap( + R.id.bitmap_container, + BitmapHelper.getBitmapFromView(generatedView, width = w) + ) + views = updateCalendarView(context, generatedView, views, appWidgetId) + views = updateWeatherView(context, generatedView, views, appWidgetId) + } catch (ex: Exception) { + ex.printStackTrace() + CrashlyticsReceiver.sendCrash(context, ex) + } appWidgetManager.updateAppWidget(appWidgetId, views) } @@ -267,7 +284,7 @@ class MainWidget : AppWidgetProvider() { } } catch (ex: Exception) { ex.printStackTrace() - FirebaseCrashlytics.getInstance().recordException(ex) + CrashlyticsReceiver.sendCrash(context, ex) } return views @@ -301,7 +318,7 @@ class MainWidget : AppWidgetProvider() { } } catch (ex: Exception) { ex.printStackTrace() - FirebaseCrashlytics.getInstance().recordException(ex) + CrashlyticsReceiver.sendCrash(context, ex) } return views } @@ -358,7 +375,7 @@ class MainWidget : AppWidgetProvider() { } } catch (ex: Exception) { ex.printStackTrace() - FirebaseCrashlytics.getInstance().recordException(ex) + CrashlyticsReceiver.sendCrash(context, ex) } return views diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 09be4ac..f23d51d 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -59,14 +59,17 @@ android:layout_marginLeft="16dp" app:cardCornerRadius="9dp" app:cardElevation="0dp"> + - + - - + - - - - - - - - - - + android:paddingTop="16dp" + android:paddingBottom="16dp" + android:paddingLeft="32dp" + android:paddingRight="32dp" + android:textSize="15sp" + android:gravity="start" + android:textAlignment="viewStart" + android:id="@+id/text_alpha" + android:text="Alpha : 20%" + android:textColor="@color/colorSecondaryText"/> + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/xml/my_backup_rules.xml b/app/src/main/res/xml/my_backup_rules.xml new file mode 100644 index 0000000..231c813 --- /dev/null +++ b/app/src/main/res/xml/my_backup_rules.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/xml/the_widget_info.xml b/app/src/main/res/xml/the_widget_info.xml index ce9f8b6..a85d2f5 100644 --- a/app/src/main/res/xml/the_widget_info.xml +++ b/app/src/main/res/xml/the_widget_info.xml @@ -4,10 +4,10 @@ android:initialKeyguardLayout="@layout/the_widget" android:initialLayout="@layout/the_widget" android:minHeight="50dp" - android:minWidth="300dp" + android:minWidth="250dp" android:configure="com.tommasoberlose.anotherwidget.ui.activities.MainActivity" android:minResizeHeight="50dp" - android:minResizeWidth="300dp" + android:minResizeWidth="250dp" android:previewImage="@drawable/widget_preview" android:resizeMode="vertical|horizontal" android:updatePeriodMillis="86400000" diff --git a/tasksintegration/build/intermediates/bundle_manifest/debug/bundle-manifest/AndroidManifest.xml b/tasksintegration/build/intermediates/bundle_manifest/debug/bundle-manifest/AndroidManifest.xml index 8a79387..5beb1f0 100644 --- a/tasksintegration/build/intermediates/bundle_manifest/debug/bundle-manifest/AndroidManifest.xml +++ b/tasksintegration/build/intermediates/bundle_manifest/debug/bundle-manifest/AndroidManifest.xml @@ -3,7 +3,7 @@ xmlns:dist="http://schemas.android.com/apk/distribution" featureSplit="tasksintegration" package="com.tommasoberlose.anotherwidget" - android:versionCode="71" + android:versionCode="74" android:versionName="2.0.5" > 8 9