diff --git a/app/build.gradle b/app/build.gradle index 0917db47..9e4b754f 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -63,12 +63,13 @@ android { } dependencies { - implementation 'com.github.SimpleMobileTools:Simple-Commons:82a8684cd8' + implementation 'com.github.SimpleMobileTools:Simple-Commons:141660c8f9' implementation 'org.greenrobot:eventbus:3.3.1' implementation 'com.github.tibbi:IndicatorFastScroll:4524cd0b61' implementation 'com.github.tibbi:android-smsmms:4cdacdb701' implementation "me.leolin:ShortcutBadger:1.1.22" implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0' + implementation 'com.googlecode.ez-vcard:ez-vcard:0.11.3' kapt "androidx.room:room-compiler:2.4.3" implementation "androidx.room:room-runtime:2.4.3" diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index e253980e..372a05cd 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -135,6 +135,12 @@ android:label="@string/blocked_numbers" android:parentActivityName=".activities.SettingsActivity" /> + + + when (menuItem.itemId) { + R.id.add_contact -> { + val intent = Intent(Intent.ACTION_VIEW).apply { + val mimetype = contentResolver.getType(vCardUri) + setDataAndType(vCardUri, mimetype?.lowercase()) + addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) + } + startActivity(intent) + } + else -> return@setOnMenuItemClickListener false + } + return@setOnMenuItemClickListener true + } + } + + private fun setupContactsList(vCards: List) { + val items = prepareData(vCards) + val adapter = VCardViewerAdapter(this, items.toMutableList()) { item -> + val property = item as? VCardPropertyWrapper + if (property != null) { + handleClick(item) + } + } + contacts_list.adapter = adapter + } + + private fun handleClick(property: VCardPropertyWrapper) { + when (property.property) { + is Telephone -> dialNumber(property.value.normalizePhoneNumber()) + is Email -> sendEmailIntent(property.value) + } + } + + private fun prepareData(vCards: List): List { + return vCards.map { vCard -> VCardWrapper.from(this, vCard) } + } +} diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/ThreadAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/ThreadAdapter.kt index 75c31e54..baddb3ae 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/ThreadAdapter.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/ThreadAdapter.kt @@ -32,13 +32,13 @@ import com.simplemobiletools.smsmessenger.R import com.simplemobiletools.smsmessenger.activities.NewConversationActivity import com.simplemobiletools.smsmessenger.activities.SimpleActivity import com.simplemobiletools.smsmessenger.activities.ThreadActivity +import com.simplemobiletools.smsmessenger.activities.VCardViewerActivity import com.simplemobiletools.smsmessenger.dialogs.SelectTextDialog -import com.simplemobiletools.smsmessenger.extensions.deleteMessage -import com.simplemobiletools.smsmessenger.extensions.getContactFromAddress -import com.simplemobiletools.smsmessenger.extensions.updateLastConversationMessage +import com.simplemobiletools.smsmessenger.extensions.* import com.simplemobiletools.smsmessenger.helpers.* import com.simplemobiletools.smsmessenger.models.* import kotlinx.android.synthetic.main.item_attachment_image.view.* +import kotlinx.android.synthetic.main.item_attachment_vcard.view.* import kotlinx.android.synthetic.main.item_received_message.view.* import kotlinx.android.synthetic.main.item_received_unknown_attachment.view.* import kotlinx.android.synthetic.main.item_sent_unknown_attachment.view.* @@ -53,7 +53,7 @@ class ThreadAdapter( private var fontSize = activity.getTextSize() @SuppressLint("MissingPermission") - private val hasMultipleSIMCards = SubscriptionManager.from(activity).activeSubscriptionInfoList?.size ?: 0 > 1 + private val hasMultipleSIMCards = (SubscriptionManager.from(activity).activeSubscriptionInfoList?.size ?: 0) > 1 init { setupDragListener(true) @@ -290,102 +290,170 @@ class ThreadAdapter( if (message.attachment?.attachments?.isNotEmpty() == true) { for (attachment in message.attachment.attachments) { val mimetype = attachment.mimetype - val uri = attachment.getUri() - if (mimetype.startsWith("image/") || mimetype.startsWith("video/")) { - val imageView = layoutInflater.inflate(R.layout.item_attachment_image, null) - thread_mesage_attachments_holder.addView(imageView) + if (mimetype.isImageMimeType() || mimetype.startsWith("video/")) { + setupImageView(holder, view, message, attachment) + } else if (mimetype.isVCardMimeType()) { + setupVCardView(holder, view, message, attachment) + } else { + setupFileView(holder, view, message, attachment) + } - val placeholderDrawable = ColorDrawable(Color.TRANSPARENT) - val isTallImage = attachment.height > attachment.width - val transformation = if (isTallImage) CenterCrop() else FitCenter() - val options = RequestOptions() - .diskCacheStrategy(DiskCacheStrategy.RESOURCE) - .placeholder(placeholderDrawable) - .transform(transformation) + thread_message_play_outline.beVisibleIf(mimetype.startsWith("video/")) + } + } + } + } - var builder = Glide.with(context) - .load(uri) - .transition(DrawableTransitionOptions.withCrossFade()) - .apply(options) - .listener(object : RequestListener { - override fun onLoadFailed(e: GlideException?, model: Any?, target: Target?, isFirstResource: Boolean): Boolean { - thread_message_play_outline.beGone() - thread_mesage_attachments_holder.removeView(imageView) - return false - } + private fun setupImageView(holder: ViewHolder, parent: View, message: Message, attachment: Attachment) { + val mimetype = attachment.mimetype + val uri = attachment.getUri() + parent.apply { + val imageView = layoutInflater.inflate(R.layout.item_attachment_image, null) + thread_mesage_attachments_holder.addView(imageView) - override fun onResourceReady(dr: Drawable?, a: Any?, t: Target?, d: DataSource?, i: Boolean) = - false - }) + val placeholderDrawable = ColorDrawable(Color.TRANSPARENT) + val isTallImage = attachment.height > attachment.width + val transformation = if (isTallImage) CenterCrop() else FitCenter() + val options = RequestOptions() + .diskCacheStrategy(DiskCacheStrategy.RESOURCE) + .placeholder(placeholderDrawable) + .transform(transformation) - builder = if (isTallImage) { - builder.override(attachment.width, attachment.width) + var builder = Glide.with(context) + .load(uri) + .transition(DrawableTransitionOptions.withCrossFade()) + .apply(options) + .listener(object : RequestListener { + override fun onLoadFailed(e: GlideException?, model: Any?, target: Target?, isFirstResource: Boolean): Boolean { + thread_message_play_outline.beGone() + thread_mesage_attachments_holder.removeView(imageView) + return false + } + + override fun onResourceReady(dr: Drawable?, a: Any?, t: Target?, d: DataSource?, i: Boolean) = + false + }) + + builder = if (isTallImage) { + builder.override(attachment.width, attachment.width) + } else { + builder.override(attachment.width, attachment.height) + } + + builder.into(imageView.attachment_image) + imageView.attachment_image.setOnClickListener { + if (actModeCallback.isSelectable) { + holder.viewClicked(message) + } else { + launchViewIntent(uri, mimetype, attachment.filename) + } + } + imageView.setOnLongClickListener { + holder.viewLongClicked() + true + } + } + } + + private fun setupVCardView(holder: ViewHolder, parent: View, message: Message, attachment: Attachment) { + val uri = attachment.getUri() + parent.apply { + val vCardView = layoutInflater.inflate(R.layout.item_attachment_vcard, null).apply { + background.applyColorFilter(backgroundColor.getContrastColor()) + vcard_title.setTextColor(textColor) + vcard_subtitle.setTextColor(textColor) + view_contact_details.setTextColor(properPrimaryColor) + } + thread_mesage_attachments_holder.addView(vCardView) + + parseVCardFromUri(context, uri) { vCards -> + val title = vCards.firstOrNull()?.formattedName?.value + val imageIcon = if (title != null) { + SimpleContactsHelper(context).getContactLetterIcon(title) + } else { + null + } + activity.runOnUiThread { + vCardView.apply { + vcard_title.text = title + vcard_photo.setImageBitmap(imageIcon) + + if (vCards.size > 1) { + vcard_subtitle.beVisible() + val quantity = vCards.size - 1 + vcard_subtitle.text = resources.getQuantityString(R.plurals.and_other_contacts, quantity, quantity) } else { - builder.override(attachment.width, attachment.height) + vcard_subtitle.beGone() } - builder.into(imageView.attachment_image) - imageView.attachment_image.setOnClickListener { + setOnClickListener { + if (actModeCallback.isSelectable) { + holder.viewClicked(message) + } else { + val intent = Intent(context, VCardViewerActivity::class.java).also { + it.putExtra(EXTRA_VCARD_URI, uri) + } + context.startActivity(intent) + } + } + setOnLongClickListener { + holder.viewLongClicked() + true + } + } + } + } + } + } + + private fun setupFileView(holder: ViewHolder, parent: View, message: Message, attachment: Attachment) { + val mimetype = attachment.mimetype + val uri = attachment.getUri() + parent.apply { + if (message.isReceivedMessage()) { + val attachmentView = layoutInflater.inflate(R.layout.item_received_unknown_attachment, null).apply { + thread_received_attachment_label.apply { + if (attachment.filename.isNotEmpty()) { + thread_received_attachment_label.text = attachment.filename + } + setTextColor(textColor) + setOnClickListener { if (actModeCallback.isSelectable) { holder.viewClicked(message) } else { launchViewIntent(uri, mimetype, attachment.filename) } } - imageView.setOnLongClickListener { + setOnLongClickListener { holder.viewLongClicked() true } - } else { - if (message.isReceivedMessage()) { - val attachmentView = layoutInflater.inflate(R.layout.item_received_unknown_attachment, null).apply { - thread_received_attachment_label.apply { - if (attachment.filename.isNotEmpty()) { - thread_received_attachment_label.text = attachment.filename - } - setTextColor(textColor) - setOnClickListener { - if (actModeCallback.isSelectable) { - holder.viewClicked(message) - } else { - launchViewIntent(uri, mimetype, attachment.filename) - } - } - setOnLongClickListener { - holder.viewLongClicked() - true - } - } + } + } + thread_mesage_attachments_holder.addView(attachmentView) + } else { + val background = context.getProperPrimaryColor() + val attachmentView = layoutInflater.inflate(R.layout.item_sent_unknown_attachment, null).apply { + thread_sent_attachment_label.apply { + this.background.applyColorFilter(background) + setTextColor(background.getContrastColor()) + if (attachment.filename.isNotEmpty()) { + thread_sent_attachment_label.text = attachment.filename + } + setOnClickListener { + if (actModeCallback.isSelectable) { + holder.viewClicked(message) + } else { + launchViewIntent(uri, mimetype, attachment.filename) } - thread_mesage_attachments_holder.addView(attachmentView) - } else { - val background = context.getProperPrimaryColor() - val attachmentView = layoutInflater.inflate(R.layout.item_sent_unknown_attachment, null).apply { - thread_sent_attachment_label.apply { - this.background.applyColorFilter(background) - setTextColor(background.getContrastColor()) - if (attachment.filename.isNotEmpty()) { - thread_sent_attachment_label.text = attachment.filename - } - setOnClickListener { - if (actModeCallback.isSelectable) { - holder.viewClicked(message) - } else { - launchViewIntent(uri, mimetype, attachment.filename) - } - } - setOnLongClickListener { - holder.viewLongClicked() - true - } - } - } - thread_mesage_attachments_holder.addView(attachmentView) + } + setOnLongClickListener { + holder.viewLongClicked() + true } } - - thread_message_play_outline.beVisibleIf(mimetype.startsWith("video/")) } + thread_mesage_attachments_holder.addView(attachmentView) } } } diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/VCardViewerAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/VCardViewerAdapter.kt new file mode 100644 index 00000000..2b08b175 --- /dev/null +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/adapters/VCardViewerAdapter.kt @@ -0,0 +1,153 @@ +package com.simplemobiletools.smsmessenger.adapters + +import android.util.TypedValue +import android.view.View +import android.view.ViewGroup +import androidx.core.graphics.drawable.toDrawable +import androidx.recyclerview.widget.RecyclerView +import com.bumptech.glide.Glide +import com.bumptech.glide.load.engine.DiskCacheStrategy +import com.bumptech.glide.load.resource.bitmap.RoundedCorners +import com.bumptech.glide.load.resource.drawable.DrawableTransitionOptions +import com.bumptech.glide.request.RequestOptions +import com.simplemobiletools.commons.extensions.* +import com.simplemobiletools.commons.helpers.SimpleContactsHelper +import com.simplemobiletools.smsmessenger.R +import com.simplemobiletools.smsmessenger.activities.SimpleActivity +import com.simplemobiletools.smsmessenger.models.VCardPropertyWrapper +import com.simplemobiletools.smsmessenger.models.VCardWrapper +import kotlinx.android.synthetic.main.item_vcard_contact.view.* +import kotlinx.android.synthetic.main.item_vcard_contact_property.view.* + +class VCardViewerAdapter( + activity: SimpleActivity, private var items: MutableList, private val itemClick: (Any) -> Unit +) : RecyclerView.Adapter() { + + private var fontSize = activity.getTextSize() + private var textColor = activity.getProperTextColor() + private val layoutInflater = activity.layoutInflater + + override fun getItemCount() = items.size + + override fun getItemViewType(position: Int): Int { + return when (val item = items[position]) { + is VCardWrapper -> R.layout.item_vcard_contact + is VCardPropertyWrapper -> R.layout.item_vcard_contact_property + else -> throw IllegalArgumentException("Unexpected type: ${item::class.simpleName}") + } + } + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): VCardViewHolder { + val view = layoutInflater.inflate(viewType, parent, false) + return VCardViewHolder(view) + } + + override fun onBindViewHolder(holder: VCardViewerAdapter.VCardViewHolder, position: Int) { + val item = items[position] + val itemView = holder.bindView() + when (item) { + is VCardWrapper -> setupVCardView(itemView, item) + is VCardPropertyWrapper -> setupVCardPropertyView(itemView, item) + else -> throw IllegalArgumentException("Unexpected type: ${item::class.simpleName}") + } + } + + private fun setupVCardView(view: View, item: VCardWrapper) { + val name = item.fullName + view.apply { + item_contact_name.apply { + text = name + setTextColor(textColor) + setTextSize(TypedValue.COMPLEX_UNIT_PX, fontSize * 1.2f) + } + item_contact_image.apply { + val photo = item.vCard.photos.firstOrNull() + val placeholder = if (name != null) { + SimpleContactsHelper(context).getContactLetterIcon(name).toDrawable(resources) + } else { + null + } + val roundingRadius = resources.getDimensionPixelSize(R.dimen.big_margin) + val transformation = RoundedCorners(roundingRadius) + val options = RequestOptions() + .diskCacheStrategy(DiskCacheStrategy.RESOURCE) + .placeholder(placeholder) + .transform(transformation) + Glide.with(this) + .load(photo?.data ?: photo?.url) + .apply(options) + .transition(DrawableTransitionOptions.withCrossFade()) + .into(this) + } + expand_collapse_icon.apply { + val expandCollapseDrawable = if (item.expanded) { + R.drawable.ic_collapse_up + } else { + R.drawable.ic_expand_down + } + setImageResource(expandCollapseDrawable) + applyColorFilter(textColor) + } + + if (items.size > 1) { + setOnClickListener { + expandOrCollapseRow(view, item) + } + } + onGlobalLayout { + if (items.size == 1) { + expandOrCollapseRow(view, item) + view.expand_collapse_icon.beGone() + } + } + } + } + + private fun setupVCardPropertyView(view: View, property: VCardPropertyWrapper) { + view.apply { + item_vcard_property_title.apply { + text = property.value + setTextColor(textColor) + setTextSize(TypedValue.COMPLEX_UNIT_PX, fontSize * 1.2f) + } + item_vcard_property_subtitle.apply { + text = property.type + setTextColor(textColor) + } + view.setOnClickListener { + itemClick(property) + } + } + } + + private fun expandOrCollapseRow(view: View, item: VCardWrapper) { + val properties = item.properties + if (item.expanded) { + collapseRow(view, properties, item) + } else { + expandRow(view, properties, item) + } + } + + private fun expandRow(view: View, properties: List, vCardWrapper: VCardWrapper) { + vCardWrapper.expanded = true + val nextPosition = items.indexOf(vCardWrapper) + 1 + items.addAll(nextPosition, properties) + notifyItemRangeInserted(nextPosition, properties.size) + view.expand_collapse_icon.setImageResource(R.drawable.ic_collapse_up) + } + + private fun collapseRow(view: View, properties: List, vCardWrapper: VCardWrapper) { + vCardWrapper.expanded = false + val nextPosition = items.indexOf(vCardWrapper) + 1 + repeat(properties.size) { + items.removeAt(nextPosition) + } + notifyItemRangeRemoved(nextPosition, properties.size) + view.expand_collapse_icon.setImageResource(R.drawable.ic_expand_down) + } + + inner class VCardViewHolder(view: View) : RecyclerView.ViewHolder(view) { + fun bindView() = itemView + } +} diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/extensions/Date.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/extensions/Date.kt new file mode 100644 index 00000000..7cde1a5b --- /dev/null +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/extensions/Date.kt @@ -0,0 +1,8 @@ +package com.simplemobiletools.smsmessenger.extensions + +import android.text.format.DateFormat +import java.util.* + +fun Date.format(pattern: String): String { + return DateFormat.format(pattern, this).toString() +} diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/extensions/String.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/extensions/String.kt index acdf0bb9..89fb0f03 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/extensions/String.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/extensions/String.kt @@ -14,3 +14,8 @@ fun String.getExtensionFromMimeType(): String { fun String.isImageMimeType(): Boolean { return lowercase().startsWith("image") } + +fun String.isVCardMimeType(): Boolean { + val lowercase = lowercase() + return lowercase.endsWith("x-vcard") || lowercase.endsWith("vcard") +} diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/helpers/Constants.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/helpers/Constants.kt index 21a85a95..973e56bc 100644 --- a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/helpers/Constants.kt +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/helpers/Constants.kt @@ -28,6 +28,7 @@ const val EXPORT_FILE_EXT = ".json" const val IMPORT_SMS = "import_sms" const val IMPORT_MMS = "import_mms" const val WAS_DB_CLEARED = "was_db_cleared_2" +const val EXTRA_VCARD_URI = "vcard" private const val PATH = "com.simplemobiletools.smsmessenger.action." const val MARK_AS_READ = PATH + "mark_as_read" diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/helpers/VCardParser.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/helpers/VCardParser.kt new file mode 100644 index 00000000..e01217bf --- /dev/null +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/helpers/VCardParser.kt @@ -0,0 +1,15 @@ +package com.simplemobiletools.smsmessenger.helpers + +import android.content.Context +import android.net.Uri +import com.simplemobiletools.commons.helpers.ensureBackgroundThread +import ezvcard.Ezvcard +import ezvcard.VCard + +fun parseVCardFromUri(context: Context, uri: Uri, callback: (vCards: List) -> Unit) { + ensureBackgroundThread { + val inputStream = context.contentResolver.openInputStream(uri) + val vCards = Ezvcard.parse(inputStream).all() + callback(vCards) + } +} diff --git a/app/src/main/kotlin/com/simplemobiletools/smsmessenger/models/VCard.kt b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/models/VCard.kt new file mode 100644 index 00000000..c1869500 --- /dev/null +++ b/app/src/main/kotlin/com/simplemobiletools/smsmessenger/models/VCard.kt @@ -0,0 +1,75 @@ +package com.simplemobiletools.smsmessenger.models + +import android.content.Context +import com.simplemobiletools.commons.extensions.normalizePhoneNumber +import com.simplemobiletools.smsmessenger.R +import com.simplemobiletools.smsmessenger.extensions.config +import com.simplemobiletools.smsmessenger.extensions.format +import ezvcard.VCard +import ezvcard.property.* + +private val displayedPropertyClasses = arrayOf( + Telephone::class.java, Email::class.java, Organization::class.java, Birthday::class.java, Anniversary::class.java, Note::class.java +) + +data class VCardWrapper(val vCard: VCard, val fullName: String?, val properties: List, var expanded: Boolean = false) { + + companion object { + private fun VCard.extractFullName(): String? { + var fullName = formattedName?.value + if (fullName.isNullOrEmpty()) { + val structured = structuredName + val given = structured?.given + val family = structured.family + fullName = if (family != null) { + given?.plus(" ")?.plus(family) + } else { + given + } + } + return fullName + } + + fun from(context: Context, vCard: VCard): VCardWrapper { + val properties = vCard.properties + .filter { displayedPropertyClasses.contains(it::class.java) } + .map { VCardPropertyWrapper.from(context, it) } + .distinctBy { it.value } + val fullName = vCard.extractFullName() + + return VCardWrapper(vCard, fullName, properties) + } + } +} + +data class VCardPropertyWrapper(val value: String, val type: String, val property: VCardProperty) { + + companion object { + private const val CELL = "CELL" + private const val HOME = "HOME" + private const val WORK = "WORK" + + private fun VCardProperty.getPropertyTypeString(context: Context): String { + return when (parameters.type) { + CELL -> context.getString(R.string.mobile) + HOME -> context.getString(R.string.home) + WORK -> context.getString(R.string.work) + else -> "" + } + } + + fun from(context: Context, property: VCardProperty): VCardPropertyWrapper { + return property.run { + when (this) { + is Telephone -> VCardPropertyWrapper(text.normalizePhoneNumber(), getPropertyTypeString(context), property) + is Email -> VCardPropertyWrapper(value, getPropertyTypeString(context), property) + is Organization -> VCardPropertyWrapper(values.joinToString(), context.getString(R.string.work), property) + is Birthday -> VCardPropertyWrapper(date.format(context.config.dateFormat), context.getString(R.string.birthday), property) + is Anniversary -> VCardPropertyWrapper(date.format(context.config.dateFormat), context.getString(R.string.anniversary), property) + is Note -> VCardPropertyWrapper(value, context.getString(R.string.notes), property) + else -> VCardPropertyWrapper("", "", property) + } + } + } + } +} diff --git a/app/src/main/res/drawable/ic_collapse_up.xml b/app/src/main/res/drawable/ic_collapse_up.xml new file mode 100644 index 00000000..fca0e627 --- /dev/null +++ b/app/src/main/res/drawable/ic_collapse_up.xml @@ -0,0 +1,3 @@ + + + diff --git a/app/src/main/res/drawable/ic_expand_down.xml b/app/src/main/res/drawable/ic_expand_down.xml new file mode 100644 index 00000000..1506c3b0 --- /dev/null +++ b/app/src/main/res/drawable/ic_expand_down.xml @@ -0,0 +1,3 @@ + + + diff --git a/app/src/main/res/layout/activity_vcard_viewer.xml b/app/src/main/res/layout/activity_vcard_viewer.xml new file mode 100644 index 00000000..46356502 --- /dev/null +++ b/app/src/main/res/layout/activity_vcard_viewer.xml @@ -0,0 +1,35 @@ + + + + + + + + + + + diff --git a/app/src/main/res/layout/item_attachment_vcard.xml b/app/src/main/res/layout/item_attachment_vcard.xml new file mode 100644 index 00000000..36339f34 --- /dev/null +++ b/app/src/main/res/layout/item_attachment_vcard.xml @@ -0,0 +1,56 @@ + + + + + + + + + + + + diff --git a/app/src/main/res/layout/item_vcard_contact.xml b/app/src/main/res/layout/item_vcard_contact.xml new file mode 100644 index 00000000..6246baa6 --- /dev/null +++ b/app/src/main/res/layout/item_vcard_contact.xml @@ -0,0 +1,56 @@ + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/item_vcard_contact_property.xml b/app/src/main/res/layout/item_vcard_contact_property.xml new file mode 100644 index 00000000..1b1789b5 --- /dev/null +++ b/app/src/main/res/layout/item_vcard_contact_property.xml @@ -0,0 +1,46 @@ + + + + + + + + + + + diff --git a/app/src/main/res/menu/menu_vcard.xml b/app/src/main/res/menu/menu_vcard.xml new file mode 100644 index 00000000..57556649 --- /dev/null +++ b/app/src/main/res/menu/menu_vcard.xml @@ -0,0 +1,9 @@ + + + + diff --git a/app/src/main/res/values-ar/strings.xml b/app/src/main/res/values-ar/strings.xml index 4c3e6fc2..eeebe406 100644 --- a/app/src/main/res/values-ar/strings.xml +++ b/app/src/main/res/values-ar/strings.xml @@ -20,6 +20,11 @@ ازالة التثبيت اعادة ارسال غير قادر على ضغط الصورة إلى الحجم المحدد + + + and %d other + and %d others + محادثة جديدة إضافة جهة اتصال أو رقم … @@ -79,4 +84,4 @@ Haven't found some strings? There's more at https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res --> - \ No newline at end of file + diff --git a/app/src/main/res/values-az/strings.xml b/app/src/main/res/values-az/strings.xml index 06a7ea86..33fb6e50 100644 --- a/app/src/main/res/values-az/strings.xml +++ b/app/src/main/res/values-az/strings.xml @@ -20,6 +20,11 @@ Unpin Forward Unable to compress image to selected size + + + and %d other + and %d others + New conversation Add Contact or Number… @@ -71,4 +76,4 @@ Haven't found some strings? There's more at https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res --> - \ No newline at end of file + diff --git a/app/src/main/res/values-be/strings.xml b/app/src/main/res/values-be/strings.xml index 9c6cfad5..7da4ac30 100644 --- a/app/src/main/res/values-be/strings.xml +++ b/app/src/main/res/values-be/strings.xml @@ -20,6 +20,11 @@ Адмацаваць Пераслаць Немагчыма сціснуць выяву да выбранага памеру + + + and %d other + and %d others + Новая размова Дадаць кантакт альбо нумар… @@ -75,4 +80,4 @@ Haven't found some strings? There's more at https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res --> - \ No newline at end of file + diff --git a/app/src/main/res/values-bg/strings.xml b/app/src/main/res/values-bg/strings.xml index f14a1840..8699e0fe 100644 --- a/app/src/main/res/values-bg/strings.xml +++ b/app/src/main/res/values-bg/strings.xml @@ -20,6 +20,11 @@ Откачване Препращане Невъзможно е да се компресира изображението до избрания размер + + + and %d other + and %d others + Нов разговор Добавете контакт или номер… @@ -71,4 +76,4 @@ Haven't found some strings? There's more at https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res --> - \ No newline at end of file + diff --git a/app/src/main/res/values-ca/strings.xml b/app/src/main/res/values-ca/strings.xml index 1f76b105..3020e3dd 100644 --- a/app/src/main/res/values-ca/strings.xml +++ b/app/src/main/res/values-ca/strings.xml @@ -20,6 +20,11 @@ No fixis Reenvia No s\'ha pogut comprimir la imatge a la mida seleccionada + + + and %d other + and %d others + Conversa nova Afegeix un contacte o número… @@ -71,4 +76,4 @@ Haven't found some strings? There's more at https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res --> - \ No newline at end of file + diff --git a/app/src/main/res/values-cr/strings.xml b/app/src/main/res/values-cr/strings.xml index ce1f6df3..762434d8 100644 --- a/app/src/main/res/values-cr/strings.xml +++ b/app/src/main/res/values-cr/strings.xml @@ -20,6 +20,11 @@ Unpin Forward Unable to compress image to selected size + + + and %d other + and %d others + New conversation Add Contact or Number… diff --git a/app/src/main/res/values-cs/strings.xml b/app/src/main/res/values-cs/strings.xml index ccccfcaf..bae416c1 100644 --- a/app/src/main/res/values-cs/strings.xml +++ b/app/src/main/res/values-cs/strings.xml @@ -20,6 +20,11 @@ Odepnout Přeposlat Nepodařilo se komprimovat obrázek na požadovanou velikost + + + and %d other + and %d others + Nová konverzace Přidejte kontakt nebo číslo… @@ -73,4 +78,4 @@ Haven't found some strings? There's more at https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res --> - \ No newline at end of file + diff --git a/app/src/main/res/values-da/strings.xml b/app/src/main/res/values-da/strings.xml index 4bff71f6..9ffe5f57 100644 --- a/app/src/main/res/values-da/strings.xml +++ b/app/src/main/res/values-da/strings.xml @@ -20,6 +20,11 @@ Frigør Fremad Billedet kan ikke komprimeres til den valgte størrelse + + + and %d other + and %d others + Ny Samtale Tilføj kontakt eller nummer… @@ -71,4 +76,4 @@ Haven't found some strings? There's more at https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res --> - \ No newline at end of file + diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 7412f4e3..c3c03b91 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -20,6 +20,11 @@ Losheften Weiterleiten Bild kann nicht auf ausgewählte Größe komprimiert werden + + + and %d other + and %d others + Neuer Chat Kontakt oder Nummer hinzufügen … @@ -71,4 +76,4 @@ Haven't found some strings? There's more at https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res --> - \ No newline at end of file + diff --git a/app/src/main/res/values-el/strings.xml b/app/src/main/res/values-el/strings.xml index a4de4eb9..a4cc9963 100644 --- a/app/src/main/res/values-el/strings.xml +++ b/app/src/main/res/values-el/strings.xml @@ -20,6 +20,11 @@ Ξεκαρφίτσωμα Προώθηση Αδυναμία συμπίεσης εικόνας στο επιλεγμένο μέγεθος + + + and %d other + and %d others + Νέα συνομιλία Προσθήκη επαφής ή αριθμού… @@ -71,4 +76,4 @@ Haven't found some strings? There's more at https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res --> - \ No newline at end of file + diff --git a/app/src/main/res/values-eo/strings.xml b/app/src/main/res/values-eo/strings.xml index da1e085b..1e59e6ed 100644 --- a/app/src/main/res/values-eo/strings.xml +++ b/app/src/main/res/values-eo/strings.xml @@ -20,6 +20,11 @@ Depingli Forward Unable to compress image to selected size + + + and %d other + and %d others + New conversation Add Contact or Number… @@ -71,4 +76,4 @@ Haven't found some strings? There's more at https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res --> - \ No newline at end of file + diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index b3d85c2e..689f7acc 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -20,6 +20,11 @@ Desanclar Reenviar Incapaz de comprimir la imagen al tamaño seleccionado + + + and %d other + and %d others + Nueva conversación Escribe contacto o número… @@ -71,4 +76,4 @@ Haven't found some strings? There's more at https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res --> - \ No newline at end of file + diff --git a/app/src/main/res/values-et/strings.xml b/app/src/main/res/values-et/strings.xml index 5e1c0a1d..6ca9ee5f 100644 --- a/app/src/main/res/values-et/strings.xml +++ b/app/src/main/res/values-et/strings.xml @@ -20,6 +20,11 @@ Eemalda kinnitus Edasta Pildi muutmine valitud suurusesse ei õnnestu + + + and %d other + and %d others + Uus vestlus Add Contact or Number… @@ -71,4 +76,4 @@ Haven't found some strings? There's more at https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res --> - \ No newline at end of file + diff --git a/app/src/main/res/values-fi/strings.xml b/app/src/main/res/values-fi/strings.xml index 5124ec80..86fa2c63 100644 --- a/app/src/main/res/values-fi/strings.xml +++ b/app/src/main/res/values-fi/strings.xml @@ -20,6 +20,11 @@ Unpin Forward Unable to compress image to selected size + + + and %d other + and %d others + Uusi keskustelu Lisää yhteystieto tai numero… @@ -71,4 +76,4 @@ Haven't found some strings? There's more at https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res --> - \ No newline at end of file + diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 220d7eb5..7c74ac8f 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -20,6 +20,11 @@ Désépingler Transférer Impossible de compresser l\'image à la taille sélectionnée + + + and %d other + and %d others + Nouvelle conversation Ajouter un contact ou un numéro… @@ -71,4 +76,4 @@ Haven't found some strings? There's more at https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res --> - \ No newline at end of file + diff --git a/app/src/main/res/values-gl/strings.xml b/app/src/main/res/values-gl/strings.xml index 15aedaec..85b6ca02 100644 --- a/app/src/main/res/values-gl/strings.xml +++ b/app/src/main/res/values-gl/strings.xml @@ -20,6 +20,11 @@ Unpin Forward Unable to compress image to selected size + + + and %d other + and %d others + Nova conversa Engadir contacto ou número… @@ -71,4 +76,4 @@ Non atopaches algunhas cadeas? Hai máis en https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res --> - \ No newline at end of file + diff --git a/app/src/main/res/values-gr/strings.xml b/app/src/main/res/values-gr/strings.xml index ce1f6df3..762434d8 100644 --- a/app/src/main/res/values-gr/strings.xml +++ b/app/src/main/res/values-gr/strings.xml @@ -20,6 +20,11 @@ Unpin Forward Unable to compress image to selected size + + + and %d other + and %d others + New conversation Add Contact or Number… diff --git a/app/src/main/res/values-hi/strings.xml b/app/src/main/res/values-hi/strings.xml index ce1f6df3..762434d8 100644 --- a/app/src/main/res/values-hi/strings.xml +++ b/app/src/main/res/values-hi/strings.xml @@ -20,6 +20,11 @@ Unpin Forward Unable to compress image to selected size + + + and %d other + and %d others + New conversation Add Contact or Number… diff --git a/app/src/main/res/values-hr/strings.xml b/app/src/main/res/values-hr/strings.xml index 9f5e739d..d96a714f 100644 --- a/app/src/main/res/values-hr/strings.xml +++ b/app/src/main/res/values-hr/strings.xml @@ -20,6 +20,11 @@ Otkvači Proslijedi Isključi za komprimiranje slike na odabranu veličinu + + + and %d other + and %d others + Nova konverzacija Dodaj kontakt ili broj … @@ -73,4 +78,4 @@ Haven't found some strings? There's more at https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res --> - \ No newline at end of file + diff --git a/app/src/main/res/values-hu/strings.xml b/app/src/main/res/values-hu/strings.xml index 6af63212..8c8bd17d 100644 --- a/app/src/main/res/values-hu/strings.xml +++ b/app/src/main/res/values-hu/strings.xml @@ -20,6 +20,11 @@ Kitűzés megszüntetése Továbbítás Nem lehet tömöríteni a képet a kiválasztott méretre + + + and %d other + and %d others + Új beszélgetés Névjegy vagy szám hozzáadása… @@ -71,4 +76,4 @@ Haven't found some strings? There's more at https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res --> - \ No newline at end of file + diff --git a/app/src/main/res/values-in/strings.xml b/app/src/main/res/values-in/strings.xml index 6e9afd42..8b8b650f 100644 --- a/app/src/main/res/values-in/strings.xml +++ b/app/src/main/res/values-in/strings.xml @@ -20,6 +20,11 @@ Unpin Forward Unable to compress image to selected size + + + and %d other + and %d others + Percakapan baru Tambahkan Kontak atau Nomor… @@ -69,4 +74,4 @@ Haven't found some strings? There's more at https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res --> - \ No newline at end of file + diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index 06721ecc..f3b750f6 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -20,6 +20,11 @@ Rimuovi Inoltra Impossibile comprimere l\'immagine alla dimensione selezionata + + + and %d other + and %d others + Nuova conversazione Inserisci contatto o numero… @@ -71,4 +76,4 @@ Haven't found some strings? There's more at https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res --> - \ No newline at end of file + diff --git a/app/src/main/res/values-iw/strings.xml b/app/src/main/res/values-iw/strings.xml index ba2ca917..bd49490f 100644 --- a/app/src/main/res/values-iw/strings.xml +++ b/app/src/main/res/values-iw/strings.xml @@ -20,6 +20,11 @@ בטל הצמדה התקדם לא ניתן לדחוס תמונה לגודל שנבחר + + + and %d other + and %d others + שיחה חדשה הוסף איש קשר או מספר… @@ -75,4 +80,4 @@ Haven't found some strings? There's more at https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res --> - \ No newline at end of file + diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index 01451200..2584a57b 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -20,6 +20,11 @@ 固定を外す 転送 選択したサイズに画像を圧縮できません + + + and %d other + and %d others + 新しい会話 連絡先や電話番号を追加… @@ -69,4 +74,4 @@ Haven't found some strings? There's more at https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res --> - \ No newline at end of file + diff --git a/app/src/main/res/values-lt/strings.xml b/app/src/main/res/values-lt/strings.xml index e52c8a64..ff890fd0 100644 --- a/app/src/main/res/values-lt/strings.xml +++ b/app/src/main/res/values-lt/strings.xml @@ -20,6 +20,11 @@ Atjunkite Pirmyn Nepavyksta suspausti vaizdo iki pasirinkto dydžio + + + and %d other + and %d others + Naujas pokalbis Pridėti kontaktą arba numerį… @@ -73,4 +78,4 @@ Haven't found some strings? There's more at https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res --> - \ No newline at end of file + diff --git a/app/src/main/res/values-lv/strings.xml b/app/src/main/res/values-lv/strings.xml index ce1f6df3..762434d8 100644 --- a/app/src/main/res/values-lv/strings.xml +++ b/app/src/main/res/values-lv/strings.xml @@ -20,6 +20,11 @@ Unpin Forward Unable to compress image to selected size + + + and %d other + and %d others + New conversation Add Contact or Number… diff --git a/app/src/main/res/values-mk/strings.xml b/app/src/main/res/values-mk/strings.xml index ce1f6df3..762434d8 100644 --- a/app/src/main/res/values-mk/strings.xml +++ b/app/src/main/res/values-mk/strings.xml @@ -20,6 +20,11 @@ Unpin Forward Unable to compress image to selected size + + + and %d other + and %d others + New conversation Add Contact or Number… diff --git a/app/src/main/res/values-ml/strings.xml b/app/src/main/res/values-ml/strings.xml index 975d3015..1f838afe 100644 --- a/app/src/main/res/values-ml/strings.xml +++ b/app/src/main/res/values-ml/strings.xml @@ -20,6 +20,11 @@ Unpin Forward Unable to compress image to selected size + + + and %d other + and %d others + പുതിയ സംഭാഷണം കോൺടാക്റ്റ് അല്ലെങ്കിൽ നമ്പർ ചേർക്കുക… @@ -71,4 +76,4 @@ Haven't found some strings? There's more at https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res --> - \ No newline at end of file + diff --git a/app/src/main/res/values-nb-rNO/strings.xml b/app/src/main/res/values-nb-rNO/strings.xml index d066aa15..e455377f 100644 --- a/app/src/main/res/values-nb-rNO/strings.xml +++ b/app/src/main/res/values-nb-rNO/strings.xml @@ -20,6 +20,11 @@ Løsne Videresend Unable to compress image to selected size + + + and %d other + and %d others + Ny samtale Legg til kontakt eller nummer … @@ -71,4 +76,4 @@ Haven't found some strings? There's more at https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res --> - \ No newline at end of file + diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index 37e9242e..a43a5bdd 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -20,6 +20,11 @@ Losmaken Doorsturen Kon de afbeelding niet comprimeren naar de gekozen grootte + + + and %d other + and %d others + Nieuw gesprek Contact of nummer toevoegen… @@ -71,4 +76,4 @@ Haven't found some strings? There's more at https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res --> - \ No newline at end of file + diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index 816a4603..3fa2f694 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -20,6 +20,11 @@ Odepnij Przekaż dalej Nie udało się skompresować obrazu do wybranego rozmiaru + + + and %d other + and %d others + Nowa rozmowa Dodaj kontakt lub numer… @@ -75,4 +80,4 @@ Haven't found some strings? There's more at https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res --> - \ No newline at end of file + diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index 2006873b..9a5c10e9 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -20,6 +20,11 @@ Desfixar Encaminhar Não pôde comprimir imagem ao tamanho selecionado + + + and %d other + and %d others + Nova conversa Adicionar contato ou número… @@ -71,4 +76,4 @@ Haven't found some strings? There's more at https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res --> - \ No newline at end of file + diff --git a/app/src/main/res/values-pt/strings.xml b/app/src/main/res/values-pt/strings.xml index 59a87c38..5daa9a7f 100644 --- a/app/src/main/res/values-pt/strings.xml +++ b/app/src/main/res/values-pt/strings.xml @@ -20,6 +20,11 @@ Desafixar Reencaminhar Incapaz de comprimir imagem no tamanho selecionado + + + and %d other + and %d others + Nova conversa Adicionar contacto ou número… @@ -71,4 +76,4 @@ Haven't found some strings? There's more at https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res --> - \ No newline at end of file + diff --git a/app/src/main/res/values-ro/strings.xml b/app/src/main/res/values-ro/strings.xml index e2b584ab..18a904bc 100644 --- a/app/src/main/res/values-ro/strings.xml +++ b/app/src/main/res/values-ro/strings.xml @@ -20,6 +20,11 @@ Elimină fixarea Redirecţionare Nu se poate comprima imaginea la dimensiunea selectată + + + and %d other + and %d others + Conversaţie nouă Adaugă contact sau număr de telefon… @@ -73,4 +78,4 @@ Haven't found some strings? There's more at https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res --> - \ No newline at end of file + diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 153a9c03..34a78997 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -20,6 +20,11 @@ Открепить Переслать Невозможно сжать изображение до выбранного размера + + + and %d other + and %d others + Новая переписка Добавить контакт или номер… @@ -75,4 +80,4 @@ Haven't found some strings? There's more at https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res --> - \ No newline at end of file + diff --git a/app/src/main/res/values-sk/strings.xml b/app/src/main/res/values-sk/strings.xml index d536ebce..bb5913d2 100644 --- a/app/src/main/res/values-sk/strings.xml +++ b/app/src/main/res/values-sk/strings.xml @@ -20,6 +20,11 @@ Odopnúť Preposlať Nepodarilo sa zmenšiť obrázok na požadovanú veľkosť + + + a %d ďalší + a %d ďalší + Nová konverzácia Pridať kontakt alebo číslo… @@ -73,4 +78,4 @@ Haven't found some strings? There's more at https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res --> - \ No newline at end of file + diff --git a/app/src/main/res/values-sl/strings.xml b/app/src/main/res/values-sl/strings.xml index ce1f6df3..762434d8 100644 --- a/app/src/main/res/values-sl/strings.xml +++ b/app/src/main/res/values-sl/strings.xml @@ -20,6 +20,11 @@ Unpin Forward Unable to compress image to selected size + + + and %d other + and %d others + New conversation Add Contact or Number… diff --git a/app/src/main/res/values-sv/strings.xml b/app/src/main/res/values-sv/strings.xml index 8cefe0ed..fec82ad4 100644 --- a/app/src/main/res/values-sv/strings.xml +++ b/app/src/main/res/values-sv/strings.xml @@ -20,6 +20,11 @@ Lossa Vidarebefordra Det gick inte att komprimera bilden till den valda storleken + + + and %d other + and %d others + Ny konversation Lägg till kontakt eller nummer… @@ -71,4 +76,4 @@ Haven't found some strings? There's more at https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res --> - \ No newline at end of file + diff --git a/app/src/main/res/values-ta/strings.xml b/app/src/main/res/values-ta/strings.xml index 989088d0..8ebd9379 100644 --- a/app/src/main/res/values-ta/strings.xml +++ b/app/src/main/res/values-ta/strings.xml @@ -20,6 +20,11 @@ பின் நீக்கு முன்னோக்கி Unable to compress image to selected size + + + and %d other + and %d others + புதிய உரையாடல் தொடர்பு அல்லது எண்ணைச் சேர்க்கவும்… @@ -71,4 +76,4 @@ Haven't found some strings? There's more at https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res --> - \ No newline at end of file + diff --git a/app/src/main/res/values-th/strings.xml b/app/src/main/res/values-th/strings.xml index 0c422d3b..c40166de 100644 --- a/app/src/main/res/values-th/strings.xml +++ b/app/src/main/res/values-th/strings.xml @@ -20,6 +20,11 @@ Unpin Forward Unable to compress image to selected size + + + and %d other + and %d others + New conversation Add Contact or Number… @@ -69,4 +74,4 @@ Haven't found some strings? There's more at https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res --> - \ No newline at end of file + diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index a13d1214..2d8828e6 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -20,6 +20,11 @@ Sabitlemeyi kaldır İlet Resim seçilen boyuta sıkıştırılamıyor + + + and %d other + and %d others + Yeni görüşme Kişi veya Numara Ekle… @@ -71,4 +76,4 @@ Haven't found some strings? There's more at https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res --> - \ No newline at end of file + diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index 4252edbe..a54a46c5 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -20,6 +20,11 @@ Відкріпити Переслати Не вдається стиснути зображення до вибраного розміру + + + and %d other + and %d others + Нове листування Додати контакт аба номер… @@ -75,4 +80,4 @@ Haven't found some strings? There's more at https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res --> - \ No newline at end of file + diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index f16f5033..3dae46c2 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -20,6 +20,11 @@ 取消固定 转发 无法将图像压缩到选定的大小 + + + and %d other + and %d others + 新的对话 添加联系人或者号码… @@ -69,4 +74,4 @@ Haven't found some strings? There's more at https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res --> - \ No newline at end of file + diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index 670239ce..da489f1c 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -20,6 +20,11 @@ 取消釘選 轉傳 無法將圖片壓縮至指定大小 + + + and %d other + and %d others + 新對話 新增聯絡對象或電話號碼…… @@ -69,4 +74,4 @@ Haven't found some strings? There's more at https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res --> - \ No newline at end of file + diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index 5411875a..68e9a072 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -6,4 +6,5 @@ 60dp 24dp 15dp + 64dp diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index ce1f6df3..762434d8 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -20,6 +20,11 @@ Unpin Forward Unable to compress image to selected size + + + and %d other + and %d others + New conversation Add Contact or Number…