diff --git a/app/src/main/java/org/kiwix/kiwixmobile/webserver/ZimHostFragment.kt b/app/src/main/java/org/kiwix/kiwixmobile/webserver/ZimHostFragment.kt index 02e2a29da..5c776c8d9 100644 --- a/app/src/main/java/org/kiwix/kiwixmobile/webserver/ZimHostFragment.kt +++ b/app/src/main/java/org/kiwix/kiwixmobile/webserver/ZimHostFragment.kt @@ -20,7 +20,8 @@ package org.kiwix.kiwixmobile.webserver import android.Manifest import android.Manifest.permission.POST_NOTIFICATIONS -import android.app.ProgressDialog +import android.annotation.SuppressLint +import android.app.Dialog import android.content.ComponentName import android.content.Context import android.content.Intent @@ -54,6 +55,7 @@ import org.kiwix.kiwixmobile.core.utils.ServerUtils import org.kiwix.kiwixmobile.core.utils.SharedPreferenceUtil import org.kiwix.kiwixmobile.core.utils.dialog.AlertDialogShower import org.kiwix.kiwixmobile.core.utils.dialog.KiwixDialog +import org.kiwix.kiwixmobile.core.utils.dialog.KiwixDialog.StartServer import org.kiwix.kiwixmobile.core.zim_manager.fileselect_view.SelectionMode import org.kiwix.kiwixmobile.core.zim_manager.fileselect_view.adapter.BookOnDiskDelegate import org.kiwix.kiwixmobile.core.zim_manager.fileselect_view.adapter.BooksOnDiskAdapter @@ -85,7 +87,7 @@ class ZimHostFragment : BaseFragment(), ZimHostCallbacks, ZimHostContract.View { private var hotspotService: HotspotService? = null private var ip: String? = null private lateinit var serviceConnection: ServiceConnection - private var progressDialog: ProgressDialog? = null + private var dialog: Dialog? = null private var activityZimHostBinding: ActivityZimHostBinding? = null private val selectedBooksPath: ArrayList get() { @@ -271,12 +273,14 @@ class ZimHostFragment : BaseFragment(), ZimHostCallbacks, ZimHostContract.View { } } + @SuppressLint("InflateParams") private fun startKiwixHotspot() { - progressDialog = ProgressDialog.show( - requireActivity(), - getString(R.string.progress_dialog_starting_server), "", - true - ) + if (dialog == null) { + val dialogView: View = + layoutInflater.inflate(R.layout.item_custom_spinner, null) + dialog = alertDialogShower.create(StartServer { dialogView }) + } + dialog?.show() requireActivity().startService(createHotspotIntent(ACTION_CHECK_IP_ADDRESS)) } @@ -450,7 +454,7 @@ class ZimHostFragment : BaseFragment(), ZimHostCallbacks, ZimHostContract.View { } override fun onIpAddressValid() { - progressDialog?.dismiss() + dialog?.dismiss() requireActivity().startService( createHotspotIntent(ACTION_START_SERVER).putStringArrayListExtra( SELECTED_ZIM_PATHS_KEY, selectedBooksPath @@ -459,7 +463,7 @@ class ZimHostFragment : BaseFragment(), ZimHostCallbacks, ZimHostContract.View { } override fun onIpAddressInvalid() { - progressDialog?.dismiss() + dialog?.dismiss() toast(R.string.server_failed_message, Toast.LENGTH_SHORT) } diff --git a/app/src/main/res/layout/item_custom_spinner.xml b/app/src/main/res/layout/item_custom_spinner.xml new file mode 100644 index 000000000..2d8754ce1 --- /dev/null +++ b/app/src/main/res/layout/item_custom_spinner.xml @@ -0,0 +1,34 @@ + + + + + + + diff --git a/core/src/main/java/org/kiwix/kiwixmobile/core/utils/dialog/KiwixDialog.kt b/core/src/main/java/org/kiwix/kiwixmobile/core/utils/dialog/KiwixDialog.kt index 7a82c35f5..b9cb22a67 100644 --- a/core/src/main/java/org/kiwix/kiwixmobile/core/utils/dialog/KiwixDialog.kt +++ b/core/src/main/java/org/kiwix/kiwixmobile/core/utils/dialog/KiwixDialog.kt @@ -22,6 +22,7 @@ import android.app.Activity import android.view.View import org.kiwix.kiwixmobile.core.R +@Suppress("LongParameterList") sealed class KiwixDialog( val title: Int?, val message: Int?, @@ -227,6 +228,14 @@ sealed class KiwixDialog( getView = customGetView ) + data class StartServer(val customGetView: (() -> View)?) : KiwixDialog( + R.string.progress_dialog_starting_server, + null, + R.string.empty_string, + null, + getView = customGetView + ) + object NotesDiscardConfirmation : KiwixDialog( null, R.string.confirmation_alert_dialog_message, diff --git a/core/src/main/res/values/strings.xml b/core/src/main/res/values/strings.xml index 45ca4c023..2016ae4b7 100644 --- a/core/src/main/res/values/strings.xml +++ b/core/src/main/res/values/strings.xml @@ -338,4 +338,5 @@ Navigation History Cleared Go to Settings To perform this action, please grant notification access +