WD: doctor list by region and sorting by name and distance
parent
615f3bfa8e
commit
c6787ff966
@ -1,52 +1,52 @@
|
|||||||
package com.cloud.diplomaticquarterapp
|
//package com.cloud.diplomaticquarterapp
|
||||||
import com.ejada.hmg.MainActivity
|
//import com.ejada.hmg.MainActivity
|
||||||
import android.os.Build
|
//import android.os.Build
|
||||||
import android.util.Log
|
//import android.util.Log
|
||||||
import androidx.annotation.RequiresApi
|
//import androidx.annotation.RequiresApi
|
||||||
import com.cloud.diplomaticquarterapp.penguin.PenguinView
|
//import com.cloud.diplomaticquarterapp.penguin.PenguinView
|
||||||
import io.flutter.embedding.engine.FlutterEngine
|
//import io.flutter.embedding.engine.FlutterEngine
|
||||||
import io.flutter.plugin.common.MethodCall
|
//import io.flutter.plugin.common.MethodCall
|
||||||
import io.flutter.plugin.common.MethodChannel
|
//import io.flutter.plugin.common.MethodChannel
|
||||||
|
//
|
||||||
class PenguinInPlatformBridge(
|
//class PenguinInPlatformBridge(
|
||||||
private var flutterEngine: FlutterEngine,
|
// private var flutterEngine: FlutterEngine,
|
||||||
private var mainActivity: MainActivity
|
// private var mainActivity: MainActivity
|
||||||
) {
|
//) {
|
||||||
|
//
|
||||||
private lateinit var channel: MethodChannel
|
// private lateinit var channel: MethodChannel
|
||||||
|
//
|
||||||
companion object {
|
// companion object {
|
||||||
private const val CHANNEL = "launch_penguin_ui"
|
// private const val CHANNEL = "launch_penguin_ui"
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
@RequiresApi(Build.VERSION_CODES.O)
|
// @RequiresApi(Build.VERSION_CODES.O)
|
||||||
fun create() {
|
// fun create() {
|
||||||
// openTok = OpenTok(mainActivity, flutterEngine)
|
//// openTok = OpenTok(mainActivity, flutterEngine)
|
||||||
channel = MethodChannel(flutterEngine.dartExecutor.binaryMessenger, CHANNEL)
|
// channel = MethodChannel(flutterEngine.dartExecutor.binaryMessenger, CHANNEL)
|
||||||
channel.setMethodCallHandler { call: MethodCall, result: MethodChannel.Result ->
|
// channel.setMethodCallHandler { call: MethodCall, result: MethodChannel.Result ->
|
||||||
when (call.method) {
|
// when (call.method) {
|
||||||
"launchPenguin" -> {
|
// "launchPenguin" -> {
|
||||||
print("the platform channel is being called")
|
// print("the platform channel is being called")
|
||||||
val args = call.arguments as Map<String, Any>?
|
// val args = call.arguments as Map<String, Any>?
|
||||||
Log.d("TAG", "configureFlutterEngine: $args")
|
// Log.d("TAG", "configureFlutterEngine: $args")
|
||||||
println("args")
|
// println("args")
|
||||||
args?.let {
|
// args?.let {
|
||||||
PenguinView(
|
// PenguinView(
|
||||||
mainActivity,
|
// mainActivity,
|
||||||
100,
|
// 100,
|
||||||
args,
|
// args,
|
||||||
flutterEngine.dartExecutor.binaryMessenger,
|
// flutterEngine.dartExecutor.binaryMessenger,
|
||||||
activity = mainActivity,
|
// activity = mainActivity,
|
||||||
channel
|
// channel
|
||||||
)
|
// )
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
else -> {
|
// else -> {
|
||||||
result.notImplemented()
|
// result.notImplemented()
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
}
|
//}
|
||||||
|
|||||||
@ -1,97 +1,97 @@
|
|||||||
package com.cloud.diplomaticquarterapp.penguin
|
//package com.cloud.diplomaticquarterapp.penguin
|
||||||
|
//
|
||||||
import android.content.Context
|
//import android.content.Context
|
||||||
import com.google.gson.Gson
|
//import com.google.gson.Gson
|
||||||
import com.peng.pennavmap.PlugAndPlaySDK
|
//import com.peng.pennavmap.PlugAndPlaySDK
|
||||||
import com.peng.pennavmap.connections.ApiController
|
//import com.peng.pennavmap.connections.ApiController
|
||||||
import com.peng.pennavmap.interfaces.RefIdDelegate
|
//import com.peng.pennavmap.interfaces.RefIdDelegate
|
||||||
import com.peng.pennavmap.models.TokenModel
|
//import com.peng.pennavmap.models.TokenModel
|
||||||
import com.peng.pennavmap.models.postmodels.PostToken
|
//import com.peng.pennavmap.models.postmodels.PostToken
|
||||||
import com.peng.pennavmap.utils.AppSharedData
|
//import com.peng.pennavmap.utils.AppSharedData
|
||||||
import okhttp3.ResponseBody
|
//import okhttp3.ResponseBody
|
||||||
import retrofit2.Call
|
//import retrofit2.Call
|
||||||
import retrofit2.Callback
|
//import retrofit2.Callback
|
||||||
import retrofit2.Response
|
//import retrofit2.Response
|
||||||
import android.util.Log
|
//import android.util.Log
|
||||||
|
//
|
||||||
|
//
|
||||||
class PenguinNavigator() {
|
//class PenguinNavigator() {
|
||||||
|
//
|
||||||
fun navigateTo(mContext: Context, refID: String, delegate: RefIdDelegate,clientID : String,clientKey : String ) {
|
// fun navigateTo(mContext: Context, refID: String, delegate: RefIdDelegate,clientID : String,clientKey : String ) {
|
||||||
val postToken = PostToken(clientID, clientKey)
|
// val postToken = PostToken(clientID, clientKey)
|
||||||
getToken(mContext, postToken, object : RefIdDelegate {
|
// getToken(mContext, postToken, object : RefIdDelegate {
|
||||||
override fun onRefByIDSuccess(PoiId: String?) {
|
// override fun onRefByIDSuccess(PoiId: String?) {
|
||||||
Log.e("navigateTo", "PoiId is+++++++ $PoiId")
|
// Log.e("navigateTo", "PoiId is+++++++ $PoiId")
|
||||||
|
//
|
||||||
PlugAndPlaySDK.navigateTo(mContext, refID, object : RefIdDelegate {
|
// PlugAndPlaySDK.navigateTo(mContext, refID, object : RefIdDelegate {
|
||||||
override fun onRefByIDSuccess(PoiId: String?) {
|
// override fun onRefByIDSuccess(PoiId: String?) {
|
||||||
Log.e("navigateTo", "PoiId 2is+++++++ $PoiId")
|
// Log.e("navigateTo", "PoiId 2is+++++++ $PoiId")
|
||||||
|
//
|
||||||
delegate.onRefByIDSuccess(refID)
|
// delegate.onRefByIDSuccess(refID)
|
||||||
|
//
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
override fun onGetByRefIDError(error: String?) {
|
// override fun onGetByRefIDError(error: String?) {
|
||||||
delegate.onRefByIDSuccess(error)
|
// delegate.onRefByIDSuccess(error)
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
})
|
// })
|
||||||
|
//
|
||||||
|
//
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
override fun onGetByRefIDError(error: String?) {
|
// override fun onGetByRefIDError(error: String?) {
|
||||||
delegate.onRefByIDSuccess(error)
|
// delegate.onRefByIDSuccess(error)
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
})
|
// })
|
||||||
|
//
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
fun getToken(mContext: Context, postToken: PostToken?, apiTokenCallBack: RefIdDelegate) {
|
// fun getToken(mContext: Context, postToken: PostToken?, apiTokenCallBack: RefIdDelegate) {
|
||||||
try {
|
// try {
|
||||||
// Create the API call
|
// // Create the API call
|
||||||
val purposesCall: Call<ResponseBody> = ApiController.getInstance(mContext)
|
// val purposesCall: Call<ResponseBody> = ApiController.getInstance(mContext)
|
||||||
.apiMethods
|
// .apiMethods
|
||||||
.getToken(postToken)
|
// .getToken(postToken)
|
||||||
|
//
|
||||||
// Enqueue the call for asynchronous execution
|
// // Enqueue the call for asynchronous execution
|
||||||
purposesCall.enqueue(object : Callback<ResponseBody?> {
|
// purposesCall.enqueue(object : Callback<ResponseBody?> {
|
||||||
override fun onResponse(
|
// override fun onResponse(
|
||||||
call: Call<ResponseBody?>,
|
// call: Call<ResponseBody?>,
|
||||||
response: Response<ResponseBody?>
|
// response: Response<ResponseBody?>
|
||||||
) {
|
// ) {
|
||||||
if (response.isSuccessful() && response.body() != null) {
|
// if (response.isSuccessful() && response.body() != null) {
|
||||||
try {
|
// try {
|
||||||
response.body()?.use { responseBody ->
|
// response.body()?.use { responseBody ->
|
||||||
val responseBodyString: String = responseBody.string() // Use `string()` to get the actual response content
|
// val responseBodyString: String = responseBody.string() // Use `string()` to get the actual response content
|
||||||
if (responseBodyString.isNotEmpty()) {
|
// if (responseBodyString.isNotEmpty()) {
|
||||||
val tokenModel = Gson().fromJson(responseBodyString, TokenModel::class.java)
|
// val tokenModel = Gson().fromJson(responseBodyString, TokenModel::class.java)
|
||||||
if (tokenModel != null && tokenModel.token != null) {
|
// if (tokenModel != null && tokenModel.token != null) {
|
||||||
AppSharedData.apiToken = tokenModel.token
|
// AppSharedData.apiToken = tokenModel.token
|
||||||
apiTokenCallBack.onRefByIDSuccess(tokenModel.token)
|
// apiTokenCallBack.onRefByIDSuccess(tokenModel.token)
|
||||||
} else {
|
// } else {
|
||||||
apiTokenCallBack.onGetByRefIDError("Failed to parse token model")
|
// apiTokenCallBack.onGetByRefIDError("Failed to parse token model")
|
||||||
}
|
// }
|
||||||
} else {
|
// } else {
|
||||||
apiTokenCallBack.onGetByRefIDError("Response body is empty")
|
// apiTokenCallBack.onGetByRefIDError("Response body is empty")
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
} catch (e: Exception) {
|
// } catch (e: Exception) {
|
||||||
apiTokenCallBack.onGetByRefIDError("An error occurred: ${e.message}")
|
// apiTokenCallBack.onGetByRefIDError("An error occurred: ${e.message}")
|
||||||
}
|
// }
|
||||||
} else {
|
// } else {
|
||||||
apiTokenCallBack.onGetByRefIDError("Unsuccessful response: " + response.code())
|
// apiTokenCallBack.onGetByRefIDError("Unsuccessful response: " + response.code())
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
override fun onFailure(call: Call<ResponseBody?>, t: Throwable) {
|
// override fun onFailure(call: Call<ResponseBody?>, t: Throwable) {
|
||||||
apiTokenCallBack.onGetByRefIDError(t.message)
|
// apiTokenCallBack.onGetByRefIDError(t.message)
|
||||||
}
|
// }
|
||||||
})
|
// })
|
||||||
} catch (error: Exception) {
|
// } catch (error: Exception) {
|
||||||
apiTokenCallBack.onGetByRefIDError("Exception during API call: $error")
|
// apiTokenCallBack.onGetByRefIDError("Exception during API call: $error")
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
}
|
//}
|
||||||
@ -1,321 +1,321 @@
|
|||||||
package com.cloud.diplomaticquarterapp.penguin
|
//package com.cloud.diplomaticquarterapp.penguin
|
||||||
|
//
|
||||||
import android.app.Activity
|
//import android.app.Activity
|
||||||
import android.content.Context
|
//import android.content.Context
|
||||||
import android.content.Context.RECEIVER_EXPORTED
|
//import android.content.Context.RECEIVER_EXPORTED
|
||||||
import android.content.IntentFilter
|
//import android.content.IntentFilter
|
||||||
import android.graphics.Color
|
//import android.graphics.Color
|
||||||
import android.os.Build
|
//import android.os.Build
|
||||||
import android.util.Log
|
//import android.util.Log
|
||||||
import android.view.View
|
//import android.view.View
|
||||||
import android.view.ViewGroup
|
//import android.view.ViewGroup
|
||||||
import android.widget.RelativeLayout
|
//import android.widget.RelativeLayout
|
||||||
import android.widget.Toast
|
//import android.widget.Toast
|
||||||
import androidx.annotation.RequiresApi
|
//import androidx.annotation.RequiresApi
|
||||||
import com.cloud.diplomaticquarterapp.PermissionManager.PermissionHelper
|
//import com.cloud.diplomaticquarterapp.PermissionManager.PermissionHelper
|
||||||
import com.cloud.diplomaticquarterapp.PermissionManager.PermissionManager
|
//import com.cloud.diplomaticquarterapp.PermissionManager.PermissionManager
|
||||||
import com.cloud.diplomaticquarterapp.PermissionManager.PermissionResultReceiver
|
//import com.cloud.diplomaticquarterapp.PermissionManager.PermissionResultReceiver
|
||||||
import com.ejada.hmg.MainActivity
|
//import com.ejada.hmg.MainActivity
|
||||||
import com.peng.pennavmap.PlugAndPlayConfiguration
|
//import com.peng.pennavmap.PlugAndPlayConfiguration
|
||||||
import com.peng.pennavmap.PlugAndPlaySDK
|
//import com.peng.pennavmap.PlugAndPlaySDK
|
||||||
import com.peng.pennavmap.enums.InitializationErrorType
|
//import com.peng.pennavmap.enums.InitializationErrorType
|
||||||
import com.peng.pennavmap.interfaces.PenNavUIDelegate
|
//import com.peng.pennavmap.interfaces.PenNavUIDelegate
|
||||||
import com.peng.pennavmap.utils.Languages
|
//import com.peng.pennavmap.utils.Languages
|
||||||
import io.flutter.plugin.common.BinaryMessenger
|
//import io.flutter.plugin.common.BinaryMessenger
|
||||||
import io.flutter.plugin.common.MethodCall
|
//import io.flutter.plugin.common.MethodCall
|
||||||
import io.flutter.plugin.common.MethodChannel
|
//import io.flutter.plugin.common.MethodChannel
|
||||||
import io.flutter.plugin.platform.PlatformView
|
//import io.flutter.plugin.platform.PlatformView
|
||||||
import com.cloud.diplomaticquarterapp.penguin.PenguinNavigator
|
//import com.cloud.diplomaticquarterapp.penguin.PenguinNavigator
|
||||||
import com.peng.pennavmap.interfaces.PIEventsDelegate
|
//import com.peng.pennavmap.interfaces.PIEventsDelegate
|
||||||
import com.peng.pennavmap.interfaces.PILocationDelegate
|
//import com.peng.pennavmap.interfaces.PILocationDelegate
|
||||||
import com.peng.pennavmap.interfaces.RefIdDelegate
|
//import com.peng.pennavmap.interfaces.RefIdDelegate
|
||||||
import com.peng.pennavmap.models.PIReportIssue
|
//import com.peng.pennavmap.models.PIReportIssue
|
||||||
/**
|
///**
|
||||||
* Custom PlatformView for displaying Penguin UI components within a Flutter app.
|
// * Custom PlatformView for displaying Penguin UI components within a Flutter app.
|
||||||
* Implements `PlatformView` for rendering the view, `MethodChannel.MethodCallHandler` for handling method calls,
|
// * Implements `PlatformView` for rendering the view, `MethodChannel.MethodCallHandler` for handling method calls,
|
||||||
* and `PenNavUIDelegate` for handling SDK events.
|
// * and `PenNavUIDelegate` for handling SDK events.
|
||||||
*/
|
// */
|
||||||
@RequiresApi(Build.VERSION_CODES.O)
|
//@RequiresApi(Build.VERSION_CODES.O)
|
||||||
internal class PenguinView(
|
//internal class PenguinView(
|
||||||
context: Context,
|
// context: Context,
|
||||||
id: Int,
|
// id: Int,
|
||||||
val creationParams: Map<String, Any>,
|
// val creationParams: Map<String, Any>,
|
||||||
messenger: BinaryMessenger,
|
// messenger: BinaryMessenger,
|
||||||
activity: MainActivity,
|
// activity: MainActivity,
|
||||||
val channel: MethodChannel
|
// val channel: MethodChannel
|
||||||
) : PlatformView, MethodChannel.MethodCallHandler, PenNavUIDelegate {
|
//) : PlatformView, MethodChannel.MethodCallHandler, PenNavUIDelegate {
|
||||||
// The layout for displaying the Penguin UI
|
// // The layout for displaying the Penguin UI
|
||||||
private val mapLayout: RelativeLayout = RelativeLayout(context)
|
// private val mapLayout: RelativeLayout = RelativeLayout(context)
|
||||||
private val _context: Context = context
|
// private val _context: Context = context
|
||||||
|
//
|
||||||
private val permissionResultReceiver: PermissionResultReceiver
|
// private val permissionResultReceiver: PermissionResultReceiver
|
||||||
private val permissionIntentFilter = IntentFilter("PERMISSION_RESULT_ACTION")
|
// private val permissionIntentFilter = IntentFilter("PERMISSION_RESULT_ACTION")
|
||||||
|
//
|
||||||
private companion object {
|
// private companion object {
|
||||||
const val PERMISSIONS_REQUEST_CODE = 1
|
// const val PERMISSIONS_REQUEST_CODE = 1
|
||||||
}
|
// }
|
||||||
|
//
|
||||||
private lateinit var permissionManager: PermissionManager
|
// private lateinit var permissionManager: PermissionManager
|
||||||
|
//
|
||||||
// Reference to the main activity
|
// // Reference to the main activity
|
||||||
private var _activity: Activity = activity
|
// private var _activity: Activity = activity
|
||||||
|
//
|
||||||
private lateinit var mContext: Context
|
// private lateinit var mContext: Context
|
||||||
|
//
|
||||||
lateinit var navigator: PenguinNavigator
|
// lateinit var navigator: PenguinNavigator
|
||||||
|
//
|
||||||
init {
|
// init {
|
||||||
// Set layout parameters for the mapLayout
|
// // Set layout parameters for the mapLayout
|
||||||
mapLayout.layoutParams = ViewGroup.LayoutParams(
|
// mapLayout.layoutParams = ViewGroup.LayoutParams(
|
||||||
ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT
|
// ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT
|
||||||
)
|
// )
|
||||||
|
//
|
||||||
mContext = context
|
// mContext = context
|
||||||
|
//
|
||||||
|
//
|
||||||
permissionResultReceiver = PermissionResultReceiver { granted ->
|
// permissionResultReceiver = PermissionResultReceiver { granted ->
|
||||||
if (granted) {
|
// if (granted) {
|
||||||
onPermissionsGranted()
|
// onPermissionsGranted()
|
||||||
} else {
|
// } else {
|
||||||
onPermissionsDenied()
|
// onPermissionsDenied()
|
||||||
}
|
|
||||||
}
|
|
||||||
if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
|
|
||||||
mContext.registerReceiver(
|
|
||||||
permissionResultReceiver,
|
|
||||||
permissionIntentFilter,
|
|
||||||
RECEIVER_EXPORTED
|
|
||||||
)
|
|
||||||
} else {
|
|
||||||
mContext.registerReceiver(
|
|
||||||
permissionResultReceiver,
|
|
||||||
permissionIntentFilter,
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Set the background color of the layout
|
|
||||||
mapLayout.setBackgroundColor(Color.RED)
|
|
||||||
|
|
||||||
permissionManager = PermissionManager(
|
|
||||||
context = mContext,
|
|
||||||
listener = object : PermissionManager.PermissionListener {
|
|
||||||
override fun onPermissionGranted() {
|
|
||||||
// Handle permissions granted
|
|
||||||
onPermissionsGranted()
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onPermissionDenied() {
|
|
||||||
// Handle permissions denied
|
|
||||||
onPermissionsDenied()
|
|
||||||
}
|
|
||||||
},
|
|
||||||
requestCode = PERMISSIONS_REQUEST_CODE,
|
|
||||||
*PermissionHelper.getRequiredPermissions()
|
|
||||||
)
|
|
||||||
|
|
||||||
if (!permissionManager.arePermissionsGranted()) {
|
|
||||||
permissionManager.requestPermissions(_activity)
|
|
||||||
} else {
|
|
||||||
// Permissions already granted
|
|
||||||
permissionManager.listener.onPermissionGranted()
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun onPermissionsGranted() {
|
|
||||||
// Handle the actions when permissions are granted
|
|
||||||
Log.d("PermissionsResult", "onPermissionsGranted")
|
|
||||||
// Register the platform view factory for creating custom views
|
|
||||||
|
|
||||||
// Initialize the Penguin SDK
|
|
||||||
initPenguin()
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun onPermissionsDenied() {
|
|
||||||
// Handle the actions when permissions are denied
|
|
||||||
Log.d("PermissionsResult", "onPermissionsDenied")
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the view associated with this PlatformView.
|
|
||||||
*
|
|
||||||
* @return The main view for this PlatformView.
|
|
||||||
*/
|
|
||||||
override fun getView(): View {
|
|
||||||
return mapLayout
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Cleans up resources associated with this PlatformView.
|
|
||||||
*/
|
|
||||||
override fun dispose() {
|
|
||||||
// Cleanup code if needed
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Handles method calls from Dart code.
|
|
||||||
*
|
|
||||||
* @param call The method call from Dart.
|
|
||||||
* @param result The result callback to send responses back to Dart.
|
|
||||||
*/
|
|
||||||
override fun onMethodCall(call: MethodCall, result: MethodChannel.Result) {
|
|
||||||
// Handle method calls from Dart code here
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Initializes the Penguin SDK with custom configuration and delegates.
|
|
||||||
*/
|
|
||||||
private fun initPenguin() {
|
|
||||||
navigator = PenguinNavigator()
|
|
||||||
// Configure the PlugAndPlaySDK
|
|
||||||
val language = when (creationParams["languageCode"] as String) {
|
|
||||||
"ar" -> Languages.ar
|
|
||||||
"en" -> Languages.en
|
|
||||||
else -> {
|
|
||||||
Languages.en
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Log.d(
|
|
||||||
"TAG",
|
|
||||||
"initPenguin: ${Languages.getLanguageEnum(creationParams["languageCode"] as String)}"
|
|
||||||
)
|
|
||||||
PlugAndPlaySDK.configuration = PlugAndPlayConfiguration.Builder()
|
|
||||||
.setBaseUrl(
|
|
||||||
creationParams["dataURL"] as String,
|
|
||||||
creationParams["positionURL"] as String
|
|
||||||
)
|
|
||||||
.setServiceName(
|
|
||||||
creationParams["dataServiceName"] as String,
|
|
||||||
creationParams["positionServiceName"] as String
|
|
||||||
)
|
|
||||||
.setClientData(
|
|
||||||
creationParams["clientID"] as String,
|
|
||||||
creationParams["clientKey"] as String
|
|
||||||
)
|
|
||||||
.setUserName(creationParams["username"] as String)
|
|
||||||
// .setLanguageID(Languages.en)
|
|
||||||
.setLanguageID(language)
|
|
||||||
.setSimulationModeEnabled(creationParams["isSimulationModeEnabled"] as Boolean)
|
|
||||||
.setEnableBackButton(true)
|
|
||||||
// .setDeepLinkData("deeplink")
|
|
||||||
.setCustomizeColor("#2CA0AF")
|
|
||||||
.setDeepLinkSchema("")
|
|
||||||
.setIsEnableReportIssue(true)
|
|
||||||
.build()
|
|
||||||
|
|
||||||
// Set location delegate to handle location updates
|
|
||||||
// PlugAndPlaySDK.setPiLocationDelegate {
|
|
||||||
// Example code to handle location updates
|
|
||||||
// Uncomment and modify as needed
|
|
||||||
// if (location.size() > 0)
|
|
||||||
// Toast.makeText(_context, "Location Info Latitude: ${location[0]}, Longitude: ${location[1]}", Toast.LENGTH_SHORT).show()
|
|
||||||
// }
|
|
||||||
|
|
||||||
// Set events delegate for reporting issues
|
|
||||||
// PlugAndPlaySDK.setPiEventsDelegate(new PIEventsDelegate() {
|
|
||||||
// @Override
|
|
||||||
// public void onReportIssue(PIReportIssue issue) {
|
|
||||||
// Log.e("Issue Reported: ", issue.getReportType());
|
|
||||||
// }
|
// }
|
||||||
// // Implement issue reporting logic here }
|
// }
|
||||||
// @Override
|
// if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
|
||||||
// public void onSharedLocation(String link) {
|
// mContext.registerReceiver(
|
||||||
// // Implement Shared location logic here
|
// permissionResultReceiver,
|
||||||
|
// permissionIntentFilter,
|
||||||
|
// RECEIVER_EXPORTED
|
||||||
|
// )
|
||||||
|
// } else {
|
||||||
|
// mContext.registerReceiver(
|
||||||
|
// permissionResultReceiver,
|
||||||
|
// permissionIntentFilter,
|
||||||
|
// )
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// // Set the background color of the layout
|
||||||
|
// mapLayout.setBackgroundColor(Color.RED)
|
||||||
|
//
|
||||||
|
// permissionManager = PermissionManager(
|
||||||
|
// context = mContext,
|
||||||
|
// listener = object : PermissionManager.PermissionListener {
|
||||||
|
// override fun onPermissionGranted() {
|
||||||
|
// // Handle permissions granted
|
||||||
|
// onPermissionsGranted()
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// override fun onPermissionDenied() {
|
||||||
|
// // Handle permissions denied
|
||||||
|
// onPermissionsDenied()
|
||||||
// }
|
// }
|
||||||
// })
|
// },
|
||||||
|
// requestCode = PERMISSIONS_REQUEST_CODE,
|
||||||
// Start the Penguin SDK
|
// *PermissionHelper.getRequiredPermissions()
|
||||||
PlugAndPlaySDK.start(mContext, this)
|
// )
|
||||||
}
|
//
|
||||||
|
// if (!permissionManager.arePermissionsGranted()) {
|
||||||
|
// permissionManager.requestPermissions(_activity)
|
||||||
/**
|
// } else {
|
||||||
* Navigates to the specified reference ID.
|
// // Permissions already granted
|
||||||
*
|
// permissionManager.listener.onPermissionGranted()
|
||||||
* @param refID The reference ID to navigate to.
|
// }
|
||||||
*/
|
//
|
||||||
fun navigateTo(refID: String) {
|
//
|
||||||
try {
|
// }
|
||||||
if (refID.isBlank()) {
|
//
|
||||||
Log.e("navigateTo", "Invalid refID: The reference ID is blank.")
|
// private fun onPermissionsGranted() {
|
||||||
}
|
// // Handle the actions when permissions are granted
|
||||||
// referenceId = refID
|
// Log.d("PermissionsResult", "onPermissionsGranted")
|
||||||
navigator.navigateTo(mContext, refID,object : RefIdDelegate {
|
// // Register the platform view factory for creating custom views
|
||||||
override fun onRefByIDSuccess(PoiId: String?) {
|
//
|
||||||
Log.e("navigateTo", "PoiId is penguin view+++++++ $PoiId")
|
// // Initialize the Penguin SDK
|
||||||
|
// initPenguin()
|
||||||
// channelFlutter.invokeMethod(
|
//
|
||||||
// PenguinMethod.navigateToPOI.name,
|
//
|
||||||
// "navigateTo Success"
|
// }
|
||||||
// )
|
//
|
||||||
}
|
// private fun onPermissionsDenied() {
|
||||||
|
// // Handle the actions when permissions are denied
|
||||||
override fun onGetByRefIDError(error: String?) {
|
// Log.d("PermissionsResult", "onPermissionsDenied")
|
||||||
Log.e("navigateTo", "error is penguin view+++++++ $error")
|
//
|
||||||
|
// }
|
||||||
// channelFlutter.invokeMethod(
|
//
|
||||||
// PenguinMethod.navigateToPOI.name,
|
// /**
|
||||||
// "navigateTo Failed: Invalid refID"
|
// * Returns the view associated with this PlatformView.
|
||||||
// )
|
// *
|
||||||
}
|
// * @return The main view for this PlatformView.
|
||||||
} , creationParams["clientID"] as String, creationParams["clientKey"] as String )
|
// */
|
||||||
|
// override fun getView(): View {
|
||||||
} catch (e: Exception) {
|
// return mapLayout
|
||||||
Log.e("navigateTo", "Exception occurred during navigation: ${e.message}", e)
|
// }
|
||||||
// channelFlutter.invokeMethod(
|
//
|
||||||
// PenguinMethod.navigateToPOI.name,
|
// /**
|
||||||
// "Failed: Exception - ${e.message}"
|
// * Cleans up resources associated with this PlatformView.
|
||||||
|
// */
|
||||||
|
// override fun dispose() {
|
||||||
|
// // Cleanup code if needed
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// /**
|
||||||
|
// * Handles method calls from Dart code.
|
||||||
|
// *
|
||||||
|
// * @param call The method call from Dart.
|
||||||
|
// * @param result The result callback to send responses back to Dart.
|
||||||
|
// */
|
||||||
|
// override fun onMethodCall(call: MethodCall, result: MethodChannel.Result) {
|
||||||
|
// // Handle method calls from Dart code here
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// /**
|
||||||
|
// * Initializes the Penguin SDK with custom configuration and delegates.
|
||||||
|
// */
|
||||||
|
// private fun initPenguin() {
|
||||||
|
// navigator = PenguinNavigator()
|
||||||
|
// // Configure the PlugAndPlaySDK
|
||||||
|
// val language = when (creationParams["languageCode"] as String) {
|
||||||
|
// "ar" -> Languages.ar
|
||||||
|
// "en" -> Languages.en
|
||||||
|
// else -> {
|
||||||
|
// Languages.en
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// Log.d(
|
||||||
|
// "TAG",
|
||||||
|
// "initPenguin: ${Languages.getLanguageEnum(creationParams["languageCode"] as String)}"
|
||||||
|
// )
|
||||||
|
// PlugAndPlaySDK.configuration = PlugAndPlayConfiguration.Builder()
|
||||||
|
// .setBaseUrl(
|
||||||
|
// creationParams["dataURL"] as String,
|
||||||
|
// creationParams["positionURL"] as String
|
||||||
|
// )
|
||||||
|
// .setServiceName(
|
||||||
|
// creationParams["dataServiceName"] as String,
|
||||||
|
// creationParams["positionServiceName"] as String
|
||||||
// )
|
// )
|
||||||
}
|
// .setClientData(
|
||||||
}
|
// creationParams["clientID"] as String,
|
||||||
|
// creationParams["clientKey"] as String
|
||||||
/**
|
// )
|
||||||
* Called when Penguin UI setup is successful.
|
// .setUserName(creationParams["username"] as String)
|
||||||
*
|
//// .setLanguageID(Languages.en)
|
||||||
* @param warningCode Optional warning code received from the SDK.
|
// .setLanguageID(language)
|
||||||
*/
|
// .setSimulationModeEnabled(creationParams["isSimulationModeEnabled"] as Boolean)
|
||||||
override fun onPenNavSuccess(warningCode: String?) {
|
// .setEnableBackButton(true)
|
||||||
val clinicId = creationParams["clinicID"] as String
|
//// .setDeepLinkData("deeplink")
|
||||||
|
// .setCustomizeColor("#2CA0AF")
|
||||||
if(clinicId.isEmpty()) return
|
// .setDeepLinkSchema("")
|
||||||
|
// .setIsEnableReportIssue(true)
|
||||||
navigateTo(clinicId)
|
// .build()
|
||||||
}
|
//
|
||||||
|
// // Set location delegate to handle location updates
|
||||||
/**
|
//// PlugAndPlaySDK.setPiLocationDelegate {
|
||||||
* Called when there is an initialization error with Penguin UI.
|
// // Example code to handle location updates
|
||||||
*
|
// // Uncomment and modify as needed
|
||||||
* @param description Description of the error.
|
// // if (location.size() > 0)
|
||||||
* @param errorType Type of initialization error.
|
// // Toast.makeText(_context, "Location Info Latitude: ${location[0]}, Longitude: ${location[1]}", Toast.LENGTH_SHORT).show()
|
||||||
*/
|
//// }
|
||||||
override fun onPenNavInitializationError(
|
//
|
||||||
description: String?,
|
// // Set events delegate for reporting issues
|
||||||
errorType: InitializationErrorType?
|
//// PlugAndPlaySDK.setPiEventsDelegate(new PIEventsDelegate() {
|
||||||
) {
|
//// @Override
|
||||||
val arguments: Map<String, Any?> = mapOf(
|
//// public void onReportIssue(PIReportIssue issue) {
|
||||||
"description" to description,
|
//// Log.e("Issue Reported: ", issue.getReportType());
|
||||||
"type" to errorType?.name
|
//// }
|
||||||
)
|
//// // Implement issue reporting logic here }
|
||||||
|
//// @Override
|
||||||
channel.invokeMethod(PenguinMethod.onPenNavInitializationError.name, arguments)
|
//// public void onSharedLocation(String link) {
|
||||||
Toast.makeText(mContext, "Navigation Error: $description", Toast.LENGTH_SHORT).show()
|
//// // Implement Shared location logic here
|
||||||
}
|
//// }
|
||||||
|
//// })
|
||||||
/**
|
//
|
||||||
* Called when Penguin UI is dismissed.
|
// // Start the Penguin SDK
|
||||||
*/
|
// PlugAndPlaySDK.start(mContext, this)
|
||||||
override fun onPenNavUIDismiss() {
|
// }
|
||||||
// Handle UI dismissal if needed
|
//
|
||||||
try {
|
//
|
||||||
mContext.unregisterReceiver(permissionResultReceiver)
|
// /**
|
||||||
dispose();
|
// * Navigates to the specified reference ID.
|
||||||
} catch (e: IllegalArgumentException) {
|
// *
|
||||||
Log.e("PenguinView", "Receiver not registered: $e")
|
// * @param refID The reference ID to navigate to.
|
||||||
}
|
// */
|
||||||
}
|
// fun navigateTo(refID: String) {
|
||||||
}
|
// try {
|
||||||
|
// if (refID.isBlank()) {
|
||||||
|
// Log.e("navigateTo", "Invalid refID: The reference ID is blank.")
|
||||||
|
// }
|
||||||
|
//// referenceId = refID
|
||||||
|
// navigator.navigateTo(mContext, refID,object : RefIdDelegate {
|
||||||
|
// override fun onRefByIDSuccess(PoiId: String?) {
|
||||||
|
// Log.e("navigateTo", "PoiId is penguin view+++++++ $PoiId")
|
||||||
|
//
|
||||||
|
//// channelFlutter.invokeMethod(
|
||||||
|
//// PenguinMethod.navigateToPOI.name,
|
||||||
|
//// "navigateTo Success"
|
||||||
|
//// )
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// override fun onGetByRefIDError(error: String?) {
|
||||||
|
// Log.e("navigateTo", "error is penguin view+++++++ $error")
|
||||||
|
//
|
||||||
|
//// channelFlutter.invokeMethod(
|
||||||
|
//// PenguinMethod.navigateToPOI.name,
|
||||||
|
//// "navigateTo Failed: Invalid refID"
|
||||||
|
//// )
|
||||||
|
// }
|
||||||
|
// } , creationParams["clientID"] as String, creationParams["clientKey"] as String )
|
||||||
|
//
|
||||||
|
// } catch (e: Exception) {
|
||||||
|
// Log.e("navigateTo", "Exception occurred during navigation: ${e.message}", e)
|
||||||
|
//// channelFlutter.invokeMethod(
|
||||||
|
//// PenguinMethod.navigateToPOI.name,
|
||||||
|
//// "Failed: Exception - ${e.message}"
|
||||||
|
//// )
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// /**
|
||||||
|
// * Called when Penguin UI setup is successful.
|
||||||
|
// *
|
||||||
|
// * @param warningCode Optional warning code received from the SDK.
|
||||||
|
// */
|
||||||
|
// override fun onPenNavSuccess(warningCode: String?) {
|
||||||
|
// val clinicId = creationParams["clinicID"] as String
|
||||||
|
//
|
||||||
|
// if(clinicId.isEmpty()) return
|
||||||
|
//
|
||||||
|
// navigateTo(clinicId)
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// /**
|
||||||
|
// * Called when there is an initialization error with Penguin UI.
|
||||||
|
// *
|
||||||
|
// * @param description Description of the error.
|
||||||
|
// * @param errorType Type of initialization error.
|
||||||
|
// */
|
||||||
|
// override fun onPenNavInitializationError(
|
||||||
|
// description: String?,
|
||||||
|
// errorType: InitializationErrorType?
|
||||||
|
// ) {
|
||||||
|
// val arguments: Map<String, Any?> = mapOf(
|
||||||
|
// "description" to description,
|
||||||
|
// "type" to errorType?.name
|
||||||
|
// )
|
||||||
|
//
|
||||||
|
// channel.invokeMethod(PenguinMethod.onPenNavInitializationError.name, arguments)
|
||||||
|
// Toast.makeText(mContext, "Navigation Error: $description", Toast.LENGTH_SHORT).show()
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// /**
|
||||||
|
// * Called when Penguin UI is dismissed.
|
||||||
|
// */
|
||||||
|
// override fun onPenNavUIDismiss() {
|
||||||
|
// // Handle UI dismissal if needed
|
||||||
|
// try {
|
||||||
|
// mContext.unregisterReceiver(permissionResultReceiver)
|
||||||
|
// dispose();
|
||||||
|
// } catch (e: IllegalArgumentException) {
|
||||||
|
// Log.e("PenguinView", "Receiver not registered: $e")
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
//}
|
||||||
|
//
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
Loading…
Reference in New Issue