Encrypted overlay filesystems implementation for Android.
Also available on GitHub: https://github.com/hardcore-sushi/DroidFS
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
34 lines
1.1 KiB
34 lines
1.1 KiB
package sushi.hardcore.droidfs |
|
|
|
import androidx.appcompat.app.AppCompatActivity |
|
import kotlinx.coroutines.CoroutineScope |
|
import kotlinx.coroutines.Dispatchers |
|
import kotlinx.coroutines.launch |
|
import kotlinx.coroutines.withContext |
|
import sushi.hardcore.droidfs.databinding.DialogLoadingBinding |
|
import sushi.hardcore.droidfs.widgets.CustomAlertDialogBuilder |
|
|
|
abstract class LoadingTask<T>(val activity: AppCompatActivity, themeValue: String, loadingMessageResId: Int) { |
|
private val dialogLoading = CustomAlertDialogBuilder(activity, themeValue) |
|
.setView( |
|
DialogLoadingBinding.inflate(activity.layoutInflater).apply { |
|
textMessage.text = activity.getString(loadingMessageResId) |
|
}.root |
|
) |
|
.setTitle(R.string.loading) |
|
.setCancelable(false) |
|
.create() |
|
|
|
abstract suspend fun doTask(): T |
|
|
|
fun startTask(scope: CoroutineScope, onDone: (T) -> Unit) { |
|
dialogLoading.show() |
|
scope.launch { |
|
val result = withContext(Dispatchers.IO) { |
|
doTask() |
|
} |
|
dialogLoading.dismiss() |
|
onDone(result) |
|
} |
|
} |
|
} |