diff --git a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/SubSettingRecyclerAdapter.kt b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/SubSettingRecyclerAdapter.kt index f3732bf3..d40d5876 100644 --- a/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/SubSettingRecyclerAdapter.kt +++ b/V2rayNG/app/src/main/kotlin/com/v2ray/ang/ui/SubSettingRecyclerAdapter.kt @@ -2,20 +2,34 @@ package com.v2ray.ang.ui import android.content.Intent import android.graphics.Color +import android.text.TextUtils import android.view.LayoutInflater +import android.view.View import androidx.recyclerview.widget.RecyclerView import android.view.ViewGroup +import androidx.appcompat.app.AlertDialog import com.google.gson.Gson import com.tencent.mmkv.MMKV import com.v2ray.ang.R +import com.v2ray.ang.databinding.ItemQrcodeBinding import com.v2ray.ang.databinding.ItemRecyclerSubSettingBinding +import com.v2ray.ang.dto.EConfigType +import com.v2ray.ang.extension.toast +import com.v2ray.ang.util.AngConfigManager import com.v2ray.ang.util.MmkvManager +import com.v2ray.ang.util.QRCodeDecoder +import com.v2ray.ang.util.Utils -class SubSettingRecyclerAdapter(val activity: SubSettingActivity) : RecyclerView.Adapter() { +class SubSettingRecyclerAdapter(val activity: SubSettingActivity) : + RecyclerView.Adapter() { private var mActivity: SubSettingActivity = activity private val subStorage by lazy { MMKV.mmkvWithID(MmkvManager.ID_SUB, MMKV.MULTI_PROCESS_MODE) } + private val share_method: Array by lazy { + mActivity.resources.getStringArray(R.array.share_sub_method) + } + override fun getItemCount() = mActivity.subscriptions.size override fun onBindViewHolder(holder: MainViewHolder, position: Int) { @@ -31,7 +45,8 @@ class SubSettingRecyclerAdapter(val activity: SubSettingActivity) : RecyclerView holder.itemView.setBackgroundColor(Color.TRANSPARENT) holder.itemSubSettingBinding.layoutEdit.setOnClickListener { - mActivity.startActivity(Intent(mActivity, SubEditActivity::class.java) + mActivity.startActivity( + Intent(mActivity, SubEditActivity::class.java) .putExtra("subId", subId) ) } @@ -40,11 +55,51 @@ class SubSettingRecyclerAdapter(val activity: SubSettingActivity) : RecyclerView subStorage?.encode(subId, Gson().toJson(subItem)) notifyItemChanged(position) } + + if (TextUtils.isEmpty(subItem.url)) { + holder.itemSubSettingBinding.layoutShare.visibility = View.INVISIBLE + } else { + holder.itemSubSettingBinding.layoutShare.setOnClickListener { + AlertDialog.Builder(mActivity) + .setItems(share_method.asList().toTypedArray()) { _, i -> + try { + when (i) { + 0 -> { + val ivBinding = + ItemQrcodeBinding.inflate(LayoutInflater.from(mActivity)) + ivBinding.ivQcode.setImageBitmap( + QRCodeDecoder.createQRCode( + subItem.url + + ) + ) + AlertDialog.Builder(mActivity).setView(ivBinding.root).show() + } + + 1 -> { + Utils.setClipboard(mActivity, subItem.url) + } + + else -> mActivity.toast("else") + } + } catch (e: Exception) { + e.printStackTrace() + } + }.show() + } + } } override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MainViewHolder { - return MainViewHolder(ItemRecyclerSubSettingBinding.inflate(LayoutInflater.from(parent.context), parent, false)) + return MainViewHolder( + ItemRecyclerSubSettingBinding.inflate( + LayoutInflater.from(parent.context), + parent, + false + ) + ) } - class MainViewHolder(val itemSubSettingBinding: ItemRecyclerSubSettingBinding) : RecyclerView.ViewHolder(itemSubSettingBinding.root) + class MainViewHolder(val itemSubSettingBinding: ItemRecyclerSubSettingBinding) : + RecyclerView.ViewHolder(itemSubSettingBinding.root) } diff --git a/V2rayNG/app/src/main/res/layout/activity_sub_setting.xml b/V2rayNG/app/src/main/res/layout/activity_sub_setting.xml index bb87f387..ccc6adeb 100644 --- a/V2rayNG/app/src/main/res/layout/activity_sub_setting.xml +++ b/V2rayNG/app/src/main/res/layout/activity_sub_setting.xml @@ -16,7 +16,8 @@ + android:layout_height="match_parent" + tools:listitem="@layout/item_recycler_sub_setting"/> \ No newline at end of file diff --git a/V2rayNG/app/src/main/res/layout/item_recycler_sub_setting.xml b/V2rayNG/app/src/main/res/layout/item_recycler_sub_setting.xml index a4467e27..568a4e82 100644 --- a/V2rayNG/app/src/main/res/layout/item_recycler_sub_setting.xml +++ b/V2rayNG/app/src/main/res/layout/item_recycler_sub_setting.xml @@ -73,12 +73,13 @@ android:gravity="center" android:orientation="vertical" android:padding="@dimen/layout_margin_spacing" - android:visibility="invisible"> + > + android:src="@drawable/ic_share_black_24dp" + app:tint="?attr/colorMainText"/> diff --git a/V2rayNG/app/src/main/res/values-fa/strings.xml b/V2rayNG/app/src/main/res/values-fa/strings.xml index cbfec4ac..d59ad51b 100644 --- a/V2rayNG/app/src/main/res/values-fa/strings.xml +++ b/V2rayNG/app/src/main/res/values-fa/strings.xml @@ -211,6 +211,11 @@ خروجی گرفتن پیکربندی کامل در کلیپ‌بورد + + QRcode + خروجی گرفتن در کلیپ‌بورد + + نشانی اینترنتی یا آی‌پی پروکسی نشانی اینترنتی یا آی‌پی مستقیم diff --git a/V2rayNG/app/src/main/res/values-ru/strings.xml b/V2rayNG/app/src/main/res/values-ru/strings.xml index 1eb03fde..41663951 100644 --- a/V2rayNG/app/src/main/res/values-ru/strings.xml +++ b/V2rayNG/app/src/main/res/values-ru/strings.xml @@ -216,6 +216,11 @@ Экспорт всего профиля в буфер обмена + + QR-код + Экспорт в буфер обмена + + Проксируемые Прямые diff --git a/V2rayNG/app/src/main/res/values-vi/strings.xml b/V2rayNG/app/src/main/res/values-vi/strings.xml index ebe9e3a9..1fbd3d1b 100644 --- a/V2rayNG/app/src/main/res/values-vi/strings.xml +++ b/V2rayNG/app/src/main/res/values-vi/strings.xml @@ -210,6 +210,11 @@ Sao chép thành cấu hình tùy chỉnh + + Xuất ra mã QR (Chụp màn hình để lưu) + Sao chép cấu hình này + + Proxy URL hoặc IP Direct URL hoặc IP diff --git a/V2rayNG/app/src/main/res/values-zh-rCN/strings.xml b/V2rayNG/app/src/main/res/values-zh-rCN/strings.xml index fa47d25b..738ace60 100644 --- a/V2rayNG/app/src/main/res/values-zh-rCN/strings.xml +++ b/V2rayNG/app/src/main/res/values-zh-rCN/strings.xml @@ -209,6 +209,12 @@ 导出至剪贴板 导出完整配置至剪贴板 + + + 二维码 + 导出至剪贴板 + + share_method 代理的网址或IP diff --git a/V2rayNG/app/src/main/res/values-zh-rTW/strings.xml b/V2rayNG/app/src/main/res/values-zh-rTW/strings.xml index 9970045f..07296e20 100644 --- a/V2rayNG/app/src/main/res/values-zh-rTW/strings.xml +++ b/V2rayNG/app/src/main/res/values-zh-rTW/strings.xml @@ -210,6 +210,11 @@ 匯出完整組態至剪貼簿 + + QR Code + 匯出至剪貼簿 + + Proxy URL 或 IP 直接連線 URL 或 IP diff --git a/V2rayNG/app/src/main/res/values/strings.xml b/V2rayNG/app/src/main/res/values/strings.xml index 42c0dddc..6a539045 100644 --- a/V2rayNG/app/src/main/res/values/strings.xml +++ b/V2rayNG/app/src/main/res/values/strings.xml @@ -218,6 +218,11 @@ Export full configuration to clipboard + + QRcode + Export to clipboard + + proxy URL or IP direct URL or IP