Merge pull request #28 from SimpleMobileTools/master

upd
This commit is contained in:
solokot 2020-03-06 23:25:30 +03:00 committed by GitHub
commit 4a7e6edfff
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
73 changed files with 1319 additions and 437 deletions

23
.editorconfig Normal file
View file

@ -0,0 +1,23 @@
# Copying and distribution of this file, with or without modification,
# are permitted in any medium without royalty provided this notice is
# preserved. This file is offered as-is, without any warranty.
# Names of contributors must not be used to endorse or promote products
# derived from this file without specific prior written permission.
# EditorConfig
# http://EditorConfig.org
# top-most EditorConfig file
root = true
# LF end-of-line, insert an empty new line and UTF-8
[*]
end_of_line = lf
insert_final_newline = true
charset = utf-8
indent_style = space
indent_size = 4
continuation_indent_size = 8
[*.xml]
continuation_indent_size = 4

View file

@ -1,6 +1,20 @@
Changelog
==========
Version 6.7.0 *(2020-02-05)*
----------------------------
* Improved the side scrollbar by adding letters to it on some places
* Allow changing the font size in the app settings
* Trigger speed dial only if no number has been written yet
Version 6.6.0 *(2020-01-22)*
----------------------------
* Added an initial Speed dial implementation, can be customized in the app settings
* Properly color the status bar icons at light themes
* Many different stability, translation and UX improvements
Version 6.5.2 *(2020-01-04)*
----------------------------

View file

