mirror of
https://github.com/SimpleMobileTools/Simple-Contacts.git
synced 2025-02-20 05:20:56 +01:00
allow inserting and saving custom labels
This commit is contained in:
parent
297b7b3be8
commit
5bd429709b
@ -41,7 +41,7 @@ android {
|
|||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
implementation 'com.simplemobiletools:commons:4.7.1'
|
implementation 'com.simplemobiletools:commons:4.7.2'
|
||||||
implementation 'joda-time:joda-time:2.9.9'
|
implementation 'joda-time:joda-time:2.9.9'
|
||||||
implementation 'com.facebook.stetho:stetho:1.5.0'
|
implementation 'com.facebook.stetho:stetho:1.5.0'
|
||||||
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
|
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
|
||||||
|
@ -21,6 +21,7 @@ import com.simplemobiletools.commons.helpers.PERMISSION_READ_CONTACTS
|
|||||||
import com.simplemobiletools.commons.helpers.PERMISSION_WRITE_CONTACTS
|
import com.simplemobiletools.commons.helpers.PERMISSION_WRITE_CONTACTS
|
||||||
import com.simplemobiletools.commons.models.RadioItem
|
import com.simplemobiletools.commons.models.RadioItem
|
||||||
import com.simplemobiletools.contacts.R
|
import com.simplemobiletools.contacts.R
|
||||||
|
import com.simplemobiletools.contacts.dialogs.CustomLabelDialog
|
||||||
import com.simplemobiletools.contacts.dialogs.SelectGroupsDialog
|
import com.simplemobiletools.contacts.dialogs.SelectGroupsDialog
|
||||||
import com.simplemobiletools.contacts.extensions.*
|
import com.simplemobiletools.contacts.extensions.*
|
||||||
import com.simplemobiletools.contacts.helpers.*
|
import com.simplemobiletools.contacts.helpers.*
|
||||||
@ -641,12 +642,19 @@ class EditContactActivity : ContactActivity() {
|
|||||||
RadioItem(CommonDataKinds.Phone.TYPE_FAX_WORK, getString(R.string.work_fax)),
|
RadioItem(CommonDataKinds.Phone.TYPE_FAX_WORK, getString(R.string.work_fax)),
|
||||||
RadioItem(CommonDataKinds.Phone.TYPE_FAX_HOME, getString(R.string.home_fax)),
|
RadioItem(CommonDataKinds.Phone.TYPE_FAX_HOME, getString(R.string.home_fax)),
|
||||||
RadioItem(CommonDataKinds.Phone.TYPE_PAGER, getString(R.string.pager)),
|
RadioItem(CommonDataKinds.Phone.TYPE_PAGER, getString(R.string.pager)),
|
||||||
RadioItem(CommonDataKinds.Phone.TYPE_OTHER, getString(R.string.other))
|
RadioItem(CommonDataKinds.Phone.TYPE_OTHER, getString(R.string.other)),
|
||||||
|
RadioItem(CommonDataKinds.Phone.TYPE_CUSTOM, getString(R.string.custom))
|
||||||
)
|
)
|
||||||
|
|
||||||
val currentNumberTypeId = getPhoneNumberTypeId(numberTypeField.value)
|
val currentNumberTypeId = getPhoneNumberTypeId(numberTypeField.value)
|
||||||
RadioGroupDialog(this, items, currentNumberTypeId) {
|
RadioGroupDialog(this, items, currentNumberTypeId) {
|
||||||
numberTypeField.text = getPhoneNumberTypeText(it as Int, "")
|
if (it as Int == CommonDataKinds.Phone.TYPE_CUSTOM) {
|
||||||
|
CustomLabelDialog(this) {
|
||||||
|
numberTypeField.text = it
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
numberTypeField.text = getPhoneNumberTypeText(it, "")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -655,12 +663,19 @@ class EditContactActivity : ContactActivity() {
|
|||||||
RadioItem(CommonDataKinds.Email.TYPE_HOME, getString(R.string.home)),
|
RadioItem(CommonDataKinds.Email.TYPE_HOME, getString(R.string.home)),
|
||||||
RadioItem(CommonDataKinds.Email.TYPE_WORK, getString(R.string.work)),
|
RadioItem(CommonDataKinds.Email.TYPE_WORK, getString(R.string.work)),
|
||||||
RadioItem(CommonDataKinds.Email.TYPE_MOBILE, getString(R.string.mobile)),
|
RadioItem(CommonDataKinds.Email.TYPE_MOBILE, getString(R.string.mobile)),
|
||||||
RadioItem(CommonDataKinds.Email.TYPE_OTHER, getString(R.string.other))
|
RadioItem(CommonDataKinds.Email.TYPE_OTHER, getString(R.string.other)),
|
||||||
|
RadioItem(CommonDataKinds.Email.TYPE_CUSTOM, getString(R.string.custom))
|
||||||
)
|
)
|
||||||
|
|
||||||
val currentEmailTypeId = getEmailTypeId(emailTypeField.value)
|
val currentEmailTypeId = getEmailTypeId(emailTypeField.value)
|
||||||
RadioGroupDialog(this, items, currentEmailTypeId) {
|
RadioGroupDialog(this, items, currentEmailTypeId) {
|
||||||
emailTypeField.text = getEmailTypeText(it as Int, "")
|
if (it as Int == CommonDataKinds.Email.TYPE_CUSTOM) {
|
||||||
|
CustomLabelDialog(this) {
|
||||||
|
emailTypeField.text = it
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
emailTypeField.text = getEmailTypeText(it, "")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -668,12 +683,19 @@ class EditContactActivity : ContactActivity() {
|
|||||||
val items = arrayListOf(
|
val items = arrayListOf(
|
||||||
RadioItem(CommonDataKinds.StructuredPostal.TYPE_HOME, getString(R.string.home)),
|
RadioItem(CommonDataKinds.StructuredPostal.TYPE_HOME, getString(R.string.home)),
|
||||||
RadioItem(CommonDataKinds.StructuredPostal.TYPE_WORK, getString(R.string.work)),
|
RadioItem(CommonDataKinds.StructuredPostal.TYPE_WORK, getString(R.string.work)),
|
||||||
RadioItem(CommonDataKinds.StructuredPostal.TYPE_OTHER, getString(R.string.other))
|
RadioItem(CommonDataKinds.StructuredPostal.TYPE_OTHER, getString(R.string.other)),
|
||||||
|
RadioItem(CommonDataKinds.StructuredPostal.TYPE_CUSTOM, getString(R.string.custom))
|
||||||
)
|
)
|
||||||
|
|
||||||
val currentAddressTypeId = getAddressTypeId(addressTypeField.value)
|
val currentAddressTypeId = getAddressTypeId(addressTypeField.value)
|
||||||
RadioGroupDialog(this, items, currentAddressTypeId) {
|
RadioGroupDialog(this, items, currentAddressTypeId) {
|
||||||
addressTypeField.text = getAddressTypeText(it as Int, "")
|
if (it as Int == CommonDataKinds.StructuredPostal.TYPE_CUSTOM) {
|
||||||
|
CustomLabelDialog(this) {
|
||||||
|
addressTypeField.text = it
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
addressTypeField.text = getAddressTypeText(it, "")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -752,9 +774,10 @@ class EditContactActivity : ContactActivity() {
|
|||||||
val numberHolder = contact_numbers_holder.getChildAt(i)
|
val numberHolder = contact_numbers_holder.getChildAt(i)
|
||||||
val number = numberHolder.contact_number.value
|
val number = numberHolder.contact_number.value
|
||||||
val numberType = getPhoneNumberTypeId(numberHolder.contact_number_type.value)
|
val numberType = getPhoneNumberTypeId(numberHolder.contact_number_type.value)
|
||||||
|
val numberLabel = if (numberType == CommonDataKinds.Phone.TYPE_CUSTOM) numberHolder.contact_number_type.value else ""
|
||||||
|
|
||||||
if (number.isNotEmpty()) {
|
if (number.isNotEmpty()) {
|
||||||
phoneNumbers.add(PhoneNumber(number, numberType, ""))
|
phoneNumbers.add(PhoneNumber(number, numberType, numberLabel))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return phoneNumbers
|
return phoneNumbers
|
||||||
@ -767,9 +790,10 @@ class EditContactActivity : ContactActivity() {
|
|||||||
val emailHolder = contact_emails_holder.getChildAt(i)
|
val emailHolder = contact_emails_holder.getChildAt(i)
|
||||||
val email = emailHolder.contact_email.value
|
val email = emailHolder.contact_email.value
|
||||||
val emailType = getEmailTypeId(emailHolder.contact_email_type.value)
|
val emailType = getEmailTypeId(emailHolder.contact_email_type.value)
|
||||||
|
val emailLabel = if (emailType == CommonDataKinds.Email.TYPE_CUSTOM) emailHolder.contact_email_type.value else ""
|
||||||
|
|
||||||
if (email.isNotEmpty()) {
|
if (email.isNotEmpty()) {
|
||||||
emails.add(Email(email, emailType, ""))
|
emails.add(Email(email, emailType, emailLabel))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return emails
|
return emails
|
||||||
@ -782,9 +806,10 @@ class EditContactActivity : ContactActivity() {
|
|||||||
val addressHolder = contact_addresses_holder.getChildAt(i)
|
val addressHolder = contact_addresses_holder.getChildAt(i)
|
||||||
val address = addressHolder.contact_address.value
|
val address = addressHolder.contact_address.value
|
||||||
val addressType = getAddressTypeId(addressHolder.contact_address_type.value)
|
val addressType = getAddressTypeId(addressHolder.contact_address_type.value)
|
||||||
|
val addressLabel = if (addressType == CommonDataKinds.StructuredPostal.TYPE_CUSTOM) addressHolder.contact_address_type.value else ""
|
||||||
|
|
||||||
if (address.isNotEmpty()) {
|
if (address.isNotEmpty()) {
|
||||||
addresses.add(Address(address, addressType, ""))
|
addresses.add(Address(address, addressType, addressLabel))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return addresses
|
return addresses
|
||||||
@ -1027,14 +1052,16 @@ class EditContactActivity : ContactActivity() {
|
|||||||
getString(R.string.work_fax) -> CommonDataKinds.Phone.TYPE_FAX_WORK
|
getString(R.string.work_fax) -> CommonDataKinds.Phone.TYPE_FAX_WORK
|
||||||
getString(R.string.home_fax) -> CommonDataKinds.Phone.TYPE_FAX_HOME
|
getString(R.string.home_fax) -> CommonDataKinds.Phone.TYPE_FAX_HOME
|
||||||
getString(R.string.pager) -> CommonDataKinds.Phone.TYPE_PAGER
|
getString(R.string.pager) -> CommonDataKinds.Phone.TYPE_PAGER
|
||||||
else -> CommonDataKinds.Phone.TYPE_OTHER
|
getString(R.string.other) -> CommonDataKinds.Phone.TYPE_OTHER
|
||||||
|
else -> CommonDataKinds.Phone.TYPE_CUSTOM
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun getEmailTypeId(value: String) = when (value) {
|
private fun getEmailTypeId(value: String) = when (value) {
|
||||||
getString(R.string.home) -> CommonDataKinds.Email.TYPE_HOME
|
getString(R.string.home) -> CommonDataKinds.Email.TYPE_HOME
|
||||||
getString(R.string.work) -> CommonDataKinds.Email.TYPE_WORK
|
getString(R.string.work) -> CommonDataKinds.Email.TYPE_WORK
|
||||||
getString(R.string.mobile) -> CommonDataKinds.Email.TYPE_MOBILE
|
getString(R.string.mobile) -> CommonDataKinds.Email.TYPE_MOBILE
|
||||||
else -> CommonDataKinds.Email.TYPE_OTHER
|
getString(R.string.other) -> CommonDataKinds.Email.TYPE_OTHER
|
||||||
|
else -> CommonDataKinds.Email.TYPE_CUSTOM
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun getEventTypeId(value: String) = when (value) {
|
private fun getEventTypeId(value: String) = when (value) {
|
||||||
@ -1046,6 +1073,7 @@ class EditContactActivity : ContactActivity() {
|
|||||||
private fun getAddressTypeId(value: String) = when (value) {
|
private fun getAddressTypeId(value: String) = when (value) {
|
||||||
getString(R.string.home) -> CommonDataKinds.StructuredPostal.TYPE_HOME
|
getString(R.string.home) -> CommonDataKinds.StructuredPostal.TYPE_HOME
|
||||||
getString(R.string.work) -> CommonDataKinds.StructuredPostal.TYPE_WORK
|
getString(R.string.work) -> CommonDataKinds.StructuredPostal.TYPE_WORK
|
||||||
else -> CommonDataKinds.StructuredPostal.TYPE_OTHER
|
getString(R.string.other) -> CommonDataKinds.StructuredPostal.TYPE_OTHER
|
||||||
|
else -> CommonDataKinds.StructuredPostal.TYPE_CUSTOM
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,36 @@
|
|||||||
|
package com.simplemobiletools.contacts.dialogs
|
||||||
|
|
||||||
|
import android.support.v7.app.AlertDialog
|
||||||
|
import com.simplemobiletools.commons.activities.BaseSimpleActivity
|
||||||
|
import com.simplemobiletools.commons.extensions.setupDialogStuff
|
||||||
|
import com.simplemobiletools.commons.extensions.showKeyboard
|
||||||
|
import com.simplemobiletools.commons.extensions.toast
|
||||||
|
import com.simplemobiletools.commons.extensions.value
|
||||||
|
import com.simplemobiletools.contacts.R
|
||||||
|
import kotlinx.android.synthetic.main.dialog_custom_label.view.*
|
||||||
|
|
||||||
|
class CustomLabelDialog(val activity: BaseSimpleActivity, val callback: (label: String) -> Unit) {
|
||||||
|
init {
|
||||||
|
|
||||||
|
val view = activity.layoutInflater.inflate(R.layout.dialog_custom_label, null)
|
||||||
|
|
||||||
|
AlertDialog.Builder(activity)
|
||||||
|
.setPositiveButton(R.string.ok, null)
|
||||||
|
.setNegativeButton(R.string.cancel, null)
|
||||||
|
.create().apply {
|
||||||
|
activity.setupDialogStuff(view, this, R.string.label) {
|
||||||
|
showKeyboard(view.custom_label_edittext)
|
||||||
|
getButton(AlertDialog.BUTTON_POSITIVE).setOnClickListener {
|
||||||
|
val label = view.custom_label_edittext.value
|
||||||
|
if (label.isEmpty()) {
|
||||||
|
activity.toast(R.string.empty_name)
|
||||||
|
return@setOnClickListener
|
||||||
|
}
|
||||||
|
|
||||||
|
callback(label)
|
||||||
|
dismiss()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -862,6 +862,7 @@ class ContactsHelper(val activity: Activity) {
|
|||||||
withValue(ContactsContract.Data.MIMETYPE, CommonDataKinds.Phone.CONTENT_ITEM_TYPE)
|
withValue(ContactsContract.Data.MIMETYPE, CommonDataKinds.Phone.CONTENT_ITEM_TYPE)
|
||||||
withValue(CommonDataKinds.Phone.NUMBER, it.value)
|
withValue(CommonDataKinds.Phone.NUMBER, it.value)
|
||||||
withValue(CommonDataKinds.Phone.TYPE, it.type)
|
withValue(CommonDataKinds.Phone.TYPE, it.type)
|
||||||
|
withValue(CommonDataKinds.Phone.LABEL, it.label)
|
||||||
operations.add(build())
|
operations.add(build())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -881,6 +882,7 @@ class ContactsHelper(val activity: Activity) {
|
|||||||
withValue(ContactsContract.Data.MIMETYPE, CommonDataKinds.Email.CONTENT_ITEM_TYPE)
|
withValue(ContactsContract.Data.MIMETYPE, CommonDataKinds.Email.CONTENT_ITEM_TYPE)
|
||||||
withValue(CommonDataKinds.Email.DATA, it.value)
|
withValue(CommonDataKinds.Email.DATA, it.value)
|
||||||
withValue(CommonDataKinds.Email.TYPE, it.type)
|
withValue(CommonDataKinds.Email.TYPE, it.type)
|
||||||
|
withValue(CommonDataKinds.Email.LABEL, it.label)
|
||||||
operations.add(build())
|
operations.add(build())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -900,6 +902,7 @@ class ContactsHelper(val activity: Activity) {
|
|||||||
withValue(ContactsContract.Data.MIMETYPE, CommonDataKinds.StructuredPostal.CONTENT_ITEM_TYPE)
|
withValue(ContactsContract.Data.MIMETYPE, CommonDataKinds.StructuredPostal.CONTENT_ITEM_TYPE)
|
||||||
withValue(CommonDataKinds.StructuredPostal.FORMATTED_ADDRESS, it.value)
|
withValue(CommonDataKinds.StructuredPostal.FORMATTED_ADDRESS, it.value)
|
||||||
withValue(CommonDataKinds.StructuredPostal.TYPE, it.type)
|
withValue(CommonDataKinds.StructuredPostal.TYPE, it.type)
|
||||||
|
withValue(CommonDataKinds.StructuredPostal.LABEL, it.label)
|
||||||
operations.add(build())
|
operations.add(build())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1140,6 +1143,7 @@ class ContactsHelper(val activity: Activity) {
|
|||||||
withValue(ContactsContract.Data.MIMETYPE, CommonDataKinds.Phone.CONTENT_ITEM_TYPE)
|
withValue(ContactsContract.Data.MIMETYPE, CommonDataKinds.Phone.CONTENT_ITEM_TYPE)
|
||||||
withValue(CommonDataKinds.Phone.NUMBER, it.value)
|
withValue(CommonDataKinds.Phone.NUMBER, it.value)
|
||||||
withValue(CommonDataKinds.Phone.TYPE, it.type)
|
withValue(CommonDataKinds.Phone.TYPE, it.type)
|
||||||
|
withValue(CommonDataKinds.Phone.LABEL, it.label)
|
||||||
operations.add(build())
|
operations.add(build())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1151,6 +1155,7 @@ class ContactsHelper(val activity: Activity) {
|
|||||||
withValue(ContactsContract.Data.MIMETYPE, CommonDataKinds.Email.CONTENT_ITEM_TYPE)
|
withValue(ContactsContract.Data.MIMETYPE, CommonDataKinds.Email.CONTENT_ITEM_TYPE)
|
||||||
withValue(CommonDataKinds.Email.DATA, it.value)
|
withValue(CommonDataKinds.Email.DATA, it.value)
|
||||||
withValue(CommonDataKinds.Email.TYPE, it.type)
|
withValue(CommonDataKinds.Email.TYPE, it.type)
|
||||||
|
withValue(CommonDataKinds.Email.LABEL, it.label)
|
||||||
operations.add(build())
|
operations.add(build())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1162,6 +1167,7 @@ class ContactsHelper(val activity: Activity) {
|
|||||||
withValue(ContactsContract.Data.MIMETYPE, CommonDataKinds.StructuredPostal.CONTENT_ITEM_TYPE)
|
withValue(ContactsContract.Data.MIMETYPE, CommonDataKinds.StructuredPostal.CONTENT_ITEM_TYPE)
|
||||||
withValue(CommonDataKinds.StructuredPostal.FORMATTED_ADDRESS, it.value)
|
withValue(CommonDataKinds.StructuredPostal.FORMATTED_ADDRESS, it.value)
|
||||||
withValue(CommonDataKinds.StructuredPostal.TYPE, it.type)
|
withValue(CommonDataKinds.StructuredPostal.TYPE, it.type)
|
||||||
|
withValue(CommonDataKinds.StructuredPostal.LABEL, it.label)
|
||||||
operations.add(build())
|
operations.add(build())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
19
app/src/main/res/layout/dialog_custom_label.xml
Normal file
19
app/src/main/res/layout/dialog_custom_label.xml
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<RelativeLayout
|
||||||
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:id="@+id/dialog_holder"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:paddingTop="@dimen/activity_margin">
|
||||||
|
|
||||||
|
<com.simplemobiletools.commons.views.MyEditText
|
||||||
|
android:id="@+id/custom_label_edittext"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginLeft="@dimen/activity_margin"
|
||||||
|
android:layout_marginRight="@dimen/activity_margin"
|
||||||
|
android:inputType="textCapSentences"
|
||||||
|
android:textCursorDrawable="@null"
|
||||||
|
android:textSize="@dimen/normal_text_size"/>
|
||||||
|
|
||||||
|
</RelativeLayout>
|
Loading…
x
Reference in New Issue
Block a user