diff --git a/.gitignore b/.gitignore index 660f31f5..4cd1c5ee 100644 --- a/.gitignore +++ b/.gitignore @@ -2,7 +2,6 @@ *.aab .gradle /local.properties -/gradle.properties /.idea/ .DS_Store /build diff --git a/CHANGELOG.md b/CHANGELOG.md index 46dbed96..e89dff30 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,40 @@ Changelog ========== +Version 6.3.4 *(2019-08-14)* +---------------------------- + + * Allow enlarging contact photos by clicking on them + * Fixed photo deleting at locally stored contacts + * Improved light theme handling + * Allow searching at the groups tab + * Replaced icons with vectors for better quality and smaller size + * Some other glitches fixed + translation improvements + +Version 6.3.3 *(2019-08-03)* +---------------------------- + + * Allow customizing the bottom navigation bar color + * Some smaller translation and misc improvements + +Version 6.3.2 *(2019-06-14)* +---------------------------- + + * Fixed not all fields being properly exported in .vcf files + * Couple stability and translation improvements + +Version 6.3.1 *(2019-03-07)* +---------------------------- + + * Made contact avatars rounded and a bit bigger + * Added shortcuts for showing the dialpad or creating new contacts + +Version 6.3.0 *(2019-01-24)* +---------------------------- + + * Fixed local contact source not being properly shown + * Fixed some glitches related to exporting contacts + Version 6.2.0 *(2019-01-06)* ---------------------------- diff --git a/README.md b/README.md index 628bd7d1..2cd5f15b 100644 --- a/README.md +++ b/README.md @@ -7,10 +7,10 @@ You can use it for managing user emails and events too. It has the ability to so Contains no ads or unnecessary permissions. It is fully opensource, provides customizable colors. -This app is just one piece of a bigger series of apps. You can find the rest of them at http://www.simplemobiletools.com +This app is just one piece of a bigger series of apps. You can find the rest of them at https://www.simplemobiletools.com -Get it on Google Play -Get it on F-Droid +Get it on Google Play +Get it on F-Droid
App image diff --git a/app/build.gradle b/app/build.gradle index 6d2f8dba..d372ae24 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -15,8 +15,8 @@ android { applicationId "com.simplemobiletools.contacts.pro" minSdkVersion 21 targetSdkVersion 28 - versionCode 40 - versionName "6.2.0" + versionCode 45 + versionName "6.3.4" setProperty("archivesBaseName", "contacts") } @@ -51,12 +51,12 @@ android { } dependencies { - implementation 'com.simplemobiletools:commons:5.6.5' + implementation 'com.simplemobiletools:commons:5.16.7' implementation 'joda-time:joda-time:2.10.1' - implementation 'androidx.constraintlayout:constraintlayout:2.0.0-alpha3' + implementation 'androidx.constraintlayout:constraintlayout:2.0.0-beta2' implementation 'com.googlecode.ez-vcard:ez-vcard:0.10.5' - kapt "androidx.room:room-compiler:2.0.0" - implementation "androidx.room:room-runtime:2.0.0" - annotationProcessor "androidx.room:room-compiler:2.0.0" + kapt "androidx.room:room-compiler:2.1.0" + implementation "androidx.room:room-runtime:2.1.0" + annotationProcessor "androidx.room:room-compiler:2.1.0" } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index fd10164a..440b683b 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -31,7 +31,8 @@ android:icon="@mipmap/ic_launcher" android:label="@string/app_launcher_name" android:roundIcon="@mipmap/ic_launcher" - android:theme="@style/AppTheme"> + android:theme="@style/AppTheme" + android:supportsRtl="true"> { override fun onResourceReady(resource: Drawable?, model: Any?, target: Target?, dataSource: DataSource?, isFirstResource: Boolean): Boolean { photoView.setPadding(0, 0, 0, 0) + photoView.background = ColorDrawable(0) return false } diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/pro/activities/DialerActivity.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/pro/activities/DialerActivity.kt index 39ce6b69..3cd2eac6 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/pro/activities/DialerActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/pro/activities/DialerActivity.kt @@ -8,6 +8,7 @@ import android.os.Build import android.os.Bundle import android.telecom.PhoneAccount import android.telecom.TelecomManager +import android.view.Menu import com.simplemobiletools.commons.extensions.showErrorToast import com.simplemobiletools.commons.extensions.toast import com.simplemobiletools.contacts.pro.R @@ -37,6 +38,11 @@ class DialerActivity : SimpleActivity() { } } + override fun onCreateOptionsMenu(menu: Menu): Boolean { + updateMenuItemColors(menu) + return super.onCreateOptionsMenu(menu) + } + @SuppressLint("MissingPermission") private fun initOutgoingCall() { try { diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/pro/activities/DialpadActivity.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/pro/activities/DialpadActivity.kt index 56ee61cd..4227fd30 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/pro/activities/DialpadActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/pro/activities/DialpadActivity.kt @@ -36,6 +36,10 @@ class DialpadActivity : SimpleActivity() { super.onCreate(savedInstanceState) setContentView(R.layout.activity_dialpad) + if (checkAppSideloading()) { + return + } + dialpad_0_holder.setOnClickListener { dialpadPressed("0", it) } dialpad_1.setOnClickListener { dialpadPressed("1", it) } dialpad_2.setOnClickListener { dialpadPressed("2", it) } @@ -56,7 +60,7 @@ class DialpadActivity : SimpleActivity() { ContactsHelper(this).getContacts { gotContacts(it) } disableKeyboardPopping() - val callIcon = resources.getColoredDrawableWithColor(R.drawable.ic_phone_huge, if (isBlackAndWhiteTheme()) Color.BLACK else Color.WHITE) + val callIcon = resources.getColoredDrawableWithColor(R.drawable.ic_phone_vector, if (isBlackAndWhiteTheme()) Color.BLACK else config.primaryColor.getContrastColor()) dialpad_call_button.setImageDrawable(callIcon) dialpad_call_button.background.applyColorFilter(getAdjustedPrimaryColor()) @@ -74,6 +78,7 @@ class DialpadActivity : SimpleActivity() { override fun onCreateOptionsMenu(menu: Menu): Boolean { menuInflater.inflate(R.menu.menu_dialpad, menu) + updateMenuItemColors(menu) return true } diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/pro/activities/EditContactActivity.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/pro/activities/EditContactActivity.kt index a25b59d1..821ffbe9 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/pro/activities/EditContactActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/pro/activities/EditContactActivity.kt @@ -6,7 +6,6 @@ import android.content.ClipData import android.content.ContentValues import android.content.Intent import android.graphics.Bitmap -import android.graphics.drawable.ColorDrawable import android.net.Uri import android.os.Bundle import android.provider.ContactsContract.CommonDataKinds @@ -22,6 +21,7 @@ import com.simplemobiletools.commons.dialogs.RadioGroupDialog 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.ensureBackgroundThread import com.simplemobiletools.commons.models.RadioItem import com.simplemobiletools.contacts.pro.R import com.simplemobiletools.contacts.pro.dialogs.CustomLabelDialog @@ -60,7 +60,10 @@ class EditContactActivity : ContactActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_edit_contact) - supportActionBar?.setHomeAsUpIndicator(R.drawable.ic_cross) + + if (checkAppSideloading()) { + return + } val action = intent.action isThirdPartyIntent = action == Intent.ACTION_EDIT || action == Intent.ACTION_INSERT || action == ADD_NEW_CONTACT_NUMBER @@ -93,6 +96,8 @@ class EditContactActivity : ContactActivity() { menu.findItem(R.id.share).isVisible = contact?.id != 0 menu.findItem(R.id.open_with).isVisible = contact?.id != 0 && contact?.isPrivate() == false } + + updateMenuItemColors(menu, true) return true } @@ -144,7 +149,7 @@ class EditContactActivity : ContactActivity() { } if (contactId != 0) { - Thread { + ensureBackgroundThread { contact = ContactsHelper(this).getContactWithId(contactId, intent.getBooleanExtra(IS_PRIVATE, false)) if (contact == null) { toast(R.string.unknown_error_occurred) @@ -154,7 +159,7 @@ class EditContactActivity : ContactActivity() { gotContact() } } - }.start() + } } else { gotContact() } @@ -195,7 +200,9 @@ class EditContactActivity : ContactActivity() { contact_start_call.beVisibleIf(contact!!.phoneNumbers.isNotEmpty()) contact_send_email.beVisibleIf(contact!!.emails.isNotEmpty()) - contact_photo.background = ColorDrawable(config.primaryColor) + val background = resources.getDrawable(R.drawable.contact_circular_background) + background.applyColorFilter(config.primaryColor) + contact_photo.background = background if (contact!!.photoUri.isEmpty() && contact!!.photo == null) { showPhotoPlaceholder(contact_photo) @@ -378,7 +385,7 @@ class EditContactActivity : ContactActivity() { private fun setupEditContact() { window.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN) - supportActionBar?.title = resources.getString(R.string.edit_contact) + updateActionBarTitle(resources.getString(R.string.edit_contact)) setupNames() setupPhoneNumbers() @@ -575,7 +582,7 @@ class EditContactActivity : ContactActivity() { } private fun setupNewContact() { - supportActionBar?.title = resources.getString(R.string.new_contact) + updateActionBarTitle(resources.getString(R.string.new_contact)) originalContactSource = if (hasContactPermissions()) config.lastUsedContactSource else SMT_PRIVATE contact = getEmptyContact() getPublicContactSource(contact!!.source) { @@ -869,7 +876,7 @@ class EditContactActivity : ContactActivity() { val jobPosition = contact_organization_job_position.value organization = Organization(company, jobPosition) - Thread { + ensureBackgroundThread { config.lastUsedContactSource = source when { id == 0 -> insertNewContact(false) @@ -879,7 +886,7 @@ class EditContactActivity : ContactActivity() { updateContact(photoUpdateStatus) } } - }.start() + } } } @@ -1088,7 +1095,7 @@ class EditContactActivity : ContactActivity() { private fun isContactStarred() = contact_toggle_favorite.tag == 1 - private fun getStarDrawable(on: Boolean) = resources.getDrawable(if (on) R.drawable.ic_star_on_big else R.drawable.ic_star_off_big) + private fun getStarDrawable(on: Boolean) = resources.getDrawable(if (on) R.drawable.ic_star_on_vector else R.drawable.ic_star_off_vector) private fun trySetPhoto() { val items = arrayListOf( diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/pro/activities/GroupContactsActivity.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/pro/activities/GroupContactsActivity.kt index ab35f298..91394c9b 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/pro/activities/GroupContactsActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/pro/activities/GroupContactsActivity.kt @@ -7,6 +7,7 @@ import com.simplemobiletools.commons.extensions.beVisibleIf import com.simplemobiletools.commons.extensions.getAdjustedPrimaryColor import com.simplemobiletools.commons.extensions.underlineText import com.simplemobiletools.commons.extensions.updateTextColors +import com.simplemobiletools.commons.helpers.ensureBackgroundThread import com.simplemobiletools.contacts.pro.R import com.simplemobiletools.contacts.pro.adapters.ContactsAdapter import com.simplemobiletools.contacts.pro.dialogs.SelectContactsDialog @@ -53,8 +54,9 @@ class GroupContactsActivity : SimpleActivity(), RemoveFromGroupListener, Refresh refreshContacts() } - override fun onCreateOptionsMenu(menu: Menu?): Boolean { + override fun onCreateOptionsMenu(menu: Menu): Boolean { menuInflater.inflate(R.menu.menu_group, menu) + updateMenuItemColors(menu) return true } @@ -69,11 +71,11 @@ class GroupContactsActivity : SimpleActivity(), RemoveFromGroupListener, Refresh private fun fabClicked() { SelectContactsDialog(this, allContacts, groupContacts) { addedContacts, removedContacts -> - Thread { + ensureBackgroundThread { addContactsToGroup(addedContacts, group.id!!) removeContactsFromGroup(removedContacts, group.id!!) refreshContacts() - }.start() + } } } @@ -123,11 +125,11 @@ class GroupContactsActivity : SimpleActivity(), RemoveFromGroupListener, Refresh } override fun removeFromGroup(contacts: ArrayList) { - Thread { + ensureBackgroundThread { removeContactsFromGroup(contacts, group.id!!) if (groupContacts.size == contacts.size) { refreshContacts() } - }.start() + } } } diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/pro/activities/InsertOrEditContactActivity.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/pro/activities/InsertOrEditContactActivity.kt index 36934f94..84642b36 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/pro/activities/InsertOrEditContactActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/pro/activities/InsertOrEditContactActivity.kt @@ -4,10 +4,8 @@ import android.app.Activity import android.content.Intent import android.os.Bundle import android.provider.ContactsContract -import com.simplemobiletools.commons.extensions.getAdjustedPrimaryColor -import com.simplemobiletools.commons.extensions.getColoredDrawableWithColor -import com.simplemobiletools.commons.extensions.toast -import com.simplemobiletools.commons.extensions.updateTextColors +import android.view.Menu +import com.simplemobiletools.commons.extensions.* import com.simplemobiletools.commons.helpers.PERMISSION_READ_CONTACTS import com.simplemobiletools.contacts.pro.R import com.simplemobiletools.contacts.pro.adapters.ContactsAdapter @@ -24,6 +22,11 @@ class InsertOrEditContactActivity : SimpleActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_insert_edit_contact) + + if (checkAppSideloading()) { + return + } + title = getString(R.string.select_contact) setupViews() @@ -35,9 +38,14 @@ class InsertOrEditContactActivity : SimpleActivity() { } } + override fun onCreateOptionsMenu(menu: Menu): Boolean { + updateMenuItemColors(menu) + return super.onCreateOptionsMenu(menu) + } + private fun setupViews() { updateTextColors(insert_edit_contact_holder) - new_contact_tmb.setImageDrawable(resources.getColoredDrawableWithColor(R.drawable.ic_new_contact, config.textColor)) + new_contact_tmb.setImageDrawable(resources.getColoredDrawableWithColor(R.drawable.ic_new_contact_vector, config.textColor)) new_contact_holder.setOnClickListener { Intent().apply { action = Intent.ACTION_INSERT diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/pro/activities/MainActivity.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/pro/activities/MainActivity.kt index e2d67b20..4e4392d8 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/pro/activities/MainActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/pro/activities/MainActivity.kt @@ -1,11 +1,16 @@ package com.simplemobiletools.contacts.pro.activities +import android.annotation.SuppressLint import android.app.SearchManager import android.content.Context import android.content.Intent +import android.content.pm.ShortcutInfo +import android.content.pm.ShortcutManager import android.graphics.Color import android.graphics.drawable.ColorDrawable import android.graphics.drawable.Drawable +import android.graphics.drawable.Icon +import android.graphics.drawable.LayerDrawable import android.net.Uri import android.os.Bundle import android.os.Handler @@ -32,12 +37,12 @@ import com.simplemobiletools.contacts.pro.extensions.getTempFile import com.simplemobiletools.contacts.pro.fragments.MyViewPagerFragment import com.simplemobiletools.contacts.pro.helpers.* import com.simplemobiletools.contacts.pro.interfaces.RefreshContactsListener -import com.simplemobiletools.contacts.pro.models.Contact import kotlinx.android.synthetic.main.activity_main.* import kotlinx.android.synthetic.main.fragment_contacts.* import kotlinx.android.synthetic.main.fragment_favorites.* import kotlinx.android.synthetic.main.fragment_groups.* import java.io.FileOutputStream +import java.util.* class MainActivity : SimpleActivity(), RefreshContactsListener { private var isSearchOpen = false @@ -148,7 +153,7 @@ class MainActivity : SimpleActivity(), RefreshContactsListener { } } - val dialpadIcon = resources.getColoredDrawableWithColor(R.drawable.ic_dialpad, if (isBlackAndWhiteTheme()) Color.BLACK else Color.WHITE) + val dialpadIcon = resources.getColoredDrawableWithColor(R.drawable.ic_dialpad_vector, if (isBlackAndWhiteTheme()) Color.BLACK else config.primaryColor.getContrastColor()) main_dialpad_button.apply { setImageDrawable(dialpadIcon) background.applyColorFilter(getAdjustedPrimaryColor()) @@ -156,6 +161,8 @@ class MainActivity : SimpleActivity(), RefreshContactsListener { } isFirstResume = false + checkShortcuts() + invalidateOptionsMenu() } override fun onPause() { @@ -176,11 +183,12 @@ class MainActivity : SimpleActivity(), RefreshContactsListener { val currentFragment = getCurrentFragment() menu.apply { - findItem(R.id.search).isVisible = currentFragment != groups_fragment findItem(R.id.sort).isVisible = currentFragment != groups_fragment findItem(R.id.filter).isVisible = currentFragment != groups_fragment + setupSearch(this) + updateMenuItemColors(this) } - setupSearch(menu) + return true } @@ -216,7 +224,7 @@ class MainActivity : SimpleActivity(), RefreshContactsListener { (searchMenuItem!!.actionView as SearchView).apply { setSearchableInfo(searchManager.getSearchableInfo(componentName)) isSubmitButtonEnabled = false - queryHint = getString(if (getCurrentFragment() == contacts_fragment) R.string.search_contacts else R.string.search_favorites) + queryHint = getString(getSearchString()) setOnQueryTextListener(object : SearchView.OnQueryTextListener { override fun onQueryTextSubmit(query: String) = false @@ -244,6 +252,64 @@ class MainActivity : SimpleActivity(), RefreshContactsListener { }) } + private fun getSearchString(): Int { + return when (getCurrentFragment()) { + favorites_fragment -> R.string.search_favorites + groups_fragment -> R.string.search_groups + else -> R.string.search_contacts + } + } + + @SuppressLint("NewApi") + private fun checkShortcuts() { + val appIconColor = config.appIconColor + if (isNougatMR1Plus() && config.lastHandledShortcutColor != appIconColor) { + val launchDialpad = getLaunchDialpadShortcut(appIconColor) + val createNewContact = getCreateNewContactShortcut(appIconColor) + + val manager = getSystemService(ShortcutManager::class.java) + try { + manager.dynamicShortcuts = Arrays.asList(launchDialpad, createNewContact) + config.lastHandledShortcutColor = appIconColor + } catch (ignored: Exception) { + } + } + } + + @SuppressLint("NewApi") + private fun getLaunchDialpadShortcut(appIconColor: Int): ShortcutInfo { + val newEvent = getString(R.string.dialpad) + val drawable = resources.getDrawable(R.drawable.shortcut_dialpad) + (drawable as LayerDrawable).findDrawableByLayerId(R.id.shortcut_dialpad_background).applyColorFilter(appIconColor) + val bmp = drawable.convertToBitmap() + + val intent = Intent(this, DialpadActivity::class.java) + intent.action = Intent.ACTION_VIEW + return ShortcutInfo.Builder(this, "launch_dialpad") + .setShortLabel(newEvent) + .setLongLabel(newEvent) + .setIcon(Icon.createWithBitmap(bmp)) + .setIntent(intent) + .build() + } + + @SuppressLint("NewApi") + private fun getCreateNewContactShortcut(appIconColor: Int): ShortcutInfo { + val newEvent = getString(R.string.create_new_contact) + val drawable = resources.getDrawable(R.drawable.shortcut_plus) + (drawable as LayerDrawable).findDrawableByLayerId(R.id.shortcut_plus_background).applyColorFilter(appIconColor) + val bmp = drawable.convertToBitmap() + + val intent = Intent(this, EditContactActivity::class.java) + intent.action = Intent.ACTION_VIEW + return ShortcutInfo.Builder(this, "create_new_contact") + .setShortLabel(newEvent) + .setLongLabel(newEvent) + .setIcon(Icon.createWithBitmap(bmp)) + .setIntent(intent) + .build() + } + private fun getCurrentFragment(): MyViewPagerFragment? { val showTabs = config.showTabs val fragments = arrayListOf() @@ -351,9 +417,9 @@ class MainActivity : SimpleActivity(), RefreshContactsListener { private fun getTabIcon(position: Int): Drawable { val drawableId = when (position) { - LOCATION_CONTACTS_TAB -> R.drawable.ic_person - LOCATION_FAVORITES_TAB -> R.drawable.ic_star_on - else -> R.drawable.ic_group + LOCATION_CONTACTS_TAB -> R.drawable.ic_person_vector + LOCATION_FAVORITES_TAB -> R.drawable.ic_star_on_vector + else -> R.drawable.ic_group_vector } return resources.getColoredDrawableWithColor(drawableId, config.textColor) @@ -429,23 +495,20 @@ class MainActivity : SimpleActivity(), RefreshContactsListener { private fun exportContacts() { FilePickerDialog(this, pickFile = false, showFAB = true) { - ExportContactsDialog(this, it) { file, contactSources -> - Thread { - ContactsHelper(this).getContacts { allContacts -> - val contacts = allContacts.filter { contactSources.contains(it.source) } - if (contacts.isEmpty()) { - toast(R.string.no_entries_for_exporting) - } else { - VcfExporter().exportContacts(this, file, contacts as ArrayList, true) { result -> - toast(when (result) { - VcfExporter.ExportResult.EXPORT_OK -> R.string.exporting_successful - VcfExporter.ExportResult.EXPORT_PARTIAL -> R.string.exporting_some_entries_failed - else -> R.string.exporting_failed - }) - } + ExportContactsDialog(this, it) { file, ignoredContactSources -> + ContactsHelper(this).getContacts(ignoredContactSources) { contacts -> + if (contacts.isEmpty()) { + toast(R.string.no_entries_for_exporting) + } else { + VcfExporter().exportContacts(this, file, contacts, true) { result -> + toast(when (result) { + VcfExporter.ExportResult.EXPORT_OK -> R.string.exporting_successful + VcfExporter.ExportResult.EXPORT_PARTIAL -> R.string.exporting_some_entries_failed + else -> R.string.exporting_failed + }) } } - }.start() + } } } } @@ -456,7 +519,8 @@ class MainActivity : SimpleActivity(), RefreshContactsListener { val faqItems = arrayListOf( FAQItem(R.string.faq_1_title, R.string.faq_1_text), FAQItem(R.string.faq_2_title_commons, R.string.faq_2_text_commons), - FAQItem(R.string.faq_6_title_commons, R.string.faq_6_text_commons) + FAQItem(R.string.faq_6_title_commons, R.string.faq_6_text_commons), + FAQItem(R.string.faq_7_title_commons, R.string.faq_7_text_commons) ) startAboutActivity(R.string.app_name, licenses, BuildConfig.VERSION_NAME, faqItems, true) @@ -474,13 +538,12 @@ class MainActivity : SimpleActivity(), RefreshContactsListener { viewpager.currentItem = config.lastUsedViewPagerPage } - ContactsHelper(this).getContacts { + ContactsHelper(this).getContacts { contacts -> isGettingContacts = false if (isDestroyed) { return@getContacts } - val contacts = it if (refreshTabsMask and CONTACTS_TAB_MASK != 0) { contacts_fragment?.refreshContacts(contacts) } diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/pro/activities/ManageBlockedNumbersActivity.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/pro/activities/ManageBlockedNumbersActivity.kt index ae1ed642..7075fa15 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/pro/activities/ManageBlockedNumbersActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/pro/activities/ManageBlockedNumbersActivity.kt @@ -8,6 +8,7 @@ import com.simplemobiletools.commons.extensions.beVisibleIf import com.simplemobiletools.commons.extensions.getAdjustedPrimaryColor import com.simplemobiletools.commons.extensions.underlineText import com.simplemobiletools.commons.extensions.updateTextColors +import com.simplemobiletools.commons.helpers.ensureBackgroundThread import com.simplemobiletools.commons.interfaces.RefreshRecyclerViewListener import com.simplemobiletools.contacts.pro.R import com.simplemobiletools.contacts.pro.adapters.ManageBlockedNumbersAdapter @@ -39,8 +40,9 @@ class ManageBlockedNumbersActivity : SimpleActivity(), RefreshRecyclerViewListen } } - override fun onCreateOptionsMenu(menu: Menu?): Boolean { + override fun onCreateOptionsMenu(menu: Menu): Boolean { menuInflater.inflate(R.menu.menu_add_blocked_number, menu) + updateMenuItemColors(menu) return true } @@ -58,11 +60,11 @@ class ManageBlockedNumbersActivity : SimpleActivity(), RefreshRecyclerViewListen private fun updatePlaceholderTexts() { manage_blocked_numbers_placeholder.text = getString(if (isDefaultDialer()) R.string.not_blocking_anyone else R.string.must_make_default_dialer) - manage_blocked_numbers_placeholder_2.text = getString(if (isDefaultDialer()) R.string.add_a_blocked_number else R.string.set_to_default) + manage_blocked_numbers_placeholder_2.text = getString(if (isDefaultDialer()) R.string.add_a_blocked_number else R.string.set_as_default) } private fun updateBlockedNumbers() { - Thread { + ensureBackgroundThread { val blockedNumbers = getBlockedNumbers() runOnUiThread { ManageBlockedNumbersAdapter(this, blockedNumbers, this, manage_blocked_numbers_list) { @@ -74,7 +76,7 @@ class ManageBlockedNumbersActivity : SimpleActivity(), RefreshRecyclerViewListen manage_blocked_numbers_placeholder.beVisibleIf(blockedNumbers.isEmpty()) manage_blocked_numbers_placeholder_2.beVisibleIf(blockedNumbers.isEmpty()) } - }.start() + } } private fun addOrEditBlockedNumber(currentNumber: BlockedNumber? = null) { diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/pro/activities/SelectContactActivity.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/pro/activities/SelectContactActivity.kt index ffeb168c..670e8486 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/pro/activities/SelectContactActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/pro/activities/SelectContactActivity.kt @@ -26,6 +26,11 @@ class SelectContactActivity : SimpleActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_select_contact) + + if (checkAppSideloading()) { + return + } + setupPlaceholders() handlePermission(PERMISSION_READ_CONTACTS) { @@ -52,6 +57,7 @@ class SelectContactActivity : SimpleActivity() { override fun onCreateOptionsMenu(menu: Menu): Boolean { menuInflater.inflate(R.menu.menu_select_activity, menu) + updateMenuItemColors(menu) return true } diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/pro/activities/SettingsActivity.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/pro/activities/SettingsActivity.kt index de068e3d..6642034f 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/pro/activities/SettingsActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/pro/activities/SettingsActivity.kt @@ -4,6 +4,7 @@ import android.annotation.TargetApi import android.content.Intent import android.os.Build import android.os.Bundle +import android.view.Menu import com.simplemobiletools.commons.dialogs.RadioGroupDialog import com.simplemobiletools.commons.extensions.beVisibleIf import com.simplemobiletools.commons.extensions.updateTextColors @@ -44,6 +45,12 @@ class SettingsActivity : SimpleActivity() { setupShowDialpadLetters() setupOnContactClick() updateTextColors(settings_holder) + invalidateOptionsMenu() + } + + override fun onCreateOptionsMenu(menu: Menu): Boolean { + updateMenuItemColors(menu) + return super.onCreateOptionsMenu(menu) } private fun setupCustomizeColors() { diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/pro/activities/ViewContactActivity.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/pro/activities/ViewContactActivity.kt index 84fe9fea..7e820937 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/pro/activities/ViewContactActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/pro/activities/ViewContactActivity.kt @@ -1,7 +1,6 @@ package com.simplemobiletools.contacts.pro.activities import android.content.Intent -import android.graphics.drawable.ColorDrawable import android.os.Bundle import android.provider.ContactsContract import android.view.Menu @@ -9,8 +8,10 @@ import android.view.MenuItem import android.view.View import android.view.WindowManager import android.widget.RelativeLayout +import com.bumptech.glide.Glide import com.simplemobiletools.commons.extensions.* import com.simplemobiletools.commons.helpers.PERMISSION_READ_CONTACTS +import com.simplemobiletools.commons.helpers.ensureBackgroundThread import com.simplemobiletools.contacts.pro.R import com.simplemobiletools.contacts.pro.dialogs.CallConfirmationDialog import com.simplemobiletools.contacts.pro.extensions.* @@ -32,6 +33,11 @@ class ViewContactActivity : ContactActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_view_contact) + + if (checkAppSideloading()) { + return + } + showFields = config.showContactFields } @@ -41,18 +47,18 @@ class ViewContactActivity : ContactActivity() { if (isViewIntent) { handlePermission(PERMISSION_READ_CONTACTS) { if (it) { - Thread { + ensureBackgroundThread { initContact() - }.start() + } } else { toast(R.string.no_contacts_permission) finish() } } } else { - Thread { + ensureBackgroundThread { initContact() - }.start() + } } } @@ -60,6 +66,7 @@ class ViewContactActivity : ContactActivity() { menuInflater.inflate(R.menu.menu_view_contact, menu) menu.apply { findItem(R.id.open_with).isVisible = contact?.isPrivate() == false + updateMenuItemColors(this) } return true } @@ -133,12 +140,24 @@ class ViewContactActivity : ContactActivity() { contact_start_call.beVisibleIf(contact!!.phoneNumbers.isNotEmpty()) contact_send_email.beVisibleIf(contact!!.emails.isNotEmpty()) - contact_photo.background = ColorDrawable(config.primaryColor) + val background = resources.getDrawable(R.drawable.contact_circular_background) + background.applyColorFilter(config.primaryColor) + contact_photo.background = background if (contact!!.photoUri.isEmpty() && contact!!.photo == null) { showPhotoPlaceholder(contact_photo) } else { updateContactPhoto(contact!!.photoUri, contact_photo, contact!!.photo) + Glide.with(this).load(contact!!.photo ?: currentContactPhotoPath).into(contact_photo_big) + contact_photo.setOnClickListener { + contact_photo_big.alpha = 0f + contact_photo_big.beVisible() + contact_photo_big.animate().alpha(1f).start() + } + + contact_photo_big.setOnClickListener { + contact_photo_big.animate().alpha(0f).withEndAction { it.beGone() }.start() + } } val textColor = config.textColor @@ -148,6 +167,7 @@ class ViewContactActivity : ContactActivity() { contact_name_image.applyColorFilter(textColor) contact_numbers_image.applyColorFilter(textColor) contact_emails_image.applyColorFilter(textColor) + contact_addresses_image.applyColorFilter(textColor) contact_events_image.applyColorFilter(textColor) contact_source_image.applyColorFilter(textColor) contact_notes_image.applyColorFilter(textColor) @@ -458,7 +478,7 @@ class ViewContactActivity : ContactActivity() { } } - private fun getStarDrawable(on: Boolean) = resources.getDrawable(if (on) R.drawable.ic_star_on_big else R.drawable.ic_star_off_big) + private fun getStarDrawable(on: Boolean) = resources.getDrawable(if (on) R.drawable.ic_star_on_vector else R.drawable.ic_star_off_vector) private fun View.copyOnLongClick(value: String) { setOnLongClickListener { diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/pro/adapters/ContactsAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/pro/adapters/ContactsAdapter.kt index 4b3de60a..1c82ee22 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/pro/adapters/ContactsAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/pro/adapters/ContactsAdapter.kt @@ -20,6 +20,7 @@ import com.simplemobiletools.commons.extensions.beVisibleIf import com.simplemobiletools.commons.extensions.getAdjustedPrimaryColor import com.simplemobiletools.commons.extensions.getColoredDrawableWithColor import com.simplemobiletools.commons.extensions.highlightTextPart +import com.simplemobiletools.commons.helpers.ensureBackgroundThread import com.simplemobiletools.commons.models.RadioItem import com.simplemobiletools.commons.views.FastScroller import com.simplemobiletools.commons.views.MyRecyclerView @@ -51,6 +52,7 @@ class ContactsAdapter(activity: SimpleActivity, var contactItems: ArrayList, highlightText: String = "") { @@ -163,9 +165,9 @@ class ContactsAdapter(activity: SimpleActivity, var contactItems: ArrayList { val options = RequestOptions() @@ -304,9 +312,18 @@ class ContactsAdapter(activity: SimpleActivity, var contactItems: ArrayList { + contact_tmb.setPadding(mediumPadding, mediumPadding, mediumPadding, mediumPadding) + contact_tmb.setImageDrawable(placeholderImage) } - else -> contact_tmb.setImageDrawable(placeholderImage) } } } diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/pro/adapters/GroupsAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/pro/adapters/GroupsAdapter.kt index 1d6f76d6..c3eb0bd2 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/pro/adapters/GroupsAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/pro/adapters/GroupsAdapter.kt @@ -7,6 +7,9 @@ import com.simplemobiletools.commons.adapters.MyRecyclerViewAdapter import com.simplemobiletools.commons.dialogs.ConfirmationDialog import com.simplemobiletools.commons.extensions.applyColorFilter import com.simplemobiletools.commons.extensions.beVisibleIf +import com.simplemobiletools.commons.extensions.getAdjustedPrimaryColor +import com.simplemobiletools.commons.extensions.highlightTextPart +import com.simplemobiletools.commons.helpers.ensureBackgroundThread import com.simplemobiletools.commons.views.FastScroller import com.simplemobiletools.commons.views.MyRecyclerView import com.simplemobiletools.contacts.pro.R @@ -26,7 +29,9 @@ class GroupsAdapter(activity: SimpleActivity, var groups: ArrayList, val private var smallPadding = activity.resources.getDimension(R.dimen.small_margin).toInt() private var bigPadding = activity.resources.getDimension(R.dimen.normal_margin).toInt() + private var textToHighlight = "" + var adjustedPrimaryColor = activity.getAdjustedPrimaryColor() var showContactThumbnails = activity.config.showContactThumbnails init { @@ -75,10 +80,16 @@ class GroupsAdapter(activity: SimpleActivity, var groups: ArrayList, val private fun getItemWithKey(key: Int): Group? = groups.firstOrNull { it.id!!.toInt() == key } - fun updateItems(newItems: ArrayList) { - groups = newItems - notifyDataSetChanged() - finishActMode() + fun updateItems(newItems: ArrayList, highlightText: String = "") { + if (newItems.hashCode() != groups.hashCode()) { + groups = newItems + textToHighlight = highlightText + notifyDataSetChanged() + finishActMode() + } else if (textToHighlight != highlightText) { + textToHighlight = highlightText + notifyDataSetChanged() + } fastScroller?.measureRecyclerView() } @@ -92,9 +103,9 @@ class GroupsAdapter(activity: SimpleActivity, var groups: ArrayList, val private fun askConfirmDelete() { ConfirmationDialog(activity) { - Thread { + ensureBackgroundThread { deleteGroups() - }.start() + } } } @@ -127,9 +138,16 @@ class GroupsAdapter(activity: SimpleActivity, var groups: ArrayList, val private fun setupView(view: View, group: Group) { view.apply { group_frame?.isSelected = selectedKeys.contains(group.id!!.toInt()) + val titleWithCnt = "${group.title} (${group.contactsCount})" + val groupTitle = if (textToHighlight.isEmpty()) { + titleWithCnt + } else { + titleWithCnt.highlightTextPart(textToHighlight, adjustedPrimaryColor) + } + group_name.apply { setTextColor(textColor) - text = String.format(activity.getString(R.string.groups_placeholder), group.title, group.contactsCount.toString()) + text = groupTitle setPadding(if (showContactThumbnails) smallPadding else bigPadding, smallPadding, smallPadding, 0) } diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/pro/adapters/SelectContactsAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/pro/adapters/SelectContactsAdapter.kt index be559a55..eee9bbe5 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/pro/adapters/SelectContactsAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/pro/adapters/SelectContactsAdapter.kt @@ -29,7 +29,7 @@ class SelectContactsAdapter(val activity: SimpleActivity, val contacts: List() private val config = activity.config private val textColor = config.textColor - private val contactDrawable = activity.resources.getColoredDrawableWithColor(R.drawable.ic_person, textColor) + private val contactDrawable = activity.resources.getColoredDrawableWithColor(R.drawable.ic_person_vector, textColor) private val showContactThumbnails = config.showContactThumbnails private val itemLayout = if (config.showPhoneNumbers) R.layout.item_add_favorite_with_number else R.layout.item_add_favorite_without_number diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/pro/dialogs/CreateNewGroupDialog.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/pro/dialogs/CreateNewGroupDialog.kt index a76f57f3..06233246 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/pro/dialogs/CreateNewGroupDialog.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/pro/dialogs/CreateNewGroupDialog.kt @@ -8,10 +8,11 @@ import com.simplemobiletools.commons.extensions.setupDialogStuff import com.simplemobiletools.commons.extensions.showKeyboard import com.simplemobiletools.commons.extensions.toast import com.simplemobiletools.commons.extensions.value +import com.simplemobiletools.commons.helpers.ensureBackgroundThread import com.simplemobiletools.commons.models.RadioItem import com.simplemobiletools.contacts.pro.R +import com.simplemobiletools.contacts.pro.extensions.getPrivateContactSource import com.simplemobiletools.contacts.pro.helpers.ContactsHelper -import com.simplemobiletools.contacts.pro.helpers.SMT_PRIVATE import com.simplemobiletools.contacts.pro.models.ContactSource import com.simplemobiletools.contacts.pro.models.Group import kotlinx.android.synthetic.main.dialog_create_new_group.view.* @@ -36,8 +37,7 @@ class CreateNewGroupDialog(val activity: BaseSimpleActivity, val callback: (newG val contactSources = ArrayList() ContactsHelper(activity).getContactSources { it.filter { it.type.contains("google", true) }.mapTo(contactSources) { ContactSource(it.name, it.type, it.name) } - val phoneSecret = activity.getString(R.string.phone_storage_hidden) - contactSources.add(ContactSource(phoneSecret, SMT_PRIVATE, phoneSecret)) + contactSources.add(activity.getPrivateContactSource()) val items = ArrayList() contactSources.forEachIndexed { index, contactSource -> @@ -61,7 +61,7 @@ class CreateNewGroupDialog(val activity: BaseSimpleActivity, val callback: (newG } private fun createGroupUnder(name: String, contactSource: ContactSource, dialog: AlertDialog) { - Thread { + ensureBackgroundThread { val newGroup = ContactsHelper(activity).createNewGroup(name, contactSource.name, contactSource.type) activity.runOnUiThread { if (newGroup != null) { @@ -69,6 +69,6 @@ class CreateNewGroupDialog(val activity: BaseSimpleActivity, val callback: (newG } dialog.dismiss() } - }.start() + } } } diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/pro/dialogs/ExportContactsDialog.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/pro/dialogs/ExportContactsDialog.kt index a23aed75..c02a4516 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/pro/dialogs/ExportContactsDialog.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/pro/dialogs/ExportContactsDialog.kt @@ -3,18 +3,18 @@ package com.simplemobiletools.contacts.pro.dialogs import android.view.ViewGroup import androidx.appcompat.app.AlertDialog 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.FilterContactSourcesAdapter import com.simplemobiletools.contacts.pro.extensions.getVisibleContactSources import com.simplemobiletools.contacts.pro.helpers.ContactsHelper -import com.simplemobiletools.contacts.pro.helpers.SMT_PRIVATE import com.simplemobiletools.contacts.pro.models.ContactSource import kotlinx.android.synthetic.main.dialog_export_contacts.view.* import java.io.File import java.util.* -class ExportContactsDialog(val activity: SimpleActivity, val path: String, private val callback: (file: File, contactSources: HashSet) -> Unit) { +class ExportContactsDialog(val activity: SimpleActivity, val path: String, private val callback: (file: File, ignoredContactSources: HashSet) -> Unit) { private var contactSources = ArrayList() init { @@ -50,13 +50,12 @@ class ExportContactsDialog(val activity: SimpleActivity, val path: String, priva return@setOnClickListener } - val selectedSources = (view.export_contacts_list.adapter as FilterContactSourcesAdapter).getSelectedContactSources() - val selectedContactSourceNames = HashSet() - selectedSources.forEach { - selectedContactSourceNames.add(if (it.type == SMT_PRIVATE) SMT_PRIVATE else it.name) + ensureBackgroundThread { + val selectedSources = (view.export_contacts_list.adapter as FilterContactSourcesAdapter).getSelectedContactSources() + val ignoredSources = contactSources.filter { !selectedSources.contains(it) }.map { it.getFullIdentifier() }.toHashSet() + callback(file, ignoredSources) + dismiss() } - callback(file, selectedContactSourceNames) - dismiss() } else -> activity.toast(R.string.invalid_name) } diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/pro/dialogs/ImportContactsDialog.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/pro/dialogs/ImportContactsDialog.kt index 131070d3..3640391d 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/pro/dialogs/ImportContactsDialog.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/pro/dialogs/ImportContactsDialog.kt @@ -4,6 +4,7 @@ import android.view.ViewGroup import androidx.appcompat.app.AlertDialog import com.simplemobiletools.commons.extensions.setupDialogStuff import com.simplemobiletools.commons.extensions.toast +import com.simplemobiletools.commons.helpers.ensureBackgroundThread import com.simplemobiletools.contacts.pro.R import com.simplemobiletools.contacts.pro.activities.SimpleActivity import com.simplemobiletools.contacts.pro.extensions.config @@ -41,11 +42,11 @@ class ImportContactsDialog(val activity: SimpleActivity, val path: String, priva activity.setupDialogStuff(view, this, R.string.import_contacts) { getButton(AlertDialog.BUTTON_POSITIVE).setOnClickListener { activity.toast(R.string.importing) - Thread { + ensureBackgroundThread { val result = VcfImporter(activity).importContacts(path, targetContactSource) handleParseResult(result) dismiss() - }.start() + } } } } diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/pro/dialogs/RenameGroupDialog.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/pro/dialogs/RenameGroupDialog.kt index 835bc5e5..2f81ec1c 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/pro/dialogs/RenameGroupDialog.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/pro/dialogs/RenameGroupDialog.kt @@ -3,6 +3,7 @@ package com.simplemobiletools.contacts.pro.dialogs import androidx.appcompat.app.AlertDialog import com.simplemobiletools.commons.activities.BaseSimpleActivity import com.simplemobiletools.commons.extensions.* +import com.simplemobiletools.commons.helpers.ensureBackgroundThread import com.simplemobiletools.contacts.pro.R import com.simplemobiletools.contacts.pro.extensions.groupsDB import com.simplemobiletools.contacts.pro.helpers.ContactsHelper @@ -35,7 +36,7 @@ class RenameGroupDialog(val activity: BaseSimpleActivity, val group: Group, val } group.title = newTitle - Thread { + ensureBackgroundThread { if (group.isPrivateSecretGroup()) { activity.groupsDB.insertOrUpdate(group) } else { @@ -45,7 +46,7 @@ class RenameGroupDialog(val activity: BaseSimpleActivity, val group: Group, val callback() dismiss() } - }.start() + } } } } diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/pro/dialogs/SelectContactsDialog.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/pro/dialogs/SelectContactsDialog.kt index 16872932..5e93f5a0 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/pro/dialogs/SelectContactsDialog.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/pro/dialogs/SelectContactsDialog.kt @@ -3,6 +3,7 @@ package com.simplemobiletools.contacts.pro.dialogs import androidx.appcompat.app.AlertDialog import com.simplemobiletools.commons.extensions.baseConfig import com.simplemobiletools.commons.extensions.setupDialogStuff +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 @@ -45,13 +46,13 @@ class SelectContactsDialog(val activity: SimpleActivity, initialContacts: ArrayL } private fun dialogConfirmed() { - Thread { + ensureBackgroundThread { val adapter = view?.select_contact_list?.adapter as? SelectContactsAdapter val selectedContacts = adapter?.getSelectedItemsSet()?.toList() ?: ArrayList() val newlySelectedContacts = selectedContacts.filter { !initiallySelectedContacts.contains(it) } as ArrayList val unselectedContacts = initiallySelectedContacts.filter { !selectedContacts.contains(it) } as ArrayList callback(newlySelectedContacts, unselectedContacts) - }.start() + } } } diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/pro/extensions/Context.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/pro/extensions/Context.kt index 1b307d40..e505e4ed 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/pro/extensions/Context.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/pro/extensions/Context.kt @@ -15,10 +15,7 @@ import android.provider.ContactsContract import android.telecom.TelecomManager import androidx.core.content.FileProvider 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.isMarshmallowPlus -import com.simplemobiletools.commons.helpers.isNougatPlus +import com.simplemobiletools.commons.helpers.* import com.simplemobiletools.contacts.pro.BuildConfig import com.simplemobiletools.contacts.pro.R import com.simplemobiletools.contacts.pro.activities.EditContactActivity @@ -199,7 +196,7 @@ fun Context.getPublicContactSource(source: String, callback: (String) -> Unit) { when (source) { SMT_PRIVATE -> callback(getString(R.string.phone_storage_hidden)) else -> { - Thread { + ensureBackgroundThread { ContactsHelper(this).getContactSources { var newSource = source for (contactSource in it) { @@ -212,7 +209,7 @@ fun Context.getPublicContactSource(source: String, callback: (String) -> Unit) { callback(newSource) } } - }.start() + } } } } @@ -304,13 +301,16 @@ fun Context.getContactPublicUri(contact: Contact): Uri { } fun Context.getVisibleContactSources(): ArrayList { - val sources = ContactsHelper(this).getDeviceContactSources() - val phoneSecret = getString(R.string.phone_storage_hidden) - sources.add(ContactSource(phoneSecret, SMT_PRIVATE, phoneSecret)) + val sources = getAllContactSources() val ignoredContactSources = config.ignoredContactSources - val sourceNames = ArrayList(sources).filter { !ignoredContactSources.contains(it.getFullIdentifier()) } - .map { if (it.type == SMT_PRIVATE) SMT_PRIVATE else it.name }.toMutableList() as ArrayList - return sourceNames + return ArrayList(sources).filter { !ignoredContactSources.contains(it.getFullIdentifier()) } + .map { it.name }.toMutableList() as ArrayList +} + +fun Context.getAllContactSources(): List { + val sources = ContactsHelper(this).getDeviceContactSources() + sources.add(getPrivateContactSource()) + return sources.toMutableList() } @TargetApi(Build.VERSION_CODES.N) @@ -368,3 +368,5 @@ fun Context.deleteBlockedNumber(number: String) { @TargetApi(Build.VERSION_CODES.M) fun Context.isDefaultDialer() = isMarshmallowPlus() && telecomManager.defaultDialerPackage == packageName + +fun Context.getPrivateContactSource() = ContactSource(SMT_PRIVATE, SMT_PRIVATE, getString(R.string.phone_storage_hidden)) diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/pro/fragments/MyViewPagerFragment.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/pro/fragments/MyViewPagerFragment.kt index 27446be4..d5a30aef 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/pro/fragments/MyViewPagerFragment.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/pro/fragments/MyViewPagerFragment.kt @@ -29,6 +29,7 @@ abstract class MyViewPagerFragment(context: Context, attributeSet: AttributeSet) private var lastHashCode = 0 private var contactsIgnoringSearch = ArrayList() + private var groupsIgnoringSearch = ArrayList() private lateinit var config: Config var skipHashComparing = false @@ -78,6 +79,10 @@ abstract class MyViewPagerFragment(context: Context, attributeSet: AttributeSet) (fragment_list.adapter as? ContactsAdapter)?.apply { adjustedPrimaryColor = context.getAdjustedPrimaryColor() } + + (fragment_list.adapter as? GroupsAdapter)?.apply { + adjustedPrimaryColor = context.getAdjustedPrimaryColor() + } } fun startNameWithSurnameChanged(startNameWithSurname: Boolean) { @@ -130,6 +135,8 @@ abstract class MyViewPagerFragment(context: Context, attributeSet: AttributeSet) if (this is ContactsFragment || this is FavoritesFragment) { contactsIgnoringSearch = (fragment_list?.adapter as? ContactsAdapter)?.contactItems ?: ArrayList() + } else if (this is GroupsFragment) { + groupsIgnoringSearch = (fragment_list?.adapter as? GroupsAdapter)?.groups ?: ArrayList() } } @@ -177,7 +184,7 @@ abstract class MyViewPagerFragment(context: Context, attributeSet: AttributeSet) } private fun setupContactsFavoritesAdapter(contacts: ArrayList) { - setupViewVisibility(contacts) + setupViewVisibility(contacts.isNotEmpty()) val currAdapter = fragment_list.adapter if (currAdapter == null || forceListRedraw) { forceListRedraw = false @@ -227,9 +234,10 @@ abstract class MyViewPagerFragment(context: Context, attributeSet: AttributeSet) } fun onSearchQueryChanged(text: String) { - val shouldNormalize = text.normalizeString() == text - val convertLetters = config.showDialpadLetters - (fragment_list.adapter as? ContactsAdapter)?.apply { + val adapter = fragment_list.adapter + if (adapter is ContactsAdapter) { + val shouldNormalize = text.normalizeString() == text + val convertLetters = config.showDialpadLetters val filtered = contactsIgnoringSearch.filter { getProperText(it.getNameToDisplay(), shouldNormalize).contains(text, true) || getProperText(it.nickname, shouldNormalize).contains(text, true) || @@ -249,11 +257,22 @@ abstract class MyViewPagerFragment(context: Context, attributeSet: AttributeSet) } if (filtered.isEmpty() && this@MyViewPagerFragment is FavoritesFragment) { - fragment_placeholder.text = activity.getString(R.string.no_items_found) + fragment_placeholder.text = activity?.getString(R.string.no_items_found) } fragment_placeholder.beVisibleIf(filtered.isEmpty()) - updateItems(filtered, text.normalizeString()) + (adapter as? ContactsAdapter)?.updateItems(filtered, text.normalizeString()) + } else if (adapter is GroupsAdapter) { + val filtered = groupsIgnoringSearch.filter { + it.title.contains(text, true) + } as ArrayList + + if (filtered.isEmpty()) { + fragment_placeholder.text = activity?.getString(R.string.no_items_found) + } + + fragment_placeholder.beVisibleIf(filtered.isEmpty()) + (adapter as? GroupsAdapter)?.updateItems(filtered, text) } } @@ -261,11 +280,17 @@ abstract class MyViewPagerFragment(context: Context, attributeSet: AttributeSet) fun onSearchOpened() { contactsIgnoringSearch = (fragment_list?.adapter as? ContactsAdapter)?.contactItems ?: ArrayList() + groupsIgnoringSearch = (fragment_list?.adapter as? GroupsAdapter)?.groups ?: ArrayList() } fun onSearchClosed() { - (fragment_list.adapter as? ContactsAdapter)?.updateItems(contactsIgnoringSearch) - setupViewVisibility(contactsIgnoringSearch) + if (fragment_list.adapter is ContactsAdapter) { + (fragment_list.adapter as? ContactsAdapter)?.updateItems(contactsIgnoringSearch) + setupViewVisibility(contactsIgnoringSearch.isNotEmpty()) + } else if (fragment_list.adapter is GroupsAdapter) { + (fragment_list.adapter as? GroupsAdapter)?.updateItems(groupsIgnoringSearch) + setupViewVisibility(groupsIgnoringSearch.isNotEmpty()) + } if (this is FavoritesFragment) { fragment_placeholder.text = activity?.getString(R.string.no_favorites) @@ -279,10 +304,10 @@ abstract class MyViewPagerFragment(context: Context, attributeSet: AttributeSet) fragment_placeholder_2.setTextColor(context.getAdjustedPrimaryColor()) } - private fun setupViewVisibility(contacts: ArrayList) { - fragment_placeholder_2.beVisibleIf(contacts.isEmpty()) - fragment_placeholder.beVisibleIf(contacts.isEmpty()) - fragment_list.beVisibleIf(contacts.isNotEmpty()) + private fun setupViewVisibility(hasItemsToShow: Boolean) { + fragment_placeholder_2.beVisibleIf(!hasItemsToShow) + fragment_placeholder.beVisibleIf(!hasItemsToShow) + fragment_list.beVisibleIf(hasItemsToShow) } abstract fun fabClicked() diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/pro/helpers/ContactsHelper.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/pro/helpers/ContactsHelper.kt index e07326b0..468980a0 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/pro/helpers/ContactsHelper.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/pro/helpers/ContactsHelper.kt @@ -28,11 +28,17 @@ class ContactsHelper(val context: Context) { private val BATCH_SIZE = 100 private var displayContactSources = ArrayList() - fun getContacts(callback: (ArrayList) -> Unit) { - Thread { + fun getContacts(ignoredContactSources: HashSet = HashSet(), callback: (ArrayList) -> Unit) { + ensureBackgroundThread { val contacts = SparseArray() displayContactSources = context.getVisibleContactSources() - getDeviceContacts(contacts) + if (ignoredContactSources.isNotEmpty()) { + displayContactSources = context.getAllContactSources().filter { + it.getFullIdentifier().isNotEmpty() && !ignoredContactSources.contains(it.getFullIdentifier()) + }.map { it.getFullIdentifier() }.toMutableList() as ArrayList + } + + getDeviceContacts(contacts, ignoredContactSources) if (displayContactSources.contains(SMT_PRIVATE)) { LocalContactsHelper(context).getAllContacts().forEach { @@ -46,7 +52,7 @@ class ContactsHelper(val context: Context) { val resultContacts = ArrayList(contactsSize) (0 until contactsSize).filter { - if (showOnlyContactsWithNumbers) { + if (ignoredContactSources.isEmpty() && showOnlyContactsWithNumbers) { contacts.valueAt(it).phoneNumbers.isNotEmpty() } else { true @@ -55,7 +61,7 @@ class ContactsHelper(val context: Context) { contacts.valueAt(it) } - if (context.config.filterDuplicates) { + if (ignoredContactSources.isEmpty() && context.config.filterDuplicates) { tempContacts = tempContacts.distinctBy { it.getHashToCompare() } as ArrayList @@ -87,17 +93,24 @@ class ContactsHelper(val context: Context) { Handler(Looper.getMainLooper()).post { callback(resultContacts) } - }.start() + } } private fun getContentResolverAccounts(): HashSet { - val uri = ContactsContract.Data.CONTENT_URI + val sources = HashSet() + arrayOf(ContactsContract.Groups.CONTENT_URI, ContactsContract.Settings.CONTENT_URI, ContactsContract.RawContacts.CONTENT_URI).forEach { + fillSourcesFromUri(it, sources) + } + + return sources + } + + private fun fillSourcesFromUri(uri: Uri, sources: HashSet) { val projection = arrayOf( ContactsContract.RawContacts.ACCOUNT_NAME, ContactsContract.RawContacts.ACCOUNT_TYPE ) - val sources = HashSet() var cursor: Cursor? = null try { cursor = context.contentResolver.query(uri, projection, null, null, null) @@ -118,16 +131,14 @@ class ContactsHelper(val context: Context) { } finally { cursor?.close() } - - return sources } - private fun getDeviceContacts(contacts: SparseArray) { + private fun getDeviceContacts(contacts: SparseArray, ignoredContactSources: HashSet?) { if (!context.hasContactPermissions()) { return } - val ignoredSources = context.config.ignoredContactSources + val ignoredSources = ignoredContactSources ?: context.config.ignoredContactSources val uri = ContactsContract.Data.CONTENT_URI val projection = getContactProjection() @@ -656,12 +667,12 @@ class ContactsHelper(val context: Context) { } fun getStoredGroups(callback: (ArrayList) -> Unit) { - Thread { + ensureBackgroundThread { val groups = getStoredGroupsSync() Handler(Looper.getMainLooper()).post { callback(groups) } - }.start() + } } fun getStoredGroupsSync(): ArrayList { @@ -827,15 +838,14 @@ class ContactsHelper(val context: Context) { } fun getContactSources(callback: (ArrayList) -> Unit) { - Thread { + ensureBackgroundThread { callback(getContactSourcesSync()) - }.start() + } } private fun getContactSourcesSync(): ArrayList { val sources = getDeviceContactSources() - val phoneSecret = context.getString(R.string.phone_storage_hidden) - sources.add(ContactSource(phoneSecret, SMT_PRIVATE, phoneSecret)) + sources.add(context.getPrivateContactSource()) return ArrayList(sources) } @@ -1239,7 +1249,8 @@ class ContactsHelper(val context: Context) { ContentProviderOperation.newInsert(ContactsContract.RawContacts.CONTENT_URI).apply { withValue(ContactsContract.RawContacts.ACCOUNT_NAME, contact.source) withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, getContactSourceType(contact.source)) - withValue(ContactsContract.RawContacts.DIRTY, 1) + withValue(ContactsContract.RawContacts.DIRTY, 0) + withValue(ContactsContract.RawContacts.DELETED, 0) operations.add(build()) } @@ -1465,21 +1476,21 @@ class ContactsHelper(val context: Context) { } fun addFavorites(contacts: ArrayList) { - Thread { + ensureBackgroundThread { toggleLocalFavorites(contacts, true) if (context.hasContactPermissions()) { toggleFavorites(contacts, true) } - }.start() + } } fun removeFavorites(contacts: ArrayList) { - Thread { + ensureBackgroundThread { toggleLocalFavorites(contacts, false) if (context.hasContactPermissions()) { toggleFavorites(contacts, false) } - }.start() + } } private fun toggleFavorites(contacts: ArrayList, addToFavorites: Boolean) { @@ -1509,13 +1520,13 @@ class ContactsHelper(val context: Context) { } fun deleteContact(contact: Contact) { - Thread { + ensureBackgroundThread { if (contact.isPrivate()) { context.contactsDB.deleteContactId(contact.id) } else { deleteContacts(arrayListOf(contact)) } - }.start() + } } fun deleteContacts(contacts: ArrayList) { diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/pro/helpers/LocalContactsHelper.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/pro/helpers/LocalContactsHelper.kt index 54045fa3..b67b2405 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/pro/helpers/LocalContactsHelper.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/pro/helpers/LocalContactsHelper.kt @@ -117,6 +117,12 @@ class LocalContactsHelper(val context: Context) { } private fun convertContactToLocalContact(contact: Contact): LocalContact { + val photoByteArray = if (contact.photoUri.isNotEmpty()) { + getPhotoByteArray(contact.photoUri) + } else { + contact.photo?.getByteArray() + } + return getEmptyLocalContact().apply { id = if (contact.id == 0) null else contact.id prefix = contact.prefix @@ -125,7 +131,7 @@ class LocalContactsHelper(val context: Context) { surname = contact.surname suffix = contact.suffix nickname = contact.nickname - photo = getPhotoByteArray(contact.photoUri) + photo = photoByteArray phoneNumbers = contact.phoneNumbers emails = contact.emails events = contact.events diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/pro/helpers/VcfExporter.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/pro/helpers/VcfExporter.kt index 0fc41e3b..eb36d4dd 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/pro/helpers/VcfExporter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/pro/helpers/VcfExporter.kt @@ -30,7 +30,7 @@ class VcfExporter { private var contactsFailed = 0 fun exportContacts(activity: BaseSimpleActivity, file: File, contacts: ArrayList, showExportingToast: Boolean, callback: (result: ExportResult) -> Unit) { - activity.getFileOutputStream(file.toFileDirItem(activity), true) { + activity.getFileOutputStream(file.toFileDirItem(), true) { try { if (it == null) { callback(EXPORT_FAIL) diff --git a/app/src/main/res/drawable-hdpi/ic_account_box.png b/app/src/main/res/drawable-hdpi/ic_account_box.png deleted file mode 100644 index 3f688122..00000000 Binary files a/app/src/main/res/drawable-hdpi/ic_account_box.png and /dev/null differ diff --git a/app/src/main/res/drawable-hdpi/ic_block.png b/app/src/main/res/drawable-hdpi/ic_block.png deleted file mode 100644 index 1c541fe5..00000000 Binary files a/app/src/main/res/drawable-hdpi/ic_block.png and /dev/null differ diff --git a/app/src/main/res/drawable-hdpi/ic_business.png b/app/src/main/res/drawable-hdpi/ic_business.png deleted file mode 100644 index d10ebb76..00000000 Binary files a/app/src/main/res/drawable-hdpi/ic_business.png and /dev/null differ diff --git a/app/src/main/res/drawable-hdpi/ic_cake.png b/app/src/main/res/drawable-hdpi/ic_cake.png deleted file mode 100644 index 989a999b..00000000 Binary files a/app/src/main/res/drawable-hdpi/ic_cake.png and /dev/null differ diff --git a/app/src/main/res/drawable-hdpi/ic_clear_char.png b/app/src/main/res/drawable-hdpi/ic_clear_char.png deleted file mode 100644 index 3fd9c535..00000000 Binary files a/app/src/main/res/drawable-hdpi/ic_clear_char.png and /dev/null differ diff --git a/app/src/main/res/drawable-hdpi/ic_clock.png b/app/src/main/res/drawable-hdpi/ic_clock.png deleted file mode 100644 index 43b00e0a..00000000 Binary files a/app/src/main/res/drawable-hdpi/ic_clock.png and /dev/null differ diff --git a/app/src/main/res/drawable-hdpi/ic_dialpad.png b/app/src/main/res/drawable-hdpi/ic_dialpad.png deleted file mode 100644 index f600b5b7..00000000 Binary files a/app/src/main/res/drawable-hdpi/ic_dialpad.png and /dev/null differ diff --git a/app/src/main/res/drawable-hdpi/ic_group.png b/app/src/main/res/drawable-hdpi/ic_group.png deleted file mode 100644 index ff698afc..00000000 Binary files a/app/src/main/res/drawable-hdpi/ic_group.png and /dev/null differ diff --git a/app/src/main/res/drawable-hdpi/ic_group_add.png b/app/src/main/res/drawable-hdpi/ic_group_add.png deleted file mode 100644 index af01bae4..00000000 Binary files a/app/src/main/res/drawable-hdpi/ic_group_add.png and /dev/null differ diff --git a/app/src/main/res/drawable-hdpi/ic_link.png b/app/src/main/res/drawable-hdpi/ic_link.png deleted file mode 100644 index cf0ce383..00000000 Binary files a/app/src/main/res/drawable-hdpi/ic_link.png and /dev/null differ diff --git a/app/src/main/res/drawable-hdpi/ic_new_contact.png b/app/src/main/res/drawable-hdpi/ic_new_contact.png deleted file mode 100644 index ded0ae92..00000000 Binary files a/app/src/main/res/drawable-hdpi/ic_new_contact.png and /dev/null differ diff --git a/app/src/main/res/drawable-hdpi/ic_phone.png b/app/src/main/res/drawable-hdpi/ic_phone.png deleted file mode 100644 index 3421fffe..00000000 Binary files a/app/src/main/res/drawable-hdpi/ic_phone.png and /dev/null differ diff --git a/app/src/main/res/drawable-hdpi/ic_phone_huge.png b/app/src/main/res/drawable-hdpi/ic_phone_huge.png deleted file mode 100644 index 61d59bd4..00000000 Binary files a/app/src/main/res/drawable-hdpi/ic_phone_huge.png and /dev/null differ diff --git a/app/src/main/res/drawable-xhdpi/ic_account_box.png b/app/src/main/res/drawable-xhdpi/ic_account_box.png deleted file mode 100644 index cc0ec8b2..00000000 Binary files a/app/src/main/res/drawable-xhdpi/ic_account_box.png and /dev/null differ diff --git a/app/src/main/res/drawable-xhdpi/ic_block.png b/app/src/main/res/drawable-xhdpi/ic_block.png deleted file mode 100644 index ae3856fe..00000000 Binary files a/app/src/main/res/drawable-xhdpi/ic_block.png and /dev/null differ diff --git a/app/src/main/res/drawable-xhdpi/ic_business.png b/app/src/main/res/drawable-xhdpi/ic_business.png deleted file mode 100644 index e5630455..00000000 Binary files a/app/src/main/res/drawable-xhdpi/ic_business.png and /dev/null differ diff --git a/app/src/main/res/drawable-xhdpi/ic_cake.png b/app/src/main/res/drawable-xhdpi/ic_cake.png deleted file mode 100644 index 6e8f140f..00000000 Binary files a/app/src/main/res/drawable-xhdpi/ic_cake.png and /dev/null differ diff --git a/app/src/main/res/drawable-xhdpi/ic_clear_char.png b/app/src/main/res/drawable-xhdpi/ic_clear_char.png deleted file mode 100644 index b51790d1..00000000 Binary files a/app/src/main/res/drawable-xhdpi/ic_clear_char.png and /dev/null differ diff --git a/app/src/main/res/drawable-xhdpi/ic_clock.png b/app/src/main/res/drawable-xhdpi/ic_clock.png deleted file mode 100644 index 9d64be88..00000000 Binary files a/app/src/main/res/drawable-xhdpi/ic_clock.png and /dev/null differ diff --git a/app/src/main/res/drawable-xhdpi/ic_dialpad.png b/app/src/main/res/drawable-xhdpi/ic_dialpad.png deleted file mode 100644 index 793da560..00000000 Binary files a/app/src/main/res/drawable-xhdpi/ic_dialpad.png and /dev/null differ diff --git a/app/src/main/res/drawable-xhdpi/ic_group.png b/app/src/main/res/drawable-xhdpi/ic_group.png deleted file mode 100644 index 323981cc..00000000 Binary files a/app/src/main/res/drawable-xhdpi/ic_group.png and /dev/null differ diff --git a/app/src/main/res/drawable-xhdpi/ic_group_add.png b/app/src/main/res/drawable-xhdpi/ic_group_add.png deleted file mode 100644 index a769931c..00000000 Binary files a/app/src/main/res/drawable-xhdpi/ic_group_add.png and /dev/null differ diff --git a/app/src/main/res/drawable-xhdpi/ic_link.png b/app/src/main/res/drawable-xhdpi/ic_link.png deleted file mode 100644 index 302e5d78..00000000 Binary files a/app/src/main/res/drawable-xhdpi/ic_link.png and /dev/null differ diff --git a/app/src/main/res/drawable-xhdpi/ic_new_contact.png b/app/src/main/res/drawable-xhdpi/ic_new_contact.png deleted file mode 100644 index 5637f091..00000000 Binary files a/app/src/main/res/drawable-xhdpi/ic_new_contact.png and /dev/null differ diff --git a/app/src/main/res/drawable-xhdpi/ic_phone.png b/app/src/main/res/drawable-xhdpi/ic_phone.png deleted file mode 100644 index 685efe22..00000000 Binary files a/app/src/main/res/drawable-xhdpi/ic_phone.png and /dev/null differ diff --git a/app/src/main/res/drawable-xhdpi/ic_phone_huge.png b/app/src/main/res/drawable-xhdpi/ic_phone_huge.png deleted file mode 100644 index 3aae5d70..00000000 Binary files a/app/src/main/res/drawable-xhdpi/ic_phone_huge.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxhdpi/ic_account_box.png b/app/src/main/res/drawable-xxhdpi/ic_account_box.png deleted file mode 100644 index 1323e97e..00000000 Binary files a/app/src/main/res/drawable-xxhdpi/ic_account_box.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxhdpi/ic_block.png b/app/src/main/res/drawable-xxhdpi/ic_block.png deleted file mode 100644 index d6dc2222..00000000 Binary files a/app/src/main/res/drawable-xxhdpi/ic_block.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxhdpi/ic_business.png b/app/src/main/res/drawable-xxhdpi/ic_business.png deleted file mode 100644 index 7dfc8dc5..00000000 Binary files a/app/src/main/res/drawable-xxhdpi/ic_business.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxhdpi/ic_cake.png b/app/src/main/res/drawable-xxhdpi/ic_cake.png deleted file mode 100644 index 56ad5ad8..00000000 Binary files a/app/src/main/res/drawable-xxhdpi/ic_cake.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxhdpi/ic_clear_char.png b/app/src/main/res/drawable-xxhdpi/ic_clear_char.png deleted file mode 100644 index e049a108..00000000 Binary files a/app/src/main/res/drawable-xxhdpi/ic_clear_char.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxhdpi/ic_clock.png b/app/src/main/res/drawable-xxhdpi/ic_clock.png deleted file mode 100644 index a29eea53..00000000 Binary files a/app/src/main/res/drawable-xxhdpi/ic_clock.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxhdpi/ic_dialpad.png b/app/src/main/res/drawable-xxhdpi/ic_dialpad.png deleted file mode 100644 index 1f6bf856..00000000 Binary files a/app/src/main/res/drawable-xxhdpi/ic_dialpad.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxhdpi/ic_group.png b/app/src/main/res/drawable-xxhdpi/ic_group.png deleted file mode 100644 index 6c68435f..00000000 Binary files a/app/src/main/res/drawable-xxhdpi/ic_group.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxhdpi/ic_group_add.png b/app/src/main/res/drawable-xxhdpi/ic_group_add.png deleted file mode 100644 index f4acdf46..00000000 Binary files a/app/src/main/res/drawable-xxhdpi/ic_group_add.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxhdpi/ic_link.png b/app/src/main/res/drawable-xxhdpi/ic_link.png deleted file mode 100644 index 6845cbba..00000000 Binary files a/app/src/main/res/drawable-xxhdpi/ic_link.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxhdpi/ic_new_contact.png b/app/src/main/res/drawable-xxhdpi/ic_new_contact.png deleted file mode 100644 index d33121aa..00000000 Binary files a/app/src/main/res/drawable-xxhdpi/ic_new_contact.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxhdpi/ic_phone.png b/app/src/main/res/drawable-xxhdpi/ic_phone.png deleted file mode 100644 index 61d59bd4..00000000 Binary files a/app/src/main/res/drawable-xxhdpi/ic_phone.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxhdpi/ic_phone_huge.png b/app/src/main/res/drawable-xxhdpi/ic_phone_huge.png deleted file mode 100644 index aaa1b757..00000000 Binary files a/app/src/main/res/drawable-xxhdpi/ic_phone_huge.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxxhdpi/ic_account_box.png b/app/src/main/res/drawable-xxxhdpi/ic_account_box.png deleted file mode 100644 index a921af0e..00000000 Binary files a/app/src/main/res/drawable-xxxhdpi/ic_account_box.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxxhdpi/ic_block.png b/app/src/main/res/drawable-xxxhdpi/ic_block.png deleted file mode 100644 index 9f1191c9..00000000 Binary files a/app/src/main/res/drawable-xxxhdpi/ic_block.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxxhdpi/ic_business.png b/app/src/main/res/drawable-xxxhdpi/ic_business.png deleted file mode 100644 index c9aea72c..00000000 Binary files a/app/src/main/res/drawable-xxxhdpi/ic_business.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxxhdpi/ic_cake.png b/app/src/main/res/drawable-xxxhdpi/ic_cake.png deleted file mode 100644 index 0867a261..00000000 Binary files a/app/src/main/res/drawable-xxxhdpi/ic_cake.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxxhdpi/ic_clear_char.png b/app/src/main/res/drawable-xxxhdpi/ic_clear_char.png deleted file mode 100644 index ea552fd3..00000000 Binary files a/app/src/main/res/drawable-xxxhdpi/ic_clear_char.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxxhdpi/ic_clock.png b/app/src/main/res/drawable-xxxhdpi/ic_clock.png deleted file mode 100644 index bfd0dc3e..00000000 Binary files a/app/src/main/res/drawable-xxxhdpi/ic_clock.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxxhdpi/ic_dialpad.png b/app/src/main/res/drawable-xxxhdpi/ic_dialpad.png deleted file mode 100644 index 7754a7c9..00000000 Binary files a/app/src/main/res/drawable-xxxhdpi/ic_dialpad.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxxhdpi/ic_group.png b/app/src/main/res/drawable-xxxhdpi/ic_group.png deleted file mode 100644 index 5676f704..00000000 Binary files a/app/src/main/res/drawable-xxxhdpi/ic_group.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxxhdpi/ic_group_add.png b/app/src/main/res/drawable-xxxhdpi/ic_group_add.png deleted file mode 100644 index fadcc0f9..00000000 Binary files a/app/src/main/res/drawable-xxxhdpi/ic_group_add.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxxhdpi/ic_link.png b/app/src/main/res/drawable-xxxhdpi/ic_link.png deleted file mode 100644 index 2f793953..00000000 Binary files a/app/src/main/res/drawable-xxxhdpi/ic_link.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxxhdpi/ic_new_contact.png b/app/src/main/res/drawable-xxxhdpi/ic_new_contact.png deleted file mode 100644 index 07435b94..00000000 Binary files a/app/src/main/res/drawable-xxxhdpi/ic_new_contact.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxxhdpi/ic_phone.png b/app/src/main/res/drawable-xxxhdpi/ic_phone.png deleted file mode 100644 index 3aae5d70..00000000 Binary files a/app/src/main/res/drawable-xxxhdpi/ic_phone.png and /dev/null differ diff --git a/app/src/main/res/drawable-xxxhdpi/ic_phone_huge.png b/app/src/main/res/drawable-xxxhdpi/ic_phone_huge.png deleted file mode 100644 index 707350b0..00000000 Binary files a/app/src/main/res/drawable-xxxhdpi/ic_phone_huge.png and /dev/null differ diff --git a/app/src/main/res/drawable/contact_circular_background.xml b/app/src/main/res/drawable/contact_circular_background.xml new file mode 100644 index 00000000..bd3dc800 --- /dev/null +++ b/app/src/main/res/drawable/contact_circular_background.xml @@ -0,0 +1,7 @@ + + + + + diff --git a/app/src/main/res/drawable/ic_account_box_vector.xml b/app/src/main/res/drawable/ic_account_box_vector.xml new file mode 100644 index 00000000..751db47d --- /dev/null +++ b/app/src/main/res/drawable/ic_account_box_vector.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_backspace_vector.xml b/app/src/main/res/drawable/ic_backspace_vector.xml new file mode 100644 index 00000000..06dbed70 --- /dev/null +++ b/app/src/main/res/drawable/ic_backspace_vector.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_business_vector.xml b/app/src/main/res/drawable/ic_business_vector.xml new file mode 100644 index 00000000..9da2fe87 --- /dev/null +++ b/app/src/main/res/drawable/ic_business_vector.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_cake_vector.xml b/app/src/main/res/drawable/ic_cake_vector.xml new file mode 100644 index 00000000..acceada8 --- /dev/null +++ b/app/src/main/res/drawable/ic_cake_vector.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_dialpad_vector.xml b/app/src/main/res/drawable/ic_dialpad_vector.xml new file mode 100644 index 00000000..e5b16ae3 --- /dev/null +++ b/app/src/main/res/drawable/ic_dialpad_vector.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_group_add_vector.xml b/app/src/main/res/drawable/ic_group_add_vector.xml new file mode 100644 index 00000000..fe6e21bb --- /dev/null +++ b/app/src/main/res/drawable/ic_group_add_vector.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_group_vector.xml b/app/src/main/res/drawable/ic_group_vector.xml new file mode 100644 index 00000000..120218d2 --- /dev/null +++ b/app/src/main/res/drawable/ic_group_vector.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_link_vector.xml b/app/src/main/res/drawable/ic_link_vector.xml new file mode 100644 index 00000000..8e04bd9e --- /dev/null +++ b/app/src/main/res/drawable/ic_link_vector.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/ic_new_contact_vector.xml b/app/src/main/res/drawable/ic_new_contact_vector.xml new file mode 100644 index 00000000..b51c33ae --- /dev/null +++ b/app/src/main/res/drawable/ic_new_contact_vector.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable/shortcut_dialpad.xml b/app/src/main/res/drawable/shortcut_dialpad.xml new file mode 100644 index 00000000..e92c7d47 --- /dev/null +++ b/app/src/main/res/drawable/shortcut_dialpad.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + diff --git a/app/src/main/res/layout/activity_dialpad.xml b/app/src/main/res/layout/activity_dialpad.xml index 721bab1f..8b33cc01 100644 --- a/app/src/main/res/layout/activity_dialpad.xml +++ b/app/src/main/res/layout/activity_dialpad.xml @@ -27,7 +27,7 @@ android:paddingStart="@dimen/normal_margin" android:paddingLeft="@dimen/normal_margin" app:layout_constraintBottom_toBottomOf="@+id/dialpad_list" - app:layout_constraintRight_toRightOf="parent" + app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toTopOf="@+id/dialpad_list"> @@ -45,7 +45,7 @@ android:id="@+id/dialpad_input" android:layout_width="0dp" android:layout_height="wrap_content" - android:layout_marginLeft="@dimen/activity_margin" + android:layout_marginStart="@dimen/activity_margin" android:gravity="center" android:inputType="phone" android:textCursorDrawable="@null" @@ -58,11 +58,11 @@ android:id="@+id/dialpad_clear_char" android:layout_width="wrap_content" android:layout_height="0dp" - android:layout_marginRight="@dimen/activity_margin" + android:layout_marginEnd="@dimen/activity_margin" android:background="?attr/selectableItemBackgroundBorderless" - android:paddingLeft="@dimen/activity_margin" - android:paddingRight="@dimen/activity_margin" - android:src="@drawable/ic_clear_char" + android:paddingStart="@dimen/activity_margin" + android:paddingEnd="@dimen/activity_margin" + android:src="@drawable/ic_backspace_vector" app:layout_constraintBottom_toBottomOf="@+id/dialpad_input" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toTopOf="@+id/dialpad_input"/> @@ -72,7 +72,7 @@ style="@style/DialpadNumberStyle" android:layout_width="0dp" android:layout_height="wrap_content" - android:layout_marginLeft="@dimen/activity_margin" + android:layout_marginStart="@dimen/activity_margin" android:text="1" app:layout_constraintBottom_toTopOf="@+id/dialpad_4" app:layout_constraintEnd_toStartOf="@+id/dialpad_2" @@ -130,7 +130,7 @@ style="@style/DialpadNumberStyle" android:layout_width="0dp" android:layout_height="wrap_content" - android:layout_marginLeft="@dimen/activity_margin" + android:layout_marginStart="@dimen/activity_margin" android:text="4" app:layout_constraintBottom_toTopOf="@+id/dialpad_7" app:layout_constraintEnd_toStartOf="@+id/dialpad_5" @@ -142,7 +142,7 @@ style="@style/DialpadLetterStyle" android:layout_width="0dp" android:layout_height="wrap_content" - android:layout_marginLeft="@dimen/activity_margin" + android:layout_marginStart="@dimen/activity_margin" android:text="GHI" app:layout_constraintBottom_toTopOf="@+id/dialpad_7" app:layout_constraintEnd_toStartOf="@+id/dialpad_5" @@ -200,7 +200,7 @@ style="@style/DialpadNumberStyle" android:layout_width="0dp" android:layout_height="wrap_content" - android:layout_marginLeft="@dimen/activity_margin" + android:layout_marginStart="@dimen/activity_margin" android:text="7" app:layout_constraintBottom_toTopOf="@+id/dialpad_asterisk" app:layout_constraintEnd_toStartOf="@+id/dialpad_8" @@ -212,7 +212,7 @@ style="@style/DialpadLetterStyle" android:layout_width="0dp" android:layout_height="wrap_content" - android:layout_marginLeft="@dimen/activity_margin" + android:layout_marginStart="@dimen/activity_margin" android:text="PQRS" app:layout_constraintBottom_toTopOf="@+id/dialpad_asterisk" app:layout_constraintEnd_toStartOf="@+id/dialpad_8" @@ -246,7 +246,7 @@ style="@style/DialpadNumberStyle" android:layout_width="0dp" android:layout_height="wrap_content" - android:layout_marginRight="@dimen/activity_margin" + android:layout_marginEnd="@dimen/activity_margin" android:text="9" app:layout_constraintBottom_toTopOf="@+id/dialpad_hashtag" app:layout_constraintEnd_toEndOf="parent" @@ -258,7 +258,7 @@ style="@style/DialpadLetterStyle" android:layout_width="0dp" android:layout_height="wrap_content" - android:layout_marginRight="@dimen/activity_margin" + android:layout_marginEnd="@dimen/activity_margin" android:text="WXYZ" app:layout_constraintBottom_toTopOf="@+id/dialpad_hashtag" app:layout_constraintEnd_toEndOf="parent" @@ -270,7 +270,7 @@ style="@style/DialpadNumberStyle" android:layout_width="0dp" android:layout_height="wrap_content" - android:layout_marginLeft="@dimen/activity_margin" + android:layout_marginStart="@dimen/activity_margin" android:text="*" app:layout_constraintBottom_toTopOf="@+id/dialpad_call_button" app:layout_constraintEnd_toStartOf="@+id/dialpad_0_holder" @@ -302,9 +302,9 @@ android:layout_alignTop="@+id/dialpad_0" android:layout_alignBottom="@+id/dialpad_0" android:layout_centerHorizontal="true" - android:layout_toRightOf="@+id/dialpad_0" + android:layout_toEndOf="@+id/dialpad_0" android:gravity="center" - android:paddingLeft="@dimen/small_margin" + android:paddingStart="@dimen/small_margin" android:paddingTop="@dimen/small_margin" android:text="+" android:textSize="@dimen/actionbar_text_size"/> @@ -316,7 +316,7 @@ style="@style/DialpadNumberStyle" android:layout_width="0dp" android:layout_height="wrap_content" - android:layout_marginRight="@dimen/activity_margin" + android:layout_marginEnd="@dimen/activity_margin" android:text="#" app:layout_constraintBottom_toTopOf="@+id/dialpad_call_button" app:layout_constraintEnd_toEndOf="parent" @@ -331,7 +331,7 @@ android:background="@drawable/circle_background" android:elevation="@dimen/medium_margin" android:padding="@dimen/normal_margin" - android:src="@drawable/ic_phone_huge" + android:src="@drawable/ic_phone_vector" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent"/> diff --git a/app/src/main/res/layout/activity_edit_contact.xml b/app/src/main/res/layout/activity_edit_contact.xml index c98394fd..86758898 100644 --- a/app/src/main/res/layout/activity_edit_contact.xml +++ b/app/src/main/res/layout/activity_edit_contact.xml @@ -11,9 +11,9 @@ android:id="@+id/contact_holder" android:layout_width="match_parent" android:layout_height="wrap_content" - android:paddingLeft="@dimen/normal_margin" + android:paddingStart="@dimen/normal_margin" android:paddingTop="@dimen/activity_margin" - android:paddingRight="@dimen/normal_margin" + android:paddingEnd="@dimen/normal_margin" android:paddingBottom="@dimen/medium_margin"> + android:src="@drawable/ic_star_off_vector"/> + android:gravity="center_vertical|end"> + android:paddingLeft="@dimen/small_margin" + android:paddingRight="@dimen/small_margin" + android:scaleType="fitCenter" + android:src="@drawable/ic_email_vector"/> + android:paddingLeft="@dimen/small_margin" + android:paddingRight="@dimen/small_margin" + android:scaleType="fitCenter" + android:src="@drawable/ic_phone_vector"/> + android:paddingLeft="@dimen/small_margin" + android:paddingRight="@dimen/small_margin" + android:scaleType="fitCenter" + android:src="@drawable/ic_sms_vector"/> @@ -87,9 +87,8 @@ android:layout_below="@+id/contact_photo" android:paddingTop="@dimen/medium_margin" android:paddingEnd="@dimen/small_margin" - android:paddingRight="@dimen/small_margin" android:paddingBottom="@dimen/small_margin" - android:src="@drawable/ic_person"/> + android:src="@drawable/ic_person_vector"/> + android:src="@drawable/ic_phone_vector"/> @@ -219,11 +217,11 @@ android:layout_centerHorizontal="true" android:layout_marginBottom="@dimen/medium_margin" android:background="@drawable/button_background" - android:paddingLeft="@dimen/activity_margin" + android:paddingStart="@dimen/activity_margin" android:paddingTop="@dimen/medium_margin" - android:paddingRight="@dimen/activity_margin" + android:paddingEnd="@dimen/activity_margin" android:paddingBottom="@dimen/medium_margin" - android:src="@drawable/ic_plus"/> + android:src="@drawable/ic_plus_vector"/> + android:src="@drawable/ic_email_vector"/> @@ -256,11 +253,11 @@ android:layout_centerHorizontal="true" android:layout_marginTop="@dimen/small_margin" android:background="@drawable/button_background" - android:paddingLeft="@dimen/activity_margin" + android:paddingStart="@dimen/activity_margin" android:paddingTop="@dimen/medium_margin" - android:paddingRight="@dimen/activity_margin" + android:paddingEnd="@dimen/activity_margin" android:paddingBottom="@dimen/medium_margin" - android:src="@drawable/ic_plus"/> + android:src="@drawable/ic_plus_vector"/> + android:src="@drawable/ic_place_vector"/> @@ -294,11 +290,11 @@ android:layout_centerHorizontal="true" android:layout_marginTop="@dimen/small_margin" android:background="@drawable/button_background" - android:paddingLeft="@dimen/activity_margin" + android:paddingStart="@dimen/activity_margin" android:paddingTop="@dimen/medium_margin" - android:paddingRight="@dimen/activity_margin" + android:paddingEnd="@dimen/activity_margin" android:paddingBottom="@dimen/medium_margin" - android:src="@drawable/ic_plus"/> + android:src="@drawable/ic_plus_vector"/> @@ -317,7 +312,7 @@ android:layout_height="wrap_content" android:layout_below="@+id/contact_addresses_add_new" android:layout_marginTop="@dimen/medium_margin" - android:layout_toRightOf="@+id/contact_name_image" + android:layout_toEndOf="@+id/contact_name_image" android:orientation="vertical"> @@ -332,11 +327,11 @@ android:layout_centerHorizontal="true" android:layout_marginTop="@dimen/small_margin" android:background="@drawable/button_background" - android:paddingLeft="@dimen/activity_margin" + android:paddingStart="@dimen/activity_margin" android:paddingTop="@dimen/medium_margin" - android:paddingRight="@dimen/activity_margin" + android:paddingEnd="@dimen/activity_margin" android:paddingBottom="@dimen/medium_margin" - android:src="@drawable/ic_plus"/> + android:src="@drawable/ic_plus_vector"/> + android:src="@drawable/ic_cake_vector"/> @@ -370,11 +364,11 @@ android:layout_centerHorizontal="true" android:layout_marginTop="@dimen/small_margin" android:background="@drawable/button_background" - android:paddingLeft="@dimen/activity_margin" + android:paddingStart="@dimen/activity_margin" android:paddingTop="@dimen/medium_margin" - android:paddingRight="@dimen/activity_margin" + android:paddingEnd="@dimen/activity_margin" android:paddingBottom="@dimen/medium_margin" - android:src="@drawable/ic_plus"/> + android:src="@drawable/ic_plus_vector"/> + android:src="@drawable/ic_label_vector"/> + android:src="@drawable/ic_business_vector"/> + android:src="@drawable/ic_link_vector"/> @@ -473,11 +464,11 @@ android:layout_centerHorizontal="true" android:layout_marginTop="@dimen/small_margin" android:background="@drawable/button_background" - android:paddingLeft="@dimen/activity_margin" + android:paddingStart="@dimen/activity_margin" android:paddingTop="@dimen/medium_margin" - android:paddingRight="@dimen/activity_margin" + android:paddingEnd="@dimen/activity_margin" android:paddingBottom="@dimen/medium_margin" - android:src="@drawable/ic_plus"/> + android:src="@drawable/ic_plus_vector"/> + android:src="@drawable/ic_group_vector"/> @@ -511,11 +501,11 @@ android:layout_centerHorizontal="true" android:layout_marginTop="@dimen/small_margin" android:background="@drawable/button_background" - android:paddingLeft="@dimen/activity_margin" + android:paddingStart="@dimen/activity_margin" android:paddingTop="@dimen/medium_margin" - android:paddingRight="@dimen/activity_margin" + android:paddingEnd="@dimen/activity_margin" android:paddingBottom="@dimen/medium_margin" - android:src="@drawable/ic_plus"/> + android:src="@drawable/ic_plus_vector"/> + android:src="@drawable/ic_account_box_vector"/> @@ -51,8 +51,7 @@ android:layout_height="match_parent" android:layout_alignParentEnd="true" android:layout_alignParentRight="true" - android:paddingStart="@dimen/normal_margin" - android:paddingLeft="@dimen/normal_margin"> + android:paddingStart="@dimen/normal_margin"> @@ -65,6 +64,6 @@ android:layout_height="wrap_content" android:layout_gravity="bottom|end" android:layout_margin="@dimen/activity_margin" - android:src="@drawable/ic_plus"/> + android:src="@drawable/ic_plus_vector"/> diff --git a/app/src/main/res/layout/activity_insert_edit_contact.xml b/app/src/main/res/layout/activity_insert_edit_contact.xml index 50edfe57..d6d7b41a 100644 --- a/app/src/main/res/layout/activity_insert_edit_contact.xml +++ b/app/src/main/res/layout/activity_insert_edit_contact.xml @@ -11,7 +11,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:background="?attr/selectableItemBackground" - android:paddingRight="@dimen/activity_margin"> + android:paddingEnd="@dimen/activity_margin"> + android:src="@drawable/ic_new_contact_vector"/> + android:src="@drawable/ic_dialpad_vector"/> diff --git a/app/src/main/res/layout/activity_manage_blocked_numbers.xml b/app/src/main/res/layout/activity_manage_blocked_numbers.xml index 64a4f9b3..826e9a63 100644 --- a/app/src/main/res/layout/activity_manage_blocked_numbers.xml +++ b/app/src/main/res/layout/activity_manage_blocked_numbers.xml @@ -19,9 +19,9 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center_horizontal" - android:paddingLeft="@dimen/big_margin" + android:paddingStart="@dimen/big_margin" android:paddingTop="@dimen/activity_margin" - android:paddingRight="@dimen/big_margin" + android:paddingEnd="@dimen/big_margin" android:text="@string/not_blocking_anyone" android:textSize="@dimen/bigger_text_size" android:visibility="gone"/> diff --git a/app/src/main/res/layout/activity_select_contact.xml b/app/src/main/res/layout/activity_select_contact.xml index c2f19d5a..017e414e 100644 --- a/app/src/main/res/layout/activity_select_contact.xml +++ b/app/src/main/res/layout/activity_select_contact.xml @@ -13,8 +13,8 @@ android:layout_centerHorizontal="true" android:layout_marginTop="@dimen/activity_margin" android:gravity="center" - android:paddingLeft="@dimen/activity_margin" - android:paddingRight="@dimen/activity_margin" + android:paddingStart="@dimen/activity_margin" + android:paddingEnd="@dimen/activity_margin" android:text="@string/no_contacts_found" android:textSize="@dimen/bigger_text_size" android:visibility="gone"/> diff --git a/app/src/main/res/layout/activity_settings.xml b/app/src/main/res/layout/activity_settings.xml index 61cdd164..a6ea7d26 100644 --- a/app/src/main/res/layout/activity_settings.xml +++ b/app/src/main/res/layout/activity_settings.xml @@ -18,9 +18,9 @@ android:layout_height="wrap_content" android:layout_marginTop="@dimen/medium_margin" android:background="?attr/selectableItemBackground" - android:paddingLeft="@dimen/normal_margin" + android:paddingStart="@dimen/normal_margin" android:paddingTop="@dimen/activity_margin" - android:paddingRight="@dimen/normal_margin" + android:paddingEnd="@dimen/normal_margin" android:paddingBottom="@dimen/activity_margin"> - + android:layout_height="match_parent"> - + android:visibility="gone"> - - - - - + android:paddingLeft="@dimen/normal_margin" + android:paddingTop="@dimen/activity_margin" + android:paddingRight="@dimen/normal_margin" + android:paddingBottom="@dimen/medium_margin"> + android:id="@+id/contact_photo" + android:layout_width="@dimen/contact_photo_size" + android:layout_height="@dimen/contact_photo_size" + android:layout_marginBottom="@dimen/normal_margin"/> + android:padding="@dimen/tiny_margin" + android:src="@drawable/ic_star_off_vector" + android:visibility="gone"/> + + + + + + + + + + + android:id="@+id/contact_name_image" + android:layout_width="@dimen/contact_icons_size" + android:layout_height="@dimen/contact_icons_size" + android:layout_below="@+id/contact_photo" + android:paddingTop="@dimen/medium_margin" + android:paddingEnd="@dimen/small_margin" + android:paddingBottom="@dimen/small_margin" + android:src="@drawable/ic_person_vector"/> - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + + - + - - + diff --git a/app/src/main/res/layout/dialog_add_blocked_number.xml b/app/src/main/res/layout/dialog_add_blocked_number.xml index 1e0024d5..7e26e1f1 100644 --- a/app/src/main/res/layout/dialog_add_blocked_number.xml +++ b/app/src/main/res/layout/dialog_add_blocked_number.xml @@ -10,9 +10,10 @@ android:id="@+id/add_blocked_number_edittext" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_marginLeft="@dimen/activity_margin" + android:layout_marginStart="@dimen/activity_margin" android:layout_marginTop="@dimen/small_margin" - android:layout_marginRight="@dimen/activity_margin" + android:layout_marginEnd="@dimen/activity_margin" + android:hint="@string/number" android:inputType="phone" android:textCursorDrawable="@null" android:textSize="@dimen/bigger_text_size"/> diff --git a/app/src/main/res/layout/dialog_call_confirmation.xml b/app/src/main/res/layout/dialog_call_confirmation.xml index 2a1d4679..c51c4d08 100644 --- a/app/src/main/res/layout/dialog_call_confirmation.xml +++ b/app/src/main/res/layout/dialog_call_confirmation.xml @@ -13,6 +13,6 @@ android:layout_centerInParent="true" android:background="?attr/selectableItemBackgroundBorderless" android:padding="@dimen/activity_margin" - android:src="@drawable/ic_phone_huge"/> + android:src="@drawable/ic_phone_vector"/> diff --git a/app/src/main/res/layout/dialog_change_sorting.xml b/app/src/main/res/layout/dialog_change_sorting.xml index cbc6504b..75257e06 100644 --- a/app/src/main/res/layout/dialog_change_sorting.xml +++ b/app/src/main/res/layout/dialog_change_sorting.xml @@ -10,8 +10,8 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" - android:paddingLeft="@dimen/activity_margin" - android:paddingRight="@dimen/activity_margin" + android:paddingStart="@dimen/activity_margin" + android:paddingEnd="@dimen/activity_margin" android:paddingTop="@dimen/activity_margin"> diff --git a/app/src/main/res/layout/dialog_export_contacts.xml b/app/src/main/res/layout/dialog_export_contacts.xml index b1708d9a..a7c38dc1 100644 --- a/app/src/main/res/layout/dialog_export_contacts.xml +++ b/app/src/main/res/layout/dialog_export_contacts.xml @@ -11,9 +11,9 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" - android:paddingLeft="@dimen/activity_margin" + android:paddingStart="@dimen/activity_margin" android:paddingTop="@dimen/activity_margin" - android:paddingRight="@dimen/activity_margin"> + android:paddingEnd="@dimen/activity_margin"> diff --git a/app/src/main/res/layout/fragment_layout.xml b/app/src/main/res/layout/fragment_layout.xml index f1620a69..9180dcac 100644 --- a/app/src/main/res/layout/fragment_layout.xml +++ b/app/src/main/res/layout/fragment_layout.xml @@ -47,9 +47,7 @@ android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_alignParentEnd="true" - android:layout_alignParentRight="true" - android:paddingStart="@dimen/normal_margin" - android:paddingLeft="@dimen/normal_margin"> + android:paddingStart="@dimen/normal_margin"> @@ -62,6 +60,6 @@ android:layout_height="wrap_content" android:layout_gravity="bottom|end" android:layout_margin="@dimen/activity_margin" - android:src="@drawable/ic_plus"/> + android:src="@drawable/ic_plus_vector"/> diff --git a/app/src/main/res/layout/item_add_favorite_with_number.xml b/app/src/main/res/layout/item_add_favorite_with_number.xml index c8544807..7185a643 100644 --- a/app/src/main/res/layout/item_add_favorite_with_number.xml +++ b/app/src/main/res/layout/item_add_favorite_with_number.xml @@ -13,7 +13,7 @@ android:id="@+id/contact_holder" android:layout_width="match_parent" android:layout_height="@dimen/contact_item_height" - android:paddingRight="@dimen/normal_margin"> + android:paddingEnd="@dimen/normal_margin"> + android:src="@drawable/ic_person_vector"/> @@ -42,10 +42,10 @@ android:id="@+id/contact_number" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_alignLeft="@+id/contact_name" android:layout_below="@+id/contact_name" - android:layout_toLeftOf="@+id/contact_checkbox" - android:layout_toRightOf="@+id/contact_tmb" + android:layout_alignStart="@+id/contact_name" + android:layout_toStartOf="@+id/contact_checkbox" + android:layout_toEndOf="@+id/contact_tmb" android:maxLines="1" android:textSize="@dimen/bigger_text_size" tools:text="0123 456 789"/> @@ -54,7 +54,7 @@ android:id="@+id/contact_checkbox" android:layout_width="wrap_content" android:layout_height="@dimen/contact_item_height" - android:layout_alignParentRight="true" + android:layout_alignParentEnd="true" android:clickable="false" android:gravity="center_vertical"/> diff --git a/app/src/main/res/layout/item_add_favorite_without_number.xml b/app/src/main/res/layout/item_add_favorite_without_number.xml index a9ecb39d..27c9bc4b 100644 --- a/app/src/main/res/layout/item_add_favorite_without_number.xml +++ b/app/src/main/res/layout/item_add_favorite_without_number.xml @@ -13,7 +13,7 @@ android:id="@+id/contact_holder" android:layout_width="match_parent" android:layout_height="wrap_content" - android:paddingRight="@dimen/normal_margin"> + android:paddingEnd="@dimen/normal_margin"> + android:src="@drawable/ic_person_vector"/> diff --git a/app/src/main/res/layout/item_contact_with_number.xml b/app/src/main/res/layout/item_contact_with_number.xml index 4ecf2645..7b193be7 100644 --- a/app/src/main/res/layout/item_contact_with_number.xml +++ b/app/src/main/res/layout/item_contact_with_number.xml @@ -15,21 +15,21 @@ android:layout_width="match_parent" android:layout_height="@dimen/contact_item_with_number_height" android:paddingTop="@dimen/tiny_margin" - android:paddingRight="@dimen/activity_margin"> + android:paddingEnd="@dimen/activity_margin"> + android:src="@drawable/ic_person_vector"/> diff --git a/app/src/main/res/layout/item_contact_without_number.xml b/app/src/main/res/layout/item_contact_without_number.xml index ac84b0a0..6473f2af 100644 --- a/app/src/main/res/layout/item_contact_without_number.xml +++ b/app/src/main/res/layout/item_contact_without_number.xml @@ -14,7 +14,7 @@ android:id="@+id/contact_holder" android:layout_width="match_parent" android:layout_height="wrap_content" - android:paddingRight="@dimen/activity_margin"> + android:paddingEnd="@dimen/activity_margin"> + android:src="@drawable/ic_person_vector"/> diff --git a/app/src/main/res/layout/item_edit_email.xml b/app/src/main/res/layout/item_edit_email.xml index 921e7b2e..3fb37f47 100644 --- a/app/src/main/res/layout/item_edit_email.xml +++ b/app/src/main/res/layout/item_edit_email.xml @@ -31,8 +31,8 @@ android:layout_centerVertical="true" android:background="?attr/selectableItemBackground" android:gravity="center" - android:paddingLeft="@dimen/medium_margin" - android:paddingRight="@dimen/medium_margin" + android:paddingStart="@dimen/medium_margin" + android:paddingEnd="@dimen/medium_margin" android:text="@string/home" android:textSize="@dimen/bigger_text_size"/> diff --git a/app/src/main/res/layout/item_edit_group.xml b/app/src/main/res/layout/item_edit_group.xml index 5a5620e1..903951f9 100644 --- a/app/src/main/res/layout/item_edit_group.xml +++ b/app/src/main/res/layout/item_edit_group.xml @@ -15,8 +15,8 @@ android:alpha="0.5" android:background="?attr/selectableItemBackground" android:paddingBottom="@dimen/normal_margin" - android:paddingLeft="@dimen/small_margin" - android:paddingRight="@dimen/small_margin" + android:paddingStart="@dimen/small_margin" + android:paddingEnd="@dimen/small_margin" android:paddingTop="@dimen/normal_margin" android:text="@string/no_groups" android:textSize="@dimen/bigger_text_size"/> @@ -26,16 +26,16 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBottom="@+id/contact_group" - android:layout_alignParentRight="true" + android:layout_alignParentEnd="true" android:layout_alignTop="@+id/contact_group" android:layout_centerHorizontal="true" android:layout_marginBottom="@dimen/medium_margin" - android:layout_marginLeft="@dimen/small_margin" - android:layout_marginRight="@dimen/small_margin" + android:layout_marginStart="@dimen/small_margin" + android:layout_marginEnd="@dimen/small_margin" android:layout_marginTop="@dimen/medium_margin" android:background="@drawable/button_background" android:padding="@dimen/medium_margin" - android:src="@drawable/ic_minus" + android:src="@drawable/ic_minus_vector" android:visibility="gone"/> diff --git a/app/src/main/res/layout/item_edit_im.xml b/app/src/main/res/layout/item_edit_im.xml index ea82a20e..01cd411f 100644 --- a/app/src/main/res/layout/item_edit_im.xml +++ b/app/src/main/res/layout/item_edit_im.xml @@ -30,8 +30,8 @@ android:layout_centerVertical="true" android:background="?attr/selectableItemBackground" android:gravity="center" - android:paddingLeft="@dimen/medium_margin" - android:paddingRight="@dimen/medium_margin" + android:paddingStart="@dimen/medium_margin" + android:paddingEnd="@dimen/medium_margin" android:text="@string/skype" android:textSize="@dimen/bigger_text_size"/> diff --git a/app/src/main/res/layout/item_edit_phone_number.xml b/app/src/main/res/layout/item_edit_phone_number.xml index 3eb2708c..0107e0c3 100644 --- a/app/src/main/res/layout/item_edit_phone_number.xml +++ b/app/src/main/res/layout/item_edit_phone_number.xml @@ -31,8 +31,8 @@ android:layout_centerVertical="true" android:background="?attr/selectableItemBackground" android:gravity="center" - android:paddingLeft="@dimen/medium_margin" - android:paddingRight="@dimen/medium_margin" + android:paddingStart="@dimen/medium_margin" + android:paddingEnd="@dimen/medium_margin" android:text="@string/mobile" android:textSize="@dimen/bigger_text_size"/> diff --git a/app/src/main/res/layout/item_event.xml b/app/src/main/res/layout/item_event.xml index ae370f5d..80407d33 100644 --- a/app/src/main/res/layout/item_event.xml +++ b/app/src/main/res/layout/item_event.xml @@ -15,8 +15,8 @@ android:alpha="0.5" android:background="?attr/selectableItemBackground" android:paddingBottom="@dimen/normal_margin" - android:paddingLeft="@dimen/small_margin" - android:paddingRight="@dimen/small_margin" + android:paddingStart="@dimen/small_margin" + android:paddingEnd="@dimen/small_margin" android:paddingTop="@dimen/normal_margin" android:text="@string/unknown" android:textSize="@dimen/bigger_text_size"/> @@ -32,10 +32,10 @@ android:layout_marginLeft="@dimen/small_margin" android:layout_marginRight="@dimen/small_margin" android:layout_marginTop="@dimen/medium_margin" - android:layout_toLeftOf="@+id/contact_event_type" + android:layout_toStartOf="@+id/contact_event_type" android:background="@drawable/button_background" android:padding="@dimen/medium_margin" - android:src="@drawable/ic_minus" + android:src="@drawable/ic_minus_vector" android:visibility="gone"/> diff --git a/app/src/main/res/layout/item_filter_contact_source.xml b/app/src/main/res/layout/item_filter_contact_source.xml index 29ded9de..8c19bbc4 100644 --- a/app/src/main/res/layout/item_filter_contact_source.xml +++ b/app/src/main/res/layout/item_filter_contact_source.xml @@ -11,8 +11,8 @@ android:id="@+id/filter_contact_source_checkbox" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_marginRight="@dimen/medium_margin" + android:layout_marginEnd="@dimen/medium_margin" android:clickable="false" - android:paddingLeft="@dimen/small_margin"/> + android:paddingStart="@dimen/small_margin"/> diff --git a/app/src/main/res/layout/item_group.xml b/app/src/main/res/layout/item_group.xml index d8106772..9e4bcba9 100644 --- a/app/src/main/res/layout/item_group.xml +++ b/app/src/main/res/layout/item_group.xml @@ -14,7 +14,7 @@ android:id="@+id/group_holder" android:layout_width="match_parent" android:layout_height="wrap_content" - android:paddingRight="@dimen/activity_margin"> + android:paddingEnd="@dimen/activity_margin"> + android:src="@drawable/ic_group_vector"/> diff --git a/app/src/main/res/layout/item_view_address.xml b/app/src/main/res/layout/item_view_address.xml index c3f46463..73f3dfc9 100644 --- a/app/src/main/res/layout/item_view_address.xml +++ b/app/src/main/res/layout/item_view_address.xml @@ -27,8 +27,8 @@ android:layout_alignTop="@+id/contact_address" android:layout_centerVertical="true" android:gravity="center" - android:paddingLeft="@dimen/medium_margin" - android:paddingRight="@dimen/medium_margin" + android:paddingStart="@dimen/medium_margin" + android:paddingEnd="@dimen/medium_margin" android:text="@string/home" android:textSize="@dimen/bigger_text_size"/> diff --git a/app/src/main/res/layout/item_view_im.xml b/app/src/main/res/layout/item_view_im.xml index fb689418..3ee5f615 100644 --- a/app/src/main/res/layout/item_view_im.xml +++ b/app/src/main/res/layout/item_view_im.xml @@ -30,8 +30,8 @@ android:layout_alignTop="@+id/contact_im" android:layout_centerVertical="true" android:gravity="center" - android:paddingLeft="@dimen/medium_margin" - android:paddingRight="@dimen/medium_margin" + android:paddingStart="@dimen/medium_margin" + android:paddingEnd="@dimen/medium_margin" android:text="@string/aim" android:textSize="@dimen/bigger_text_size"/> diff --git a/app/src/main/res/layout/item_view_phone_number.xml b/app/src/main/res/layout/item_view_phone_number.xml index d4dea4a8..12e8bbae 100644 --- a/app/src/main/res/layout/item_view_phone_number.xml +++ b/app/src/main/res/layout/item_view_phone_number.xml @@ -30,8 +30,8 @@ android:layout_alignTop="@+id/contact_number" android:layout_centerVertical="true" android:gravity="center" - android:paddingLeft="@dimen/medium_margin" - android:paddingRight="@dimen/medium_margin" + android:paddingStart="@dimen/medium_margin" + android:paddingEnd="@dimen/medium_margin" android:text="@string/mobile" android:textSize="@dimen/bigger_text_size"/> diff --git a/app/src/main/res/layout/item_website.xml b/app/src/main/res/layout/item_website.xml index 39d029bc..0fad1c95 100644 --- a/app/src/main/res/layout/item_website.xml +++ b/app/src/main/res/layout/item_website.xml @@ -7,8 +7,8 @@ android:layout_centerVertical="true" android:background="?attr/selectableItemBackground" android:paddingBottom="@dimen/normal_margin" - android:paddingLeft="@dimen/small_margin" - android:paddingRight="@dimen/small_margin" + android:paddingStart="@dimen/small_margin" + android:paddingEnd="@dimen/small_margin" android:paddingTop="@dimen/normal_margin" android:text="@string/unknown" android:textSize="@dimen/bigger_text_size"/> diff --git a/app/src/main/res/menu/cab.xml b/app/src/main/res/menu/cab.xml index ae59e0ae..c2bdb997 100644 --- a/app/src/main/res/menu/cab.xml +++ b/app/src/main/res/menu/cab.xml @@ -3,47 +3,47 @@ xmlns:app="http://schemas.android.com/apk/res-auto"> diff --git a/app/src/main/res/menu/cab_groups.xml b/app/src/main/res/menu/cab_groups.xml index 09d8f46d..e3884b93 100644 --- a/app/src/main/res/menu/cab_groups.xml +++ b/app/src/main/res/menu/cab_groups.xml @@ -8,12 +8,12 @@ app:showAsAction="ifRoom"/> diff --git a/app/src/main/res/menu/menu.xml b/app/src/main/res/menu/menu.xml index 6e87be0f..8eca10f7 100644 --- a/app/src/main/res/menu/menu.xml +++ b/app/src/main/res/menu/menu.xml @@ -3,18 +3,18 @@ xmlns:app="http://schemas.android.com/apk/res-auto"> diff --git a/app/src/main/res/menu/menu_dialpad.xml b/app/src/main/res/menu/menu_dialpad.xml index 66fa1d06..a4a77b30 100644 --- a/app/src/main/res/menu/menu_dialpad.xml +++ b/app/src/main/res/menu/menu_dialpad.xml @@ -3,7 +3,7 @@ xmlns:app="http://schemas.android.com/apk/res-auto"> diff --git a/app/src/main/res/menu/menu_edit_contact.xml b/app/src/main/res/menu/menu_edit_contact.xml index ed26a9c6..68993598 100644 --- a/app/src/main/res/menu/menu_edit_contact.xml +++ b/app/src/main/res/menu/menu_edit_contact.xml @@ -3,12 +3,12 @@ xmlns:app="http://schemas.android.com/apk/res-auto"> diff --git a/app/src/main/res/menu/menu_group.xml b/app/src/main/res/menu/menu_group.xml index c8073523..5a308574 100644 --- a/app/src/main/res/menu/menu_group.xml +++ b/app/src/main/res/menu/menu_group.xml @@ -3,12 +3,12 @@ xmlns:app="http://schemas.android.com/apk/res-auto"> diff --git a/app/src/main/res/menu/menu_select_activity.xml b/app/src/main/res/menu/menu_select_activity.xml index a914825b..ed3d4291 100644 --- a/app/src/main/res/menu/menu_select_activity.xml +++ b/app/src/main/res/menu/menu_select_activity.xml @@ -3,12 +3,12 @@ xmlns:app="http://schemas.android.com/apk/res-auto"> diff --git a/app/src/main/res/menu/menu_view_contact.xml b/app/src/main/res/menu/menu_view_contact.xml index 0ed4b3ec..74b81b9b 100644 --- a/app/src/main/res/menu/menu_view_contact.xml +++ b/app/src/main/res/menu/menu_view_contact.xml @@ -3,12 +3,12 @@ xmlns:app="http://schemas.android.com/apk/res-auto"> diff --git a/app/src/main/res/values-ar/strings.xml b/app/src/main/res/values-ar/strings.xml new file mode 100644 index 00000000..ca5f49e3 --- /dev/null +++ b/app/src/main/res/values-ar/strings.xml @@ -0,0 +1,168 @@ + + جهات الإتصال + جهات الإتصال + العنوان + إضافة… + تحديث… + ذاكرة الهاتف + ذاكرة الهاتف (غير مرئية من قبل التطبيقات الأخرى) + الشركة + الوظيفة + الموقع الالكتروني + ارسال رسالة الى جهات الاتصال + ارسال بريد الكتروني الى جهات الاتصال + ارسال رسالة الى مجموعة + ارسال بريد الكتروني الى مجموعة + Call %s + طلب الأذونات المطلوبة + إنشاء جهة إتصال + إضافة إلى جهة موجودة + عليك أن تجعل هذا التطبيق المتصل الإفتراضي للإستفادة من الأرقام المحظورة. + ضبط الى الافتراضي + + + لم يتم العثور على جهات اتصال + لا توجد جهات اتصال بهذا البريد الالكتروني + لا توجد جهات اتصال بهذا الرقم + + جهة اتصال جديدة + تعديل جهة اتصالل + اختيار جهة اتصال + اختيار جهات اتصال + الاسم + اسم الأب + الشهرة + اللقب + + + لا توجد مجموعات + انشاء مجموعة جديدة + ازالة من المجموعة + هذه المجموعة فارغة + إضافة جهات اتصال + لا توجد مجموعات على الجهاز + انشاء مجموعة + اضافة الى مجموعة + انشاء مجموعة ضمن حساب + + + التقاط صورة + اختيار صورة + ازالة الصورة + + + الاسم يبدأ بالشهرة + عرض أرقام الهاتف على الشاشة الرئيسية + عرض صور مصغرة لجهات الإتصال + عرض زر لوحة الإتصال على الشاشةالرئيسية + عند النقر فوق جهة اتصال + اتصال بجهة + عرض تفاصيل جهة الاتصال + إدارة حقول جهات الاتصال المعروضة + محاولة تصفية جهات الاتصال المكررة + إدارة التابات المعروضة + جهات الاتصال + المفضلة + إظهار مربع حوار تأكيد الاتصال قبل بدء مكالمة + إظهار جهات الإتصال التي لديها أرقام هواتف فقط + عرض الحروف على لوحة الاتصال + + + البريد الالكتروني + المنزل + العمل + مختلف + + + رقم + جوال + رئيسي + فاكس العمل + فاكس المنزل + بايجر + لم يتم العثور على رقم هاتف + + + تاريخ الميلاد + مناسبة + + + يبدو أنك لم تضف أية جهة اتصال مفضلة حتى الآن. + اضافة مفضلة + اضافة الى المفضلة + ازالة من المفضلة + يجب أن تكون في شاشة التعديل لتعديل جهة اتصال + + + بحث في جهات الاتصال + بحث في المفضلة + Search groups + + + استيراد جهات اتصال + تصدير جهات اتصال + استيراد جهات اتصال من ملف vcf + تصدير جهات اتصال الى ملف vcf + Target contact source + Include contact sources + اسم الملف (بدون .vcf) + + + لوحة الاتصال + إضافة رقم الى جهة اتصال + + + المتصل + اتصال + مكالمة واردة + مكالمة واردة من … + مكالمة جارية + انقطع الاتصال + رفض + اجابة + + + حدد الحقول لعرضها + بادئة + لاحقة + ارقام الهاتف + البريد الالكتروني + العناوين + الأحداث (أعياد الميلاد ، الذكرى السنوية) + ملاحظات + منظمة + المواقع الالكترونية + مجموعات + مصدر الاتصال + المراسلة الفورية (IM) + + + إدارة الأرقام المحظورة + لم تحظر أي شخص. + إضافة رقم محظور + حظر رقم + حظر أرقام + أرقام محظورة + + + I want to change what fields are visible at contacts. Can I do it? + Yes, all you have to do is go in Settings -> Manage shown contact fields. There you can select what fields should be visible. Some of them are even disabled by default, so you might find some new ones there. + + + + Apka na správu vašich kontaktov bez reklám, rešpektujúca vaše súkromie. + + A simple app for creating or managing your contacts from any source. The contacts can be stored on your device only, but also synchronized via Google, or other accounts. You can display your favorite contacts on a separate list. + + You can use it for managing user emails and events too. It has the ability to sort/filter by multiple parameters, optionally display surname as the first name. + + Contains no ads or unnecessary permissions. It is fully opensource, provides customizable colors. + + This app is just one piece of a bigger series of apps. You can find the rest of them at https://www.simplemobiletools.com + + + + diff --git a/app/src/main/res/values-az/strings.xml b/app/src/main/res/values-az/strings.xml index bb898317..6e60255e 100644 --- a/app/src/main/res/values-az/strings.xml +++ b/app/src/main/res/values-az/strings.xml @@ -18,7 +18,7 @@ Create new contact Add to an existing contact You have to make this app the default dialer app to make use of blocked numbers. - Set to default + Set as default No contacts found @@ -96,6 +96,7 @@ Kontaktları axtar Sevimliləri axtar + Search groups Kontaktları daxil et diff --git a/app/src/main/res/values-cy/strings.xml b/app/src/main/res/values-cy/strings.xml new file mode 100644 index 00000000..fe4b38ac --- /dev/null +++ b/app/src/main/res/values-cy/strings.xml @@ -0,0 +1,168 @@ + + Simple Contacts + Cysylltiadau + Cyfeiriad + Yn gosod… + Yn diweddaru… + Storfa ddyfais + Storfa ddyfais (dim i\'w weld gan apiau eraill) + Cwmni + Swydd + Gwefan + Anfon SMS at gysylltiadau + Anfon e-bost at gysylltiadau + Anfon SMS at grŵp + Anfon ebost at grŵp + Galw %s + Gofyn am y caniatâd sydd ei angen + Creu cyswllt newydd + Ychwanegu at gyswllt sy\'n bodoli + Rhaid gwneud yr ap hwn yr ap deialu rhagosodedig er mwyn defnyddio rhifau wedi\'u rhwystro. + Defnyddio fel y rhagosodedig + + + Ni chanfuwyd unrhyw gysylltiadau + Ni chanfuwyd unrhyw gysylltiadau gydag ebost + Ni chanfuwyd unrhyw gysylltiadau gyda rhifau ffôn + + Cyswllt newydd + Golygu\'r cyswllt + Dewis cyswllt + Dewis cysylltiadau + Enw cyntaf + Enw canol + Cyfenw + Llys enw + + + Dim grwpiau + Creu grŵp newydd + Tynnu o\'r grŵp + Mae\'r grŵp hwn yn wag + Ychwanegu cysylltiadau + Does dim grwpiau cysylltiadau ar y ddyfais + Creu grŵp + Ychwanegu at grŵp + Creu grŵp dan gyfrif + + + Tynnu llun + Dewis llun + Cael gwared â\'r llun + + + Dangos enw gyda\'r cyfenw gyntaf + Dangos rhifau ffôn ar y brif sgrin + Dangos mân luniau cysylltiadau + Dangos botwm pad deialu ar y brif sgrin + Wrth glicio ar gyswllt + Galw cyswllt + Gweld manylion cyswllt + Rheoli pa feysydd cyswllt i\'w dangos + Ceisio canfod a gwaredu cysylltiadau dyblyg + Rheoli pa dabiau sy\'n cael eu dangos + Cysylltiadau + Ffefrynnau + Dangos deialog i gadarnhau cyn gwneud galwad + Dangos dim ond cysylltiadau gyda rhifau ffôn + Dangos llythrennau ar y pad deialu + + + Ebost + Cartref + Gwaith + Arall + + + Rhif + Symudol + Prif + Ffacs gwaith + Ffacs cartref + Peiriant galw + Ni chanfuwyd rif ffôn + + + Pen-blwydd + Pen-blwydd achlysur + + + Ymddangosir nad wyt wedi ychwanegu unrhyw ffefrynnau eto. + Ychwanegu ffefrynnau + Ychwanegu i\'r ffefrynnau + Tynnu o\'r ffefrynnau + Rhaid bod ar y sgrin golygu er mwyn addasu cyswllt + + + Chwilio\'r cysylltiadau + Chwilio\'r ffefrynnau + Search groups + + + Mewnforio cysylltiadau + Allforio cysylltiadau + Mewnforio cysylltiadau o ffeil .vcf + Allforio cysylltiadau i ffeil .vcf + Ffynhonnell y cyswllt targed + Cynnwys ffynonellau cysylltiadau + Enw\'r ffeil (heb .vcf) + + + Pad deialu + Ychwanegu rhif at gyswllt + + + Deialydd + Yn galw + Galwad i mewn + Galwad i mewn oddi wrth… + Galwad ar y gweill + Datgysylltwyd + Gwrthod + Ateb + + + Dewis pa feysydd i\'w dangos + Rhagddodiad + Ôl-ddodiad + Rhifau ffôn + Cyfeiriadau ebost + Cyfeiriadau + Digwyddiadau (e.e. pen-blwyddi) + Nodiadau + Sefydliad + Gwefannau + Grwpiau + Ffynhonnell gyswllt + Negesu ar unwaith (IM) + + + Rheoli rhifau wedi\'u rhwystro + Nid wyt yn rhwystro unrhyw un. + Ychwanegu rif i\'w rwystro + Rhwystro rhif + Rhwystro rhifau + Rhifau wedi\'u rhwystro + + + Hoffwn newid pa feysydd sydd i\'w gweld ar gyfer cysylltiadau. Ydy hyn yn bosib? + Ydy. Y cwbl sy\'n rhaid gwneud ydy mynd i Gosodiadau -> Rheoli pa feysydd cysylltiadau i\'w dangos. Yna, gellir dewis pa feysydd sydd i\'w gweld. Bydd rhai wedi eu gosod i beidio ymddangos fel arfer, felly mae\'n bosib byddi\'n dod o hyd i rai newydd yno. + + + + Ap i reoli dy gysylltiadau, heb hysbysebion, gan barchu dy breifatrwydd. + + Ap syml i greu neu reoli dy gysylltiadau o unrhyw ffynhonnell. Caiff y cysylltiadau eu cadw ar dy ddyfais yn unig, ond mae hefyd yn bosib eu cysoni gyda Google neu gyfrifon eraill. Gellir golygu dy hoff gysylltiadau mewn rhestr ar wahân. + + Gellir ei ddefnyddio i reoli cyfeiriadau e-bost defnyddwyr a digwyddiadau hefyd. Mae ganddo\'r gallu i drefnu mewn gwahanol ffyrdd ac i ddangos enwau gyda\'r cyfenw gyntaf os yw\'n well gennyt. + + Does dim hysbysebion na dim angen arno unrhyw ganiatâd diangen. Mae\'n gwbl cod agored ac mae modd addasu lliwiau\'r ap. + + Mae\'r ap hwn yn un ymhlith nifer o apiau gennym. Mae\'r gweddill i\'w gweld ar https://www.simplemobiletools.com + + + + diff --git a/app/src/main/res/values-da/strings.xml b/app/src/main/res/values-da/strings.xml new file mode 100644 index 00000000..f543309e --- /dev/null +++ b/app/src/main/res/values-da/strings.xml @@ -0,0 +1,168 @@ + + Simple Contacts + Kontakter + Adresse + Indsætter… + Opdaterer… + Telefon lager + Telefon lager (ikke synlig for andre apps) + Firma + Stilling + Hjemmeside + Send SMS til kontakter + Send email til kontakter + Send SMS til gruppe + Send email til gruppe + Ring til %s + Anmod om de krævede tilladelser + Opret ny kontakt + Tilføj til en eksisterende kontakt + Du skal gøre denne app til standardopkaldsappen for at gøre brug af blokerede numre. + Gør til standard + + + Ingen kontakter fundet + Ingen kontakter med emails fundet + Ingen kontakter med telefonnumre fundet + + Ny kontakt + Redigér kontakt + Vælg kontakt + Vælg kontakter + Fornavn + Mellemnavn + Efternavn + Kaldenavn + + + Ingen grupper + Oret en ny gruppe + Fjern fra gruppe + Denne gruppe er tom + Tilføj kontakter + Der er ingen kontaktgrupper på enheden + Opret gruppe + Tilføj til gruppe + Opret gruppe under konto + + + Tag foto + Vælg foto + Fjern foto + + + Start navn med efternavn + Vis telefonnumre på hovedskærmen + Vis kontakt miniature-billede + Vis en opkaldstasteknap på hovedskærmen + Ved klik på kontakt + Ring til kontakt + Vis kontakt detaljer + Administrer viste kontaktfelter + Prøv at filtrere dupletter + Administrer viste faner + Kontakter + Favoritter + Vis en opkaldsbekræftelsesdialog før du starter et opkald + Vis kun kontakter med telefonnumre + Vis bogstaver på tastaturet + + + Email + Hjem + Arbejde + Andet + + + Nummer + Mobil + Hovednummer + Arbejdsfax + Hjemmefax + Pager + Intet telefonnummer er fundet + + + Fødselsdag + Årsdag + + + Det ser ud til, at du ikke har tilføjet nogen favoritkontakter endnu. + Tilføj favoritter + Tilføj til favoritter + Fjern fra favoritter + Du skal være på skærmen Rediger for at ændre en kontakt + + + Søg kontakter + Søg favoritter + Search groups + + + Import kontakter + Eksport kontakter + Import kontakter fra en .vcf fil + Eksport kontakter til en .vcf fil + Kontaktskilde + Medtag kontaktkilder + Filnavn (uden .vcf) + + + Tastatur + Tilføj nummer til kontakt + + + Dialer + Ringer + Indkommende opkald call + Indkommende opkald fra… + Igangværende opkald + Afbrudt + Afvis + Besvar + + + Vælg felter der skal vises + Præfiks + Suffiks + Telefonnumre + Emails + Adresser + Begivenheder (fødselsdage, årsdage) + Noter + Organisation + Hjemmesider + Groupper + Kontaktkilde + Instant messaging (IM) + + + Administrér blokerede numre + Du blokerer ikke nogen + Tilføj et blokeret nummer + Blokér nummer + Blokér numre + Blokerede numre + + + Jeg vil ændre, hvilke felter der er synlige ved kontakter. Kan jeg gøre det? + Ja, alt hvad du skal gøre er at gå i Indstillinger -> Administrer viste kontaktfelter. Der kan du vælge, hvilke felter der skal være synlige. Nogle af dem er endda deaktiveret som standard, så du kan muligvis finde nogle nye der. + + + + En app til dine kontakter, uden annoncer og med respekt for dit privatliv. + + En simpel app til at oprette eller administrere dine kontakter fra enhver kilde. Kontakterne kan gemmes kun på din enhed, eller synkroniseres via Google eller andre konti. Du kan vise dine foretrukne kontakter på en separat liste. + + Du kan også bruge den til at styre bruger-emails og begivenheder. Den har muligheden for at sortere / filtrere efter flere parametre, og vise efternavn eller fornavn først. + + Indeholder ingen annoncer eller unødvendige tilladelser. Det er fuldstændigt opensource. Appens farver kan tilpasses. + + Denne app er kun en af en større række af apps. Du kan finde resten af dem på https://www.simplemobiletools.com + + + + diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 722bf81a..af2fa22e 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -18,7 +18,7 @@ Neuen Kontakt erstellen Zu einem existierenden Kontakt hinzufügen Du musst diese App als Standardtelefonie-App einstellen, um Nummern blockieren zu können. - Als Standard auswählen + Als Standard auswählen Keine Kontakte gefunden @@ -54,7 +54,7 @@ Namen mit Nachnamen beginnen Telefonnummern im Hauptmenü zeigen Vorschaubilder der Kontakte zeigen - Eine Wählfehldschaltfläche auf dem Hauptbildschirm anzeigen + Eine Wahlfeld-Schaltfläche auf dem Hauptbildschirm anzeigen Beim Klicken auf den Kontakt Kontakt anrufen Kontaktdetails anzeigen @@ -65,7 +65,7 @@ Favoriten Bestätigungsdialog zeigen, bevor ein Anruf durchgeführt wird Nur Kontakte mit Telefonnummern anzeigen - Show letters on the dialpad + Buchstaben im Wahlfeld anzeigen E-Mail @@ -96,6 +96,7 @@ Kontakte durchsuchen Favoriten durchsuchen + Search groups Kontakte importieren diff --git a/app/src/main/res/values-el/strings.xml b/app/src/main/res/values-el/strings.xml index 5438cf2d..8448594e 100644 --- a/app/src/main/res/values-el/strings.xml +++ b/app/src/main/res/values-el/strings.xml @@ -17,13 +17,13 @@ Ζητούνται τα απαιτούμενα δικαιώματα Δημιουργία νέας Επαφής Προσθήκη σε μια υπάρχουσα Επαφή - You have to make this app the default dialer app to make use of blocked numbers. - Set to default + Θα πρέπει να οριστεί προεπιλεγμένη εφαρμογή για χρησιμοποίηση αποκλεισμένων αριθμών. + Ορισμός προεπιλεγμένης - No contacts found - No contacts with emails have been found - No contacts with phone numbers have been found + Δεν βρέθηκαν Επαφές + Δεν βρέθηκαν Επαφές με emails + Δεν βρέθηκαν Επαφές με αριθμό τηλεφώνου Νέα επαφή Επεξεργασία επαφής @@ -54,7 +54,7 @@ Εμφάνιση πρώτα το επώνυμο Εμφάνιση τηλεφωνικών αριθμών στην κύρια οθόνη Εμφάνιση μικρογραφιών επαφής - Show a dialpad button on the main screen + Προβολή ενός κουμπίου πληκτρολογίου στην κύρια οθόνη Στην επιλογή επαφής Κλήση επαφής Εμφάνιση λεπτομερειών επαφής @@ -64,8 +64,8 @@ Επαφές Αγαπημένες Εμφάνιση διαλόγου επιβεβαίωσης πριν από την έναρξη μιας κλήσης - Show only contacts with phone numbers - Show letters on the dialpad + Προβολή όλων των Επαφών με αριθμούς τηλεφώνου + Εμφάνιση γραμμάτων στην πληκτρολόγιο Email @@ -96,6 +96,7 @@ Αναζήτηση επαφών Αναζήτηση αγαπημένων + Search groups Εισαγωγή επαφών @@ -111,14 +112,14 @@ Προσθήκη αριθμού σε επαφή - Dialer - Calling - Incoming call - Incoming call from… - Ongoing call - Disconnected - Decline - Answer + Πληκτρολόγιο + Κλήση + Εισερχόμενη κλήση + Εισερχόμενη κλήση απο… + Εξερχόμενη κλήση + Αποσύνδεση + Άρνηση + Απάντηση Επιλογή εμφάνισης πεδίων @@ -136,12 +137,12 @@ Αμεσο μήνυμα (IM) - Manage blocked numbers - You are not blocking anyone. - Add a blocked number - Block number - Block numbers - Blocked numbers + Διαχείρηση αποκλεισμένων αριθμών + Χωρίς αποκλεισμο κανενός. + Προσθήκη ένος αποκλεισμένου αριθμού + Αποκλεισμό αριθμού + Αποκλεισμό αριθμών + Αποκλεισμένοι αριθμοί Θέλω να αλλάξω τα πεδία που θα είναι ορατά στις επαφές. Μπορώ να το κάνω? @@ -149,7 +150,7 @@ - An app for managing your contacts without ads, respecting your privacy. + Μια εφαρμογή για τις Επαφές σας χωρίς διαφημίσεις, σεβόμενη το απόρρητό σας. Μια απλή εφαρμογή για δημιουργία και διαχείριση των επαφών σου από κάθε πηγή. Οι επαφές μπορεί να είναι αποθηκευμένες μόνο στη συσκευή σου, αλλά μπορούν να συγχρονίζονται στο Google, ή σε κάποιο άλλο λογαριασμό. Μπορείς να εμφανίσεις τις αγαπημένες σου επαφές σε ξεχωριστή λίστα. diff --git a/app/src/main/res/values-eu/strings.xml b/app/src/main/res/values-eu/strings.xml index 120df8f9..3007e798 100644 --- a/app/src/main/res/values-eu/strings.xml +++ b/app/src/main/res/values-eu/strings.xml @@ -18,7 +18,7 @@ Create new contact Add to an existing contact You have to make this app the default dialer app to make use of blocked numbers. - Set to default + Set as default No contacts found @@ -96,6 +96,7 @@ Bilatu kontaktuak Bilatu gogokoak + Search groups Inportatu kontaktuak diff --git a/app/src/main/res/values-fi/strings.xml b/app/src/main/res/values-fi/strings.xml new file mode 100644 index 00000000..effde482 --- /dev/null +++ b/app/src/main/res/values-fi/strings.xml @@ -0,0 +1,168 @@ + + Simple Contacts + Kontaktit + Osoite + Sijoitetaan + Päivitetään + Puhelimen muisti + Puhelimen muisti piilotettu + Yritys + Ammatti + Internet sivu + Lähetä tekstiviesti kontakteille + Lähetä sähköposti kontakteille + Lähetä tekstiviesti ryhmälle + Lähetä sähköposti ryhmälle + Soita + Pyydä tarvittavia oikeuksia + Luo uusi kontakti + Lisää olemassa olevaan kontaktiin + Soittajan täytyy olla oletus + Aseta oletukseksi + + + Kontakteja ei löytynyt + Sähköpostillisia kontakteja ei löytynyt + Puhelinnumerollisia kontakteja ei löytynyt + + Uusi kontakti + Muokkaa kontaktia + Valitse kontakti + Valitse kontaktit + Etunimi + Toinen nimi + Sukunimi + Kutsumanimi + + + Ei ryhmiä + Luo uusi ryhmä + Poista ryhmästä + Ei ryhmään kuuluvia + Lisää kontakteja + Ryhmää ei luotu + Luo ryhmä + Lisää ryhmään + Luo ryhmä tilille + + + Ota kuva + Valitse kuva + Posta kuva + + + Aloita sukunimellä + Näytä puhelinnumerot + Näytä kontaktien kuvakkeet + Näytä soittimen nappi + Kontaktia painettaessa + Soita kontaktiin + Näytä kontakti + Muuta näytettyjä kontaktialueita + Suodata kaksoiskappaleet + Muuta näytettyjä palkkeja + Kontaktit + Suosikit + Näytä puhelun vahvistusruutu + Näytä ainoastaan numerolliset kontaktit + Näytä kirjaimet puhelimessa + + + Sähköposti + Koti + Työ + Muu + + + Numero + Mobiili + Päänumero + Työ faxi + Koti faxi + Hakulaite + Puhelinnumeroa ei löytynyt + + + Syntymäpäivä + Vuosipäivä + + + Ei suosikkeja + Lisää suosikkeja + Lisää suosikkeihin + Poista suosikeista + Täytyy olla muokkauksessa + + + Etsi kontakteja + Etsi suosikkeja + Search groups + + + Tuo kontakteja + Vie kontakteja + Tuo .vcf kontakteja + Vie .vcf kontakteja + Kohdenna kontaktin lähde + Sisällytä kontaktin lähteet + Tiedostonimi ilman .vcf päätettä + + + Näppäimistö + Lisää numero kontakteihin + + + Vastaaja + Soitaa + Tuleva puhelu + Tuleva puhelu: + Puhelu kesken + Katkaistu + Hylkää puhelu + Vastaa puheluun + + + Valitse näytettävät palkit + Alku + Pääte + Puhelinnumero + Sähköpostit + Osoitteet + Tapahtumat + Muistiinpanot + Järjestö + Internetsivut + Ryhmät + Kontaktin lähde + Pikaviestin + + + Muuta estettyjä numeroita + Et estä ketään. + Lisää estetty numero + Estä numero + Estä numeroja + Estetyt numerot + + + Haluan muuttaa sitä mitkä palkit ovat näkyviä kontakteissa. Onko tämä mahdollista? + Kyllä, mene asetuksiin -> Muuta näytettyjä kontaktialueita. Siellä voit valita mitkä palkit haluat näkyviin. Jotkin niistä ovat piilossa oletuksena, joten saatat löytää sieltä uusia. + + + + An app for managing your contacts without ads, respecting your privacy. + + A simple app for creating or managing your contacts from any source. The contacts can be stored on your device only, but also synchronized via Google, or other accounts. You can display your favorite contacts on a separate list. + + You can use it for managing user emails and events too. It has the ability to sort/filter by multiple parameters, optionally display surname as the first name. + + Contains no ads or unnecessary permissions. It is fully opensource, provides customizable colors. + + This app is just one piece of a bigger series of apps. You can find the rest of them at https://www.simplemobiletools.com + + + + diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 09ee4112..f33d57bd 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -18,7 +18,7 @@ Créer un nouveau contact Ajouter à un contact existant You have to make this app the default dialer app to make use of blocked numbers. - Set to default + Set as default Aucun contact n\'a été trouvé @@ -96,6 +96,7 @@ Rechercher des contacts Rechercher des favoris + Search groups Importer des contacts diff --git a/app/src/main/res/values-hr/strings.xml b/app/src/main/res/values-hr/strings.xml index 8cacf87d..50f8acf4 100644 --- a/app/src/main/res/values-hr/strings.xml +++ b/app/src/main/res/values-hr/strings.xml @@ -18,7 +18,7 @@ Stvori novi kontakt Dodaj postojećem kontaktu Morate napraviti ovu aplikaciju zadanom aplikacijom za biranje da biste bili u mogućnosti koristiti blokirane brojeve. - Postavi na zadano + Postavi na zadano Nisu pronađeni kontakti @@ -96,6 +96,7 @@ Pretraži kontakte Pretraži favorite + Search groups Uvezi kontakte diff --git a/app/src/main/res/values-hu/strings.xml b/app/src/main/res/values-hu/strings.xml new file mode 100644 index 00000000..52f01ca6 --- /dev/null +++ b/app/src/main/res/values-hu/strings.xml @@ -0,0 +1,168 @@ + + Egyszerű Névjegyek + Névjegyek + Cím + Hozzáadás… + Módosítás… + Telefon tárhely + Telefon tárhely (a többi app számára nem látható) + Cégnév + Munkakör + Weboldal + SMS küldése + Email küldése + SMS küldése csoportnak + Email küldése csoportnak + %s hívása + A kívánt jogosultságok igénylése + Új névjegy hozzáadása + Hozzáadás meglévő névjegyhez + A zárolt telefonszámok használatához be kell állítani, hogy ez az app legyen az alapértelmezett tárcsázó. + Alapértelmezés beállítása + + + Nincs ilyen névjegy. + Nincs emailt tartalmazó névjegy. + Nincs telefonszámot tartalmazó névjegy. + + Új névjegy + Névjegy módosítása + Névjegy kiválasztása + Névjegyek kiválasztása + Keresztnév + Középső név + Vezetéknév + Becenév + + + Nincs ilyen csoport + Új csoport hozzáadása + Törlés a csoportból + Ez a csoport üres. + Névjegy felvétele + Ezen az eszközön nincsenek csoportok. + Csoport hozzáadása + Felvétel a csoportba + Csoport hozzáadása az accounthoz + + + Fényképkészítés + Fénykép kiválasztása + Fénykép törlése + + + Vezetéknév, keresztnév sorrend + Telefonszámok kijelzése a névjegylistán + Névjegy bélyeg kijelzése + Tárcsáző kijelzése a névjegylistán + Névjegyre kattintásra + Telefonhívás indítása + Részletek megjelenítése + A megjelenő mezők kiválasztása + Többszörösen felvett névjegyek kiszűrése + A megjelenő fülek kiválasztása + Névjegyek + Kedvencek + Jóváhagyás kérése telefonhívás indítása előtt + Csak telefonszámot tartalmazó névjegyek kijelzése + Betűk kijelzése a tárcsázón + + + Email + Otthon + Munkahely + Egyéb + + + Telefonszám + Mobil + Elsődleges telefonszám + Munkahelyi fax + Otthoni fax + Pager + Nincs ilyen telefonszám. + + + Születésnap + Évforduló + + + Úgy tűnik, hogy még nincsenek kedvencek felvéve. + Kedvencek felvétele + Hozzáadás a kedvencekhez + Törlés a kedvencek közül + Névjegyet csak a szerkesztő képernyőn lehet módosítani. + + + Névjegyek keresése + Kedvencek keresése + Csoportok keresése + + + Névjegyek importálása + Névjegyek exportálása + Névjegyek importálása .vcf fájlból + Névjegyek exportálása .vcf fájlba + Az import cél-accountja + Az export forrás-accountjai + Fájlnév (.vcf nélkül) + + + Tárcsázó + Telefonszám hozzáadása névjegyhez + + + Tárcsázó + Hívás + Bejövő hívás + Bejövő hívás innen… + Hívás folyamatban + Szétkapcsolt + Elutasítva + Hívásfogadás + + + A megjelenített mezők kiválasztása + Megszólítás + Toldalék + Telefonszámok + Emailek + Címek + Események (születésnapok, évfordulók) + Jegyzetek + Szervezet + Weboldalak + Csoportok + Névjegy account + Instant messaging (IM) + + + Zárolt telefonszámok kezelése + Nincs még zárolt szám. + Zárolt telefonszám hozzáadása + Telefonszám zárolása + Telefonszámok zárolása + Zárolt telefonszámok + + + Szeretném módosítani a névjegyekhez megjelenített mezők listáját. Lehetséges ez? + Igen. Navigálj a Beállítások -> A megjelenő mezők kiválasztása menűpontra. Itt kiválaszhatod a megjelenítendő mezőket. Néhány már alapértelmezés szerint sem jelenik meg, de itt más mezőket is találhatsz. + + + + Egy reklámmentes app névjegyek kezelésére, amelyik óvja a magánszférádat. + + Egy egyszerű app, amelyik az összes accountod névjegyeit képes kezelni. Bár a névjegyeket csak az eszközön tárolja, de szinkronizálható Google, vagy más accountokkal is. A kedvenceidet külön listán is kezelheted. + + Kezelhetsz vele email-címeket és eseményeket. Képes a névjegyeket többféle paraméter rendezni és szűrni. A megjelenítést beállíthatod vezetéknév, keresztnév sorrendben is. A színeket testreszabhtod. + + Nem kér szükségtelen jogosultságokat és nincs benne reklám. Teljes egészében nyílt forráskódú szoftver. + + Ez az app egy nagyobb sorozat része. A többi app elérhető a https://www.simplemobiletools.com weboldalon. + + + + diff --git a/app/src/main/res/values-id/strings.xml b/app/src/main/res/values-id/strings.xml new file mode 100644 index 00000000..3ed0c306 --- /dev/null +++ b/app/src/main/res/values-id/strings.xml @@ -0,0 +1,168 @@ + + Simple Contacts + Kontak + Alamat + Menyimpan… + Memperbarui… + Penyimpanan telepon + Penyimpanan telepon (tidak terlihat oleh aplikasi lain) + Perusahaan + Jabatan + Situs web + Kirim SMS ke kontak + Kirim surel ke kontak + Kirim SMS ke grup + Kirim surel ke grup + Panggil %s + Meminta izin yang diperlukan + Buat kontak baru + Tambah ke kontak yang ada + Anda harus mengatur aplikasi ini sebagai aplikasi dialer default untuk menggunakan fitur pemblokir nomor. + Tetapkan sebagai default + + + Tidak ada kontak yang ditemukan + Tidak ada kontak dengan alamat surel yang ditemukan + Tidak ada kontak dengan nomor telepon yang ditemukan + + Kontak baru + Sunting kontak + Pilih kontak + Pilih kontak + Nama depan + Nama tengah + Nama belakang + Nama panggilan + + + Tidak ada grup + Buat grup baru + Buang dari grup + Grup ini kosong + Tambah kontak + Tidak ada grup kontak di perangkat ini + Buat grup + Tambah ke grup + Buat grup di dalam akun + + + Ambil foto + Pilih foto + Buang foto + + + Nama dimulai dengan nama belakang + Tampilkan nomor telepon pada layar utama + Tampilkan foto kontak + Tampilkan tombol dial pada layar utama + Saat kontak diklik + Panggil kontak + Lihat detail kontak + Kelola ruas kontak yang ditampilkan + Coba sembunyikan duplikat kontak + Kelola tab yang ditampilkan + Kontak + Favorit + Tampilkan dialog konfirmasi panggilan sebelum melakukan panggilan + Hanya tampilkan kontak dengan nomor telepon + Tampilkan huruf pada tombol dial + + + Surel + Rumah + Kerja + Lainnya + + + Nomor + Ponsel + Utama + Faks Kerja + Faks Rumah + Pager + Tidak ada nomor telepon yang ditemukan + + + Ulang tahun + Hari jadi + + + Sepertinya anda belum menambahkan kontak favorit. + Tambah favorit + Tambah ke favorit + Buang dari favorit + Anda harus berada di layar Sunting untuk mengubah kontak + + + Cari kontak + Cari favorit + Search groups + + + Impor kontak + Ekspor kontak + Impor kontak dari berkas .vcf + Ekspor kontak ke berkas .vcf + Target sumber kontak + Sertakan sumber kontak + Nama berkas (tanpa .vcf) + + + Telepon + Tambah nomor ke kontak + + + Telepon + Memanggil + Panggilan masuk + Panggilan masuk dari… + Panggilan keluar + Terputus + Tolak + Jawab + + + Pilih ruas untuk ditampilkan + Awalan + Akhiran + Nomor telepon + Surel + Alamat + Acara (ulang tahun, hari jadi) + Catatan + Organisasi + Situs web + Grup + Sumber kontak + Pesan singkat (IM) + + + Kelola nomor yang diblokir + Anda tidak memblokir siapapun. + Tambahkan nomor yang diblokir + Blokir nomor + Blokir nomor + Nomor yang diblokir + + + Saya ingin mengubah ruas yang ditampilkan pada kontak. Bisakah saya melakukannya? + Ya, yang perlu anda lakukan adalah kunjungi Pengaturan -> Kelola ruas kontak yang ditampilkan. Lalu anda bisa memilih ruas yang ingin ditampilkan. Beberapa ruas dinonaktifkan secara bawaan, jadi anda mungkin akan menemukan yang baru di sana. + + + + Aplikasi untuk mengelola kontak tanpa iklan, menghargai privasi anda. + + Aplikasi sederhana untuk membuat dan mengelola kontak anda dari berbagai sumber. Kontak bisa disimpan hanya pada perangkat anda, tetapi juga disinkronisasikan melalui Google, atau akun lainnya. Anda bisa menampilkan kontak favorit anda pada daftar terpisah. + + Anda juga bisa menggunakannya untuk mengelola surel dan acara. Memiliki kemampuan untuk mengurutkan/menyaring menggunakan banyak parameter, dan secara opsional menampilkan nama belakang sebagai awalan nama. + + Tanpa iklan dan perizinan yang tidak perlu. Sepenuhnya sumber terbuka, dengan warna yang bisa disesuaikan. + + Aplikasi ini hanya salah satu bagian dari rangkaian aplikasi yang lebih besar. Anda bisa menemukan yang lainnya di https://www.simplemobiletools.com + + + + diff --git a/app/src/main/res/values-in/strings.xml b/app/src/main/res/values-in/strings.xml new file mode 100644 index 00000000..3ed0c306 --- /dev/null +++ b/app/src/main/res/values-in/strings.xml @@ -0,0 +1,168 @@ + + Simple Contacts + Kontak + Alamat + Menyimpan… + Memperbarui… + Penyimpanan telepon + Penyimpanan telepon (tidak terlihat oleh aplikasi lain) + Perusahaan + Jabatan + Situs web + Kirim SMS ke kontak + Kirim surel ke kontak + Kirim SMS ke grup + Kirim surel ke grup + Panggil %s + Meminta izin yang diperlukan + Buat kontak baru + Tambah ke kontak yang ada + Anda harus mengatur aplikasi ini sebagai aplikasi dialer default untuk menggunakan fitur pemblokir nomor. + Tetapkan sebagai default + + + Tidak ada kontak yang ditemukan + Tidak ada kontak dengan alamat surel yang ditemukan + Tidak ada kontak dengan nomor telepon yang ditemukan + + Kontak baru + Sunting kontak + Pilih kontak + Pilih kontak + Nama depan + Nama tengah + Nama belakang + Nama panggilan + + + Tidak ada grup + Buat grup baru + Buang dari grup + Grup ini kosong + Tambah kontak + Tidak ada grup kontak di perangkat ini + Buat grup + Tambah ke grup + Buat grup di dalam akun + + + Ambil foto + Pilih foto + Buang foto + + + Nama dimulai dengan nama belakang + Tampilkan nomor telepon pada layar utama + Tampilkan foto kontak + Tampilkan tombol dial pada layar utama + Saat kontak diklik + Panggil kontak + Lihat detail kontak + Kelola ruas kontak yang ditampilkan + Coba sembunyikan duplikat kontak + Kelola tab yang ditampilkan + Kontak + Favorit + Tampilkan dialog konfirmasi panggilan sebelum melakukan panggilan + Hanya tampilkan kontak dengan nomor telepon + Tampilkan huruf pada tombol dial + + + Surel + Rumah + Kerja + Lainnya + + + Nomor + Ponsel + Utama + Faks Kerja + Faks Rumah + Pager + Tidak ada nomor telepon yang ditemukan + + + Ulang tahun + Hari jadi + + + Sepertinya anda belum menambahkan kontak favorit. + Tambah favorit + Tambah ke favorit + Buang dari favorit + Anda harus berada di layar Sunting untuk mengubah kontak + + + Cari kontak + Cari favorit + Search groups + + + Impor kontak + Ekspor kontak + Impor kontak dari berkas .vcf + Ekspor kontak ke berkas .vcf + Target sumber kontak + Sertakan sumber kontak + Nama berkas (tanpa .vcf) + + + Telepon + Tambah nomor ke kontak + + + Telepon + Memanggil + Panggilan masuk + Panggilan masuk dari… + Panggilan keluar + Terputus + Tolak + Jawab + + + Pilih ruas untuk ditampilkan + Awalan + Akhiran + Nomor telepon + Surel + Alamat + Acara (ulang tahun, hari jadi) + Catatan + Organisasi + Situs web + Grup + Sumber kontak + Pesan singkat (IM) + + + Kelola nomor yang diblokir + Anda tidak memblokir siapapun. + Tambahkan nomor yang diblokir + Blokir nomor + Blokir nomor + Nomor yang diblokir + + + Saya ingin mengubah ruas yang ditampilkan pada kontak. Bisakah saya melakukannya? + Ya, yang perlu anda lakukan adalah kunjungi Pengaturan -> Kelola ruas kontak yang ditampilkan. Lalu anda bisa memilih ruas yang ingin ditampilkan. Beberapa ruas dinonaktifkan secara bawaan, jadi anda mungkin akan menemukan yang baru di sana. + + + + Aplikasi untuk mengelola kontak tanpa iklan, menghargai privasi anda. + + Aplikasi sederhana untuk membuat dan mengelola kontak anda dari berbagai sumber. Kontak bisa disimpan hanya pada perangkat anda, tetapi juga disinkronisasikan melalui Google, atau akun lainnya. Anda bisa menampilkan kontak favorit anda pada daftar terpisah. + + Anda juga bisa menggunakannya untuk mengelola surel dan acara. Memiliki kemampuan untuk mengurutkan/menyaring menggunakan banyak parameter, dan secara opsional menampilkan nama belakang sebagai awalan nama. + + Tanpa iklan dan perizinan yang tidak perlu. Sepenuhnya sumber terbuka, dengan warna yang bisa disesuaikan. + + Aplikasi ini hanya salah satu bagian dari rangkaian aplikasi yang lebih besar. Anda bisa menemukan yang lainnya di https://www.simplemobiletools.com + + + + diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index bd5eaf2c..d2e62748 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -18,7 +18,7 @@ Crea un nuovo contatto Aggiungi a un contatto esistente È necessario impostare quest\'app come predefinita per utilizzare i numeri bloccati. - Imposta come predefinita + Imposta come predefinita Nessun contatto trovato @@ -65,7 +65,7 @@ Preferiti Mostra un messaggio di conferma prima di iniziare una chiamata Mostra solamente i contatti con almeno un numero telefonico - Show letters on the dialpad + Mostra lettere nel compositore Email @@ -96,6 +96,7 @@ Cerca contatti Cerca preferiti + Search groups Importa contatti diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index 6d2195dc..8fad71b6 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -18,7 +18,7 @@ 新しい連絡先を作成 既存の連絡先に追加 You have to make this app the default dialer app to make use of blocked numbers. - Set to default + Set as default 連絡先が見つかりません @@ -96,6 +96,7 @@ 連絡先を検索 お気に入りを検索 + Search groups 連絡先をインポート diff --git a/app/src/main/res/values-ko-rKR/strings.xml b/app/src/main/res/values-ko-rKR/strings.xml index 2761fc9c..7560f900 100644 --- a/app/src/main/res/values-ko-rKR/strings.xml +++ b/app/src/main/res/values-ko-rKR/strings.xml @@ -18,7 +18,7 @@ Create new contact Add to an existing contact You have to make this app the default dialer app to make use of blocked numbers. - Set to default + Set as default No contacts found @@ -96,6 +96,7 @@ 연락처 검색 자주쓰는 연락처 검색 + Search groups 연락처 가져오기 diff --git a/app/src/main/res/values-lt/strings.xml b/app/src/main/res/values-lt/strings.xml index ba48795d..8f750c9d 100644 --- a/app/src/main/res/values-lt/strings.xml +++ b/app/src/main/res/values-lt/strings.xml @@ -18,7 +18,7 @@ Create new contact Add to an existing contact You have to make this app the default dialer app to make use of blocked numbers. - Set to default + Set as default No contacts found @@ -96,6 +96,7 @@ Ieškoti kontaktų Ieškoti mėgiamiausiųjų + Search groups Importuoti kontaktus diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml new file mode 100644 index 00000000..f441b308 --- /dev/null +++ b/app/src/main/res/values-nl/strings.xml @@ -0,0 +1,168 @@ + + Eenvoudig Adresboek + Contacten + Addres + Toevoegen… + Updaten… + Telefoonopslag + Telefoonopslag (niet zichtbaar voor andere apps) + Bedrijf + Titel + Website + SMS naar contacten sturen + E-mail naar contacten sturen + SMS naar groep sturen + E-mail naar groep sturen + %s bellen + Om benodigde machtigingen vragen + Nieuw contact + Aan bestaand contact toevoegen + Maak van deze app de standaardapp voor bellen om nummers te kunnen blokkeren. + Als standaard instellen + + + Geen contacten gevonden + Geen contacten met e-mailadressen gevonden + Geen contacten met telefoonnummers gevonden + + Nieuw contact + Contact bewerken + Contact kiezen + Contacten kiezen + Voornaam + Tweede voornaam + Achternaam + Bijnaam + + + Geen groepen + Nieuwe groep + Uit groep verwijderen + Deze groep is leeg + Contacten toevoegen + Er zijn geen contactgroepen gevonden + Groep aanmaken + Aan groep toevoegen + Groep in account aanmaken + + + Foto maken + Foto kiezen + Foto verwijderen + + + Beginnen met achternaam + Telefoonnummers in hoofdscherm tonen + Contactafbeelding tonen + Knop voor toetsenblok in hoofdscherm tonen + Bij klikken op een contact + Contact bellen + Details tonen + Contactvelden tonen/verbergen + Probeer dubbele contacten weg te filteren + Tabs tonen/verbergen + Contacten + Favorieten + Om bevestiging vragen voor het bellen + Alleen contacten met telefoonnummers tonen + Letters op het toetsenblok tonen + + + E-mail + Thuis + Werk + Overig + + + Nummer + Mobiel + Standaard + Fax Werk + Fax Thuis + Pager + Geen telefoonnummers gevonden + + + Verjaardag + Jubileum + + + Er zijn nog geen favorieten toegevoegd. + Favorieten toevoegen + Aan favorieten toevoegen + Uit favorieten verwijderen + Ga naar Contact bewerken om gegevens aan te passen + + + Contacten zoeken + Favorieten zoeken + Groepen zoeken + + + Contacten importeren + Contacten exporteren + Contacten importeren uit .vcf-bestand + Contacten exporteren naar .vcf-bestand + Opslaan in + Contacten exporteren vanuit + Bestandsnaam (zonder .vcf) + + + Toetsenblok + Nummer aan contact toevoegen + + + Bellen + Bellen + Inkomend gesprek + Inkomend gesprek van… + Lopend gesprek + Verbinding verbroken + Afwijzen + Opnemen + + + Kies zichtbare velden + Voorvoegsel + Achtervoegsel van naam + Telefoonnummers + E-mailadressen + Adressen + Datums (verjaardagen, jubileums) + Notities + Organisatie + Websites + Groepen + Account + Instant messaging (IM) + + + Geblokkeerde nummers beheren + Geen geblokkeerde nummers. + Geblokkeerd nummer toevoegen + Nummer blokkeren + Nummers blokkeren + Geblokkeerde nummers + + + Ik wil de zichtbare contactvelden aanpassen. Kan ik dit doen? + Ja, dat kan via Instellingen -> Contactvelden tonen/verbergen. Sommige velden zijn standaard verborgen, dus er zijn via deze optie meer velden te ontdekken. + + + + Een privacyvriendelijke advertentievrije app om uw contacten te beheren. + + Een eenvoudige app om contacten aan te maken en te beheren. Contacten kunnen lokaal opgeslagen worden, of gesynchroniseerd via Google en andere accounts. Favoriete contacten kunnen in een aparte lijst worden getoond. + + De app is ook te gebruiken voor het beheren van e-mailadressen en gebeurtenissen gekoppeld aan contacten. Sorteren en filteren is mogelijk op basis van verschillende parameters en zowel voor- als achternaam kan als eerste worden getoond. + + Bevat geen advertenties of onnodige machtigingen. Volledig open-source. Kleuren van de app kunnen worden aangepast. + + Deze app is onderdeel van een grotere verzameling. Vind de andere apps op https://www.simplemobiletools.com + + + + diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml new file mode 100644 index 00000000..ea547b9a --- /dev/null +++ b/app/src/main/res/values-pl/strings.xml @@ -0,0 +1,168 @@ + + Proste Kontakty + Kontakty + Adres + Dodawanie... + Aktualizowanie... + Pamięć telefonu + Pamięć telefonu (niewidoczna dla innych aplikacji) + Firma + Stanowisko + Strona internetowa + Wyślij SMS-a do kontaktów + Wyślij e-maila do kontaktów + Wyślij SMS-a do grupy + Wyślij e-maila do grupy + Zadzwoń do: %s + Wymagaj koniecznych uprawnień + Utwórz nowy kontakt + Dodaj do istniejącego kontaktu + Musisz ustawić tę aplikację jako domyślną aplikację telefoniczną, aby móc korzystać z funkcji blokowania numerów. + Ustaw jako domyślną + + + Nie znaleziono kontaktów + Nie znaleziono kontaktów z adresami e-mail + Nie znaleziono kontaktów z numerami telefonów + + Nowy kontakt + Edytuj kontakt + Wybierz kontakt + Wybierz kontakty + Pierwsze imię + Drugie imię + Nazwisko + Pseudonim + + + Brak grup + Utwórz nową grupę + Usuń z grupy + Ta grupa jest pusta + Dodaj kontakty + Nie ma grup kontaktów na urządzeniu + Utwórz grupę + Dodaj do grupy + Utwórz grupę na koncie + + + Zrób zdjęcie + Wybierz zdjęcie + Usuń zdjęcie + + + Zacznij nazwę od nazwiska + Pokazuj numery telefonów na ekranie głównym + Pokazuj miniatury kontaktów + Pokazuj przycisk panelu wybierania numeru na ekranie głównym + Przy naciśnięciu kontaktu + Zadzwoń do konataktu + Pokaż szczegóły kontaktu + Zarządzaj pokazywanymi polami kontaktu + Spróbuj odfiltrować zduplikowane kontakty + Zarządzaj pokazywanymi sekcjami + Kontakty + Ulubione + Pokazuj okno potwierdzenia zadzwonienia przed zainicjonowaniem połączenia + Pokazuj wyłącznie kontakty z numerami telefonów + Pokazuj litery na panelu wybierania + + + E-mail + Dom + Praca + Inny + + + Numer + Komórkowy + Główny + Służbowy faks + Domowy faks + Pager + Nie znaleziono numeru telefonu + + + Urodziny + Rocznica + + + Wygląda na to, że nie dodałeś jeszcze żadnego ulubionego kontaktu. + Dodaj ulubione + Dodaj do ulubionych + Usuń z ulubionych + Musisz wejść do ekranu edycji, aby zmodyfikować kontakt + + + Szukaj kontaktów + Szukaj ulubionych + Search groups + + + Importuj kontakty + Eksportuj kontakty + Importuj kontakty z pliku .vcf + Eksportuj kontakty do pliku .vcf + Wybierz miejsce przechowywania kontaktów + Obejmuj kontakty z następujących źródeł: + Nazwa pliku (bez .vcf) + + + Panel wybierania + Dodaj numer do kontaktu + + + Dialer + Dzwonienie + Połączenie przychodzące + Połączenie przychodzące od… + Połączenie wychodzące + Rozłączony + Odrzuć + Odpowiedz + + + Wybierz pola do pokazywania + Prefiks + Sufiks + Numery telefonów + E-maile + Adresy + Wydarzenia (urodziny, rocznice) + Notatki + Organizacja + Strony internetowe + Grupy + Miejsce przechowywania kontaktu + Komunikator + + + Zarządzaj zablokowanymi numerami + Nie blokujesz nikogo. + Dodaj numer do blokowania + Zablokuj numer + Zablokuj numery + Zablokowane numery + + + Chcę zmienić, które pola są widoczne w kontaktach. Czy mogę to zrobić? + Tak, wszystko, co musisz zrobić, to wejść do Ustawień -> Zarządzaj pokazywanymi polami kontaktu. Możesz tam wybrać, które pola mają być wyświetlane. Niektóre z nich są nawet domyślnie wyłączone, więc możesz znaleźć tam wiele z nich nowych. + + + + Aplikacja do zarządzania Twoimi kontaktami, bez reklam, szanująca prywatność. + + Prosta aplikacja do tworzenia lub zarządzania Twoimi kontaktami przechowywanymi w różnych miejscach. Kontakty mogą być przechowywane tylko na Twoim urządzeniu, ale również synchronizowane przez konto Google lub inne konta. Możesz wyświetlać Twoje ulubione kontakty na oddzielnej liście. + + Możesz użyć jej także do zarządzania e-mailami użytkowników i wydarzeniami. Jest zdolna do sortowania/filtrowania według wielu parametrów, opcjonalnie do wyświetlania nazwiska jako imienia. + + Nie zawiera reklam oraz niekoniecznych uprawnień. Jest w pełni otwartoźródłowa i w pełni podatna na kolorowanie. + + Ta aplikacja jesst tylko częścią większej serii aplikacji. Możesz znaleźć pozostałe na https://www.simplemobiletools.com + + + + diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml new file mode 100644 index 00000000..ce4ae00f --- /dev/null +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -0,0 +1,168 @@ + + Simple Contacts + Contatos + Endereço + Inserindo… + Atualizando… + Armazenamento do telefone + Armazenamento do telefone (não visível por outros aplicativos) + Empresa + Cargo + Página Web + Enviar SMS aos contatos + Enviar e-mail aos contatos + Enviar SMS ao grupo + Enviar e-mail ao grupo + Ligar para %s + Pedir as permissões necessárias + Criar novo contato + Adicionar um contato existente + Você precisa tornar este aplicativo padrão para poder bloquear números. + Definir como padrão + + + Nenhum contato encontrado + Não foram encontrados contatos com e-mails + Não foram encontrados contatos com números de telefone + + Novo contato + Editar contato + Selecionar contato + Selecionar contatos + Primeiro nome + Nome do meio + Sobrenome + Apelido + + + Nenhum grupo + Criar um novo grupo + Remover do grupo + Este grupo está vazio + Adicionar contatos + Não há grupos de contatos no dispositivo + Criar grupo + Adicionar ao grupo + Criar grupo para a conta + + + Tirar foto + Escolher foto + Remover foto + + + Ordenar por sobrenome + Mostrar número de telefone na tela principal + Mostrar miniatura do contato + Mostrar o botão do discador na tela principal + Ao tocar no contato + Ligar para o contato + Exibir detalhes do contato + Gerenciar os campos visíveis + Tentar filtrar contatos duplicados + Gerenciar abas visíveis + Contatos + Favoritos + Mostrar diálogo para confirmar a chamada antes de ligar + Mostar apenas os contatos com número de telefone + Mostrar letras no discador + + + E-mail + Residencial + Comercial + Outro + + + Número + Celular + Principal + Fax Comercial + Fax Residencial + Pager + Não foi encontrado nenhum número de telefone + + + Data de Nascimento + Data Especial + + + Parece que você ainda não adicionou nenhum contato favorito. + Adicionar favoritos + Adicionar aos favoritos + Remover dos favoritos + Você deve estar na tela de edição para modificar um contato + + + Procurar contatos + Procurar favoritos + Search groups + + + Importar contatos + Exportar contatos + Importar contatos de um arquivo .vcf + Exportar contatos para um arquivo .vcf + Destino da fonte de contatos + Incluir fonte de contatos + Nome do arquivo (sem .vcf) + + + Discador + Adicionar número ao contato + + + Discador + Chamando + Chamada recebida + Chamada recebida de… + Chamada efetuada + Desligada + Recusar + Atender + + + Selecionar os campos a mostrar + Prefixo + Sufixo + Números de telefone + E-mails + Endereços + Eventos (aniversários, datas especiais) + Notas + Empresa + Páginas Web + Grupos + Origem do contato + Mensageiro instantâneo (MI) + + + Gerenciar números bloqueados + Não há números bloqueados. + Adicionar um número a bloquear + Bloquear número + Bloquear números + Números bloqueados + + + Quero alterar os campos visíveis dos contatos. Posso fazer isso? + Sim, você só precisa modificar as definições em Configurações -> Gerenciar os campos visíveis. Alguns campos estão desmarcados por padrão, então você encontrará alguns novos por lá. + + + + Um aplicativo para gerenciar os seus contatos que respeita a sua privacidade. + + Um aplicativo simples para criar ou gerenciar seus contatos a partir de qualquer origem. Os contatos podem ser armazenados apenas no seu dispositivo, mas também podem ser sincronizados através do Google ou outras contas. Seus contatos favoritos podem ser apresentados em uma lista separada. + + Você também pode usá-lo para gerenciar os eventos e e-mails do usuário. Tem a capacidade de ordenar/filtrar através de diversos parâmetros e, opcionalmente, apresentar o sobrenome antes do primeiro nome. + + Não contém anúncios e permissões desnecessárias. É totalmente open source e permite a personalização das cores. + + Este aplicativo é apenas uma parte de um enorme conjunto de aplicativos. Você poderá encontrar todos os outros em https://www.simplemobiletools.com + + + + diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml index 113c0b58..04f8f4cc 100644 --- a/app/src/main/res/values-pt/strings.xml +++ b/app/src/main/res/values-pt/strings.xml @@ -18,7 +18,7 @@ Criar novo contacto Adicionar a contacto existente Tem que tornar esta a aplicação padrão para poder bloquear números. - Definir como padrão + Definir como padrão Não existem contactos @@ -65,7 +65,7 @@ Favoritos Mostrar diálogo para confirmar a chamada Mostrar apenas contactos com número de telefone - Show letters on the dialpad + Mostrar letras no marcador E-mail @@ -94,8 +94,9 @@ Tem que estar no ecrã de edição para alterar um contacto - Pesquisar contactos - Pesquisar favoritos + Pesquisar nos contactos + Pesquisar nos favoritos + Search groups Importar contactos @@ -149,7 +150,7 @@ - An app for managing your contacts without ads, respecting your privacy. + Aplicação para gerir os seus contactos, sem anúncios e com total privacidade. Uma aplicação básica para criar e gerir contactos. Pode utilizar a aplicação guardar os contactos localmente, na sua conta Google ou em outro tipo de contas. Pode mostrar os contactos favoritos numa lista distinta. diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 668f2dc6..ecde5bfd 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -18,7 +18,7 @@ Создать новый контакт Добавить к существующему контакту Вы должны сделать \"Simple Contacts\" приложением по умолчанию для набора номера для использования блокировки номеров. - Сделать по умолчанию + Сделать по умолчанию Контакты не найдены @@ -96,6 +96,7 @@ Поиск контактов Поиск избранных + Search groups Импортировать контакты diff --git a/app/src/main/res/values-sk/strings.xml b/app/src/main/res/values-sk/strings.xml index c8f008e4..b3d0d640 100644 --- a/app/src/main/res/values-sk/strings.xml +++ b/app/src/main/res/values-sk/strings.xml @@ -18,7 +18,7 @@ Vytvoriť nový kontakt Pridať k existujúcemu kontaktu Pre použitie blokovania čísel musíte nastaviť aplikáciu ako predvolenú pre správu hovorov. - Nastaviť ako predvolenú + Nastaviť ako predvolenú Nenašli sa žiadne kontakty @@ -96,6 +96,7 @@ Hľadať v kontaktoch Hľadať medzi obľúbenými + Hľadať medzi skupinami Importovať kontakty diff --git a/app/src/main/res/values-sv/strings.xml b/app/src/main/res/values-sv/strings.xml index 35b0b3fd..abcfb01b 100644 --- a/app/src/main/res/values-sv/strings.xml +++ b/app/src/main/res/values-sv/strings.xml @@ -18,7 +18,7 @@ Skapa ny kontakt Lägg till i en befintlig kontakt Du måste ställa in den här appen som standardtelefonapp för att kunna använda blockerade nummer. - Ange som standard + Ange som standard Inga kontakter hittades @@ -96,6 +96,7 @@ Sök efter kontakter Sök efter favoriter + Search groups Importera kontakter diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index b254a9c3..a1472bdd 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -18,7 +18,7 @@ Yeni kişi oluştur Mevcut bir kişiye ekle You have to make this app the default dialer app to make use of blocked numbers. - Set to default + Set as default Kişi bulunamadı @@ -96,6 +96,7 @@ Kişileri ara Favorileri ara + Search groups Kişileri içe aktar diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml new file mode 100644 index 00000000..4f0eb85d --- /dev/null +++ b/app/src/main/res/values-uk/strings.xml @@ -0,0 +1,168 @@ + + Просто Контакти + Контакти + Адреса + Триває додавання… + Триває оновлення… + Пам\'ять пристрою + Пам\'ять пристрою (прихована від інших додатків) + Компанія + Посада + Сайт + Надіслати SMS контактам + Надіслати електронний лист контактам + Надіслати SMS групі контактів + Надіслати електронний лист групі контактів + Телефонувати %s + Запит на необхідні дозволи + Створити новий контакт + Додати до існуючого контакту + Щоб використовувати функцію блокування номерів, вам необхідно встановити цей додаток як стандартний для роботи з контактами. + Встановити додаток як стандартний + + + Контактів не знайдено + Не знайдено контактів з електронною поштою + Не знайдено контактів з телефонними номерами + + Новий контакт + Редагувати контакт + Обрати контакт + Обрати контакти + Ім\'я + По-батькові + Прізвище + Прізвисько + + + Немає груп + Створити нову групу + Видалити з групи + Ця група не містить контактів + Додати контакти + На пристроєві немає груп контактів + Створити групу + Додати до групи + Створити групу в обліковому записі + + + Зробити фото + Обрати фото + Видалити фото + + + Показувати спочатку прізвище + Показувати телефонні номери у списку контактів + Показувати фото контакту + Показувати панель набору номерів на головному екрані + При натисканні на контакт + Телефонувати контакту + Переглянути деталі контакту + Керування полями контактів, що відображаються + Фільтрувати контакти, що дублюються + Керування вкладками, що відображаються + Контакти + Улюблені + Показувати діалог підтвердження виклику + Показувати лише контакти з телефонними номерами + Показувати літери на панелі набору + + + Електронна пошта + Домашній + Робочий + Інше + + + Номер + Мобільний + Основний + Робочий факс + Домашній факс + Пейджер + Номер не знайдено + + + День народження + Річниця + + + Здається, ви ще не додали улюблені контакти. + Додати улюблені + Додати до улюблених + Видалити з улюблених + Для того, щоб змінити контакт, необхідно відкрити меню редагування + + + Пошук контактів + Пошук улюблених + Search groups + + + Імпортувати контакти + Експортувати контакти + Імпортувати контакти з .vcf файлу + Експортувати контакти у .vcf файл + Цілеве джерело контактів + Приєднати походження контактів + Ім\'я файлу (без .vcf) + + + Панель набору + Додати номер до контакту + + + Набір номера + Телефоную + Вхідний виклик + Вхідний виклик від… + Триває виклик + Роз\'єднано + Відхилити + Відповісти + + + Обрати поля контактних даних + Префікс + Суфікс + Телефонні номери + Електронна пошта + Адреси + Події (дні народжень, річниці) + Нотатки + Організація + Веб-сайт + Групи + Походження контакту + Мессенджери + + + Керувати блокованими номерами + Немає блокованих номерів. + Додати номер до блокованих + Блокувати номер + Блокувати номери + Заблоковані номери + + + Я хочу змінити налаштування видимих полів контактних даних. Чи можу я це зробити? + Так, вам необхідно перейти у Налаштування -> Керування полями контактів, що відображаються. Там ви можете обрати поля, що відображатимуться. Деякі з них у стандартному режимі деактивовано, а отже ви можете знайти там нові. + + + + Додаток для керування вашими контактами, без реклами, з увагою на приватності. + + Простий додаток для створення або керування вашими контактами з будь-якого джерела. Контакти можна зберігати лише на вашому пристроєві, а також синхронізувати з допомогою Google чи інших служб. Ви можете розмістити ваші улюблені контакти в окремому списку. + + Ви також можете використовувати його для керування електронними поштовими адресами та подіями. У нього є можливість сортувати/фільтрувати за численними параметрами, за бажанням відображати прізвище як ім\'я. + + Цей додаток не буде показувати рекламу, потрібні лише найнеобхідніші дозволи. Додаток має повністю відкритий програмний код, кольори оформлення можна легко налаштувати. + + Просто Контакти - це один із ряду додатків від Simple Mobile Tools. Інші додатки можна знайти тут: https://www.simplemobiletools.com + + + + diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml new file mode 100644 index 00000000..e186c877 --- /dev/null +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -0,0 +1,168 @@ + + 简约通讯录 + 简约通讯录 + 地址 + 添加中… + 更新中… + 手机空间 + 手机空间 (其他程序不可见) + 公司 + 职位 + 网站 + 发送短信给联系人 + 发送电子邮件给联系人 + 发送短信给群组 + 发送电子邮件给群组 + 打电话给 %s + 请求必要的权限 + 建立新联系人 + 添加至已存在的联系人 + 你必须将这应用程序设为默认的拨号程序来使用黑名单。 + 设为默认 + + + 未发现联系人 + 未发现含有电子邮箱的联系人 + 未发现含有电话号码的联系人 + + 新联系人 + 编辑联系人 + 选择联系人 + 选择联系人 + 名字 + 中间名 + 姓氏 + 昵称 + + + 没有群组 + 建立一个新群组 + 从群组内移除 + 这群组是空白的 + 添加联系人 + 设备内没有联系人群组 + 建立群组 + 添加到群组 + 在帐号下建立群组 + + + 拍照 + 选择照片 + 移除照片 + + + 姓氏在前 + 主页面显示电话号码 + 显示联系人缩图 + 在主页面显示拨号按钮 + 点击联系人 + 打电话给联系人 + 显示联系人资料 + 管理显示的联系人栏位 + 试着过滤重复的联系人 + 管理显示的页面 + 联系人 + 我的收藏 + 开始通话前显示通话确认框 + 只显示含有电话话码的联系人 + 在拨号界面上显示字母 + + + 电子邮箱 + 住家 + 工作 + 其它 + + + 号码 + 手机 + 主用 + 工作传真 + 住家传真 + 呼叫器 + 未发现电话号码 + + + 生日 + 纪念日 + + + 你似乎还没加入任何我的收藏联系人。 + 添加我的收藏 + 加入我的收藏 + 从我的收藏移除 + 你必须在编辑页面去修改联系人 + + + 搜索联系人 + 搜索我的收藏 + Search groups + + + 导入联系人 + 导出联系人 + 从.vcf文件导入联系人 + 导出联系人成.vcf文件 + 联系人来源 + 包含联系人来源 + 文件名称 (不含.vcf) + + + 拨号界面 + 添加号码至通讯录 + + + 拨号器 + 拨号中 + 来电 + 通话来自于… + 持续通话 + 未接电话 + 挂断电话 + 回拨 + + + 选择要显示的栏位 + 前缀 + 后缀 + 电话号码 + 电子邮箱 + 地址 + 活动 (生日、纪念日) + 笔记 + 组织 + 网站 + 群组 + 联系人来源 + 即时通讯 (IM) + + + 管理黑名单 + 你的黑名单为空 + 添加黑名单号码 + 加入黑名单 + 加入黑名单 + 黑名单 + + + 我想要更改在通讯录会看到哪些栏位。我能这么做吗? + 可以,你要做的是到[设置] -> [管理显示的联系人栏位]。在那里,你可以选择应该看到什么栏位。其中有些甚至默认是关闭的,所以你可能会在那里发现一些新的。 + + + + 一个没有广告的通讯录应用程序,用来管理联系人,并且尊重您的隐私。 + + 一个用来从任何来源建立或管理联系人的简约应用程序。联系人只能储存于你的设备上,不过也能透过Google或其他帐号来同步。你能将我的收藏联系人显示在独立名单上。 + + 你也能用来管理使用者信箱和活动。它能够以多项参数来排序/筛选,以及选择将姓氏显示在名字前面。 + + 不包含广告及非必要的权限,而且完全开放源代码,并提供自定义颜色。 + + 这程序只是一系列众多应用程序的其中一项,你可以在这发现更多 https://www.simplemobiletools.com + + + + diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index 10da0ad2..1245421a 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -18,7 +18,7 @@ 建立新聯絡人 添加至已存在的聯絡人 你必須將這應用程式設為預設的撥號程式來使用黑名單。 - 設為預設 + 設為預設 未發現聯絡人 @@ -65,7 +65,7 @@ 我的最愛 開始通話前顯示通話確認框 只顯示含有電話話碼的聯絡人 - Show letters on the dialpad + 在撥號畫面上顯示字母 電子信箱 @@ -96,6 +96,7 @@ 搜尋聯絡人 搜尋我的最愛 + Search groups 匯入聯絡人 diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index e5a33be5..cb118ca8 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -1,7 +1,7 @@ - 80dp - 45dp + 88dp + 48dp 40dp 52dp 56dp diff --git a/app/src/main/res/values/donottranslate.xml b/app/src/main/res/values/donottranslate.xml index f54cf156..6bd73043 100644 --- a/app/src/main/res/values/donottranslate.xml +++ b/app/src/main/res/values/donottranslate.xml @@ -1,5 +1,6 @@ + com.simplemobiletools.contacts.pro IM AIM diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 4c4c31dc..9ab34515 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -18,7 +18,7 @@ Create new contact Add to an existing contact You have to make this app the default dialer app to make use of blocked numbers. - Set to default + Set as default No contacts found @@ -96,6 +96,7 @@ Search contacts Search favorites + Search groups Import contacts @@ -149,7 +150,7 @@ - Apka na správu vašich kontaktov bez reklám, rešpektujúca vaše súkromie. + An app for managing your contacts without ads, respecting your privacy. A simple app for creating or managing your contacts from any source. The contacts can be stored on your device only, but also synchronized via Google, or other accounts. You can display your favorite contacts on a separate list. diff --git a/build.gradle b/build.gradle index 266ccd46..b4fdb49c 100644 --- a/build.gradle +++ b/build.gradle @@ -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.3.11' + ext.kotlin_version = '1.3.41' repositories { google() @@ -9,7 +9,7 @@ buildscript { } dependencies { - classpath 'com.android.tools.build:gradle:3.2.1' + classpath 'com.android.tools.build:gradle:3.4.2' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" // NOTE: Do not place your application dependencies here; they belong diff --git a/fastlane/metadata/android/en-US/images/featureGraphic.png b/fastlane/metadata/android/en-US/images/featureGraphic.png index bb47ee95..4394334e 100644 Binary files a/fastlane/metadata/android/en-US/images/featureGraphic.png and b/fastlane/metadata/android/en-US/images/featureGraphic.png differ diff --git a/fastlane/metadata/android/en-US/images/phoneScreenshots/app.png b/fastlane/metadata/android/en-US/images/phoneScreenshots/app.png index 8a75c203..340d984a 100644 Binary files a/fastlane/metadata/android/en-US/images/phoneScreenshots/app.png and b/fastlane/metadata/android/en-US/images/phoneScreenshots/app.png differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 503fd67b..d913a229 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Tue Sep 25 13:09:34 CEST 2018 +#Thu May 02 12:41:18 CEST 2019 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-5.4-all.zip