mirror of
https://github.com/SimpleMobileTools/Simple-Contacts.git
synced 2025-04-17 19:37:19 +02:00
add some contact fields for Events (birthdays, anniversaries, other)
This commit is contained in:
parent
896acbbc0b
commit
e497c83182
@ -37,15 +37,18 @@ import com.simplemobiletools.contacts.extensions.tryStartCall
|
||||
import com.simplemobiletools.contacts.helpers.*
|
||||
import com.simplemobiletools.contacts.models.Contact
|
||||
import com.simplemobiletools.contacts.models.Email
|
||||
import com.simplemobiletools.contacts.models.Event
|
||||
import com.simplemobiletools.contacts.models.PhoneNumber
|
||||
import kotlinx.android.synthetic.main.activity_contact.*
|
||||
import kotlinx.android.synthetic.main.item_email.view.*
|
||||
import kotlinx.android.synthetic.main.item_event.view.*
|
||||
import kotlinx.android.synthetic.main.item_phone_number.view.*
|
||||
import java.io.File
|
||||
|
||||
class ContactActivity : SimpleActivity() {
|
||||
private val DEFAULT_EMAIL_TYPE = ContactsContract.CommonDataKinds.Email.TYPE_HOME
|
||||
private val DEFAULT_PHONE_NUMBER_TYPE = ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE
|
||||
private val DEFAULT_EVENT_TYPE = ContactsContract.CommonDataKinds.Event.TYPE_BIRTHDAY
|
||||
|
||||
private val INTENT_TAKE_PHOTO = 1
|
||||
private val INTENT_CHOOSE_PHOTO = 2
|
||||
@ -120,11 +123,14 @@ class ContactActivity : SimpleActivity() {
|
||||
contact_name_image.applyColorFilter(textColor)
|
||||
contact_number_image.applyColorFilter(textColor)
|
||||
contact_email_image.applyColorFilter(textColor)
|
||||
contact_event_image.applyColorFilter(textColor)
|
||||
contact_source_image.applyColorFilter(textColor)
|
||||
contact_number_add_new.applyColorFilter(getAdjustedPrimaryColor())
|
||||
contact_number_add_new.background.applyColorFilter(textColor)
|
||||
contact_email_add_new.applyColorFilter(getAdjustedPrimaryColor())
|
||||
contact_email_add_new.background.applyColorFilter(textColor)
|
||||
contact_event_add_new.applyColorFilter(getAdjustedPrimaryColor())
|
||||
contact_event_add_new.background.applyColorFilter(textColor)
|
||||
|
||||
contact_photo.setOnClickListener { trySetPhoto() }
|
||||
contact_send_sms.setOnClickListener { trySendSMS() }
|
||||
@ -132,6 +138,7 @@ class ContactActivity : SimpleActivity() {
|
||||
contact_send_email.setOnClickListener { trySendEmail() }
|
||||
contact_number_add_new.setOnClickListener { addNewPhoneNumberField() }
|
||||
contact_email_add_new.setOnClickListener { addNewEmailField() }
|
||||
contact_event_add_new.setOnClickListener { addNewEventField() }
|
||||
|
||||
updateTextColors(contact_scrollview)
|
||||
wasActivityInitialized = true
|
||||
@ -216,6 +223,19 @@ class ContactActivity : SimpleActivity() {
|
||||
setupEmailTypePicker(contact_email_type, email.type)
|
||||
}
|
||||
}
|
||||
|
||||
contact!!.events.forEachIndexed { index, event ->
|
||||
var eventHolder = contact_events_holder.getChildAt(index)
|
||||
if (eventHolder == null) {
|
||||
eventHolder = layoutInflater.inflate(R.layout.item_event, contact_events_holder, false)
|
||||
contact_events_holder.addView(eventHolder)
|
||||
}
|
||||
|
||||
(eventHolder as? ViewGroup)?.apply {
|
||||
contact_event.text = event.value
|
||||
setupEventTypePicker(contact_event_type, event.type)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun setupNewContact() {
|
||||
@ -271,6 +291,13 @@ class ContactActivity : SimpleActivity() {
|
||||
setupEmailTypePicker(this)
|
||||
}
|
||||
}
|
||||
|
||||
if (contact!!.events.isEmpty()) {
|
||||
val eventHolder = contact_events_holder.getChildAt(0)
|
||||
(eventHolder as? ViewGroup)?.contact_event_type?.apply {
|
||||
setupEventTypePicker(this)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun setupPhoneNumberTypePicker(numberField: TextView, type: Int = DEFAULT_PHONE_NUMBER_TYPE) {
|
||||
@ -291,6 +318,15 @@ class ContactActivity : SimpleActivity() {
|
||||
}
|
||||
}
|
||||
|
||||
private fun setupEventTypePicker(eventField: TextView, type: Int = DEFAULT_EVENT_TYPE) {
|
||||
eventField.apply {
|
||||
setText(getEventTextId(type))
|
||||
setOnClickListener {
|
||||
showEventTypePicker(it as TextView)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun showNumberTypePicker(numberTypeField: TextView) {
|
||||
val items = arrayListOf(
|
||||
RadioItem(ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE, getString(R.string.mobile)),
|
||||
@ -321,6 +357,18 @@ class ContactActivity : SimpleActivity() {
|
||||
}
|
||||
}
|
||||
|
||||
private fun showEventTypePicker(eventTypeField: TextView) {
|
||||
val items = arrayListOf(
|
||||
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_OTHER, getString(R.string.other)))
|
||||
|
||||
val currentEventTypeId = getEventTypeId(eventTypeField.value)
|
||||
RadioGroupDialog(this, items, currentEventTypeId) {
|
||||
eventTypeField.setText(getEventTextId(it as Int))
|
||||
}
|
||||
}
|
||||
|
||||
private fun saveContact() {
|
||||
if (isSaving) {
|
||||
return
|
||||
@ -335,6 +383,7 @@ class ContactActivity : SimpleActivity() {
|
||||
photoUri = currentContactPhotoPath
|
||||
phoneNumbers = getFilledPhoneNumbers()
|
||||
emails = getFilledEmails()
|
||||
events = getFilledEvents()
|
||||
source = contact_source.value
|
||||
|
||||
Thread {
|
||||
@ -379,6 +428,21 @@ class ContactActivity : SimpleActivity() {
|
||||
return emails
|
||||
}
|
||||
|
||||
private fun getFilledEvents(): ArrayList<Event> {
|
||||
val events = ArrayList<Event>()
|
||||
val eventsCount = contact_events_holder.childCount
|
||||
for (i in 0 until eventsCount) {
|
||||
val eventHolder = contact_events_holder.getChildAt(i)
|
||||
val event = eventHolder.contact_event.value
|
||||
val eventType = getEventTypeId(eventHolder.contact_event_type.value)
|
||||
|
||||
if (event.isNotEmpty()) {
|
||||
events.add(Event(event, eventType))
|
||||
}
|
||||
}
|
||||
return events
|
||||
}
|
||||
|
||||
private fun insertNewContact() {
|
||||
isSaving = true
|
||||
if (ContactsHelper(this@ContactActivity).insertContact(contact!!)) {
|
||||
@ -433,6 +497,14 @@ class ContactActivity : SimpleActivity() {
|
||||
}
|
||||
}
|
||||
|
||||
private fun addNewEventField() {
|
||||
layoutInflater.inflate(R.layout.item_event, contact_events_holder, false).apply {
|
||||
updateTextColors(this as ViewGroup)
|
||||
setupEventTypePicker(contact_event_type)
|
||||
contact_events_holder.addView(this)
|
||||
}
|
||||
}
|
||||
|
||||
private fun deleteContact() {
|
||||
ConfirmationDialog(this) {
|
||||
ContactsHelper(this).deleteContact(contact!!)
|
||||
@ -552,20 +624,6 @@ class ContactActivity : SimpleActivity() {
|
||||
return FileProvider.getUriForFile(this, "${BuildConfig.APPLICATION_ID}.provider", file)
|
||||
}
|
||||
|
||||
private fun getEmailTextId(type: Int) = when (type) {
|
||||
ContactsContract.CommonDataKinds.Email.TYPE_HOME -> R.string.home
|
||||
ContactsContract.CommonDataKinds.Email.TYPE_WORK -> R.string.work
|
||||
ContactsContract.CommonDataKinds.Email.TYPE_MOBILE -> R.string.mobile
|
||||
else -> R.string.other
|
||||
}
|
||||
|
||||
private fun getEmailTypeId(value: String) = when (value) {
|
||||
getString(R.string.home) -> ContactsContract.CommonDataKinds.Email.TYPE_HOME
|
||||
getString(R.string.work) -> ContactsContract.CommonDataKinds.Email.TYPE_WORK
|
||||
getString(R.string.mobile) -> ContactsContract.CommonDataKinds.Email.TYPE_MOBILE
|
||||
else -> ContactsContract.CommonDataKinds.Email.TYPE_OTHER
|
||||
}
|
||||
|
||||
private fun getPhoneNumberTextId(type: Int) = when (type) {
|
||||
ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE -> R.string.mobile
|
||||
ContactsContract.CommonDataKinds.Phone.TYPE_HOME -> R.string.home
|
||||
@ -587,4 +645,30 @@ class ContactActivity : SimpleActivity() {
|
||||
getString(R.string.pager) -> ContactsContract.CommonDataKinds.Phone.TYPE_PAGER
|
||||
else -> ContactsContract.CommonDataKinds.Phone.TYPE_OTHER
|
||||
}
|
||||
|
||||
private fun getEmailTextId(type: Int) = when (type) {
|
||||
ContactsContract.CommonDataKinds.Email.TYPE_HOME -> R.string.home
|
||||
ContactsContract.CommonDataKinds.Email.TYPE_WORK -> R.string.work
|
||||
ContactsContract.CommonDataKinds.Email.TYPE_MOBILE -> R.string.mobile
|
||||
else -> R.string.other
|
||||
}
|
||||
|
||||
private fun getEmailTypeId(value: String) = when (value) {
|
||||
getString(R.string.home) -> ContactsContract.CommonDataKinds.Email.TYPE_HOME
|
||||
getString(R.string.work) -> ContactsContract.CommonDataKinds.Email.TYPE_WORK
|
||||
getString(R.string.mobile) -> ContactsContract.CommonDataKinds.Email.TYPE_MOBILE
|
||||
else -> ContactsContract.CommonDataKinds.Email.TYPE_OTHER
|
||||
}
|
||||
|
||||
private fun getEventTextId(type: Int) = when (type) {
|
||||
ContactsContract.CommonDataKinds.Event.TYPE_BIRTHDAY -> R.string.birthday
|
||||
ContactsContract.CommonDataKinds.Event.TYPE_ANNIVERSARY -> R.string.anniversary
|
||||
else -> R.string.other
|
||||
}
|
||||
|
||||
private fun getEventTypeId(value: String) = when (value) {
|
||||
getString(R.string.birthday) -> ContactsContract.CommonDataKinds.Event.TYPE_BIRTHDAY
|
||||
getString(R.string.anniversary) -> ContactsContract.CommonDataKinds.Event.TYPE_ANNIVERSARY
|
||||
else -> ContactsContract.CommonDataKinds.Event.TYPE_OTHER
|
||||
}
|
||||
}
|
||||
|
BIN
app/src/main/res/drawable-hdpi/ic_cake.png
Normal file
BIN
app/src/main/res/drawable-hdpi/ic_cake.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 411 B |
BIN
app/src/main/res/drawable-xhdpi/ic_cake.png
Normal file
BIN
app/src/main/res/drawable-xhdpi/ic_cake.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 490 B |
BIN
app/src/main/res/drawable-xxhdpi/ic_cake.png
Normal file
BIN
app/src/main/res/drawable-xxhdpi/ic_cake.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 684 B |
BIN
app/src/main/res/drawable-xxxhdpi/ic_cake.png
Normal file
BIN
app/src/main/res/drawable-xxxhdpi/ic_cake.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 907 B |
@ -197,6 +197,44 @@
|
||||
android:paddingTop="@dimen/medium_margin"
|
||||
android:src="@drawable/ic_plus"/>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/contact_event_image"
|
||||
android:layout_width="@dimen/contact_icons_size"
|
||||
android:layout_height="@dimen/contact_icons_size"
|
||||
android:layout_alignTop="@+id/contact_events_holder"
|
||||
android:paddingBottom="@dimen/small_margin"
|
||||
android:paddingEnd="@dimen/small_margin"
|
||||
android:paddingRight="@dimen/small_margin"
|
||||
android:paddingTop="@dimen/medium_margin"
|
||||
android:src="@drawable/ic_cake"/>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/contact_events_holder"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@+id/contact_email_add_new"
|
||||
android:layout_marginTop="@dimen/medium_margin"
|
||||
android:layout_toRightOf="@+id/contact_name_image"
|
||||
android:orientation="vertical">
|
||||
|
||||
<include layout="@layout/item_event"/>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/contact_event_add_new"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@+id/contact_events_holder"
|
||||
android:layout_centerHorizontal="true"
|
||||
android:layout_marginTop="@dimen/small_margin"
|
||||
android:background="@drawable/button_background"
|
||||
android:paddingBottom="@dimen/medium_margin"
|
||||
android:paddingLeft="@dimen/activity_margin"
|
||||
android:paddingRight="@dimen/activity_margin"
|
||||
android:paddingTop="@dimen/medium_margin"
|
||||
android:src="@drawable/ic_plus"/>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/contact_source_image"
|
||||
android:layout_width="@dimen/contact_icons_size"
|
||||
@ -212,7 +250,7 @@
|
||||
android:id="@+id/contact_source"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@+id/contact_email_add_new"
|
||||
android:layout_below="@+id/contact_event_add_new"
|
||||
android:layout_centerVertical="true"
|
||||
android:layout_marginTop="@dimen/medium_margin"
|
||||
android:layout_toRightOf="@+id/contact_name_image"
|
||||
|
38
app/src/main/res/layout/item_event.xml
Normal file
38
app/src/main/res/layout/item_event.xml
Normal file
@ -0,0 +1,38 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<RelativeLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:id="@+id/contact_event_holder"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<com.simplemobiletools.commons.views.MyTextView
|
||||
android:id="@+id/contact_event"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_centerVertical="true"
|
||||
android:layout_toLeftOf="@+id/contact_event_type"
|
||||
android:layout_toStartOf="@+id/contact_event_type"
|
||||
android:background="?attr/selectableItemBackground"
|
||||
android:paddingBottom="@dimen/normal_margin"
|
||||
android:paddingLeft="@dimen/medium_margin"
|
||||
android:paddingRight="@dimen/medium_margin"
|
||||
android:paddingTop="@dimen/normal_margin"
|
||||
android:text="1/1/1990"
|
||||
android:textSize="@dimen/bigger_text_size"/>
|
||||
|
||||
<com.simplemobiletools.commons.views.MyTextView
|
||||
android:id="@+id/contact_event_type"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignBottom="@+id/contact_event"
|
||||
android:layout_alignParentEnd="true"
|
||||
android:layout_alignParentRight="true"
|
||||
android:layout_alignTop="@+id/contact_event"
|
||||
android:background="?attr/selectableItemBackground"
|
||||
android:gravity="center"
|
||||
android:paddingLeft="@dimen/medium_margin"
|
||||
android:paddingRight="@dimen/medium_margin"
|
||||
android:text="@string/birthday"
|
||||
android:textSize="@dimen/bigger_text_size"/>
|
||||
|
||||
</RelativeLayout>
|
Loading…
x
Reference in New Issue
Block a user