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