15
.gitignore
vendored
@ -1,21 +1,6 @@
|
|||||||
# Temp files
|
|
||||||
*~
|
|
||||||
*.bak
|
|
||||||
*.backup
|
|
||||||
\#*
|
|
||||||
.\#*
|
|
||||||
*\#
|
|
||||||
*.swp
|
|
||||||
*.swap
|
|
||||||
*.sav
|
|
||||||
*.save
|
|
||||||
*.autosav
|
|
||||||
*.autosave
|
|
||||||
|
|
||||||
*.iml
|
*.iml
|
||||||
.gradle
|
.gradle
|
||||||
/local.properties
|
/local.properties
|
||||||
/gradle.properties
|
|
||||||
/.idea/
|
/.idea/
|
||||||
.DS_Store
|
.DS_Store
|
||||||
/build
|
/build
|
||||||
|
18
CHANGELOG.md
@ -1,6 +1,24 @@
|
|||||||
Changelog
|
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)*
|
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;">
|
<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.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_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>
|
</div>
|
||||||
|
|
||||||
License
|
License
|
||||||
|
@ -8,10 +8,10 @@ android {
|
|||||||
|
|
||||||
defaultConfig {
|
defaultConfig {
|
||||||
applicationId "com.simplemobiletools.contacts"
|
applicationId "com.simplemobiletools.contacts"
|
||||||
minSdkVersion 16
|
minSdkVersion 21
|
||||||
targetSdkVersion 28
|
targetSdkVersion 28
|
||||||
versionCode 32
|
versionCode 34
|
||||||
versionName "4.5.0"
|
versionName "5.1.0"
|
||||||
setProperty("archivesBaseName", "contacts")
|
setProperty("archivesBaseName", "contacts")
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -41,11 +41,11 @@ android {
|
|||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
implementation 'com.simplemobiletools:commons:4.8.0'
|
implementation 'com.simplemobiletools:commons:5.2.11'
|
||||||
implementation 'joda-time:joda-time:2.9.9'
|
implementation 'joda-time:joda-time:2.9.9'
|
||||||
implementation 'com.facebook.stetho:stetho:1.5.0'
|
implementation 'com.facebook.stetho:stetho:1.5.0'
|
||||||
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
|
implementation 'androidx.constraintlayout:constraintlayout:2.0.0-alpha2'
|
||||||
compile 'com.googlecode.ez-vcard:ez-vcard:0.10.4'
|
implementation 'com.googlecode.ez-vcard:ez-vcard:0.10.4'
|
||||||
}
|
}
|
||||||
|
|
||||||
Properties props = new Properties()
|
Properties props = new Properties()
|
||||||
|
@ -194,7 +194,7 @@
|
|||||||
android:parentActivityName=".activities.MainActivity"/>
|
android:parentActivityName=".activities.MainActivity"/>
|
||||||
|
|
||||||
<provider
|
<provider
|
||||||
android:name="android.support.v4.content.FileProvider"
|
android:name="androidx.core.content.FileProvider"
|
||||||
android:authorities="${applicationId}.provider"
|
android:authorities="${applicationId}.provider"
|
||||||
android:exported="false"
|
android:exported="false"
|
||||||
android:grantUriPermissions="true">
|
android:grantUriPermissions="true">
|
||||||
|
@ -1,21 +1,16 @@
|
|||||||
package com.simplemobiletools.contacts.activities
|
package com.simplemobiletools.contacts.activities
|
||||||
|
|
||||||
import android.annotation.TargetApi
|
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.graphics.Color
|
import android.graphics.Color
|
||||||
import android.os.Build
|
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.text.InputType
|
|
||||||
import android.view.KeyEvent
|
import android.view.KeyEvent
|
||||||
import android.view.Menu
|
import android.view.Menu
|
||||||
import android.view.MenuItem
|
import android.view.MenuItem
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import com.simplemobiletools.commons.extensions.*
|
import com.simplemobiletools.commons.extensions.*
|
||||||
import com.simplemobiletools.commons.helpers.isLollipopPlus
|
|
||||||
import com.simplemobiletools.contacts.R
|
import com.simplemobiletools.contacts.R
|
||||||
import com.simplemobiletools.contacts.adapters.ContactsAdapter
|
import com.simplemobiletools.contacts.adapters.ContactsAdapter
|
||||||
import com.simplemobiletools.contacts.dialogs.CallConfirmationDialog
|
import com.simplemobiletools.contacts.dialogs.CallConfirmationDialog
|
||||||
import com.simplemobiletools.contacts.extensions.afterTextChanged
|
|
||||||
import com.simplemobiletools.contacts.extensions.callContact
|
import com.simplemobiletools.contacts.extensions.callContact
|
||||||
import com.simplemobiletools.contacts.extensions.config
|
import com.simplemobiletools.contacts.extensions.config
|
||||||
import com.simplemobiletools.contacts.extensions.startCallIntent
|
import com.simplemobiletools.contacts.extensions.startCallIntent
|
||||||
@ -47,7 +42,7 @@ class DialpadActivity : SimpleActivity() {
|
|||||||
dialpad_clear_char.setOnClickListener { clearChar(it) }
|
dialpad_clear_char.setOnClickListener { clearChar(it) }
|
||||||
dialpad_clear_char.setOnLongClickListener { clearInput(); true }
|
dialpad_clear_char.setOnLongClickListener { clearInput(); true }
|
||||||
dialpad_call_button.setOnClickListener { initCall() }
|
dialpad_call_button.setOnClickListener { initCall() }
|
||||||
dialpad_input.afterTextChanged { dialpadValueChanged(it) }
|
dialpad_input.onTextChangeListener { dialpadValueChanged(it) }
|
||||||
ContactsHelper(this).getContacts { gotContacts(it) }
|
ContactsHelper(this).getContacts { gotContacts(it) }
|
||||||
disableKeyboardPopping()
|
disableKeyboardPopping()
|
||||||
|
|
||||||
@ -120,13 +115,8 @@ class DialpadActivity : SimpleActivity() {
|
|||||||
else -> KeyEvent.KEYCODE_POUND
|
else -> KeyEvent.KEYCODE_POUND
|
||||||
}
|
}
|
||||||
|
|
||||||
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
|
|
||||||
private fun disableKeyboardPopping() {
|
private fun disableKeyboardPopping() {
|
||||||
if (isLollipopPlus()) {
|
dialpad_input.showSoftInputOnFocus = false
|
||||||
dialpad_input.showSoftInputOnFocus = false
|
|
||||||
} else {
|
|
||||||
dialpad_input.inputType = InputType.TYPE_NULL
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun gotContacts(newContacts: ArrayList<Contact>) {
|
private fun gotContacts(newContacts: ArrayList<Contact>) {
|
||||||
|
@ -5,6 +5,7 @@ import android.app.DatePickerDialog
|
|||||||
import android.content.ClipData
|
import android.content.ClipData
|
||||||
import android.content.ContentValues
|
import android.content.ContentValues
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
|
import android.graphics.Bitmap
|
||||||
import android.graphics.drawable.ColorDrawable
|
import android.graphics.drawable.ColorDrawable
|
||||||
import android.net.Uri
|
import android.net.Uri
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
@ -114,7 +115,7 @@ class EditContactActivity : ContactActivity() {
|
|||||||
super.onActivityResult(requestCode, resultCode, resultData)
|
super.onActivityResult(requestCode, resultCode, resultData)
|
||||||
if (resultCode == RESULT_OK) {
|
if (resultCode == RESULT_OK) {
|
||||||
when (requestCode) {
|
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)
|
INTENT_CROP_PHOTO -> updateContactPhoto(lastPhotoIntentUri.toString(), contact_photo)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -260,15 +261,28 @@ class EditContactActivity : ContactActivity() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun startCropPhotoIntent(uri: Uri?) {
|
private fun startCropPhotoIntent(primaryUri: Uri?, backupUri: Uri?) {
|
||||||
if (uri == null) {
|
if (primaryUri == null) {
|
||||||
toast(R.string.unknown_error_occurred)
|
toast(R.string.unknown_error_occurred)
|
||||||
return
|
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()
|
lastPhotoIntentUri = getCachePhotoUri()
|
||||||
Intent("com.android.camera.action.CROP").apply {
|
Intent("com.android.camera.action.CROP").apply {
|
||||||
setDataAndType(uri, "image/*")
|
setDataAndType(imageUri, "image/*")
|
||||||
putExtra(MediaStore.EXTRA_OUTPUT, lastPhotoIntentUri)
|
putExtra(MediaStore.EXTRA_OUTPUT, lastPhotoIntentUri)
|
||||||
putExtra("outputX", 720)
|
putExtra("outputX", 720)
|
||||||
putExtra("outputY", 720)
|
putExtra("outputY", 720)
|
||||||
@ -277,7 +291,7 @@ class EditContactActivity : ContactActivity() {
|
|||||||
putExtra("crop", "true")
|
putExtra("crop", "true")
|
||||||
putExtra("scale", "true")
|
putExtra("scale", "true")
|
||||||
putExtra("scaleUpIfNeeded", "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)
|
addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION or Intent.FLAG_GRANT_WRITE_URI_PERMISSION)
|
||||||
if (resolveActivity(packageManager) != null) {
|
if (resolveActivity(packageManager) != null) {
|
||||||
startActivityForResult(this, INTENT_CROP_PHOTO)
|
startActivityForResult(this, INTENT_CROP_PHOTO)
|
||||||
|
@ -9,11 +9,11 @@ import android.graphics.drawable.Drawable
|
|||||||
import android.net.Uri
|
import android.net.Uri
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.os.Handler
|
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.Menu
|
||||||
import android.view.MenuItem
|
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.dialogs.FilePickerDialog
|
||||||
import com.simplemobiletools.commons.extensions.*
|
import com.simplemobiletools.commons.extensions.*
|
||||||
import com.simplemobiletools.commons.helpers.*
|
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.FilterContactSourcesDialog
|
||||||
import com.simplemobiletools.contacts.dialogs.ImportContactsDialog
|
import com.simplemobiletools.contacts.dialogs.ImportContactsDialog
|
||||||
import com.simplemobiletools.contacts.extensions.config
|
import com.simplemobiletools.contacts.extensions.config
|
||||||
import com.simplemobiletools.contacts.extensions.dbHelper
|
|
||||||
import com.simplemobiletools.contacts.extensions.getTempFile
|
import com.simplemobiletools.contacts.extensions.getTempFile
|
||||||
import com.simplemobiletools.contacts.fragments.MyViewPagerFragment
|
import com.simplemobiletools.contacts.fragments.MyViewPagerFragment
|
||||||
import com.simplemobiletools.contacts.helpers.*
|
import com.simplemobiletools.contacts.helpers.*
|
||||||
@ -63,9 +62,6 @@ class MainActivity : SimpleActivity(), RefreshContactsListener {
|
|||||||
appLaunched(BuildConfig.APPLICATION_ID)
|
appLaunched(BuildConfig.APPLICATION_ID)
|
||||||
setupTabColors()
|
setupTabColors()
|
||||||
|
|
||||||
// just get a reference to the database to make sure it is created properly
|
|
||||||
dbHelper
|
|
||||||
|
|
||||||
handlePermission(PERMISSION_READ_CALL_LOG) {
|
handlePermission(PERMISSION_READ_CALL_LOG) {
|
||||||
if (it) {
|
if (it) {
|
||||||
handlePermission(PERMISSION_WRITE_CALL_LOG) {
|
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() {
|
private fun initFragments() {
|
||||||
viewpager.offscreenPageLimit = 3
|
viewpager.offscreenPageLimit = tabsList.size - 1
|
||||||
viewpager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener {
|
viewpager.addOnPageChangeListener(object : ViewPager.OnPageChangeListener {
|
||||||
override fun onPageScrollStateChanged(state: Int) {
|
override fun onPageScrollStateChanged(state: Int) {
|
||||||
if (isSearchOpen) {
|
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) {
|
override fun onPageSelected(position: Int) {
|
||||||
main_tabs_holder.getTabAt(position)?.select()
|
main_tabs_holder.getTabAt(position)?.select()
|
||||||
@ -373,7 +368,7 @@ class MainActivity : SimpleActivity(), RefreshContactsListener {
|
|||||||
}, 100L)
|
}, 100L)
|
||||||
}
|
}
|
||||||
|
|
||||||
main_tabs_holder.beVisibleIf(skippedTabs < 3)
|
main_tabs_holder.beVisibleIf(skippedTabs < tabsList.size - 1)
|
||||||
|
|
||||||
main_dialpad_button.setOnClickListener {
|
main_dialpad_button.setOnClickListener {
|
||||||
val intent = Intent(applicationContext, DialpadActivity::class.java)
|
val intent = Intent(applicationContext, DialpadActivity::class.java)
|
||||||
@ -401,7 +396,7 @@ class MainActivity : SimpleActivity(), RefreshContactsListener {
|
|||||||
fun showFilterDialog() {
|
fun showFilterDialog() {
|
||||||
FilterContactSourcesDialog(this) {
|
FilterContactSourcesDialog(this) {
|
||||||
contacts_fragment?.forceListRedraw = true
|
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() {
|
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(
|
val faqItems = arrayListOf(
|
||||||
FAQItem(R.string.faq_1_title, R.string.faq_1_text),
|
FAQItem(R.string.faq_1_title, R.string.faq_1_text),
|
||||||
@ -495,9 +490,10 @@ class MainActivity : SimpleActivity(), RefreshContactsListener {
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun refreshContacts(refreshTabsMask: Int) {
|
override fun refreshContacts(refreshTabsMask: Int) {
|
||||||
if (isActivityDestroyed() || isGettingContacts) {
|
if (isDestroyed || isGettingContacts) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
isGettingContacts = true
|
isGettingContacts = true
|
||||||
|
|
||||||
if (viewpager.adapter == null) {
|
if (viewpager.adapter == null) {
|
||||||
@ -507,7 +503,7 @@ class MainActivity : SimpleActivity(), RefreshContactsListener {
|
|||||||
|
|
||||||
ContactsHelper(this).getContacts {
|
ContactsHelper(this).getContacts {
|
||||||
isGettingContacts = false
|
isGettingContacts = false
|
||||||
if (isActivityDestroyed()) {
|
if (isDestroyed) {
|
||||||
return@getContacts
|
return@getContacts
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -551,6 +547,7 @@ class MainActivity : SimpleActivity(), RefreshContactsListener {
|
|||||||
add(Release(29, R.string.release_29))
|
add(Release(29, R.string.release_29))
|
||||||
add(Release(31, R.string.release_31))
|
add(Release(31, R.string.release_31))
|
||||||
add(Release(32, R.string.release_32))
|
add(Release(32, R.string.release_32))
|
||||||
|
add(Release(34, R.string.release_34))
|
||||||
checkWhatsNew(this, BuildConfig.VERSION_CODE)
|
checkWhatsNew(this, BuildConfig.VERSION_CODE)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -6,9 +6,7 @@ import android.os.Bundle
|
|||||||
import android.provider.ContactsContract
|
import android.provider.ContactsContract
|
||||||
import android.view.Menu
|
import android.view.Menu
|
||||||
import android.view.MenuItem
|
import android.view.MenuItem
|
||||||
import com.simplemobiletools.commons.extensions.baseConfig
|
import com.simplemobiletools.commons.extensions.*
|
||||||
import com.simplemobiletools.commons.extensions.isActivityDestroyed
|
|
||||||
import com.simplemobiletools.commons.extensions.toast
|
|
||||||
import com.simplemobiletools.commons.helpers.PERMISSION_READ_CONTACTS
|
import com.simplemobiletools.commons.helpers.PERMISSION_READ_CONTACTS
|
||||||
import com.simplemobiletools.commons.helpers.PERMISSION_WRITE_CONTACTS
|
import com.simplemobiletools.commons.helpers.PERMISSION_WRITE_CONTACTS
|
||||||
import com.simplemobiletools.contacts.R
|
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.ContactsHelper
|
||||||
import com.simplemobiletools.contacts.helpers.SMT_PRIVATE
|
import com.simplemobiletools.contacts.helpers.SMT_PRIVATE
|
||||||
import com.simplemobiletools.contacts.models.Contact
|
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() {
|
class SelectContactActivity : SimpleActivity() {
|
||||||
private var specialMimeType: String? = null
|
private var specialMimeType: String? = null
|
||||||
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
setContentView(R.layout.layout_select_contact)
|
setContentView(R.layout.activity_select_contact)
|
||||||
|
setupPlaceholders()
|
||||||
|
|
||||||
handlePermission(PERMISSION_READ_CONTACTS) {
|
handlePermission(PERMISSION_READ_CONTACTS) {
|
||||||
if (it) {
|
if (it) {
|
||||||
@ -80,7 +79,7 @@ class SelectContactActivity : SimpleActivity() {
|
|||||||
|
|
||||||
private fun initContacts() {
|
private fun initContacts() {
|
||||||
ContactsHelper(this).getContacts {
|
ContactsHelper(this).getContacts {
|
||||||
if (isActivityDestroyed()) {
|
if (isDestroyed) {
|
||||||
return@getContacts
|
return@getContacts
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -105,8 +104,11 @@ class SelectContactActivity : SimpleActivity() {
|
|||||||
contacts.sort()
|
contacts.sort()
|
||||||
|
|
||||||
runOnUiThread {
|
runOnUiThread {
|
||||||
select_contact_list.adapter = SelectContactsAdapter(this, contacts, ArrayList(), false) {
|
updatePlaceholderVisibility(contacts)
|
||||||
|
SelectContactsAdapter(this, contacts, ArrayList(), false, select_contact_list) {
|
||||||
confirmSelection(it)
|
confirmSelection(it)
|
||||||
|
}.apply {
|
||||||
|
select_contact_list.adapter = this
|
||||||
}
|
}
|
||||||
|
|
||||||
select_contact_fastscroller.allowBubbleDisplay = baseConfig.showInfoBubble
|
select_contact_fastscroller.allowBubbleDisplay = baseConfig.showInfoBubble
|
||||||
@ -132,9 +134,29 @@ class SelectContactActivity : SimpleActivity() {
|
|||||||
val contactId = ContactsHelper(this).getContactMimeTypeId(contact.id.toString(), specialMimeType!!)
|
val contactId = ContactsHelper(this).getContactMimeTypeId(contact.id.toString(), specialMimeType!!)
|
||||||
Uri.withAppendedPath(ContactsContract.Data.CONTENT_URI, contactId)
|
Uri.withAppendedPath(ContactsContract.Data.CONTENT_URI, contactId)
|
||||||
}
|
}
|
||||||
else -> {
|
else -> getContactPublicUri(contact)
|
||||||
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()
|
setupShowInfoBubble()
|
||||||
setupShowContactThumbnails()
|
setupShowContactThumbnails()
|
||||||
setupShowPhoneNumbers()
|
setupShowPhoneNumbers()
|
||||||
|
setupShowContactsWithNumbers()
|
||||||
setupStartNameWithSurname()
|
setupStartNameWithSurname()
|
||||||
|
setupUse24HourTimeFormat()
|
||||||
setupFilterDuplicates()
|
setupFilterDuplicates()
|
||||||
setupShowCallConfirmation()
|
setupShowCallConfirmation()
|
||||||
setupOnContactClick()
|
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() {
|
private fun setupStartNameWithSurname() {
|
||||||
settings_start_with_surname.isChecked = config.startNameWithSurname
|
settings_start_with_surname.isChecked = config.startNameWithSurname
|
||||||
settings_start_with_surname_holder.setOnClickListener {
|
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() {
|
private fun setupFilterDuplicates() {
|
||||||
settings_filter_duplicates.isChecked = config.filterDuplicates
|
settings_filter_duplicates.isChecked = config.filterDuplicates
|
||||||
settings_filter_duplicates_holder.setOnClickListener {
|
settings_filter_duplicates_holder.setOnClickListener {
|
||||||
|
@ -354,12 +354,16 @@ class ViewContactActivity : ContactActivity() {
|
|||||||
|
|
||||||
private fun setupOrganization() {
|
private fun setupOrganization() {
|
||||||
val organization = contact!!.organization
|
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_company.text = organization.company
|
||||||
contact_organization_job_position.text = organization.jobPosition
|
contact_organization_job_position.text = organization.jobPosition
|
||||||
contact_organization_image.beGoneIf(organization.isEmpty())
|
contact_organization_image.beGoneIf(organization.isEmpty())
|
||||||
contact_organization_company.beGoneIf(organization.company.isEmpty())
|
contact_organization_company.beGoneIf(organization.company.isEmpty())
|
||||||
contact_organization_job_position.beGoneIf(organization.jobPosition.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 {
|
} else {
|
||||||
contact_organization_image.beGone()
|
contact_organization_image.beGone()
|
||||||
contact_organization_company.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.adapters.MyRecyclerViewAdapter
|
||||||
import com.simplemobiletools.commons.dialogs.ConfirmationDialog
|
import com.simplemobiletools.commons.dialogs.ConfirmationDialog
|
||||||
import com.simplemobiletools.commons.dialogs.RadioGroupDialog
|
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.models.RadioItem
|
||||||
import com.simplemobiletools.commons.views.FastScroller
|
import com.simplemobiletools.commons.views.FastScroller
|
||||||
import com.simplemobiletools.commons.views.MyRecyclerView
|
import com.simplemobiletools.commons.views.MyRecyclerView
|
||||||
@ -33,6 +36,7 @@ class ContactsAdapter(activity: SimpleActivity, var contactItems: ArrayList<Cont
|
|||||||
MyRecyclerViewAdapter(activity, recyclerView, fastScroller, itemClick) {
|
MyRecyclerViewAdapter(activity, recyclerView, fastScroller, itemClick) {
|
||||||
|
|
||||||
private lateinit var contactDrawable: Drawable
|
private lateinit var contactDrawable: Drawable
|
||||||
|
private lateinit var businessContactDrawable: Drawable
|
||||||
private var config = activity.config
|
private var config = activity.config
|
||||||
private var textToHighlight = highlightText
|
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) {
|
override fun actionItemPressed(id: Int) {
|
||||||
if (selectedPositions.isEmpty()) {
|
if (selectedKeys.isEmpty()) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -100,6 +98,10 @@ class ContactsAdapter(activity: SimpleActivity, var contactItems: ArrayList<Cont
|
|||||||
|
|
||||||
override fun getIsItemSelectable(position: Int) = true
|
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 {
|
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
|
val layout = if (showPhoneNumbers) R.layout.item_contact_with_number else R.layout.item_contact_without_number
|
||||||
return createViewHolder(layout, parent)
|
return createViewHolder(layout, parent)
|
||||||
@ -108,16 +110,19 @@ class ContactsAdapter(activity: SimpleActivity, var contactItems: ArrayList<Cont
|
|||||||
override fun onBindViewHolder(holder: MyRecyclerViewAdapter.ViewHolder, position: Int) {
|
override fun onBindViewHolder(holder: MyRecyclerViewAdapter.ViewHolder, position: Int) {
|
||||||
val contact = contactItems[position]
|
val contact = contactItems[position]
|
||||||
val allowLongClick = location != LOCATION_INSERT_OR_EDIT
|
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)
|
setupView(itemView, contact)
|
||||||
}
|
}
|
||||||
bindViewHolder(holder, position, view)
|
bindViewHolder(holder)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun getItemCount() = contactItems.size
|
override fun getItemCount() = contactItems.size
|
||||||
|
|
||||||
|
private fun getItemWithKey(key: Int): Contact? = contactItems.firstOrNull { it.id == key }
|
||||||
|
|
||||||
fun initDrawables() {
|
fun initDrawables() {
|
||||||
contactDrawable = activity.resources.getColoredDrawableWithColor(R.drawable.ic_person, textColor)
|
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 = "") {
|
fun updateItems(newItems: ArrayList<Contact>, highlightText: String = "") {
|
||||||
@ -134,7 +139,8 @@ class ContactsAdapter(activity: SimpleActivity, var contactItems: ArrayList<Cont
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun editContact() {
|
private fun editContact() {
|
||||||
activity.editContact(contactItems[selectedPositions.first()])
|
val contact = getItemWithKey(selectedKeys.first()) ?: return
|
||||||
|
activity.editContact(contact)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun askConfirmDelete() {
|
private fun askConfirmDelete() {
|
||||||
@ -144,17 +150,12 @@ class ContactsAdapter(activity: SimpleActivity, var contactItems: ArrayList<Cont
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun deleteContacts() {
|
private fun deleteContacts() {
|
||||||
if (selectedPositions.isEmpty()) {
|
if (selectedKeys.isEmpty()) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
val contactsToRemove = ArrayList<Contact>()
|
val contactsToRemove = getSelectedItems()
|
||||||
selectedPositions.sortedDescending().forEach {
|
val positions = getSelectedItemPositions()
|
||||||
val contact = contactItems.getOrNull(it)
|
|
||||||
if (contact != null) {
|
|
||||||
contactsToRemove.add(contact)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
contactItems.removeAll(contactsToRemove)
|
contactItems.removeAll(contactsToRemove)
|
||||||
|
|
||||||
ContactsHelper(activity).deleteContacts(contactsToRemove)
|
ContactsHelper(activity).deleteContacts(contactsToRemove)
|
||||||
@ -162,16 +163,15 @@ class ContactsAdapter(activity: SimpleActivity, var contactItems: ArrayList<Cont
|
|||||||
refreshListener?.refreshContacts(ALL_TABS_MASK)
|
refreshListener?.refreshContacts(ALL_TABS_MASK)
|
||||||
finishActMode()
|
finishActMode()
|
||||||
} else {
|
} else {
|
||||||
removeSelectedItems()
|
removeSelectedItems(positions)
|
||||||
refreshListener?.refreshContacts(CONTACTS_TAB_MASK or FAVORITES_TAB_MASK)
|
refreshListener?.refreshContacts(CONTACTS_TAB_MASK or FAVORITES_TAB_MASK)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// used for removing contacts from groups or favorites, not deleting actual contacts
|
||||||
private fun removeContacts() {
|
private fun removeContacts() {
|
||||||
val contactsToRemove = ArrayList<Contact>()
|
val contactsToRemove = getSelectedItems()
|
||||||
selectedPositions.sortedDescending().forEach {
|
val positions = getSelectedItemPositions()
|
||||||
contactsToRemove.add(contactItems[it])
|
|
||||||
}
|
|
||||||
contactItems.removeAll(contactsToRemove)
|
contactItems.removeAll(contactsToRemove)
|
||||||
|
|
||||||
if (location == LOCATION_FAVORITES_TAB) {
|
if (location == LOCATION_FAVORITES_TAB) {
|
||||||
@ -180,22 +180,22 @@ class ContactsAdapter(activity: SimpleActivity, var contactItems: ArrayList<Cont
|
|||||||
refreshListener?.refreshContacts(FAVORITES_TAB_MASK)
|
refreshListener?.refreshContacts(FAVORITES_TAB_MASK)
|
||||||
finishActMode()
|
finishActMode()
|
||||||
} else {
|
} else {
|
||||||
removeSelectedItems()
|
removeSelectedItems(positions)
|
||||||
}
|
}
|
||||||
} else if (location == LOCATION_GROUP_CONTACTS) {
|
} else if (location == LOCATION_GROUP_CONTACTS) {
|
||||||
removeListener?.removeFromGroup(contactsToRemove)
|
removeListener?.removeFromGroup(contactsToRemove)
|
||||||
removeSelectedItems()
|
removeSelectedItems(positions)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun addToFavorites() {
|
private fun addToFavorites() {
|
||||||
ContactsHelper(activity).addFavorites(getSelectedContacts())
|
ContactsHelper(activity).addFavorites(getSelectedItems())
|
||||||
refreshListener?.refreshContacts(FAVORITES_TAB_MASK)
|
refreshListener?.refreshContacts(FAVORITES_TAB_MASK)
|
||||||
finishActMode()
|
finishActMode()
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun addToGroup() {
|
private fun addToGroup() {
|
||||||
val selectedContacts = getSelectedContacts()
|
val selectedContacts = getSelectedItems()
|
||||||
val NEW_GROUP_ID = -1
|
val NEW_GROUP_ID = -1
|
||||||
val items = ArrayList<RadioItem>()
|
val items = ArrayList<RadioItem>()
|
||||||
ContactsHelper(activity).getStoredGroups().forEach {
|
ContactsHelper(activity).getStoredGroups().forEach {
|
||||||
@ -223,41 +223,30 @@ class ContactsAdapter(activity: SimpleActivity, var contactItems: ArrayList<Cont
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun shareContacts() {
|
private fun shareContacts() {
|
||||||
val contactsIDs = ArrayList<Int>()
|
activity.shareContacts(getSelectedItems())
|
||||||
selectedPositions.forEach {
|
|
||||||
contactsIDs.add(contactItems[it].id)
|
|
||||||
}
|
|
||||||
|
|
||||||
val filtered = contactItems.filter { contactsIDs.contains(it.id) } as ArrayList<Contact>
|
|
||||||
activity.shareContacts(filtered)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun sendSMSToContacts() {
|
private fun sendSMSToContacts() {
|
||||||
activity.sendSMSToContacts(getSelectedContacts())
|
activity.sendSMSToContacts(getSelectedItems())
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun sendEmailToContacts() {
|
private fun sendEmailToContacts() {
|
||||||
activity.sendEmailToContacts(getSelectedContacts())
|
activity.sendEmailToContacts(getSelectedItems())
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun getSelectedContacts(): ArrayList<Contact> {
|
private fun getSelectedItems() = contactItems.filter { selectedKeys.contains(it.id) } as ArrayList<Contact>
|
||||||
val contacts = ArrayList<Contact>()
|
|
||||||
selectedPositions.forEach {
|
|
||||||
contacts.add(contactItems[it])
|
|
||||||
}
|
|
||||||
return contacts
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onViewRecycled(holder: ViewHolder) {
|
override fun onViewRecycled(holder: ViewHolder) {
|
||||||
super.onViewRecycled(holder)
|
super.onViewRecycled(holder)
|
||||||
if (!activity.isActivityDestroyed()) {
|
if (!activity.isDestroyed) {
|
||||||
Glide.with(activity).clear(holder.itemView?.contact_tmb!!)
|
Glide.with(activity).clear(holder.itemView.contact_tmb)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun setupView(view: View, contact: Contact) {
|
private fun setupView(view: View, contact: Contact) {
|
||||||
view.apply {
|
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.text = if (textToHighlight.isEmpty()) fullName else fullName.highlightTextPart(textToHighlight, adjustedPrimaryColor)
|
||||||
contact_name.setTextColor(textColor)
|
contact_name.setTextColor(textColor)
|
||||||
contact_name.setPadding(if (showContactThumbnails) smallPadding else bigPadding, smallPadding, smallPadding, 0)
|
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)
|
contact_tmb.beVisibleIf(showContactThumbnails)
|
||||||
|
|
||||||
if (showContactThumbnails) {
|
if (showContactThumbnails) {
|
||||||
|
val placeholderImage = if (contact.isABusinessContact()) businessContactDrawable else contactDrawable
|
||||||
when {
|
when {
|
||||||
contact.photoUri.isNotEmpty() -> {
|
contact.photoUri.isNotEmpty() -> {
|
||||||
val options = RequestOptions()
|
val options = RequestOptions()
|
||||||
.signature(ObjectKey(contact.photoUri))
|
.signature(ObjectKey(contact.photoUri))
|
||||||
.diskCacheStrategy(DiskCacheStrategy.RESOURCE)
|
.diskCacheStrategy(DiskCacheStrategy.RESOURCE)
|
||||||
.error(contactDrawable)
|
.error(placeholderImage)
|
||||||
.centerCrop()
|
.centerCrop()
|
||||||
|
|
||||||
Glide.with(activity).load(contact.photoUri).transition(DrawableTransitionOptions.withCrossFade()).apply(options).into(contact_tmb)
|
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()
|
val options = RequestOptions()
|
||||||
.signature(ObjectKey(contact.photo!!))
|
.signature(ObjectKey(contact.photo!!))
|
||||||
.diskCacheStrategy(DiskCacheStrategy.RESOURCE)
|
.diskCacheStrategy(DiskCacheStrategy.RESOURCE)
|
||||||
.error(contactDrawable)
|
.error(placeholderImage)
|
||||||
.centerCrop()
|
.centerCrop()
|
||||||
|
|
||||||
Glide.with(activity).load(contact.photo).transition(DrawableTransitionOptions.withCrossFade()).apply(options).into(contact_tmb)
|
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
|
package com.simplemobiletools.contacts.adapters
|
||||||
|
|
||||||
import android.support.v7.widget.RecyclerView
|
|
||||||
import android.util.SparseArray
|
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
import com.simplemobiletools.commons.extensions.getAdjustedPrimaryColor
|
import com.simplemobiletools.commons.extensions.getAdjustedPrimaryColor
|
||||||
import com.simplemobiletools.commons.interfaces.MyAdapterListener
|
|
||||||
import com.simplemobiletools.contacts.R
|
import com.simplemobiletools.contacts.R
|
||||||
import com.simplemobiletools.contacts.activities.SimpleActivity
|
import com.simplemobiletools.contacts.activities.SimpleActivity
|
||||||
import com.simplemobiletools.contacts.extensions.config
|
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>) :
|
class FilterContactSourcesAdapter(val activity: SimpleActivity, private val contactSources: List<ContactSource>, private val displayContactSources: ArrayList<String>) :
|
||||||
RecyclerView.Adapter<FilterContactSourcesAdapter.ViewHolder>() {
|
RecyclerView.Adapter<FilterContactSourcesAdapter.ViewHolder>() {
|
||||||
private val itemViews = SparseArray<View>()
|
private val selectedKeys = HashSet<Int>()
|
||||||
private val selectedPositions = HashSet<Int>()
|
|
||||||
|
|
||||||
init {
|
init {
|
||||||
contactSources.forEachIndexed { index, contactSource ->
|
contactSources.forEachIndexed { index, contactSource ->
|
||||||
if (displayContactSources.contains(contactSource.name)) {
|
if (displayContactSources.contains(contactSource.name)) {
|
||||||
selectedPositions.add(index)
|
selectedKeys.add(contactSource.hashCode())
|
||||||
}
|
}
|
||||||
|
|
||||||
if (contactSource.name == activity.config.localAccountName && contactSource.type == activity.config.localAccountType) {
|
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)) {
|
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 (select) {
|
||||||
if (itemViews[pos] != null) {
|
selectedKeys.add(contactSource.hashCode())
|
||||||
selectedPositions.add(pos)
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
selectedPositions.remove(pos)
|
selectedKeys.remove(contactSource.hashCode())
|
||||||
}
|
}
|
||||||
|
|
||||||
itemViews[pos]?.filter_contact_source_checkbox?.isChecked = select
|
notifyItemChanged(position)
|
||||||
}
|
}
|
||||||
|
|
||||||
private val adapterListener = object : MyAdapterListener {
|
fun getSelectedContactSources() = contactSources.filter { selectedKeys.contains(it.hashCode()) }
|
||||||
override fun toggleItemSelectionAdapter(select: Boolean, position: Int) {
|
|
||||||
toggleItemSelection(select, position)
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun getSelectedPositions() = selectedPositions
|
|
||||||
|
|
||||||
override fun itemLongClicked(position: Int) {}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun getSelectedItemsSet() = selectedPositions
|
|
||||||
|
|
||||||
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
|
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
|
||||||
val view = activity.layoutInflater.inflate(R.layout.item_filter_contact_source, parent, false)
|
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) {
|
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
|
||||||
val contactSource = contactSources[position]
|
val contactSource = contactSources[position]
|
||||||
itemViews.put(position, holder.bindView(contactSource.name))
|
holder.bindView(contactSource)
|
||||||
toggleItemSelection(selectedPositions.contains(position), position)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun getItemCount() = contactSources.size
|
override fun getItemCount() = contactSources.size
|
||||||
|
|
||||||
class ViewHolder(view: View, private val adapterListener: MyAdapterListener, val activity: SimpleActivity) : RecyclerView.ViewHolder(view) {
|
inner class ViewHolder(view: View) : RecyclerView.ViewHolder(view) {
|
||||||
fun bindView(contactSource: String): View {
|
fun bindView(contactSource: ContactSource): View {
|
||||||
|
val isSelected = selectedKeys.contains(contactSource.hashCode())
|
||||||
itemView.apply {
|
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.setColors(activity.config.textColor, activity.getAdjustedPrimaryColor(), activity.config.backgroundColor)
|
||||||
filter_contact_source_checkbox.text = contactSource
|
filter_contact_source_checkbox.text = contactSource.name
|
||||||
filter_contact_source_holder.setOnClickListener { viewClicked(!filter_contact_source_checkbox.isChecked) }
|
filter_contact_source_holder.setOnClickListener { viewClicked(!isSelected, contactSource) }
|
||||||
}
|
}
|
||||||
|
|
||||||
return itemView
|
return itemView
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun viewClicked(select: Boolean) {
|
private fun viewClicked(select: Boolean, contactSource: ContactSource) {
|
||||||
adapterListener.toggleItemSelectionAdapter(select, adapterPosition)
|
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) {
|
override fun actionItemPressed(id: Int) {
|
||||||
if (selectedPositions.isEmpty()) {
|
if (selectedKeys.isEmpty()) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -63,18 +57,24 @@ class GroupsAdapter(activity: SimpleActivity, var groups: ArrayList<Group>, val
|
|||||||
|
|
||||||
override fun getIsItemSelectable(position: Int) = true
|
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 onCreateViewHolder(parent: ViewGroup, viewType: Int) = createViewHolder(R.layout.item_group, parent)
|
||||||
|
|
||||||
override fun onBindViewHolder(holder: MyRecyclerViewAdapter.ViewHolder, position: Int) {
|
override fun onBindViewHolder(holder: MyRecyclerViewAdapter.ViewHolder, position: Int) {
|
||||||
val group = groups[position]
|
val group = groups[position]
|
||||||
val view = holder.bindView(group, true, true) { itemView, layoutPosition ->
|
holder.bindView(group, true, true) { itemView, layoutPosition ->
|
||||||
setupView(itemView, group)
|
setupView(itemView, group)
|
||||||
}
|
}
|
||||||
bindViewHolder(holder, position, view)
|
bindViewHolder(holder)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun getItemCount() = groups.size
|
override fun getItemCount() = groups.size
|
||||||
|
|
||||||
|
private fun getItemWithKey(key: Int): Group? = groups.firstOrNull { it.id.toInt() == key }
|
||||||
|
|
||||||
fun updateItems(newItems: ArrayList<Group>) {
|
fun updateItems(newItems: ArrayList<Group>) {
|
||||||
groups = newItems
|
groups = newItems
|
||||||
notifyDataSetChanged()
|
notifyDataSetChanged()
|
||||||
@ -83,7 +83,8 @@ class GroupsAdapter(activity: SimpleActivity, var groups: ArrayList<Group>, val
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun renameGroup() {
|
private fun renameGroup() {
|
||||||
RenameGroupDialog(activity, groups[selectedPositions.first()]) {
|
val group = getItemWithKey(selectedKeys.first()) ?: return
|
||||||
|
RenameGroupDialog(activity, group) {
|
||||||
finishActMode()
|
finishActMode()
|
||||||
refreshListener?.refreshContacts(GROUPS_TAB_MASK)
|
refreshListener?.refreshContacts(GROUPS_TAB_MASK)
|
||||||
}
|
}
|
||||||
@ -96,18 +97,17 @@ class GroupsAdapter(activity: SimpleActivity, var groups: ArrayList<Group>, val
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun deleteGroups() {
|
private fun deleteGroups() {
|
||||||
if (selectedPositions.isEmpty()) {
|
if (selectedKeys.isEmpty()) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
val groupsToRemove = ArrayList<Group>()
|
val groupsToRemove = groups.filter { selectedKeys.contains(it.id.toInt()) } as ArrayList<Group>
|
||||||
selectedPositions.sortedDescending().forEach {
|
val positions = getSelectedItemPositions()
|
||||||
val group = groups[it]
|
groupsToRemove.forEach {
|
||||||
groupsToRemove.add(group)
|
if (it.isPrivateSecretGroup()) {
|
||||||
if (group.isPrivateSecretGroup()) {
|
activity.dbHelper.deleteGroup(it.id)
|
||||||
activity.dbHelper.deleteGroup(group.id)
|
|
||||||
} else {
|
} else {
|
||||||
ContactsHelper(activity).deleteGroup(group.id)
|
ContactsHelper(activity).deleteGroup(it.id)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
groups.removeAll(groupsToRemove)
|
groups.removeAll(groupsToRemove)
|
||||||
@ -116,12 +116,13 @@ class GroupsAdapter(activity: SimpleActivity, var groups: ArrayList<Group>, val
|
|||||||
refreshListener?.refreshContacts(GROUPS_TAB_MASK)
|
refreshListener?.refreshContacts(GROUPS_TAB_MASK)
|
||||||
finishActMode()
|
finishActMode()
|
||||||
} else {
|
} else {
|
||||||
removeSelectedItems()
|
removeSelectedItems(positions)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun setupView(view: View, group: Group) {
|
private fun setupView(view: View, group: Group) {
|
||||||
view.apply {
|
view.apply {
|
||||||
|
group_frame?.isSelected = selectedKeys.contains(group.id.toInt())
|
||||||
group_name.apply {
|
group_name.apply {
|
||||||
setTextColor(textColor)
|
setTextColor(textColor)
|
||||||
text = String.format(activity.getString(R.string.groups_placeholder), group.title, group.contactsCount.toString())
|
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 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) {
|
override fun actionItemPressed(id: Int) {
|
||||||
if (selectedPositions.isEmpty()) {
|
if (selectedKeys.isEmpty()) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -51,14 +45,18 @@ class RecentCallsAdapter(activity: SimpleActivity, var recentCalls: ArrayList<Re
|
|||||||
|
|
||||||
override fun getIsItemSelectable(position: Int) = true
|
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 onCreateViewHolder(parent: ViewGroup, viewType: Int) = createViewHolder(R.layout.item_recent_call, parent)
|
||||||
|
|
||||||
override fun onBindViewHolder(holder: MyRecyclerViewAdapter.ViewHolder, position: Int) {
|
override fun onBindViewHolder(holder: MyRecyclerViewAdapter.ViewHolder, position: Int) {
|
||||||
val recentCall = recentCalls[position]
|
val recentCall = recentCalls[position]
|
||||||
val view = holder.bindView(recentCall, true, true) { itemView, layoutPosition ->
|
holder.bindView(recentCall, true, true) { itemView, layoutPosition ->
|
||||||
setupView(itemView, recentCall)
|
setupView(itemView, recentCall)
|
||||||
}
|
}
|
||||||
bindViewHolder(holder, position, view)
|
bindViewHolder(holder)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun getItemCount() = recentCalls.size
|
override fun getItemCount() = recentCalls.size
|
||||||
@ -77,15 +75,12 @@ class RecentCallsAdapter(activity: SimpleActivity, var recentCalls: ArrayList<Re
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun deleteRecentCalls() {
|
private fun deleteRecentCalls() {
|
||||||
if (selectedPositions.isEmpty()) {
|
if (selectedKeys.isEmpty()) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
val callsToRemove = ArrayList<RecentCall>()
|
val callsToRemove = getSelectedItems()
|
||||||
selectedPositions.sortedDescending().forEach {
|
val positions = getSelectedItemPositions()
|
||||||
val call = recentCalls[it]
|
|
||||||
callsToRemove.add(call)
|
|
||||||
}
|
|
||||||
ContactsHelper(activity).removeRecentCalls(callsToRemove.map { it.id } as ArrayList<Int>)
|
ContactsHelper(activity).removeRecentCalls(callsToRemove.map { it.id } as ArrayList<Int>)
|
||||||
recentCalls.removeAll(callsToRemove)
|
recentCalls.removeAll(callsToRemove)
|
||||||
|
|
||||||
@ -93,12 +88,15 @@ class RecentCallsAdapter(activity: SimpleActivity, var recentCalls: ArrayList<Re
|
|||||||
refreshListener?.refreshContacts(RECENTS_TAB_MASK)
|
refreshListener?.refreshContacts(RECENTS_TAB_MASK)
|
||||||
finishActMode()
|
finishActMode()
|
||||||
} else {
|
} else {
|
||||||
removeSelectedItems()
|
removeSelectedItems(positions)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun getSelectedItems() = recentCalls.filter { selectedKeys.contains(it.id) } as ArrayList<RecentCall>
|
||||||
|
|
||||||
private fun setupView(view: View, recentCall: RecentCall) {
|
private fun setupView(view: View, recentCall: RecentCall) {
|
||||||
view.apply {
|
view.apply {
|
||||||
|
recent_call_frame?.isSelected = selectedKeys.contains(recentCall.id)
|
||||||
recent_call_name.apply {
|
recent_call_name.apply {
|
||||||
text = recentCall.name ?: recentCall.number
|
text = recentCall.name ?: recentCall.number
|
||||||
setTextColor(textColor)
|
setTextColor(textColor)
|
||||||
|
@ -1,10 +1,11 @@
|
|||||||
package com.simplemobiletools.contacts.adapters
|
package com.simplemobiletools.contacts.adapters
|
||||||
|
|
||||||
import android.graphics.drawable.Drawable
|
import android.graphics.drawable.Drawable
|
||||||
import android.support.v7.widget.RecyclerView
|
|
||||||
import android.util.SparseArray
|
import android.util.SparseArray
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
|
import androidx.recyclerview.widget.DividerItemDecoration
|
||||||
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
import com.bumptech.glide.Glide
|
import com.bumptech.glide.Glide
|
||||||
import com.bumptech.glide.load.engine.DiskCacheStrategy
|
import com.bumptech.glide.load.engine.DiskCacheStrategy
|
||||||
import com.bumptech.glide.load.resource.drawable.DrawableTransitionOptions
|
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.beVisibleIf
|
||||||
import com.simplemobiletools.commons.extensions.getAdjustedPrimaryColor
|
import com.simplemobiletools.commons.extensions.getAdjustedPrimaryColor
|
||||||
import com.simplemobiletools.commons.extensions.getColoredDrawableWithColor
|
import com.simplemobiletools.commons.extensions.getColoredDrawableWithColor
|
||||||
import com.simplemobiletools.commons.extensions.isActivityDestroyed
|
import com.simplemobiletools.commons.views.MyRecyclerView
|
||||||
import com.simplemobiletools.commons.interfaces.MyAdapterListener
|
|
||||||
import com.simplemobiletools.contacts.R
|
import com.simplemobiletools.contacts.R
|
||||||
import com.simplemobiletools.contacts.activities.SimpleActivity
|
import com.simplemobiletools.contacts.activities.SimpleActivity
|
||||||
import com.simplemobiletools.contacts.extensions.config
|
import com.simplemobiletools.contacts.extensions.config
|
||||||
@ -24,7 +24,7 @@ import kotlinx.android.synthetic.main.item_add_favorite_with_number.view.*
|
|||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
class SelectContactsAdapter(val activity: SimpleActivity, val contacts: List<Contact>, private val selectedContacts: ArrayList<Contact>, private val allowPickMultiple: Boolean,
|
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 itemViews = SparseArray<View>()
|
||||||
private val selectedPositions = HashSet<Int>()
|
private val selectedPositions = HashSet<Int>()
|
||||||
private val config = activity.config
|
private val config = activity.config
|
||||||
@ -38,10 +38,19 @@ class SelectContactsAdapter(val activity: SimpleActivity, val contacts: List<Con
|
|||||||
|
|
||||||
init {
|
init {
|
||||||
contacts.forEachIndexed { index, contact ->
|
contacts.forEachIndexed { index, contact ->
|
||||||
if (selectedContacts.map { it.id }.contains(contact.id)) {
|
if (selectedContacts.asSequence().map { it.id }.contains(contact.id)) {
|
||||||
selectedPositions.add(index)
|
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) {
|
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
|
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> {
|
fun getSelectedItemsSet(): HashSet<Contact> {
|
||||||
val selectedItemsSet = HashSet<Contact>(selectedPositions.size)
|
val selectedItemsSet = HashSet<Contact>(selectedPositions.size)
|
||||||
selectedPositions.forEach { selectedItemsSet.add(contacts[it]) }
|
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 {
|
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
|
||||||
val view = activity.layoutInflater.inflate(itemLayout, parent, false)
|
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) {
|
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
|
override fun getItemCount() = contacts.size
|
||||||
|
|
||||||
class ViewHolder(view: View, private val adapterListener: MyAdapterListener, val activity: SimpleActivity, private val showCheckbox: Boolean,
|
inner class ViewHolder(view: View) : RecyclerView.ViewHolder(view) {
|
||||||
private val itemClick: ((Contact) -> Unit)?) : RecyclerView.ViewHolder(view) {
|
|
||||||
fun bindView(contact: Contact, contactDrawable: Drawable, config: Config, showContactThumbnails: Boolean,
|
fun bindView(contact: Contact, contactDrawable: Drawable, config: Config, showContactThumbnails: Boolean,
|
||||||
smallPadding: Int, bigPadding: Int): View {
|
smallPadding: Int, bigPadding: Int): View {
|
||||||
itemView.apply {
|
itemView.apply {
|
||||||
contact_checkbox.beVisibleIf(showCheckbox)
|
contact_checkbox.beVisibleIf(allowPickMultiple)
|
||||||
contact_checkbox.setColors(config.textColor, context.getAdjustedPrimaryColor(), config.backgroundColor)
|
contact_checkbox.setColors(config.textColor, context.getAdjustedPrimaryColor(), config.backgroundColor)
|
||||||
val textColor = config.textColor
|
val textColor = config.textColor
|
||||||
|
|
||||||
contact_name.text = contact.getFullName()
|
contact_name.text = contact.getNameToDisplay()
|
||||||
contact_name.setTextColor(textColor)
|
contact_name.setTextColor(textColor)
|
||||||
contact_name.setPadding(if (showContactThumbnails) smallPadding else bigPadding, smallPadding, smallPadding, 0)
|
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)
|
.error(contactDrawable)
|
||||||
.centerCrop()
|
.centerCrop()
|
||||||
|
|
||||||
if (activity.isActivityDestroyed()) {
|
if (activity.isDestroyed) {
|
||||||
Glide.with(activity).load(contact.photoUri).transition(DrawableTransitionOptions.withCrossFade()).apply(options).into(contact_tmb)
|
Glide.with(activity).load(contact.photoUri).transition(DrawableTransitionOptions.withCrossFade()).apply(options).into(contact_tmb)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@ -132,14 +130,14 @@ class SelectContactsAdapter(val activity: SimpleActivity, val contacts: List<Con
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun viewClicked(select: Boolean) {
|
private fun viewClicked(select: Boolean) {
|
||||||
adapterListener.toggleItemSelectionAdapter(select, adapterPosition)
|
toggleItemSelection(select, adapterPosition)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onViewRecycled(holder: ViewHolder) {
|
override fun onViewRecycled(holder: ViewHolder) {
|
||||||
super.onViewRecycled(holder)
|
super.onViewRecycled(holder)
|
||||||
if (!activity.isActivityDestroyed()) {
|
if (!activity.isDestroyed) {
|
||||||
Glide.with(activity).clear(holder.itemView?.contact_tmb!!)
|
Glide.with(activity).clear(holder.itemView.contact_tmb)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
package com.simplemobiletools.contacts.adapters
|
package com.simplemobiletools.contacts.adapters
|
||||||
|
|
||||||
import android.support.v4.view.PagerAdapter
|
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
|
import androidx.viewpager.widget.PagerAdapter
|
||||||
import com.simplemobiletools.contacts.R
|
import com.simplemobiletools.contacts.R
|
||||||
import com.simplemobiletools.contacts.activities.MainActivity
|
import com.simplemobiletools.contacts.activities.MainActivity
|
||||||
import com.simplemobiletools.contacts.extensions.config
|
import com.simplemobiletools.contacts.extensions.config
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
package com.simplemobiletools.contacts.dialogs
|
package com.simplemobiletools.contacts.dialogs
|
||||||
|
|
||||||
import android.support.v7.app.AlertDialog
|
import androidx.appcompat.app.AlertDialog
|
||||||
import android.view.animation.AnimationUtils
|
import android.view.animation.AnimationUtils
|
||||||
import com.simplemobiletools.commons.activities.BaseSimpleActivity
|
import com.simplemobiletools.commons.activities.BaseSimpleActivity
|
||||||
import com.simplemobiletools.commons.extensions.applyColorFilter
|
import com.simplemobiletools.commons.extensions.applyColorFilter
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
package com.simplemobiletools.contacts.dialogs
|
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.activities.BaseSimpleActivity
|
||||||
import com.simplemobiletools.commons.extensions.setupDialogStuff
|
import com.simplemobiletools.commons.extensions.setupDialogStuff
|
||||||
import com.simplemobiletools.commons.helpers.SORT_BY_FIRST_NAME
|
import com.simplemobiletools.commons.helpers.SORT_BY_FIRST_NAME
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
package com.simplemobiletools.contacts.dialogs
|
package com.simplemobiletools.contacts.dialogs
|
||||||
|
|
||||||
import android.support.v7.app.AlertDialog
|
import androidx.appcompat.app.AlertDialog
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import com.simplemobiletools.commons.activities.BaseSimpleActivity
|
import com.simplemobiletools.commons.activities.BaseSimpleActivity
|
||||||
import com.simplemobiletools.commons.dialogs.RadioGroupDialog
|
import com.simplemobiletools.commons.dialogs.RadioGroupDialog
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
package com.simplemobiletools.contacts.dialogs
|
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.activities.BaseSimpleActivity
|
||||||
import com.simplemobiletools.commons.extensions.setupDialogStuff
|
import com.simplemobiletools.commons.extensions.setupDialogStuff
|
||||||
import com.simplemobiletools.commons.extensions.showKeyboard
|
import com.simplemobiletools.commons.extensions.showKeyboard
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
package com.simplemobiletools.contacts.dialogs
|
package com.simplemobiletools.contacts.dialogs
|
||||||
|
|
||||||
import android.support.v7.app.AlertDialog
|
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
|
import androidx.appcompat.app.AlertDialog
|
||||||
import com.simplemobiletools.commons.extensions.*
|
import com.simplemobiletools.commons.extensions.*
|
||||||
import com.simplemobiletools.contacts.R
|
import com.simplemobiletools.contacts.R
|
||||||
import com.simplemobiletools.contacts.activities.SimpleActivity
|
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()}")
|
export_contacts_filename.setText("contacts_${activity.getCurrentFormattedDateTime()}")
|
||||||
|
|
||||||
ContactsHelper(activity).getContactSources {
|
ContactsHelper(activity).getContactSources {
|
||||||
it.mapTo(contactSources, { it.copy() })
|
it.mapTo(contactSources) { it.copy() }
|
||||||
activity.runOnUiThread {
|
activity.runOnUiThread {
|
||||||
export_contacts_list.adapter = FilterContactSourcesAdapter(activity, it, activity.getVisibleContactSources())
|
export_contacts_list.adapter = FilterContactSourcesAdapter(activity, it, activity.getVisibleContactSources())
|
||||||
}
|
}
|
||||||
@ -34,34 +34,34 @@ class ExportContactsDialog(val activity: SimpleActivity, val path: String, priva
|
|||||||
.setPositiveButton(R.string.ok, null)
|
.setPositiveButton(R.string.ok, null)
|
||||||
.setNegativeButton(R.string.cancel, null)
|
.setNegativeButton(R.string.cancel, null)
|
||||||
.create().apply {
|
.create().apply {
|
||||||
activity.setupDialogStuff(view, this, R.string.export_contacts) {
|
activity.setupDialogStuff(view, this, R.string.export_contacts) {
|
||||||
getButton(AlertDialog.BUTTON_POSITIVE).setOnClickListener {
|
getButton(AlertDialog.BUTTON_POSITIVE).setOnClickListener {
|
||||||
if (view.export_contacts_list.adapter == null) {
|
if (view.export_contacts_list.adapter == null) {
|
||||||
return@setOnClickListener
|
|
||||||
}
|
|
||||||
|
|
||||||
val filename = view.export_contacts_filename.value
|
|
||||||
when {
|
|
||||||
filename.isEmpty() -> activity.toast(R.string.empty_name)
|
|
||||||
filename.isAValidFilename() -> {
|
|
||||||
val file = File(path, "$filename.vcf")
|
|
||||||
if (file.exists()) {
|
|
||||||
activity.toast(R.string.name_taken)
|
|
||||||
return@setOnClickListener
|
return@setOnClickListener
|
||||||
}
|
}
|
||||||
|
|
||||||
val selectedIndexes = (view.export_contacts_list.adapter as FilterContactSourcesAdapter).getSelectedItemsSet()
|
val filename = view.export_contacts_filename.value
|
||||||
val selectedContactSources = HashSet<String>()
|
when {
|
||||||
selectedIndexes.forEach {
|
filename.isEmpty() -> activity.toast(R.string.empty_name)
|
||||||
selectedContactSources.add(if (contactSources[it].type == SMT_PRIVATE) SMT_PRIVATE else contactSources[it].name)
|
filename.isAValidFilename() -> {
|
||||||
|
val file = File(path, "$filename.vcf")
|
||||||
|
if (file.exists()) {
|
||||||
|
activity.toast(R.string.name_taken)
|
||||||
|
return@setOnClickListener
|
||||||
|
}
|
||||||
|
|
||||||
|
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, selectedContactSourceNames)
|
||||||
|
dismiss()
|
||||||
|
}
|
||||||
|
else -> activity.toast(R.string.invalid_name)
|
||||||
}
|
}
|
||||||
callback(file, selectedContactSources)
|
|
||||||
dismiss()
|
|
||||||
}
|
}
|
||||||
else -> activity.toast(R.string.invalid_name)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
package com.simplemobiletools.contacts.dialogs
|
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.commons.extensions.setupDialogStuff
|
||||||
import com.simplemobiletools.contacts.R
|
import com.simplemobiletools.contacts.R
|
||||||
import com.simplemobiletools.contacts.activities.SimpleActivity
|
import com.simplemobiletools.contacts.activities.SimpleActivity
|
||||||
@ -24,13 +24,13 @@ class FilterContactSourcesDialog(val activity: SimpleActivity, private val callb
|
|||||||
return@getContactSources
|
return@getContactSources
|
||||||
}
|
}
|
||||||
|
|
||||||
it.mapTo(contactSources, { it.copy() })
|
it.mapTo(contactSources) { it.copy() }
|
||||||
val selectedSources = activity.getVisibleContactSources()
|
val selectedSources = activity.getVisibleContactSources()
|
||||||
activity.runOnUiThread {
|
activity.runOnUiThread {
|
||||||
view.filter_contact_sources_list.adapter = FilterContactSourcesAdapter(activity, it, selectedSources)
|
view.filter_contact_sources_list.adapter = FilterContactSourcesAdapter(activity, it, selectedSources)
|
||||||
|
|
||||||
dialog = AlertDialog.Builder(activity)
|
dialog = AlertDialog.Builder(activity)
|
||||||
.setPositiveButton(R.string.ok, { dialogInterface, i -> confirmEventTypes() })
|
.setPositiveButton(R.string.ok) { dialogInterface, i -> confirmEventTypes() }
|
||||||
.setNegativeButton(R.string.cancel, null)
|
.setNegativeButton(R.string.cancel, null)
|
||||||
.create().apply {
|
.create().apply {
|
||||||
activity.setupDialogStuff(view, this)
|
activity.setupDialogStuff(view, this)
|
||||||
@ -40,21 +40,13 @@ class FilterContactSourcesDialog(val activity: SimpleActivity, private val callb
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun confirmEventTypes() {
|
private fun confirmEventTypes() {
|
||||||
val selectedIndexes = (view.filter_contact_sources_list.adapter as FilterContactSourcesAdapter).getSelectedItemsSet()
|
val selectedContactSources = (view.filter_contact_sources_list.adapter as FilterContactSourcesAdapter).getSelectedContactSources()
|
||||||
val ignoredIndexes = ArrayList<Int>()
|
val ignoredContactSourceNames = contactSources.filter { !selectedContactSources.contains(it) }.map {
|
||||||
for (i in 0 until contactSources.size) {
|
if (it.type == SMT_PRIVATE) SMT_PRIVATE else it.name
|
||||||
if (!selectedIndexes.contains(i)) {
|
}.toHashSet()
|
||||||
ignoredIndexes.add(i)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
val ignoredContactSources = HashSet<String>()
|
if (activity.getVisibleContactSources() != ignoredContactSourceNames) {
|
||||||
ignoredIndexes.forEach {
|
activity.config.ignoredContactSources = ignoredContactSourceNames
|
||||||
ignoredContactSources.add(if (contactSources[it].type == SMT_PRIVATE) SMT_PRIVATE else contactSources[it].name)
|
|
||||||
}
|
|
||||||
|
|
||||||
if (activity.getVisibleContactSources() != ignoredContactSources) {
|
|
||||||
activity.config.ignoredContactSources = ignoredContactSources
|
|
||||||
callback()
|
callback()
|
||||||
}
|
}
|
||||||
dialog?.dismiss()
|
dialog?.dismiss()
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
package com.simplemobiletools.contacts.dialogs
|
package com.simplemobiletools.contacts.dialogs
|
||||||
|
|
||||||
import android.support.v7.app.AlertDialog
|
import androidx.appcompat.app.AlertDialog
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import com.simplemobiletools.commons.extensions.setupDialogStuff
|
import com.simplemobiletools.commons.extensions.setupDialogStuff
|
||||||
import com.simplemobiletools.commons.extensions.toast
|
import com.simplemobiletools.commons.extensions.toast
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
package com.simplemobiletools.contacts.dialogs
|
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.activities.BaseSimpleActivity
|
||||||
import com.simplemobiletools.commons.extensions.setupDialogStuff
|
import com.simplemobiletools.commons.extensions.setupDialogStuff
|
||||||
import com.simplemobiletools.commons.views.MyAppCompatCheckbox
|
import com.simplemobiletools.commons.views.MyAppCompatCheckbox
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
package com.simplemobiletools.contacts.dialogs
|
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.activities.BaseSimpleActivity
|
||||||
import com.simplemobiletools.commons.extensions.setupDialogStuff
|
import com.simplemobiletools.commons.extensions.setupDialogStuff
|
||||||
import com.simplemobiletools.commons.views.MyAppCompatCheckbox
|
import com.simplemobiletools.commons.views.MyAppCompatCheckbox
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
package com.simplemobiletools.contacts.dialogs
|
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.activities.BaseSimpleActivity
|
||||||
import com.simplemobiletools.commons.extensions.*
|
import com.simplemobiletools.commons.extensions.*
|
||||||
import com.simplemobiletools.contacts.R
|
import com.simplemobiletools.contacts.R
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
package com.simplemobiletools.contacts.dialogs
|
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.baseConfig
|
||||||
import com.simplemobiletools.commons.extensions.setupDialogStuff
|
import com.simplemobiletools.commons.extensions.setupDialogStuff
|
||||||
import com.simplemobiletools.contacts.R
|
import com.simplemobiletools.contacts.R
|
||||||
@ -33,7 +33,7 @@ class SelectContactsDialog(val activity: SimpleActivity, initialContacts: ArrayL
|
|||||||
|
|
||||||
activity.runOnUiThread {
|
activity.runOnUiThread {
|
||||||
view.apply {
|
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.allowBubbleDisplay = activity.baseConfig.showInfoBubble
|
||||||
select_contact_fastscroller.setViews(select_contact_list) {
|
select_contact_fastscroller.setViews(select_contact_list) {
|
||||||
select_contact_fastscroller.updateBubbleText(allContacts[it].getBubbleText())
|
select_contact_fastscroller.updateBubbleText(allContacts[it].getBubbleText())
|
||||||
@ -42,7 +42,7 @@ class SelectContactsDialog(val activity: SimpleActivity, initialContacts: ArrayL
|
|||||||
}
|
}
|
||||||
|
|
||||||
AlertDialog.Builder(activity)
|
AlertDialog.Builder(activity)
|
||||||
.setPositiveButton(R.string.ok, { dialog, which -> dialogConfirmed() })
|
.setPositiveButton(R.string.ok) { dialog, which -> dialogConfirmed() }
|
||||||
.setNegativeButton(R.string.cancel, null)
|
.setNegativeButton(R.string.cancel, null)
|
||||||
.create().apply {
|
.create().apply {
|
||||||
activity.setupDialogStuff(view, this)
|
activity.setupDialogStuff(view, this)
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
package com.simplemobiletools.contacts.dialogs
|
package com.simplemobiletools.contacts.dialogs
|
||||||
|
|
||||||
import android.support.v7.app.AlertDialog
|
import androidx.appcompat.app.AlertDialog
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import com.simplemobiletools.commons.extensions.setupDialogStuff
|
import com.simplemobiletools.commons.extensions.setupDialogStuff
|
||||||
import com.simplemobiletools.commons.views.MyAppCompatCheckbox
|
import com.simplemobiletools.commons.views.MyAppCompatCheckbox
|
||||||
|
@ -36,7 +36,7 @@ fun SimpleActivity.startCallIntent(recipient: String) {
|
|||||||
|
|
||||||
fun SimpleActivity.tryStartCall(contact: Contact) {
|
fun SimpleActivity.tryStartCall(contact: Contact) {
|
||||||
if (config.showCallConfirmation) {
|
if (config.showCallConfirmation) {
|
||||||
CallConfirmationDialog(this, contact.getFullName()) {
|
CallConfirmationDialog(this, contact.getNameToDisplay()) {
|
||||||
startCall(contact)
|
startCall(contact)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@ -63,8 +63,9 @@ fun SimpleActivity.startCall(contact: Contact) {
|
|||||||
fun SimpleActivity.showContactSourcePicker(currentSource: String, callback: (newSource: String) -> Unit) {
|
fun SimpleActivity.showContactSourcePicker(currentSource: String, callback: (newSource: String) -> Unit) {
|
||||||
ContactsHelper(this).getContactSources {
|
ContactsHelper(this).getContactSources {
|
||||||
val ignoredTypes = arrayListOf(
|
val ignoredTypes = arrayListOf(
|
||||||
"org.thoughtcrime.securesms", // Signal
|
SIGNAL_PACKAGE,
|
||||||
"org.telegram.messenger" // Telegram
|
TELEGRAM_PACKAGE,
|
||||||
|
WHATSAPP_PACKAGE
|
||||||
)
|
)
|
||||||
|
|
||||||
val items = ArrayList<RadioItem>()
|
val items = ArrayList<RadioItem>()
|
||||||
|
@ -1,19 +1,16 @@
|
|||||||
package com.simplemobiletools.contacts.extensions
|
package com.simplemobiletools.contacts.extensions
|
||||||
|
|
||||||
import android.annotation.TargetApi
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.database.Cursor
|
import android.database.Cursor
|
||||||
import android.net.Uri
|
import android.net.Uri
|
||||||
import android.os.Build
|
|
||||||
import android.provider.ContactsContract
|
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.getIntValue
|
||||||
import com.simplemobiletools.commons.extensions.hasPermission
|
import com.simplemobiletools.commons.extensions.hasPermission
|
||||||
import com.simplemobiletools.commons.extensions.toast
|
import com.simplemobiletools.commons.extensions.toast
|
||||||
import com.simplemobiletools.commons.helpers.PERMISSION_READ_CONTACTS
|
import com.simplemobiletools.commons.helpers.PERMISSION_READ_CONTACTS
|
||||||
import com.simplemobiletools.commons.helpers.PERMISSION_WRITE_CONTACTS
|
import com.simplemobiletools.commons.helpers.PERMISSION_WRITE_CONTACTS
|
||||||
import com.simplemobiletools.commons.helpers.isLollipopPlus
|
|
||||||
import com.simplemobiletools.contacts.BuildConfig
|
import com.simplemobiletools.contacts.BuildConfig
|
||||||
import com.simplemobiletools.contacts.R
|
import com.simplemobiletools.contacts.R
|
||||||
import com.simplemobiletools.contacts.activities.EditContactActivity
|
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 {
|
fun Context.getLookupUriRawId(dataUri: Uri): Int {
|
||||||
val lookupKey = getLookupKeyFromUri(dataUri)
|
val lookupKey = getLookupKeyFromUri(dataUri)
|
||||||
if (lookupKey != null && isLollipopPlus()) {
|
if (lookupKey != null) {
|
||||||
val uri = lookupContactUri(lookupKey, this)
|
val uri = lookupContactUri(lookupKey, this)
|
||||||
if (uri != null) {
|
if (uri != null) {
|
||||||
return getContactUriRawId(uri)
|
return getContactUriRawId(uri)
|
||||||
@ -100,7 +96,6 @@ fun Context.getLookupUriRawId(dataUri: Uri): Int {
|
|||||||
return -1
|
return -1
|
||||||
}
|
}
|
||||||
|
|
||||||
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
|
|
||||||
fun Context.getContactUriRawId(uri: Uri): Int {
|
fun Context.getContactUriRawId(uri: Uri): Int {
|
||||||
val projection = arrayOf(ContactsContract.Contacts.NAME_RAW_CONTACT_ID)
|
val projection = arrayOf(ContactsContract.Contacts.NAME_RAW_CONTACT_ID)
|
||||||
var cursor: Cursor? = null
|
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.Context
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.support.design.widget.CoordinatorLayout
|
|
||||||
import android.util.AttributeSet
|
import android.util.AttributeSet
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
|
import androidx.coordinatorlayout.widget.CoordinatorLayout
|
||||||
import com.simplemobiletools.commons.adapters.MyRecyclerViewAdapter
|
import com.simplemobiletools.commons.adapters.MyRecyclerViewAdapter
|
||||||
import com.simplemobiletools.commons.extensions.*
|
import com.simplemobiletools.commons.extensions.*
|
||||||
import com.simplemobiletools.commons.helpers.SORT_BY_FIRST_NAME
|
import com.simplemobiletools.commons.helpers.SORT_BY_FIRST_NAME
|
||||||
@ -88,7 +88,7 @@ abstract class MyViewPagerFragment(context: Context, attributeSet: AttributeSet)
|
|||||||
|
|
||||||
fun startNameWithSurnameChanged(startNameWithSurname: Boolean) {
|
fun startNameWithSurnameChanged(startNameWithSurname: Boolean) {
|
||||||
if (this !is GroupsFragment && this !is RecentsFragment) {
|
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
|
config.sorting = if (startNameWithSurname) SORT_BY_SURNAME else SORT_BY_FIRST_NAME
|
||||||
this@MyViewPagerFragment.activity!!.refreshContacts(CONTACTS_TAB_MASK or FAVORITES_TAB_MASK)
|
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()) {
|
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 ?: ""
|
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_2.beVisibleIf(storedGroups.isEmpty())
|
||||||
fragment_placeholder.beVisibleIf(storedGroups.isEmpty())
|
fragment_placeholder.beVisibleIf(storedGroups.isEmpty())
|
||||||
@ -239,7 +239,7 @@ abstract class MyViewPagerFragment(context: Context, attributeSet: AttributeSet)
|
|||||||
val shouldNormalize = text.normalizeString() == text
|
val shouldNormalize = text.normalizeString() == text
|
||||||
(fragment_list.adapter as? ContactsAdapter)?.apply {
|
(fragment_list.adapter as? ContactsAdapter)?.apply {
|
||||||
val filtered = contactsIgnoringSearch.filter {
|
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) ||
|
getProperText(it.nickname, shouldNormalize).contains(text, true) ||
|
||||||
it.doesContainPhoneNumber(text) ||
|
it.doesContainPhoneNumber(text) ||
|
||||||
it.emails.any { it.value.contains(text, true) } ||
|
it.emails.any { it.value.contains(text, true) } ||
|
||||||
@ -254,7 +254,7 @@ abstract class MyViewPagerFragment(context: Context, attributeSet: AttributeSet)
|
|||||||
Contact.sorting = config.sorting
|
Contact.sorting = config.sorting
|
||||||
Contact.startWithSurname = config.startNameWithSurname
|
Contact.startWithSurname = config.startNameWithSurname
|
||||||
filtered.sort()
|
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) {
|
if (filtered.isEmpty() && this@MyViewPagerFragment is FavoritesFragment) {
|
||||||
fragment_placeholder.text = activity.getString(R.string.no_items_found)
|
fragment_placeholder.text = activity.getString(R.string.no_items_found)
|
||||||
|
@ -5,7 +5,6 @@ import android.content.Intent
|
|||||||
import android.util.AttributeSet
|
import android.util.AttributeSet
|
||||||
import com.simplemobiletools.commons.extensions.beVisibleIf
|
import com.simplemobiletools.commons.extensions.beVisibleIf
|
||||||
import com.simplemobiletools.commons.extensions.hasPermission
|
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_READ_CALL_LOG
|
||||||
import com.simplemobiletools.commons.helpers.PERMISSION_WRITE_CALL_LOG
|
import com.simplemobiletools.commons.helpers.PERMISSION_WRITE_CALL_LOG
|
||||||
import com.simplemobiletools.contacts.activities.EditContactActivity
|
import com.simplemobiletools.contacts.activities.EditContactActivity
|
||||||
@ -33,7 +32,7 @@ class RecentsFragment(context: Context, attributeSet: AttributeSet) : MyViewPage
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun updateRecentCalls(recentCalls: ArrayList<RecentCall>) {
|
fun updateRecentCalls(recentCalls: ArrayList<RecentCall>) {
|
||||||
if (activity == null || activity!!.isActivityDestroyed()) {
|
if (activity == null || activity!!.isDestroyed) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -20,6 +20,10 @@ class Config(context: Context) : BaseConfig(context) {
|
|||||||
get() = prefs.getBoolean(SHOW_PHONE_NUMBERS, false)
|
get() = prefs.getBoolean(SHOW_PHONE_NUMBERS, false)
|
||||||
set(showPhoneNumbers) = prefs.edit().putBoolean(SHOW_PHONE_NUMBERS, showPhoneNumbers).apply()
|
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
|
var startNameWithSurname: Boolean
|
||||||
get() = prefs.getBoolean(START_NAME_WITH_SURNAME, false)
|
get() = prefs.getBoolean(START_NAME_WITH_SURNAME, false)
|
||||||
set(startNameWithSurname) = prefs.edit().putBoolean(START_NAME_WITH_SURNAME, startNameWithSurname).apply()
|
set(startNameWithSurname) = prefs.edit().putBoolean(START_NAME_WITH_SURNAME, startNameWithSurname).apply()
|
||||||
|
@ -5,6 +5,7 @@ import android.provider.ContactsContract.CommonDataKinds
|
|||||||
// shared prefs
|
// shared prefs
|
||||||
const val SHOW_CONTACT_THUMBNAILS = "show_contact_thumbnails"
|
const val SHOW_CONTACT_THUMBNAILS = "show_contact_thumbnails"
|
||||||
const val SHOW_PHONE_NUMBERS = "show_phone_numbers"
|
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 IGNORED_CONTACT_SOURCES = "ignored_contact_sources"
|
||||||
const val START_NAME_WITH_SURNAME = "start_name_with_surname"
|
const val START_NAME_WITH_SURNAME = "start_name_with_surname"
|
||||||
const val LAST_USED_CONTACT_SOURCE = "last_used_contact_source"
|
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",
|
"com.android.huawei.phone",
|
||||||
"Local Phone Account"
|
"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 contactsSize = contacts.size()
|
||||||
|
val showOnlyContactsWithNumbers = activity.config.showOnlyContactsWithNumbers
|
||||||
var tempContacts = ArrayList<Contact>(contactsSize)
|
var tempContacts = ArrayList<Contact>(contactsSize)
|
||||||
val resultContacts = 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) {
|
if (activity.config.filterDuplicates) {
|
||||||
tempContacts = tempContacts.distinctBy {
|
tempContacts = tempContacts.distinctBy {
|
||||||
it.getHashToCompare()
|
it.getHashToCompare()
|
||||||
} as ArrayList<Contact>
|
} 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) {
|
if (it.size == 1) {
|
||||||
resultContacts.add(it.first())
|
resultContacts.add(it.first())
|
||||||
} else {
|
} else {
|
||||||
@ -819,6 +830,9 @@ class ContactsHelper(val activity: Activity) {
|
|||||||
accounts.forEach {
|
accounts.forEach {
|
||||||
if (ContentResolver.getIsSyncable(it, ContactsContract.AUTHORITY) == 1) {
|
if (ContentResolver.getIsSyncable(it, ContactsContract.AUTHORITY) == 1) {
|
||||||
val contactSource = ContactSource(it.name, it.type)
|
val contactSource = ContactSource(it.name, it.type)
|
||||||
|
if (it.type == TELEGRAM_PACKAGE) {
|
||||||
|
contactSource.name += " (${activity.getString(R.string.telegram)})"
|
||||||
|
}
|
||||||
sources.add(contactSource)
|
sources.add(contactSource)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1207,6 +1221,7 @@ class ContactsHelper(val activity: Activity) {
|
|||||||
ContentProviderOperation.newInsert(ContactsContract.RawContacts.CONTENT_URI).apply {
|
ContentProviderOperation.newInsert(ContactsContract.RawContacts.CONTENT_URI).apply {
|
||||||
withValue(ContactsContract.RawContacts.ACCOUNT_NAME, contact.source)
|
withValue(ContactsContract.RawContacts.ACCOUNT_NAME, contact.source)
|
||||||
withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, getContactSourceType(contact.source))
|
withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, getContactSourceType(contact.source))
|
||||||
|
withValue(ContactsContract.RawContacts.DIRTY, false)
|
||||||
operations.add(build())
|
operations.add(build())
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1298,7 +1313,7 @@ class ContactsHelper(val activity: Activity) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// organization
|
// organization
|
||||||
if (!contact.organization.isEmpty()) {
|
if (contact.organization.isNotEmpty()) {
|
||||||
ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI).apply {
|
ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI).apply {
|
||||||
withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
|
withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0)
|
||||||
withValue(ContactsContract.Data.MIMETYPE, CommonDataKinds.Organization.CONTENT_ITEM_TYPE)
|
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 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 yesterdayDate = SimpleDateFormat("dd MMM yyyy", Locale.getDefault()).format(Date(System.currentTimeMillis() - DAY_SECONDS * 1000))
|
||||||
val yesterday = activity.getString(R.string.yesterday)
|
val yesterday = activity.getString(R.string.yesterday)
|
||||||
|
val timeFormat = if (activity.config.use24HourFormat) "HH:mm" else "h:mm a"
|
||||||
var prevNumber = ""
|
var prevNumber = ""
|
||||||
|
|
||||||
var cursor: Cursor? = null
|
var cursor: Cursor? = null
|
||||||
@ -1548,7 +1564,7 @@ class ContactsHelper(val activity: Activity) {
|
|||||||
continue
|
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)
|
val datePart = formattedDate.substring(0, 11)
|
||||||
when {
|
when {
|
||||||
datePart == todayDate -> formattedDate = formattedDate.substring(12)
|
datePart == todayDate -> formattedDate = formattedDate.substring(12)
|
||||||
|
@ -122,7 +122,7 @@ class VcfExporter {
|
|||||||
card.addNote(contact.notes)
|
card.addNote(contact.notes)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!contact.organization.isEmpty()) {
|
if (contact.organization.isNotEmpty()) {
|
||||||
val organization = Organization()
|
val organization = Organization()
|
||||||
organization.values.add(contact.organization.company)
|
organization.values.add(contact.organization.company)
|
||||||
card.organization = organization
|
card.organization = organization
|
||||||
|
@ -139,7 +139,7 @@ class VcfImporter(val activity: SimpleActivity) {
|
|||||||
targetContactSource, starred, contactId, thumbnailUri, photo, notes, groups, organization, websites, cleanPhoneNumbers, IMs)
|
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 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
|
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()) {
|
if (firstString.isEmpty() && firstName.isEmpty() && middleName.isEmpty() && surname.isEmpty()) {
|
||||||
firstString = organization.company.normalizeString()
|
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()) {
|
if (secondString.isEmpty() && other.firstName.isEmpty() && other.middleName.isEmpty() && other.surname.isEmpty()) {
|
||||||
secondString = other.organization.company.normalizeString()
|
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) {
|
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
|
-1
|
||||||
} else {
|
} else {
|
||||||
if (firstString.toLowerCase() == secondString.toLowerCase()) {
|
if (firstString.toLowerCase() == secondString.toLowerCase()) {
|
||||||
getFullName().compareTo(other.getFullName(), true)
|
getNameToDisplay().compareTo(other.getNameToDisplay(), true)
|
||||||
} else {
|
} else {
|
||||||
firstString.compareTo(secondString, true)
|
firstString.compareTo(secondString, true)
|
||||||
}
|
}
|
||||||
@ -76,7 +86,7 @@ data class Contact(val id: Int, var prefix: String, var firstName: String, var m
|
|||||||
else -> surname
|
else -> surname
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getFullName(): String {
|
fun getNameToDisplay(): String {
|
||||||
var firstPart = if (startWithSurname) surname else firstName
|
var firstPart = if (startWithSurname) surname else firstName
|
||||||
if (middleName.isNotEmpty()) {
|
if (middleName.isNotEmpty()) {
|
||||||
firstPart += " $middleName"
|
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 suffixComma = if (suffix.isEmpty()) "" else ", $suffix"
|
||||||
val fullName = "$prefix $firstPart $lastPart$suffixComma".trim()
|
val fullName = "$prefix $firstPart $lastPart$suffixComma".trim()
|
||||||
return if (fullName.isEmpty()) {
|
return if (fullName.isEmpty()) {
|
||||||
var fullOrganization = if (organization.jobPosition.isEmpty()) "" else "${organization.jobPosition}, "
|
if (organization.isNotEmpty()) {
|
||||||
fullOrganization += organization.company
|
getFullCompany()
|
||||||
fullOrganization.trim().trimEnd(',')
|
} else {
|
||||||
|
emails.firstOrNull()?.value?.trim() ?: ""
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
fullName
|
fullName
|
||||||
}
|
}
|
||||||
@ -98,7 +110,7 @@ data class Contact(val id: Int, var prefix: String, var firstName: String, var m
|
|||||||
val newEmails = ArrayList<Email>()
|
val newEmails = ArrayList<Email>()
|
||||||
emails.mapTo(newEmails) { Email(it.value, 0, "") }
|
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,
|
phoneNumbers = ArrayList(), events = ArrayList(), addresses = ArrayList(), emails = newEmails, source = "", starred = 0,
|
||||||
contactId = 0, thumbnailUri = "", notes = "", groups = ArrayList(), websites = ArrayList(), organization = Organization("", ""),
|
contactId = 0, thumbnailUri = "", notes = "", groups = ArrayList(), websites = ArrayList(), organization = Organization("", ""),
|
||||||
IMs = ArrayList()).toString()
|
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 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
|
// 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 {
|
fun doesContainPhoneNumber(text: String): Boolean {
|
||||||
if (text.isNotEmpty()) {
|
if (text.isNotEmpty()) {
|
||||||
|
@ -2,4 +2,6 @@ package com.simplemobiletools.contacts.models
|
|||||||
|
|
||||||
data class Organization(var company: String, var jobPosition: String) {
|
data class Organization(var company: String, var jobPosition: String) {
|
||||||
fun isEmpty() = company.isEmpty() && jobPosition.isEmpty()
|
fun isEmpty() = company.isEmpty() && jobPosition.isEmpty()
|
||||||
|
|
||||||
|
fun isNotEmpty() = !isEmpty()
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?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:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
android:id="@+id/dialpad_holder"
|
android:id="@+id/dialpad_holder"
|
||||||
@ -56,10 +56,10 @@
|
|||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
android:id="@+id/dialpad_clear_char"
|
android:id="@+id/dialpad_clear_char"
|
||||||
style="@style/MyBorderlessBackgroundStyle"
|
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="0dp"
|
android:layout_height="0dp"
|
||||||
android:layout_marginRight="@dimen/activity_margin"
|
android:layout_marginRight="@dimen/activity_margin"
|
||||||
|
android:background="?attr/selectableItemBackgroundBorderless"
|
||||||
android:paddingLeft="@dimen/activity_margin"
|
android:paddingLeft="@dimen/activity_margin"
|
||||||
android:paddingRight="@dimen/activity_margin"
|
android:paddingRight="@dimen/activity_margin"
|
||||||
android:src="@drawable/ic_clear_char"
|
android:src="@drawable/ic_clear_char"
|
||||||
@ -186,9 +186,9 @@
|
|||||||
|
|
||||||
<RelativeLayout
|
<RelativeLayout
|
||||||
android:id="@+id/dialpad_0_holder"
|
android:id="@+id/dialpad_0_holder"
|
||||||
style="@style/MyBorderlessBackgroundStyle"
|
|
||||||
android:layout_width="0dp"
|
android:layout_width="0dp"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
|
android:background="?attr/selectableItemBackgroundBorderless"
|
||||||
app:layout_constraintBottom_toTopOf="@+id/dialpad_call_button"
|
app:layout_constraintBottom_toTopOf="@+id/dialpad_call_button"
|
||||||
app:layout_constraintEnd_toStartOf="@+id/dialpad_hashtag"
|
app:layout_constraintEnd_toStartOf="@+id/dialpad_hashtag"
|
||||||
app:layout_constraintHorizontal_bias="0.5"
|
app:layout_constraintHorizontal_bias="0.5"
|
||||||
@ -243,4 +243,4 @@
|
|||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintStart_toStartOf="parent"/>
|
app:layout_constraintStart_toStartOf="parent"/>
|
||||||
|
|
||||||
</android.support.constraint.ConstraintLayout>
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
|
@ -10,10 +10,10 @@
|
|||||||
android:id="@+id/contact_holder"
|
android:id="@+id/contact_holder"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:paddingBottom="@dimen/medium_margin"
|
|
||||||
android:paddingLeft="@dimen/normal_margin"
|
android:paddingLeft="@dimen/normal_margin"
|
||||||
|
android:paddingTop="@dimen/activity_margin"
|
||||||
android:paddingRight="@dimen/normal_margin"
|
android:paddingRight="@dimen/normal_margin"
|
||||||
android:paddingTop="@dimen/activity_margin">
|
android:paddingBottom="@dimen/medium_margin">
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
android:id="@+id/contact_photo"
|
android:id="@+id/contact_photo"
|
||||||
@ -23,14 +23,14 @@
|
|||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
android:id="@+id/contact_toggle_favorite"
|
android:id="@+id/contact_toggle_favorite"
|
||||||
style="@style/MyBorderlessBackgroundStyle"
|
|
||||||
android:layout_width="@dimen/contact_actions_size"
|
android:layout_width="@dimen/contact_actions_size"
|
||||||
android:layout_height="@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_alignTop="@+id/contact_photo"
|
||||||
|
android:layout_alignBottom="@id/contact_photo"
|
||||||
android:layout_marginLeft="@dimen/medium_margin"
|
android:layout_marginLeft="@dimen/medium_margin"
|
||||||
android:layout_toRightOf="@+id/contact_photo"
|
android:layout_toRightOf="@+id/contact_photo"
|
||||||
android:adjustViewBounds="true"
|
android:adjustViewBounds="true"
|
||||||
|
android:background="?attr/selectableItemBackgroundBorderless"
|
||||||
android:padding="@dimen/tiny_margin"
|
android:padding="@dimen/tiny_margin"
|
||||||
android:src="@drawable/ic_star_off_big"/>
|
android:src="@drawable/ic_star_off_big"/>
|
||||||
|
|
||||||
@ -38,16 +38,16 @@
|
|||||||
android:id="@+id/contact_actions_holder"
|
android:id="@+id/contact_actions_holder"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_alignBottom="@id/contact_photo"
|
|
||||||
android:layout_alignTop="@+id/contact_photo"
|
android:layout_alignTop="@+id/contact_photo"
|
||||||
|
android:layout_alignBottom="@id/contact_photo"
|
||||||
android:gravity="center_vertical|right">
|
android:gravity="center_vertical|right">
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
android:id="@+id/contact_send_email"
|
android:id="@+id/contact_send_email"
|
||||||
style="@style/MyBorderlessBackgroundStyle"
|
|
||||||
android:layout_width="@dimen/contact_actions_size"
|
android:layout_width="@dimen/contact_actions_size"
|
||||||
android:layout_height="@dimen/contact_actions_size"
|
android:layout_height="@dimen/contact_actions_size"
|
||||||
android:adjustViewBounds="true"
|
android:adjustViewBounds="true"
|
||||||
|
android:background="?attr/selectableItemBackgroundBorderless"
|
||||||
android:paddingLeft="@dimen/activity_margin"
|
android:paddingLeft="@dimen/activity_margin"
|
||||||
android:paddingRight="@dimen/activity_margin"
|
android:paddingRight="@dimen/activity_margin"
|
||||||
android:scaleType="center"
|
android:scaleType="center"
|
||||||
@ -55,11 +55,11 @@
|
|||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
android:id="@+id/contact_start_call"
|
android:id="@+id/contact_start_call"
|
||||||
style="@style/MyBorderlessBackgroundStyle"
|
|
||||||
android:layout_width="@dimen/contact_actions_size"
|
android:layout_width="@dimen/contact_actions_size"
|
||||||
android:layout_height="@dimen/contact_actions_size"
|
android:layout_height="@dimen/contact_actions_size"
|
||||||
android:layout_marginLeft="@dimen/normal_margin"
|
android:layout_marginLeft="@dimen/normal_margin"
|
||||||
android:adjustViewBounds="true"
|
android:adjustViewBounds="true"
|
||||||
|
android:background="?attr/selectableItemBackgroundBorderless"
|
||||||
android:paddingLeft="@dimen/activity_margin"
|
android:paddingLeft="@dimen/activity_margin"
|
||||||
android:paddingRight="@dimen/activity_margin"
|
android:paddingRight="@dimen/activity_margin"
|
||||||
android:scaleType="center"
|
android:scaleType="center"
|
||||||
@ -67,11 +67,11 @@
|
|||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
android:id="@+id/contact_send_sms"
|
android:id="@+id/contact_send_sms"
|
||||||
style="@style/MyBorderlessBackgroundStyle"
|
|
||||||
android:layout_width="@dimen/contact_actions_size"
|
android:layout_width="@dimen/contact_actions_size"
|
||||||
android:layout_height="@dimen/contact_actions_size"
|
android:layout_height="@dimen/contact_actions_size"
|
||||||
android:layout_marginLeft="@dimen/normal_margin"
|
android:layout_marginLeft="@dimen/normal_margin"
|
||||||
android:adjustViewBounds="true"
|
android:adjustViewBounds="true"
|
||||||
|
android:background="?attr/selectableItemBackgroundBorderless"
|
||||||
android:paddingLeft="@dimen/activity_margin"
|
android:paddingLeft="@dimen/activity_margin"
|
||||||
android:paddingRight="@dimen/activity_margin"
|
android:paddingRight="@dimen/activity_margin"
|
||||||
android:scaleType="center"
|
android:scaleType="center"
|
||||||
@ -84,10 +84,10 @@
|
|||||||
android:layout_width="@dimen/contact_icons_size"
|
android:layout_width="@dimen/contact_icons_size"
|
||||||
android:layout_height="@dimen/contact_icons_size"
|
android:layout_height="@dimen/contact_icons_size"
|
||||||
android:layout_below="@+id/contact_photo"
|
android:layout_below="@+id/contact_photo"
|
||||||
android:paddingBottom="@dimen/small_margin"
|
android:paddingTop="@dimen/medium_margin"
|
||||||
android:paddingEnd="@dimen/small_margin"
|
android:paddingEnd="@dimen/small_margin"
|
||||||
android:paddingRight="@dimen/small_margin"
|
android:paddingRight="@dimen/small_margin"
|
||||||
android:paddingTop="@dimen/medium_margin"
|
android:paddingBottom="@dimen/small_margin"
|
||||||
android:src="@drawable/ic_person"/>
|
android:src="@drawable/ic_person"/>
|
||||||
|
|
||||||
<com.simplemobiletools.commons.views.MyEditText
|
<com.simplemobiletools.commons.views.MyEditText
|
||||||
@ -191,10 +191,10 @@
|
|||||||
android:layout_width="@dimen/contact_icons_size"
|
android:layout_width="@dimen/contact_icons_size"
|
||||||
android:layout_height="@dimen/contact_icons_size"
|
android:layout_height="@dimen/contact_icons_size"
|
||||||
android:layout_alignTop="@+id/contact_numbers_holder"
|
android:layout_alignTop="@+id/contact_numbers_holder"
|
||||||
android:paddingBottom="@dimen/small_margin"
|
android:paddingTop="@dimen/medium_margin"
|
||||||
android:paddingEnd="@dimen/small_margin"
|
android:paddingEnd="@dimen/small_margin"
|
||||||
android:paddingRight="@dimen/small_margin"
|
android:paddingRight="@dimen/small_margin"
|
||||||
android:paddingTop="@dimen/medium_margin"
|
android:paddingBottom="@dimen/small_margin"
|
||||||
android:src="@drawable/ic_phone"/>
|
android:src="@drawable/ic_phone"/>
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
@ -218,10 +218,10 @@
|
|||||||
android:layout_centerHorizontal="true"
|
android:layout_centerHorizontal="true"
|
||||||
android:layout_marginBottom="@dimen/medium_margin"
|
android:layout_marginBottom="@dimen/medium_margin"
|
||||||
android:background="@drawable/button_background"
|
android:background="@drawable/button_background"
|
||||||
android:paddingBottom="@dimen/medium_margin"
|
|
||||||
android:paddingLeft="@dimen/activity_margin"
|
android:paddingLeft="@dimen/activity_margin"
|
||||||
android:paddingRight="@dimen/activity_margin"
|
|
||||||
android:paddingTop="@dimen/medium_margin"
|
android:paddingTop="@dimen/medium_margin"
|
||||||
|
android:paddingRight="@dimen/activity_margin"
|
||||||
|
android:paddingBottom="@dimen/medium_margin"
|
||||||
android:src="@drawable/ic_plus"/>
|
android:src="@drawable/ic_plus"/>
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
@ -229,10 +229,10 @@
|
|||||||
android:layout_width="@dimen/contact_icons_size"
|
android:layout_width="@dimen/contact_icons_size"
|
||||||
android:layout_height="@dimen/contact_icons_size"
|
android:layout_height="@dimen/contact_icons_size"
|
||||||
android:layout_alignTop="@+id/contact_emails_holder"
|
android:layout_alignTop="@+id/contact_emails_holder"
|
||||||
android:paddingBottom="@dimen/small_margin"
|
android:paddingTop="@dimen/medium_margin"
|
||||||
android:paddingEnd="@dimen/small_margin"
|
android:paddingEnd="@dimen/small_margin"
|
||||||
android:paddingRight="@dimen/small_margin"
|
android:paddingRight="@dimen/small_margin"
|
||||||
android:paddingTop="@dimen/medium_margin"
|
android:paddingBottom="@dimen/small_margin"
|
||||||
android:src="@drawable/ic_email"/>
|
android:src="@drawable/ic_email"/>
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
@ -255,10 +255,10 @@
|
|||||||
android:layout_centerHorizontal="true"
|
android:layout_centerHorizontal="true"
|
||||||
android:layout_marginTop="@dimen/small_margin"
|
android:layout_marginTop="@dimen/small_margin"
|
||||||
android:background="@drawable/button_background"
|
android:background="@drawable/button_background"
|
||||||
android:paddingBottom="@dimen/medium_margin"
|
|
||||||
android:paddingLeft="@dimen/activity_margin"
|
android:paddingLeft="@dimen/activity_margin"
|
||||||
android:paddingRight="@dimen/activity_margin"
|
|
||||||
android:paddingTop="@dimen/medium_margin"
|
android:paddingTop="@dimen/medium_margin"
|
||||||
|
android:paddingRight="@dimen/activity_margin"
|
||||||
|
android:paddingBottom="@dimen/medium_margin"
|
||||||
android:src="@drawable/ic_plus"/>
|
android:src="@drawable/ic_plus"/>
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
@ -266,10 +266,10 @@
|
|||||||
android:layout_width="@dimen/contact_icons_size"
|
android:layout_width="@dimen/contact_icons_size"
|
||||||
android:layout_height="@dimen/contact_icons_size"
|
android:layout_height="@dimen/contact_icons_size"
|
||||||
android:layout_alignTop="@+id/contact_addresses_holder"
|
android:layout_alignTop="@+id/contact_addresses_holder"
|
||||||
android:paddingBottom="@dimen/small_margin"
|
android:paddingTop="@dimen/medium_margin"
|
||||||
android:paddingEnd="@dimen/small_margin"
|
android:paddingEnd="@dimen/small_margin"
|
||||||
android:paddingRight="@dimen/small_margin"
|
android:paddingRight="@dimen/small_margin"
|
||||||
android:paddingTop="@dimen/medium_margin"
|
android:paddingBottom="@dimen/small_margin"
|
||||||
android:src="@drawable/ic_place"/>
|
android:src="@drawable/ic_place"/>
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
@ -293,10 +293,10 @@
|
|||||||
android:layout_centerHorizontal="true"
|
android:layout_centerHorizontal="true"
|
||||||
android:layout_marginTop="@dimen/small_margin"
|
android:layout_marginTop="@dimen/small_margin"
|
||||||
android:background="@drawable/button_background"
|
android:background="@drawable/button_background"
|
||||||
android:paddingBottom="@dimen/medium_margin"
|
|
||||||
android:paddingLeft="@dimen/activity_margin"
|
android:paddingLeft="@dimen/activity_margin"
|
||||||
android:paddingRight="@dimen/activity_margin"
|
|
||||||
android:paddingTop="@dimen/medium_margin"
|
android:paddingTop="@dimen/medium_margin"
|
||||||
|
android:paddingRight="@dimen/activity_margin"
|
||||||
|
android:paddingBottom="@dimen/medium_margin"
|
||||||
android:src="@drawable/ic_plus"/>
|
android:src="@drawable/ic_plus"/>
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
@ -304,10 +304,10 @@
|
|||||||
android:layout_width="@dimen/contact_icons_size"
|
android:layout_width="@dimen/contact_icons_size"
|
||||||
android:layout_height="@dimen/contact_icons_size"
|
android:layout_height="@dimen/contact_icons_size"
|
||||||
android:layout_alignTop="@+id/contact_ims_holder"
|
android:layout_alignTop="@+id/contact_ims_holder"
|
||||||
android:paddingBottom="@dimen/small_margin"
|
android:paddingTop="@dimen/medium_margin"
|
||||||
android:paddingEnd="@dimen/small_margin"
|
android:paddingEnd="@dimen/small_margin"
|
||||||
android:paddingRight="@dimen/small_margin"
|
android:paddingRight="@dimen/small_margin"
|
||||||
android:paddingTop="@dimen/medium_margin"
|
android:paddingBottom="@dimen/small_margin"
|
||||||
android:src="@drawable/ic_im"/>
|
android:src="@drawable/ic_im"/>
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
@ -331,10 +331,10 @@
|
|||||||
android:layout_centerHorizontal="true"
|
android:layout_centerHorizontal="true"
|
||||||
android:layout_marginTop="@dimen/small_margin"
|
android:layout_marginTop="@dimen/small_margin"
|
||||||
android:background="@drawable/button_background"
|
android:background="@drawable/button_background"
|
||||||
android:paddingBottom="@dimen/medium_margin"
|
|
||||||
android:paddingLeft="@dimen/activity_margin"
|
android:paddingLeft="@dimen/activity_margin"
|
||||||
android:paddingRight="@dimen/activity_margin"
|
|
||||||
android:paddingTop="@dimen/medium_margin"
|
android:paddingTop="@dimen/medium_margin"
|
||||||
|
android:paddingRight="@dimen/activity_margin"
|
||||||
|
android:paddingBottom="@dimen/medium_margin"
|
||||||
android:src="@drawable/ic_plus"/>
|
android:src="@drawable/ic_plus"/>
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
@ -342,10 +342,10 @@
|
|||||||
android:layout_width="@dimen/contact_icons_size"
|
android:layout_width="@dimen/contact_icons_size"
|
||||||
android:layout_height="@dimen/contact_icons_size"
|
android:layout_height="@dimen/contact_icons_size"
|
||||||
android:layout_alignTop="@+id/contact_events_holder"
|
android:layout_alignTop="@+id/contact_events_holder"
|
||||||
android:paddingBottom="@dimen/small_margin"
|
android:paddingTop="@dimen/medium_margin"
|
||||||
android:paddingEnd="@dimen/small_margin"
|
android:paddingEnd="@dimen/small_margin"
|
||||||
android:paddingRight="@dimen/small_margin"
|
android:paddingRight="@dimen/small_margin"
|
||||||
android:paddingTop="@dimen/medium_margin"
|
android:paddingBottom="@dimen/small_margin"
|
||||||
android:src="@drawable/ic_cake"/>
|
android:src="@drawable/ic_cake"/>
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
@ -369,10 +369,10 @@
|
|||||||
android:layout_centerHorizontal="true"
|
android:layout_centerHorizontal="true"
|
||||||
android:layout_marginTop="@dimen/small_margin"
|
android:layout_marginTop="@dimen/small_margin"
|
||||||
android:background="@drawable/button_background"
|
android:background="@drawable/button_background"
|
||||||
android:paddingBottom="@dimen/medium_margin"
|
|
||||||
android:paddingLeft="@dimen/activity_margin"
|
android:paddingLeft="@dimen/activity_margin"
|
||||||
android:paddingRight="@dimen/activity_margin"
|
|
||||||
android:paddingTop="@dimen/medium_margin"
|
android:paddingTop="@dimen/medium_margin"
|
||||||
|
android:paddingRight="@dimen/activity_margin"
|
||||||
|
android:paddingBottom="@dimen/medium_margin"
|
||||||
android:src="@drawable/ic_plus"/>
|
android:src="@drawable/ic_plus"/>
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
@ -380,10 +380,10 @@
|
|||||||
android:layout_width="@dimen/contact_icons_size"
|
android:layout_width="@dimen/contact_icons_size"
|
||||||
android:layout_height="@dimen/contact_icons_size"
|
android:layout_height="@dimen/contact_icons_size"
|
||||||
android:layout_alignTop="@+id/contact_notes"
|
android:layout_alignTop="@+id/contact_notes"
|
||||||
android:paddingBottom="@dimen/small_margin"
|
android:paddingTop="@dimen/medium_margin"
|
||||||
android:paddingEnd="@dimen/small_margin"
|
android:paddingEnd="@dimen/small_margin"
|
||||||
android:paddingRight="@dimen/small_margin"
|
android:paddingRight="@dimen/small_margin"
|
||||||
android:paddingTop="@dimen/medium_margin"
|
android:paddingBottom="@dimen/small_margin"
|
||||||
android:src="@drawable/ic_label"/>
|
android:src="@drawable/ic_label"/>
|
||||||
|
|
||||||
<com.simplemobiletools.commons.views.MyEditText
|
<com.simplemobiletools.commons.views.MyEditText
|
||||||
@ -404,10 +404,10 @@
|
|||||||
android:layout_width="@dimen/contact_icons_size"
|
android:layout_width="@dimen/contact_icons_size"
|
||||||
android:layout_height="@dimen/contact_icons_size"
|
android:layout_height="@dimen/contact_icons_size"
|
||||||
android:layout_alignTop="@+id/contact_organization_company"
|
android:layout_alignTop="@+id/contact_organization_company"
|
||||||
android:paddingBottom="@dimen/small_margin"
|
android:paddingTop="@dimen/medium_margin"
|
||||||
android:paddingEnd="@dimen/small_margin"
|
android:paddingEnd="@dimen/small_margin"
|
||||||
android:paddingRight="@dimen/small_margin"
|
android:paddingRight="@dimen/small_margin"
|
||||||
android:paddingTop="@dimen/medium_margin"
|
android:paddingBottom="@dimen/small_margin"
|
||||||
android:src="@drawable/ic_business"/>
|
android:src="@drawable/ic_business"/>
|
||||||
|
|
||||||
<com.simplemobiletools.commons.views.MyEditText
|
<com.simplemobiletools.commons.views.MyEditText
|
||||||
@ -445,10 +445,10 @@
|
|||||||
android:layout_width="@dimen/contact_icons_size"
|
android:layout_width="@dimen/contact_icons_size"
|
||||||
android:layout_height="@dimen/contact_icons_size"
|
android:layout_height="@dimen/contact_icons_size"
|
||||||
android:layout_alignTop="@+id/contact_websites_holder"
|
android:layout_alignTop="@+id/contact_websites_holder"
|
||||||
android:paddingBottom="@dimen/small_margin"
|
android:paddingTop="@dimen/medium_margin"
|
||||||
android:paddingEnd="@dimen/small_margin"
|
android:paddingEnd="@dimen/small_margin"
|
||||||
android:paddingRight="@dimen/small_margin"
|
android:paddingRight="@dimen/small_margin"
|
||||||
android:paddingTop="@dimen/medium_margin"
|
android:paddingBottom="@dimen/small_margin"
|
||||||
android:src="@drawable/ic_link"/>
|
android:src="@drawable/ic_link"/>
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
@ -472,10 +472,10 @@
|
|||||||
android:layout_centerHorizontal="true"
|
android:layout_centerHorizontal="true"
|
||||||
android:layout_marginTop="@dimen/small_margin"
|
android:layout_marginTop="@dimen/small_margin"
|
||||||
android:background="@drawable/button_background"
|
android:background="@drawable/button_background"
|
||||||
android:paddingBottom="@dimen/medium_margin"
|
|
||||||
android:paddingLeft="@dimen/activity_margin"
|
android:paddingLeft="@dimen/activity_margin"
|
||||||
android:paddingRight="@dimen/activity_margin"
|
|
||||||
android:paddingTop="@dimen/medium_margin"
|
android:paddingTop="@dimen/medium_margin"
|
||||||
|
android:paddingRight="@dimen/activity_margin"
|
||||||
|
android:paddingBottom="@dimen/medium_margin"
|
||||||
android:src="@drawable/ic_plus"/>
|
android:src="@drawable/ic_plus"/>
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
@ -483,10 +483,10 @@
|
|||||||
android:layout_width="@dimen/contact_icons_size"
|
android:layout_width="@dimen/contact_icons_size"
|
||||||
android:layout_height="@dimen/contact_icons_size"
|
android:layout_height="@dimen/contact_icons_size"
|
||||||
android:layout_alignTop="@+id/contact_groups_holder"
|
android:layout_alignTop="@+id/contact_groups_holder"
|
||||||
android:paddingBottom="@dimen/small_margin"
|
android:paddingTop="@dimen/medium_margin"
|
||||||
android:paddingEnd="@dimen/small_margin"
|
android:paddingEnd="@dimen/small_margin"
|
||||||
android:paddingRight="@dimen/small_margin"
|
android:paddingRight="@dimen/small_margin"
|
||||||
android:paddingTop="@dimen/medium_margin"
|
android:paddingBottom="@dimen/small_margin"
|
||||||
android:src="@drawable/ic_group"/>
|
android:src="@drawable/ic_group"/>
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
@ -510,10 +510,10 @@
|
|||||||
android:layout_centerHorizontal="true"
|
android:layout_centerHorizontal="true"
|
||||||
android:layout_marginTop="@dimen/small_margin"
|
android:layout_marginTop="@dimen/small_margin"
|
||||||
android:background="@drawable/button_background"
|
android:background="@drawable/button_background"
|
||||||
android:paddingBottom="@dimen/medium_margin"
|
|
||||||
android:paddingLeft="@dimen/activity_margin"
|
android:paddingLeft="@dimen/activity_margin"
|
||||||
android:paddingRight="@dimen/activity_margin"
|
|
||||||
android:paddingTop="@dimen/medium_margin"
|
android:paddingTop="@dimen/medium_margin"
|
||||||
|
android:paddingRight="@dimen/activity_margin"
|
||||||
|
android:paddingBottom="@dimen/medium_margin"
|
||||||
android:src="@drawable/ic_plus"/>
|
android:src="@drawable/ic_plus"/>
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
@ -521,10 +521,10 @@
|
|||||||
android:layout_width="@dimen/contact_icons_size"
|
android:layout_width="@dimen/contact_icons_size"
|
||||||
android:layout_height="@dimen/contact_icons_size"
|
android:layout_height="@dimen/contact_icons_size"
|
||||||
android:layout_alignTop="@+id/contact_source"
|
android:layout_alignTop="@+id/contact_source"
|
||||||
android:paddingBottom="@dimen/small_margin"
|
android:paddingTop="@dimen/medium_margin"
|
||||||
android:paddingEnd="@dimen/small_margin"
|
android:paddingEnd="@dimen/small_margin"
|
||||||
android:paddingRight="@dimen/small_margin"
|
android:paddingRight="@dimen/small_margin"
|
||||||
android:paddingTop="@dimen/medium_margin"
|
android:paddingBottom="@dimen/small_margin"
|
||||||
android:src="@drawable/ic_account_box"/>
|
android:src="@drawable/ic_account_box"/>
|
||||||
|
|
||||||
<com.simplemobiletools.commons.views.MyTextView
|
<com.simplemobiletools.commons.views.MyTextView
|
||||||
@ -538,9 +538,9 @@
|
|||||||
android:background="?attr/selectableItemBackground"
|
android:background="?attr/selectableItemBackground"
|
||||||
android:lines="1"
|
android:lines="1"
|
||||||
android:maxLines="1"
|
android:maxLines="1"
|
||||||
android:paddingBottom="@dimen/normal_margin"
|
|
||||||
android:paddingLeft="@dimen/small_margin"
|
android:paddingLeft="@dimen/small_margin"
|
||||||
android:paddingTop="@dimen/normal_margin"
|
android:paddingTop="@dimen/normal_margin"
|
||||||
|
android:paddingBottom="@dimen/normal_margin"
|
||||||
android:singleLine="true"
|
android:singleLine="true"
|
||||||
android:textSize="@dimen/bigger_text_size"
|
android:textSize="@dimen/bigger_text_size"
|
||||||
tools:text="hello@simplemobiletools.com"/>
|
tools:text="hello@simplemobiletools.com"/>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?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:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
android:id="@+id/group_contacts_coordinator"
|
android:id="@+id/group_contacts_coordinator"
|
||||||
@ -26,13 +26,13 @@
|
|||||||
|
|
||||||
<com.simplemobiletools.commons.views.MyTextView
|
<com.simplemobiletools.commons.views.MyTextView
|
||||||
android:id="@+id/group_contacts_placeholder_2"
|
android:id="@+id/group_contacts_placeholder_2"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_below="@+id/group_contacts_placeholder"
|
android:layout_below="@+id/group_contacts_placeholder"
|
||||||
android:layout_centerHorizontal="true"
|
android:layout_centerHorizontal="true"
|
||||||
|
android:background="?attr/selectableItemBackground"
|
||||||
android:gravity="center"
|
android:gravity="center"
|
||||||
android:paddingBottom="@dimen/medium_margin"
|
android:padding="@dimen/activity_margin"
|
||||||
android:paddingTop="@dimen/medium_margin"
|
|
||||||
android:text="@string/add_contacts"
|
android:text="@string/add_contacts"
|
||||||
android:textSize="@dimen/bigger_text_size"
|
android:textSize="@dimen/bigger_text_size"
|
||||||
android:visibility="gone"/>
|
android:visibility="gone"/>
|
||||||
@ -51,8 +51,8 @@
|
|||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:layout_alignParentEnd="true"
|
android:layout_alignParentEnd="true"
|
||||||
android:layout_alignParentRight="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"/>
|
<include layout="@layout/fastscroller_handle_vertical"/>
|
||||||
|
|
||||||
@ -67,4 +67,4 @@
|
|||||||
android:layout_margin="@dimen/activity_margin"
|
android:layout_margin="@dimen/activity_margin"
|
||||||
android:src="@drawable/ic_plus"/>
|
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_width="match_parent"
|
||||||
android:layout_height="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:id="@+id/main_tabs_holder"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="48dp"
|
android:layout_height="48dp"
|
||||||
@ -16,7 +16,7 @@
|
|||||||
app:tabMinWidth="150dp"
|
app:tabMinWidth="150dp"
|
||||||
app:tabSelectedTextColor="@android:color/white"/>
|
app:tabSelectedTextColor="@android:color/white"/>
|
||||||
|
|
||||||
<com.booking.rtlviewpager.RtlViewPager
|
<com.simplemobiletools.commons.views.MyViewPager
|
||||||
android:id="@+id/viewpager"
|
android:id="@+id/viewpager"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="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_height="wrap_content"
|
||||||
android:layout_marginTop="@dimen/medium_margin"
|
android:layout_marginTop="@dimen/medium_margin"
|
||||||
android:background="?attr/selectableItemBackground"
|
android:background="?attr/selectableItemBackground"
|
||||||
android:paddingBottom="@dimen/activity_margin"
|
|
||||||
android:paddingLeft="@dimen/normal_margin"
|
android:paddingLeft="@dimen/normal_margin"
|
||||||
|
android:paddingTop="@dimen/activity_margin"
|
||||||
android:paddingRight="@dimen/normal_margin"
|
android:paddingRight="@dimen/normal_margin"
|
||||||
android:paddingTop="@dimen/activity_margin">
|
android:paddingBottom="@dimen/activity_margin">
|
||||||
|
|
||||||
<com.simplemobiletools.commons.views.MyTextView
|
<com.simplemobiletools.commons.views.MyTextView
|
||||||
android:id="@+id/settings_purchase_thank_you"
|
android:id="@+id/settings_purchase_thank_you"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_centerVertical="true"
|
android:layout_centerVertical="true"
|
||||||
android:paddingLeft="@dimen/medium_margin"
|
|
||||||
android:paddingStart="@dimen/medium_margin"
|
android:paddingStart="@dimen/medium_margin"
|
||||||
|
android:paddingLeft="@dimen/medium_margin"
|
||||||
android:text="@string/purchase_simple_thank_you"/>
|
android:text="@string/purchase_simple_thank_you"/>
|
||||||
|
|
||||||
</RelativeLayout>
|
</RelativeLayout>
|
||||||
@ -40,18 +40,18 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="@dimen/medium_margin"
|
android:layout_marginTop="@dimen/medium_margin"
|
||||||
android:background="?attr/selectableItemBackground"
|
android:background="?attr/selectableItemBackground"
|
||||||
android:paddingBottom="@dimen/activity_margin"
|
|
||||||
android:paddingLeft="@dimen/normal_margin"
|
android:paddingLeft="@dimen/normal_margin"
|
||||||
|
android:paddingTop="@dimen/activity_margin"
|
||||||
android:paddingRight="@dimen/normal_margin"
|
android:paddingRight="@dimen/normal_margin"
|
||||||
android:paddingTop="@dimen/activity_margin">
|
android:paddingBottom="@dimen/activity_margin">
|
||||||
|
|
||||||
<com.simplemobiletools.commons.views.MyTextView
|
<com.simplemobiletools.commons.views.MyTextView
|
||||||
android:id="@+id/settings_customize_colors"
|
android:id="@+id/settings_customize_colors"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_centerVertical="true"
|
android:layout_centerVertical="true"
|
||||||
android:paddingLeft="@dimen/medium_margin"
|
|
||||||
android:paddingStart="@dimen/medium_margin"
|
android:paddingStart="@dimen/medium_margin"
|
||||||
|
android:paddingLeft="@dimen/medium_margin"
|
||||||
android:text="@string/customize_colors"/>
|
android:text="@string/customize_colors"/>
|
||||||
|
|
||||||
</RelativeLayout>
|
</RelativeLayout>
|
||||||
@ -62,18 +62,18 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="@dimen/medium_margin"
|
android:layout_marginTop="@dimen/medium_margin"
|
||||||
android:background="?attr/selectableItemBackground"
|
android:background="?attr/selectableItemBackground"
|
||||||
android:paddingBottom="@dimen/activity_margin"
|
|
||||||
android:paddingLeft="@dimen/normal_margin"
|
android:paddingLeft="@dimen/normal_margin"
|
||||||
|
android:paddingTop="@dimen/activity_margin"
|
||||||
android:paddingRight="@dimen/normal_margin"
|
android:paddingRight="@dimen/normal_margin"
|
||||||
android:paddingTop="@dimen/activity_margin">
|
android:paddingBottom="@dimen/activity_margin">
|
||||||
|
|
||||||
<com.simplemobiletools.commons.views.MyTextView
|
<com.simplemobiletools.commons.views.MyTextView
|
||||||
android:id="@+id/settings_manage_contact_fields"
|
android:id="@+id/settings_manage_contact_fields"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_centerVertical="true"
|
android:layout_centerVertical="true"
|
||||||
android:paddingLeft="@dimen/medium_margin"
|
|
||||||
android:paddingStart="@dimen/medium_margin"
|
android:paddingStart="@dimen/medium_margin"
|
||||||
|
android:paddingLeft="@dimen/medium_margin"
|
||||||
android:text="@string/manage_shown_contact_fields"/>
|
android:text="@string/manage_shown_contact_fields"/>
|
||||||
|
|
||||||
</RelativeLayout>
|
</RelativeLayout>
|
||||||
@ -84,18 +84,18 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="@dimen/medium_margin"
|
android:layout_marginTop="@dimen/medium_margin"
|
||||||
android:background="?attr/selectableItemBackground"
|
android:background="?attr/selectableItemBackground"
|
||||||
android:paddingBottom="@dimen/activity_margin"
|
|
||||||
android:paddingLeft="@dimen/normal_margin"
|
android:paddingLeft="@dimen/normal_margin"
|
||||||
|
android:paddingTop="@dimen/activity_margin"
|
||||||
android:paddingRight="@dimen/normal_margin"
|
android:paddingRight="@dimen/normal_margin"
|
||||||
android:paddingTop="@dimen/activity_margin">
|
android:paddingBottom="@dimen/activity_margin">
|
||||||
|
|
||||||
<com.simplemobiletools.commons.views.MyTextView
|
<com.simplemobiletools.commons.views.MyTextView
|
||||||
android:id="@+id/settings_manage_tabs"
|
android:id="@+id/settings_manage_tabs"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_centerVertical="true"
|
android:layout_centerVertical="true"
|
||||||
android:paddingLeft="@dimen/medium_margin"
|
|
||||||
android:paddingStart="@dimen/medium_margin"
|
android:paddingStart="@dimen/medium_margin"
|
||||||
|
android:paddingLeft="@dimen/medium_margin"
|
||||||
android:text="@string/manage_shown_tabs"/>
|
android:text="@string/manage_shown_tabs"/>
|
||||||
|
|
||||||
</RelativeLayout>
|
</RelativeLayout>
|
||||||
@ -106,10 +106,10 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="@dimen/medium_margin"
|
android:layout_marginTop="@dimen/medium_margin"
|
||||||
android:background="?attr/selectableItemBackground"
|
android:background="?attr/selectableItemBackground"
|
||||||
android:paddingBottom="@dimen/activity_margin"
|
|
||||||
android:paddingLeft="@dimen/normal_margin"
|
android:paddingLeft="@dimen/normal_margin"
|
||||||
|
android:paddingTop="@dimen/activity_margin"
|
||||||
android:paddingRight="@dimen/normal_margin"
|
android:paddingRight="@dimen/normal_margin"
|
||||||
android:paddingTop="@dimen/activity_margin">
|
android:paddingBottom="@dimen/activity_margin">
|
||||||
|
|
||||||
<com.simplemobiletools.commons.views.MySwitchCompat
|
<com.simplemobiletools.commons.views.MySwitchCompat
|
||||||
android:id="@+id/settings_use_english"
|
android:id="@+id/settings_use_english"
|
||||||
@ -117,8 +117,8 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:background="@null"
|
android:background="@null"
|
||||||
android:clickable="false"
|
android:clickable="false"
|
||||||
android:paddingLeft="@dimen/medium_margin"
|
|
||||||
android:paddingStart="@dimen/medium_margin"
|
android:paddingStart="@dimen/medium_margin"
|
||||||
|
android:paddingLeft="@dimen/medium_margin"
|
||||||
android:text="@string/use_english_language"
|
android:text="@string/use_english_language"
|
||||||
app:switchPadding="@dimen/medium_margin"/>
|
app:switchPadding="@dimen/medium_margin"/>
|
||||||
|
|
||||||
@ -130,10 +130,10 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="@dimen/medium_margin"
|
android:layout_marginTop="@dimen/medium_margin"
|
||||||
android:background="?attr/selectableItemBackground"
|
android:background="?attr/selectableItemBackground"
|
||||||
android:paddingBottom="@dimen/activity_margin"
|
|
||||||
android:paddingLeft="@dimen/normal_margin"
|
android:paddingLeft="@dimen/normal_margin"
|
||||||
|
android:paddingTop="@dimen/activity_margin"
|
||||||
android:paddingRight="@dimen/normal_margin"
|
android:paddingRight="@dimen/normal_margin"
|
||||||
android:paddingTop="@dimen/activity_margin">
|
android:paddingBottom="@dimen/activity_margin">
|
||||||
|
|
||||||
<com.simplemobiletools.commons.views.MySwitchCompat
|
<com.simplemobiletools.commons.views.MySwitchCompat
|
||||||
android:id="@+id/settings_avoid_whats_new"
|
android:id="@+id/settings_avoid_whats_new"
|
||||||
@ -141,8 +141,8 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:background="@null"
|
android:background="@null"
|
||||||
android:clickable="false"
|
android:clickable="false"
|
||||||
android:paddingLeft="@dimen/medium_margin"
|
|
||||||
android:paddingStart="@dimen/medium_margin"
|
android:paddingStart="@dimen/medium_margin"
|
||||||
|
android:paddingLeft="@dimen/medium_margin"
|
||||||
android:text="@string/avoid_whats_new"
|
android:text="@string/avoid_whats_new"
|
||||||
app:switchPadding="@dimen/medium_margin"/>
|
app:switchPadding="@dimen/medium_margin"/>
|
||||||
|
|
||||||
@ -154,10 +154,10 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="@dimen/medium_margin"
|
android:layout_marginTop="@dimen/medium_margin"
|
||||||
android:background="?attr/selectableItemBackground"
|
android:background="?attr/selectableItemBackground"
|
||||||
android:paddingBottom="@dimen/activity_margin"
|
|
||||||
android:paddingLeft="@dimen/normal_margin"
|
android:paddingLeft="@dimen/normal_margin"
|
||||||
|
android:paddingTop="@dimen/activity_margin"
|
||||||
android:paddingRight="@dimen/normal_margin"
|
android:paddingRight="@dimen/normal_margin"
|
||||||
android:paddingTop="@dimen/activity_margin">
|
android:paddingBottom="@dimen/activity_margin">
|
||||||
|
|
||||||
<com.simplemobiletools.commons.views.MySwitchCompat
|
<com.simplemobiletools.commons.views.MySwitchCompat
|
||||||
android:id="@+id/settings_show_info_bubble"
|
android:id="@+id/settings_show_info_bubble"
|
||||||
@ -165,8 +165,8 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:background="@null"
|
android:background="@null"
|
||||||
android:clickable="false"
|
android:clickable="false"
|
||||||
android:paddingLeft="@dimen/medium_margin"
|
|
||||||
android:paddingStart="@dimen/medium_margin"
|
android:paddingStart="@dimen/medium_margin"
|
||||||
|
android:paddingLeft="@dimen/medium_margin"
|
||||||
android:text="@string/show_info_bubble"
|
android:text="@string/show_info_bubble"
|
||||||
app:switchPadding="@dimen/medium_margin"/>
|
app:switchPadding="@dimen/medium_margin"/>
|
||||||
|
|
||||||
@ -178,10 +178,10 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="@dimen/medium_margin"
|
android:layout_marginTop="@dimen/medium_margin"
|
||||||
android:background="?attr/selectableItemBackground"
|
android:background="?attr/selectableItemBackground"
|
||||||
android:paddingBottom="@dimen/activity_margin"
|
|
||||||
android:paddingLeft="@dimen/normal_margin"
|
android:paddingLeft="@dimen/normal_margin"
|
||||||
|
android:paddingTop="@dimen/activity_margin"
|
||||||
android:paddingRight="@dimen/normal_margin"
|
android:paddingRight="@dimen/normal_margin"
|
||||||
android:paddingTop="@dimen/activity_margin">
|
android:paddingBottom="@dimen/activity_margin">
|
||||||
|
|
||||||
<com.simplemobiletools.commons.views.MySwitchCompat
|
<com.simplemobiletools.commons.views.MySwitchCompat
|
||||||
android:id="@+id/settings_show_contact_thumbnails"
|
android:id="@+id/settings_show_contact_thumbnails"
|
||||||
@ -189,8 +189,8 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:background="@null"
|
android:background="@null"
|
||||||
android:clickable="false"
|
android:clickable="false"
|
||||||
android:paddingLeft="@dimen/medium_margin"
|
|
||||||
android:paddingStart="@dimen/medium_margin"
|
android:paddingStart="@dimen/medium_margin"
|
||||||
|
android:paddingLeft="@dimen/medium_margin"
|
||||||
android:text="@string/show_contact_thumbnails"
|
android:text="@string/show_contact_thumbnails"
|
||||||
app:switchPadding="@dimen/medium_margin"/>
|
app:switchPadding="@dimen/medium_margin"/>
|
||||||
|
|
||||||
@ -202,10 +202,10 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="@dimen/medium_margin"
|
android:layout_marginTop="@dimen/medium_margin"
|
||||||
android:background="?attr/selectableItemBackground"
|
android:background="?attr/selectableItemBackground"
|
||||||
android:paddingBottom="@dimen/activity_margin"
|
|
||||||
android:paddingLeft="@dimen/normal_margin"
|
android:paddingLeft="@dimen/normal_margin"
|
||||||
|
android:paddingTop="@dimen/activity_margin"
|
||||||
android:paddingRight="@dimen/normal_margin"
|
android:paddingRight="@dimen/normal_margin"
|
||||||
android:paddingTop="@dimen/activity_margin">
|
android:paddingBottom="@dimen/activity_margin">
|
||||||
|
|
||||||
<com.simplemobiletools.commons.views.MySwitchCompat
|
<com.simplemobiletools.commons.views.MySwitchCompat
|
||||||
android:id="@+id/settings_show_phone_numbers"
|
android:id="@+id/settings_show_phone_numbers"
|
||||||
@ -213,23 +213,47 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:background="@null"
|
android:background="@null"
|
||||||
android:clickable="false"
|
android:clickable="false"
|
||||||
android:paddingLeft="@dimen/medium_margin"
|
|
||||||
android:paddingStart="@dimen/medium_margin"
|
android:paddingStart="@dimen/medium_margin"
|
||||||
|
android:paddingLeft="@dimen/medium_margin"
|
||||||
android:text="@string/show_phone_numbers"
|
android:text="@string/show_phone_numbers"
|
||||||
app:switchPadding="@dimen/medium_margin"/>
|
app:switchPadding="@dimen/medium_margin"/>
|
||||||
|
|
||||||
</RelativeLayout>
|
</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
|
<RelativeLayout
|
||||||
android:id="@+id/settings_start_with_surname_holder"
|
android:id="@+id/settings_start_with_surname_holder"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="@dimen/medium_margin"
|
android:layout_marginTop="@dimen/medium_margin"
|
||||||
android:background="?attr/selectableItemBackground"
|
android:background="?attr/selectableItemBackground"
|
||||||
android:paddingBottom="@dimen/activity_margin"
|
|
||||||
android:paddingLeft="@dimen/normal_margin"
|
android:paddingLeft="@dimen/normal_margin"
|
||||||
|
android:paddingTop="@dimen/activity_margin"
|
||||||
android:paddingRight="@dimen/normal_margin"
|
android:paddingRight="@dimen/normal_margin"
|
||||||
android:paddingTop="@dimen/activity_margin">
|
android:paddingBottom="@dimen/activity_margin">
|
||||||
|
|
||||||
<com.simplemobiletools.commons.views.MySwitchCompat
|
<com.simplemobiletools.commons.views.MySwitchCompat
|
||||||
android:id="@+id/settings_start_with_surname"
|
android:id="@+id/settings_start_with_surname"
|
||||||
@ -237,23 +261,47 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:background="@null"
|
android:background="@null"
|
||||||
android:clickable="false"
|
android:clickable="false"
|
||||||
android:paddingLeft="@dimen/medium_margin"
|
|
||||||
android:paddingStart="@dimen/medium_margin"
|
android:paddingStart="@dimen/medium_margin"
|
||||||
|
android:paddingLeft="@dimen/medium_margin"
|
||||||
android:text="@string/start_name_with_surname"
|
android:text="@string/start_name_with_surname"
|
||||||
app:switchPadding="@dimen/medium_margin"/>
|
app:switchPadding="@dimen/medium_margin"/>
|
||||||
|
|
||||||
</RelativeLayout>
|
</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
|
<RelativeLayout
|
||||||
android:id="@+id/settings_filter_duplicates_holder"
|
android:id="@+id/settings_filter_duplicates_holder"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="@dimen/medium_margin"
|
android:layout_marginTop="@dimen/medium_margin"
|
||||||
android:background="?attr/selectableItemBackground"
|
android:background="?attr/selectableItemBackground"
|
||||||
android:paddingBottom="@dimen/activity_margin"
|
|
||||||
android:paddingLeft="@dimen/normal_margin"
|
android:paddingLeft="@dimen/normal_margin"
|
||||||
|
android:paddingTop="@dimen/activity_margin"
|
||||||
android:paddingRight="@dimen/normal_margin"
|
android:paddingRight="@dimen/normal_margin"
|
||||||
android:paddingTop="@dimen/activity_margin">
|
android:paddingBottom="@dimen/activity_margin">
|
||||||
|
|
||||||
<com.simplemobiletools.commons.views.MySwitchCompat
|
<com.simplemobiletools.commons.views.MySwitchCompat
|
||||||
android:id="@+id/settings_filter_duplicates"
|
android:id="@+id/settings_filter_duplicates"
|
||||||
@ -261,8 +309,8 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:background="@null"
|
android:background="@null"
|
||||||
android:clickable="false"
|
android:clickable="false"
|
||||||
android:paddingLeft="@dimen/medium_margin"
|
|
||||||
android:paddingStart="@dimen/medium_margin"
|
android:paddingStart="@dimen/medium_margin"
|
||||||
|
android:paddingLeft="@dimen/medium_margin"
|
||||||
android:text="@string/filter_duplicates"
|
android:text="@string/filter_duplicates"
|
||||||
app:switchPadding="@dimen/medium_margin"/>
|
app:switchPadding="@dimen/medium_margin"/>
|
||||||
|
|
||||||
@ -274,10 +322,10 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="@dimen/medium_margin"
|
android:layout_marginTop="@dimen/medium_margin"
|
||||||
android:background="?attr/selectableItemBackground"
|
android:background="?attr/selectableItemBackground"
|
||||||
android:paddingBottom="@dimen/activity_margin"
|
|
||||||
android:paddingLeft="@dimen/normal_margin"
|
android:paddingLeft="@dimen/normal_margin"
|
||||||
|
android:paddingTop="@dimen/activity_margin"
|
||||||
android:paddingRight="@dimen/normal_margin"
|
android:paddingRight="@dimen/normal_margin"
|
||||||
android:paddingTop="@dimen/activity_margin">
|
android:paddingBottom="@dimen/activity_margin">
|
||||||
|
|
||||||
<com.simplemobiletools.commons.views.MySwitchCompat
|
<com.simplemobiletools.commons.views.MySwitchCompat
|
||||||
android:id="@+id/settings_show_call_confirmation"
|
android:id="@+id/settings_show_call_confirmation"
|
||||||
@ -285,8 +333,8 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:background="@null"
|
android:background="@null"
|
||||||
android:clickable="false"
|
android:clickable="false"
|
||||||
android:paddingLeft="@dimen/medium_margin"
|
|
||||||
android:paddingStart="@dimen/medium_margin"
|
android:paddingStart="@dimen/medium_margin"
|
||||||
|
android:paddingLeft="@dimen/medium_margin"
|
||||||
android:text="@string/show_call_confirmation_dialog"
|
android:text="@string/show_call_confirmation_dialog"
|
||||||
app:switchPadding="@dimen/medium_margin"/>
|
app:switchPadding="@dimen/medium_margin"/>
|
||||||
|
|
||||||
@ -298,18 +346,18 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="@dimen/medium_margin"
|
android:layout_marginTop="@dimen/medium_margin"
|
||||||
android:background="?attr/selectableItemBackground"
|
android:background="?attr/selectableItemBackground"
|
||||||
android:paddingBottom="@dimen/bigger_margin"
|
|
||||||
android:paddingLeft="@dimen/normal_margin"
|
android:paddingLeft="@dimen/normal_margin"
|
||||||
|
android:paddingTop="@dimen/bigger_margin"
|
||||||
android:paddingRight="@dimen/normal_margin"
|
android:paddingRight="@dimen/normal_margin"
|
||||||
android:paddingTop="@dimen/bigger_margin">
|
android:paddingBottom="@dimen/bigger_margin">
|
||||||
|
|
||||||
<com.simplemobiletools.commons.views.MyTextView
|
<com.simplemobiletools.commons.views.MyTextView
|
||||||
android:id="@+id/settings_on_contact_click_label"
|
android:id="@+id/settings_on_contact_click_label"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_centerVertical="true"
|
android:layout_centerVertical="true"
|
||||||
android:layout_toLeftOf="@+id/settings_on_contact_click"
|
|
||||||
android:layout_toStartOf="@+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:paddingLeft="@dimen/medium_margin"
|
||||||
android:paddingRight="@dimen/medium_margin"
|
android:paddingRight="@dimen/medium_margin"
|
||||||
android:text="@string/on_contact_click"/>
|
android:text="@string/on_contact_click"/>
|
||||||
|
@ -10,10 +10,10 @@
|
|||||||
android:id="@+id/contact_holder"
|
android:id="@+id/contact_holder"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:paddingBottom="@dimen/medium_margin"
|
|
||||||
android:paddingLeft="@dimen/normal_margin"
|
android:paddingLeft="@dimen/normal_margin"
|
||||||
|
android:paddingTop="@dimen/activity_margin"
|
||||||
android:paddingRight="@dimen/normal_margin"
|
android:paddingRight="@dimen/normal_margin"
|
||||||
android:paddingTop="@dimen/activity_margin">
|
android:paddingBottom="@dimen/medium_margin">
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
android:id="@+id/contact_photo"
|
android:id="@+id/contact_photo"
|
||||||
@ -23,14 +23,14 @@
|
|||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
android:id="@+id/contact_toggle_favorite"
|
android:id="@+id/contact_toggle_favorite"
|
||||||
style="@style/MyBorderlessBackgroundStyle"
|
|
||||||
android:layout_width="@dimen/contact_actions_size"
|
android:layout_width="@dimen/contact_actions_size"
|
||||||
android:layout_height="@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_alignTop="@+id/contact_photo"
|
||||||
|
android:layout_alignBottom="@id/contact_photo"
|
||||||
android:layout_marginLeft="@dimen/medium_margin"
|
android:layout_marginLeft="@dimen/medium_margin"
|
||||||
android:layout_toRightOf="@+id/contact_photo"
|
android:layout_toRightOf="@+id/contact_photo"
|
||||||
android:adjustViewBounds="true"
|
android:adjustViewBounds="true"
|
||||||
|
android:background="?attr/selectableItemBackgroundBorderless"
|
||||||
android:padding="@dimen/tiny_margin"
|
android:padding="@dimen/tiny_margin"
|
||||||
android:src="@drawable/ic_star_off_big"
|
android:src="@drawable/ic_star_off_big"
|
||||||
android:visibility="gone"/>
|
android:visibility="gone"/>
|
||||||
@ -39,16 +39,16 @@
|
|||||||
android:id="@+id/contact_actions_holder"
|
android:id="@+id/contact_actions_holder"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_alignBottom="@id/contact_photo"
|
|
||||||
android:layout_alignTop="@+id/contact_photo"
|
android:layout_alignTop="@+id/contact_photo"
|
||||||
|
android:layout_alignBottom="@id/contact_photo"
|
||||||
android:gravity="center_vertical|right">
|
android:gravity="center_vertical|right">
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
android:id="@+id/contact_send_email"
|
android:id="@+id/contact_send_email"
|
||||||
style="@style/MyBorderlessBackgroundStyle"
|
|
||||||
android:layout_width="@dimen/contact_actions_size"
|
android:layout_width="@dimen/contact_actions_size"
|
||||||
android:layout_height="@dimen/contact_actions_size"
|
android:layout_height="@dimen/contact_actions_size"
|
||||||
android:adjustViewBounds="true"
|
android:adjustViewBounds="true"
|
||||||
|
android:background="?attr/selectableItemBackgroundBorderless"
|
||||||
android:paddingLeft="@dimen/activity_margin"
|
android:paddingLeft="@dimen/activity_margin"
|
||||||
android:paddingRight="@dimen/activity_margin"
|
android:paddingRight="@dimen/activity_margin"
|
||||||
android:scaleType="center"
|
android:scaleType="center"
|
||||||
@ -56,11 +56,11 @@
|
|||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
android:id="@+id/contact_start_call"
|
android:id="@+id/contact_start_call"
|
||||||
style="@style/MyBorderlessBackgroundStyle"
|
|
||||||
android:layout_width="@dimen/contact_actions_size"
|
android:layout_width="@dimen/contact_actions_size"
|
||||||
android:layout_height="@dimen/contact_actions_size"
|
android:layout_height="@dimen/contact_actions_size"
|
||||||
android:layout_marginLeft="@dimen/normal_margin"
|
android:layout_marginLeft="@dimen/normal_margin"
|
||||||
android:adjustViewBounds="true"
|
android:adjustViewBounds="true"
|
||||||
|
android:background="?attr/selectableItemBackgroundBorderless"
|
||||||
android:paddingLeft="@dimen/activity_margin"
|
android:paddingLeft="@dimen/activity_margin"
|
||||||
android:paddingRight="@dimen/activity_margin"
|
android:paddingRight="@dimen/activity_margin"
|
||||||
android:scaleType="center"
|
android:scaleType="center"
|
||||||
@ -68,11 +68,11 @@
|
|||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
android:id="@+id/contact_send_sms"
|
android:id="@+id/contact_send_sms"
|
||||||
style="@style/MyBorderlessBackgroundStyle"
|
|
||||||
android:layout_width="@dimen/contact_actions_size"
|
android:layout_width="@dimen/contact_actions_size"
|
||||||
android:layout_height="@dimen/contact_actions_size"
|
android:layout_height="@dimen/contact_actions_size"
|
||||||
android:layout_marginLeft="@dimen/normal_margin"
|
android:layout_marginLeft="@dimen/normal_margin"
|
||||||
android:adjustViewBounds="true"
|
android:adjustViewBounds="true"
|
||||||
|
android:background="?attr/selectableItemBackgroundBorderless"
|
||||||
android:paddingLeft="@dimen/activity_margin"
|
android:paddingLeft="@dimen/activity_margin"
|
||||||
android:paddingRight="@dimen/activity_margin"
|
android:paddingRight="@dimen/activity_margin"
|
||||||
android:scaleType="center"
|
android:scaleType="center"
|
||||||
@ -85,10 +85,10 @@
|
|||||||
android:layout_width="@dimen/contact_icons_size"
|
android:layout_width="@dimen/contact_icons_size"
|
||||||
android:layout_height="@dimen/contact_icons_size"
|
android:layout_height="@dimen/contact_icons_size"
|
||||||
android:layout_below="@+id/contact_photo"
|
android:layout_below="@+id/contact_photo"
|
||||||
android:paddingBottom="@dimen/small_margin"
|
android:paddingTop="@dimen/medium_margin"
|
||||||
android:paddingEnd="@dimen/small_margin"
|
android:paddingEnd="@dimen/small_margin"
|
||||||
android:paddingRight="@dimen/small_margin"
|
android:paddingRight="@dimen/small_margin"
|
||||||
android:paddingTop="@dimen/medium_margin"
|
android:paddingBottom="@dimen/small_margin"
|
||||||
android:src="@drawable/ic_person"/>
|
android:src="@drawable/ic_person"/>
|
||||||
|
|
||||||
<com.simplemobiletools.commons.views.MyTextView
|
<com.simplemobiletools.commons.views.MyTextView
|
||||||
@ -100,9 +100,9 @@
|
|||||||
android:layout_toRightOf="@+id/contact_name_image"
|
android:layout_toRightOf="@+id/contact_name_image"
|
||||||
android:lines="1"
|
android:lines="1"
|
||||||
android:maxLines="1"
|
android:maxLines="1"
|
||||||
android:paddingBottom="@dimen/normal_margin"
|
|
||||||
android:paddingLeft="@dimen/small_margin"
|
android:paddingLeft="@dimen/small_margin"
|
||||||
android:paddingTop="@dimen/normal_margin"
|
android:paddingTop="@dimen/normal_margin"
|
||||||
|
android:paddingBottom="@dimen/normal_margin"
|
||||||
android:singleLine="true"
|
android:singleLine="true"
|
||||||
android:textSize="@dimen/bigger_text_size"/>
|
android:textSize="@dimen/bigger_text_size"/>
|
||||||
|
|
||||||
@ -115,9 +115,9 @@
|
|||||||
android:layout_toRightOf="@+id/contact_name_image"
|
android:layout_toRightOf="@+id/contact_name_image"
|
||||||
android:lines="1"
|
android:lines="1"
|
||||||
android:maxLines="1"
|
android:maxLines="1"
|
||||||
android:paddingBottom="@dimen/normal_margin"
|
|
||||||
android:paddingLeft="@dimen/small_margin"
|
android:paddingLeft="@dimen/small_margin"
|
||||||
android:paddingTop="@dimen/normal_margin"
|
android:paddingTop="@dimen/normal_margin"
|
||||||
|
android:paddingBottom="@dimen/normal_margin"
|
||||||
android:singleLine="true"
|
android:singleLine="true"
|
||||||
android:textSize="@dimen/bigger_text_size"/>
|
android:textSize="@dimen/bigger_text_size"/>
|
||||||
|
|
||||||
@ -130,9 +130,9 @@
|
|||||||
android:layout_toRightOf="@+id/contact_name_image"
|
android:layout_toRightOf="@+id/contact_name_image"
|
||||||
android:lines="1"
|
android:lines="1"
|
||||||
android:maxLines="1"
|
android:maxLines="1"
|
||||||
android:paddingBottom="@dimen/normal_margin"
|
|
||||||
android:paddingLeft="@dimen/small_margin"
|
android:paddingLeft="@dimen/small_margin"
|
||||||
android:paddingTop="@dimen/normal_margin"
|
android:paddingTop="@dimen/normal_margin"
|
||||||
|
android:paddingBottom="@dimen/normal_margin"
|
||||||
android:singleLine="true"
|
android:singleLine="true"
|
||||||
android:textSize="@dimen/bigger_text_size"/>
|
android:textSize="@dimen/bigger_text_size"/>
|
||||||
|
|
||||||
@ -145,9 +145,9 @@
|
|||||||
android:layout_toRightOf="@+id/contact_name_image"
|
android:layout_toRightOf="@+id/contact_name_image"
|
||||||
android:lines="1"
|
android:lines="1"
|
||||||
android:maxLines="1"
|
android:maxLines="1"
|
||||||
android:paddingBottom="@dimen/normal_margin"
|
|
||||||
android:paddingLeft="@dimen/small_margin"
|
android:paddingLeft="@dimen/small_margin"
|
||||||
android:paddingTop="@dimen/normal_margin"
|
android:paddingTop="@dimen/normal_margin"
|
||||||
|
android:paddingBottom="@dimen/normal_margin"
|
||||||
android:singleLine="true"
|
android:singleLine="true"
|
||||||
android:textSize="@dimen/bigger_text_size"/>
|
android:textSize="@dimen/bigger_text_size"/>
|
||||||
|
|
||||||
@ -160,9 +160,9 @@
|
|||||||
android:layout_toRightOf="@+id/contact_name_image"
|
android:layout_toRightOf="@+id/contact_name_image"
|
||||||
android:lines="1"
|
android:lines="1"
|
||||||
android:maxLines="1"
|
android:maxLines="1"
|
||||||
android:paddingBottom="@dimen/normal_margin"
|
|
||||||
android:paddingLeft="@dimen/small_margin"
|
android:paddingLeft="@dimen/small_margin"
|
||||||
android:paddingTop="@dimen/normal_margin"
|
android:paddingTop="@dimen/normal_margin"
|
||||||
|
android:paddingBottom="@dimen/normal_margin"
|
||||||
android:singleLine="true"
|
android:singleLine="true"
|
||||||
android:textSize="@dimen/bigger_text_size"/>
|
android:textSize="@dimen/bigger_text_size"/>
|
||||||
|
|
||||||
@ -175,9 +175,9 @@
|
|||||||
android:layout_toRightOf="@+id/contact_name_image"
|
android:layout_toRightOf="@+id/contact_name_image"
|
||||||
android:lines="1"
|
android:lines="1"
|
||||||
android:maxLines="1"
|
android:maxLines="1"
|
||||||
android:paddingBottom="@dimen/normal_margin"
|
|
||||||
android:paddingLeft="@dimen/small_margin"
|
android:paddingLeft="@dimen/small_margin"
|
||||||
android:paddingTop="@dimen/normal_margin"
|
android:paddingTop="@dimen/normal_margin"
|
||||||
|
android:paddingBottom="@dimen/normal_margin"
|
||||||
android:singleLine="true"
|
android:singleLine="true"
|
||||||
android:textSize="@dimen/bigger_text_size"/>
|
android:textSize="@dimen/bigger_text_size"/>
|
||||||
|
|
||||||
@ -186,10 +186,10 @@
|
|||||||
android:layout_width="@dimen/contact_icons_size"
|
android:layout_width="@dimen/contact_icons_size"
|
||||||
android:layout_height="@dimen/contact_icons_size"
|
android:layout_height="@dimen/contact_icons_size"
|
||||||
android:layout_alignTop="@+id/contact_numbers_holder"
|
android:layout_alignTop="@+id/contact_numbers_holder"
|
||||||
android:paddingBottom="@dimen/small_margin"
|
android:paddingTop="@dimen/medium_margin"
|
||||||
android:paddingEnd="@dimen/small_margin"
|
android:paddingEnd="@dimen/small_margin"
|
||||||
android:paddingRight="@dimen/small_margin"
|
android:paddingRight="@dimen/small_margin"
|
||||||
android:paddingTop="@dimen/medium_margin"
|
android:paddingBottom="@dimen/small_margin"
|
||||||
android:src="@drawable/ic_phone"/>
|
android:src="@drawable/ic_phone"/>
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
@ -206,10 +206,10 @@
|
|||||||
android:layout_width="@dimen/contact_icons_size"
|
android:layout_width="@dimen/contact_icons_size"
|
||||||
android:layout_height="@dimen/contact_icons_size"
|
android:layout_height="@dimen/contact_icons_size"
|
||||||
android:layout_alignTop="@+id/contact_emails_holder"
|
android:layout_alignTop="@+id/contact_emails_holder"
|
||||||
android:paddingBottom="@dimen/small_margin"
|
android:paddingTop="@dimen/medium_margin"
|
||||||
android:paddingEnd="@dimen/small_margin"
|
android:paddingEnd="@dimen/small_margin"
|
||||||
android:paddingRight="@dimen/small_margin"
|
android:paddingRight="@dimen/small_margin"
|
||||||
android:paddingTop="@dimen/medium_margin"
|
android:paddingBottom="@dimen/small_margin"
|
||||||
android:src="@drawable/ic_email"/>
|
android:src="@drawable/ic_email"/>
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
@ -226,10 +226,10 @@
|
|||||||
android:layout_width="@dimen/contact_icons_size"
|
android:layout_width="@dimen/contact_icons_size"
|
||||||
android:layout_height="@dimen/contact_icons_size"
|
android:layout_height="@dimen/contact_icons_size"
|
||||||
android:layout_alignTop="@+id/contact_addresses_holder"
|
android:layout_alignTop="@+id/contact_addresses_holder"
|
||||||
android:paddingBottom="@dimen/small_margin"
|
android:paddingTop="@dimen/medium_margin"
|
||||||
android:paddingEnd="@dimen/small_margin"
|
android:paddingEnd="@dimen/small_margin"
|
||||||
android:paddingRight="@dimen/small_margin"
|
android:paddingRight="@dimen/small_margin"
|
||||||
android:paddingTop="@dimen/medium_margin"
|
android:paddingBottom="@dimen/small_margin"
|
||||||
android:src="@drawable/ic_place"/>
|
android:src="@drawable/ic_place"/>
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
@ -246,10 +246,10 @@
|
|||||||
android:layout_width="@dimen/contact_icons_size"
|
android:layout_width="@dimen/contact_icons_size"
|
||||||
android:layout_height="@dimen/contact_icons_size"
|
android:layout_height="@dimen/contact_icons_size"
|
||||||
android:layout_alignTop="@+id/contact_ims_holder"
|
android:layout_alignTop="@+id/contact_ims_holder"
|
||||||
android:paddingBottom="@dimen/small_margin"
|
android:paddingTop="@dimen/medium_margin"
|
||||||
android:paddingEnd="@dimen/small_margin"
|
android:paddingEnd="@dimen/small_margin"
|
||||||
android:paddingRight="@dimen/small_margin"
|
android:paddingRight="@dimen/small_margin"
|
||||||
android:paddingTop="@dimen/medium_margin"
|
android:paddingBottom="@dimen/small_margin"
|
||||||
android:src="@drawable/ic_im"/>
|
android:src="@drawable/ic_im"/>
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
@ -266,10 +266,10 @@
|
|||||||
android:layout_width="@dimen/contact_icons_size"
|
android:layout_width="@dimen/contact_icons_size"
|
||||||
android:layout_height="@dimen/contact_icons_size"
|
android:layout_height="@dimen/contact_icons_size"
|
||||||
android:layout_alignTop="@+id/contact_events_holder"
|
android:layout_alignTop="@+id/contact_events_holder"
|
||||||
android:paddingBottom="@dimen/small_margin"
|
android:paddingTop="@dimen/medium_margin"
|
||||||
android:paddingEnd="@dimen/small_margin"
|
android:paddingEnd="@dimen/small_margin"
|
||||||
android:paddingRight="@dimen/small_margin"
|
android:paddingRight="@dimen/small_margin"
|
||||||
android:paddingTop="@dimen/medium_margin"
|
android:paddingBottom="@dimen/small_margin"
|
||||||
android:src="@drawable/ic_cake"/>
|
android:src="@drawable/ic_cake"/>
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
@ -285,10 +285,10 @@
|
|||||||
android:layout_width="@dimen/contact_icons_size"
|
android:layout_width="@dimen/contact_icons_size"
|
||||||
android:layout_height="@dimen/contact_icons_size"
|
android:layout_height="@dimen/contact_icons_size"
|
||||||
android:layout_alignTop="@+id/contact_notes"
|
android:layout_alignTop="@+id/contact_notes"
|
||||||
android:paddingBottom="@dimen/small_margin"
|
android:paddingTop="@dimen/medium_margin"
|
||||||
android:paddingEnd="@dimen/small_margin"
|
android:paddingEnd="@dimen/small_margin"
|
||||||
android:paddingRight="@dimen/small_margin"
|
android:paddingRight="@dimen/small_margin"
|
||||||
android:paddingTop="@dimen/medium_margin"
|
android:paddingBottom="@dimen/small_margin"
|
||||||
android:src="@drawable/ic_label"/>
|
android:src="@drawable/ic_label"/>
|
||||||
|
|
||||||
<com.simplemobiletools.commons.views.MyTextView
|
<com.simplemobiletools.commons.views.MyTextView
|
||||||
@ -299,9 +299,9 @@
|
|||||||
android:layout_centerVertical="true"
|
android:layout_centerVertical="true"
|
||||||
android:layout_toRightOf="@+id/contact_notes_image"
|
android:layout_toRightOf="@+id/contact_notes_image"
|
||||||
android:lineSpacingExtra="@dimen/medium_margin"
|
android:lineSpacingExtra="@dimen/medium_margin"
|
||||||
android:paddingBottom="@dimen/normal_margin"
|
|
||||||
android:paddingLeft="@dimen/small_margin"
|
android:paddingLeft="@dimen/small_margin"
|
||||||
android:paddingTop="@dimen/normal_margin"
|
android:paddingTop="@dimen/normal_margin"
|
||||||
|
android:paddingBottom="@dimen/normal_margin"
|
||||||
android:textSize="@dimen/bigger_text_size"/>
|
android:textSize="@dimen/bigger_text_size"/>
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
@ -309,10 +309,10 @@
|
|||||||
android:layout_width="@dimen/contact_icons_size"
|
android:layout_width="@dimen/contact_icons_size"
|
||||||
android:layout_height="@dimen/contact_icons_size"
|
android:layout_height="@dimen/contact_icons_size"
|
||||||
android:layout_alignTop="@+id/contact_organization_company"
|
android:layout_alignTop="@+id/contact_organization_company"
|
||||||
android:paddingBottom="@dimen/small_margin"
|
android:paddingTop="@dimen/medium_margin"
|
||||||
android:paddingEnd="@dimen/small_margin"
|
android:paddingEnd="@dimen/small_margin"
|
||||||
android:paddingRight="@dimen/small_margin"
|
android:paddingRight="@dimen/small_margin"
|
||||||
android:paddingTop="@dimen/medium_margin"
|
android:paddingBottom="@dimen/small_margin"
|
||||||
android:src="@drawable/ic_business"/>
|
android:src="@drawable/ic_business"/>
|
||||||
|
|
||||||
<com.simplemobiletools.commons.views.MyTextView
|
<com.simplemobiletools.commons.views.MyTextView
|
||||||
@ -323,9 +323,9 @@
|
|||||||
android:layout_centerVertical="true"
|
android:layout_centerVertical="true"
|
||||||
android:layout_toRightOf="@+id/contact_organization_image"
|
android:layout_toRightOf="@+id/contact_organization_image"
|
||||||
android:lineSpacingExtra="@dimen/medium_margin"
|
android:lineSpacingExtra="@dimen/medium_margin"
|
||||||
android:paddingBottom="@dimen/normal_margin"
|
|
||||||
android:paddingLeft="@dimen/small_margin"
|
android:paddingLeft="@dimen/small_margin"
|
||||||
android:paddingTop="@dimen/normal_margin"
|
android:paddingTop="@dimen/normal_margin"
|
||||||
|
android:paddingBottom="@dimen/normal_margin"
|
||||||
android:textSize="@dimen/bigger_text_size"/>
|
android:textSize="@dimen/bigger_text_size"/>
|
||||||
|
|
||||||
<com.simplemobiletools.commons.views.MyTextView
|
<com.simplemobiletools.commons.views.MyTextView
|
||||||
@ -336,9 +336,9 @@
|
|||||||
android:layout_centerVertical="true"
|
android:layout_centerVertical="true"
|
||||||
android:layout_toRightOf="@+id/contact_organization_image"
|
android:layout_toRightOf="@+id/contact_organization_image"
|
||||||
android:lineSpacingExtra="@dimen/medium_margin"
|
android:lineSpacingExtra="@dimen/medium_margin"
|
||||||
android:paddingBottom="@dimen/normal_margin"
|
|
||||||
android:paddingLeft="@dimen/small_margin"
|
android:paddingLeft="@dimen/small_margin"
|
||||||
android:paddingTop="@dimen/normal_margin"
|
android:paddingTop="@dimen/normal_margin"
|
||||||
|
android:paddingBottom="@dimen/normal_margin"
|
||||||
android:textSize="@dimen/bigger_text_size"/>
|
android:textSize="@dimen/bigger_text_size"/>
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
@ -346,10 +346,10 @@
|
|||||||
android:layout_width="@dimen/contact_icons_size"
|
android:layout_width="@dimen/contact_icons_size"
|
||||||
android:layout_height="@dimen/contact_icons_size"
|
android:layout_height="@dimen/contact_icons_size"
|
||||||
android:layout_alignTop="@+id/contact_websites_holder"
|
android:layout_alignTop="@+id/contact_websites_holder"
|
||||||
android:paddingBottom="@dimen/small_margin"
|
android:paddingTop="@dimen/medium_margin"
|
||||||
android:paddingEnd="@dimen/small_margin"
|
android:paddingEnd="@dimen/small_margin"
|
||||||
android:paddingRight="@dimen/small_margin"
|
android:paddingRight="@dimen/small_margin"
|
||||||
android:paddingTop="@dimen/medium_margin"
|
android:paddingBottom="@dimen/small_margin"
|
||||||
android:src="@drawable/ic_link"/>
|
android:src="@drawable/ic_link"/>
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
@ -365,10 +365,10 @@
|
|||||||
android:layout_width="@dimen/contact_icons_size"
|
android:layout_width="@dimen/contact_icons_size"
|
||||||
android:layout_height="@dimen/contact_icons_size"
|
android:layout_height="@dimen/contact_icons_size"
|
||||||
android:layout_alignTop="@+id/contact_groups_holder"
|
android:layout_alignTop="@+id/contact_groups_holder"
|
||||||
android:paddingBottom="@dimen/small_margin"
|
android:paddingTop="@dimen/medium_margin"
|
||||||
android:paddingEnd="@dimen/small_margin"
|
android:paddingEnd="@dimen/small_margin"
|
||||||
android:paddingRight="@dimen/small_margin"
|
android:paddingRight="@dimen/small_margin"
|
||||||
android:paddingTop="@dimen/medium_margin"
|
android:paddingBottom="@dimen/small_margin"
|
||||||
android:src="@drawable/ic_group"/>
|
android:src="@drawable/ic_group"/>
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
@ -385,10 +385,10 @@
|
|||||||
android:layout_width="@dimen/contact_icons_size"
|
android:layout_width="@dimen/contact_icons_size"
|
||||||
android:layout_height="@dimen/contact_icons_size"
|
android:layout_height="@dimen/contact_icons_size"
|
||||||
android:layout_alignTop="@+id/contact_source"
|
android:layout_alignTop="@+id/contact_source"
|
||||||
android:paddingBottom="@dimen/small_margin"
|
android:paddingTop="@dimen/medium_margin"
|
||||||
android:paddingEnd="@dimen/small_margin"
|
android:paddingEnd="@dimen/small_margin"
|
||||||
android:paddingRight="@dimen/small_margin"
|
android:paddingRight="@dimen/small_margin"
|
||||||
android:paddingTop="@dimen/medium_margin"
|
android:paddingBottom="@dimen/small_margin"
|
||||||
android:src="@drawable/ic_account_box"/>
|
android:src="@drawable/ic_account_box"/>
|
||||||
|
|
||||||
<com.simplemobiletools.commons.views.MyTextView
|
<com.simplemobiletools.commons.views.MyTextView
|
||||||
@ -400,9 +400,9 @@
|
|||||||
android:layout_toRightOf="@+id/contact_name_image"
|
android:layout_toRightOf="@+id/contact_name_image"
|
||||||
android:lines="1"
|
android:lines="1"
|
||||||
android:maxLines="1"
|
android:maxLines="1"
|
||||||
android:paddingBottom="@dimen/normal_margin"
|
|
||||||
android:paddingLeft="@dimen/small_margin"
|
android:paddingLeft="@dimen/small_margin"
|
||||||
android:paddingTop="@dimen/normal_margin"
|
android:paddingTop="@dimen/normal_margin"
|
||||||
|
android:paddingBottom="@dimen/normal_margin"
|
||||||
android:singleLine="true"
|
android:singleLine="true"
|
||||||
android:textSize="@dimen/bigger_text_size"
|
android:textSize="@dimen/bigger_text_size"
|
||||||
tools:text="hello@simplemobiletools.com"/>
|
tools:text="hello@simplemobiletools.com"/>
|
||||||
|
@ -8,10 +8,10 @@
|
|||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
android:id="@+id/call_confirm_phone"
|
android:id="@+id/call_confirm_phone"
|
||||||
style="@style/MyBorderlessBackgroundStyle"
|
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_centerInParent="true"
|
android:layout_centerInParent="true"
|
||||||
|
android:background="?attr/selectableItemBackgroundBorderless"
|
||||||
android:padding="@dimen/activity_margin"
|
android:padding="@dimen/activity_margin"
|
||||||
android:src="@drawable/ic_phone_big"/>
|
android:src="@drawable/ic_phone_big"/>
|
||||||
|
|
||||||
|
@ -12,8 +12,8 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:orientation="vertical"
|
android:orientation="vertical"
|
||||||
android:paddingLeft="@dimen/activity_margin"
|
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
|
<com.simplemobiletools.commons.views.MyTextView
|
||||||
android:id="@+id/export_contacts_folder_label"
|
android:id="@+id/export_contacts_folder_label"
|
||||||
@ -26,11 +26,11 @@
|
|||||||
android:id="@+id/export_contacts_folder"
|
android:id="@+id/export_contacts_folder"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginBottom="@dimen/activity_margin"
|
|
||||||
android:layout_marginLeft="@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:paddingRight="@dimen/small_margin"
|
||||||
android:paddingTop="@dimen/small_margin"/>
|
android:paddingBottom="@dimen/small_margin"/>
|
||||||
|
|
||||||
<com.simplemobiletools.commons.views.MyTextView
|
<com.simplemobiletools.commons.views.MyTextView
|
||||||
android:id="@+id/export_contacts_filename_label"
|
android:id="@+id/export_contacts_filename_label"
|
||||||
@ -43,18 +43,18 @@
|
|||||||
android:id="@+id/export_contacts_filename"
|
android:id="@+id/export_contacts_filename"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginBottom="@dimen/activity_margin"
|
|
||||||
android:layout_marginLeft="@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:paddingTop="@dimen/normal_margin"
|
||||||
|
android:paddingRight="@dimen/small_margin"
|
||||||
android:textSize="@dimen/normal_text_size"/>
|
android:textSize="@dimen/normal_text_size"/>
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
android:id="@+id/export_contacts_divider"
|
android:id="@+id/export_contacts_divider"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="1px"
|
android:layout_height="1px"
|
||||||
android:layout_marginBottom="@dimen/medium_margin"
|
|
||||||
android:layout_marginTop="@dimen/medium_margin"
|
android:layout_marginTop="@dimen/medium_margin"
|
||||||
|
android:layout_marginBottom="@dimen/medium_margin"
|
||||||
android:background="@color/divider_grey"
|
android:background="@color/divider_grey"
|
||||||
android:importantForAccessibility="no"/>
|
android:importantForAccessibility="no"/>
|
||||||
|
|
||||||
@ -65,7 +65,7 @@
|
|||||||
android:text="@string/include_contact_sources"
|
android:text="@string/include_contact_sources"
|
||||||
android:textSize="@dimen/smaller_text_size"/>
|
android:textSize="@dimen/smaller_text_size"/>
|
||||||
|
|
||||||
<android.support.v7.widget.RecyclerView
|
<com.simplemobiletools.commons.views.MyRecyclerView
|
||||||
android:id="@+id/export_contacts_list"
|
android:id="@+id/export_contacts_list"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?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:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
android:id="@+id/filter_contact_sources_list"
|
android:id="@+id/filter_contact_sources_list"
|
||||||
|
@ -17,19 +17,19 @@
|
|||||||
android:gravity="center"
|
android:gravity="center"
|
||||||
android:paddingLeft="@dimen/activity_margin"
|
android:paddingLeft="@dimen/activity_margin"
|
||||||
android:paddingRight="@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:textSize="@dimen/bigger_text_size"
|
||||||
android:visibility="gone"/>
|
android:visibility="gone"/>
|
||||||
|
|
||||||
<com.simplemobiletools.commons.views.MyTextView
|
<com.simplemobiletools.commons.views.MyTextView
|
||||||
android:id="@+id/fragment_placeholder_2"
|
android:id="@+id/fragment_placeholder_2"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_below="@+id/fragment_placeholder"
|
android:layout_below="@+id/fragment_placeholder"
|
||||||
android:layout_centerHorizontal="true"
|
android:layout_centerHorizontal="true"
|
||||||
|
android:background="?attr/selectableItemBackground"
|
||||||
android:gravity="center"
|
android:gravity="center"
|
||||||
android:paddingBottom="@dimen/medium_margin"
|
android:padding="@dimen/activity_margin"
|
||||||
android:paddingTop="@dimen/medium_margin"
|
|
||||||
android:text="@string/change_filter"
|
android:text="@string/change_filter"
|
||||||
android:textSize="@dimen/bigger_text_size"
|
android:textSize="@dimen/bigger_text_size"
|
||||||
android:visibility="gone"/>
|
android:visibility="gone"/>
|
||||||
@ -48,8 +48,8 @@
|
|||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:layout_alignParentEnd="true"
|
android:layout_alignParentEnd="true"
|
||||||
android:layout_alignParentRight="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"/>
|
<include layout="@layout/fastscroller_handle_vertical"/>
|
||||||
|
|
||||||
|
@ -20,6 +20,7 @@
|
|||||||
android:id="@+id/contact_tmb"
|
android:id="@+id/contact_tmb"
|
||||||
android:layout_width="@dimen/normal_icon_size"
|
android:layout_width="@dimen/normal_icon_size"
|
||||||
android:layout_height="@dimen/normal_icon_size"
|
android:layout_height="@dimen/normal_icon_size"
|
||||||
|
android:layout_marginTop="@dimen/tiny_margin"
|
||||||
android:padding="@dimen/medium_margin"
|
android:padding="@dimen/medium_margin"
|
||||||
android:src="@drawable/ic_person"/>
|
android:src="@drawable/ic_person"/>
|
||||||
|
|
||||||
|
@ -11,7 +11,7 @@
|
|||||||
android:focusable="true"
|
android:focusable="true"
|
||||||
android:foreground="@drawable/selector">
|
android:foreground="@drawable/selector">
|
||||||
|
|
||||||
<android.support.constraint.ConstraintLayout
|
<androidx.constraintlayout.widget.ConstraintLayout
|
||||||
android:id="@+id/recent_call_holder"
|
android:id="@+id/recent_call_holder"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="@dimen/contact_item_with_number_height"
|
android:layout_height="@dimen/contact_item_with_number_height"
|
||||||
@ -59,5 +59,5 @@
|
|||||||
tools:layout_editor_absoluteY="0dp"
|
tools:layout_editor_absoluteY="0dp"
|
||||||
tools:text="Yesterday, 17:00"/>
|
tools:text="Yesterday, 17:00"/>
|
||||||
|
|
||||||
</android.support.constraint.ConstraintLayout>
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
</FrameLayout>
|
</FrameLayout>
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
android:id="@+id/search"
|
android:id="@+id/search"
|
||||||
android:icon="@drawable/ic_search"
|
android:icon="@drawable/ic_search"
|
||||||
android:title="@string/search"
|
android:title="@string/search"
|
||||||
app:actionViewClass="android.support.v7.widget.SearchView"
|
app:actionViewClass="androidx.appcompat.widget.SearchView"
|
||||||
app:showAsAction="collapseActionView|ifRoom"/>
|
app:showAsAction="collapseActionView|ifRoom"/>
|
||||||
<item
|
<item
|
||||||
android:id="@+id/sort"
|
android:id="@+id/sort"
|
||||||
|
@ -18,6 +18,11 @@
|
|||||||
<string name="create_new_contact">Create new contact</string>
|
<string name="create_new_contact">Create new contact</string>
|
||||||
<string name="add_to_existing_contact">Add to an existing 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="new_contact">Yeni kontakt</string>
|
||||||
<string name="edit_contact">Redaktə et</string>
|
<string name="edit_contact">Redaktə et</string>
|
||||||
<string name="select_contact">Kontakt seç</string>
|
<string name="select_contact">Kontakt seç</string>
|
||||||
@ -57,6 +62,7 @@
|
|||||||
<string name="favorites">Sevimlilər</string>
|
<string name="favorites">Sevimlilər</string>
|
||||||
<string name="recent_calls">Hazırki zənglə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_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 -->
|
<!-- Emails -->
|
||||||
<string name="email">E-poçt</string>
|
<string name="email">E-poçt</string>
|
||||||
|
@ -9,14 +9,19 @@
|
|||||||
<string name="company">Unternehmen</string>
|
<string name="company">Unternehmen</string>
|
||||||
<string name="job_position">Arbeitsstelle</string>
|
<string name="job_position">Arbeitsstelle</string>
|
||||||
<string name="website">Webseite</string>
|
<string name="website">Webseite</string>
|
||||||
<string name="send_sms_to_contacts">Sende SMS an Kontakte</string>
|
<string name="send_sms_to_contacts">SMS an Kontakte senden</string>
|
||||||
<string name="send_email_to_contacts">Sende E-Mail an Kontakte</string>
|
<string name="send_email_to_contacts">E-Mail an Kontakte senden</string>
|
||||||
<string name="send_sms_to_group">Sende SMS an Gruppe</string>
|
<string name="send_sms_to_group">SMS an Gruppe senden</string>
|
||||||
<string name="send_email_to_group">Sende E-Mail an Gruppe</string>
|
<string name="send_email_to_group">E-Mail an Gruppe senden</string>
|
||||||
<string name="call_person">%s anrufen</string>
|
<string name="call_person">%s anrufen</string>
|
||||||
<string name="request_the_required_permissions">Benötigte Berechtigungen anfordern</string>
|
<string name="request_the_required_permissions">Benötigte Berechtigungen anfordern</string>
|
||||||
<string name="create_new_contact">Create new contact</string>
|
<string name="create_new_contact">Neuen Kontakt erstellen</string>
|
||||||
<string name="add_to_existing_contact">Add to an existing contact</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="new_contact">Neuer Kontakt</string>
|
||||||
<string name="edit_contact">Kontakt bearbeiten</string>
|
<string name="edit_contact">Kontakt bearbeiten</string>
|
||||||
@ -34,7 +39,7 @@
|
|||||||
<string name="no_group_participants">Diese Gruppe ist leer</string>
|
<string name="no_group_participants">Diese Gruppe ist leer</string>
|
||||||
<string name="add_contacts">Kontakte hinzufügen</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="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="add_to_group">Zu Gruppe hinzufügen</string>
|
||||||
<string name="create_group_under_account">Gruppe in diesem Konto erstellen</string>
|
<string name="create_group_under_account">Gruppe in diesem Konto erstellen</string>
|
||||||
|
|
||||||
@ -45,18 +50,19 @@
|
|||||||
|
|
||||||
<!-- Settings -->
|
<!-- Settings -->
|
||||||
<string name="start_name_with_surname">Namen mit Nachnamen beginnen</string>
|
<string name="start_name_with_surname">Namen mit Nachnamen beginnen</string>
|
||||||
<string name="show_phone_numbers">Zeige Telefonnummern im Hauptmenü</string>
|
<string name="show_phone_numbers">Telefonnummern im Hauptmenü zeigen</string>
|
||||||
<string name="show_contact_thumbnails">Zeige Vorschaubilder der Kontakte</string>
|
<string name="show_contact_thumbnails">Vorschaubilder der Kontakte zeigen</string>
|
||||||
<string name="on_contact_click">Beim Klicken auf den Kontakt</string>
|
<string name="on_contact_click">Beim Klicken auf den Kontakt</string>
|
||||||
<string name="call_contact">Kontakt anrufen</string>
|
<string name="call_contact">Kontakt anrufen</string>
|
||||||
<string name="view_contact">Kontaktdetails anzeigen</string>
|
<string name="view_contact">Kontaktdetails anzeigen</string>
|
||||||
<string name="manage_shown_contact_fields">Bearbeite sichtbare Kontaktfelder</string>
|
<string name="manage_shown_contact_fields">Sichtbare Kontaktfelder bearbeiten</string>
|
||||||
<string name="filter_duplicates">Versuche Kontaktduplikate herauszufiltern</string>
|
<string name="filter_duplicates">Versucht Kontaktduplikate herauszufiltern</string>
|
||||||
<string name="manage_shown_tabs">Anzuzeigende Tabs festlegen</string>
|
<string name="manage_shown_tabs">Anzuzeigende Tabs festlegen</string>
|
||||||
<string name="contacts">Kontakte</string>
|
<string name="contacts">Kontakte</string>
|
||||||
<string name="favorites">Favoriten</string>
|
<string name="favorites">Favoriten</string>
|
||||||
<string name="recent_calls">Anrufliste</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_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 -->
|
<!-- Emails -->
|
||||||
<string name="email">E-Mail</string>
|
<string name="email">E-Mail</string>
|
||||||
@ -78,11 +84,11 @@
|
|||||||
<string name="anniversary">Jahrestag</string>
|
<string name="anniversary">Jahrestag</string>
|
||||||
|
|
||||||
<!-- Favorites -->
|
<!-- 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_favorites">Favoriten hinzufügen</string>
|
||||||
<string name="add_to_favorites">Zu 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="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 -->
|
<!-- Search -->
|
||||||
<string name="search_contacts">Kontakte durchsuchen</string>
|
<string name="search_contacts">Kontakte durchsuchen</string>
|
||||||
@ -98,8 +104,8 @@
|
|||||||
<string name="filename_without_vcf">Dateiname (ohne .vcf)</string>
|
<string name="filename_without_vcf">Dateiname (ohne .vcf)</string>
|
||||||
|
|
||||||
<!-- Dialpad -->
|
<!-- Dialpad -->
|
||||||
<string name="dialpad">Dialpad</string>
|
<string name="dialpad">Wählfeld</string>
|
||||||
<string name="add_number_to_contact">Add number to contact</string>
|
<string name="add_number_to_contact">Nummer zu Kontakt hinzufügen</string>
|
||||||
|
|
||||||
<!-- Visible fields -->
|
<!-- Visible fields -->
|
||||||
<string name="select_fields_to_show">Sichtbare Felder auswählen</string>
|
<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="send_email_to_group">Αποστολή email σε ομάδες</string>
|
||||||
<string name="call_person">Κλήση %s</string>
|
<string name="call_person">Κλήση %s</string>
|
||||||
<string name="request_the_required_permissions">Ζητούνται τα απαιτούμενα δικαιώματα</string>
|
<string name="request_the_required_permissions">Ζητούνται τα απαιτούμενα δικαιώματα</string>
|
||||||
<string name="create_new_contact">Create new contact</string>
|
<string name="create_new_contact">Δημιουργία νέας Επαφής</string>
|
||||||
<string name="add_to_existing_contact">Add to an existing 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="new_contact">Νέα επαφή</string>
|
||||||
<string name="edit_contact">Επεξεργασία επαφής</string>
|
<string name="edit_contact">Επεξεργασία επαφής</string>
|
||||||
@ -57,6 +62,7 @@
|
|||||||
<string name="favorites">Αγαπημένες</string>
|
<string name="favorites">Αγαπημένες</string>
|
||||||
<string name="recent_calls">Πρόσφατες Κλήσεις</string>
|
<string name="recent_calls">Πρόσφατες Κλήσεις</string>
|
||||||
<string name="show_call_confirmation_dialog">Εμφάνιση διαλόγου επιβεβαίωσης πριν από την έναρξη μιας κλήσης</string>
|
<string name="show_call_confirmation_dialog">Εμφάνιση διαλόγου επιβεβαίωσης πριν από την έναρξη μιας κλήσης</string>
|
||||||
|
<string name="show_only_contacts_with_numbers">Show only contacts with phone numbers</string>
|
||||||
|
|
||||||
<!-- Emails -->
|
<!-- Emails -->
|
||||||
<string name="email">Email</string>
|
<string name="email">Email</string>
|
||||||
@ -98,8 +104,8 @@
|
|||||||
<string name="filename_without_vcf">Όνομα αρχείου (χωρίς .vcf)</string>
|
<string name="filename_without_vcf">Όνομα αρχείου (χωρίς .vcf)</string>
|
||||||
|
|
||||||
<!-- Dialpad -->
|
<!-- Dialpad -->
|
||||||
<string name="dialpad">Dialpad</string>
|
<string name="dialpad">Πληκτρολόγιο</string>
|
||||||
<string name="add_number_to_contact">Add number to contact</string>
|
<string name="add_number_to_contact">Προσθήκη αριθμού σε επαφή</string>
|
||||||
|
|
||||||
<!-- Visible fields -->
|
<!-- Visible fields -->
|
||||||
<string name="select_fields_to_show">Επιλογή εμφάνισης πεδίων</string>
|
<string name="select_fields_to_show">Επιλογή εμφάνισης πεδίων</string>
|
||||||
@ -114,7 +120,7 @@
|
|||||||
<string name="websites">Ιστοσελίδα</string>
|
<string name="websites">Ιστοσελίδα</string>
|
||||||
<string name="groups">Ομάδες</string>
|
<string name="groups">Ομάδες</string>
|
||||||
<string name="contact_source">Προέλευση επαφής</string>
|
<string name="contact_source">Προέλευση επαφής</string>
|
||||||
<string name="instant_messaging">Instant messaging (IM)</string>
|
<string name="instant_messaging">Αμεσο μήνυμα (IM)</string>
|
||||||
|
|
||||||
<!-- FAQ -->
|
<!-- FAQ -->
|
||||||
<string name="faq_1_title">Θέλω να αλλάξω τα πεδία που θα είναι ορατά στις επαφές. Μπορώ να το κάνω?</string>
|
<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="send_email_to_group">Envoyer un e-mail au groupe</string>
|
||||||
<string name="call_person">Call %s</string>
|
<string name="call_person">Call %s</string>
|
||||||
<string name="request_the_required_permissions">Demander les autorisations requises</string>
|
<string name="request_the_required_permissions">Demander les autorisations requises</string>
|
||||||
<string name="create_new_contact">Create new contact</string>
|
<string name="create_new_contact">Créer un nouveau contact</string>
|
||||||
<string name="add_to_existing_contact">Add to an existing 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="new_contact">Nouveau contact</string>
|
||||||
<string name="edit_contact">Modifier contact</string>
|
<string name="edit_contact">Modifier contact</string>
|
||||||
@ -57,6 +62,7 @@
|
|||||||
<string name="favorites">Favorites</string>
|
<string name="favorites">Favorites</string>
|
||||||
<string name="recent_calls">Appels récents</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_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 -->
|
<!-- Emails -->
|
||||||
<string name="email">E-mail</string>
|
<string name="email">E-mail</string>
|
||||||
@ -99,7 +105,7 @@
|
|||||||
|
|
||||||
<!-- Dialpad -->
|
<!-- Dialpad -->
|
||||||
<string name="dialpad">Dialpad</string>
|
<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 -->
|
<!-- Visible fields -->
|
||||||
<string name="select_fields_to_show">Sélectionner les champs à afficher</string>
|
<string name="select_fields_to_show">Sélectionner les champs à afficher</string>
|
||||||
@ -124,12 +130,12 @@
|
|||||||
<!-- Short description has to have less than 80 chars -->
|
<!-- Short description has to have less than 80 chars -->
|
||||||
<string name="app_short_description">Une appli de contacts pour gérer vos contacts sans pubs.</string>
|
<string name="app_short_description">Une appli de contacts pour gérer vos contacts sans pubs.</string>
|
||||||
<string name="app_long_description">
|
<string name="app_long_description">
|
||||||
Une appli simple pour créer et gérer vos contacts depuis n\'importe quelle source. Les contacts peuvent être stockés sur votre appareil mais aussi synchronisés via Google ou d\'autres comptes. Vous pouvez afficher vos contacts favoris dans une liste séparée.
|
Une appli simple pour créer et gérer vos contacts depuis n\'importe quelle source. Les contacts peuvent être stockés sur votre appareil mais aussi synchronisés via Google ou d\'autres comptes. Vous pouvez afficher vos contacts favoris dans une liste séparée.
|
||||||
|
|
||||||
Vous pouvez l\'utiliser pour gérer les e-mail et événements de vos contacts. Elle permet de trier/filter via de multiples paramètres, et même afficher le surnom en premier.
|
Vous pouvez l\'utiliser pour gérer les e-mail et événements de vos contacts. Elle permet de trier/filter via de multiples paramètres, et même afficher le surnom en premier.
|
||||||
|
|
||||||
Aucune publicité ni de permission inutile. Elle est entièrement open source et vous permet de personnaliser les couleurs.
|
Aucune publicité ni de permission inutile. Elle est entièrement open source et vous permet de personnaliser les couleurs.
|
||||||
|
|
||||||
Cette application fait parti d\'un groupe d\'applications. Vous pouvez trouver le reste des applis sur https://www.simplemobiletools.com
|
Cette application fait parti d\'un groupe d\'applications. Vous pouvez trouver le reste des applis sur https://www.simplemobiletools.com
|
||||||
</string>
|
</string>
|
||||||
|
|
||||||
|
@ -18,6 +18,11 @@
|
|||||||
<string name="create_new_contact">Create new contact</string>
|
<string name="create_new_contact">Create new contact</string>
|
||||||
<string name="add_to_existing_contact">Add to an existing 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="new_contact">Novi kontakt</string>
|
||||||
<string name="edit_contact">Uredi kontakt</string>
|
<string name="edit_contact">Uredi kontakt</string>
|
||||||
<string name="select_contact">Odaberi kontakt</string>
|
<string name="select_contact">Odaberi kontakt</string>
|
||||||
@ -57,6 +62,7 @@
|
|||||||
<string name="favorites">Favoriti</string>
|
<string name="favorites">Favoriti</string>
|
||||||
<string name="recent_calls">Nedavni pozivi</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_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 -->
|
<!-- Emails -->
|
||||||
<string name="email">E-pošta</string>
|
<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="send_email_to_group">グループにメールを送信</string>
|
||||||
<string name="call_person">Call %s</string>
|
<string name="call_person">Call %s</string>
|
||||||
<string name="request_the_required_permissions">Request the required permissions</string>
|
<string name="request_the_required_permissions">Request the required permissions</string>
|
||||||
<string name="create_new_contact">Create new contact</string>
|
<string name="create_new_contact">新しい連絡先を作成</string>
|
||||||
<string name="add_to_existing_contact">Add to an existing 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="new_contact">新しい連絡先</string>
|
||||||
<string name="edit_contact">連絡先を編集</string>
|
<string name="edit_contact">連絡先を編集</string>
|
||||||
@ -57,6 +62,7 @@
|
|||||||
<string name="favorites">お気に入り</string>
|
<string name="favorites">お気に入り</string>
|
||||||
<string name="recent_calls">Recent calls</string>
|
<string name="recent_calls">Recent calls</string>
|
||||||
<string name="show_call_confirmation_dialog">発信する前に確認ダイアログを表示する</string>
|
<string name="show_call_confirmation_dialog">発信する前に確認ダイアログを表示する</string>
|
||||||
|
<string name="show_only_contacts_with_numbers">Show only contacts with phone numbers</string>
|
||||||
|
|
||||||
<!-- Emails -->
|
<!-- Emails -->
|
||||||
<string name="email">メール</string>
|
<string name="email">メール</string>
|
||||||
@ -99,7 +105,7 @@
|
|||||||
|
|
||||||
<!-- Dialpad -->
|
<!-- Dialpad -->
|
||||||
<string name="dialpad">ダイヤルパッド</string>
|
<string name="dialpad">ダイヤルパッド</string>
|
||||||
<string name="add_number_to_contact">Add number to contact</string>
|
<string name="add_number_to_contact">連絡先に番号を追加</string>
|
||||||
|
|
||||||
<!-- Visible fields -->
|
<!-- Visible fields -->
|
||||||
<string name="select_fields_to_show">表示する項目を選択</string>
|
<string name="select_fields_to_show">表示する項目を選択</string>
|
||||||
|
@ -18,6 +18,11 @@
|
|||||||
<string name="create_new_contact">Create new contact</string>
|
<string name="create_new_contact">Create new contact</string>
|
||||||
<string name="add_to_existing_contact">Add to an existing 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="new_contact">새로운 연락처</string>
|
||||||
<string name="edit_contact">연락처 수정</string>
|
<string name="edit_contact">연락처 수정</string>
|
||||||
<string name="select_contact">단건 연락처 선택</string>
|
<string name="select_contact">단건 연락처 선택</string>
|
||||||
@ -57,6 +62,7 @@
|
|||||||
<string name="favorites">Favorites</string>
|
<string name="favorites">Favorites</string>
|
||||||
<string name="recent_calls">Recent calls</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_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 -->
|
<!-- Emails -->
|
||||||
<string name="email">이메일</string>
|
<string name="email">이메일</string>
|
||||||
|
@ -18,6 +18,11 @@
|
|||||||
<string name="create_new_contact">Create new contact</string>
|
<string name="create_new_contact">Create new contact</string>
|
||||||
<string name="add_to_existing_contact">Add to an existing 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="new_contact">Naujas kontaktas</string>
|
||||||
<string name="edit_contact">Redaguoti kontaktą</string>
|
<string name="edit_contact">Redaguoti kontaktą</string>
|
||||||
<string name="select_contact">Pasirinkti kontaktą</string>
|
<string name="select_contact">Pasirinkti kontaktą</string>
|
||||||
@ -57,6 +62,7 @@
|
|||||||
<string name="favorites">Favorites</string>
|
<string name="favorites">Favorites</string>
|
||||||
<string name="recent_calls">Recent calls</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_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 -->
|
<!-- Emails -->
|
||||||
<string name="email">Elektroninis paštas</string>
|
<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="send_email_to_group">Enviar e-mail para o grupo</string>
|
||||||
<string name="call_person">Ligar a %s</string>
|
<string name="call_person">Ligar a %s</string>
|
||||||
<string name="request_the_required_permissions">Pedir a permissão necessária</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="create_new_contact">Criar novo contacto</string>
|
||||||
<string name="add_to_existing_contact">Add to an existing contact</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="new_contact">Novo contacto</string>
|
||||||
<string name="edit_contact">Editar contacto</string>
|
<string name="edit_contact">Editar contacto</string>
|
||||||
@ -57,6 +62,7 @@
|
|||||||
<string name="favorites">Favoritos</string>
|
<string name="favorites">Favoritos</string>
|
||||||
<string name="recent_calls">Chamadas recentes</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_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 -->
|
<!-- Emails -->
|
||||||
<string name="email">E-mail</string>
|
<string name="email">E-mail</string>
|
||||||
@ -98,8 +104,8 @@
|
|||||||
<string name="filename_without_vcf">Nome do ficheiro (sem .vcf)</string>
|
<string name="filename_without_vcf">Nome do ficheiro (sem .vcf)</string>
|
||||||
|
|
||||||
<!-- Dialpad -->
|
<!-- Dialpad -->
|
||||||
<string name="dialpad">Dialpad</string>
|
<string name="dialpad">Teclado</string>
|
||||||
<string name="add_number_to_contact">Add number to contact</string>
|
<string name="add_number_to_contact">Adicionar número a um contacto</string>
|
||||||
|
|
||||||
<!-- Visible fields -->
|
<!-- Visible fields -->
|
||||||
<string name="select_fields_to_show">Selecione os campos a mostrar</string>
|
<string name="select_fields_to_show">Selecione os campos a mostrar</string>
|
||||||
|
@ -18,6 +18,11 @@
|
|||||||
<string name="create_new_contact">Создать новый контакт</string>
|
<string name="create_new_contact">Создать новый контакт</string>
|
||||||
<string name="add_to_existing_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="new_contact">Новый контакт</string>
|
||||||
<string name="edit_contact">Редактировать контакт</string>
|
<string name="edit_contact">Редактировать контакт</string>
|
||||||
<string name="select_contact">Выбрать контакт</string>
|
<string name="select_contact">Выбрать контакт</string>
|
||||||
@ -57,6 +62,7 @@
|
|||||||
<string name="favorites">Избранное</string>
|
<string name="favorites">Избранное</string>
|
||||||
<string name="recent_calls">Недавние вызовы</string>
|
<string name="recent_calls">Недавние вызовы</string>
|
||||||
<string name="show_call_confirmation_dialog">Показывать диалог подтверждения вызова</string>
|
<string name="show_call_confirmation_dialog">Показывать диалог подтверждения вызова</string>
|
||||||
|
<string name="show_only_contacts_with_numbers">Show only contacts with phone numbers</string>
|
||||||
|
|
||||||
<!-- Emails -->
|
<!-- Emails -->
|
||||||
<string name="email">Эл. почта</string>
|
<string name="email">Эл. почта</string>
|
||||||
|
@ -18,6 +18,11 @@
|
|||||||
<string name="create_new_contact">Vytvoriť nový kontakt</string>
|
<string name="create_new_contact">Vytvoriť nový kontakt</string>
|
||||||
<string name="add_to_existing_contact">Pridať k existujúcemu kontaktu</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="new_contact">Nový kontakt</string>
|
||||||
<string name="edit_contact">Upraviť kontakt</string>
|
<string name="edit_contact">Upraviť kontakt</string>
|
||||||
<string name="select_contact">Zvoľte kontakt</string>
|
<string name="select_contact">Zvoľte kontakt</string>
|
||||||
@ -57,6 +62,7 @@
|
|||||||
<string name="favorites">Obľúbené</string>
|
<string name="favorites">Obľúbené</string>
|
||||||
<string name="recent_calls">Predošlé hovory</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_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 -->
|
<!-- Emails -->
|
||||||
<string name="email">Email</string>
|
<string name="email">Email</string>
|
||||||
|
@ -15,8 +15,13 @@
|
|||||||
<string name="send_email_to_group">Skicka e-post till grupp</string>
|
<string name="send_email_to_group">Skicka e-post till grupp</string>
|
||||||
<string name="call_person">Ring %s</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="request_the_required_permissions">Begär de behörigheter som krävs</string>
|
||||||
<string name="create_new_contact">Create new contact</string>
|
<string name="create_new_contact">Skapa ny kontakt</string>
|
||||||
<string name="add_to_existing_contact">Add to an existing contact</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="new_contact">Ny kontakt</string>
|
||||||
<string name="edit_contact">Redigera kontakt</string>
|
<string name="edit_contact">Redigera kontakt</string>
|
||||||
@ -57,6 +62,7 @@
|
|||||||
<string name="favorites">Favoriter</string>
|
<string name="favorites">Favoriter</string>
|
||||||
<string name="recent_calls">Senaste samtal</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_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 -->
|
<!-- Emails -->
|
||||||
<string name="email">E-post</string>
|
<string name="email">E-post</string>
|
||||||
@ -98,8 +104,8 @@
|
|||||||
<string name="filename_without_vcf">Filnamn (utan .vcf)</string>
|
<string name="filename_without_vcf">Filnamn (utan .vcf)</string>
|
||||||
|
|
||||||
<!-- Dialpad -->
|
<!-- Dialpad -->
|
||||||
<string name="dialpad">Dialpad</string>
|
<string name="dialpad">Knappsats</string>
|
||||||
<string name="add_number_to_contact">Add number to contact</string>
|
<string name="add_number_to_contact">Lägg till nummer i kontakt</string>
|
||||||
|
|
||||||
<!-- Visible fields -->
|
<!-- Visible fields -->
|
||||||
<string name="select_fields_to_show">Välj vilka fält som ska visas</string>
|
<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="websites">Webbplatser</string>
|
||||||
<string name="groups">Grupper</string>
|
<string name="groups">Grupper</string>
|
||||||
<string name="contact_source">Kontaktkälla</string>
|
<string name="contact_source">Kontaktkälla</string>
|
||||||
<string name="instant_messaging">Instant messaging (IM)</string>
|
<string name="instant_messaging">Snabbmeddelanden (IM)</string>
|
||||||
|
|
||||||
<!-- FAQ -->
|
<!-- FAQ -->
|
||||||
<string name="faq_1_title">I want to change what fields are visible at contacts. Can I do it?</string>
|
<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="create_new_contact">Create new contact</string>
|
||||||
<string name="add_to_existing_contact">Add to an existing 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="new_contact">Yeni kişi</string>
|
||||||
<string name="edit_contact">Kişiyi düzenle</string>
|
<string name="edit_contact">Kişiyi düzenle</string>
|
||||||
<string name="select_contact">Kişi seç</string>
|
<string name="select_contact">Kişi seç</string>
|
||||||
@ -57,6 +62,7 @@
|
|||||||
<string name="favorites">Favorites</string>
|
<string name="favorites">Favorites</string>
|
||||||
<string name="recent_calls">Recent calls</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_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 -->
|
<!-- Emails -->
|
||||||
<string name="email">E-posta</string>
|
<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="send_email_to_group">發送電子郵件給群組</string>
|
||||||
<string name="call_person">打電話給 %s</string>
|
<string name="call_person">打電話給 %s</string>
|
||||||
<string name="request_the_required_permissions">請求必要的權限</string>
|
<string name="request_the_required_permissions">請求必要的權限</string>
|
||||||
<string name="create_new_contact">Create new contact</string>
|
<string name="create_new_contact">建立新聯絡人</string>
|
||||||
<string name="add_to_existing_contact">Add to an existing 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="new_contact">新聯絡人</string>
|
||||||
<string name="edit_contact">編輯聯絡人</string>
|
<string name="edit_contact">編輯聯絡人</string>
|
||||||
@ -25,7 +30,7 @@
|
|||||||
<string name="first_name">名字</string>
|
<string name="first_name">名字</string>
|
||||||
<string name="middle_name">中間名</string>
|
<string name="middle_name">中間名</string>
|
||||||
<string name="surname">姓氏</string>
|
<string name="surname">姓氏</string>
|
||||||
<string name="nickname">Nickname</string>
|
<string name="nickname">暱稱</string>
|
||||||
|
|
||||||
<!-- Groups -->
|
<!-- Groups -->
|
||||||
<string name="no_groups">沒有群組</string>
|
<string name="no_groups">沒有群組</string>
|
||||||
@ -57,6 +62,7 @@
|
|||||||
<string name="favorites">我的最愛</string>
|
<string name="favorites">我的最愛</string>
|
||||||
<string name="recent_calls">通話紀錄</string>
|
<string name="recent_calls">通話紀錄</string>
|
||||||
<string name="show_call_confirmation_dialog">開始通話前顯示通話確認框</string>
|
<string name="show_call_confirmation_dialog">開始通話前顯示通話確認框</string>
|
||||||
|
<string name="show_only_contacts_with_numbers">Show only contacts with phone numbers</string>
|
||||||
|
|
||||||
<!-- Emails -->
|
<!-- Emails -->
|
||||||
<string name="email">電子信箱</string>
|
<string name="email">電子信箱</string>
|
||||||
@ -98,8 +104,8 @@
|
|||||||
<string name="filename_without_vcf">檔案名稱 (不含.vcf)</string>
|
<string name="filename_without_vcf">檔案名稱 (不含.vcf)</string>
|
||||||
|
|
||||||
<!-- Dialpad -->
|
<!-- Dialpad -->
|
||||||
<string name="dialpad">Dialpad</string>
|
<string name="dialpad">撥號畫面</string>
|
||||||
<string name="add_number_to_contact">Add number to contact</string>
|
<string name="add_number_to_contact">添加號碼至通訊錄</string>
|
||||||
|
|
||||||
<!-- Visible fields -->
|
<!-- Visible fields -->
|
||||||
<string name="select_fields_to_show">選擇要顯示的欄位</string>
|
<string name="select_fields_to_show">選擇要顯示的欄位</string>
|
||||||
@ -114,7 +120,7 @@
|
|||||||
<string name="websites">網站</string>
|
<string name="websites">網站</string>
|
||||||
<string name="groups">群組</string>
|
<string name="groups">群組</string>
|
||||||
<string name="contact_source">聯絡人來源</string>
|
<string name="contact_source">聯絡人來源</string>
|
||||||
<string name="instant_messaging">Instant messaging (IM)</string>
|
<string name="instant_messaging">即時通訊 (IM)</string>
|
||||||
|
|
||||||
<!-- FAQ -->
|
<!-- FAQ -->
|
||||||
<string name="faq_1_title">我想要更改在通訊錄會看到哪些欄位。我能這麼做嗎?</string>
|
<string name="faq_1_title">我想要更改在通訊錄會看到哪些欄位。我能這麼做嗎?</string>
|
||||||
|
@ -10,8 +10,10 @@
|
|||||||
<string name="hangouts">Hangouts</string>
|
<string name="hangouts">Hangouts</string>
|
||||||
<string name="icq">ICQ</string>
|
<string name="icq">ICQ</string>
|
||||||
<string name="jabber">Jabber</string>
|
<string name="jabber">Jabber</string>
|
||||||
|
<string name="telegram">Telegram</string>
|
||||||
|
|
||||||
<!-- Release notes -->
|
<!-- 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_32">Added a simple dialpad, dialer will come soon</string>
|
||||||
<string name="release_31">
|
<string name="release_31">
|
||||||
Added an optional IM field\n
|
Added an optional IM field\n
|
||||||
|
@ -18,6 +18,11 @@
|
|||||||
<string name="create_new_contact">Create new contact</string>
|
<string name="create_new_contact">Create new contact</string>
|
||||||
<string name="add_to_existing_contact">Add to an existing 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="new_contact">New contact</string>
|
||||||
<string name="edit_contact">Edit contact</string>
|
<string name="edit_contact">Edit contact</string>
|
||||||
<string name="select_contact">Select contact</string>
|
<string name="select_contact">Select contact</string>
|
||||||
@ -57,6 +62,7 @@
|
|||||||
<string name="favorites">Favorites</string>
|
<string name="favorites">Favorites</string>
|
||||||
<string name="recent_calls">Recent calls</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_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 -->
|
<!-- Emails -->
|
||||||
<string name="email">Email</string>
|
<string name="email">Email</string>
|
||||||
|
@ -2,15 +2,12 @@
|
|||||||
|
|
||||||
<style name="AppTheme" parent="AppTheme.Base"/>
|
<style name="AppTheme" parent="AppTheme.Base"/>
|
||||||
|
|
||||||
<style name="DialpadNumberStyle.Base">
|
<style name="DialpadNumberStyle">
|
||||||
<item name="android:gravity">center</item>
|
<item name="android:gravity">center</item>
|
||||||
<item name="android:paddingBottom">@dimen/medium_margin</item>
|
<item name="android:paddingBottom">@dimen/medium_margin</item>
|
||||||
<item name="android:paddingTop">@dimen/normal_margin</item>
|
<item name="android:paddingTop">@dimen/normal_margin</item>
|
||||||
<item name="android:textSize">@dimen/dialpad_text_size</item>
|
<item name="android:textSize">@dimen/dialpad_text_size</item>
|
||||||
</style>
|
<item name="android:background">?attr/selectableItemBackgroundBorderless</item>
|
||||||
|
|
||||||
<style name="DialpadNumberStyle" parent="DialpadNumberStyle.Base">
|
|
||||||
<item name="android:background">?attr/selectableItemBackground</item>
|
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
</resources>
|
</resources>
|
||||||
|
@ -9,7 +9,7 @@ buildscript {
|
|||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
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"
|
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
|
||||||
|
|
||||||
// NOTE: Do not place your application dependencies here; they belong
|
// 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
|