mirror of
https://github.com/SimpleMobileTools/Simple-Contacts.git
synced 2025-06-05 21:59:27 +02:00
Merge branch 'master' into prevent-adding-empty-contact
This commit is contained in:
@ -9,8 +9,8 @@ Contains no ads or unnecessary permissions. It is fully opensource, provides cus
|
||||
|
||||
This app is just one piece of a bigger series of apps. You can find the rest of them at https://www.simplemobiletools.com
|
||||
|
||||
<a href='https://play.google.com/store/apps/details?id=com.simplemobiletools.contacts.pro'><img src='https://simplemobiletools.com/assets/images/google-play.png' alt='Get it on Google Play' height='45' /></a>
|
||||
<a href='https://f-droid.org/packages/com.simplemobiletools.contacts.pro'><img src='https://simplemobiletools.com/assets/images/f-droid.png' alt='Get it on F-Droid' height='45' /></a>
|
||||
<a href='https://play.google.com/store/apps/details?id=com.simplemobiletools.contacts.pro'><img src='https://simplemobiletools.com/images/button-google-play.svg' alt='Get it on Google Play' height='45' /></a>
|
||||
<a href='https://f-droid.org/packages/com.simplemobiletools.contacts.pro'><img src='https://simplemobiletools.com/images/button-f-droid.png' alt='Get it on F-Droid' height='45' /></a>
|
||||
|
||||
<div style="display:flex;">
|
||||
<img alt="App image" src="fastlane/metadata/android/en-US/images/phoneScreenshots/english/1.jpg" width="30%">
|
||||
|
@ -56,7 +56,7 @@ android {
|
||||
}
|
||||
|
||||
dependencies {
|
||||
implementation 'com.github.SimpleMobileTools:Simple-Commons:c1388a0721'
|
||||
implementation 'com.github.SimpleMobileTools:Simple-Commons:f86699e092'
|
||||
implementation 'joda-time:joda-time:2.10.3'
|
||||
implementation 'com.googlecode.ez-vcard:ez-vcard:0.10.5'
|
||||
implementation 'com.github.tibbi:IndicatorFastScroll:c3de1d040a'
|
||||
|
@ -199,21 +199,11 @@
|
||||
android:label="@string/about"
|
||||
android:parentActivityName=".activities.MainActivity"/>
|
||||
|
||||
<activity
|
||||
android:name="com.simplemobiletools.commons.activities.LicenseActivity"
|
||||
android:label="@string/third_party_licences"
|
||||
android:parentActivityName="com.simplemobiletools.commons.activities.AboutActivity"/>
|
||||
|
||||
<activity
|
||||
android:name="com.simplemobiletools.commons.activities.CustomizationActivity"
|
||||
android:label="@string/customize_colors"
|
||||
android:parentActivityName=".activities.SettingsActivity"/>
|
||||
|
||||
<activity
|
||||
android:name="com.simplemobiletools.commons.activities.FAQActivity"
|
||||
android:label="@string/frequently_asked_questions"
|
||||
android:parentActivityName="com.simplemobiletools.commons.activities.AboutActivity"/>
|
||||
|
||||
<provider
|
||||
android:name="androidx.core.content.FileProvider"
|
||||
android:authorities="${applicationId}.provider"
|
||||
|
@ -65,8 +65,10 @@ class GroupContactsActivity : SimpleActivity(), RemoveFromGroupListener, Refresh
|
||||
fabClicked()
|
||||
}
|
||||
|
||||
val adjustedPrimaryColor = getAdjustedPrimaryColor()
|
||||
group_contacts_fastscroller?.updateColors(adjustedPrimaryColor, adjustedPrimaryColor.getContrastColor())
|
||||
group_contacts_placeholder_2.underlineText()
|
||||
group_contacts_placeholder_2.setTextColor(getAdjustedPrimaryColor())
|
||||
group_contacts_placeholder_2.setTextColor(adjustedPrimaryColor)
|
||||
}
|
||||
|
||||
override fun onResume() {
|
||||
@ -108,7 +110,7 @@ class GroupContactsActivity : SimpleActivity(), RemoveFromGroupListener, Refresh
|
||||
groupContacts = it.filter { it.groups.map { it.id }.contains(group.id) } as ArrayList<Contact>
|
||||
group_contacts_placeholder_2.beVisibleIf(groupContacts.isEmpty())
|
||||
group_contacts_placeholder.beVisibleIf(groupContacts.isEmpty())
|
||||
group_contacts_list.beVisibleIf(groupContacts.isNotEmpty())
|
||||
group_contacts_fastscroller.beVisibleIf(groupContacts.isNotEmpty())
|
||||
updateContacts(groupContacts)
|
||||
}
|
||||
}
|
||||
@ -133,17 +135,14 @@ class GroupContactsActivity : SimpleActivity(), RemoveFromGroupListener, Refresh
|
||||
private fun updateContacts(contacts: ArrayList<Contact>) {
|
||||
val currAdapter = group_contacts_list.adapter
|
||||
if (currAdapter == null) {
|
||||
ContactsAdapter(this, contacts, this, LOCATION_GROUP_CONTACTS, this, group_contacts_list, group_contacts_fastscroller) {
|
||||
ContactsAdapter(this, contacts, this, LOCATION_GROUP_CONTACTS, this, group_contacts_list) {
|
||||
contactClicked(it as Contact)
|
||||
}.apply {
|
||||
group_contacts_list.adapter = this
|
||||
}
|
||||
|
||||
group_contacts_list.scheduleLayoutAnimation()
|
||||
group_contacts_fastscroller.setScrollToY(0)
|
||||
group_contacts_fastscroller.setViews(group_contacts_list) {
|
||||
val item = (group_contacts_list.adapter as ContactsAdapter).contactItems.getOrNull(it)
|
||||
group_contacts_fastscroller.updateBubbleText(item?.getBubbleText() ?: "")
|
||||
if (areSystemAnimationsEnabled) {
|
||||
group_contacts_list.scheduleLayoutAnimation()
|
||||
}
|
||||
} else {
|
||||
(currAdapter as ContactsAdapter).updateItems(contacts)
|
||||
@ -180,9 +179,9 @@ class GroupContactsActivity : SimpleActivity(), RemoveFromGroupListener, Refresh
|
||||
putExtra(RingtoneManager.EXTRA_RINGTONE_EXISTING_URI, defaultRingtoneUri)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private fun setRingtoneOnSelected(uri: Uri) {
|
||||
groupContacts.forEach{
|
||||
groupContacts.forEach {
|
||||
ContactsHelper(this).updateRingtone(it.contactId.toString(), uri.toString())
|
||||
}
|
||||
}
|
||||
|
@ -386,6 +386,7 @@ class MainActivity : SimpleActivity(), RefreshContactsListener {
|
||||
skippedTabs++
|
||||
} else {
|
||||
val tab = main_tabs_holder.newTab().setIcon(getTabIcon(index))
|
||||
tab.contentDescription = getTabContentDescription(index)
|
||||
main_tabs_holder.addTab(tab, index - skippedTabs, getDefaultTab() == index - skippedTabs)
|
||||
}
|
||||
}
|
||||
|
@ -12,9 +12,9 @@ import android.view.Menu
|
||||
import android.view.MenuItem
|
||||
import androidx.appcompat.widget.SearchView
|
||||
import androidx.core.view.MenuItemCompat
|
||||
import com.reddit.indicatorfastscroll.FastScrollItemIndicator
|
||||
import com.simplemobiletools.commons.extensions.*
|
||||
import com.simplemobiletools.commons.helpers.PERMISSION_READ_CONTACTS
|
||||
import com.simplemobiletools.commons.helpers.PERMISSION_WRITE_CONTACTS
|
||||
import com.simplemobiletools.commons.helpers.*
|
||||
import com.simplemobiletools.contacts.pro.R
|
||||
import com.simplemobiletools.contacts.pro.adapters.SelectContactsAdapter
|
||||
import com.simplemobiletools.contacts.pro.dialogs.ChangeSortingDialog
|
||||
@ -26,6 +26,8 @@ import com.simplemobiletools.contacts.pro.helpers.ContactsHelper
|
||||
import com.simplemobiletools.contacts.pro.helpers.getProperText
|
||||
import com.simplemobiletools.contacts.pro.models.Contact
|
||||
import kotlinx.android.synthetic.main.activity_select_contact.*
|
||||
import java.util.*
|
||||
import kotlin.collections.ArrayList
|
||||
|
||||
class SelectContactActivity : SimpleActivity() {
|
||||
private var specialMimeType: String? = null
|
||||
@ -41,7 +43,7 @@ class SelectContactActivity : SimpleActivity() {
|
||||
return
|
||||
}
|
||||
|
||||
setupPlaceholders()
|
||||
setupViews()
|
||||
|
||||
handlePermission(PERMISSION_READ_CONTACTS) {
|
||||
if (it) {
|
||||
@ -195,16 +197,25 @@ class SelectContactActivity : SimpleActivity() {
|
||||
|
||||
runOnUiThread {
|
||||
updatePlaceholderVisibility(contacts)
|
||||
SelectContactsAdapter(this, contacts, ArrayList(), false, select_contact_list, select_contact_fastscroller) {
|
||||
SelectContactsAdapter(this, contacts, ArrayList(), false, select_contact_list) {
|
||||
confirmSelection(it)
|
||||
}.apply {
|
||||
select_contact_list.adapter = this
|
||||
}
|
||||
|
||||
select_contact_list.scheduleLayoutAnimation()
|
||||
select_contact_fastscroller.setViews(select_contact_list) {
|
||||
select_contact_fastscroller.updateBubbleText(contacts[it].getBubbleText())
|
||||
if (areSystemAnimationsEnabled) {
|
||||
select_contact_list.scheduleLayoutAnimation()
|
||||
}
|
||||
|
||||
letter_fastscroller.setupWithRecyclerView(select_contact_list, { position ->
|
||||
try {
|
||||
val name = contacts[position].getNameToDisplay()
|
||||
val character = if (name.isNotEmpty()) name.substring(0, 1) else ""
|
||||
FastScrollItemIndicator.Text(character.normalizeString().toUpperCase(Locale.getDefault()))
|
||||
} catch (e: Exception) {
|
||||
FastScrollItemIndicator.Text("")
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -228,25 +239,35 @@ class SelectContactActivity : SimpleActivity() {
|
||||
}
|
||||
}
|
||||
|
||||
private fun setupPlaceholders() {
|
||||
private fun setupViews() {
|
||||
val adjustedPrimaryColor = getAdjustedPrimaryColor()
|
||||
select_contact_placeholder.setTextColor(config.textColor)
|
||||
select_contact_placeholder_2.setTextColor(getAdjustedPrimaryColor())
|
||||
select_contact_placeholder_2.setTextColor(adjustedPrimaryColor)
|
||||
select_contact_placeholder_2.underlineText()
|
||||
select_contact_placeholder_2.setOnClickListener {
|
||||
FilterContactSourcesDialog(this) {
|
||||
initContacts()
|
||||
}
|
||||
}
|
||||
|
||||
letter_fastscroller?.textColor = config.textColor.getColorStateList()
|
||||
letter_fastscroller?.pressedTextColor = adjustedPrimaryColor
|
||||
letter_fastscroller_thumb?.fontSize = getTextSize()
|
||||
letter_fastscroller_thumb?.textColor = adjustedPrimaryColor.getContrastColor()
|
||||
letter_fastscroller_thumb?.thumbColor = adjustedPrimaryColor.getColorStateList()
|
||||
letter_fastscroller_thumb.setupWithFastScroller(letter_fastscroller)
|
||||
}
|
||||
|
||||
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) {
|
||||
Email.CONTENT_ITEM_TYPE -> R.string.no_contacts_with_emails
|
||||
Phone.CONTENT_ITEM_TYPE -> R.string.no_contacts_with_phone_numbers
|
||||
else -> R.string.no_contacts_found
|
||||
})
|
||||
select_contact_placeholder.setText(
|
||||
when (specialMimeType) {
|
||||
Email.CONTENT_ITEM_TYPE -> R.string.no_contacts_with_emails
|
||||
Phone.CONTENT_ITEM_TYPE -> R.string.no_contacts_with_phone_numbers
|
||||
else -> R.string.no_contacts_found
|
||||
}
|
||||
)
|
||||
}
|
||||
}
|
||||
|
@ -3,10 +3,7 @@ package com.simplemobiletools.contacts.pro.activities
|
||||
import android.os.Bundle
|
||||
import android.view.Menu
|
||||
import com.simplemobiletools.commons.dialogs.RadioGroupDialog
|
||||
import com.simplemobiletools.commons.extensions.baseConfig
|
||||
import com.simplemobiletools.commons.extensions.beVisibleIf
|
||||
import com.simplemobiletools.commons.extensions.getFontSizeText
|
||||
import com.simplemobiletools.commons.extensions.updateTextColors
|
||||
import com.simplemobiletools.commons.extensions.*
|
||||
import com.simplemobiletools.commons.helpers.*
|
||||
import com.simplemobiletools.commons.models.RadioItem
|
||||
import com.simplemobiletools.contacts.pro.R
|
||||
@ -44,6 +41,19 @@ class SettingsActivity : SimpleActivity() {
|
||||
setupDefaultTab()
|
||||
updateTextColors(settings_holder)
|
||||
invalidateOptionsMenu()
|
||||
|
||||
arrayOf(settings_color_customization_label, settings_general_settings_label, settings_main_screen_label, settings_list_view_label).forEach {
|
||||
it.setTextColor(getAdjustedPrimaryColor())
|
||||
}
|
||||
|
||||
arrayOf(
|
||||
settings_color_customization_holder,
|
||||
settings_general_settings_holder,
|
||||
settings_main_screen_holder,
|
||||
settings_list_view_holder
|
||||
).forEach {
|
||||
it.background.applyColorFilter(baseConfig.backgroundColor.getContrastColor())
|
||||
}
|
||||
}
|
||||
|
||||
override fun onCreateOptionsMenu(menu: Menu): Boolean {
|
||||
@ -64,7 +74,7 @@ class SettingsActivity : SimpleActivity() {
|
||||
}
|
||||
|
||||
private fun setupManageShownTabs() {
|
||||
settings_manage_tabs_holder.setOnClickListener {
|
||||
settings_manage_shown_tabs_holder.setOnClickListener {
|
||||
ManageVisibleTabsDialog(this)
|
||||
}
|
||||
}
|
||||
@ -76,7 +86,8 @@ class SettingsActivity : SimpleActivity() {
|
||||
RadioItem(TAB_CONTACTS, getString(R.string.contacts_tab)),
|
||||
RadioItem(TAB_FAVORITES, getString(R.string.favorites_tab)),
|
||||
RadioItem(TAB_GROUPS, getString(R.string.groups_tab)),
|
||||
RadioItem(TAB_LAST_USED, getString(R.string.last_used_tab)))
|
||||
RadioItem(TAB_LAST_USED, getString(R.string.last_used_tab))
|
||||
)
|
||||
|
||||
RadioGroupDialog(this@SettingsActivity, items, config.defaultTab) {
|
||||
config.defaultTab = it as Int
|
||||
@ -85,12 +96,14 @@ class SettingsActivity : SimpleActivity() {
|
||||
}
|
||||
}
|
||||
|
||||
private fun getDefaultTabText() = getString(when (baseConfig.defaultTab) {
|
||||
TAB_CONTACTS -> R.string.contacts_tab
|
||||
TAB_FAVORITES -> R.string.favorites_tab
|
||||
TAB_GROUPS -> R.string.groups_tab
|
||||
else -> R.string.last_used_tab
|
||||
})
|
||||
private fun getDefaultTabText() = getString(
|
||||
when (baseConfig.defaultTab) {
|
||||
TAB_CONTACTS -> R.string.contacts_tab
|
||||
TAB_FAVORITES -> R.string.favorites_tab
|
||||
TAB_GROUPS -> R.string.groups_tab
|
||||
else -> R.string.last_used_tab
|
||||
}
|
||||
)
|
||||
|
||||
private fun setupFontSize() {
|
||||
settings_font_size.text = getFontSizeText()
|
||||
@ -99,7 +112,8 @@ class SettingsActivity : SimpleActivity() {
|
||||
RadioItem(FONT_SIZE_SMALL, getString(R.string.small)),
|
||||
RadioItem(FONT_SIZE_MEDIUM, getString(R.string.medium)),
|
||||
RadioItem(FONT_SIZE_LARGE, getString(R.string.large)),
|
||||
RadioItem(FONT_SIZE_EXTRA_LARGE, getString(R.string.extra_large)))
|
||||
RadioItem(FONT_SIZE_EXTRA_LARGE, getString(R.string.extra_large))
|
||||
)
|
||||
|
||||
RadioGroupDialog(this@SettingsActivity, items, config.fontSize) {
|
||||
config.fontSize = it as Int
|
||||
@ -111,6 +125,11 @@ class SettingsActivity : SimpleActivity() {
|
||||
private fun setupUseEnglish() {
|
||||
settings_use_english_holder.beVisibleIf(config.wasUseEnglishToggled || Locale.getDefault().language != "en")
|
||||
settings_use_english.isChecked = config.useEnglish
|
||||
|
||||
if (settings_use_english_holder.isGone()) {
|
||||
settings_font_size_holder.background = resources.getDrawable(R.drawable.ripple_top_corners, theme)
|
||||
}
|
||||
|
||||
settings_use_english_holder.setOnClickListener {
|
||||
settings_use_english.toggle()
|
||||
config.useEnglish = settings_use_english.isChecked
|
||||
@ -143,10 +162,10 @@ class SettingsActivity : SimpleActivity() {
|
||||
}
|
||||
|
||||
private fun setupStartNameWithSurname() {
|
||||
settings_start_with_surname.isChecked = config.startNameWithSurname
|
||||
settings_start_with_surname_holder.setOnClickListener {
|
||||
settings_start_with_surname.toggle()
|
||||
config.startNameWithSurname = settings_start_with_surname.isChecked
|
||||
settings_start_name_with_surname.isChecked = config.startNameWithSurname
|
||||
settings_start_name_with_surname_holder.setOnClickListener {
|
||||
settings_start_name_with_surname.toggle()
|
||||
config.startNameWithSurname = settings_start_name_with_surname.isChecked
|
||||
}
|
||||
}
|
||||
|
||||
@ -172,7 +191,8 @@ class SettingsActivity : SimpleActivity() {
|
||||
val items = arrayListOf(
|
||||
RadioItem(ON_CLICK_CALL_CONTACT, getString(R.string.call_contact)),
|
||||
RadioItem(ON_CLICK_VIEW_CONTACT, getString(R.string.view_contact)),
|
||||
RadioItem(ON_CLICK_EDIT_CONTACT, getString(R.string.edit_contact)))
|
||||
RadioItem(ON_CLICK_EDIT_CONTACT, getString(R.string.edit_contact))
|
||||
)
|
||||
|
||||
RadioGroupDialog(this@SettingsActivity, items, config.onContactClick) {
|
||||
config.onContactClick = it as Int
|
||||
@ -181,11 +201,13 @@ class SettingsActivity : SimpleActivity() {
|
||||
}
|
||||
}
|
||||
|
||||
private fun getOnContactClickText() = getString(when (config.onContactClick) {
|
||||
ON_CLICK_CALL_CONTACT -> R.string.call_contact
|
||||
ON_CLICK_VIEW_CONTACT -> R.string.view_contact
|
||||
else -> R.string.edit_contact
|
||||
})
|
||||
private fun getOnContactClickText() = getString(
|
||||
when (config.onContactClick) {
|
||||
ON_CLICK_CALL_CONTACT -> R.string.call_contact
|
||||
ON_CLICK_VIEW_CONTACT -> R.string.view_contact
|
||||
else -> R.string.edit_contact
|
||||
}
|
||||
)
|
||||
|
||||
private fun setupShowCallConfirmation() {
|
||||
settings_show_call_confirmation.isChecked = config.showCallConfirmation
|
||||
|
@ -66,10 +66,20 @@ open class SimpleActivity : BaseSimpleActivity() {
|
||||
protected fun getTabIcon(position: Int): Drawable {
|
||||
val drawableId = when (position) {
|
||||
LOCATION_CONTACTS_TAB -> R.drawable.ic_person_vector
|
||||
LOCATION_FAVORITES_TAB -> R.drawable.ic_star_on_vector
|
||||
LOCATION_FAVORITES_TAB -> R.drawable.ic_star_vector
|
||||
else -> R.drawable.ic_people_vector
|
||||
}
|
||||
|
||||
return resources.getColoredDrawableWithColor(drawableId, config.textColor)
|
||||
}
|
||||
|
||||
protected fun getTabContentDescription(position: Int): String {
|
||||
val stringId = when (position) {
|
||||
LOCATION_CONTACTS_TAB -> R.string.contacts_tab
|
||||
LOCATION_FAVORITES_TAB -> R.string.favorites_tab
|
||||
else -> R.string.groups_tab
|
||||
}
|
||||
|
||||
return resources.getString(stringId)
|
||||
}
|
||||
}
|
||||
|
@ -757,7 +757,7 @@ class ViewContactActivity : ContactActivity() {
|
||||
}
|
||||
}
|
||||
|
||||
private fun getStarDrawable(on: Boolean) = resources.getDrawable(if (on) R.drawable.ic_star_on_vector else R.drawable.ic_star_off_vector)
|
||||
private fun getStarDrawable(on: Boolean) = resources.getDrawable(if (on) R.drawable.ic_star_vector else R.drawable.ic_star_outline_vector)
|
||||
|
||||
private fun hideBigContactPhoto() {
|
||||
contact_photo_big.animate().alpha(0f).withEndAction { contact_photo_big.beGone() }.start()
|
||||
|
@ -19,13 +19,13 @@ import com.bumptech.glide.Glide
|
||||
import com.bumptech.glide.load.engine.DiskCacheStrategy
|
||||
import com.bumptech.glide.request.RequestOptions
|
||||
import com.bumptech.glide.signature.ObjectKey
|
||||
import com.qtalk.recyclerviewfastscroller.RecyclerViewFastScroller
|
||||
import com.simplemobiletools.commons.adapters.MyRecyclerViewAdapter
|
||||
import com.simplemobiletools.commons.dialogs.ConfirmationDialog
|
||||
import com.simplemobiletools.commons.dialogs.RadioGroupDialog
|
||||
import com.simplemobiletools.commons.extensions.*
|
||||
import com.simplemobiletools.commons.helpers.*
|
||||
import com.simplemobiletools.commons.models.RadioItem
|
||||
import com.simplemobiletools.commons.views.FastScroller
|
||||
import com.simplemobiletools.commons.views.MyRecyclerView
|
||||
import com.simplemobiletools.contacts.pro.R
|
||||
import com.simplemobiletools.contacts.pro.activities.SimpleActivity
|
||||
@ -38,10 +38,11 @@ import com.simplemobiletools.contacts.pro.interfaces.RemoveFromGroupListener
|
||||
import com.simplemobiletools.contacts.pro.models.Contact
|
||||
import java.util.*
|
||||
|
||||
class ContactsAdapter(activity: SimpleActivity, var contactItems: ArrayList<Contact>, private val refreshListener: RefreshContactsListener?,
|
||||
private val location: Int, private val removeListener: RemoveFromGroupListener?, recyclerView: MyRecyclerView,
|
||||
fastScroller: FastScroller?, highlightText: String = "", itemClick: (Any) -> Unit) :
|
||||
MyRecyclerViewAdapter(activity, recyclerView, fastScroller, itemClick) {
|
||||
class ContactsAdapter(
|
||||
activity: SimpleActivity, var contactItems: ArrayList<Contact>, private val refreshListener: RefreshContactsListener?,
|
||||
private val location: Int, private val removeListener: RemoveFromGroupListener?, recyclerView: MyRecyclerView,
|
||||
highlightText: String = "", itemClick: (Any) -> Unit
|
||||
) : MyRecyclerViewAdapter(activity, recyclerView, null, itemClick), RecyclerViewFastScroller.OnPopupTextUpdate {
|
||||
private val NEW_GROUP_ID = -1
|
||||
|
||||
private var config = activity.config
|
||||
@ -66,10 +67,13 @@ class ContactsAdapter(activity: SimpleActivity, var contactItems: ArrayList<Cont
|
||||
findItem(R.id.cab_remove).isVisible = location == LOCATION_FAVORITES_TAB || location == LOCATION_GROUP_CONTACTS
|
||||
findItem(R.id.cab_add_to_favorites).isVisible = location == LOCATION_CONTACTS_TAB
|
||||
findItem(R.id.cab_add_to_group).isVisible = location == LOCATION_CONTACTS_TAB || location == LOCATION_FAVORITES_TAB
|
||||
findItem(R.id.cab_send_sms_to_contacts).isVisible = location == LOCATION_CONTACTS_TAB || location == LOCATION_FAVORITES_TAB || location == LOCATION_GROUP_CONTACTS
|
||||
findItem(R.id.cab_send_email_to_contacts).isVisible = location == LOCATION_CONTACTS_TAB || location == LOCATION_FAVORITES_TAB || location == LOCATION_GROUP_CONTACTS
|
||||
findItem(R.id.cab_send_sms_to_contacts).isVisible =
|
||||
location == LOCATION_CONTACTS_TAB || location == LOCATION_FAVORITES_TAB || location == LOCATION_GROUP_CONTACTS
|
||||
findItem(R.id.cab_send_email_to_contacts).isVisible =
|
||||
location == LOCATION_CONTACTS_TAB || location == LOCATION_FAVORITES_TAB || location == LOCATION_GROUP_CONTACTS
|
||||
findItem(R.id.cab_delete).isVisible = location == LOCATION_CONTACTS_TAB || location == LOCATION_GROUP_CONTACTS
|
||||
findItem(R.id.cab_create_shortcut).isVisible = isOreoPlus() && isOneItemSelected() && (location == LOCATION_FAVORITES_TAB || location == LOCATION_CONTACTS_TAB)
|
||||
findItem(R.id.cab_create_shortcut).isVisible =
|
||||
isOreoPlus() && isOneItemSelected() && (location == LOCATION_FAVORITES_TAB || location == LOCATION_CONTACTS_TAB)
|
||||
|
||||
if (location == LOCATION_GROUP_CONTACTS) {
|
||||
findItem(R.id.cab_remove).title = activity.getString(R.string.remove_from_group)
|
||||
@ -133,7 +137,6 @@ class ContactsAdapter(activity: SimpleActivity, var contactItems: ArrayList<Cont
|
||||
textToHighlight = highlightText
|
||||
notifyDataSetChanged()
|
||||
}
|
||||
fastScroller?.measureRecyclerView()
|
||||
}
|
||||
|
||||
private fun editContact() {
|
||||
@ -170,7 +173,8 @@ class ContactsAdapter(activity: SimpleActivity, var contactItems: ArrayList<Cont
|
||||
ensureBackgroundThread {
|
||||
contactsToRemove.forEach {
|
||||
val contactToRemove = it
|
||||
val duplicates = allContacts.filter { it.id != contactToRemove.id && it.getHashToCompare() == contactToRemove.getHashToCompare() }.toMutableList() as ArrayList<Contact>
|
||||
val duplicates = allContacts.filter { it.id != contactToRemove.id && it.getHashToCompare() == contactToRemove.getHashToCompare() }
|
||||
.toMutableList() as ArrayList<Contact>
|
||||
duplicates.add(contactToRemove)
|
||||
ContactsHelper(activity).deleteContacts(duplicates)
|
||||
}
|
||||
@ -392,4 +396,6 @@ class ContactsAdapter(activity: SimpleActivity, var contactItems: ArrayList<Cont
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun onChange(position: Int) = contactItems.getOrNull(position)?.getBubbleText() ?: ""
|
||||
}
|
||||
|
@ -4,6 +4,7 @@ import android.util.TypedValue
|
||||
import android.view.Menu
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import com.qtalk.recyclerviewfastscroller.RecyclerViewFastScroller
|
||||
import com.simplemobiletools.commons.adapters.MyRecyclerViewAdapter
|
||||
import com.simplemobiletools.commons.dialogs.ConfirmationDialog
|
||||
import com.simplemobiletools.commons.extensions.beVisibleIf
|
||||
@ -12,7 +13,6 @@ import com.simplemobiletools.commons.extensions.highlightTextPart
|
||||
import com.simplemobiletools.commons.helpers.SimpleContactsHelper
|
||||
import com.simplemobiletools.commons.helpers.TAB_GROUPS
|
||||
import com.simplemobiletools.commons.helpers.ensureBackgroundThread
|
||||
import com.simplemobiletools.commons.views.FastScroller
|
||||
import com.simplemobiletools.commons.views.MyRecyclerView
|
||||
import com.simplemobiletools.contacts.pro.R
|
||||
import com.simplemobiletools.contacts.pro.activities.SimpleActivity
|
||||
@ -25,8 +25,10 @@ import com.simplemobiletools.contacts.pro.models.Group
|
||||
import kotlinx.android.synthetic.main.item_group.view.*
|
||||
import java.util.*
|
||||
|
||||
class GroupsAdapter(activity: SimpleActivity, var groups: ArrayList<Group>, val refreshListener: RefreshContactsListener?, recyclerView: MyRecyclerView,
|
||||
fastScroller: FastScroller, itemClick: (Any) -> Unit) : MyRecyclerViewAdapter(activity, recyclerView, fastScroller, itemClick) {
|
||||
class GroupsAdapter(
|
||||
activity: SimpleActivity, var groups: ArrayList<Group>, val refreshListener: RefreshContactsListener?, recyclerView: MyRecyclerView,
|
||||
itemClick: (Any) -> Unit
|
||||
) : MyRecyclerViewAdapter(activity, recyclerView, null, itemClick), RecyclerViewFastScroller.OnPopupTextUpdate {
|
||||
|
||||
private var textToHighlight = ""
|
||||
var showContactThumbnails = activity.config.showContactThumbnails
|
||||
@ -172,4 +174,6 @@ class GroupsAdapter(activity: SimpleActivity, var groups: ArrayList<Group>, val
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun onChange(position: Int) = groups.getOrNull(position)?.getBubbleText() ?: ""
|
||||
}
|
||||
|
@ -12,7 +12,6 @@ import com.bumptech.glide.request.RequestOptions
|
||||
import com.bumptech.glide.signature.ObjectKey
|
||||
import com.simplemobiletools.commons.extensions.*
|
||||
import com.simplemobiletools.commons.helpers.SimpleContactsHelper
|
||||
import com.simplemobiletools.commons.views.FastScroller
|
||||
import com.simplemobiletools.commons.views.MyRecyclerView
|
||||
import com.simplemobiletools.contacts.pro.R
|
||||
import com.simplemobiletools.contacts.pro.activities.SimpleActivity
|
||||
@ -21,9 +20,11 @@ import com.simplemobiletools.contacts.pro.models.Contact
|
||||
import kotlinx.android.synthetic.main.item_add_favorite_with_number.view.*
|
||||
import java.util.*
|
||||
|
||||
class SelectContactsAdapter(val activity: SimpleActivity, var contacts: ArrayList<Contact>, private val selectedContacts: ArrayList<Contact>, private val allowPickMultiple: Boolean,
|
||||
recyclerView: MyRecyclerView, val fastScroller: FastScroller, private val itemClick: ((Contact) -> Unit)? = null) :
|
||||
RecyclerView.Adapter<SelectContactsAdapter.ViewHolder>() {
|
||||
class SelectContactsAdapter(
|
||||
val activity: SimpleActivity, var contacts: ArrayList<Contact>, private val selectedContacts: ArrayList<Contact>, private val allowPickMultiple: Boolean,
|
||||
recyclerView: MyRecyclerView, private val itemClick: ((Contact) -> Unit)? = null
|
||||
) :
|
||||
RecyclerView.Adapter<SelectContactsAdapter.ViewHolder>() {
|
||||
private val itemViews = SparseArray<View>()
|
||||
private val selectedPositions = HashSet<Int>()
|
||||
private val config = activity.config
|
||||
@ -87,7 +88,6 @@ class SelectContactsAdapter(val activity: SimpleActivity, var contacts: ArrayLis
|
||||
textToHighlight = highlightText
|
||||
notifyDataSetChanged()
|
||||
}
|
||||
fastScroller.measureRecyclerView()
|
||||
}
|
||||
|
||||
override fun onViewRecycled(holder: ViewHolder) {
|
||||
@ -124,7 +124,8 @@ class SelectContactsAdapter(val activity: SimpleActivity, var contacts: ArrayLis
|
||||
}
|
||||
|
||||
val numberText = phoneNumberToUse?.value ?: ""
|
||||
contact_number.text = if (textToHighlight.isEmpty()) numberText else numberText.highlightTextPart(textToHighlight, adjustedPrimaryColor, false, true)
|
||||
contact_number.text =
|
||||
if (textToHighlight.isEmpty()) numberText else numberText.highlightTextPart(textToHighlight, adjustedPrimaryColor, false, true)
|
||||
contact_number.setTextColor(textColor)
|
||||
contact_number.setTextSize(TypedValue.COMPLEX_UNIT_PX, fontSize)
|
||||
}
|
||||
|
@ -36,6 +36,7 @@ class RenameGroupDialog(val activity: BaseSimpleActivity, val group: Group, val
|
||||
}
|
||||
|
||||
group.title = newTitle
|
||||
group.contactsCount = 0
|
||||
ensureBackgroundThread {
|
||||
if (group.isPrivateSecretGroup()) {
|
||||
activity.groupsDB.insertOrUpdate(group)
|
||||
|
@ -1,17 +1,23 @@
|
||||
package com.simplemobiletools.contacts.pro.dialogs
|
||||
|
||||
import androidx.appcompat.app.AlertDialog
|
||||
import com.simplemobiletools.commons.extensions.setupDialogStuff
|
||||
import com.reddit.indicatorfastscroll.FastScrollItemIndicator
|
||||
import com.simplemobiletools.commons.extensions.*
|
||||
import com.simplemobiletools.commons.helpers.ensureBackgroundThread
|
||||
import com.simplemobiletools.contacts.pro.R
|
||||
import com.simplemobiletools.contacts.pro.activities.SimpleActivity
|
||||
import com.simplemobiletools.contacts.pro.adapters.SelectContactsAdapter
|
||||
import com.simplemobiletools.contacts.pro.extensions.config
|
||||
import com.simplemobiletools.contacts.pro.extensions.getVisibleContactSources
|
||||
import com.simplemobiletools.contacts.pro.models.Contact
|
||||
import kotlinx.android.synthetic.main.layout_select_contact.view.*
|
||||
import java.util.*
|
||||
import kotlin.collections.ArrayList
|
||||
|
||||
class SelectContactsDialog(val activity: SimpleActivity, initialContacts: ArrayList<Contact>, val allowSelectMultiple: Boolean, val showOnlyContactsWithNumber: Boolean,
|
||||
selectContacts: ArrayList<Contact>? = null, val callback: (addedContacts: ArrayList<Contact>, removedContacts: ArrayList<Contact>) -> Unit) {
|
||||
class SelectContactsDialog(
|
||||
val activity: SimpleActivity, initialContacts: ArrayList<Contact>, val allowSelectMultiple: Boolean, val showOnlyContactsWithNumber: Boolean,
|
||||
selectContacts: ArrayList<Contact>? = null, val callback: (addedContacts: ArrayList<Contact>, removedContacts: ArrayList<Contact>) -> Unit
|
||||
) {
|
||||
private var dialog: AlertDialog? = null
|
||||
private var view = activity.layoutInflater.inflate(R.layout.layout_select_contact, null)
|
||||
private var initiallySelectedContacts = ArrayList<Contact>()
|
||||
@ -31,32 +37,33 @@ class SelectContactsDialog(val activity: SimpleActivity, initialContacts: ArrayL
|
||||
initiallySelectedContacts = selectContacts
|
||||
}
|
||||
|
||||
activity.runOnUiThread {
|
||||
// if selecting multiple contacts is disabled, react on first contact click and dismiss the dialog
|
||||
val contactClickCallback: ((Contact) -> Unit)? = if (allowSelectMultiple) null else { contact ->
|
||||
callback(arrayListOf(contact), arrayListOf())
|
||||
dialog!!.dismiss()
|
||||
}
|
||||
// if selecting multiple contacts is disabled, react on first contact click and dismiss the dialog
|
||||
val contactClickCallback: ((Contact) -> Unit)? = if (allowSelectMultiple) null else { contact ->
|
||||
callback(arrayListOf(contact), arrayListOf())
|
||||
dialog!!.dismiss()
|
||||
}
|
||||
|
||||
view.apply {
|
||||
select_contact_list.adapter = SelectContactsAdapter(activity, allContacts, initiallySelectedContacts, allowSelectMultiple,
|
||||
select_contact_list, select_contact_fastscroller, contactClickCallback)
|
||||
view.apply {
|
||||
select_contact_list.adapter = SelectContactsAdapter(
|
||||
activity, allContacts, initiallySelectedContacts, allowSelectMultiple,
|
||||
select_contact_list, contactClickCallback
|
||||
)
|
||||
|
||||
if (context.areSystemAnimationsEnabled) {
|
||||
select_contact_list.scheduleLayoutAnimation()
|
||||
select_contact_fastscroller.setViews(select_contact_list) {
|
||||
select_contact_fastscroller.updateBubbleText(allContacts[it].getBubbleText())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
val builder = AlertDialog.Builder(activity)
|
||||
if (allowSelectMultiple) {
|
||||
builder.setPositiveButton(R.string.ok) { dialog, which -> dialogConfirmed() }
|
||||
}
|
||||
builder.setNegativeButton(R.string.cancel, null)
|
||||
setupFastscroller(allContacts)
|
||||
|
||||
dialog = builder.create().apply {
|
||||
activity.setupDialogStuff(view, this)
|
||||
}
|
||||
val builder = AlertDialog.Builder(activity)
|
||||
if (allowSelectMultiple) {
|
||||
builder.setPositiveButton(R.string.ok) { dialog, which -> dialogConfirmed() }
|
||||
}
|
||||
builder.setNegativeButton(R.string.cancel, null)
|
||||
|
||||
dialog = builder.create().apply {
|
||||
activity.setupDialogStuff(view, this)
|
||||
}
|
||||
}
|
||||
|
||||
@ -70,4 +77,26 @@ class SelectContactsDialog(val activity: SimpleActivity, initialContacts: ArrayL
|
||||
callback(newlySelectedContacts, unselectedContacts)
|
||||
}
|
||||
}
|
||||
|
||||
private fun setupFastscroller(allContacts: ArrayList<Contact>) {
|
||||
val adjustedPrimaryColor = activity.getAdjustedPrimaryColor()
|
||||
view.apply {
|
||||
letter_fastscroller?.textColor = context.config.textColor.getColorStateList()
|
||||
letter_fastscroller?.pressedTextColor = adjustedPrimaryColor
|
||||
letter_fastscroller_thumb?.fontSize = context.getTextSize()
|
||||
letter_fastscroller_thumb?.textColor = adjustedPrimaryColor.getContrastColor()
|
||||
letter_fastscroller_thumb?.thumbColor = adjustedPrimaryColor.getColorStateList()
|
||||
letter_fastscroller_thumb.setupWithFastScroller(letter_fastscroller)
|
||||
}
|
||||
|
||||
view.letter_fastscroller.setupWithRecyclerView(view.select_contact_list, { position ->
|
||||
try {
|
||||
val name = allContacts[position].getNameToDisplay()
|
||||
val character = if (name.isNotEmpty()) name.substring(0, 1) else ""
|
||||
FastScrollItemIndicator.Text(character.normalizeString().toUpperCase(Locale.getDefault()))
|
||||
} catch (e: Exception) {
|
||||
FastScrollItemIndicator.Text("")
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
@ -1,9 +1,10 @@
|
||||
package com.simplemobiletools.contacts.pro.extensions
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.content.pm.LauncherApps
|
||||
import android.database.Cursor
|
||||
import android.graphics.*
|
||||
import android.graphics.drawable.Drawable
|
||||
import android.net.Uri
|
||||
import android.os.Handler
|
||||
@ -26,6 +27,7 @@ import com.simplemobiletools.contacts.pro.models.Organization
|
||||
import com.simplemobiletools.contacts.pro.models.SocialAction
|
||||
import java.io.File
|
||||
|
||||
|
||||
val Context.config: Config get() = Config.newInstance(applicationContext)
|
||||
|
||||
val Context.contactsDB: ContactsDao get() = ContactsDatabase.getInstance(applicationContext).ContactsDao()
|
||||
@ -35,8 +37,10 @@ val Context.groupsDB: GroupsDao get() = ContactsDatabase.getInstance(application
|
||||
fun Context.getEmptyContact(): Contact {
|
||||
val originalContactSource = if (hasContactPermissions()) config.lastUsedContactSource else SMT_PRIVATE
|
||||
val organization = Organization("", "")
|
||||
return Contact(0, "", "", "", "", "", "", "", ArrayList(), ArrayList(), ArrayList(), ArrayList(), originalContactSource, 0, 0, "",
|
||||
null, "", ArrayList(), organization, ArrayList(), ArrayList(), DEFAULT_MIMETYPE, null)
|
||||
return Contact(
|
||||
0, "", "", "", "", "", "", "", ArrayList(), ArrayList(), ArrayList(), ArrayList(), originalContactSource, 0, 0, "",
|
||||
null, "", ArrayList(), organization, ArrayList(), ArrayList(), DEFAULT_MIMETYPE, null
|
||||
)
|
||||
}
|
||||
|
||||
fun Context.viewContact(contact: Contact) {
|
||||
@ -355,22 +359,15 @@ fun Context.getSocialActions(id: Int): ArrayList<SocialAction> {
|
||||
return socialActions
|
||||
}
|
||||
|
||||
fun Context.getPackageDrawable(packageName: String): Drawable? {
|
||||
var drawable: Drawable? = null
|
||||
try {
|
||||
// try getting the properly colored launcher icons
|
||||
val launcher = getSystemService(Context.LAUNCHER_APPS_SERVICE) as LauncherApps
|
||||
val activityList = launcher.getActivityList(packageName, android.os.Process.myUserHandle())[0]
|
||||
drawable = activityList.getBadgedIcon(0)
|
||||
} catch (ignored: Exception) {
|
||||
}
|
||||
|
||||
if (drawable == null) {
|
||||
try {
|
||||
drawable = packageManager.getApplicationIcon(packageName)
|
||||
} catch (ignored: Exception) {
|
||||
}
|
||||
}
|
||||
|
||||
return drawable
|
||||
@SuppressLint("UseCompatLoadingForDrawables")
|
||||
fun Context.getPackageDrawable(packageName: String): Drawable {
|
||||
return resources.getDrawable(
|
||||
when (packageName) {
|
||||
TELEGRAM_PACKAGE -> R.drawable.ic_telegram_vector
|
||||
SIGNAL_PACKAGE -> R.drawable.ic_signal_vector
|
||||
WHATSAPP_PACKAGE -> R.drawable.ic_whatsapp_vector
|
||||
VIBER_PACKAGE -> R.drawable.ic_viber_vector
|
||||
else -> R.drawable.ic_threema_vector
|
||||
}, theme
|
||||
)
|
||||
}
|
||||
|
@ -84,8 +84,7 @@ abstract class MyViewPagerFragment(context: Context, attributeSet: AttributeSet)
|
||||
}
|
||||
|
||||
context.updateTextColors(fragment_wrapper.parent as ViewGroup)
|
||||
fragment_fastscroller?.updatePrimaryColor()
|
||||
fragment_fastscroller?.updateBubblePrimaryColor()
|
||||
fragment_fastscroller?.updateColors(adjustedPrimaryColor, adjustedPrimaryColor.getContrastColor())
|
||||
fragment_placeholder_2?.setTextColor(adjustedPrimaryColor)
|
||||
|
||||
letter_fastscroller?.textColor = textColor.getColorStateList()
|
||||
@ -165,11 +164,11 @@ abstract class MyViewPagerFragment(context: Context, attributeSet: AttributeSet)
|
||||
|
||||
fragment_placeholder_2.beVisibleIf(storedGroups.isEmpty())
|
||||
fragment_placeholder.beVisibleIf(storedGroups.isEmpty())
|
||||
fragment_list.beVisibleIf(storedGroups.isNotEmpty())
|
||||
fragment_fastscroller.beVisibleIf(storedGroups.isNotEmpty())
|
||||
|
||||
val currAdapter = fragment_list.adapter
|
||||
if (currAdapter == null) {
|
||||
GroupsAdapter(activity as SimpleActivity, storedGroups, activity as RefreshContactsListener, fragment_list, fragment_fastscroller) {
|
||||
GroupsAdapter(activity as SimpleActivity, storedGroups, activity as RefreshContactsListener, fragment_list) {
|
||||
Intent(activity, GroupContactsActivity::class.java).apply {
|
||||
putExtra(GROUP, it as Group)
|
||||
activity!!.startActivity(this)
|
||||
@ -178,11 +177,8 @@ abstract class MyViewPagerFragment(context: Context, attributeSet: AttributeSet)
|
||||
fragment_list.adapter = this
|
||||
}
|
||||
|
||||
fragment_list.scheduleLayoutAnimation()
|
||||
fragment_fastscroller.setScrollToY(0)
|
||||
fragment_fastscroller.setViews(fragment_list) {
|
||||
val item = (fragment_list.adapter as GroupsAdapter).groups.getOrNull(it)
|
||||
fragment_fastscroller.updateBubbleText(item?.getBubbleText() ?: "")
|
||||
if (context.areSystemAnimationsEnabled) {
|
||||
fragment_list.scheduleLayoutAnimation()
|
||||
}
|
||||
} else {
|
||||
(currAdapter as GroupsAdapter).apply {
|
||||
@ -206,12 +202,15 @@ abstract class MyViewPagerFragment(context: Context, attributeSet: AttributeSet)
|
||||
else -> LOCATION_CONTACTS_TAB
|
||||
}
|
||||
|
||||
ContactsAdapter(activity as SimpleActivity, contacts, activity as RefreshContactsListener, location, null, fragment_list, null) {
|
||||
ContactsAdapter(activity as SimpleActivity, contacts, activity as RefreshContactsListener, location, null, fragment_list) {
|
||||
(activity as RefreshContactsListener).contactClicked(it as Contact)
|
||||
}.apply {
|
||||
fragment_list.adapter = this
|
||||
}
|
||||
fragment_list.scheduleLayoutAnimation()
|
||||
|
||||
if (context.areSystemAnimationsEnabled) {
|
||||
fragment_list.scheduleLayoutAnimation()
|
||||
}
|
||||
} else {
|
||||
(currAdapter as ContactsAdapter).apply {
|
||||
startNameWithSurname = config.startNameWithSurname
|
||||
@ -237,14 +236,15 @@ abstract class MyViewPagerFragment(context: Context, attributeSet: AttributeSet)
|
||||
}
|
||||
|
||||
private fun setupLetterFastscroller(contacts: ArrayList<Contact>) {
|
||||
val sorting = context.config.sorting
|
||||
letter_fastscroller.setupWithRecyclerView(fragment_list, { position ->
|
||||
try {
|
||||
val contact = contacts[position]
|
||||
var name = when {
|
||||
contact.isABusinessContact() -> contact.getFullCompany()
|
||||
context.config.sorting and SORT_BY_SURNAME != 0 && contact.surname.isNotEmpty() -> contact.surname
|
||||
context.config.sorting and SORT_BY_MIDDLE_NAME != 0 && contact.middleName.isNotEmpty() -> contact.middleName
|
||||
context.config.sorting and SORT_BY_FIRST_NAME != 0 && contact.firstName.isNotEmpty() -> contact.firstName
|
||||
sorting and SORT_BY_SURNAME != 0 && contact.surname.isNotEmpty() -> contact.surname
|
||||
sorting and SORT_BY_MIDDLE_NAME != 0 && contact.middleName.isNotEmpty() -> contact.middleName
|
||||
sorting and SORT_BY_FIRST_NAME != 0 && contact.firstName.isNotEmpty() -> contact.firstName
|
||||
context.config.startNameWithSurname -> contact.surname
|
||||
else -> contact.firstName
|
||||
}
|
||||
|
@ -28,7 +28,12 @@ class ContactsHelper(val context: Context) {
|
||||
private val BATCH_SIZE = 50
|
||||
private var displayContactSources = ArrayList<String>()
|
||||
|
||||
fun getContacts(getAll: Boolean = false, gettingDuplicates: Boolean = false, ignoredContactSources: HashSet<String> = HashSet(), callback: (ArrayList<Contact>) -> Unit) {
|
||||
fun getContacts(
|
||||
getAll: Boolean = false,
|
||||
gettingDuplicates: Boolean = false,
|
||||
ignoredContactSources: HashSet<String> = HashSet(),
|
||||
callback: (ArrayList<Contact>) -> Unit
|
||||
) {
|
||||
ensureBackgroundThread {
|
||||
val contacts = SparseArray<Contact>()
|
||||
displayContactSources = context.getVisibleContactSources()
|
||||
@ -187,8 +192,10 @@ class ContactsHelper(val context: Context) {
|
||||
val organization = Organization("", "")
|
||||
val websites = ArrayList<String>()
|
||||
val ims = ArrayList<IM>()
|
||||
val contact = Contact(id, prefix, firstName, middleName, surname, suffix, nickname, photoUri, numbers, emails, addresses,
|
||||
events, accountName, starred, contactId, thumbnailUri, null, notes, groups, organization, websites, ims, mimetype, ringtone)
|
||||
val contact = Contact(
|
||||
id, prefix, firstName, middleName, surname, suffix, nickname, photoUri, numbers, emails, addresses,
|
||||
events, accountName, starred, contactId, thumbnailUri, null, notes, groups, organization, websites, ims, mimetype, ringtone
|
||||
)
|
||||
|
||||
contacts.put(id, contact)
|
||||
}
|
||||
@ -733,8 +740,10 @@ class ContactsHelper(val context: Context) {
|
||||
val organization = getOrganizations(id)[id] ?: Organization("", "")
|
||||
val websites = getWebsites(id)[id] ?: ArrayList()
|
||||
val ims = getIMs(id)[id] ?: ArrayList()
|
||||
return Contact(id, prefix, firstName, middleName, surname, suffix, nickname, photoUri, number, emails, addresses, events,
|
||||
accountName, starred, contactId, thumbnailUri, null, notes, groups, organization, websites, ims, mimetype, ringtone)
|
||||
return Contact(
|
||||
id, prefix, firstName, middleName, surname, suffix, nickname, photoUri, number, emails, addresses, events,
|
||||
accountName, starred, contactId, thumbnailUri, null, notes, groups, organization, websites, ims, mimetype, ringtone
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@ -1499,7 +1508,8 @@ class ContactsHelper(val context: Context) {
|
||||
fun getDuplicatesOfContact(contact: Contact, addOriginal: Boolean, callback: (ArrayList<Contact>) -> Unit) {
|
||||
ensureBackgroundThread {
|
||||
getContacts(true, true) { contacts ->
|
||||
val duplicates = contacts.filter { it.id != contact.id && it.getHashToCompare() == contact.getHashToCompare() }.toMutableList() as ArrayList<Contact>
|
||||
val duplicates =
|
||||
contacts.filter { it.id != contact.id && it.getHashToCompare() == contact.getHashToCompare() }.toMutableList() as ArrayList<Contact>
|
||||
if (addOriginal) {
|
||||
duplicates.add(contact)
|
||||
}
|
||||
|
@ -1,9 +1,3 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
<path
|
||||
android:fillColor="#FFFFFFFF"
|
||||
android:pathData="M3,5v14c0,1.1 0.89,2 2,2h14c1.1,0 2,-0.9 2,-2L21,5c0,-1.1 -0.9,-2 -2,-2L5,3c-1.11,0 -2,0.9 -2,2zM15,9c0,1.66 -1.34,3 -3,3s-3,-1.34 -3,-3 1.34,-3 3,-3 3,1.34 3,3zM6,17c0,-2 4,-3.1 6,-3.1s6,1.1 6,3.1v1L6,18v-1z"/>
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp" android:height="24dp" android:viewportWidth="24" android:viewportHeight="24">
|
||||
<path android:fillColor="#FFFFFFFF" android:pathData="M3 5v14c0 1.1 0.89 2 2 2h14c1.1 0 2-0.9 2-2V5c0-1.1-0.9-2-2-2H5C3.89 3 3 3.9 3 5zm12 4c0 1.66-1.34 3-3 3s-3-1.34-3-3 1.34-3 3-3 3 1.34 3 3zm-9 8c0-2 4-3.1 6-3.1s6 1.1 6 3.1v1H6v-1z"/>
|
||||
</vector>
|
||||
|
@ -1,9 +1,3 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
<path
|
||||
android:fillColor="#FFFFFFFF"
|
||||
android:pathData="M12,6c1.11,0 2,-0.9 2,-2 0,-0.38 -0.1,-0.73 -0.29,-1.03L12,0l-1.71,2.97c-0.19,0.3 -0.29,0.65 -0.29,1.03 0,1.1 0.9,2 2,2zM16.6,15.99l-1.07,-1.07 -1.08,1.07c-1.3,1.3 -3.58,1.31 -4.89,0l-1.07,-1.07 -1.09,1.07C6.75,16.64 5.88,17 4.96,17c-0.73,0 -1.4,-0.23 -1.96,-0.61L3,21c0,0.55 0.45,1 1,1h16c0.55,0 1,-0.45 1,-1v-4.61c-0.56,0.38 -1.23,0.61 -1.96,0.61 -0.92,0 -1.79,-0.36 -2.44,-1.01zM18,9h-5L13,7h-2v2L6,9c-1.66,0 -3,1.34 -3,3v1.54c0,1.08 0.88,1.96 1.96,1.96 0.52,0 1.02,-0.2 1.38,-0.57l2.14,-2.13 2.13,2.13c0.74,0.74 2.03,0.74 2.77,0l2.14,-2.13 2.13,2.13c0.37,0.37 0.86,0.57 1.38,0.57 1.08,0 1.96,-0.88 1.96,-1.96L20.99,12C21,10.34 19.66,9 18,9z"/>
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp" android:height="24dp" android:viewportWidth="24" android:viewportHeight="24">
|
||||
<path android:fillColor="#FFFFFFFF" android:pathData="M12 6c1.11 0 2-0.9 2-2 0-0.38-0.1-0.73-0.29-1.03L12 0l-1.71 2.97C10.1 3.27 10 3.62 10 4c0 1.1 0.9 2 2 2zm4.6 9.99l-1.07-1.07-1.08 1.07c-1.3 1.3-3.58 1.31-4.89 0l-1.07-1.07-1.09 1.07C6.75 16.64 5.88 17 4.96 17c-0.73 0-1.4-0.23-1.96-0.61V21c0 0.55 0.45 1 1 1h16c0.55 0 1-0.45 1-1v-4.61C20.44 16.77 19.77 17 19.04 17c-0.92 0-1.79-0.36-2.44-1.01zM18 9h-5V7h-2v2H6c-1.66 0-3 1.34-3 3v1.54c0 1.08 0.88 1.96 1.96 1.96 0.52 0 1.02-0.2 1.38-0.57l2.14-2.13 2.13 2.13c0.74 0.74 2.03 0.74 2.77 0l2.14-2.13 2.13 2.13c0.37 0.37 0.86 0.57 1.38 0.57 1.08 0 1.96-0.88 1.96-1.96V12C21 10.34 19.66 9 18 9z"/>
|
||||
</vector>
|
||||
|
@ -1,9 +1,3 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="96dp"
|
||||
android:height="96dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
<path
|
||||
android:fillColor="#FFFFFF"
|
||||
android:pathData="M8,10L5,10L5,7L3,7v3L0,10v2h3v3h2v-3h3v-2zM18,11c1.66,0 2.99,-1.34 2.99,-3S19.66,5 18,5c-0.32,0 -0.63,0.05 -0.91,0.14 0.57,0.81 0.9,1.79 0.9,2.86s-0.34,2.04 -0.9,2.86c0.28,0.09 0.59,0.14 0.91,0.14zM13,11c1.66,0 2.99,-1.34 2.99,-3S14.66,5 13,5c-1.66,0 -3,1.34 -3,3s1.34,3 3,3zM19.62,13.16c0.83,0.73 1.38,1.66 1.38,2.84v2h3v-2c0,-1.54 -2.37,-2.49 -4.38,-2.84zM13,13c-2,0 -6,1 -6,3v2h12v-2c0,-2 -4,-3 -6,-3z" />
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="96dp" android:height="96dp" android:viewportWidth="24" android:viewportHeight="24">
|
||||
<path android:fillColor="#FFFFFF" android:pathData="M8 10H5V7H3v3H0v2h3v3h2v-3h3v-2zm10 1c1.66 0 2.99-1.34 2.99-3S19.66 5 18 5c-0.32 0-0.63 0.05-0.91 0.14 0.57 0.81 0.9 1.79 0.9 2.86s-0.34 2.04-0.9 2.86C17.37 10.95 17.68 11 18 11zm-5 0c1.66 0 2.99-1.34 2.99-3S14.66 5 13 5c-1.66 0-3 1.34-3 3s1.34 3 3 3zm6.62 2.16C20.45 13.89 21 14.82 21 16v2h3v-2c0-1.54-2.37-2.49-4.38-2.84zM13 13c-2 0-6 1-6 3v2h12v-2c0-2-4-3-6-3z"/>
|
||||
</vector>
|
||||
|
@ -1,9 +1,3 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:width="24dp"
|
||||
android:height="24dp"
|
||||
android:viewportWidth="24"
|
||||
android:viewportHeight="24">
|
||||
<path
|
||||
android:fillColor="#FFFFFFFF"
|
||||
android:pathData="M3.9,12c0,-1.71 1.39,-3.1 3.1,-3.1h4L11,7L7,7c-2.76,0 -5,2.24 -5,5s2.24,5 5,5h4v-1.9L7,15.1c-1.71,0 -3.1,-1.39 -3.1,-3.1zM8,13h8v-2L8,11v2zM17,7h-4v1.9h4c1.71,0 3.1,1.39 3.1,3.1s-1.39,3.1 -3.1,3.1h-4L13,17h4c2.76,0 5,-2.24 5,-5s-2.24,-5 -5,-5z"/>
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp" android:height="24dp" android:viewportWidth="24" android:viewportHeight="24">
|
||||
<path android:pathData="M17 7h-3c-0.55 0-1 0.45-1 1s0.45 1 1 1h3c1.65 0 3 1.35 3 3s-1.35 3-3 3h-3c-0.55 0-1 0.45-1 1s0.45 1 1 1h3c2.76 0 5-2.24 5-5s-2.24-5-5-5zm-9 5c0 0.55 0.45 1 1 1h6c0.55 0 1-0.45 1-1s-0.45-1-1-1H9c-0.55 0-1 0.45-1 1zm2 3H7c-1.65 0-3-1.35-3-3s1.35-3 3-3h3c0.55 0 1-0.45 1-1s-0.45-1-1-1H7c-2.76 0-5 2.24-5 5s2.24 5 5 5h3c0.55 0 1-0.45 1-1s-0.45-1-1-1z" android:fillColor="#FFFFFFFF"/>
|
||||
</vector>
|
||||
|
4
app/src/main/res/drawable/ic_signal_vector.xml
Normal file
4
app/src/main/res/drawable/ic_signal_vector.xml
Normal file
@ -0,0 +1,4 @@
|
||||
<vector android:height="24dp" android:viewportHeight="1024" android:viewportWidth="1024" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillColor="#3a76f0" android:pathData="M0 0v1024h1024V0H0z"/>
|
||||
<path android:fillColor="#ffffff" android:pathData="M442.08 229.27l6.54 26.48a264.44 264.44 0 0 0-73.14 30.28l-13.99-23.41a287.61 287.61 0 0 1 80.59-33.34zm139.84 0l-6.54 26.48a264.44 264.44 0 0 1 73.14 30.28l14.15-23.41a289.68 289.68 0 0 0-80.75-33.35zm-319.3 132.14a289.18 289.18 0 0 0-33.34 80.67l26.48 6.54a264.44 264.44 0 0 1 30.28-73.14zM248.05 512a263.53 263.53 0 0 1 2.98-39.55l-26.97-4.14a291.25 291.25 0 0 0 0 87.29l26.97-4.05a264.36 264.36 0 0 1-2.98-39.55zm414.46 249.3l-13.99-23.33a262.95 262.95 0 0 1-73.06 30.28l6.54 26.48a289.84 289.84 0 0 0 80.51-33.43zM775.95 512a264.36 264.36 0 0 1-2.98 39.55l26.97 4.05a291.25 291.25 0 0 0 0-87.29l-26.97 4.14a263.53 263.53 0 0 1 2.98 39.55zm18.78 69.83l-26.48-6.53a263.95 263.95 0 0 1-30.28 73.23l23.42 14.07a288.68 288.68 0 0 0 33.34-80.77zM551.55 772.97a264.03 264.03 0 0 1-79.1 0l-4.05 26.97a290.67 290.67 0 0 0 87.21 0zm172.93-104.42a263.2 263.2 0 0 1-55.93 55.85l16.22 22.01a293.81 293.81 0 0 0 61.73-61.48zm-55.93-369.03a263.61 263.61 0 0 1 55.93 55.93l22.01-16.38a293.4 293.4 0 0 0-61.56-61.56zm-369.03 55.93a263.61 263.61 0 0 1 55.93-55.93l-16.38-22.01a293.4 293.4 0 0 0-61.56 61.56zm461.86 5.96l-23.41 14.07a262.95 262.95 0 0 1 30.28 73.06l26.48-6.54a288.68 288.68 0 0 0-33.35-80.59zM472.45 251.03a264.03 264.03 0 0 1 79.1 0l4.05-26.97a290.67 290.67 0 0 0-87.21 0zM313.5 753.69l-56.34 13.07 13.15-56.35-26.56-6.2-13.15 56.35a27.3 27.3 0 0 0 20.35 32.85 28.55 28.55 0 0 0 12.41 0l56.35-12.99zm-64.12-73.81l26.64 6.13 9.1-39.06a261.63 261.63 0 0 1-29.37-71.65l-26.48 6.54a292.33 292.33 0 0 0 26.81 69.25zm127.42 59.08l-39.05 9.1 6.2 26.64 28.71-6.7a288.77 288.77 0 0 0 69.25 26.81l6.54-26.48a262.04 262.04 0 0 1-71.41-29.54zM512 275.36c-130.73 0.08-236.56 106.07-236.56 236.72a237.22 237.22 0 0 0 36.32 125.77l-22.75 97.14 97.06-22.75c110.62 69.58 256.74 36.4 326.33-74.14 69.59-110.54 36.49-256.67-74.05-326.33A237.22 237.22 0 0 0 512 275.36" android:strokeWidth="0.82741475"/>
|
||||
</vector>
|
4
app/src/main/res/drawable/ic_telegram_vector.xml
Normal file
4
app/src/main/res/drawable/ic_telegram_vector.xml
Normal file
@ -0,0 +1,4 @@
|
||||
<vector android:height="24dp" android:viewportHeight="455.731" android:viewportWidth="455.731" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillColor="#36a6de" android:pathData="M0 0h455.731v455.731H0z"/>
|
||||
<path android:fillColor="#ffffff" android:pathData="M107.812 223.206l148.606-61.208c14.664-6.376 64.396-26.779 64.396-26.779s22.953-8.926 21.04 12.752c-0.638 8.926-5.738 40.168-10.839 74.009l-15.94 100.15s-1.275 14.664-12.114 17.215c-10.839 2.55-28.691-8.926-31.879-11.477-2.55-1.913-47.819-30.604-64.396-44.631-4.463-3.826-9.564-11.477 0.638-20.403 22.953-21.04 50.369-47.181 66.946-63.758 7.651-7.651 15.302-25.503-16.577-3.826l-89.948 60.472s-10.201 6.376-29.329 0.638-41.443-13.389-41.443-13.389-15.302-9.564 10.839-19.765z" android:strokeWidth="0.49044925"/>
|
||||
</vector>
|
5
app/src/main/res/drawable/ic_threema_vector.xml
Normal file
5
app/src/main/res/drawable/ic_threema_vector.xml
Normal file
@ -0,0 +1,5 @@
|
||||
<vector android:height="24dp" android:viewportHeight="512" android:viewportWidth="512" android:width="24dp" xmlns:aapt="http://schemas.android.com/aapt" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillColor="#3b3b3b" android:pathData="M0 0h512v512H0z"/>
|
||||
<path android:fillColor="#ffffff" android:pathData="M193.916 316.176l-70.308 17.36 14.756-59.892c-14.756-19.096-23.436-43.4-23.436-68.572 0-68.572 63.364-124.123 141.483-124.123s141.483 55.552 141.483 124.123c0 68.572-63.364 124.123-141.483 124.123-21.7 0-43.4-4.34-61.628-12.152zm21.7-122.388h-1.736c-3.472 0-6.076 2.604-5.208 6.076v56.42c0 3.472 2.604 6.076 6.076 6.076h83.327c3.472 0 6.076-2.604 6.076-6.076v-56.42c0-3.472-2.604-6.076-6.076-6.076h-1.736v-15.624c0-21.7-18.228-39.928-39.928-39.928-21.7 0-39.928 18.228-39.928 39.928v15.624zm64.232 0h-47.74v-15.624c0-13.02 10.416-24.304 24.304-24.304 13.02 0 24.304 10.416 24.304 24.304v15.624z" android:strokeWidth="0.86799389"/>
|
||||
<path android:fillColor="#3fe669" android:pathData="M144.951 384.747a24.304 24.304 0 1 1 48.608 0 24.304 24.304 0 1 1-48.608 0m86.799 0a24.304 24.304 0 1 1 48.608 0 24.304 24.304 0 1 1-48.608 0m86.8 0a24.304 24.304 0 1 1 48.608 0 24.304 24.304 0 1 1-48.608 0" android:strokeWidth="0.86799389"/>
|
||||
</vector>
|
9
app/src/main/res/drawable/ic_viber_vector.xml
Normal file
9
app/src/main/res/drawable/ic_viber_vector.xml
Normal file
@ -0,0 +1,9 @@
|
||||
<vector android:height="24dp" android:viewportHeight="512" android:viewportWidth="512" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillColor="#7b519d" android:pathData="M0 0h512v512H0z"/>
|
||||
<path android:fillColor="#ffffff" android:pathData="M407.294 186.94l-0.092-0.369c-7.477-30.229-41.188-62.664-72.145-69.412l-0.349-0.072c-50.073-9.552-100.844-9.552-150.905 0l-0.36 0.072c-30.947 6.748-64.658 39.186-72.145 69.412l-0.083 0.369c-9.244 42.214-9.244 85.026 0 127.24l0.083 0.369c7.169 28.938 38.368 59.885 68.171 68.395v33.743c0 12.214 14.883 18.212 23.346 9.398l34.188-35.537c7.416 0.414 14.835 0.646 22.252 0.646 25.205 0 50.421-2.384 75.452-7.159l0.349-0.072c30.958-6.748 64.668-39.186 72.145-69.412l0.092-0.369c9.244-42.215 9.244-85.025 0.001-127.241zm-27.056 121.12c-4.992 19.721-30.587 44.238-50.924 48.768-26.624 5.063-53.459 7.227-80.267 6.484-0.533-0.016-1.046 0.192-1.417 0.575l-24.962 25.625-26.55 27.25c-1.941 2.025-5.352 0.646-5.352-2.147v-55.899c0-0.924-0.659-1.707-1.566-1.887-0.005-0.002-0.011-0.002-0.016-0.003-20.337-4.53-45.923-29.047-50.924-48.768-8.32-38.157-8.32-76.839 0-114.996 5.001-19.721 30.587-44.238 50.924-48.768 46.498-8.844 93.643-8.844 140.131 0 20.347 4.53 45.932 29.047 50.924 48.768 8.329 38.158 8.329 76.84-0.001 114.998z" android:strokeWidth="1.09314275"/>
|
||||
<path android:fillColor="#ffffff" android:pathData="M303.493 333.862c-3.126-0.95-6.105-1.587-8.874-2.734-28.674-11.897-55.063-27.244-75.965-50.77-11.887-13.378-21.191-28.482-29.055-44.466-3.73-7.58-6.873-15.456-10.077-23.283-2.921-7.136 1.382-14.508 5.912-19.886 4.251-5.047 9.722-8.908 15.647-11.756 4.624-2.221 9.185-0.94 12.562 2.979 7.3 8.474 14.008 17.381 19.436 27.204 3.34 6.042 2.423 13.427-3.629 17.538-1.471 0.999-2.812 2.173-4.181 3.301-1.202 0.989-2.333 1.988-3.157 3.328-1.505 2.45-1.577 5.341-0.609 8.005 7.463 20.508 20.042 36.457 40.686 45.048 3.303 1.374 6.62 2.973 10.426 2.531 6.373-0.744 8.437-7.736 12.903-11.388 4.365-3.569 9.944-3.616 14.646-0.641 4.704 2.978 9.262 6.172 13.794 9.402 4.449 3.17 8.877 6.269 12.98 9.884 3.946 3.475 5.305 8.034 3.083 12.748-4.067 8.637-9.986 15.82-18.522 20.407-2.41 1.292-5.29 1.711-8.007 2.548-3.126-0.95 2.718-0.837 0 0zm-44.162-162.77c37.505 1.052 68.31 25.941 74.912 63.021 1.125 6.318 1.525 12.777 2.026 19.19 0.211 2.697-1.317 5.259-4.227 5.295-3.006 0.037-4.358-2.48-4.555-5.175-0.386-5.337-0.654-10.699-1.389-15.989-3.882-27.94-26.16-51.054-53.97-56.014-4.186-0.747-8.466-0.942-12.707-1.387-2.679-0.281-6.188-0.442-6.782-3.775-0.497-2.793 1.859-5.016 4.519-5.16 0.72-0.043 1.447-0.011 2.173-0.005 37.507 1.052-0.726-0.002 0 0z" android:strokeWidth="1.09314275"/>
|
||||
<path android:fillColor="#ffffff" android:pathData="M316.328 244.981c-0.063 0.469-0.094 1.57-0.369 2.606-0.995 3.765-6.705 4.236-8.018 0.437-0.39-1.127-0.448-2.41-0.45-3.624-0.011-7.943-1.739-15.879-5.746-22.791-4.118-7.104-10.41-13.074-17.788-16.689-4.462-2.184-9.286-3.543-14.177-4.351-2.137-0.354-4.297-0.567-6.445-0.867-2.603-0.362-3.993-2.02-3.869-4.585 0.115-2.403 1.871-4.133 4.491-3.983 8.606 0.487 16.921 2.35 24.574 6.401 15.56 8.241 24.449 21.247 27.044 38.616 0.117 0.788 0.305 1.566 0.365 2.356 0.146 1.948 0.239 3.899 0.388 6.472-0.063 0.467-0.149-2.573 0 0z" android:strokeWidth="1.09314275"/>
|
||||
<path android:fillColor="#ffffff" android:pathData="M293.001 244.072c-3.137 0.057-4.816-1.681-5.141-4.556-0.224-2.005-0.404-4.038-0.882-5.99-0.942-3.845-2.985-7.406-6.219-9.762-1.526-1.112-3.256-1.922-5.068-2.446-2.301-0.666-4.693-0.482-6.987-1.044-2.493-0.611-3.873-2.631-3.481-4.969 0.357-2.129 2.427-3.791 4.754-3.622 14.541 1.049 24.933 8.567 26.417 25.686 0.106 1.208 0.228 2.484-0.037 3.641-0.461 1.975-1.926 2.967-3.354 3.063-3.138 0.056 1.428-0.096 0 0zm10.492 89.79c2.718-0.837-3.126-0.95 0 0z" android:strokeWidth="1.09314275"/>
|
||||
<path android:fillColor="#ffffff" android:pathData="M259.427 171.097c-0.032 0-0.062-0.003-0.094-0.003-0.031-0.002 0.009 0 0.094 0.003zm-0.095-0.005c0.032 0 0.062 0.003 0.094 0.003 2.081 0.074 35.934 1.007-0.094-0.003zm56.996 73.889c-0.149-2.573-0.062 0.467 0 0zm-23.327-0.909c0.049-0.003 0.096-0.028 0.143-0.034-0.132 0-0.336 0.003-0.544 0.011 0.136 0.003 0.259 0.024 0.401 0.023z"/>
|
||||
<path android:fillColor="#ffffff" android:pathData="M293.001 244.072c-0.141 0.002-0.266-0.019-0.401-0.023-0.679 0.019-1.38 0.055 0.401 0.023zm0.143-0.033c-0.049 0.005-0.096 0.031-0.143 0.034 0.367-0.025 0.336-0.034 0.143-0.034z"/>
|
||||
</vector>
|
5
app/src/main/res/drawable/ic_whatsapp_vector.xml
Normal file
5
app/src/main/res/drawable/ic_whatsapp_vector.xml
Normal file
@ -0,0 +1,5 @@
|
||||
<vector android:height="24dp" android:viewportHeight="455.731" android:viewportWidth="455.731" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<path android:fillColor="#1BD741" android:pathData="M0 0h455.731v455.731H0z"/>
|
||||
<path android:fillColor="#ffffff" android:pathData="M89.713 366.168l19.351-68.728c-12.444-21.14-18.996-45.193-18.996-69.902 0-76.08 61.896-137.976 137.976-137.976s137.975 61.896 137.975 137.976-61.895 137.976-137.975 137.976c-23.706 0-46.919-6.068-67.454-17.59zm74.5-43.346l4.224 2.579c17.904 10.93 38.516 16.708 59.607 16.708 63.174 0 114.569-51.396 114.569-114.57 0-63.174-51.395-114.57-114.569-114.57s-114.57 51.396-114.57 114.57c0 22.012 6.256 43.388 18.091 61.817l2.844 4.429-11.143 39.579z"/>
|
||||
<path android:fillColor="#ffffff" android:pathData="M189.285 163.32l-8.953-0.488c-2.812-0.153-5.57 0.786-7.696 2.633-4.34 3.769-11.28 11.056-13.412 20.552-3.179 14.158 1.734 31.496 14.448 48.833s36.408 45.077 78.306 56.924c13.501 3.818 24.122 1.244 32.317-3.998 6.49-4.151 10.964-10.815 12.576-18.348l1.429-6.677c0.454-2.122-0.623-4.275-2.595-5.184l-30.257-13.947c-1.964-0.905-4.294-0.333-5.615 1.379l-11.879 15.399c-0.897 1.163-2.433 1.624-3.82 1.137-8.135-2.859-35.383-14.271-50.335-43.072-0.648-1.249-0.487-2.765 0.433-3.831l11.352-13.133c1.16-1.341 1.453-3.226 0.756-4.856l-13.043-30.514c-0.694-1.624-2.25-2.713-4.013-2.809z"/>
|
||||
</vector>
|
@ -43,7 +43,7 @@
|
||||
android:layout_marginBottom="@dimen/medium_margin"
|
||||
android:background="?attr/selectableItemBackgroundBorderless"
|
||||
android:padding="@dimen/tiny_margin"
|
||||
android:src="@drawable/ic_star_off_vector" />
|
||||
android:src="@drawable/ic_star_outline_vector" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/contact_change_photo"
|
||||
@ -217,7 +217,7 @@
|
||||
android:paddingTop="@dimen/medium_margin"
|
||||
android:paddingEnd="@dimen/small_margin"
|
||||
android:paddingBottom="@dimen/small_margin"
|
||||
android:src="@drawable/ic_email_vector" />
|
||||
android:src="@drawable/ic_mail_vector" />
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/contact_emails_holder"
|
||||
|
@ -38,25 +38,21 @@
|
||||
android:textSize="@dimen/bigger_text_size"
|
||||
android:visibility="gone" />
|
||||
|
||||
<com.simplemobiletools.commons.views.MyRecyclerView
|
||||
android:id="@+id/group_contacts_list"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:clipToPadding="false"
|
||||
android:layoutAnimation="@anim/layout_animation"
|
||||
android:scrollbars="none"
|
||||
app:layoutManager="com.simplemobiletools.commons.views.MyLinearLayoutManager" />
|
||||
|
||||
<com.simplemobiletools.commons.views.FastScroller
|
||||
<com.qtalk.recyclerviewfastscroller.RecyclerViewFastScroller
|
||||
android:id="@+id/group_contacts_fastscroller"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_alignParentEnd="true"
|
||||
android:paddingStart="@dimen/normal_margin">
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<include layout="@layout/fastscroller_handle_vertical" />
|
||||
<com.simplemobiletools.commons.views.MyRecyclerView
|
||||
android:id="@+id/group_contacts_list"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:clipToPadding="false"
|
||||
android:layoutAnimation="@anim/layout_animation"
|
||||
android:scrollbars="none"
|
||||
app:layoutManager="com.simplemobiletools.commons.views.MyLinearLayoutManager" />
|
||||
|
||||
</com.simplemobiletools.commons.views.FastScroller>
|
||||
</com.qtalk.recyclerviewfastscroller.RecyclerViewFastScroller>
|
||||
</RelativeLayout>
|
||||
|
||||
<com.simplemobiletools.commons.views.MyFloatingActionButton
|
||||
|
@ -42,16 +42,21 @@
|
||||
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"
|
||||
<com.reddit.indicatorfastscroll.FastScrollerView
|
||||
android:id="@+id/letter_fastscroller"
|
||||
android:layout_width="32dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentEnd="true"
|
||||
android:paddingStart="@dimen/normal_margin">
|
||||
android:paddingTop="@dimen/big_margin"
|
||||
android:paddingBottom="@dimen/big_margin" />
|
||||
|
||||
<include layout="@layout/fastscroller_handle_vertical" />
|
||||
<com.reddit.indicatorfastscroll.FastScrollerThumbView
|
||||
android:id="@+id/letter_fastscroller_thumb"
|
||||
android:layout_width="@dimen/fab_size"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_alignTop="@+id/letter_fastscroller"
|
||||
android:layout_alignBottom="@+id/letter_fastscroller"
|
||||
android:layout_marginEnd="@dimen/activity_margin"
|
||||
android:layout_toStartOf="@+id/letter_fastscroller" />
|
||||
|
||||
</com.simplemobiletools.commons.views.FastScroller>
|
||||
</RelativeLayout>
|
||||
|
@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:id="@+id/settings_scrollview"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
@ -11,348 +11,317 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical">
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/settings_customize_colors_holder"
|
||||
<TextView
|
||||
android:id="@+id/settings_color_customization_label"
|
||||
style="@style/SettingsSectionLabelStyle"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/medium_margin"
|
||||
android:background="?attr/selectableItemBackground"
|
||||
android:paddingStart="@dimen/normal_margin"
|
||||
android:paddingTop="@dimen/activity_margin"
|
||||
android:paddingEnd="@dimen/normal_margin"
|
||||
android:paddingBottom="@dimen/activity_margin">
|
||||
android:text="@string/color_customization" />
|
||||
|
||||
<com.simplemobiletools.commons.views.MyTextView
|
||||
android:id="@+id/settings_customize_colors"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_centerVertical="true"
|
||||
android:paddingStart="@dimen/medium_margin"
|
||||
android:text="@string/customize_colors" />
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/settings_use_english_holder"
|
||||
<LinearLayout
|
||||
android:id="@+id/settings_color_customization_holder"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/medium_margin"
|
||||
android:background="?attr/selectableItemBackground"
|
||||
android:paddingStart="@dimen/normal_margin"
|
||||
android:paddingTop="@dimen/activity_margin"
|
||||
android:paddingEnd="@dimen/normal_margin"
|
||||
android:paddingBottom="@dimen/activity_margin">
|
||||
android:layout_margin="@dimen/medium_margin"
|
||||
android:background="@drawable/section_holder_stroke"
|
||||
android:orientation="vertical">
|
||||
|
||||
<com.simplemobiletools.commons.views.MySwitchCompat
|
||||
android:id="@+id/settings_use_english"
|
||||
<RelativeLayout
|
||||
android:id="@+id/settings_customize_colors_holder"
|
||||
style="@style/SettingsHolderTextViewOneLinerStyle"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@null"
|
||||
android:clickable="false"
|
||||
android:paddingStart="@dimen/medium_margin"
|
||||
android:text="@string/use_english_language"
|
||||
app:switchPadding="@dimen/medium_margin" />
|
||||
android:background="@drawable/ripple_all_corners">
|
||||
|
||||
</RelativeLayout>
|
||||
<com.simplemobiletools.commons.views.MyTextView
|
||||
android:id="@+id/settings_customize_colors_label"
|
||||
style="@style/SettingsTextLabelStyle"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/customize_colors" />
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/settings_manage_contact_fields_holder"
|
||||
</RelativeLayout>
|
||||
</LinearLayout>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/settings_general_settings_label"
|
||||
style="@style/SettingsSectionLabelStyle"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/medium_margin"
|
||||
android:background="?attr/selectableItemBackground"
|
||||
android:paddingStart="@dimen/normal_margin"
|
||||
android:paddingTop="@dimen/activity_margin"
|
||||
android:paddingEnd="@dimen/normal_margin"
|
||||
android:paddingBottom="@dimen/activity_margin">
|
||||
android:text="@string/general_settings" />
|
||||
|
||||
<com.simplemobiletools.commons.views.MyTextView
|
||||
android:id="@+id/settings_manage_contact_fields"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_centerVertical="true"
|
||||
android:paddingStart="@dimen/medium_margin"
|
||||
android:text="@string/manage_shown_contact_fields" />
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/settings_manage_tabs_holder"
|
||||
<LinearLayout
|
||||
android:id="@+id/settings_general_settings_holder"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/medium_margin"
|
||||
android:background="?attr/selectableItemBackground"
|
||||
android:paddingStart="@dimen/normal_margin"
|
||||
android:paddingTop="@dimen/activity_margin"
|
||||
android:paddingEnd="@dimen/normal_margin"
|
||||
android:paddingBottom="@dimen/activity_margin">
|
||||
android:layout_margin="@dimen/medium_margin"
|
||||
android:background="@drawable/section_holder_stroke"
|
||||
android:orientation="vertical">
|
||||
|
||||
<com.simplemobiletools.commons.views.MyTextView
|
||||
android:id="@+id/settings_manage_tabs"
|
||||
<RelativeLayout
|
||||
android:id="@+id/settings_use_english_holder"
|
||||
style="@style/SettingsHolderCheckboxStyle"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_centerVertical="true"
|
||||
android:paddingStart="@dimen/medium_margin"
|
||||
android:text="@string/manage_shown_tabs" />
|
||||
android:background="@drawable/ripple_top_corners">
|
||||
|
||||
</RelativeLayout>
|
||||
<com.simplemobiletools.commons.views.MyAppCompatCheckbox
|
||||
android:id="@+id/settings_use_english"
|
||||
style="@style/SettingsCheckboxStyle"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/use_english_language" />
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/settings_default_tab_holder"
|
||||
</RelativeLayout>
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/settings_font_size_holder"
|
||||
style="@style/SettingsHolderTextViewStyle"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@drawable/ripple_background">
|
||||
|
||||
<com.simplemobiletools.commons.views.MyTextView
|
||||
android:id="@+id/settings_font_size_label"
|
||||
style="@style/SettingsTextLabelStyle"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/font_size" />
|
||||
|
||||
<com.simplemobiletools.commons.views.MyTextView
|
||||
android:id="@+id/settings_font_size"
|
||||
style="@style/SettingsTextValueStyle"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@+id/settings_font_size_label"
|
||||
tools:text="@string/medium" />
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/settings_manage_contact_fields_holder"
|
||||
style="@style/SettingsHolderTextViewOneLinerStyle"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@drawable/ripple_background">
|
||||
|
||||
<com.simplemobiletools.commons.views.MyTextView
|
||||
android:id="@+id/settings_manage_contact_fields_label"
|
||||
style="@style/SettingsTextLabelStyle"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/manage_shown_contact_fields" />
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/settings_show_call_confirmation_holder"
|
||||
style="@style/SettingsHolderCheckboxStyle"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@drawable/ripple_background">
|
||||
|
||||
<com.simplemobiletools.commons.views.MyAppCompatCheckbox
|
||||
android:id="@+id/settings_show_call_confirmation"
|
||||
style="@style/SettingsCheckboxStyle"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/show_call_confirmation_dialog" />
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/settings_show_private_contacts_holder"
|
||||
style="@style/SettingsHolderCheckboxStyle"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@drawable/ripple_bottom_corners">
|
||||
|
||||
<com.simplemobiletools.commons.views.MyAppCompatCheckbox
|
||||
android:id="@+id/settings_show_private_contacts"
|
||||
style="@style/SettingsCheckboxStyle"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/show_private_contacts" />
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/settings_main_screen_label"
|
||||
style="@style/SettingsSectionLabelStyle"
|
||||
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">
|
||||
android:text="@string/main_screen" />
|
||||
|
||||
<com.simplemobiletools.commons.views.MyTextView
|
||||
android:id="@+id/settings_default_tab_label"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_centerVertical="true"
|
||||
android:layout_toStartOf="@+id/settings_default_tab"
|
||||
android:paddingLeft="@dimen/medium_margin"
|
||||
android:paddingRight="@dimen/medium_margin"
|
||||
android:text="@string/default_tab_to_open" />
|
||||
|
||||
<com.simplemobiletools.commons.views.MyTextView
|
||||
android:id="@+id/settings_default_tab"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentEnd="true"
|
||||
android:layout_marginEnd="@dimen/medium_margin"
|
||||
android:background="@null"
|
||||
android:clickable="false" />
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/settings_font_size_holder"
|
||||
<LinearLayout
|
||||
android:id="@+id/settings_main_screen_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">
|
||||
android:layout_margin="@dimen/medium_margin"
|
||||
android:background="@drawable/section_holder_stroke"
|
||||
android:orientation="vertical">
|
||||
|
||||
<com.simplemobiletools.commons.views.MyTextView
|
||||
android:id="@+id/settings_font_size_label"
|
||||
<RelativeLayout
|
||||
android:id="@+id/settings_manage_shown_tabs_holder"
|
||||
style="@style/SettingsHolderTextViewOneLinerStyle"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_centerVertical="true"
|
||||
android:layout_toStartOf="@+id/settings_font_size"
|
||||
android:paddingLeft="@dimen/medium_margin"
|
||||
android:paddingRight="@dimen/medium_margin"
|
||||
android:text="@string/font_size" />
|
||||
android:background="@drawable/ripple_top_corners">
|
||||
|
||||
<com.simplemobiletools.commons.views.MyTextView
|
||||
android:id="@+id/settings_font_size"
|
||||
android:layout_width="wrap_content"
|
||||
<com.simplemobiletools.commons.views.MyTextView
|
||||
android:id="@+id/settings_manage_shown_tabs_label"
|
||||
style="@style/SettingsTextLabelStyle"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/manage_shown_tabs" />
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/settings_default_tab_holder"
|
||||
style="@style/SettingsHolderTextViewStyle"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentEnd="true"
|
||||
android:layout_marginEnd="@dimen/medium_margin"
|
||||
android:background="@null"
|
||||
android:clickable="false" />
|
||||
android:background="@drawable/ripple_background">
|
||||
|
||||
</RelativeLayout>
|
||||
<com.simplemobiletools.commons.views.MyTextView
|
||||
android:id="@+id/settings_default_tab_label"
|
||||
style="@style/SettingsTextLabelStyle"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/default_tab_to_open" />
|
||||
|
||||
<com.simplemobiletools.commons.views.MyTextView
|
||||
android:id="@+id/settings_default_tab"
|
||||
style="@style/SettingsTextValueStyle"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@+id/settings_default_tab_label"
|
||||
tools:text="@string/contacts_tab" />
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/settings_on_contact_click_holder"
|
||||
</RelativeLayout>
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/settings_on_contact_click_holder"
|
||||
style="@style/SettingsHolderTextViewStyle"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@drawable/ripple_background">
|
||||
|
||||
<com.simplemobiletools.commons.views.MyTextView
|
||||
android:id="@+id/settings_on_contact_click_label"
|
||||
style="@style/SettingsTextLabelStyle"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/on_contact_click" />
|
||||
|
||||
<com.simplemobiletools.commons.views.MyTextView
|
||||
android:id="@+id/settings_on_contact_click"
|
||||
style="@style/SettingsTextValueStyle"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@+id/settings_on_contact_click_label"
|
||||
tools:text="@string/contacts_tab" />
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/settings_show_dialpad_button_holder"
|
||||
style="@style/SettingsHolderCheckboxStyle"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@drawable/ripple_background">
|
||||
|
||||
<com.simplemobiletools.commons.views.MyAppCompatCheckbox
|
||||
android:id="@+id/settings_show_dialpad_button"
|
||||
style="@style/SettingsCheckboxStyle"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/show_dialpad_button" />
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/settings_show_only_contacts_with_numbers_holder"
|
||||
style="@style/SettingsHolderCheckboxStyle"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@drawable/ripple_bottom_corners">
|
||||
|
||||
<com.simplemobiletools.commons.views.MyAppCompatCheckbox
|
||||
android:id="@+id/settings_show_only_contacts_with_numbers"
|
||||
style="@style/SettingsCheckboxStyle"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/show_only_contacts_with_numbers" />
|
||||
|
||||
</RelativeLayout>
|
||||
</LinearLayout>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/settings_list_view_label"
|
||||
style="@style/SettingsSectionLabelStyle"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/medium_margin"
|
||||
android:background="?attr/selectableItemBackground"
|
||||
android:paddingStart="@dimen/normal_margin"
|
||||
android:paddingTop="@dimen/bigger_margin"
|
||||
android:paddingEnd="@dimen/normal_margin"
|
||||
android:paddingBottom="@dimen/bigger_margin">
|
||||
android:text="@string/list_view" />
|
||||
|
||||
<com.simplemobiletools.commons.views.MyTextView
|
||||
android:id="@+id/settings_on_contact_click_label"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_centerVertical="true"
|
||||
android:layout_toStartOf="@+id/settings_on_contact_click"
|
||||
android:paddingStart="@dimen/medium_margin"
|
||||
android:paddingEnd="@dimen/medium_margin"
|
||||
android:text="@string/on_contact_click" />
|
||||
|
||||
<com.simplemobiletools.commons.views.MyTextView
|
||||
android:id="@+id/settings_on_contact_click"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentEnd="true"
|
||||
android:layout_marginEnd="@dimen/small_margin"
|
||||
android:background="@null"
|
||||
android:clickable="false" />
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/settings_show_contact_thumbnails_holder"
|
||||
<LinearLayout
|
||||
android:id="@+id/settings_list_view_holder"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/medium_margin"
|
||||
android:background="?attr/selectableItemBackground"
|
||||
android:paddingStart="@dimen/normal_margin"
|
||||
android:paddingTop="@dimen/activity_margin"
|
||||
android:paddingEnd="@dimen/normal_margin"
|
||||
android:paddingBottom="@dimen/activity_margin">
|
||||
android:layout_margin="@dimen/medium_margin"
|
||||
android:background="@drawable/section_holder_stroke"
|
||||
android:orientation="vertical">
|
||||
|
||||
<com.simplemobiletools.commons.views.MySwitchCompat
|
||||
android:id="@+id/settings_show_contact_thumbnails"
|
||||
<RelativeLayout
|
||||
android:id="@+id/settings_show_contact_thumbnails_holder"
|
||||
style="@style/SettingsHolderCheckboxStyle"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@null"
|
||||
android:clickable="false"
|
||||
android:paddingStart="@dimen/medium_margin"
|
||||
android:text="@string/show_contact_thumbnails"
|
||||
app:switchPadding="@dimen/medium_margin" />
|
||||
android:background="@drawable/ripple_top_corners">
|
||||
|
||||
</RelativeLayout>
|
||||
<com.simplemobiletools.commons.views.MyAppCompatCheckbox
|
||||
android:id="@+id/settings_show_contact_thumbnails"
|
||||
style="@style/SettingsCheckboxStyle"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/show_contact_thumbnails" />
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/settings_show_phone_numbers_holder"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/medium_margin"
|
||||
android:background="?attr/selectableItemBackground"
|
||||
android:paddingStart="@dimen/normal_margin"
|
||||
android:paddingTop="@dimen/activity_margin"
|
||||
android:paddingEnd="@dimen/normal_margin"
|
||||
android:paddingBottom="@dimen/activity_margin">
|
||||
</RelativeLayout>
|
||||
|
||||
<com.simplemobiletools.commons.views.MySwitchCompat
|
||||
android:id="@+id/settings_show_phone_numbers"
|
||||
<RelativeLayout
|
||||
android:id="@+id/settings_show_phone_numbers_holder"
|
||||
style="@style/SettingsHolderCheckboxStyle"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@null"
|
||||
android:clickable="false"
|
||||
android:paddingStart="@dimen/medium_margin"
|
||||
android:text="@string/show_phone_numbers"
|
||||
app:switchPadding="@dimen/medium_margin" />
|
||||
android:background="@drawable/ripple_background">
|
||||
|
||||
</RelativeLayout>
|
||||
<com.simplemobiletools.commons.views.MyAppCompatCheckbox
|
||||
android:id="@+id/settings_show_phone_numbers"
|
||||
style="@style/SettingsCheckboxStyle"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/show_phone_numbers" />
|
||||
|
||||
<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:paddingStart="@dimen/normal_margin"
|
||||
android:paddingTop="@dimen/activity_margin"
|
||||
android:paddingEnd="@dimen/normal_margin"
|
||||
android:paddingBottom="@dimen/activity_margin">
|
||||
</RelativeLayout>
|
||||
|
||||
<com.simplemobiletools.commons.views.MySwitchCompat
|
||||
android:id="@+id/settings_show_only_contacts_with_numbers"
|
||||
<RelativeLayout
|
||||
android:id="@+id/settings_start_name_with_surname_holder"
|
||||
style="@style/SettingsHolderCheckboxStyle"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@null"
|
||||
android:clickable="false"
|
||||
android:paddingStart="@dimen/medium_margin"
|
||||
android:text="@string/show_only_contacts_with_numbers"
|
||||
app:switchPadding="@dimen/medium_margin" />
|
||||
android:background="@drawable/ripple_bottom_corners">
|
||||
|
||||
</RelativeLayout>
|
||||
<com.simplemobiletools.commons.views.MyAppCompatCheckbox
|
||||
android:id="@+id/settings_start_name_with_surname"
|
||||
style="@style/SettingsCheckboxStyle"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/start_name_with_surname" />
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/settings_start_with_surname_holder"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/medium_margin"
|
||||
android:background="?attr/selectableItemBackground"
|
||||
android:paddingStart="@dimen/normal_margin"
|
||||
android:paddingTop="@dimen/activity_margin"
|
||||
android:paddingEnd="@dimen/normal_margin"
|
||||
android:paddingBottom="@dimen/activity_margin">
|
||||
|
||||
<com.simplemobiletools.commons.views.MySwitchCompat
|
||||
android:id="@+id/settings_start_with_surname"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@null"
|
||||
android:clickable="false"
|
||||
android:paddingStart="@dimen/medium_margin"
|
||||
android:text="@string/start_name_with_surname"
|
||||
app:switchPadding="@dimen/medium_margin" />
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/settings_show_call_confirmation_holder"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/medium_margin"
|
||||
android:background="?attr/selectableItemBackground"
|
||||
android:paddingStart="@dimen/normal_margin"
|
||||
android:paddingTop="@dimen/activity_margin"
|
||||
android:paddingEnd="@dimen/normal_margin"
|
||||
android:paddingBottom="@dimen/activity_margin">
|
||||
|
||||
<com.simplemobiletools.commons.views.MySwitchCompat
|
||||
android:id="@+id/settings_show_call_confirmation"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@null"
|
||||
android:clickable="false"
|
||||
android:paddingStart="@dimen/medium_margin"
|
||||
android:text="@string/show_call_confirmation_dialog"
|
||||
app:switchPadding="@dimen/medium_margin" />
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/settings_show_dialpad_button_holder"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/medium_margin"
|
||||
android:background="?attr/selectableItemBackground"
|
||||
android:paddingStart="@dimen/normal_margin"
|
||||
android:paddingTop="@dimen/activity_margin"
|
||||
android:paddingEnd="@dimen/normal_margin"
|
||||
android:paddingBottom="@dimen/activity_margin">
|
||||
|
||||
<com.simplemobiletools.commons.views.MySwitchCompat
|
||||
android:id="@+id/settings_show_dialpad_button"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@null"
|
||||
android:clickable="false"
|
||||
android:paddingStart="@dimen/medium_margin"
|
||||
android:text="@string/show_dialpad_button"
|
||||
app:switchPadding="@dimen/medium_margin" />
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/settings_show_private_contacts_holder"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="@dimen/medium_margin"
|
||||
android:background="?attr/selectableItemBackground"
|
||||
android:paddingStart="@dimen/normal_margin"
|
||||
android:paddingTop="@dimen/activity_margin"
|
||||
android:paddingEnd="@dimen/normal_margin"
|
||||
android:paddingBottom="@dimen/activity_margin">
|
||||
|
||||
<com.simplemobiletools.commons.views.MySwitchCompat
|
||||
android:id="@+id/settings_show_private_contacts"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@null"
|
||||
android:clickable="false"
|
||||
android:paddingStart="@dimen/medium_margin"
|
||||
android:text="@string/show_private_contacts"
|
||||
app:switchPadding="@dimen/medium_margin" />
|
||||
|
||||
</RelativeLayout>
|
||||
</RelativeLayout>
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
</ScrollView>
|
||||
|
@ -42,7 +42,7 @@
|
||||
android:layout_margin="@dimen/medium_margin"
|
||||
android:background="?attr/selectableItemBackgroundBorderless"
|
||||
android:padding="@dimen/tiny_margin"
|
||||
android:src="@drawable/ic_star_off_vector"
|
||||
android:src="@drawable/ic_star_outline_vector"
|
||||
android:visibility="gone" />
|
||||
|
||||
<LinearLayout
|
||||
@ -64,7 +64,7 @@
|
||||
android:paddingStart="@dimen/small_margin"
|
||||
android:paddingEnd="@dimen/small_margin"
|
||||
android:scaleType="fitCenter"
|
||||
android:src="@drawable/ic_email_vector" />
|
||||
android:src="@drawable/ic_mail_vector" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/contact_start_call"
|
||||
@ -142,7 +142,7 @@
|
||||
android:paddingTop="@dimen/medium_margin"
|
||||
android:paddingEnd="@dimen/small_margin"
|
||||
android:paddingBottom="@dimen/small_margin"
|
||||
android:src="@drawable/ic_email_vector"
|
||||
android:src="@drawable/ic_mail_vector"
|
||||
android:visibility="gone" />
|
||||
|
||||
<ImageView
|
||||
|
@ -35,25 +35,21 @@
|
||||
android:textSize="@dimen/bigger_text_size"
|
||||
android:visibility="gone" />
|
||||
|
||||
<com.simplemobiletools.commons.views.MyRecyclerView
|
||||
android:id="@+id/fragment_list"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:clipToPadding="false"
|
||||
android:layoutAnimation="@anim/layout_animation"
|
||||
android:scrollbars="none"
|
||||
app:layoutManager="com.simplemobiletools.commons.views.MyLinearLayoutManager" />
|
||||
|
||||
<com.simplemobiletools.commons.views.FastScroller
|
||||
<com.qtalk.recyclerviewfastscroller.RecyclerViewFastScroller
|
||||
android:id="@+id/fragment_fastscroller"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_alignParentEnd="true"
|
||||
android:paddingStart="@dimen/normal_margin">
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<include layout="@layout/fastscroller_handle_vertical" />
|
||||
<com.simplemobiletools.commons.views.MyRecyclerView
|
||||
android:id="@+id/fragment_list"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:clipToPadding="false"
|
||||
android:layoutAnimation="@anim/layout_animation"
|
||||
android:scrollbars="none"
|
||||
app:layoutManager="com.simplemobiletools.commons.views.MyLinearLayoutManager" />
|
||||
|
||||
</com.simplemobiletools.commons.views.FastScroller>
|
||||
</com.qtalk.recyclerviewfastscroller.RecyclerViewFastScroller>
|
||||
</RelativeLayout>
|
||||
|
||||
<com.simplemobiletools.commons.views.MyFloatingActionButton
|
||||
|
@ -1,5 +1,6 @@
|
||||
<?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"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:id="@+id/item_social_holder"
|
||||
android:layout_width="match_parent"
|
||||
@ -7,12 +8,14 @@
|
||||
android:background="?attr/selectableItemBackground"
|
||||
android:padding="@dimen/medium_margin">
|
||||
|
||||
<ImageView
|
||||
<com.google.android.material.imageview.ShapeableImageView
|
||||
android:id="@+id/item_social_image"
|
||||
android:layout_width="@dimen/normal_icon_size"
|
||||
android:layout_height="@dimen/normal_icon_size"
|
||||
android:padding="@dimen/medium_margin"
|
||||
android:src="@drawable/ic_phone_vector" />
|
||||
android:padding="@dimen/small_margin"
|
||||
android:scaleType="centerCrop"
|
||||
app:shapeAppearanceOverlay="@style/roundedImageView"
|
||||
tools:src="@drawable/ic_whatsapp_vector" />
|
||||
|
||||
<com.simplemobiletools.commons.views.MyTextView
|
||||
android:id="@+id/item_social_label"
|
||||
|
@ -1,5 +1,6 @@
|
||||
<?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"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:id="@+id/contact_source_holder"
|
||||
android:layout_width="match_parent"
|
||||
@ -22,7 +23,7 @@
|
||||
android:singleLine="true"
|
||||
android:textSize="@dimen/bigger_text_size" />
|
||||
|
||||
<ImageView
|
||||
<com.google.android.material.imageview.ShapeableImageView
|
||||
android:id="@+id/contact_source_image"
|
||||
android:layout_width="@dimen/normal_icon_size"
|
||||
android:layout_height="@dimen/normal_icon_size"
|
||||
@ -32,7 +33,8 @@
|
||||
android:layout_marginEnd="@dimen/normal_margin"
|
||||
android:background="?attr/selectableItemBackgroundBorderless"
|
||||
android:padding="@dimen/small_margin"
|
||||
android:visibility="gone"
|
||||
tools:src="@drawable/ic_phone_vector" />
|
||||
android:scaleType="centerCrop"
|
||||
app:shapeAppearanceOverlay="@style/roundedImageView"
|
||||
tools:src="@drawable/ic_whatsapp_vector" />
|
||||
|
||||
</RelativeLayout>
|
||||
|
@ -11,19 +11,25 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:clipToPadding="false"
|
||||
android:layoutAnimation="@anim/layout_animation"
|
||||
android:paddingEnd="@dimen/big_margin"
|
||||
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"
|
||||
<com.reddit.indicatorfastscroll.FastScrollerView
|
||||
android:id="@+id/letter_fastscroller"
|
||||
android:layout_width="32dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentEnd="true"
|
||||
android:paddingStart="@dimen/normal_margin">
|
||||
android:paddingTop="@dimen/big_margin"
|
||||
android:paddingBottom="@dimen/big_margin" />
|
||||
|
||||
<include layout="@layout/fastscroller_handle_vertical" />
|
||||
<com.reddit.indicatorfastscroll.FastScrollerThumbView
|
||||
android:id="@+id/letter_fastscroller_thumb"
|
||||
android:layout_width="@dimen/fab_size"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_alignTop="@+id/letter_fastscroller"
|
||||
android:layout_alignBottom="@+id/letter_fastscroller"
|
||||
android:layout_marginEnd="@dimen/activity_margin"
|
||||
android:layout_toStartOf="@+id/letter_fastscroller" />
|
||||
|
||||
</com.simplemobiletools.commons.views.FastScroller>
|
||||
</RelativeLayout>
|
||||
|
@ -8,7 +8,7 @@
|
||||
app:showAsAction="ifRoom" />
|
||||
<item
|
||||
android:id="@+id/cab_add_to_favorites"
|
||||
android:icon="@drawable/ic_star_on_vector"
|
||||
android:icon="@drawable/ic_star_vector"
|
||||
android:title="@string/add_to_favorites"
|
||||
app:showAsAction="ifRoom" />
|
||||
<item
|
||||
@ -28,7 +28,7 @@
|
||||
app:showAsAction="ifRoom" />
|
||||
<item
|
||||
android:id="@+id/cab_send_email_to_contacts"
|
||||
android:icon="@drawable/ic_email_vector"
|
||||
android:icon="@drawable/ic_mail_vector"
|
||||
android:title="@string/send_email_to_contacts"
|
||||
app:showAsAction="ifRoom" />
|
||||
<item
|
||||
|
@ -1,19 +1,19 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<menu 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">
|
||||
<item
|
||||
android:id="@+id/cab_rename"
|
||||
android:icon="@drawable/ic_rename_new"
|
||||
android:icon="@drawable/ic_rename_vector"
|
||||
android:title="@string/rename"
|
||||
app:showAsAction="ifRoom"/>
|
||||
app:showAsAction="ifRoom" />
|
||||
<item
|
||||
android:id="@+id/cab_select_all"
|
||||
android:icon="@drawable/ic_select_all_vector"
|
||||
android:title="@string/select_all"
|
||||
app:showAsAction="ifRoom"/>
|
||||
app:showAsAction="ifRoom" />
|
||||
<item
|
||||
android:id="@+id/cab_delete"
|
||||
android:icon="@drawable/ic_delete_vector"
|
||||
android:title="@string/delete"
|
||||
app:showAsAction="ifRoom"/>
|
||||
app:showAsAction="ifRoom" />
|
||||
</menu>
|
||||
|
@ -1,41 +1,43 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<menu 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">
|
||||
<item
|
||||
android:id="@+id/search"
|
||||
android:icon="@drawable/ic_search_vector"
|
||||
android:title="@string/search"
|
||||
app:actionViewClass="androidx.appcompat.widget.SearchView"
|
||||
app:showAsAction="collapseActionView|always"/>
|
||||
app:showAsAction="collapseActionView|always" />
|
||||
<item
|
||||
android:id="@+id/sort"
|
||||
android:icon="@drawable/ic_sort_vector"
|
||||
android:title="@string/sort_by"
|
||||
app:showAsAction="always"/>
|
||||
app:showAsAction="always" />
|
||||
<item
|
||||
android:id="@+id/filter"
|
||||
android:icon="@drawable/ic_filter_vector"
|
||||
android:title="@string/filter"
|
||||
app:showAsAction="always"/>
|
||||
app:showAsAction="always" />
|
||||
<item
|
||||
android:id="@+id/dialpad"
|
||||
android:icon="@drawable/ic_dialpad_vector"
|
||||
android:title="@string/dialpad"
|
||||
app:showAsAction="ifRoom"/>
|
||||
app:showAsAction="ifRoom" />
|
||||
<item
|
||||
android:id="@+id/import_contacts"
|
||||
android:title="@string/import_contacts_from_vcf"
|
||||
app:showAsAction="never"/>
|
||||
app:showAsAction="never" />
|
||||
<item
|
||||
android:id="@+id/export_contacts"
|
||||
android:title="@string/export_contacts_to_vcf"
|
||||
app:showAsAction="never"/>
|
||||
app:showAsAction="never" />
|
||||
<item
|
||||
android:id="@+id/settings"
|
||||
android:icon="@drawable/ic_settings_cog_vector"
|
||||
android:title="@string/settings"
|
||||
app:showAsAction="never"/>
|
||||
app:showAsAction="ifRoom" />
|
||||
<item
|
||||
android:id="@+id/about"
|
||||
android:icon="@drawable/ic_info_vector"
|
||||
android:title="@string/about"
|
||||
app:showAsAction="never"/>
|
||||
app:showAsAction="ifRoom" />
|
||||
</menu>
|
||||
|
@ -13,7 +13,7 @@
|
||||
app:showAsAction="ifRoom"/>
|
||||
<item
|
||||
android:id="@+id/send_email_to_group"
|
||||
android:icon="@drawable/ic_email_vector"
|
||||
android:icon="@drawable/ic_mail_vector"
|
||||
android:title="@string/send_email_to_group"
|
||||
app:showAsAction="ifRoom"/>
|
||||
</menu>
|
||||
|
@ -42,7 +42,7 @@
|
||||
<string name="remove_photo">Odstranit fotku</string>
|
||||
|
||||
<!-- Settings -->
|
||||
<string name="show_phone_numbers">Zobrazit telefonní čísla na hlavní obrazovce</string>
|
||||
<string name="show_phone_numbers">Zobrazit telefonní čísla</string>
|
||||
<string name="show_contact_thumbnails">Zobrazit obrázky kontaktů</string>
|
||||
<string name="show_dialpad_button">Zobrazit tlačítko číselníku na hlavní obrazovce</string>
|
||||
<string name="on_contact_click">Po klepnutí na kontakt</string>
|
||||
|
@ -12,7 +12,6 @@
|
||||
<string name="send_email_to_contacts">Enviar e-mail aos contactos</string>
|
||||
<string name="send_sms_to_group">Enviar SMS 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="create_new_contact">Criar novo contacto</string>
|
||||
<string name="add_to_existing_contact">Adicionar a um contacto existente</string>
|
||||
|
||||
@ -74,7 +73,6 @@
|
||||
|
||||
<!-- Favorites -->
|
||||
<string name="no_favorites">Parece que aínda non engadiu contactos aos favoritos</string>
|
||||
<string name="must_be_at_edit">Ten que estar na pantalla de edición para cambiar un contacto</string>
|
||||
|
||||
<!-- Search -->
|
||||
<string name="search_contacts">Buscar nos contactos</string>
|
||||
@ -106,6 +104,7 @@
|
||||
<string name="groups">Grupos</string>
|
||||
<string name="contact_source">Orixe do contacto</string>
|
||||
<string name="instant_messaging">Mensaxe instantánea (IM)</string>
|
||||
<string name="ringtone">Ringtone</string>
|
||||
|
||||
<!-- Confirmation dialog -->
|
||||
<string name="delete_from_all_sources">O contacto será eliminado de todas as orixes.</string>
|
||||
@ -132,7 +131,7 @@
|
||||
Podes amosar os teus contactos ou grupos favoritos nunha lista separada. Os grupos pódense usar para enviar correos electrónicos por lotes ou SMS. Para aforrar tempo, podes renomealos facilmente.
|
||||
|
||||
Contén botóns para chamar ou enviar mensaxes de texto aos teus contactos. Todos os campos visibles pódense personalizar como queiras e podes ocultar facilmente os que non uses. A función de busca buscará a cadea dada en todos os campos de contacto visibles para que poida atopar facilmente o contacto desexado.
|
||||
|
||||
|
||||
Tamén hai un teclado de marcación lixeiro ao teu servizo e con suxestións de contactos intelixentes.
|
||||
|
||||
Dá soporte a exportación / importación de contactos en formato vCard a ficheiros .vcf e para migracións sinxelas ou facer copias de seguridade dos teus datos.
|
||||
@ -152,7 +151,7 @@
|
||||
Vén cun deseño material e un tema escuro de xeito predeterminado, fornece unha excelente experiencia de usuario cun uso sinxelo. Como non necesita acceso a Internet, tes máis privacidade, seguridade e estabilidade.
|
||||
|
||||
Non contén anuncios nin permisos innecesarios. Dispón dun tema escuro e é totalmente de código aberto.
|
||||
|
||||
|
||||
<b>Visita a páxina a través desta ligazón:</b>
|
||||
https://www.simplemobiletools.com
|
||||
|
@ -42,7 +42,7 @@
|
||||
<string name="remove_photo">Remove photo</string>
|
||||
|
||||
<!-- Settings -->
|
||||
<string name="show_phone_numbers">Show phone numbers on the main screen</string>
|
||||
<string name="show_phone_numbers">Show phone numbers</string>
|
||||
<string name="show_contact_thumbnails">Show contact thumbnails</string>
|
||||
<string name="show_dialpad_button">Show a dialpad button on the main screen</string>
|
||||
<string name="on_contact_click">On contact click</string>
|
||||
|
@ -42,7 +42,7 @@
|
||||
<string name="remove_photo">Ukloni fotografiju</string>
|
||||
|
||||
<!-- Settings -->
|
||||
<string name="show_phone_numbers">Prikaži telefonske brojeve na glavnom zaslonu</string>
|
||||
<string name="show_phone_numbers">Prikaži telefonske brojeve</string>
|
||||
<string name="show_contact_thumbnails">Prikaži sličice kontakata</string>
|
||||
<string name="show_dialpad_button">Show a dialpad button on the main screen</string>
|
||||
<string name="on_contact_click">Prilikom dodira kontakta</string>
|
||||
|
@ -42,7 +42,7 @@
|
||||
<string name="remove_photo">Usuń zdjęcie</string>
|
||||
|
||||
<!-- Settings -->
|
||||
<string name="show_phone_numbers">Pokazuj numery telefonów na ekranie głównym</string>
|
||||
<string name="show_phone_numbers">Pokazuj numery telefonów</string>
|
||||
<string name="show_contact_thumbnails">Pokazuj miniaturki kontaktów</string>
|
||||
<string name="show_dialpad_button">Pokazuj przycisk panelu wybierania numeru na ekranie głównym</string>
|
||||
<string name="on_contact_click">Przy naciśnięciu kontaktu</string>
|
||||
|
@ -103,7 +103,7 @@
|
||||
<string name="groups">Grupos</string>
|
||||
<string name="contact_source">Origem do contacto</string>
|
||||
<string name="instant_messaging">Mensagem instantânea (IM)</string>
|
||||
<string name="ringtone">Ringtone</string>
|
||||
<string name="ringtone">Toque de chamada</string>
|
||||
|
||||
<!-- Confirmation dialog -->
|
||||
<string name="delete_from_all_sources">O contacto será apagado de todas as origens.</string>
|
||||
|
@ -42,7 +42,7 @@
|
||||
<string name="remove_photo">Odstrániť foto</string>
|
||||
|
||||
<!-- Settings -->
|
||||
<string name="show_phone_numbers">Zobraziť telefónne čísla na hlavnej obrazovke</string>
|
||||
<string name="show_phone_numbers">Zobraziť telefónne čísla</string>
|
||||
<string name="show_contact_thumbnails">Zobraziť obrázky kontaktov</string>
|
||||
<string name="show_dialpad_button">Zobraziť tlačidlo pre číselník na hlavnej obrazovke</string>
|
||||
<string name="on_contact_click">Po kliknutí na kontakt</string>
|
||||
|
@ -42,7 +42,7 @@
|
||||
<string name="remove_photo">Remove photo</string>
|
||||
|
||||
<!-- Settings -->
|
||||
<string name="show_phone_numbers">Show phone numbers on the main screen</string>
|
||||
<string name="show_phone_numbers">Show phone numbers</string>
|
||||
<string name="show_contact_thumbnails">Show contact thumbnails</string>
|
||||
<string name="show_dialpad_button">Show a dialpad button on the main screen</string>
|
||||
<string name="on_contact_click">On contact click</string>
|
||||
|
@ -2,4 +2,9 @@
|
||||
|
||||
<style name="AppTheme" parent="AppTheme.Base" />
|
||||
|
||||
<style name="roundedImageView">
|
||||
<item name="cornerFamily">rounded</item>
|
||||
<item name="cornerSize">50%</item>
|
||||
</style>
|
||||
|
||||
</resources>
|
||||
|
@ -1,7 +1,7 @@
|
||||
// Top-level build file where you can add configuration options common to all sub-projects/modules.
|
||||
|
||||
buildscript {
|
||||
ext.kotlin_version = '1.5.30'
|
||||
ext.kotlin_version = '1.5.31'
|
||||
|
||||
repositories {
|
||||
google()
|
||||
@ -9,7 +9,7 @@ buildscript {
|
||||
}
|
||||
|
||||
dependencies {
|
||||
classpath 'com.android.tools.build:gradle:4.2.2'
|
||||
classpath 'com.android.tools.build:gradle:7.0.3'
|
||||
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
|
||||
|
||||
// NOTE: Do not place your application dependencies here; they belong
|
||||
|
2
gradle/wrapper/gradle-wrapper.properties
vendored
2
gradle/wrapper/gradle-wrapper.properties
vendored
@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME
|
||||
distributionPath=wrapper/dists
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
zipStorePath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-bin.zip
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-7.0.2-bin.zip
|
||||
|
Reference in New Issue
Block a user