Add support for WPS in repeater

This commit is contained in:
Mygod
2018-01-13 16:08:44 +08:00
parent aeab1059b4
commit 5e97e3d9ae
5 changed files with 81 additions and 8 deletions

View File

@@ -13,16 +13,18 @@ import android.os.IBinder
import android.support.v4.app.Fragment
import android.support.v4.content.ContextCompat
import android.support.v4.content.LocalBroadcastManager
import android.support.v7.app.AlertDialog
import android.support.v7.app.AppCompatDialog
import android.support.v7.widget.DefaultItemAnimator
import android.support.v7.widget.LinearLayoutManager
import android.support.v7.widget.RecyclerView
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.support.v7.widget.Toolbar
import android.view.*
import android.widget.EditText
import be.mygod.vpnhotspot.databinding.FragmentRepeaterBinding
import be.mygod.vpnhotspot.databinding.ListitemClientBinding
class RepeaterFragment : Fragment(), ServiceConnection {
class RepeaterFragment : Fragment(), ServiceConnection, Toolbar.OnMenuItemClickListener {
inner class Data : BaseObservable() {
val switchEnabled: Boolean
@Bindable get() = when (binder?.service?.status) {
@@ -71,7 +73,7 @@ class RepeaterFragment : Fragment(), ServiceConnection {
fun fetchClients() {
val binder = binder
if (binder?.service?.status == RepeaterService.Status.ACTIVE) {
if (binder?.active == true) {
owner = binder.service.group.owner
clients = binder.service.group.clientList
arpCache = NetUtils.arp(binder.service.routing?.downstream)
@@ -113,6 +115,8 @@ class RepeaterFragment : Fragment(), ServiceConnection {
binding.clients.itemAnimator = animator
binding.clients.adapter = adapter
binding.swipeRefresher.setOnRefreshListener { adapter.fetchClients() }
binding.toolbar.inflateMenu(R.menu.repeater)
binding.toolbar.setOnMenuItemClickListener(this)
return binding.root
}
@@ -143,4 +147,21 @@ class RepeaterFragment : Fragment(), ServiceConnection {
LocalBroadcastManager.getInstance(context!!).unregisterReceiver(data.statusListener)
data.onStatusChanged()
}
override fun onMenuItemClick(item: MenuItem) = when (item.itemId) {
R.id.wps -> if (binder?.active == true) {
val dialog = AlertDialog.Builder(context!!)
.setTitle("Enter PIN")
.setView(R.layout.dialog_wps)
.setPositiveButton(android.R.string.ok, { dialog, _ -> binder?.startWps((dialog as AppCompatDialog)
.findViewById<EditText>(android.R.id.edit)!!.text.toString()) })
.setNegativeButton(android.R.string.cancel, null)
.setNeutralButton("Push Button", { _, _ -> binder?.startWps(null) })
.create()
dialog.window.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE)
dialog.show()
true
} else false
else -> false
}
}