diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 0103cfaf4..a4fc6cf66 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -69,8 +69,7 @@ - - + - + - + tools:node="remove"> + diff --git a/app/src/main/java/com/yizhuan/erban/ui/setting/AreaSelectActivity.kt b/app/src/main/java/com/yizhuan/erban/ui/setting/AreaSelectActivity.kt new file mode 100644 index 000000000..c196205fa --- /dev/null +++ b/app/src/main/java/com/yizhuan/erban/ui/setting/AreaSelectActivity.kt @@ -0,0 +1,64 @@ +package com.yizhuan.erban.ui.setting + +import android.content.Context +import android.content.Intent +import androidx.activity.viewModels +import com.netease.nim.uikit.StatusBarUtil +import com.yizhuan.erban.R +import com.yizhuan.erban.avroom.anotherroompk.RoomPKCreateActivity +import com.yizhuan.erban.base.BaseViewBindingActivity +import com.yizhuan.erban.databinding.ActivityAreaSelectBinding +import com.yizhuan.erban.ui.setting.adapter.PartitionAdapter +import com.yizhuan.erban.ui.setting.viewmodel.SetViewModel +import com.yizhuan.xchat_android_library.utils.ResUtil + +/** + * 切换语言 + * Created by wushaocheng on 2023/05/18. + */ +class AreaSelectActivity : BaseViewBindingActivity() { + + private val setViewModel: SetViewModel by viewModels() + private val mPartitionAdapter by lazy { PartitionAdapter() } + + companion object { + fun start(context: Context) { + val starter = Intent(context, AreaSelectActivity::class.java) + context.startActivity(starter) + } + } + + override fun init() { + initWhiteTitleBar("分区") + + binding.recyclerView.adapter = mPartitionAdapter + + setViewModel.partitionLiveData.observe(this) { + mPartitionAdapter.setSelectId(it.userPartitionId) + mPartitionAdapter.setNewData(it.partitionInfos) + } + + setViewModel.changePartitionLiveData.observe(this) { + toast("切换成功") + } + + mPartitionAdapter.setOnItemClickListener { _, _, position -> + mPartitionAdapter.getItem(position)?.id?.let { setViewModel.changePartition(it) } + mPartitionAdapter.setSelectPosition(position) + mPartitionAdapter.notifyDataSetChanged() + } + + setViewModel.getPartitionList() + } + + override fun needSteepStateBar(): Boolean { + return true + } + + override fun setStatusBar() { + super.setStatusBar() + StatusBarUtil.transparencyBar(this) + StatusBarUtil.StatusBarLightMode(this) + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/yizhuan/erban/ui/setting/SettingActivity.kt b/app/src/main/java/com/yizhuan/erban/ui/setting/SettingActivity.kt index 153adeec7..a747a76f7 100644 --- a/app/src/main/java/com/yizhuan/erban/ui/setting/SettingActivity.kt +++ b/app/src/main/java/com/yizhuan/erban/ui/setting/SettingActivity.kt @@ -72,6 +72,7 @@ class SettingActivity : BaseViewBindingActivity(), View. binding.tvShieldManager.setOnClickListener(this) binding.rlyPermission.setOnClickListener(this) binding.rlyCheck.setOnClickListener(this) + binding.rlyArea.setOnClickListener(this) } @SuppressLint("CheckResult") @@ -135,6 +136,7 @@ class SettingActivity : BaseViewBindingActivity(), View. R.id.tv_shield_manager -> ShieldManageActivity.start(context) R.id.rly_permission -> PermissionGuideActivity.start(context) R.id.rly_check -> AppUpgradeHelper.checkAppUpgrade(this, dialogManager) + R.id.rly_area -> AreaSelectActivity.start(this) } } diff --git a/app/src/main/java/com/yizhuan/erban/ui/setting/adapter/PartitionAdapter.kt b/app/src/main/java/com/yizhuan/erban/ui/setting/adapter/PartitionAdapter.kt new file mode 100644 index 000000000..80998e5af --- /dev/null +++ b/app/src/main/java/com/yizhuan/erban/ui/setting/adapter/PartitionAdapter.kt @@ -0,0 +1,34 @@ +package com.yizhuan.erban.ui.setting.adapter + +import androidx.constraintlayout.widget.ConstraintLayout +import com.chad.library.adapter.base.BaseQuickAdapter +import com.chad.library.adapter.base.BaseViewHolder +import com.yizhuan.erban.R +import com.yizhuan.xchat_android_core.set.bean.PartitionBean + +class PartitionAdapter : + BaseQuickAdapter(R.layout.item_partition) { + private var selectPosition = -1 + private var selectId = 0 + + fun setSelectPosition(selectPosition: Int) { + this.selectPosition = selectPosition + } + + fun setSelectId(selectId: Int) { + this.selectId = selectId + } + + override fun convert(helper: BaseViewHolder, item: PartitionBean) { + helper.setText(R.id.tvArea, item.desc) + val isSelect = selectPosition == helper.layoutPosition + if (selectId == item.id && selectPosition == -1) { + helper.getView(R.id.cs_bg).isSelected = true + } else if (selectPosition != -1) { + helper.getView(R.id.cs_bg).isSelected = isSelect + } else { + helper.getView(R.id.cs_bg).isSelected = false + } + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/yizhuan/erban/ui/setting/viewmodel/SetViewModel.kt b/app/src/main/java/com/yizhuan/erban/ui/setting/viewmodel/SetViewModel.kt index 5ef7377a5..e3efa5c5c 100644 --- a/app/src/main/java/com/yizhuan/erban/ui/setting/viewmodel/SetViewModel.kt +++ b/app/src/main/java/com/yizhuan/erban/ui/setting/viewmodel/SetViewModel.kt @@ -4,6 +4,8 @@ import androidx.lifecycle.LiveData import androidx.lifecycle.MutableLiveData import com.yizhuan.erban.base.BaseViewModel import com.yizhuan.xchat_android_core.bean.response.ListResult +import com.yizhuan.xchat_android_core.set.bean.PartitionBean +import com.yizhuan.xchat_android_core.set.bean.PartitionInfoBean import com.yizhuan.xchat_android_core.set.bean.ShieldInfo import com.yizhuan.xchat_android_core.set.model.SetModel import com.yizhuan.xchat_android_core.utils.toast @@ -16,6 +18,12 @@ class SetViewModel : BaseViewModel() { private val _unMaskLiveData = MutableLiveData() val unMaskLiveData: LiveData = _unMaskLiveData + private val _partitionLiveData = MutableLiveData() + val partitionLiveData: LiveData = _partitionLiveData + + private val _changePartitionLiveData = MutableLiveData() + val changePartitionLiveData: LiveData = _changePartitionLiveData + fun getShieldRoom(pageNum: Int, pageSize: Int) { safeLaunch( onError = { @@ -38,4 +46,28 @@ class SetViewModel : BaseViewModel() { ) } + /** + * 获取用户当前分区和分区列表 + */ + fun getPartitionList() { + safeLaunch( + true, + block = { + _partitionLiveData.value = SetModel.getPartitionList() + } + ) + } + + /** + * 切换分区 + */ + fun changePartition(partitionId : Int) { + safeLaunch( + true, + block = { + _changePartitionLiveData.value = SetModel.changePartition(partitionId) + } + ) + } + } \ No newline at end of file diff --git a/app/src/main/java/com/yizhuan/erban/ui/webview/JSInterface.java b/app/src/main/java/com/yizhuan/erban/ui/webview/JSInterface.java index 6ae70126b..d1cc3f467 100644 --- a/app/src/main/java/com/yizhuan/erban/ui/webview/JSInterface.java +++ b/app/src/main/java/com/yizhuan/erban/ui/webview/JSInterface.java @@ -61,6 +61,7 @@ import org.greenrobot.eventbus.EventBus; import java.io.File; import java.util.HashMap; +import java.util.Locale; /** *

html js 与webview 交互接口

@@ -473,6 +474,7 @@ public class JSInterface { jsonObject.put("appVersionCode", String.valueOf(AppUtils.getVersionCode(context))); jsonObject.put("deviceId", DeviceUtil.getDeviceId(context)); jsonObject.put("channel", AppMetaDataUtil.getChannelID()); + jsonObject.put("accept-language", Locale.getDefault().getLanguage()); Log.e(TAG, "getDeviceInfo: " + jsonObject); return jsonObject.toJSONString(); } diff --git a/app/src/main/java/com/yizhuan/erban/ui/webview/SimpleJSInterface.java b/app/src/main/java/com/yizhuan/erban/ui/webview/SimpleJSInterface.java index c1b74a345..750aa478e 100644 --- a/app/src/main/java/com/yizhuan/erban/ui/webview/SimpleJSInterface.java +++ b/app/src/main/java/com/yizhuan/erban/ui/webview/SimpleJSInterface.java @@ -15,6 +15,8 @@ import com.yizhuan.xchat_android_core.Constants; import com.yizhuan.xchat_android_library.utils.AppUtils; import com.yizhuan.xchat_android_library.utils.VersionUtil; +import java.util.Locale; + /** *

html js 与webview 交互接口

* Created by ${user} on 2017/11/6. @@ -110,6 +112,7 @@ public class SimpleJSInterface { jsonObject.put("appVersion", VersionUtil.getLocalName(context)); jsonObject.put("appVersionCode", String.valueOf(AppUtils.getVersionCode(context))); jsonObject.put("channel", getChannel()); + jsonObject.put("accept-language", Locale.getDefault().getLanguage()); Log.e(TAG, "getDeviceInfo: " + jsonObject); return jsonObject.toJSONString(); } diff --git a/app/src/main/res/drawable/bg_ededed.xml b/app/src/main/res/drawable/bg_ededed.xml new file mode 100644 index 000000000..96cb009ea --- /dev/null +++ b/app/src/main/res/drawable/bg_ededed.xml @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_ffffff.xml b/app/src/main/res/drawable/bg_ffffff.xml new file mode 100644 index 000000000..83c737d41 --- /dev/null +++ b/app/src/main/res/drawable/bg_ffffff.xml @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/selector_partition_bg.xml b/app/src/main/res/drawable/selector_partition_bg.xml new file mode 100644 index 000000000..a11f1d7b1 --- /dev/null +++ b/app/src/main/res/drawable/selector_partition_bg.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_area_select.xml b/app/src/main/res/layout/activity_area_select.xml new file mode 100644 index 000000000..87bd474ff --- /dev/null +++ b/app/src/main/res/layout/activity_area_select.xml @@ -0,0 +1,25 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_setting.xml b/app/src/main/res/layout/activity_setting.xml index 60106591e..11461f0e0 100644 --- a/app/src/main/res/layout/activity_setting.xml +++ b/app/src/main/res/layout/activity_setting.xml @@ -414,6 +414,40 @@ tools:ignore="SpUsage" /> + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values-ar/strings.xml b/app/src/main/res/values-ar/strings.xml index a77557998..d9b1ec314 100644 --- a/app/src/main/res/values-ar/strings.xml +++ b/app/src/main/res/values-ar/strings.xml @@ -2,22 +2,20 @@ &app_name; - 暫無消息 - 網絡不給力 - 網絡異常,加載失敗 - 點擊刷新 - 加載中… - 點擊或者下拉嘗試刷新 - 確定 + لا أخبار + الشبكة ليست قوية + فشل تحميل استثناء الشبكة + انقر للتحديث + تحميل … + انقر أو اسحب لأسفل لمحاولة التحديث + تأكد يلغي استثناء الشبكة ، يرجى المحاولة مرة أخرى - هدية إرتد ملابس - تسجيل الدخول عبر الفيسبوك تسجيل الدخول Googleتسجيل الدخول عبر diff --git a/app/src/main/res/values-en/strings.xml b/app/src/main/res/values-en/strings.xml index fc8cb5dc0..e98ce5866 100644 --- a/app/src/main/res/values-en/strings.xml +++ b/app/src/main/res/values-en/strings.xml @@ -3,21 +3,19 @@ &app_name; - 暫無消息 - 網絡不給力 - 網絡異常,加載失敗 - 點擊刷新 - 加載中… - 點擊或者下拉嘗試刷新 - 確定 + no news + network is not strong + network exception, failed to load + click to refresh + loading… + click or pull down to try to refresh + Sure Cancel Network exception, please try again - Gift Dress up - Facebook login Login Google login @@ -67,7 +65,7 @@ The image is not selected No camera Hint - Compressing photos... + Compressing photos… "%1$s picture compression failed: %2$s picturePath:%3$s" "image with cropping failure" "there are pictures that failed to compress" @@ -171,7 +169,7 @@ Search user id Search room name or id Please enter the room name or id - Online... + Online… Customer service diff --git a/app/src/main/res/values-in/strings.xml b/app/src/main/res/values-in/strings.xml index 58582cd3f..5ce80bf88 100644 --- a/app/src/main/res/values-in/strings.xml +++ b/app/src/main/res/values-in/strings.xml @@ -3,13 +3,13 @@ &app_name; - 暫無消息 - 網絡不給力 - 網絡異常,加載失敗 - 點擊刷新 - 加載中… - 點擊或者下拉嘗試刷新 - 確定 + tidak ada pesan + jaringan tidak kuat + pengecualian jaringan, gagal dimuat + klik untuk menyegarkan + memuat… + klik atau tarik ke bawah untuk menyegarkan + konfirmasi Batal Pengecualian jaringan, harap coba lagi Hadiah diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index cacdabf13..c5eeae923 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -3,20 +3,19 @@ &app_name; - 暫無消息 - 網絡不給力 - 網絡異常,加載失敗 - 點擊刷新 - 加載中… - 點擊或者下拉嘗試刷新 - 確定 + haber yok + Ağ güçlü değil + Ağ istisnası, yüklenemedi + yenilemek için tıklayın + Yükleniyor… + Yenilemeyi denemek için tıklayın veya aşağı çekin + Elbette İptal etmek Ağ istisnası, lütfen tekrar deneyin Hediye giyinmek - facebook girişi Giriş yapmak Google girişi diff --git a/core/src/diff_src_erban/java/com/yizhuan/xchat_android_core/set/bean/PartitionBean.kt b/core/src/diff_src_erban/java/com/yizhuan/xchat_android_core/set/bean/PartitionBean.kt new file mode 100644 index 000000000..70f2b1256 --- /dev/null +++ b/core/src/diff_src_erban/java/com/yizhuan/xchat_android_core/set/bean/PartitionBean.kt @@ -0,0 +1,7 @@ +package com.yizhuan.xchat_android_core.set.bean + +data class PartitionBean( + val id: Int, + val desc: String ?= null, + val languages: List ?= null +) diff --git a/core/src/diff_src_erban/java/com/yizhuan/xchat_android_core/set/bean/PartitionInfoBean.kt b/core/src/diff_src_erban/java/com/yizhuan/xchat_android_core/set/bean/PartitionInfoBean.kt new file mode 100644 index 000000000..b93f53322 --- /dev/null +++ b/core/src/diff_src_erban/java/com/yizhuan/xchat_android_core/set/bean/PartitionInfoBean.kt @@ -0,0 +1,6 @@ +package com.yizhuan.xchat_android_core.set.bean + +data class PartitionInfoBean( + val userPartitionId: Int, + val partitionInfos: List ?= null +) diff --git a/core/src/diff_src_erban/java/com/yizhuan/xchat_android_core/set/model/SetModel.kt b/core/src/diff_src_erban/java/com/yizhuan/xchat_android_core/set/model/SetModel.kt index c4ccb25e6..8f29628dd 100644 --- a/core/src/diff_src_erban/java/com/yizhuan/xchat_android_core/set/model/SetModel.kt +++ b/core/src/diff_src_erban/java/com/yizhuan/xchat_android_core/set/model/SetModel.kt @@ -3,6 +3,8 @@ package com.yizhuan.xchat_android_core.set.model import com.yizhuan.xchat_android_core.base.BaseModel import com.yizhuan.xchat_android_core.bean.response.ServiceResult import com.yizhuan.xchat_android_core.home.bean.* +import com.yizhuan.xchat_android_core.set.bean.PartitionBean +import com.yizhuan.xchat_android_core.set.bean.PartitionInfoBean import com.yizhuan.xchat_android_core.set.bean.ShieldInfo import com.yizhuan.xchat_android_core.utils.net.launchRequest import com.yizhuan.xchat_android_library.net.rxnet.RxNet @@ -25,6 +27,16 @@ object SetModel : BaseModel() { api.setUnMask(roomUid, type) } + suspend fun getPartitionList(): PartitionInfoBean? = + launchRequest { + api.getPartitionList() + } + + suspend fun changePartition(partitionId : Int): String? = + launchRequest { + api.changePartition(partitionId) + } + private interface Api { /** @@ -47,6 +59,20 @@ object SetModel : BaseModel() { @Query("type") type: Int ): ServiceResult + /** + * 获取用户分区和分区列表 + * @return + */ + @GET("/partition/get") + suspend fun getPartitionList(): ServiceResult + + /** + * 切换分区 + * @return + */ + @POST("/partition/change") + suspend fun changePartition(@Query("partitionId") partitionId: Int): ServiceResult + } } \ No newline at end of file