Formatting the phone number with user's region
Example: (US) 5554567890 -> (555)456-7890 (France) 0781635535 -> 07 81 63 55 35 Original PR: https://github.com/FossifyOrg/Contacts/pull/72 --------- Co-authored-by: Naveen Singh <36371707+naveensingh@users.noreply.github.com> Co-authored-by: Naveen <snaveen935@gmail.com>
This commit is contained in:
parent
ca64735c34
commit
b545a0dd9e
9 changed files with 62 additions and 8 deletions
|
|
@ -52,6 +52,7 @@ class SettingsActivity : SimpleActivity() {
|
|||
setupLanguage()
|
||||
setupShowContactThumbnails()
|
||||
setupShowPhoneNumbers()
|
||||
setupEnableNumberFormatting()
|
||||
setupShowContactsWithNumbers()
|
||||
setupStartNameWithSurname()
|
||||
setupMergeDuplicateContacts()
|
||||
|
|
@ -165,6 +166,14 @@ class SettingsActivity : SimpleActivity() {
|
|||
}
|
||||
}
|
||||
|
||||
private fun setupEnableNumberFormatting(){
|
||||
binding.settingsFormatPhoneNumbers.isChecked = config.formatPhoneNumbers
|
||||
binding.settingsFormatPhoneNumbersHolder.setOnClickListener{
|
||||
binding.settingsFormatPhoneNumbers.toggle()
|
||||
config.formatPhoneNumbers = binding.settingsFormatPhoneNumbers.isChecked
|
||||
}
|
||||
}
|
||||
|
||||
private fun setupShowPhoneNumbers() {
|
||||
binding.settingsShowPhoneNumbers.isChecked = config.showPhoneNumbers
|
||||
binding.settingsShowPhoneNumbersHolder.setOnClickListener {
|
||||
|
|
|
|||
|
|
@ -2,12 +2,14 @@ package org.fossify.contacts.activities
|
|||
|
||||
import android.content.ActivityNotFoundException
|
||||
import android.content.ContentUris
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.media.AudioManager
|
||||
import android.media.RingtoneManager
|
||||
import android.net.Uri
|
||||
import android.os.Bundle
|
||||
import android.provider.ContactsContract
|
||||
import android.telephony.PhoneNumberUtils
|
||||
import android.view.View
|
||||
import android.view.WindowManager
|
||||
import android.widget.RelativeLayout
|
||||
|
|
@ -27,10 +29,7 @@ import org.fossify.contacts.R
|
|||
import org.fossify.contacts.databinding.*
|
||||
import org.fossify.contacts.dialogs.ChooseSocialDialog
|
||||
import org.fossify.contacts.dialogs.ManageVisibleFieldsDialog
|
||||
import org.fossify.contacts.extensions.config
|
||||
import org.fossify.contacts.extensions.editContact
|
||||
import org.fossify.contacts.extensions.getPackageDrawable
|
||||
import org.fossify.contacts.extensions.startCallIntent
|
||||
import org.fossify.contacts.extensions.*
|
||||
import org.fossify.contacts.helpers.*
|
||||
import java.util.Locale
|
||||
|
||||
|
|
@ -383,7 +382,11 @@ class ViewContactActivity : ContactActivity() {
|
|||
phoneNumbers.forEach { phoneNumber ->
|
||||
ItemViewPhoneNumberBinding.inflate(layoutInflater, binding.contactNumbersHolder, false).apply {
|
||||
binding.contactNumbersHolder.addView(root)
|
||||
contactNumber.text = phoneNumber.value
|
||||
if (config.formatPhoneNumbers) {
|
||||
contactNumber.text = phoneNumber.value.formatPhoneNumber()
|
||||
} else {
|
||||
contactNumber.text = phoneNumber.value
|
||||
}
|
||||
contactNumberType.text = getPhoneNumberTypeText(phoneNumber.type, phoneNumber.label)
|
||||
root.copyOnLongClick(phoneNumber.value)
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
package org.fossify.contacts.adapters
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.content.pm.ShortcutInfo
|
||||
import android.content.pm.ShortcutManager
|
||||
|
|
@ -8,6 +9,7 @@ import android.graphics.drawable.BitmapDrawable
|
|||
import android.graphics.drawable.Drawable
|
||||
import android.graphics.drawable.Icon
|
||||
import android.graphics.drawable.LayerDrawable
|
||||
import android.telephony.PhoneNumberUtils
|
||||
import android.util.TypedValue
|
||||
import android.view.Menu
|
||||
import android.view.MotionEvent
|
||||
|
|
@ -40,11 +42,13 @@ import org.fossify.contacts.activities.ViewContactActivity
|
|||
import org.fossify.contacts.dialogs.CreateNewGroupDialog
|
||||
import org.fossify.contacts.extensions.config
|
||||
import org.fossify.contacts.extensions.editContact
|
||||
import org.fossify.contacts.extensions.formatPhoneNumber
|
||||
import org.fossify.contacts.extensions.shareContacts
|
||||
import org.fossify.contacts.helpers.*
|
||||
import org.fossify.contacts.interfaces.RefreshContactsListener
|
||||
import org.fossify.contacts.interfaces.RemoveFromGroupListener
|
||||
import java.util.Collections
|
||||
import java.util.Locale
|
||||
|
||||
class ContactsAdapter(
|
||||
activity: SimpleActivity,
|
||||
|
|
@ -155,6 +159,7 @@ class ContactsAdapter(
|
|||
if (showPhoneNumbers) org.fossify.commons.R.layout.item_contact_with_number else org.fossify.commons.R.layout.item_contact_without_number
|
||||
}
|
||||
}
|
||||
|
||||
return createViewHolder(layout, parent)
|
||||
}
|
||||
|
||||
|
|
@ -408,8 +413,12 @@ class ContactsAdapter(
|
|||
} else {
|
||||
contact.phoneNumbers.firstOrNull { it.value.contains(textToHighlight) } ?: contact.phoneNumbers.firstOrNull()
|
||||
}
|
||||
|
||||
val numberText = phoneNumberToUse?.value ?: ""
|
||||
val phoneNumberToFormat = phoneNumberToUse?.value ?: ""
|
||||
val numberText = if (config.formatPhoneNumbers) {
|
||||
phoneNumberToFormat.formatPhoneNumber()
|
||||
} else {
|
||||
phoneNumberToUse?.value ?: ""
|
||||
}
|
||||
findViewById<TextView>(org.fossify.commons.R.id.item_contact_number).apply {
|
||||
text = if (textToHighlight.isEmpty()) numberText else numberText.highlightTextPart(textToHighlight, properPrimaryColor, false, true)
|
||||
setTextColor(textColor)
|
||||
|
|
|
|||
|
|
@ -140,4 +140,3 @@ fun SimpleActivity.tryImportContactsFromFile(uri: Uri, callback: (Boolean) -> Un
|
|||
fun SimpleActivity.showImportContactsDialog(path: String, callback: (Boolean) -> Unit) {
|
||||
ImportContactsDialog(this, path, callback)
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,13 @@
|
|||
package org.fossify.contacts.extensions
|
||||
|
||||
import android.telephony.PhoneNumberUtils
|
||||
import java.util.Locale
|
||||
|
||||
fun String.formatPhoneNumber(minimumLength: Int = 4): String {
|
||||
val country = Locale.getDefault().country
|
||||
return if (this.length >= minimumLength) {
|
||||
PhoneNumberUtils.formatNumber(this, country).toString()
|
||||
} else {
|
||||
this
|
||||
}
|
||||
}
|
||||
|
|
@ -9,6 +9,10 @@ class Config(context: Context) : BaseConfig(context) {
|
|||
fun newInstance(context: Context) = Config(context)
|
||||
}
|
||||
|
||||
var formatPhoneNumbers: Boolean
|
||||
get() = prefs.getBoolean(FORMAT_PHONE_NUMBERS, true)
|
||||
set(formatPhoneNumbers) = prefs.edit().putBoolean(FORMAT_PHONE_NUMBERS, formatPhoneNumbers).apply()
|
||||
|
||||
var showTabs: Int
|
||||
get() = prefs.getInt(SHOW_TABS, ALL_TABS_MASK)
|
||||
set(showTabs) = prefs.edit().putInt(SHOW_TABS, showTabs).apply()
|
||||
|
|
|
|||
|
|
@ -11,6 +11,7 @@ const val ADD_NEW_CONTACT_NUMBER = "add_new_contact_number"
|
|||
const val DEFAULT_FILE_NAME = "contacts.vcf"
|
||||
const val AVOID_CHANGING_TEXT_TAG = "avoid_changing_text_tag"
|
||||
const val AVOID_CHANGING_VISIBILITY_TAG = "avoid_changing_visibility_tag"
|
||||
const val FORMAT_PHONE_NUMBERS = "format_phone_numbers"
|
||||
|
||||
const val AUTOMATIC_BACKUP_REQUEST_CODE = 10001
|
||||
const val AUTO_BACKUP_INTERVAL_IN_DAYS = 1
|
||||
|
|
|
|||
|
|
@ -327,6 +327,21 @@
|
|||
|
||||
</RelativeLayout>
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/settings_format_phone_numbers_holder"
|
||||
style="@style/SettingsHolderCheckboxStyle"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<org.fossify.commons.views.MyAppCompatCheckbox
|
||||
android:id="@+id/settings_format_phone_numbers"
|
||||
style="@style/SettingsCheckboxStyle"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/format_phone_numbers" />
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/settings_start_name_with_surname_holder"
|
||||
style="@style/SettingsHolderCheckboxStyle"
|
||||
|
|
|
|||
|
|
@ -42,6 +42,7 @@
|
|||
<!-- Settings -->
|
||||
<string name="show_phone_numbers">Show phone numbers</string>
|
||||
<string name="show_contact_thumbnails">Show contact thumbnails</string>
|
||||
<string name="format_phone_numbers">Format phone numbers</string>
|
||||
<string name="show_dialpad_button">Show a dialpad button on the main screen</string>
|
||||
<string name="on_contact_click">On contact click</string>
|
||||
<string name="call_contact">Call contact</string>
|
||||
|
|
|
|||
Loading…
Reference in a new issue