mirror of
https://github.com/SimpleMobileTools/Simple-Contacts.git
synced 2025-06-05 21:59:27 +02:00
add a datepicker for changing the event date
This commit is contained in:
@ -36,7 +36,8 @@ ext {
|
|||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
implementation 'com.simplemobiletools:commons:3.4.11'
|
implementation 'com.simplemobiletools:commons:3.4.13'
|
||||||
|
implementation 'joda-time:joda-time:2.9.9'
|
||||||
|
|
||||||
debugImplementation "com.squareup.leakcanary:leakcanary-android:$leakCanaryVersion"
|
debugImplementation "com.squareup.leakcanary:leakcanary-android:$leakCanaryVersion"
|
||||||
releaseImplementation "com.squareup.leakcanary:leakcanary-android-no-op:$leakCanaryVersion"
|
releaseImplementation "com.squareup.leakcanary:leakcanary-android-no-op:$leakCanaryVersion"
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package com.simplemobiletools.contacts.activities
|
package com.simplemobiletools.contacts.activities
|
||||||
|
|
||||||
|
import android.app.DatePickerDialog
|
||||||
import android.content.ClipData
|
import android.content.ClipData
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.graphics.drawable.ColorDrawable
|
import android.graphics.drawable.ColorDrawable
|
||||||
@ -43,7 +44,11 @@ import kotlinx.android.synthetic.main.activity_contact.*
|
|||||||
import kotlinx.android.synthetic.main.item_email.view.*
|
import kotlinx.android.synthetic.main.item_email.view.*
|
||||||
import kotlinx.android.synthetic.main.item_event.view.*
|
import kotlinx.android.synthetic.main.item_event.view.*
|
||||||
import kotlinx.android.synthetic.main.item_phone_number.view.*
|
import kotlinx.android.synthetic.main.item_phone_number.view.*
|
||||||
|
import org.joda.time.DateTime
|
||||||
|
import org.joda.time.format.DateTimeFormat
|
||||||
import java.io.File
|
import java.io.File
|
||||||
|
import java.lang.IllegalArgumentException
|
||||||
|
import java.util.*
|
||||||
|
|
||||||
class ContactActivity : SimpleActivity() {
|
class ContactActivity : SimpleActivity() {
|
||||||
private val DEFAULT_EMAIL_TYPE = ContactsContract.CommonDataKinds.Email.TYPE_HOME
|
private val DEFAULT_EMAIL_TYPE = ContactsContract.CommonDataKinds.Email.TYPE_HOME
|
||||||
@ -232,8 +237,11 @@ class ContactActivity : SimpleActivity() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
(eventHolder as? ViewGroup)?.apply {
|
(eventHolder as? ViewGroup)?.apply {
|
||||||
contact_event.text = event.value
|
val date = getDateTime(event.value)
|
||||||
setupEventTypePicker(contact_event_type, event.type)
|
contact_event.text = date.toString(DateTimeFormat.mediumDate())
|
||||||
|
contact_event.tag = date.toString()
|
||||||
|
contact_event.alpha = 1f
|
||||||
|
setupEventTypePicker(contact_event_type, contact_event, event.type)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -294,14 +302,14 @@ class ContactActivity : SimpleActivity() {
|
|||||||
|
|
||||||
if (contact!!.events.isEmpty()) {
|
if (contact!!.events.isEmpty()) {
|
||||||
val eventHolder = contact_events_holder.getChildAt(0)
|
val eventHolder = contact_events_holder.getChildAt(0)
|
||||||
(eventHolder as? ViewGroup)?.contact_event_type?.apply {
|
(eventHolder as? ViewGroup)?.apply {
|
||||||
setupEventTypePicker(this)
|
setupEventTypePicker(contact_event_type, contact_event)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun setupPhoneNumberTypePicker(numberField: TextView, type: Int = DEFAULT_PHONE_NUMBER_TYPE) {
|
private fun setupPhoneNumberTypePicker(numberTypeField: TextView, type: Int = DEFAULT_PHONE_NUMBER_TYPE) {
|
||||||
numberField.apply {
|
numberTypeField.apply {
|
||||||
setText(getPhoneNumberTextId(type))
|
setText(getPhoneNumberTextId(type))
|
||||||
setOnClickListener {
|
setOnClickListener {
|
||||||
showNumberTypePicker(it as TextView)
|
showNumberTypePicker(it as TextView)
|
||||||
@ -309,8 +317,8 @@ class ContactActivity : SimpleActivity() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun setupEmailTypePicker(emailField: TextView, type: Int = DEFAULT_EMAIL_TYPE) {
|
private fun setupEmailTypePicker(emailTypeField: TextView, type: Int = DEFAULT_EMAIL_TYPE) {
|
||||||
emailField.apply {
|
emailTypeField.apply {
|
||||||
setText(getEmailTextId(type))
|
setText(getEmailTextId(type))
|
||||||
setOnClickListener {
|
setOnClickListener {
|
||||||
showEmailTypePicker(it as TextView)
|
showEmailTypePicker(it as TextView)
|
||||||
@ -318,13 +326,35 @@ class ContactActivity : SimpleActivity() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun setupEventTypePicker(eventField: TextView, type: Int = DEFAULT_EVENT_TYPE) {
|
private fun setupEventTypePicker(eventTypeField: TextView, eventField: TextView, type: Int = DEFAULT_EVENT_TYPE) {
|
||||||
eventField.apply {
|
eventTypeField.apply {
|
||||||
setText(getEventTextId(type))
|
setText(getEventTextId(type))
|
||||||
setOnClickListener {
|
setOnClickListener {
|
||||||
showEventTypePicker(it as TextView)
|
showEventTypePicker(it as TextView)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
eventField.setOnClickListener {
|
||||||
|
val setDateListener = DatePickerDialog.OnDateSetListener { view, year, monthOfYear, dayOfMonth ->
|
||||||
|
val date = DateTime().withDate(year, monthOfYear + 1, dayOfMonth).withTimeAtStartOfDay()
|
||||||
|
val formatted = date.toString(DateTimeFormat.mediumDate())
|
||||||
|
eventField.text = formatted
|
||||||
|
eventField.tag = date.toString()
|
||||||
|
eventField.alpha = 1f
|
||||||
|
}
|
||||||
|
|
||||||
|
val date = getDateTime(eventField.tag?.toString() ?: "")
|
||||||
|
DatePickerDialog(this, getDialogTheme(), setDateListener, date.year, date.monthOfYear - 1, date.dayOfMonth).show()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun getDateTime(dateString: String): DateTime {
|
||||||
|
var date = DateTime()
|
||||||
|
try {
|
||||||
|
date = DateTime.parse(dateString)
|
||||||
|
} catch (ignored: IllegalArgumentException) {
|
||||||
|
}
|
||||||
|
return date
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun showNumberTypePicker(numberTypeField: TextView) {
|
private fun showNumberTypePicker(numberTypeField: TextView) {
|
||||||
@ -336,7 +366,8 @@ class ContactActivity : SimpleActivity() {
|
|||||||
RadioItem(ContactsContract.CommonDataKinds.Phone.TYPE_FAX_WORK, getString(R.string.work_fax)),
|
RadioItem(ContactsContract.CommonDataKinds.Phone.TYPE_FAX_WORK, getString(R.string.work_fax)),
|
||||||
RadioItem(ContactsContract.CommonDataKinds.Phone.TYPE_FAX_HOME, getString(R.string.home_fax)),
|
RadioItem(ContactsContract.CommonDataKinds.Phone.TYPE_FAX_HOME, getString(R.string.home_fax)),
|
||||||
RadioItem(ContactsContract.CommonDataKinds.Phone.TYPE_PAGER, getString(R.string.pager)),
|
RadioItem(ContactsContract.CommonDataKinds.Phone.TYPE_PAGER, getString(R.string.pager)),
|
||||||
RadioItem(ContactsContract.CommonDataKinds.Phone.TYPE_OTHER, getString(R.string.other)))
|
RadioItem(ContactsContract.CommonDataKinds.Phone.TYPE_OTHER, getString(R.string.other))
|
||||||
|
)
|
||||||
|
|
||||||
val currentNumberTypeId = getPhoneNumberTypeId(numberTypeField.value)
|
val currentNumberTypeId = getPhoneNumberTypeId(numberTypeField.value)
|
||||||
RadioGroupDialog(this, items, currentNumberTypeId) {
|
RadioGroupDialog(this, items, currentNumberTypeId) {
|
||||||
@ -349,7 +380,8 @@ class ContactActivity : SimpleActivity() {
|
|||||||
RadioItem(ContactsContract.CommonDataKinds.Email.TYPE_HOME, getString(R.string.home)),
|
RadioItem(ContactsContract.CommonDataKinds.Email.TYPE_HOME, getString(R.string.home)),
|
||||||
RadioItem(ContactsContract.CommonDataKinds.Email.TYPE_WORK, getString(R.string.work)),
|
RadioItem(ContactsContract.CommonDataKinds.Email.TYPE_WORK, getString(R.string.work)),
|
||||||
RadioItem(ContactsContract.CommonDataKinds.Email.TYPE_MOBILE, getString(R.string.mobile)),
|
RadioItem(ContactsContract.CommonDataKinds.Email.TYPE_MOBILE, getString(R.string.mobile)),
|
||||||
RadioItem(ContactsContract.CommonDataKinds.Email.TYPE_OTHER, getString(R.string.other)))
|
RadioItem(ContactsContract.CommonDataKinds.Email.TYPE_OTHER, getString(R.string.other))
|
||||||
|
)
|
||||||
|
|
||||||
val currentEmailTypeId = getEmailTypeId(emailTypeField.value)
|
val currentEmailTypeId = getEmailTypeId(emailTypeField.value)
|
||||||
RadioGroupDialog(this, items, currentEmailTypeId) {
|
RadioGroupDialog(this, items, currentEmailTypeId) {
|
||||||
@ -361,7 +393,8 @@ class ContactActivity : SimpleActivity() {
|
|||||||
val items = arrayListOf(
|
val items = arrayListOf(
|
||||||
RadioItem(ContactsContract.CommonDataKinds.Event.TYPE_BIRTHDAY, getString(R.string.birthday)),
|
RadioItem(ContactsContract.CommonDataKinds.Event.TYPE_BIRTHDAY, getString(R.string.birthday)),
|
||||||
RadioItem(ContactsContract.CommonDataKinds.Event.TYPE_ANNIVERSARY, getString(R.string.anniversary)),
|
RadioItem(ContactsContract.CommonDataKinds.Event.TYPE_ANNIVERSARY, getString(R.string.anniversary)),
|
||||||
RadioItem(ContactsContract.CommonDataKinds.Event.TYPE_OTHER, getString(R.string.other)))
|
RadioItem(ContactsContract.CommonDataKinds.Event.TYPE_OTHER, getString(R.string.other))
|
||||||
|
)
|
||||||
|
|
||||||
val currentEventTypeId = getEventTypeId(eventTypeField.value)
|
val currentEventTypeId = getEventTypeId(eventTypeField.value)
|
||||||
RadioGroupDialog(this, items, currentEventTypeId) {
|
RadioGroupDialog(this, items, currentEventTypeId) {
|
||||||
@ -438,7 +471,9 @@ class ContactActivity : SimpleActivity() {
|
|||||||
val eventType = getEventTypeId(eventHolder.contact_event_type.value)
|
val eventType = getEventTypeId(eventHolder.contact_event_type.value)
|
||||||
|
|
||||||
if (event.isNotEmpty() && event != unknown) {
|
if (event.isNotEmpty() && event != unknown) {
|
||||||
events.add(Event(event, eventType))
|
val date = getDateTime(eventHolder.contact_event.tag.toString())
|
||||||
|
val formattedEventDate = date.toString(DateTimeFormat.shortDate())
|
||||||
|
events.add(Event(formattedEventDate, eventType))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return events
|
return events
|
||||||
@ -501,7 +536,7 @@ class ContactActivity : SimpleActivity() {
|
|||||||
private fun addNewEventField() {
|
private fun addNewEventField() {
|
||||||
layoutInflater.inflate(R.layout.item_event, contact_events_holder, false).apply {
|
layoutInflater.inflate(R.layout.item_event, contact_events_holder, false).apply {
|
||||||
updateTextColors(this as ViewGroup)
|
updateTextColors(this as ViewGroup)
|
||||||
setupEventTypePicker(contact_event_type)
|
setupEventTypePicker(contact_event_type, contact_event)
|
||||||
contact_events_holder.addView(this)
|
contact_events_holder.addView(this)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user