diff --git a/app/src/main/java/com/nnbc123/app/ui/setting/SettingActivity.java b/app/src/main/java/com/nnbc123/app/ui/setting/SettingActivity.java index 68bbbecb8..c3bb5594b 100644 --- a/app/src/main/java/com/nnbc123/app/ui/setting/SettingActivity.java +++ b/app/src/main/java/com/nnbc123/app/ui/setting/SettingActivity.java @@ -9,8 +9,11 @@ import android.text.SpannableString; import android.text.TextUtils; import android.view.View; +import androidx.core.util.Consumer; import androidx.databinding.DataBindingUtil; +import com.nnbc123.app.ui.setting.invite.InviteInputConfirmDialog; +import com.nnbc123.app.ui.setting.invite.InviteInputDialog; import com.nnbc123.core.UriProvider; import com.nnbc123.core.auth.AuthModel; import com.nnbc123.core.auth.event.LogoutEvent; @@ -55,6 +58,8 @@ public class SettingActivity extends BaseActivity implements View.OnClickListene private ActivitySettingBinding settingBinding; private WithdrawInfo withdrawInfos; + private InviteInputDialog inviteInputDialog; + private InviteInputConfirmDialog inviteInputConfirmDialog; @Override protected void onCreate(Bundle savedInstanceState) { @@ -76,6 +81,7 @@ public class SettingActivity extends BaseActivity implements View.OnClickListene protected void onDestroy() { super.onDestroy(); EventBus.getDefault().unregister(this); + dismissInviteDialog(); } @SuppressLint("CheckResult") @@ -311,5 +317,34 @@ public class SettingActivity extends BaseActivity implements View.OnClickListene finish(); } + public void showInviteInputDialog(){ + inviteInputDialog = new InviteInputDialog(this); + inviteInputDialog.setOnNext(new Consumer() { + @Override + public void accept(String s) { + showInviteInputDialog(s); + } + }); + inviteInputDialog.show(); + } + public void showInviteInputDialog(String code) { + inviteInputConfirmDialog = new InviteInputConfirmDialog(this, code); + inviteInputConfirmDialog.setOnNext(new Consumer() { + @Override + public void accept(String s) { + dismissInviteDialog(); + } + }); + inviteInputConfirmDialog.show(); + } + + private void dismissInviteDialog() { + if (inviteInputDialog != null && inviteInputDialog.isShowing()) { + inviteInputDialog.dismiss(); + } + if (inviteInputConfirmDialog != null && inviteInputConfirmDialog.isShowing()) { + inviteInputConfirmDialog.dismiss(); + } + } } diff --git a/app/src/main/java/com/nnbc123/app/ui/setting/invite/InviteInputConfirmDialog.kt b/app/src/main/java/com/nnbc123/app/ui/setting/invite/InviteInputConfirmDialog.kt new file mode 100644 index 000000000..63d6bdf53 --- /dev/null +++ b/app/src/main/java/com/nnbc123/app/ui/setting/invite/InviteInputConfirmDialog.kt @@ -0,0 +1,57 @@ +package com.nnbc123.app.ui.setting.invite + +import android.content.Context +import android.graphics.Typeface +import android.os.Bundle +import android.view.Gravity +import android.view.WindowManager +import android.widget.TextView +import androidx.core.util.Consumer +import com.chuhai.utils.ktx.getColorById +import com.chuhai.utils.spannable.SpannableTextBuilder +import com.nnbc123.app.R +import com.nnbc123.app.databinding.InviteInputConfirmDialogBinding +import com.nnbc123.app.ui.widget.dialog.BaseDialog +import com.nnbc123.app.utils.SpannableBuilder +import java.time.format.TextStyle + +/** + * Created by Max on 2024/3/25 20:05 + * Desc: + **/ +class InviteInputConfirmDialog(context: Context, val code: String) : + BaseDialog(context, R.style.dialog) { + + var onNext: Consumer? = null + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setCancelable(false) + val binding = InviteInputConfirmDialogBinding.inflate(layoutInflater) + setContentView(binding.root) + window?.attributes?.let { + it.width = WindowManager.LayoutParams.MATCH_PARENT + it.height = WindowManager.LayoutParams.WRAP_CONTENT + window?.attributes = it + } + SpannableTextBuilder(binding.tvTitle).appendText(context.getString(R.string.invite_input_confirm_title)) + .appendText( + text = context.getString(R.string.invite_input_confirm_format).format(code), + textColor = context.getColorById(R.color.color_2B2D33) + ) + .appendText("?").apply() + SpannableTextBuilder(binding.tvTips).appendText(context.getString(R.string.invite_input_tips3)) + .appendText( + text = "1次", + textSize = 16, + textStyle = Typeface.BOLD, + textColor = context.getColorById(R.color.color_theme) + ).apply() + binding.tvCancel.setOnClickListener { + dismiss() + } + binding.tvSave.setOnClickListener { + onNext?.accept(code) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/nnbc123/app/ui/setting/invite/InviteInputDialog.kt b/app/src/main/java/com/nnbc123/app/ui/setting/invite/InviteInputDialog.kt new file mode 100644 index 000000000..ec95db36d --- /dev/null +++ b/app/src/main/java/com/nnbc123/app/ui/setting/invite/InviteInputDialog.kt @@ -0,0 +1,49 @@ +package com.nnbc123.app.ui.setting.invite + +import android.content.Context +import android.os.Bundle +import android.view.View +import android.view.WindowManager +import androidx.core.util.Consumer +import com.chuhai.utils.ktx.setOnInputChangedListener +import com.nnbc123.app.R +import com.nnbc123.app.databinding.InviteInputDialogBinding +import com.nnbc123.app.ui.widget.dialog.BaseDialog + +/** + * Created by Max on 2024/3/25 20:05 + * Desc: + **/ +class InviteInputDialog(context: Context) : BaseDialog(context, R.style.dialog) { + + var onNext: Consumer? = null + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + val binding = InviteInputDialogBinding.inflate(layoutInflater) + setContentView(binding.root) + window?.attributes?.let { + it.width = WindowManager.LayoutParams.MATCH_PARENT + it.height = WindowManager.LayoutParams.WRAP_CONTENT + window?.attributes = it + } + binding.etCode.setOnInputChangedListener { + resetSaveBtn(binding) + true + } + binding.tvSave.setOnClickListener { + onNext?.accept(binding.etCode.text.toString().trim()) + } + resetSaveBtn(binding) + } + + private fun resetSaveBtn(binding: InviteInputDialogBinding) { + if (binding.etCode.length() > 0) { + binding.tvSave.isEnabled = true + binding.tvSave.setBackgroundResource(R.drawable.shape_theme_26) + } else { + binding.tvSave.isEnabled = false + binding.tvSave.setBackgroundResource(R.drawable.shape_33ffda24_26) + } + } +} \ No newline at end of file diff --git a/app/src/main/res/drawable/shape_33ffda24_26.xml b/app/src/main/res/drawable/shape_33ffda24_26.xml new file mode 100644 index 000000000..be62851d1 --- /dev/null +++ b/app/src/main/res/drawable/shape_33ffda24_26.xml @@ -0,0 +1,7 @@ + + + + + + diff --git a/app/src/main/res/drawable/shape_f3f5fa_8dp.xml b/app/src/main/res/drawable/shape_f3f5fa_8dp.xml new file mode 100644 index 000000000..70cd7fb88 --- /dev/null +++ b/app/src/main/res/drawable/shape_f3f5fa_8dp.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/shape_theme_26.xml b/app/src/main/res/drawable/shape_theme_26.xml new file mode 100644 index 000000000..564194a2f --- /dev/null +++ b/app/src/main/res/drawable/shape_theme_26.xml @@ -0,0 +1,7 @@ + + + + + + diff --git a/app/src/main/res/layout/invite_input_confirm_dialog.xml b/app/src/main/res/layout/invite_input_confirm_dialog.xml new file mode 100644 index 000000000..2970ec3d0 --- /dev/null +++ b/app/src/main/res/layout/invite_input_confirm_dialog.xml @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/invite_input_dialog.xml b/app/src/main/res/layout/invite_input_dialog.xml new file mode 100644 index 000000000..004939b0a --- /dev/null +++ b/app/src/main/res/layout/invite_input_dialog.xml @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index d0aa61fe8..18d56e33a 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -999,4 +999,12 @@ 下次不再出现此提示 留在这 立即前往 + + 填写邀请码 + 请输入要填写的邀请码 + 填写说明: + 请填写邀请人的邀请码;\n邀请码只能填写一次,请勿随意填写; + 确认填写 + 邀请码【%s】 + 注意邀请码只能填写 diff --git a/gradle.properties b/gradle.properties index 00cbb0a41..9d9b0571f 100644 --- a/gradle.properties +++ b/gradle.properties @@ -28,5 +28,5 @@ COMPILE_SDK_VERSION=32 MIN_SDK_VERSION=21 TARGET_SDK_VERSION=32 -version_name=2.1.1 -version_code=2101 \ No newline at end of file +version_name=2.1.3 +version_code=2103 \ No newline at end of file