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 beda22c..68c8122 100644 --- a/app/src/main/java/com/tommasoberlose/anotherwidget/components/BottomSheetColorPicker.kt +++ b/app/src/main/java/com/tommasoberlose/anotherwidget/components/BottomSheetColorPicker.kt @@ -16,6 +16,7 @@ import androidx.core.content.ContextCompat import androidx.core.view.isVisible import androidx.core.widget.addTextChangedListener import androidx.recyclerview.widget.GridLayoutManager +import androidx.recyclerview.widget.RecyclerView import com.google.android.material.bottomsheet.BottomSheetBehavior import com.google.android.material.bottomsheet.BottomSheetDialog import com.google.android.material.card.MaterialCardView @@ -79,61 +80,51 @@ class BottomSheetColorPicker( // List - 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) - } - } - .attachTo(view.menu) - loadingJobs.add(GlobalScope.launch(Dispatchers.IO) { + val listView = View.inflate(context, R.layout.bottom_sheet_menu_list, null) as RecyclerView + listView.setHasFixedSize(true) + val mLayoutManager = GridLayoutManager(context, 6) + listView.layoutManager = mLayoutManager + + adapter + .register(R.layout.color_picker_menu_item) { item, injector -> + injector + .with(R.id.color) { + it.setCardBackgroundColor(ColorStateList.valueOf(item)) + } + .with(R.id.check) { + if (getSelected?.invoke() == item) { + it.setColorFilter( + ContextCompat.getColor( + context, + if (item.isColorDark()) android.R.color.white else android.R.color.black + ), + android.graphics.PorterDuff.Mode.MULTIPLY + ) + it.isVisible = true + } else { + it.isVisible = false + } + } + .clicked(R.id.color) { + adapter.notifyItemChanged(adapter.data.indexOf(getSelected?.invoke())) + onColorSelected?.invoke(item) + val position = adapter.data.indexOf(item) + adapter.notifyItemChanged(position) + (listView.layoutManager as GridLayoutManager).scrollToPositionWithOffset(position,0) + } + } + .attachTo(listView) adapter.updateData(colors.toList()) withContext(Dispatchers.Main) { view.color_loader.isVisible = false + view.list_container.addView(listView) this@BottomSheetColorPicker.behavior.state = BottomSheetBehavior.STATE_EXPANDED -// this@BottomSheetColorPicker.behavior.isFitToContents = false - view.menu.isVisible = true + view.list_container.isVisible = true } }) 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 b44ba04..17718d2 100644 --- a/app/src/main/java/com/tommasoberlose/anotherwidget/helpers/IntentHelper.kt +++ b/app/src/main/java/com/tommasoberlose/anotherwidget/helpers/IntentHelper.kt @@ -79,7 +79,7 @@ object IntentHelper { val calendarUri = CalendarContract.CONTENT_URI .buildUpon() .appendPath("time") - .appendPath("0".toString()) + .appendPath(Calendar.getInstance().timeInMillis.toString()) .build() return when (Preferences.calendarAppPackage) { "" -> { @@ -116,6 +116,8 @@ object IntentHelper { data = uri putExtra(CalendarContract.EXTRA_EVENT_BEGIN_TIME, e.startDate) putExtra(CalendarContract.EXTRA_EVENT_END_TIME, e.endDate) + putExtra(CalendarContract.EXTRA_EVENT_ALL_DAY, if (e.allDay) 1 else 0) +// type = "vnd.android.cursor.item/event" } } else { getCalendarIntent(context).apply { @@ -123,6 +125,8 @@ object IntentHelper { data = uri putExtra(CalendarContract.EXTRA_EVENT_BEGIN_TIME, e.startDate) putExtra(CalendarContract.EXTRA_EVENT_END_TIME, e.endDate) + putExtra(CalendarContract.EXTRA_EVENT_ALL_DAY, if (e.allDay) 1 else 0) +// type = "vnd.android.cursor.item/event" } } } 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 19cdd04..6a61c00 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 @@ -92,9 +92,6 @@ class MainActivity : AppCompatActivity(), SharedPreferences.OnSharedPreferenceCh subscribeUi(viewModel) updateUI() - WeatherHelper.updateWeather(this) - - // Warnings if (getString(R.string.xiaomi_manufacturer).equals(Build.MANUFACTURER, ignoreCase = true) && Preferences.showXiaomiWarning) { MaterialBottomSheetDialog(this, getString(R.string.xiaomi_warning_title), getString(R.string.xiaomi_warning_message)) diff --git a/app/src/main/java/com/tommasoberlose/anotherwidget/ui/fragments/AdvancedSettingsFragment.kt b/app/src/main/java/com/tommasoberlose/anotherwidget/ui/fragments/AdvancedSettingsFragment.kt index 31a7f87..d81378a 100644 --- a/app/src/main/java/com/tommasoberlose/anotherwidget/ui/fragments/AdvancedSettingsFragment.kt +++ b/app/src/main/java/com/tommasoberlose/anotherwidget/ui/fragments/AdvancedSettingsFragment.kt @@ -29,6 +29,7 @@ import com.tommasoberlose.anotherwidget.ui.activities.MainActivity import com.tommasoberlose.anotherwidget.ui.activities.SupportDevActivity import com.tommasoberlose.anotherwidget.ui.viewmodels.MainViewModel import com.tommasoberlose.anotherwidget.helpers.CalendarHelper +import com.tommasoberlose.anotherwidget.helpers.WeatherHelper import com.tommasoberlose.anotherwidget.ui.widgets.MainWidget import com.tommasoberlose.anotherwidget.utils.checkGrantedPermission import com.tommasoberlose.anotherwidget.utils.openURI @@ -187,7 +188,7 @@ class AdvancedSettingsFragment : Fragment() { } action_refresh_widget.setOnClickListener { - MainWidget.updateWidget(requireContext()) + WeatherHelper.updateWeather(requireContext()) CalendarHelper.updateEventList(requireContext()) } } diff --git a/app/src/main/java/com/tommasoberlose/anotherwidget/ui/fragments/CalendarSettingsFragment.kt b/app/src/main/java/com/tommasoberlose/anotherwidget/ui/fragments/CalendarSettingsFragment.kt index 5c7a3cc..a7461b9 100644 --- a/app/src/main/java/com/tommasoberlose/anotherwidget/ui/fragments/CalendarSettingsFragment.kt +++ b/app/src/main/java/com/tommasoberlose/anotherwidget/ui/fragments/CalendarSettingsFragment.kt @@ -156,6 +156,9 @@ class CalendarSettingsFragment : Fragment() { action_show_events.setOnClickListener { Preferences.showEvents = !Preferences.showEvents + if (Preferences.showEvents) { + requirePermission() + } } action_filter_calendar.setOnClickListener { diff --git a/app/src/main/java/com/tommasoberlose/anotherwidget/ui/fragments/WeatherSettingsFragment.kt b/app/src/main/java/com/tommasoberlose/anotherwidget/ui/fragments/WeatherSettingsFragment.kt index 21d0f19..4ebd7d3 100644 --- a/app/src/main/java/com/tommasoberlose/anotherwidget/ui/fragments/WeatherSettingsFragment.kt +++ b/app/src/main/java/com/tommasoberlose/anotherwidget/ui/fragments/WeatherSettingsFragment.kt @@ -81,12 +81,14 @@ class WeatherSettingsFragment : Fragment() { ) { viewModel.showWeatherWarning.observe(viewLifecycleOwner, Observer { weather_warning?.isVisible = it + checkLocationPermission() }) viewModel.showWeather.observe(viewLifecycleOwner, Observer { maintainScrollPosition { show_weather_label?.text = if (it) getString(R.string.show_weather_visible) else getString(R.string.show_weather_not_visible) + checkWeatherProviderConfig() binding.isWeatherVisible = it } checkLocationPermission() @@ -94,11 +96,7 @@ class WeatherSettingsFragment : Fragment() { viewModel.weatherProviderApi.observe(viewLifecycleOwner, Observer { maintainScrollPosition { - label_weather_provider_api_key?.text = - if (it == "") getString(R.string.settings_weather_provider_api_key_subtitle_not_set) else getString( - R.string.settings_weather_provider_api_key_subtitle_all_set - ) - label_weather_provider_api_key?.setTextColor(ContextCompat.getColor(requireContext(), if (it == "") R.color.errorColorText else R.color.colorSecondaryText)) + checkWeatherProviderConfig() } checkLocationPermission() }) @@ -148,9 +146,19 @@ class WeatherSettingsFragment : Fragment() { location_permission_alert?.setOnClickListener { requirePermission() } + } else { + location_permission_alert?.isVisible = false } } + private fun checkWeatherProviderConfig() { + label_weather_provider_api_key?.text = + if (Preferences.weatherProviderApi == "") getString(R.string.settings_weather_provider_api_key_subtitle_not_set) else getString( + R.string.settings_weather_provider_api_key_subtitle_all_set + ) + label_weather_provider_api_key?.setTextColor(ContextCompat.getColor(requireContext(), if (Preferences.weatherProviderApi == "" && Preferences.showWeather) R.color.errorColorText else R.color.colorSecondaryText)) + } + private fun setupListener() { action_hide_weather_warning.setOnClickListener { Preferences.showWeatherWarning = false diff --git a/app/src/main/res/layout/bottom_sheet_menu_hor.xml b/app/src/main/res/layout/bottom_sheet_menu_hor.xml index 3b0d26e..893ccd9 100644 --- a/app/src/main/res/layout/bottom_sheet_menu_hor.xml +++ b/app/src/main/res/layout/bottom_sheet_menu_hor.xml @@ -96,13 +96,11 @@ - + android:layout_height="260dp" + android:id="@+id/list_container" + android:orientation="vertical" /> + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_weather_settings.xml b/app/src/main/res/layout/fragment_weather_settings.xml index 9d82d86..9c0cdc9 100644 --- a/app/src/main/res/layout/fragment_weather_settings.xml +++ b/app/src/main/res/layout/fragment_weather_settings.xml @@ -198,6 +198,7 @@ android:paddingBottom="0dp" android:paddingTop="0dp" android:focusable="true" + android:visibility="gone" android:id="@+id/location_permission_alert" android:textColor="@color/errorColorText" android:text="@string/action_grant_permission"/>