15
.gitignore
vendored
@ -1,21 +1,6 @@
|
||||
# Temp files
|
||||
*~
|
||||
*.bak
|
||||
*.backup
|
||||
\#*
|
||||
.\#*
|
||||
*\#
|
||||
*.swp
|
||||
*.swap
|
||||
*.sav
|
||||
*.save
|
||||
*.autosav
|
||||
*.autosave
|
||||
|
||||
*.iml
|
||||
.gradle
|
||||
/local.properties
|
||||
/gradle.properties
|
||||
/.idea/
|
||||
.DS_Store
|
||||
/build
|
||||
|
18
CHANGELOG.md
@ -1,6 +1,24 @@
|
||||
Changelog
|
||||
==========
|
||||
|
||||
Version 5.1.0 *(2018-10-28)*
|
||||
----------------------------
|
||||
|
||||
* Added an option for toggling 24 hour time format
|
||||
* Added an option to show only contacts with phone numbers
|
||||
* Do not allow creating contacts under WhatsApp contact source
|
||||
* Try fixing the issue with disappearing contacts under some circumstances
|
||||
* Fix some bugs related to selecting contact photo from the device storage
|
||||
* Show the contact email at the list, if name and organization are empty
|
||||
* Properly sort groups containing UTF-8 characters at title
|
||||
* Use a different placeholder image for business contacts
|
||||
|
||||
Version 5.0.0 *(2018-10-15)*
|
||||
----------------------------
|
||||
|
||||
* Increased the minimal required Android OS version to 5
|
||||
* Try fixing the issue with disappearing fresh contacts
|
||||
|
||||
Version 4.5.0 *(2018-09-28)*
|
||||
----------------------------
|
||||
|
||||
|
@ -15,7 +15,7 @@ This app is just one piece of a bigger series of apps. You can find the rest of
|
||||
<div style="display:flex;">
|
||||
<img alt="App image" src="fastlane/metadata/android/en-US/images/phoneScreenshots/app.png" width="30%">
|
||||
<img alt="App image" src="fastlane/metadata/android/en-US/images/phoneScreenshots/app_2.png" width="30%">
|
||||
<img alt="App image" src="fastlane/metadata/android/en-US/images/phoneScreenshots/app_3.png" width="30%">
|
||||
<img alt="App image" src="fastlane/metadata/android/en-US/images/phoneScreenshots/app_4.png" width="30%">
|
||||
</div>
|
||||
|
||||
License
|
||||
|
@ -8,10 +8,10 @@ android {
|
||||
|
||||
defaultConfig {
|
||||
applicationId "com.simplemobiletools.contacts"
|
||||
minSdkVersion 16
|
||||
minSdkVersion 21
|
||||
targetSdkVersion 28
|
||||
versionCode 32
|
||||
versionName "4.5.0"
|
||||
versionCode 34
|
||||
versionName "5.1.0"
|
||||
setProperty("archivesBaseName", "contacts")
|
||||
}
|
||||
|
||||
@ -41,11 +41,11 @@ android {
|
||||
}
|
||||
|
||||
dependencies {
|
||||
implementation 'com.simplemobiletools:commons:4.8.0'
|
||||
implementation 'com.simplemobiletools:commons:5.2.11'
|
||||
implementation 'joda-time:joda-time:2.9.9'
|
||||
implementation 'com.facebook.stetho:stetho:1.5.0'
|
||||
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
|
||||
compile 'com.googlecode.ez-vcard:ez-vcard:0.10.4'
|
||||
implementation 'androidx.constraintlayout:constraintlayout:2.0.0-alpha2'
|
||||
implementation 'com.googlecode.ez-vcard:ez-vcard:0.10.4'
|
||||
}
|
||||
|
||||
Properties props = new Properties()
|
||||
|
@ -194,7 +194,7 @@
|
||||
android:parentActivityName=".activities.MainActivity"/>
|
||||
|
||||
<provider
|
||||
android:name="android.support.v4.content.FileProvider"
|
||||
android:name="androidx.core.content.FileProvider"
|
||||
android:authorities="${applicationId}.provider"
|
||||
android:exported="false"
|
||||
android:grantUriPermissions="true">
|
||||
|
@ -1,21 +1,16 @@
|
||||
package com.simplemobiletools.contacts.activities
|
||||
|
||||
import android.annotation.TargetApi
|
||||
import android.content.Intent
|
||||
import android.graphics.Color
|
||||
import android.os.Build
|
||||
import android.os.Bundle
|
||||
import android.text.InputType
|
||||
import android.view.KeyEvent
|
||||
import android.view.Menu
|
||||
import android.view.MenuItem
|
||||
import android.view.View
|
||||
import com.simplemobiletools.commons.extensions.*
|
||||
import com.simplemobiletools.commons.helpers.isLollipopPlus
|
||||
import com.simplemobiletools.contacts.R
|
||||
import com.simplemobiletools.contacts.adapters.ContactsAdapter
|
||||
import com.simplemobiletools.contacts.dialogs.CallConfirmationDialog
|
||||
import com.simplemobiletools.contacts.extensions.afterTextChanged
|
||||
import com.simplemobiletools.contacts.extensions.callContact
|
||||
import com.simplemobiletools.contacts.extensions.config
|
||||
import com.simplemobiletools.contacts.extensions.startCallIntent
|
||||
@ -47,7 +42,7 @@ class DialpadActivity : SimpleActivity() {
|
||||
dialpad_clear_char.setOnClickListener { clearChar(it) }
|
||||
dialpad_clear_char.setOnLongClickListener { clearInput(); true }
|
||||
dialpad_call_button.setOnClickListener { initCall() }
|
||||
dialpad_input.afterTextChanged { dialpadValueChanged(it) }
|
||||
dialpad_input.onTextChangeListener { dialpadValueChanged(it) }
|
||||
ContactsHelper(this).getContacts { gotContacts(it) }
|
||||
disableKeyboardPopping()
|
||||
|
||||
@ -120,13 +115,8 @@ class DialpadActivity : SimpleActivity() {
|
||||
else -> KeyEvent.KEYCODE_POUND
|
||||
}
|
||||
|
||||
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
|
||||
private fun disableKeyboardPopping() {
|
||||
if (isLollipopPlus()) {
|
||||
dialpad_input.showSoftInputOnFocus = false
|
||||
} else {
|
||||
dialpad_input.inputType = InputType.TYPE_NULL
|
||||
}
|
||||
}
|
||||
|
||||
private fun gotContacts(newContacts: ArrayList<Contact>) {
|
||||
|
@ -5,6 +5,7 @@ import android.app.DatePickerDialog
|
||||
import android.content.ClipData
|
||||
import android.content.ContentValues
|
||||
import android.content.Intent
|
||||
import android.graphics.Bitmap
|
||||
import android.graphics.drawable.ColorDrawable
|
||||
import android.net.Uri
|
||||
import android.os.Bundle
|
||||
@ -114,7 +115,7 @@ class EditContactActivity : ContactActivity() {
|
||||
super.onActivityResult(requestCode, resultCode, resultData)
|
||||
if (resultCode == RESULT_OK) {
|
||||
when (requestCode) {
|
||||
INTENT_TAKE_PHOTO, INTENT_CHOOSE_PHOTO -> startCropPhotoIntent(lastPhotoIntentUri)
|
||||
INTENT_TAKE_PHOTO, INTENT_CHOOSE_PHOTO -> startCropPhotoIntent(lastPhotoIntentUri, resultData?.data)
|
||||
INTENT_CROP_PHOTO -> updateContactPhoto(lastPhotoIntentUri.toString(), contact_photo)
|
||||
}
|
||||
}
|
||||
@ -260,15 +261,28 @@ class EditContactActivity : ContactActivity() {
|
||||
}
|
||||
}
|
||||
|
||||
private fun startCropPhotoIntent(uri: Uri?) {
|
||||
if (uri == null) {
|
||||
private fun startCropPhotoIntent(primaryUri: Uri?, backupUri: Uri?) {
|
||||
if (primaryUri == null) {
|
||||
toast(R.string.unknown_error_occurred)
|
||||
return
|
||||
}
|
||||
|
||||
var imageUri = primaryUri
|
||||
var bitmap = MediaStore.Images.Media.getBitmap(contentResolver, primaryUri)
|
||||
if (bitmap == null) {
|
||||
imageUri = backupUri
|
||||
bitmap = MediaStore.Images.Media.getBitmap(contentResolver, backupUri) ?: return
|
||||
|
||||
// we might have received an URI which we have no permission to send further, so just copy the received image in a new uri (for example from Google Photos)
|
||||
val newFile = getCachePhoto()
|
||||
val fos = newFile.outputStream()
|
||||
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fos)
|
||||
imageUri = getCachePhotoUri(newFile)
|
||||
}
|
||||
|
||||
lastPhotoIntentUri = getCachePhotoUri()
|
||||
Intent("com.android.camera.action.CROP").apply {
|
||||
setDataAndType(uri, "image/*")
|
||||
setDataAndType(imageUri, "image/*")
|
||||
putExtra(MediaStore.EXTRA_OUTPUT, lastPhotoIntentUri)
|
||||
putExtra("outputX", 720)
|
||||
putExtra("outputY", 720)
|
||||
@ -277,7 +291,7 @@ class EditContactActivity : ContactActivity() {
|
||||
putExtra("crop", "true")
|
||||
putExtra("scale", "true")
|
||||
putExtra("scaleUpIfNeeded", "true")
|
||||
clipData = ClipData("Attachment", arrayOf("text/uri-list"), ClipData.Item(lastPhotoIntentUri))
|
||||
clipData = ClipData("Attachment", arrayOf("text/primaryUri-list"), ClipData.Item(lastPhotoIntentUri))
|
||||
addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION or Intent.FLAG_GRANT_WRITE_URI_PERMISSION)
|
||||
if (resolveActivity(packageManager) != null) {
|
||||
startActivityForResult(this, INTENT_CROP_PHOTO)
|
||||
|
@ -9,11 +9,11 @@ import android.graphics.drawable.Drawable
|
||||
import android.net.Uri
|
||||
import android.os.Bundle
|
||||
import android.os.Handler
|
||||
import android.support.v4.view.MenuItemCompat
|
||||
import android.support.v4.view.ViewPager
|
||||
import android.support.v7.widget.SearchView
|
||||
import android.view.Menu
|
||||
import android.view.MenuItem
|
||||
import androidx.appcompat.widget.SearchView
|
||||
import androidx.core.view.MenuItemCompat
|
||||
import androidx.viewpager.widget.ViewPager
|
||||
import com.simplemobiletools.commons.dialogs.FilePickerDialog
|
||||
import com.simplemobiletools.commons.extensions.*
|
||||
import com.simplemobiletools.commons.helpers.*
|
||||
@ -27,7 +27,6 @@ import com.simplemobiletools.contacts.dialogs.ExportContactsDialog
|
||||
import com.simplemobiletools.contacts.dialogs.FilterContactSourcesDialog
|
||||
import com.simplemobiletools.contacts.dialogs.ImportContactsDialog
|
||||
import com.simplemobiletools.contacts.extensions.config
|
||||
import com.simplemobiletools.contacts.extensions.dbHelper
|
||||
import com.simplemobiletools.contacts.extensions.getTempFile
|
||||
import com.simplemobiletools.contacts.fragments.MyViewPagerFragment
|
||||
import com.simplemobiletools.contacts.helpers.*
|
||||
@ -63,9 +62,6 @@ class MainActivity : SimpleActivity(), RefreshContactsListener {
|
||||
appLaunched(BuildConfig.APPLICATION_ID)
|
||||
setupTabColors()
|
||||
|
||||
// just get a reference to the database to make sure it is created properly
|
||||
dbHelper
|
||||
|
||||
handlePermission(PERMISSION_READ_CALL_LOG) {
|
||||
if (it) {
|
||||
handlePermission(PERMISSION_WRITE_CALL_LOG) {
|
||||
@ -308,10 +304,10 @@ class MainActivity : SimpleActivity(), RefreshContactsListener {
|
||||
}
|
||||
}
|
||||
|
||||
private fun getInactiveTabIndexes(activeIndex: Int) = arrayListOf(0, 1, 2, 3).filter { it != activeIndex }
|
||||
private fun getInactiveTabIndexes(activeIndex: Int) = (0 until tabsList.size).filter { it != activeIndex }
|
||||
|
||||
private fun initFragments() {
|
||||
viewpager.offscreenPageLimit = 3
|
||||
viewpager.offscreenPageLimit = tabsList.size - 1
|
||||
viewpager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener {
|
||||
override fun onPageScrollStateChanged(state: Int) {
|
||||
if (isSearchOpen) {
|
||||
@ -320,8 +316,7 @@ class MainActivity : SimpleActivity(), RefreshContactsListener {
|
||||
}
|
||||
}
|
||||
|
||||
override fun onPageScrolled(position: Int, positionOffset: Float, positionOffsetPixels: Int) {
|
||||
}
|
||||
override fun onPageScrolled(position: Int, positionOffset: Float, positionOffsetPixels: Int) {}
|
||||
|
||||
override fun onPageSelected(position: Int) {
|
||||
main_tabs_holder.getTabAt(position)?.select()
|
||||
@ -373,7 +368,7 @@ class MainActivity : SimpleActivity(), RefreshContactsListener {
|
||||
}, 100L)
|
||||
}
|
||||
|
||||
main_tabs_holder.beVisibleIf(skippedTabs < 3)
|
||||
main_tabs_holder.beVisibleIf(skippedTabs < tabsList.size - 1)
|
||||
|
||||
main_dialpad_button.setOnClickListener {
|
||||
val intent = Intent(applicationContext, DialpadActivity::class.java)
|
||||
@ -401,7 +396,7 @@ class MainActivity : SimpleActivity(), RefreshContactsListener {
|
||||
fun showFilterDialog() {
|
||||
FilterContactSourcesDialog(this) {
|
||||
contacts_fragment?.forceListRedraw = true
|
||||
refreshContacts(CONTACTS_TAB_MASK)
|
||||
refreshContacts(CONTACTS_TAB_MASK or FAVORITES_TAB_MASK)
|
||||
}
|
||||
}
|
||||
|
||||
@ -484,7 +479,7 @@ class MainActivity : SimpleActivity(), RefreshContactsListener {
|
||||
}
|
||||
|
||||
private fun launchAbout() {
|
||||
val licenses = LICENSE_MULTISELECT or LICENSE_JODA or LICENSE_GLIDE or LICENSE_GSON or LICENSE_STETHO
|
||||
val licenses = LICENSE_JODA or LICENSE_GLIDE or LICENSE_GSON or LICENSE_STETHO
|
||||
|
||||
val faqItems = arrayListOf(
|
||||
FAQItem(R.string.faq_1_title, R.string.faq_1_text),
|
||||
@ -495,9 +490,10 @@ class MainActivity : SimpleActivity(), RefreshContactsListener {
|
||||
}
|
||||
|
||||
override fun refreshContacts(refreshTabsMask: Int) {
|
||||
if (isActivityDestroyed() || isGettingContacts) {
|
||||
if (isDestroyed || isGettingContacts) {
|
||||
return
|
||||
}
|
||||
|
||||
isGettingContacts = true
|
||||
|
||||
if (viewpager.adapter == null) {
|
||||
@ -507,7 +503,7 @@ class MainActivity : SimpleActivity(), RefreshContactsListener {
|
||||
|
||||
ContactsHelper(this).getContacts {
|
||||
isGettingContacts = false
|
||||
if (isActivityDestroyed()) {
|
||||
if (isDestroyed) {
|
||||
return@getContacts
|
||||
}
|
||||
|
||||
@ -551,6 +547,7 @@ class MainActivity : SimpleActivity(), RefreshContactsListener {
|
||||
add(Release(29, R.string.release_29))
|
||||
add(Release(31, R.string.release_31))
|
||||
add(Release(32, R.string.release_32))
|
||||
add(Release(34, R.string.release_34))
|
||||
checkWhatsNew(this, BuildConfig.VERSION_CODE)
|
||||
}
|
||||
}
|
||||
|
@ -6,9 +6,7 @@ import android.os.Bundle
|
||||
import android.provider.ContactsContract
|
||||
import android.view.Menu
|
||||
import android.view.MenuItem
|
||||
import com.simplemobiletools.commons.extensions.baseConfig
|
||||
import com.simplemobiletools.commons.extensions.isActivityDestroyed
|
||||
import com.simplemobiletools.commons.extensions.toast
|
||||
import com.simplemobiletools.commons.extensions.*
|
||||
import com.simplemobiletools.commons.helpers.PERMISSION_READ_CONTACTS
|
||||
import com.simplemobiletools.commons.helpers.PERMISSION_WRITE_CONTACTS
|
||||
import com.simplemobiletools.contacts.R
|
||||
@ -21,14 +19,15 @@ import com.simplemobiletools.contacts.extensions.getVisibleContactSources
|
||||
import com.simplemobiletools.contacts.helpers.ContactsHelper
|
||||
import com.simplemobiletools.contacts.helpers.SMT_PRIVATE
|
||||
import com.simplemobiletools.contacts.models.Contact
|
||||
import kotlinx.android.synthetic.main.layout_select_contact.*
|
||||
import kotlinx.android.synthetic.main.activity_select_contact.*
|
||||
|
||||
class SelectContactActivity : SimpleActivity() {
|
||||
private var specialMimeType: String? = null
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
setContentView(R.layout.layout_select_contact)
|
||||
setContentView(R.layout.activity_select_contact)
|
||||
setupPlaceholders()
|
||||
|
||||
handlePermission(PERMISSION_READ_CONTACTS) {
|
||||
if (it) {
|
||||
@ -80,7 +79,7 @@ class SelectContactActivity : SimpleActivity() {
|
||||
|
||||
private fun initContacts() {
|
||||
ContactsHelper(this).getContacts {
|
||||
if (isActivityDestroyed()) {
|
||||
if (isDestroyed) {
|
||||
return@getContacts
|
||||
}
|
||||
|
||||
@ -105,8 +104,11 @@ class SelectContactActivity : SimpleActivity() {
|
||||
contacts.sort()
|
||||
|
||||
runOnUiThread {
|
||||
select_contact_list.adapter = SelectContactsAdapter(this, contacts, ArrayList(), false) {
|
||||
updatePlaceholderVisibility(contacts)
|
||||
SelectContactsAdapter(this, contacts, ArrayList(), false, select_contact_list) {
|
||||
confirmSelection(it)
|
||||
}.apply {
|
||||
select_contact_list.adapter = this
|
||||
}
|
||||
|
||||
select_contact_fastscroller.allowBubbleDisplay = baseConfig.showInfoBubble
|
||||
@ -132,9 +134,29 @@ class SelectContactActivity : SimpleActivity() {
|
||||
val contactId = ContactsHelper(this).getContactMimeTypeId(contact.id.toString(), specialMimeType!!)
|
||||
Uri.withAppendedPath(ContactsContract.Data.CONTENT_URI, contactId)
|
||||
}
|
||||
else -> {
|
||||
getContactPublicUri(contact)
|
||||
else -> getContactPublicUri(contact)
|
||||
}
|
||||
}
|
||||
|
||||
private fun setupPlaceholders() {
|
||||
select_contact_placeholder.setTextColor(config.textColor)
|
||||
select_contact_placeholder_2.setTextColor(getAdjustedPrimaryColor())
|
||||
select_contact_placeholder_2.underlineText()
|
||||
select_contact_placeholder_2.setOnClickListener {
|
||||
FilterContactSourcesDialog(this) {
|
||||
initContacts()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun updatePlaceholderVisibility(contacts: ArrayList<Contact>) {
|
||||
select_contact_list.beVisibleIf(contacts.isNotEmpty())
|
||||
select_contact_placeholder_2.beVisibleIf(contacts.isEmpty())
|
||||
select_contact_placeholder.beVisibleIf(contacts.isEmpty())
|
||||
select_contact_placeholder.setText(when (specialMimeType) {
|
||||
ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE -> R.string.no_contacts_with_emails
|
||||
ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE -> R.string.no_contacts_with_phone_numbers
|
||||
else -> R.string.no_contacts_found
|
||||
})
|
||||
}
|
||||
}
|
||||
|
@ -35,7 +35,9 @@ class SettingsActivity : SimpleActivity() {
|
||||
setupShowInfoBubble()
|
||||
setupShowContactThumbnails()
|
||||
setupShowPhoneNumbers()
|
||||
setupShowContactsWithNumbers()
|
||||
setupStartNameWithSurname()
|
||||
setupUse24HourTimeFormat()
|
||||
setupFilterDuplicates()
|
||||
setupShowCallConfirmation()
|
||||
setupOnContactClick()
|
||||
@ -109,6 +111,14 @@ class SettingsActivity : SimpleActivity() {
|
||||
}
|
||||
}
|
||||
|
||||
private fun setupShowContactsWithNumbers() {
|
||||
settings_show_only_contacts_with_numbers.isChecked = config.showOnlyContactsWithNumbers
|
||||
settings_show_only_contacts_with_numbers_holder.setOnClickListener {
|
||||
settings_show_only_contacts_with_numbers.toggle()
|
||||
config.showOnlyContactsWithNumbers = settings_show_only_contacts_with_numbers.isChecked
|
||||
}
|
||||
}
|
||||
|
||||
private fun setupStartNameWithSurname() {
|
||||
settings_start_with_surname.isChecked = config.startNameWithSurname
|
||||
settings_start_with_surname_holder.setOnClickListener {
|
||||
@ -117,6 +127,14 @@ class SettingsActivity : SimpleActivity() {
|
||||
}
|
||||
}
|
||||
|
||||
private fun setupUse24HourTimeFormat() {
|
||||
settings_use_24_hour_time_format.isChecked = config.use24HourFormat
|
||||
settings_use_24_hour_time_format_holder.setOnClickListener {
|
||||
settings_use_24_hour_time_format.toggle()
|
||||
config.use24HourFormat = settings_use_24_hour_time_format.isChecked
|
||||
}
|
||||
}
|
||||
|
||||
private fun setupFilterDuplicates() {
|
||||
settings_filter_duplicates.isChecked = config.filterDuplicates
|
||||
settings_filter_duplicates_holder.setOnClickListener {
|
||||
|
@ -354,12 +354,16 @@ class ViewContactActivity : ContactActivity() {
|
||||
|
||||
private fun setupOrganization() {
|
||||
val organization = contact!!.organization
|
||||
if (!organization.isEmpty() && showFields and SHOW_ORGANIZATION_FIELD != 0) {
|
||||
if (organization.isNotEmpty() && showFields and SHOW_ORGANIZATION_FIELD != 0) {
|
||||
contact_organization_company.text = organization.company
|
||||
contact_organization_job_position.text = organization.jobPosition
|
||||
contact_organization_image.beGoneIf(organization.isEmpty())
|
||||
contact_organization_company.beGoneIf(organization.company.isEmpty())
|
||||
contact_organization_job_position.beGoneIf(organization.jobPosition.isEmpty())
|
||||
|
||||
if (organization.company.isEmpty() && organization.jobPosition.isNotEmpty()) {
|
||||
(contact_organization_image.layoutParams as RelativeLayout.LayoutParams).addRule(RelativeLayout.ALIGN_TOP, contact_organization_job_position.id)
|
||||
}
|
||||
} else {
|
||||
contact_organization_image.beGone()
|
||||
contact_organization_company.beGone()
|
||||
|
@ -12,7 +12,10 @@ import com.bumptech.glide.signature.ObjectKey
|
||||
import com.simplemobiletools.commons.adapters.MyRecyclerViewAdapter
|
||||
import com.simplemobiletools.commons.dialogs.ConfirmationDialog
|
||||
import com.simplemobiletools.commons.dialogs.RadioGroupDialog
|
||||
import com.simplemobiletools.commons.extensions.*
|
||||
import com.simplemobiletools.commons.extensions.beVisibleIf
|
||||
import com.simplemobiletools.commons.extensions.getAdjustedPrimaryColor
|
||||
import com.simplemobiletools.commons.extensions.getColoredDrawableWithColor
|
||||
import com.simplemobiletools.commons.extensions.highlightTextPart
|
||||
import com.simplemobiletools.commons.models.RadioItem
|
||||
import com.simplemobiletools.commons.views.FastScroller
|
||||
import com.simplemobiletools.commons.views.MyRecyclerView
|
||||
@ -33,6 +36,7 @@ class ContactsAdapter(activity: SimpleActivity, var contactItems: ArrayList<Cont
|
||||
MyRecyclerViewAdapter(activity, recyclerView, fastScroller, itemClick) {
|
||||
|
||||
private lateinit var contactDrawable: Drawable
|
||||
private lateinit var businessContactDrawable: Drawable
|
||||
private var config = activity.config
|
||||
private var textToHighlight = highlightText
|
||||
|
||||
@ -72,14 +76,8 @@ class ContactsAdapter(activity: SimpleActivity, var contactItems: ArrayList<Cont
|
||||
}
|
||||
}
|
||||
|
||||
override fun prepareItemSelection(viewHolder: ViewHolder) {}
|
||||
|
||||
override fun markViewHolderSelection(select: Boolean, viewHolder: ViewHolder?) {
|
||||
viewHolder?.itemView?.contact_frame?.isSelected = select
|
||||
}
|
||||
|
||||
override fun actionItemPressed(id: Int) {
|
||||
if (selectedPositions.isEmpty()) {
|
||||
if (selectedKeys.isEmpty()) {
|
||||
return
|
||||
}
|
||||
|
||||
@ -100,6 +98,10 @@ class ContactsAdapter(activity: SimpleActivity, var contactItems: ArrayList<Cont
|
||||
|
||||
override fun getIsItemSelectable(position: Int) = true
|
||||
|
||||
override fun getItemSelectionKey(position: Int) = contactItems.getOrNull(position)?.id
|
||||
|
||||
override fun getItemKeyPosition(key: Int) = contactItems.indexOfFirst { it.id == key }
|
||||
|
||||
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
|
||||
val layout = if (showPhoneNumbers) R.layout.item_contact_with_number else R.layout.item_contact_without_number
|
||||
return createViewHolder(layout, parent)
|
||||
@ -108,16 +110,19 @@ class ContactsAdapter(activity: SimpleActivity, var contactItems: ArrayList<Cont
|
||||
override fun onBindViewHolder(holder: MyRecyclerViewAdapter.ViewHolder, position: Int) {
|
||||
val contact = contactItems[position]
|
||||
val allowLongClick = location != LOCATION_INSERT_OR_EDIT
|
||||
val view = holder.bindView(contact, true, allowLongClick) { itemView, layoutPosition ->
|
||||
holder.bindView(contact, true, allowLongClick) { itemView, layoutPosition ->
|
||||
setupView(itemView, contact)
|
||||
}
|
||||
bindViewHolder(holder, position, view)
|
||||
bindViewHolder(holder)
|
||||
}
|
||||
|
||||
override fun getItemCount() = contactItems.size
|
||||
|
||||
private fun getItemWithKey(key: Int): Contact? = contactItems.firstOrNull { it.id == key }
|
||||
|
||||
fun initDrawables() {
|
||||
contactDrawable = activity.resources.getColoredDrawableWithColor(R.drawable.ic_person, textColor)
|
||||
businessContactDrawable = activity.resources.getColoredDrawableWithColor(R.drawable.ic_business, textColor)
|
||||
}
|
||||
|
||||
fun updateItems(newItems: ArrayList<Contact>, highlightText: String = "") {
|
||||
@ -134,7 +139,8 @@ class ContactsAdapter(activity: SimpleActivity, var contactItems: ArrayList<Cont
|
||||
}
|
||||
|
||||
private fun editContact() {
|
||||
activity.editContact(contactItems[selectedPositions.first()])
|
||||
val contact = getItemWithKey(selectedKeys.first()) ?: return
|
||||
activity.editContact(contact)
|
||||
}
|
||||
|
||||
private fun askConfirmDelete() {
|
||||
@ -144,17 +150,12 @@ class ContactsAdapter(activity: SimpleActivity, var contactItems: ArrayList<Cont
|
||||
}
|
||||
|
||||
private fun deleteContacts() {
|
||||
if (selectedPositions.isEmpty()) {
|
||||
if (selectedKeys.isEmpty()) {
|
||||
return
|
||||
}
|
||||
|
||||
val contactsToRemove = ArrayList<Contact>()
|
||||
selectedPositions.sortedDescending().forEach {
|
||||
val contact = contactItems.getOrNull(it)
|
||||
if (contact != null) {
|
||||
contactsToRemove.add(contact)
|
||||
}
|
||||
}
|
||||
val contactsToRemove = getSelectedItems()
|
||||
val positions = getSelectedItemPositions()
|
||||
contactItems.removeAll(contactsToRemove)
|
||||
|
||||
ContactsHelper(activity).deleteContacts(contactsToRemove)
|
||||
@ -162,16 +163,15 @@ class ContactsAdapter(activity: SimpleActivity, var contactItems: ArrayList<Cont
|
||||
refreshListener?.refreshContacts(ALL_TABS_MASK)
|
||||
finishActMode()
|
||||
} else {
|
||||
removeSelectedItems()
|
||||
removeSelectedItems(positions)
|
||||
refreshListener?.refreshContacts(CONTACTS_TAB_MASK or FAVORITES_TAB_MASK)
|
||||
}
|
||||
}
|
||||
|
||||
// used for removing contacts from groups or favorites, not deleting actual contacts
|
||||
private fun removeContacts() {
|
||||
val contactsToRemove = ArrayList<Contact>()
|
||||
selectedPositions.sortedDescending().forEach {
|
||||
contactsToRemove.add(contactItems[it])
|
||||
}
|
||||
val contactsToRemove = getSelectedItems()
|
||||
val positions = getSelectedItemPositions()
|
||||
contactItems.removeAll(contactsToRemove)
|
||||
|
||||
if (location == LOCATION_FAVORITES_TAB) {
|
||||
@ -180,22 +180,22 @@ class ContactsAdapter(activity: SimpleActivity, var contactItems: ArrayList<Cont
|
||||
refreshListener?.refreshContacts(FAVORITES_TAB_MASK)
|
||||
finishActMode()
|
||||
} else {
|
||||
removeSelectedItems()
|
||||
removeSelectedItems(positions)
|
||||
}
|
||||
} else if (location == LOCATION_GROUP_CONTACTS) {
|
||||
removeListener?.removeFromGroup(contactsToRemove)
|
||||
removeSelectedItems()
|
||||
removeSelectedItems(positions)
|
||||
}
|
||||
}
|
||||
|
||||
private fun addToFavorites() {
|
||||
ContactsHelper(activity).addFavorites(getSelectedContacts())
|
||||
ContactsHelper(activity).addFavorites(getSelectedItems())
|
||||
refreshListener?.refreshContacts(FAVORITES_TAB_MASK)
|
||||
finishActMode()
|
||||
}
|
||||
|
||||
private fun addToGroup() {
|
||||
val selectedContacts = getSelectedContacts()
|
||||
val selectedContacts = getSelectedItems()
|
||||
val NEW_GROUP_ID = -1
|
||||
val items = ArrayList<RadioItem>()
|
||||
ContactsHelper(activity).getStoredGroups().forEach {
|
||||
@ -223,41 +223,30 @@ class ContactsAdapter(activity: SimpleActivity, var contactItems: ArrayList<Cont
|
||||
}
|
||||
|
||||
private fun shareContacts() {
|
||||
val contactsIDs = ArrayList<Int>()
|
||||
selectedPositions.forEach {
|
||||
contactsIDs.add(contactItems[it].id)
|
||||
}
|
||||
|
||||
val filtered = contactItems.filter { contactsIDs.contains(it.id) } as ArrayList<Contact>
|
||||
activity.shareContacts(filtered)
|
||||
activity.shareContacts(getSelectedItems())
|
||||
}
|
||||
|
||||
private fun sendSMSToContacts() {
|
||||
activity.sendSMSToContacts(getSelectedContacts())
|
||||
activity.sendSMSToContacts(getSelectedItems())
|
||||
}
|
||||
|
||||
private fun sendEmailToContacts() {
|
||||
activity.sendEmailToContacts(getSelectedContacts())
|
||||
activity.sendEmailToContacts(getSelectedItems())
|
||||
}
|
||||
|
||||
private fun getSelectedContacts(): ArrayList<Contact> {
|
||||
val contacts = ArrayList<Contact>()
|
||||
selectedPositions.forEach {
|
||||
contacts.add(contactItems[it])
|
||||
}
|
||||
return contacts
|
||||
}
|
||||
private fun getSelectedItems() = contactItems.filter { selectedKeys.contains(it.id) } as ArrayList<Contact>
|
||||
|
||||
override fun onViewRecycled(holder: ViewHolder) {
|
||||
super.onViewRecycled(holder)
|
||||
if (!activity.isActivityDestroyed()) {
|
||||
Glide.with(activity).clear(holder.itemView?.contact_tmb!!)
|
||||
if (!activity.isDestroyed) {
|
||||
Glide.with(activity).clear(holder.itemView.contact_tmb)
|
||||
}
|
||||
}
|
||||
|
||||
private fun setupView(view: View, contact: Contact) {
|
||||
view.apply {
|
||||
val fullName = contact.getFullName()
|
||||
contact_frame?.isSelected = selectedKeys.contains(contact.id)
|
||||
val fullName = contact.getNameToDisplay()
|
||||
contact_name.text = if (textToHighlight.isEmpty()) fullName else fullName.highlightTextPart(textToHighlight, adjustedPrimaryColor)
|
||||
contact_name.setTextColor(textColor)
|
||||
contact_name.setPadding(if (showContactThumbnails) smallPadding else bigPadding, smallPadding, smallPadding, 0)
|
||||
@ -278,12 +267,13 @@ class ContactsAdapter(activity: SimpleActivity, var contactItems: ArrayList<Cont
|
||||
contact_tmb.beVisibleIf(showContactThumbnails)
|
||||
|
||||
if (showContactThumbnails) {
|
||||
val placeholderImage = if (contact.isABusinessContact()) businessContactDrawable else contactDrawable
|
||||
when {
|
||||
contact.photoUri.isNotEmpty() -> {
|
||||
val options = RequestOptions()
|
||||
.signature(ObjectKey(contact.photoUri))
|
||||
.diskCacheStrategy(DiskCacheStrategy.RESOURCE)
|
||||
.error(contactDrawable)
|
||||
.error(placeholderImage)
|
||||
.centerCrop()
|
||||
|
||||
Glide.with(activity).load(contact.photoUri).transition(DrawableTransitionOptions.withCrossFade()).apply(options).into(contact_tmb)
|
||||
@ -292,12 +282,12 @@ class ContactsAdapter(activity: SimpleActivity, var contactItems: ArrayList<Cont
|
||||
val options = RequestOptions()
|
||||
.signature(ObjectKey(contact.photo!!))
|
||||
.diskCacheStrategy(DiskCacheStrategy.RESOURCE)
|
||||
.error(contactDrawable)
|
||||
.error(placeholderImage)
|
||||
.centerCrop()
|
||||
|
||||
Glide.with(activity).load(contact.photo).transition(DrawableTransitionOptions.withCrossFade()).apply(options).into(contact_tmb)
|
||||
}
|
||||
else -> contact_tmb.setImageDrawable(contactDrawable)
|
||||
else -> contact_tmb.setImageDrawable(placeholderImage)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,11 +1,9 @@
|
||||
package com.simplemobiletools.contacts.adapters
|
||||
|
||||
import android.support.v7.widget.RecyclerView
|
||||
import android.util.SparseArray
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import com.simplemobiletools.commons.extensions.getAdjustedPrimaryColor
|
||||
import com.simplemobiletools.commons.interfaces.MyAdapterListener
|
||||
import com.simplemobiletools.contacts.R
|
||||
import com.simplemobiletools.contacts.activities.SimpleActivity
|
||||
import com.simplemobiletools.contacts.extensions.config
|
||||
@ -16,13 +14,12 @@ import java.util.*
|
||||
|
||||
class FilterContactSourcesAdapter(val activity: SimpleActivity, private val contactSources: List<ContactSource>, private val displayContactSources: ArrayList<String>) :
|
||||
RecyclerView.Adapter<FilterContactSourcesAdapter.ViewHolder>() {
|
||||
private val itemViews = SparseArray<View>()
|
||||
private val selectedPositions = HashSet<Int>()
|
||||
private val selectedKeys = HashSet<Int>()
|
||||
|
||||
init {
|
||||
contactSources.forEachIndexed { index, contactSource ->
|
||||
if (displayContactSources.contains(contactSource.name)) {
|
||||
selectedPositions.add(index)
|
||||
selectedKeys.add(contactSource.hashCode())
|
||||
}
|
||||
|
||||
if (contactSource.name == activity.config.localAccountName && contactSource.type == activity.config.localAccountType) {
|
||||
@ -30,61 +27,50 @@ class FilterContactSourcesAdapter(val activity: SimpleActivity, private val cont
|
||||
}
|
||||
|
||||
if (contactSource.type == SMT_PRIVATE && displayContactSources.contains(SMT_PRIVATE)) {
|
||||
selectedPositions.add(index)
|
||||
selectedKeys.add(contactSource.hashCode())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun toggleItemSelection(select: Boolean, pos: Int) {
|
||||
private fun toggleItemSelection(select: Boolean, contactSource: ContactSource, position: Int) {
|
||||
if (select) {
|
||||
if (itemViews[pos] != null) {
|
||||
selectedPositions.add(pos)
|
||||
}
|
||||
selectedKeys.add(contactSource.hashCode())
|
||||
} else {
|
||||
selectedPositions.remove(pos)
|
||||
selectedKeys.remove(contactSource.hashCode())
|
||||
}
|
||||
|
||||
itemViews[pos]?.filter_contact_source_checkbox?.isChecked = select
|
||||
notifyItemChanged(position)
|
||||
}
|
||||
|
||||
private val adapterListener = object : MyAdapterListener {
|
||||
override fun toggleItemSelectionAdapter(select: Boolean, position: Int) {
|
||||
toggleItemSelection(select, position)
|
||||
}
|
||||
|
||||
override fun getSelectedPositions() = selectedPositions
|
||||
|
||||
override fun itemLongClicked(position: Int) {}
|
||||
}
|
||||
|
||||
fun getSelectedItemsSet() = selectedPositions
|
||||
fun getSelectedContactSources() = contactSources.filter { selectedKeys.contains(it.hashCode()) }
|
||||
|
||||
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
|
||||
val view = activity.layoutInflater.inflate(R.layout.item_filter_contact_source, parent, false)
|
||||
return ViewHolder(view, adapterListener, activity)
|
||||
return ViewHolder(view)
|
||||
}
|
||||
|
||||
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
|
||||
val contactSource = contactSources[position]
|
||||
itemViews.put(position, holder.bindView(contactSource.name))
|
||||
toggleItemSelection(selectedPositions.contains(position), position)
|
||||
holder.bindView(contactSource)
|
||||
}
|
||||
|
||||
override fun getItemCount() = contactSources.size
|
||||
|
||||
class ViewHolder(view: View, private val adapterListener: MyAdapterListener, val activity: SimpleActivity) : RecyclerView.ViewHolder(view) {
|
||||
fun bindView(contactSource: String): View {
|
||||
inner class ViewHolder(view: View) : RecyclerView.ViewHolder(view) {
|
||||
fun bindView(contactSource: ContactSource): View {
|
||||
val isSelected = selectedKeys.contains(contactSource.hashCode())
|
||||
itemView.apply {
|
||||
filter_contact_source_checkbox.isChecked = isSelected
|
||||
filter_contact_source_checkbox.setColors(activity.config.textColor, activity.getAdjustedPrimaryColor(), activity.config.backgroundColor)
|
||||
filter_contact_source_checkbox.text = contactSource
|
||||
filter_contact_source_holder.setOnClickListener { viewClicked(!filter_contact_source_checkbox.isChecked) }
|
||||
filter_contact_source_checkbox.text = contactSource.name
|
||||
filter_contact_source_holder.setOnClickListener { viewClicked(!isSelected, contactSource) }
|
||||
}
|
||||
|
||||
return itemView
|
||||
}
|
||||
|
||||
private fun viewClicked(select: Boolean) {
|
||||
adapterListener.toggleItemSelectionAdapter(select, adapterPosition)
|
||||
private fun viewClicked(select: Boolean, contactSource: ContactSource) {
|
||||
toggleItemSelection(select, contactSource, adapterPosition)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -41,14 +41,8 @@ class GroupsAdapter(activity: SimpleActivity, var groups: ArrayList<Group>, val
|
||||
}
|
||||
}
|
||||
|
||||
override fun prepareItemSelection(viewHolder: ViewHolder) {}
|
||||
|
||||
override fun markViewHolderSelection(select: Boolean, viewHolder: ViewHolder?) {
|
||||
viewHolder?.itemView?.group_frame?.isSelected = select
|
||||
}
|
||||
|
||||
override fun actionItemPressed(id: Int) {
|
||||
if (selectedPositions.isEmpty()) {
|
||||
if (selectedKeys.isEmpty()) {
|
||||
return
|
||||
}
|
||||
|
||||
@ -63,18 +57,24 @@ class GroupsAdapter(activity: SimpleActivity, var groups: ArrayList<Group>, val
|
||||
|
||||
override fun getIsItemSelectable(position: Int) = true
|
||||
|
||||
override fun getItemSelectionKey(position: Int) = groups.getOrNull(position)?.id?.toInt()
|
||||
|
||||
override fun getItemKeyPosition(key: Int) = groups.indexOfFirst { it.id.toInt() == key }
|
||||
|
||||
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = createViewHolder(R.layout.item_group, parent)
|
||||
|
||||
override fun onBindViewHolder(holder: MyRecyclerViewAdapter.ViewHolder, position: Int) {
|
||||
val group = groups[position]
|
||||
val view = holder.bindView(group, true, true) { itemView, layoutPosition ->
|
||||
holder.bindView(group, true, true) { itemView, layoutPosition ->
|
||||
setupView(itemView, group)
|
||||
}
|
||||
bindViewHolder(holder, position, view)
|
||||
bindViewHolder(holder)
|
||||
}
|
||||
|
||||
override fun getItemCount() = groups.size
|
||||
|
||||
private fun getItemWithKey(key: Int): Group? = groups.firstOrNull { it.id.toInt() == key }
|
||||
|
||||
fun updateItems(newItems: ArrayList<Group>) {
|
||||
groups = newItems
|
||||
notifyDataSetChanged()
|
||||
@ -83,7 +83,8 @@ class GroupsAdapter(activity: SimpleActivity, var groups: ArrayList<Group>, val
|
||||
}
|
||||
|
||||
private fun renameGroup() {
|
||||
RenameGroupDialog(activity, groups[selectedPositions.first()]) {
|
||||
val group = getItemWithKey(selectedKeys.first()) ?: return
|
||||
RenameGroupDialog(activity, group) {
|
||||
finishActMode()
|
||||
refreshListener?.refreshContacts(GROUPS_TAB_MASK)
|
||||
}
|
||||
@ -96,18 +97,17 @@ class GroupsAdapter(activity: SimpleActivity, var groups: ArrayList<Group>, val
|
||||
}
|
||||
|
||||
private fun deleteGroups() {
|
||||
if (selectedPositions.isEmpty()) {
|
||||
if (selectedKeys.isEmpty()) {
|
||||
return
|
||||
}
|
||||
|
||||
val groupsToRemove = ArrayList<Group>()
|
||||
selectedPositions.sortedDescending().forEach {
|
||||
val group = groups[it]
|
||||
groupsToRemove.add(group)
|
||||
if (group.isPrivateSecretGroup()) {
|
||||
activity.dbHelper.deleteGroup(group.id)
|
||||
val groupsToRemove = groups.filter { selectedKeys.contains(it.id.toInt()) } as ArrayList<Group>
|
||||
val positions = getSelectedItemPositions()
|
||||
groupsToRemove.forEach {
|
||||
if (it.isPrivateSecretGroup()) {
|
||||
activity.dbHelper.deleteGroup(it.id)
|
||||
} else {
|
||||
ContactsHelper(activity).deleteGroup(group.id)
|
||||
ContactsHelper(activity).deleteGroup(it.id)
|
||||
}
|
||||
}
|
||||
groups.removeAll(groupsToRemove)
|
||||
@ -116,12 +116,13 @@ class GroupsAdapter(activity: SimpleActivity, var groups: ArrayList<Group>, val
|
||||
refreshListener?.refreshContacts(GROUPS_TAB_MASK)
|
||||
finishActMode()
|
||||
} else {
|
||||
removeSelectedItems()
|
||||
removeSelectedItems(positions)
|
||||
}
|
||||
}
|
||||
|
||||
private fun setupView(view: View, group: Group) {
|
||||
view.apply {
|
||||
group_frame?.isSelected = selectedKeys.contains(group.id.toInt())
|
||||
group_name.apply {
|
||||
setTextColor(textColor)
|
||||
text = String.format(activity.getString(R.string.groups_placeholder), group.title, group.contactsCount.toString())
|
||||
|
@ -30,14 +30,8 @@ class RecentCallsAdapter(activity: SimpleActivity, var recentCalls: ArrayList<Re
|
||||
|
||||
override fun prepareActionMode(menu: Menu) {}
|
||||
|
||||
override fun prepareItemSelection(viewHolder: ViewHolder) {}
|
||||
|
||||
override fun markViewHolderSelection(select: Boolean, viewHolder: ViewHolder?) {
|
||||
viewHolder?.itemView?.recent_call_frame?.isSelected = select
|
||||
}
|
||||
|
||||
override fun actionItemPressed(id: Int) {
|
||||
if (selectedPositions.isEmpty()) {
|
||||
if (selectedKeys.isEmpty()) {
|
||||
return
|
||||
}
|
||||
|
||||
@ -51,14 +45,18 @@ class RecentCallsAdapter(activity: SimpleActivity, var recentCalls: ArrayList<Re
|
||||
|
||||
override fun getIsItemSelectable(position: Int) = true
|
||||
|
||||
override fun getItemSelectionKey(position: Int) = recentCalls.getOrNull(position)?.id
|
||||
|
||||
override fun getItemKeyPosition(key: Int) = recentCalls.indexOfFirst { it.id == key }
|
||||
|
||||
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = createViewHolder(R.layout.item_recent_call, parent)
|
||||
|
||||
override fun onBindViewHolder(holder: MyRecyclerViewAdapter.ViewHolder, position: Int) {
|
||||
val recentCall = recentCalls[position]
|
||||
val view = holder.bindView(recentCall, true, true) { itemView, layoutPosition ->
|
||||
holder.bindView(recentCall, true, true) { itemView, layoutPosition ->
|
||||
setupView(itemView, recentCall)
|
||||
}
|
||||
bindViewHolder(holder, position, view)
|
||||
bindViewHolder(holder)
|
||||
}
|
||||
|
||||
override fun getItemCount() = recentCalls.size
|
||||
@ -77,15 +75,12 @@ class RecentCallsAdapter(activity: SimpleActivity, var recentCalls: ArrayList<Re
|
||||
}
|
||||
|
||||
private fun deleteRecentCalls() {
|
||||
if (selectedPositions.isEmpty()) {
|
||||
if (selectedKeys.isEmpty()) {
|
||||
return
|
||||
}
|
||||
|
||||
val callsToRemove = ArrayList<RecentCall>()
|
||||
selectedPositions.sortedDescending().forEach {
|
||||
val call = recentCalls[it]
|
||||
callsToRemove.add(call)
|
||||
}
|
||||
val callsToRemove = getSelectedItems()
|
||||
val positions = getSelectedItemPositions()
|
||||
ContactsHelper(activity).removeRecentCalls(callsToRemove.map { it.id } as ArrayList<Int>)
|
||||
recentCalls.removeAll(callsToRemove)
|
||||
|
||||
@ -93,12 +88,15 @@ class RecentCallsAdapter(activity: SimpleActivity, var recentCalls: ArrayList<Re
|
||||
refreshListener?.refreshContacts(RECENTS_TAB_MASK)
|
||||
finishActMode()
|
||||
} else {
|
||||
removeSelectedItems()
|
||||
removeSelectedItems(positions)
|
||||
}
|
||||
}
|
||||
|
||||
private fun getSelectedItems() = recentCalls.filter { selectedKeys.contains(it.id) } as ArrayList<RecentCall>
|
||||
|
||||
private fun setupView(view: View, recentCall: RecentCall) {
|
||||
view.apply {
|
||||
recent_call_frame?.isSelected = selectedKeys.contains(recentCall.id)
|
||||
recent_call_name.apply {
|
||||
text = recentCall.name ?: recentCall.number
|
||||
setTextColor(textColor)
|
||||
|
@ -1,10 +1,11 @@
|
||||
package com.simplemobiletools.contacts.adapters
|
||||
|
||||
import android.graphics.drawable.Drawable
|
||||
import android.support.v7.widget.RecyclerView
|
||||
import android.util.SparseArray
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.recyclerview.widget.DividerItemDecoration
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import com.bumptech.glide.Glide
|
||||
import com.bumptech.glide.load.engine.DiskCacheStrategy
|
||||
import com.bumptech.glide.load.resource.drawable.DrawableTransitionOptions
|
||||
@ -13,8 +14,7 @@ import com.bumptech.glide.signature.ObjectKey
|
||||
import com.simplemobiletools.commons.extensions.beVisibleIf
|
||||
import com.simplemobiletools.commons.extensions.getAdjustedPrimaryColor
|
||||
import com.simplemobiletools.commons.extensions.getColoredDrawableWithColor
|
||||
import com.simplemobiletools.commons.extensions.isActivityDestroyed
|
||||
import com.simplemobiletools.commons.interfaces.MyAdapterListener
|
||||
import com.simplemobiletools.commons.views.MyRecyclerView
|
||||
import com.simplemobiletools.contacts.R
|
||||
import com.simplemobiletools.contacts.activities.SimpleActivity
|
||||
import com.simplemobiletools.contacts.extensions.config
|
||||
@ -24,7 +24,7 @@ import kotlinx.android.synthetic.main.item_add_favorite_with_number.view.*
|
||||
import java.util.*
|
||||
|
||||
class SelectContactsAdapter(val activity: SimpleActivity, val contacts: List<Contact>, private val selectedContacts: ArrayList<Contact>, private val allowPickMultiple: Boolean,
|
||||
private val itemClick: ((Contact) -> Unit)? = null) : RecyclerView.Adapter<SelectContactsAdapter.ViewHolder>() {
|
||||
private val recyclerView: MyRecyclerView, private val itemClick: ((Contact) -> Unit)? = null) : RecyclerView.Adapter<SelectContactsAdapter.ViewHolder>() {
|
||||
private val itemViews = SparseArray<View>()
|
||||
private val selectedPositions = HashSet<Int>()
|
||||
private val config = activity.config
|
||||
@ -38,10 +38,19 @@ class SelectContactsAdapter(val activity: SimpleActivity, val contacts: List<Con
|
||||
|
||||
init {
|
||||
contacts.forEachIndexed { index, contact ->
|
||||
if (selectedContacts.map { it.id }.contains(contact.id)) {
|
||||
if (selectedContacts.asSequence().map { it.id }.contains(contact.id)) {
|
||||
selectedPositions.add(index)
|
||||
}
|
||||
}
|
||||
|
||||
if (recyclerView.itemDecorationCount > 0) {
|
||||
recyclerView.removeItemDecorationAt(0)
|
||||
}
|
||||
|
||||
DividerItemDecoration(activity, DividerItemDecoration.VERTICAL).apply {
|
||||
setDrawable(activity.resources.getDrawable(R.drawable.divider))
|
||||
recyclerView.addItemDecoration(this)
|
||||
}
|
||||
}
|
||||
|
||||
private fun toggleItemSelection(select: Boolean, pos: Int) {
|
||||
@ -56,16 +65,6 @@ class SelectContactsAdapter(val activity: SimpleActivity, val contacts: List<Con
|
||||
itemViews[pos]?.contact_checkbox?.isChecked = select
|
||||
}
|
||||
|
||||
private val adapterListener = object : MyAdapterListener {
|
||||
override fun toggleItemSelectionAdapter(select: Boolean, position: Int) {
|
||||
toggleItemSelection(select, position)
|
||||
}
|
||||
|
||||
override fun getSelectedPositions() = selectedPositions
|
||||
|
||||
override fun itemLongClicked(position: Int) {}
|
||||
}
|
||||
|
||||
fun getSelectedItemsSet(): HashSet<Contact> {
|
||||
val selectedItemsSet = HashSet<Contact>(selectedPositions.size)
|
||||
selectedPositions.forEach { selectedItemsSet.add(contacts[it]) }
|
||||
@ -74,7 +73,7 @@ class SelectContactsAdapter(val activity: SimpleActivity, val contacts: List<Con
|
||||
|
||||
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
|
||||
val view = activity.layoutInflater.inflate(itemLayout, parent, false)
|
||||
return ViewHolder(view, adapterListener, activity, allowPickMultiple, itemClick)
|
||||
return ViewHolder(view)
|
||||
}
|
||||
|
||||
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
|
||||
@ -85,16 +84,15 @@ class SelectContactsAdapter(val activity: SimpleActivity, val contacts: List<Con
|
||||
|
||||
override fun getItemCount() = contacts.size
|
||||
|
||||
class ViewHolder(view: View, private val adapterListener: MyAdapterListener, val activity: SimpleActivity, private val showCheckbox: Boolean,
|
||||
private val itemClick: ((Contact) -> Unit)?) : RecyclerView.ViewHolder(view) {
|
||||
inner class ViewHolder(view: View) : RecyclerView.ViewHolder(view) {
|
||||
fun bindView(contact: Contact, contactDrawable: Drawable, config: Config, showContactThumbnails: Boolean,
|
||||
smallPadding: Int, bigPadding: Int): View {
|
||||
itemView.apply {
|
||||
contact_checkbox.beVisibleIf(showCheckbox)
|
||||
contact_checkbox.beVisibleIf(allowPickMultiple)
|
||||
contact_checkbox.setColors(config.textColor, context.getAdjustedPrimaryColor(), config.backgroundColor)
|
||||
val textColor = config.textColor
|
||||
|
||||
contact_name.text = contact.getFullName()
|
||||
contact_name.text = contact.getNameToDisplay()
|
||||
contact_name.setTextColor(textColor)
|
||||
contact_name.setPadding(if (showContactThumbnails) smallPadding else bigPadding, smallPadding, smallPadding, 0)
|
||||
|
||||
@ -119,7 +117,7 @@ class SelectContactsAdapter(val activity: SimpleActivity, val contacts: List<Con
|
||||
.error(contactDrawable)
|
||||
.centerCrop()
|
||||
|
||||
if (activity.isActivityDestroyed()) {
|
||||
if (activity.isDestroyed) {
|
||||
Glide.with(activity).load(contact.photoUri).transition(DrawableTransitionOptions.withCrossFade()).apply(options).into(contact_tmb)
|
||||
}
|
||||
} else {
|
||||
@ -132,14 +130,14 @@ class SelectContactsAdapter(val activity: SimpleActivity, val contacts: List<Con
|
||||
}
|
||||
|
||||
private fun viewClicked(select: Boolean) {
|
||||
adapterListener.toggleItemSelectionAdapter(select, adapterPosition)
|
||||
toggleItemSelection(select, adapterPosition)
|
||||
}
|
||||
}
|
||||
|
||||
override fun onViewRecycled(holder: ViewHolder) {
|
||||
super.onViewRecycled(holder)
|
||||
if (!activity.isActivityDestroyed()) {
|
||||
Glide.with(activity).clear(holder.itemView?.contact_tmb!!)
|
||||
if (!activity.isDestroyed) {
|
||||
Glide.with(activity).clear(holder.itemView.contact_tmb)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,8 +1,8 @@
|
||||
package com.simplemobiletools.contacts.adapters
|
||||
|
||||
import android.support.v4.view.PagerAdapter
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.viewpager.widget.PagerAdapter
|
||||
import com.simplemobiletools.contacts.R
|
||||
import com.simplemobiletools.contacts.activities.MainActivity
|
||||
import com.simplemobiletools.contacts.extensions.config
|
||||
|
@ -1,6 +1,6 @@
|
||||
package com.simplemobiletools.contacts.dialogs
|
||||
|
||||
import android.support.v7.app.AlertDialog
|
||||
import androidx.appcompat.app.AlertDialog
|
||||
import android.view.animation.AnimationUtils
|
||||
import com.simplemobiletools.commons.activities.BaseSimpleActivity
|
||||
import com.simplemobiletools.commons.extensions.applyColorFilter
|
||||
|
@ -1,6 +1,6 @@
|
||||
package com.simplemobiletools.contacts.dialogs
|
||||
|
||||
import android.support.v7.app.AlertDialog
|
||||
import androidx.appcompat.app.AlertDialog
|
||||
import com.simplemobiletools.commons.activities.BaseSimpleActivity
|
||||
import com.simplemobiletools.commons.extensions.setupDialogStuff
|
||||
import com.simplemobiletools.commons.helpers.SORT_BY_FIRST_NAME
|
||||
|
@ -1,6 +1,6 @@
|
||||
package com.simplemobiletools.contacts.dialogs
|
||||
|
||||
import android.support.v7.app.AlertDialog
|
||||
import androidx.appcompat.app.AlertDialog
|
||||
import android.view.View
|
||||
import com.simplemobiletools.commons.activities.BaseSimpleActivity
|
||||
import com.simplemobiletools.commons.dialogs.RadioGroupDialog
|
||||
|
@ -1,6 +1,6 @@
|
||||
package com.simplemobiletools.contacts.dialogs
|
||||
|
||||
import android.support.v7.app.AlertDialog
|
||||
import androidx.appcompat.app.AlertDialog
|
||||
import com.simplemobiletools.commons.activities.BaseSimpleActivity
|
||||
import com.simplemobiletools.commons.extensions.setupDialogStuff
|
||||
import com.simplemobiletools.commons.extensions.showKeyboard
|
||||
|
@ -1,7 +1,7 @@
|
||||
package com.simplemobiletools.contacts.dialogs
|
||||
|
||||
import android.support.v7.app.AlertDialog
|
||||
import android.view.ViewGroup
|
||||
import androidx.appcompat.app.AlertDialog
|
||||
import com.simplemobiletools.commons.extensions.*
|
||||
import com.simplemobiletools.contacts.R
|
||||
import com.simplemobiletools.contacts.activities.SimpleActivity
|
||||
@ -23,7 +23,7 @@ class ExportContactsDialog(val activity: SimpleActivity, val path: String, priva
|
||||
export_contacts_filename.setText("contacts_${activity.getCurrentFormattedDateTime()}")
|
||||
|
||||
ContactsHelper(activity).getContactSources {
|
||||
it.mapTo(contactSources, { it.copy() })
|
||||
it.mapTo(contactSources) { it.copy() }
|
||||
activity.runOnUiThread {
|
||||
export_contacts_list.adapter = FilterContactSourcesAdapter(activity, it, activity.getVisibleContactSources())
|
||||
}
|
||||
@ -50,12 +50,12 @@ class ExportContactsDialog(val activity: SimpleActivity, val path: String, priva
|
||||
return@setOnClickListener
|
||||
}
|
||||
|
||||
val selectedIndexes = (view.export_contacts_list.adapter as FilterContactSourcesAdapter).getSelectedItemsSet()
|
||||
val selectedContactSources = HashSet<String>()
|
||||
selectedIndexes.forEach {
|
||||
selectedContactSources.add(if (contactSources[it].type == SMT_PRIVATE) SMT_PRIVATE else contactSources[it].name)
|
||||
val selectedSources = (view.export_contacts_list.adapter as FilterContactSourcesAdapter).getSelectedContactSources()
|
||||
val selectedContactSourceNames = HashSet<String>()
|
||||
selectedSources.forEach {
|
||||
selectedContactSourceNames.add(if (it.type == SMT_PRIVATE) SMT_PRIVATE else it.name)
|
||||
}
|
||||
callback(file, selectedContactSources)
|
||||
callback(file, selectedContactSourceNames)
|
||||
dismiss()
|
||||
}
|
||||
else -> activity.toast(R.string.invalid_name)
|
||||
|
@ -1,6 +1,6 @@
|
||||
package com.simplemobiletools.contacts.dialogs
|
||||
|
||||
import android.support.v7.app.AlertDialog
|
||||
import androidx.appcompat.app.AlertDialog
|
||||
import com.simplemobiletools.commons.extensions.setupDialogStuff
|
||||
import com.simplemobiletools.contacts.R
|
||||
import com.simplemobiletools.contacts.activities.SimpleActivity
|
||||
@ -24,13 +24,13 @@ class FilterContactSourcesDialog(val activity: SimpleActivity, private val callb
|
||||
return@getContactSources
|
||||
}
|
||||
|
||||
it.mapTo(contactSources, { it.copy() })
|
||||
it.mapTo(contactSources) { it.copy() }
|
||||
val selectedSources = activity.getVisibleContactSources()
|
||||
activity.runOnUiThread {
|
||||
view.filter_contact_sources_list.adapter = FilterContactSourcesAdapter(activity, it, selectedSources)
|
||||
|
||||
dialog = AlertDialog.Builder(activity)
|
||||
.setPositiveButton(R.string.ok, { dialogInterface, i -> confirmEventTypes() })
|
||||
.setPositiveButton(R.string.ok) { dialogInterface, i -> confirmEventTypes() }
|
||||
.setNegativeButton(R.string.cancel, null)
|
||||
.create().apply {
|
||||
activity.setupDialogStuff(view, this)
|
||||
@ -40,21 +40,13 @@ class FilterContactSourcesDialog(val activity: SimpleActivity, private val callb
|
||||
}
|
||||
|
||||
private fun confirmEventTypes() {
|
||||
val selectedIndexes = (view.filter_contact_sources_list.adapter as FilterContactSourcesAdapter).getSelectedItemsSet()
|
||||
val ignoredIndexes = ArrayList<Int>()
|
||||
for (i in 0 until contactSources.size) {
|
||||
if (!selectedIndexes.contains(i)) {
|
||||
ignoredIndexes.add(i)
|
||||
}
|
||||
}
|
||||
val selectedContactSources = (view.filter_contact_sources_list.adapter as FilterContactSourcesAdapter).getSelectedContactSources()
|
||||
val ignoredContactSourceNames = contactSources.filter { !selectedContactSources.contains(it) }.map {
|
||||
if (it.type == SMT_PRIVATE) SMT_PRIVATE else it.name
|
||||
}.toHashSet()
|
||||
|
||||
val ignoredContactSources = HashSet<String>()
|
||||
ignoredIndexes.forEach {
|
||||
ignoredContactSources.add(if (contactSources[it].type == SMT_PRIVATE) SMT_PRIVATE else contactSources[it].name)
|
||||
}
|
||||
|
||||
if (activity.getVisibleContactSources() != ignoredContactSources) {
|
||||
activity.config.ignoredContactSources = ignoredContactSources
|
||||
if (activity.getVisibleContactSources() != ignoredContactSourceNames) {
|
||||
activity.config.ignoredContactSources = ignoredContactSourceNames
|
||||
callback()
|
||||
}
|
||||
dialog?.dismiss()
|
||||
|
@ -1,6 +1,6 @@
|
||||
package com.simplemobiletools.contacts.dialogs
|
||||
|
||||
import android.support.v7.app.AlertDialog
|
||||
import androidx.appcompat.app.AlertDialog
|
||||
import android.view.ViewGroup
|
||||
import com.simplemobiletools.commons.extensions.setupDialogStuff
|
||||
import com.simplemobiletools.commons.extensions.toast
|
||||
|
@ -1,6 +1,6 @@
|
||||
package com.simplemobiletools.contacts.dialogs
|
||||
|
||||
import android.support.v7.app.AlertDialog
|
||||
import androidx.appcompat.app.AlertDialog
|
||||
import com.simplemobiletools.commons.activities.BaseSimpleActivity
|
||||
import com.simplemobiletools.commons.extensions.setupDialogStuff
|
||||
import com.simplemobiletools.commons.views.MyAppCompatCheckbox
|
||||
|
@ -1,6 +1,6 @@
|
||||
package com.simplemobiletools.contacts.dialogs
|
||||
|
||||
import android.support.v7.app.AlertDialog
|
||||
import androidx.appcompat.app.AlertDialog
|
||||
import com.simplemobiletools.commons.activities.BaseSimpleActivity
|
||||
import com.simplemobiletools.commons.extensions.setupDialogStuff
|
||||
import com.simplemobiletools.commons.views.MyAppCompatCheckbox
|
||||
|
@ -1,6 +1,6 @@
|
||||
package com.simplemobiletools.contacts.dialogs
|
||||
|
||||
import android.support.v7.app.AlertDialog
|
||||
import androidx.appcompat.app.AlertDialog
|
||||
import com.simplemobiletools.commons.activities.BaseSimpleActivity
|
||||
import com.simplemobiletools.commons.extensions.*
|
||||
import com.simplemobiletools.contacts.R
|
||||
|
@ -1,6 +1,6 @@
|
||||
package com.simplemobiletools.contacts.dialogs
|
||||
|
||||
import android.support.v7.app.AlertDialog
|
||||
import androidx.appcompat.app.AlertDialog
|
||||
import com.simplemobiletools.commons.extensions.baseConfig
|
||||
import com.simplemobiletools.commons.extensions.setupDialogStuff
|
||||
import com.simplemobiletools.contacts.R
|
||||
@ -33,7 +33,7 @@ class SelectContactsDialog(val activity: SimpleActivity, initialContacts: ArrayL
|
||||
|
||||
activity.runOnUiThread {
|
||||
view.apply {
|
||||
select_contact_list.adapter = SelectContactsAdapter(activity, allContacts, initiallySelectedContacts, true)
|
||||
select_contact_list.adapter = SelectContactsAdapter(activity, allContacts, initiallySelectedContacts, true, select_contact_list)
|
||||
select_contact_fastscroller.allowBubbleDisplay = activity.baseConfig.showInfoBubble
|
||||
select_contact_fastscroller.setViews(select_contact_list) {
|
||||
select_contact_fastscroller.updateBubbleText(allContacts[it].getBubbleText())
|
||||
@ -42,7 +42,7 @@ class SelectContactsDialog(val activity: SimpleActivity, initialContacts: ArrayL
|
||||
}
|
||||
|
||||
AlertDialog.Builder(activity)
|
||||
.setPositiveButton(R.string.ok, { dialog, which -> dialogConfirmed() })
|
||||
.setPositiveButton(R.string.ok) { dialog, which -> dialogConfirmed() }
|
||||
.setNegativeButton(R.string.cancel, null)
|
||||
.create().apply {
|
||||
activity.setupDialogStuff(view, this)
|
||||
|
@ -1,6 +1,6 @@
|
||||
package com.simplemobiletools.contacts.dialogs
|
||||
|
||||
import android.support.v7.app.AlertDialog
|
||||
import androidx.appcompat.app.AlertDialog
|
||||
import android.view.ViewGroup
|
||||
import com.simplemobiletools.commons.extensions.setupDialogStuff
|
||||
import com.simplemobiletools.commons.views.MyAppCompatCheckbox
|
||||
|
@ -36,7 +36,7 @@ fun SimpleActivity.startCallIntent(recipient: String) {
|
||||
|
||||
fun SimpleActivity.tryStartCall(contact: Contact) {
|
||||
if (config.showCallConfirmation) {
|
||||
CallConfirmationDialog(this, contact.getFullName()) {
|
||||
CallConfirmationDialog(this, contact.getNameToDisplay()) {
|
||||
startCall(contact)
|
||||
}
|
||||
} else {
|
||||
@ -63,8 +63,9 @@ fun SimpleActivity.startCall(contact: Contact) {
|
||||
fun SimpleActivity.showContactSourcePicker(currentSource: String, callback: (newSource: String) -> Unit) {
|
||||
ContactsHelper(this).getContactSources {
|
||||
val ignoredTypes = arrayListOf(
|
||||
"org.thoughtcrime.securesms", // Signal
|
||||
"org.telegram.messenger" // Telegram
|
||||
SIGNAL_PACKAGE,
|
||||
TELEGRAM_PACKAGE,
|
||||
WHATSAPP_PACKAGE
|
||||
)
|
||||
|
||||
val items = ArrayList<RadioItem>()
|
||||
|
@ -1,19 +1,16 @@
|
||||
package com.simplemobiletools.contacts.extensions
|
||||
|
||||
import android.annotation.TargetApi
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.database.Cursor
|
||||
import android.net.Uri
|
||||
import android.os.Build
|
||||
import android.provider.ContactsContract
|
||||
import android.support.v4.content.FileProvider
|
||||
import androidx.core.content.FileProvider
|
||||
import com.simplemobiletools.commons.extensions.getIntValue
|
||||
import com.simplemobiletools.commons.extensions.hasPermission
|
||||
import com.simplemobiletools.commons.extensions.toast
|
||||
import com.simplemobiletools.commons.helpers.PERMISSION_READ_CONTACTS
|
||||
import com.simplemobiletools.commons.helpers.PERMISSION_WRITE_CONTACTS
|
||||
import com.simplemobiletools.commons.helpers.isLollipopPlus
|
||||
import com.simplemobiletools.contacts.BuildConfig
|
||||
import com.simplemobiletools.contacts.R
|
||||
import com.simplemobiletools.contacts.activities.EditContactActivity
|
||||
@ -88,10 +85,9 @@ fun Context.openWebsiteIntent(url: String) {
|
||||
}
|
||||
}
|
||||
|
||||
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
|
||||
fun Context.getLookupUriRawId(dataUri: Uri): Int {
|
||||
val lookupKey = getLookupKeyFromUri(dataUri)
|
||||
if (lookupKey != null && isLollipopPlus()) {
|
||||
if (lookupKey != null) {
|
||||
val uri = lookupContactUri(lookupKey, this)
|
||||
if (uri != null) {
|
||||
return getContactUriRawId(uri)
|
||||
@ -100,7 +96,6 @@ fun Context.getLookupUriRawId(dataUri: Uri): Int {
|
||||
return -1
|
||||
}
|
||||
|
||||
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
|
||||
fun Context.getContactUriRawId(uri: Uri): Int {
|
||||
val projection = arrayOf(ContactsContract.Contacts.NAME_RAW_CONTACT_ID)
|
||||
var cursor: Cursor? = null
|
||||
|
@ -1,13 +0,0 @@
|
||||
package com.simplemobiletools.contacts.extensions
|
||||
|
||||
import android.text.Editable
|
||||
import android.text.TextWatcher
|
||||
import android.widget.EditText
|
||||
|
||||
fun EditText.afterTextChanged(callback: (String) -> Unit) = addTextChangedListener(object : TextWatcher {
|
||||
override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {}
|
||||
|
||||
override fun onTextChanged(s: CharSequence, start: Int, before: Int, count: Int) {}
|
||||
|
||||
override fun afterTextChanged(text: Editable) = callback(text.toString())
|
||||
})
|
@ -2,9 +2,9 @@ package com.simplemobiletools.contacts.fragments
|
||||
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.support.design.widget.CoordinatorLayout
|
||||
import android.util.AttributeSet
|
||||
import android.view.ViewGroup
|
||||
import androidx.coordinatorlayout.widget.CoordinatorLayout
|
||||
import com.simplemobiletools.commons.adapters.MyRecyclerViewAdapter
|
||||
import com.simplemobiletools.commons.extensions.*
|
||||
import com.simplemobiletools.commons.helpers.SORT_BY_FIRST_NAME
|
||||
@ -88,7 +88,7 @@ abstract class MyViewPagerFragment(context: Context, attributeSet: AttributeSet)
|
||||
|
||||
fun startNameWithSurnameChanged(startNameWithSurname: Boolean) {
|
||||
if (this !is GroupsFragment && this !is RecentsFragment) {
|
||||
(fragment_list.adapter as ContactsAdapter).apply {
|
||||
(fragment_list.adapter as? ContactsAdapter)?.apply {
|
||||
config.sorting = if (startNameWithSurname) SORT_BY_SURNAME else SORT_BY_FIRST_NAME
|
||||
this@MyViewPagerFragment.activity!!.refreshContacts(CONTACTS_TAB_MASK or FAVORITES_TAB_MASK)
|
||||
}
|
||||
@ -104,7 +104,7 @@ abstract class MyViewPagerFragment(context: Context, attributeSet: AttributeSet)
|
||||
}
|
||||
|
||||
if (config.lastUsedContactSource.isEmpty()) {
|
||||
val grouped = contacts.groupBy { it.source }.maxWith(compareBy { it.value.size })
|
||||
val grouped = contacts.asSequence().groupBy { it.source }.maxWith(compareBy { it.value.size })
|
||||
config.lastUsedContactSource = grouped?.key ?: ""
|
||||
}
|
||||
|
||||
@ -154,7 +154,7 @@ abstract class MyViewPagerFragment(context: Context, attributeSet: AttributeSet)
|
||||
}
|
||||
}
|
||||
|
||||
storedGroups = storedGroups.sortedWith(compareBy { it.title }).toMutableList() as ArrayList<Group>
|
||||
storedGroups = storedGroups.asSequence().sortedWith(compareBy { it.title.normalizeString() }).toMutableList() as ArrayList<Group>
|
||||
|
||||
fragment_placeholder_2.beVisibleIf(storedGroups.isEmpty())
|
||||
fragment_placeholder.beVisibleIf(storedGroups.isEmpty())
|
||||
@ -239,7 +239,7 @@ abstract class MyViewPagerFragment(context: Context, attributeSet: AttributeSet)
|
||||
val shouldNormalize = text.normalizeString() == text
|
||||
(fragment_list.adapter as? ContactsAdapter)?.apply {
|
||||
val filtered = contactsIgnoringSearch.filter {
|
||||
getProperText(it.getFullName(), shouldNormalize).contains(text, true) ||
|
||||
getProperText(it.getNameToDisplay(), shouldNormalize).contains(text, true) ||
|
||||
getProperText(it.nickname, shouldNormalize).contains(text, true) ||
|
||||
it.doesContainPhoneNumber(text) ||
|
||||
it.emails.any { it.value.contains(text, true) } ||
|
||||
@ -254,7 +254,7 @@ abstract class MyViewPagerFragment(context: Context, attributeSet: AttributeSet)
|
||||
Contact.sorting = config.sorting
|
||||
Contact.startWithSurname = config.startNameWithSurname
|
||||
filtered.sort()
|
||||
filtered.sortBy { !getProperText(it.getFullName(), shouldNormalize).startsWith(text, true) }
|
||||
filtered.sortBy { !getProperText(it.getNameToDisplay(), shouldNormalize).startsWith(text, true) }
|
||||
|
||||
if (filtered.isEmpty() && this@MyViewPagerFragment is FavoritesFragment) {
|
||||
fragment_placeholder.text = activity.getString(R.string.no_items_found)
|
||||
|
@ -5,7 +5,6 @@ import android.content.Intent
|
||||
import android.util.AttributeSet
|
||||
import com.simplemobiletools.commons.extensions.beVisibleIf
|
||||
import com.simplemobiletools.commons.extensions.hasPermission
|
||||
import com.simplemobiletools.commons.extensions.isActivityDestroyed
|
||||
import com.simplemobiletools.commons.helpers.PERMISSION_READ_CALL_LOG
|
||||
import com.simplemobiletools.commons.helpers.PERMISSION_WRITE_CALL_LOG
|
||||
import com.simplemobiletools.contacts.activities.EditContactActivity
|
||||
@ -33,7 +32,7 @@ class RecentsFragment(context: Context, attributeSet: AttributeSet) : MyViewPage
|
||||
}
|
||||
|
||||
fun updateRecentCalls(recentCalls: ArrayList<RecentCall>) {
|
||||
if (activity == null || activity!!.isActivityDestroyed()) {
|
||||
if (activity == null || activity!!.isDestroyed) {
|
||||
return
|
||||
}
|
||||
|
||||
|
@ -20,6 +20,10 @@ class Config(context: Context) : BaseConfig(context) {
|
||||
get() = prefs.getBoolean(SHOW_PHONE_NUMBERS, false)
|
||||
set(showPhoneNumbers) = prefs.edit().putBoolean(SHOW_PHONE_NUMBERS, showPhoneNumbers).apply()
|
||||
|
||||
var showOnlyContactsWithNumbers: Boolean
|
||||
get() = prefs.getBoolean(SHOW_ONLY_CONTACTS_WITH_NUMBERS, false)
|
||||
set(showOnlyContactsWithNumbers) = prefs.edit().putBoolean(SHOW_ONLY_CONTACTS_WITH_NUMBERS, showOnlyContactsWithNumbers).apply()
|
||||
|
||||
var startNameWithSurname: Boolean
|
||||
get() = prefs.getBoolean(START_NAME_WITH_SURNAME, false)
|
||||
set(startNameWithSurname) = prefs.edit().putBoolean(START_NAME_WITH_SURNAME, startNameWithSurname).apply()
|
||||
|
@ -5,6 +5,7 @@ import android.provider.ContactsContract.CommonDataKinds
|
||||
// shared prefs
|
||||
const val SHOW_CONTACT_THUMBNAILS = "show_contact_thumbnails"
|
||||
const val SHOW_PHONE_NUMBERS = "show_phone_numbers"
|
||||
const val SHOW_ONLY_CONTACTS_WITH_NUMBERS = "show_only_contacts_with_numbers"
|
||||
const val IGNORED_CONTACT_SOURCES = "ignored_contact_sources"
|
||||
const val START_NAME_WITH_SURNAME = "start_name_with_surname"
|
||||
const val LAST_USED_CONTACT_SOURCE = "last_used_contact_source"
|
||||
@ -113,3 +114,8 @@ val localAccountTypes = arrayListOf("vnd.sec.contact.phone",
|
||||
"com.android.huawei.phone",
|
||||
"Local Phone Account"
|
||||
)
|
||||
|
||||
// apps with special handling
|
||||
const val TELEGRAM_PACKAGE = "org.telegram.messenger"
|
||||
const val SIGNAL_PACKAGE = "org.thoughtcrime.securesms"
|
||||
const val WHATSAPP_PACKAGE = "com.whatsapp"
|
||||
|
@ -43,15 +43,26 @@ class ContactsHelper(val activity: Activity) {
|
||||
}
|
||||
|
||||
val contactsSize = contacts.size()
|
||||
val showOnlyContactsWithNumbers = activity.config.showOnlyContactsWithNumbers
|
||||
var tempContacts = ArrayList<Contact>(contactsSize)
|
||||
val resultContacts = ArrayList<Contact>(contactsSize)
|
||||
(0 until contactsSize).mapTo(tempContacts) { contacts.valueAt(it) }
|
||||
|
||||
(0 until contactsSize).filter {
|
||||
if (showOnlyContactsWithNumbers) {
|
||||
contacts.valueAt(it).phoneNumbers.isNotEmpty()
|
||||
} else {
|
||||
true
|
||||
}
|
||||
}.mapTo(tempContacts) {
|
||||
contacts.valueAt(it)
|
||||
}
|
||||
|
||||
if (activity.config.filterDuplicates) {
|
||||
tempContacts = tempContacts.distinctBy {
|
||||
it.getHashToCompare()
|
||||
} as ArrayList<Contact>
|
||||
|
||||
tempContacts.groupBy { "${it.getFullName().toLowerCase()}${it.emails}" }.values.forEach {
|
||||
tempContacts.groupBy { "${it.getNameToDisplay().toLowerCase()}${it.emails}" }.values.forEach {
|
||||
if (it.size == 1) {
|
||||
resultContacts.add(it.first())
|
||||
} else {
|
||||
@ -819,6 +830,9 @@ class ContactsHelper(val activity: Activity) {
|
||||
accounts.forEach {
|
||||
if (ContentResolver.getIsSyncable(it, ContactsContract.AUTHORITY) == 1) {
|
||||
val contactSource = ContactSource(it.name, it.type)
|
||||
if (it.type == TELEGRAM_PACKAGE) {
|
||||
contactSource.name += " (${activity.getString(R.string.telegram)})"
|
||||
}
|
||||
sources.add(contactSource)
|
||||
}
|
||||
}
|
||||
@ -1207,6 +1221,7 @@ class ContactsHelper(val activity: Activity) {
|
||||
ContentProviderOperation.newInsert(ContactsContract.RawContacts.CONTENT_URI).apply {
|
||||
withValue(ContactsContract.RawContacts.ACCOUNT_NAME, contact.source)
|
||||
withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, getContactSourceType(contact.source))
|
||||
withValue(ContactsContract.RawContacts.DIRTY, false)
|
||||
operations.add(build())
|
||||
}
|
||||
|
||||
@ -1298,7 +1313,7 @@ class ContactsHelper(val activity: Activity) {
|
||||
}
|
||||
|
||||
// organization
|
||||
if (!contact.organization.isEmpty()) {
|
||||
if (contact.organization.isNotEmpty()) {
|
||||
ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI).apply {
|
||||
withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
|
||||
withValue(ContactsContract.Data.MIMETYPE, CommonDataKinds.Organization.CONTENT_ITEM_TYPE)
|
||||
@ -1533,6 +1548,7 @@ class ContactsHelper(val activity: Activity) {
|
||||
val todayDate = SimpleDateFormat("dd MMM yyyy", Locale.getDefault()).format(currentDate)
|
||||
val yesterdayDate = SimpleDateFormat("dd MMM yyyy", Locale.getDefault()).format(Date(System.currentTimeMillis() - DAY_SECONDS * 1000))
|
||||
val yesterday = activity.getString(R.string.yesterday)
|
||||
val timeFormat = if (activity.config.use24HourFormat) "HH:mm" else "h:mm a"
|
||||
var prevNumber = ""
|
||||
|
||||
var cursor: Cursor? = null
|
||||
@ -1548,7 +1564,7 @@ class ContactsHelper(val activity: Activity) {
|
||||
continue
|
||||
}
|
||||
|
||||
var formattedDate = SimpleDateFormat("dd MMM yyyy, HH:mm", Locale.getDefault()).format(Date(date))
|
||||
var formattedDate = SimpleDateFormat("dd MMM yyyy, $timeFormat", Locale.getDefault()).format(Date(date))
|
||||
val datePart = formattedDate.substring(0, 11)
|
||||
when {
|
||||
datePart == todayDate -> formattedDate = formattedDate.substring(12)
|
||||
|
@ -122,7 +122,7 @@ class VcfExporter {
|
||||
card.addNote(contact.notes)
|
||||
}
|
||||
|
||||
if (!contact.organization.isEmpty()) {
|
||||
if (contact.organization.isNotEmpty()) {
|
||||
val organization = Organization()
|
||||
organization.values.add(contact.organization.company)
|
||||
card.organization = organization
|
||||
|
@ -139,7 +139,7 @@ class VcfImporter(val activity: SimpleActivity) {
|
||||
targetContactSource, starred, contactId, thumbnailUri, photo, notes, groups, organization, websites, cleanPhoneNumbers, IMs)
|
||||
|
||||
// if there is no N and ORG fields at the given contact, only FN, treat it as an organization
|
||||
if (contact.getFullName().isEmpty() && contact.organization.isEmpty() && ezContact.formattedName.value.isNotEmpty()) {
|
||||
if (contact.getNameToDisplay().isEmpty() && contact.organization.isEmpty() && ezContact.formattedName.value.isNotEmpty()) {
|
||||
contact.organization.company = ezContact.formattedName.value
|
||||
}
|
||||
|
||||
|
@ -37,12 +37,22 @@ data class Contact(val id: Int, var prefix: String, var firstName: String, var m
|
||||
}
|
||||
}
|
||||
|
||||
if (firstString.isEmpty() && firstName.isEmpty() && middleName.isEmpty() && surname.isEmpty() && organization.company.isNotEmpty()) {
|
||||
firstString = organization.company.normalizeString()
|
||||
if (firstString.isEmpty() && firstName.isEmpty() && middleName.isEmpty() && surname.isEmpty()) {
|
||||
val fullCompany = getFullCompany()
|
||||
if (fullCompany.isNotEmpty()) {
|
||||
firstString = fullCompany.normalizeString()
|
||||
} else if (emails.isNotEmpty()) {
|
||||
firstString = emails.first().value
|
||||
}
|
||||
}
|
||||
|
||||
if (secondString.isEmpty() && other.firstName.isEmpty() && other.middleName.isEmpty() && other.surname.isEmpty() && other.organization.company.isNotEmpty()) {
|
||||
secondString = other.organization.company.normalizeString()
|
||||
if (secondString.isEmpty() && other.firstName.isEmpty() && other.middleName.isEmpty() && other.surname.isEmpty()) {
|
||||
val otherFullCompany = other.getFullCompany()
|
||||
if (otherFullCompany.isNotEmpty()) {
|
||||
secondString = otherFullCompany.normalizeString()
|
||||
} else if (other.emails.isNotEmpty()) {
|
||||
secondString = other.emails.first().value
|
||||
}
|
||||
}
|
||||
|
||||
var result = if (firstString.firstOrNull()?.isLetter() == true && secondString.firstOrNull()?.isLetter() == false) {
|
||||
@ -56,7 +66,7 @@ data class Contact(val id: Int, var prefix: String, var firstName: String, var m
|
||||
-1
|
||||
} else {
|
||||
if (firstString.toLowerCase() == secondString.toLowerCase()) {
|
||||
getFullName().compareTo(other.getFullName(), true)
|
||||
getNameToDisplay().compareTo(other.getNameToDisplay(), true)
|
||||
} else {
|
||||
firstString.compareTo(secondString, true)
|
||||
}
|
||||
@ -76,7 +86,7 @@ data class Contact(val id: Int, var prefix: String, var firstName: String, var m
|
||||
else -> surname
|
||||
}
|
||||
|
||||
fun getFullName(): String {
|
||||
fun getNameToDisplay(): String {
|
||||
var firstPart = if (startWithSurname) surname else firstName
|
||||
if (middleName.isNotEmpty()) {
|
||||
firstPart += " $middleName"
|
||||
@ -86,9 +96,11 @@ data class Contact(val id: Int, var prefix: String, var firstName: String, var m
|
||||
val suffixComma = if (suffix.isEmpty()) "" else ", $suffix"
|
||||
val fullName = "$prefix $firstPart $lastPart$suffixComma".trim()
|
||||
return if (fullName.isEmpty()) {
|
||||
var fullOrganization = if (organization.jobPosition.isEmpty()) "" else "${organization.jobPosition}, "
|
||||
fullOrganization += organization.company
|
||||
fullOrganization.trim().trimEnd(',')
|
||||
if (organization.isNotEmpty()) {
|
||||
getFullCompany()
|
||||
} else {
|
||||
emails.firstOrNull()?.value?.trim() ?: ""
|
||||
}
|
||||
} else {
|
||||
fullName
|
||||
}
|
||||
@ -98,7 +110,7 @@ data class Contact(val id: Int, var prefix: String, var firstName: String, var m
|
||||
val newEmails = ArrayList<Email>()
|
||||
emails.mapTo(newEmails) { Email(it.value, 0, "") }
|
||||
|
||||
return copy(id = 0, prefix = "", firstName = getFullName().toLowerCase(), middleName = "", surname = "", suffix = "", nickname = "", photoUri = "",
|
||||
return copy(id = 0, prefix = "", firstName = getNameToDisplay().toLowerCase(), middleName = "", surname = "", suffix = "", nickname = "", photoUri = "",
|
||||
phoneNumbers = ArrayList(), events = ArrayList(), addresses = ArrayList(), emails = newEmails, source = "", starred = 0,
|
||||
contactId = 0, thumbnailUri = "", notes = "", groups = ArrayList(), websites = ArrayList(), organization = Organization("", ""),
|
||||
IMs = ArrayList()).toString()
|
||||
@ -106,6 +118,14 @@ data class Contact(val id: Int, var prefix: String, var firstName: String, var m
|
||||
|
||||
fun getHashToCompare() = getStringToCompare().hashCode()
|
||||
|
||||
fun getFullCompany(): String {
|
||||
var fullOrganization = if (organization.company.isEmpty()) "" else "${organization.company}, "
|
||||
fullOrganization += organization.jobPosition
|
||||
return fullOrganization.trim().trimEnd(',')
|
||||
}
|
||||
|
||||
fun isABusinessContact() = prefix.isEmpty() && firstName.isEmpty() && middleName.isEmpty() && surname.isEmpty() && suffix.isEmpty() && organization.isNotEmpty()
|
||||
|
||||
// do a more advanced phone number check here, compare numbers and and search query with dashes, spaces and everything but numbers removed
|
||||
fun doesContainPhoneNumber(text: String): Boolean {
|
||||
if (text.isNotEmpty()) {
|
||||
|
@ -2,4 +2,6 @@ package com.simplemobiletools.contacts.models
|
||||
|
||||
data class Organization(var company: String, var jobPosition: String) {
|
||||
fun isEmpty() = company.isEmpty() && jobPosition.isEmpty()
|
||||
|
||||
fun isNotEmpty() = !isEmpty()
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<android.support.constraint.ConstraintLayout
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:id="@+id/dialpad_holder"
|
||||
@ -56,10 +56,10 @@
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/dialpad_clear_char"
|
||||
style="@style/MyBorderlessBackgroundStyle"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="0dp"
|
||||
android:layout_marginRight="@dimen/activity_margin"
|
||||
android:background="?attr/selectableItemBackgroundBorderless"
|
||||
android:paddingLeft="@dimen/activity_margin"
|
||||
android:paddingRight="@dimen/activity_margin"
|
||||
android:src="@drawable/ic_clear_char"
|
||||
@ -186,9 +186,9 @@
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/dialpad_0_holder"
|
||||
style="@style/MyBorderlessBackgroundStyle"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="?attr/selectableItemBackgroundBorderless"
|
||||
app:layout_constraintBottom_toTopOf="@+id/dialpad_call_button"
|
||||
app:layout_constraintEnd_toStartOf="@+id/dialpad_hashtag"
|
||||
app:layout_constraintHorizontal_bias="0.5"
|
||||
@ -243,4 +243,4 @@
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"/>
|
||||
|
||||
</android.support.constraint.ConstraintLayout>
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
@ -10,10 +10,10 @@
|
||||
android:id="@+id/contact_holder"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingBottom="@dimen/medium_margin"
|
||||
android:paddingLeft="@dimen/normal_margin"
|
||||
android:paddingTop="@dimen/activity_margin"
|
||||
android:paddingRight="@dimen/normal_margin"
|
||||
android:paddingTop="@dimen/activity_margin">
|
||||
android:paddingBottom="@dimen/medium_margin">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/contact_photo"
|
||||
@ -23,14 +23,14 @@
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/contact_toggle_favorite"
|
||||
style="@style/MyBorderlessBackgroundStyle"
|
||||
android:layout_width="@dimen/contact_actions_size"
|
||||
android:layout_height="@dimen/contact_actions_size"
|
||||
android:layout_alignBottom="@id/contact_photo"
|
||||
android:layout_alignTop="@+id/contact_photo"
|
||||
android:layout_alignBottom="@id/contact_photo"
|
||||
android:layout_marginLeft="@dimen/medium_margin"
|
||||
android:layout_toRightOf="@+id/contact_photo"
|
||||
android:adjustViewBounds="true"
|
||||
android:background="?attr/selectableItemBackgroundBorderless"
|
||||
android:padding="@dimen/tiny_margin"
|
||||
android:src="@drawable/ic_star_off_big"/>
|
||||
|
||||
@ -38,16 +38,16 @@
|
||||
android:id="@+id/contact_actions_holder"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignBottom="@id/contact_photo"
|
||||
android:layout_alignTop="@+id/contact_photo"
|
||||
android:layout_alignBottom="@id/contact_photo"
|
||||
android:gravity="center_vertical|right">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/contact_send_email"
|
||||
style="@style/MyBorderlessBackgroundStyle"
|
||||
android:layout_width="@dimen/contact_actions_size"
|
||||
android:layout_height="@dimen/contact_actions_size"
|
||||
android:adjustViewBounds="true"
|
||||
android:background="?attr/selectableItemBackgroundBorderless"
|
||||
android:paddingLeft="@dimen/activity_margin"
|
||||
android:paddingRight="@dimen/activity_margin"
|
||||
android:scaleType="center"
|
||||
@ -55,11 +55,11 @@
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/contact_start_call"
|
||||
style="@style/MyBorderlessBackgroundStyle"
|
||||
android:layout_width="@dimen/contact_actions_size"
|
||||
android:layout_height="@dimen/contact_actions_size"
|
||||
android:layout_marginLeft="@dimen/normal_margin"
|
||||
android:adjustViewBounds="true"
|
||||
android:background="?attr/selectableItemBackgroundBorderless"
|
||||
android:paddingLeft="@dimen/activity_margin"
|
||||
android:paddingRight="@dimen/activity_margin"
|
||||
android:scaleType="center"
|
||||
@ -67,11 +67,11 @@
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/contact_send_sms"
|
||||
style="@style/MyBorderlessBackgroundStyle"
|
||||
android:layout_width="@dimen/contact_actions_size"
|
||||
android:layout_height="@dimen/contact_actions_size"
|
||||
android:layout_marginLeft="@dimen/normal_margin"
|
||||
android:adjustViewBounds="true"
|
||||
android:background="?attr/selectableItemBackgroundBorderless"
|
||||
android:paddingLeft="@dimen/activity_margin"
|
||||
android:paddingRight="@dimen/activity_margin"
|
||||
android:scaleType="center"
|
||||
@ -84,10 +84,10 @@
|
||||
android:layout_width="@dimen/contact_icons_size"
|
||||
android:layout_height="@dimen/contact_icons_size"
|
||||
android:layout_below="@+id/contact_photo"
|
||||
android:paddingBottom="@dimen/small_margin"
|
||||
android:paddingTop="@dimen/medium_margin"
|
||||
android:paddingEnd="@dimen/small_margin"
|
||||
android:paddingRight="@dimen/small_margin"
|
||||
android:paddingTop="@dimen/medium_margin"
|
||||
android:paddingBottom="@dimen/small_margin"
|
||||
android:src="@drawable/ic_person"/>
|
||||
|
||||
<com.simplemobiletools.commons.views.MyEditText
|
||||
@ -191,10 +191,10 @@
|
||||
android:layout_width="@dimen/contact_icons_size"
|
||||
android:layout_height="@dimen/contact_icons_size"
|
||||
android:layout_alignTop="@+id/contact_numbers_holder"
|
||||
android:paddingBottom="@dimen/small_margin"
|
||||
android:paddingTop="@dimen/medium_margin"
|
||||
android:paddingEnd="@dimen/small_margin"
|
||||
android:paddingRight="@dimen/small_margin"
|
||||
android:paddingTop="@dimen/medium_margin"
|
||||
android:paddingBottom="@dimen/small_margin"
|
||||
android:src="@drawable/ic_phone"/>
|
||||
|
||||
<LinearLayout
|
||||
@ -218,10 +218,10 @@
|
||||
android:layout_centerHorizontal="true"
|
||||
android:layout_marginBottom="@dimen/medium_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:paddingRight="@dimen/activity_margin"
|
||||
android:paddingBottom="@dimen/medium_margin"
|
||||
android:src="@drawable/ic_plus"/>
|
||||
|
||||
<ImageView
|
||||
@ -229,10 +229,10 @@
|
||||
android:layout_width="@dimen/contact_icons_size"
|
||||
android:layout_height="@dimen/contact_icons_size"
|
||||
android:layout_alignTop="@+id/contact_emails_holder"
|
||||
android:paddingBottom="@dimen/small_margin"
|
||||
android:paddingTop="@dimen/medium_margin"
|
||||
android:paddingEnd="@dimen/small_margin"
|
||||
android:paddingRight="@dimen/small_margin"
|
||||
android:paddingTop="@dimen/medium_margin"
|
||||
android:paddingBottom="@dimen/small_margin"
|
||||
android:src="@drawable/ic_email"/>
|
||||
|
||||
<LinearLayout
|
||||
@ -255,10 +255,10 @@
|
||||
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:paddingRight="@dimen/activity_margin"
|
||||
android:paddingBottom="@dimen/medium_margin"
|
||||
android:src="@drawable/ic_plus"/>
|
||||
|
||||
<ImageView
|
||||
@ -266,10 +266,10 @@
|
||||
android:layout_width="@dimen/contact_icons_size"
|
||||
android:layout_height="@dimen/contact_icons_size"
|
||||
android:layout_alignTop="@+id/contact_addresses_holder"
|
||||
android:paddingBottom="@dimen/small_margin"
|
||||
android:paddingTop="@dimen/medium_margin"
|
||||
android:paddingEnd="@dimen/small_margin"
|
||||
android:paddingRight="@dimen/small_margin"
|
||||
android:paddingTop="@dimen/medium_margin"
|
||||
android:paddingBottom="@dimen/small_margin"
|
||||
android:src="@drawable/ic_place"/>
|
||||
|
||||
<LinearLayout
|
||||
@ -293,10 +293,10 @@
|
||||
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:paddingRight="@dimen/activity_margin"
|
||||
android:paddingBottom="@dimen/medium_margin"
|
||||
android:src="@drawable/ic_plus"/>
|
||||
|
||||
<ImageView
|
||||
@ -304,10 +304,10 @@
|
||||
android:layout_width="@dimen/contact_icons_size"
|
||||
android:layout_height="@dimen/contact_icons_size"
|
||||
android:layout_alignTop="@+id/contact_ims_holder"
|
||||
android:paddingBottom="@dimen/small_margin"
|
||||
android:paddingTop="@dimen/medium_margin"
|
||||
android:paddingEnd="@dimen/small_margin"
|
||||
android:paddingRight="@dimen/small_margin"
|
||||
android:paddingTop="@dimen/medium_margin"
|
||||
android:paddingBottom="@dimen/small_margin"
|
||||
android:src="@drawable/ic_im"/>
|
||||
|
||||
<LinearLayout
|
||||
@ -331,10 +331,10 @@
|
||||
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:paddingRight="@dimen/activity_margin"
|
||||
android:paddingBottom="@dimen/medium_margin"
|
||||
android:src="@drawable/ic_plus"/>
|
||||
|
||||
<ImageView
|
||||
@ -342,10 +342,10 @@
|
||||
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:paddingTop="@dimen/medium_margin"
|
||||
android:paddingEnd="@dimen/small_margin"
|
||||
android:paddingRight="@dimen/small_margin"
|
||||
android:paddingTop="@dimen/medium_margin"
|
||||
android:paddingBottom="@dimen/small_margin"
|
||||
android:src="@drawable/ic_cake"/>
|
||||
|
||||
<LinearLayout
|
||||
@ -369,10 +369,10 @@
|
||||
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:paddingRight="@dimen/activity_margin"
|
||||
android:paddingBottom="@dimen/medium_margin"
|
||||
android:src="@drawable/ic_plus"/>
|
||||
|
||||
<ImageView
|
||||
@ -380,10 +380,10 @@
|
||||
android:layout_width="@dimen/contact_icons_size"
|
||||
android:layout_height="@dimen/contact_icons_size"
|
||||
android:layout_alignTop="@+id/contact_notes"
|
||||
android:paddingBottom="@dimen/small_margin"
|
||||
android:paddingTop="@dimen/medium_margin"
|
||||
android:paddingEnd="@dimen/small_margin"
|
||||
android:paddingRight="@dimen/small_margin"
|
||||
android:paddingTop="@dimen/medium_margin"
|
||||
android:paddingBottom="@dimen/small_margin"
|
||||
android:src="@drawable/ic_label"/>
|
||||
|
||||
<com.simplemobiletools.commons.views.MyEditText
|
||||
@ -404,10 +404,10 @@
|
||||
android:layout_width="@dimen/contact_icons_size"
|
||||
android:layout_height="@dimen/contact_icons_size"
|
||||
android:layout_alignTop="@+id/contact_organization_company"
|
||||
android:paddingBottom="@dimen/small_margin"
|
||||
android:paddingTop="@dimen/medium_margin"
|
||||
android:paddingEnd="@dimen/small_margin"
|
||||
android:paddingRight="@dimen/small_margin"
|
||||
android:paddingTop="@dimen/medium_margin"
|
||||
android:paddingBottom="@dimen/small_margin"
|
||||
android:src="@drawable/ic_business"/>
|
||||
|
||||
<com.simplemobiletools.commons.views.MyEditText
|
||||
@ -445,10 +445,10 @@
|
||||
android:layout_width="@dimen/contact_icons_size"
|
||||
android:layout_height="@dimen/contact_icons_size"
|
||||
android:layout_alignTop="@+id/contact_websites_holder"
|
||||
android:paddingBottom="@dimen/small_margin"
|
||||
android:paddingTop="@dimen/medium_margin"
|
||||
android:paddingEnd="@dimen/small_margin"
|
||||
android:paddingRight="@dimen/small_margin"
|
||||
android:paddingTop="@dimen/medium_margin"
|
||||
android:paddingBottom="@dimen/small_margin"
|
||||
android:src="@drawable/ic_link"/>
|
||||
|
||||
<LinearLayout
|
||||
@ -472,10 +472,10 @@
|
||||
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:paddingRight="@dimen/activity_margin"
|
||||
android:paddingBottom="@dimen/medium_margin"
|
||||
android:src="@drawable/ic_plus"/>
|
||||
|
||||
<ImageView
|
||||
@ -483,10 +483,10 @@
|
||||
android:layout_width="@dimen/contact_icons_size"
|
||||
android:layout_height="@dimen/contact_icons_size"
|
||||
android:layout_alignTop="@+id/contact_groups_holder"
|
||||
android:paddingBottom="@dimen/small_margin"
|
||||
android:paddingTop="@dimen/medium_margin"
|
||||
android:paddingEnd="@dimen/small_margin"
|
||||
android:paddingRight="@dimen/small_margin"
|
||||
android:paddingTop="@dimen/medium_margin"
|
||||
android:paddingBottom="@dimen/small_margin"
|
||||
android:src="@drawable/ic_group"/>
|
||||
|
||||
<LinearLayout
|
||||
@ -510,10 +510,10 @@
|
||||
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:paddingRight="@dimen/activity_margin"
|
||||
android:paddingBottom="@dimen/medium_margin"
|
||||
android:src="@drawable/ic_plus"/>
|
||||
|
||||
<ImageView
|
||||
@ -521,10 +521,10 @@
|
||||
android:layout_width="@dimen/contact_icons_size"
|
||||
android:layout_height="@dimen/contact_icons_size"
|
||||
android:layout_alignTop="@+id/contact_source"
|
||||
android:paddingBottom="@dimen/small_margin"
|
||||
android:paddingTop="@dimen/medium_margin"
|
||||
android:paddingEnd="@dimen/small_margin"
|
||||
android:paddingRight="@dimen/small_margin"
|
||||
android:paddingTop="@dimen/medium_margin"
|
||||
android:paddingBottom="@dimen/small_margin"
|
||||
android:src="@drawable/ic_account_box"/>
|
||||
|
||||
<com.simplemobiletools.commons.views.MyTextView
|
||||
@ -538,9 +538,9 @@
|
||||
android:background="?attr/selectableItemBackground"
|
||||
android:lines="1"
|
||||
android:maxLines="1"
|
||||
android:paddingBottom="@dimen/normal_margin"
|
||||
android:paddingLeft="@dimen/small_margin"
|
||||
android:paddingTop="@dimen/normal_margin"
|
||||
android:paddingBottom="@dimen/normal_margin"
|
||||
android:singleLine="true"
|
||||
android:textSize="@dimen/bigger_text_size"
|
||||
tools:text="hello@simplemobiletools.com"/>
|
||||
|
@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<android.support.design.widget.CoordinatorLayout
|
||||
<androidx.coordinatorlayout.widget.CoordinatorLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:id="@+id/group_contacts_coordinator"
|
||||
@ -26,13 +26,13 @@
|
||||
|
||||
<com.simplemobiletools.commons.views.MyTextView
|
||||
android:id="@+id/group_contacts_placeholder_2"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@+id/group_contacts_placeholder"
|
||||
android:layout_centerHorizontal="true"
|
||||
android:background="?attr/selectableItemBackground"
|
||||
android:gravity="center"
|
||||
android:paddingBottom="@dimen/medium_margin"
|
||||
android:paddingTop="@dimen/medium_margin"
|
||||
android:padding="@dimen/activity_margin"
|
||||
android:text="@string/add_contacts"
|
||||
android:textSize="@dimen/bigger_text_size"
|
||||
android:visibility="gone"/>
|
||||
@ -51,8 +51,8 @@
|
||||
android:layout_height="match_parent"
|
||||
android:layout_alignParentEnd="true"
|
||||
android:layout_alignParentRight="true"
|
||||
android:paddingLeft="@dimen/normal_margin"
|
||||
android:paddingStart="@dimen/normal_margin">
|
||||
android:paddingStart="@dimen/normal_margin"
|
||||
android:paddingLeft="@dimen/normal_margin">
|
||||
|
||||
<include layout="@layout/fastscroller_handle_vertical"/>
|
||||
|
||||
@ -67,4 +67,4 @@
|
||||
android:layout_margin="@dimen/activity_margin"
|
||||
android:src="@drawable/ic_plus"/>
|
||||
|
||||
</android.support.design.widget.CoordinatorLayout>
|
||||
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
||||
|
@ -6,7 +6,7 @@
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<android.support.design.widget.TabLayout
|
||||
<com.google.android.material.tabs.TabLayout
|
||||
android:id="@+id/main_tabs_holder"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="48dp"
|
||||
@ -16,7 +16,7 @@
|
||||
app:tabMinWidth="150dp"
|
||||
app:tabSelectedTextColor="@android:color/white"/>
|
||||
|
||||
<com.booking.rtlviewpager.RtlViewPager
|
||||
<com.simplemobiletools.commons.views.MyViewPager
|
||||
android:id="@+id/viewpager"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
|
57
app/src/main/res/layout/activity_select_contact.xml
Normal file
@ -0,0 +1,57 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<RelativeLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:id="@+id/select_contact_holder"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<com.simplemobiletools.commons.views.MyTextView
|
||||
android:id="@+id/select_contact_placeholder"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_centerHorizontal="true"
|
||||
android:layout_marginTop="@dimen/activity_margin"
|
||||
android:gravity="center"
|
||||
android:paddingLeft="@dimen/activity_margin"
|
||||
android:paddingRight="@dimen/activity_margin"
|
||||
android:text="@string/no_contacts_found"
|
||||
android:textSize="@dimen/bigger_text_size"
|
||||
android:visibility="gone"/>
|
||||
|
||||
<com.simplemobiletools.commons.views.MyTextView
|
||||
android:id="@+id/select_contact_placeholder_2"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@+id/select_contact_placeholder"
|
||||
android:layout_centerHorizontal="true"
|
||||
android:background="?attr/selectableItemBackground"
|
||||
android:gravity="center"
|
||||
android:padding="@dimen/activity_margin"
|
||||
android:text="@string/change_filter"
|
||||
android:textSize="@dimen/bigger_text_size"
|
||||
android:visibility="gone"/>
|
||||
|
||||
<com.simplemobiletools.commons.views.MyRecyclerView
|
||||
android:id="@+id/select_contact_list"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:clipToPadding="false"
|
||||
android:scrollbars="none"
|
||||
app:layoutManager="com.simplemobiletools.commons.views.MyLinearLayoutManager"/>
|
||||
|
||||
<com.simplemobiletools.commons.views.FastScroller
|
||||
android:id="@+id/select_contact_fastscroller"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_alignTop="@+id/select_contact_list"
|
||||
android:layout_alignBottom="@+id/select_contact_list"
|
||||
android:layout_alignParentEnd="true"
|
||||
android:layout_alignParentRight="true"
|
||||
android:paddingStart="@dimen/normal_margin"
|
||||
android:paddingLeft="@dimen/normal_margin">
|
||||
|
||||
<include layout="@layout/fastscroller_handle_vertical"/>
|
||||
|
||||
</com.simplemobiletools.commons.views.FastScroller>
|
||||
</RelativeLayout>
|
@ -18,18 +18,18 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/medium_margin"
|
||||
android:background="?attr/selectableItemBackground"
|
||||
android:paddingBottom="@dimen/activity_margin"
|
||||
android:paddingLeft="@dimen/normal_margin"
|
||||
android:paddingTop="@dimen/activity_margin"
|
||||
android:paddingRight="@dimen/normal_margin"
|
||||
android:paddingTop="@dimen/activity_margin">
|
||||
android:paddingBottom="@dimen/activity_margin">
|
||||
|
||||
<com.simplemobiletools.commons.views.MyTextView
|
||||
android:id="@+id/settings_purchase_thank_you"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_centerVertical="true"
|
||||
android:paddingLeft="@dimen/medium_margin"
|
||||
android:paddingStart="@dimen/medium_margin"
|
||||
android:paddingLeft="@dimen/medium_margin"
|
||||
android:text="@string/purchase_simple_thank_you"/>
|
||||
|
||||
</RelativeLayout>
|
||||
@ -40,18 +40,18 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/medium_margin"
|
||||
android:background="?attr/selectableItemBackground"
|
||||
android:paddingBottom="@dimen/activity_margin"
|
||||
android:paddingLeft="@dimen/normal_margin"
|
||||
android:paddingTop="@dimen/activity_margin"
|
||||
android:paddingRight="@dimen/normal_margin"
|
||||
android:paddingTop="@dimen/activity_margin">
|
||||
android:paddingBottom="@dimen/activity_margin">
|
||||
|
||||
<com.simplemobiletools.commons.views.MyTextView
|
||||
android:id="@+id/settings_customize_colors"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_centerVertical="true"
|
||||
android:paddingLeft="@dimen/medium_margin"
|
||||
android:paddingStart="@dimen/medium_margin"
|
||||
android:paddingLeft="@dimen/medium_margin"
|
||||
android:text="@string/customize_colors"/>
|
||||
|
||||
</RelativeLayout>
|
||||
@ -62,18 +62,18 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/medium_margin"
|
||||
android:background="?attr/selectableItemBackground"
|
||||
android:paddingBottom="@dimen/activity_margin"
|
||||
android:paddingLeft="@dimen/normal_margin"
|
||||
android:paddingTop="@dimen/activity_margin"
|
||||
android:paddingRight="@dimen/normal_margin"
|
||||
android:paddingTop="@dimen/activity_margin">
|
||||
android:paddingBottom="@dimen/activity_margin">
|
||||
|
||||
<com.simplemobiletools.commons.views.MyTextView
|
||||
android:id="@+id/settings_manage_contact_fields"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_centerVertical="true"
|
||||
android:paddingLeft="@dimen/medium_margin"
|
||||
android:paddingStart="@dimen/medium_margin"
|
||||
android:paddingLeft="@dimen/medium_margin"
|
||||
android:text="@string/manage_shown_contact_fields"/>
|
||||
|
||||
</RelativeLayout>
|
||||
@ -84,18 +84,18 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/medium_margin"
|
||||
android:background="?attr/selectableItemBackground"
|
||||
android:paddingBottom="@dimen/activity_margin"
|
||||
android:paddingLeft="@dimen/normal_margin"
|
||||
android:paddingTop="@dimen/activity_margin"
|
||||
android:paddingRight="@dimen/normal_margin"
|
||||
android:paddingTop="@dimen/activity_margin">
|
||||
android:paddingBottom="@dimen/activity_margin">
|
||||
|
||||
<com.simplemobiletools.commons.views.MyTextView
|
||||
android:id="@+id/settings_manage_tabs"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_centerVertical="true"
|
||||
android:paddingLeft="@dimen/medium_margin"
|
||||
android:paddingStart="@dimen/medium_margin"
|
||||
android:paddingLeft="@dimen/medium_margin"
|
||||
android:text="@string/manage_shown_tabs"/>
|
||||
|
||||
</RelativeLayout>
|
||||
@ -106,10 +106,10 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/medium_margin"
|
||||
android:background="?attr/selectableItemBackground"
|
||||
android:paddingBottom="@dimen/activity_margin"
|
||||
android:paddingLeft="@dimen/normal_margin"
|
||||
android:paddingTop="@dimen/activity_margin"
|
||||
android:paddingRight="@dimen/normal_margin"
|
||||
android:paddingTop="@dimen/activity_margin">
|
||||
android:paddingBottom="@dimen/activity_margin">
|
||||
|
||||
<com.simplemobiletools.commons.views.MySwitchCompat
|
||||
android:id="@+id/settings_use_english"
|
||||
@ -117,8 +117,8 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@null"
|
||||
android:clickable="false"
|
||||
android:paddingLeft="@dimen/medium_margin"
|
||||
android:paddingStart="@dimen/medium_margin"
|
||||
android:paddingLeft="@dimen/medium_margin"
|
||||
android:text="@string/use_english_language"
|
||||
app:switchPadding="@dimen/medium_margin"/>
|
||||
|
||||
@ -130,10 +130,10 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/medium_margin"
|
||||
android:background="?attr/selectableItemBackground"
|
||||
android:paddingBottom="@dimen/activity_margin"
|
||||
android:paddingLeft="@dimen/normal_margin"
|
||||
android:paddingTop="@dimen/activity_margin"
|
||||
android:paddingRight="@dimen/normal_margin"
|
||||
android:paddingTop="@dimen/activity_margin">
|
||||
android:paddingBottom="@dimen/activity_margin">
|
||||
|
||||
<com.simplemobiletools.commons.views.MySwitchCompat
|
||||
android:id="@+id/settings_avoid_whats_new"
|
||||
@ -141,8 +141,8 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@null"
|
||||
android:clickable="false"
|
||||
android:paddingLeft="@dimen/medium_margin"
|
||||
android:paddingStart="@dimen/medium_margin"
|
||||
android:paddingLeft="@dimen/medium_margin"
|
||||
android:text="@string/avoid_whats_new"
|
||||
app:switchPadding="@dimen/medium_margin"/>
|
||||
|
||||
@ -154,10 +154,10 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/medium_margin"
|
||||
android:background="?attr/selectableItemBackground"
|
||||
android:paddingBottom="@dimen/activity_margin"
|
||||
android:paddingLeft="@dimen/normal_margin"
|
||||
android:paddingTop="@dimen/activity_margin"
|
||||
android:paddingRight="@dimen/normal_margin"
|
||||
android:paddingTop="@dimen/activity_margin">
|
||||
android:paddingBottom="@dimen/activity_margin">
|
||||
|
||||
<com.simplemobiletools.commons.views.MySwitchCompat
|
||||
android:id="@+id/settings_show_info_bubble"
|
||||
@ -165,8 +165,8 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@null"
|
||||
android:clickable="false"
|
||||
android:paddingLeft="@dimen/medium_margin"
|
||||
android:paddingStart="@dimen/medium_margin"
|
||||
android:paddingLeft="@dimen/medium_margin"
|
||||
android:text="@string/show_info_bubble"
|
||||
app:switchPadding="@dimen/medium_margin"/>
|
||||
|
||||
@ -178,10 +178,10 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/medium_margin"
|
||||
android:background="?attr/selectableItemBackground"
|
||||
android:paddingBottom="@dimen/activity_margin"
|
||||
android:paddingLeft="@dimen/normal_margin"
|
||||
android:paddingTop="@dimen/activity_margin"
|
||||
android:paddingRight="@dimen/normal_margin"
|
||||
android:paddingTop="@dimen/activity_margin">
|
||||
android:paddingBottom="@dimen/activity_margin">
|
||||
|
||||
<com.simplemobiletools.commons.views.MySwitchCompat
|
||||
android:id="@+id/settings_show_contact_thumbnails"
|
||||
@ -189,8 +189,8 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@null"
|
||||
android:clickable="false"
|
||||
android:paddingLeft="@dimen/medium_margin"
|
||||
android:paddingStart="@dimen/medium_margin"
|
||||
android:paddingLeft="@dimen/medium_margin"
|
||||
android:text="@string/show_contact_thumbnails"
|
||||
app:switchPadding="@dimen/medium_margin"/>
|
||||
|
||||
@ -202,10 +202,10 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/medium_margin"
|
||||
android:background="?attr/selectableItemBackground"
|
||||
android:paddingBottom="@dimen/activity_margin"
|
||||
android:paddingLeft="@dimen/normal_margin"
|
||||
android:paddingTop="@dimen/activity_margin"
|
||||
android:paddingRight="@dimen/normal_margin"
|
||||
android:paddingTop="@dimen/activity_margin">
|
||||
android:paddingBottom="@dimen/activity_margin">
|
||||
|
||||
<com.simplemobiletools.commons.views.MySwitchCompat
|
||||
android:id="@+id/settings_show_phone_numbers"
|
||||
@ -213,23 +213,47 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@null"
|
||||
android:clickable="false"
|
||||
android:paddingLeft="@dimen/medium_margin"
|
||||
android:paddingStart="@dimen/medium_margin"
|
||||
android:paddingLeft="@dimen/medium_margin"
|
||||
android:text="@string/show_phone_numbers"
|
||||
app:switchPadding="@dimen/medium_margin"/>
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/settings_show_only_contacts_with_numbers_holder"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/medium_margin"
|
||||
android:background="?attr/selectableItemBackground"
|
||||
android:paddingLeft="@dimen/normal_margin"
|
||||
android:paddingTop="@dimen/activity_margin"
|
||||
android:paddingRight="@dimen/normal_margin"
|
||||
android:paddingBottom="@dimen/activity_margin">
|
||||
|
||||
<com.simplemobiletools.commons.views.MySwitchCompat
|
||||
android:id="@+id/settings_show_only_contacts_with_numbers"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@null"
|
||||
android:clickable="false"
|
||||
android:paddingStart="@dimen/medium_margin"
|
||||
android:paddingLeft="@dimen/medium_margin"
|
||||
android:text="@string/show_only_contacts_with_numbers"
|
||||
app:switchPadding="@dimen/medium_margin"/>
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/settings_start_with_surname_holder"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/medium_margin"
|
||||
android:background="?attr/selectableItemBackground"
|
||||
android:paddingBottom="@dimen/activity_margin"
|
||||
android:paddingLeft="@dimen/normal_margin"
|
||||
android:paddingTop="@dimen/activity_margin"
|
||||
android:paddingRight="@dimen/normal_margin"
|
||||
android:paddingTop="@dimen/activity_margin">
|
||||
android:paddingBottom="@dimen/activity_margin">
|
||||
|
||||
<com.simplemobiletools.commons.views.MySwitchCompat
|
||||
android:id="@+id/settings_start_with_surname"
|
||||
@ -237,23 +261,47 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@null"
|
||||
android:clickable="false"
|
||||
android:paddingLeft="@dimen/medium_margin"
|
||||
android:paddingStart="@dimen/medium_margin"
|
||||
android:paddingLeft="@dimen/medium_margin"
|
||||
android:text="@string/start_name_with_surname"
|
||||
app:switchPadding="@dimen/medium_margin"/>
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/settings_use_24_hour_time_format_holder"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/medium_margin"
|
||||
android:background="?attr/selectableItemBackground"
|
||||
android:paddingLeft="@dimen/normal_margin"
|
||||
android:paddingTop="@dimen/activity_margin"
|
||||
android:paddingRight="@dimen/normal_margin"
|
||||
android:paddingBottom="@dimen/activity_margin">
|
||||
|
||||
<com.simplemobiletools.commons.views.MySwitchCompat
|
||||
android:id="@+id/settings_use_24_hour_time_format"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@null"
|
||||
android:clickable="false"
|
||||
android:paddingStart="@dimen/medium_margin"
|
||||
android:paddingLeft="@dimen/medium_margin"
|
||||
android:text="@string/use_24_hour_time_format"
|
||||
app:switchPadding="@dimen/medium_margin"/>
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/settings_filter_duplicates_holder"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/medium_margin"
|
||||
android:background="?attr/selectableItemBackground"
|
||||
android:paddingBottom="@dimen/activity_margin"
|
||||
android:paddingLeft="@dimen/normal_margin"
|
||||
android:paddingTop="@dimen/activity_margin"
|
||||
android:paddingRight="@dimen/normal_margin"
|
||||
android:paddingTop="@dimen/activity_margin">
|
||||
android:paddingBottom="@dimen/activity_margin">
|
||||
|
||||
<com.simplemobiletools.commons.views.MySwitchCompat
|
||||
android:id="@+id/settings_filter_duplicates"
|
||||
@ -261,8 +309,8 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@null"
|
||||
android:clickable="false"
|
||||
android:paddingLeft="@dimen/medium_margin"
|
||||
android:paddingStart="@dimen/medium_margin"
|
||||
android:paddingLeft="@dimen/medium_margin"
|
||||
android:text="@string/filter_duplicates"
|
||||
app:switchPadding="@dimen/medium_margin"/>
|
||||
|
||||
@ -274,10 +322,10 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/medium_margin"
|
||||
android:background="?attr/selectableItemBackground"
|
||||
android:paddingBottom="@dimen/activity_margin"
|
||||
android:paddingLeft="@dimen/normal_margin"
|
||||
android:paddingTop="@dimen/activity_margin"
|
||||
android:paddingRight="@dimen/normal_margin"
|
||||
android:paddingTop="@dimen/activity_margin">
|
||||
android:paddingBottom="@dimen/activity_margin">
|
||||
|
||||
<com.simplemobiletools.commons.views.MySwitchCompat
|
||||
android:id="@+id/settings_show_call_confirmation"
|
||||
@ -285,8 +333,8 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@null"
|
||||
android:clickable="false"
|
||||
android:paddingLeft="@dimen/medium_margin"
|
||||
android:paddingStart="@dimen/medium_margin"
|
||||
android:paddingLeft="@dimen/medium_margin"
|
||||
android:text="@string/show_call_confirmation_dialog"
|
||||
app:switchPadding="@dimen/medium_margin"/>
|
||||
|
||||
@ -298,18 +346,18 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/medium_margin"
|
||||
android:background="?attr/selectableItemBackground"
|
||||
android:paddingBottom="@dimen/bigger_margin"
|
||||
android:paddingLeft="@dimen/normal_margin"
|
||||
android:paddingTop="@dimen/bigger_margin"
|
||||
android:paddingRight="@dimen/normal_margin"
|
||||
android:paddingTop="@dimen/bigger_margin">
|
||||
android:paddingBottom="@dimen/bigger_margin">
|
||||
|
||||
<com.simplemobiletools.commons.views.MyTextView
|
||||
android:id="@+id/settings_on_contact_click_label"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_centerVertical="true"
|
||||
android:layout_toLeftOf="@+id/settings_on_contact_click"
|
||||
android:layout_toStartOf="@+id/settings_on_contact_click"
|
||||
android:layout_toLeftOf="@+id/settings_on_contact_click"
|
||||
android:paddingLeft="@dimen/medium_margin"
|
||||
android:paddingRight="@dimen/medium_margin"
|
||||
android:text="@string/on_contact_click"/>
|
||||
|
@ -10,10 +10,10 @@
|
||||
android:id="@+id/contact_holder"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingBottom="@dimen/medium_margin"
|
||||
android:paddingLeft="@dimen/normal_margin"
|
||||
android:paddingTop="@dimen/activity_margin"
|
||||
android:paddingRight="@dimen/normal_margin"
|
||||
android:paddingTop="@dimen/activity_margin">
|
||||
android:paddingBottom="@dimen/medium_margin">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/contact_photo"
|
||||
@ -23,14 +23,14 @@
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/contact_toggle_favorite"
|
||||
style="@style/MyBorderlessBackgroundStyle"
|
||||
android:layout_width="@dimen/contact_actions_size"
|
||||
android:layout_height="@dimen/contact_actions_size"
|
||||
android:layout_alignBottom="@id/contact_photo"
|
||||
android:layout_alignTop="@+id/contact_photo"
|
||||
android:layout_alignBottom="@id/contact_photo"
|
||||
android:layout_marginLeft="@dimen/medium_margin"
|
||||
android:layout_toRightOf="@+id/contact_photo"
|
||||
android:adjustViewBounds="true"
|
||||
android:background="?attr/selectableItemBackgroundBorderless"
|
||||
android:padding="@dimen/tiny_margin"
|
||||
android:src="@drawable/ic_star_off_big"
|
||||
android:visibility="gone"/>
|
||||
@ -39,16 +39,16 @@
|
||||
android:id="@+id/contact_actions_holder"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignBottom="@id/contact_photo"
|
||||
android:layout_alignTop="@+id/contact_photo"
|
||||
android:layout_alignBottom="@id/contact_photo"
|
||||
android:gravity="center_vertical|right">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/contact_send_email"
|
||||
style="@style/MyBorderlessBackgroundStyle"
|
||||
android:layout_width="@dimen/contact_actions_size"
|
||||
android:layout_height="@dimen/contact_actions_size"
|
||||
android:adjustViewBounds="true"
|
||||
android:background="?attr/selectableItemBackgroundBorderless"
|
||||
android:paddingLeft="@dimen/activity_margin"
|
||||
android:paddingRight="@dimen/activity_margin"
|
||||
android:scaleType="center"
|
||||
@ -56,11 +56,11 @@
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/contact_start_call"
|
||||
style="@style/MyBorderlessBackgroundStyle"
|
||||
android:layout_width="@dimen/contact_actions_size"
|
||||
android:layout_height="@dimen/contact_actions_size"
|
||||
android:layout_marginLeft="@dimen/normal_margin"
|
||||
android:adjustViewBounds="true"
|
||||
android:background="?attr/selectableItemBackgroundBorderless"
|
||||
android:paddingLeft="@dimen/activity_margin"
|
||||
android:paddingRight="@dimen/activity_margin"
|
||||
android:scaleType="center"
|
||||
@ -68,11 +68,11 @@
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/contact_send_sms"
|
||||
style="@style/MyBorderlessBackgroundStyle"
|
||||
android:layout_width="@dimen/contact_actions_size"
|
||||
android:layout_height="@dimen/contact_actions_size"
|
||||
android:layout_marginLeft="@dimen/normal_margin"
|
||||
android:adjustViewBounds="true"
|
||||
android:background="?attr/selectableItemBackgroundBorderless"
|
||||
android:paddingLeft="@dimen/activity_margin"
|
||||
android:paddingRight="@dimen/activity_margin"
|
||||
android:scaleType="center"
|
||||
@ -85,10 +85,10 @@
|
||||
android:layout_width="@dimen/contact_icons_size"
|
||||
android:layout_height="@dimen/contact_icons_size"
|
||||
android:layout_below="@+id/contact_photo"
|
||||
android:paddingBottom="@dimen/small_margin"
|
||||
android:paddingTop="@dimen/medium_margin"
|
||||
android:paddingEnd="@dimen/small_margin"
|
||||
android:paddingRight="@dimen/small_margin"
|
||||
android:paddingTop="@dimen/medium_margin"
|
||||
android:paddingBottom="@dimen/small_margin"
|
||||
android:src="@drawable/ic_person"/>
|
||||
|
||||
<com.simplemobiletools.commons.views.MyTextView
|
||||
@ -100,9 +100,9 @@
|
||||
android:layout_toRightOf="@+id/contact_name_image"
|
||||
android:lines="1"
|
||||
android:maxLines="1"
|
||||
android:paddingBottom="@dimen/normal_margin"
|
||||
android:paddingLeft="@dimen/small_margin"
|
||||
android:paddingTop="@dimen/normal_margin"
|
||||
android:paddingBottom="@dimen/normal_margin"
|
||||
android:singleLine="true"
|
||||
android:textSize="@dimen/bigger_text_size"/>
|
||||
|
||||
@ -115,9 +115,9 @@
|
||||
android:layout_toRightOf="@+id/contact_name_image"
|
||||
android:lines="1"
|
||||
android:maxLines="1"
|
||||
android:paddingBottom="@dimen/normal_margin"
|
||||
android:paddingLeft="@dimen/small_margin"
|
||||
android:paddingTop="@dimen/normal_margin"
|
||||
android:paddingBottom="@dimen/normal_margin"
|
||||
android:singleLine="true"
|
||||
android:textSize="@dimen/bigger_text_size"/>
|
||||
|
||||
@ -130,9 +130,9 @@
|
||||
android:layout_toRightOf="@+id/contact_name_image"
|
||||
android:lines="1"
|
||||
android:maxLines="1"
|
||||
android:paddingBottom="@dimen/normal_margin"
|
||||
android:paddingLeft="@dimen/small_margin"
|
||||
android:paddingTop="@dimen/normal_margin"
|
||||
android:paddingBottom="@dimen/normal_margin"
|
||||
android:singleLine="true"
|
||||
android:textSize="@dimen/bigger_text_size"/>
|
||||
|
||||
@ -145,9 +145,9 @@
|
||||
android:layout_toRightOf="@+id/contact_name_image"
|
||||
android:lines="1"
|
||||
android:maxLines="1"
|
||||
android:paddingBottom="@dimen/normal_margin"
|
||||
android:paddingLeft="@dimen/small_margin"
|
||||
android:paddingTop="@dimen/normal_margin"
|
||||
android:paddingBottom="@dimen/normal_margin"
|
||||
android:singleLine="true"
|
||||
android:textSize="@dimen/bigger_text_size"/>
|
||||
|
||||
@ -160,9 +160,9 @@
|
||||
android:layout_toRightOf="@+id/contact_name_image"
|
||||
android:lines="1"
|
||||
android:maxLines="1"
|
||||
android:paddingBottom="@dimen/normal_margin"
|
||||
android:paddingLeft="@dimen/small_margin"
|
||||
android:paddingTop="@dimen/normal_margin"
|
||||
android:paddingBottom="@dimen/normal_margin"
|
||||
android:singleLine="true"
|
||||
android:textSize="@dimen/bigger_text_size"/>
|
||||
|
||||
@ -175,9 +175,9 @@
|
||||
android:layout_toRightOf="@+id/contact_name_image"
|
||||
android:lines="1"
|
||||
android:maxLines="1"
|
||||
android:paddingBottom="@dimen/normal_margin"
|
||||
android:paddingLeft="@dimen/small_margin"
|
||||
android:paddingTop="@dimen/normal_margin"
|
||||
android:paddingBottom="@dimen/normal_margin"
|
||||
android:singleLine="true"
|
||||
android:textSize="@dimen/bigger_text_size"/>
|
||||
|
||||
@ -186,10 +186,10 @@
|
||||
android:layout_width="@dimen/contact_icons_size"
|
||||
android:layout_height="@dimen/contact_icons_size"
|
||||
android:layout_alignTop="@+id/contact_numbers_holder"
|
||||
android:paddingBottom="@dimen/small_margin"
|
||||
android:paddingTop="@dimen/medium_margin"
|
||||
android:paddingEnd="@dimen/small_margin"
|
||||
android:paddingRight="@dimen/small_margin"
|
||||
android:paddingTop="@dimen/medium_margin"
|
||||
android:paddingBottom="@dimen/small_margin"
|
||||
android:src="@drawable/ic_phone"/>
|
||||
|
||||
<LinearLayout
|
||||
@ -206,10 +206,10 @@
|
||||
android:layout_width="@dimen/contact_icons_size"
|
||||
android:layout_height="@dimen/contact_icons_size"
|
||||
android:layout_alignTop="@+id/contact_emails_holder"
|
||||
android:paddingBottom="@dimen/small_margin"
|
||||
android:paddingTop="@dimen/medium_margin"
|
||||
android:paddingEnd="@dimen/small_margin"
|
||||
android:paddingRight="@dimen/small_margin"
|
||||
android:paddingTop="@dimen/medium_margin"
|
||||
android:paddingBottom="@dimen/small_margin"
|
||||
android:src="@drawable/ic_email"/>
|
||||
|
||||
<LinearLayout
|
||||
@ -226,10 +226,10 @@
|
||||
android:layout_width="@dimen/contact_icons_size"
|
||||
android:layout_height="@dimen/contact_icons_size"
|
||||
android:layout_alignTop="@+id/contact_addresses_holder"
|
||||
android:paddingBottom="@dimen/small_margin"
|
||||
android:paddingTop="@dimen/medium_margin"
|
||||
android:paddingEnd="@dimen/small_margin"
|
||||
android:paddingRight="@dimen/small_margin"
|
||||
android:paddingTop="@dimen/medium_margin"
|
||||
android:paddingBottom="@dimen/small_margin"
|
||||
android:src="@drawable/ic_place"/>
|
||||
|
||||
<LinearLayout
|
||||
@ -246,10 +246,10 @@
|
||||
android:layout_width="@dimen/contact_icons_size"
|
||||
android:layout_height="@dimen/contact_icons_size"
|
||||
android:layout_alignTop="@+id/contact_ims_holder"
|
||||
android:paddingBottom="@dimen/small_margin"
|
||||
android:paddingTop="@dimen/medium_margin"
|
||||
android:paddingEnd="@dimen/small_margin"
|
||||
android:paddingRight="@dimen/small_margin"
|
||||
android:paddingTop="@dimen/medium_margin"
|
||||
android:paddingBottom="@dimen/small_margin"
|
||||
android:src="@drawable/ic_im"/>
|
||||
|
||||
<LinearLayout
|
||||
@ -266,10 +266,10 @@
|
||||
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:paddingTop="@dimen/medium_margin"
|
||||
android:paddingEnd="@dimen/small_margin"
|
||||
android:paddingRight="@dimen/small_margin"
|
||||
android:paddingTop="@dimen/medium_margin"
|
||||
android:paddingBottom="@dimen/small_margin"
|
||||
android:src="@drawable/ic_cake"/>
|
||||
|
||||
<LinearLayout
|
||||
@ -285,10 +285,10 @@
|
||||
android:layout_width="@dimen/contact_icons_size"
|
||||
android:layout_height="@dimen/contact_icons_size"
|
||||
android:layout_alignTop="@+id/contact_notes"
|
||||
android:paddingBottom="@dimen/small_margin"
|
||||
android:paddingTop="@dimen/medium_margin"
|
||||
android:paddingEnd="@dimen/small_margin"
|
||||
android:paddingRight="@dimen/small_margin"
|
||||
android:paddingTop="@dimen/medium_margin"
|
||||
android:paddingBottom="@dimen/small_margin"
|
||||
android:src="@drawable/ic_label"/>
|
||||
|
||||
<com.simplemobiletools.commons.views.MyTextView
|
||||
@ -299,9 +299,9 @@
|
||||
android:layout_centerVertical="true"
|
||||
android:layout_toRightOf="@+id/contact_notes_image"
|
||||
android:lineSpacingExtra="@dimen/medium_margin"
|
||||
android:paddingBottom="@dimen/normal_margin"
|
||||
android:paddingLeft="@dimen/small_margin"
|
||||
android:paddingTop="@dimen/normal_margin"
|
||||
android:paddingBottom="@dimen/normal_margin"
|
||||
android:textSize="@dimen/bigger_text_size"/>
|
||||
|
||||
<ImageView
|
||||
@ -309,10 +309,10 @@
|
||||
android:layout_width="@dimen/contact_icons_size"
|
||||
android:layout_height="@dimen/contact_icons_size"
|
||||
android:layout_alignTop="@+id/contact_organization_company"
|
||||
android:paddingBottom="@dimen/small_margin"
|
||||
android:paddingTop="@dimen/medium_margin"
|
||||
android:paddingEnd="@dimen/small_margin"
|
||||
android:paddingRight="@dimen/small_margin"
|
||||
android:paddingTop="@dimen/medium_margin"
|
||||
android:paddingBottom="@dimen/small_margin"
|
||||
android:src="@drawable/ic_business"/>
|
||||
|
||||
<com.simplemobiletools.commons.views.MyTextView
|
||||
@ -323,9 +323,9 @@
|
||||
android:layout_centerVertical="true"
|
||||
android:layout_toRightOf="@+id/contact_organization_image"
|
||||
android:lineSpacingExtra="@dimen/medium_margin"
|
||||
android:paddingBottom="@dimen/normal_margin"
|
||||
android:paddingLeft="@dimen/small_margin"
|
||||
android:paddingTop="@dimen/normal_margin"
|
||||
android:paddingBottom="@dimen/normal_margin"
|
||||
android:textSize="@dimen/bigger_text_size"/>
|
||||
|
||||
<com.simplemobiletools.commons.views.MyTextView
|
||||
@ -336,9 +336,9 @@
|
||||
android:layout_centerVertical="true"
|
||||
android:layout_toRightOf="@+id/contact_organization_image"
|
||||
android:lineSpacingExtra="@dimen/medium_margin"
|
||||
android:paddingBottom="@dimen/normal_margin"
|
||||
android:paddingLeft="@dimen/small_margin"
|
||||
android:paddingTop="@dimen/normal_margin"
|
||||
android:paddingBottom="@dimen/normal_margin"
|
||||
android:textSize="@dimen/bigger_text_size"/>
|
||||
|
||||
<ImageView
|
||||
@ -346,10 +346,10 @@
|
||||
android:layout_width="@dimen/contact_icons_size"
|
||||
android:layout_height="@dimen/contact_icons_size"
|
||||
android:layout_alignTop="@+id/contact_websites_holder"
|
||||
android:paddingBottom="@dimen/small_margin"
|
||||
android:paddingTop="@dimen/medium_margin"
|
||||
android:paddingEnd="@dimen/small_margin"
|
||||
android:paddingRight="@dimen/small_margin"
|
||||
android:paddingTop="@dimen/medium_margin"
|
||||
android:paddingBottom="@dimen/small_margin"
|
||||
android:src="@drawable/ic_link"/>
|
||||
|
||||
<LinearLayout
|
||||
@ -365,10 +365,10 @@
|
||||
android:layout_width="@dimen/contact_icons_size"
|
||||
android:layout_height="@dimen/contact_icons_size"
|
||||
android:layout_alignTop="@+id/contact_groups_holder"
|
||||
android:paddingBottom="@dimen/small_margin"
|
||||
android:paddingTop="@dimen/medium_margin"
|
||||
android:paddingEnd="@dimen/small_margin"
|
||||
android:paddingRight="@dimen/small_margin"
|
||||
android:paddingTop="@dimen/medium_margin"
|
||||
android:paddingBottom="@dimen/small_margin"
|
||||
android:src="@drawable/ic_group"/>
|
||||
|
||||
<LinearLayout
|
||||
@ -385,10 +385,10 @@
|
||||
android:layout_width="@dimen/contact_icons_size"
|
||||
android:layout_height="@dimen/contact_icons_size"
|
||||
android:layout_alignTop="@+id/contact_source"
|
||||
android:paddingBottom="@dimen/small_margin"
|
||||
android:paddingTop="@dimen/medium_margin"
|
||||
android:paddingEnd="@dimen/small_margin"
|
||||
android:paddingRight="@dimen/small_margin"
|
||||
android:paddingTop="@dimen/medium_margin"
|
||||
android:paddingBottom="@dimen/small_margin"
|
||||
android:src="@drawable/ic_account_box"/>
|
||||
|
||||
<com.simplemobiletools.commons.views.MyTextView
|
||||
@ -400,9 +400,9 @@
|
||||
android:layout_toRightOf="@+id/contact_name_image"
|
||||
android:lines="1"
|
||||
android:maxLines="1"
|
||||
android:paddingBottom="@dimen/normal_margin"
|
||||
android:paddingLeft="@dimen/small_margin"
|
||||
android:paddingTop="@dimen/normal_margin"
|
||||
android:paddingBottom="@dimen/normal_margin"
|
||||
android:singleLine="true"
|
||||
android:textSize="@dimen/bigger_text_size"
|
||||
tools:text="hello@simplemobiletools.com"/>
|
||||
|
@ -8,10 +8,10 @@
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/call_confirm_phone"
|
||||
style="@style/MyBorderlessBackgroundStyle"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_centerInParent="true"
|
||||
android:background="?attr/selectableItemBackgroundBorderless"
|
||||
android:padding="@dimen/activity_margin"
|
||||
android:src="@drawable/ic_phone_big"/>
|
||||
|
||||
|
@ -12,8 +12,8 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"
|
||||
android:paddingLeft="@dimen/activity_margin"
|
||||
android:paddingRight="@dimen/activity_margin"
|
||||
android:paddingTop="@dimen/activity_margin">
|
||||
android:paddingTop="@dimen/activity_margin"
|
||||
android:paddingRight="@dimen/activity_margin">
|
||||
|
||||
<com.simplemobiletools.commons.views.MyTextView
|
||||
android:id="@+id/export_contacts_folder_label"
|
||||
@ -26,11 +26,11 @@
|
||||
android:id="@+id/export_contacts_folder"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="@dimen/activity_margin"
|
||||
android:layout_marginLeft="@dimen/activity_margin"
|
||||
android:paddingBottom="@dimen/small_margin"
|
||||
android:layout_marginBottom="@dimen/activity_margin"
|
||||
android:paddingTop="@dimen/small_margin"
|
||||
android:paddingRight="@dimen/small_margin"
|
||||
android:paddingTop="@dimen/small_margin"/>
|
||||
android:paddingBottom="@dimen/small_margin"/>
|
||||
|
||||
<com.simplemobiletools.commons.views.MyTextView
|
||||
android:id="@+id/export_contacts_filename_label"
|
||||
@ -43,18 +43,18 @@
|
||||
android:id="@+id/export_contacts_filename"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="@dimen/activity_margin"
|
||||
android:layout_marginLeft="@dimen/activity_margin"
|
||||
android:paddingRight="@dimen/small_margin"
|
||||
android:layout_marginBottom="@dimen/activity_margin"
|
||||
android:paddingTop="@dimen/normal_margin"
|
||||
android:paddingRight="@dimen/small_margin"
|
||||
android:textSize="@dimen/normal_text_size"/>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/export_contacts_divider"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="1px"
|
||||
android:layout_marginBottom="@dimen/medium_margin"
|
||||
android:layout_marginTop="@dimen/medium_margin"
|
||||
android:layout_marginBottom="@dimen/medium_margin"
|
||||
android:background="@color/divider_grey"
|
||||
android:importantForAccessibility="no"/>
|
||||
|
||||
@ -65,7 +65,7 @@
|
||||
android:text="@string/include_contact_sources"
|
||||
android:textSize="@dimen/smaller_text_size"/>
|
||||
|
||||
<android.support.v7.widget.RecyclerView
|
||||
<com.simplemobiletools.commons.views.MyRecyclerView
|
||||
android:id="@+id/export_contacts_list"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
|
@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<android.support.v7.widget.RecyclerView
|
||||
<com.simplemobiletools.commons.views.MyRecyclerView
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:id="@+id/filter_contact_sources_list"
|
||||
|
@ -17,19 +17,19 @@
|
||||
android:gravity="center"
|
||||
android:paddingLeft="@dimen/activity_margin"
|
||||
android:paddingRight="@dimen/activity_margin"
|
||||
android:text="@string/no_items_found"
|
||||
android:text="@string/no_contacts_found"
|
||||
android:textSize="@dimen/bigger_text_size"
|
||||
android:visibility="gone"/>
|
||||
|
||||
<com.simplemobiletools.commons.views.MyTextView
|
||||
android:id="@+id/fragment_placeholder_2"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@+id/fragment_placeholder"
|
||||
android:layout_centerHorizontal="true"
|
||||
android:background="?attr/selectableItemBackground"
|
||||
android:gravity="center"
|
||||
android:paddingBottom="@dimen/medium_margin"
|
||||
android:paddingTop="@dimen/medium_margin"
|
||||
android:padding="@dimen/activity_margin"
|
||||
android:text="@string/change_filter"
|
||||
android:textSize="@dimen/bigger_text_size"
|
||||
android:visibility="gone"/>
|
||||
@ -48,8 +48,8 @@
|
||||
android:layout_height="match_parent"
|
||||
android:layout_alignParentEnd="true"
|
||||
android:layout_alignParentRight="true"
|
||||
android:paddingLeft="@dimen/normal_margin"
|
||||
android:paddingStart="@dimen/normal_margin">
|
||||
android:paddingStart="@dimen/normal_margin"
|
||||
android:paddingLeft="@dimen/normal_margin">
|
||||
|
||||
<include layout="@layout/fastscroller_handle_vertical"/>
|
||||
|
||||
|
@ -20,6 +20,7 @@
|
||||
android:id="@+id/contact_tmb"
|
||||
android:layout_width="@dimen/normal_icon_size"
|
||||
android:layout_height="@dimen/normal_icon_size"
|
||||
android:layout_marginTop="@dimen/tiny_margin"
|
||||
android:padding="@dimen/medium_margin"
|
||||
android:src="@drawable/ic_person"/>
|
||||
|
||||
|
@ -11,7 +11,7 @@
|
||||
android:focusable="true"
|
||||
android:foreground="@drawable/selector">
|
||||
|
||||
<android.support.constraint.ConstraintLayout
|
||||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
android:id="@+id/recent_call_holder"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="@dimen/contact_item_with_number_height"
|
||||
@ -59,5 +59,5 @@
|
||||
tools:layout_editor_absoluteY="0dp"
|
||||
tools:text="Yesterday, 17:00"/>
|
||||
|
||||
</android.support.constraint.ConstraintLayout>
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
</FrameLayout>
|
||||
|
@ -5,7 +5,7 @@
|
||||
android:id="@+id/search"
|
||||
android:icon="@drawable/ic_search"
|
||||
android:title="@string/search"
|
||||
app:actionViewClass="android.support.v7.widget.SearchView"
|
||||
app:actionViewClass="androidx.appcompat.widget.SearchView"
|
||||
app:showAsAction="collapseActionView|ifRoom"/>
|
||||
<item
|
||||
android:id="@+id/sort"
|
||||
|
@ -18,6 +18,11 @@
|
||||
<string name="create_new_contact">Create new contact</string>
|
||||
<string name="add_to_existing_contact">Add to an existing contact</string>
|
||||
|
||||
<!-- Placeholders -->
|
||||
<string name="no_contacts_found">No contacts found</string>
|
||||
<string name="no_contacts_with_emails">No contacts with emails have been found</string>
|
||||
<string name="no_contacts_with_phone_numbers">No contacts with phone numbers have been found</string>
|
||||
|
||||
<string name="new_contact">Yeni kontakt</string>
|
||||
<string name="edit_contact">Redaktə et</string>
|
||||
<string name="select_contact">Kontakt seç</string>
|
||||
@ -57,6 +62,7 @@
|
||||
<string name="favorites">Sevimlilər</string>
|
||||
<string name="recent_calls">Hazırki zənglər</string>
|
||||
<string name="show_call_confirmation_dialog">Zəngə başlamazdan əvvəl zəng təsdiq pəncərəsi göstər</string>
|
||||
<string name="show_only_contacts_with_numbers">Show only contacts with phone numbers</string>
|
||||
|
||||
<!-- Emails -->
|
||||
<string name="email">E-poçt</string>
|
||||
|
@ -9,14 +9,19 @@
|
||||
<string name="company">Unternehmen</string>
|
||||
<string name="job_position">Arbeitsstelle</string>
|
||||
<string name="website">Webseite</string>
|
||||
<string name="send_sms_to_contacts">Sende SMS an Kontakte</string>
|
||||
<string name="send_email_to_contacts">Sende E-Mail an Kontakte</string>
|
||||
<string name="send_sms_to_group">Sende SMS an Gruppe</string>
|
||||
<string name="send_email_to_group">Sende E-Mail an Gruppe</string>
|
||||
<string name="send_sms_to_contacts">SMS an Kontakte senden</string>
|
||||
<string name="send_email_to_contacts">E-Mail an Kontakte senden</string>
|
||||
<string name="send_sms_to_group">SMS an Gruppe senden</string>
|
||||
<string name="send_email_to_group">E-Mail an Gruppe senden</string>
|
||||
<string name="call_person">%s anrufen</string>
|
||||
<string name="request_the_required_permissions">Benötigte Berechtigungen anfordern</string>
|
||||
<string name="create_new_contact">Create new contact</string>
|
||||
<string name="add_to_existing_contact">Add to an existing contact</string>
|
||||
<string name="create_new_contact">Neuen Kontakt erstellen</string>
|
||||
<string name="add_to_existing_contact">Zu einem existierenden Kontakt hinzufügen</string>
|
||||
|
||||
<!-- Placeholders -->
|
||||
<string name="no_contacts_found">No contacts found</string>
|
||||
<string name="no_contacts_with_emails">No contacts with emails have been found</string>
|
||||
<string name="no_contacts_with_phone_numbers">No contacts with phone numbers have been found</string>
|
||||
|
||||
<string name="new_contact">Neuer Kontakt</string>
|
||||
<string name="edit_contact">Kontakt bearbeiten</string>
|
||||
@ -34,7 +39,7 @@
|
||||
<string name="no_group_participants">Diese Gruppe ist leer</string>
|
||||
<string name="add_contacts">Kontakte hinzufügen</string>
|
||||
<string name="no_group_created">Es sind keine Kontaktgruppen auf diesem Gerät vorhanden</string>
|
||||
<string name="create_group">Erstelle Gruppe</string>
|
||||
<string name="create_group">Gruppe erstellen</string>
|
||||
<string name="add_to_group">Zu Gruppe hinzufügen</string>
|
||||
<string name="create_group_under_account">Gruppe in diesem Konto erstellen</string>
|
||||
|
||||
@ -45,18 +50,19 @@
|
||||
|
||||
<!-- Settings -->
|
||||
<string name="start_name_with_surname">Namen mit Nachnamen beginnen</string>
|
||||
<string name="show_phone_numbers">Zeige Telefonnummern im Hauptmenü</string>
|
||||
<string name="show_contact_thumbnails">Zeige Vorschaubilder der Kontakte</string>
|
||||
<string name="show_phone_numbers">Telefonnummern im Hauptmenü zeigen</string>
|
||||
<string name="show_contact_thumbnails">Vorschaubilder der Kontakte zeigen</string>
|
||||
<string name="on_contact_click">Beim Klicken auf den Kontakt</string>
|
||||
<string name="call_contact">Kontakt anrufen</string>
|
||||
<string name="view_contact">Kontaktdetails anzeigen</string>
|
||||
<string name="manage_shown_contact_fields">Bearbeite sichtbare Kontaktfelder</string>
|
||||
<string name="filter_duplicates">Versuche Kontaktduplikate herauszufiltern</string>
|
||||
<string name="manage_shown_contact_fields">Sichtbare Kontaktfelder bearbeiten</string>
|
||||
<string name="filter_duplicates">Versucht Kontaktduplikate herauszufiltern</string>
|
||||
<string name="manage_shown_tabs">Anzuzeigende Tabs festlegen</string>
|
||||
<string name="contacts">Kontakte</string>
|
||||
<string name="favorites">Favoriten</string>
|
||||
<string name="recent_calls">Anrufliste</string>
|
||||
<string name="show_call_confirmation_dialog">Bestätigungsdialog zeigen, bevor ein Anruf durchgeführt wird</string>
|
||||
<string name="show_only_contacts_with_numbers">Show only contacts with phone numbers</string>
|
||||
|
||||
<!-- Emails -->
|
||||
<string name="email">E-Mail</string>
|
||||
@ -78,11 +84,11 @@
|
||||
<string name="anniversary">Jahrestag</string>
|
||||
|
||||
<!-- Favorites -->
|
||||
<string name="no_favorites">Sieht so aus, als ob du keine Kontakte zu den Favoriten hinzugefügt hast.</string>
|
||||
<string name="no_favorites">Anscheinend haben Sie bisher keine Kontakte zu den Favoriten hinzugefügt.</string>
|
||||
<string name="add_favorites">Favoriten hinzufügen</string>
|
||||
<string name="add_to_favorites">Zu Favoriten hinzufügen</string>
|
||||
<string name="remove_from_favorites">Aus Favoriten entfernen</string>
|
||||
<string name="must_be_at_edit">Sie müssen sich im Bearbeitungsmodus befinden, um einen Kontakt zu bearbeiten</string>
|
||||
<string name="must_be_at_edit">Sie müssen sich im Bearbeitungsmodus befinden, um einen Kontakt zu bearbeiten.</string>
|
||||
|
||||
<!-- Search -->
|
||||
<string name="search_contacts">Kontakte durchsuchen</string>
|
||||
@ -98,8 +104,8 @@
|
||||
<string name="filename_without_vcf">Dateiname (ohne .vcf)</string>
|
||||
|
||||
<!-- Dialpad -->
|
||||
<string name="dialpad">Dialpad</string>
|
||||
<string name="add_number_to_contact">Add number to contact</string>
|
||||
<string name="dialpad">Wählfeld</string>
|
||||
<string name="add_number_to_contact">Nummer zu Kontakt hinzufügen</string>
|
||||
|
||||
<!-- Visible fields -->
|
||||
<string name="select_fields_to_show">Sichtbare Felder auswählen</string>
|
||||
|
@ -15,8 +15,13 @@
|
||||
<string name="send_email_to_group">Αποστολή email σε ομάδες</string>
|
||||
<string name="call_person">Κλήση %s</string>
|
||||
<string name="request_the_required_permissions">Ζητούνται τα απαιτούμενα δικαιώματα</string>
|
||||
<string name="create_new_contact">Create new contact</string>
|
||||
<string name="add_to_existing_contact">Add to an existing contact</string>
|
||||
<string name="create_new_contact">Δημιουργία νέας Επαφής</string>
|
||||
<string name="add_to_existing_contact">Προσθήκη σε μια υπάρχουσα Επαφή</string>
|
||||
|
||||
<!-- Placeholders -->
|
||||
<string name="no_contacts_found">No contacts found</string>
|
||||
<string name="no_contacts_with_emails">No contacts with emails have been found</string>
|
||||
<string name="no_contacts_with_phone_numbers">No contacts with phone numbers have been found</string>
|
||||
|
||||
<string name="new_contact">Νέα επαφή</string>
|
||||
<string name="edit_contact">Επεξεργασία επαφής</string>
|
||||
@ -57,6 +62,7 @@
|
||||
<string name="favorites">Αγαπημένες</string>
|
||||
<string name="recent_calls">Πρόσφατες Κλήσεις</string>
|
||||
<string name="show_call_confirmation_dialog">Εμφάνιση διαλόγου επιβεβαίωσης πριν από την έναρξη μιας κλήσης</string>
|
||||
<string name="show_only_contacts_with_numbers">Show only contacts with phone numbers</string>
|
||||
|
||||
<!-- Emails -->
|
||||
<string name="email">Email</string>
|
||||
@ -98,8 +104,8 @@
|
||||
<string name="filename_without_vcf">Όνομα αρχείου (χωρίς .vcf)</string>
|
||||
|
||||
<!-- Dialpad -->
|
||||
<string name="dialpad">Dialpad</string>
|
||||
<string name="add_number_to_contact">Add number to contact</string>
|
||||
<string name="dialpad">Πληκτρολόγιο</string>
|
||||
<string name="add_number_to_contact">Προσθήκη αριθμού σε επαφή</string>
|
||||
|
||||
<!-- Visible fields -->
|
||||
<string name="select_fields_to_show">Επιλογή εμφάνισης πεδίων</string>
|
||||
@ -114,7 +120,7 @@
|
||||
<string name="websites">Ιστοσελίδα</string>
|
||||
<string name="groups">Ομάδες</string>
|
||||
<string name="contact_source">Προέλευση επαφής</string>
|
||||
<string name="instant_messaging">Instant messaging (IM)</string>
|
||||
<string name="instant_messaging">Αμεσο μήνυμα (IM)</string>
|
||||
|
||||
<!-- FAQ -->
|
||||
<string name="faq_1_title">Θέλω να αλλάξω τα πεδία που θα είναι ορατά στις επαφές. Μπορώ να το κάνω?</string>
|
||||
|
@ -15,8 +15,13 @@
|
||||
<string name="send_email_to_group">Envoyer un e-mail au groupe</string>
|
||||
<string name="call_person">Call %s</string>
|
||||
<string name="request_the_required_permissions">Demander les autorisations requises</string>
|
||||
<string name="create_new_contact">Create new contact</string>
|
||||
<string name="add_to_existing_contact">Add to an existing contact</string>
|
||||
<string name="create_new_contact">Créer un nouveau contact</string>
|
||||
<string name="add_to_existing_contact">Ajouter à un contact existant</string>
|
||||
|
||||
<!-- Placeholders -->
|
||||
<string name="no_contacts_found">No contacts found</string>
|
||||
<string name="no_contacts_with_emails">No contacts with emails have been found</string>
|
||||
<string name="no_contacts_with_phone_numbers">No contacts with phone numbers have been found</string>
|
||||
|
||||
<string name="new_contact">Nouveau contact</string>
|
||||
<string name="edit_contact">Modifier contact</string>
|
||||
@ -57,6 +62,7 @@
|
||||
<string name="favorites">Favorites</string>
|
||||
<string name="recent_calls">Appels récents</string>
|
||||
<string name="show_call_confirmation_dialog">Afficher une boîte de dialogue de confirmation d\'appel avant de lancer un appel</string>
|
||||
<string name="show_only_contacts_with_numbers">Show only contacts with phone numbers</string>
|
||||
|
||||
<!-- Emails -->
|
||||
<string name="email">E-mail</string>
|
||||
@ -99,7 +105,7 @@
|
||||
|
||||
<!-- Dialpad -->
|
||||
<string name="dialpad">Dialpad</string>
|
||||
<string name="add_number_to_contact">Add number to contact</string>
|
||||
<string name="add_number_to_contact">Ajouter un numéro au contact</string>
|
||||
|
||||
<!-- Visible fields -->
|
||||
<string name="select_fields_to_show">Sélectionner les champs à afficher</string>
|
||||
|
@ -18,6 +18,11 @@
|
||||
<string name="create_new_contact">Create new contact</string>
|
||||
<string name="add_to_existing_contact">Add to an existing contact</string>
|
||||
|
||||
<!-- Placeholders -->
|
||||
<string name="no_contacts_found">No contacts found</string>
|
||||
<string name="no_contacts_with_emails">No contacts with emails have been found</string>
|
||||
<string name="no_contacts_with_phone_numbers">No contacts with phone numbers have been found</string>
|
||||
|
||||
<string name="new_contact">Novi kontakt</string>
|
||||
<string name="edit_contact">Uredi kontakt</string>
|
||||
<string name="select_contact">Odaberi kontakt</string>
|
||||
@ -57,6 +62,7 @@
|
||||
<string name="favorites">Favoriti</string>
|
||||
<string name="recent_calls">Nedavni pozivi</string>
|
||||
<string name="show_call_confirmation_dialog">Pokažite dijaloški okvir za potvrdu poziva prije pokretanja poziva</string>
|
||||
<string name="show_only_contacts_with_numbers">Show only contacts with phone numbers</string>
|
||||
|
||||
<!-- Emails -->
|
||||
<string name="email">E-pošta</string>
|
||||
|
146
app/src/main/res/values-it/strings.xml
Normal file
@ -0,0 +1,146 @@
|
||||
<resources>
|
||||
<string name="app_name">Simple Contacts</string>
|
||||
<string name="app_launcher_name">Contatti</string>
|
||||
<string name="address">Indirizzo</string>
|
||||
<string name="inserting">Inserimento in corso…</string>
|
||||
<string name="updating">Aggiornamento in corso…</string>
|
||||
<string name="phone_storage">Memoria del telefono</string>
|
||||
<string name="phone_storage_hidden">Memoria del telfono (non visibile alle altre applicazioni)</string>
|
||||
<string name="company">Compagnia</string>
|
||||
<string name="job_position">Posizione lavorativa</string>
|
||||
<string name="website">Sito web</string>
|
||||
<string name="send_sms_to_contacts">Invia un SMS ai contatti</string>
|
||||
<string name="send_email_to_contacts">Invia un\'email ai contatti</string>
|
||||
<string name="send_sms_to_group">Invia un SMS al gruppo</string>
|
||||
<string name="send_email_to_group">Invia un\'email al gruppo</string>
|
||||
<string name="call_person">Chiama %s</string>
|
||||
<string name="request_the_required_permissions">Richiedi le permissioni necessarie</string>
|
||||
<string name="create_new_contact">Crea un nuovo contatto</string>
|
||||
<string name="add_to_existing_contact">Aggiungi ad un contatto esistente</string>
|
||||
|
||||
<!-- Placeholders -->
|
||||
<string name="no_contacts_found">Nessun contatto trovato</string>
|
||||
<string name="no_contacts_with_emails">Nessun contatto trovato con un\'email</string>
|
||||
<string name="no_contacts_with_phone_numbers">Nessun contatto trovato con un numero di telefono</string>
|
||||
|
||||
<string name="new_contact">Nuovo contatto</string>
|
||||
<string name="edit_contact">Modifica contatto</string>
|
||||
<string name="select_contact">Seleziona contatto</string>
|
||||
<string name="select_contacts">Seleziona contatti</string>
|
||||
<string name="first_name">Nome</string>
|
||||
<string name="middle_name">Secondo nome</string>
|
||||
<string name="surname">Cognome</string>
|
||||
<string name="nickname">Soprannome</string>
|
||||
|
||||
<!-- Groups -->
|
||||
<string name="no_groups">Nessun gruppo</string>
|
||||
<string name="create_new_group">Crea un nuovo gruppo</string>
|
||||
<string name="remove_from_group">Rimuovi dal gruppo</string>
|
||||
<string name="no_group_participants">Questo gruppo è vuoto</string>
|
||||
<string name="add_contacts">Aggiungi contatti</string>
|
||||
<string name="no_group_created">Non ci sono gruppi con contatti nel dispositivo</string>
|
||||
<string name="create_group">Crea gruppo</string>
|
||||
<string name="add_to_group">Aggiungi al gruppo</string>
|
||||
<string name="create_group_under_account">Crea un gruppo con un account</string>
|
||||
|
||||
<!-- Photo -->
|
||||
<string name="take_photo">Scatta un foto</string>
|
||||
<string name="choose_photo">Scegli una foto</string>
|
||||
<string name="remove_photo">Rimuovi foto</string>
|
||||
|
||||
<!-- Settings -->
|
||||
<string name="start_name_with_surname">Prima il nome poi il cognome</string>
|
||||
<string name="show_phone_numbers">Mostra i numeri di telefono nella schermata principale</string>
|
||||
<string name="show_contact_thumbnails">Mostra le anteprime dei contatti</string>
|
||||
<string name="on_contact_click">Al click sul contatto</string>
|
||||
<string name="call_contact">Chiama contatto</string>
|
||||
<string name="view_contact">Visualizza i dettagli del contatto</string>
|
||||
<string name="manage_shown_contact_fields">Gestisci i campi mostrati</string>
|
||||
<string name="filter_duplicates">Prova a filetrare i contatti duplicati</string>
|
||||
<string name="manage_shown_tabs">Gestisci le schede mostrate</string>
|
||||
<string name="contacts">Contatti</string>
|
||||
<string name="favorites">Preferiti</string>
|
||||
<string name="recent_calls">Chiamate recenti</string>
|
||||
<string name="show_call_confirmation_dialog">Mostra un dialogo di conferma prima di iniziare una chiamata</string>
|
||||
<string name="show_only_contacts_with_numbers">Mostra solamente i contatti con almeno un numero telefonico</string>
|
||||
|
||||
<!-- Emails -->
|
||||
<string name="email">Email</string>
|
||||
<string name="home">Casa</string>
|
||||
<string name="work">Lavoro</string>
|
||||
<string name="other">Altro</string>
|
||||
|
||||
<!-- Phone numbers -->
|
||||
<string name="number">Numero</string>
|
||||
<string name="mobile">Cellulare</string>
|
||||
<string name="main_number">Principale</string>
|
||||
<string name="work_fax">Fax di lavoro</string>
|
||||
<string name="home_fax">Fax di casa</string>
|
||||
<string name="pager">Cercapersone</string>
|
||||
<string name="no_phone_number_found">Non è stato trovato alcun numero di telefono</string>
|
||||
|
||||
<!-- Events -->
|
||||
<string name="birthday">Compleanno</string>
|
||||
<string name="anniversary">Anniversario</string>
|
||||
|
||||
<!-- Favorites -->
|
||||
<string name="no_favorites">Sembra che ancora non si ha nessun contatto preferito.</string>
|
||||
<string name="add_favorites">Aggiungi preferito</string>
|
||||
<string name="add_to_favorites">Aggiungi ai preferiti</string>
|
||||
<string name="remove_from_favorites">Rimuovi dai preferiti</string>
|
||||
<string name="must_be_at_edit">Devi stare nella schermata di modifica per modificare un contatto</string>
|
||||
|
||||
<!-- Search -->
|
||||
<string name="search_contacts">Cerca contatti</string>
|
||||
<string name="search_favorites">Cerca preferiti</string>
|
||||
|
||||
<!-- Export / Import -->
|
||||
<string name="import_contacts">Importa contatti</string>
|
||||
<string name="export_contacts">Esporta contatti</string>
|
||||
<string name="import_contacts_from_vcf">Importa contatti da un file .vcf</string>
|
||||
<string name="export_contacts_to_vcf">Esporta contatti in un file .vcf</string>
|
||||
<string name="target_contact_source">Individua la provenienza del contatto</string>
|
||||
<string name="include_contact_sources">Includi la provenienza del contatto</string>
|
||||
<string name="filename_without_vcf">Nome del file (senza .vcf)</string>
|
||||
|
||||
<!-- Dialpad -->
|
||||
<string name="dialpad">Tastiera</string>
|
||||
<string name="add_number_to_contact">Aggiungi numero ai contatti</string>
|
||||
|
||||
<!-- Visible fields -->
|
||||
<string name="select_fields_to_show">Seleziona i campi da mostrare</string>
|
||||
<string name="prefix">Prefisso</string>
|
||||
<string name="suffix">Suffisso</string>
|
||||
<string name="phone_numbers">Numeri di telefono</string>
|
||||
<string name="emails">Email</string>
|
||||
<string name="addresses">Indirizzi</string>
|
||||
<string name="events">Eventi (compleanni, anniversari)</string>
|
||||
<string name="notes">Note</string>
|
||||
<string name="organization">Organizazione</string>
|
||||
<string name="websites">Siti web</string>
|
||||
<string name="groups">Gruppi</string>
|
||||
<string name="contact_source">Provenienza del contatto</string>
|
||||
<string name="instant_messaging">Messaggistica istantanea (IM)</string>
|
||||
|
||||
<!-- FAQ -->
|
||||
<string name="faq_1_title">Voglio cambiare i campi visibili ai contatti. Come posso fare?</string>
|
||||
<string name="faq_1_text">Puoi farlo andando in Impostazioni -> Gestisci i campi mostrati. Qui puoi selezionare i campi che saranno visibili. Alcuni sono anche disabilitati in maniera predefinita, quindi potresti trovare qualche nuovo campo.</string>
|
||||
|
||||
<!-- Strings displayed only on Google Playstore. Optional, but good to have -->
|
||||
<!-- Short description has to have less than 80 chars -->
|
||||
<string name="app_short_description">Un\'applicazioni contatti per gestire i propri contatti senza pubblicità.</string>
|
||||
<string name="app_long_description">
|
||||
Una semplice applicazione per creare o gestire i propri contatti da qualsiasi provenienza. I contatti saranno salvati solamente nel dispositivo, ma possono essere sincronizzati con Google, o con altri servizi. Si possono visualizzare i contatti preferiti in una list separata.
|
||||
|
||||
Si può utilizzare l\'applicazione anche per gestire le email e gli eventi. Può ordinare e filtrare per parametri multipli, ed opzionalmente visualizzare il cognome come nome
|
||||
|
||||
Non contiene pubblicità nè chiede permessi non necessari. È completamente open source ed offre colori personalizzabili.
|
||||
|
||||
Quest\'app fa parte di una serie più grande. Puoi trovare le altre su https://www.simplemobiletools.com
|
||||
</string>
|
||||
|
||||
<!--
|
||||
Haven't found some strings? There's more at
|
||||
https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res
|
||||
-->
|
||||
</resources>
|
@ -15,8 +15,13 @@
|
||||
<string name="send_email_to_group">グループにメールを送信</string>
|
||||
<string name="call_person">Call %s</string>
|
||||
<string name="request_the_required_permissions">Request the required permissions</string>
|
||||
<string name="create_new_contact">Create new contact</string>
|
||||
<string name="add_to_existing_contact">Add to an existing contact</string>
|
||||
<string name="create_new_contact">新しい連絡先を作成</string>
|
||||
<string name="add_to_existing_contact">既存の連絡先に追加</string>
|
||||
|
||||
<!-- Placeholders -->
|
||||
<string name="no_contacts_found">No contacts found</string>
|
||||
<string name="no_contacts_with_emails">No contacts with emails have been found</string>
|
||||
<string name="no_contacts_with_phone_numbers">No contacts with phone numbers have been found</string>
|
||||
|
||||
<string name="new_contact">新しい連絡先</string>
|
||||
<string name="edit_contact">連絡先を編集</string>
|
||||
@ -57,6 +62,7 @@
|
||||
<string name="favorites">お気に入り</string>
|
||||
<string name="recent_calls">Recent calls</string>
|
||||
<string name="show_call_confirmation_dialog">発信する前に確認ダイアログを表示する</string>
|
||||
<string name="show_only_contacts_with_numbers">Show only contacts with phone numbers</string>
|
||||
|
||||
<!-- Emails -->
|
||||
<string name="email">メール</string>
|
||||
@ -99,7 +105,7 @@
|
||||
|
||||
<!-- Dialpad -->
|
||||
<string name="dialpad">ダイヤルパッド</string>
|
||||
<string name="add_number_to_contact">Add number to contact</string>
|
||||
<string name="add_number_to_contact">連絡先に番号を追加</string>
|
||||
|
||||
<!-- Visible fields -->
|
||||
<string name="select_fields_to_show">表示する項目を選択</string>
|
||||
|
@ -18,6 +18,11 @@
|
||||
<string name="create_new_contact">Create new contact</string>
|
||||
<string name="add_to_existing_contact">Add to an existing contact</string>
|
||||
|
||||
<!-- Placeholders -->
|
||||
<string name="no_contacts_found">No contacts found</string>
|
||||
<string name="no_contacts_with_emails">No contacts with emails have been found</string>
|
||||
<string name="no_contacts_with_phone_numbers">No contacts with phone numbers have been found</string>
|
||||
|
||||
<string name="new_contact">새로운 연락처</string>
|
||||
<string name="edit_contact">연락처 수정</string>
|
||||
<string name="select_contact">단건 연락처 선택</string>
|
||||
@ -57,6 +62,7 @@
|
||||
<string name="favorites">Favorites</string>
|
||||
<string name="recent_calls">Recent calls</string>
|
||||
<string name="show_call_confirmation_dialog">Show a call confirmation dialog before initiating a call</string>
|
||||
<string name="show_only_contacts_with_numbers">Show only contacts with phone numbers</string>
|
||||
|
||||
<!-- Emails -->
|
||||
<string name="email">이메일</string>
|
||||
|
@ -18,6 +18,11 @@
|
||||
<string name="create_new_contact">Create new contact</string>
|
||||
<string name="add_to_existing_contact">Add to an existing contact</string>
|
||||
|
||||
<!-- Placeholders -->
|
||||
<string name="no_contacts_found">No contacts found</string>
|
||||
<string name="no_contacts_with_emails">No contacts with emails have been found</string>
|
||||
<string name="no_contacts_with_phone_numbers">No contacts with phone numbers have been found</string>
|
||||
|
||||
<string name="new_contact">Naujas kontaktas</string>
|
||||
<string name="edit_contact">Redaguoti kontaktą</string>
|
||||
<string name="select_contact">Pasirinkti kontaktą</string>
|
||||
@ -57,6 +62,7 @@
|
||||
<string name="favorites">Favorites</string>
|
||||
<string name="recent_calls">Recent calls</string>
|
||||
<string name="show_call_confirmation_dialog">Show a call confirmation dialog before initiating a call</string>
|
||||
<string name="show_only_contacts_with_numbers">Show only contacts with phone numbers</string>
|
||||
|
||||
<!-- Emails -->
|
||||
<string name="email">Elektroninis paštas</string>
|
||||
|
@ -15,8 +15,13 @@
|
||||
<string name="send_email_to_group">Enviar e-mail para o grupo</string>
|
||||
<string name="call_person">Ligar a %s</string>
|
||||
<string name="request_the_required_permissions">Pedir a permissão necessária</string>
|
||||
<string name="create_new_contact">Create new contact</string>
|
||||
<string name="add_to_existing_contact">Add to an existing contact</string>
|
||||
<string name="create_new_contact">Criar novo contacto</string>
|
||||
<string name="add_to_existing_contact">Adicionar a contacto existente</string>
|
||||
|
||||
<!-- Placeholders -->
|
||||
<string name="no_contacts_found">No contacts found</string>
|
||||
<string name="no_contacts_with_emails">No contacts with emails have been found</string>
|
||||
<string name="no_contacts_with_phone_numbers">No contacts with phone numbers have been found</string>
|
||||
|
||||
<string name="new_contact">Novo contacto</string>
|
||||
<string name="edit_contact">Editar contacto</string>
|
||||
@ -57,6 +62,7 @@
|
||||
<string name="favorites">Favoritos</string>
|
||||
<string name="recent_calls">Chamadas recentes</string>
|
||||
<string name="show_call_confirmation_dialog">Mostrar diálogo para confirmar a chamada</string>
|
||||
<string name="show_only_contacts_with_numbers">Show only contacts with phone numbers</string>
|
||||
|
||||
<!-- Emails -->
|
||||
<string name="email">E-mail</string>
|
||||
@ -98,8 +104,8 @@
|
||||
<string name="filename_without_vcf">Nome do ficheiro (sem .vcf)</string>
|
||||
|
||||
<!-- Dialpad -->
|
||||
<string name="dialpad">Dialpad</string>
|
||||
<string name="add_number_to_contact">Add number to contact</string>
|
||||
<string name="dialpad">Teclado</string>
|
||||
<string name="add_number_to_contact">Adicionar número a um contacto</string>
|
||||
|
||||
<!-- Visible fields -->
|
||||
<string name="select_fields_to_show">Selecione os campos a mostrar</string>
|
||||
|
@ -18,6 +18,11 @@
|
||||
<string name="create_new_contact">Создать новый контакт</string>
|
||||
<string name="add_to_existing_contact">Добавить к существующему контакту</string>
|
||||
|
||||
<!-- Placeholders -->
|
||||
<string name="no_contacts_found">No contacts found</string>
|
||||
<string name="no_contacts_with_emails">No contacts with emails have been found</string>
|
||||
<string name="no_contacts_with_phone_numbers">No contacts with phone numbers have been found</string>
|
||||
|
||||
<string name="new_contact">Новый контакт</string>
|
||||
<string name="edit_contact">Редактировать контакт</string>
|
||||
<string name="select_contact">Выбрать контакт</string>
|
||||
@ -57,6 +62,7 @@
|
||||
<string name="favorites">Избранное</string>
|
||||
<string name="recent_calls">Недавние вызовы</string>
|
||||
<string name="show_call_confirmation_dialog">Показывать диалог подтверждения вызова</string>
|
||||
<string name="show_only_contacts_with_numbers">Show only contacts with phone numbers</string>
|
||||
|
||||
<!-- Emails -->
|
||||
<string name="email">Эл. почта</string>
|
||||
|
@ -18,6 +18,11 @@
|
||||
<string name="create_new_contact">Vytvoriť nový kontakt</string>
|
||||
<string name="add_to_existing_contact">Pridať k existujúcemu kontaktu</string>
|
||||
|
||||
<!-- Placeholders -->
|
||||
<string name="no_contacts_found">Nenašli sa žiadne kontakty</string>
|
||||
<string name="no_contacts_with_emails">Nenašli sa žiadne kontakty s emailami</string>
|
||||
<string name="no_contacts_with_phone_numbers">Nenašli sa žiadne kontakty s telefónnymi číslami</string>
|
||||
|
||||
<string name="new_contact">Nový kontakt</string>
|
||||
<string name="edit_contact">Upraviť kontakt</string>
|
||||
<string name="select_contact">Zvoľte kontakt</string>
|
||||
@ -57,6 +62,7 @@
|
||||
<string name="favorites">Obľúbené</string>
|
||||
<string name="recent_calls">Predošlé hovory</string>
|
||||
<string name="show_call_confirmation_dialog">Zobraziť pred spustením hovoru okno na jeho potvrdenie</string>
|
||||
<string name="show_only_contacts_with_numbers">Zobraziť iba kontakty s telefónnymi číslami</string>
|
||||
|
||||
<!-- Emails -->
|
||||
<string name="email">Email</string>
|
||||
|
@ -15,8 +15,13 @@
|
||||
<string name="send_email_to_group">Skicka e-post till grupp</string>
|
||||
<string name="call_person">Ring %s</string>
|
||||
<string name="request_the_required_permissions">Begär de behörigheter som krävs</string>
|
||||
<string name="create_new_contact">Create new contact</string>
|
||||
<string name="add_to_existing_contact">Add to an existing contact</string>
|
||||
<string name="create_new_contact">Skapa ny kontakt</string>
|
||||
<string name="add_to_existing_contact">Lägg till i en befintlig kontakt</string>
|
||||
|
||||
<!-- Placeholders -->
|
||||
<string name="no_contacts_found">Inga kontakter hittades</string>
|
||||
<string name="no_contacts_with_emails">Inga kontakter med e-postadresser hittades</string>
|
||||
<string name="no_contacts_with_phone_numbers">Inga kontakter med telefonnummer hittades</string>
|
||||
|
||||
<string name="new_contact">Ny kontakt</string>
|
||||
<string name="edit_contact">Redigera kontakt</string>
|
||||
@ -57,6 +62,7 @@
|
||||
<string name="favorites">Favoriter</string>
|
||||
<string name="recent_calls">Senaste samtal</string>
|
||||
<string name="show_call_confirmation_dialog">Visa en bekräftelsedialogruta före uppringning</string>
|
||||
<string name="show_only_contacts_with_numbers">Visa bara kontakter med telefonnummer</string>
|
||||
|
||||
<!-- Emails -->
|
||||
<string name="email">E-post</string>
|
||||
@ -98,8 +104,8 @@
|
||||
<string name="filename_without_vcf">Filnamn (utan .vcf)</string>
|
||||
|
||||
<!-- Dialpad -->
|
||||
<string name="dialpad">Dialpad</string>
|
||||
<string name="add_number_to_contact">Add number to contact</string>
|
||||
<string name="dialpad">Knappsats</string>
|
||||
<string name="add_number_to_contact">Lägg till nummer i kontakt</string>
|
||||
|
||||
<!-- Visible fields -->
|
||||
<string name="select_fields_to_show">Välj vilka fält som ska visas</string>
|
||||
@ -114,7 +120,7 @@
|
||||
<string name="websites">Webbplatser</string>
|
||||
<string name="groups">Grupper</string>
|
||||
<string name="contact_source">Kontaktkälla</string>
|
||||
<string name="instant_messaging">Instant messaging (IM)</string>
|
||||
<string name="instant_messaging">Snabbmeddelanden (IM)</string>
|
||||
|
||||
<!-- FAQ -->
|
||||
<string name="faq_1_title">I want to change what fields are visible at contacts. Can I do it?</string>
|
||||
|
@ -18,6 +18,11 @@
|
||||
<string name="create_new_contact">Create new contact</string>
|
||||
<string name="add_to_existing_contact">Add to an existing contact</string>
|
||||
|
||||
<!-- Placeholders -->
|
||||
<string name="no_contacts_found">No contacts found</string>
|
||||
<string name="no_contacts_with_emails">No contacts with emails have been found</string>
|
||||
<string name="no_contacts_with_phone_numbers">No contacts with phone numbers have been found</string>
|
||||
|
||||
<string name="new_contact">Yeni kişi</string>
|
||||
<string name="edit_contact">Kişiyi düzenle</string>
|
||||
<string name="select_contact">Kişi seç</string>
|
||||
@ -57,6 +62,7 @@
|
||||
<string name="favorites">Favorites</string>
|
||||
<string name="recent_calls">Recent calls</string>
|
||||
<string name="show_call_confirmation_dialog">Show a call confirmation dialog before initiating a call</string>
|
||||
<string name="show_only_contacts_with_numbers">Show only contacts with phone numbers</string>
|
||||
|
||||
<!-- Emails -->
|
||||
<string name="email">E-posta</string>
|
||||
|
@ -1,7 +0,0 @@
|
||||
<resources>
|
||||
|
||||
<style name="DialpadNumberStyle" parent="DialpadNumberStyle.Base">
|
||||
<item name="android:background">?attr/selectableItemBackgroundBorderless</item>
|
||||
</style>
|
||||
|
||||
</resources>
|
@ -15,8 +15,13 @@
|
||||
<string name="send_email_to_group">發送電子郵件給群組</string>
|
||||
<string name="call_person">打電話給 %s</string>
|
||||
<string name="request_the_required_permissions">請求必要的權限</string>
|
||||
<string name="create_new_contact">Create new contact</string>
|
||||
<string name="add_to_existing_contact">Add to an existing contact</string>
|
||||
<string name="create_new_contact">建立新聯絡人</string>
|
||||
<string name="add_to_existing_contact">添加至已存在的聯絡人</string>
|
||||
|
||||
<!-- Placeholders -->
|
||||
<string name="no_contacts_found">No contacts found</string>
|
||||
<string name="no_contacts_with_emails">No contacts with emails have been found</string>
|
||||
<string name="no_contacts_with_phone_numbers">No contacts with phone numbers have been found</string>
|
||||
|
||||
<string name="new_contact">新聯絡人</string>
|
||||
<string name="edit_contact">編輯聯絡人</string>
|
||||
@ -25,7 +30,7 @@
|
||||
<string name="first_name">名字</string>
|
||||
<string name="middle_name">中間名</string>
|
||||
<string name="surname">姓氏</string>
|
||||
<string name="nickname">Nickname</string>
|
||||
<string name="nickname">暱稱</string>
|
||||
|
||||
<!-- Groups -->
|
||||
<string name="no_groups">沒有群組</string>
|
||||
@ -57,6 +62,7 @@
|
||||
<string name="favorites">我的最愛</string>
|
||||
<string name="recent_calls">通話紀錄</string>
|
||||
<string name="show_call_confirmation_dialog">開始通話前顯示通話確認框</string>
|
||||
<string name="show_only_contacts_with_numbers">Show only contacts with phone numbers</string>
|
||||
|
||||
<!-- Emails -->
|
||||
<string name="email">電子信箱</string>
|
||||
@ -98,8 +104,8 @@
|
||||
<string name="filename_without_vcf">檔案名稱 (不含.vcf)</string>
|
||||
|
||||
<!-- Dialpad -->
|
||||
<string name="dialpad">Dialpad</string>
|
||||
<string name="add_number_to_contact">Add number to contact</string>
|
||||
<string name="dialpad">撥號畫面</string>
|
||||
<string name="add_number_to_contact">添加號碼至通訊錄</string>
|
||||
|
||||
<!-- Visible fields -->
|
||||
<string name="select_fields_to_show">選擇要顯示的欄位</string>
|
||||
@ -114,7 +120,7 @@
|
||||
<string name="websites">網站</string>
|
||||
<string name="groups">群組</string>
|
||||
<string name="contact_source">聯絡人來源</string>
|
||||
<string name="instant_messaging">Instant messaging (IM)</string>
|
||||
<string name="instant_messaging">即時通訊 (IM)</string>
|
||||
|
||||
<!-- FAQ -->
|
||||
<string name="faq_1_title">我想要更改在通訊錄會看到哪些欄位。我能這麼做嗎?</string>
|
||||
|
@ -10,8 +10,10 @@
|
||||
<string name="hangouts">Hangouts</string>
|
||||
<string name="icq">ICQ</string>
|
||||
<string name="jabber">Jabber</string>
|
||||
<string name="telegram">Telegram</string>
|
||||
|
||||
<!-- Release notes -->
|
||||
<string name="release_34">Added new options for toggling 24 hour time format and showing only contacts with phone numbers</string>
|
||||
<string name="release_32">Added a simple dialpad, dialer will come soon</string>
|
||||
<string name="release_31">
|
||||
Added an optional IM field\n
|
||||
|
@ -18,6 +18,11 @@
|
||||
<string name="create_new_contact">Create new contact</string>
|
||||
<string name="add_to_existing_contact">Add to an existing contact</string>
|
||||
|
||||
<!-- Placeholders -->
|
||||
<string name="no_contacts_found">No contacts found</string>
|
||||
<string name="no_contacts_with_emails">No contacts with emails have been found</string>
|
||||
<string name="no_contacts_with_phone_numbers">No contacts with phone numbers have been found</string>
|
||||
|
||||
<string name="new_contact">New contact</string>
|
||||
<string name="edit_contact">Edit contact</string>
|
||||
<string name="select_contact">Select contact</string>
|
||||
@ -57,6 +62,7 @@
|
||||
<string name="favorites">Favorites</string>
|
||||
<string name="recent_calls">Recent calls</string>
|
||||
<string name="show_call_confirmation_dialog">Show a call confirmation dialog before initiating a call</string>
|
||||
<string name="show_only_contacts_with_numbers">Show only contacts with phone numbers</string>
|
||||
|
||||
<!-- Emails -->
|
||||
<string name="email">Email</string>
|
||||
|
@ -2,15 +2,12 @@
|
||||
|
||||
<style name="AppTheme" parent="AppTheme.Base"/>
|
||||
|
||||
<style name="DialpadNumberStyle.Base">
|
||||
<style name="DialpadNumberStyle">
|
||||
<item name="android:gravity">center</item>
|
||||
<item name="android:paddingBottom">@dimen/medium_margin</item>
|
||||
<item name="android:paddingTop">@dimen/normal_margin</item>
|
||||
<item name="android:textSize">@dimen/dialpad_text_size</item>
|
||||
</style>
|
||||
|
||||
<style name="DialpadNumberStyle" parent="DialpadNumberStyle.Base">
|
||||
<item name="android:background">?attr/selectableItemBackground</item>
|
||||
<item name="android:background">?attr/selectableItemBackgroundBorderless</item>
|
||||
</style>
|
||||
|
||||
</resources>
|
||||
|
@ -9,7 +9,7 @@ buildscript {
|
||||
}
|
||||
|
||||
dependencies {
|
||||
classpath 'com.android.tools.build:gradle:3.2.0'
|
||||
classpath 'com.android.tools.build:gradle:3.2.1'
|
||||
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
|
||||
|
||||
// NOTE: Do not place your application dependencies here; they belong
|
||||
|
Before Width: | Height: | Size: 79 KiB After Width: | Height: | Size: 461 KiB |
Before Width: | Height: | Size: 58 KiB After Width: | Height: | Size: 336 KiB |
Before Width: | Height: | Size: 90 KiB After Width: | Height: | Size: 302 KiB |
After Width: | Height: | Size: 328 KiB |
2
gradle.properties
Normal file
@ -0,0 +1,2 @@
|
||||
android.enableJetifier=true
|
||||
android.useAndroidX=true
|