Format code
This commit is contained in:
parent
025a3a2729
commit
5683087ca0
4 changed files with 115 additions and 54 deletions
|
|
@ -9,8 +9,24 @@ import androidx.activity.result.contract.ActivityResultContracts
|
|||
import org.fossify.commons.activities.BaseSimpleActivity
|
||||
import org.fossify.commons.dialogs.ExportBlockedNumbersDialog
|
||||
import org.fossify.commons.dialogs.FilePickerDialog
|
||||
import org.fossify.commons.extensions.*
|
||||
import org.fossify.commons.helpers.*
|
||||
import org.fossify.commons.extensions.beVisibleIf
|
||||
import org.fossify.commons.extensions.getFileOutputStream
|
||||
import org.fossify.commons.extensions.getProperPrimaryColor
|
||||
import org.fossify.commons.extensions.getTempFile
|
||||
import org.fossify.commons.extensions.showErrorToast
|
||||
import org.fossify.commons.extensions.toFileDirItem
|
||||
import org.fossify.commons.extensions.toast
|
||||
import org.fossify.commons.extensions.underlineText
|
||||
import org.fossify.commons.extensions.updateTextColors
|
||||
import org.fossify.commons.extensions.viewBinding
|
||||
import org.fossify.commons.helpers.APP_ICON_IDS
|
||||
import org.fossify.commons.helpers.APP_LAUNCHER_NAME
|
||||
import org.fossify.commons.helpers.ExportResult
|
||||
import org.fossify.commons.helpers.NavigationIcon
|
||||
import org.fossify.commons.helpers.PERMISSION_READ_STORAGE
|
||||
import org.fossify.commons.helpers.PERMISSION_WRITE_STORAGE
|
||||
import org.fossify.commons.helpers.ensureBackgroundThread
|
||||
import org.fossify.commons.helpers.isQPlus
|
||||
import org.fossify.commons.interfaces.RefreshRecyclerViewListener
|
||||
import org.fossify.messages.R
|
||||
import org.fossify.messages.databinding.ActivityManageBlockedKeywordsBinding
|
||||
|
|
@ -45,7 +61,10 @@ class ManageBlockedKeywordsActivity : BaseSimpleActivity(), RefreshRecyclerViewL
|
|||
useTransparentNavigation = true,
|
||||
useTopSearchMenu = false
|
||||
)
|
||||
setupMaterialScrollListener(scrollingView = binding.manageBlockedKeywordsList, toolbar = binding.blockKeywordsToolbar)
|
||||
setupMaterialScrollListener(
|
||||
scrollingView = binding.manageBlockedKeywordsList,
|
||||
toolbar = binding.blockKeywordsToolbar
|
||||
)
|
||||
updateTextColors(binding.manageBlockedKeywordsWrapper)
|
||||
|
||||
binding.manageBlockedKeywordsPlaceholder2.apply {
|
||||
|
|
@ -85,7 +104,8 @@ class ManageBlockedKeywordsActivity : BaseSimpleActivity(), RefreshRecyclerViewL
|
|||
}
|
||||
}
|
||||
|
||||
private val exportActivityResultLauncher = registerForActivityResult(ActivityResultContracts.CreateDocument("text/plain")) { uri ->
|
||||
private val exportActivityResultLauncher =
|
||||
registerForActivityResult(ActivityResultContracts.CreateDocument("text/plain")) { uri ->
|
||||
try {
|
||||
val outputStream = uri?.let { contentResolver.openOutputStream(it) }
|
||||
if (outputStream != null) {
|
||||
|
|
@ -96,7 +116,8 @@ class ManageBlockedKeywordsActivity : BaseSimpleActivity(), RefreshRecyclerViewL
|
|||
}
|
||||
}
|
||||
|
||||
private val importActivityResultLauncher = registerForActivityResult(ActivityResultContracts.GetContent()) { uri ->
|
||||
private val importActivityResultLauncher =
|
||||
registerForActivityResult(ActivityResultContracts.GetContent()) { uri ->
|
||||
try {
|
||||
if (uri != null) {
|
||||
tryImportBlockedKeywordsFromFile(uri)
|
||||
|
|
@ -106,7 +127,6 @@ class ManageBlockedKeywordsActivity : BaseSimpleActivity(), RefreshRecyclerViewL
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
private fun tryImportBlockedKeywords() {
|
||||
if (isQPlus()) {
|
||||
Intent(Intent.ACTION_GET_CONTENT).apply {
|
||||
|
|
@ -202,7 +222,10 @@ class ManageBlockedKeywordsActivity : BaseSimpleActivity(), RefreshRecyclerViewL
|
|||
try {
|
||||
exportActivityResultLauncher.launch(file.name)
|
||||
} catch (e: ActivityNotFoundException) {
|
||||
toast(org.fossify.commons.R.string.system_service_disabled, Toast.LENGTH_LONG)
|
||||
toast(
|
||||
org.fossify.commons.R.string.system_service_disabled,
|
||||
Toast.LENGTH_LONG
|
||||
)
|
||||
} catch (e: Exception) {
|
||||
showErrorToast(e)
|
||||
}
|
||||
|
|
@ -211,7 +234,11 @@ class ManageBlockedKeywordsActivity : BaseSimpleActivity(), RefreshRecyclerViewL
|
|||
} else {
|
||||
handlePermission(PERMISSION_WRITE_STORAGE) { isAllowed ->
|
||||
if (isAllowed) {
|
||||
ExportBlockedNumbersDialog(this, config.lastBlockedKeywordExportPath, false) { file ->
|
||||
ExportBlockedNumbersDialog(
|
||||
this,
|
||||
config.lastBlockedKeywordExportPath,
|
||||
false
|
||||
) { file ->
|
||||
getFileOutputStream(file.toFileDirItem(this), true) { out ->
|
||||
exportBlockedKeywordsTo(out)
|
||||
}
|
||||
|
|
@ -229,7 +256,12 @@ class ManageBlockedKeywordsActivity : BaseSimpleActivity(), RefreshRecyclerViewL
|
|||
ensureBackgroundThread {
|
||||
val blockedKeywords = config.blockedKeywords.sorted().toArrayList()
|
||||
runOnUiThread {
|
||||
ManageBlockedKeywordsAdapter(this, blockedKeywords, this, binding.manageBlockedKeywordsList) {
|
||||
ManageBlockedKeywordsAdapter(
|
||||
activity = this,
|
||||
blockedKeywords = blockedKeywords,
|
||||
listener = this,
|
||||
recyclerView = binding.manageBlockedKeywordsList
|
||||
) {
|
||||
addOrEditBlockedKeyword(it as String)
|
||||
}.apply {
|
||||
binding.manageBlockedKeywordsList.adapter = this
|
||||
|
|
@ -241,7 +273,7 @@ class ManageBlockedKeywordsActivity : BaseSimpleActivity(), RefreshRecyclerViewL
|
|||
}
|
||||
}
|
||||
|
||||
fun addOrEditBlockedKeyword(keyword: String? = null) {
|
||||
private fun addOrEditBlockedKeyword(keyword: String? = null) {
|
||||
AddBlockedKeywordDialog(this, keyword) {
|
||||
updateBlockedKeywords()
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,7 +3,17 @@ package org.fossify.messages.dialogs
|
|||
import androidx.appcompat.app.AlertDialog
|
||||
import org.fossify.commons.activities.BaseSimpleActivity
|
||||
import org.fossify.commons.dialogs.FilePickerDialog
|
||||
import org.fossify.commons.extensions.*
|
||||
import org.fossify.commons.extensions.beGone
|
||||
import org.fossify.commons.extensions.getAlertDialogBuilder
|
||||
import org.fossify.commons.extensions.getCurrentFormattedDateTime
|
||||
import org.fossify.commons.extensions.getParentPath
|
||||
import org.fossify.commons.extensions.humanizePath
|
||||
import org.fossify.commons.extensions.internalStoragePath
|
||||
import org.fossify.commons.extensions.isAValidFilename
|
||||
import org.fossify.commons.extensions.setupDialogStuff
|
||||
import org.fossify.commons.extensions.showKeyboard
|
||||
import org.fossify.commons.extensions.toast
|
||||
import org.fossify.commons.extensions.value
|
||||
import org.fossify.commons.helpers.ensureBackgroundThread
|
||||
import org.fossify.messages.R
|
||||
import org.fossify.messages.databinding.DialogExportBlockedKeywordsBinding
|
||||
|
|
@ -21,7 +31,8 @@ class ExportBlockedKeywordsDialog(
|
|||
private val config = activity.config
|
||||
|
||||
init {
|
||||
val view = DialogExportBlockedKeywordsBinding.inflate(activity.layoutInflater, null, false).apply {
|
||||
val view =
|
||||
DialogExportBlockedKeywordsBinding.inflate(activity.layoutInflater, null, false).apply {
|
||||
exportBlockedKeywordsFolder.text = activity.humanizePath(realPath)
|
||||
exportBlockedKeywordsFilename.setText("${activity.getString(R.string.blocked_keywords)}_${activity.getCurrentFormattedDateTime()}")
|
||||
|
||||
|
|
@ -42,21 +53,27 @@ class ExportBlockedKeywordsDialog(
|
|||
.setPositiveButton(org.fossify.commons.R.string.ok, null)
|
||||
.setNegativeButton(org.fossify.commons.R.string.cancel, null)
|
||||
.apply {
|
||||
activity.setupDialogStuff(view.root, this, R.string.export_blocked_keywords) { alertDialog ->
|
||||
activity.setupDialogStuff(
|
||||
view = view.root,
|
||||
dialog = this,
|
||||
titleId = R.string.export_blocked_keywords
|
||||
) { alertDialog ->
|
||||
alertDialog.showKeyboard(view.exportBlockedKeywordsFilename)
|
||||
alertDialog.getButton(AlertDialog.BUTTON_POSITIVE).setOnClickListener {
|
||||
val filename = view.exportBlockedKeywordsFilename.value
|
||||
when {
|
||||
filename.isEmpty() -> activity.toast(org.fossify.commons.R.string.empty_name)
|
||||
filename.isAValidFilename() -> {
|
||||
val file = File(realPath, "$filename$BLOCKED_KEYWORDS_EXPORT_EXTENSION")
|
||||
val file =
|
||||
File(realPath, "$filename$BLOCKED_KEYWORDS_EXPORT_EXTENSION")
|
||||
if (!hidePath && file.exists()) {
|
||||
activity.toast(org.fossify.commons.R.string.name_taken)
|
||||
return@setOnClickListener
|
||||
}
|
||||
|
||||
ensureBackgroundThread {
|
||||
config.lastBlockedKeywordExportPath = file.absolutePath.getParentPath()
|
||||
config.lastBlockedKeywordExportPath =
|
||||
file.absolutePath.getParentPath()
|
||||
callback(file)
|
||||
alertDialog.dismiss()
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,7 +2,6 @@ package org.fossify.messages.helpers
|
|||
|
||||
import android.content.Context
|
||||
import org.fossify.commons.helpers.BaseConfig
|
||||
import org.fossify.commons.helpers.LAST_BLOCKED_NUMBERS_EXPORT_PATH
|
||||
import org.fossify.messages.extensions.getDefaultKeyboardHeight
|
||||
import org.fossify.messages.models.Conversation
|
||||
|
||||
|
|
@ -19,11 +18,13 @@ class Config(context: Context) : BaseConfig(context) {
|
|||
|
||||
var showCharacterCounter: Boolean
|
||||
get() = prefs.getBoolean(SHOW_CHARACTER_COUNTER, false)
|
||||
set(showCharacterCounter) = prefs.edit().putBoolean(SHOW_CHARACTER_COUNTER, showCharacterCounter).apply()
|
||||
set(showCharacterCounter) = prefs.edit()
|
||||
.putBoolean(SHOW_CHARACTER_COUNTER, showCharacterCounter).apply()
|
||||
|
||||
var useSimpleCharacters: Boolean
|
||||
get() = prefs.getBoolean(USE_SIMPLE_CHARACTERS, false)
|
||||
set(useSimpleCharacters) = prefs.edit().putBoolean(USE_SIMPLE_CHARACTERS, useSimpleCharacters).apply()
|
||||
set(useSimpleCharacters) = prefs.edit()
|
||||
.putBoolean(USE_SIMPLE_CHARACTERS, useSimpleCharacters).apply()
|
||||
|
||||
var sendOnEnter: Boolean
|
||||
get() = prefs.getBoolean(SEND_ON_ENTER, false)
|
||||
|
|
@ -31,19 +32,23 @@ class Config(context: Context) : BaseConfig(context) {
|
|||
|
||||
var enableDeliveryReports: Boolean
|
||||
get() = prefs.getBoolean(ENABLE_DELIVERY_REPORTS, false)
|
||||
set(enableDeliveryReports) = prefs.edit().putBoolean(ENABLE_DELIVERY_REPORTS, enableDeliveryReports).apply()
|
||||
set(enableDeliveryReports) = prefs.edit()
|
||||
.putBoolean(ENABLE_DELIVERY_REPORTS, enableDeliveryReports).apply()
|
||||
|
||||
var sendLongMessageMMS: Boolean
|
||||
get() = prefs.getBoolean(SEND_LONG_MESSAGE_MMS, false)
|
||||
set(sendLongMessageMMS) = prefs.edit().putBoolean(SEND_LONG_MESSAGE_MMS, sendLongMessageMMS).apply()
|
||||
set(sendLongMessageMMS) = prefs.edit().putBoolean(SEND_LONG_MESSAGE_MMS, sendLongMessageMMS)
|
||||
.apply()
|
||||
|
||||
var sendGroupMessageMMS: Boolean
|
||||
get() = prefs.getBoolean(SEND_GROUP_MESSAGE_MMS, false)
|
||||
set(sendGroupMessageMMS) = prefs.edit().putBoolean(SEND_GROUP_MESSAGE_MMS, sendGroupMessageMMS).apply()
|
||||
set(sendGroupMessageMMS) = prefs.edit()
|
||||
.putBoolean(SEND_GROUP_MESSAGE_MMS, sendGroupMessageMMS).apply()
|
||||
|
||||
var lockScreenVisibilitySetting: Int
|
||||
get() = prefs.getInt(LOCK_SCREEN_VISIBILITY, LOCK_SCREEN_SENDER_MESSAGE)
|
||||
set(lockScreenVisibilitySetting) = prefs.edit().putInt(LOCK_SCREEN_VISIBILITY, lockScreenVisibilitySetting).apply()
|
||||
set(lockScreenVisibilitySetting) = prefs.edit()
|
||||
.putInt(LOCK_SCREEN_VISIBILITY, lockScreenVisibilitySetting).apply()
|
||||
|
||||
var mmsFileSizeLimit: Long
|
||||
get() = prefs.getLong(MMS_FILE_SIZE_LIMIT, FILE_SIZE_600_KB)
|
||||
|
|
@ -51,7 +56,8 @@ class Config(context: Context) : BaseConfig(context) {
|
|||
|
||||
var pinnedConversations: Set<String>
|
||||
get() = prefs.getStringSet(PINNED_CONVERSATIONS, HashSet<String>())!!
|
||||
set(pinnedConversations) = prefs.edit().putStringSet(PINNED_CONVERSATIONS, pinnedConversations).apply()
|
||||
set(pinnedConversations) = prefs.edit()
|
||||
.putStringSet(PINNED_CONVERSATIONS, pinnedConversations).apply()
|
||||
|
||||
fun addPinnedConversationByThreadId(threadId: Long) {
|
||||
pinnedConversations = pinnedConversations.plus(threadId.toString())
|
||||
|
|
@ -66,7 +72,8 @@ class Config(context: Context) : BaseConfig(context) {
|
|||
}
|
||||
|
||||
fun removePinnedConversations(conversations: List<Conversation>) {
|
||||
pinnedConversations = pinnedConversations.minus(conversations.map { it.threadId.toString() })
|
||||
pinnedConversations =
|
||||
pinnedConversations.minus(conversations.map { it.threadId.toString() })
|
||||
}
|
||||
|
||||
var blockedKeywords: Set<String>
|
||||
|
|
@ -111,15 +118,18 @@ class Config(context: Context) : BaseConfig(context) {
|
|||
|
||||
var lastRecycleBinCheck: Long
|
||||
get() = prefs.getLong(LAST_RECYCLE_BIN_CHECK, 0L)
|
||||
set(lastRecycleBinCheck) = prefs.edit().putLong(LAST_RECYCLE_BIN_CHECK, lastRecycleBinCheck).apply()
|
||||
set(lastRecycleBinCheck) = prefs.edit().putLong(LAST_RECYCLE_BIN_CHECK, lastRecycleBinCheck)
|
||||
.apply()
|
||||
|
||||
var isArchiveAvailable: Boolean
|
||||
get() = prefs.getBoolean(IS_ARCHIVE_AVAILABLE, true)
|
||||
set(isArchiveAvailable) = prefs.edit().putBoolean(IS_ARCHIVE_AVAILABLE, isArchiveAvailable).apply()
|
||||
set(isArchiveAvailable) = prefs.edit().putBoolean(IS_ARCHIVE_AVAILABLE, isArchiveAvailable)
|
||||
.apply()
|
||||
|
||||
var customNotifications: Set<String>
|
||||
get() = prefs.getStringSet(CUSTOM_NOTIFICATIONS, HashSet<String>())!!
|
||||
set(customNotifications) = prefs.edit().putStringSet(CUSTOM_NOTIFICATIONS, customNotifications).apply()
|
||||
set(customNotifications) = prefs.edit()
|
||||
.putStringSet(CUSTOM_NOTIFICATIONS, customNotifications).apply()
|
||||
|
||||
fun addCustomNotificationsByThreadId(threadId: Long) {
|
||||
customNotifications = customNotifications.plus(threadId.toString())
|
||||
|
|
@ -131,5 +141,6 @@ class Config(context: Context) : BaseConfig(context) {
|
|||
|
||||
var lastBlockedKeywordExportPath: String
|
||||
get() = prefs.getString(LAST_BLOCKED_KEYWORD_EXPORT_PATH, "")!!
|
||||
set(lastBlockedNumbersExportPath) = prefs.edit().putString(LAST_BLOCKED_KEYWORD_EXPORT_PATH, lastBlockedNumbersExportPath).apply()
|
||||
set(lastBlockedNumbersExportPath) = prefs.edit()
|
||||
.putString(LAST_BLOCKED_KEYWORD_EXPORT_PATH, lastBlockedNumbersExportPath).apply()
|
||||
}
|
||||
|
|
|
|||
|
|
@ -26,8 +26,6 @@ const val SEND_GROUP_MESSAGE_MMS = "send_group_message_mms"
|
|||
const val MMS_FILE_SIZE_LIMIT = "mms_file_size_limit"
|
||||
const val PINNED_CONVERSATIONS = "pinned_conversations"
|
||||
const val BLOCKED_KEYWORDS = "blocked_keywords"
|
||||
const val BLOCKED_KEYWORDS_EXPORT_DELIMITER = ","
|
||||
const val BLOCKED_KEYWORDS_EXPORT_EXTENSION = ".txt"
|
||||
const val LAST_BLOCKED_KEYWORD_EXPORT_PATH = "last_blocked_keyword_export_path"
|
||||
const val EXPORT_SMS = "export_sms"
|
||||
const val EXPORT_MMS = "export_mms"
|
||||
|
|
@ -92,6 +90,9 @@ const val CAPTURE_AUDIO_INTENT = 46
|
|||
const val PICK_DOCUMENT_INTENT = 47
|
||||
const val PICK_CONTACT_INTENT = 48
|
||||
|
||||
const val BLOCKED_KEYWORDS_EXPORT_DELIMITER = ","
|
||||
const val BLOCKED_KEYWORDS_EXPORT_EXTENSION = ".txt"
|
||||
|
||||
fun refreshMessages() {
|
||||
EventBus.getDefault().post(Events.RefreshMessages())
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue