style(lint): Migrate to KTX extension function

Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
This commit is contained in:
Andy Scherzinger 2025-03-18 17:05:06 +01:00
parent 7e804f1738
commit db944ec1bd
No known key found for this signature in database
GPG Key ID: 6CADC7E3523C308B
37 changed files with 142 additions and 143 deletions

View File

@ -12,7 +12,6 @@ import android.accounts.Account
import android.annotation.SuppressLint
import android.content.Intent
import android.content.pm.ActivityInfo
import android.net.Uri
import android.os.Bundle
import android.security.KeyChain
import android.text.TextUtils
@ -22,22 +21,24 @@ import android.view.View
import android.view.inputmethod.EditorInfo
import android.widget.TextView
import androidx.activity.OnBackPressedCallback
import androidx.core.net.toUri
import autodagger.AutoInjector
import com.nextcloud.talk.R
import com.nextcloud.talk.activities.BaseActivity
import com.nextcloud.talk.api.NcApi
import com.nextcloud.talk.application.NextcloudTalkApplication
import com.nextcloud.talk.application.NextcloudTalkApplication.Companion.sharedApplication
import com.nextcloud.talk.databinding.ActivityServerSelectionBinding
import com.nextcloud.talk.models.json.capabilities.CapabilitiesOverall
import com.nextcloud.talk.models.json.generic.Status
import com.nextcloud.talk.users.UserManager
import com.nextcloud.talk.utils.AccountUtils
import com.nextcloud.talk.utils.ApiUtils
import com.nextcloud.talk.utils.CapabilitiesUtil
import com.nextcloud.talk.utils.UriUtils
import com.nextcloud.talk.utils.bundle.BundleKeys
import com.nextcloud.talk.utils.bundle.BundleKeys.ADD_ADDITIONAL_ACCOUNT
import com.nextcloud.talk.utils.bundle.BundleKeys.KEY_IS_ACCOUNT_IMPORT
import com.nextcloud.talk.utils.CapabilitiesUtil
import com.nextcloud.talk.utils.singletons.ApplicationWideMessageHolder
import io.reactivex.Observer
import io.reactivex.android.schedulers.AndroidSchedulers
@ -45,7 +46,6 @@ import io.reactivex.disposables.Disposable
import io.reactivex.schedulers.Schedulers
import java.security.cert.CertificateException
import javax.inject.Inject
import com.nextcloud.talk.application.NextcloudTalkApplication.Companion.sharedApplication
@AutoInjector(NextcloudTalkApplication::class)
class ServerSelectionActivity : BaseActivity() {
@ -198,10 +198,7 @@ class ServerSelectionActivity : BaseActivity() {
binding.importOrChooseProviderText.setOnClickListener {
val browserIntent = Intent(
Intent.ACTION_VIEW,
Uri.parse(
resources!!
.getString(R.string.nc_providers_url)
)
resources!!.getString(R.string.nc_providers_url).toUri()
)
startActivity(browserIntent)
}

View File

@ -12,8 +12,8 @@ import android.accounts.Account
import android.annotation.SuppressLint
import android.content.Intent
import android.content.pm.ActivityInfo
import android.graphics.drawable.ColorDrawable
import android.os.Bundle
import androidx.core.graphics.drawable.toDrawable
import androidx.preference.PreferenceManager
import androidx.recyclerview.widget.LinearLayoutManager
import autodagger.AutoInjector
@ -21,6 +21,7 @@ import com.nextcloud.talk.R
import com.nextcloud.talk.activities.BaseActivity
import com.nextcloud.talk.adapters.items.AdvancedUserItem
import com.nextcloud.talk.application.NextcloudTalkApplication
import com.nextcloud.talk.application.NextcloudTalkApplication.Companion.sharedApplication
import com.nextcloud.talk.data.user.model.User
import com.nextcloud.talk.databinding.ActivitySwitchAccountBinding
import com.nextcloud.talk.models.ImportAccount
@ -38,7 +39,6 @@ import eu.davidea.flexibleadapter.items.AbstractFlexibleItem
import org.osmdroid.config.Configuration
import java.net.CookieManager
import javax.inject.Inject
import com.nextcloud.talk.application.NextcloudTalkApplication.Companion.sharedApplication
/**
* Parts related to account import were either copied from or inspired by the great work done by David Luhmer at:
@ -108,7 +108,7 @@ class SwitchAccountActivity : BaseActivity() {
}
supportActionBar?.setDisplayHomeAsUpEnabled(true)
supportActionBar?.setDisplayShowHomeEnabled(true)
supportActionBar?.setIcon(ColorDrawable(resources!!.getColor(R.color.transparent, null)))
supportActionBar?.setIcon(resources!!.getColor(R.color.transparent, null).toDrawable())
supportActionBar?.title = resources!!.getString(R.string.nc_select_an_account)
}

View File

@ -49,6 +49,9 @@ import androidx.activity.result.contract.ActivityResultContracts
import androidx.annotation.DrawableRes
import androidx.appcompat.app.AlertDialog
import androidx.core.graphics.drawable.DrawableCompat
import androidx.core.graphics.toColorInt
import androidx.core.net.toUri
import androidx.core.view.isVisible
import androidx.lifecycle.ViewModelProvider
import autodagger.AutoInjector
import com.bluelinelabs.logansquare.LoganSquare
@ -1262,7 +1265,7 @@ class CallActivity : CallBaseActivity() {
.subHeadingTvColor(resources.getColor(R.color.bg_default, null))
.subHeadingTvSize(SPOTLIGHT_SUBHEADING_SIZE)
.subHeadingTvText(resources.getString(R.string.nc_push_to_talk_desc))
.maskColor(Color.parseColor("#dc000000"))
.maskColor("#dc000000".toColorInt())
.target(binding!!.microphoneButton)
.lineAnimDuration(FADE_IN_ANIMATION_DURATION)
.enableDismissAfterShown(true)
@ -2532,7 +2535,7 @@ class CallActivity : CallBaseActivity() {
val screenWidthPx = displayMetrics.widthPixels
val screenWidthDp = DisplayUtils.convertPixelToDp(screenWidthPx.toFloat(), applicationContext).toInt()
var newXafterRotate = 0f
val newYafterRotate: Float = if (binding!!.callInfosLinearLayout.visibility == View.VISIBLE) {
val newYafterRotate: Float = if (binding!!.callInfosLinearLayout.isVisible) {
Y_POS_CALL_INFO
} else {
Y_POS_NO_CALL_INFO
@ -2825,7 +2828,7 @@ class CallActivity : CallBaseActivity() {
val ringtoneUri: Uri? = if (isIncomingCallFromNotification) {
getCallRingtoneUri(applicationContext, appPreferences)
} else {
Uri.parse("android.resource://" + applicationContext.packageName + "/raw/tr110_1_kap8_3_freiton1")
("android.resource://" + applicationContext.packageName + "/raw/tr110_1_kap8_3_freiton1").toUri()
}
if (ringtoneUri != null) {
mediaPlayer = MediaPlayer()

View File

@ -8,9 +8,9 @@
package com.nextcloud.talk.adapters.items
import android.accounts.Account
import android.net.Uri
import android.text.TextUtils
import android.view.View
import androidx.core.net.toUri
import androidx.recyclerview.widget.RecyclerView
import com.nextcloud.talk.R
import com.nextcloud.talk.adapters.items.AdvancedUserItem.UserItemViewHolder
@ -75,9 +75,9 @@ class AdvancedUserItem(
holder.binding.userName.text = model.displayName
}
if (user != null && !TextUtils.isEmpty(user.baseUrl)) {
val host = Uri.parse(user.baseUrl).host
val host = user.baseUrl!!.toUri().host
if (!TextUtils.isEmpty(host)) {
holder.binding.account.text = Uri.parse(user.baseUrl).host
holder.binding.account.text = user.baseUrl!!.toUri().host
} else {
holder.binding.account.text = user.baseUrl
}

View File

@ -10,11 +10,11 @@ package com.nextcloud.talk.adapters.messages
import android.annotation.SuppressLint
import android.content.Context
import android.content.Intent
import android.net.Uri
import android.util.Log
import android.view.View
import android.widget.ImageView
import androidx.core.content.ContextCompat
import androidx.core.net.toUri
import autodagger.AutoInjector
import coil.load
import com.nextcloud.android.common.ui.theme.utils.ColorRole
@ -100,7 +100,7 @@ class IncomingDeckCardViewHolder(incomingView: View, payload: Any) : MessageHold
}
binding.cardView.setOnClickListener {
val browserIntent = Intent(Intent.ACTION_VIEW, Uri.parse(cardLink))
val browserIntent = Intent(Intent.ACTION_VIEW, cardLink!!.toUri())
browserIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
context.startActivity(browserIntent)
}

View File

@ -12,13 +12,13 @@ package com.nextcloud.talk.adapters.messages
import android.annotation.SuppressLint
import android.content.Context
import android.content.Intent
import android.net.Uri
import android.util.Log
import android.util.TypedValue
import android.view.MotionEvent
import android.view.View
import android.webkit.WebView
import android.webkit.WebViewClient
import androidx.core.net.toUri
import autodagger.AutoInjector
import coil.load
import com.google.android.material.snackbar.Snackbar
@ -223,7 +223,7 @@ class IncomingLocationMessageViewHolder(incomingView: View, payload: Any) :
override fun shouldOverrideUrlLoading(view: WebView?, url: String?): Boolean {
return if (url != null && UriUtils.hasHttpProtocolPrefixed(url)
) {
view?.context?.startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(url)))
view?.context?.startActivity(Intent(Intent.ACTION_VIEW, url.toUri()))
true
} else {
false
@ -259,7 +259,7 @@ class IncomingLocationMessageViewHolder(incomingView: View, payload: Any) :
private fun openGeoLink() {
if (!locationGeoLink.isNullOrEmpty()) {
val geoLinkWithMarker = addMarkerToGeoLink(locationGeoLink!!)
val browserIntent = Intent(Intent.ACTION_VIEW, Uri.parse(geoLinkWithMarker))
val browserIntent = Intent(Intent.ACTION_VIEW, geoLinkWithMarker.toUri())
browserIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
context.startActivity(browserIntent)
} else {

View File

@ -8,13 +8,13 @@ package com.nextcloud.talk.adapters.messages
import android.content.Context
import android.content.Intent
import android.net.Uri
import android.util.Log
import android.view.View
import androidx.core.net.toUri
import coil.load
import com.nextcloud.talk.api.NcApi
import com.nextcloud.talk.databinding.ReferenceInsideMessageBinding
import com.nextcloud.talk.chat.data.model.ChatMessage
import com.nextcloud.talk.databinding.ReferenceInsideMessageBinding
import com.nextcloud.talk.models.json.opengraph.OpenGraphOverall
import com.nextcloud.talk.utils.ApiUtils
import io.reactivex.Observer
@ -82,7 +82,7 @@ class LinkPreview {
}
binding.referenceWrapper.setOnClickListener {
val browserIntent = Intent(Intent.ACTION_VIEW, Uri.parse(referenceLink))
val browserIntent = Intent(Intent.ACTION_VIEW, referenceLink!!.toUri())
browserIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
context.startActivity(browserIntent)
}

View File

@ -11,12 +11,12 @@ package com.nextcloud.talk.adapters.messages
import android.annotation.SuppressLint
import android.content.Context
import android.content.Intent
import android.net.Uri
import android.util.Log
import android.view.View
import android.widget.ImageView
import androidx.appcompat.content.res.AppCompatResources
import androidx.core.content.ContextCompat
import androidx.core.net.toUri
import autodagger.AutoInjector
import coil.load
import com.nextcloud.android.common.ui.theme.utils.ColorRole
@ -121,7 +121,7 @@ class OutcomingDeckCardViewHolder(
binding.checkMark.contentDescription = readStatusContentDescriptionString
binding.cardView.setOnClickListener {
val browserIntent = Intent(Intent.ACTION_VIEW, Uri.parse(cardLink))
val browserIntent = Intent(Intent.ACTION_VIEW, cardLink!!.toUri())
browserIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
context.startActivity(browserIntent)
}

View File

@ -11,7 +11,6 @@ package com.nextcloud.talk.adapters.messages
import android.annotation.SuppressLint
import android.content.Context
import android.content.Intent
import android.net.Uri
import android.util.Log
import android.util.TypedValue
import android.view.MotionEvent
@ -19,6 +18,7 @@ import android.view.View
import android.webkit.WebView
import android.webkit.WebViewClient
import androidx.appcompat.content.res.AppCompatResources
import androidx.core.net.toUri
import autodagger.AutoInjector
import coil.load
import com.google.android.flexbox.FlexboxLayout
@ -160,7 +160,7 @@ class OutcomingLocationMessageViewHolder(incomingView: View) :
override fun shouldOverrideUrlLoading(view: WebView?, url: String?): Boolean {
return if (url != null && UriUtils.hasHttpProtocolPrefixed(url)
) {
view?.context?.startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(url)))
view?.context?.startActivity(Intent(Intent.ACTION_VIEW, url.toUri()))
true
} else {
false
@ -259,7 +259,7 @@ class OutcomingLocationMessageViewHolder(incomingView: View) :
private fun openGeoLink() {
if (!locationGeoLink.isNullOrEmpty()) {
val geoLinkWithMarker = addMarkerToGeoLink(locationGeoLink!!)
val browserIntent = Intent(Intent.ACTION_VIEW, Uri.parse(geoLinkWithMarker))
val browserIntent = Intent(Intent.ACTION_VIEW, geoLinkWithMarker.toUri())
browserIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
context.startActivity(browserIntent)
} else {

View File

@ -13,7 +13,6 @@ import android.annotation.SuppressLint
import android.content.Context
import android.content.Intent
import android.graphics.drawable.Drawable
import android.net.Uri
import android.os.Handler
import android.util.Base64
import android.util.Log
@ -21,6 +20,7 @@ import android.view.View
import android.widget.ImageView
import android.widget.ProgressBar
import androidx.core.content.ContextCompat
import androidx.core.net.toUri
import androidx.emoji2.widget.EmojiTextView
import autodagger.AutoInjector
import com.google.android.material.card.MaterialCardView
@ -29,12 +29,12 @@ import com.nextcloud.talk.R
import com.nextcloud.talk.application.NextcloudTalkApplication
import com.nextcloud.talk.application.NextcloudTalkApplication.Companion.sharedApplication
import com.nextcloud.talk.chat.data.model.ChatMessage
import com.nextcloud.talk.filebrowser.models.BrowserFile
import com.nextcloud.talk.filebrowser.webdav.ReadFilesystemOperation
import com.nextcloud.talk.data.user.model.User
import com.nextcloud.talk.databinding.ReactionsInsideMessageBinding
import com.nextcloud.talk.extensions.loadChangelogBotAvatar
import com.nextcloud.talk.extensions.loadFederatedUserAvatar
import com.nextcloud.talk.filebrowser.models.BrowserFile
import com.nextcloud.talk.filebrowser.webdav.ReadFilesystemOperation
import com.nextcloud.talk.ui.theme.ViewThemeUtils
import com.nextcloud.talk.users.UserManager
import com.nextcloud.talk.utils.DateUtils
@ -140,7 +140,7 @@ abstract class PreviewMessageViewHolder(itemView: View?, payload: Any?) :
} else {
if (message.messageType == ChatMessage.MessageType.SINGLE_LINK_IMAGE_MESSAGE.name) {
clickView!!.setOnClickListener {
val browserIntent = Intent(Intent.ACTION_VIEW, Uri.parse(message.imageUrl))
val browserIntent = Intent(Intent.ACTION_VIEW, message.imageUrl!!.toUri())
browserIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
context!!.startActivity(browserIntent)
}

View File

@ -9,7 +9,6 @@ package com.nextcloud.talk.adapters.messages
import android.annotation.SuppressLint
import android.content.Context
import android.content.Intent
import android.net.Uri
import android.text.Spannable
import android.text.SpannableString
import android.text.TextPaint
@ -18,13 +17,14 @@ import android.text.style.ClickableSpan
import android.view.View
import android.view.ViewGroup
import androidx.core.content.ContextCompat
import androidx.core.net.toUri
import androidx.core.view.ViewCompat
import autodagger.AutoInjector
import com.nextcloud.talk.R
import com.nextcloud.talk.application.NextcloudTalkApplication
import com.nextcloud.talk.application.NextcloudTalkApplication.Companion.sharedApplication
import com.nextcloud.talk.databinding.ItemSystemMessageBinding
import com.nextcloud.talk.chat.data.model.ChatMessage
import com.nextcloud.talk.databinding.ItemSystemMessageBinding
import com.nextcloud.talk.utils.DateUtils
import com.nextcloud.talk.utils.DisplayUtils
import com.nextcloud.talk.utils.database.user.CurrentUserProviderNew
@ -96,7 +96,7 @@ class SystemMessageViewHolder(itemView: View) : MessageHolders
if (newStartIndex != -1) {
val clickableSpan = object : ClickableSpan() {
override fun onClick(widget: View) {
val browserIntent = Intent(Intent.ACTION_VIEW, Uri.parse(link))
val browserIntent = Intent(Intent.ACTION_VIEW, link.toUri())
browserIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
context?.startActivity(browserIntent)
}

View File

@ -24,8 +24,6 @@ import android.content.Intent
import android.content.pm.PackageManager
import android.content.res.AssetFileDescriptor
import android.database.Cursor
import android.graphics.drawable.BitmapDrawable
import android.graphics.drawable.ColorDrawable
import android.graphics.drawable.Drawable
import android.net.Uri
import android.os.Build
@ -58,6 +56,8 @@ import androidx.core.content.PermissionChecker
import androidx.core.content.PermissionChecker.PERMISSION_GRANTED
import androidx.core.graphics.ColorUtils
import androidx.core.graphics.drawable.toBitmap
import androidx.core.graphics.drawable.toDrawable
import androidx.core.net.toUri
import androidx.core.os.bundleOf
import androidx.core.text.bold
import androidx.emoji2.text.EmojiCompat
@ -1022,24 +1022,20 @@ class ChatActivity :
}
if (uiState.userAbsence.replacementUserDisplayName != null) {
var imageUri = Uri.parse(
ApiUtils.getUrlForAvatar(
var imageUri = ApiUtils.getUrlForAvatar(
conversationUser?.baseUrl,
uiState.userAbsence
.replacementUserId,
false
)
)
).toUri()
if (DisplayUtils.isDarkModeOn(context)) {
imageUri = Uri.parse(
ApiUtils.getUrlForAvatarDarkTheme(
imageUri = ApiUtils.getUrlForAvatarDarkTheme(
conversationUser?.baseUrl,
uiState
.userAbsence
.replacementUserId,
false
)
)
).toUri()
}
binding.outOfOfficeContainer.findViewById<TextView>(R.id.absenceReplacement).text =
context.resources.getString(R.string.user_absence_replacement)
@ -1168,7 +1164,7 @@ class ChatActivity :
}
supportActionBar?.setDisplayHomeAsUpEnabled(true)
supportActionBar?.setDisplayShowHomeEnabled(true)
supportActionBar?.setIcon(ColorDrawable(resources!!.getColor(R.color.transparent, null)))
supportActionBar?.setIcon(resources!!.getColor(R.color.transparent, null).toDrawable())
setActionBarTitle()
viewThemeUtils.material.themeToolbar(binding.chatToolbar)
}
@ -1511,7 +1507,7 @@ class ChatActivity :
)
viewThemeUtils.talk.themeStatusDrawable(context, status)
binding.chatToolbar.findViewById<ImageView>(R.id.chat_toolbar_avatar)
.setImageDrawable(BitmapDrawable(resources, bitmap))
.setImageDrawable(bitmap.toDrawable(resources))
binding.chatToolbar.findViewById<ImageView>(R.id.chat_toolbar_status)
.setImageDrawable(status)
binding.chatToolbar.findViewById<ImageView>(R.id.chat_toolbar_status).contentDescription =
@ -1967,7 +1963,7 @@ class ChatActivity :
val filenamesWithLineBreaks = StringBuilder("\n")
for (file in filesToUpload) {
val filename = FileUtils.getFileName(Uri.parse(file), context)
val filename = FileUtils.getFileName(file.toUri(), context)
filenamesWithLineBreaks.append(filename).append("\n")
}
@ -2043,7 +2039,7 @@ class ChatActivity :
val filenamesWithLineBreaks = StringBuilder("\n")
for (file in filesToUpload) {
val filename = FileUtils.getFileName(Uri.parse(file), context)
val filename = FileUtils.getFileName(file.toUri(), context)
filenamesWithLineBreaks.append(filename).append("\n")
}

View File

@ -8,7 +8,6 @@
package com.nextcloud.talk.chat
import android.content.res.Resources
import android.graphics.drawable.ColorDrawable
import android.graphics.drawable.Drawable
import android.os.Build
import android.os.Bundle
@ -40,6 +39,8 @@ import androidx.appcompat.app.AppCompatActivity
import androidx.appcompat.content.res.AppCompatResources
import androidx.appcompat.view.ContextThemeWrapper
import androidx.core.content.ContextCompat
import androidx.core.graphics.drawable.toDrawable
import androidx.core.view.isVisible
import androidx.core.widget.doAfterTextChanged
import androidx.emoji2.widget.EmojiTextView
import androidx.fragment.app.Fragment
@ -476,7 +477,7 @@ class MessageInputFragment : Fragment() {
binding.fragmentMessageInputView.messageSendButton.visibility =
if (binding.fragmentMessageInputView.inputEditText.text.isEmpty() ||
binding.fragmentEditView.editMessageView.visibility == View.VISIBLE
binding.fragmentEditView.editMessageView.isVisible
) {
View.GONE
} else {
@ -608,7 +609,7 @@ class MessageInputFragment : Fragment() {
private fun setupMentionAutocomplete() {
val elevation = MENTION_AUTO_COMPLETE_ELEVATION
resources.let {
val backgroundDrawable = ColorDrawable(it.getColor(R.color.bg_default, null))
val backgroundDrawable = it.getColor(R.color.bg_default, null).toDrawable()
val presenter = MentionAutocompletePresenter(
requireContext(),
chatActivity.roomToken,

View File

@ -13,7 +13,6 @@ package com.nextcloud.talk.conversationinfo
import android.annotation.SuppressLint
import android.app.Activity
import android.content.Intent
import android.graphics.drawable.ColorDrawable
import android.os.Bundle
import android.text.TextUtils
import android.util.Log
@ -27,6 +26,7 @@ import androidx.activity.result.contract.ActivityResultContracts
import androidx.annotation.DrawableRes
import androidx.appcompat.app.AlertDialog
import androidx.core.content.res.ResourcesCompat
import androidx.core.graphics.drawable.toDrawable
import androidx.fragment.app.FragmentTransaction
import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.lifecycleScope
@ -321,7 +321,7 @@ class ConversationInfoActivity :
}
supportActionBar?.setDisplayHomeAsUpEnabled(true)
supportActionBar?.setDisplayShowHomeEnabled(true)
supportActionBar?.setIcon(ColorDrawable(resources!!.getColor(android.R.color.transparent, null)))
supportActionBar?.setIcon(resources!!.getColor(android.R.color.transparent, null).toDrawable())
supportActionBar?.title = if (hasAvatarSpacing) {
" " + resources!!.getString(R.string.nc_conversation_menu_conversation_info)
} else {

View File

@ -8,7 +8,6 @@
package com.nextcloud.talk.conversationinfoedit
import android.app.Activity
import android.graphics.drawable.ColorDrawable
import android.os.Bundle
import android.text.InputFilter
import android.text.TextUtils
@ -18,6 +17,7 @@ import android.view.MenuItem
import android.view.View
import androidx.activity.result.ActivityResult
import androidx.activity.result.contract.ActivityResultContracts
import androidx.core.graphics.drawable.toDrawable
import androidx.core.net.toFile
import androidx.core.view.ViewCompat
import androidx.lifecycle.ViewModelProvider
@ -252,7 +252,7 @@ class ConversationInfoEditActivity : BaseActivity() {
}
supportActionBar?.setDisplayHomeAsUpEnabled(true)
supportActionBar?.setDisplayShowHomeEnabled(true)
supportActionBar?.setIcon(ColorDrawable(resources!!.getColor(android.R.color.transparent, null)))
supportActionBar?.setIcon(resources!!.getColor(android.R.color.transparent, null).toDrawable())
supportActionBar?.title = resources!!.getString(R.string.nc_conversation_menu_conversation_info)
viewThemeUtils.material.themeToolbar(binding.conversationInfoEditToolbar)
@ -319,7 +319,7 @@ class ConversationInfoEditActivity : BaseActivity() {
conversation!!.name
)
) {
conversation!!.name?.let { binding.avatarImage.loadUserAvatar(conversationUser, it, true, false) }
conversation!!.name.let { binding.avatarImage.loadUserAvatar(conversationUser, it, true, false) }
}
ConversationEnums.ConversationType.ROOM_GROUP_CALL, ConversationEnums.ConversationType.ROOM_PUBLIC_CALL -> {

View File

@ -19,9 +19,7 @@ import android.content.ActivityNotFoundException
import android.content.Context
import android.content.Intent
import android.content.pm.PackageManager
import android.graphics.drawable.ColorDrawable
import android.graphics.drawable.Drawable
import android.net.Uri
import android.os.Build
import android.os.Bundle
import android.os.Handler
@ -42,6 +40,8 @@ import androidx.annotation.OptIn
import androidx.appcompat.app.AlertDialog
import androidx.appcompat.widget.SearchView
import androidx.compose.ui.platform.ViewCompositionStrategy
import androidx.core.graphics.drawable.toDrawable
import androidx.core.net.toUri
import androidx.core.view.MenuItemCompat
import androidx.core.view.isVisible
import androidx.fragment.app.DialogFragment
@ -638,7 +638,7 @@ class ConversationsListActivity :
}
supportActionBar?.setDisplayHomeAsUpEnabled(true)
supportActionBar?.setDisplayShowHomeEnabled(true)
supportActionBar?.setIcon(ColorDrawable(resources!!.getColor(R.color.transparent, null)))
supportActionBar?.setIcon(resources!!.getColor(R.color.transparent, null).toDrawable())
supportActionBar?.title = resources!!.getString(R.string.nc_app_product_name)
viewThemeUtils.material.themeToolbar(binding.conversationListToolbar)
}
@ -1473,7 +1473,7 @@ class ConversationsListActivity :
if (platformPermissionUtil.isFilesPermissionGranted()) {
val fileNamesWithLineBreaks = StringBuilder("\n")
for (file in filesToShare!!) {
val filename = FileUtils.getFileName(Uri.parse(file), context)
val filename = FileUtils.getFileName(file.toUri(), context)
fileNamesWithLineBreaks.append(filename).append("\n")
}
val confirmationQuestion: String = if (filesToShare!!.size == 1) {
@ -1900,11 +1900,11 @@ class ConversationsListActivity :
.setPositiveButton(R.string.nc_dialog_outdated_client_option_update) { _, _ ->
try {
startActivity(
Intent(Intent.ACTION_VIEW, Uri.parse(CLIENT_UPGRADE_MARKET_LINK + packageName))
Intent(Intent.ACTION_VIEW, (CLIENT_UPGRADE_MARKET_LINK + packageName).toUri())
)
} catch (e: ActivityNotFoundException) {
startActivity(
Intent(Intent.ACTION_VIEW, Uri.parse(CLIENT_UPGRADE_GPLAY_LINK + packageName))
Intent(Intent.ACTION_VIEW, (CLIENT_UPGRADE_GPLAY_LINK + packageName).toUri())
)
}
}

View File

@ -10,7 +10,6 @@ import android.annotation.SuppressLint
import android.content.ClipData
import android.content.ClipboardManager
import android.content.Intent
import android.net.Uri
import android.os.Build
import android.os.Build.MANUFACTURER
import android.os.Build.MODEL
@ -28,6 +27,7 @@ import androidx.compose.runtime.mutableStateOf
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.colorResource
import androidx.compose.ui.res.stringResource
import androidx.core.net.toUri
import autodagger.AutoInjector
import com.nextcloud.talk.BuildConfig
import com.nextcloud.talk.R
@ -35,8 +35,8 @@ import com.nextcloud.talk.activities.BaseActivity
import com.nextcloud.talk.api.NcApi
import com.nextcloud.talk.application.NextcloudTalkApplication
import com.nextcloud.talk.arbitrarystorage.ArbitraryStorageManager
import com.nextcloud.talk.components.StandardAppBar
import com.nextcloud.talk.components.SetupSystemBars
import com.nextcloud.talk.components.StandardAppBar
import com.nextcloud.talk.users.UserManager
import com.nextcloud.talk.utils.BrandingUtils
import com.nextcloud.talk.utils.ClosedInterfaceImpl
@ -151,7 +151,7 @@ class DiagnoseActivity : BaseActivity() {
val intent = Intent(Intent.ACTION_SENDTO).apply {
val appName = context.resources.getString(R.string.nc_app_product_name)
data = Uri.parse("mailto:")
data = "mailto:".toUri()
putExtra(Intent.EXTRA_SUBJECT, appName)
putExtra(Intent.EXTRA_TEXT, text)
}
@ -166,7 +166,7 @@ class DiagnoseActivity : BaseActivity() {
startActivity(
Intent(
Intent.ACTION_VIEW,
Uri.parse(resources!!.getString(R.string.nc_talk_android_issues_url))
resources!!.getString(R.string.nc_talk_android_issues_url).toUri()
)
)
}

View File

@ -11,18 +11,17 @@
package com.nextcloud.talk.extensions
import android.content.Context
import android.graphics.Bitmap
import android.graphics.Canvas
import android.graphics.Color
import android.graphics.Paint
import android.graphics.drawable.BitmapDrawable
import android.graphics.drawable.ColorDrawable
import android.graphics.drawable.Drawable
import android.graphics.drawable.LayerDrawable
import android.util.Log
import android.widget.ImageView
import androidx.core.content.ContextCompat
import androidx.core.content.res.ResourcesCompat
import androidx.core.graphics.createBitmap
import androidx.core.graphics.drawable.toDrawable
import coil.annotation.ExperimentalCoilApi
import coil.imageLoader
import coil.load
@ -326,7 +325,7 @@ fun ImageView.loadChangelogBotAvatar(): io.reactivex.disposables.Disposable {
fun ImageView.loadBotsAvatar(): io.reactivex.disposables.Disposable {
val layers = arrayOfNulls<Drawable>(2)
layers[0] = ColorDrawable(context.getColor(R.color.black))
layers[0] = context.getColor(R.color.black).toDrawable()
layers[1] = TextDrawable(context, ">")
val layerDrawable = LayerDrawable(layers)
val data: Any = layerDrawable
@ -386,7 +385,7 @@ fun ImageView.loadGuestAvatar(baseUrl: String, name: String, big: Boolean): io.r
@Suppress("MagicNumber")
private fun createTextDrawable(context: Context, letter: String): Drawable {
val size = 100
val bitmap = Bitmap.createBitmap(size, size, Bitmap.Config.ARGB_8888)
val bitmap = createBitmap(size, size)
val canvas = Canvas(bitmap)
val paint = Paint().apply {
@ -406,7 +405,7 @@ private fun createTextDrawable(context: Context, letter: String): Drawable {
val yPos = (canvas.height / 2 - (textPaint.descent() + textPaint.ascent()) / 2)
canvas.drawText(letter.take(1), xPos, yPos, textPaint)
return BitmapDrawable(context.resources, bitmap)
return bitmap.toDrawable(context.resources)
}
private class DisposableWrapper(private val disposable: coil.request.Disposable) : io.reactivex.disposables

View File

@ -7,10 +7,10 @@
package com.nextcloud.talk.invitation
import android.content.Intent
import android.graphics.drawable.ColorDrawable
import android.os.Bundle
import android.view.View
import androidx.activity.OnBackPressedCallback
import androidx.core.graphics.drawable.toDrawable
import androidx.lifecycle.ViewModelProvider
import autodagger.AutoInjector
import com.google.android.material.snackbar.Snackbar
@ -168,7 +168,7 @@ class InvitationsActivity : BaseActivity() {
}
supportActionBar?.setDisplayHomeAsUpEnabled(true)
supportActionBar?.setDisplayShowHomeEnabled(true)
supportActionBar?.setIcon(ColorDrawable(resources!!.getColor(R.color.transparent, null)))
supportActionBar?.setIcon(resources!!.getColor(R.color.transparent, null).toDrawable())
viewThemeUtils.material.themeToolbar(binding.invitationsToolbar)
}
}

View File

@ -15,7 +15,6 @@ import android.content.Context
import android.content.Intent
import android.content.pm.PackageManager
import android.graphics.Bitmap
import android.net.Uri
import android.os.Build
import android.os.Bundle
import android.os.Handler
@ -33,6 +32,7 @@ import androidx.core.app.Person
import androidx.core.app.RemoteInput
import androidx.core.content.ContextCompat
import androidx.core.graphics.drawable.toBitmap
import androidx.core.net.toUri
import androidx.emoji2.text.EmojiCompat
import androidx.work.Data
import androidx.work.Worker
@ -272,7 +272,7 @@ class NotificationWorker(context: Context, workerParams: WorkerParameters) : Wor
val soundUri = getCallRingtoneUri(applicationContext, appPreferences)
val notificationChannelId = NotificationUtils.NotificationChannels.NOTIFICATION_CHANNEL_CALLS_V4.name
val uri = Uri.parse(signatureVerification.user!!.baseUrl!!)
val uri = signatureVerification.user!!.baseUrl!!.toUri()
val baseUrl = uri.host
val notification =
@ -499,7 +499,7 @@ class NotificationWorker(context: Context, workerParams: WorkerParameters) : Wor
0
}
val pendingIntent = PendingIntent.getActivity(context, requestCode, intent, intentFlag)
val uri = Uri.parse(signatureVerification.user!!.baseUrl!!)
val uri = signatureVerification.user!!.baseUrl!!.toUri()
val baseUrl = uri.host
var contentTitle: CharSequence? = ""

View File

@ -19,6 +19,7 @@ import android.os.Bundle
import android.os.SystemClock
import android.util.Log
import androidx.core.app.NotificationCompat
import androidx.core.net.toUri
import androidx.work.Data
import androidx.work.ExistingWorkPolicy
import androidx.work.OneTimeWorkRequest
@ -110,7 +111,7 @@ class UploadAndShareFilesWorker(val context: Context, workerParameters: WorkerPa
require(sourceFile.isNotEmpty())
checkNotNull(roomToken)
val sourceFileUri = Uri.parse(sourceFile)
val sourceFileUri = sourceFile.toUri()
fileName = FileUtils.getFileName(sourceFileUri, context)
file = FileUtils.getFileFromUri(context, sourceFileUri)
val remotePath = getRemotePath(currentUser)

View File

@ -9,7 +9,6 @@ package com.nextcloud.talk.location
import android.app.SearchManager
import android.content.Context
import android.content.Intent
import android.graphics.drawable.ColorDrawable
import android.os.Bundle
import android.text.InputType
import android.util.Log
@ -17,6 +16,7 @@ import android.view.Menu
import android.view.MenuItem
import android.view.inputmethod.EditorInfo
import androidx.appcompat.widget.SearchView
import androidx.core.graphics.drawable.toDrawable
import androidx.lifecycle.ViewModelProvider
import androidx.preference.PreferenceManager
import androidx.recyclerview.widget.LinearLayoutManager
@ -132,7 +132,7 @@ class GeocodingActivity :
}
supportActionBar?.setDisplayHomeAsUpEnabled(true)
supportActionBar?.setDisplayShowHomeEnabled(true)
supportActionBar?.setIcon(ColorDrawable(resources!!.getColor(R.color.transparent, null)))
supportActionBar?.setIcon(resources!!.getColor(R.color.transparent, null).toDrawable())
supportActionBar?.title = ""
viewThemeUtils.material.themeToolbar(binding.geocodingToolbar)
}

View File

@ -13,7 +13,6 @@ import android.app.SearchManager
import android.content.Context
import android.content.Intent
import android.content.pm.PackageManager
import android.graphics.drawable.ColorDrawable
import android.location.Location
import android.location.LocationListener
import android.location.LocationManager
@ -28,6 +27,7 @@ import androidx.activity.OnBackPressedCallback
import androidx.appcompat.widget.SearchView
import androidx.core.content.PermissionChecker
import androidx.core.content.res.ResourcesCompat
import androidx.core.graphics.drawable.toDrawable
import androidx.core.view.MenuItemCompat
import androidx.preference.PreferenceManager
import autodagger.AutoInjector
@ -178,7 +178,7 @@ class LocationPickerActivity :
}
supportActionBar?.setDisplayHomeAsUpEnabled(true)
supportActionBar?.setDisplayShowHomeEnabled(true)
supportActionBar?.setIcon(ColorDrawable(resources!!.getColor(android.R.color.transparent, null)))
supportActionBar?.setIcon(resources!!.getColor(android.R.color.transparent, null).toDrawable())
supportActionBar?.title = context.getString(R.string.nc_share_location)
viewThemeUtils.material.themeToolbar(binding.locationPickerToolbar)
}

View File

@ -7,9 +7,9 @@
package com.nextcloud.talk.openconversations
import android.content.Intent
import android.graphics.drawable.ColorDrawable
import android.os.Bundle
import android.view.View
import androidx.core.graphics.drawable.toDrawable
import androidx.core.widget.doOnTextChanged
import androidx.lifecycle.ViewModelProvider
import autodagger.AutoInjector
@ -143,7 +143,7 @@ class ListOpenConversationsActivity : BaseActivity() {
}
supportActionBar?.setDisplayHomeAsUpEnabled(true)
supportActionBar?.setDisplayShowHomeEnabled(true)
supportActionBar?.setIcon(ColorDrawable(resources!!.getColor(R.color.transparent, null)))
supportActionBar?.setIcon(resources!!.getColor(R.color.transparent, null).toDrawable())
viewThemeUtils.material.themeToolbar(binding.openConversationsToolbar)
}
}

View File

@ -11,8 +11,6 @@ package com.nextcloud.talk.profile
import android.app.Activity
import android.content.pm.PackageManager
import android.graphics.drawable.ColorDrawable
import android.net.Uri
import android.os.Bundle
import android.text.Editable
import android.text.TextUtils
@ -27,7 +25,9 @@ import androidx.activity.result.ActivityResult
import androidx.activity.result.contract.ActivityResultContracts
import androidx.annotation.DrawableRes
import androidx.core.content.ContextCompat
import androidx.core.graphics.drawable.toDrawable
import androidx.core.net.toFile
import androidx.core.net.toUri
import androidx.core.view.ViewCompat
import androidx.recyclerview.widget.RecyclerView
import autodagger.AutoInjector
@ -208,7 +208,7 @@ class ProfileActivity : BaseActivity() {
}
supportActionBar?.setDisplayHomeAsUpEnabled(true)
supportActionBar?.setDisplayShowHomeEnabled(true)
supportActionBar?.setIcon(ColorDrawable(resources!!.getColor(android.R.color.transparent, null)))
supportActionBar?.setIcon(resources!!.getColor(android.R.color.transparent, null).toDrawable())
supportActionBar?.title = context.getString(R.string.nc_profile_personal_info_title)
viewThemeUtils.material.themeToolbar(binding.profileToolbar)
}
@ -313,7 +313,7 @@ class ProfileActivity : BaseActivity() {
private fun showUserProfile() {
if (currentUser!!.baseUrl != null) {
binding.userinfoBaseurl.text = Uri.parse(currentUser!!.baseUrl!!).host
binding.userinfoBaseurl.text = currentUser!!.baseUrl!!.toUri().host
}
DisplayUtils.loadAvatarImage(currentUser, binding.avatarImage, false)
if (!TextUtils.isEmpty(userInfo?.displayName)) {

View File

@ -20,7 +20,6 @@ import android.content.DialogInterface
import android.content.Intent
import android.content.pm.PackageManager
import android.graphics.PorterDuff
import android.graphics.drawable.ColorDrawable
import android.media.RingtoneManager
import android.net.Uri
import android.os.Build
@ -35,6 +34,8 @@ import android.widget.Toast
import androidx.appcompat.app.AlertDialog
import androidx.core.content.ContextCompat
import androidx.core.content.res.ResourcesCompat
import androidx.core.graphics.drawable.toDrawable
import androidx.core.net.toUri
import androidx.core.view.ViewCompat
import androidx.lifecycle.lifecycleScope
import androidx.work.OneTimeWorkRequest
@ -199,7 +200,7 @@ class SettingsActivity :
registerChangeListeners()
if (currentUser != null) {
binding.domainText.text = Uri.parse(currentUser!!.baseUrl).host
binding.domainText.text = currentUser!!.baseUrl!!.toUri().host
setupServerAgeWarning()
if (currentUser!!.displayName != null) {
binding.nameText.text = currentUser!!.displayName
@ -260,7 +261,7 @@ class SettingsActivity :
}
supportActionBar?.setDisplayHomeAsUpEnabled(true)
supportActionBar?.setDisplayShowHomeEnabled(true)
supportActionBar?.setIcon(ColorDrawable(resources!!.getColor(android.R.color.transparent, null)))
supportActionBar?.setIcon(resources!!.getColor(android.R.color.transparent, null).toDrawable())
supportActionBar?.title = context.getString(R.string.nc_settings)
viewThemeUtils.material.themeToolbar(binding.settingsToolbar)
}
@ -441,7 +442,7 @@ class SettingsActivity :
startActivity(
Intent(
Intent.ACTION_VIEW,
Uri.parse(resources.getString(R.string.notification_checklist_url))
resources.getString(R.string.notification_checklist_url).toUri()
)
)
}
@ -449,7 +450,7 @@ class SettingsActivity :
startActivity(
Intent(
Intent.ACTION_VIEW,
Uri.parse(resources.getString(R.string.dontkillmyapp_url))
resources.getString(R.string.dontkillmyapp_url).toUri()
)
)
}
@ -503,7 +504,7 @@ class SettingsActivity :
startActivity(
Intent(
Intent.ACTION_VIEW,
Uri.parse(resources!!.getString(R.string.nc_source_code_url))
resources!!.getString(R.string.nc_source_code_url).toUri()
)
)
}
@ -525,7 +526,7 @@ class SettingsActivity :
startActivity(
Intent(
Intent.ACTION_VIEW,
Uri.parse(resources!!.getString(R.string.nc_privacy_url))
resources!!.getString(R.string.nc_privacy_url).toUri()
)
)
}
@ -540,7 +541,7 @@ class SettingsActivity :
startActivity(
Intent(
Intent.ACTION_VIEW,
Uri.parse(resources!!.getString(R.string.nc_gpl3_url))
resources!!.getString(R.string.nc_gpl3_url).toUri()
)
)
}

View File

@ -7,8 +7,8 @@
*/
package com.nextcloud.talk.shareditems.repositories
import android.net.Uri
import android.util.Log
import androidx.core.net.toUri
import com.nextcloud.talk.R
import com.nextcloud.talk.api.NcApi
import com.nextcloud.talk.application.NextcloudTalkApplication.Companion.sharedApplication
@ -135,7 +135,7 @@ class SharedItemsRepositoryImpl @Inject constructor(private val ncApi: NcApi, pr
actorParameters["id"]!!,
actorParameters["name"]!!,
dateTime,
Uri.parse(objectParameters["id"]!!.replace("geo:", "geo:0,0?z=11&q="))
objectParameters["id"]!!.replace("geo:", "geo:0,0?z=11&q=").toUri()
)
}
@ -146,7 +146,7 @@ class SharedItemsRepositoryImpl @Inject constructor(private val ncApi: NcApi, pr
actorParameters["id"]!!,
actorParameters["name"]!!,
dateTime,
Uri.parse(objectParameters["link"]!!)
objectParameters["link"]!!.toUri()
)
}
@ -168,7 +168,7 @@ class SharedItemsRepositoryImpl @Inject constructor(private val ncApi: NcApi, pr
return ncApi.getSharedItemsOverview(
credentials,
ApiUtils.getUrlForChatSharedItemsOverview(1, parameters.baseUrl!!, parameters.roomToken),
ApiUtils.getUrlForChatSharedItemsOverview(1, parameters.baseUrl, parameters.roomToken),
1
).map {
val types = mutableSetOf<SharedItemType>()

View File

@ -11,13 +11,13 @@ import android.app.AlertDialog
import android.content.ClipData
import android.content.ClipboardManager
import android.content.Context
import android.graphics.drawable.ColorDrawable
import android.os.Bundle
import android.text.method.ScrollingMovementMethod
import android.util.Log
import android.view.View
import android.widget.AdapterView
import android.widget.ArrayAdapter
import androidx.core.graphics.drawable.toDrawable
import androidx.lifecycle.ViewModelProvider
import autodagger.AutoInjector
import com.google.android.material.dialog.MaterialAlertDialogBuilder
@ -130,7 +130,7 @@ class TranslateActivity : BaseActivity() {
}
supportActionBar?.setDisplayHomeAsUpEnabled(true)
supportActionBar?.setDisplayShowHomeEnabled(true)
supportActionBar?.setIcon(ColorDrawable(resources!!.getColor(R.color.transparent, null)))
supportActionBar?.setIcon(resources!!.getColor(R.color.transparent, null).toDrawable())
supportActionBar?.title = resources!!.getString(R.string.translation)
viewThemeUtils.material.themeToolbar(binding.translationToolbar)
}

View File

@ -14,16 +14,17 @@ import android.graphics.Paint
import android.util.AttributeSet
import androidx.annotation.ColorInt
import androidx.appcompat.widget.AppCompatSeekBar
import androidx.core.graphics.toColorInt
import com.nextcloud.talk.utils.AudioUtils
import kotlin.math.roundToInt
class WaveformSeekBar : AppCompatSeekBar {
@ColorInt
private var primary: Int = Color.parseColor("#679ff5")
private var primary: Int = "#679ff5".toColorInt()
@ColorInt
private var secondary: Int = Color.parseColor("#a6c6f7")
private var secondary: Int = "#a6c6f7".toColorInt()
private var rawData: FloatArray = floatArrayOf()
private var waveData: FloatArray = floatArrayOf()
private var savedMeasure: Int = 0

View File

@ -12,16 +12,17 @@ import android.content.Intent
import android.net.Uri
import android.os.Bundle
import android.util.Log
import androidx.core.net.toUri
import com.afollestad.materialdialogs.LayoutMode
import com.afollestad.materialdialogs.MaterialDialog
import com.afollestad.materialdialogs.bottomsheets.BottomSheet
import com.nextcloud.talk.R
import com.nextcloud.talk.api.NcApi
import com.nextcloud.talk.chat.ChatActivity
import com.nextcloud.talk.bottomsheet.items.BasicListItemWithImage
import com.nextcloud.talk.bottomsheet.items.listItemsWithImage
import com.nextcloud.talk.data.user.model.User
import com.nextcloud.talk.chat.ChatActivity
import com.nextcloud.talk.chat.data.model.ChatMessage
import com.nextcloud.talk.data.user.model.User
import com.nextcloud.talk.models.json.conversations.RoomOverall
import com.nextcloud.talk.models.json.hovercard.HoverCardAction
import com.nextcloud.talk.models.json.hovercard.HoverCardOverall
@ -161,14 +162,14 @@ class ProfileBottomSheet(val ncApi: NcApi, val userModel: User, val viewThemeUti
private fun composeEmail(address: String, context: Context) {
val addresses = arrayListOf(address)
val intent = Intent(Intent.ACTION_SENDTO).apply {
data = Uri.parse("mailto:") // only email apps should handle this
data = "mailto:".toUri() // only email apps should handle this
putExtra(Intent.EXTRA_EMAIL, addresses)
}
context.startActivity(intent)
}
private fun openProfile(hyperlink: String, context: Context) {
val webpage: Uri = Uri.parse(hyperlink)
val webpage: Uri = hyperlink.toUri()
val intent = Intent(Intent.ACTION_VIEW, webpage)
context.startActivity(intent)
}

View File

@ -10,11 +10,11 @@ package com.nextcloud.talk.ui.dialog
import android.annotation.SuppressLint
import android.app.Dialog
import android.net.Uri
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.core.net.toUri
import androidx.fragment.app.DialogFragment
import androidx.recyclerview.widget.LinearLayoutManager
import autodagger.AutoInjector
@ -78,7 +78,7 @@ class ChooseAccountShareToDialogFragment : DialogFragment() {
if (user != null) {
binding!!.currentAccount.userName.text = user.displayName
binding!!.currentAccount.ticker.visibility = View.GONE
binding!!.currentAccount.account.text = Uri.parse(user.baseUrl!!).host
binding!!.currentAccount.account.text = user.baseUrl!!.toUri().host
viewThemeUtils!!.platform.colorImageView(binding!!.currentAccount.accountMenu, ColorRole.PRIMARY)
if (user.baseUrl != null &&
(user.baseUrl!!.startsWith("http://") || user.baseUrl!!.startsWith("https://"))

View File

@ -20,7 +20,6 @@ import android.graphics.Canvas
import android.graphics.Color
import android.graphics.Typeface
import android.graphics.drawable.Drawable
import android.net.Uri
import android.text.Spannable
import android.text.SpannableString
import android.text.Spanned
@ -46,7 +45,9 @@ import androidx.annotation.XmlRes
import androidx.core.content.ContextCompat
import androidx.core.content.res.ResourcesCompat
import androidx.core.graphics.ColorUtils
import androidx.core.graphics.createBitmap
import androidx.core.graphics.drawable.DrawableCompat
import androidx.core.net.toUri
import androidx.emoji2.text.EmojiCompat
import coil.Coil.imageLoader
import coil.request.ImageRequest
@ -87,12 +88,12 @@ object DisplayUtils {
return currentNightMode == Configuration.UI_MODE_NIGHT_YES
}
fun setClickableString(string: String, url: String?, textView: TextView) {
fun setClickableString(string: String, url: String, textView: TextView) {
val spannableString = SpannableString(string)
spannableString.setSpan(
object : ClickableSpan() {
override fun onClick(widget: View) {
val browserIntent = Intent(Intent.ACTION_VIEW, Uri.parse(url))
val browserIntent = Intent(Intent.ACTION_VIEW, url.toUri())
browserIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
sharedApplication!!.applicationContext.startActivity(browserIntent)
}
@ -111,11 +112,7 @@ object DisplayUtils {
}
fun getBitmap(drawable: Drawable): Bitmap {
val bitmap = Bitmap.createBitmap(
drawable.intrinsicWidth,
drawable.intrinsicHeight,
Bitmap.Config.ARGB_8888
)
val bitmap = createBitmap(drawable.intrinsicWidth, drawable.intrinsicHeight)
val canvas = Canvas(bitmap)
drawable.setBounds(0, 0, canvas.width, canvas.height)
drawable.draw(canvas)

View File

@ -16,6 +16,7 @@ import android.view.View
import android.widget.ImageView
import android.widget.ProgressBar
import androidx.core.content.FileProvider
import androidx.core.net.toUri
import androidx.emoji2.widget.EmojiTextView
import androidx.work.Data
import androidx.work.OneTimeWorkRequest
@ -23,13 +24,13 @@ import androidx.work.WorkInfo
import androidx.work.WorkManager
import com.google.android.material.snackbar.Snackbar
import com.nextcloud.talk.R
import com.nextcloud.talk.adapters.messages.PreviewMessageViewHolder
import com.nextcloud.talk.chat.data.model.ChatMessage
import com.nextcloud.talk.data.user.model.User
import com.nextcloud.talk.fullscreenfile.FullScreenImageActivity
import com.nextcloud.talk.fullscreenfile.FullScreenMediaActivity
import com.nextcloud.talk.fullscreenfile.FullScreenTextViewerActivity
import com.nextcloud.talk.adapters.messages.PreviewMessageViewHolder
import com.nextcloud.talk.data.user.model.User
import com.nextcloud.talk.jobs.DownloadFileToCacheWorker
import com.nextcloud.talk.chat.data.model.ChatMessage
import com.nextcloud.talk.utils.AccountUtils.canWeOpenFilesApp
import com.nextcloud.talk.utils.Mimetype.AUDIO_MPEG
import com.nextcloud.talk.utils.Mimetype.AUDIO_OGG
@ -212,7 +213,7 @@ class FileViewerUtils(private val context: Context, private val user: User) {
} else {
val browserIntent = Intent(
Intent.ACTION_VIEW,
Uri.parse(link)
link.toUri()
)
browserIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
context.startActivity(browserIntent)

View File

@ -18,6 +18,7 @@ import android.service.notification.StatusBarNotification
import android.text.TextUtils
import android.util.Log
import androidx.core.graphics.drawable.IconCompat
import androidx.core.net.toUri
import coil.executeBlocking
import coil.imageLoader
import coil.request.ImageRequest
@ -287,14 +288,14 @@ object NotificationUtils {
// Ringtone uris are required to register the notification channels -> get uri from preferences.
return if (TextUtils.isEmpty(ringtonePreferencesString)) {
Uri.parse(defaultRingtoneUri)
defaultRingtoneUri.toUri()
} else {
try {
val ringtoneSettings =
LoganSquare.parse(ringtonePreferencesString, RingtoneSettings::class.java)
ringtoneSettings.ringtoneUri
} catch (exception: IOException) {
Uri.parse(defaultRingtoneUri)
defaultRingtoneUri.toUri()
}
}
}

View File

@ -9,7 +9,7 @@ package com.nextcloud.talk.utils
import android.annotation.SuppressLint
import android.app.Activity
import android.content.Intent
import android.net.Uri
import androidx.core.net.toUri
import com.nextcloud.talk.R
object ShareUtils {
@ -26,7 +26,7 @@ object ShareUtils {
return
}
val uriBuilder = Uri.parse(baseUrl)
val uriBuilder = baseUrl.toUri()
.buildUpon()
if (!canGeneratePrettyURL) {

View File

@ -7,7 +7,7 @@
*/
package com.nextcloud.talk.utils
import android.net.Uri
import androidx.core.net.toUri
class UriUtils {
companion object {
@ -17,7 +17,7 @@ class UriUtils {
fun extractInstanceInternalFileFileId(url: String): String {
// https://cloud.nextcloud.com/apps/files/?dir=/Engineering&fileid=41
return Uri.parse(url).getQueryParameter("fileid").toString()
return url.toUri().getQueryParameter("fileid").toString()
}
fun isInstanceInternalFileShareUrl(baseUrl: String, url: String): Boolean {
@ -35,12 +35,12 @@ class UriUtils {
fun extractInstanceInternalFileShareFileId(url: String): String {
// https://cloud.nextcloud.com/f/41
return Uri.parse(url).lastPathSegment ?: ""
return url.toUri().lastPathSegment ?: ""
}
fun extractRoomTokenFromTalkUrl(url: String): String {
// https://cloud.nextcloud.com/call/123456789
return Uri.parse(url).lastPathSegment ?: ""
return url.toUri().lastPathSegment ?: ""
}
fun isInstanceInternalFileUrl(baseUrl: String, url: String): Boolean {
@ -49,7 +49,7 @@ class UriUtils {
url.startsWith("$baseUrl/apps/files/") ||
url.startsWith("$baseUrl/index.php/apps/files/")
) &&
Uri.parse(url).queryParameterNames.contains("fileid") &&
url.toUri().queryParameterNames.contains("fileid") &&
Regex(""".*fileid=\d*""").matches(url)
}
@ -61,7 +61,7 @@ class UriUtils {
fun extractInstanceInternalFileFileIdNew(url: String): String {
// https://cloud.nextcloud.com/apps/files/files/41?dir=/
return Uri.parse(url).lastPathSegment ?: ""
return url.toUri().lastPathSegment ?: ""
}
}
}

View File

@ -9,13 +9,13 @@ package com.nextcloud.talk.utils.message
import android.content.Context
import android.content.Intent
import android.graphics.Typeface
import android.net.Uri
import android.text.SpannableString
import android.text.SpannableStringBuilder
import android.text.Spanned
import android.text.style.StyleSpan
import android.util.Log
import android.view.View
import androidx.core.net.toUri
import com.nextcloud.talk.R
import com.nextcloud.talk.chat.data.model.ChatMessage
import com.nextcloud.talk.ui.theme.ViewThemeUtils
@ -139,7 +139,7 @@ class MessageUtils(val context: Context) {
"file" -> {
itemView.setOnClickListener { v ->
val browserIntent = Intent(Intent.ACTION_VIEW, Uri.parse(individualHashMap["link"]))
val browserIntent = Intent(Intent.ACTION_VIEW, individualHashMap["link"]!!.toUri())
context.startActivity(browserIntent)
}
}