Commit d5c1455a authored by Mygod's avatar Mygod

Replace Toast.position with TooltipCompat

parent 9fd86fe8
......@@ -38,11 +38,11 @@ import android.support.v7.app.AlertDialog
import android.support.v7.app.AppCompatActivity
import android.support.v7.content.res.AppCompatResources
import android.support.v7.preference.PreferenceDataStore
import android.support.v7.widget.TooltipCompat
import android.text.TextUtils
import android.util.Log
import android.view.View
import android.widget.TextView
import android.widget.Toast
import com.github.jorgecastilloprz.FABProgressCircle
import com.github.shadowsocks.App.Companion.app
import com.github.shadowsocks.acl.Acl
......@@ -57,7 +57,6 @@ import com.github.shadowsocks.database.ProfileManager
import com.github.shadowsocks.preference.DataStore
import com.github.shadowsocks.preference.OnPreferenceDataStoreChangeListener
import com.github.shadowsocks.utils.Key
import com.github.shadowsocks.utils.position
import com.github.shadowsocks.utils.responseLength
import com.github.shadowsocks.utils.thread
import com.mikepenz.crossfader.Crossfader
......@@ -165,8 +164,12 @@ class MainActivity : AppCompatActivity(), ShadowsocksConnection.Interface, Drawe
}
}
this.state = state
if (state == BaseService.CONNECTED) fab.backgroundTintList = greenTint else {
if (state == BaseService.CONNECTED) {
fab.backgroundTintList = greenTint
TooltipCompat.setTooltipText(fab, getString(R.string.stop))
} else {
fab.backgroundTintList = greyTint
TooltipCompat.setTooltipText(fab, getString(R.string.connect))
updateTraffic(-1, 0, 0, 0, 0)
testCount += 1 // suppress previous test messages
}
......@@ -329,13 +332,6 @@ class MainActivity : AppCompatActivity(), ShadowsocksConnection.Interface, Drawe
} else app.startService()
}
}
fab.setOnLongClickListener {
Toast.makeText(this, if (state == BaseService.CONNECTED) R.string.stop else R.string.connect,
Toast.LENGTH_SHORT)
.position(fab, window, 0, resources.getDimensionPixelOffset(R.dimen.margin_small))
.show()
true
}
changeState(BaseService.IDLE) // reset everything to init state
app.handler.post { connection.connect() }
......
......@@ -46,7 +46,6 @@ import com.github.shadowsocks.database.ProfileManager
import com.github.shadowsocks.plugin.PluginConfiguration
import com.github.shadowsocks.preference.DataStore
import com.github.shadowsocks.utils.Action
import com.github.shadowsocks.utils.position
import com.github.shadowsocks.widget.UndoSnackbarManager
import com.google.android.gms.ads.AdRequest
import com.google.android.gms.ads.AdSize
......@@ -112,7 +111,7 @@ class ProfilesFragment : ToolbarFragment(), Toolbar.OnMenuItemClickListener {
}
inner class ProfileViewHolder(view: View) : RecyclerView.ViewHolder(view),
View.OnClickListener, View.OnLongClickListener, PopupMenu.OnMenuItemClickListener {
View.OnClickListener, PopupMenu.OnMenuItemClickListener {
internal lateinit var item: Profile
private val text1 = itemView.findViewById<TextView>(android.R.id.text1)
......@@ -123,7 +122,7 @@ class ProfilesFragment : ToolbarFragment(), Toolbar.OnMenuItemClickListener {
init {
edit.setOnClickListener { startConfig(item.id) }
edit.setOnLongClickListener(this)
TooltipCompat.setTooltipText(edit, edit.contentDescription)
itemView.setOnClickListener(this)
val share = itemView.findViewById<View>(R.id.share)
share.setOnClickListener {
......@@ -132,7 +131,7 @@ class ProfilesFragment : ToolbarFragment(), Toolbar.OnMenuItemClickListener {
popup.setOnMenuItemClickListener(this)
popup.show()
}
share.setOnLongClickListener(this)
TooltipCompat.setTooltipText(share, share.contentDescription)
}
fun bind(item: Profile) {
......@@ -202,12 +201,6 @@ class ProfilesFragment : ToolbarFragment(), Toolbar.OnMenuItemClickListener {
}
}
override fun onLongClick(view: View): Boolean {
Toast.makeText(activity, view.contentDescription, Toast.LENGTH_SHORT).position(view, activity!!.window,
0, resources.getDimensionPixelOffset(R.dimen.margin_small)).show()
return true
}
override fun onMenuItemClick(item: MenuItem): Boolean = when (item.itemId) {
R.id.action_qr_code_nfc -> {
fragmentManager!!.beginTransaction().add(QRCodeDialog(this.item.toString()), "")
......
......@@ -3,17 +3,11 @@ package com.github.shadowsocks.utils
import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
import android.graphics.Rect
import android.os.Build
import android.support.v4.app.Fragment
import android.support.v4.app.FragmentManager
import android.support.v7.util.SortedList
import android.util.DisplayMetrics
import android.util.TypedValue
import android.view.Gravity
import android.view.View
import android.view.Window
import android.widget.Toast
import com.github.shadowsocks.App.Companion.app
import java.lang.reflect.InvocationTargetException
import java.net.InetAddress
......@@ -59,25 +53,6 @@ fun thread(start: Boolean = true, isDaemon: Boolean = false, contextClassLoader:
val URLConnection.responseLength: Long
get() = if (Build.VERSION.SDK_INT >= 24) contentLengthLong else contentLength.toLong()
/**
* Based on: http://stackoverflow.com/a/21026866/2245107
*/
fun Toast.position(view: View, window: Window, offsetX: Int = 0, offsetY: Int = 0): Toast {
val rect = Rect()
window.decorView.getWindowVisibleDisplayFrame(rect)
val viewLocation = IntArray(2)
view.getLocationInWindow(viewLocation)
val metrics = DisplayMetrics()
window.windowManager.defaultDisplay.getMetrics(metrics)
val toastView = this.view
toastView.measure(View.MeasureSpec.makeMeasureSpec(metrics.widthPixels, View.MeasureSpec.UNSPECIFIED),
View.MeasureSpec.makeMeasureSpec(metrics.heightPixels, View.MeasureSpec.UNSPECIFIED))
setGravity(Gravity.START or Gravity.TOP,
viewLocation[0] - rect.left + (view.width - toastView.measuredWidth) / 2 + offsetX,
viewLocation[1] - rect.top + view.height + offsetY)
return this
}
fun Float.dp(): Float = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, this, app.resources.displayMetrics)
/**
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment