aboutsummaryrefslogtreecommitdiffstats
path: root/app/src/main/java/net/lacolaco/smileessence/view/dialog/UserDetailDialogFragment.kt
diff options
context:
space:
mode:
authorKazuki Yamaguchi <k@rhe.jp>2017-10-11 15:44:45 +0900
committerKazuki Yamaguchi <k@rhe.jp>2017-10-11 16:43:06 +0900
commitd8a2c1c87f7d32bfe91216adaaa6ad6b43ee1419 (patch)
tree10c35eb992a092516cba83e6a01f26b96eeaa28d /app/src/main/java/net/lacolaco/smileessence/view/dialog/UserDetailDialogFragment.kt
parent901356520a22c1160b08b972416085c317579fde (diff)
downloadSmileEssence-d8a2c1c87f7d32bfe91216adaaa6ad6b43ee1419.tar.gz
unyap
Diffstat (limited to 'app/src/main/java/net/lacolaco/smileessence/view/dialog/UserDetailDialogFragment.kt')
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/view/dialog/UserDetailDialogFragment.kt168
1 files changed, 73 insertions, 95 deletions
diff --git a/app/src/main/java/net/lacolaco/smileessence/view/dialog/UserDetailDialogFragment.kt b/app/src/main/java/net/lacolaco/smileessence/view/dialog/UserDetailDialogFragment.kt
index acfca4ec..211700aa 100644
--- a/app/src/main/java/net/lacolaco/smileessence/view/dialog/UserDetailDialogFragment.kt
+++ b/app/src/main/java/net/lacolaco/smileessence/view/dialog/UserDetailDialogFragment.kt
@@ -22,93 +22,80 @@ import net.lacolaco.smileessence.view.ThreeStateButton
import net.lacolaco.smileessence.view.adapter.TimelineAdapter
import org.jetbrains.anko.browse
-class UserDetailDialogFragment : StackableDialogFragment(), View.OnClickListener {
+class UserDetailDialogFragment : StackableDialogFragment() {
private val adapter by lazy { TimelineAdapter(activity, world) }
private lateinit var user: User
- override fun onClick(v: View) {
- when (v.id) {
- R.id.imageview_user_detail_menu -> {
- val v = view
- val builder = AlertDialog.Builder(activity)
- builder.setTitle("@" + user.screenName)
- .setItems(R.array.user_commands) { dialog, which ->
- // XXX
- UIHandler().postDelayed({
- if (this@UserDetailDialogFragment.isAdded) {
+ private fun showPopupMenu(v: View) {
+ val builder = AlertDialog.Builder(activity)
+ builder.setTitle("@" + user.screenName)
+ .setItems(R.array.user_commands) { _, which ->
+ when (which) {
+ 0 -> {
+ val text = String.format("@%s ", user.screenName)
+ world.postState.beginTransaction().insertText(0, text).moveCursor(text.length).commit()
+ world.notify(R.string.notice_add_to_reply)
+ }
+ 1 -> DialogHelper.showDialog(activity, SendMessageDialogFragment.newInstance(user))
+ 2 -> ConfirmDialogFragment.show(activity, getString(R.string.dialog_confirm_commands)) {
+ launchUi {
+ try {
+ world.blockAsync(user.id).await()
+ world.notify(R.string.notice_block_succeeded)
updateRelationship(v)
+ } catch (e: TwitterTaskException) {
+ world.notifyError(R.string.notice_block_failed)
}
- }, 1000)
- when (which) {
- 0 -> {
- val text = String.format("@%s ", user.screenName)
- world.postState.beginTransaction().insertText(0, text).moveCursor(text.length).commit()
- world.notify(R.string.notice_add_to_reply)
- }
- 1 -> DialogHelper.showDialog(activity, SendMessageDialogFragment.newInstance(user))
- 2 -> ConfirmDialogFragment.show(activity, getString(R.string.dialog_confirm_commands)) {
- launchBg {
- try {
- world.blockAsync(user.id).await()
- world.notify(R.string.notice_block_succeeded)
- } catch (e: TwitterTaskException) {
- world.notifyError(R.string.notice_block_failed)
- }
- }
- }
- 3 -> launchBg {
- try {
- world.unblockAsync(user.id).await()
- world.notify(R.string.notice_unblock_succeeded)
- } catch (e: TwitterTaskException) {
- world.notifyError(R.string.notice_unblock_failed)
- }
- }
- 4 -> ConfirmDialogFragment.show(activity, getString(R.string.dialog_confirm_commands)) {
- launchBg {
- try {
- world.reportSpamAsync(user.id).await()
- world.notify(R.string.notice_r4s_succeeded)
- } catch (e: TwitterTaskException) {
- world.notifyError(R.string.notice_r4s_failed)
- }
- }
- }
- 5 -> browse(user.aclogTimelineURL)
- else -> throw IllegalStateException()
}
}
- val dialog = builder.create()
- dialog.show()
- }
- R.id.imageview_user_detail_icon -> browse(user.profileImageUrl)
- R.id.textview_user_detail_screenname, R.id.textview_user_detail_tweet_count -> browse(user.userHomeURL)
- R.id.textview_user_detail_friend_count -> browse(String.format("%s/following", user.userHomeURL))
- R.id.textview_user_detail_follower_count -> browse(String.format("%s/followers", user.userHomeURL))
- R.id.textview_user_detail_favorite_count -> browse(String.format("%s/favorites", user.userHomeURL))
- R.id.button_user_detail_follow -> {
- val v = view
- ConfirmDialogFragment.show(activity, getString(R.string.dialog_confirm_commands)) {
- val isFollowing = v.button_user_detail_follow.state == ThreeStateButton.STATE_ON
- v.button_user_detail_follow.state = ThreeStateButton.STATE_LOCKED
- launchUi {
- try {
- if (isFollowing) {
- world.unfollowAsync(user.id).await()
- world.notify(R.string.notice_unfollow_succeeded)
- } else {
- world.followAsync(user.id).await()
- world.notify(R.string.notice_follow_succeeded)
+ 3 -> launchBg {
+ try {
+ world.unblockAsync(user.id).await()
+ world.notify(R.string.notice_unblock_succeeded)
+ updateRelationship(v)
+ } catch (e: TwitterTaskException) {
+ world.notifyError(R.string.notice_unblock_failed)
}
- updateRelationship(v)
- } catch (e: TwitterTaskException) {
- world.notifyError(if (isFollowing)
- R.string.notice_unfollow_failed
- else
- R.string.notice_follow_failed)
}
+ 4 -> ConfirmDialogFragment.show(activity, getString(R.string.dialog_confirm_commands)) {
+ launchBg {
+ try {
+ world.reportSpamAsync(user.id).await()
+ world.notify(R.string.notice_r4s_succeeded)
+ updateRelationship(v)
+ } catch (e: TwitterTaskException) {
+ world.notifyError(R.string.notice_r4s_failed)
+ }
+ }
+ }
+ 5 -> browse(user.aclogTimelineURL)
+ else -> throw IllegalStateException()
}
}
+ val dialog = builder.create()
+ dialog.show()
+ }
+
+ private fun toggleFollowing(v: View) {
+ ConfirmDialogFragment.show(activity, getString(R.string.dialog_confirm_commands)) {
+ val isFollowing = v.button_user_detail_follow.state == ThreeStateButton.STATE_ON
+ v.button_user_detail_follow.state = ThreeStateButton.STATE_LOCKED
+ launchUi {
+ try {
+ if (isFollowing) {
+ world.unfollowAsync(user.id).await()
+ world.notify(R.string.notice_unfollow_succeeded)
+ } else {
+ world.followAsync(user.id).await()
+ world.notify(R.string.notice_follow_succeeded)
+ }
+ updateRelationship(v)
+ } catch (e: TwitterTaskException) {
+ world.notifyError(if (isFollowing)
+ R.string.notice_unfollow_failed
+ else
+ R.string.notice_follow_failed)
+ }
}
}
}
@@ -122,15 +109,15 @@ class UserDetailDialogFragment : StackableDialogFragment(), View.OnClickListener
user = found
val v = activity.layoutInflater.inflate(R.layout.dialog_user_detail, null)
- v.imageview_user_detail_menu.setOnClickListener(this)
- v.textview_user_detail_screenname.setOnClickListener(this)
+ v.imageview_user_detail_menu.setOnClickListener { showPopupMenu(v) }
+ v.textview_user_detail_screenname.setOnClickListener { browse(user.userHomeURL) }
v.textview_user_detail_description.movementMethod = LinkMovementMethod.getInstance()
- v.textview_user_detail_tweet_count.setOnClickListener(this)
- v.textview_user_detail_friend_count.setOnClickListener(this)
- v.textview_user_detail_follower_count.setOnClickListener(this)
- v.textview_user_detail_favorite_count.setOnClickListener(this)
- v.imageview_user_detail_icon.setOnClickListener(this)
- v.button_user_detail_follow.setOnClickListener(this)
+ v.textview_user_detail_tweet_count.setOnClickListener { browse(user.userHomeURL) }
+ v.textview_user_detail_friend_count.setOnClickListener { browse(String.format("%s/following", user.userHomeURL)) }
+ v.textview_user_detail_follower_count.setOnClickListener { browse(String.format("%s/followers", user.userHomeURL)) }
+ v.textview_user_detail_favorite_count.setOnClickListener { browse(String.format("%s/favorites", user.userHomeURL)) }
+ v.imageview_user_detail_icon.setOnClickListener { browse(user.profileImageUrl) }
+ v.button_user_detail_follow.setOnClickListener { toggleFollowing(v) }
val refreshLayout = v.user_detail_refresh_layout
refreshLayout.setOnRefreshListener {
launchUi {
@@ -161,7 +148,7 @@ class UserDetailDialogFragment : StackableDialogFragment(), View.OnClickListener
updateUserDataBasic(v)
updateUserDataDetail(v)
- v.listview_user_detail_timeline.setAdapter(adapter)
+ v.listview_user_detail_timeline.adapter = adapter
executeUserTimelineTask(v, adapter)
updateRelationship(v)
@@ -185,15 +172,6 @@ class UserDetailDialogFragment : StackableDialogFragment(), View.OnClickListener
}
}
- private val htmlDescription: String?
- get() {
- var html = user.description
- html = html.replace("https?://[\\w/:%#$&?()~.=+-]+".toRegex(), "<a href=\"$0\">$0</a>")
- html = html.replace("@([a-zA-Z0-9_]+)".toRegex(), "<a href=\"https://twitter.com/$1\">$0</a>")
- html = html.replace("\r\n".toRegex(), "<br />")
- return html
- }
-
private fun updateUserDataBasic(v: View) {
v.textview_user_detail_name.text = user.name
v.textview_user_detail_screenname.text = user.screenName
@@ -214,7 +192,7 @@ class UserDetailDialogFragment : StackableDialogFragment(), View.OnClickListener
v.textview_user_detail_url.text = user.url
v.textview_user_detail_url.visibility = View.VISIBLE
}
- v.textview_user_detail_description.text = Html.fromHtml(htmlDescription)
+ v.textview_user_detail_description.text = Html.fromHtml(user.decoratedDescription)
v.textview_user_detail_tweet_count.text = user.statusesCount.toString()
v.textview_user_detail_friend_count.text = user.friendsCount.toString()