From 85e05f07a9ecebfebfecad4edb7ff91b47ee489f Mon Sep 17 00:00:00 2001 From: Naveen Date: Tue, 11 Apr 2023 17:28:23 +0530 Subject: [PATCH] Update event type color dialog --- .../pro/dialogs/EditEventTypeDialog.kt | 5 +- .../pro/dialogs/SelectEventColorDialog.kt | 4 +- .../pro/dialogs/SelectEventTypeColorDialog.kt | 65 +++++-------------- .../calendar/pro/helpers/CalDAVHelper.kt | 3 +- ...vent_color.xml => dialog_select_color.xml} | 0 .../layout/dialog_select_event_type_color.xml | 45 ------------- 6 files changed, 26 insertions(+), 96 deletions(-) rename app/src/main/res/layout/{dialog_select_event_color.xml => dialog_select_color.xml} (100%) delete mode 100644 app/src/main/res/layout/dialog_select_event_type_color.xml diff --git a/app/src/main/kotlin/com/simplemobiletools/calendar/pro/dialogs/EditEventTypeDialog.kt b/app/src/main/kotlin/com/simplemobiletools/calendar/pro/dialogs/EditEventTypeDialog.kt index 0133c3d2f..1b73dd378 100644 --- a/app/src/main/kotlin/com/simplemobiletools/calendar/pro/dialogs/EditEventTypeDialog.kt +++ b/app/src/main/kotlin/com/simplemobiletools/calendar/pro/dialogs/EditEventTypeDialog.kt @@ -4,6 +4,7 @@ import android.app.Activity import android.widget.ImageView import androidx.appcompat.app.AlertDialog import com.simplemobiletools.calendar.pro.R +import com.simplemobiletools.calendar.pro.extensions.calDAVHelper import com.simplemobiletools.calendar.pro.extensions.eventsHelper import com.simplemobiletools.calendar.pro.helpers.OTHER_EVENT import com.simplemobiletools.calendar.pro.models.EventType @@ -32,7 +33,9 @@ class EditEventTypeDialog(val activity: Activity, var eventType: EventType? = nu } } } else { - SelectEventTypeColorDialog(activity, eventType!!) { + val currentColor = eventType!!.color + val colors = activity.calDAVHelper.getAvailableCalDAVCalendarColors(eventType!!).keys.toIntArray() + SelectEventTypeColorDialog(activity, colors = colors, currentColor = currentColor) { eventType!!.color = it setupColor(type_color) } diff --git a/app/src/main/kotlin/com/simplemobiletools/calendar/pro/dialogs/SelectEventColorDialog.kt b/app/src/main/kotlin/com/simplemobiletools/calendar/pro/dialogs/SelectEventColorDialog.kt index 8bd64cc98..68a9a395c 100644 --- a/app/src/main/kotlin/com/simplemobiletools/calendar/pro/dialogs/SelectEventColorDialog.kt +++ b/app/src/main/kotlin/com/simplemobiletools/calendar/pro/dialogs/SelectEventColorDialog.kt @@ -8,13 +8,13 @@ import com.simplemobiletools.calendar.pro.adapters.CheckableColorAdapter import com.simplemobiletools.calendar.pro.views.AutoGridLayoutManager import com.simplemobiletools.commons.extensions.getAlertDialogBuilder import com.simplemobiletools.commons.extensions.setupDialogStuff -import kotlinx.android.synthetic.main.dialog_select_event_color.view.* +import kotlinx.android.synthetic.main.dialog_select_color.view.* class SelectEventColorDialog(val activity: Activity, val colors: IntArray, var currentColor: Int, val callback: (color: Int) -> Unit) { private var dialog: AlertDialog? = null init { - val view = activity.layoutInflater.inflate(R.layout.dialog_select_event_color, null) as ViewGroup + val view = activity.layoutInflater.inflate(R.layout.dialog_select_color, null) as ViewGroup val colorAdapter = CheckableColorAdapter(activity, colors, currentColor) { color -> callback(color) dialog?.dismiss() diff --git a/app/src/main/kotlin/com/simplemobiletools/calendar/pro/dialogs/SelectEventTypeColorDialog.kt b/app/src/main/kotlin/com/simplemobiletools/calendar/pro/dialogs/SelectEventTypeColorDialog.kt index 0467bb229..281a1f3ec 100644 --- a/app/src/main/kotlin/com/simplemobiletools/calendar/pro/dialogs/SelectEventTypeColorDialog.kt +++ b/app/src/main/kotlin/com/simplemobiletools/calendar/pro/dialogs/SelectEventTypeColorDialog.kt @@ -1,44 +1,38 @@ package com.simplemobiletools.calendar.pro.dialogs import android.app.Activity -import android.provider.CalendarContract.Colors import android.view.ViewGroup -import android.widget.RadioButton -import android.widget.RadioGroup import androidx.appcompat.app.AlertDialog import com.simplemobiletools.calendar.pro.R -import com.simplemobiletools.calendar.pro.extensions.calDAVHelper -import com.simplemobiletools.calendar.pro.models.EventType +import com.simplemobiletools.calendar.pro.adapters.CheckableColorAdapter +import com.simplemobiletools.calendar.pro.views.AutoGridLayoutManager import com.simplemobiletools.commons.dialogs.ColorPickerDialog import com.simplemobiletools.commons.extensions.getAlertDialogBuilder -import com.simplemobiletools.commons.extensions.getProperBackgroundColor -import com.simplemobiletools.commons.extensions.setFillWithStroke import com.simplemobiletools.commons.extensions.setupDialogStuff -import kotlinx.android.synthetic.main.dialog_select_event_type_color.view.* -import kotlinx.android.synthetic.main.radio_button_with_color.view.* +import kotlinx.android.synthetic.main.dialog_select_color.view.* -class SelectEventTypeColorDialog(val activity: Activity, val eventType: EventType, val callback: (color: Int) -> Unit) { +class SelectEventTypeColorDialog(val activity: Activity, val colors: IntArray, var currentColor: Int, val callback: (color: Int) -> Unit) { private var dialog: AlertDialog? = null - private val radioGroup: RadioGroup - private var wasInit = false - private val colors = activity.calDAVHelper.getAvailableCalDAVCalendarColors(eventType, Colors.TYPE_CALENDAR).keys init { - val view = activity.layoutInflater.inflate(R.layout.dialog_select_event_type_color, null) as ViewGroup - radioGroup = view.dialog_select_event_type_color_radio - view.dialog_select_event_type_other_value.setOnClickListener { - showCustomColorPicker() + val view = activity.layoutInflater.inflate(R.layout.dialog_select_color, null) as ViewGroup + val colorAdapter = CheckableColorAdapter(activity, colors, currentColor) { color -> + callback(color) + dialog?.dismiss() } - colors.forEachIndexed { index, color -> - addRadioButton(index, color) + view.color_grid.apply { + val width = activity.resources.getDimensionPixelSize(R.dimen.smaller_icon_size) + val spacing = activity.resources.getDimensionPixelSize(R.dimen.small_margin) * 2 + layoutManager = AutoGridLayoutManager(context = activity, itemWidth = width + spacing) + adapter = colorAdapter } - wasInit = true activity.getAlertDialogBuilder() + .setNegativeButton(R.string.cancel, null) .apply { - activity.setupDialogStuff(view, this) { alertDialog -> - dialog = alertDialog + activity.setupDialogStuff(view, this, R.string.color) { + dialog = it } if (colors.isEmpty()) { @@ -47,35 +41,12 @@ class SelectEventTypeColorDialog(val activity: Activity, val eventType: EventTyp } } - private fun addRadioButton(index: Int, color: Int) { - val view = activity.layoutInflater.inflate(R.layout.radio_button_with_color, null) - (view.dialog_radio_button as RadioButton).apply { - text = if (color == 0) activity.getString(R.string.transparent) else String.format("#%06X", 0xFFFFFF and color) - isChecked = color == eventType.color - id = index - } - - view.dialog_radio_color.setFillWithStroke(color, activity.getProperBackgroundColor()) - view.setOnClickListener { - viewClicked(color) - } - radioGroup.addView(view, RadioGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)) - } - - private fun viewClicked(color: Int) { - if (!wasInit) { - return - } - - callback(color) - dialog?.dismiss() - } - private fun showCustomColorPicker() { - ColorPickerDialog(activity, eventType.color) { wasPositivePressed, color -> + ColorPickerDialog(activity, currentColor) { wasPositivePressed, color -> if (wasPositivePressed) { callback(color) } + dialog?.dismiss() } } diff --git a/app/src/main/kotlin/com/simplemobiletools/calendar/pro/helpers/CalDAVHelper.kt b/app/src/main/kotlin/com/simplemobiletools/calendar/pro/helpers/CalDAVHelper.kt index 5a0a3cf53..9f5bb195f 100644 --- a/app/src/main/kotlin/com/simplemobiletools/calendar/pro/helpers/CalDAVHelper.kt +++ b/app/src/main/kotlin/com/simplemobiletools/calendar/pro/helpers/CalDAVHelper.kt @@ -85,8 +85,9 @@ class CalDAVHelper(val context: Context) { val accountType = cursor.getStringValue(Calendars.ACCOUNT_TYPE) val ownerName = cursor.getStringValue(Calendars.OWNER_ACCOUNT) ?: "" val color = cursor.getIntValue(Calendars.CALENDAR_COLOR) + val displayColor = getDisplayColorFromColor(color) val accessLevel = cursor.getIntValue(Calendars.CALENDAR_ACCESS_LEVEL) - val calendar = CalDAVCalendar(id, displayName, accountName, accountType, ownerName, color, accessLevel) + val calendar = CalDAVCalendar(id, displayName, accountName, accountType, ownerName, displayColor, accessLevel) calendars.add(calendar) } diff --git a/app/src/main/res/layout/dialog_select_event_color.xml b/app/src/main/res/layout/dialog_select_color.xml similarity index 100% rename from app/src/main/res/layout/dialog_select_event_color.xml rename to app/src/main/res/layout/dialog_select_color.xml diff --git a/app/src/main/res/layout/dialog_select_event_type_color.xml b/app/src/main/res/layout/dialog_select_event_type_color.xml deleted file mode 100644 index a4960b141..000000000 --- a/app/src/main/res/layout/dialog_select_event_type_color.xml +++ /dev/null @@ -1,45 +0,0 @@ - - - - - - - - - - - - -