mirror of
https://github.com/SimpleMobileTools/Simple-SMS-Messenger.git
synced 2025-03-12 09:30:07 +01:00
Add vCard attachment preview
This commit is contained in:
parent
d874e16024
commit
f07abeb54c
@ -69,6 +69,7 @@ dependencies {
|
||||
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"
|
||||
|
@ -135,6 +135,12 @@
|
||||
android:label="@string/blocked_numbers"
|
||||
android:parentActivityName=".activities.SettingsActivity" />
|
||||
|
||||
<activity
|
||||
android:name=".activities.VCardViewerActivity"
|
||||
android:exported="false"
|
||||
android:label="VCardViewActivity"
|
||||
android:parentActivityName=".activities.ThreadActivity" />
|
||||
|
||||
<service
|
||||
android:name=".services.HeadlessSmsSendService"
|
||||
android:exported="true"
|
||||
|
@ -0,0 +1,81 @@
|
||||
package com.simplemobiletools.smsmessenger.activities
|
||||
|
||||
import android.content.Intent
|
||||
import android.net.Uri
|
||||
import android.os.Bundle
|
||||
import com.simplemobiletools.commons.extensions.normalizePhoneNumber
|
||||
import com.simplemobiletools.commons.helpers.NavigationIcon
|
||||
import com.simplemobiletools.smsmessenger.R
|
||||
import com.simplemobiletools.smsmessenger.adapters.VCardViewerAdapter
|
||||
import com.simplemobiletools.smsmessenger.extensions.dialNumber
|
||||
import com.simplemobiletools.smsmessenger.extensions.sendMail
|
||||
import com.simplemobiletools.smsmessenger.helpers.EXTRA_VCARD_URI
|
||||
import com.simplemobiletools.smsmessenger.helpers.parseVCardFromUri
|
||||
import com.simplemobiletools.smsmessenger.models.VCardPropertyWrapper
|
||||
import com.simplemobiletools.smsmessenger.models.VCardWrapper
|
||||
import ezvcard.VCard
|
||||
import ezvcard.property.Email
|
||||
import ezvcard.property.Telephone
|
||||
import kotlinx.android.synthetic.main.activity_vcard_viewer.*
|
||||
|
||||
class VCardViewerActivity : SimpleActivity() {
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
setContentView(R.layout.activity_vcard_viewer)
|
||||
|
||||
val vCardUri = intent.getParcelableExtra(EXTRA_VCARD_URI) as? Uri
|
||||
if (vCardUri != null) {
|
||||
setupOptionsMenu(vCardUri)
|
||||
parseVCardFromUri(this, vCardUri) {
|
||||
runOnUiThread {
|
||||
setupContactsList(it)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun onResume() {
|
||||
super.onResume()
|
||||
setupToolbar(vcard_toolbar, NavigationIcon.Arrow)
|
||||
}
|
||||
|
||||
private fun setupOptionsMenu(vCardUri: Uri) {
|
||||
vcard_toolbar.setOnMenuItemClickListener { menuItem ->
|
||||
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<VCard>) {
|
||||
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 -> sendMail(property.value)
|
||||
}
|
||||
}
|
||||
|
||||
private fun prepareData(vCards: List<VCard>): List<VCardWrapper> {
|
||||
return vCards.map { VCardWrapper(it) }
|
||||
}
|
||||
}
|
@ -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.*
|
||||
@ -290,102 +290,167 @@ 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<Drawable> {
|
||||
override fun onLoadFailed(e: GlideException?, model: Any?, target: Target<Drawable>?, 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<Drawable>?, 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<Drawable> {
|
||||
override fun onLoadFailed(e: GlideException?, model: Any?, target: Target<Drawable>?, 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<Drawable>?, 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)
|
||||
vcard_view_contact.setTextColor(context.getLinkTextColor())
|
||||
}
|
||||
thread_mesage_attachments_holder.addView(vCardView)
|
||||
|
||||
parseVCardFromUri(context, uri) { vCards ->
|
||||
val title = vCards.first().formattedName.value
|
||||
val imageIcon = SimpleContactsHelper(context).getContactLetterIcon(title)
|
||||
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()
|
||||
}
|
||||
vcard_view_contact.text = resources.getQuantityString(R.plurals.view_contact, vCards.size)
|
||||
|
||||
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)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,138 @@
|
||||
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.getProperTextColor
|
||||
import com.simplemobiletools.commons.extensions.getTextSize
|
||||
import com.simplemobiletools.commons.extensions.onGlobalLayout
|
||||
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(
|
||||
private val activity: SimpleActivity, private var items: MutableList<Any>, private val itemClick: (Any) -> Unit
|
||||
) : RecyclerView.Adapter<VCardViewerAdapter.VCardViewHolder>() {
|
||||
|
||||
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.vCard.formattedName.value
|
||||
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 = SimpleContactsHelper(context).getContactLetterIcon(name).toDrawable(resources)
|
||||
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)
|
||||
}
|
||||
setOnClickListener {
|
||||
expandOrCollapseRow(view, item)
|
||||
}
|
||||
onGlobalLayout {
|
||||
if (items.size == 1) {
|
||||
expandOrCollapseRow(view, item)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
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.getVCardProperties(context = activity)
|
||||
if (item.expanded) {
|
||||
collapseRow(view, properties, item)
|
||||
} else {
|
||||
expandRow(view, properties, item)
|
||||
}
|
||||
}
|
||||
|
||||
private fun expandRow(view: View, properties: List<VCardPropertyWrapper>, 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<VCardPropertyWrapper>, 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
|
||||
}
|
||||
}
|
@ -24,3 +24,19 @@ fun Activity.dialNumber(phoneNumber: String, callback: (() -> Unit)? = null) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun Activity.sendMail(email: String) {
|
||||
hideKeyboard()
|
||||
Intent(Intent.ACTION_SENDTO).apply {
|
||||
data = Uri.parse("mailto:")
|
||||
putExtra(Intent.EXTRA_EMAIL, email)
|
||||
|
||||
try {
|
||||
startActivity(this)
|
||||
} catch (e: ActivityNotFoundException) {
|
||||
toast(R.string.no_app_found)
|
||||
} catch (e: Exception) {
|
||||
showErrorToast(e)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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()
|
||||
}
|
@ -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")
|
||||
}
|
||||
|
@ -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"
|
||||
|
@ -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<VCard>) -> Unit) {
|
||||
ensureBackgroundThread {
|
||||
val inputStream = context.contentResolver.openInputStream(uri)
|
||||
val vCards = Ezvcard.parse(inputStream).all()
|
||||
callback(vCards)
|
||||
}
|
||||
}
|
@ -0,0 +1,54 @@
|
||||
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, var expanded: Boolean = false) {
|
||||
|
||||
fun getVCardProperties(context: Context): List<VCardPropertyWrapper> {
|
||||
return vCard.properties
|
||||
.filter { displayedPropertyClasses.contains(it::class.java) }
|
||||
.map { VCardPropertyWrapper.from(context, it) }
|
||||
}
|
||||
}
|
||||
|
||||
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)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
3
app/src/main/res/drawable/ic_collapse_up.xml
Normal file
3
app/src/main/res/drawable/ic_collapse_up.xml
Normal file
@ -0,0 +1,3 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp" android:height="24dp" android:viewportWidth="24" android:viewportHeight="24">
|
||||
<path android:fillColor="@android:color/white" android:pathData="M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z"/>
|
||||
</vector>
|
3
app/src/main/res/drawable/ic_expand_down.xml
Normal file
3
app/src/main/res/drawable/ic_expand_down.xml
Normal file
@ -0,0 +1,3 @@
|
||||
<vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="24dp" android:height="24dp" android:viewportWidth="24" android:viewportHeight="24">
|
||||
<path android:fillColor="@android:color/white" android:pathData="M7.41 8.59L12 13.17l4.59-4.58L18 10l-6 6-6-6 1.41-1.41z"/>
|
||||
</vector>
|
35
app/src/main/res/layout/activity_vcard_viewer.xml
Normal file
35
app/src/main/res/layout/activity_vcard_viewer.xml
Normal file
@ -0,0 +1,35 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<androidx.appcompat.widget.LinearLayoutCompat xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="vertical">
|
||||
|
||||
<com.google.android.material.appbar.AppBarLayout
|
||||
android:id="@+id/main_app_bar_layout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent">
|
||||
|
||||
<com.google.android.material.appbar.MaterialToolbar
|
||||
android:id="@+id/vcard_toolbar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="?attr/actionBarSize"
|
||||
android:background="@color/color_primary"
|
||||
app:menu="@menu/menu_vcard"
|
||||
app:title="@string/contact_info"
|
||||
app:titleTextAppearance="@style/AppTheme.ActionBar.TitleTextStyle" />
|
||||
|
||||
</com.google.android.material.appbar.AppBarLayout>
|
||||
|
||||
<com.simplemobiletools.commons.views.MyRecyclerView
|
||||
android:id="@+id/contacts_list"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:clipToPadding="false"
|
||||
android:overScrollMode="ifContentScrolls"
|
||||
android:scrollbars="none"
|
||||
app:layoutManager="com.simplemobiletools.commons.views.MyLinearLayoutManager" />
|
||||
</androidx.appcompat.widget.LinearLayoutCompat>
|
55
app/src/main/res/layout/item_attachment_vcard.xml
Normal file
55
app/src/main/res/layout/item_attachment_vcard.xml
Normal file
@ -0,0 +1,55 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<androidx.constraintlayout.widget.ConstraintLayout 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:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@drawable/section_holder_stroke"
|
||||
android:orientation="vertical"
|
||||
android:padding="@dimen/normal_margin">
|
||||
|
||||
<androidx.appcompat.widget.AppCompatImageView
|
||||
android:id="@+id/vcard_photo"
|
||||
android:layout_width="@dimen/normal_icon_size"
|
||||
android:layout_height="@dimen/normal_icon_size"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
tools:src="@color/md_red" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/vcard_title"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/normal_margin"
|
||||
android:textSize="@dimen/big_text_size"
|
||||
app:layout_constraintStart_toEndOf="@id/vcard_photo"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
tools:text="Bob" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
android:id="@+id/vcard_subtitle"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/normal_margin"
|
||||
android:textSize="@dimen/normal_text_size"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintBottom_toTopOf="@id/vcard_view_contact"
|
||||
app:layout_constraintStart_toEndOf="@id/vcard_photo"
|
||||
app:layout_constraintTop_toBottomOf="@id/vcard_title"
|
||||
tools:text="and 6 others"
|
||||
tools:visibility="visible" />
|
||||
|
||||
<androidx.appcompat.widget.AppCompatTextView
|
||||
android:id="@+id/vcard_view_contact"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/normal_margin"
|
||||
android:layout_marginTop="@dimen/small_margin"
|
||||
android:textSize="@dimen/smaller_text_size"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toEndOf="@id/vcard_photo"
|
||||
app:layout_constraintTop_toBottomOf="@id/vcard_subtitle"
|
||||
tools:text="View contact" />
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
58
app/src/main/res/layout/item_vcard_contact.xml
Normal file
58
app/src/main/res/layout/item_vcard_contact.xml
Normal file
@ -0,0 +1,58 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:id="@+id/item_contact_frame"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="?attr/selectableItemBackground"
|
||||
android:clickable="true"
|
||||
android:focusable="true"
|
||||
android:foreground="@drawable/selector">
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/item_contact_holder"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:minHeight="@dimen/min_row_height"
|
||||
android:paddingStart="@dimen/tiny_margin"
|
||||
android:paddingTop="@dimen/medium_margin"
|
||||
android:paddingEnd="@dimen/activity_margin"
|
||||
android:paddingBottom="@dimen/medium_margin">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/item_contact_image"
|
||||
android:layout_width="@dimen/normal_icon_size"
|
||||
android:layout_height="@dimen/normal_icon_size"
|
||||
android:layout_centerVertical="true"
|
||||
android:layout_marginStart="@dimen/small_margin"
|
||||
android:padding="@dimen/tiny_margin"
|
||||
android:src="@drawable/ic_person_vector" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/item_contact_name"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_centerVertical="true"
|
||||
android:layout_toStartOf="@+id/expand_collapse_icon"
|
||||
android:layout_toEndOf="@+id/item_contact_image"
|
||||
android:ellipsize="end"
|
||||
android:gravity="center_vertical"
|
||||
android:maxLines="1"
|
||||
android:paddingStart="@dimen/medium_margin"
|
||||
android:paddingEnd="@dimen/activity_margin"
|
||||
android:textSize="@dimen/big_text_size"
|
||||
tools:text="John Doe" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/expand_collapse_icon"
|
||||
android:layout_width="@dimen/normal_icon_size"
|
||||
android:layout_height="@dimen/normal_icon_size"
|
||||
android:layout_alignParentEnd="true"
|
||||
android:layout_centerVertical="true"
|
||||
android:layout_marginEnd="@dimen/small_margin"
|
||||
android:padding="@dimen/medium_margin"
|
||||
android:src="@drawable/ic_expand_down"
|
||||
android:visibility="visible" />
|
||||
|
||||
</RelativeLayout>
|
||||
</FrameLayout>
|
46
app/src/main/res/layout/item_vcard_contact_property.xml
Normal file
46
app/src/main/res/layout/item_vcard_contact_property.xml
Normal file
@ -0,0 +1,46 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:id="@+id/item_vcard_property_frame"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="?attr/selectableItemBackground"
|
||||
android:clickable="true"
|
||||
android:focusable="true"
|
||||
android:foreground="@drawable/selector">
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/item_vcard_property_holder"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:minHeight="@dimen/min_row_height"
|
||||
android:paddingStart="@dimen/tiny_margin"
|
||||
android:paddingTop="@dimen/medium_margin"
|
||||
android:paddingEnd="@dimen/activity_margin"
|
||||
android:paddingBottom="@dimen/medium_margin">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/item_vcard_property_title"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="@dimen/vcard_property_start_margin"
|
||||
android:ellipsize="end"
|
||||
android:gravity="center_vertical"
|
||||
android:maxLines="1"
|
||||
android:textSize="@dimen/big_text_size"
|
||||
tools:text="John Doe" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/item_vcard_property_subtitle"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@+id/item_vcard_property_title"
|
||||
android:layout_alignStart="@+id/item_vcard_property_title"
|
||||
android:alpha="0.6"
|
||||
android:gravity="center_vertical"
|
||||
android:maxLines="1"
|
||||
android:textSize="@dimen/normal_text_size"
|
||||
tools:text="0123 456 789" />
|
||||
|
||||
</RelativeLayout>
|
||||
</FrameLayout>
|
9
app/src/main/res/menu/menu_vcard.xml
Normal file
9
app/src/main/res/menu/menu_vcard.xml
Normal 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/add_contact"
|
||||
android:icon="@drawable/ic_add_person_vector"
|
||||
android:title="@string/add_contact"
|
||||
app:showAsAction="always" />
|
||||
</menu>
|
@ -20,6 +20,20 @@
|
||||
<string name="unpin_conversation">ازالة التثبيت</string>
|
||||
<string name="forward_message">اعادة ارسال</string>
|
||||
<string name="compress_error">غير قادر على ضغط الصورة إلى الحجم المحدد</string>
|
||||
<!-- vCard-->
|
||||
<plurals name="view_contact">
|
||||
<item quantity="one">View contact</item>
|
||||
<item quantity="other">View contacts</item>
|
||||
</plurals>
|
||||
<plurals name="and_other_contacts">
|
||||
<item quantity="one">and %d other</item>
|
||||
<item quantity="other">and %d others</item>
|
||||
</plurals>
|
||||
<string name="contact_info">Contact info</string>
|
||||
<string name="notes">Notes</string>
|
||||
<string name="anniversary">Anniversary</string>
|
||||
<string name="birthday">Birthday</string>
|
||||
<string name="add_contact">Add contact</string>
|
||||
<!-- New conversation -->
|
||||
<string name="new_conversation">محادثة جديدة</string>
|
||||
<string name="add_contact_or_number">إضافة جهة اتصال أو رقم …</string>
|
||||
@ -79,4 +93,4 @@
|
||||
Haven't found some strings? There's more at
|
||||
https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res
|
||||
-->
|
||||
</resources>
|
||||
</resources>
|
||||
|
@ -20,6 +20,20 @@
|
||||
<string name="unpin_conversation">Unpin</string>
|
||||
<string name="forward_message">Forward</string>
|
||||
<string name="compress_error">Unable to compress image to selected size</string>
|
||||
<!-- vCard-->
|
||||
<plurals name="view_contact">
|
||||
<item quantity="one">View contact</item>
|
||||
<item quantity="other">View contacts</item>
|
||||
</plurals>
|
||||
<plurals name="and_other_contacts">
|
||||
<item quantity="one">and %d other</item>
|
||||
<item quantity="other">and %d others</item>
|
||||
</plurals>
|
||||
<string name="contact_info">Contact info</string>
|
||||
<string name="notes">Notes</string>
|
||||
<string name="anniversary">Anniversary</string>
|
||||
<string name="birthday">Birthday</string>
|
||||
<string name="add_contact">Add contact</string>
|
||||
<!-- New conversation -->
|
||||
<string name="new_conversation">New conversation</string>
|
||||
<string name="add_contact_or_number">Add Contact or Number…</string>
|
||||
@ -71,4 +85,4 @@
|
||||
Haven't found some strings? There's more at
|
||||
https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res
|
||||
-->
|
||||
</resources>
|
||||
</resources>
|
||||
|
@ -20,6 +20,20 @@
|
||||
<string name="unpin_conversation">Адмацаваць</string>
|
||||
<string name="forward_message">Пераслаць</string>
|
||||
<string name="compress_error">Немагчыма сціснуць выяву да выбранага памеру</string>
|
||||
<!-- vCard-->
|
||||
<plurals name="view_contact">
|
||||
<item quantity="one">View contact</item>
|
||||
<item quantity="other">View contacts</item>
|
||||
</plurals>
|
||||
<plurals name="and_other_contacts">
|
||||
<item quantity="one">and %d other</item>
|
||||
<item quantity="other">and %d others</item>
|
||||
</plurals>
|
||||
<string name="contact_info">Contact info</string>
|
||||
<string name="notes">Notes</string>
|
||||
<string name="anniversary">Anniversary</string>
|
||||
<string name="birthday">Birthday</string>
|
||||
<string name="add_contact">Add contact</string>
|
||||
<!-- New conversation -->
|
||||
<string name="new_conversation">Новая размова</string>
|
||||
<string name="add_contact_or_number">Дадаць кантакт альбо нумар…</string>
|
||||
@ -75,4 +89,4 @@
|
||||
Haven't found some strings? There's more at
|
||||
https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res
|
||||
-->
|
||||
</resources>
|
||||
</resources>
|
||||
|
@ -20,6 +20,20 @@
|
||||
<string name="unpin_conversation">Откачване</string>
|
||||
<string name="forward_message">Препращане</string>
|
||||
<string name="compress_error">Невъзможно е да се компресира изображението до избрания размер</string>
|
||||
<!-- vCard-->
|
||||
<plurals name="view_contact">
|
||||
<item quantity="one">View contact</item>
|
||||
<item quantity="other">View contacts</item>
|
||||
</plurals>
|
||||
<plurals name="and_other_contacts">
|
||||
<item quantity="one">and %d other</item>
|
||||
<item quantity="other">and %d others</item>
|
||||
</plurals>
|
||||
<string name="contact_info">Contact info</string>
|
||||
<string name="notes">Notes</string>
|
||||
<string name="anniversary">Anniversary</string>
|
||||
<string name="birthday">Birthday</string>
|
||||
<string name="add_contact">Add contact</string>
|
||||
<!-- New conversation -->
|
||||
<string name="new_conversation">Нов разговор</string>
|
||||
<string name="add_contact_or_number">Добавете контакт или номер…</string>
|
||||
@ -71,4 +85,4 @@
|
||||
Haven't found some strings? There's more at
|
||||
https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res
|
||||
-->
|
||||
</resources>
|
||||
</resources>
|
||||
|
@ -20,6 +20,20 @@
|
||||
<string name="unpin_conversation">No fixis</string>
|
||||
<string name="forward_message">Reenvia</string>
|
||||
<string name="compress_error">No s\'ha pogut comprimir la imatge a la mida seleccionada</string>
|
||||
<!-- vCard-->
|
||||
<plurals name="view_contact">
|
||||
<item quantity="one">View contact</item>
|
||||
<item quantity="other">View contacts</item>
|
||||
</plurals>
|
||||
<plurals name="and_other_contacts">
|
||||
<item quantity="one">and %d other</item>
|
||||
<item quantity="other">and %d others</item>
|
||||
</plurals>
|
||||
<string name="contact_info">Contact info</string>
|
||||
<string name="notes">Notes</string>
|
||||
<string name="anniversary">Anniversary</string>
|
||||
<string name="birthday">Birthday</string>
|
||||
<string name="add_contact">Add contact</string>
|
||||
<!-- New conversation -->
|
||||
<string name="new_conversation">Conversa nova</string>
|
||||
<string name="add_contact_or_number">Afegeix un contacte o número…</string>
|
||||
@ -71,4 +85,4 @@
|
||||
Haven't found some strings? There's more at
|
||||
https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res
|
||||
-->
|
||||
</resources>
|
||||
</resources>
|
||||
|
@ -20,6 +20,20 @@
|
||||
<string name="unpin_conversation">Odepnout</string>
|
||||
<string name="forward_message">Přeposlat</string>
|
||||
<string name="compress_error">Nepodařilo se komprimovat obrázek na požadovanou velikost</string>
|
||||
<!-- vCard-->
|
||||
<plurals name="view_contact">
|
||||
<item quantity="one">View contact</item>
|
||||
<item quantity="other">View contacts</item>
|
||||
</plurals>
|
||||
<plurals name="and_other_contacts">
|
||||
<item quantity="one">and %d other</item>
|
||||
<item quantity="other">and %d others</item>
|
||||
</plurals>
|
||||
<string name="contact_info">Contact info</string>
|
||||
<string name="notes">Notes</string>
|
||||
<string name="anniversary">Anniversary</string>
|
||||
<string name="birthday">Birthday</string>
|
||||
<string name="add_contact">Add contact</string>
|
||||
<!-- New conversation -->
|
||||
<string name="new_conversation">Nová konverzace</string>
|
||||
<string name="add_contact_or_number">Přidejte kontakt nebo číslo…</string>
|
||||
@ -73,4 +87,4 @@
|
||||
Haven't found some strings? There's more at
|
||||
https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res
|
||||
-->
|
||||
</resources>
|
||||
</resources>
|
||||
|
@ -20,6 +20,20 @@
|
||||
<string name="unpin_conversation">Frigør</string>
|
||||
<string name="forward_message">Fremad</string>
|
||||
<string name="compress_error">Billedet kan ikke komprimeres til den valgte størrelse</string>
|
||||
<!-- vCard-->
|
||||
<plurals name="view_contact">
|
||||
<item quantity="one">View contact</item>
|
||||
<item quantity="other">View contacts</item>
|
||||
</plurals>
|
||||
<plurals name="and_other_contacts">
|
||||
<item quantity="one">and %d other</item>
|
||||
<item quantity="other">and %d others</item>
|
||||
</plurals>
|
||||
<string name="contact_info">Contact info</string>
|
||||
<string name="notes">Notes</string>
|
||||
<string name="anniversary">Anniversary</string>
|
||||
<string name="birthday">Birthday</string>
|
||||
<string name="add_contact">Add contact</string>
|
||||
<!-- New conversation -->
|
||||
<string name="new_conversation">Ny Samtale</string>
|
||||
<string name="add_contact_or_number">Tilføj kontakt eller nummer…</string>
|
||||
@ -71,4 +85,4 @@
|
||||
Haven't found some strings? There's more at
|
||||
https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res
|
||||
-->
|
||||
</resources>
|
||||
</resources>
|
||||
|
@ -20,6 +20,20 @@
|
||||
<string name="unpin_conversation">Losheften</string>
|
||||
<string name="forward_message">Weiterleiten</string>
|
||||
<string name="compress_error">Bild kann nicht auf ausgewählte Größe komprimiert werden</string>
|
||||
<!-- vCard-->
|
||||
<plurals name="view_contact">
|
||||
<item quantity="one">View contact</item>
|
||||
<item quantity="other">View contacts</item>
|
||||
</plurals>
|
||||
<plurals name="and_other_contacts">
|
||||
<item quantity="one">and %d other</item>
|
||||
<item quantity="other">and %d others</item>
|
||||
</plurals>
|
||||
<string name="contact_info">Contact info</string>
|
||||
<string name="notes">Notes</string>
|
||||
<string name="anniversary">Anniversary</string>
|
||||
<string name="birthday">Birthday</string>
|
||||
<string name="add_contact">Add contact</string>
|
||||
<!-- New conversation -->
|
||||
<string name="new_conversation">Neuer Chat</string>
|
||||
<string name="add_contact_or_number">Kontakt oder Nummer hinzufügen …</string>
|
||||
@ -71,4 +85,4 @@
|
||||
Haven't found some strings? There's more at
|
||||
https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res
|
||||
-->
|
||||
</resources>
|
||||
</resources>
|
||||
|
@ -20,6 +20,20 @@
|
||||
<string name="unpin_conversation">Ξεκαρφίτσωμα</string>
|
||||
<string name="forward_message">Προώθηση</string>
|
||||
<string name="compress_error">Αδυναμία συμπίεσης εικόνας στο επιλεγμένο μέγεθος</string>
|
||||
<!-- vCard-->
|
||||
<plurals name="view_contact">
|
||||
<item quantity="one">View contact</item>
|
||||
<item quantity="other">View contacts</item>
|
||||
</plurals>
|
||||
<plurals name="and_other_contacts">
|
||||
<item quantity="one">and %d other</item>
|
||||
<item quantity="other">and %d others</item>
|
||||
</plurals>
|
||||
<string name="contact_info">Contact info</string>
|
||||
<string name="notes">Notes</string>
|
||||
<string name="anniversary">Anniversary</string>
|
||||
<string name="birthday">Birthday</string>
|
||||
<string name="add_contact">Add contact</string>
|
||||
<!-- New conversation -->
|
||||
<string name="new_conversation">Νέα συνομιλία</string>
|
||||
<string name="add_contact_or_number">Προσθήκη επαφής ή αριθμού…</string>
|
||||
@ -71,4 +85,4 @@
|
||||
Haven't found some strings? There's more at
|
||||
https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res
|
||||
-->
|
||||
</resources>
|
||||
</resources>
|
||||
|
@ -20,6 +20,20 @@
|
||||
<string name="unpin_conversation">Depingli</string>
|
||||
<string name="forward_message">Forward</string>
|
||||
<string name="compress_error">Unable to compress image to selected size</string>
|
||||
<!-- vCard-->
|
||||
<plurals name="view_contact">
|
||||
<item quantity="one">View contact</item>
|
||||
<item quantity="other">View contacts</item>
|
||||
</plurals>
|
||||
<plurals name="and_other_contacts">
|
||||
<item quantity="one">and %d other</item>
|
||||
<item quantity="other">and %d others</item>
|
||||
</plurals>
|
||||
<string name="contact_info">Contact info</string>
|
||||
<string name="notes">Notes</string>
|
||||
<string name="anniversary">Anniversary</string>
|
||||
<string name="birthday">Birthday</string>
|
||||
<string name="add_contact">Add contact</string>
|
||||
<!-- New conversation -->
|
||||
<string name="new_conversation">New conversation</string>
|
||||
<string name="add_contact_or_number">Add Contact or Number…</string>
|
||||
@ -71,4 +85,4 @@
|
||||
Haven't found some strings? There's more at
|
||||
https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res
|
||||
-->
|
||||
</resources>
|
||||
</resources>
|
||||
|
@ -20,6 +20,20 @@
|
||||
<string name="unpin_conversation">Desanclar</string>
|
||||
<string name="forward_message">Reenviar</string>
|
||||
<string name="compress_error">Incapaz de comprimir la imagen al tamaño seleccionado</string>
|
||||
<!-- vCard-->
|
||||
<plurals name="view_contact">
|
||||
<item quantity="one">View contact</item>
|
||||
<item quantity="other">View contacts</item>
|
||||
</plurals>
|
||||
<plurals name="and_other_contacts">
|
||||
<item quantity="one">and %d other</item>
|
||||
<item quantity="other">and %d others</item>
|
||||
</plurals>
|
||||
<string name="contact_info">Contact info</string>
|
||||
<string name="notes">Notes</string>
|
||||
<string name="anniversary">Anniversary</string>
|
||||
<string name="birthday">Birthday</string>
|
||||
<string name="add_contact">Add contact</string>
|
||||
<!-- New conversation -->
|
||||
<string name="new_conversation">Nueva conversación</string>
|
||||
<string name="add_contact_or_number">Escribe contacto o número…</string>
|
||||
@ -71,4 +85,4 @@
|
||||
Haven't found some strings? There's more at
|
||||
https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res
|
||||
-->
|
||||
</resources>
|
||||
</resources>
|
||||
|
@ -20,6 +20,20 @@
|
||||
<string name="unpin_conversation">Eemalda kinnitus</string>
|
||||
<string name="forward_message">Edasta</string>
|
||||
<string name="compress_error">Pildi muutmine valitud suurusesse ei õnnestu</string>
|
||||
<!-- vCard-->
|
||||
<plurals name="view_contact">
|
||||
<item quantity="one">View contact</item>
|
||||
<item quantity="other">View contacts</item>
|
||||
</plurals>
|
||||
<plurals name="and_other_contacts">
|
||||
<item quantity="one">and %d other</item>
|
||||
<item quantity="other">and %d others</item>
|
||||
</plurals>
|
||||
<string name="contact_info">Contact info</string>
|
||||
<string name="notes">Notes</string>
|
||||
<string name="anniversary">Anniversary</string>
|
||||
<string name="birthday">Birthday</string>
|
||||
<string name="add_contact">Add contact</string>
|
||||
<!-- New conversation -->
|
||||
<string name="new_conversation">Uus vestlus</string>
|
||||
<string name="add_contact_or_number">Add Contact or Number…</string>
|
||||
@ -71,4 +85,4 @@
|
||||
Haven't found some strings? There's more at
|
||||
https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res
|
||||
-->
|
||||
</resources>
|
||||
</resources>
|
||||
|
@ -20,6 +20,20 @@
|
||||
<string name="unpin_conversation">Unpin</string>
|
||||
<string name="forward_message">Forward</string>
|
||||
<string name="compress_error">Unable to compress image to selected size</string>
|
||||
<!-- vCard-->
|
||||
<plurals name="view_contact">
|
||||
<item quantity="one">View contact</item>
|
||||
<item quantity="other">View contacts</item>
|
||||
</plurals>
|
||||
<plurals name="and_other_contacts">
|
||||
<item quantity="one">and %d other</item>
|
||||
<item quantity="other">and %d others</item>
|
||||
</plurals>
|
||||
<string name="contact_info">Contact info</string>
|
||||
<string name="notes">Notes</string>
|
||||
<string name="anniversary">Anniversary</string>
|
||||
<string name="birthday">Birthday</string>
|
||||
<string name="add_contact">Add contact</string>
|
||||
<!-- New conversation -->
|
||||
<string name="new_conversation">Uusi keskustelu</string>
|
||||
<string name="add_contact_or_number">Lisää yhteystieto tai numero…</string>
|
||||
@ -71,4 +85,4 @@
|
||||
Haven't found some strings? There's more at
|
||||
https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res
|
||||
-->
|
||||
</resources>
|
||||
</resources>
|
||||
|
@ -20,6 +20,20 @@
|
||||
<string name="unpin_conversation">Désépingler</string>
|
||||
<string name="forward_message">Transférer</string>
|
||||
<string name="compress_error">Impossible de compresser l\'image à la taille sélectionnée</string>
|
||||
<!-- vCard-->
|
||||
<plurals name="view_contact">
|
||||
<item quantity="one">View contact</item>
|
||||
<item quantity="other">View contacts</item>
|
||||
</plurals>
|
||||
<plurals name="and_other_contacts">
|
||||
<item quantity="one">and %d other</item>
|
||||
<item quantity="other">and %d others</item>
|
||||
</plurals>
|
||||
<string name="contact_info">Contact info</string>
|
||||
<string name="notes">Notes</string>
|
||||
<string name="anniversary">Anniversary</string>
|
||||
<string name="birthday">Birthday</string>
|
||||
<string name="add_contact">Add contact</string>
|
||||
<!-- New conversation -->
|
||||
<string name="new_conversation">Nouvelle conversation</string>
|
||||
<string name="add_contact_or_number">Ajouter un contact ou un numéro…</string>
|
||||
@ -71,4 +85,4 @@
|
||||
Haven't found some strings? There's more at
|
||||
https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res
|
||||
-->
|
||||
</resources>
|
||||
</resources>
|
||||
|
@ -20,6 +20,20 @@
|
||||
<string name="unpin_conversation">Unpin</string>
|
||||
<string name="forward_message">Forward</string>
|
||||
<string name="compress_error">Unable to compress image to selected size</string>
|
||||
<!-- vCard-->
|
||||
<plurals name="view_contact">
|
||||
<item quantity="one">View contact</item>
|
||||
<item quantity="other">View contacts</item>
|
||||
</plurals>
|
||||
<plurals name="and_other_contacts">
|
||||
<item quantity="one">and %d other</item>
|
||||
<item quantity="other">and %d others</item>
|
||||
</plurals>
|
||||
<string name="contact_info">Contact info</string>
|
||||
<string name="notes">Notes</string>
|
||||
<string name="anniversary">Anniversary</string>
|
||||
<string name="birthday">Birthday</string>
|
||||
<string name="add_contact">Add contact</string>
|
||||
<!-- New conversation -->
|
||||
<string name="new_conversation">Nova conversa</string>
|
||||
<string name="add_contact_or_number">Engadir contacto ou número…</string>
|
||||
@ -71,4 +85,4 @@
|
||||
Non atopaches algunhas cadeas? Hai máis en
|
||||
https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res
|
||||
-->
|
||||
</resources>
|
||||
</resources>
|
||||
|
@ -20,6 +20,20 @@
|
||||
<string name="unpin_conversation">Otkvači</string>
|
||||
<string name="forward_message">Proslijedi</string>
|
||||
<string name="compress_error">Isključi za komprimiranje slike na odabranu veličinu</string>
|
||||
<!-- vCard-->
|
||||
<plurals name="view_contact">
|
||||
<item quantity="one">View contact</item>
|
||||
<item quantity="other">View contacts</item>
|
||||
</plurals>
|
||||
<plurals name="and_other_contacts">
|
||||
<item quantity="one">and %d other</item>
|
||||
<item quantity="other">and %d others</item>
|
||||
</plurals>
|
||||
<string name="contact_info">Contact info</string>
|
||||
<string name="notes">Notes</string>
|
||||
<string name="anniversary">Anniversary</string>
|
||||
<string name="birthday">Birthday</string>
|
||||
<string name="add_contact">Add contact</string>
|
||||
<!-- New conversation -->
|
||||
<string name="new_conversation">Nova konverzacija</string>
|
||||
<string name="add_contact_or_number">Dodaj kontakt ili broj …</string>
|
||||
@ -73,4 +87,4 @@
|
||||
Haven't found some strings? There's more at
|
||||
https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res
|
||||
-->
|
||||
</resources>
|
||||
</resources>
|
||||
|
@ -20,6 +20,20 @@
|
||||
<string name="unpin_conversation">Kitűzés megszüntetése</string>
|
||||
<string name="forward_message">Továbbítás</string>
|
||||
<string name="compress_error">Nem lehet tömöríteni a képet a kiválasztott méretre</string>
|
||||
<!-- vCard-->
|
||||
<plurals name="view_contact">
|
||||
<item quantity="one">View contact</item>
|
||||
<item quantity="other">View contacts</item>
|
||||
</plurals>
|
||||
<plurals name="and_other_contacts">
|
||||
<item quantity="one">and %d other</item>
|
||||
<item quantity="other">and %d others</item>
|
||||
</plurals>
|
||||
<string name="contact_info">Contact info</string>
|
||||
<string name="notes">Notes</string>
|
||||
<string name="anniversary">Anniversary</string>
|
||||
<string name="birthday">Birthday</string>
|
||||
<string name="add_contact">Add contact</string>
|
||||
<!-- New conversation -->
|
||||
<string name="new_conversation">Új beszélgetés</string>
|
||||
<string name="add_contact_or_number">Névjegy vagy szám hozzáadása…</string>
|
||||
@ -71,4 +85,4 @@
|
||||
Haven't found some strings? There's more at
|
||||
https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res
|
||||
-->
|
||||
</resources>
|
||||
</resources>
|
||||
|
@ -20,6 +20,20 @@
|
||||
<string name="unpin_conversation">Unpin</string>
|
||||
<string name="forward_message">Forward</string>
|
||||
<string name="compress_error">Unable to compress image to selected size</string>
|
||||
<!-- vCard-->
|
||||
<plurals name="view_contact">
|
||||
<item quantity="one">View contact</item>
|
||||
<item quantity="other">View contacts</item>
|
||||
</plurals>
|
||||
<plurals name="and_other_contacts">
|
||||
<item quantity="one">and %d other</item>
|
||||
<item quantity="other">and %d others</item>
|
||||
</plurals>
|
||||
<string name="contact_info">Contact info</string>
|
||||
<string name="notes">Notes</string>
|
||||
<string name="anniversary">Anniversary</string>
|
||||
<string name="birthday">Birthday</string>
|
||||
<string name="add_contact">Add contact</string>
|
||||
<!-- New conversation -->
|
||||
<string name="new_conversation">Percakapan baru</string>
|
||||
<string name="add_contact_or_number">Tambahkan Kontak atau Nomor…</string>
|
||||
@ -69,4 +83,4 @@
|
||||
Haven't found some strings? There's more at
|
||||
https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res
|
||||
-->
|
||||
</resources>
|
||||
</resources>
|
||||
|
@ -20,6 +20,20 @@
|
||||
<string name="unpin_conversation">Rimuovi</string>
|
||||
<string name="forward_message">Inoltra</string>
|
||||
<string name="compress_error">Impossibile comprimere l\'immagine alla dimensione selezionata</string>
|
||||
<!-- vCard-->
|
||||
<plurals name="view_contact">
|
||||
<item quantity="one">View contact</item>
|
||||
<item quantity="other">View contacts</item>
|
||||
</plurals>
|
||||
<plurals name="and_other_contacts">
|
||||
<item quantity="one">and %d other</item>
|
||||
<item quantity="other">and %d others</item>
|
||||
</plurals>
|
||||
<string name="contact_info">Contact info</string>
|
||||
<string name="notes">Notes</string>
|
||||
<string name="anniversary">Anniversary</string>
|
||||
<string name="birthday">Birthday</string>
|
||||
<string name="add_contact">Add contact</string>
|
||||
<!-- New conversation -->
|
||||
<string name="new_conversation">Nuova conversazione</string>
|
||||
<string name="add_contact_or_number">Inserisci contatto o numero…</string>
|
||||
@ -71,4 +85,4 @@
|
||||
Haven't found some strings? There's more at
|
||||
https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res
|
||||
-->
|
||||
</resources>
|
||||
</resources>
|
||||
|
@ -20,6 +20,20 @@
|
||||
<string name="unpin_conversation">בטל הצמדה</string>
|
||||
<string name="forward_message">התקדם</string>
|
||||
<string name="compress_error">לא ניתן לדחוס תמונה לגודל שנבחר</string>
|
||||
<!-- vCard-->
|
||||
<plurals name="view_contact">
|
||||
<item quantity="one">View contact</item>
|
||||
<item quantity="other">View contacts</item>
|
||||
</plurals>
|
||||
<plurals name="and_other_contacts">
|
||||
<item quantity="one">and %d other</item>
|
||||
<item quantity="other">and %d others</item>
|
||||
</plurals>
|
||||
<string name="contact_info">Contact info</string>
|
||||
<string name="notes">Notes</string>
|
||||
<string name="anniversary">Anniversary</string>
|
||||
<string name="birthday">Birthday</string>
|
||||
<string name="add_contact">Add contact</string>
|
||||
<!-- New conversation -->
|
||||
<string name="new_conversation">שיחה חדשה</string>
|
||||
<string name="add_contact_or_number">הוסף איש קשר או מספר…</string>
|
||||
@ -75,4 +89,4 @@
|
||||
Haven't found some strings? There's more at
|
||||
https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res
|
||||
-->
|
||||
</resources>
|
||||
</resources>
|
||||
|
@ -20,6 +20,20 @@
|
||||
<string name="unpin_conversation">固定を外す</string>
|
||||
<string name="forward_message">転送</string>
|
||||
<string name="compress_error">選択したサイズに画像を圧縮できません</string>
|
||||
<!-- vCard-->
|
||||
<plurals name="view_contact">
|
||||
<item quantity="one">View contact</item>
|
||||
<item quantity="other">View contacts</item>
|
||||
</plurals>
|
||||
<plurals name="and_other_contacts">
|
||||
<item quantity="one">and %d other</item>
|
||||
<item quantity="other">and %d others</item>
|
||||
</plurals>
|
||||
<string name="contact_info">Contact info</string>
|
||||
<string name="notes">Notes</string>
|
||||
<string name="anniversary">Anniversary</string>
|
||||
<string name="birthday">Birthday</string>
|
||||
<string name="add_contact">Add contact</string>
|
||||
<!-- New conversation -->
|
||||
<string name="new_conversation">新しい会話</string>
|
||||
<string name="add_contact_or_number">連絡先や電話番号を追加…</string>
|
||||
@ -69,4 +83,4 @@
|
||||
Haven't found some strings? There's more at
|
||||
https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res
|
||||
-->
|
||||
</resources>
|
||||
</resources>
|
||||
|
@ -20,6 +20,20 @@
|
||||
<string name="unpin_conversation">Atjunkite</string>
|
||||
<string name="forward_message">Pirmyn</string>
|
||||
<string name="compress_error">Nepavyksta suspausti vaizdo iki pasirinkto dydžio</string>
|
||||
<!-- vCard-->
|
||||
<plurals name="view_contact">
|
||||
<item quantity="one">View contact</item>
|
||||
<item quantity="other">View contacts</item>
|
||||
</plurals>
|
||||
<plurals name="and_other_contacts">
|
||||
<item quantity="one">and %d other</item>
|
||||
<item quantity="other">and %d others</item>
|
||||
</plurals>
|
||||
<string name="contact_info">Contact info</string>
|
||||
<string name="notes">Notes</string>
|
||||
<string name="anniversary">Anniversary</string>
|
||||
<string name="birthday">Birthday</string>
|
||||
<string name="add_contact">Add contact</string>
|
||||
<!-- New conversation -->
|
||||
<string name="new_conversation">Naujas pokalbis</string>
|
||||
<string name="add_contact_or_number">Pridėti kontaktą arba numerį…</string>
|
||||
@ -73,4 +87,4 @@
|
||||
Haven't found some strings? There's more at
|
||||
https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res
|
||||
-->
|
||||
</resources>
|
||||
</resources>
|
||||
|
@ -20,6 +20,20 @@
|
||||
<string name="unpin_conversation">Unpin</string>
|
||||
<string name="forward_message">Forward</string>
|
||||
<string name="compress_error">Unable to compress image to selected size</string>
|
||||
<!-- vCard-->
|
||||
<plurals name="view_contact">
|
||||
<item quantity="one">View contact</item>
|
||||
<item quantity="other">View contacts</item>
|
||||
</plurals>
|
||||
<plurals name="and_other_contacts">
|
||||
<item quantity="one">and %d other</item>
|
||||
<item quantity="other">and %d others</item>
|
||||
</plurals>
|
||||
<string name="contact_info">Contact info</string>
|
||||
<string name="notes">Notes</string>
|
||||
<string name="anniversary">Anniversary</string>
|
||||
<string name="birthday">Birthday</string>
|
||||
<string name="add_contact">Add contact</string>
|
||||
<!-- New conversation -->
|
||||
<string name="new_conversation">പുതിയ സംഭാഷണം</string>
|
||||
<string name="add_contact_or_number">കോൺടാക്റ്റ് അല്ലെങ്കിൽ നമ്പർ ചേർക്കുക…</string>
|
||||
@ -71,4 +85,4 @@
|
||||
Haven't found some strings? There's more at
|
||||
https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res
|
||||
-->
|
||||
</resources>
|
||||
</resources>
|
||||
|
@ -20,6 +20,20 @@
|
||||
<string name="unpin_conversation">Løsne</string>
|
||||
<string name="forward_message">Videresend</string>
|
||||
<string name="compress_error">Unable to compress image to selected size</string>
|
||||
<!-- vCard-->
|
||||
<plurals name="view_contact">
|
||||
<item quantity="one">View contact</item>
|
||||
<item quantity="other">View contacts</item>
|
||||
</plurals>
|
||||
<plurals name="and_other_contacts">
|
||||
<item quantity="one">and %d other</item>
|
||||
<item quantity="other">and %d others</item>
|
||||
</plurals>
|
||||
<string name="contact_info">Contact info</string>
|
||||
<string name="notes">Notes</string>
|
||||
<string name="anniversary">Anniversary</string>
|
||||
<string name="birthday">Birthday</string>
|
||||
<string name="add_contact">Add contact</string>
|
||||
<!-- New conversation -->
|
||||
<string name="new_conversation">Ny samtale</string>
|
||||
<string name="add_contact_or_number">Legg til kontakt eller nummer …</string>
|
||||
@ -71,4 +85,4 @@
|
||||
Haven't found some strings? There's more at
|
||||
https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res
|
||||
-->
|
||||
</resources>
|
||||
</resources>
|
||||
|
@ -20,6 +20,20 @@
|
||||
<string name="unpin_conversation">Losmaken</string>
|
||||
<string name="forward_message">Doorsturen</string>
|
||||
<string name="compress_error">Kon de afbeelding niet comprimeren naar de gekozen grootte</string>
|
||||
<!-- vCard-->
|
||||
<plurals name="view_contact">
|
||||
<item quantity="one">View contact</item>
|
||||
<item quantity="other">View contacts</item>
|
||||
</plurals>
|
||||
<plurals name="and_other_contacts">
|
||||
<item quantity="one">and %d other</item>
|
||||
<item quantity="other">and %d others</item>
|
||||
</plurals>
|
||||
<string name="contact_info">Contact info</string>
|
||||
<string name="notes">Notes</string>
|
||||
<string name="anniversary">Anniversary</string>
|
||||
<string name="birthday">Birthday</string>
|
||||
<string name="add_contact">Add contact</string>
|
||||
<!-- New conversation -->
|
||||
<string name="new_conversation">Nieuw gesprek</string>
|
||||
<string name="add_contact_or_number">Contact of nummer toevoegen…</string>
|
||||
@ -71,4 +85,4 @@
|
||||
Haven't found some strings? There's more at
|
||||
https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res
|
||||
-->
|
||||
</resources>
|
||||
</resources>
|
||||
|
@ -20,6 +20,20 @@
|
||||
<string name="unpin_conversation">Odepnij</string>
|
||||
<string name="forward_message">Przekaż dalej</string>
|
||||
<string name="compress_error">Nie udało się skompresować obrazu do wybranego rozmiaru</string>
|
||||
<!-- vCard-->
|
||||
<plurals name="view_contact">
|
||||
<item quantity="one">View contact</item>
|
||||
<item quantity="other">View contacts</item>
|
||||
</plurals>
|
||||
<plurals name="and_other_contacts">
|
||||
<item quantity="one">and %d other</item>
|
||||
<item quantity="other">and %d others</item>
|
||||
</plurals>
|
||||
<string name="contact_info">Contact info</string>
|
||||
<string name="notes">Notes</string>
|
||||
<string name="anniversary">Anniversary</string>
|
||||
<string name="birthday">Birthday</string>
|
||||
<string name="add_contact">Add contact</string>
|
||||
<!-- New conversation -->
|
||||
<string name="new_conversation">Nowa rozmowa</string>
|
||||
<string name="add_contact_or_number">Dodaj kontakt lub numer…</string>
|
||||
@ -75,4 +89,4 @@
|
||||
Haven't found some strings? There's more at
|
||||
https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res
|
||||
-->
|
||||
</resources>
|
||||
</resources>
|
||||
|
@ -20,6 +20,20 @@
|
||||
<string name="unpin_conversation">Desfixar</string>
|
||||
<string name="forward_message">Encaminhar</string>
|
||||
<string name="compress_error">Não pôde comprimir imagem ao tamanho selecionado</string>
|
||||
<!-- vCard-->
|
||||
<plurals name="view_contact">
|
||||
<item quantity="one">View contact</item>
|
||||
<item quantity="other">View contacts</item>
|
||||
</plurals>
|
||||
<plurals name="and_other_contacts">
|
||||
<item quantity="one">and %d other</item>
|
||||
<item quantity="other">and %d others</item>
|
||||
</plurals>
|
||||
<string name="contact_info">Contact info</string>
|
||||
<string name="notes">Notes</string>
|
||||
<string name="anniversary">Anniversary</string>
|
||||
<string name="birthday">Birthday</string>
|
||||
<string name="add_contact">Add contact</string>
|
||||
<!-- New conversation -->
|
||||
<string name="new_conversation">Nova conversa</string>
|
||||
<string name="add_contact_or_number">Adicionar contato ou número…</string>
|
||||
@ -71,4 +85,4 @@
|
||||
Haven't found some strings? There's more at
|
||||
https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res
|
||||
-->
|
||||
</resources>
|
||||
</resources>
|
||||
|
@ -20,6 +20,20 @@
|
||||
<string name="unpin_conversation">Desafixar</string>
|
||||
<string name="forward_message">Reencaminhar</string>
|
||||
<string name="compress_error">Incapaz de comprimir imagem no tamanho selecionado</string>
|
||||
<!-- vCard-->
|
||||
<plurals name="view_contact">
|
||||
<item quantity="one">View contact</item>
|
||||
<item quantity="other">View contacts</item>
|
||||
</plurals>
|
||||
<plurals name="and_other_contacts">
|
||||
<item quantity="one">and %d other</item>
|
||||
<item quantity="other">and %d others</item>
|
||||
</plurals>
|
||||
<string name="contact_info">Contact info</string>
|
||||
<string name="notes">Notes</string>
|
||||
<string name="anniversary">Anniversary</string>
|
||||
<string name="birthday">Birthday</string>
|
||||
<string name="add_contact">Add contact</string>
|
||||
<!-- New conversation -->
|
||||
<string name="new_conversation">Nova conversa</string>
|
||||
<string name="add_contact_or_number">Adicionar contacto ou número…</string>
|
||||
@ -71,4 +85,4 @@
|
||||
Haven't found some strings? There's more at
|
||||
https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res
|
||||
-->
|
||||
</resources>
|
||||
</resources>
|
||||
|
@ -20,6 +20,20 @@
|
||||
<string name="unpin_conversation">Elimină fixarea</string>
|
||||
<string name="forward_message">Redirecţionare</string>
|
||||
<string name="compress_error">Nu se poate comprima imaginea la dimensiunea selectată</string>
|
||||
<!-- vCard-->
|
||||
<plurals name="view_contact">
|
||||
<item quantity="one">View contact</item>
|
||||
<item quantity="other">View contacts</item>
|
||||
</plurals>
|
||||
<plurals name="and_other_contacts">
|
||||
<item quantity="one">and %d other</item>
|
||||
<item quantity="other">and %d others</item>
|
||||
</plurals>
|
||||
<string name="contact_info">Contact info</string>
|
||||
<string name="notes">Notes</string>
|
||||
<string name="anniversary">Anniversary</string>
|
||||
<string name="birthday">Birthday</string>
|
||||
<string name="add_contact">Add contact</string>
|
||||
<!-- New conversation -->
|
||||
<string name="new_conversation">Conversaţie nouă</string>
|
||||
<string name="add_contact_or_number">Adaugă contact sau număr de telefon…</string>
|
||||
@ -73,4 +87,4 @@
|
||||
Haven't found some strings? There's more at
|
||||
https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res
|
||||
-->
|
||||
</resources>
|
||||
</resources>
|
||||
|
@ -20,6 +20,20 @@
|
||||
<string name="unpin_conversation">Открепить</string>
|
||||
<string name="forward_message">Переслать</string>
|
||||
<string name="compress_error">Невозможно сжать изображение до выбранного размера</string>
|
||||
<!-- vCard-->
|
||||
<plurals name="view_contact">
|
||||
<item quantity="one">View contact</item>
|
||||
<item quantity="other">View contacts</item>
|
||||
</plurals>
|
||||
<plurals name="and_other_contacts">
|
||||
<item quantity="one">and %d other</item>
|
||||
<item quantity="other">and %d others</item>
|
||||
</plurals>
|
||||
<string name="contact_info">Contact info</string>
|
||||
<string name="notes">Notes</string>
|
||||
<string name="anniversary">Anniversary</string>
|
||||
<string name="birthday">Birthday</string>
|
||||
<string name="add_contact">Add contact</string>
|
||||
<!-- New conversation -->
|
||||
<string name="new_conversation">Новая переписка</string>
|
||||
<string name="add_contact_or_number">Добавить контакт или номер…</string>
|
||||
@ -75,4 +89,4 @@
|
||||
Haven't found some strings? There's more at
|
||||
https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res
|
||||
-->
|
||||
</resources>
|
||||
</resources>
|
||||
|
@ -20,6 +20,20 @@
|
||||
<string name="unpin_conversation">Odopnúť</string>
|
||||
<string name="forward_message">Preposlať</string>
|
||||
<string name="compress_error">Nepodarilo sa zmenšiť obrázok na požadovanú veľkosť</string>
|
||||
<!-- vCard-->
|
||||
<plurals name="view_contact">
|
||||
<item quantity="one">View contact</item>
|
||||
<item quantity="other">View contacts</item>
|
||||
</plurals>
|
||||
<plurals name="and_other_contacts">
|
||||
<item quantity="one">and %d other</item>
|
||||
<item quantity="other">and %d others</item>
|
||||
</plurals>
|
||||
<string name="contact_info">Contact info</string>
|
||||
<string name="notes">Notes</string>
|
||||
<string name="anniversary">Anniversary</string>
|
||||
<string name="birthday">Birthday</string>
|
||||
<string name="add_contact">Add contact</string>
|
||||
<!-- New conversation -->
|
||||
<string name="new_conversation">Nová konverzácia</string>
|
||||
<string name="add_contact_or_number">Pridať kontakt alebo číslo…</string>
|
||||
@ -73,4 +87,4 @@
|
||||
Haven't found some strings? There's more at
|
||||
https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res
|
||||
-->
|
||||
</resources>
|
||||
</resources>
|
||||
|
@ -20,6 +20,20 @@
|
||||
<string name="unpin_conversation">Lossa</string>
|
||||
<string name="forward_message">Vidarebefordra</string>
|
||||
<string name="compress_error">Det gick inte att komprimera bilden till den valda storleken</string>
|
||||
<!-- vCard-->
|
||||
<plurals name="view_contact">
|
||||
<item quantity="one">View contact</item>
|
||||
<item quantity="other">View contacts</item>
|
||||
</plurals>
|
||||
<plurals name="and_other_contacts">
|
||||
<item quantity="one">and %d other</item>
|
||||
<item quantity="other">and %d others</item>
|
||||
</plurals>
|
||||
<string name="contact_info">Contact info</string>
|
||||
<string name="notes">Notes</string>
|
||||
<string name="anniversary">Anniversary</string>
|
||||
<string name="birthday">Birthday</string>
|
||||
<string name="add_contact">Add contact</string>
|
||||
<!-- New conversation -->
|
||||
<string name="new_conversation">Ny konversation</string>
|
||||
<string name="add_contact_or_number">Lägg till kontakt eller nummer…</string>
|
||||
@ -71,4 +85,4 @@
|
||||
Haven't found some strings? There's more at
|
||||
https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res
|
||||
-->
|
||||
</resources>
|
||||
</resources>
|
||||
|
@ -20,6 +20,20 @@
|
||||
<string name="unpin_conversation">பின் நீக்கு</string>
|
||||
<string name="forward_message">முன்னோக்கி</string>
|
||||
<string name="compress_error">Unable to compress image to selected size</string>
|
||||
<!-- vCard-->
|
||||
<plurals name="view_contact">
|
||||
<item quantity="one">View contact</item>
|
||||
<item quantity="other">View contacts</item>
|
||||
</plurals>
|
||||
<plurals name="and_other_contacts">
|
||||
<item quantity="one">and %d other</item>
|
||||
<item quantity="other">and %d others</item>
|
||||
</plurals>
|
||||
<string name="contact_info">Contact info</string>
|
||||
<string name="notes">Notes</string>
|
||||
<string name="anniversary">Anniversary</string>
|
||||
<string name="birthday">Birthday</string>
|
||||
<string name="add_contact">Add contact</string>
|
||||
<!-- New conversation -->
|
||||
<string name="new_conversation">புதிய உரையாடல்</string>
|
||||
<string name="add_contact_or_number">தொடர்பு அல்லது எண்ணைச் சேர்க்கவும்…</string>
|
||||
@ -71,4 +85,4 @@
|
||||
Haven't found some strings? There's more at
|
||||
https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res
|
||||
-->
|
||||
</resources>
|
||||
</resources>
|
||||
|
@ -20,6 +20,20 @@
|
||||
<string name="unpin_conversation">Unpin</string>
|
||||
<string name="forward_message">Forward</string>
|
||||
<string name="compress_error">Unable to compress image to selected size</string>
|
||||
<!-- vCard-->
|
||||
<plurals name="view_contact">
|
||||
<item quantity="one">View contact</item>
|
||||
<item quantity="other">View contacts</item>
|
||||
</plurals>
|
||||
<plurals name="and_other_contacts">
|
||||
<item quantity="one">and %d other</item>
|
||||
<item quantity="other">and %d others</item>
|
||||
</plurals>
|
||||
<string name="contact_info">Contact info</string>
|
||||
<string name="notes">Notes</string>
|
||||
<string name="anniversary">Anniversary</string>
|
||||
<string name="birthday">Birthday</string>
|
||||
<string name="add_contact">Add contact</string>
|
||||
<!-- New conversation -->
|
||||
<string name="new_conversation">New conversation</string>
|
||||
<string name="add_contact_or_number">Add Contact or Number…</string>
|
||||
@ -69,4 +83,4 @@
|
||||
Haven't found some strings? There's more at
|
||||
https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res
|
||||
-->
|
||||
</resources>
|
||||
</resources>
|
||||
|
@ -20,6 +20,20 @@
|
||||
<string name="unpin_conversation">Sabitlemeyi kaldır</string>
|
||||
<string name="forward_message">İlet</string>
|
||||
<string name="compress_error">Resim seçilen boyuta sıkıştırılamıyor</string>
|
||||
<!-- vCard-->
|
||||
<plurals name="view_contact">
|
||||
<item quantity="one">View contact</item>
|
||||
<item quantity="other">View contacts</item>
|
||||
</plurals>
|
||||
<plurals name="and_other_contacts">
|
||||
<item quantity="one">and %d other</item>
|
||||
<item quantity="other">and %d others</item>
|
||||
</plurals>
|
||||
<string name="contact_info">Contact info</string>
|
||||
<string name="notes">Notes</string>
|
||||
<string name="anniversary">Anniversary</string>
|
||||
<string name="birthday">Birthday</string>
|
||||
<string name="add_contact">Add contact</string>
|
||||
<!-- New conversation -->
|
||||
<string name="new_conversation">Yeni görüşme</string>
|
||||
<string name="add_contact_or_number">Kişi veya Numara Ekle…</string>
|
||||
@ -71,4 +85,4 @@
|
||||
Haven't found some strings? There's more at
|
||||
https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res
|
||||
-->
|
||||
</resources>
|
||||
</resources>
|
||||
|
@ -20,6 +20,20 @@
|
||||
<string name="unpin_conversation">Відкріпити</string>
|
||||
<string name="forward_message">Переслати</string>
|
||||
<string name="compress_error">Не вдається стиснути зображення до вибраного розміру</string>
|
||||
<!-- vCard-->
|
||||
<plurals name="view_contact">
|
||||
<item quantity="one">View contact</item>
|
||||
<item quantity="other">View contacts</item>
|
||||
</plurals>
|
||||
<plurals name="and_other_contacts">
|
||||
<item quantity="one">and %d other</item>
|
||||
<item quantity="other">and %d others</item>
|
||||
</plurals>
|
||||
<string name="contact_info">Contact info</string>
|
||||
<string name="notes">Notes</string>
|
||||
<string name="anniversary">Anniversary</string>
|
||||
<string name="birthday">Birthday</string>
|
||||
<string name="add_contact">Add contact</string>
|
||||
<!-- New conversation -->
|
||||
<string name="new_conversation">Нове листування</string>
|
||||
<string name="add_contact_or_number">Додати контакт аба номер…</string>
|
||||
@ -75,4 +89,4 @@
|
||||
Haven't found some strings? There's more at
|
||||
https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res
|
||||
-->
|
||||
</resources>
|
||||
</resources>
|
||||
|
@ -20,6 +20,20 @@
|
||||
<string name="unpin_conversation">取消固定</string>
|
||||
<string name="forward_message">转发</string>
|
||||
<string name="compress_error">无法将图像压缩到选定的大小</string>
|
||||
<!-- vCard-->
|
||||
<plurals name="view_contact">
|
||||
<item quantity="one">View contact</item>
|
||||
<item quantity="other">View contacts</item>
|
||||
</plurals>
|
||||
<plurals name="and_other_contacts">
|
||||
<item quantity="one">and %d other</item>
|
||||
<item quantity="other">and %d others</item>
|
||||
</plurals>
|
||||
<string name="contact_info">Contact info</string>
|
||||
<string name="notes">Notes</string>
|
||||
<string name="anniversary">Anniversary</string>
|
||||
<string name="birthday">Birthday</string>
|
||||
<string name="add_contact">Add contact</string>
|
||||
<!-- New conversation -->
|
||||
<string name="new_conversation">新的对话</string>
|
||||
<string name="add_contact_or_number">添加联系人或者号码…</string>
|
||||
@ -69,4 +83,4 @@
|
||||
Haven't found some strings? There's more at
|
||||
https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res
|
||||
-->
|
||||
</resources>
|
||||
</resources>
|
||||
|
@ -20,6 +20,20 @@
|
||||
<string name="unpin_conversation">取消釘選</string>
|
||||
<string name="forward_message">轉傳</string>
|
||||
<string name="compress_error">無法將圖片壓縮至指定大小</string>
|
||||
<!-- vCard-->
|
||||
<plurals name="view_contact">
|
||||
<item quantity="one">View contact</item>
|
||||
<item quantity="other">View contacts</item>
|
||||
</plurals>
|
||||
<plurals name="and_other_contacts">
|
||||
<item quantity="one">and %d other</item>
|
||||
<item quantity="other">and %d others</item>
|
||||
</plurals>
|
||||
<string name="contact_info">Contact info</string>
|
||||
<string name="notes">Notes</string>
|
||||
<string name="anniversary">Anniversary</string>
|
||||
<string name="birthday">Birthday</string>
|
||||
<string name="add_contact">Add contact</string>
|
||||
<!-- New conversation -->
|
||||
<string name="new_conversation">新對話</string>
|
||||
<string name="add_contact_or_number">新增聯絡對象或電話號碼……</string>
|
||||
@ -69,4 +83,4 @@
|
||||
Haven't found some strings? There's more at
|
||||
https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res
|
||||
-->
|
||||
</resources>
|
||||
</resources>
|
||||
|
@ -6,4 +6,5 @@
|
||||
<dimen name="attachment_preview_size">60dp</dimen>
|
||||
<dimen name="remove_attachment_size">24dp</dimen>
|
||||
<dimen name="pin_icon_size">15dp</dimen>
|
||||
<dimen name="vcard_property_start_margin">56dp</dimen>
|
||||
</resources>
|
||||
|
@ -20,6 +20,20 @@
|
||||
<string name="unpin_conversation">Unpin</string>
|
||||
<string name="forward_message">Forward</string>
|
||||
<string name="compress_error">Unable to compress image to selected size</string>
|
||||
<!-- vCard-->
|
||||
<plurals name="view_contact">
|
||||
<item quantity="one">View contact</item>
|
||||
<item quantity="other">View contacts</item>
|
||||
</plurals>
|
||||
<plurals name="and_other_contacts">
|
||||
<item quantity="one">and %d other</item>
|
||||
<item quantity="other">and %d others</item>
|
||||
</plurals>
|
||||
<string name="contact_info">Contact info</string>
|
||||
<string name="notes">Notes</string>
|
||||
<string name="anniversary">Anniversary</string>
|
||||
<string name="birthday">Birthday</string>
|
||||
<string name="add_contact">Add contact</string>
|
||||
<!-- New conversation -->
|
||||
<string name="new_conversation">New conversation</string>
|
||||
<string name="add_contact_or_number">Add Contact or Number…</string>
|
||||
|
Loading…
x
Reference in New Issue
Block a user