18034727885
2026-04-09 4af1c62c54f489453d93d9960794769dcaf1be1f
更改默认语言为法语
27个文件已修改
349 ■■■■■ 已修改文件
app/src/main/java/com/igo/user/IGoApplication.kt 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/igo/user/dialog/ChooseBirthEnglishDialog.kt 4 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/igo/user/dialog/ChooseReserveTimeDialog.kt 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/igo/user/network/Functions.kt 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/igo/user/network/HttpManager.kt 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/igo/user/network/RRetrofit.kt 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/igo/user/ui/logistics/LogisticsGuideActivity.kt 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/igo/user/ui/mine/CommitGoodsActivity.kt 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/igo/user/ui/mine/LanguageActivity.kt 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/igo/user/ui/mine/ShareAppActivity.kt 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/igo/user/ui/mine/UserInfoActivity.kt 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/igo/user/ui/mine/adapter/MyCouponAdapter.kt 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/igo/user/ui/mine/adapter/TripOrderAdapter.kt 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/igo/user/ui/trip/ChoosePositionActivity.kt 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/igo/user/ui/trip/MapTripFragment.kt 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/igo/user/ui/trip/OrderDetailActivity.kt 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/igo/user/ui/trip/OrderDetailWithMapActivity.kt 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/igo/user/ui/trip/OrderOtherActivity.kt 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/igo/user/ui/trip/PriceDetailActivity.kt 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/igo/user/ui/trip/TripActivity.kt 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/igo/user/utils/Const.kt 57 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/igo/user/utils/google/AMapKit.kt 52 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/dialog_user_rule.xml 4 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xldutils-kotlin/src/main/java/cn/sinata/xldutils/activity/BaseActivity.kt 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xldutils-kotlin/src/main/java/cn/sinata/xldutils/rxutils/Error.kt 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xldutils-kotlin/src/main/java/cn/sinata/xldutils/rxutils/ResultCommonSubscriber.kt 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xldutils-kotlin/src/main/java/cn/sinata/xldutils/utils/LanguageUtil.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/igo/user/IGoApplication.kt
@@ -1,16 +1,18 @@
package com.igo.user
//import com.umeng.commonsdk.UMConfigure
//import com.umeng.socialize.PlatformConfig
import android.app.Activity
import android.app.Application
import android.content.Intent
import android.os.Bundle
import android.text.TextUtils
import android.util.Log
import androidx.appcompat.app.AppCompatActivity
import androidx.core.os.bundleOf
import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentManager
import androidx.lifecycle.lifecycleScope
import androidx.lifecycle.withResumed
import cn.sinata.rxnetty.LogHelper.initLogs
import cn.sinata.rxnetty.LogHelper.logRecord
import cn.sinata.rxnetty.NettyClient
@@ -19,6 +21,7 @@
import cn.sinata.xldutils.utils.SPUtils
import cn.sinata.xldutils.utils.myToast
import com.google.android.gms.maps.MapsInitializer
import com.google.android.gms.maps.model.LatLng
import com.google.android.libraries.places.api.Places
import com.google.gson.Gson
import com.igo.user.dialog.ChooseCardDialog
@@ -30,24 +33,18 @@
import com.igo.user.network.HttpManager
import com.igo.user.network.entity.TrippingInfo
import com.igo.user.network.request
import com.igo.user.network.requestByF
import com.igo.user.ui.MainActivity
import com.igo.user.ui.SplashActivity
import com.igo.user.ui.login.LoginActivity
import com.igo.user.ui.trip.TripActivity
import com.igo.user.utils.Const
import com.igo.user.utils.pay.PayListener
import com.igo.user.utils.pay.PayUtil
import com.sinata.download.DownloadLibrary
//import com.umeng.commonsdk.UMConfigure
//import com.umeng.socialize.PlatformConfig
import io.reactivex.Flowable
import io.reactivex.disposables.Disposable
import org.jetbrains.anko.runOnUiThread
import org.jetbrains.anko.startActivity
import org.json.JSONObject
import java.util.concurrent.TimeUnit
import com.google.android.gms.maps.model.LatLng
class IGoApplication : BaseApplication(), Application.ActivityLifecycleCallbacks {
    private val TAG = "IGoApplication"
@@ -62,6 +59,7 @@
        appContext = this
        // initializeRecaptchaClient()
        registerActivityLifecycleCallbacks(this)
        setDefaultLanguage()
        DownloadLibrary.init(
            this,
            resources.getIdentifier("ic_launcher", "mipmap", packageName),
@@ -80,6 +78,14 @@
        ) { renderer ->
            Log.e(Const.GoogleTag, "LATEST renderer:${renderer.name}")
//            initializeConsumerSdk()
        }
    }
    //设置默认语言
    private fun setDefaultLanguage() {
        val language = SPUtils.instance().getString("language")
        if (TextUtils.isEmpty(language)) {
            SPUtils.instance().put("language", Const.Language.DEFAULT_LANGUAGE).apply()
        }
    }
