diff --git a/app/src/main/kotlin/com/simplemobiletools/calendar/pro/activities/EventActivity.kt b/app/src/main/kotlin/com/simplemobiletools/calendar/pro/activities/EventActivity.kt index d6bacc8ab..f0564f530 100644 --- a/app/src/main/kotlin/com/simplemobiletools/calendar/pro/activities/EventActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/calendar/pro/activities/EventActivity.kt @@ -10,7 +10,6 @@ import android.graphics.drawable.LayerDrawable import android.net.Uri import android.os.Bundle import android.provider.CalendarContract.Attendees -import android.provider.CalendarContract.Colors import android.provider.ContactsContract.CommonDataKinds import android.provider.ContactsContract.CommonDataKinds.StructuredName import android.provider.ContactsContract.Data @@ -831,9 +830,9 @@ class EventActivity : SimpleActivity() { ensureBackgroundThread { val eventType = eventsHelper.getEventTypeWithCalDAVCalendarId(calendarId = mEventCalendarId)!! runOnUiThread { - SelectEventTypeColorDialog(activity = this, eventType = eventType, selectedColor = mEvent.color, colorType = Colors.TYPE_EVENT) { color -> + SelectEventColorDialog(activity = this, eventType = eventType, selectedColor = mEvent.color) { color -> mEvent.color = color - event_caldav_color.setFillWithStroke(color, getProperBackgroundColor()) + updateEventColorInfo(eventType.color) } } } @@ -1023,18 +1022,21 @@ class EventActivity : SimpleActivity() { event_caldav_calendar_holder.apply { setPadding(paddingLeft, 0, paddingRight, 0) } - - val eventColor = if (mEvent.color == 0) { - calendarColor - } else { - mEvent.color - } - event_caldav_color.setFillWithStroke(eventColor, getProperBackgroundColor()) + updateEventColorInfo(calendarColor) } } } } + private fun updateEventColorInfo(defaultColor: Int) { + val eventColor = if (mEvent.color == 0) { + defaultColor + } else { + mEvent.color + } + event_caldav_color.setFillWithStroke(eventColor, getProperBackgroundColor()) + } + private fun resetTime() { if (mEventEndDateTime.isBefore(mEventStartDateTime) && mEventStartDateTime.dayOfMonth() == mEventEndDateTime.dayOfMonth() && 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 6bf3d3fb9..0133c3d2f 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 @@ -32,7 +32,7 @@ class EditEventTypeDialog(val activity: Activity, var eventType: EventType? = nu } } } else { - SelectEventTypeColorDialog(activity, eventType!!, eventType!!.color) { + SelectEventTypeColorDialog(activity, eventType!!) { 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 new file mode 100644 index 000000000..5560350ef --- /dev/null +++ b/app/src/main/kotlin/com/simplemobiletools/calendar/pro/dialogs/SelectEventColorDialog.kt @@ -0,0 +1,65 @@ +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.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.* + +class SelectEventColorDialog(val activity: Activity, val eventType: EventType, val selectedColor: 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_EVENT) + + init { + val view = activity.layoutInflater.inflate(R.layout.dialog_select_event_color, null) as ViewGroup + radioGroup = view.dialog_select_event_type_color_radio + + addRadioButton(colorKey = colors.values.size.inc(), color = 0) + colors.forEach { (color, key) -> + addRadioButton(key.toInt(), color) + } + + wasInit = true + activity.getAlertDialogBuilder() + .apply { + activity.setupDialogStuff(view, this) { alertDialog -> + dialog = alertDialog + } + } + } + + private fun addRadioButton(colorKey: 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.default_color) else String.format("#%06X", 0xFFFFFF and color) + isChecked = color == selectedColor + id = colorKey + } + + 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() + } +} 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 27e560e77..dbf3061f3 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 @@ -17,17 +17,11 @@ 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.* -class SelectEventTypeColorDialog( - val activity: Activity, - val eventType: EventType, - val selectedColor: Int, - val colorType: Int = Colors.TYPE_CALENDAR, - val callback: (color: Int) -> Unit -) { +class SelectEventTypeColorDialog(val activity: Activity, val eventType: EventType, 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, colorType) + private val colors = activity.calDAVHelper.getAvailableCalDAVCalendarColors(eventType, Colors.TYPE_CALENDAR) init { val view = activity.layoutInflater.inflate(R.layout.dialog_select_event_type_color, null) as ViewGroup @@ -57,7 +51,7 @@ class SelectEventTypeColorDialog( 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 == selectedColor + isChecked = color == eventType.color id = colorKey } diff --git a/app/src/main/res/layout/dialog_select_event_color.xml b/app/src/main/res/layout/dialog_select_event_color.xml new file mode 100644 index 000000000..18698e72b --- /dev/null +++ b/app/src/main/res/layout/dialog_select_event_color.xml @@ -0,0 +1,22 @@ + + + + + + + + +