chinwag-android/app/src/main/java/com/keylesspalace/tusky/util/ActivityExtensions.kt
Levi Bard f14a82325d
Followed hashtags view improvements (#4475)
Add click and longpress handler to the followed hashtags view

#4459
2024-05-31 13:43:41 +02:00

65 lines
2.2 KiB
Kotlin

@file:JvmName("ActivityExtensions")
package com.keylesspalace.tusky.util
import android.app.Activity
import android.content.ClipData
import android.content.ClipboardManager
import android.content.Context
import android.content.Intent
import android.os.Build
import android.widget.Toast
import androidx.activity.ComponentActivity
import androidx.annotation.AnimRes
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.LifecycleEventObserver
import com.keylesspalace.tusky.BaseActivity
fun Activity.startActivityWithSlideInAnimation(intent: Intent) {
startActivity(intent.withSlideInAnimation())
}
fun Intent.withSlideInAnimation(): Intent {
// the new transition api needs to be called by the activity that is the result of the transition,
// so we pass a flag that BaseActivity will respect.
return putExtra(BaseActivity.OPEN_WITH_SLIDE_IN, true)
}
/**
* Call this method in Activity.onCreate() to configure the open or close transitions.
*/
@Suppress("DEPRECATION")
fun ComponentActivity.overrideActivityTransitionCompat(
overrideType: Int,
@AnimRes enterAnim: Int,
@AnimRes exitAnim: Int
) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE) {
overrideActivityTransition(overrideType, enterAnim, exitAnim)
} else {
if (overrideType == ActivityConstants.OVERRIDE_TRANSITION_OPEN) {
overridePendingTransition(enterAnim, exitAnim)
} else {
lifecycle.addObserver(
LifecycleEventObserver { _, event ->
if (event == Lifecycle.Event.ON_PAUSE && isFinishing) {
overridePendingTransition(enterAnim, exitAnim)
}
}
)
}
}
}
fun Activity.copyToClipboard(text: CharSequence, popupText: CharSequence, clipboardLabel: CharSequence = "") {
val clipboard = getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager
clipboard.setPrimaryClip(ClipData.newPlainText(clipboardLabel, text))
if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.S_V2) {
Toast.makeText(this, popupText, Toast.LENGTH_SHORT).show()
}
}
object ActivityConstants {
const val OVERRIDE_TRANSITION_OPEN = 0
const val OVERRIDE_TRANSITION_CLOSE = 1
}