@@ -176,7 +182,10 @@
                        }
                        Const.Method.DRIVER_POSITION -> {//司机位置
                            logRecord(TAG,"received DRIVER_POSITION message $json, listeners size ${listeners.size}")
                            logRecord(
                                TAG,
                                "received DRIVER_POSITION message $json, listeners size ${listeners.size}"
                            )
                            val jb = json.optJSONObject("data")
                            jb?.let {
                                val data = Gson().fromJson(jb.toString(), TrippingInfo::class.java)
@@ -303,7 +312,7 @@
                )
                tipDialog.setCallback(object : TipDialog.OnClickCallback {
                    override fun onOk() {
                        confirmDifferencePrice(topAct, orderId, money, 2){
                        confirmDifferencePrice(topAct, orderId, money, 2) {
                            getUserInfoWhenPay(topAct, orderId, money)
                        }
                    }
@@ -353,25 +362,33 @@
    }
    private fun pay(act: BaseActivity, orderId: Int, way: Int, money: Double) {
        HttpManager.payOrderLogisticsSpread(orderId, way).request(act, showDialog = true) { _, data ->
            myToast(getString(R.string.支付成功))
        }
        HttpManager.payOrderLogisticsSpread(orderId, way)
            .request(act, showDialog = true) { _, data ->
                myToast(getString(R.string.支付成功))
            }
    }
    private fun confirmDifferencePrice(act: BaseActivity, orderId: Int, money: Double, state: Int, block: (() -> Unit)? = null) {
        HttpManager.confirmDifferencePrice(orderId, money, state).request(act, showDialog = true) { _, _ ->
            block?.invoke()
        }
    private fun confirmDifferencePrice(
        act: BaseActivity,
        orderId: Int,
        money: Double,
        state: Int,
        block: (() -> Unit)? = null
    ) {
        HttpManager.confirmDifferencePrice(orderId, money, state)
            .request(act, showDialog = true) { _, _ ->
                block?.invoke()
            }
    }
    private fun sendHeart() {
        val userId = SPUtils.instance().getInt(Const.User.USER_ID)
        val token = SPUtils.instance().getString(Const.User.TOKEN)
        if (userId != -1) {
            val language = SPUtils.instance().getString("language", "en")
            val language = SPUtils.instance().getString("language")
            val l = when (language) {
                "ch" -> "1"
                "fr" -> "3"
                Const.Language.CHINESE -> "1"
                Const.Language.FRENCH -> "3"
                else -> "2"
            }
            NettyClient.getInstance()
@@ -459,7 +476,11 @@
        if (activity is AppCompatActivity) {
            activity.supportFragmentManager.registerFragmentLifecycleCallbacks(object :
                FragmentManager.FragmentLifecycleCallbacks() {
                override fun onFragmentCreated(fm: FragmentManager, f: Fragment, savedInstanceState: Bundle?) {
                override fun onFragmentCreated(
                    fm: FragmentManager,
                    f: Fragment,
                    savedInstanceState: Bundle?
                ) {
                    super.onFragmentCreated(fm, f, savedInstanceState)
                    Log.i("zmc-pageF", "onFragmentCreated: " + f.javaClass.name)
                }
app/src/main/java/com/igo/user/dialog/ChooseBirthEnglishDialog.kt
@@ -23,7 +23,7 @@
    private val wv_2 by lazy { find<WheelView>(R.id.wv_2) }
    private val wv_3 by lazy { find<WheelView>(R.id.wv_3) }
    private val language by lazy { SPUtils.instance().getString("language","en") }
    private val language by lazy { SPUtils.instance().getString("language") }
    override fun onCreateView(
        inflater: LayoutInflater,
@@ -85,7 +85,7 @@
        val end = if (wv_3.seletedIndex == years.lastIndex) month else 11
        months.clear()
        months.addAll((0..end))
        val list = if (language == "en") Const.monthEnglish.subList(0,end+1) else Const.monthFrench.subList(0,end+1)
        val list = if (language == Const.Language.ENGLISH) Const.monthEnglish.subList(0,end+1) else Const.monthFrench.subList(0,end+1)
        wv_2.setItems(list)
        wv_2.setSeletion(if (isFirst) list.lastIndex else 0)
    }
app/src/main/java/com/igo/user/dialog/ChooseReserveTimeDialog.kt
@@ -14,6 +14,7 @@
import cn.sinata.xldutils.utils.toTimeFrench
import cn.sinata.xldutils.view.WheelView
import com.igo.user.R
import com.igo.user.utils.Const
import org.jetbrains.anko.matchParent
import org.jetbrains.anko.support.v4.find
import org.jetbrains.anko.wrapContent
@@ -39,7 +40,7 @@
    private val tv_title by lazy { find<TextView>(R.id.tv_title) }
    private val language by lazy {
        SPUtils.instance().getString("language", "en")
        SPUtils.instance().getString("language")
    }
    private val dayTimes = arrayListOf<Long>()
@@ -116,7 +117,7 @@
     * 根据语言格式化日期显示
     */
    private fun getFormantDay(time:Long):String{
        return if (language == "en") time.toTimeEnglish() else if (language == "fr") time.toTimeFrench() else time.toTime("MM月dd")
        return if (language == Const.Language.ENGLISH) time.toTimeEnglish() else if (language == Const.Language.FRENCH) time.toTimeFrench() else time.toTime("MM月dd")
    }
    private fun setHour() {
app/src/main/java/com/igo/user/network/Functions.kt
@@ -34,9 +34,9 @@
            activity.dismissDialog()
            if (code == 600) {//token无效
                super.onError(
                    code, when (SPUtils.instance().getString("language", "en")) {
                        "ch" -> "您的身份已过期,请重新登录"
                        "fr" -> "Votre identité a expiré, veuillez vous reconnecter"
                    code, when (SPUtils.instance().getString("language")) {
                        Const.Language.CHINESE -> "您的身份已过期,请重新登录"
                        Const.Language.FRENCH -> "Votre identité a expiré, veuillez vous reconnecter"
                        else -> "Your identity has expired, please log in again"
                    }
                )
app/src/main/java/com/igo/user/network/HttpManager.kt
@@ -1243,8 +1243,8 @@
     */
    fun geoCode(lat:Double,lon: Double): Flowable<GeoBean> {
        //1=简体中文,2=英语,3=法语
        val language = SPUtils.instance().getString("language","en")
        val lan = if (language == "ch") "zh-CN" else language
        val language = SPUtils.instance().getString("language")
        val lan = if (language == Const.Language.CHINESE) "zh-CN" else language
        return request().geoCode(IGoApplication.tripId,"${lat},${lon}",lan)
    }
@@ -1253,8 +1253,8 @@
     */
    fun textsearch(key:String,lat: Double,lon: Double): Flowable<SearchBean> {
        //1=简体中文,2=英语,3=法语
        val language = SPUtils.instance().getString("language","en")
        val lan = if (language == "ch") "zh-CN" else language
        val language = SPUtils.instance().getString("language")
        val lan = if (language == Const.Language.CHINESE) "zh-CN" else language
        return request().textsearch(IGoApplication.tripId,key,"${lat},${lon}",lan)
//        return request().textsearch(key,5.586363,-0.187788,IGoApplication.chooseCityName,lan)  //阿克拉 5.586363,-0.187788
    }
@@ -1264,8 +1264,8 @@
     */
    fun autocomplete(key:String,country:String = "gh"): Flowable<AutoCompleteBean> {
        //1=简体中文,2=英语,3=法语
        val language = SPUtils.instance().getString("language","en")
        val lan = if (language == "ch") "zh-CN" else language
        val language = SPUtils.instance().getString("language")
        val lan = if (language == Const.Language.CHINESE) "zh-CN" else language
        return request().autocomplete(IGoApplication.tripId,key,lan,"country:$country")
    }
@@ -1280,8 +1280,8 @@
     * 路线
     */
    fun directions(startLat: Double,startLon: Double,endLat: Double,endLon: Double): Flowable<RouteBean> {
        val language = SPUtils.instance().getString("language","en")
        val lan = if (language == "ch") "zh-CN" else language
        val language = SPUtils.instance().getString("language")
        val lan = if (language == Const.Language.CHINESE) "zh-CN" else language
        return request().directions(IGoApplication.tripId,"${startLat},${startLon}","${endLat},${endLon}",lan)
    }
app/src/main/java/com/igo/user/network/RRetrofit.kt
@@ -31,7 +31,7 @@
                    })
                .addInterceptor { chain ->
                    //1=简体中文,2=英语,3=印尼语
                    val language = SPUtils.instance().getString("language", "en")
                    val language = SPUtils.instance().getString("language", Const.Language.DEFAULT_LANGUAGE)
                    var request = chain.request()
                    if (request.method() == "POST"&&!request.url().toString().contains("base/user/image")) {
                        val bodyBuilder = FormBody.Builder()
@@ -48,8 +48,8 @@
                        }
                        formBody = bodyBuilder.addEncoded(
                            "language", when (language) {
                                "ch" -> "1"
                                "fr" -> "3"
                                Const.Language.CHINESE -> "1"
                                Const.Language.FRENCH -> "3"
                                else -> "2"
                            }
                        ).build()
app/src/main/java/com/igo/user/ui/logistics/LogisticsGuideActivity.kt
@@ -98,7 +98,7 @@
    override fun initView() {
        title = getString(R.string.邮寄快件指南)
        if (SPUtils.instance().getString("language", "en") == "fr") { //解决法文标题过长问题
        if (SPUtils.instance().getString("language") == Const.Language.FRENCH) { //解决法文标题过长问题
            titleBar.titleView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 12f)
        }
        PayUtil.addPayListener(this)
app/src/main/java/com/igo/user/ui/mine/CommitGoodsActivity.kt
@@ -18,6 +18,7 @@
import com.igo.user.network.request
import com.igo.user.ui.TransparentStatusBarActivity
import com.igo.user.ui.login.AreaCodeActivity
import com.igo.user.utils.Const
import com.igo.user.utils.RealNameInputFilter
import org.jetbrains.anko.find
import org.jetbrains.anko.sdk27.coroutines.onClick
@@ -52,8 +53,8 @@
            else{
                val strings = arrayListOf<String>()
                val dialog = SingleWheelDialog()
                val language = SPUtils.instance().getString("language","en")
                strings.addAll(province.map { if (language == "en") it.englishName else if (language == "fr") it.frenchName else it.chineseName })
                val language = SPUtils.instance().getString("language")
                strings.addAll(province.map { if (language == Const.Language.ENGLISH) it.englishName else if (language == Const.Language.FRENCH) it.frenchName else it.chineseName })
                dialog.arguments = bundleOf("data" to strings,"title" to getString(R.string.选择地区))
                dialog.setCallback(object :StringCallback{
                    override fun onRlt(rlt: String) {
@@ -132,8 +133,8 @@
            province.clear()
            province.addAll(data ?: arrayListOf())
            val strings = arrayListOf<String>()
            val language = SPUtils.instance().getString("language","en")
            strings.addAll(province.map { if (language == "en") it.englishName else if (language == "fr") it.frenchName else it.chineseName })
            val language = SPUtils.instance().getString("language")
            strings.addAll(province.map { if (language == Const.Language.ENGLISH) it.englishName else if (language == Const.Language.FRENCH) it.frenchName else it.chineseName })
            val dialog = SingleWheelDialog()
            dialog.arguments = bundleOf("data" to strings, "title" to getString(R.string.选择地区))
            dialog.setCallback(object : StringCallback {
@@ -150,9 +151,9 @@
        et_name.filters = arrayOf(RealNameInputFilter())
        et_city.filters = arrayOf(RealNameInputFilter())
        et_district.filters = arrayOf(RealNameInputFilter())
        val language = SPUtils.instance().getString("language", "en")
        et_name.setTextSize(TypedValue.COMPLEX_UNIT_SP,if (language == "ch") 14f else 11f)
        et_phone.setTextSize(TypedValue.COMPLEX_UNIT_SP,if (language == "ch") 14f else 11f)
        val language = SPUtils.instance().getString("language")
        et_name.setTextSize(TypedValue.COMPLEX_UNIT_SP,if (language == Const.Language.CHINESE) 14f else 11f)
        et_phone.setTextSize(TypedValue.COMPLEX_UNIT_SP,if (language == Const.Language.CHINESE) 14f else 11f)
    }
    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
app/src/main/java/com/igo/user/ui/mine/LanguageActivity.kt
@@ -8,6 +8,7 @@
import com.igo.user.R
import com.igo.user.dialog.TipDialog
import com.igo.user.ui.TransparentStatusBarActivity
import com.igo.user.utils.Const
import org.jetbrains.anko.find
class LanguageActivity : TransparentStatusBarActivity() {
@@ -19,15 +20,15 @@
    override fun initClick() {
        tv_china.setOnClickListener {
            change("ch")
            change(Const.Language.CHINESE)
        }
        tv_en.setOnClickListener {
            change("en")
            change(Const.Language.ENGLISH)
        }
        tv_fr.setOnClickListener {
            change("fr")
            change(Const.Language.FRENCH)
        }
    }
app/src/main/java/com/igo/user/ui/mine/ShareAppActivity.kt
@@ -35,8 +35,8 @@
            val shareDialog = ShareDialog()
            shareDialog.setCallback(object : ShareDialog.Callback {
                override fun onOk(way: Int) {
                    val language = SPUtils.instance().getString("language", "en")
                    val languageP = if (language == "ch") 1 else if (language == "en") 2 else 3
                    val language = SPUtils.instance().getString("language")
                    val languageP = if (language == Const.Language.CHINESE) 1 else if (language == Const.Language.ENGLISH) 2 else 3
                    val url = String.format(
                        Apis.SHARE_URL,
                        languageP,
@@ -110,10 +110,10 @@
                webView.loadData(it.optString("content"), "text/html; charset=utf-8", "utf-8")
            }
        }
        val language = SPUtils.instance().getString("language", "en")
        val language = SPUtils.instance().getString("language")
        iv_bg.imageResource = when (language) {
            "ch" -> R.mipmap.share_bg
            "fr" -> R.mipmap.share_bg_fr
            Const.Language.CHINESE -> R.mipmap.share_bg
            Const.Language.FRENCH -> R.mipmap.share_bg_fr
            else -> R.mipmap.share_bg_en
        }
    }
app/src/main/java/com/igo/user/ui/mine/UserInfoActivity.kt
@@ -18,6 +18,7 @@
import com.igo.user.network.HttpManager
import com.igo.user.network.request
import com.igo.user.ui.TransparentStatusBarActivity
import com.igo.user.utils.Const
import org.jetbrains.anko.find
import org.jetbrains.anko.startActivityForResult
import org.jetbrains.anko.toast
@@ -76,8 +77,8 @@
            singleWheelDialog.show(supportFragmentManager, "sex")
        }
        tv_birth.setOnClickListener {
            val language = SPUtils.instance().getString("language", "en")
            if (language == "en" || language == "fr") {
            val language = SPUtils.instance().getString("language")
            if (language == Const.Language.ENGLISH || language == Const.Language.FRENCH) {
                val chooseBirthDialog = ChooseBirthEnglishDialog()
                chooseBirthDialog.setCallback(object : ChooseBirthEnglishDialog.Callback {
                    override fun onOk(s: String, formatS: String) {
app/src/main/java/com/igo/user/ui/mine/adapter/MyCouponAdapter.kt
@@ -12,6 +12,7 @@
import com.igo.user.R
import com.igo.user.interfaces.OnDelCallback
import com.igo.user.network.entity.Coupon
import com.igo.user.utils.Const
import org.jetbrains.anko.backgroundResource
import org.jetbrains.anko.imageResource
@@ -38,19 +39,19 @@
    }
    fun getUsedRes():Int{
        val language = SPUtils.instance().getString("language", "en")
        val language = SPUtils.instance().getString("language")
        return when(language){
            "ch"-> R.mipmap.used
            "fr"->R.mipmap.used_f
            Const.Language.CHINESE-> R.mipmap.used
            Const.Language.FRENCH->R.mipmap.used_f
            else->R.mipmap.used_e
        }
    }
    fun getExpiredRes():Int{
        val language = SPUtils.instance().getString("language", "en")
        val language = SPUtils.instance().getString("language")
        return when(language){
            "ch"-> R.mipmap.passd
            "fr"->R.mipmap.passd_f
            Const.Language.CHINESE-> R.mipmap.passd
            Const.Language.FRENCH->R.mipmap.passd_f
            else->R.mipmap.passd_e
        }
    }
app/src/main/java/com/igo/user/ui/mine/adapter/TripOrderAdapter.kt
@@ -32,10 +32,10 @@
        if (data.isFrozen == 2){
            clMain.alpha = 0.5f
            frozen.visible()
            val language = SPUtils.instance().getString("language", "en")
            val language = SPUtils.instance().getString("language")
            val ic = when(language){
                "en"->R.mipmap.yidongjie_e
                "ch"->R.mipmap.yidongjie
                Const.Language.ENGLISH->R.mipmap.yidongjie_e
                Const.Language.CHINESE->R.mipmap.yidongjie
                else->R.mipmap.yidongjie_f
            }
            frozen.setImageResource(ic)
app/src/main/java/com/igo/user/ui/trip/ChoosePositionActivity.kt
@@ -27,6 +27,7 @@
import com.igo.user.ui.ChooseCityActivity
import com.igo.user.ui.TransparentStatusBarActivity
import com.igo.user.ui.trip.adapter.PositionAdapter
import com.igo.user.utils.Const
import io.reactivex.subscribers.DisposableSubscriber
import org.jetbrains.anko.find
import org.jetbrains.anko.startActivityForResult
@@ -126,7 +127,7 @@
        lv_position.setMode(SwipeRefreshRecyclerLayout.Mode.None)
        lv_position.setLayoutManager(LinearLayoutManager(this, LinearLayoutManager.VERTICAL,false))
        title = if (isLogistics) getString(if (isStart) R.string.设置领取点 else R.string.设置目的地) else if(isModify) getString(R.string.设置目的地) else if(isStart){
            if (SPUtils.instance().getString("language","en") == "fr"){ //解决法文标题过长问题
            if (SPUtils.instance().getString("language") == Const.Language.FRENCH){ //解决法文标题过长问题
                titleBar.titleView.setTextSize(TypedValue.COMPLEX_UNIT_SP,12f)
            }
            getString(R.string.设置上车点)
app/src/main/java/com/igo/user/ui/trip/MapTripFragment.kt
@@ -167,10 +167,10 @@
    private val cl_taxi by lazy { find<View>(R.id.cl_taxi) }
    override fun onFirstVisibleToUser() {
        val language = SPUtils.instance().getString("language", "en")
        val language = SPUtils.instance().getString("language")
        tv_110.setCompoundDrawablesRelativeWithIntrinsicBounds(
            0,
            if (language == "ch") R.mipmap.icon_110 else R.mipmap.icon_191,
            if (language == Const.Language.CHINESE) R.mipmap.icon_110 else R.mipmap.icon_191,
            0,
            0
        )
@@ -1063,11 +1063,11 @@
    private fun setMarker(latLon: LatLng, content: String = "") {
        val options = MarkerOptions()
        options.position(latLon)
        val language = SPUtils.instance().getString("language", "en")
        val language = SPUtils.instance().getString("language")
        if (content.isNotEmpty()) {
            val ic = when (language) {
                "en" -> R.mipmap.end_point_e
                "ch" -> R.mipmap.end_point
                Const.Language.ENGLISH -> R.mipmap.end_point_e
                Const.Language.CHINESE -> R.mipmap.end_point
                else -> R.mipmap.end_point_f
            }
            val view = layoutInflater.inflate(R.layout.marker_with_text, null, false)
@@ -1079,8 +1079,8 @@
            startMarker = aMap.addMarker(options)
        } else {
            val ic = when (language) {
                "en" -> R.mipmap.starting_point_e
                "ch" -> R.mipmap.starting_point
                Const.Language.ENGLISH -> R.mipmap.starting_point_e
                Const.Language.CHINESE -> R.mipmap.starting_point
                else -> R.mipmap.starting_point_f
            }
            options.icon(BitmapDescriptorFactory.fromResource(ic))
app/src/main/java/com/igo/user/ui/trip/OrderDetailActivity.kt
@@ -257,10 +257,10 @@
                }
                if (order!!.isFrozen == 2) {
                    tv_frozen.visible()
                    val language = SPUtils.instance().getString("language", "en")
                    val language = SPUtils.instance().getString("language")
                    val ic = when (language) {
                        "en" -> R.mipmap.yidongjie_e
                        "ch" -> R.mipmap.yidongjie
                        Const.Language.ENGLISH -> R.mipmap.yidongjie_e
                        Const.Language.CHINESE -> R.mipmap.yidongjie
                        else -> R.mipmap.yidongjie_f
                    }
                    tv_frozen.setCompoundDrawablesRelativeWithIntrinsicBounds(0, ic, 0, 0)
@@ -295,9 +295,9 @@
                            val shareDialog = ShareDialog()
                            shareDialog.setCallback(object : ShareDialog.Callback {
                                override fun onOk(way: Int) { //0:wx 1:qq 2:msg
                                    val language = SPUtils.instance().getString("language", "en")
                                    val language = SPUtils.instance().getString("language")
                                    val languageP =
                                        if (language == "ch") 1 else if (language == "en") 2 else 3
                                        if (language == Const.Language.CHINESE) 1 else if (language == Const.Language.ENGLISH) 2 else 3
                                    val url = String.format(
                                        Apis.SHARE_URL,
                                        languageP,
app/src/main/java/com/igo/user/ui/trip/OrderDetailWithMapActivity.kt
@@ -249,12 +249,12 @@
     * @param isStart true:起点标记 false:终点标记
     */
    private fun setMarker(latLon: LatLng, isStart:Boolean = true) {
        val language = SPUtils.instance().getString("language", "en")
        val language = SPUtils.instance().getString("language")
        if (isStart){
            val ic = when(language){
                "en"->R.mipmap.starting_point_e
                "ch"->R.mipmap.starting_point
                Const.Language.ENGLISH->R.mipmap.starting_point_e
                Const.Language.CHINESE->R.mipmap.starting_point
                else->R.mipmap.starting_point_f
            }
            val icon = BitmapDescriptorFactory.fromResource(ic)
@@ -263,8 +263,8 @@
            startMarker = aMap.addMarker(options)
        }else{
            val ic = when(language){
                "en"->R.mipmap.end_point_e
                "ch"->R.mipmap.end_point
                Const.Language.ENGLISH->R.mipmap.end_point_e
                Const.Language.CHINESE->R.mipmap.end_point
                else->R.mipmap.end_point_f
            }
            val options = MarkerOptions()
@@ -289,8 +289,8 @@
                            val shareDialog = ShareDialog()
                            shareDialog.setCallback(object :ShareDialog.Callback{
                                override fun onOk(way: Int) { //0:wx 1:qq 2:msg
                                    val language = SPUtils.instance().getString("language","en")
                                    val languageP = if (language == "ch") 1 else if (language == "en") 2 else 3
                                    val language = SPUtils.instance().getString("language")
                                    val languageP = if (language == Const.Language.CHINESE) 1 else if (language == Const.Language.ENGLISH) 2 else 3
                                    val url = String.format(Apis.SHARE_URL, languageP, languageP,SPUtils.instance().getInt(Const.User.USER_ID))
                                    if (way == 3)
                                        IGoShareUtils.shareWA(this@OrderDetailWithMapActivity,getString(R.string.下载注册即送打车券),url)
app/src/main/java/com/igo/user/ui/trip/OrderOtherActivity.kt
@@ -20,6 +20,7 @@
import com.igo.user.ui.H5Activity
import com.igo.user.ui.TransparentStatusBarActivity
import com.igo.user.ui.login.AreaCodeActivity
import com.igo.user.utils.Const
import com.tbruyelle.rxpermissions2.RxPermissions
import org.jetbrains.anko.find
import org.jetbrains.anko.startActivity
@@ -77,8 +78,8 @@
            }
        }
        val language = SPUtils.instance().getString("language","en")
        if (language == "ch"){
        val language = SPUtils.instance().getString("language")
        if (language == Const.Language.CHINESE){
            tv_tip.gravity = Gravity.CENTER
            tv_rule.typeface = Typeface.DEFAULT
        }
app/src/main/java/com/igo/user/ui/trip/PriceDetailActivity.kt
@@ -129,10 +129,10 @@
                val tv_name1 = view1.find<TextView>(R.id.tv_name)
                val tv_price1 = view1.find<TextView>(R.id.tv_price)
                tv_name1.text = getString(R.string.活动折扣)
                val language = SPUtils.instance().getString("language", "en")
                val language = SPUtils.instance().getString("language")
                tv_price1.text = when(language){
                    "en"->"${100-(order.discount*10).toInt()}%"
                    "ch"->"${order.discount}折"
                    Const.Language.ENGLISH->"${100-(order.discount*10).toInt()}%"
                    Const.Language.CHINESE->"${order.discount}折"
                    else->"${100-(order.discount*10).toInt()}%"
                }
                ll_detail.addView(view1)
app/src/main/java/com/igo/user/ui/trip/TripActivity.kt
@@ -240,7 +240,7 @@
            shareDialog.setCallback(object :ShareDialog.Callback{
                override fun onOk(way: Int) {
                    val language = SPUtils.instance().getString("language")
                    val languageP = if (language == "ch") 1 else if(language == "fr") 3 else 2
                    val languageP = if (language == Const.Language.CHINESE) 1 else if(language == Const.Language.FRENCH) 3 else 2
                    val url = String.format(Apis.TRIP_URL,languageP,id.toString(),type,languageP)
                    if (way == 3)
                        IGoShareUtils.shareWA(this@TripActivity,getString(R.string.行程分享内容,SPUtils.instance().getString(Const.User.PHONE)),url)
@@ -898,11 +898,11 @@
     * @param isStart true:起点标记 false:终点标记
     */
    private fun setMarker(latLon: LatLng, content: CharSequence = "", isStart: Boolean = true) {
        val language = SPUtils.instance().getString("language", "en")
        val language = SPUtils.instance().getString("language")
        if (isStart) {
            val ic = when (language) {
                "en" -> R.mipmap.starting_point_e
                "ch" -> R.mipmap.starting_point
                Const.Language.ENGLISH -> R.mipmap.starting_point_e
                Const.Language.CHINESE -> R.mipmap.starting_point
                else -> R.mipmap.starting_point_f
            }
            val icon = if (content.isEmpty()) BitmapDescriptorFactory.fromResource(ic)
@@ -923,8 +923,8 @@
            }
        } else {
            val ic = when (language) {
                "en" -> R.mipmap.end_point_e
                "ch" -> R.mipmap.end_point
                Const.Language.ENGLISH -> R.mipmap.end_point_e
                Const.Language.CHINESE -> R.mipmap.end_point
                else -> R.mipmap.end_point_f
            }
            if (endMarker != null) {
app/src/main/java/com/igo/user/utils/Const.kt
@@ -8,9 +8,11 @@
    const val Tag = "IGOLog"
    const val GoogleTag = "Google_Consumer=======>"
    const val PAGE_SIZE = 20 //列表页大小
    //各类第三方key
    const val UMENG_KEY = "6014e26af1eb4f3f9b7d7b35"
    const val LOGIN_KEY = "DyINxe+JJ40/jVOc5KiVYUBCTMwMu6NTOKlk+02P+N0GJC0WEpt3ku4YZmId/jYUl8atB44AuZzD3lBxYFRvJGc06iQ2MN1fxcY5/aglSGzwtscPr8XUdhUE31Jyk1lCQAiN2hAuSubR08B7FHuyjm11S2PH9lxGQX3mWOxZqwKrVWfp5moGg2ZoT2WQco1+mx0MBUbixcInlfxz6PZCiDTrIozc4ErXkCHvQ2H3UTMLCjleUwYEYYHQbg5tCTAniJAeuAy/vvzhYfOMFoBm8cWQHSaklrVOOeeFyojfWJvJdW5xRmkVHQ=="
    const val LOGIN_KEY =
        "DyINxe+JJ40/jVOc5KiVYUBCTMwMu6NTOKlk+02P+N0GJC0WEpt3ku4YZmId/jYUl8atB44AuZzD3lBxYFRvJGc06iQ2MN1fxcY5/aglSGzwtscPr8XUdhUE31Jyk1lCQAiN2hAuSubR08B7FHuyjm11S2PH9lxGQX3mWOxZqwKrVWfp5moGg2ZoT2WQco1+mx0MBUbixcInlfxz6PZCiDTrIozc4ErXkCHvQ2H3UTMLCjleUwYEYYHQbg5tCTAniJAeuAy/vvzhYfOMFoBm8cWQHSaklrVOOeeFyojfWJvJdW5xRmkVHQ=="
    const val WX_APP_ID = "wxee51b2f5147bdd4c"
    const val WX_SECRET = "ae28aa141b837619d4429415451b49e0"
    const val QQ_APP_ID = "1105787937"
@@ -24,10 +26,51 @@
    var BUCKET_NAME = "i-go"
    var OBS_END_POINT = "https://obs.af-south-1.myhuaweicloud.com"
    val monthEnglish = arrayListOf("January","February","March","April","May","June","July","August","September","October","November","December")
    val monthFrench = arrayListOf("Janvier","Février","Mars","Avril","Mai","Juin","Juillet","Août","Septembre","Octobre","Novembre","Décembre")
    val monthEnglish = arrayListOf(
        "January",
        "February",
        "March",
        "April",
        "May",
        "June",
        "July",
        "August",
        "September",
        "October",
        "November",
        "December"
    )
    val monthFrench = arrayListOf(
        "Janvier",
        "Février",
        "Mars",
        "Avril",
        "Mai",
        "Juin",
        "Juillet",
        "Août",
        "Septembre",
        "Octobre",
        "Novembre",
        "Décembre"
    )
    const val FIRST_LAUNCH = "isFirst"
    //语言
    object Language {
        //英语
        const val ENGLISH = "en"
        //法语
        const val FRENCH = "fr"
        //汉语
        const val CHINESE = "ch"
        //默认语言
        const val DEFAULT_LANGUAGE = FRENCH
    }
    object User {
        const val TOKEN = "token"
@@ -39,12 +82,12 @@
        const val NO_PHONE = "noPhone"
    }
    object Share{
    object Share {
        const val TITLE = "GOPOST"
        const val TRIP_CONTENT = "你的好友(%s)正在使用GOPOST%s(%s)。"
    }
    object OrderType{ //1=专车,2=出租车,3=城际,4=小件物流-同城,5=小件物流-跨城,6=包车
    object OrderType { //1=专车,2=出租车,3=城际,4=小件物流-同城,5=小件物流-跨城,6=包车
        const val TYPE_SPECIAL = 1
        const val TYPE_TAXI = 2
        const val TYPE_CROSS_CITY = 3
@@ -53,7 +96,7 @@
        const val TYPE_CHARTER = 6
    }
    object Method{
    object Method {
        const val PING_RECEIVE = "OK"
        const val ORDER_STATUS = "ORDER_STATUS"
        const val DRIVER_POSITION = "DRIVER_POSITION"
@@ -65,7 +108,7 @@
        const val DIFFERENCE = "DIFFERENCE"
    }
    object RequestCode{
    object RequestCode {
        const val START_SITE = 1000
        const val END_SITE = 1001
        const val START_ADDRESS = 1010
app/src/main/java/com/igo/user/utils/google/AMapKit.kt
@@ -17,11 +17,30 @@
import cn.sinata.xldutils.utils.SPUtils
import com.google.android.gms.common.api.ApiException
import com.google.android.gms.common.util.CollectionUtils.listOf
import com.google.android.gms.maps.*
import com.google.android.gms.maps.model.*
import com.google.android.gms.maps.CameraUpdateFactory
import com.google.android.gms.maps.GoogleMap
import com.google.android.gms.maps.GoogleMapOptions
import com.google.android.gms.maps.SupportMapFragment
import com.google.android.gms.maps.model.BitmapDescriptor
import com.google.android.gms.maps.model.BitmapDescriptorFactory
import com.google.android.gms.maps.model.CameraPosition
import com.google.android.gms.maps.model.Circle
import com.google.android.gms.maps.model.CircleOptions
import com.google.android.gms.maps.model.LatLng
import com.google.android.gms.maps.model.LatLngBounds
import com.google.android.gms.maps.model.Marker
import com.google.android.gms.maps.model.MarkerOptions
import com.google.android.gms.maps.model.Polygon
import com.google.android.gms.maps.model.PolygonOptions
import com.google.android.gms.maps.model.Polyline
import com.google.android.gms.maps.model.PolylineOptions
import com.google.android.libraries.mapsplatform.transportation.consumer.view.ConsumerGoogleMap
import com.google.android.libraries.places.api.Places
import com.google.android.libraries.places.api.model.*
import com.google.android.libraries.places.api.model.AutocompletePrediction
import com.google.android.libraries.places.api.model.AutocompleteSessionToken
import com.google.android.libraries.places.api.model.Place
import com.google.android.libraries.places.api.model.PlaceLikelihood
import com.google.android.libraries.places.api.model.TypeFilter
import com.google.android.libraries.places.api.net.FetchPlaceRequest
import com.google.android.libraries.places.api.net.FindAutocompletePredictionsRequest
import com.google.android.libraries.places.api.net.FindCurrentPlaceRequest
@@ -30,10 +49,13 @@
import com.igo.user.IGoApplication
import com.igo.user.R
import com.igo.user.utils.Const
import okhttp3.*
import java.util.*
import okhttp3.MediaType
import okhttp3.OkHttpClient
import okhttp3.Request
import okhttp3.RequestBody
import okhttp3.Response
import java.util.Arrays
import java.util.Collections.emptyList
import kotlin.collections.get
object AMapKit {
@@ -304,9 +326,6 @@
    ) {
        //https://maps.googleapis.com/maps/api/directions/json?origin=39.99709957757345,116.31184045225382&destination=39.949158391497214,116.4154639095068&sensor=false&mode=driving
        var language = SPUtils.instance().getString("language")
        if (language.isEmpty()) {
            language = "en"
        }
        var centerStr = getPointStr(centerPoint ?: arrayListOf())
        var url = "https://maps.googleapis.com/maps/api/directions/json" +
                "?origin=" + start.latitude.toString() + "," + start.longitude.toString() +
@@ -344,9 +363,6 @@
    ) {
        //https://maps.googleapis.com/maps/api/directions/json?origin=39.99709957757345,116.31184045225382&destination=39.949158391497214,116.4154639095068&sensor=false&mode=driving
        var language = SPUtils.instance().getString("language")
        if (language.isEmpty()){
            language = "en"
        }
        val client: OkHttpClient = OkHttpClient().newBuilder()
            .build()
        val mediaType: MediaType = MediaType.parse("text/plain")!!
@@ -443,9 +459,6 @@
       function: ( List<GoogleNearBean2.ResultsBean>) -> Unit
    ) {
        var language = SPUtils.instance().getString("language")
        if (language.isEmpty()){
            language = "en"
        }
        var url = "https://maps.googleapis.com/maps/api/place/nearbysearch/json" +
                "?location="+ lat.toString()+","+lng.toString() +
                "&radius=1500" +
@@ -468,9 +481,6 @@
    fun searchSite(context: Context, content: String?, cityName: String, function: (List<AutocompletePrediction>) -> Unit) {
        val placesClient = Places.createClient(context)
        var language = SPUtils.instance().getString("language")
        if (language.isEmpty()){
            language = "en"
        }
        val token = AutocompleteSessionToken.newInstance()
//        val bounds = RectangularBounds.newInstance(
//            LatLng(-33.880490, 151.184363), LatLng(-33.858754, 151.229596))
@@ -516,9 +526,6 @@
     */
    fun getAddress(context: Context,lat:Double,lon:Double,function:(String)->Unit) {
        var language = SPUtils.instance().getString("language")
        if (language.isEmpty()){
            language = "en"
        }
        var url = "https://maps.googleapis.com/maps/api/geocode/json" +
                "?latlng="+ lat.toString() +","+lon.toString() +
                "&language="+language+
@@ -533,9 +540,6 @@
    }
    fun getAddressName(context: Context,lat:Double,lon:Double,function:(String)->Unit) {
        var language = SPUtils.instance().getString("language")
        if (language.isEmpty()){
            language = "en"
        }
        var url = "https://maps.googleapis.com/maps/api/geocode/json" +
                "?latlng="+ lat.toString() +","+lon.toString() +
                "&language="+language+
app/src/main/res/layout/dialog_user_rule.xml
@@ -16,7 +16,7 @@
        <RadioButton
            android:id="@+id/rb_privacy"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:background="@drawable/selector_bg_btn_left"
            android:button="@null"
@@ -31,7 +31,7 @@
        <RadioButton
            android:id="@+id/rb_user"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:background="@drawable/selector_bg_btn_right"
            android:button="@null"
xldutils-kotlin/src/main/java/cn/sinata/xldutils/activity/BaseActivity.kt
@@ -42,11 +42,7 @@
    }
    override fun attachBaseContext(newBase: Context?) {
        var language = SPUtils.instance().getString("language")
        val country = SPUtils.instance().getString("country")//todo 特别标注:此处country代表地区而非国家,台湾省是中国的一部分!!(用于区分繁体中文和简体中文)
        if (language.isNullOrEmpty()) {
            language = "en"
        }
        val language = SPUtils.instance().getString("language")
        super.attachBaseContext(LanguageUtil.attachBaseContext(newBase, language, ""))
    }
xldutils-kotlin/src/main/java/cn/sinata/xldutils/rxutils/Error.kt
@@ -6,19 +6,19 @@
 *
 */
object Error {
    val REQUEST_ERROR = when(SPUtils.instance().getString("language","en")){
    val REQUEST_ERROR = when(SPUtils.instance().getString("language")){
        "ch"->"请求出错!"
        "fr"->"Erreur de demande"
        else->"Request Error"
    }
    val PARSER_ERROR = "Data Parse Error!"
    val NET_ERROR = when(SPUtils.instance().getString("language","en")){
    val NET_ERROR = when(SPUtils.instance().getString("language")){
        "ch"->"网络异常,请检查您的网络状态!"
        "fr"->"Le réseau est anormal, veuillez vérifier l\'état de votre réseau!"
        else->"The network is abnormal, please check your network status!"
    }
    val SERVER_ERROR = when(SPUtils.instance().getString("language","en")){
    val SERVER_ERROR = when(SPUtils.instance().getString("language")){
        "ch"->"服务器异常,请稍后再试"
        "fr"->"Erreur de serveur, veuillez réessayer plus tard"
        else->"Server error, please retry later"
xldutils-kotlin/src/main/java/cn/sinata/xldutils/rxutils/ResultCommonSubscriber.kt
@@ -44,7 +44,7 @@
     */
    open fun onError(code: Int, msg: String) {
        if (msg == "TOKEN_INVALID"){
            _showToast(when(SPUtils.instance().getString("language","en")){
            _showToast(when(SPUtils.instance().getString("language")){
                "ch"->"您的身份已过期,请重新登录"
                "fr"->"Votre identité a expiré, veuillez vous reconnecter"
                else->"Your identity has expired, please log in again"
xldutils-kotlin/src/main/java/cn/sinata/xldutils/utils/LanguageUtil.java
@@ -37,7 +37,7 @@
    /**
     * @param context
     * @param newLanguage 想要切换的语言类型 比如 "en" ,"zh"
     * @param newLanguage 想要切换的语言类型 比如 Const.Language.ENGLISH ,"zh"
     */
    @SuppressWarnings("deprecation")
    public static void changeAppLanguage(Context context, String newLanguage, String country) {