mirror of
https://github.com/SimpleMobileTools/Simple-SMS-Messenger.git
synced 2025-06-05 21:49:22 +02:00
Merge pull request #700 from esensar/feature/451-recycle-bin
Add support for recycle bin for messages
This commit is contained in:
@@ -51,6 +51,13 @@
|
||||
android:configChanges="orientation"
|
||||
android:exported="true" />
|
||||
|
||||
<activity
|
||||
android:name=".activities.RecycleBinConversationsActivity"
|
||||
android:configChanges="orientation"
|
||||
android:exported="true"
|
||||
android:label="@string/recycle_bin"
|
||||
android:parentActivityName=".activities.MainActivity" />
|
||||
|
||||
<activity
|
||||
android:name=".activities.ArchivedConversationsActivity"
|
||||
android:configChanges="orientation"
|
||||
|
@@ -53,6 +53,7 @@ class MainActivity : SimpleActivity() {
|
||||
updateMaterialActivityViews(main_coordinator, conversations_list, useTransparentNavigation = true, useTopSearchMenu = true)
|
||||
|
||||
if (savedInstanceState == null) {
|
||||
checkAndDeleteOldRecycleBinMessages()
|
||||
handleAppPasswordProtection {
|
||||
wasProtectionHandled = it
|
||||
if (it) {
|
||||
@@ -73,6 +74,7 @@ class MainActivity : SimpleActivity() {
|
||||
override fun onResume() {
|
||||
super.onResume()
|
||||
updateMenuColors()
|
||||
refreshMenuItems()
|
||||
|
||||
getOrCreateConversationsAdapter().apply {
|
||||
if (storedTextColor != getProperTextColor()) {
|
||||
@@ -164,6 +166,7 @@ class MainActivity : SimpleActivity() {
|
||||
main_menu.getToolbar().setOnMenuItemClickListener { menuItem ->
|
||||
when (menuItem.itemId) {
|
||||
R.id.more_apps_from_us -> launchMoreAppsFromUsIntent()
|
||||
R.id.show_recycle_bin -> launchRecycleBin()
|
||||
R.id.show_archived -> launchArchivedConversations()
|
||||
R.id.settings -> launchSettings()
|
||||
R.id.about -> launchAbout()
|
||||
@@ -176,6 +179,7 @@ class MainActivity : SimpleActivity() {
|
||||
private fun refreshMenuItems() {
|
||||
main_menu.getToolbar().menu.apply {
|
||||
findItem(R.id.more_apps_from_us).isVisible = !resources.getBoolean(R.bool.hide_google_relations)
|
||||
findItem(R.id.show_recycle_bin).isVisible = config.useRecycleBin
|
||||
}
|
||||
}
|
||||
|
||||
@@ -548,6 +552,11 @@ class MainActivity : SimpleActivity() {
|
||||
}
|
||||
}
|
||||
|
||||
private fun launchRecycleBin() {
|
||||
hideKeyboard()
|
||||
startActivity(Intent(applicationContext, RecycleBinConversationsActivity::class.java))
|
||||
}
|
||||
|
||||
private fun launchArchivedConversations() {
|
||||
hideKeyboard()
|
||||
startActivity(Intent(applicationContext, ArchivedConversationsActivity::class.java))
|
||||
|
@@ -0,0 +1,163 @@
|
||||
package com.simplemobiletools.smsmessenger.activities
|
||||
|
||||
import android.annotation.SuppressLint
|
||||
import android.content.Intent
|
||||
import android.os.Bundle
|
||||
import com.simplemobiletools.commons.dialogs.ConfirmationDialog
|
||||
import com.simplemobiletools.commons.extensions.*
|
||||
import com.simplemobiletools.commons.helpers.*
|
||||
import com.simplemobiletools.smsmessenger.R
|
||||
import com.simplemobiletools.smsmessenger.adapters.ConversationsAdapter
|
||||
import com.simplemobiletools.smsmessenger.adapters.RecycleBinConversationsAdapter
|
||||
import com.simplemobiletools.smsmessenger.extensions.*
|
||||
import com.simplemobiletools.smsmessenger.helpers.*
|
||||
import com.simplemobiletools.smsmessenger.models.Conversation
|
||||
import com.simplemobiletools.smsmessenger.models.Events
|
||||
import kotlinx.android.synthetic.main.activity_recycle_bin_conversations.*
|
||||
import org.greenrobot.eventbus.EventBus
|
||||
import org.greenrobot.eventbus.Subscribe
|
||||
import org.greenrobot.eventbus.ThreadMode
|
||||
|
||||
class RecycleBinConversationsActivity : SimpleActivity() {
|
||||
private var bus: EventBus? = null
|
||||
|
||||
@SuppressLint("InlinedApi")
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
isMaterialActivity = true
|
||||
super.onCreate(savedInstanceState)
|
||||
setContentView(R.layout.activity_recycle_bin_conversations)
|
||||
setupOptionsMenu()
|
||||
|
||||
updateMaterialActivityViews(recycle_bin_coordinator, conversations_list, useTransparentNavigation = true, useTopSearchMenu = false)
|
||||
setupMaterialScrollListener(conversations_list, recycle_bin_toolbar)
|
||||
|
||||
loadRecycleBinConversations()
|
||||
}
|
||||
|
||||
override fun onResume() {
|
||||
super.onResume()
|
||||
setupToolbar(recycle_bin_toolbar, NavigationIcon.Arrow)
|
||||
updateMenuColors()
|
||||
|
||||
loadRecycleBinConversations()
|
||||
}
|
||||
|
||||
override fun onDestroy() {
|
||||
super.onDestroy()
|
||||
bus?.unregister(this)
|
||||
}
|
||||
|
||||
private fun setupOptionsMenu() {
|
||||
recycle_bin_toolbar.inflateMenu(R.menu.recycle_bin_menu)
|
||||
|
||||
recycle_bin_toolbar.setOnMenuItemClickListener { menuItem ->
|
||||
when (menuItem.itemId) {
|
||||
R.id.empty_recycle_bin -> removeAll()
|
||||
else -> return@setOnMenuItemClickListener false
|
||||
}
|
||||
return@setOnMenuItemClickListener true
|
||||
}
|
||||
}
|
||||
|
||||
private fun updateOptionsMenu(conversations: ArrayList<Conversation>) {
|
||||
recycle_bin_toolbar.menu.apply {
|
||||
findItem(R.id.empty_recycle_bin).isVisible = conversations.isNotEmpty()
|
||||
}
|
||||
}
|
||||
|
||||
private fun updateMenuColors() {
|
||||
updateStatusbarColor(getProperBackgroundColor())
|
||||
}
|
||||
|
||||
private fun loadRecycleBinConversations() {
|
||||
ensureBackgroundThread {
|
||||
val conversations = try {
|
||||
conversationsDB.getAllWithMessagesInRecycleBin().toMutableList() as ArrayList<Conversation>
|
||||
} catch (e: Exception) {
|
||||
ArrayList()
|
||||
}
|
||||
|
||||
runOnUiThread {
|
||||
setupConversations(conversations)
|
||||
}
|
||||
}
|
||||
|
||||
bus = EventBus.getDefault()
|
||||
try {
|
||||
bus!!.register(this)
|
||||
} catch (e: Exception) {
|
||||
}
|
||||
}
|
||||
|
||||
private fun removeAll() {
|
||||
ConfirmationDialog(this, "", R.string.empty_recycle_bin_messages_confirmation, R.string.yes, R.string.no) {
|
||||
ensureBackgroundThread {
|
||||
emptyMessagesRecycleBin()
|
||||
loadRecycleBinConversations()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun getOrCreateConversationsAdapter(): RecycleBinConversationsAdapter {
|
||||
var currAdapter = conversations_list.adapter
|
||||
if (currAdapter == null) {
|
||||
hideKeyboard()
|
||||
currAdapter = RecycleBinConversationsAdapter(
|
||||
activity = this,
|
||||
recyclerView = conversations_list,
|
||||
onRefresh = { notifyDatasetChanged() },
|
||||
itemClick = { handleConversationClick(it) }
|
||||
)
|
||||
|
||||
conversations_list.adapter = currAdapter
|
||||
if (areSystemAnimationsEnabled) {
|
||||
conversations_list.scheduleLayoutAnimation()
|
||||
}
|
||||
}
|
||||
return currAdapter as RecycleBinConversationsAdapter
|
||||
}
|
||||
|
||||
private fun setupConversations(conversations: ArrayList<Conversation>) {
|
||||
val sortedConversations = conversations.sortedWith(
|
||||
compareByDescending<Conversation> { config.pinnedConversations.contains(it.threadId.toString()) }
|
||||
.thenByDescending { it.date }
|
||||
).toMutableList() as ArrayList<Conversation>
|
||||
|
||||
showOrHidePlaceholder(conversations.isEmpty())
|
||||
updateOptionsMenu(conversations)
|
||||
|
||||
try {
|
||||
getOrCreateConversationsAdapter().apply {
|
||||
updateConversations(sortedConversations)
|
||||
}
|
||||
} catch (ignored: Exception) {
|
||||
}
|
||||
}
|
||||
|
||||
private fun showOrHidePlaceholder(show: Boolean) {
|
||||
conversations_fastscroller.beGoneIf(show)
|
||||
no_conversations_placeholder.beVisibleIf(show)
|
||||
no_conversations_placeholder.text = getString(R.string.no_conversations_found)
|
||||
}
|
||||
|
||||
@SuppressLint("NotifyDataSetChanged")
|
||||
private fun notifyDatasetChanged() {
|
||||
getOrCreateConversationsAdapter().notifyDataSetChanged()
|
||||
}
|
||||
|
||||
private fun handleConversationClick(any: Any) {
|
||||
Intent(this, ThreadActivity::class.java).apply {
|
||||
val conversation = any as Conversation
|
||||
putExtra(THREAD_ID, conversation.threadId)
|
||||
putExtra(THREAD_TITLE, conversation.title)
|
||||
putExtra(WAS_PROTECTION_HANDLED, true)
|
||||
putExtra(IS_RECYCLE_BIN, true)
|
||||
startActivity(this)
|
||||
}
|
||||
}
|
||||
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
fun refreshMessages(event: Events.RefreshMessages) {
|
||||
loadRecycleBinConversations()
|
||||
}
|
||||
}
|
@@ -14,6 +14,8 @@ import com.simplemobiletools.commons.models.RadioItem
|
||||
import com.simplemobiletools.smsmessenger.R
|
||||
import com.simplemobiletools.smsmessenger.dialogs.ExportMessagesDialog
|
||||
import com.simplemobiletools.smsmessenger.extensions.config
|
||||
import com.simplemobiletools.smsmessenger.extensions.emptyMessagesRecycleBin
|
||||
import com.simplemobiletools.smsmessenger.extensions.messagesDB
|
||||
import com.simplemobiletools.smsmessenger.helpers.*
|
||||
import com.simplemobiletools.smsmessenger.models.*
|
||||
import kotlinx.android.synthetic.main.activity_settings.*
|
||||
@@ -24,6 +26,7 @@ import kotlin.system.exitProcess
|
||||
|
||||
class SettingsActivity : SimpleActivity() {
|
||||
private var blockedNumbersAtPause = -1
|
||||
private var recycleBinMessages = 0
|
||||
private val messagesFileType = "application/json"
|
||||
private val messageImportFileTypes = listOf("application/json", "application/xml", "text/xml")
|
||||
|
||||
@@ -57,6 +60,8 @@ class SettingsActivity : SimpleActivity() {
|
||||
setupGroupMessageAsMMS()
|
||||
setupLockScreenVisibility()
|
||||
setupMMSFileSizeLimit()
|
||||
setupUseRecycleBin()
|
||||
setupEmptyRecycleBin()
|
||||
setupAppPasswordProtection()
|
||||
setupMessagesExport()
|
||||
setupMessagesImport()
|
||||
@@ -71,6 +76,7 @@ class SettingsActivity : SimpleActivity() {
|
||||
settings_general_settings_label,
|
||||
settings_outgoing_messages_label,
|
||||
settings_notifications_label,
|
||||
settings_recycle_bin_label,
|
||||
settings_security_label,
|
||||
settings_migrating_label
|
||||
).forEach {
|
||||
@@ -321,6 +327,45 @@ class SettingsActivity : SimpleActivity() {
|
||||
}
|
||||
}
|
||||
|
||||
private fun setupUseRecycleBin() {
|
||||
updateRecycleBinButtons()
|
||||
settings_use_recycle_bin.isChecked = config.useRecycleBin
|
||||
settings_use_recycle_bin_holder.setOnClickListener {
|
||||
settings_use_recycle_bin.toggle()
|
||||
config.useRecycleBin = settings_use_recycle_bin.isChecked
|
||||
updateRecycleBinButtons()
|
||||
}
|
||||
}
|
||||
|
||||
private fun updateRecycleBinButtons() {
|
||||
settings_empty_recycle_bin_holder.beVisibleIf(config.useRecycleBin)
|
||||
}
|
||||
|
||||
private fun setupEmptyRecycleBin() {
|
||||
ensureBackgroundThread {
|
||||
recycleBinMessages = messagesDB.getArchivedCount()
|
||||
runOnUiThread {
|
||||
settings_empty_recycle_bin_size.text =
|
||||
resources.getQuantityString(R.plurals.delete_messages, recycleBinMessages, recycleBinMessages)
|
||||
}
|
||||
}
|
||||
|
||||
settings_empty_recycle_bin_holder.setOnClickListener {
|
||||
if (recycleBinMessages == 0) {
|
||||
toast(R.string.recycle_bin_empty)
|
||||
} else {
|
||||
ConfirmationDialog(this, "", R.string.empty_recycle_bin_messages_confirmation, R.string.yes, R.string.no) {
|
||||
ensureBackgroundThread {
|
||||
emptyMessagesRecycleBin()
|
||||
}
|
||||
recycleBinMessages = 0
|
||||
settings_empty_recycle_bin_size.text =
|
||||
resources.getQuantityString(R.plurals.delete_messages, recycleBinMessages, recycleBinMessages)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun setupAppPasswordProtection() {
|
||||
settings_app_password_protection.isChecked = config.isAppPasswordProtectionOn
|
||||
settings_app_password_protection_holder.setOnClickListener {
|
||||
|
@@ -105,6 +105,7 @@ class ThreadActivity : SimpleActivity() {
|
||||
private var allMessagesFetched = false
|
||||
private var oldestMessageDate = -1
|
||||
private var wasProtectionHandled = false
|
||||
private var isRecycleBin = false
|
||||
|
||||
private var isScheduledMessage: Boolean = false
|
||||
private var messageToResend: Long? = null
|
||||
@@ -141,6 +142,7 @@ class ThreadActivity : SimpleActivity() {
|
||||
intent.getStringExtra(THREAD_TITLE)?.let {
|
||||
thread_toolbar.title = it
|
||||
}
|
||||
isRecycleBin = intent.getBooleanExtra(IS_RECYCLE_BIN, false)
|
||||
wasProtectionHandled = intent.getBooleanExtra(WAS_PROTECTION_HANDLED, false)
|
||||
|
||||
bus = EventBus.getDefault()
|
||||
@@ -164,6 +166,7 @@ class ThreadActivity : SimpleActivity() {
|
||||
setupAttachmentPickerView()
|
||||
setupKeyboardListener()
|
||||
hideAttachmentPicker()
|
||||
maybeSetupRecycleBinView()
|
||||
}
|
||||
|
||||
override fun onResume() {
|
||||
@@ -248,20 +251,21 @@ class ThreadActivity : SimpleActivity() {
|
||||
val firstPhoneNumber = participants.firstOrNull()?.phoneNumbers?.firstOrNull()?.value
|
||||
thread_toolbar.menu.apply {
|
||||
findItem(R.id.delete).isVisible = threadItems.isNotEmpty()
|
||||
findItem(R.id.archive).isVisible = threadItems.isNotEmpty() && conversation?.isArchived == false
|
||||
findItem(R.id.unarchive).isVisible = threadItems.isNotEmpty() && conversation?.isArchived == true
|
||||
findItem(R.id.rename_conversation).isVisible = participants.size > 1 && conversation != null
|
||||
findItem(R.id.conversation_details).isVisible = conversation != null
|
||||
findItem(R.id.restore).isVisible = threadItems.isNotEmpty() && isRecycleBin
|
||||
findItem(R.id.archive).isVisible = threadItems.isNotEmpty() && conversation?.isArchived == false && !isRecycleBin
|
||||
findItem(R.id.unarchive).isVisible = threadItems.isNotEmpty() && conversation?.isArchived == true && !isRecycleBin
|
||||
findItem(R.id.rename_conversation).isVisible = participants.size > 1 && conversation != null && !isRecycleBin
|
||||
findItem(R.id.conversation_details).isVisible = conversation != null && !isRecycleBin
|
||||
findItem(R.id.block_number).title = addLockedLabelIfNeeded(R.string.block_number)
|
||||
findItem(R.id.block_number).isVisible = isNougatPlus()
|
||||
findItem(R.id.dial_number).isVisible = participants.size == 1 && !isSpecialNumber()
|
||||
findItem(R.id.manage_people).isVisible = !isSpecialNumber()
|
||||
findItem(R.id.mark_as_unread).isVisible = threadItems.isNotEmpty()
|
||||
findItem(R.id.block_number).isVisible = isNougatPlus() && !isRecycleBin
|
||||
findItem(R.id.dial_number).isVisible = participants.size == 1 && !isSpecialNumber() && !isRecycleBin
|
||||
findItem(R.id.manage_people).isVisible = !isSpecialNumber() && !isRecycleBin
|
||||
findItem(R.id.mark_as_unread).isVisible = threadItems.isNotEmpty() && !isRecycleBin
|
||||
|
||||
// allow saving number in cases when we dont have it stored yet and it is a casual readable number
|
||||
findItem(R.id.add_number_to_contact).isVisible = participants.size == 1 && participants.first().name == firstPhoneNumber && firstPhoneNumber.any {
|
||||
it.isDigit()
|
||||
}
|
||||
} && !isRecycleBin
|
||||
}
|
||||
}
|
||||
|
||||
@@ -274,6 +278,7 @@ class ThreadActivity : SimpleActivity() {
|
||||
when (menuItem.itemId) {
|
||||
R.id.block_number -> tryBlocking()
|
||||
R.id.delete -> askConfirmDelete()
|
||||
R.id.restore -> askConfirmRestoreAll()
|
||||
R.id.archive -> archiveConversation()
|
||||
R.id.unarchive -> unarchiveConversation()
|
||||
R.id.rename_conversation -> renameConversation()
|
||||
@@ -308,7 +313,15 @@ class ThreadActivity : SimpleActivity() {
|
||||
private fun setupCachedMessages(callback: () -> Unit) {
|
||||
ensureBackgroundThread {
|
||||
messages = try {
|
||||
messagesDB.getThreadMessages(threadId).toMutableList() as ArrayList<Message>
|
||||
if (isRecycleBin) {
|
||||
messagesDB.getThreadMessagesFromRecycleBin(threadId)
|
||||
} else {
|
||||
if (config.useRecycleBin) {
|
||||
messagesDB.getNonRecycledThreadMessages(threadId)
|
||||
} else {
|
||||
messagesDB.getThreadMessages(threadId)
|
||||
}
|
||||
}.toMutableList() as ArrayList<Message>
|
||||
} catch (e: Exception) {
|
||||
ArrayList()
|
||||
}
|
||||
@@ -343,7 +356,13 @@ class ThreadActivity : SimpleActivity() {
|
||||
privateContacts = MyContactsContentProvider.getSimpleContacts(this, privateCursor)
|
||||
|
||||
val cachedMessagesCode = messages.clone().hashCode()
|
||||
messages = getMessages(threadId, true)
|
||||
if (!isRecycleBin) {
|
||||
messages = getMessages(threadId, true)
|
||||
if (config.useRecycleBin) {
|
||||
val recycledMessages = messagesDB.getThreadMessagesFromRecycleBin(threadId).map { it.id }
|
||||
messages = messages.filter { !recycledMessages.contains(it.id) }.toMutableList() as ArrayList<Message>
|
||||
}
|
||||
}
|
||||
|
||||
val hasParticipantWithoutName = participants.any { contact ->
|
||||
contact.phoneNumbers.map { it.normalizedNumber }.contains(contact.name)
|
||||
@@ -391,8 +410,10 @@ class ThreadActivity : SimpleActivity() {
|
||||
participants.add(contact)
|
||||
}
|
||||
|
||||
messages.chunked(30).forEach { currentMessages ->
|
||||
messagesDB.insertMessages(*currentMessages.toTypedArray())
|
||||
if (!isRecycleBin) {
|
||||
messages.chunked(30).forEach { currentMessages ->
|
||||
messagesDB.insertMessages(*currentMessages.toTypedArray())
|
||||
}
|
||||
}
|
||||
|
||||
setupAttachmentSizes()
|
||||
@@ -411,7 +432,8 @@ class ThreadActivity : SimpleActivity() {
|
||||
activity = this,
|
||||
recyclerView = thread_messages_list,
|
||||
itemClick = { handleItemClick(it) },
|
||||
deleteMessages = { deleteMessages(it) }
|
||||
isRecycleBin = isRecycleBin,
|
||||
deleteMessages = { messages, toRecycleBin, fromRecycleBin -> deleteMessages(messages, toRecycleBin, fromRecycleBin) }
|
||||
)
|
||||
|
||||
thread_messages_list.adapter = currAdapter
|
||||
@@ -501,7 +523,7 @@ class ThreadActivity : SimpleActivity() {
|
||||
}
|
||||
}
|
||||
|
||||
private fun deleteMessages(messagesToRemove: List<Message>) {
|
||||
private fun deleteMessages(messagesToRemove: List<Message>, toRecycleBin: Boolean, fromRecycleBin: Boolean) {
|
||||
val deletePosition = threadItems.indexOf(messagesToRemove.first())
|
||||
messages.removeAll(messagesToRemove.toSet())
|
||||
threadItems = getThreadItems()
|
||||
@@ -523,7 +545,13 @@ class ThreadActivity : SimpleActivity() {
|
||||
deleteScheduledMessage(messageId)
|
||||
cancelScheduleSendPendingIntent(messageId)
|
||||
} else {
|
||||
deleteMessage(messageId, message.isMMS)
|
||||
if (toRecycleBin) {
|
||||
moveMessageToRecycleBin(messageId)
|
||||
} else if (fromRecycleBin) {
|
||||
restoreMessageFromRecycleBin(messageId)
|
||||
} else {
|
||||
deleteMessage(messageId, message.isMMS)
|
||||
}
|
||||
}
|
||||
}
|
||||
updateLastConversationMessage(threadId)
|
||||
@@ -793,7 +821,7 @@ class ThreadActivity : SimpleActivity() {
|
||||
}
|
||||
|
||||
private fun maybeDisableShortCodeReply() {
|
||||
if (isSpecialNumber()) {
|
||||
if (isSpecialNumber() && !isRecycleBin) {
|
||||
thread_send_message_holder.beGone()
|
||||
reply_disabled_info_holder.beVisible()
|
||||
val textColor = getProperTextColor()
|
||||
@@ -923,7 +951,23 @@ class ThreadActivity : SimpleActivity() {
|
||||
val confirmationMessage = R.string.delete_whole_conversation_confirmation
|
||||
ConfirmationDialog(this, getString(confirmationMessage)) {
|
||||
ensureBackgroundThread {
|
||||
deleteConversation(threadId)
|
||||
if (isRecycleBin) {
|
||||
emptyMessagesRecycleBinForConversation(threadId)
|
||||
} else {
|
||||
deleteConversation(threadId)
|
||||
}
|
||||
runOnUiThread {
|
||||
refreshMessages()
|
||||
finish()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun askConfirmRestoreAll() {
|
||||
ConfirmationDialog(this, getString(R.string.restore_confirmation)) {
|
||||
ensureBackgroundThread {
|
||||
restoreAllMessagesFromRecycleBinForConversation(threadId)
|
||||
runOnUiThread {
|
||||
refreshMessages()
|
||||
finish()
|
||||
@@ -1486,6 +1530,10 @@ class ThreadActivity : SimpleActivity() {
|
||||
|
||||
@Subscribe(threadMode = ThreadMode.ASYNC)
|
||||
fun refreshMessages(event: Events.RefreshMessages) {
|
||||
if (isRecycleBin) {
|
||||
return
|
||||
}
|
||||
|
||||
refreshedSinceSent = true
|
||||
allMessagesFetched = false
|
||||
oldestMessageDate = -1
|
||||
@@ -1508,6 +1556,10 @@ class ThreadActivity : SimpleActivity() {
|
||||
val scheduledMessages = messagesDB.getScheduledThreadMessages(threadId)
|
||||
.filterNot { it.isScheduled && it.millis() < System.currentTimeMillis() }
|
||||
addAll(scheduledMessages)
|
||||
if (config.useRecycleBin) {
|
||||
val recycledMessages = messagesDB.getThreadMessagesFromRecycleBin(threadId).toSet()
|
||||
removeAll(recycledMessages)
|
||||
}
|
||||
}
|
||||
|
||||
messages.filter { !it.isScheduled && !it.isReceivedMessage() && it.id > lastMaxId }.forEach { latestMessage ->
|
||||
@@ -1748,6 +1800,12 @@ class ThreadActivity : SimpleActivity() {
|
||||
animateAttachmentButton(rotation = -135f)
|
||||
}
|
||||
|
||||
private fun maybeSetupRecycleBinView() {
|
||||
if (isRecycleBin) {
|
||||
thread_send_message_holder.beGone()
|
||||
}
|
||||
}
|
||||
|
||||
private fun hideAttachmentPicker() {
|
||||
attachment_picker_divider.beGone()
|
||||
attachment_picker_holder.apply {
|
||||
|
@@ -0,0 +1,108 @@
|
||||
package com.simplemobiletools.smsmessenger.adapters
|
||||
|
||||
import android.view.Menu
|
||||
import com.simplemobiletools.commons.dialogs.ConfirmationDialog
|
||||
import com.simplemobiletools.commons.extensions.notificationManager
|
||||
import com.simplemobiletools.commons.helpers.ensureBackgroundThread
|
||||
import com.simplemobiletools.commons.views.MyRecyclerView
|
||||
import com.simplemobiletools.smsmessenger.R
|
||||
import com.simplemobiletools.smsmessenger.activities.SimpleActivity
|
||||
import com.simplemobiletools.smsmessenger.extensions.deleteConversation
|
||||
import com.simplemobiletools.smsmessenger.extensions.restoreAllMessagesFromRecycleBinForConversation
|
||||
import com.simplemobiletools.smsmessenger.helpers.refreshMessages
|
||||
import com.simplemobiletools.smsmessenger.models.Conversation
|
||||
|
||||
class RecycleBinConversationsAdapter(
|
||||
activity: SimpleActivity, recyclerView: MyRecyclerView, onRefresh: () -> Unit, itemClick: (Any) -> Unit
|
||||
) : BaseConversationsAdapter(activity, recyclerView, onRefresh, itemClick) {
|
||||
override fun getActionMenuId() = R.menu.cab_recycle_bin_conversations
|
||||
|
||||
override fun prepareActionMode(menu: Menu) {}
|
||||
|
||||
override fun actionItemPressed(id: Int) {
|
||||
if (selectedKeys.isEmpty()) {
|
||||
return
|
||||
}
|
||||
|
||||
when (id) {
|
||||
R.id.cab_delete -> askConfirmDelete()
|
||||
R.id.cab_restore -> askConfirmRestore()
|
||||
R.id.cab_select_all -> selectAll()
|
||||
}
|
||||
}
|
||||
|
||||
private fun askConfirmDelete() {
|
||||
val itemsCnt = selectedKeys.size
|
||||
val items = resources.getQuantityString(R.plurals.delete_conversations, itemsCnt, itemsCnt)
|
||||
|
||||
val baseString = R.string.deletion_confirmation
|
||||
val question = String.format(resources.getString(baseString), items)
|
||||
|
||||
ConfirmationDialog(activity, question) {
|
||||
ensureBackgroundThread {
|
||||
deleteConversations()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun deleteConversations() {
|
||||
if (selectedKeys.isEmpty()) {
|
||||
return
|
||||
}
|
||||
|
||||
val conversationsToRemove = currentList.filter { selectedKeys.contains(it.hashCode()) } as ArrayList<Conversation>
|
||||
conversationsToRemove.forEach {
|
||||
activity.deleteConversation(it.threadId)
|
||||
activity.notificationManager.cancel(it.threadId.hashCode())
|
||||
}
|
||||
|
||||
removeConversationsFromList(conversationsToRemove)
|
||||
}
|
||||
|
||||
private fun askConfirmRestore() {
|
||||
val itemsCnt = selectedKeys.size
|
||||
val items = resources.getQuantityString(R.plurals.delete_conversations, itemsCnt, itemsCnt)
|
||||
|
||||
val baseString = R.string.restore_confirmation
|
||||
val question = String.format(resources.getString(baseString), items)
|
||||
|
||||
ConfirmationDialog(activity, question) {
|
||||
ensureBackgroundThread {
|
||||
restoreConversations()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun restoreConversations() {
|
||||
if (selectedKeys.isEmpty()) {
|
||||
return
|
||||
}
|
||||
|
||||
val conversationsToRemove = currentList.filter { selectedKeys.contains(it.hashCode()) } as ArrayList<Conversation>
|
||||
conversationsToRemove.forEach {
|
||||
activity.restoreAllMessagesFromRecycleBinForConversation(it.threadId)
|
||||
}
|
||||
|
||||
removeConversationsFromList(conversationsToRemove)
|
||||
}
|
||||
|
||||
private fun removeConversationsFromList(removedConversations: List<Conversation>) {
|
||||
val newList = try {
|
||||
currentList.toMutableList().apply { removeAll(removedConversations) }
|
||||
} catch (ignored: Exception) {
|
||||
currentList.toMutableList()
|
||||
}
|
||||
|
||||
activity.runOnUiThread {
|
||||
if (newList.none { selectedKeys.contains(it.hashCode()) }) {
|
||||
refreshMessages()
|
||||
finishActMode()
|
||||
} else {
|
||||
submitList(newList)
|
||||
if (newList.isEmpty()) {
|
||||
refreshMessages()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@@ -33,6 +33,7 @@ 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.DeleteConfirmationDialog
|
||||
import com.simplemobiletools.smsmessenger.dialogs.MessageDetailsDialog
|
||||
import com.simplemobiletools.smsmessenger.dialogs.SelectTextDialog
|
||||
import com.simplemobiletools.smsmessenger.extensions.*
|
||||
@@ -58,7 +59,8 @@ class ThreadAdapter(
|
||||
activity: SimpleActivity,
|
||||
recyclerView: MyRecyclerView,
|
||||
itemClick: (Any) -> Unit,
|
||||
val deleteMessages: (messages: List<Message>) -> Unit
|
||||
val isRecycleBin: Boolean,
|
||||
val deleteMessages: (messages: List<Message>, toRecycleBin: Boolean, fromRecycleBin: Boolean) -> Unit
|
||||
) : MyRecyclerViewListAdapter<ThreadItem>(activity, recyclerView, ThreadItemDiffCallback(), itemClick) {
|
||||
private var fontSize = activity.getTextSize()
|
||||
|
||||
@@ -84,6 +86,7 @@ class ThreadAdapter(
|
||||
findItem(R.id.cab_forward_message).isVisible = isOneItemSelected
|
||||
findItem(R.id.cab_select_text).isVisible = isOneItemSelected && hasText
|
||||
findItem(R.id.cab_properties).isVisible = isOneItemSelected
|
||||
findItem(R.id.cab_restore).isVisible = isRecycleBin
|
||||
}
|
||||
}
|
||||
|
||||
@@ -99,6 +102,7 @@ class ThreadAdapter(
|
||||
R.id.cab_forward_message -> forwardMessage()
|
||||
R.id.cab_select_text -> selectText()
|
||||
R.id.cab_delete -> askConfirmDelete()
|
||||
R.id.cab_restore -> askConfirmRestore()
|
||||
R.id.cab_select_all -> selectAll()
|
||||
R.id.cab_properties -> showMessageDetails()
|
||||
}
|
||||
@@ -203,14 +207,43 @@ class ThreadAdapter(
|
||||
return
|
||||
}
|
||||
|
||||
val baseString = R.string.deletion_confirmation
|
||||
val baseString = if (activity.config.useRecycleBin && !isRecycleBin) {
|
||||
R.string.move_to_recycle_bin_confirmation
|
||||
} else {
|
||||
R.string.deletion_confirmation
|
||||
}
|
||||
val question = String.format(resources.getString(baseString), items)
|
||||
|
||||
DeleteConfirmationDialog(activity, question, activity.config.useRecycleBin && !isRecycleBin) { skipRecycleBin ->
|
||||
ensureBackgroundThread {
|
||||
val messagesToRemove = getSelectedItems()
|
||||
if (messagesToRemove.isNotEmpty()) {
|
||||
val toRecycleBin = !skipRecycleBin && activity.config.useRecycleBin && !isRecycleBin
|
||||
deleteMessages(messagesToRemove.filterIsInstance<Message>(), toRecycleBin, false)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun askConfirmRestore() {
|
||||
val itemsCnt = selectedKeys.size
|
||||
|
||||
// not sure how we can get UnknownFormatConversionException here, so show the error and hope that someone reports it
|
||||
val items = try {
|
||||
resources.getQuantityString(R.plurals.delete_messages, itemsCnt, itemsCnt)
|
||||
} catch (e: Exception) {
|
||||
activity.showErrorToast(e)
|
||||
return
|
||||
}
|
||||
|
||||
val baseString = R.string.restore_confirmation
|
||||
val question = String.format(resources.getString(baseString), items)
|
||||
|
||||
ConfirmationDialog(activity, question) {
|
||||
ensureBackgroundThread {
|
||||
val messagesToRemove = getSelectedItems()
|
||||
if (messagesToRemove.isNotEmpty()) {
|
||||
deleteMessages(messagesToRemove.filterIsInstance<Message>())
|
||||
val messagesToRestore = getSelectedItems()
|
||||
if (messagesToRestore.isNotEmpty()) {
|
||||
deleteMessages(messagesToRestore.filterIsInstance<Message>(), false, true)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -14,7 +14,7 @@ import com.simplemobiletools.smsmessenger.interfaces.MessageAttachmentsDao
|
||||
import com.simplemobiletools.smsmessenger.interfaces.MessagesDao
|
||||
import com.simplemobiletools.smsmessenger.models.*
|
||||
|
||||
@Database(entities = [Conversation::class, Attachment::class, MessageAttachment::class, Message::class], version = 8)
|
||||
@Database(entities = [Conversation::class, Attachment::class, MessageAttachment::class, Message::class, RecycleBinMessage::class], version = 8)
|
||||
@TypeConverters(Converters::class)
|
||||
abstract class MessagesDatabase : RoomDatabase() {
|
||||
|
||||
@@ -118,6 +118,8 @@ abstract class MessagesDatabase : RoomDatabase() {
|
||||
override fun migrate(database: SupportSQLiteDatabase) {
|
||||
database.apply {
|
||||
execSQL("ALTER TABLE conversations ADD COLUMN archived INTEGER NOT NULL DEFAULT 0")
|
||||
execSQL("CREATE TABLE IF NOT EXISTS `recycle_bin_messages` (`id` INTEGER NOT NULL PRIMARY KEY, `deleted_ts` INTEGER NOT NULL)")
|
||||
execSQL("CREATE UNIQUE INDEX IF NOT EXISTS `index_recycle_bin_messages_id` ON `recycle_bin_messages` (`id`)")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -0,0 +1,39 @@
|
||||
package com.simplemobiletools.smsmessenger.dialogs
|
||||
|
||||
import android.app.Activity
|
||||
import androidx.appcompat.app.AlertDialog
|
||||
import com.simplemobiletools.commons.extensions.beGoneIf
|
||||
import com.simplemobiletools.commons.extensions.getAlertDialogBuilder
|
||||
import com.simplemobiletools.commons.extensions.setupDialogStuff
|
||||
import com.simplemobiletools.smsmessenger.R
|
||||
import kotlinx.android.synthetic.main.dialog_delete_confirmation.view.delete_remember_title
|
||||
import kotlinx.android.synthetic.main.dialog_delete_confirmation.view.skip_the_recycle_bin_checkbox
|
||||
|
||||
class DeleteConfirmationDialog(
|
||||
private val activity: Activity,
|
||||
private val message: String,
|
||||
private val showSkipRecycleBinOption: Boolean,
|
||||
private val callback: (skipRecycleBin: Boolean) -> Unit
|
||||
) {
|
||||
|
||||
private var dialog: AlertDialog? = null
|
||||
val view = activity.layoutInflater.inflate(R.layout.dialog_delete_confirmation, null)!!
|
||||
|
||||
init {
|
||||
view.delete_remember_title.text = message
|
||||
view.skip_the_recycle_bin_checkbox.beGoneIf(!showSkipRecycleBinOption)
|
||||
activity.getAlertDialogBuilder()
|
||||
.setPositiveButton(R.string.yes) { _, _ -> dialogConfirmed() }
|
||||
.setNegativeButton(R.string.no, null)
|
||||
.apply {
|
||||
activity.setupDialogStuff(view, this) { alertDialog ->
|
||||
dialog = alertDialog
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun dialogConfirmed() {
|
||||
dialog?.dismiss()
|
||||
callback(view.skip_the_recycle_bin_checkbox.isChecked)
|
||||
}
|
||||
}
|
@@ -657,6 +657,55 @@ fun Context.deleteConversation(threadId: Long) {
|
||||
messagesDB.deleteThreadMessages(threadId)
|
||||
}
|
||||
|
||||
fun Context.checkAndDeleteOldRecycleBinMessages(callback: (() -> Unit)? = null) {
|
||||
if (config.useRecycleBin && config.lastRecycleBinCheck < System.currentTimeMillis() - DAY_SECONDS * 1000) {
|
||||
config.lastRecycleBinCheck = System.currentTimeMillis()
|
||||
ensureBackgroundThread {
|
||||
try {
|
||||
for (message in messagesDB.getOldRecycleBinMessages(System.currentTimeMillis() - MONTH_SECONDS * 1000L)) {
|
||||
deleteMessage(message.id, message.isMMS)
|
||||
}
|
||||
callback?.invoke()
|
||||
} catch (e: Exception) {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun Context.emptyMessagesRecycleBin() {
|
||||
val messages = messagesDB.getAllRecycleBinMessages()
|
||||
for (message in messages) {
|
||||
deleteMessage(message.id, message.isMMS)
|
||||
}
|
||||
}
|
||||
|
||||
fun Context.emptyMessagesRecycleBinForConversation(threadId: Long) {
|
||||
val messages = messagesDB.getThreadMessagesFromRecycleBin(threadId)
|
||||
for (message in messages) {
|
||||
deleteMessage(message.id, message.isMMS)
|
||||
}
|
||||
}
|
||||
|
||||
fun Context.restoreAllMessagesFromRecycleBinForConversation(threadId: Long) {
|
||||
messagesDB.deleteThreadMessagesFromRecycleBin(threadId)
|
||||
}
|
||||
|
||||
fun Context.moveMessageToRecycleBin(id: Long) {
|
||||
try {
|
||||
messagesDB.insertRecycleBinEntry(RecycleBinMessage(id, System.currentTimeMillis()))
|
||||
} catch (e: Exception) {
|
||||
showErrorToast(e)
|
||||
}
|
||||
}
|
||||
|
||||
fun Context.restoreMessageFromRecycleBin(id: Long) {
|
||||
try {
|
||||
messagesDB.deleteFromRecycleBin(id)
|
||||
} catch (e: Exception) {
|
||||
showErrorToast(e)
|
||||
}
|
||||
}
|
||||
|
||||
fun Context.updateConversationArchivedStatus(threadId: Long, archived: Boolean) {
|
||||
val uri = Threads.CONTENT_URI
|
||||
val values = ContentValues().apply {
|
||||
|
@@ -104,11 +104,11 @@ class Config(context: Context) : BaseConfig(context) {
|
||||
get() = prefs.getInt(SOFT_KEYBOARD_HEIGHT, context.getDefaultKeyboardHeight())
|
||||
set(keyboardHeight) = prefs.edit().putInt(SOFT_KEYBOARD_HEIGHT, keyboardHeight).apply()
|
||||
|
||||
var useArchive: Boolean
|
||||
get() = prefs.getBoolean(USE_ARCHIVE, false)
|
||||
set(useArchive) = prefs.edit().putBoolean(USE_ARCHIVE, useArchive).apply()
|
||||
var useRecycleBin: Boolean
|
||||
get() = prefs.getBoolean(USE_RECYCLE_BIN, false)
|
||||
set(useRecycleBin) = prefs.edit().putBoolean(USE_RECYCLE_BIN, useRecycleBin).apply()
|
||||
|
||||
var lastArchiveCheck: Long
|
||||
get() = prefs.getLong(LAST_ARCHIVE_CHECK, 0L)
|
||||
set(lastArchiveCheck) = prefs.edit().putLong(LAST_ARCHIVE_CHECK, lastArchiveCheck).apply()
|
||||
var lastRecycleBinCheck: Long
|
||||
get() = prefs.getLong(LAST_RECYCLE_BIN_CHECK, 0L)
|
||||
set(lastRecycleBinCheck) = prefs.edit().putLong(LAST_RECYCLE_BIN_CHECK, lastRecycleBinCheck).apply()
|
||||
}
|
||||
|
@@ -40,8 +40,9 @@ const val SCHEDULED_MESSAGE_ID = "scheduled_message_id"
|
||||
const val SOFT_KEYBOARD_HEIGHT = "soft_keyboard_height"
|
||||
const val IS_MMS = "is_mms"
|
||||
const val MESSAGE_ID = "message_id"
|
||||
const val USE_ARCHIVE = "use_archive"
|
||||
const val LAST_ARCHIVE_CHECK = "last_archive_check"
|
||||
const val USE_RECYCLE_BIN = "use_recycle_bin"
|
||||
const val LAST_RECYCLE_BIN_CHECK = "last_recycle_bin_check"
|
||||
const val IS_RECYCLE_BIN = "is_recycle_bin"
|
||||
|
||||
private const val PATH = "com.simplemobiletools.smsmessenger.action."
|
||||
const val MARK_AS_READ = PATH + "mark_as_read"
|
||||
|
@@ -2,17 +2,33 @@ package com.simplemobiletools.smsmessenger.interfaces
|
||||
|
||||
import androidx.room.*
|
||||
import com.simplemobiletools.smsmessenger.models.Conversation
|
||||
import com.simplemobiletools.smsmessenger.models.ConversationWithSnippetOverride
|
||||
|
||||
@Dao
|
||||
interface ConversationsDao {
|
||||
@Insert(onConflict = OnConflictStrategy.REPLACE)
|
||||
fun insertOrUpdate(conversation: Conversation): Long
|
||||
|
||||
@Query("SELECT * FROM conversations WHERE archived = 0")
|
||||
fun getNonArchived(): List<Conversation>
|
||||
@Query("SELECT (SELECT body FROM messages LEFT OUTER JOIN recycle_bin_messages ON messages.id = recycle_bin_messages.id WHERE recycle_bin_messages.id IS NULL AND messages.thread_id = conversations.thread_id ORDER BY messages.date DESC LIMIT 1) as new_snippet, * FROM conversations WHERE archived = 0")
|
||||
fun getNonArchivedWithLatestSnippet(): List<ConversationWithSnippetOverride>
|
||||
|
||||
@Query("SELECT * FROM conversations WHERE archived = 1")
|
||||
fun getAllArchived(): List<Conversation>
|
||||
fun getNonArchived(): List<Conversation> {
|
||||
return getNonArchivedWithLatestSnippet().map { it.toConversation() }
|
||||
}
|
||||
|
||||
@Query("SELECT (SELECT body FROM messages LEFT OUTER JOIN recycle_bin_messages ON messages.id = recycle_bin_messages.id WHERE recycle_bin_messages.id IS NULL AND messages.thread_id = conversations.thread_id ORDER BY messages.date DESC LIMIT 1) as new_snippet, * FROM conversations WHERE archived = 1")
|
||||
fun getAllArchivedWithLatestSnippet(): List<ConversationWithSnippetOverride>
|
||||
|
||||
fun getAllArchived(): List<Conversation> {
|
||||
return getAllArchivedWithLatestSnippet().map { it.toConversation() }
|
||||
}
|
||||
|
||||
@Query("SELECT (SELECT body FROM messages LEFT OUTER JOIN recycle_bin_messages ON messages.id = recycle_bin_messages.id WHERE recycle_bin_messages.id IS NOT NULL AND messages.thread_id = conversations.thread_id ORDER BY messages.date DESC LIMIT 1) as new_snippet, * FROM conversations WHERE (SELECT COUNT(*) FROM messages LEFT OUTER JOIN recycle_bin_messages ON messages.id = recycle_bin_messages.id WHERE recycle_bin_messages.id IS NOT NULL AND messages.thread_id = conversations.thread_id) > 0")
|
||||
fun getAllWithMessagesInRecycleBinWithLatestSnippet(): List<ConversationWithSnippetOverride>
|
||||
|
||||
fun getAllWithMessagesInRecycleBin(): List<Conversation> {
|
||||
return getAllWithMessagesInRecycleBinWithLatestSnippet().map { it.toConversation() }
|
||||
}
|
||||
|
||||
@Query("SELECT * FROM conversations WHERE thread_id = :threadId")
|
||||
fun getConversationWithThreadId(threadId: Long): Conversation?
|
||||
|
@@ -1,9 +1,7 @@
|
||||
package com.simplemobiletools.smsmessenger.interfaces
|
||||
|
||||
import androidx.room.Dao
|
||||
import androidx.room.Insert
|
||||
import androidx.room.OnConflictStrategy
|
||||
import androidx.room.Query
|
||||
import androidx.room.*
|
||||
import com.simplemobiletools.smsmessenger.models.RecycleBinMessage
|
||||
import com.simplemobiletools.smsmessenger.models.Message
|
||||
|
||||
@Dao
|
||||
@@ -11,6 +9,9 @@ interface MessagesDao {
|
||||
@Insert(onConflict = OnConflictStrategy.REPLACE)
|
||||
fun insertOrUpdate(message: Message)
|
||||
|
||||
@Insert(onConflict = OnConflictStrategy.REPLACE)
|
||||
fun insertRecycleBinEntry(recycleBinMessage: RecycleBinMessage)
|
||||
|
||||
@Insert(onConflict = OnConflictStrategy.IGNORE)
|
||||
fun insertOrIgnore(message: Message): Long
|
||||
|
||||
@@ -20,15 +21,30 @@ interface MessagesDao {
|
||||
@Query("SELECT * FROM messages")
|
||||
fun getAll(): List<Message>
|
||||
|
||||
@Query("SELECT messages.* FROM messages LEFT OUTER JOIN recycle_bin_messages ON messages.id = recycle_bin_messages.id WHERE recycle_bin_messages.id IS NOT NULL")
|
||||
fun getAllRecycleBinMessages(): List<Message>
|
||||
|
||||
@Query("SELECT messages.* FROM messages LEFT OUTER JOIN recycle_bin_messages ON messages.id = recycle_bin_messages.id WHERE recycle_bin_messages.id IS NOT NULL AND recycle_bin_messages.deleted_ts < :timestamp")
|
||||
fun getOldRecycleBinMessages(timestamp: Long): List<Message>
|
||||
|
||||
@Query("SELECT * FROM messages WHERE thread_id = :threadId")
|
||||
fun getThreadMessages(threadId: Long): List<Message>
|
||||
|
||||
@Query("SELECT * FROM messages WHERE thread_id = :threadId AND is_scheduled = 1")
|
||||
@Query("SELECT messages.* FROM messages LEFT OUTER JOIN recycle_bin_messages ON messages.id = recycle_bin_messages.id WHERE recycle_bin_messages.id IS NULL AND thread_id = :threadId")
|
||||
fun getNonRecycledThreadMessages(threadId: Long): List<Message>
|
||||
|
||||
@Query("SELECT messages.* FROM messages LEFT OUTER JOIN recycle_bin_messages ON messages.id = recycle_bin_messages.id WHERE recycle_bin_messages.id IS NOT NULL AND thread_id = :threadId")
|
||||
fun getThreadMessagesFromRecycleBin(threadId: Long): List<Message>
|
||||
|
||||
@Query("SELECT messages.* FROM messages LEFT OUTER JOIN recycle_bin_messages ON messages.id = recycle_bin_messages.id WHERE recycle_bin_messages.id IS NULL AND thread_id = :threadId AND is_scheduled = 1")
|
||||
fun getScheduledThreadMessages(threadId: Long): List<Message>
|
||||
|
||||
@Query("SELECT * FROM messages WHERE thread_id = :threadId AND id = :messageId AND is_scheduled = 1")
|
||||
fun getScheduledMessageWithId(threadId: Long, messageId: Long): Message
|
||||
|
||||
@Query("SELECT COUNT(*) FROM recycle_bin_messages")
|
||||
fun getArchivedCount(): Int
|
||||
|
||||
@Query("SELECT * FROM messages WHERE body LIKE :text")
|
||||
fun getMessagesWithText(text: String): List<Message>
|
||||
|
||||
@@ -44,11 +60,29 @@ interface MessagesDao {
|
||||
@Query("UPDATE messages SET status = :status WHERE id = :id")
|
||||
fun updateStatus(id: Long, status: Int): Int
|
||||
|
||||
@Transaction
|
||||
fun delete(id: Long) {
|
||||
deleteFromMessages(id)
|
||||
deleteFromRecycleBin(id)
|
||||
}
|
||||
|
||||
@Query("DELETE FROM messages WHERE id = :id")
|
||||
fun delete(id: Long)
|
||||
fun deleteFromMessages(id: Long)
|
||||
|
||||
@Query("DELETE FROM recycle_bin_messages WHERE id = :id")
|
||||
fun deleteFromRecycleBin(id: Long)
|
||||
|
||||
@Transaction
|
||||
fun deleteThreadMessages(threadId: Long) {
|
||||
deleteThreadMessagesFromRecycleBin(threadId)
|
||||
deleteAllThreadMessages(threadId)
|
||||
}
|
||||
|
||||
@Query("DELETE FROM messages WHERE thread_id = :threadId")
|
||||
fun deleteThreadMessages(threadId: Long)
|
||||
fun deleteAllThreadMessages(threadId: Long)
|
||||
|
||||
@Query("DELETE FROM recycle_bin_messages WHERE id IN (SELECT id FROM messages WHERE thread_id = :threadId)")
|
||||
fun deleteThreadMessagesFromRecycleBin(threadId: Long)
|
||||
|
||||
@Query("DELETE FROM messages")
|
||||
fun deleteAll()
|
||||
|
@@ -0,0 +1,16 @@
|
||||
package com.simplemobiletools.smsmessenger.models
|
||||
|
||||
import androidx.room.ColumnInfo
|
||||
import androidx.room.Embedded
|
||||
|
||||
data class ConversationWithSnippetOverride(
|
||||
@ColumnInfo(name = "new_snippet") val snippet: String?,
|
||||
@Embedded val conversation: Conversation
|
||||
) {
|
||||
fun toConversation() =
|
||||
if (snippet == null) {
|
||||
conversation
|
||||
} else {
|
||||
conversation.copy(snippet = snippet)
|
||||
}
|
||||
}
|
@@ -0,0 +1,15 @@
|
||||
package com.simplemobiletools.smsmessenger.models
|
||||
|
||||
import androidx.room.ColumnInfo
|
||||
import androidx.room.Entity
|
||||
import androidx.room.Index
|
||||
import androidx.room.PrimaryKey
|
||||
|
||||
@Entity(
|
||||
tableName = "recycle_bin_messages",
|
||||
indices = [(Index(value = ["id"], unique = true))]
|
||||
)
|
||||
data class RecycleBinMessage(
|
||||
@PrimaryKey val id: Long,
|
||||
@ColumnInfo(name = "deleted_ts") var deletedTS: Long
|
||||
)
|
@@ -0,0 +1,83 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:id="@+id/recycle_bin_coordinator"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<com.google.android.material.appbar.MaterialToolbar
|
||||
android:id="@+id/recycle_bin_toolbar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="?attr/actionBarSize"
|
||||
android:background="@color/color_primary"
|
||||
app:title="@string/recycle_bin"
|
||||
app:titleTextAppearance="@style/AppTheme.ActionBar.TitleTextStyle" />
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/recycle_bin_nested_scrollview"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="?attr/actionBarSize"
|
||||
android:fillViewport="true"
|
||||
android:scrollbars="none"
|
||||
app:layout_behavior="@string/appbar_scrolling_view_behavior">
|
||||
|
||||
<androidx.coordinatorlayout.widget.CoordinatorLayout
|
||||
android:id="@+id/recycle_bin_coordinator_wrapper"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/recycle_bin_holder"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<com.google.android.material.progressindicator.LinearProgressIndicator
|
||||
android:id="@+id/conversations_progress_bar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentTop="true"
|
||||
android:indeterminate="true"
|
||||
android:visibility="gone"
|
||||
app:hideAnimationBehavior="outward"
|
||||
app:showAnimationBehavior="inward"
|
||||
app:showDelay="250"
|
||||
tools:visibility="visible" />
|
||||
|
||||
<com.simplemobiletools.commons.views.MyTextView
|
||||
android:id="@+id/no_conversations_placeholder"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_centerHorizontal="true"
|
||||
android:layout_marginTop="@dimen/bigger_margin"
|
||||
android:alpha="0.8"
|
||||
android:gravity="center"
|
||||
android:paddingLeft="@dimen/activity_margin"
|
||||
android:paddingRight="@dimen/activity_margin"
|
||||
android:text="@string/no_conversations_found"
|
||||
android:textSize="@dimen/bigger_text_size"
|
||||
android:textStyle="italic"
|
||||
android:visibility="gone" />
|
||||
|
||||
<com.qtalk.recyclerviewfastscroller.RecyclerViewFastScroller
|
||||
android:id="@+id/conversations_fastscroller"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<com.simplemobiletools.commons.views.MyRecyclerView
|
||||
android:id="@+id/conversations_list"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:clipToPadding="false"
|
||||
android:layoutAnimation="@anim/layout_animation"
|
||||
android:overScrollMode="ifContentScrolls"
|
||||
android:scrollbars="none"
|
||||
app:layoutManager="com.simplemobiletools.commons.views.MyLinearLayoutManager" />
|
||||
|
||||
</com.qtalk.recyclerviewfastscroller.RecyclerViewFastScroller>
|
||||
</RelativeLayout>
|
||||
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
||||
</RelativeLayout>
|
||||
|
||||
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
@@ -361,6 +361,55 @@
|
||||
android:id="@+id/settings_outgoing_messages_divider"
|
||||
layout="@layout/divider" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/settings_recycle_bin_label"
|
||||
style="@style/SettingsSectionLabelStyle"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/recycle_bin" />
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/settings_use_recycle_bin_holder"
|
||||
style="@style/SettingsHolderCheckboxStyle"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<com.simplemobiletools.commons.views.MyAppCompatCheckbox
|
||||
android:id="@+id/settings_use_recycle_bin"
|
||||
style="@style/SettingsCheckboxStyle"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/move_items_into_recycle_bin" />
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/settings_empty_recycle_bin_holder"
|
||||
style="@style/SettingsHolderTextViewStyle"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<com.simplemobiletools.commons.views.MyTextView
|
||||
android:id="@+id/settings_empty_recycle_bin_label"
|
||||
style="@style/SettingsTextLabelStyle"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/empty_recycle_bin" />
|
||||
|
||||
<com.simplemobiletools.commons.views.MyTextView
|
||||
android:id="@+id/settings_empty_recycle_bin_size"
|
||||
style="@style/SettingsTextValueStyle"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@+id/settings_empty_recycle_bin_label"
|
||||
tools:text="0 B" />
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
<include
|
||||
android:id="@+id/settings_recycle_bin_divider"
|
||||
layout="@layout/divider" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/settings_security_label"
|
||||
style="@style/SettingsSectionLabelStyle"
|
||||
|
26
app/src/main/res/layout/dialog_delete_confirmation.xml
Normal file
26
app/src/main/res/layout/dialog_delete_confirmation.xml
Normal file
@@ -0,0 +1,26 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:id="@+id/delete_remember_holder"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingLeft="@dimen/big_margin"
|
||||
android:paddingTop="@dimen/big_margin"
|
||||
android:paddingRight="@dimen/big_margin">
|
||||
|
||||
<com.simplemobiletools.commons.views.MyTextView
|
||||
android:id="@+id/delete_remember_title"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingStart="@dimen/small_margin"
|
||||
android:paddingBottom="@dimen/activity_margin"
|
||||
android:text="@string/delete_whole_conversation_confirmation"
|
||||
android:textSize="@dimen/bigger_text_size" />
|
||||
|
||||
<com.simplemobiletools.commons.views.MyAppCompatCheckbox
|
||||
android:id="@+id/skip_the_recycle_bin_checkbox"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@+id/delete_remember_title"
|
||||
android:text="@string/skip_the_recycle_bin_messages" />
|
||||
|
||||
</RelativeLayout>
|
22
app/src/main/res/menu/cab_recycle_bin_conversations.xml
Normal file
22
app/src/main/res/menu/cab_recycle_bin_conversations.xml
Normal file
@@ -0,0 +1,22 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<menu xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
tools:ignore="AppCompatResource,AlwaysShowAction">
|
||||
<item
|
||||
android:id="@+id/cab_delete"
|
||||
android:icon="@drawable/ic_delete_vector"
|
||||
android:showAsAction="always"
|
||||
android:title="@string/delete"
|
||||
app:showAsAction="always" />
|
||||
<item
|
||||
android:id="@+id/cab_restore"
|
||||
android:showAsAction="never"
|
||||
android:title="@string/restore_all_messages"
|
||||
app:showAsAction="never" />
|
||||
<item
|
||||
android:id="@+id/cab_select_all"
|
||||
android:icon="@drawable/ic_select_all_vector"
|
||||
android:title="@string/select_all"
|
||||
app:showAsAction="ifRoom" />
|
||||
</menu>
|
@@ -31,6 +31,11 @@
|
||||
android:icon="@drawable/ic_info_vector"
|
||||
android:title="@string/properties"
|
||||
app:showAsAction="ifRoom" />
|
||||
<item
|
||||
android:id="@+id/cab_restore"
|
||||
android:showAsAction="never"
|
||||
android:title="@string/restore"
|
||||
app:showAsAction="never" />
|
||||
<item
|
||||
android:id="@+id/cab_forward_message"
|
||||
android:showAsAction="never"
|
||||
|
@@ -3,6 +3,11 @@
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
tools:ignore="AppCompatResource,AlwaysShowAction">
|
||||
<item
|
||||
android:id="@+id/show_recycle_bin"
|
||||
android:showAsAction="never"
|
||||
android:title="@string/show_the_recycle_bin"
|
||||
app:showAsAction="never" />
|
||||
<item
|
||||
android:id="@+id/show_archived"
|
||||
android:showAsAction="never"
|
||||
|
@@ -47,6 +47,11 @@
|
||||
android:showAsAction="never"
|
||||
android:title="@string/block_number"
|
||||
app:showAsAction="never" />
|
||||
<item
|
||||
android:id="@+id/restore"
|
||||
android:showAsAction="never"
|
||||
android:title="@string/restore_all_messages"
|
||||
app:showAsAction="never" />
|
||||
<item
|
||||
android:id="@+id/mark_as_unread"
|
||||
android:showAsAction="never"
|
||||
|
12
app/src/main/res/menu/recycle_bin_menu.xml
Normal file
12
app/src/main/res/menu/recycle_bin_menu.xml
Normal file
@@ -0,0 +1,12 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<menu xmlns:tools="http://schemas.android.com/tools"
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
tools:ignore="AppCompatResource">
|
||||
<item
|
||||
android:id="@+id/empty_recycle_bin"
|
||||
android:icon="@drawable/ic_delete_vector"
|
||||
android:showAsAction="ifRoom"
|
||||
android:title="@string/empty_recycle_bin"
|
||||
app:showAsAction="ifRoom" />
|
||||
</menu>
|
@@ -71,9 +71,16 @@
|
||||
<string name="no_archived_conversations">لم يتم العثور على محادثات مؤرشفة</string>
|
||||
<string name="archive_emptied_successfully">تم إفراغ الأرشيف بنجاح</string>
|
||||
<string name="empty_archive_confirmation">هل أنت متأكد من أنك تريد إفراغ الأرشيف؟ ستفقد جميع المحادثات المؤرشفة نهائيا.</string>
|
||||
<!-- Recycle bin -->
|
||||
<string name="restore">Restore</string>
|
||||
<string name="restore_all_messages">Restore all messages</string>
|
||||
<string name="empty_recycle_bin_messages_confirmation">Are you sure you want to empty the Recycle Bin? The messages will be permanently lost.</string>
|
||||
<string name="skip_the_recycle_bin_messages">Skip the Recycle Bin, delete messages directly</string>
|
||||
<!-- Confirmation dialog -->
|
||||
<string name="delete_whole_conversation_confirmation">هل أنت متأكد أنك تريد حذف كافة رسائل هذه المحادثة؟</string>
|
||||
<string name="archive_confirmation">هل أنت متأكد من أنك تريد أرشفة %s؟</string>
|
||||
<string name="restore_whole_conversation_confirmation">Are you sure you want to restore all messages of this conversation?</string>
|
||||
<string name="restore_confirmation">Are you sure you want to restore %s?</string>
|
||||
<!-- Are you sure you want to delete 5 conversations? -->
|
||||
<plurals name="delete_conversations">
|
||||
<item quantity="zero">محادثة %d</item>
|
||||
@@ -140,4 +147,4 @@
|
||||
Haven't found some strings? There's more at
|
||||
https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res
|
||||
-->
|
||||
</resources>
|
||||
</resources>
|
||||
|
@@ -67,9 +67,16 @@
|
||||
<string name="no_archived_conversations">No archived conversations have been found</string>
|
||||
<string name="archive_emptied_successfully">The archive has been emptied successfully</string>
|
||||
<string name="empty_archive_confirmation">Are you sure you want to empty the archive? All archived conversations will be permanently lost.</string>
|
||||
<!-- Recycle bin -->
|
||||
<string name="restore">Restore</string>
|
||||
<string name="restore_all_messages">Restore all messages</string>
|
||||
<string name="empty_recycle_bin_messages_confirmation">Are you sure you want to empty the Recycle Bin? The messages will be permanently lost.</string>
|
||||
<string name="skip_the_recycle_bin_messages">Skip the Recycle Bin, delete messages directly</string>
|
||||
<!-- Confirmation dialog -->
|
||||
<string name="delete_whole_conversation_confirmation">Are you sure you want to delete all messages of this conversation\?</string>
|
||||
<string name="archive_confirmation">Are you sure you want to archive %s?</string>
|
||||
<string name="restore_whole_conversation_confirmation">Are you sure you want to restore all messages of this conversation?</string>
|
||||
<string name="restore_confirmation">Are you sure you want to restore %s?</string>
|
||||
<!-- Are you sure you want to delete 5 conversations? -->
|
||||
<plurals name="delete_conversations">
|
||||
<item quantity="one">%d conversation</item>
|
||||
|
@@ -69,9 +69,16 @@
|
||||
<string name="no_archived_conversations">No archived conversations have been found</string>
|
||||
<string name="archive_emptied_successfully">The archive has been emptied successfully</string>
|
||||
<string name="empty_archive_confirmation">Are you sure you want to empty the archive? All archived conversations will be permanently lost.</string>
|
||||
<!-- Recycle bin -->
|
||||
<string name="restore">Restore</string>
|
||||
<string name="restore_all_messages">Restore all messages</string>
|
||||
<string name="empty_recycle_bin_messages_confirmation">Are you sure you want to empty the Recycle Bin? The messages will be permanently lost.</string>
|
||||
<string name="skip_the_recycle_bin_messages">Skip the Recycle Bin, delete messages directly</string>
|
||||
<!-- Confirmation dialog -->
|
||||
<string name="delete_whole_conversation_confirmation">Выдаліць усе паведамленні ў гэтай размове\?</string>
|
||||
<string name="archive_confirmation">Are you sure you want to archive %s?</string>
|
||||
<string name="restore_whole_conversation_confirmation">Are you sure you want to restore all messages of this conversation?</string>
|
||||
<string name="restore_confirmation">Are you sure you want to restore %s?</string>
|
||||
<!-- Are you sure you want to delete 5 conversations? -->
|
||||
<plurals name="delete_conversations">
|
||||
<item quantity="one">%d размову</item>
|
||||
|
@@ -67,9 +67,16 @@
|
||||
<string name="no_archived_conversations">No archived conversations have been found</string>
|
||||
<string name="archive_emptied_successfully">The archive has been emptied successfully</string>
|
||||
<string name="empty_archive_confirmation">Are you sure you want to empty the archive? All archived conversations will be permanently lost.</string>
|
||||
<!-- Recycle bin -->
|
||||
<string name="restore">Restore</string>
|
||||
<string name="restore_all_messages">Restore all messages</string>
|
||||
<string name="empty_recycle_bin_messages_confirmation">Are you sure you want to empty the Recycle Bin? The messages will be permanently lost.</string>
|
||||
<string name="skip_the_recycle_bin_messages">Skip the Recycle Bin, delete messages directly</string>
|
||||
<!-- Confirmation dialog -->
|
||||
<string name="delete_whole_conversation_confirmation">Сигурни ли сте, че искате да изтриете всички съобщения от този разговор\?</string>
|
||||
<string name="archive_confirmation">Are you sure you want to archive %s?</string>
|
||||
<string name="restore_whole_conversation_confirmation">Are you sure you want to restore all messages of this conversation?</string>
|
||||
<string name="restore_confirmation">Are you sure you want to restore %s?</string>
|
||||
<!-- Are you sure you want to delete 5 conversations? -->
|
||||
<plurals name="delete_conversations">
|
||||
<item quantity="one">%d разговор</item>
|
||||
@@ -128,4 +135,4 @@
|
||||
Haven't found some strings? There's more at
|
||||
https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res
|
||||
-->
|
||||
</resources>
|
||||
</resources>
|
||||
|
@@ -67,9 +67,16 @@
|
||||
<string name="no_archived_conversations">No s\'ha trobat cap conversa arxivada</string>
|
||||
<string name="archive_emptied_successfully">L\'arxiu s\'ha buidat correctament</string>
|
||||
<string name="empty_archive_confirmation">Segur que voleu buidar l\'arxiu\? Totes les converses arxivades es perdran permanentment.</string>
|
||||
<!-- Recycle bin -->
|
||||
<string name="restore">Restore</string>
|
||||
<string name="restore_all_messages">Restore all messages</string>
|
||||
<string name="empty_recycle_bin_messages_confirmation">Are you sure you want to empty the Recycle Bin? The messages will be permanently lost.</string>
|
||||
<string name="skip_the_recycle_bin_messages">Skip the Recycle Bin, delete messages directly</string>
|
||||
<!-- Confirmation dialog -->
|
||||
<string name="delete_whole_conversation_confirmation">Confirmeu que voleu suprimir tots els missatges d\'aquesta conversa\?</string>
|
||||
<string name="archive_confirmation">Segur que voleu arxivar %s\?</string>
|
||||
<string name="restore_whole_conversation_confirmation">Are you sure you want to restore all messages of this conversation?</string>
|
||||
<string name="restore_confirmation">Are you sure you want to restore %s?</string>
|
||||
<!-- Are you sure you want to delete 5 conversations? -->
|
||||
<plurals name="delete_conversations">
|
||||
<item quantity="one">%d conversa</item>
|
||||
@@ -128,4 +135,4 @@
|
||||
Haven't found some strings? There's more at
|
||||
https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res
|
||||
-->
|
||||
</resources>
|
||||
</resources>
|
||||
|
@@ -67,9 +67,16 @@
|
||||
<string name="no_archived_conversations">No archived conversations have been found</string>
|
||||
<string name="archive_emptied_successfully">The archive has been emptied successfully</string>
|
||||
<string name="empty_archive_confirmation">Are you sure you want to empty the archive? All archived conversations will be permanently lost.</string>
|
||||
<!-- Recycle bin -->
|
||||
<string name="restore">Restore</string>
|
||||
<string name="restore_all_messages">Restore all messages</string>
|
||||
<string name="empty_recycle_bin_messages_confirmation">Are you sure you want to empty the Recycle Bin? The messages will be permanently lost.</string>
|
||||
<string name="skip_the_recycle_bin_messages">Skip the Recycle Bin, delete messages directly</string>
|
||||
<!-- Confirmation dialog -->
|
||||
<string name="delete_whole_conversation_confirmation">Are you sure you want to delete all messages of this conversation\?</string>
|
||||
<string name="archive_confirmation">Are you sure you want to archive %s?</string>
|
||||
<string name="restore_whole_conversation_confirmation">Are you sure you want to restore all messages of this conversation?</string>
|
||||
<string name="restore_confirmation">Are you sure you want to restore %s?</string>
|
||||
<!-- Are you sure you want to delete 5 conversations? -->
|
||||
<plurals name="delete_conversations">
|
||||
<item quantity="one">%d conversation</item>
|
||||
|
@@ -68,9 +68,16 @@
|
||||
<string name="no_archived_conversations">No archived conversations have been found</string>
|
||||
<string name="archive_emptied_successfully">The archive has been emptied successfully</string>
|
||||
<string name="empty_archive_confirmation">Are you sure you want to empty the archive? All archived conversations will be permanently lost.</string>
|
||||
<!-- Recycle bin -->
|
||||
<string name="restore">Restore</string>
|
||||
<string name="restore_all_messages">Restore all messages</string>
|
||||
<string name="empty_recycle_bin_messages_confirmation">Are you sure you want to empty the Recycle Bin? The messages will be permanently lost.</string>
|
||||
<string name="skip_the_recycle_bin_messages">Skip the Recycle Bin, delete messages directly</string>
|
||||
<!-- Confirmation dialog -->
|
||||
<string name="delete_whole_conversation_confirmation">Opravdu chcete smazat všechny zprávy v této konverzaci\?</string>
|
||||
<string name="archive_confirmation">Are you sure you want to archive %s?</string>
|
||||
<string name="restore_whole_conversation_confirmation">Are you sure you want to restore all messages of this conversation?</string>
|
||||
<string name="restore_confirmation">Are you sure you want to restore %s?</string>
|
||||
<!-- Are you sure you want to delete 5 conversations? -->
|
||||
<plurals name="delete_conversations">
|
||||
<item quantity="one">%d konverzace</item>
|
||||
|
@@ -67,9 +67,16 @@
|
||||
<string name="no_archived_conversations">No archived conversations have been found</string>
|
||||
<string name="archive_emptied_successfully">The archive has been emptied successfully</string>
|
||||
<string name="empty_archive_confirmation">Are you sure you want to empty the archive? All archived conversations will be permanently lost.</string>
|
||||
<!-- Recycle bin -->
|
||||
<string name="restore">Restore</string>
|
||||
<string name="restore_all_messages">Restore all messages</string>
|
||||
<string name="empty_recycle_bin_messages_confirmation">Are you sure you want to empty the Recycle Bin? The messages will be permanently lost.</string>
|
||||
<string name="skip_the_recycle_bin_messages">Skip the Recycle Bin, delete messages directly</string>
|
||||
<!-- Confirmation dialog -->
|
||||
<string name="delete_whole_conversation_confirmation">Er du sikker på, at du vil slette alle beskeder i denne samtale\?</string>
|
||||
<string name="archive_confirmation">Are you sure you want to archive %s?</string>
|
||||
<string name="restore_whole_conversation_confirmation">Are you sure you want to restore all messages of this conversation?</string>
|
||||
<string name="restore_confirmation">Are you sure you want to restore %s?</string>
|
||||
<!-- Are you sure you want to delete 5 conversations? -->
|
||||
<plurals name="delete_conversations">
|
||||
<item quantity="one">%d samtale</item>
|
||||
|
@@ -67,9 +67,16 @@
|
||||
<string name="no_archived_conversations">Es wurden keine archivierten Unterhaltungen gefunden</string>
|
||||
<string name="archive_emptied_successfully">Das Archiv wurde erfolgreich geleert</string>
|
||||
<string name="empty_archive_confirmation">Das Archiv wirklich leeren\? Alle archivierten Unterhaltungen sind dann unwiederbringlich gelöscht.</string>
|
||||
<!-- Recycle bin -->
|
||||
<string name="restore">Restore</string>
|
||||
<string name="restore_all_messages">Restore all messages</string>
|
||||
<string name="empty_recycle_bin_messages_confirmation">Are you sure you want to empty the Recycle Bin? The messages will be permanently lost.</string>
|
||||
<string name="skip_the_recycle_bin_messages">Skip the Recycle Bin, delete messages directly</string>
|
||||
<!-- Confirmation dialog -->
|
||||
<string name="delete_whole_conversation_confirmation">Sollen wirklich alle Nachrichten dieser Unterhaltung gelöscht werden\?</string>
|
||||
<string name="archive_confirmation">%s wirklich archivieren\?</string>
|
||||
<string name="restore_whole_conversation_confirmation">Are you sure you want to restore all messages of this conversation?</string>
|
||||
<string name="restore_confirmation">Are you sure you want to restore %s?</string>
|
||||
<!-- Are you sure you want to delete 5 conversations? -->
|
||||
<plurals name="delete_conversations">
|
||||
<item quantity="one">%d Unterhaltung</item>
|
||||
@@ -128,4 +135,4 @@
|
||||
Haven't found some strings? There's more at
|
||||
https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res
|
||||
-->
|
||||
</resources>
|
||||
</resources>
|
||||
|
@@ -67,9 +67,16 @@
|
||||
<string name="no_archived_conversations">Δεν βρέθηκαν αρχειοθετημένες συνομιλίες</string>
|
||||
<string name="archive_emptied_successfully">Το αρχείο άδειασε με επιτυχία</string>
|
||||
<string name="empty_archive_confirmation">Είστε σίγουροι ότι θέλετε να αδειάσετε το αρχείο; Όλες οι αρχειοθετημένες συνομιλίες θα χαθούν οριστικά.</string>
|
||||
<!-- Recycle bin -->
|
||||
<string name="restore">Restore</string>
|
||||
<string name="restore_all_messages">Restore all messages</string>
|
||||
<string name="empty_recycle_bin_messages_confirmation">Are you sure you want to empty the Recycle Bin? The messages will be permanently lost.</string>
|
||||
<string name="skip_the_recycle_bin_messages">Skip the Recycle Bin, delete messages directly</string>
|
||||
<!-- Confirmation dialog -->
|
||||
<string name="delete_whole_conversation_confirmation">Είστε βέβαιοι ότι θέλετε να διαγράψετε όλα τα μηνύματα αυτής της συνομιλίας;</string>
|
||||
<string name="archive_confirmation">Σίγουρα θέλετε να αρχειοθετήσετε %s;</string>
|
||||
<string name="restore_whole_conversation_confirmation">Are you sure you want to restore all messages of this conversation?</string>
|
||||
<string name="restore_confirmation">Are you sure you want to restore %s?</string>
|
||||
<!-- Are you sure you want to delete 5 conversations? -->
|
||||
<plurals name="delete_conversations">
|
||||
<item quantity="one">%d συνομιλία</item>
|
||||
|
@@ -67,9 +67,16 @@
|
||||
<string name="no_archived_conversations">No archived conversations have been found</string>
|
||||
<string name="archive_emptied_successfully">The archive has been emptied successfully</string>
|
||||
<string name="empty_archive_confirmation">Are you sure you want to empty the archive? All archived conversations will be permanently lost.</string>
|
||||
<!-- Recycle bin -->
|
||||
<string name="restore">Restore</string>
|
||||
<string name="restore_all_messages">Restore all messages</string>
|
||||
<string name="empty_recycle_bin_messages_confirmation">Are you sure you want to empty the Recycle Bin? The messages will be permanently lost.</string>
|
||||
<string name="skip_the_recycle_bin_messages">Skip the Recycle Bin, delete messages directly</string>
|
||||
<!-- Confirmation dialog -->
|
||||
<string name="delete_whole_conversation_confirmation">Are you sure you want to delete all messages of this conversation\?</string>
|
||||
<string name="archive_confirmation">Are you sure you want to archive %s?</string>
|
||||
<string name="restore_whole_conversation_confirmation">Are you sure you want to restore all messages of this conversation?</string>
|
||||
<string name="restore_confirmation">Are you sure you want to restore %s?</string>
|
||||
<!-- Are you sure you want to delete 5 conversations? -->
|
||||
<plurals name="delete_conversations">
|
||||
<item quantity="one">%d konversacio</item>
|
||||
|
@@ -68,9 +68,16 @@
|
||||
<string name="no_archived_conversations">No archived conversations have been found</string>
|
||||
<string name="archive_emptied_successfully">The archive has been emptied successfully</string>
|
||||
<string name="empty_archive_confirmation">Are you sure you want to empty the archive? All archived conversations will be permanently lost.</string>
|
||||
<!-- Recycle bin -->
|
||||
<string name="restore">Restore</string>
|
||||
<string name="restore_all_messages">Restore all messages</string>
|
||||
<string name="empty_recycle_bin_messages_confirmation">Are you sure you want to empty the Recycle Bin? The messages will be permanently lost.</string>
|
||||
<string name="skip_the_recycle_bin_messages">Skip the Recycle Bin, delete messages directly</string>
|
||||
<!-- Confirmation dialog -->
|
||||
<string name="delete_whole_conversation_confirmation">¿Estás seguro que quieres eliminar todos los mensajes en esta conversación\?</string>
|
||||
<string name="archive_confirmation">Are you sure you want to archive %s?</string>
|
||||
<string name="restore_whole_conversation_confirmation">Are you sure you want to restore all messages of this conversation?</string>
|
||||
<string name="restore_confirmation">Are you sure you want to restore %s?</string>
|
||||
<!-- Are you sure you want to delete 5 conversations? -->
|
||||
<plurals name="delete_conversations">
|
||||
<item quantity="one">%d conversación</item>
|
||||
|
@@ -67,9 +67,16 @@
|
||||
<string name="no_archived_conversations">Arhiveeritud vestlusi ei leidu</string>
|
||||
<string name="archive_emptied_successfully">Arhiiv on edukalt tühjendatud</string>
|
||||
<string name="empty_archive_confirmation">Kas kindlasti soovid arhiivi tühjendada\? Kõik arhiveeritud vestlused lähevad jäädavalt kaotsi.</string>
|
||||
<!-- Recycle bin -->
|
||||
<string name="restore">Restore</string>
|
||||
<string name="restore_all_messages">Restore all messages</string>
|
||||
<string name="empty_recycle_bin_messages_confirmation">Are you sure you want to empty the Recycle Bin? The messages will be permanently lost.</string>
|
||||
<string name="skip_the_recycle_bin_messages">Skip the Recycle Bin, delete messages directly</string>
|
||||
<!-- Confirmation dialog -->
|
||||
<string name="delete_whole_conversation_confirmation">Kas oled kindel, et soovid kustutada kõik selle vestluse sõnumid\?</string>
|
||||
<string name="archive_confirmation">Kas sa oled kindel, et soovid lisada „%s“ arhiivi\?</string>
|
||||
<string name="restore_whole_conversation_confirmation">Are you sure you want to restore all messages of this conversation?</string>
|
||||
<string name="restore_confirmation">Are you sure you want to restore %s?</string>
|
||||
<!-- Are you sure you want to delete 5 conversations? -->
|
||||
<plurals name="delete_conversations">
|
||||
<item quantity="one">%d vestlus</item>
|
||||
@@ -128,4 +135,4 @@
|
||||
Haven't found some strings? There's more at
|
||||
https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res
|
||||
-->
|
||||
</resources>
|
||||
</resources>
|
||||
|
@@ -67,9 +67,16 @@
|
||||
<string name="no_archived_conversations">No archived conversations have been found</string>
|
||||
<string name="archive_emptied_successfully">The archive has been emptied successfully</string>
|
||||
<string name="empty_archive_confirmation">Are you sure you want to empty the archive? All archived conversations will be permanently lost.</string>
|
||||
<!-- Recycle bin -->
|
||||
<string name="restore">Restore</string>
|
||||
<string name="restore_all_messages">Restore all messages</string>
|
||||
<string name="empty_recycle_bin_messages_confirmation">Are you sure you want to empty the Recycle Bin? The messages will be permanently lost.</string>
|
||||
<string name="skip_the_recycle_bin_messages">Skip the Recycle Bin, delete messages directly</string>
|
||||
<!-- Confirmation dialog -->
|
||||
<string name="delete_whole_conversation_confirmation">Haluatko varmasti poistaa kaikki tämän keskustelun viestit\?</string>
|
||||
<string name="archive_confirmation">Are you sure you want to archive %s?</string>
|
||||
<string name="restore_whole_conversation_confirmation">Are you sure you want to restore all messages of this conversation?</string>
|
||||
<string name="restore_confirmation">Are you sure you want to restore %s?</string>
|
||||
<!-- Are you sure you want to delete 5 conversations? -->
|
||||
<plurals name="delete_conversations">
|
||||
<item quantity="one">%d keskustelu</item>
|
||||
|
@@ -68,9 +68,16 @@
|
||||
<string name="no_archived_conversations">No archived conversations have been found</string>
|
||||
<string name="archive_emptied_successfully">The archive has been emptied successfully</string>
|
||||
<string name="empty_archive_confirmation">Are you sure you want to empty the archive? All archived conversations will be permanently lost.</string>
|
||||
<!-- Recycle bin -->
|
||||
<string name="restore">Restore</string>
|
||||
<string name="restore_all_messages">Restore all messages</string>
|
||||
<string name="empty_recycle_bin_messages_confirmation">Are you sure you want to empty the Recycle Bin? The messages will be permanently lost.</string>
|
||||
<string name="skip_the_recycle_bin_messages">Skip the Recycle Bin, delete messages directly</string>
|
||||
<!-- Confirmation dialog -->
|
||||
<string name="delete_whole_conversation_confirmation">Voulez-vous vraiment supprimer tous les messages de cette conversation \?</string>
|
||||
<string name="archive_confirmation">Are you sure you want to archive %s?</string>
|
||||
<string name="restore_whole_conversation_confirmation">Are you sure you want to restore all messages of this conversation?</string>
|
||||
<string name="restore_confirmation">Are you sure you want to restore %s?</string>
|
||||
<!-- Are you sure you want to delete 5 conversations? -->
|
||||
<plurals name="delete_conversations">
|
||||
<item quantity="one">%d conversation</item>
|
||||
|
@@ -67,9 +67,16 @@
|
||||
<string name="no_archived_conversations">No archived conversations have been found</string>
|
||||
<string name="archive_emptied_successfully">The archive has been emptied successfully</string>
|
||||
<string name="empty_archive_confirmation">Are you sure you want to empty the archive? All archived conversations will be permanently lost.</string>
|
||||
<!-- Recycle bin -->
|
||||
<string name="restore">Restore</string>
|
||||
<string name="restore_all_messages">Restore all messages</string>
|
||||
<string name="empty_recycle_bin_messages_confirmation">Are you sure you want to empty the Recycle Bin? The messages will be permanently lost.</string>
|
||||
<string name="skip_the_recycle_bin_messages">Skip the Recycle Bin, delete messages directly</string>
|
||||
<!-- Confirmation dialog -->
|
||||
<string name="delete_whole_conversation_confirmation">Ten a certeza de que desexa eliminar todas as mensaxes desta conversa\?</string>
|
||||
<string name="archive_confirmation">Are you sure you want to archive %s?</string>
|
||||
<string name="restore_whole_conversation_confirmation">Are you sure you want to restore all messages of this conversation?</string>
|
||||
<string name="restore_confirmation">Are you sure you want to restore %s?</string>
|
||||
<!-- Are you sure you want to delete 5 conversations? -->
|
||||
<plurals name="delete_conversations">
|
||||
<item quantity="one">%d conversa</item>
|
||||
|
@@ -67,9 +67,16 @@
|
||||
<string name="no_archived_conversations">No archived conversations have been found</string>
|
||||
<string name="archive_emptied_successfully">The archive has been emptied successfully</string>
|
||||
<string name="empty_archive_confirmation">Are you sure you want to empty the archive? All archived conversations will be permanently lost.</string>
|
||||
<!-- Recycle bin -->
|
||||
<string name="restore">Restore</string>
|
||||
<string name="restore_all_messages">Restore all messages</string>
|
||||
<string name="empty_recycle_bin_messages_confirmation">Are you sure you want to empty the Recycle Bin? The messages will be permanently lost.</string>
|
||||
<string name="skip_the_recycle_bin_messages">Skip the Recycle Bin, delete messages directly</string>
|
||||
<!-- Confirmation dialog -->
|
||||
<string name="delete_whole_conversation_confirmation">Are you sure you want to delete all messages of this conversation\?</string>
|
||||
<string name="archive_confirmation">Are you sure you want to archive %s?</string>
|
||||
<string name="restore_whole_conversation_confirmation">Are you sure you want to restore all messages of this conversation?</string>
|
||||
<string name="restore_confirmation">Are you sure you want to restore %s?</string>
|
||||
<!-- Are you sure you want to delete 5 conversations? -->
|
||||
<plurals name="delete_conversations">
|
||||
<item quantity="one">%d conversation</item>
|
||||
|
@@ -68,9 +68,16 @@
|
||||
<string name="no_archived_conversations">Nema arhiviranih razgovora</string>
|
||||
<string name="archive_emptied_successfully">Arhiv je uspješno ispražnjen</string>
|
||||
<string name="empty_archive_confirmation">Jeste li ste sigurni da želite isprazniti arhiv? Svi arhivirani razgovori će biti obrisani.</string>
|
||||
<!-- Recycle bin -->
|
||||
<string name="restore">Vrati</string>
|
||||
<string name="restore_all_messages">Vrati sve poruke</string>
|
||||
<string name="empty_recycle_bin_messages_confirmation">Stvarno želiš isprazniti koš za smeće? Poruke će biti trajno izgubljene.</string>
|
||||
<string name="skip_the_recycle_bin_messages">Preskoči koš za smeće, izbriši poruke odmah</string>
|
||||
<!-- Confirmation dialog -->
|
||||
<string name="delete_whole_conversation_confirmation">Stvarno želiš izbrisati sve poruke ovog razgovora\?</string>
|
||||
<string name="archive_confirmation">Stvarno želiš arhivirati %s?</string>
|
||||
<string name="restore_whole_conversation_confirmation">Stvarno želiš vratiti sve poruke iz ovog razgovora?</string>
|
||||
<string name="restore_confirmation">Stvarno želiš vratiti %s?</string>
|
||||
<!-- Are you sure you want to delete 5 conversations? -->
|
||||
<plurals name="delete_conversations">
|
||||
<item quantity="one">%d razgovor</item>
|
||||
|
@@ -67,9 +67,16 @@
|
||||
<string name="no_archived_conversations">No archived conversations have been found</string>
|
||||
<string name="archive_emptied_successfully">The archive has been emptied successfully</string>
|
||||
<string name="empty_archive_confirmation">Are you sure you want to empty the archive? All archived conversations will be permanently lost.</string>
|
||||
<!-- Recycle bin -->
|
||||
<string name="restore">Restore</string>
|
||||
<string name="restore_all_messages">Restore all messages</string>
|
||||
<string name="empty_recycle_bin_messages_confirmation">Are you sure you want to empty the Recycle Bin? The messages will be permanently lost.</string>
|
||||
<string name="skip_the_recycle_bin_messages">Skip the Recycle Bin, delete messages directly</string>
|
||||
<!-- Confirmation dialog -->
|
||||
<string name="delete_whole_conversation_confirmation">Biztos, hogy törli az összes üzenetet ebből a beszélgetésből\?</string>
|
||||
<string name="archive_confirmation">Are you sure you want to archive %s?</string>
|
||||
<string name="restore_whole_conversation_confirmation">Are you sure you want to restore all messages of this conversation?</string>
|
||||
<string name="restore_confirmation">Are you sure you want to restore %s?</string>
|
||||
<!-- Are you sure you want to delete 5 conversations? -->
|
||||
<plurals name="delete_conversations">
|
||||
<item quantity="one">%d beszélgetést</item>
|
||||
|
@@ -66,9 +66,16 @@
|
||||
<string name="no_archived_conversations">No archived conversations have been found</string>
|
||||
<string name="archive_emptied_successfully">The archive has been emptied successfully</string>
|
||||
<string name="empty_archive_confirmation">Are you sure you want to empty the archive? All archived conversations will be permanently lost.</string>
|
||||
<!-- Recycle bin -->
|
||||
<string name="restore">Restore</string>
|
||||
<string name="restore_all_messages">Restore all messages</string>
|
||||
<string name="empty_recycle_bin_messages_confirmation">Are you sure you want to empty the Recycle Bin? The messages will be permanently lost.</string>
|
||||
<string name="skip_the_recycle_bin_messages">Skip the Recycle Bin, delete messages directly</string>
|
||||
<!-- Confirmation dialog -->
|
||||
<string name="delete_whole_conversation_confirmation">Apakah Anda yakin ingin menghapus semua pesan dari percakapan ini\?</string>
|
||||
<string name="archive_confirmation">Are you sure you want to archive %s?</string>
|
||||
<string name="restore_whole_conversation_confirmation">Are you sure you want to restore all messages of this conversation?</string>
|
||||
<string name="restore_confirmation">Are you sure you want to restore %s?</string>
|
||||
<!-- Are you sure you want to delete 5 conversations? -->
|
||||
<plurals name="delete_conversations">
|
||||
<item quantity="other">%d percakapan</item>
|
||||
|
@@ -67,9 +67,16 @@
|
||||
<string name="no_archived_conversations">No archived conversations have been found</string>
|
||||
<string name="archive_emptied_successfully">The archive has been emptied successfully</string>
|
||||
<string name="empty_archive_confirmation">Are you sure you want to empty the archive? All archived conversations will be permanently lost.</string>
|
||||
<!-- Recycle bin -->
|
||||
<string name="restore">Restore</string>
|
||||
<string name="restore_all_messages">Restore all messages</string>
|
||||
<string name="empty_recycle_bin_messages_confirmation">Are you sure you want to empty the Recycle Bin? The messages will be permanently lost.</string>
|
||||
<string name="skip_the_recycle_bin_messages">Skip the Recycle Bin, delete messages directly</string>
|
||||
<!-- Confirmation dialog -->
|
||||
<string name="delete_whole_conversation_confirmation">Are you sure you want to delete all messages of this conversation\?</string>
|
||||
<string name="archive_confirmation">Are you sure you want to archive %s?</string>
|
||||
<string name="restore_whole_conversation_confirmation">Are you sure you want to restore all messages of this conversation?</string>
|
||||
<string name="restore_confirmation">Are you sure you want to restore %s?</string>
|
||||
<!-- Are you sure you want to delete 5 conversations? -->
|
||||
<plurals name="delete_conversations">
|
||||
<item quantity="one">%d conversation</item>
|
||||
|
@@ -68,9 +68,16 @@
|
||||
<string name="no_archived_conversations">No archived conversations have been found</string>
|
||||
<string name="archive_emptied_successfully">The archive has been emptied successfully</string>
|
||||
<string name="empty_archive_confirmation">Are you sure you want to empty the archive? All archived conversations will be permanently lost.</string>
|
||||
<!-- Recycle bin -->
|
||||
<string name="restore">Restore</string>
|
||||
<string name="restore_all_messages">Restore all messages</string>
|
||||
<string name="empty_recycle_bin_messages_confirmation">Are you sure you want to empty the Recycle Bin? The messages will be permanently lost.</string>
|
||||
<string name="skip_the_recycle_bin_messages">Skip the Recycle Bin, delete messages directly</string>
|
||||
<!-- Confirmation dialog -->
|
||||
<string name="delete_whole_conversation_confirmation">Vuoi davvero eliminare tutti i messaggi di questa conversazione\?</string>
|
||||
<string name="archive_confirmation">Are you sure you want to archive %s?</string>
|
||||
<string name="restore_whole_conversation_confirmation">Are you sure you want to restore all messages of this conversation?</string>
|
||||
<string name="restore_confirmation">Are you sure you want to restore %s?</string>
|
||||
<!-- Are you sure you want to delete 5 conversations? -->
|
||||
<plurals name="delete_conversations">
|
||||
<item quantity="one">%d conversazione</item>
|
||||
|
@@ -69,9 +69,16 @@
|
||||
<string name="no_archived_conversations">No archived conversations have been found</string>
|
||||
<string name="archive_emptied_successfully">The archive has been emptied successfully</string>
|
||||
<string name="empty_archive_confirmation">Are you sure you want to empty the archive? All archived conversations will be permanently lost.</string>
|
||||
<!-- Recycle bin -->
|
||||
<string name="restore">Restore</string>
|
||||
<string name="restore_all_messages">Restore all messages</string>
|
||||
<string name="empty_recycle_bin_messages_confirmation">Are you sure you want to empty the Recycle Bin? The messages will be permanently lost.</string>
|
||||
<string name="skip_the_recycle_bin_messages">Skip the Recycle Bin, delete messages directly</string>
|
||||
<!-- Confirmation dialog -->
|
||||
<string name="delete_whole_conversation_confirmation">האם אתה בטוח שברצונך למחוק את כל ההודעות של השיחה הזו\?</string>
|
||||
<string name="archive_confirmation">Are you sure you want to archive %s?</string>
|
||||
<string name="restore_whole_conversation_confirmation">Are you sure you want to restore all messages of this conversation?</string>
|
||||
<string name="restore_confirmation">Are you sure you want to restore %s?</string>
|
||||
<!-- Are you sure you want to delete 5 conversations? -->
|
||||
<plurals name="delete_conversations">
|
||||
<item quantity="one">שיחה %d</item>
|
||||
|
@@ -66,9 +66,16 @@
|
||||
<string name="no_archived_conversations">No archived conversations have been found</string>
|
||||
<string name="archive_emptied_successfully">The archive has been emptied successfully</string>
|
||||
<string name="empty_archive_confirmation">Are you sure you want to empty the archive? All archived conversations will be permanently lost.</string>
|
||||
<!-- Recycle bin -->
|
||||
<string name="restore">Restore</string>
|
||||
<string name="restore_all_messages">Restore all messages</string>
|
||||
<string name="empty_recycle_bin_messages_confirmation">Are you sure you want to empty the Recycle Bin? The messages will be permanently lost.</string>
|
||||
<string name="skip_the_recycle_bin_messages">Skip the Recycle Bin, delete messages directly</string>
|
||||
<!-- Confirmation dialog -->
|
||||
<string name="delete_whole_conversation_confirmation">本当にこの会話のすべてのメッセージを削除しますか?</string>
|
||||
<string name="archive_confirmation">Are you sure you want to archive %s?</string>
|
||||
<string name="restore_whole_conversation_confirmation">Are you sure you want to restore all messages of this conversation?</string>
|
||||
<string name="restore_confirmation">Are you sure you want to restore %s?</string>
|
||||
<!-- Are you sure you want to delete 5 conversations? -->
|
||||
<plurals name="delete_conversations">
|
||||
<item quantity="other">%d 件の会話</item>
|
||||
|
@@ -67,9 +67,16 @@
|
||||
<string name="no_archived_conversations">No archived conversations have been found</string>
|
||||
<string name="archive_emptied_successfully">The archive has been emptied successfully</string>
|
||||
<string name="empty_archive_confirmation">Are you sure you want to empty the archive? All archived conversations will be permanently lost.</string>
|
||||
<!-- Recycle bin -->
|
||||
<string name="restore">Restore</string>
|
||||
<string name="restore_all_messages">Restore all messages</string>
|
||||
<string name="empty_recycle_bin_messages_confirmation">Are you sure you want to empty the Recycle Bin? The messages will be permanently lost.</string>
|
||||
<string name="skip_the_recycle_bin_messages">Skip the Recycle Bin, delete messages directly</string>
|
||||
<!-- Confirmation dialog -->
|
||||
<string name="delete_whole_conversation_confirmation">Ar tikrai norite ištrinti visas šio pokalbio žinutes\?</string>
|
||||
<string name="archive_confirmation">Are you sure you want to archive %s?</string>
|
||||
<string name="restore_whole_conversation_confirmation">Are you sure you want to restore all messages of this conversation?</string>
|
||||
<string name="restore_confirmation">Are you sure you want to restore %s?</string>
|
||||
<!-- Are you sure you want to delete 5 conversations? -->
|
||||
<plurals name="delete_conversations">
|
||||
<item quantity="one">%d pokalbis</item>
|
||||
|
@@ -68,9 +68,16 @@
|
||||
<string name="no_archived_conversations">No archived conversations have been found</string>
|
||||
<string name="archive_emptied_successfully">The archive has been emptied successfully</string>
|
||||
<string name="empty_archive_confirmation">Are you sure you want to empty the archive? All archived conversations will be permanently lost.</string>
|
||||
<!-- Recycle bin -->
|
||||
<string name="restore">Restore</string>
|
||||
<string name="restore_all_messages">Restore all messages</string>
|
||||
<string name="empty_recycle_bin_messages_confirmation">Are you sure you want to empty the Recycle Bin? The messages will be permanently lost.</string>
|
||||
<string name="skip_the_recycle_bin_messages">Skip the Recycle Bin, delete messages directly</string>
|
||||
<!-- Confirmation dialog -->
|
||||
<string name="delete_whole_conversation_confirmation">Are you sure you want to delete all messages of this conversation\?</string>
|
||||
<string name="archive_confirmation">Are you sure you want to archive %s?</string>
|
||||
<string name="restore_whole_conversation_confirmation">Are you sure you want to restore all messages of this conversation?</string>
|
||||
<string name="restore_confirmation">Are you sure you want to restore %s?</string>
|
||||
<!-- Are you sure you want to delete 5 conversations? -->
|
||||
<plurals name="delete_conversations">
|
||||
<item quantity="zero">%d conversation</item>
|
||||
|
@@ -67,9 +67,16 @@
|
||||
<string name="no_archived_conversations">No archived conversations have been found</string>
|
||||
<string name="archive_emptied_successfully">The archive has been emptied successfully</string>
|
||||
<string name="empty_archive_confirmation">Are you sure you want to empty the archive? All archived conversations will be permanently lost.</string>
|
||||
<!-- Recycle bin -->
|
||||
<string name="restore">Restore</string>
|
||||
<string name="restore_all_messages">Restore all messages</string>
|
||||
<string name="empty_recycle_bin_messages_confirmation">Are you sure you want to empty the Recycle Bin? The messages will be permanently lost.</string>
|
||||
<string name="skip_the_recycle_bin_messages">Skip the Recycle Bin, delete messages directly</string>
|
||||
<!-- Confirmation dialog -->
|
||||
<string name="delete_whole_conversation_confirmation">Are you sure you want to delete all messages of this conversation\?</string>
|
||||
<string name="archive_confirmation">Are you sure you want to archive %s?</string>
|
||||
<string name="restore_whole_conversation_confirmation">Are you sure you want to restore all messages of this conversation?</string>
|
||||
<string name="restore_confirmation">Are you sure you want to restore %s?</string>
|
||||
<!-- Are you sure you want to delete 5 conversations? -->
|
||||
<plurals name="delete_conversations">
|
||||
<item quantity="one">%d conversation</item>
|
||||
|
@@ -67,9 +67,16 @@
|
||||
<string name="no_archived_conversations">No archived conversations have been found</string>
|
||||
<string name="archive_emptied_successfully">The archive has been emptied successfully</string>
|
||||
<string name="empty_archive_confirmation">Are you sure you want to empty the archive? All archived conversations will be permanently lost.</string>
|
||||
<!-- Recycle bin -->
|
||||
<string name="restore">Restore</string>
|
||||
<string name="restore_all_messages">Restore all messages</string>
|
||||
<string name="empty_recycle_bin_messages_confirmation">Are you sure you want to empty the Recycle Bin? The messages will be permanently lost.</string>
|
||||
<string name="skip_the_recycle_bin_messages">Skip the Recycle Bin, delete messages directly</string>
|
||||
<!-- Confirmation dialog -->
|
||||
<string name="delete_whole_conversation_confirmation">ഈ സംഭാഷണത്തിലെ എല്ലാ സന്ദേശങ്ങളും ഇല്ലാതാക്കണമെന്ന് തീർച്ചയാണോ\?</string>
|
||||
<string name="archive_confirmation">Are you sure you want to archive %s?</string>
|
||||
<string name="restore_whole_conversation_confirmation">Are you sure you want to restore all messages of this conversation?</string>
|
||||
<string name="restore_confirmation">Are you sure you want to restore %s?</string>
|
||||
<!-- Are you sure you want to delete 5 conversations? -->
|
||||
<plurals name="delete_conversations">
|
||||
<item quantity="one">%d സംഭാഷണം</item>
|
||||
|
@@ -67,9 +67,16 @@
|
||||
<string name="no_archived_conversations">No archived conversations have been found</string>
|
||||
<string name="archive_emptied_successfully">The archive has been emptied successfully</string>
|
||||
<string name="empty_archive_confirmation">Are you sure you want to empty the archive? All archived conversations will be permanently lost.</string>
|
||||
<!-- Recycle bin -->
|
||||
<string name="restore">Restore</string>
|
||||
<string name="restore_all_messages">Restore all messages</string>
|
||||
<string name="empty_recycle_bin_messages_confirmation">Are you sure you want to empty the Recycle Bin? The messages will be permanently lost.</string>
|
||||
<string name="skip_the_recycle_bin_messages">Skip the Recycle Bin, delete messages directly</string>
|
||||
<!-- Confirmation dialog -->
|
||||
<string name="delete_whole_conversation_confirmation">Er du sikker på at du vil slette alle meldinger fra denne konversasjonen\?</string>
|
||||
<string name="archive_confirmation">Are you sure you want to archive %s?</string>
|
||||
<string name="restore_whole_conversation_confirmation">Are you sure you want to restore all messages of this conversation?</string>
|
||||
<string name="restore_confirmation">Are you sure you want to restore %s?</string>
|
||||
<!-- Are you sure you want to delete 5 conversations? -->
|
||||
<plurals name="delete_conversations">
|
||||
<item quantity="one">%d konversasjon</item>
|
||||
|
@@ -67,9 +67,16 @@
|
||||
<string name="no_archived_conversations">Geen gearchiveerde gesprekken gevonden</string>
|
||||
<string name="archive_emptied_successfully">Archief is gewist</string>
|
||||
<string name="empty_archive_confirmation">Het archief wissen\? Alle gearchiveerde gesprekken zullen permanent verwijderd worden.</string>
|
||||
<!-- Recycle bin -->
|
||||
<string name="restore">Restore</string>
|
||||
<string name="restore_all_messages">Restore all messages</string>
|
||||
<string name="empty_recycle_bin_messages_confirmation">Are you sure you want to empty the Recycle Bin? The messages will be permanently lost.</string>
|
||||
<string name="skip_the_recycle_bin_messages">Skip the Recycle Bin, delete messages directly</string>
|
||||
<!-- Confirmation dialog -->
|
||||
<string name="delete_whole_conversation_confirmation">Alle berichten in dit gesprek verwijderen\?</string>
|
||||
<string name="archive_confirmation">%s archiveren\?</string>
|
||||
<string name="restore_whole_conversation_confirmation">Are you sure you want to restore all messages of this conversation?</string>
|
||||
<string name="restore_confirmation">Are you sure you want to restore %s?</string>
|
||||
<!-- Are you sure you want to delete 5 conversations? -->
|
||||
<plurals name="delete_conversations">
|
||||
<item quantity="one">%d gesprek</item>
|
||||
@@ -128,4 +135,4 @@
|
||||
Haven't found some strings? There's more at
|
||||
https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res
|
||||
-->
|
||||
</resources>
|
||||
</resources>
|
||||
|
@@ -67,9 +67,16 @@
|
||||
<string name="no_archived_conversations">No archived conversations have been found</string>
|
||||
<string name="archive_emptied_successfully">The archive has been emptied successfully</string>
|
||||
<string name="empty_archive_confirmation">Are you sure you want to empty the archive? All archived conversations will be permanently lost.</string>
|
||||
<!-- Recycle bin -->
|
||||
<string name="restore">Restore</string>
|
||||
<string name="restore_all_messages">Restore all messages</string>
|
||||
<string name="empty_recycle_bin_messages_confirmation">Are you sure you want to empty the Recycle Bin? The messages will be permanently lost.</string>
|
||||
<string name="skip_the_recycle_bin_messages">Skip the Recycle Bin, delete messages directly</string>
|
||||
<!-- Confirmation dialog -->
|
||||
<string name="delete_whole_conversation_confirmation">تسیں پکے اے، سارے سنیہے مٹاؤ؟</string>
|
||||
<string name="archive_confirmation">Are you sure you want to archive %s?</string>
|
||||
<string name="restore_whole_conversation_confirmation">Are you sure you want to restore all messages of this conversation?</string>
|
||||
<string name="restore_confirmation">Are you sure you want to restore %s?</string>
|
||||
<!-- Are you sure you want to delete 5 conversations? -->
|
||||
<plurals name="delete_conversations">
|
||||
<item quantity="one">%d conversation</item>
|
||||
|
@@ -69,9 +69,16 @@
|
||||
<string name="no_archived_conversations">Nie znaleziono zarchiwizowanych rozmów</string>
|
||||
<string name="archive_emptied_successfully">Archiwum zostało opróżnione</string>
|
||||
<string name="empty_archive_confirmation">Czy opróżnić archiwum\? Wszystkie zarchiwizowane rozmowy zostaną utracone bezpowrotnie.</string>
|
||||
<!-- Recycle bin -->
|
||||
<string name="restore">Restore</string>
|
||||
<string name="restore_all_messages">Restore all messages</string>
|
||||
<string name="empty_recycle_bin_messages_confirmation">Are you sure you want to empty the Recycle Bin? The messages will be permanently lost.</string>
|
||||
<string name="skip_the_recycle_bin_messages">Skip the Recycle Bin, delete messages directly</string>
|
||||
<!-- Confirmation dialog -->
|
||||
<string name="delete_whole_conversation_confirmation">Czy usunąć wszystkie wiadomości z tej rozmowy\?</string>
|
||||
<string name="archive_confirmation">Czy zarchiwizować %s\?</string>
|
||||
<string name="restore_whole_conversation_confirmation">Are you sure you want to restore all messages of this conversation?</string>
|
||||
<string name="restore_confirmation">Are you sure you want to restore %s?</string>
|
||||
<!-- Are you sure you want to delete 5 conversations? -->
|
||||
<plurals name="delete_conversations">
|
||||
<item quantity="one">%d rozmowę</item>
|
||||
@@ -134,4 +141,4 @@
|
||||
Haven't found some strings? There's more at
|
||||
https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res
|
||||
-->
|
||||
</resources>
|
||||
</resources>
|
||||
|
@@ -68,9 +68,16 @@
|
||||
<string name="no_archived_conversations">No archived conversations have been found</string>
|
||||
<string name="archive_emptied_successfully">The archive has been emptied successfully</string>
|
||||
<string name="empty_archive_confirmation">Are you sure you want to empty the archive? All archived conversations will be permanently lost.</string>
|
||||
<!-- Recycle bin -->
|
||||
<string name="restore">Restore</string>
|
||||
<string name="restore_all_messages">Restore all messages</string>
|
||||
<string name="empty_recycle_bin_messages_confirmation">Are you sure you want to empty the Recycle Bin? The messages will be permanently lost.</string>
|
||||
<string name="skip_the_recycle_bin_messages">Skip the Recycle Bin, delete messages directly</string>
|
||||
<!-- Confirmation dialog -->
|
||||
<string name="delete_whole_conversation_confirmation">Tem certeza que quer deletar todas as mensagens dessa conversa\?</string>
|
||||
<string name="archive_confirmation">Are you sure you want to archive %s?</string>
|
||||
<string name="restore_whole_conversation_confirmation">Are you sure you want to restore all messages of this conversation?</string>
|
||||
<string name="restore_confirmation">Are you sure you want to restore %s?</string>
|
||||
<!-- Are you sure you want to delete 5 conversations? -->
|
||||
<plurals name="delete_conversations">
|
||||
<item quantity="one">%d conversa</item>
|
||||
|
@@ -68,9 +68,16 @@
|
||||
<string name="no_archived_conversations">Não existem conversas arquivadas</string>
|
||||
<string name="archive_emptied_successfully">O arquivo foi limpo com sucesso</string>
|
||||
<string name="empty_archive_confirmation">Tem a certeza de que pretende limpar o arquivo\? Todas as conversas arquivadas serão eliminadas.</string>
|
||||
<!-- Recycle bin -->
|
||||
<string name="restore">Restore</string>
|
||||
<string name="restore_all_messages">Restore all messages</string>
|
||||
<string name="empty_recycle_bin_messages_confirmation">Are you sure you want to empty the Recycle Bin? The messages will be permanently lost.</string>
|
||||
<string name="skip_the_recycle_bin_messages">Skip the Recycle Bin, delete messages directly</string>
|
||||
<!-- Confirmation dialog -->
|
||||
<string name="delete_whole_conversation_confirmation">Tem a certeza de que pretende apagar todas as mensagens desta conversa\?</string>
|
||||
<string name="archive_confirmation">Tem a certeza de que pretende arquivar %s\?</string>
|
||||
<string name="restore_whole_conversation_confirmation">Are you sure you want to restore all messages of this conversation?</string>
|
||||
<string name="restore_confirmation">Are you sure you want to restore %s?</string>
|
||||
<!-- Are you sure you want to delete 5 conversations? -->
|
||||
<plurals name="delete_conversations">
|
||||
<item quantity="one">%d conversa</item>
|
||||
@@ -131,4 +138,4 @@
|
||||
Haven't found some strings? There's more at
|
||||
https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res
|
||||
-->
|
||||
</resources>
|
||||
</resources>
|
||||
|
@@ -68,9 +68,16 @@
|
||||
<string name="no_archived_conversations">No archived conversations have been found</string>
|
||||
<string name="archive_emptied_successfully">The archive has been emptied successfully</string>
|
||||
<string name="empty_archive_confirmation">Are you sure you want to empty the archive? All archived conversations will be permanently lost.</string>
|
||||
<!-- Recycle bin -->
|
||||
<string name="restore">Restore</string>
|
||||
<string name="restore_all_messages">Restore all messages</string>
|
||||
<string name="empty_recycle_bin_messages_confirmation">Are you sure you want to empty the Recycle Bin? The messages will be permanently lost.</string>
|
||||
<string name="skip_the_recycle_bin_messages">Skip the Recycle Bin, delete messages directly</string>
|
||||
<!-- Confirmation dialog -->
|
||||
<string name="delete_whole_conversation_confirmation">Sunteți sigur că doriți să ștergeți toate mesajele din această conversație\?</string>
|
||||
<string name="archive_confirmation">Are you sure you want to archive %s?</string>
|
||||
<string name="restore_whole_conversation_confirmation">Are you sure you want to restore all messages of this conversation?</string>
|
||||
<string name="restore_confirmation">Are you sure you want to restore %s?</string>
|
||||
<!-- Are you sure you want to delete 5 conversations? -->
|
||||
<plurals name="delete_conversations">
|
||||
<item quantity="one">%d conversaţie</item>
|
||||
|
@@ -69,9 +69,16 @@
|
||||
<string name="no_archived_conversations">Нет архивных переписок</string>
|
||||
<string name="archive_emptied_successfully">Архив успешно очищен</string>
|
||||
<string name="empty_archive_confirmation">Очистить архив\? Все архивные переписки будут безвозвратно потеряны.</string>
|
||||
<!-- Recycle bin -->
|
||||
<string name="restore">Restore</string>
|
||||
<string name="restore_all_messages">Restore all messages</string>
|
||||
<string name="empty_recycle_bin_messages_confirmation">Are you sure you want to empty the Recycle Bin? The messages will be permanently lost.</string>
|
||||
<string name="skip_the_recycle_bin_messages">Skip the Recycle Bin, delete messages directly</string>
|
||||
<!-- Confirmation dialog -->
|
||||
<string name="delete_whole_conversation_confirmation">Удалить все сообщения в этой переписке\?</string>
|
||||
<string name="archive_confirmation">Архивировать %s\?</string>
|
||||
<string name="restore_whole_conversation_confirmation">Are you sure you want to restore all messages of this conversation?</string>
|
||||
<string name="restore_confirmation">Are you sure you want to restore %s?</string>
|
||||
<!-- Are you sure you want to delete 5 conversations? -->
|
||||
<plurals name="delete_conversations">
|
||||
<item quantity="one">%d переписку</item>
|
||||
@@ -134,4 +141,4 @@
|
||||
Haven't found some strings? There's more at
|
||||
https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res
|
||||
-->
|
||||
</resources>
|
||||
</resources>
|
||||
|
@@ -68,9 +68,16 @@
|
||||
<string name="no_archived_conversations">Nenašli sa žiadne archivované konverzácie</string>
|
||||
<string name="archive_emptied_successfully">Archív bol úspešne vyprázdnený</string>
|
||||
<string name="empty_archive_confirmation">Ste si istý, že chcete vyprázdniť archív? Všetky archivované konverzácie budú navždy odstránené.</string>
|
||||
<!-- Recycle bin -->
|
||||
<string name="restore">Obnoviť</string>
|
||||
<string name="restore_all_messages">Obnoviť všetky správy</string>
|
||||
<string name="empty_recycle_bin_messages_confirmation">Ste si istý, že chcete vysypať odpadkový kôš? Správy budú navždy stratené.</string>
|
||||
<string name="skip_the_recycle_bin_messages">Vynechať odpadkový kôš, priamo vymazať správy</string>
|
||||
<!-- Confirmation dialog -->
|
||||
<string name="delete_whole_conversation_confirmation">Ste si istý, že chcete odstrániť všetky správy tejto konverzácie\?</string>
|
||||
<string name="archive_confirmation">Ste si istý, že chcete archivovať %s?</string>
|
||||
<string name="restore_whole_conversation_confirmation">Ste si istý, že chcete obnoviť všetky správy tejto konverzácie?</string>
|
||||
<string name="restore_confirmation">Ste si istý, že chcete obnoviť %s?</string>
|
||||
<!-- Are you sure you want to delete 5 conversations? -->
|
||||
<plurals name="delete_conversations">
|
||||
<item quantity="one">%d konverzáciu</item>
|
||||
|
@@ -69,9 +69,16 @@
|
||||
<string name="no_archived_conversations">No archived conversations have been found</string>
|
||||
<string name="archive_emptied_successfully">The archive has been emptied successfully</string>
|
||||
<string name="empty_archive_confirmation">Are you sure you want to empty the archive? All archived conversations will be permanently lost.</string>
|
||||
<!-- Recycle bin -->
|
||||
<string name="restore">Restore</string>
|
||||
<string name="restore_all_messages">Restore all messages</string>
|
||||
<string name="empty_recycle_bin_messages_confirmation">Are you sure you want to empty the Recycle Bin? The messages will be permanently lost.</string>
|
||||
<string name="skip_the_recycle_bin_messages">Skip the Recycle Bin, delete messages directly</string>
|
||||
<!-- Confirmation dialog -->
|
||||
<string name="delete_whole_conversation_confirmation">Ste prepričani, da želite izbrisati vsa sporočila tega pogovora\?</string>
|
||||
<string name="archive_confirmation">Are you sure you want to archive %s?</string>
|
||||
<string name="restore_whole_conversation_confirmation">Are you sure you want to restore all messages of this conversation?</string>
|
||||
<string name="restore_confirmation">Are you sure you want to restore %s?</string>
|
||||
<!-- Are you sure you want to delete 5 conversations? -->
|
||||
<plurals name="delete_conversations">
|
||||
<item quantity="one">%d pogovor</item>
|
||||
|
@@ -68,9 +68,16 @@
|
||||
<string name="no_archived_conversations">Нема архивираних разговора</string>
|
||||
<string name="archive_emptied_successfully">Архива је успјешно испражнјена</string>
|
||||
<string name="empty_archive_confirmation">Да ли сте сигурни да желите да испразните архиву? Све архивиране поруке ће бити избрисане.</string>
|
||||
<!-- Recycle bin -->
|
||||
<string name="restore">Врати</string>
|
||||
<string name="restore_all_messages">Врати све поруке</string>
|
||||
<string name="empty_recycle_bin_messages_confirmation">Да ли сте сигурни да желите испразнити канту за отпазке? Поруке ће бити трајно обрисане.</string>
|
||||
<string name="skip_the_recycle_bin_messages">Прескочи канту за отпатке, обриши поруке директно</string>
|
||||
<!-- Confirmation dialog -->
|
||||
<string name="delete_whole_conversation_confirmation">Да ли сте сигурни да желите да избришете све поруке ове конверзације\?</string>
|
||||
<string name="archive_confirmation">Да ли сте сигурни да желите да архивирате %s?</string>
|
||||
<string name="restore_whole_conversation_confirmation">Да ли сте сигурни да желите да вратите све поруке ове конверзације?</string>
|
||||
<string name="restore_confirmation">Да ли сте сигурни да желите да вратите %s?</string>
|
||||
<!-- Are you sure you want to delete 5 conversations? -->
|
||||
<plurals name="delete_conversations">
|
||||
<item quantity="one">%d разговор</item>
|
||||
|
@@ -67,9 +67,16 @@
|
||||
<string name="no_archived_conversations">Inga arkiverade konversationer hittades</string>
|
||||
<string name="archive_emptied_successfully">Arkivet har tömts</string>
|
||||
<string name="empty_archive_confirmation">Är du säker på att du vill tömma arkivet\? Alla arkiverade konversationer tas bort permanent.</string>
|
||||
<!-- Recycle bin -->
|
||||
<string name="restore">Restore</string>
|
||||
<string name="restore_all_messages">Restore all messages</string>
|
||||
<string name="empty_recycle_bin_messages_confirmation">Are you sure you want to empty the Recycle Bin? The messages will be permanently lost.</string>
|
||||
<string name="skip_the_recycle_bin_messages">Skip the Recycle Bin, delete messages directly</string>
|
||||
<!-- Confirmation dialog -->
|
||||
<string name="delete_whole_conversation_confirmation">Är du säker på att du vill ta bort alla meddelanden i konversationen\?</string>
|
||||
<string name="archive_confirmation">Är du säker på att du vill arkivera %s\?</string>
|
||||
<string name="restore_whole_conversation_confirmation">Are you sure you want to restore all messages of this conversation?</string>
|
||||
<string name="restore_confirmation">Are you sure you want to restore %s?</string>
|
||||
<!-- Are you sure you want to delete 5 conversations? -->
|
||||
<plurals name="delete_conversations">
|
||||
<item quantity="one">%d konversation</item>
|
||||
@@ -128,4 +135,4 @@
|
||||
Haven't found some strings? There's more at
|
||||
https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res
|
||||
-->
|
||||
</resources>
|
||||
</resources>
|
||||
|
@@ -67,9 +67,16 @@
|
||||
<string name="no_archived_conversations">No archived conversations have been found</string>
|
||||
<string name="archive_emptied_successfully">The archive has been emptied successfully</string>
|
||||
<string name="empty_archive_confirmation">Are you sure you want to empty the archive? All archived conversations will be permanently lost.</string>
|
||||
<!-- Recycle bin -->
|
||||
<string name="restore">Restore</string>
|
||||
<string name="restore_all_messages">Restore all messages</string>
|
||||
<string name="empty_recycle_bin_messages_confirmation">Are you sure you want to empty the Recycle Bin? The messages will be permanently lost.</string>
|
||||
<string name="skip_the_recycle_bin_messages">Skip the Recycle Bin, delete messages directly</string>
|
||||
<!-- Confirmation dialog -->
|
||||
<string name="delete_whole_conversation_confirmation">இந்த உரையாடலின் அனைத்து செய்திகளையும் நிச்சயமாக நீக்க விரும்புகிறீர்களா\?</string>
|
||||
<string name="archive_confirmation">Are you sure you want to archive %s?</string>
|
||||
<string name="restore_whole_conversation_confirmation">Are you sure you want to restore all messages of this conversation?</string>
|
||||
<string name="restore_confirmation">Are you sure you want to restore %s?</string>
|
||||
<!-- Are you sure you want to delete 5 conversations? -->
|
||||
<plurals name="delete_conversations">
|
||||
<item quantity="one">%d உரையாடல்</item>
|
||||
|
@@ -66,9 +66,16 @@
|
||||
<string name="no_archived_conversations">No archived conversations have been found</string>
|
||||
<string name="archive_emptied_successfully">The archive has been emptied successfully</string>
|
||||
<string name="empty_archive_confirmation">Are you sure you want to empty the archive? All archived conversations will be permanently lost.</string>
|
||||
<!-- Recycle bin -->
|
||||
<string name="restore">Restore</string>
|
||||
<string name="restore_all_messages">Restore all messages</string>
|
||||
<string name="empty_recycle_bin_messages_confirmation">Are you sure you want to empty the Recycle Bin? The messages will be permanently lost.</string>
|
||||
<string name="skip_the_recycle_bin_messages">Skip the Recycle Bin, delete messages directly</string>
|
||||
<!-- Confirmation dialog -->
|
||||
<string name="delete_whole_conversation_confirmation">Are you sure you want to delete all messages of this conversation\?</string>
|
||||
<string name="archive_confirmation">Are you sure you want to archive %s?</string>
|
||||
<string name="restore_whole_conversation_confirmation">Are you sure you want to restore all messages of this conversation?</string>
|
||||
<string name="restore_confirmation">Are you sure you want to restore %s?</string>
|
||||
<!-- Are you sure you want to delete 5 conversations? -->
|
||||
<plurals name="delete_conversations">
|
||||
<item quantity="other">%d conversation</item>
|
||||
|
@@ -67,9 +67,16 @@
|
||||
<string name="no_archived_conversations">Arşivlenen görüşme bulunamadı</string>
|
||||
<string name="archive_emptied_successfully">Arşiv başarıyla boşaltıldı</string>
|
||||
<string name="empty_archive_confirmation">Arşivi boşaltmak istediğinizden emin misiniz\? Arşivlenen tüm görüşmeler kalıcı olarak kaybolacak.</string>
|
||||
<!-- Recycle bin -->
|
||||
<string name="restore">Restore</string>
|
||||
<string name="restore_all_messages">Restore all messages</string>
|
||||
<string name="empty_recycle_bin_messages_confirmation">Are you sure you want to empty the Recycle Bin? The messages will be permanently lost.</string>
|
||||
<string name="skip_the_recycle_bin_messages">Skip the Recycle Bin, delete messages directly</string>
|
||||
<!-- Confirmation dialog -->
|
||||
<string name="delete_whole_conversation_confirmation">Bu görüşmenin tüm mesajlarını silmek istediğinizden emin misiniz\?</string>
|
||||
<string name="archive_confirmation">%s arşivlemek istediğinizden emin misiniz\?</string>
|
||||
<string name="restore_whole_conversation_confirmation">Are you sure you want to restore all messages of this conversation?</string>
|
||||
<string name="restore_confirmation">Are you sure you want to restore %s?</string>
|
||||
<!-- Are you sure you want to delete 5 conversations? -->
|
||||
<plurals name="delete_conversations">
|
||||
<item quantity="one">%d görüşme</item>
|
||||
@@ -128,4 +135,4 @@
|
||||
Haven't found some strings? There's more at
|
||||
https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res
|
||||
-->
|
||||
</resources>
|
||||
</resources>
|
||||
|
@@ -69,9 +69,16 @@
|
||||
<string name="no_archived_conversations">No archived conversations have been found</string>
|
||||
<string name="archive_emptied_successfully">The archive has been emptied successfully</string>
|
||||
<string name="empty_archive_confirmation">Are you sure you want to empty the archive? All archived conversations will be permanently lost.</string>
|
||||
<!-- Recycle bin -->
|
||||
<string name="restore">Restore</string>
|
||||
<string name="restore_all_messages">Restore all messages</string>
|
||||
<string name="empty_recycle_bin_messages_confirmation">Are you sure you want to empty the Recycle Bin? The messages will be permanently lost.</string>
|
||||
<string name="skip_the_recycle_bin_messages">Skip the Recycle Bin, delete messages directly</string>
|
||||
<!-- Confirmation dialog -->
|
||||
<string name="delete_whole_conversation_confirmation">Справді видалити всі повідомлення у цьому листуванні\?</string>
|
||||
<string name="archive_confirmation">Are you sure you want to archive %s?</string>
|
||||
<string name="restore_whole_conversation_confirmation">Are you sure you want to restore all messages of this conversation?</string>
|
||||
<string name="restore_confirmation">Are you sure you want to restore %s?</string>
|
||||
<!-- Are you sure you want to delete 5 conversations? -->
|
||||
<plurals name="delete_conversations">
|
||||
<item quantity="one">%d листування</item>
|
||||
|
@@ -66,9 +66,16 @@
|
||||
<string name="no_archived_conversations">尚未找到已归档对话</string>
|
||||
<string name="archive_emptied_successfully">已成功清空归档</string>
|
||||
<string name="empty_archive_confirmation">你确定要清空归档吗?所有已归档对话将永久丢失。</string>
|
||||
<!-- Recycle bin -->
|
||||
<string name="restore">Restore</string>
|
||||
<string name="restore_all_messages">Restore all messages</string>
|
||||
<string name="empty_recycle_bin_messages_confirmation">Are you sure you want to empty the Recycle Bin? The messages will be permanently lost.</string>
|
||||
<string name="skip_the_recycle_bin_messages">Skip the Recycle Bin, delete messages directly</string>
|
||||
<!-- Confirmation dialog -->
|
||||
<string name="delete_whole_conversation_confirmation">您确定要删除此对话的所有消息吗\?</string>
|
||||
<string name="archive_confirmation">你确定要归档 %s 吗?</string>
|
||||
<string name="restore_whole_conversation_confirmation">Are you sure you want to restore all messages of this conversation?</string>
|
||||
<string name="restore_confirmation">Are you sure you want to restore %s?</string>
|
||||
<!-- Are you sure you want to delete 5 conversations? -->
|
||||
<plurals name="delete_conversations">
|
||||
<item quantity="other">%d 个对话</item>
|
||||
@@ -125,4 +132,4 @@
|
||||
Haven't found some strings? There's more at
|
||||
https://github.com/SimpleMobileTools/Simple-Commons/tree/master/commons/src/main/res
|
||||
-->
|
||||
</resources>
|
||||
</resources>
|
||||
|
@@ -66,9 +66,16 @@
|
||||
<string name="no_archived_conversations">No archived conversations have been found</string>
|
||||
<string name="archive_emptied_successfully">The archive has been emptied successfully</string>
|
||||
<string name="empty_archive_confirmation">Are you sure you want to empty the archive? All archived conversations will be permanently lost.</string>
|
||||
<!-- Recycle bin -->
|
||||
<string name="restore">Restore</string>
|
||||
<string name="restore_all_messages">Restore all messages</string>
|
||||
<string name="empty_recycle_bin_messages_confirmation">Are you sure you want to empty the Recycle Bin? The messages will be permanently lost.</string>
|
||||
<string name="skip_the_recycle_bin_messages">Skip the Recycle Bin, delete messages directly</string>
|
||||
<!-- Confirmation dialog -->
|
||||
<string name="delete_whole_conversation_confirmation">您確定要刪除此對話中的所有訊息嗎?</string>
|
||||
<string name="archive_confirmation">Are you sure you want to archive %s?</string>
|
||||
<string name="restore_whole_conversation_confirmation">Are you sure you want to restore all messages of this conversation?</string>
|
||||
<string name="restore_confirmation">Are you sure you want to restore %s?</string>
|
||||
<!-- Are you sure you want to delete 5 conversations? -->
|
||||
<plurals name="delete_conversations">
|
||||
<item quantity="other">%d conversation</item>
|
||||
|
@@ -67,9 +67,16 @@
|
||||
<string name="no_archived_conversations">No archived conversations have been found</string>
|
||||
<string name="archive_emptied_successfully">The archive has been emptied successfully</string>
|
||||
<string name="empty_archive_confirmation">Are you sure you want to empty the archive? All archived conversations will be permanently lost.</string>
|
||||
<!-- Recycle bin -->
|
||||
<string name="restore">Restore</string>
|
||||
<string name="restore_all_messages">Restore all messages</string>
|
||||
<string name="empty_recycle_bin_messages_confirmation">Are you sure you want to empty the Recycle Bin? The messages will be permanently lost.</string>
|
||||
<string name="skip_the_recycle_bin_messages">Skip the Recycle Bin, delete messages directly</string>
|
||||
<!-- Confirmation dialog -->
|
||||
<string name="delete_whole_conversation_confirmation">Are you sure you want to delete all messages of this conversation?</string>
|
||||
<string name="archive_confirmation">Are you sure you want to archive %s?</string>
|
||||
<string name="restore_whole_conversation_confirmation">Are you sure you want to restore all messages of this conversation?</string>
|
||||
<string name="restore_confirmation">Are you sure you want to restore %s?</string>
|
||||
<!-- Are you sure you want to delete 5 conversations? -->
|
||||
<plurals name="delete_conversations">
|
||||
<item quantity="one">%d conversation</item>
|
||||
|
Reference in New Issue
Block a user