@ -10,15 +10,15 @@ if (keystorePropertiesFile.exists()) {
}
android {
compileSdkVersion 28
buildToolsVersion "28.0.3"
compileSdkVersion 29
buildToolsVersion "29.0.2"
defaultConfig {
applicationId "com.simplemobiletools.contacts.pro"
minSdkVersion 21
targetSdkVersion 28
versionCode 55
versionName "6.5.2"
targetSdkVersion 29
versionCode 57
versionName "6.7.0"
setProperty("archivesBaseName", "contacts")
}
@ -57,10 +57,11 @@ android {
}
dependencies {
implementation 'com.simplemobiletools:commons:5.21.24'
implementation 'com.simplemobiletools:commons:5.22.10'
implementation 'joda-time:joda-time:2.10.1'
implementation 'androidx.constraintlayout:constraintlayout:2.0.0-beta2'
implementation 'com.googlecode.ez-vcard:ez-vcard:0.10.5'
implementation 'com.github.tibbi:IndicatorFastScroll:d615a5c141'
kapt "androidx.room:room-compiler:2.2.2"
implementation "androidx.room:room-runtime:2.2.2"

View file

@ -30,9 +30,10 @@
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_launcher_name"
android:requestLegacyExternalStorage="true"
android:roundIcon="@mipmap/ic_launcher"
android:theme="@style/AppTheme"
android:supportsRtl="true">
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity
android:name=".activities.SplashActivity"

View file

@ -27,10 +27,12 @@ import com.simplemobiletools.contacts.pro.helpers.KEY_PHONE
import com.simplemobiletools.contacts.pro.helpers.LOCATION_DIALPAD
import com.simplemobiletools.contacts.pro.helpers.REQUEST_CODE_SET_DEFAULT_DIALER
import com.simplemobiletools.contacts.pro.models.Contact
import com.simplemobiletools.contacts.pro.models.SpeedDial
import kotlinx.android.synthetic.main.activity_dialpad.*
class DialpadActivity : SimpleActivity() {
var contacts = ArrayList<Contact>()
private var contacts = ArrayList<Contact>()
private var speedDialValues = ArrayList<SpeedDial>()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
@ -40,6 +42,8 @@ class DialpadActivity : SimpleActivity() {
return
}
speedDialValues = config.getSpeedDialValues()
dialpad_0_holder.setOnClickListener { dialpadPressed("0", it) }
dialpad_1.setOnClickListener { dialpadPressed("1", it) }
dialpad_2.setOnClickListener { dialpadPressed("2", it) }
@ -50,6 +54,17 @@ class DialpadActivity : SimpleActivity() {
dialpad_7.setOnClickListener { dialpadPressed("7", it) }
dialpad_8.setOnClickListener { dialpadPressed("8", it) }
dialpad_9.setOnClickListener { dialpadPressed("9", it) }
dialpad_1.setOnLongClickListener { speedDial(1); true }
dialpad_2.setOnLongClickListener { speedDial(2); true }
dialpad_3.setOnLongClickListener { speedDial(3); true }
dialpad_4.setOnLongClickListener { speedDial(4); true }
dialpad_5.setOnLongClickListener { speedDial(5); true }
dialpad_6.setOnLongClickListener { speedDial(6); true }
dialpad_7.setOnLongClickListener { speedDial(7); true }
dialpad_8.setOnLongClickListener { speedDial(8); true }
dialpad_9.setOnLongClickListener { speedDial(9); true }
dialpad_0_holder.setOnLongClickListener { dialpadPressed("+", null); true }
dialpad_asterisk.setOnClickListener { dialpadPressed("*", it) }
dialpad_hashtag.setOnClickListener { dialpadPressed("#", it) }
@ -204,8 +219,7 @@ class DialpadActivity : SimpleActivity() {
}
}
private fun initCall() {
val number = dialpad_input.value
private fun initCall(number: String = dialpad_input.value) {
if (number.isNotEmpty()) {
if (config.showCallConfirmation) {
CallConfirmationDialog(this, number) {
@ -216,4 +230,13 @@ class DialpadActivity : SimpleActivity() {
}
}
}
private fun speedDial(id: Int) {
if (dialpad_input.value.isEmpty()) {
val speedDial = speedDialValues.firstOrNull { it.id == id }
if (speedDial?.isValid() == true) {
initCall(speedDial.number)
}
}
}
}

View file

@ -70,7 +70,7 @@ class GroupContactsActivity : SimpleActivity(), RemoveFromGroupListener, Refresh
}
private fun fabClicked() {
SelectContactsDialog(this, allContacts, groupContacts) { addedContacts, removedContacts ->
SelectContactsDialog(this, allContacts, true, false, groupContacts) { addedContacts, removedContacts ->
ensureBackgroundThread {
addContactsToGroup(addedContacts, group.id!!)
removeContactsFromGroup(removedContacts, group.id!!)

View file

@ -59,6 +59,7 @@ class MainActivity : SimpleActivity(), RefreshContactsListener {
private var storedShowContactThumbnails = false
private var storedShowPhoneNumbers = false
private var storedStartNameWithSurname = false
private var storedFontSize = 0
private var storedShowTabs = 0
override fun onCreate(savedInstanceState: Bundle?) {
@ -137,6 +138,13 @@ class MainActivity : SimpleActivity(), RefreshContactsListener {
favorites_fragment?.startNameWithSurnameChanged(configStartNameWithSurname)
}
val configFontSize = config.fontSize
if (storedFontSize != configFontSize) {
getAllFragments().forEach {
it?.fontSizeChanged()
}
}
if (werePermissionsHandled && !isFirstResume) {
if (viewpager.adapter == null) {
initFragments()
@ -218,6 +226,7 @@ class MainActivity : SimpleActivity(), RefreshContactsListener {
storedShowPhoneNumbers = showPhoneNumbers
storedStartNameWithSurname = startNameWithSurname
storedShowTabs = showTabs
storedFontSize = fontSize
}
}
@ -512,7 +521,7 @@ class MainActivity : SimpleActivity(), RefreshContactsListener {
}
private fun launchAbout() {
val licenses = LICENSE_JODA or LICENSE_GLIDE or LICENSE_GSON
val licenses = LICENSE_JODA or LICENSE_GLIDE or LICENSE_GSON or LICENSE_INDICATOR_FAST_SCROLL
val faqItems = arrayListOf(
FAQItem(R.string.faq_1_title, R.string.faq_1_text),
@ -578,6 +587,7 @@ class MainActivity : SimpleActivity(), RefreshContactsListener {
add(Release(39, R.string.release_39))
add(Release(40, R.string.release_40))
add(Release(47, R.string.release_47))
add(Release(56, R.string.release_56))
checkWhatsNew(this, BuildConfig.VERSION_CODE)
}
}

View file

@ -2,19 +2,67 @@ package com.simplemobiletools.contacts.pro.activities
import android.os.Bundle
import com.google.gson.Gson
import com.google.gson.reflect.TypeToken
import com.simplemobiletools.commons.extensions.updateTextColors
import com.simplemobiletools.contacts.pro.R
import com.simplemobiletools.contacts.pro.adapters.SpeedDialAdapter
import com.simplemobiletools.contacts.pro.dialogs.SelectContactsDialog
import com.simplemobiletools.contacts.pro.extensions.config
import com.simplemobiletools.contacts.pro.helpers.ContactsHelper
import com.simplemobiletools.contacts.pro.interfaces.RemoveSpeedDialListener
import com.simplemobiletools.contacts.pro.models.Contact
import com.simplemobiletools.contacts.pro.models.SpeedDial
import kotlinx.android.synthetic.main.activity_manage_speed_dial.*
class ManageSpeedDialActivity : SimpleActivity() {
var speedDialValues = ArrayList<SpeedDial>()
class ManageSpeedDialActivity : SimpleActivity(), RemoveSpeedDialListener {
private var allContacts = ArrayList<Contact>()
private var speedDialValues = ArrayList<SpeedDial>()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_manage_speed_dial)
val speedDialType = object : TypeToken<List<SpeedDial>>() {}.type
speedDialValues = Gson().fromJson<ArrayList<SpeedDial>>(config.speedDial, speedDialType) ?: ArrayList(1)
speedDialValues = config.getSpeedDialValues()
updateAdapter()
ContactsHelper(this).getContacts { contacts ->
allContacts = contacts
}
updateTextColors(manage_speed_dial_scrollview)
}
override fun onStop() {
super.onStop()
config.speedDial = Gson().toJson(speedDialValues)
}
private fun updateAdapter() {
SpeedDialAdapter(this, speedDialValues, this, speed_dial_list) {
val clickedContact = it as SpeedDial
if (allContacts.isEmpty()) {
return@SpeedDialAdapter
}
SelectContactsDialog(this, allContacts, false, true) { addedContacts, removedContacts ->
val selectedContact = addedContacts.first()
speedDialValues.first { it.id == clickedContact.id }.apply {
displayName = selectedContact.getNameToDisplay()
number = selectedContact.phoneNumbers.first().value
}
updateAdapter()
}
}.apply {
speed_dial_list.adapter = this
}
}
override fun removeSpeedDial(ids: ArrayList<Int>) {
ids.forEach {
val dialId = it
speedDialValues.first { it.id == dialId }.apply {
displayName = ""
number = ""
}
}
updateAdapter()
}
}

View file

@ -199,7 +199,7 @@ class SelectContactActivity : SimpleActivity() {
select_contact_list.adapter = this
}
select_contact_fastscroller.allowBubbleDisplay = baseConfig.showInfoBubble
select_contact_fastscroller.allowBubbleDisplay = true
select_contact_fastscroller.setViews(select_contact_list) {
select_contact_fastscroller.updateBubbleText(contacts[it].getBubbleText())
}

View file

@ -7,8 +7,9 @@ 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.getFontSizeText
import com.simplemobiletools.commons.extensions.updateTextColors
import com.simplemobiletools.commons.helpers.isNougatPlus
import com.simplemobiletools.commons.helpers.*
import com.simplemobiletools.commons.models.RadioItem
import com.simplemobiletools.contacts.pro.R
import com.simplemobiletools.contacts.pro.dialogs.ManageVisibleFieldsDialog
@ -34,8 +35,8 @@ class SettingsActivity : SimpleActivity() {
setupManageShownTabs()
setupManageBlockedNumbers()
setupManageSpeedDial()
setupFontSize()
setupUseEnglish()
setupShowInfoBubble()
setupShowContactThumbnails()
setupShowPhoneNumbers()
setupShowContactsWithNumbers()
@ -86,6 +87,22 @@ class SettingsActivity : SimpleActivity() {
}
}
private fun setupFontSize() {
settings_font_size.text = getFontSizeText()
settings_font_size_holder.setOnClickListener {
val items = arrayListOf(
RadioItem(FONT_SIZE_SMALL, getString(R.string.small)),
RadioItem(FONT_SIZE_MEDIUM, getString(R.string.medium)),
RadioItem(FONT_SIZE_LARGE, getString(R.string.large)),
RadioItem(FONT_SIZE_EXTRA_LARGE, getString(R.string.extra_large)))
RadioGroupDialog(this@SettingsActivity, items, config.fontSize) {
config.fontSize = it as Int
settings_font_size.text = getFontSizeText()
}
}
}
private fun setupUseEnglish() {
settings_use_english_holder.beVisibleIf(config.wasUseEnglishToggled || Locale.getDefault().language != "en")
settings_use_english.isChecked = config.useEnglish
@ -96,14 +113,6 @@ class SettingsActivity : SimpleActivity() {
}
}
private fun setupShowInfoBubble() {
settings_show_info_bubble.isChecked = config.showInfoBubble
settings_show_info_bubble_holder.setOnClickListener {
settings_show_info_bubble.toggle()
config.showInfoBubble = settings_show_info_bubble.isChecked
}
}
private fun setupShowContactThumbnails() {
settings_show_contact_thumbnails.isChecked = config.showContactThumbnails
settings_show_contact_thumbnails_holder.setOnClickListener {

View file

@ -36,7 +36,7 @@ class ViewContactActivity : ContactActivity() {
private var showFields = 0
private var fullContact: Contact? = null // contact with all fields filled from duplicates
private val COMPARABLE_PHONE_NUMBER_LENGTH = 7
private val COMPARABLE_PHONE_NUMBER_LENGTH = 9
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)

View file

@ -1,6 +1,7 @@
package com.simplemobiletools.contacts.pro.adapters
import android.graphics.drawable.Drawable
import android.util.TypedValue
import android.view.Menu
import android.view.View
import android.view.ViewGroup
@ -12,10 +13,7 @@ import com.bumptech.glide.signature.ObjectKey
import com.simplemobiletools.commons.adapters.MyRecyclerViewAdapter
import com.simplemobiletools.commons.dialogs.ConfirmationDialog
import com.simplemobiletools.commons.dialogs.RadioGroupDialog
import com.simplemobiletools.commons.extensions.beVisibleIf
import com.simplemobiletools.commons.extensions.getAdjustedPrimaryColor
import com.simplemobiletools.commons.extensions.getColoredDrawableWithColor
import com.simplemobiletools.commons.extensions.highlightTextPart
import com.simplemobiletools.commons.extensions.*
import com.simplemobiletools.commons.helpers.ensureBackgroundThread
import com.simplemobiletools.commons.models.RadioItem
import com.simplemobiletools.commons.views.FastScroller
@ -33,7 +31,7 @@ import java.util.*
class ContactsAdapter(activity: SimpleActivity, var contactItems: ArrayList<Contact>, private val refreshListener: RefreshContactsListener?,
private val location: Int, private val removeListener: RemoveFromGroupListener?, recyclerView: MyRecyclerView,
fastScroller: FastScroller, highlightText: String = "", itemClick: (Any) -> Unit) :
fastScroller: FastScroller?, highlightText: String = "", itemClick: (Any) -> Unit) :
MyRecyclerViewAdapter(activity, recyclerView, fastScroller, itemClick) {
private val NEW_GROUP_ID = -1
@ -43,9 +41,12 @@ class ContactsAdapter(activity: SimpleActivity, var contactItems: ArrayList<Cont
private var textToHighlight = highlightText
var adjustedPrimaryColor = activity.getAdjustedPrimaryColor()
var startNameWithSurname: Boolean
var showContactThumbnails: Boolean
var showPhoneNumbers: Boolean
var startNameWithSurname = config.startNameWithSurname
var showContactThumbnails = config.showContactThumbnails
var showPhoneNumbers = config.showPhoneNumbers
var fontSize = activity.getTextSize()
private val itemLayout = if (showPhoneNumbers) R.layout.item_contact_with_number else R.layout.item_contact_without_number
private var smallPadding = activity.resources.getDimension(R.dimen.small_margin).toInt()
private var mediumPadding = activity.resources.getDimension(R.dimen.medium_margin).toInt()
@ -54,9 +55,6 @@ class ContactsAdapter(activity: SimpleActivity, var contactItems: ArrayList<Cont
init {
setupDragListener(true)
initDrawables()
showContactThumbnails = config.showContactThumbnails
showPhoneNumbers = config.showPhoneNumbers
startNameWithSurname = config.startNameWithSurname
}
override fun getActionMenuId() = R.menu.cab
@ -109,12 +107,9 @@ class ContactsAdapter(activity: SimpleActivity, var contactItems: ArrayList<Cont
override fun onActionModeDestroyed() {}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
val layout = if (showPhoneNumbers) R.layout.item_contact_with_number else R.layout.item_contact_without_number
return createViewHolder(layout, parent)
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = createViewHolder(itemLayout, parent)
override fun onBindViewHolder(holder: MyRecyclerViewAdapter.ViewHolder, position: Int) {
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
val contact = contactItems[position]
val allowLongClick = location != LOCATION_INSERT_OR_EDIT
holder.bindView(contact, true, allowLongClick) { itemView, layoutPosition ->
@ -290,7 +285,12 @@ class ContactsAdapter(activity: SimpleActivity, var contactItems: ArrayList<Cont
}
contact_name.setTextColor(textColor)
contact_name.setPadding(if (showContactThumbnails) smallPadding else bigPadding, smallPadding, smallPadding, 0)
contact_name.setTextSize(TypedValue.COMPLEX_UNIT_PX, fontSize)
if (!showContactThumbnails && !showPhoneNumbers) {
contact_name.setPadding(bigPadding, bigPadding, bigPadding, bigPadding)
} else {
contact_name.setPadding(if (showContactThumbnails) smallPadding else bigPadding, smallPadding, smallPadding, 0)
}
if (contact_number != null) {
val phoneNumberToUse = if (textToHighlight.isEmpty()) {
@ -303,6 +303,7 @@ class ContactsAdapter(activity: SimpleActivity, var contactItems: ArrayList<Cont
contact_number.text = if (textToHighlight.isEmpty()) numberText else numberText.highlightTextPart(textToHighlight, adjustedPrimaryColor, false, true)
contact_number.setTextColor(textColor)
contact_number.setPadding(if (showContactThumbnails) smallPadding else bigPadding, 0, smallPadding, 0)
contact_number.setTextSize(TypedValue.COMPLEX_UNIT_PX, fontSize)
}
contact_tmb.beVisibleIf(showContactThumbnails)
@ -327,7 +328,7 @@ class ContactsAdapter(activity: SimpleActivity, var contactItems: ArrayList<Cont
}
contact.photo != null -> {
val options = RequestOptions()
.signature(ObjectKey(contact.photo!!))
.signature(ObjectKey(contact.hashCode()))
.diskCacheStrategy(DiskCacheStrategy.RESOURCE)
.error(placeholderImage)
.centerCrop()

View file

@ -1,14 +1,12 @@
package com.simplemobiletools.contacts.pro.adapters
import android.util.TypedValue
import android.view.Menu
import android.view.View
import android.view.ViewGroup
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.extensions.*
import com.simplemobiletools.commons.helpers.ensureBackgroundThread
import com.simplemobiletools.commons.views.FastScroller
import com.simplemobiletools.commons.views.MyRecyclerView
@ -33,6 +31,7 @@ class GroupsAdapter(activity: SimpleActivity, var groups: ArrayList<Group>, val
var adjustedPrimaryColor = activity.getAdjustedPrimaryColor()
var showContactThumbnails = activity.config.showContactThumbnails
var fontSize = activity.getTextSize()
init {
setupDragListener(true)
@ -72,7 +71,7 @@ class GroupsAdapter(activity: SimpleActivity, var groups: ArrayList<Group>, val
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = createViewHolder(R.layout.item_group, parent)
override fun onBindViewHolder(holder: MyRecyclerViewAdapter.ViewHolder, position: Int) {
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
val group = groups[position]
holder.bindView(group, true, true) { itemView, layoutPosition ->
setupView(itemView, group)
@ -164,8 +163,14 @@ class GroupsAdapter(activity: SimpleActivity, var groups: ArrayList<Group>, val
group_name.apply {
setTextColor(textColor)
setTextSize(TypedValue.COMPLEX_UNIT_PX, fontSize)
text = groupTitle
setPadding(if (showContactThumbnails) smallPadding else bigPadding, smallPadding, smallPadding, 0)
if (showContactThumbnails) {
setPadding(smallPadding, bigPadding, bigPadding, bigPadding)
} else {
setPadding(bigPadding, bigPadding, bigPadding, bigPadding)
}
}
group_tmb.beVisibleIf(showContactThumbnails)

View file

@ -1,7 +1,7 @@
package com.simplemobiletools.contacts.pro.adapters
import android.graphics.drawable.Drawable
import android.util.SparseArray
import android.util.TypedValue
import android.view.View
import android.view.ViewGroup
import androidx.recyclerview.widget.RecyclerView
@ -10,16 +10,12 @@ import com.bumptech.glide.load.engine.DiskCacheStrategy
import com.bumptech.glide.load.resource.drawable.DrawableTransitionOptions
import com.bumptech.glide.request.RequestOptions
import com.bumptech.glide.signature.ObjectKey
import com.simplemobiletools.commons.extensions.beVisibleIf
import com.simplemobiletools.commons.extensions.getAdjustedPrimaryColor
import com.simplemobiletools.commons.extensions.getColoredDrawableWithColor
import com.simplemobiletools.commons.extensions.highlightTextPart
import com.simplemobiletools.commons.extensions.*
import com.simplemobiletools.commons.views.FastScroller
import com.simplemobiletools.commons.views.MyRecyclerView
import com.simplemobiletools.contacts.pro.R
import com.simplemobiletools.contacts.pro.activities.SimpleActivity
import com.simplemobiletools.contacts.pro.extensions.config
import com.simplemobiletools.contacts.pro.helpers.Config
import com.simplemobiletools.contacts.pro.helpers.highlightTextFromNumbers
import com.simplemobiletools.contacts.pro.models.Contact
import kotlinx.android.synthetic.main.item_add_favorite_with_number.view.*
@ -33,13 +29,16 @@ class SelectContactsAdapter(val activity: SimpleActivity, var contacts: ArrayLis
private val config = activity.config
private val textColor = config.textColor
private val adjustedPrimaryColor = activity.getAdjustedPrimaryColor()
private val fontSize = activity.getTextSize()
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
private val showPhoneNumbers = config.showPhoneNumbers
private val itemLayout = if (showPhoneNumbers) R.layout.item_add_favorite_with_number else R.layout.item_add_favorite_without_number
private var textToHighlight = ""
private var smallPadding = activity.resources.getDimension(R.dimen.small_margin).toInt()
private var mediumPadding = activity.resources.getDimension(R.dimen.medium_margin).toInt()
private var bigPadding = activity.resources.getDimension(R.dimen.normal_margin).toInt()
init {
@ -78,8 +77,8 @@ class SelectContactsAdapter(val activity: SimpleActivity, var contacts: ArrayLis
}
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
val eventType = contacts[position]
itemViews.put(position, holder.bindView(eventType, contactDrawable, config, showContactThumbnails, smallPadding, bigPadding))
val contact = contacts[position]
itemViews.put(position, holder.bindView(contact))
toggleItemSelection(selectedPositions.contains(position), position)
}
@ -105,8 +104,7 @@ class SelectContactsAdapter(val activity: SimpleActivity, var contacts: ArrayLis
}
inner class ViewHolder(view: View) : RecyclerView.ViewHolder(view) {
fun bindView(contact: Contact, contactDrawable: Drawable, config: Config, showContactThumbnails: Boolean,
smallPadding: Int, bigPadding: Int): View {
fun bindView(contact: Contact): View {
itemView.apply {
contact_checkbox.beVisibleIf(allowPickMultiple)
contact_checkbox.setColors(config.textColor, context.getAdjustedPrimaryColor(), config.backgroundColor)
@ -122,7 +120,12 @@ class SelectContactsAdapter(val activity: SimpleActivity, var contacts: ArrayLis
}
contact_name.setTextColor(textColor)
contact_name.setPadding(if (showContactThumbnails) smallPadding else bigPadding, smallPadding, smallPadding, 0)
contact_name.setTextSize(TypedValue.COMPLEX_UNIT_PX, fontSize)
if (!showContactThumbnails && !showPhoneNumbers) {
contact_name.setPadding(bigPadding, bigPadding, bigPadding, bigPadding)
} else {
contact_name.setPadding(if (showContactThumbnails) smallPadding else bigPadding, smallPadding, smallPadding, 0)
}
if (contact_number != null) {
val phoneNumberToUse = if (textToHighlight.isEmpty()) {
@ -135,6 +138,7 @@ class SelectContactsAdapter(val activity: SimpleActivity, var contacts: ArrayLis
contact_number.text = if (textToHighlight.isEmpty()) numberText else numberText.highlightTextPart(textToHighlight, adjustedPrimaryColor, false, true)
contact_number.setTextColor(textColor)
contact_number.setPadding(if (showContactThumbnails) smallPadding else bigPadding, 0, smallPadding, 0)
contact_number.setTextSize(TypedValue.COMPLEX_UNIT_PX, fontSize)
}
contact_frame.setOnClickListener {
@ -161,8 +165,24 @@ class SelectContactsAdapter(val activity: SimpleActivity, var contacts: ArrayLis
.apply(options)
.apply(RequestOptions.circleCropTransform())
.into(contact_tmb)
contact_tmb.setPadding(smallPadding, smallPadding, smallPadding, smallPadding)
}
} else if (contact.photo != null) {
val options = RequestOptions()
.signature(ObjectKey(contact.hashCode()))
.diskCacheStrategy(DiskCacheStrategy.RESOURCE)
.error(contactDrawable)
.centerCrop()
Glide.with(activity)
.load(contact.photo)
.transition(DrawableTransitionOptions.withCrossFade())
.apply(options)
.apply(RequestOptions.circleCropTransform())
.into(contact_tmb)
contact_tmb.setPadding(smallPadding, smallPadding, smallPadding, smallPadding)
} else {
contact_tmb.setPadding(mediumPadding, mediumPadding, mediumPadding, mediumPadding)
contact_tmb.setImageDrawable(contactDrawable)
}
}

View file

@ -0,0 +1,80 @@
package com.simplemobiletools.contacts.pro.adapters
import android.view.Menu
import android.view.View
import android.view.ViewGroup
import com.simplemobiletools.commons.adapters.MyRecyclerViewAdapter
import com.simplemobiletools.commons.views.MyRecyclerView
import com.simplemobiletools.contacts.pro.R
import com.simplemobiletools.contacts.pro.activities.SimpleActivity
import com.simplemobiletools.contacts.pro.interfaces.RemoveSpeedDialListener
import com.simplemobiletools.contacts.pro.models.SpeedDial
import kotlinx.android.synthetic.main.item_speed_dial.view.*
import java.util.*
class SpeedDialAdapter(activity: SimpleActivity, var speedDialValues: ArrayList<SpeedDial>, private val removeListener: RemoveSpeedDialListener,
recyclerView: MyRecyclerView, itemClick: (Any) -> Unit) : MyRecyclerViewAdapter(activity, recyclerView, null, itemClick) {
init {
setupDragListener(true)
}
override fun getActionMenuId() = R.menu.cab_speed_dial
override fun prepareActionMode(menu: Menu) {}
override fun actionItemPressed(id: Int) {
if (selectedKeys.isEmpty()) {
return
}
when (id) {
R.id.cab_delete -> deleteSpeedDial()
}
}
override fun getSelectableItemCount() = speedDialValues.size
override fun getIsItemSelectable(position: Int) = speedDialValues[position].isValid()
override fun getItemSelectionKey(position: Int) = speedDialValues.getOrNull(position)?.hashCode()
override fun getItemKeyPosition(key: Int) = speedDialValues.indexOfFirst { it.hashCode() == key }
override fun onActionModeCreated() {}
override fun onActionModeDestroyed() {}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = createViewHolder(R.layout.item_speed_dial, parent)
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
val speedDial = speedDialValues[position]
holder.bindView(speedDial, true, true) { itemView, layoutPosition ->
setupView(itemView, speedDial)
}
bindViewHolder(holder)
}
override fun getItemCount() = speedDialValues.size
private fun getSelectedItems() = speedDialValues.filter { selectedKeys.contains(it.hashCode()) } as ArrayList<SpeedDial>
private fun deleteSpeedDial() {
val ids = getSelectedItems().map { it.id }.toMutableList() as ArrayList<Int>
removeListener.removeSpeedDial(ids)
finishActMode()
}
private fun setupView(view: View, speedDial: SpeedDial) {
view.apply {
var displayName = "${speedDial.id}. "
displayName += if (speedDial.isValid()) speedDial.displayName else ""
speed_dial_label.apply {
text = displayName
isSelected = selectedKeys.contains(speedDial.hashCode())
setTextColor(textColor)
}
}
}
}

View file

@ -1,7 +1,6 @@
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
@ -11,8 +10,9 @@ import com.simplemobiletools.contacts.pro.extensions.getVisibleContactSources
import com.simplemobiletools.contacts.pro.models.Contact
import kotlinx.android.synthetic.main.layout_select_contact.view.*
class SelectContactsDialog(val activity: SimpleActivity, initialContacts: ArrayList<Contact>, selectContacts: ArrayList<Contact>? = null,
val callback: (addedContacts: ArrayList<Contact>, removedContacts: ArrayList<Contact>) -> Unit) {
class SelectContactsDialog(val activity: SimpleActivity, initialContacts: ArrayList<Contact>, val allowSelectMultiple: Boolean, val showOnlyContactsWithNumber: Boolean,
selectContacts: ArrayList<Contact>? = null, val callback: (addedContacts: ArrayList<Contact>, removedContacts: ArrayList<Contact>) -> Unit) {
private var dialog: AlertDialog? = null
private var view = activity.layoutInflater.inflate(R.layout.layout_select_contact, null)
private var initiallySelectedContacts = ArrayList<Contact>()
@ -22,27 +22,42 @@ class SelectContactsDialog(val activity: SimpleActivity, initialContacts: ArrayL
val contactSources = activity.getVisibleContactSources()
allContacts = allContacts.filter { contactSources.contains(it.source) } as ArrayList<Contact>
if (showOnlyContactsWithNumber) {
allContacts = allContacts.filter { it.phoneNumbers.isNotEmpty() }.toMutableList() as ArrayList<Contact>
}
initiallySelectedContacts = allContacts.filter { it.starred == 1 } as ArrayList<Contact>
} else {
initiallySelectedContacts = selectContacts
}
activity.runOnUiThread {
// if selecting multiple contacts is disabled, react on first contact click and dismiss the dialog
val contactClickCallback: ((Contact) -> Unit)? = if (allowSelectMultiple) null else { contact ->
callback(arrayListOf(contact), arrayListOf())
dialog!!.dismiss()
}
view.apply {
select_contact_list.adapter = SelectContactsAdapter(activity, allContacts, initiallySelectedContacts, true, select_contact_list, select_contact_fastscroller)
select_contact_fastscroller.allowBubbleDisplay = activity.baseConfig.showInfoBubble
select_contact_list.adapter = SelectContactsAdapter(activity, allContacts, initiallySelectedContacts, allowSelectMultiple,
select_contact_list, select_contact_fastscroller, contactClickCallback)
select_contact_fastscroller.allowBubbleDisplay = true
select_contact_fastscroller.setViews(select_contact_list) {
select_contact_fastscroller.updateBubbleText(allContacts[it].getBubbleText())
}
}
}
AlertDialog.Builder(activity)
.setPositiveButton(R.string.ok) { dialog, which -> dialogConfirmed() }
.setNegativeButton(R.string.cancel, null)
.create().apply {
activity.setupDialogStuff(view, this)
}
val builder = AlertDialog.Builder(activity)
if (allowSelectMultiple) {
builder.setPositiveButton(R.string.ok) { dialog, which -> dialogConfirmed() }
}
builder.setNegativeButton(R.string.cancel, null)
dialog = builder.create().apply {
activity.setupDialogStuff(view, this)
}
}
}
private fun dialogConfirmed() {

View file

@ -19,7 +19,7 @@ class FavoritesFragment(context: Context, attributeSet: AttributeSet) : MyViewPa
}
private fun showAddFavoritesDialog() {
SelectContactsDialog(activity!!, allContacts) { addedContacts, removedContacts ->
SelectContactsDialog(activity!!, allContacts, true, false) { addedContacts, removedContacts ->
ContactsHelper(activity as SimpleActivity).apply {
addFavorites(addedContacts)
removeFavorites(removedContacts)

View file

@ -2,9 +2,11 @@ package com.simplemobiletools.contacts.pro.fragments
import android.content.Context
import android.content.Intent
import android.content.res.ColorStateList
import android.util.AttributeSet
import android.view.ViewGroup
import androidx.coordinatorlayout.widget.CoordinatorLayout
import com.reddit.indicatorfastscroll.FastScrollItemIndicator
import com.simplemobiletools.commons.adapters.MyRecyclerViewAdapter
import com.simplemobiletools.commons.extensions.*
import com.simplemobiletools.commons.helpers.SORT_BY_FIRST_NAME
@ -23,6 +25,14 @@ import com.simplemobiletools.contacts.pro.interfaces.RefreshContactsListener
import com.simplemobiletools.contacts.pro.models.Contact
import com.simplemobiletools.contacts.pro.models.Group
import kotlinx.android.synthetic.main.fragment_layout.view.*
import kotlinx.android.synthetic.main.fragment_layout.view.fragment_fab
import kotlinx.android.synthetic.main.fragment_layout.view.fragment_list
import kotlinx.android.synthetic.main.fragment_layout.view.fragment_placeholder
import kotlinx.android.synthetic.main.fragment_layout.view.fragment_placeholder_2
import kotlinx.android.synthetic.main.fragment_layout.view.fragment_wrapper
import kotlinx.android.synthetic.main.fragment_letters_layout.view.*
import java.util.*
import kotlin.collections.ArrayList
abstract class MyViewPagerFragment(context: Context, attributeSet: AttributeSet) : CoordinatorLayout(context, attributeSet) {
protected var activity: SimpleActivity? = null
@ -35,6 +45,7 @@ abstract class MyViewPagerFragment(context: Context, attributeSet: AttributeSet)
var skipHashComparing = false
var forceListRedraw = false
var wasLetterFastScrollerSetup = false
fun setupFragment(activity: SimpleActivity) {
config = activity.config
@ -79,8 +90,8 @@ abstract class MyViewPagerFragment(context: Context, attributeSet: AttributeSet)
}
fun primaryColorChanged() {
fragment_fastscroller.updatePrimaryColor()
fragment_fastscroller.updateBubblePrimaryColor()
fragment_fastscroller?.updatePrimaryColor()
fragment_fastscroller?.updateBubblePrimaryColor()
(fragment_list.adapter as? ContactsAdapter)?.apply {
adjustedPrimaryColor = context.getAdjustedPrimaryColor()
}
@ -139,6 +150,39 @@ abstract class MyViewPagerFragment(context: Context, attributeSet: AttributeSet)
} else {
setupContactsFavoritesAdapter(contacts)
contactsIgnoringSearch = (fragment_list?.adapter as? ContactsAdapter)?.contactItems ?: ArrayList()
if (!wasLetterFastScrollerSetup) {
wasLetterFastScrollerSetup = true
val states = arrayOf(intArrayOf(android.R.attr.state_enabled),
intArrayOf(-android.R.attr.state_enabled),
intArrayOf(-android.R.attr.state_checked),
intArrayOf(android.R.attr.state_pressed)
)
val textColor = config.textColor
val colors = intArrayOf(textColor, textColor, textColor, textColor)
val myList = ColorStateList(states, colors)
letter_fastscroller.textColor = myList
letter_fastscroller.setupWithRecyclerView(fragment_list, { position ->
try {
val name = contacts[position].getNameToDisplay()
var character = if (name.isNotEmpty()) name.substring(0, 1) else ""
if (!character.areLettersOnly()) {
character = "#"
}
FastScrollItemIndicator.Text(character.toUpperCase(Locale.getDefault()))
} catch (e: Exception) {
FastScrollItemIndicator.Text("")
}
})
letter_fastscroller_thumb.setupWithFastScroller(letter_fastscroller)
letter_fastscroller_thumb.textColor = config.primaryColor.getContrastColor()
}
}
}
@ -197,17 +241,11 @@ abstract class MyViewPagerFragment(context: Context, attributeSet: AttributeSet)
else -> LOCATION_CONTACTS_TAB
}
ContactsAdapter(activity as SimpleActivity, contacts, activity as RefreshContactsListener, location, null, fragment_list, fragment_fastscroller) {
ContactsAdapter(activity as SimpleActivity, contacts, activity as RefreshContactsListener, location, null, fragment_list, null) {
(activity as RefreshContactsListener).contactClicked(it as Contact)
}.apply {
fragment_list.adapter = this
}
fragment_fastscroller.setScrollToY(0)
fragment_fastscroller.setViews(fragment_list) {
val item = (fragment_list.adapter as ContactsAdapter).contactItems.getOrNull(it)
fragment_fastscroller.updateBubbleText(item?.getBubbleText() ?: "")
}
} else {
(currAdapter as ContactsAdapter).apply {
startNameWithSurname = config.startNameWithSurname
@ -232,6 +270,20 @@ abstract class MyViewPagerFragment(context: Context, attributeSet: AttributeSet)
}
}
fun fontSizeChanged() {
if (this is GroupsFragment) {
(fragment_list.adapter as? GroupsAdapter)?.apply {
fontSize = activity.getTextSize()
notifyDataSetChanged()
}
} else {
(fragment_list.adapter as? ContactsAdapter)?.apply {
fontSize = activity.getTextSize()
notifyDataSetChanged()
}
}
}
fun onActivityResume() {
updateViewStuff()
}
@ -304,9 +356,10 @@ abstract class MyViewPagerFragment(context: Context, attributeSet: AttributeSet)
private fun updateViewStuff() {
context.updateTextColors(fragment_wrapper.parent as ViewGroup)
fragment_fastscroller.updateBubbleColors()
fragment_fastscroller.allowBubbleDisplay = config.showInfoBubble
fragment_fastscroller?.updateBubbleColors()
fragment_fastscroller?.allowBubbleDisplay = true
fragment_placeholder_2?.setTextColor(context.getAdjustedPrimaryColor())
letter_fastscroller_thumb?.fontSize = context.getTextSize()
}
private fun setupViewVisibility(hasItemsToShow: Boolean) {

View file

@ -1,7 +1,10 @@
package com.simplemobiletools.contacts.pro.helpers
import android.content.Context
import com.google.gson.Gson
import com.google.gson.reflect.TypeToken
import com.simplemobiletools.commons.helpers.BaseConfig
import com.simplemobiletools.contacts.pro.models.SpeedDial
class Config(context: Context) : BaseConfig(context) {
companion object {
@ -60,4 +63,18 @@ class Config(context: Context) : BaseConfig(context) {
var speedDial: String
get() = prefs.getString(SPEED_DIAL, "")!!
set(speedDial) = prefs.edit().putString(SPEED_DIAL, speedDial).apply()
fun getSpeedDialValues(): ArrayList<SpeedDial> {
val speedDialType = object : TypeToken<List<SpeedDial>>() {}.type
val speedDialValues = Gson().fromJson<ArrayList<SpeedDial>>(speedDial, speedDialType) ?: ArrayList(1)
for (i in 1..9) {
val speedDial = SpeedDial(i, "", "")
if (speedDialValues.firstOrNull { it.id == i } == null) {
speedDialValues.add(speedDial)
}
}
return speedDialValues
}
}

View file

@ -0,0 +1,5 @@
package com.simplemobiletools.contacts.pro.interfaces
interface RemoveSpeedDialListener {
fun removeSpeedDial(ids: ArrayList<Int>)
}

View file

@ -1,3 +1,5 @@
package com.simplemobiletools.contacts.pro.models
data class SpeedDial(val id: Int, var number: String, var displayName: String)
data class SpeedDial(val id: Int, var number: String, var displayName: String) {
fun isValid() = number.trim().isNotEmpty()
}

View file

@ -1,5 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
<ScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/manage_speed_dial_scrollview"
android:layout_width="match_parent"
@ -20,86 +22,13 @@
android:text="@string/speed_dial_label"
android:textSize="@dimen/bigger_text_size" />
<com.simplemobiletools.commons.views.MyTextView
android:id="@+id/speed_dial_1"
<com.simplemobiletools.commons.views.MyRecyclerView
android:id="@+id/speed_dial_list"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/selectableItemBackground"
android:padding="@dimen/activity_margin"
android:text="1."
android:textSize="@dimen/bigger_text_size" />
<com.simplemobiletools.commons.views.MyTextView
android:id="@+id/speed_dial_2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/selectableItemBackground"
android:padding="@dimen/activity_margin"
android:text="2."
android:textSize="@dimen/bigger_text_size" />
<com.simplemobiletools.commons.views.MyTextView
android:id="@+id/speed_dial_3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/selectableItemBackground"
android:padding="@dimen/activity_margin"
android:text="3."
android:textSize="@dimen/bigger_text_size" />
<com.simplemobiletools.commons.views.MyTextView
android:id="@+id/speed_dial_4"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/selectableItemBackground"
android:padding="@dimen/activity_margin"
android:text="4."
android:textSize="@dimen/bigger_text_size" />
<com.simplemobiletools.commons.views.MyTextView
android:id="@+id/speed_dial_5"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/selectableItemBackground"
android:padding="@dimen/activity_margin"
android:text="5."
android:textSize="@dimen/bigger_text_size" />
<com.simplemobiletools.commons.views.MyTextView
android:id="@+id/speed_dial_6"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/selectableItemBackground"
android:padding="@dimen/activity_margin"
android:text="6."
android:textSize="@dimen/bigger_text_size" />
<com.simplemobiletools.commons.views.MyTextView
android:id="@+id/speed_dial_7"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/selectableItemBackground"
android:padding="@dimen/activity_margin"
android:text="7."
android:textSize="@dimen/bigger_text_size" />
<com.simplemobiletools.commons.views.MyTextView
android:id="@+id/speed_dial_8"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/selectableItemBackground"
android:padding="@dimen/activity_margin"
android:text="8."
android:textSize="@dimen/bigger_text_size" />
<com.simplemobiletools.commons.views.MyTextView
android:id="@+id/speed_dial_9"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/selectableItemBackground"
android:padding="@dimen/activity_margin"
android:text="9."
android:textSize="@dimen/bigger_text_size" />
android:layout_height="match_parent"
android:clipToPadding="false"
android:scrollbars="none"
app:layoutManager="com.simplemobiletools.commons.views.MyLinearLayoutManager" />
</LinearLayout>
</ScrollView>

View file

@ -117,6 +117,38 @@
</RelativeLayout>
<RelativeLayout
android:id="@+id/settings_font_size_holder"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/medium_margin"
android:background="?attr/selectableItemBackground"
android:paddingLeft="@dimen/normal_margin"
android:paddingTop="@dimen/activity_margin"
android:paddingRight="@dimen/normal_margin"
android:paddingBottom="@dimen/activity_margin">
<com.simplemobiletools.commons.views.MyTextView
android:id="@+id/settings_font_size_label"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_toStartOf="@+id/settings_font_size"
android:paddingLeft="@dimen/medium_margin"
android:paddingRight="@dimen/medium_margin"
android:text="@string/font_size"/>
<com.simplemobiletools.commons.views.MyTextView
android:id="@+id/settings_font_size"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_marginEnd="@dimen/medium_margin"
android:background="@null"
android:clickable="false"/>
</RelativeLayout>
<RelativeLayout
android:id="@+id/settings_use_english_holder"
android:layout_width="match_parent"
@ -140,29 +172,6 @@
</RelativeLayout>
<RelativeLayout
android:id="@+id/settings_show_info_bubble_holder"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/medium_margin"
android:background="?attr/selectableItemBackground"
android:paddingStart="@dimen/normal_margin"
android:paddingTop="@dimen/activity_margin"
android:paddingEnd="@dimen/normal_margin"
android:paddingBottom="@dimen/activity_margin">
<com.simplemobiletools.commons.views.MySwitchCompat
android:id="@+id/settings_show_info_bubble"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@null"
android:clickable="false"
android:paddingStart="@dimen/medium_margin"
android:text="@string/show_info_bubble"
app:switchPadding="@dimen/medium_margin"/>
</RelativeLayout>
<RelativeLayout
android:id="@+id/settings_show_contact_thumbnails_holder"
android:layout_width="match_parent"

View file

@ -5,6 +5,6 @@
android:layout_width="match_parent"
android:layout_height="match_parent">
<include layout="@layout/fragment_layout"/>
<include layout="@layout/fragment_letters_layout"/>
</com.simplemobiletools.contacts.pro.fragments.ContactsFragment>

View file

@ -5,6 +5,6 @@
android:layout_width="match_parent"
android:layout_height="match_parent">
<include layout="@layout/fragment_layout"/>
<include layout="@layout/fragment_letters_layout"/>
</com.simplemobiletools.contacts.pro.fragments.FavoritesFragment>

View file

@ -0,0 +1,72 @@
<?xml version="1.0" encoding="utf-8"?>
<merge
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<RelativeLayout
android:id="@+id/fragment_wrapper"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<com.simplemobiletools.commons.views.MyTextView
android:id="@+id/fragment_placeholder"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_marginTop="@dimen/activity_margin"
android:gravity="center"
android:paddingLeft="@dimen/activity_margin"
android:paddingRight="@dimen/activity_margin"
android:text="@string/no_contacts_found"
android:textSize="@dimen/bigger_text_size"
android:visibility="gone"/>
<com.simplemobiletools.commons.views.MyTextView
android:id="@+id/fragment_placeholder_2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/fragment_placeholder"
android:layout_centerHorizontal="true"
android:background="?attr/selectableItemBackground"
android:gravity="center"
android:padding="@dimen/activity_margin"
android:text="@string/change_filter"
android:textSize="@dimen/bigger_text_size"
android:visibility="gone"/>
<com.simplemobiletools.commons.views.MyRecyclerView
android:id="@+id/fragment_list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clipToPadding="false"
android:scrollbars="none"
app:layoutManager="com.simplemobiletools.commons.views.MyLinearLayoutManager"/>
<com.reddit.indicatorfastscroll.FastScrollerView
android:id="@+id/letter_fastscroller"
android:layout_width="32dp"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:paddingTop="@dimen/big_margin"
android:paddingBottom="@dimen/big_margin" />
<com.reddit.indicatorfastscroll.FastScrollerThumbView
android:id="@+id/letter_fastscroller_thumb"
android:layout_width="@dimen/fab_size"
android:layout_height="match_parent"
android:layout_alignTop="@+id/letter_fastscroller"
android:layout_alignBottom="@+id/letter_fastscroller"
android:layout_marginEnd="@dimen/activity_margin"
android:layout_toStartOf="@+id/letter_fastscroller" />
</RelativeLayout>
<com.simplemobiletools.commons.views.MyFloatingActionButton
android:id="@+id/fragment_fab"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|end"
android:layout_margin="@dimen/activity_margin"
android:src="@drawable/ic_plus_vector"/>
</merge>

View file

@ -45,7 +45,7 @@
android:layout_toEndOf="@+id/contact_tmb"
android:alpha="0.6"
android:maxLines="1"
android:textSize="@dimen/bigger_text_size"
android:textSize="@dimen/big_text_size"
tools:text="0123 456 789" />
</RelativeLayout>

View file

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<com.simplemobiletools.commons.views.MyTextView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/speed_dial_label"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:background="?attr/selectableItemBackground"
android:ellipsize="end"
android:foreground="@drawable/selector"
android:lines="1"
android:maxLines="1"
android:padding="@dimen/activity_margin"
android:singleLine="true"
android:textSize="@dimen/bigger_text_size" />

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/cab_delete"
android:icon="@drawable/ic_delete_vector"
android:title="@string/delete"
app:showAsAction="ifRoom" />
</menu>

View file

@ -180,7 +180,17 @@
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
<b>Check out the full suite of Simple Tools here:</b>
https://www.simplemobiletools.com
<b>Standalone website of Simple Contacts Pro:</b>
https://www.simplemobiletools.com/contacts
<b>Facebook:</b>
https://www.facebook.com/simplemobiletools
<b>Reddit:</b>
https://www.reddit.com/r/SimpleMobileTools
</string>
<!--

View file

@ -180,7 +180,17 @@
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
<b>Check out the full suite of Simple Tools here:</b>
https://www.simplemobiletools.com
<b>Standalone website of Simple Contacts Pro:</b>
https://www.simplemobiletools.com/contacts
<b>Facebook:</b>
https://www.facebook.com/simplemobiletools
<b>Reddit:</b>
https://www.reddit.com/r/SimpleMobileTools
</string>
<!--

View file

@ -0,0 +1,202 @@
<resources>
<string name="app_name">Jednoduché kontakty</string>
<string name="app_launcher_name">Kontakty</string>
<string name="address">Adresa</string>
<string name="inserting">Vytváří se…</string>
<string name="updating">Upravuje se…</string>
<string name="phone_storage">Úložiště telefonu</string>
<string name="phone_storage_hidden">Úložiště telefonu (neviditelné pro ostatní apky)</string>
<string name="company">Firma</string>
<string name="job_position">Pracovní pozice</string>
<string name="website">Webová stránka</string>
<string name="send_sms_to_contacts">Poslat kontaktům SMS</string>
<string name="send_email_to_contacts">Poslat kontaktům e-mail</string>
<string name="send_sms_to_group">Poslat skupině SMS</string>
<string name="send_email_to_group">Poslat skupině e-mail</string>
<string name="call_person">Zavolat %s</string>
<string name="request_the_required_permissions">Vyžádat potřebná oprávnění</string>
<string name="create_new_contact">Vytvořit nový kontakt</string>
<string name="add_to_existing_contact">Přidat k existujícímu kontaktu</string>
<string name="must_make_default_dialer">Pro použití blokování čísel musíte nastavit aplikaci jako výchozí pro správu hovorů.</string>
<string name="set_as_default">Nastavit jako výchozí</string>
<!-- Placeholders -->
<string name="no_contacts_found">Nenalezeny žádné kontakty.</string>
<string name="no_contacts_with_emails">Nenalezeny žádné kontakty s e-maily</string>
<string name="no_contacts_with_phone_numbers">Nenalezeny žádné kontakty s telefonními čísly</string>
<string name="new_contact">Nový kontakt</string>
<string name="edit_contact">Upravit kontakt</string>
<string name="select_contact">Zvolte kontakt</string>
<string name="select_contacts">Zvolte kontakty</string>
<string name="first_name">Křestní jméno</string>
<string name="middle_name">Prostřední jméno</string>
<string name="surname">Příjmení</string>
<string name="nickname">Přezdívka</string>
<!-- Groups -->
<string name="no_groups">Žádné skupiny</string>
<string name="create_new_group">Vytvořit novou skupinu</string>
<string name="remove_from_group">Odebrat ze skupiny</string>
<string name="no_group_participants">Skupina je prázdná</string>
<string name="add_contacts">Přidat kontakty</string>
<string name="no_group_created">Nemáte v zařízení vytvořeny žádné skupiny kontaktů</string>
<string name="create_group">Vytvořit skupinu</string>
<string name="add_to_group">Přidat do skupiny</string>
<string name="create_group_under_account">Vytvořit skupinu pod účet</string>
<!-- Photo -->
<string name="take_photo">Pořídit fotku</string>
<string name="choose_photo">Zvolit fotku</string>
<string name="remove_photo">Odstranit fotku</string>
<!-- Settings -->
<string name="start_name_with_surname">Nejprve příjmení</string>
<string name="show_phone_numbers">Zobrazit telefonní čísla na hlavní obrazovce</string>
<string name="show_contact_thumbnails">Zobrazit obrázky kontaktů</string>
<string name="show_dialpad_button">Zobrazit tlačítko číselníku na hlavní obrazovce</string>
<string name="on_contact_click">Po klepnutí na kontakt</string>
<string name="call_contact">Zavolat kontakt</string>
<string name="view_contact">Zobrazit údaje kontaktu</string>
<string name="manage_shown_contact_fields">Spravovat zobrazená pole kontaktů</string>
<string name="filter_duplicates">Pokusit se vyfiltrovat duplicitní kontakty</string>
<string name="manage_shown_tabs">Spravovat zobrazené karty</string>
<string name="contacts">Kontakty</string>
<string name="favorites">Oblíbené</string>
<string name="show_call_confirmation_dialog">Před zahájením hovoru zobrazit potvrzovací dialog</string>
<string name="show_only_contacts_with_numbers">Zobrazit jen kontakty s telefonními čísly</string>
<string name="show_dialpad_letters">Zobrazit na číselníku písmena</string>
<!-- Emails -->
<string name="email">E-mail</string>
<string name="home">Domov</string>
<string name="work">Práce</string>
<string name="other">Jiné</string>
<!-- Phone numbers -->
<string name="number">Číslo</string>
<string name="mobile">Mobil</string>
<string name="main_number">Hlavní</string>
<string name="work_fax">Pracovní fax</string>
<string name="home_fax">Domácí fax</string>
<string name="pager">Pager</string>
<string name="no_phone_number_found">Nenalezeno žádné telefonní číslo</string>
<!-- Events -->
<string name="birthday">Narozeniny</string>
<string name="anniversary">Výročí</string>
<!-- Favorites -->
<string name="no_favorites">Vypadá to, že jste ještě nepřidali žádné oblíbené kontakty.</string>
<string name="add_favorites">Přidat oblíbené</string>
<string name="add_to_favorites">Přidat mezi oblíbené</string>
<string name="remove_from_favorites">Odebrat z oblíbených</string>
<string name="must_be_at_edit">Pro úpravu kontaktu musíte být v Editoru kontaktu</string>
<!-- Search -->
<string name="search_contacts">Hledat v kontaktech</string>
<string name="search_favorites">Hledat mezi oblíbenými</string>
<string name="search_groups">Hledat mezi skupinami</string>
<!-- Export / Import -->
<string name="import_contacts">Importovat kontakty</string>
<string name="export_contacts">Exportovat kontakty</string>
<string name="import_contacts_from_vcf">Importovat kontakty z .vcf souboru</string>
<string name="export_contacts_to_vcf">Exportovat kontakty do .vcf souboru</string>
<string name="target_contact_source">Cílový zdroj kontaktů</string>
<string name="include_contact_sources">Zahrnout zdroje kontaktů</string>
<string name="filename_without_vcf">Název souboru (bez .vcf)</string>
<!-- Dialpad -->
<string name="dialpad">Číselník</string>
<string name="add_number_to_contact">Přidat číslo kontaktu</string>
<!-- Dialer -->
<string name="dialer">Telefon</string>
<string name="calling">Vytáčí se</string>
<string name="incoming_call">Příchozí hovor</string>
<string name="incoming_call_from">Příchozí hovor od…</string>
<string name="ongoing_call">Probíhající hovor</string>
<string name="disconnected">Ukončený hovor</string>
<string name="decline_call">Odmítnout</string>
<string name="answer_call">Přijmout</string>
<!-- Speed dial -->
<string name="speed_dial">Rychlé vytáčení</string>
<string name="manage_speed_dial">Spravovat rychlé vytáčení</string>
<string name="speed_dial_label">Pro přiřazení kontaktu klepněte na číslo. Následně můžete daný kontakt rychle vytočit dlouhým podržením čísla na číselníku.</string>
<!-- Visible fields -->
<string name="select_fields_to_show">Zvolte pole k zobrazení</string>
<string name="prefix">Titul před jménem</string>
<string name="suffix">Titul za příjmením</string>
<string name="phone_numbers">Telefonní čísla</string>
<string name="emails">E-maily</string>
<string name="addresses">Adresy</string>
<string name="events">Události (narozeniny, výročí)</string>
<string name="notes">Poznámky</string>
<string name="organization">Firma</string>
<string name="websites">Webové stránky</string>
<string name="groups">Skupiny</string>
<string name="contact_source">Zdroje kontaktů</string>
<string name="instant_messaging">Rychlé zprávy (IM)</string>
<!-- Blocked numbers -->
<string name="manage_blocked_numbers">Spravovat blokovaná čísla</string>
<string name="not_blocking_anyone">Neblokujete nikoho.</string>
<string name="add_a_blocked_number">Přidat blokované číslo</string>
<string name="block_number">Blokovat číslo</string>
<string name="block_numbers">Blokovat čísla</string>
<string name="blocked_numbers">Blokovaná čísla</string>
<!-- Confirmation dialog -->
<string name="delete_contacts_confirmation">Opravdu chcete vymazat %s?</string> <!-- Are you sure you want to delete 5 contacts? -->
<string name="delete_from_all_sources">Kontakt bude vymazán ze všech zdrojů kontaktů.</string>
<!-- Are you sure you want to delete 5 contacts? -->
<plurals name="delete_contacts">
<item quantity="one">%d kontakt</item>
<item quantity="few">%d kontakty</item>
<item quantity="other">%d kontaktů</item>
</plurals>
<plurals name="delete_groups">
<item quantity="one">%d skupinu</item>
<item quantity="few">%d skupiny</item>
<item quantity="other">%d skupin</item>
</plurals>
<!-- FAQ -->
<string name="faq_1_title">Chci upravit viditelná pole kontaktů. Lze to?</string>
<string name="faq_1_text">Ano, stačí jít do Nastavení -> Spravovat zobrazená pole kontaktů. Tam si můžete zvolit, která pole mají být viditelná. Některá jsou ve výchozím stavu vypnutá, takže tam můžete objevit i nová pole.</string>
<!-- Strings displayed only on Google Playstore. Optional, but good to have -->
<!-- App title has to have less than 50 characters. If you cannot squeeze it, just remove a part of it -->
<string name="app_title">Jednoduché kontakty Pro - Rychlá správa kontaktů</string>
<!-- Short description has to have less than 80 chars -->
<string name="app_short_description">Aplikace pro správu vašich kontaktů bez reklam, respektující vaše soukromí.</string>
<string name="app_long_description">
Jednoduchá aplikace na vytváření nebo správu vašich kontaktů z různých zdrojů. Mohou být uloženy buď jen ve vašem zařízení, nebo je můžete i synchronizovat přes Google či jiný účet. Své oblíbené položky si můžete zobrazit ve vlastním seznamu.
Můžete ji používat i na správu e-mailů a událostí kontaktů. Nabízí možnost řazení/filtrování pomocí různých parametrů, volitelné je zobrazování příjmení před jménem.
Neobsahuje žádné reklamy, ani nepotřebná oprávnění. Má plně otevřený zdrojový kód a možnost změny barev.
<b>Check out the full suite of Simple Tools here:</b>
https://www.simplemobiletools.com
<b>Standalone website of Simple Contacts Pro:</b>
https://www.simplemobiletools.com/contacts
<b>Facebook:</b>
https://www.facebook.com/simplemobiletools
<b>Reddit:</b>
https://www.reddit.com/r/SimpleMobileTools
</string>
<!--
Haven't found some strings? There's more at
https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res
-->
</resources>

View file

@ -180,7 +180,17 @@
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
<b>Check out the full suite of Simple Tools here:</b>
https://www.simplemobiletools.com
<b>Standalone website of Simple Contacts Pro:</b>
https://www.simplemobiletools.com/contacts
<b>Facebook:</b>
https://www.facebook.com/simplemobiletools
<b>Reddit:</b>
https://www.reddit.com/r/SimpleMobileTools
</string>
<!--

View file

@ -180,7 +180,17 @@
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
<b>Check out the full suite of Simple Tools here:</b>
https://www.simplemobiletools.com
<b>Standalone website of Simple Contacts Pro:</b>
https://www.simplemobiletools.com/contacts
<b>Facebook:</b>
https://www.facebook.com/simplemobiletools
<b>Reddit:</b>
https://www.reddit.com/r/SimpleMobileTools
</string>
<!--

View file

@ -180,7 +180,17 @@
Enthält keine Werbung oder unnötige Berechtigungen. Vollständig quelloffen. Die Farben sind anpassbar.
Diese App ist nur ein Teil einer größeren App-Familie. Die übrigen finden Sie unter https://www.simplemobiletools.com
<b>Check out the full suite of Simple Tools here:</b>
https://www.simplemobiletools.com
<b>Standalone website of Simple Contacts Pro:</b>
https://www.simplemobiletools.com/contacts
<b>Facebook:</b>
https://www.facebook.com/simplemobiletools
<b>Reddit:</b>
https://www.reddit.com/r/SimpleMobileTools
</string>
<!--

View file

@ -122,9 +122,9 @@
<string name="answer_call">Απάντηση</string>
<!-- Speed dial -->
<string name="speed_dial">Speed dial</string>
<string name="manage_speed_dial">Manage speed dial</string>
<string name="speed_dial_label">Click on a number to assign a contact to it. You can then quickly call the given contact by long pressing the given number at the dialer.</string>
<string name="speed_dial">Ταχεία Κλήση</string>
<string name="manage_speed_dial">Διαχείριση Ταχείας Κλήσης</string>
<string name="speed_dial_label">Κάντε κλικ σε έναν αριθμό για να αντιστοιχίσετε μια επαφή σε αυτόν. Στη συνέχεια, μπορείτε να καλέσετε γρήγορα τη δεδομένη επαφή πατώντας τον αριθμό αυτόν στο πληκτρολόγιο.</string>
<!-- Visible fields -->
<string name="select_fields_to_show">Επιλογή εμφάνισης πεδίων</string>
@ -180,7 +180,17 @@
Δεν περιέχει διαφημίσεις ή περιττές άδειες. Έιναι όλη ανοιχτού κώδικα και παρέχει προσαρμόσιμα χρώματα για την εφαρμογή.
Αυτή η εφαρμογή είναι μέρος μιας σειράς εφαρμογών. Μπορείτε να βρείτε τις υπόλοιπες στο https://www.simplemobiletools.com
<b>Δείτε την πλήρη σειρά των Απλών Εργαλείων εδώ:</b>
https://www.simplemobiletools.com
<b>Αποκλειστική ιστοσελίδα της Απλές Επαφές Pro:</b>
https://www.simplemobiletools.com/contacts
<b>Facebook:</b>
https://www.facebook.com/simplemobiletools
<b>Reddit:</b>
https://www.reddit.com/r/SimpleMobileTools
</string>
<!--

View file

@ -180,7 +180,17 @@
No contiene anuncios o permisos innecesarios. Es complétamente de código abierto, provee colores personalziables.
Esta es solo una aplicación de una serie de aplicaciones más grande. Puedes encontrar el resto en https://www.simplemobiletools.com
<b>Check out the full suite of Simple Tools here:</b>
https://www.simplemobiletools.com
<b>Standalone website of Simple Contacts Pro:</b>
https://www.simplemobiletools.com/contacts
<b>Facebook:</b>
https://www.facebook.com/simplemobiletools
<b>Reddit:</b>
https://www.reddit.com/r/SimpleMobileTools
</string>
<!--

View file

@ -178,7 +178,19 @@
Erabiltzaileen emailak eta ekitaldiak kudeatzeko erabili dezakezu ere. Aukera duzu parametro askoren arabera sailkatzeko, tartean abizena izen gisa erakustea.
Ez ditu iragarkirik ezta beharrezkoak ez diren baimenak. Guztiz kode irekikoa da eta koloreak pertsonalizagarriak dira. Aplikazio hau sorta handiago bateko zati bat baino ez da. Gainontzekoak ikusteko, jo https://www.simplemobiletools.com webgunera
Ez ditu iragarkirik ezta beharrezkoak ez diren baimenak. Guztiz kode irekikoa da eta koloreak pertsonalizagarriak dira. Aplikazio hau sorta handiago bateko zati bat baino ez da.
<b>Check out the full suite of Simple Tools here:</b>
https://www.simplemobiletools.com
<b>Standalone website of Simple Contacts Pro:</b>
https://www.simplemobiletools.com/contacts
<b>Facebook:</b>
https://www.facebook.com/simplemobiletools
<b>Reddit:</b>
https://www.reddit.com/r/SimpleMobileTools
</string>
<!--

View file

@ -180,7 +180,17 @@
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
<b>Check out the full suite of Simple Tools here:</b>
https://www.simplemobiletools.com
<b>Standalone website of Simple Contacts Pro:</b>
https://www.simplemobiletools.com/contacts
<b>Facebook:</b>
https://www.facebook.com/simplemobiletools
<b>Reddit:</b>
https://www.reddit.com/r/SimpleMobileTools
</string>
<!--

View file

@ -180,7 +180,17 @@
L\'application ne contient ni publicité, ni autorisation inutile. Elle est totalement opensource et est également fournie avec des couleurs personnalisables.
Cette application fait partie d\'une plus grande suite. Vous pouvez trouver les autres applications sur https://www.simplemobiletools.com
<b>Check out the full suite of Simple Tools here:</b>
https://www.simplemobiletools.com
<b>Standalone website of Simple Contacts Pro:</b>
https://www.simplemobiletools.com/contacts
<b>Facebook:</b>
https://www.facebook.com/simplemobiletools
<b>Reddit:</b>
https://www.reddit.com/r/SimpleMobileTools
</string>
<!--

View file

@ -180,7 +180,17 @@
Ne sadrži oglase ili nepotrebne dozvole. Aplikacije je otvorenog koda, pruža prilagodljive boje.
Ova je aplikacija samo dio većeg broja aplikacija. Možete pronaći ostatak na https://www.simplemobiletools.com
<b>Check out the full suite of Simple Tools here:</b>
https://www.simplemobiletools.com
<b>Standalone website of Simple Contacts Pro:</b>
https://www.simplemobiletools.com/contacts
<b>Facebook:</b>
https://www.facebook.com/simplemobiletools
<b>Reddit:</b>
https://www.reddit.com/r/SimpleMobileTools
</string>
<!--

View file

@ -180,7 +180,17 @@
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.
<b>Check out the full suite of Simple Tools here:</b>
https://www.simplemobiletools.com
<b>Standalone website of Simple Contacts Pro:</b>
https://www.simplemobiletools.com/contacts
<b>Facebook:</b>
https://www.facebook.com/simplemobiletools
<b>Reddit:</b>
https://www.reddit.com/r/SimpleMobileTools
</string>
<!--

View file

@ -180,7 +180,17 @@
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
<b>Check out the full suite of Simple Tools here:</b>
https://www.simplemobiletools.com
<b>Standalone website of Simple Contacts Pro:</b>
https://www.simplemobiletools.com/contacts
<b>Facebook:</b>
https://www.facebook.com/simplemobiletools
<b>Reddit:</b>
https://www.reddit.com/r/SimpleMobileTools
</string>
<!--

View file

@ -180,7 +180,17 @@
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
<b>Check out the full suite of Simple Tools here:</b>
https://www.simplemobiletools.com
<b>Standalone website of Simple Contacts Pro:</b>
https://www.simplemobiletools.com/contacts
<b>Facebook:</b>
https://www.facebook.com/simplemobiletools
<b>Reddit:</b>
https://www.reddit.com/r/SimpleMobileTools
</string>
<!--

View file

@ -180,7 +180,17 @@
L\'applicazione non contiene pubblicità o permessi non necessari; è completamente opensource e la si può personalizzare con i propri colori preferiti.
Questa è solamente una delle tante applicazioni della serie Simple Mobile Tools. Si possono trovare le altre su https://www.simplemobiletools.com
<b>Check out the full suite of Simple Tools here:</b>
https://www.simplemobiletools.com
<b>Standalone website of Simple Contacts Pro:</b>
https://www.simplemobiletools.com/contacts
<b>Facebook:</b>
https://www.facebook.com/simplemobiletools
<b>Reddit:</b>
https://www.reddit.com/r/SimpleMobileTools
</string>
<!--

View file

@ -180,7 +180,17 @@
広告や不要なアクセス許可は含まれていません。完全にオープンソースで、色のカスタマイズも可能です。
このアプリは大きな一連のアプリの一つです。 その他のアプリは https://www.simplemobiletools.com で見つけることができます。
<b>Check out the full suite of Simple Tools here:</b>
https://www.simplemobiletools.com
<b>Standalone website of Simple Contacts Pro:</b>
https://www.simplemobiletools.com/contacts
<b>Facebook:</b>
https://www.facebook.com/simplemobiletools
<b>Reddit:</b>
https://www.reddit.com/r/SimpleMobileTools
</string>
<!--

View file

@ -180,7 +180,17 @@
광고가 포함되어 있거나, 불필요한 권한을 요청하지 않습니다. 이 앱의 모든 소스는 오픈소스이며, 사용자가 직접 애플리케이션의 컬러를 설정 할 수 있습니다.
이 앱은 다양한 시리즈의 모바일앱 중 하나입니다. 나머지는 https://www.simplemobiletools.com 에서 찾아 보실 수 있습니다.
<b>Check out the full suite of Simple Tools here:</b>
https://www.simplemobiletools.com
<b>Standalone website of Simple Contacts Pro:</b>
https://www.simplemobiletools.com/contacts
<b>Facebook:</b>
https://www.facebook.com/simplemobiletools
<b>Reddit:</b>
https://www.reddit.com/r/SimpleMobileTools
</string>
<!--

View file

@ -180,7 +180,17 @@
Neturi reklamų ar nereikalingų leidimų. Programėlė visiškai atviro kodo, yra galimybė keisti spalvas.
Ši programėle yra vienintelė iš keletos mūsų programėlių. Likusias Jūs galite rasti čia https://www.simplemobiletools.com
<b>Check out the full suite of Simple Tools here:</b>
https://www.simplemobiletools.com
<b>Standalone website of Simple Contacts Pro:</b>
https://www.simplemobiletools.com/contacts
<b>Facebook:</b>
https://www.facebook.com/simplemobiletools
<b>Reddit:</b>
https://www.reddit.com/r/SimpleMobileTools
</string>
<!--

View file

@ -122,9 +122,9 @@
<string name="answer_call">Opnemen</string>
<!-- Speed dial -->
<string name="speed_dial">Speed dial</string>
<string name="manage_speed_dial">Manage speed dial</string>
<string name="speed_dial_label">Click on a number to assign a contact to it. You can then quickly call the given contact by long pressing the given number at the dialer.</string>
<string name="speed_dial">Snelkiezer</string>
<string name="manage_speed_dial">Snelkiezer bewerken</string>
<string name="speed_dial_label">Klik op een cijfer om er een contact aan te koppelen. Vervolgens kan dit contact direct gebeld worden door in de kiezer lang op het gekoppelde cijfer te drukken.</string>
<!-- Visible fields -->
<string name="select_fields_to_show">Kies zichtbare velden</string>
@ -180,7 +180,17 @@
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
<b>Check out the full suite of Simple Tools here:</b>
https://www.simplemobiletools.com
<b>Standalone website of Simple Contacts Pro:</b>
https://www.simplemobiletools.com/contacts
<b>Facebook:</b>
https://www.facebook.com/simplemobiletools
<b>Reddit:</b>
https://www.reddit.com/r/SimpleMobileTools
</string>
<!--

View file

@ -1,190 +1,200 @@
<resources>
<string name="app_name">Proste Kontakty</string>
<string name="app_launcher_name">Kontakty</string>
<string name="address">Adres</string>
<string name="inserting">Dodawanie…</string>
<string name="updating">Aktualizowanie…</string>
<string name="phone_storage">Pamięć telefonu</string>
<string name="phone_storage_hidden">Pamięć telefonu (niewidoczna dla innych aplikacji)</string>
<string name="company">Firma</string>
<string name="job_position">Stanowisko</string>
<string name="website">Strona internetowa</string>
<string name="send_sms_to_contacts">Wyślij SMS-a do kontaktów</string>
<string name="send_email_to_contacts">Wyślij e-maila do kontaktów</string>
<string name="send_sms_to_group">Wyślij SMS-a do grupy</string>
<string name="send_email_to_group">Wyślij e-maila do grupy</string>
<string name="call_person">Zadzwoń do: %s</string>
<string name="request_the_required_permissions">Wymagaj koniecznych uprawnień</string>
<string name="create_new_contact">Utwórz nowy kontakt</string>
<string name="add_to_existing_contact">Dodaj do istniejącego kontaktu</string>
<string name="must_make_default_dialer">Musisz ustawić tę aplikację jako domyślną aplikację telefoniczną, aby móc korzystać z funkcji blokowania numerów.</string>
<string name="set_as_default">Ustaw jako domyślną</string>
<!-- Placeholders -->
<string name="no_contacts_found">Nie znaleziono kontaktów.</string>
<string name="no_contacts_with_emails">Nie znaleziono kontaktów z adresami e-mail</string>
<string name="no_contacts_with_phone_numbers">Nie znaleziono kontaktów z numerami telefonów</string>
<string name="new_contact">Nowy kontakt</string>
<string name="edit_contact">Edytuj kontakt</string>
<string name="select_contact">Wybierz kontakt</string>
<string name="select_contacts">Wybierz kontakty</string>
<string name="first_name">Pierwsze imię</string>
<string name="middle_name">Drugie imię</string>
<string name="surname">Nazwisko</string>
<string name="nickname">Pseudonim</string>
<!-- Groups -->
<string name="no_groups">Brak grup</string>
<string name="create_new_group">Utwórz nową grupę</string>
<string name="remove_from_group">Usuń z grupy</string>
<string name="no_group_participants">Ta grupa jest pusta</string>
<string name="add_contacts">Dodaj kontakty</string>
<string name="no_group_created">Nie ma grup kontaktów na urządzeniu</string>
<string name="create_group">Utwórz grupę</string>
<string name="add_to_group">Dodaj do grupy</string>
<string name="create_group_under_account">Utwórz grupę na koncie</string>
<!-- Photo -->
<string name="take_photo">Zrób zdjęcie</string>
<string name="choose_photo">Wybierz zdjęcie</string>
<string name="remove_photo">Usuń zdjęcie</string>
<!-- Settings -->
<string name="start_name_with_surname">Zacznij nazwę od nazwiska</string>
<string name="show_phone_numbers">Pokazuj numery telefonów na ekranie głównym</string>
<string name="show_contact_thumbnails">Pokazuj miniatury kontaktów</string>
<string name="show_dialpad_button">Pokazuj przycisk panelu wybierania numeru na ekranie głównym</string>
<string name="on_contact_click">Przy naciśnięciu kontaktu</string>
<string name="call_contact">Zadzwoń do konataktu</string>
<string name="view_contact">Pokaż szczegóły kontaktu</string>
<string name="manage_shown_contact_fields">Zarządzaj pokazywanymi polami kontaktu</string>
<string name="filter_duplicates">Spróbuj odfiltrować zduplikowane kontakty</string>
<string name="manage_shown_tabs">Zarządzaj pokazywanymi sekcjami</string>
<string name="contacts">Kontakty</string>
<string name="favorites">Ulubione</string>
<string name="show_call_confirmation_dialog">Pokazuj okno potwierdzenia zadzwonienia przed zainicjonowaniem połączenia</string>
<string name="show_only_contacts_with_numbers">Pokazuj wyłącznie kontakty z numerami telefonów</string>
<string name="show_dialpad_letters">Pokazuj litery na panelu wybierania</string>
<!-- Emails -->
<string name="email">E-mail</string>
<string name="home">Dom</string>
<string name="work">Praca</string>
<string name="other">Inny</string>
<!-- Phone numbers -->
<string name="number">Numer</string>
<string name="mobile">Komórkowy</string>
<string name="main_number">Główny</string>
<string name="work_fax">Służbowy faks</string>
<string name="home_fax">Domowy faks</string>
<string name="pager">Pager</string>
<string name="no_phone_number_found">Nie znaleziono numeru telefonu</string>
<!-- Events -->
<string name="birthday">Urodziny</string>
<string name="anniversary">Rocznica</string>
<!-- Favorites -->
<string name="no_favorites">Wygląda na to, że nie dodałeś jeszcze żadnego ulubionego kontaktu.</string>
<string name="add_favorites">Dodaj ulubione</string>
<string name="add_to_favorites">Dodaj do ulubionych</string>
<string name="remove_from_favorites">Usuń z ulubionych</string>
<string name="must_be_at_edit">Musisz wejść do ekranu edycji, aby zmodyfikować kontakt</string>
<!-- Search -->
<string name="search_contacts">Szukaj kontaktów</string>
<string name="search_favorites">Szukaj ulubionych</string>
<string name="search_groups">Search groups</string>
<!-- Export / Import -->
<string name="import_contacts">Importuj kontakty</string>
<string name="export_contacts">Eksportuj kontakty</string>
<string name="import_contacts_from_vcf">Importuj kontakty z pliku .vcf</string>
<string name="export_contacts_to_vcf">Eksportuj kontakty do pliku .vcf</string>
<string name="target_contact_source">Wybierz miejsce przechowywania kontaktów</string>
<string name="include_contact_sources">Obejmuj kontakty z następujących źródeł:</string>
<string name="filename_without_vcf">Nazwa pliku (bez .vcf)</string>
<!-- Dialpad -->
<string name="dialpad">Panel wybierania</string>
<string name="add_number_to_contact">Dodaj numer do kontaktu</string>
<!-- Dialer -->
<string name="dialer">Dialer</string>
<string name="calling">Dzwonienie</string>
<string name="incoming_call">Połączenie przychodzące</string>
<string name="incoming_call_from">Połączenie przychodzące od…</string>
<string name="ongoing_call">Połączenie wychodzące</string>
<string name="disconnected">Rozłączony</string>
<string name="decline_call">Odrzuć</string>
<string name="answer_call">Odpowiedz</string>
<!-- Speed dial -->
<string name="speed_dial">Speed dial</string>
<string name="manage_speed_dial">Manage speed dial</string>
<string name="speed_dial_label">Click on a number to assign a contact to it. You can then quickly call the given contact by long pressing the given number at the dialer.</string>
<!-- Visible fields -->
<string name="select_fields_to_show">Wybierz pola do pokazywania</string>
<string name="prefix">Prefiks</string>
<string name="suffix">Sufiks</string>
<string name="phone_numbers">Numery telefonów</string>
<string name="emails">E-maile</string>
<string name="addresses">Adresy</string>
<string name="events">Wydarzenia (urodziny, rocznice)</string>
<string name="notes">Notatki</string>
<string name="organization">Organizacja</string>
<string name="websites">Strony internetowe</string>
<string name="groups">Grupy</string>
<string name="contact_source">Miejsce przechowywania kontaktu</string>
<string name="instant_messaging">Komunikator</string>
<!-- Blocked numbers -->
<string name="manage_blocked_numbers">Zarządzaj zablokowanymi numerami</string>
<string name="not_blocking_anyone">Nie blokujesz nikogo.</string>
<string name="add_a_blocked_number">Dodaj numer do blokowania</string>
<string name="block_number">Zablokuj numer</string>
<string name="block_numbers">Zablokuj numery</string>
<string name="blocked_numbers">Zablokowane numery</string>
<!-- Confirmation dialog -->
<string name="delete_contacts_confirmation">Are you sure you want to delete %s?</string> <!-- Are you sure you want to delete 5 contacts? -->
<string name="delete_from_all_sources">The contact will be removed from all contact sources.</string>
<!-- Are you sure you want to delete 5 contacts? -->
<plurals name="delete_contacts">
<item quantity="one">%d contact</item>
<item quantity="other">%d contacts</item>
</plurals>
<plurals name="delete_groups">
<item quantity="one">%d group</item>
<item quantity="other">%d groups</item>
</plurals>
<!-- FAQ -->
<string name="faq_1_title">Chcę zmienić, które pola są widoczne w kontaktach. Czy mogę to zrobić?</string>
<string name="faq_1_text">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.</string>
<!-- Strings displayed only on Google Playstore. Optional, but good to have -->
<!-- App title has to have less than 50 characters. If you cannot squeeze it, just remove a part of it -->
<string name="app_title">Simple Contacts Pro - Manage your contacts easily</string>
<!-- Short description has to have less than 80 chars -->
<string name="app_short_description">Aplikacja do zarządzania Twoimi kontaktami, bez reklam, szanująca prywatność.</string>
<string name="app_long_description">
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
</string>
<!--
Haven't found some strings? There's more at
https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res
-->
</resources>
<resources>
<string name="app_name">Proste Kontakty</string>
<string name="app_launcher_name">Kontakty</string>
<string name="address">Adres</string>
<string name="inserting">Dodawanie…</string>
<string name="updating">Aktualizowanie…</string>
<string name="phone_storage">Pamięć telefonu</string>
<string name="phone_storage_hidden">Pamięć telefonu (niewidoczna dla innych aplikacji)</string>
<string name="company">Firma</string>
<string name="job_position">Stanowisko</string>
<string name="website">Strona internetowa</string>
<string name="send_sms_to_contacts">Wyślij SMS-a do kontaktów</string>
<string name="send_email_to_contacts">Wyślij e-maila do kontaktów</string>
<string name="send_sms_to_group">Wyślij SMS-a do grupy</string>
<string name="send_email_to_group">Wyślij e-maila do grupy</string>
<string name="call_person">Zadzwoń do: %s</string>
<string name="request_the_required_permissions">Wymagaj koniecznych uprawnień</string>
<string name="create_new_contact">Utwórz nowy kontakt</string>
<string name="add_to_existing_contact">Dodaj do istniejącego kontaktu</string>
<string name="must_make_default_dialer">Musisz ustawić tę aplikację jako domyślną aplikację telefoniczną, aby móc korzystać z funkcji blokowania numerów.</string>
<string name="set_as_default">Ustaw jako domyślną</string>
<!-- Placeholders -->
<string name="no_contacts_found">Nie znaleziono kontaktów.</string>
<string name="no_contacts_with_emails">Nie znaleziono kontaktów z adresami e-mail</string>
<string name="no_contacts_with_phone_numbers">Nie znaleziono kontaktów z numerami telefonów</string>
<string name="new_contact">Nowy kontakt</string>
<string name="edit_contact">Edytuj kontakt</string>
<string name="select_contact">Wybierz kontakt</string>
<string name="select_contacts">Wybierz kontakty</string>
<string name="first_name">Pierwsze imię</string>
<string name="middle_name">Drugie imię</string>
<string name="surname">Nazwisko</string>
<string name="nickname">Pseudonim</string>
<!-- Groups -->
<string name="no_groups">Brak grup</string>
<string name="create_new_group">Utwórz nową grupę</string>
<string name="remove_from_group">Usuń z grupy</string>
<string name="no_group_participants">Ta grupa jest pusta</string>
<string name="add_contacts">Dodaj kontakty</string>
<string name="no_group_created">Nie ma grup kontaktów na urządzeniu</string>
<string name="create_group">Utwórz grupę</string>
<string name="add_to_group">Dodaj do grupy</string>
<string name="create_group_under_account">Utwórz grupę na koncie</string>
<!-- Photo -->
<string name="take_photo">Zrób zdjęcie</string>
<string name="choose_photo">Wybierz zdjęcie</string>
<string name="remove_photo">Usuń zdjęcie</string>
<!-- Settings -->
<string name="start_name_with_surname">Zacznij nazwę od nazwiska</string>
<string name="show_phone_numbers">Pokazuj numery telefonów na ekranie głównym</string>
<string name="show_contact_thumbnails">Pokazuj miniatury kontaktów</string>
<string name="show_dialpad_button">Pokazuj przycisk panelu wybierania numeru na ekranie głównym</string>
<string name="on_contact_click">Przy naciśnięciu kontaktu</string>
<string name="call_contact">Zadzwoń do konataktu</string>
<string name="view_contact">Pokaż szczegóły kontaktu</string>
<string name="manage_shown_contact_fields">Zarządzaj pokazywanymi polami kontaktu</string>
<string name="filter_duplicates">Spróbuj odfiltrować zduplikowane kontakty</string>
<string name="manage_shown_tabs">Zarządzaj pokazywanymi sekcjami</string>
<string name="contacts">Kontakty</string>
<string name="favorites">Ulubione</string>
<string name="show_call_confirmation_dialog">Pokazuj okno potwierdzenia zadzwonienia przed zainicjonowaniem połączenia</string>
<string name="show_only_contacts_with_numbers">Pokazuj wyłącznie kontakty z numerami telefonów</string>
<string name="show_dialpad_letters">Pokazuj litery na panelu wybierania</string>
<!-- Emails -->
<string name="email">E-mail</string>
<string name="home">Dom</string>
<string name="work">Praca</string>
<string name="other">Inny</string>
<!-- Phone numbers -->
<string name="number">Numer</string>
<string name="mobile">Komórkowy</string>
<string name="main_number">Główny</string>
<string name="work_fax">Służbowy faks</string>
<string name="home_fax">Domowy faks</string>
<string name="pager">Pager</string>
<string name="no_phone_number_found">Nie znaleziono numeru telefonu</string>
<!-- Events -->
<string name="birthday">Urodziny</string>
<string name="anniversary">Rocznica</string>
<!-- Favorites -->
<string name="no_favorites">Wygląda na to, że nie dodałeś jeszcze żadnego ulubionego kontaktu.</string>
<string name="add_favorites">Dodaj ulubione</string>
<string name="add_to_favorites">Dodaj do ulubionych</string>
<string name="remove_from_favorites">Usuń z ulubionych</string>
<string name="must_be_at_edit">Musisz wejść do ekranu edycji, aby zmodyfikować kontakt</string>
<!-- Search -->
<string name="search_contacts">Szukaj kontaktów</string>
<string name="search_favorites">Szukaj ulubionych</string>
<string name="search_groups">Search groups</string>
<!-- Export / Import -->
<string name="import_contacts">Importuj kontakty</string>
<string name="export_contacts">Eksportuj kontakty</string>
<string name="import_contacts_from_vcf">Importuj kontakty z pliku .vcf</string>
<string name="export_contacts_to_vcf">Eksportuj kontakty do pliku .vcf</string>
<string name="target_contact_source">Wybierz miejsce przechowywania kontaktów</string>
<string name="include_contact_sources">Obejmuj kontakty z następujących źródeł:</string>
<string name="filename_without_vcf">Nazwa pliku (bez .vcf)</string>
<!-- Dialpad -->
<string name="dialpad">Panel wybierania</string>
<string name="add_number_to_contact">Dodaj numer do kontaktu</string>
<!-- Dialer -->
<string name="dialer">Dialer</string>
<string name="calling">Dzwonienie</string>
<string name="incoming_call">Połączenie przychodzące</string>
<string name="incoming_call_from">Połączenie przychodzące od…</string>
<string name="ongoing_call">Połączenie wychodzące</string>
<string name="disconnected">Rozłączony</string>
<string name="decline_call">Odrzuć</string>
<string name="answer_call">Odpowiedz</string>
<!-- Speed dial -->
<string name="speed_dial">Speed dial</string>
<string name="manage_speed_dial">Manage speed dial</string>
<string name="speed_dial_label">Click on a number to assign a contact to it. You can then quickly call the given contact by long pressing the given number at the dialer.</string>
<!-- Visible fields -->
<string name="select_fields_to_show">Wybierz pola do pokazywania</string>
<string name="prefix">Prefiks</string>
<string name="suffix">Sufiks</string>
<string name="phone_numbers">Numery telefonów</string>
<string name="emails">E-maile</string>
<string name="addresses">Adresy</string>
<string name="events">Wydarzenia (urodziny, rocznice)</string>
<string name="notes">Notatki</string>
<string name="organization">Organizacja</string>
<string name="websites">Strony internetowe</string>
<string name="groups">Grupy</string>
<string name="contact_source">Miejsce przechowywania kontaktu</string>
<string name="instant_messaging">Komunikator</string>
<!-- Blocked numbers -->
<string name="manage_blocked_numbers">Zarządzaj zablokowanymi numerami</string>
<string name="not_blocking_anyone">Nie blokujesz nikogo.</string>
<string name="add_a_blocked_number">Dodaj numer do blokowania</string>
<string name="block_number">Zablokuj numer</string>
<string name="block_numbers">Zablokuj numery</string>
<string name="blocked_numbers">Zablokowane numery</string>
<!-- Confirmation dialog -->
<string name="delete_contacts_confirmation">Are you sure you want to delete %s?</string> <!-- Are you sure you want to delete 5 contacts? -->
<string name="delete_from_all_sources">The contact will be removed from all contact sources.</string>
<!-- Are you sure you want to delete 5 contacts? -->
<plurals name="delete_contacts">
<item quantity="one">%d contact</item>
<item quantity="other">%d contacts</item>
</plurals>
<plurals name="delete_groups">
<item quantity="one">%d group</item>
<item quantity="other">%d groups</item>
</plurals>
<!-- FAQ -->
<string name="faq_1_title">Chcę zmienić, które pola są widoczne w kontaktach. Czy mogę to zrobić?</string>
<string name="faq_1_text">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.</string>
<!-- Strings displayed only on Google Playstore. Optional, but good to have -->
<!-- App title has to have less than 50 characters. If you cannot squeeze it, just remove a part of it -->
<string name="app_title">Simple Contacts Pro - Manage your contacts easily</string>
<!-- Short description has to have less than 80 chars -->
<string name="app_short_description">Aplikacja do zarządzania Twoimi kontaktami, bez reklam, szanująca prywatność.</string>
<string name="app_long_description">
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.
<b>Check out the full suite of Simple Tools here:</b>
https://www.simplemobiletools.com
<b>Standalone website of Simple Contacts Pro:</b>
https://www.simplemobiletools.com/contacts
<b>Facebook:</b>
https://www.facebook.com/simplemobiletools
<b>Reddit:</b>
https://www.reddit.com/r/SimpleMobileTools
</string>
<!--
Haven't found some strings? There's more at
https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res
-->
</resources>

View file

@ -180,7 +180,17 @@
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
<b>Check out the full suite of Simple Tools here:</b>
https://www.simplemobiletools.com
<b>Standalone website of Simple Contacts Pro:</b>
https://www.simplemobiletools.com/contacts
<b>Facebook:</b>
https://www.facebook.com/simplemobiletools
<b>Reddit:</b>
https://www.reddit.com/r/SimpleMobileTools
</string>
<!--

View file

@ -122,9 +122,9 @@
<string name="answer_call">Atender</string>
<!-- Speed dial -->
<string name="speed_dial">Speed dial</string>
<string name="manage_speed_dial">Manage speed dial</string>
<string name="speed_dial_label">Click on a number to assign a contact to it. You can then quickly call the given contact by long pressing the given number at the dialer.</string>
<string name="speed_dial">Ligação rápida</string>
<string name="manage_speed_dial">Gerir ligações rápidas</string>
<string name="speed_dial_label">Clique no número para atribuir um contacto a uma ligação rápida. Posteriormente, poderá ligar diretamente ao contacto através da tecla de ligação rápida.</string>
<!-- Visible fields -->
<string name="select_fields_to_show">Selecione os campos a mostrar</string>
@ -180,7 +180,17 @@
Não contém anúncios ou permissões desnecessárias. É totalmente open source e permite personalização de cores.
Esta aplicação é apenas parte de um conjunto mais vasto de aplicações. Saiba mais em https://www.simplemobiletools.com
<b>Check out the full suite of Simple Tools here:</b>
https://www.simplemobiletools.com
<b>Standalone website of Simple Contacts Pro:</b>
https://www.simplemobiletools.com/contacts
<b>Facebook:</b>
https://www.facebook.com/simplemobiletools
<b>Reddit:</b>
https://www.reddit.com/r/SimpleMobileTools
</string>
<!--

View file

@ -182,7 +182,17 @@
Не содержит рекламы или ненужных разрешений, полностью с открытым исходным кодом. Есть возможность настраивать цвета.
Это приложение — всего лишь частица из большой серии приложений. Вы можете найти остальные на https://www.simplemobiletools.com
<b>Check out the full suite of Simple Tools here:</b>
https://www.simplemobiletools.com
<b>Standalone website of Simple Contacts Pro:</b>
https://www.simplemobiletools.com/contacts
<b>Facebook:</b>
https://www.facebook.com/simplemobiletools
<b>Reddit:</b>
https://www.reddit.com/r/SimpleMobileTools
</string>
<!--

View file

@ -182,7 +182,17 @@
Neobsahuje žiadne reklamy a nepotrebné oprávnenia. Je opensource, poskytuje možnosť zmeny farieb.
Táto aplikácia je iba jednou zo skupiny aplikácií. Ostatné viete nájsť na https://www.simplemobiletools.com
<b>Pozrite si celú sadu aplikácií na:</b>
https://www.simplemobiletools.com
<b>Vlastná stránka Jednoduchých Kontaktov Pro:</b>
https://www.simplemobiletools.com/contacts
<b>Facebook:</b>
https://www.facebook.com/simplemobiletools
<b>Reddit:</b>
https://www.reddit.com/r/SimpleMobileTools
</string>
<!--

View file

@ -180,7 +180,17 @@
Innehåller ingen reklam eller onödiga behörigheter. Den har helt öppen källkod och anpassningsbara färger.
Denna app är bara en del av en större serie appar. Du hittar resten av dem på https://www.simplemobiletools.com
<b>Check out the full suite of Simple Tools here:</b>
https://www.simplemobiletools.com
<b>Standalone website of Simple Contacts Pro:</b>
https://www.simplemobiletools.com/contacts
<b>Facebook:</b>
https://www.facebook.com/simplemobiletools
<b>Reddit:</b>
https://www.reddit.com/r/SimpleMobileTools
</string>
<!--

View file

@ -113,7 +113,7 @@
<!-- Dialer -->
<string name="dialer">Çevirici</string>
<string name="calling">Çağırı yapılıyor</string>
<string name="calling">Çağrı yapılıyor</string>
<string name="incoming_call">Gelen çağrı</string>
<string name="incoming_call_from">Gelen çağrı şundan…</string>
<string name="ongoing_call">Devam eden çağrı</string>
@ -122,9 +122,9 @@
<string name="answer_call">Cevapla</string>
<!-- Speed dial -->
<string name="speed_dial">Speed dial</string>
<string name="manage_speed_dial">Manage speed dial</string>
<string name="speed_dial_label">Click on a number to assign a contact to it. You can then quickly call the given contact by long pressing the given number at the dialer.</string>
<string name="speed_dial">Hızlı arama</string>
<string name="manage_speed_dial">Hızlı aramayı yönet</string>
<string name="speed_dial_label">Bir kişiyi bir numaraya atamak için numaraya tıklayın. Daha sonra atanan kişiyi çeviricide atanan numaraya uzun basarak hızlıca arayabilirsiniz.</string>
<!-- Visible fields -->
<string name="select_fields_to_show">Görüntülenecek alanları seç</string>
@ -170,9 +170,9 @@
<!-- Strings displayed only on Google Playstore. Optional, but good to have -->
<!-- App title has to have less than 50 characters. If you cannot squeeze it, just remove a part of it -->
<string name="app_title">Simple Contacts Pro - Manage your contacts easily</string>
<string name="app_title">Basit Kişiler Pro - Kişilerinizi kolayca yönetin</string>
<!-- Short description has to have less than 80 chars -->
<string name="app_short_description">An app for managing your contacts without ads, respecting your privacy.</string>
<string name="app_short_description">Reklamsız, gizliliğinize saygı duyan, kişilerinizi yönetmek için bir uygulama.</string>
<string name="app_long_description">
Kişilerinizi herhangi bir kaynaktan oluşturmak veya yönetmek için basit bir uygulama. Kişiler yalnızca cihazınızda saklanabilir, aynı zamanda Google veya diğer hesaplarla senkronize edilebilir. Favori kişilerinizi ayrı bir listede görüntüleyebilirsiniz.
@ -180,7 +180,17 @@
Reklam veya gereksiz izinler içermez. Tamamen açık kaynaktır, özelleştirilebilir renkler sağlar.
Bu uygulama, daha büyük bir uygulama serisinden sadece bir parça. Geri kalanı https://www.simplemobiletools.com adresinde bulabilirsiniz
<b>Basit Araçlar paketinin tamamını buradan inceleyin:</b>
https://www.simplemobiletools.com
<b>Basit Kişiler Pro'nun bağımsız web sitesi:</b>
https://www.simplemobiletools.com/contacts
<b>Facebook:</b>
https://www.facebook.com/simplemobiletools
<b>Reddit:</b>
https://www.reddit.com/r/SimpleMobileTools
</string>
<!--

View file

@ -180,7 +180,17 @@
Цей додаток не буде показувати рекламу, потрібні лише найнеобхідніші дозволи. Додаток має повністю відкритий програмний код, кольори оформлення можна легко налаштувати.
Просто Контакти - це один із ряду додатків від Simple Mobile Tools. Інші додатки можна знайти тут: https://www.simplemobiletools.com
<b>Check out the full suite of Simple Tools here:</b>
https://www.simplemobiletools.com
<b>Standalone website of Simple Contacts Pro:</b>
https://www.simplemobiletools.com/contacts
<b>Facebook:</b>
https://www.facebook.com/simplemobiletools
<b>Reddit:</b>
https://www.reddit.com/r/SimpleMobileTools
</string>
<!--

View file

@ -180,7 +180,17 @@
不包含广告及非必要的权限,而且完全开放源代码,并提供自定义颜色。
这程序只是一系列众多应用程序的其中一项,你可以在这发现更多 https://www.simplemobiletools.com
<b>Check out the full suite of Simple Tools here:</b>
https://www.simplemobiletools.com
<b>Standalone website of Simple Contacts Pro:</b>
https://www.simplemobiletools.com/contacts
<b>Facebook:</b>
https://www.facebook.com/simplemobiletools
<b>Reddit:</b>
https://www.reddit.com/r/SimpleMobileTools
</string>
<!--

View file

@ -122,9 +122,9 @@
<string name="answer_call">回撥</string>
<!-- Speed dial -->
<string name="speed_dial">Speed dial</string>
<string name="manage_speed_dial">Manage speed dial</string>
<string name="speed_dial_label">Click on a number to assign a contact to it. You can then quickly call the given contact by long pressing the given number at the dialer.</string>
<string name="speed_dial">快速撥號</string>
<string name="manage_speed_dial">管理快速撥號</string>
<string name="speed_dial_label">點擊一個數字以分配一個聯絡人給它。然後你可以在撥號器上,長按指定的數字來快速撥號給指定的聯絡人。</string>
<!-- Visible fields -->
<string name="select_fields_to_show">選擇要顯示的欄位</string>
@ -180,7 +180,17 @@
不包含廣告及非必要的權限,而且完全開放原始碼,並提供自訂顏色。
這程式只是一系列眾多應用程式的其中一項,你可以在這發現更多 https://www.simplemobiletools.com
<b>Check out the full suite of Simple Tools here:</b>
https://www.simplemobiletools.com
<b>Standalone website of Simple Contacts Pro:</b>
https://www.simplemobiletools.com/contacts
<b>Facebook:</b>
https://www.facebook.com/simplemobiletools
<b>Reddit:</b>
https://www.reddit.com/r/SimpleMobileTools
</string>
<!--

View file

@ -14,6 +14,7 @@
<string name="telegram">Telegram</string>
<!-- Release notes -->
<string name="release_56">Added an initial implementation of Speed Dial, contacts can be set in the app settings</string>
<string name="release_47">Removed the setting for merging duplicate contacts, merge them always</string>
<string name="release_40">
Removed the Recents tab due to Googles\' latest security policies being stricter than initiall thought\n

View file

@ -1,3 +1,4 @@
<resources>
<integer name="default_sorting">128</integer>
<integer name="default_font_size">2</integer>
</resources>

View file

@ -180,7 +180,17 @@
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
<b>Check out the full suite of Simple Tools here:</b>
https://www.simplemobiletools.com
<b>Standalone website of Simple Contacts Pro:</b>
https://www.simplemobiletools.com/contacts
<b>Facebook:</b>
https://www.facebook.com/simplemobiletools
<b>Reddit:</b>
https://www.reddit.com/r/SimpleMobileTools
</string>
<!--

View file

@ -0,0 +1,7 @@
Jednoduchá aplikace na vytváření nebo správu vašich kontaktů z různých zdrojů. Mohou být uloženy buď jen ve vašem zařízení, nebo je můžete i synchronizovat přes Google či jiný účet. Své oblíbené položky si můžete zobrazit ve vlastním seznamu.
Můžete ji používat i na správu e-mailů a událostí kontaktů. Nabízí možnost řazení/filtrování pomocí různých parametrů, volitelné je zobrazování příjmení před jménem.
Neobsahuje žádné reklamy, ani nepotřebná oprávnění. Má plně otevřený zdrojový kód a možnost změny barev.
Tato aplikace je jen jednou z většího celku aplikací. Ostatní z nich naleznete na https://www.simplemobiletools.com

View file

@ -0,0 +1 @@
Aplikace pro správu vašich kontaktů bez reklam, respektující vaše soukromí.

View file

@ -0,0 +1 @@
Jednoduché kontakty Pro - Rychlá správa kontaktů

View file

@ -0,0 +1,3 @@
* Added an initial Speed dial implementation, can be customized in the app settings
* Properly color the status bar icons at light themes
* Many different stability, translation and UX improvements

View file

@ -0,0 +1,3 @@
* Improved the side scrollbar by adding letters to it on some places
* Allow changing the font size in the app settings
* Trigger speed dial only if no number has been written yet

Binary file not shown.

Before

Width:  |  Height:  |  Size: 120 KiB

After

Width:  |  Height:  |  Size: 123 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 104 KiB

After

Width:  |  Height:  |  Size: 109 KiB

View file

@ -1 +1 @@
Simple Contacts
Simple Contacts Pro - легко управляйте контактами

View file

@ -1 +1 @@
An app for managing your contacts without ads, respecting your privacy.
Reklamsız, gizliliğinize saygı duyan, kişilerinizi yönetmek için bir uygulama.

View file

@ -1 +1 @@
Basit Kişiler
Basit Kişiler Pro - Kişilerinizi kolayca yönetin