From fb1953d513dbea8a78330b343572c25f285f0ec4 Mon Sep 17 00:00:00 2001 From: Tommaso Berlose Date: Fri, 14 May 2021 16:10:56 +0200 Subject: [PATCH] Added custom widget margin and padding, added new preview manager --- .../anotherwidget/AWApplication.kt | 17 -- .../anotherwidget/global/Constants.kt | 7 + .../anotherwidget/global/Preferences.kt | 4 + .../ui/fragments/MainFragment.kt | 216 ++---------------- .../ui/fragments/tabs/LayoutFragment.kt | 74 ++++++ .../ui/viewmodels/MainViewModel.kt | 4 + .../anotherwidget/ui/widgets/AlignedWidget.kt | 6 + .../anotherwidget/ui/widgets/MainWidget.kt | 17 +- .../ui/widgets/StandardWidget.kt | 6 + .../anotherwidget/utils/Extensions.kt | 4 +- .../round_border_outer_black_18.png | Bin 0 -> 180 bytes .../round_border_outer_black_20.png | Bin 0 -> 186 bytes .../round_border_outer_black_24.png | Bin 0 -> 188 bytes .../round_border_outer_black_36.png | Bin 0 -> 246 bytes .../round_border_outer_black_48.png | Bin 0 -> 252 bytes .../round_dark_mode_white_18.png | Bin 0 -> 246 bytes .../round_dark_mode_white_20.png | Bin 0 -> 281 bytes .../round_dark_mode_white_24.png | Bin 0 -> 325 bytes .../round_dark_mode_white_36.png | Bin 0 -> 451 bytes .../round_dark_mode_white_48.png | Bin 0 -> 571 bytes .../round_select_all_black_18.png | Bin 0 -> 217 bytes .../round_select_all_black_20.png | Bin 0 -> 212 bytes .../round_select_all_black_24.png | Bin 0 -> 221 bytes .../round_select_all_black_36.png | Bin 0 -> 282 bytes .../round_select_all_black_48.png | Bin 0 -> 268 bytes .../round_border_outer_black_18.png | Bin 0 -> 158 bytes .../round_border_outer_black_20.png | Bin 0 -> 155 bytes .../round_border_outer_black_24.png | Bin 0 -> 133 bytes .../round_border_outer_black_36.png | Bin 0 -> 188 bytes .../round_border_outer_black_48.png | Bin 0 -> 187 bytes .../round_dark_mode_white_18.png | Bin 0 -> 191 bytes .../round_dark_mode_white_20.png | Bin 0 -> 194 bytes .../round_dark_mode_white_24.png | Bin 0 -> 226 bytes .../round_dark_mode_white_36.png | Bin 0 -> 325 bytes .../round_dark_mode_white_48.png | Bin 0 -> 397 bytes .../round_select_all_black_18.png | Bin 0 -> 194 bytes .../round_select_all_black_20.png | Bin 0 -> 173 bytes .../round_select_all_black_24.png | Bin 0 -> 141 bytes .../round_select_all_black_36.png | Bin 0 -> 221 bytes .../round_select_all_black_48.png | Bin 0 -> 202 bytes .../round_border_outer_24.png | Bin 0 -> 193 bytes .../round_select_all_24.png | Bin 0 -> 227 bytes .../round_border_outer_24.png | Bin 0 -> 139 bytes .../round_select_all_24.png | Bin 0 -> 148 bytes .../round_border_outer_24.png | Bin 0 -> 203 bytes .../round_select_all_24.png | Bin 0 -> 215 bytes .../round_border_outer_24.png | Bin 0 -> 286 bytes .../round_select_all_24.png | Bin 0 -> 307 bytes .../round_border_outer_24.png | Bin 0 -> 323 bytes .../round_select_all_24.png | Bin 0 -> 364 bytes .../round_border_outer_black_18.png | Bin 0 -> 188 bytes .../round_border_outer_black_20.png | Bin 0 -> 199 bytes .../round_border_outer_black_24.png | Bin 0 -> 187 bytes .../round_border_outer_black_36.png | Bin 0 -> 252 bytes .../round_border_outer_black_48.png | Bin 0 -> 323 bytes .../round_dark_mode_white_18.png | Bin 0 -> 325 bytes .../round_dark_mode_white_20.png | Bin 0 -> 339 bytes .../round_dark_mode_white_24.png | Bin 0 -> 397 bytes .../round_dark_mode_white_36.png | Bin 0 -> 571 bytes .../round_dark_mode_white_48.png | Bin 0 -> 763 bytes .../round_select_all_black_18.png | Bin 0 -> 221 bytes .../round_select_all_black_20.png | Bin 0 -> 221 bytes .../round_select_all_black_24.png | Bin 0 -> 202 bytes .../round_select_all_black_36.png | Bin 0 -> 268 bytes .../round_select_all_black_48.png | Bin 0 -> 332 bytes .../round_border_outer_black_18.png | Bin 0 -> 246 bytes .../round_border_outer_black_20.png | Bin 0 -> 251 bytes .../round_border_outer_black_24.png | Bin 0 -> 252 bytes .../round_border_outer_black_36.png | Bin 0 -> 388 bytes .../round_border_outer_black_48.png | Bin 0 -> 460 bytes .../round_dark_mode_white_18.png | Bin 0 -> 451 bytes .../round_dark_mode_white_20.png | Bin 0 -> 484 bytes .../round_dark_mode_white_24.png | Bin 0 -> 571 bytes .../round_dark_mode_white_36.png | Bin 0 -> 836 bytes .../round_dark_mode_white_48.png | Bin 0 -> 1119 bytes .../round_select_all_black_18.png | Bin 0 -> 282 bytes .../round_select_all_black_20.png | Bin 0 -> 324 bytes .../round_select_all_black_24.png | Bin 0 -> 268 bytes .../round_select_all_black_36.png | Bin 0 -> 429 bytes .../round_select_all_black_48.png | Bin 0 -> 476 bytes .../round_border_outer_black_18.png | Bin 0 -> 252 bytes .../round_border_outer_black_20.png | Bin 0 -> 276 bytes .../round_border_outer_black_24.png | Bin 0 -> 323 bytes .../round_border_outer_black_36.png | Bin 0 -> 460 bytes .../round_border_outer_black_48.png | Bin 0 -> 605 bytes .../round_dark_mode_white_18.png | Bin 0 -> 571 bytes .../round_dark_mode_white_20.png | Bin 0 -> 607 bytes .../round_dark_mode_white_24.png | Bin 0 -> 763 bytes .../round_dark_mode_white_36.png | Bin 0 -> 1119 bytes .../round_dark_mode_white_48.png | Bin 0 -> 1508 bytes .../round_select_all_black_18.png | Bin 0 -> 268 bytes .../round_select_all_black_20.png | Bin 0 -> 317 bytes .../round_select_all_black_24.png | Bin 0 -> 332 bytes .../round_select_all_black_36.png | Bin 0 -> 476 bytes .../round_select_all_black_48.png | Bin 0 -> 594 bytes .../res/drawable/round_border_outer_20.xml | 25 ++ .../res/drawable/round_border_outer_24.xml | 10 + .../main/res/drawable/round_dark_mode_20.xml | 10 + .../main/res/drawable/round_dark_mode_24.xml | 10 + .../main/res/drawable/round_select_all_20.xml | 58 +++++ app/src/main/res/layout/fragment_app_main.xml | 26 +-- .../main/res/layout/fragment_tab_layout.xml | 74 ++++++ .../res/layout/left_aligned_widget_sans.xml | 5 +- .../res/layout/right_aligned_widget_sans.xml | 5 +- app/src/main/res/layout/the_widget_sans.xml | 3 - app/src/main/res/values/strings.xml | 7 + 106 files changed, 338 insertions(+), 250 deletions(-) create mode 100644 app/src/main/res/drawable-hdpi/round_border_outer_black_18.png create mode 100644 app/src/main/res/drawable-hdpi/round_border_outer_black_20.png create mode 100644 app/src/main/res/drawable-hdpi/round_border_outer_black_24.png create mode 100644 app/src/main/res/drawable-hdpi/round_border_outer_black_36.png create mode 100644 app/src/main/res/drawable-hdpi/round_border_outer_black_48.png create mode 100644 app/src/main/res/drawable-hdpi/round_dark_mode_white_18.png create mode 100644 app/src/main/res/drawable-hdpi/round_dark_mode_white_20.png create mode 100644 app/src/main/res/drawable-hdpi/round_dark_mode_white_24.png create mode 100644 app/src/main/res/drawable-hdpi/round_dark_mode_white_36.png create mode 100644 app/src/main/res/drawable-hdpi/round_dark_mode_white_48.png create mode 100644 app/src/main/res/drawable-hdpi/round_select_all_black_18.png create mode 100644 app/src/main/res/drawable-hdpi/round_select_all_black_20.png create mode 100644 app/src/main/res/drawable-hdpi/round_select_all_black_24.png create mode 100644 app/src/main/res/drawable-hdpi/round_select_all_black_36.png create mode 100644 app/src/main/res/drawable-hdpi/round_select_all_black_48.png create mode 100644 app/src/main/res/drawable-mdpi/round_border_outer_black_18.png create mode 100644 app/src/main/res/drawable-mdpi/round_border_outer_black_20.png create mode 100644 app/src/main/res/drawable-mdpi/round_border_outer_black_24.png create mode 100644 app/src/main/res/drawable-mdpi/round_border_outer_black_36.png create mode 100644 app/src/main/res/drawable-mdpi/round_border_outer_black_48.png create mode 100644 app/src/main/res/drawable-mdpi/round_dark_mode_white_18.png create mode 100644 app/src/main/res/drawable-mdpi/round_dark_mode_white_20.png create mode 100644 app/src/main/res/drawable-mdpi/round_dark_mode_white_24.png create mode 100644 app/src/main/res/drawable-mdpi/round_dark_mode_white_36.png create mode 100644 app/src/main/res/drawable-mdpi/round_dark_mode_white_48.png create mode 100644 app/src/main/res/drawable-mdpi/round_select_all_black_18.png create mode 100644 app/src/main/res/drawable-mdpi/round_select_all_black_20.png create mode 100644 app/src/main/res/drawable-mdpi/round_select_all_black_24.png create mode 100644 app/src/main/res/drawable-mdpi/round_select_all_black_36.png create mode 100644 app/src/main/res/drawable-mdpi/round_select_all_black_48.png create mode 100644 app/src/main/res/drawable-night-hdpi/round_border_outer_24.png create mode 100644 app/src/main/res/drawable-night-hdpi/round_select_all_24.png create mode 100644 app/src/main/res/drawable-night-mdpi/round_border_outer_24.png create mode 100644 app/src/main/res/drawable-night-mdpi/round_select_all_24.png create mode 100644 app/src/main/res/drawable-night-xhdpi/round_border_outer_24.png create mode 100644 app/src/main/res/drawable-night-xhdpi/round_select_all_24.png create mode 100644 app/src/main/res/drawable-night-xxhdpi/round_border_outer_24.png create mode 100644 app/src/main/res/drawable-night-xxhdpi/round_select_all_24.png create mode 100644 app/src/main/res/drawable-night-xxxhdpi/round_border_outer_24.png create mode 100644 app/src/main/res/drawable-night-xxxhdpi/round_select_all_24.png create mode 100644 app/src/main/res/drawable-xhdpi/round_border_outer_black_18.png create mode 100644 app/src/main/res/drawable-xhdpi/round_border_outer_black_20.png create mode 100644 app/src/main/res/drawable-xhdpi/round_border_outer_black_24.png create mode 100644 app/src/main/res/drawable-xhdpi/round_border_outer_black_36.png create mode 100644 app/src/main/res/drawable-xhdpi/round_border_outer_black_48.png create mode 100644 app/src/main/res/drawable-xhdpi/round_dark_mode_white_18.png create mode 100644 app/src/main/res/drawable-xhdpi/round_dark_mode_white_20.png create mode 100644 app/src/main/res/drawable-xhdpi/round_dark_mode_white_24.png create mode 100644 app/src/main/res/drawable-xhdpi/round_dark_mode_white_36.png create mode 100644 app/src/main/res/drawable-xhdpi/round_dark_mode_white_48.png create mode 100644 app/src/main/res/drawable-xhdpi/round_select_all_black_18.png create mode 100644 app/src/main/res/drawable-xhdpi/round_select_all_black_20.png create mode 100644 app/src/main/res/drawable-xhdpi/round_select_all_black_24.png create mode 100644 app/src/main/res/drawable-xhdpi/round_select_all_black_36.png create mode 100644 app/src/main/res/drawable-xhdpi/round_select_all_black_48.png create mode 100644 app/src/main/res/drawable-xxhdpi/round_border_outer_black_18.png create mode 100644 app/src/main/res/drawable-xxhdpi/round_border_outer_black_20.png create mode 100644 app/src/main/res/drawable-xxhdpi/round_border_outer_black_24.png create mode 100644 app/src/main/res/drawable-xxhdpi/round_border_outer_black_36.png create mode 100644 app/src/main/res/drawable-xxhdpi/round_border_outer_black_48.png create mode 100644 app/src/main/res/drawable-xxhdpi/round_dark_mode_white_18.png create mode 100644 app/src/main/res/drawable-xxhdpi/round_dark_mode_white_20.png create mode 100644 app/src/main/res/drawable-xxhdpi/round_dark_mode_white_24.png create mode 100644 app/src/main/res/drawable-xxhdpi/round_dark_mode_white_36.png create mode 100644 app/src/main/res/drawable-xxhdpi/round_dark_mode_white_48.png create mode 100644 app/src/main/res/drawable-xxhdpi/round_select_all_black_18.png create mode 100644 app/src/main/res/drawable-xxhdpi/round_select_all_black_20.png create mode 100644 app/src/main/res/drawable-xxhdpi/round_select_all_black_24.png create mode 100644 app/src/main/res/drawable-xxhdpi/round_select_all_black_36.png create mode 100644 app/src/main/res/drawable-xxhdpi/round_select_all_black_48.png create mode 100644 app/src/main/res/drawable-xxxhdpi/round_border_outer_black_18.png create mode 100644 app/src/main/res/drawable-xxxhdpi/round_border_outer_black_20.png create mode 100644 app/src/main/res/drawable-xxxhdpi/round_border_outer_black_24.png create mode 100644 app/src/main/res/drawable-xxxhdpi/round_border_outer_black_36.png create mode 100644 app/src/main/res/drawable-xxxhdpi/round_border_outer_black_48.png create mode 100644 app/src/main/res/drawable-xxxhdpi/round_dark_mode_white_18.png create mode 100644 app/src/main/res/drawable-xxxhdpi/round_dark_mode_white_20.png create mode 100644 app/src/main/res/drawable-xxxhdpi/round_dark_mode_white_24.png create mode 100644 app/src/main/res/drawable-xxxhdpi/round_dark_mode_white_36.png create mode 100644 app/src/main/res/drawable-xxxhdpi/round_dark_mode_white_48.png create mode 100644 app/src/main/res/drawable-xxxhdpi/round_select_all_black_18.png create mode 100644 app/src/main/res/drawable-xxxhdpi/round_select_all_black_20.png create mode 100644 app/src/main/res/drawable-xxxhdpi/round_select_all_black_24.png create mode 100644 app/src/main/res/drawable-xxxhdpi/round_select_all_black_36.png create mode 100644 app/src/main/res/drawable-xxxhdpi/round_select_all_black_48.png create mode 100644 app/src/main/res/drawable/round_border_outer_20.xml create mode 100644 app/src/main/res/drawable/round_border_outer_24.xml create mode 100644 app/src/main/res/drawable/round_dark_mode_20.xml create mode 100644 app/src/main/res/drawable/round_dark_mode_24.xml create mode 100644 app/src/main/res/drawable/round_select_all_20.xml diff --git a/app/src/main/java/com/tommasoberlose/anotherwidget/AWApplication.kt b/app/src/main/java/com/tommasoberlose/anotherwidget/AWApplication.kt index c841226..7f5c79b 100644 --- a/app/src/main/java/com/tommasoberlose/anotherwidget/AWApplication.kt +++ b/app/src/main/java/com/tommasoberlose/anotherwidget/AWApplication.kt @@ -31,22 +31,5 @@ class AWApplication : Application() { .deleteRealmIfMigrationNeeded() .build() Realm.setDefaultConfiguration(config) - - calibrateVersions() - } - - private fun calibrateVersions() { - // 2.0 Tolerance - if (Preferences.clockTextSize > 50f) { - Preferences.clockTextSize = 32f - } - - if (Preferences.textMainSize > 36f) { - Preferences.textMainSize = 32f - } - - if (Preferences.textSecondSize > 28f) { - Preferences.textSecondSize = 24f - } } } \ No newline at end of file diff --git a/app/src/main/java/com/tommasoberlose/anotherwidget/global/Constants.kt b/app/src/main/java/com/tommasoberlose/anotherwidget/global/Constants.kt index a4eab88..c9e629e 100644 --- a/app/src/main/java/com/tommasoberlose/anotherwidget/global/Constants.kt +++ b/app/src/main/java/com/tommasoberlose/anotherwidget/global/Constants.kt @@ -23,6 +23,13 @@ object Constants { LARGE(3) } + enum class Dimension(val rawValue: Float) { + NONE(0f), + SMALL(8f), + MEDIUM(16f), + LARGE(24f) + } + enum class GlanceProviderId(val id: String) { PLAYING_SONG("PLAYING_SONG"), NEXT_CLOCK_ALARM("NEXT_CLOCK_ALARM"), 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 3c2c304..f1a0d72 100755 --- a/app/src/main/java/com/tommasoberlose/anotherwidget/global/Preferences.kt +++ b/app/src/main/java/com/tommasoberlose/anotherwidget/global/Preferences.kt @@ -84,6 +84,10 @@ object Preferences : KotprefModel() { var weatherIconPack by intPref(default = Constants.WeatherIconPack.DEFAULT.rawValue) + // UI + var widgetMargin by floatPref(default = Constants.Dimension.SMALL.rawValue) + var widgetPadding by floatPref(default = Constants.Dimension.SMALL.rawValue) + // Clock var altTimezoneLabel by stringPref(default = "") var altTimezoneId by stringPref(default = "") 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 8bbfaea..c8dd216 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 @@ -8,16 +8,10 @@ import android.os.Bundle import android.provider.Settings import android.util.DisplayMetrics import android.util.Log -import android.util.TypedValue -import android.view.Gravity import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import android.widget.LinearLayout -import android.widget.RelativeLayout -import androidx.core.content.ContextCompat -import androidx.core.view.children -import androidx.core.view.isVisible +import android.widget.RemoteViews import androidx.fragment.app.Fragment import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.lifecycleScope @@ -30,23 +24,20 @@ import com.tommasoberlose.anotherwidget.databinding.FragmentAppMainBinding import com.tommasoberlose.anotherwidget.global.Constants import com.tommasoberlose.anotherwidget.global.Preferences import com.tommasoberlose.anotherwidget.helpers.* -import com.tommasoberlose.anotherwidget.helpers.ColorHelper.isColorDark import com.tommasoberlose.anotherwidget.ui.activities.MainActivity import com.tommasoberlose.anotherwidget.ui.viewmodels.MainViewModel import com.tommasoberlose.anotherwidget.ui.widgets.MainWidget -import com.tommasoberlose.anotherwidget.ui.widgets.StandardWidget import com.tommasoberlose.anotherwidget.utils.* import kotlinx.coroutines.* import org.greenrobot.eventbus.EventBus import org.greenrobot.eventbus.Subscribe import org.greenrobot.eventbus.ThreadMode + class MainFragment : Fragment() { companion object { fun newInstance() = MainFragment() - private val PREVIEW_BASE_HEIGHT: Int - get() = if (Preferences.widgetAlign == Constants.WidgetAlign.CENTER.rawValue) 120 else 180 } private lateinit var viewModel: MainViewModel @@ -98,13 +89,7 @@ class MainFragment : Fragment() { } binding.actionSettings.setOnSingleClickListener { - Navigation.findNavController(it).navigate(R.id.action_appMainFragment_to_appSettingsFragment,) - } - - binding.preview.layoutParams = binding.preview.layoutParams.apply { - height = PREVIEW_BASE_HEIGHT.toPixel(requireContext()) + if (Preferences.showClock) 100.toPixel( - requireContext() - ) else 0 + Navigation.findNavController(it).navigate(R.id.action_appMainFragment_to_appSettingsFragment) } subscribeUi(viewModel) @@ -156,79 +141,31 @@ class MainFragment : Fragment() { binding.toolbar.cardElevation = if (it > 0) 24f else 0f } - viewModel.widgetAlign.observe(viewLifecycleOwner) { - updatePreviewVisibility() - lifecycleScope.launch { - delay(350) - updateClock() - } - } - - viewModel.showPreview.observe(viewLifecycleOwner) { - updatePreviewVisibility() - } - viewModel.clockPreferencesUpdate.observe(viewLifecycleOwner) { - updateClock() + onUpdateUiEvent(null) } viewModel.widgetPreferencesUpdate.observe(viewLifecycleOwner) { onUpdateUiEvent(null) } - - viewModel.showClock.observe(viewLifecycleOwner) { - updateClockVisibility(it) - } } private var uiJob: Job? = null private fun updateUI() { if (Preferences.showPreview) { - lifecycleScope.launch(Dispatchers.IO) { - val bgColor: Int = ContextCompat.getColor( - requireContext(), - if (ColorHelper.getFontColor(requireActivity().isDarkTheme()) - .isColorDark() - ) android.R.color.white else R.color.colorAccent - ) - - val wallpaperDrawable = BitmapHelper.getTintedDrawable( - requireContext(), - R.drawable.card_background, - ColorHelper.getBackgroundColor(requireActivity().isDarkTheme()) - ) - - withContext(Dispatchers.Main) { - binding.preview.setCardBackgroundColor(bgColor) - binding.widgetDetail.widgetShapeBackground.setImageDrawable(wallpaperDrawable) - } - } - WidgetHelper.runWithCustomTypeface(requireContext()) { typeface -> uiJob?.cancel() uiJob = lifecycleScope.launch(Dispatchers.IO) { - val generatedView = MainWidget.getWidgetView(requireContext(), typeface)?.root + val generatedView = MainWidget.getWidgetView(requireContext(), binding.widget.width, typeface) if (generatedView != null) { withContext(Dispatchers.Main) { - - binding.widgetDetail.content.removeAllViews() - val container = LinearLayout(requireContext()).apply { - layoutParams = LinearLayout.LayoutParams( - LinearLayout.LayoutParams.MATCH_PARENT, - LinearLayout.LayoutParams.WRAP_CONTENT - ) - } - container.gravity = when (Preferences.widgetAlign) { - Constants.WidgetAlign.CENTER.rawValue -> Gravity.CENTER_HORIZONTAL - Constants.WidgetAlign.LEFT.rawValue -> Gravity.START - Constants.WidgetAlign.RIGHT.rawValue -> Gravity.END - else -> Gravity.NO_GRAVITY - } - container.addView(generatedView) - binding.widgetDetail.content.addView(container) - + val view: View = generatedView.apply(requireActivity().applicationContext, binding.widget) + view.measure(0, 0) + binding.widget.removeAllViews() + binding.widget.addView(view) + updatePreviewVisibility(view.measuredHeight) binding.widgetLoader.animate().scaleX(0f).scaleY(0f).alpha(0f) .setDuration(200L).start() binding.widget.animate().alpha(1f).start() @@ -239,136 +176,13 @@ class MainFragment : Fragment() { } } - private fun updateClock() { - // Clock - binding.widgetDetail.time.setTextColor(ColorHelper.getClockFontColor(requireActivity().isDarkTheme())) - binding.widgetDetail.timeAmPm.setTextColor(ColorHelper.getClockFontColor(requireActivity().isDarkTheme())) - binding.widgetDetail.time.setTextSize( - TypedValue.COMPLEX_UNIT_SP, - Preferences.clockTextSize.toPixel(requireContext()) - ) - binding.widgetDetail.timeAmPm.setTextSize( - TypedValue.COMPLEX_UNIT_SP, - Preferences.clockTextSize.toPixel(requireContext()) / 5 * 2 - ) - binding.widgetDetail.timeAmPm.isVisible = Preferences.showAMPMIndicator - - // Timezones - if (Preferences.altTimezoneId != "" && Preferences.altTimezoneLabel != "") { - // Clock - binding.widgetDetail.altTimezoneTime.timeZone = Preferences.altTimezoneId - binding.widgetDetail.altTimezoneTimeAmPm.timeZone = Preferences.altTimezoneId - binding.widgetDetail.altTimezoneLabel.text = Preferences.altTimezoneLabel - binding.widgetDetail.altTimezoneTime.setTextColor(ColorHelper.getClockFontColor(requireActivity().isDarkTheme())) - binding.widgetDetail.altTimezoneTimeAmPm.setTextColor(ColorHelper.getClockFontColor(requireActivity().isDarkTheme())) - binding.widgetDetail.altTimezoneLabel.setTextColor(ColorHelper.getClockFontColor(requireActivity().isDarkTheme())) - binding.widgetDetail.altTimezoneTime.setTextSize( - TypedValue.COMPLEX_UNIT_SP, - Preferences.clockTextSize.toPixel(requireContext()) / 3 - ) - binding.widgetDetail.altTimezoneTimeAmPm.setTextSize( - TypedValue.COMPLEX_UNIT_SP, - (Preferences.clockTextSize.toPixel(requireContext()) / 3) / 5 * 2 - ) - binding.widgetDetail.altTimezoneLabel.setTextSize( - TypedValue.COMPLEX_UNIT_SP, - (Preferences.clockTextSize.toPixel(requireContext()) / 3) / 5 * 2 - ) - binding.widgetDetail.timezonesContainer.isVisible = true - } else { - binding.widgetDetail.timezonesContainer.isVisible = false - } - - // Clock bottom margin - binding.widgetDetail.clockBottomMarginNone.isVisible = - Preferences.showClock && Preferences.clockBottomMargin == Constants.ClockBottomMargin.NONE.rawValue - binding.widgetDetail.clockBottomMarginSmall.isVisible = - Preferences.showClock && Preferences.clockBottomMargin == Constants.ClockBottomMargin.SMALL.rawValue - binding.widgetDetail.clockBottomMarginMedium.isVisible = - Preferences.showClock && Preferences.clockBottomMargin == Constants.ClockBottomMargin.MEDIUM.rawValue - binding.widgetDetail.clockBottomMarginLarge.isVisible = - Preferences.showClock && Preferences.clockBottomMargin == Constants.ClockBottomMargin.LARGE.rawValue - - // Align - binding.widgetDetail.timeContainer.layoutParams = (binding.widgetDetail.timeContainer.layoutParams as LinearLayout.LayoutParams).apply { - gravity = when (Preferences.widgetAlign) { - Constants.WidgetAlign.CENTER.rawValue -> Gravity.CENTER_HORIZONTAL - Constants.WidgetAlign.LEFT.rawValue -> Gravity.START - Constants.WidgetAlign.RIGHT.rawValue -> Gravity.END - else -> Gravity.NO_GRAVITY - } - } - if (Preferences.widgetAlign == Constants.WidgetAlign.RIGHT.rawValue) { - with (binding.widgetDetail.timeContainer) { - val child = getChildAt(2) - if (child.id == R.id.timezones_container) { - removeViewAt(2) - child.layoutParams = (child.layoutParams as ViewGroup.MarginLayoutParams).apply { - marginEnd = 16f.convertDpToPixel(requireContext()).toInt() - } - addView(child, 0) - } - } - } else { - with (binding.widgetDetail.timeContainer) { - val child = getChildAt(0) - if (child.id == R.id.timezones_container) { - removeViewAt(0) - child.layoutParams = (child.layoutParams as ViewGroup.MarginLayoutParams).apply { - marginEnd = 0 - } - addView(child, 2) - } - } - } - } - - private fun updateClockVisibility(showClock: Boolean) { - binding.widgetDetail.timeContainer.clearAnimation() - binding.widgetDetail.time.clearAnimation() - - updatePreviewVisibility() - - if (showClock) { - binding.widgetDetail.timeContainer.layoutParams = (binding.widgetDetail.timeContainer.layoutParams as LinearLayout.LayoutParams).apply { - height = RelativeLayout.LayoutParams.WRAP_CONTENT - } - binding.widgetDetail.timeContainer.measure(0, 0) - } - - if ((Preferences.showClock && binding.widgetDetail.time.alpha != 1f) || (!Preferences.showClock && binding.widgetDetail.time.alpha != 0f)) { - val initialHeight = binding.widgetDetail.timeContainer.measuredHeight - ValueAnimator.ofFloat( - if (showClock) 0f else 1f, - if (showClock) 1f else 0f - ).apply { - duration = 500L - addUpdateListener { - val animatedValue = animatedValue as Float - binding.widgetDetail.timeContainer.layoutParams = - binding.widgetDetail.timeContainer.layoutParams.apply { - height = (initialHeight * animatedValue).toInt() - } - binding.widgetDetail.time.alpha = animatedValue - binding.widgetDetail.timeAmPm.alpha = animatedValue - binding.widgetDetail.altTimezoneTime.alpha = animatedValue - binding.widgetDetail.altTimezoneTimeAmPm.alpha = animatedValue - binding.widgetDetail.altTimezoneLabel.alpha = animatedValue - } - }.start() - } - } - - private fun updatePreviewVisibility() { - binding.preview.clearAnimation() - if (binding.preview.layoutParams.height != (if (Preferences.showPreview) PREVIEW_BASE_HEIGHT.toPixel(requireContext()) else 0) + (if (Preferences.showClock) 100.toPixel( - requireContext() - ) else 0)) { + private fun updatePreviewVisibility(widgetHeight: Int) { + val newHeight = widgetHeight + 16f.convertDpToPixel(requireContext()).toInt() + if (binding.preview.layoutParams.height != newHeight) { + binding.preview.clearAnimation() ValueAnimator.ofInt( binding.preview.height, - (if (Preferences.showPreview) PREVIEW_BASE_HEIGHT.toPixel(requireContext()) else 0) + (if (Preferences.showClock) 100.toPixel( - requireContext() - ) else 0) + newHeight ).apply { duration = 500L addUpdateListener { diff --git a/app/src/main/java/com/tommasoberlose/anotherwidget/ui/fragments/tabs/LayoutFragment.kt b/app/src/main/java/com/tommasoberlose/anotherwidget/ui/fragments/tabs/LayoutFragment.kt index d4a744c..5c0e18a 100644 --- a/app/src/main/java/com/tommasoberlose/anotherwidget/ui/fragments/tabs/LayoutFragment.kt +++ b/app/src/main/java/com/tommasoberlose/anotherwidget/ui/fragments/tabs/LayoutFragment.kt @@ -86,6 +86,28 @@ class LayoutFragment : Fragment() { viewModel: MainViewModel ) { + viewModel.widgetMargin.observe(viewLifecycleOwner) { + maintainScrollPosition { + binding.widgetMarginLabel.text = when (it) { + Constants.Dimension.NONE.rawValue -> getString(R.string.settings_widget_dim_none) + Constants.Dimension.SMALL.rawValue -> getString(R.string.settings_widget_dim_small) + Constants.Dimension.LARGE.rawValue -> getString(R.string.settings_widget_dim_large) + else -> getString(R.string.settings_widget_dim_medium) + } + } + } + + viewModel.widgetPadding.observe(viewLifecycleOwner) { + maintainScrollPosition { + binding.widgetPaddingLabel.text = when (it) { + Constants.Dimension.NONE.rawValue -> getString(R.string.settings_widget_dim_none) + Constants.Dimension.SMALL.rawValue -> getString(R.string.settings_widget_dim_small) + Constants.Dimension.LARGE.rawValue -> getString(R.string.settings_widget_dim_large) + else -> getString(R.string.settings_widget_dim_medium) + } + } + } + viewModel.secondRowTopMargin.observe(viewLifecycleOwner) { maintainScrollPosition { binding.secondRowTopMarginLabel.text = when (it) { @@ -147,6 +169,58 @@ class LayoutFragment : Fragment() { private fun setupListener() { + binding.actionWidgetMargin.setOnClickListener { + BottomSheetMenu( + requireContext(), + header = getString(R.string.settings_widget_margin_title) + ).setSelectedValue(Preferences.widgetMargin) + .addItem( + getString(R.string.settings_widget_dim_none), + Constants.Dimension.NONE.rawValue + ) + .addItem( + getString(R.string.settings_widget_dim_small), + Constants.Dimension.SMALL.rawValue + ) + .addItem( + getString(R.string.settings_widget_dim_medium), + Constants.Dimension.MEDIUM.rawValue + ) + .addItem( + getString(R.string.settings_widget_dim_large), + Constants.Dimension.LARGE.rawValue + ) + .addOnSelectItemListener { value -> + Preferences.widgetMargin = value + }.show() + } + + binding.actionWidgetPadding.setOnClickListener { + BottomSheetMenu( + requireContext(), + header = getString(R.string.settings_widget_padding_title) + ).setSelectedValue(Preferences.widgetPadding) + .addItem( + getString(R.string.settings_widget_dim_none), + Constants.Dimension.NONE.rawValue + ) + .addItem( + getString(R.string.settings_widget_dim_small), + Constants.Dimension.SMALL.rawValue + ) + .addItem( + getString(R.string.settings_widget_dim_medium), + Constants.Dimension.MEDIUM.rawValue + ) + .addItem( + getString(R.string.settings_widget_dim_large), + Constants.Dimension.LARGE.rawValue + ) + .addOnSelectItemListener { value -> + Preferences.widgetPadding = value + }.show() + } + binding.actionSecondRowTopMarginSize.setOnClickListener { BottomSheetMenu( requireContext(), diff --git a/app/src/main/java/com/tommasoberlose/anotherwidget/ui/viewmodels/MainViewModel.kt b/app/src/main/java/com/tommasoberlose/anotherwidget/ui/viewmodels/MainViewModel.kt index 0930d2e..2cc45ea 100644 --- a/app/src/main/java/com/tommasoberlose/anotherwidget/ui/viewmodels/MainViewModel.kt +++ b/app/src/main/java/com/tommasoberlose/anotherwidget/ui/viewmodels/MainViewModel.kt @@ -50,6 +50,8 @@ class MainViewModel(context: Application) : AndroidViewModel(context) { val showDividers = Preferences.asLiveData(Preferences::showDividers) val secondRowTopMargin = Preferences.asLiveData(Preferences::secondRowTopMargin) val widgetAlign = Preferences.asLiveData(Preferences::widgetAlign) + val widgetMargin = Preferences.asLiveData(Preferences::widgetMargin) + val widgetPadding = Preferences.asLiveData(Preferences::widgetPadding) // Calendar Settings val showEvents = Preferences.asLiveData(Preferences::showEvents) @@ -136,6 +138,8 @@ class MainViewModel(context: Application) : AndroidViewModel(context) { addSource(Preferences.asLiveData(Preferences::customFontVariant)) { value = true } addSource(Preferences.asLiveData(Preferences::secondRowInformation)) { value = true } addSource(Preferences.asLiveData(Preferences::widgetAlign)) { value = true } + addSource(Preferences.asLiveData(Preferences::widgetMargin)) { value = true } + addSource(Preferences.asLiveData(Preferences::widgetPadding)) { value = true } addSource(Preferences.asLiveData(Preferences::showDividers)) { value = true } addSource(Preferences.asLiveData(Preferences::secondRowTopMargin)) { value = true } addSource(Preferences.asLiveData(Preferences::isDateCapitalize)) { value = true } diff --git a/app/src/main/java/com/tommasoberlose/anotherwidget/ui/widgets/AlignedWidget.kt b/app/src/main/java/com/tommasoberlose/anotherwidget/ui/widgets/AlignedWidget.kt index 43b3f02..a93de11 100644 --- a/app/src/main/java/com/tommasoberlose/anotherwidget/ui/widgets/AlignedWidget.kt +++ b/app/src/main/java/com/tommasoberlose/anotherwidget/ui/widgets/AlignedWidget.kt @@ -54,6 +54,8 @@ class AlignedWidget(val context: Context, val rightAligned: Boolean = false) { "setImageAlpha", ColorHelper.getBackgroundAlpha(context.isDarkTheme()) ) + val margin = Preferences.widgetMargin.convertDpToPixel(context).toInt() + views.setViewPadding(R.id.widget_shape_background, margin, margin, margin, margin) val refreshIntent = PendingIntent.getActivity( context, appWidgetId, @@ -61,6 +63,10 @@ class AlignedWidget(val context: Context, val rightAligned: Boolean = false) { PendingIntent.FLAG_UPDATE_CURRENT ) views.setOnClickPendingIntent(R.id.widget_shape_background, refreshIntent) + + // Padding + val padding = (Preferences.widgetPadding.convertDpToPixel(context) + Preferences.widgetMargin.convertDpToPixel(context)).toInt() + views.setViewPadding(R.id.main_layout, padding, padding, padding, padding) } catch (ex: Exception) { ex.printStackTrace() CrashlyticsReceiver.sendCrash(context, ex) 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 1c7a3f9..6abf42c 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 @@ -7,7 +7,7 @@ import android.content.Context import android.content.res.Resources import android.graphics.Typeface import android.os.Bundle -import androidx.viewbinding.ViewBinding +import android.widget.RemoteViews import com.tommasoberlose.anotherwidget.global.Constants import com.tommasoberlose.anotherwidget.global.Preferences import com.tommasoberlose.anotherwidget.helpers.* @@ -83,11 +83,18 @@ class MainWidget : AppWidgetProvider() { } } - fun getWidgetView(context: Context, typeface: Typeface?): ViewBinding? { + fun getWidgetView(context: Context, width: Int, typeface: Typeface?): RemoteViews? { return when (Preferences.widgetAlign) { - Constants.WidgetAlign.LEFT.rawValue -> AlignedWidget(context).generateWidgetView(typeface) - Constants.WidgetAlign.RIGHT.rawValue -> AlignedWidget(context, rightAligned = true).generateWidgetView(typeface) - else -> StandardWidget(context).generateWidgetView(typeface) + Constants.WidgetAlign.LEFT.rawValue -> AlignedWidget(context).generateWidget( + 0, + width, + typeface + ) + Constants.WidgetAlign.RIGHT.rawValue -> AlignedWidget( + context, + rightAligned = true + ).generateWidget(0, width, typeface) + else -> StandardWidget(context).generateWidget(0, width, typeface) } } } diff --git a/app/src/main/java/com/tommasoberlose/anotherwidget/ui/widgets/StandardWidget.kt b/app/src/main/java/com/tommasoberlose/anotherwidget/ui/widgets/StandardWidget.kt index 1c9e013..45efe6b 100644 --- a/app/src/main/java/com/tommasoberlose/anotherwidget/ui/widgets/StandardWidget.kt +++ b/app/src/main/java/com/tommasoberlose/anotherwidget/ui/widgets/StandardWidget.kt @@ -57,6 +57,8 @@ class StandardWidget(val context: Context) { "setImageAlpha", ColorHelper.getBackgroundAlpha(context.isDarkTheme()) ) + val margin = Preferences.widgetMargin.convertDpToPixel(context).toInt() + views.setViewPadding(R.id.widget_shape_background, margin, margin, margin, margin) val refreshIntent = PendingIntent.getActivity( context, appWidgetId, @@ -64,6 +66,10 @@ class StandardWidget(val context: Context) { PendingIntent.FLAG_UPDATE_CURRENT ) views.setOnClickPendingIntent(R.id.widget_shape_background, refreshIntent) + + // Padding + val padding = (Preferences.widgetPadding.convertDpToPixel(context) + Preferences.widgetMargin.convertDpToPixel(context)).toInt() + views.setViewPadding(R.id.main_layout, padding, padding, padding, padding) } catch (ex: Exception) { ex.printStackTrace() CrashlyticsReceiver.sendCrash(context, ex) diff --git a/app/src/main/java/com/tommasoberlose/anotherwidget/utils/Extensions.kt b/app/src/main/java/com/tommasoberlose/anotherwidget/utils/Extensions.kt index 4023d1b..e0958c7 100644 --- a/app/src/main/java/com/tommasoberlose/anotherwidget/utils/Extensions.kt +++ b/app/src/main/java/com/tommasoberlose/anotherwidget/utils/Extensions.kt @@ -24,11 +24,13 @@ import android.util.TypedValue import android.view.animation.AlphaAnimation import android.widget.RelativeLayout import androidx.annotation.UiThread +import androidx.appcompat.app.AppCompatDelegate import androidx.browser.customtabs.CustomTabColorSchemeParams import androidx.core.animation.addListener import androidx.core.view.isVisible import com.tommasoberlose.anotherwidget.R import com.tommasoberlose.anotherwidget.components.OnSingleClickListener +import com.tommasoberlose.anotherwidget.global.Preferences import java.util.* @@ -192,7 +194,7 @@ fun String.isValidEmail(): Boolean Patterns.EMAIL_ADDRESS.matcher(this).matches() fun Context.isDarkTheme(): Boolean { - return resources.configuration.uiMode and Configuration.UI_MODE_NIGHT_MASK == Configuration.UI_MODE_NIGHT_YES + return Preferences.darkThemePreference == AppCompatDelegate.MODE_NIGHT_YES || Preferences.darkThemePreference == AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM && resources.configuration.uiMode and Configuration.UI_MODE_NIGHT_MASK == Configuration.UI_MODE_NIGHT_YES } fun Activity.isNotificationAccessGranted(): Boolean = Settings.Secure.getString(this.contentResolver,"enabled_notification_listeners").contains(this.packageName) diff --git a/app/src/main/res/drawable-hdpi/round_border_outer_black_18.png b/app/src/main/res/drawable-hdpi/round_border_outer_black_18.png new file mode 100644 index 0000000000000000000000000000000000000000..dddc482bf1f6ce434bd8525a52fb5ca04421e1a3 GIT binary patch literal 180 zcmeAS@N?(olHy`uVBq!ia0vp^(jd&i0wmS%+S~(D)t)YnAr`0aPC3YXK!L;cz5vey zy z#roG?NK_q7^Y%FL=xp!TBRAVw+xMJ0$l@xvV9}M6g&SHDRj%K>uDj!Q{C?{R4GH&} gUh>_W6#kmwtKPOV?4rWaKxZ&`y85}Sb4q9e0C}HF8~^|S literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-hdpi/round_border_outer_black_20.png b/app/src/main/res/drawable-hdpi/round_border_outer_black_20.png new file mode 100644 index 0000000000000000000000000000000000000000..25a83c25e62c3cc11fae0dabdf23c403befc2367 GIT binary patch literal 186 zcmeAS@N?(olHy`uVBq!ia0vp^av;pX0wgC|rfCAHMo$;V5R22v2@;^F_TS~eeTS(M+x{tfX>5Z`@A}Di8?+o=y$LY2ZeYF3(bg>;F_+ow z?20C)gxf3}s}5^|k0wldT1B8K8v!{z=h{y4_Qw{kJC~&ymzZg@c zq0aZ%k~emCh}4Q3B_B2mw2RxhG_0M$r}e1kRAQo(RFBy@xA-FqR&^~ZnRPm1@nVgy zd_uc#w7Ye%3YmK>TF|60r83}4t*yq{sHn}$9m1`{-Z8m;{<^><`~U1)|FY+sSSMax mru%a#IsOQt2WC*1kj^P-a%c2bn(yh`+Sg@6S=3~stqP3}-*Rqe* zV5td9*D!0sEDGz&>2#mRqSgrGVblVlmj1tBuP0P9a}$f25yr!)1)`T)H?=U`)YmcU w=Qp9TptelZW{}$Ek{fvHuL<%`7e)D29)Hc;a}?pt?f?J)07*qoM6N<$g0>=VZ~y=R literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-hdpi/round_border_outer_black_48.png b/app/src/main/res/drawable-hdpi/round_border_outer_black_48.png new file mode 100644 index 0000000000000000000000000000000000000000..04f4bc343f4ebc8ce2c667a497f71187f9072302 GIT binary patch literal 252 zcmVpyOO;+n>(kdXtP#nXu>Hf8f>7o8ECbEax+l2fv%4nn$=g^yS-)|fA7By znyNRH=@}?h2c>5qj{tfdF#dM-SGMhE2*EcF-+3@p^ipHYH*oErO=e!KEK z+B^8P)f~6H5(5j4)C2+VBpj!*W6Tf#9%RQo8`7?1MSvr1&7rJ_$Xd#ZK6z_evf+iI zo-FW)DVoXxpE6s9sz*pU$50uZaI7pss!i$9lJMv-;fn=rrEx}`Ilm;%m4-)*)k=9h zVfCgw23Xywh#3|U2P)zkN1bmjRgMu`cG)miHAZ|=#c`+I=rE&9L?8TBHqS z4u_buCz+#9)}u_}lIK;X2+1>MRVJ{A$mhufClncBsX9E0byXccWx7~OVU32eXj5*) zB`f;D79A4a*;E=A%r@qQfM6d))N!CRY(6lRU@MCNQ=#&3hACJ1=wV{Ovhv}O zP*uW?ig80#ZI$DJD(*BJ*CdpQX{j3a=~1N5o=k8~K*Y3&5Lb0zbA*S_Elm!wv@n-1 X;`wTA(gx!@00000NkvXXu0mjfc@K&G literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-hdpi/round_dark_mode_white_36.png b/app/src/main/res/drawable-hdpi/round_dark_mode_white_36.png new file mode 100644 index 0000000000000000000000000000000000000000..82c2010c5b3dcf58542d70444cf561525624526d GIT binary patch literal 451 zcmV;!0X+VRP)RL8Lg8R_fSDUF_=If~zRH`6`U`1!NHiN7EOek|1`e zB^_!ZL$Bx?C?=myg+OxuyUYDD1oAxU>FHi%8C9p@vCAnxfkzJ2DWv&8kw$gK)d{Tf zon|w##xTd!X?7uNOma(WYqG^0zi92NY%z;ZkbPNVfNO%iktOoDWMzjOE;agOhca$Y zWQ7gFJeL)&2$Pcyrl=F(+(d`@!?S+u4`u19-dMljw1$?1nc}DiZbt%94WRa;c~@>EU~}= tMILD6bH+!e)G1_{XN?u6)zj0({s9{ZkTdjVD#8E&002ovPDHLkV1n$B!CL?T literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-hdpi/round_dark_mode_white_48.png b/app/src/main/res/drawable-hdpi/round_dark_mode_white_48.png new file mode 100644 index 0000000000000000000000000000000000000000..413f796bc1c00c945149680d1f645219f4a1311f GIT binary patch literal 571 zcmV-B0>u4^P)7%uRMR!+$;26#?u8wB!+^EBDdb@@X;iTyR`mM?Vih<0ws7Xlv8 z&QFfW7jDzus(c}bjYauEKTT{*$p;L}*cp=#|e* z?s1cgWEo?MGOzjDs%%ijmuIrUU3^)P4JPsBifk~5FT=8dVG|#A2xNx^e5lA4BlwV! zEethWTO*J?3b;0|Fi5eEOCRY`IOK3Cukfhi%2SNO;~2ZR&}2Z-ki~_(qN7CIX4DA` z72@;|qt4Jpg}B@&P#h=`hZzFJg)F;tqRFV@#Zjt6wM@TUAjdjkHOOP+3MmTIu=SQp zbjv+PSY(s^Y*Xe8Mm{mfWoB8T&S&;~rOpy_OfsZIB9TbMA)Y-L~YasJTGaZ#9Xl0{*n=XRfz*Phz!k_KF? z%tomvWY&~N$(-}cQ>$~0Jix(l=7vCVc=1B5nKv|@-}w0UIvclNnf=71^3t?r2cIso z^bOndw(gwCin97eS7*8B+MT_qc26x!c&^BO-#J2sYOWo>)$+FgnEuBkF41~+r1GUy ROQ2gBJYD@<);T3K0RYp~Q)2)C literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-hdpi/round_select_all_black_20.png b/app/src/main/res/drawable-hdpi/round_select_all_black_20.png new file mode 100644 index 0000000000000000000000000000000000000000..35d5fb48deac19d724974828f1bd25fa4637f428 GIT binary patch literal 212 zcmeAS@N?(olHy`uVBq!ia0vp^av;pX0wgC|rfCAH*`6+rAr_~vPBG+bFyL^#&)G9O z`2C^Yp6TTmm++}&=`MP9FFrGDvKgc+%0t@Ji@&fuf#g z#b2MbgecCVh4@Bmmg{f#Ex3~}Fn!x`#W-%Q z_{Mye?t}d-)vVJp>a}jHUOs7-OP2r3WDhl7=1d+><^Y+!`!}&#nH}IQ@!ydRbS8tR LtDnm{r-UW|eGF0( literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-hdpi/round_select_all_black_24.png b/app/src/main/res/drawable-hdpi/round_select_all_black_24.png new file mode 100644 index 0000000000000000000000000000000000000000..a06a2bc14af592c70df0e323dc7a500f5e9dfb21 GIT binary patch literal 221 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k0wldT1B8Lp5>FS$5Rc<;r*7mus=(tCe{7NW zWKD@JQLaf@U+Ct6BC6rpC5C2R?^ORxZN^GgdvP2QTAEu*~K>lSr{Chf8GmU zeA(qza41t*PTai<8^gXixz1Ukv+N)LTgR{xfvZ<`yBMiVG7QxI8eSq1?Y{Zu)@Lib z*W7nbS=-y`6x%J}Tk=*ZaMo7ylDCgqeX5l*`_0};SIS+o`@f}dikX72`?q#GzaRq< V4#RhCeKgtvE=jea?Y34%6h+K1at;V^wOOGlpRuu^hrqC*5|l+@}u! z^X0~3PUiWNTUWq-d8yc=c`{&AHp;+Ys)MN_n0hVDeX*b0wqR*&PU@@z$txMkHGc(* zy|WS+v8idW>e3fjlcsK7Akx&gH+Az5@$df69$psQxZq)3%88nYb!1{423f~k<^i5{ gYl3;xMI?GkC(P$=FVNIfN&o-=07*qoM6N<$f}9NK)4e;EJIA2wAH3S9#crY7{UsItM SqH)Rq0000Kl)k!v79>4$RE%kez+uV!3zE|*L@Bi0T*QyR918}l-}dfbtq#KFk*Bb3+C%P6Nu;OT#;o=ZzB{1o|^`b?sD>#<1F)&QBc6@#9+)^H(g$$mqelF{r G5}E*4n>J7Y literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-mdpi/round_border_outer_black_20.png b/app/src/main/res/drawable-mdpi/round_border_outer_black_20.png new file mode 100644 index 0000000000000000000000000000000000000000..1f911ddb1b9652027b0d3b5ba863723561860d2a GIT binary patch literal 155 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc0wmQNuC@WGBu^K|5RLOkCvD_(P~>sBzwDcy zpkvIzYqmL?riJ}`)U2SfL|{+0{LU6`oA5=(X784W=4fo%cqyzv;kHWRoP$mq8ygdt zc`r)Zt5|k0wldT1B8K8v!{z=h{y4_Qw{kJC~&ymzZg@c zq0aZ%k~emCh}4Q3B_B2mw2RxhG_0M$r}e1kRAQo(RFBy@xA-FqR&^~ZnRPm1@nVgy zd_uc#w7Ye%3YmK>TF|60r83}4t*yq{sHn}$9m1`{-Z8m;{<^><`~U1)|FY+sSSMax mru%`(Rz4^qT;vg>bu@j|Zd k?&ICR86Md=1x|4j*YmdKI;Vst0Ac|`Z2$lO literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-mdpi/round_dark_mode_white_18.png b/app/src/main/res/drawable-mdpi/round_dark_mode_white_18.png new file mode 100644 index 0000000000000000000000000000000000000000..8082b262a07101fc74df27207501dc6137707a82 GIT binary patch literal 191 zcmeAS@N?(olHy`uVBq!ia0vp^LLkh+0wn(&ce?|m+B{txLo`IU9z4i-$bg~kqI|b; zhOE1^>bP0l+XkKUGPsX literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-mdpi/round_dark_mode_white_20.png b/app/src/main/res/drawable-mdpi/round_dark_mode_white_20.png new file mode 100644 index 0000000000000000000000000000000000000000..a2dcd5e9543562b59135767aacf06a18d69a2b27 GIT binary patch literal 194 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc0wmQNuC@WGPEQxd5Dn3@2M=-{GGJ)C_+P<^ zy<=DSN!RNFd%QMvavyExcq^oOHT$ni$gHf(#rH4!Y&a&oA|i`xTHEy1%MxBzSZnl) zPF%nC(}yo}K5=}>;(B^vl2zb~=GLGsJfSi-H$Hb-E7CY;fk>asdXcshGunFFG%7!= tKKx2vbz;boEE%@rGo{O!_!d`IFiC2B$+&3UR|9kugQu&X%Q~loCIAwOP7eS8 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-mdpi/round_dark_mode_white_24.png b/app/src/main/res/drawable-mdpi/round_dark_mode_white_24.png new file mode 100644 index 0000000000000000000000000000000000000000..e33a3bd29cf20e044bf7c3f9390064d092c78276 GIT binary patch literal 226 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM0wlfaz7_+im7Xq+Ar^vH58CoEIx@69^jDH` za&A%XND4o6ucu90;h|cSQ;F6!#TmT6!WCzHG`{@F<`;9xj7_Poafw$V3z9XoS~_}m z?{iu)>Eo3k4(}Y%pA#Qso$41{x9*Qep`_QRheuZPs@eu9=u4~LldLk)5H>!rVOp=O z;>sKz&Y36NoIIlS(teyddD69)`M$)fD)%!J{f(4r-FhY0PYZeK+%8ysF2+N0@{8}W Zj0I)Af}c6}KLa|N!PC{xWt~$(69C-sR__1+ literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-mdpi/round_dark_mode_white_36.png b/app/src/main/res/drawable-mdpi/round_dark_mode_white_36.png new file mode 100644 index 0000000000000000000000000000000000000000..7485deb3e1a799c82c2443a8e2782c9f595325dc GIT binary patch literal 325 zcmV-L0lNN)P)TBHqS z4u_buCz+#9)}u_}lIK;X2+1>MRVJ{A$mhufClncBsX9E0byXccWx7~OVU32eXj5*) zB`f;D79A4a*;E=A%r@qQfM6d))N!CRY(6lRU@MCNQ=#&3hACJ1=wV{Ovhv}O zP*uW?ig80#ZI$DJD(*BJ*CdpQX{j3a=~1N5o=k8~K*Y3&5Lb0zbA*S_Elm!wv@n-1 X;`wTA(gx!@00000NkvXXu0mjfc@K&G literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-mdpi/round_dark_mode_white_48.png b/app/src/main/res/drawable-mdpi/round_dark_mode_white_48.png new file mode 100644 index 0000000000000000000000000000000000000000..b28db79da2e0228ab9d46e98415e12a3e0cd8226 GIT binary patch literal 397 zcmV;80doF{P)ODjJ6* zb)+~*aZM6cGKz;RZTi(@Nb!;7nts&Ct3RYTB%Xi+(n^8?4@9Z6ARDZ6gHJC3cPz;T ra%^%&g;zfK18Ad z`RJU`*|mxlvl*+Rwd=0e8WBN2)ZE32#$fU}I2km`Suk5gqs?+~Gm2LEdhc!d)rX%FN1GDgu52U-Sq$vA)$)zyJUM07*qoM6N<$g57CT3IG5A literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-mdpi/round_select_all_black_20.png b/app/src/main/res/drawable-mdpi/round_select_all_black_20.png new file mode 100644 index 0000000000000000000000000000000000000000..a8402b0d835e066a81072a4c06c140433687bc78 GIT binary patch literal 173 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc0wmQNuC@WG5>FS$5RLOkFYV?%q9D-naJ@;n z1Lqb8FPA4~8LdZp130J8@k{SaczVS6B-{S7E&OrUS0=rZVB6LCYESdkMkU459$b81 z6TgHMMAq*MIAeW7Rmb^vRfNZ{b?-0Lm2NIOF=2axnOxJu7at5Ber*x8OZ=f3cY%FQ Xko!WVu+Mja_A_|8`njxgN@xNAp&v!Q literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-mdpi/round_select_all_black_24.png b/app/src/main/res/drawable-mdpi/round_select_all_black_24.png new file mode 100644 index 0000000000000000000000000000000000000000..70318ef9e2963d78d68d2b935450c1f7d5a74c20 GIT binary patch literal 141 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM0wlfaz7_+i5KkA!5R22v2@+clG(R+)@sGdd z#*5<)q8bkb`C2)C3GV&Nu=y9qj8>lh1t*d-e)O{@U2Rw=C_cZ2cgLDzFI6U)UbxQh p!m52z(7oEB=#!cyGp`Z@!?&qbSN+Q$ngY#d@O1TaS?83{1OQz?F{c0k literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-mdpi/round_select_all_black_36.png b/app/src/main/res/drawable-mdpi/round_select_all_black_36.png new file mode 100644 index 0000000000000000000000000000000000000000..a06a2bc14af592c70df0e323dc7a500f5e9dfb21 GIT binary patch literal 221 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k0wldT1B8Lp5>FS$5Rc<;r*7mus=(tCe{7NW zWKD@JQLaf@U+Ct6BC6rpC5C2R?^ORxZN^GgdvP2QTAEu*~K>lSr{Chf8GmU zeA(qza41t*PTai<8^gXixz1Ukv+N)LTgR{xfvZ<`yBMiVG7QxI8eSq1?Y{Zu)@Lib z*W7nbS=-y`6x%J}Tk=*ZaMo7ylDCgqeX5l*`_0};SIS+o`@f}dikX72`?q#GzaRq< V4#RhCqur$}>JLrTBa1qBW;#{T5nr-7B6d zc0-Zrv|seh*Y1-IK1OQsq!iTzF6e&B%v7>pA>^1<)1(bwZCT$x-xGS_uB*rfU-KXQ z-y(hO?-#V?&wNt9OulZp{Qc$e4$I;fa=d)V;Qju!PvNSNM4;msJYD@<);T3K0RWoD BODF&U literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-night-hdpi/round_border_outer_24.png b/app/src/main/res/drawable-night-hdpi/round_border_outer_24.png new file mode 100644 index 0000000000000000000000000000000000000000..b683239f966c5181f0eb62ed0275bffe81a9bacb GIT binary patch literal 193 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k0wldT1B8K8ho_5UNX4zUQx9?;P~dUBd(@IC zjWt$d_VO)N0yzrT{69W8ue!qKlkzNqzGX`SJ#R`bxp*jL>d6!Dubya^SRIrVeKd8= zmdhqhJCg4FU8Awh;SJkI6_3lC=UsDLv^_;x;FQ#wo8AlV_08Pv5ZiqAPrSgXTXoyZ t?%lFK%T}{>!+Ckrz653=i%tDJvA^Eb?B_QS{10>!gQu&X%Q~loCIBBNQ1k!* literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-night-hdpi/round_select_all_24.png b/app/src/main/res/drawable-night-hdpi/round_select_all_24.png new file mode 100644 index 0000000000000000000000000000000000000000..bcf7684ee882b120f5a501be7cd3628142a396fe GIT binary patch literal 227 zcmV<90382`P)+ASflp)I<}@!G_eAehTd{{MKd6`1GBKM5dtOfb(tJ-`fBH002ovPDHLkV1iAHVGaNQ literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-night-mdpi/round_border_outer_24.png b/app/src/main/res/drawable-night-mdpi/round_border_outer_24.png new file mode 100644 index 0000000000000000000000000000000000000000..f417f568c9f232c81c6e6d803199180b7b8d32ec GIT binary patch literal 139 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM0wlfaz7_+iAWs*^kcwN$2@-1_?0@xt(SP2G zgp2i8|7%En&~DFgyvQIF^t=Cbo#_UfHnti+wIvVjIWB}SpY&6TVm_lOVRF^v!ae?G mT{#c08Wr{YAma-OObj6`!rvyowao;Y&fw|l=d#Wzp$P!|zAsMz literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-night-mdpi/round_select_all_24.png b/app/src/main/res/drawable-night-mdpi/round_select_all_24.png new file mode 100644 index 0000000000000000000000000000000000000000..6faf8b43090e2c6f7377e2a019ae5bb24a712307 GIT binary patch literal 148 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM0wlfaz7_+iXipc%kcwN$2@-1_?0^3Mc*3v$ z|Nlq4bpLM~Xliq8p@5_PqV4htVebF)9hxtm_%uUG%0MxUx1cwGb;pk<*$!nwX1o=D x9j37T`qj81LDllniwV;_eDA5GFF44;AUyNdN6oE4Z-Le@c)I$ztaD0e0ss`TInV$A literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-night-xhdpi/round_border_outer_24.png b/app/src/main/res/drawable-night-xhdpi/round_border_outer_24.png new file mode 100644 index 0000000000000000000000000000000000000000..4e7b4625655bc5d541e02e9a04c532c076fd1c0a GIT binary patch literal 203 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA0wn)(8}b0DNuDl_Ar-gYPIu%wpuodY+h})A z?r$sO`oBM?Iqem>Vy3lr!|cfmW;%=Ak#G)dX65ETxNZ#xe{}x*D`$(Baxq1h|K409 zso=~I#P&p+@!i)iGEQ~(*(|0y-brq_)x4kmfe_<;#%tvls~Ua>%uZ)&W6lWv$Ii0m z&7zkFv*Su+gzJ(eAEY1uev{kdJC|y&XxE|;D~5#Y^FOlR(0&DU9fPN#%#&O5MW>!Y#?=IU{C37=R-2UCSEq~*Ag@Q7P zV;eo0?+7#`uUuQheQ1fN#*0Hi6IOmsb+{Sl?EICv+Z)RPtR6^SJ_nX-#oL8Qr-4h^kbt!ki?u^igLgwQ@ Pmoj*|`njxgN@xNAO;J*R literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-night-xxhdpi/round_border_outer_24.png b/app/src/main/res/drawable-night-xxhdpi/round_border_outer_24.png new file mode 100644 index 0000000000000000000000000000000000000000..591c27baa77bc0ee7f97405570d7766d24d41652 GIT binary patch literal 286 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xZ3?!EyURMI7v;urWT!Hj|;y~N(Q~E&Fyd^PXDOC-;ajCVoe07`K{=ET8O!IVc45?sDUSKA{+H-2%!U%_si42n#eF>0Rz;kjz zP)ye$K{vzJM=V?gt};7BB@c*hd=U18A^eDxl+;eC%jb9ZwY9M+Xm=eFGxEMD;+h=1 zMbtNt!OV5dmhdCh-`}-9T*1NEHeYGRbHOJQLQR++=b79OT-Q->&}&DB+S(23F}VWk t8aTpJUBbIsR)@C)N?B-UX*CBjFg%wOu)gHF{07j444$rjF6*2UngG-eeZ~L) literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-night-xxhdpi/round_select_all_24.png b/app/src/main/res/drawable-night-xxhdpi/round_select_all_24.png new file mode 100644 index 0000000000000000000000000000000000000000..906c3a0d778d668373f59c256839c0ce0acb8cf1 GIT binary patch literal 307 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xZ3?!EyURMI7bOU@sT!Hj|qQOFs)w6*b_)CKP zf*BZ7j(`6DNn-a27MGHSV$F3*Y(S}Ho-U3d6^zLX%p_QQPVw>ZtXa5_afQn4i42n# zadoh$-Rw&V(AIMmJXf{?SDhWAmOULE&6P8<&&R5KsA6=H@fG|Y zE3$!cwUS(jEBgkmN3NkIjcQ#24dNP&C*@vsDa0KOVG)$i>T>hAbJ0*);M^Sk6Q`fe zU_F)@(P(&v@nM#7V+&VDL8#k~AeFUMsR>t(L-CEyzgVSLNUeF!2z$cA;aDRY0S1P)#vA|s-`JPPnqZvN6~@HOc&aEo z(e{Og%c1}+6ARu}k8|M*<39ZOBQLV-o)E9jyaE-W%C$8gNr-Q c8%>Nivk-cxkXNLb1M~uer>mdKI;Vst01Rr0zW@LL literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-night-xxxhdpi/round_select_all_24.png b/app/src/main/res/drawable-night-xxxhdpi/round_select_all_24.png new file mode 100644 index 0000000000000000000000000000000000000000..6a1b4247dae51e506d6821abf435abe56f59d651 GIT binary patch literal 364 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD3?#3*wSy$g0(?STf%JdU!N=rde}Fm#OM?7@ z85*uk)aqmX!x#LyWLJ6dr;rU{R`Ni}E1oWnAr*0NZ=U2jY{26h*#B|L!hiqgzdd%7 zWeSI)57Ya1E-TM(+M07u!il5x#VgA%g5`EGJp2b92^TUH`_=8VtzXLb;QZ^k4_-3= z*u1=Pf=Ppjhe8?e0(YSTs|Mx9Rm>sI?EG;S=6|ayd_SF`a&yl%9k#k@p@Pi4 z>?Vc@Gd&p@O2QpJ{7h$LVEE<1_2r^E&|M#@85j<<|GUYUVUr-v+{!-X<#dOu**VEE z$%0P5x^E^Q%Bp-<6jQ&~{%51p|IXA~$`k(?hnE`85N{K3sxQlQ@woa|zzb*&gQu&X J%Q~loCIBpUtr`FT literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/round_border_outer_black_18.png b/app/src/main/res/drawable-xhdpi/round_border_outer_black_18.png new file mode 100644 index 0000000000000000000000000000000000000000..b2693ab0ab6af79c99bfbcfc1869caff873ec1b3 GIT binary patch literal 188 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k0wldT1B8K8v!{z=h{y4_Qw{kJC~&ymzZg@c zq0aZ%k~emCh}4Q3B_B2mw2RxhG_0M$r}e1kRAQo(RFBy@xA-FqR&^~ZnRPm1@nVgy zd_uc#w7Ye%3YmK>TF|60r83}4t*yq{sHn}$9m1`{-Z8m;{<^><`~U1)|FY+sSSMax mru%eO>AEes(R8z&t+A2!!I3qM6E~P1c+>W9-t?7u x4<4L99b#S}aop(Y>cCauUqbS`dYT?`GOXI-@33-`lr7L@44$rjF6*2UngEubON9Uc literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/round_border_outer_black_24.png b/app/src/main/res/drawable-xhdpi/round_border_outer_black_24.png new file mode 100644 index 0000000000000000000000000000000000000000..e19d075a6294ff173dca746107d2bf850ca8a288 GIT binary patch literal 187 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA0wn)(8}b0DCQlc~kch)?r*GsvpuodY&!13p z{(wusM&^|s?4CI~tS|42GS#r^e`M3h+Rnrx8XGCvv?1^Qm9y?!MV-#PwYEy((}-qB z<&$tXdi4By_lfU+-5r7?Rra!He64RNozJlAg-b)JZ-cDE>`(Rz4^qT;vg>bu@j|Zd k?&ICR86Md=1x|4j*YmdKI;Vst0Ac|`Z2$lO literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/round_border_outer_black_36.png b/app/src/main/res/drawable-xhdpi/round_border_outer_black_36.png new file mode 100644 index 0000000000000000000000000000000000000000..04f4bc343f4ebc8ce2c667a497f71187f9072302 GIT binary patch literal 252 zcmVpyOO;+n>(kdXtP#nXu>Hf8f>7o8ECbEax+l2fv%4nn$=g^yS-)|fA7By znyNRH=@}?h2c>5qj{tfd+S7>oGk_dtq;pL zHtp?Dy%9KzE5q{ILeU$I&mF$0=&Y$W$U3v*|LMRhKMxov2zLrNaVWO@@zY-K*`4%k zYsRGT>NP*S_BwsLWFH=|UTg24hu0omH(esMOX*a9*Q-nW{s!-@&H3P$fiHsns;Wa~fJUfWR@SW+!5ip~{z8FIL@jQrUc*Z{OO#hsj^1qDD z%QEXeT>bN6TBHqS z4u_buCz+#9)}u_}lIK;X2+1>MRVJ{A$mhufClncBsX9E0byXccWx7~OVU32eXj5*) zB`f;D79A4a*;E=A%r@qQfM6d))N!CRY(6lRU@MCNQ=#&3hACJ1=wV{Ovhv}O zP*uW?ig80#ZI$DJD(*BJ*CdpQX{j3a=~1N5o=k8~K*Y3&5Lb0zbA*S_Elm!wv@n-1 X;`wTA(gx!@00000NkvXXu0mjfc@K&G literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/round_dark_mode_white_20.png b/app/src/main/res/drawable-xhdpi/round_dark_mode_white_20.png new file mode 100644 index 0000000000000000000000000000000000000000..d160e48504168dbd94a43ad020be1bf330c1d9c4 GIT binary patch literal 339 zcmV-Z0j&OsP)@p*A89ODjJ6* zb)+~*aZM6cGKz;RZTi(@Nb!;7nts&Ct3RYTB%Xi+(n^8?4@9Z6ARDZ6gHJC3cPz;T ra%^%&g;zfKu4^P)7%uRMR!+$;26#?u8wB!+^EBDdb@@X;iTyR`mM?Vih<0ws7Xlv8 z&QFfW7jDzus(c}bjYauEKTT{*$p;L}*cp=#|e* z?s1cgWEo?MGOzjDs%%ijmuIrUU3^)P4JPsBifk~5FT=8dVG|#A2xNx^e5lA4BlwV! zEethWTO*J?3b;0|Fi5eEOCRY`IOK3Cukfhi%2SNO;~2ZR&}2Z-ki~_(qN7CIX4DA` z72@;|qt4Jpg}B@&P#h=`hZzFJg)F;tqRFV@#Zjt6wM@TUAjdjkHOOP+3MmTIu=SQp zbjv+PSY(s^Y*Xe8Mm{mfWoB8T&S&;~rOpy_OfsZIB9TbM|ut=t(ITdOGM@F$uI0C!bFFBLKCx?sh2-k&Nybq zEzdsOq1xQcR* z--z$I++%^&H_2|8+&CxKG+%aGh>W(Z(@O zafxe;^F6m^iavbOFH@YsCp|JnD?T|SQ~ZKYHpvt}F@Z1Mlao2F;)@%KgARPrsW@0n z2_Hl(Q9ShHg8{`w3qIJZxX3etYp=*FK2G3Tmy+OT#&BtZS|!7AT>4!}QN4M*+MmU$=V<_vWEhbWNDlgvWq6B$;wBz$Ub&ZA`20_l@1P2B5fu1 zC_U_8nl#O_OX*@OlcZ>x6vS?vaKe3d#o6T%e3i5$DJ&OKfHkTb}T%vPTui86&At z+NqK&EZ_vMi0dUMsg-Ng(8Ax8FcC4pE^_h*i#f_wCYj4SiX5d*eqtW$*~g#s@rYqY t`0NeC4AI9~4$;Uw1wjx5K@bF%d;%$ebX)L6?9~7O002ovPDHLkV1go!VI%+m literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/round_select_all_black_18.png b/app/src/main/res/drawable-xhdpi/round_select_all_black_18.png new file mode 100644 index 0000000000000000000000000000000000000000..a06a2bc14af592c70df0e323dc7a500f5e9dfb21 GIT binary patch literal 221 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k0wldT1B8Lp5>FS$5Rc<;r*7mus=(tCe{7NW zWKD@JQLaf@U+Ct6BC6rpC5C2R?^ORxZN^GgdvP2QTAEu*~K>lSr{Chf8GmU zeA(qza41t*PTai<8^gXixz1Ukv+N)LTgR{xfvZ<`yBMiVG7QxI8eSq1?Y{Zu)@Lib z*W7nbS=-y`6x%J}Tk=*ZaMo7ylDCgqeX5l*`_0};SIS+o`@f}dikX72`?q#GzaRq< V4#RhCqNBs%L=oEx&)t^cS1{>Cq1d`tkKc(XUbZMNj_~Y5Jx% Xn#CTh75yTh00000NkvXXu0mjf_6}Z* literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/round_select_all_black_24.png b/app/src/main/res/drawable-xhdpi/round_select_all_black_24.png new file mode 100644 index 0000000000000000000000000000000000000000..4f3c8874b650c40527138014721e30e2c74dc7c5 GIT binary patch literal 202 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA0wn)(8}b0DiJmTwArXh)PCw1tpdi2+FK^qur$}>JLrTBa1qBW;#{T5nr-7B6d zc0-Zrv|seh*Y1-IK1OQsq!iTzF6e&B%v7>pA>^1<)1(bwZCT$x-xGS_uB*rfU-KXQ z-y(hO?-#V?&wNt9OulZp{Qc$e4$I;fa=d)V;Qju!PvNSNM4;msJYD@<);T3K0RWoD BODF&U literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/round_select_all_black_36.png b/app/src/main/res/drawable-xhdpi/round_select_all_black_36.png new file mode 100644 index 0000000000000000000000000000000000000000..f82f0fb871058bde66d6939e9590a24f2812e6db GIT binary patch literal 268 zcmV+n0rUQeP)NK)4e;EJIA2wAH3S9#crY7{UsItM SqH)Rq0000fYeiP6-7YuL1 e0ssI2cs4Ht!m%a#IsOQt2WC*1kj^P-a%c2bn(yh`+Sg@6S=3~stqP3}-*Rqe* zV5td9*D!0sEDGz&>2#mRqSgrGVblVlmj1tBuP0P9a}$f25yr!)1)`T)H?=U`)YmcU w=Qp9TptelZW{}$Ek{fvHuL<%`7e)D29)Hc;a}?pt?f?J)07*qoM6N<$g0>=VZ~y=R literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/round_border_outer_black_20.png b/app/src/main/res/drawable-xxhdpi/round_border_outer_black_20.png new file mode 100644 index 0000000000000000000000000000000000000000..dccf88b7502f6c3baa1af8ad439e60f8b874c48c GIT binary patch literal 251 zcmVVU3`IYu?7=9kz#i1lp$x+y&?7cr5U4_9&=q&ck|P4>KX+D?hm=?`1_&V}Dh@R! ztO&+fF`5$<7M*ziPH(=X{@9D+=ZSN) z68W{_;#gHs{8BOSkzgIaL!A9M(f^q&p170De0r;A$#fJyP+ZDORGq#~m1IiRF~zpl zXYZZa`cTYrqWBI!=E+78$%Ze<#!blvY=jV^VgspyOO;+n>(kdXtP#nXu>Hf8f>7o8ECbEax+l2fv%4nn$=g^yS-)|fA7By znyNRH=@}?h2c>5qj{tfd{eNA57n*r?aE^}UcC2NA^PPVO4z6V!b+3je%KJM!GHM6a!ohA6>RyL8K~_E%1Fmec9gDZRSw#L4v4 zuTNZF@-o49qjRjW`kRn1d#Yyfm+5d>pJVrSP2`j?NLZX3x9yHE&y4M*4UEieJQ4vI{uK>|qZ7~9!ML7=7s4SyMX?k{MB>F5hN(D1Xl^>206 zjmD-8$_kEcWrzAATV;E=txrjm{V;j6qu>GK`whxJ`J+zsYj`BuSAVQ=X8RMsDF_6C aE8ZRdQqmW)qck5Fx(uGKelF{r5}E*S{i%!q literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/round_border_outer_black_48.png b/app/src/main/res/drawable-xxhdpi/round_border_outer_black_48.png new file mode 100644 index 0000000000000000000000000000000000000000..6522010c6f1e6f29a7fcfbfc586aa6a0d386cc3f GIT binary patch literal 460 zcmeAS@N?(olHy`uVBq!ia0vp^6F``Q8Ax83A=Cw=JOX?|T!A!I!0MJYvw;Rllmz(& zGe~D_zV+$9#EjowA2a`a*m~pVWDB0BhP+4L$7L}vFiLy6IEGX(zPV}2)M6mwda?az z!TtY!%jfCcSpV+jhiFDm7N9|QLZ*b?-NA2C8Y;HyRQn4%k>=~FD@*0GC+oea`o42t z@U|<~%(X#k_7=j;;qxB!u%v1(G8W=~`eM#ZKTEgtw2;1&GiOd&T$m>Hw4nZ3>fJAs za%0oJKd-t__agN8Kb;J_FPoCV|p0iq~z{XKps%aDdsPAz4Jm&%`&5&2smz1^tDnm{r-UW|Q&pO| literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/round_dark_mode_white_18.png b/app/src/main/res/drawable-xxhdpi/round_dark_mode_white_18.png new file mode 100644 index 0000000000000000000000000000000000000000..82c2010c5b3dcf58542d70444cf561525624526d GIT binary patch literal 451 zcmV;!0X+VRP)RL8Lg8R_fSDUF_=If~zRH`6`U`1!NHiN7EOek|1`e zB^_!ZL$Bx?C?=myg+OxuyUYDD1oAxU>FHi%8C9p@vCAnxfkzJ2DWv&8kw$gK)d{Tf zon|w##xTd!X?7uNOma(WYqG^0zi92NY%z;ZkbPNVfNO%iktOoDWMzjOE;agOhca$Y zWQ7gFJeL)&2$Pcyrl=F(+(d`@!?S+u4`u19-dMljw1$?1nc}DiZbt%94WRa;c~@>EU~}= tMILD6bH+!e)G1_{XN?u6)zj0({s9{ZkTdjVD#8E&002ovPDHLkV1n$B!CL?T literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/round_dark_mode_white_20.png b/app/src/main/res/drawable-xxhdpi/round_dark_mode_white_20.png new file mode 100644 index 0000000000000000000000000000000000000000..8f9f6f8e82d9b4ef16c7931dc9d3600619a2ee7b GIT binary patch literal 484 zcmV0q5i! z0qgxXqB`{;lBI4WS75BKJzqrI* zp7V=;-pd8wNn(d4Cw-9%Hn3Kb3s$kVAQ#MHZALE0@*7K4vT{QaOHbvB0xhgG8IwE8 zSb3{BnBo`N6R|N5C#gY?D`Sn5IszBCe@-OcT+IDmRr30U>dH zu4^P)7%uRMR!+$;26#?u8wB!+^EBDdb@@X;iTyR`mM?Vih<0ws7Xlv8 z&QFfW7jDzus(c}bjYauEKTT{*$p;L}*cp=#|e* z?s1cgWEo?MGOzjDs%%ijmuIrUU3^)P4JPsBifk~5FT=8dVG|#A2xNx^e5lA4BlwV! zEethWTO*J?3b;0|Fi5eEOCRY`IOK3Cukfhi%2SNO;~2ZR&}2Z-ki~_(qN7CIX4DA` z72@;|qt4Jpg}B@&P#h=`hZzFJg)F;tqRFV@#Zjt6wM@TUAjdjkHOOP+3MmTIu=SQp zbjv+PSY(s^Y*Xe8Mm{mfWoB8T&S&;~rOpy_OfsZIB9TbM=+5ClOG1VIo4 zp3y=l9c)+EC;O^Zb`LlqPIs zgk{!apVEU@m}R}XlnxXqv3@_3Q5vwFn^dDmX}}OGRO77dqn=Nw){C-^98*;5s;nc+ z6xG`&+t|QYRIfs_Y~xd0T##)H;O1jl#&#;W*(tjy@Efk4m0f&}yH;664^iZ06FFva zcSlxnfG8@mi6)kaCNGN^BdSMa51S|x)ehOiZlW8MJzOHXlC0rLd?-^VTNuTUcG<#J z{5T;?XvUW%3bKP<{27rQ9L1k`9+nlH!>37E!4f{*qeB+372oD4DtWZw-*@DcGhu?~JjOHhag+;G zSWCNH(2jMTazPR6TIGfXEW1se+%S!0KgkuxvFxN=(Tin$azzuXShY%v+;JJJt}6mF0^pv9E2Q0d%sMv!=gNlkgWvrQJv!Y`dYsTaQ4J=~GZJOi*Li`Wf*=TjAP9mW@as<`TC9b8r?y%E O0000m|?gJkRqy&+|Ob z^E}V%!$kmh!OvqPDU<Qgt@4d`*@OHnVT6NliNsfkSXS> zO>Sd7{mk7okIH4dz;)*1q+G^6W|)tF2jnVp`GWaskgHfi7xTAKZlZu6nZG`{i2}}H z!s~Jod30hzK#^R;Da`1Ri>Sqv!*UPLF^wseat#|9!<l!xq@}1G4G6A!EwUSFE>!k4Z?6uZeSl_ zSt8k&VUmYsBi0g?E*8i>>>xUOWFKmXPQYf_h6bW^i6YsB z7NXTlzHGuzM6H!<*@Fv2ua$h+f}_3Yo%cT(nN6uz)dK6Obiy=)g6-GKpGTQzw(y zf@{iU5-G-TNkE>=q79dH$~3BRNsUaShyYjIq*&(Bj4N6d26p0#7ZnCl4B~CV8K1*?`UT5w#0!l08^RHN!+@h&M^eHWYJ| zfUu=GOrdPWO6s{zSSC2eTG@_b4lsymSEyx~TtSMRG!tM#z-e}oEB8=HHEoPBR{`x* zu~cp&n=RDR!8o%uN;`Ym$|7YJR2l)U1 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/round_select_all_black_18.png b/app/src/main/res/drawable-xxhdpi/round_select_all_black_18.png new file mode 100644 index 0000000000000000000000000000000000000000..b7bfc40d4ed8d32764c312d7593d973da03d6b6f GIT binary patch literal 282 zcmV+#0peKgtvE=jea?Y34%6h+K1at;V^wOOGlpRuu^hrqC*5|l+@}u! z^X0~3PUiWNTUWq-d8yc=c`{&AHp;+Ys)MN_n0hVDeX*b0wqR*&PU@@z$txMkHGc(* zy|WS+v8idW>e3fjlcsK7Akx&gH+Az5@$df69$psQxZq)3%88nYb!1{423f~k<^i5{ gYl3;xMI?GkC(P$=FVNIfN&o-=07*qoM6N<$f}9Sj3`Ktdb1(|5kVWV~qPh+SVUW-xHlT$yoFc}FbWwD`DUOhzD}HfLARCSY48t&@ zlAywbMy`7h2!vUZoD)JW+002VNrMR$l5p(+0>PaYI}iv%sJi9_Vu=ZLn0SmX9>c^9 z92^`9Np75!l4P7XWRjJf+$1SDX>4qat%slWYLXN!R_Wt!wW3A()|A^?L6A32U66FE z&KoB>DqePpmv~~@SqH^4SLuoG^4j=RcTZEwS_ko;!6$a!pNSR4IahXCoXJ`z$7!!P z+8moWvRJLT>;-atvD#-*Z6okUTc00o_SCkw#`RJAF;_c^P&<54J8n`tU^5KE2;u>0 WPK3|T-S}((0000NK)4e;EJIA2wAH3S9#crY7{UsItM SqH)Rq0000<{9 z002I+(n)6>z0Z#t-bTrovrby&lUi%kBqyiAdp5|ujnXlbMy+#b?ewUYbZE>&yL7E* z<)p)6o@r{G?hTR-i@B?d7aJQT9Tqdj&xF%gi%qdJ;_2ZT#ET3#*`L$-X#$wwdT24;e zwqkuTvA(U?P)uw<3^DU!AqCO@v0GGGz6B(mtw86ib@jdnF~kr<3^Byg3UoQKsypbK zVvW~|h#`g;Vu&qF%xr;Xt%w+6h#`j9@9m%$@E134TM$F6y_ngT>t>Hbm_5L<$RkH) z4~YQ)04y1^ZB}L*z{9AU|>}Dba4!+V0?4KRP3;U2y5Wv zc{30Fj?au*E<9)b1)ubNQ(0LBfgms?HPn2a#S&-D=dr=zsRqm6{(8Y*J?H&yvopp$ zlTooi&Af$w}@l z&zRT7Ezp(E_{_AkMj>24Q1Gv_Rmh$#^UwJ;?);qjy{ew&MNw$T^={sb{hFI@=P~Wl z-nEO0~i<$25aiGRYcYHNfp!|_^j?%&+;w3=!*wKjP4|rk3T0i%nj67$T{H=!^TO| uiVF|Up2m`OamlQyzaFlguNFT^#nZ_3RZiyN-Yx@B9C^C>xvXpyOO;+n>(kdXtP#nXu>Hf8f>7o8ECbEax+l2fv%4nn$=g^yS-)|fA7By znyNRH=@}?h2c>5qj{tfdST5QX7au>=Dku}wtB4ln>c>tqcmnFR)L3YsfzC$=uh|E{xi;**P$ku4EI2qDC8 z8qL~tDHN(pn`Sk+yjDjsnyo`^-tN`m-NcMtoT~AHf~IufUKO~f1JA0!GaYE#OXaO^ z00ao|V00R7K;L{Xy5FkK++0COFCPUPi8O-`v9=MwIC8}dF>nlKjzYpxq z!M=++@^@yvXAS}c2#~)zfB^p&$Q%R+&==7CWup7*Soas&?we^hbrqU&cVgb+dq aDW4Z$^*?qStOV=;0000+S7>oGk_dtq;pL zHtp?Dy%9KzE5q{ILeU$I&mF$0=&Y$W$U3v*|LMRhKMxov2zLrNaVWO@@zY-K*`4%k zYsRGT>NP*S_BwsLWFH=|UTg24hu0omH(esMOX*a9*Q-nW{s!-@&H3P$fiHsns;Wa~fJUfWR@SW+!5ip~{z8FIL@jQrUc*Z{OO#hsj^1qDD z%QEXeT>bN6=~FD@*0GC+oea`o42t z@U|<~%(X#k_7=j;;qxB!u%v1(G8W=~`eM#ZKTEgtw2;1&GiOd&T$m>Hw4nZ3>fJAs za%0oJKd-t__agN8Kb;J_FPoCV|p0iq~z{XKps%aDdsPAz4Jm&%`&5&2smz1^tDnm{r-UW|Q&pO| literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxxhdpi/round_border_outer_black_48.png b/app/src/main/res/drawable-xxxhdpi/round_border_outer_black_48.png new file mode 100644 index 0000000000000000000000000000000000000000..5f91eb1cd3b58c4c1003ab5015c07a678966d6a0 GIT binary patch literal 605 zcmeAS@N?(olHy`uVBq!ia0vp^2SAvE8Azrw%`pX1X#qYVu0Wa&pde?;HJ~+0B|(0{ z46H7b_uu;TUv$z3w%S9Q_r>13PT641SVr}=(hRCMcm19)+2!~<6GaKclXxXzn^9t#_?yDoadLj z`P~ODD9lW|pl+SH8S|Pj)c_2Xmmn*3VMU{!QN^vc`E@qxssa z+RUHItshu&S8QXx7J1+n-wrHeh=KuqBN&T;q2cHIcm$6@&IE~5SHXnf zeOSN<;uuUYu?$RA$*Ed)HsIcekcAshe2Gb~H`r<)d0U?M-FdU`?VCSee){v{kAF4w z{~DbBx48c6@c7^3{eObr|0#i=W`sPLGhM}V5)gf1>Iq~QV98v14`i;VtDnm{r-UW| DfUCmA literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxxhdpi/round_dark_mode_white_18.png b/app/src/main/res/drawable-xxxhdpi/round_dark_mode_white_18.png new file mode 100644 index 0000000000000000000000000000000000000000..413f796bc1c00c945149680d1f645219f4a1311f GIT binary patch literal 571 zcmV-B0>u4^P)7%uRMR!+$;26#?u8wB!+^EBDdb@@X;iTyR`mM?Vih<0ws7Xlv8 z&QFfW7jDzus(c}bjYauEKTT{*$p;L}*cp=#|e* z?s1cgWEo?MGOzjDs%%ijmuIrUU3^)P4JPsBifk~5FT=8dVG|#A2xNx^e5lA4BlwV! zEethWTO*J?3b;0|Fi5eEOCRY`IOK3Cukfhi%2SNO;~2ZR&}2Z-ki~_(qN7CIX4DA` z72@;|qt4Jpg}B@&P#h=`hZzFJg)F;tqRFV@#Zjt6wM@TUAjdjkHOOP+3MmTIu=SQp zbjv+PSY(s^Y*Xe8Mm{mfWoB8T&S&;~rOpy_OfsZIB9TbMxa1zER(hDHZZ1{NuH>d>h}*RnhY$%X_$uv247(IFzrKcJ%q z1*MJt0cABCK0)c$0|oE!RD{mo_xJGqDSTfqIgaBvj{h9HxeMS7jSx zn7A#wNU)5F$FhrI%q-C$n|Ow)v$BUKHZYZwJ)|-BjV{^32!1@0EllFaZ_daLrtzmj zmuz4Gzut2|(PIt&W;vp$@sl7v(<2W!$T?2R4}K8LFAAho2W@1jvgsvBnPP?DYTP5O zEpU`9%lvg$rkE!zW%7)2g+BVYz%?H5f&Ud{ifL?mEmIV*>7h(9f=#0`MH-uWWr{|= zV9Pp9GRF&SnUWt2Vau@mpqW){SYyBZA%hJW`9(WbqE@3r{xMF}G75quC8G3+q=I3P zC|y)=8CLOXnK3$K8_f*yoUhcg!Bd7wC_Xfh<|cVw tu|S1QODr(M1UEQMqa4R^9LL$y{s7GxQfC-FDCYnG002ovPDHLkV1iuh2|NG* literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxxhdpi/round_dark_mode_white_24.png b/app/src/main/res/drawable-xxxhdpi/round_dark_mode_white_24.png new file mode 100644 index 0000000000000000000000000000000000000000..24f32f869fecce6d8a732170d9310763113d48dc GIT binary patch literal 763 zcmV|ut=t(ITdOGM@F$uI0C!bFFBLKCx?sh2-k&Nybq zEzdsOq1xQcR* z--z$I++%^&H_2|8+&CxKG+%aGh>W(Z(@O zafxe;^F6m^iavbOFH@YsCp|JnD?T|SQ~ZKYHpvt}F@Z1Mlao2F;)@%KgARPrsW@0n z2_Hl(Q9ShHg8{`w3qIJZxX3etYp=*FK2G3Tmy+OT#&BtZS|!7AT>4!}QN4M*+MmU$=V<_vWEhbWNDlgvWq6B$;wBz$Ub&ZA`20_l@1P2B5fu1 zC_U_8nl#O_OX*@OlcZ>x6vS?vaKe3d#o6T%e3i5$DJ&OKfHkTb}T%vPTui86&At z+NqK&EZ_vMi0dUMsg-Ng(8Ax8FcC4pE^_h*i#f_wCYj4SiX5d*eqtW$*~g#s@rYqY t`0NeC4AI9~4$;Uw1wjx5K@bF%d;%$ebX)L6?9~7O002ovPDHLkV1go!VI%+m literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxxhdpi/round_dark_mode_white_36.png b/app/src/main/res/drawable-xxxhdpi/round_dark_mode_white_36.png new file mode 100644 index 0000000000000000000000000000000000000000..38c4be267e3b37f42c68fe5a530afaab3b6c4327 GIT binary patch literal 1119 zcmV-l1fctgP)m|?gJkRqy&+|Ob z^E}V%!$kmh!OvqPDU<Qgt@4d`*@OHnVT6NliNsfkSXS> zO>Sd7{mk7okIH4dz;)*1q+G^6W|)tF2jnVp`GWaskgHfi7xTAKZlZu6nZG`{i2}}H z!s~Jod30hzK#^R;Da`1Ri>Sqv!*UPLF^wseat#|9!<l!xq@}1G4G6A!EwUSFE>!k4Z?6uZeSl_ zSt8k&VUmYsBi0g?E*8i>>>xUOWFKmXPQYf_h6bW^i6YsB z7NXTlzHGuzM6H!<*@Fv2ua$h+f}_3Yo%cT(nN6uz)dK6Obiy=)g6-GKpGTQzw(y zf@{iU5-G-TNkE>=q79dH$~3BRNsUaShyYjIq*&(Bj4N6d26p0#7ZnCl4B~CV8K1*?`UT5w#0!l08^RHN!+@h&M^eHWYJ| zfUu=GOrdPWO6s{zSSC2eTG@_b4lsymSEyx~TtSMRG!tM#z-e}oEB8=HHEoPBR{`x* zu~cp&n=RDR!8o%uN;`Ym$|7YJR2l)U1 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxxhdpi/round_dark_mode_white_48.png b/app/src/main/res/drawable-xxxhdpi/round_dark_mode_white_48.png new file mode 100644 index 0000000000000000000000000000000000000000..a55fd18ead3d0b3d9f13122f4c5f9a8ffc8e49e0 GIT binary patch literal 1508 zcmVG0000H6NkleUBfg^6zPUzV-QNv%q)v*tO|y9QA{?oi%E(I^Lm3HhWaDlZ(tmjcj(PW@>+{ zhH8#8do8l*JXn;vdp6Bj9z=VjBu=V+mD23aYaDoXevIST1@*;G-*TNGA~ zyJb_u20AIU=VentDSIfq^Hj(tM+JW-2;Y}Yj@x*TAe?8OY%<(OJHcp>O@?*!5sZF5 zC7T#)=_M$y$tK2^=_NSpWfP&69)fd;IkNF_KbHy8e%bi=3>OI2w`Jp@f);|dNH#W# zd4r(+OEw;UM)3Y18ynvu3_p;Kh1XCHiCefxc;1nX#7@HWuIySYB}bTAW!K_$!gXFYj2gmrMK+9Mgs)sS zgcS@DzG~SJeoGV{l3m5e=_3kTWLMEZG+vfT+{6b&%0>>`f#Dl0fdJT)jA_zQ8hQCYy-#8-pTk2A#CUP_d1oF(24bF3pbl>)+24w2_tr>Isq_<*DsU?&wSFy^tH9HVuy zR$-u(BstF(Dpeqq^Azojr;Ei39`BMgoowS)%@UvB$FwuCV+tN`kwgO=;bG=z1}NhJ z4w7SXgH$PKG?H9h?B@xVXo^_KWBi^@rf!ph#zB(rEU)k*9;BMNx(*dAqmHLIz(1J2 zpDSqWA#MIgD=nO+l~%f#ofi}|zKf0TrwSVN*!Uh*(6|E|-)aSoQgYbX2Kk7BM+-K# zvkC);u(2Ig7}$!9?H39IYq7C?Lt&tt95z~>1qufzu+dH_EIfma_ME~(4K`Yx!a^B6 z*hu}%S9oZ|MtW0W;!$j*#}y{Zxr7btr9$E2MQqqXg^gNl*w+*`ifO}!ba11>$Ftaw z9f|@~-HxRX3tH^@pwhXZ8Y5k-k=2FbP>MT^5^S(Bp1YVu^&04o(e zc9B)P6$eyujx4&sEs6&=kVW57Tu?+aS#z3F#Rn_MktI1kt9YS-Ecu?|h7yjG70nbY zeppC5S@0pBRy?tWJn8p{;)|`M-7du$B{Y*}M=4Rfv49rR>NFLKKNitO8l7XYl7YMF zAZ>d2ypn@^xlEe$@>L}Zb@Y=KJ$yyULmih%gUi$^nYfn@lCGQkm0T>NjU?;fJ|!EA zXd$W2aJ!O^1vHaHe`3DUfl{`TCt04QSZTr<+DVEo9#Q(RkmDplGgV3_N@$>;IO}B- z#Y!_)aDuq{8_SdhY@nUExxi*hl@(O7n>=xmV+RYAHLT_^aqt>0rEtrkuNCg zxRZV42wNY&VYzGwi`hmSVQJ?ld`vbHMbxs7Zi3X!%Y2=iWaD8jkI_gEh1SC#d5}4> zsi2G+p5X*JW-G@@w(|hxvgxCoHEiP$XXs~oT6u$~`66>=g+MV&sb@2Lc!?&Oc#l^8 z%T?!S<=-^X#9>}wBlXNK)4e;EJIA2wAH3S9#crY7{UsItM SqH)Rq0000ST5Jj)b63iF|pl1|j2_;KFMHL2cj8Gyw0tsVGF7kWV8R7rr;smxu0000$FE=UW zA(J;&i}_ULJuyzXRL*$qJ(=w6rA;|VA>B&cnS#q$XOj-CUbh-|zTm8QU={BhaVZ3i zO$(;IRIm*fd|oQ}q$2_3N9~kPA&m@PQ`u94eXH1=v4gFyR>&AE_pb3vaVsNAusN(Z zSCd|_j}q+D3!2EvN3e1#cGB(7i1myp&J;`nf(RlQ&W^d9A84z;5}^K4#j=X3ucZJ006=fYeiP6-7YuL1 e0ssI2cs4Ht!m%z{9AU|>}Dba4!+V0?4KRP3;U2y5Wv zc{30Fj?au*E<9)b1)ubNQ(0LBfgms?HPn2a#S&-D=dr=zsRqm6{(8Y*J?H&yvopp$ zlTooi&Af$w}@l z&zRT7Ezp(E_{_AkMj>24Q1Gv_Rmh$#^UwJ;?);qjy{ew&MNw$T^={sb{hFI@=P~Wl z-nEO0~i<$25aiGRYcYHNfp!|_^j?%&+;w3=!*wKjP4|rk3T0i%nj67$T{H=!^TO| uiVF|Up2m`OamlQyzaFlguNFT^#nZ_3RZiyN-Yx@B9C^C>xvXA&u0Wa=fN%QbT%ftKB|(0{ z46H7b_uu;TUv$z3w%S9Q_r>13PT6-utMBTcT@$a!%~D^-z`)q+>Eakt!T9Eu>9ivT z0vYFTIyuZ(o=D>eQ#`wdRuI zGj`T(j*E=D9Xnwfvq$3gvr_-|ZqaeLwO(iE;lR_(B{nMk{{!V1tk&tQd>d!Sa4TPT z>D)aGTQ;}&9pqP-qqEPgjv-5D*Q+<21?zOSb=xqOY`n2_>x7_-%Wg6{x^i!34zY-b1iAqKoYZ>c@VBVAcb?s%S{W2gaFCw@X95`s z$Hc(g9~tlYGJq_BmaqA_yf^>Jc_lCi&R8J9D0^lD&qKat9mf_-wbWx^aQJVqwLbE; zJ@2{uX3zUKf4=^7@8=%}YU}M6T=0+hqOA0{$J>6%Wq--9$w7bTh=YvgiHN^9l~MN5 P91zFT)z4*}Q$iB}d|SiM literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/round_border_outer_20.xml b/app/src/main/res/drawable/round_border_outer_20.xml new file mode 100644 index 0000000..228fb4e --- /dev/null +++ b/app/src/main/res/drawable/round_border_outer_20.xml @@ -0,0 +1,25 @@ + + + + + + + + diff --git a/app/src/main/res/drawable/round_border_outer_24.xml b/app/src/main/res/drawable/round_border_outer_24.xml new file mode 100644 index 0000000..e5d6687 --- /dev/null +++ b/app/src/main/res/drawable/round_border_outer_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/round_dark_mode_20.xml b/app/src/main/res/drawable/round_dark_mode_20.xml new file mode 100644 index 0000000..8362aa0 --- /dev/null +++ b/app/src/main/res/drawable/round_dark_mode_20.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/round_dark_mode_24.xml b/app/src/main/res/drawable/round_dark_mode_24.xml new file mode 100644 index 0000000..7c2afbf --- /dev/null +++ b/app/src/main/res/drawable/round_dark_mode_24.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/round_select_all_20.xml b/app/src/main/res/drawable/round_select_all_20.xml new file mode 100644 index 0000000..e85eb79 --- /dev/null +++ b/app/src/main/res/drawable/round_select_all_20.xml @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/fragment_app_main.xml b/app/src/main/res/layout/fragment_app_main.xml index d02520c..4b8598e 100644 --- a/app/src/main/res/layout/fragment_app_main.xml +++ b/app/src/main/res/layout/fragment_app_main.xml @@ -1,15 +1,15 @@ - - - - + android:gravity="center" /> - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_tab_layout.xml b/app/src/main/res/layout/fragment_tab_layout.xml index 2fd1cf5..5385838 100644 --- a/app/src/main/res/layout/fragment_tab_layout.xml +++ b/app/src/main/res/layout/fragment_tab_layout.xml @@ -29,6 +29,80 @@ android:paddingLeft="20dp" android:paddingRight="20dp" android:textAppearance="@style/AnotherWidget.Settings.Header" /> + + + + + + + + + + + + + + @@ -13,8 +12,6 @@ android:layout_height="match_parent" android:orientation="vertical" android:gravity="center_vertical|start" - android:paddingLeft="8dp" - android:paddingRight="8dp" android:id="@+id/main_layout" android:animateLayoutChanges="true"> @@ -13,8 +12,6 @@ android:layout_height="match_parent" android:orientation="vertical" android:gravity="center_vertical|end" - android:paddingLeft="8dp" - android:paddingRight="8dp" android:id="@+id/main_layout" android:animateLayoutChanges="true"> @@ -13,8 +12,6 @@ android:layout_height="match_parent" android:orientation="vertical" android:gravity="center" - android:paddingLeft="8dp" - android:paddingRight="8dp" android:id="@+id/main_layout" android:animateLayoutChanges="true"> Black Italic Heavy Italic + Widget padding + Widget margin + None + Small + Medium + Large + Calendar Show your events