diff options
author | Kazuki Yamaguchi <k@rhe.jp> | 2017-10-11 15:44:45 +0900 |
---|---|---|
committer | Kazuki Yamaguchi <k@rhe.jp> | 2017-10-11 16:43:06 +0900 |
commit | d8a2c1c87f7d32bfe91216adaaa6ad6b43ee1419 (patch) | |
tree | 10c35eb992a092516cba83e6a01f26b96eeaa28d /app/src/main/java/net/lacolaco/smileessence/view/dialog/UserDetailDialogFragment.kt | |
parent | 901356520a22c1160b08b972416085c317579fde (diff) | |
download | SmileEssence-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.kt | 168 |
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() |