diff --git a/mobile/src/main/java/be/mygod/vpnhotspot/TetheringFragment.kt b/mobile/src/main/java/be/mygod/vpnhotspot/TetheringFragment.kt index df5a6bce..f31e9f37 100644 --- a/mobile/src/main/java/be/mygod/vpnhotspot/TetheringFragment.kt +++ b/mobile/src/main/java/be/mygod/vpnhotspot/TetheringFragment.kt @@ -13,16 +13,16 @@ import android.support.v7.util.SortedList import android.support.v7.widget.DefaultItemAnimator import android.support.v7.widget.LinearLayoutManager import android.support.v7.widget.RecyclerView -import android.text.Html +import android.support.v7.widget.Toolbar import android.view.LayoutInflater +import android.view.MenuItem import android.view.View import android.view.ViewGroup import be.mygod.vpnhotspot.App.Companion.app import be.mygod.vpnhotspot.databinding.FragmentTetheringBinding import be.mygod.vpnhotspot.databinding.ListitemInterfaceBinding -import be.mygod.vpnhotspot.widget.TextViewLinkHandler -class TetheringFragment : Fragment() { +class TetheringFragment : Fragment(), Toolbar.OnMenuItemClickListener { companion object { /** * Source: https://android.googlesource.com/platform/frameworks/base/+/61fa313/core/res/res/values/config.xml#328 @@ -115,11 +115,8 @@ class TetheringFragment : Fragment() { override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { binding = DataBindingUtil.inflate(inflater, R.layout.fragment_tethering, container, false) - binding.empty.text = Html.fromHtml(getString(R.string.tethering_no_interfaces)) - binding.empty.movementMethod = TextViewLinkHandler.create { - startActivity(Intent().setClassName("com.android.settings", - "com.android.settings.Settings\$TetherSettingsActivity")) - } + binding.toolbar.inflateMenu(R.menu.tethering) + binding.toolbar.setOnMenuItemClickListener(this) binding.interfaces.layoutManager = LinearLayoutManager(context, LinearLayoutManager.VERTICAL, false) val animator = DefaultItemAnimator() animator.supportsChangeAnimations = false // prevent fading-in/out when rebinding @@ -149,6 +146,15 @@ class TetheringFragment : Fragment() { super.onStop() } + override fun onMenuItemClick(item: MenuItem) = when (item.itemId) { + R.id.systemTethering -> { + startActivity(Intent().setClassName("com.android.settings", + "com.android.settings.Settings\$TetherSettingsActivity")) + true + } + else -> false + } + private fun crossFade(old: View, new: View) { val shortAnimTime = resources.getInteger(android.R.integer.config_shortAnimTime).toLong() old.animate().alpha(0F).setListener(object : AnimatorListenerAdapter() { diff --git a/mobile/src/main/java/be/mygod/vpnhotspot/widget/TextViewLinkHandler.kt b/mobile/src/main/java/be/mygod/vpnhotspot/widget/TextViewLinkHandler.kt deleted file mode 100644 index 24908aea..00000000 --- a/mobile/src/main/java/be/mygod/vpnhotspot/widget/TextViewLinkHandler.kt +++ /dev/null @@ -1,32 +0,0 @@ -package be.mygod.vpnhotspot.widget - -import android.text.Spannable -import android.text.method.LinkMovementMethod -import android.text.style.URLSpan -import android.view.MotionEvent -import android.widget.TextView - -/** - * Based on: https://stackoverflow.com/a/32443884/2245107 - */ -abstract class TextViewLinkHandler : LinkMovementMethod() { - companion object { - fun create(handler: (String) -> Unit) = object : TextViewLinkHandler() { - override fun onLinkClick(url: String) = handler(url) - } - } - - override fun onTouchEvent(widget: TextView, buffer: Spannable, event: MotionEvent): Boolean { - if (event.action != MotionEvent.ACTION_UP) return super.onTouchEvent(widget, buffer, event) - val x = event.x - widget.totalPaddingLeft + widget.scrollX - val y = event.y.toInt() - widget.totalPaddingTop + widget.scrollY - val layout = widget.layout - val line = layout.getLineForVertical(y) - val off = layout.getOffsetForHorizontal(line, x) - val link = buffer.getSpans(off, off, URLSpan::class.java) - if (link.isNotEmpty()) onLinkClick(link[0].url) - return true - } - - abstract fun onLinkClick(url: String) -} diff --git a/mobile/src/main/res/drawable/ic_action_settings.xml b/mobile/src/main/res/drawable/ic_action_settings.xml index 4f24c6a6..c5205275 100644 --- a/mobile/src/main/res/drawable/ic_action_settings.xml +++ b/mobile/src/main/res/drawable/ic_action_settings.xml @@ -4,6 +4,6 @@ android:viewportWidth="24.0" android:viewportHeight="24.0"> diff --git a/mobile/src/main/res/layout/fragment_tethering.xml b/mobile/src/main/res/layout/fragment_tethering.xml index 56c9d1dc..b7f948e8 100644 --- a/mobile/src/main/res/layout/fragment_tethering.xml +++ b/mobile/src/main/res/layout/fragment_tethering.xml @@ -22,9 +22,8 @@ android:id="@+id/empty" android:layout_width="match_parent" android:layout_height="match_parent" - android:linksClickable="true" android:padding="16dp" - tools:text="@string/tethering_no_interfaces"/> + android:text="@string/tethering_no_interfaces"/> + + + + \ No newline at end of file diff --git a/mobile/src/main/res/values-zh-rCN/strings.xml b/mobile/src/main/res/values-zh-rCN/strings.xml index 90c11e26..73eef4c5 100644 --- a/mobile/src/main/res/values-zh-rCN/strings.xml +++ b/mobile/src/main/res/values-zh-rCN/strings.xml @@ -35,7 +35,8 @@ 未添加服务请求 未知 #%d - 系统共享后使用此功能。]]> + 系统共享 + 请先打开系统共享后使用此功能。 服务 下游 DNS 服务器:端口 diff --git a/mobile/src/main/res/values/strings.xml b/mobile/src/main/res/values/strings.xml index fa030fd5..0a16f059 100644 --- a/mobile/src/main/res/values/strings.xml +++ b/mobile/src/main/res/values/strings.xml @@ -37,8 +37,8 @@ no service requests added unknown #%d - system - tethering first.]]> + System tethering + To use this feature, turn on any system tethering first. Service Downstream DNS server:port