aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKazuki Yamaguchi <k@rhe.jp>2017-10-11 19:13:01 +0900
committerKazuki Yamaguchi <k@rhe.jp>2017-10-11 19:13:01 +0900
commitc225a3bdf691d7e6c677e424035b57ab0b0ee230 (patch)
tree007f0b148247fa623e24ecb45d216ae641fc892a
parentd8a2c1c87f7d32bfe91216adaaa6ad6b43ee1419 (diff)
downloadSmileEssence-c225a3bdf691d7e6c677e424035b57ab0b0ee230.tar.gz
make stackabledialogs simple dialog with custom view
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/view/dialog/MessageDetailDialogFragment.kt14
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/view/dialog/SendMessageDialogFragment.kt16
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/view/dialog/StackableDialogFragment.kt9
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/view/dialog/StatusDetailDialogFragment.kt16
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/view/dialog/TalkChainDialogFragment.kt18
-rw-r--r--app/src/main/java/net/lacolaco/smileessence/view/dialog/UserDetailDialogFragment.kt19
-rw-r--r--app/src/main/res/values/styles.xml12
7 files changed, 68 insertions, 36 deletions
diff --git a/app/src/main/java/net/lacolaco/smileessence/view/dialog/MessageDetailDialogFragment.kt b/app/src/main/java/net/lacolaco/smileessence/view/dialog/MessageDetailDialogFragment.kt
index f62011a3..89c4473a 100644
--- a/app/src/main/java/net/lacolaco/smileessence/view/dialog/MessageDetailDialogFragment.kt
+++ b/app/src/main/java/net/lacolaco/smileessence/view/dialog/MessageDetailDialogFragment.kt
@@ -1,9 +1,9 @@
package net.lacolaco.smileessence.view.dialog
import android.app.AlertDialog
-import android.app.Dialog
import android.graphics.drawable.ColorDrawable
import android.os.Bundle
+import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import kotlinx.android.synthetic.main.dialog_status_detail.view.*
@@ -29,15 +29,19 @@ import java.util.*
class MessageDetailDialogFragment : StackableDialogFragment() {
private lateinit var message: DirectMessage
- override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
val found = DirectMessage.fetch(arguments.getLong(KEY_MESSAGE_ID))
if (found == null) {
world.notifyError(R.string.notice_error_get_messages)
- return DisposeDialog(activity)
+ dismiss()
+ return
}
message = found
+ }
- val view = activity.layoutInflater.inflate(R.layout.dialog_status_detail, null)
+ override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
+ val view = inflater.inflate(R.layout.dialog_status_detail, container, false)
val messageHeader = Partials.getDirectMessageView(message, world, activity, view.layout_status_header)
messageHeader.isClickable = false
@@ -143,7 +147,7 @@ class MessageDetailDialogFragment : StackableDialogFragment() {
view.listview_status_detail_reply_to.visibility = View.GONE
}
- return AlertDialog.Builder(activity).setView(view).create()
+ return view
}
companion object {
diff --git a/app/src/main/java/net/lacolaco/smileessence/view/dialog/SendMessageDialogFragment.kt b/app/src/main/java/net/lacolaco/smileessence/view/dialog/SendMessageDialogFragment.kt
index c638f728..f02e179a 100644
--- a/app/src/main/java/net/lacolaco/smileessence/view/dialog/SendMessageDialogFragment.kt
+++ b/app/src/main/java/net/lacolaco/smileessence/view/dialog/SendMessageDialogFragment.kt
@@ -6,7 +6,9 @@ import android.os.Bundle
import android.support.v4.content.ContextCompat
import android.text.Editable
import android.text.TextWatcher
+import android.view.LayoutInflater
import android.view.View
+import android.view.ViewGroup
import com.twitter.Validator
import kotlinx.android.synthetic.main.dialog_send_message.view.*
import net.lacolaco.smileessence.R
@@ -49,23 +51,25 @@ class SendMessageDialogFragment : StackableDialogFragment(), TextWatcher, View.O
override fun afterTextChanged(s: Editable) {
}
- override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
val found = User.fetch(arguments.getLong(KEY_RECIPIENT_ID))
if (found == null) {
world.notifyError(R.string.notice_error_show_user)
- return DisposeDialog(activity)
+ dismiss()
+ return
}
recipient = found
+ }
- val view = activity.layoutInflater.inflate(R.layout.dialog_send_message, null)
+ override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
+ val view = inflater.inflate(R.layout.dialog_send_message, container, false)
view.textview_send_message_name.text = "To: @" + recipient.screenName
view.edittext_send_message.addTextChangedListener(this)
view.button_send_message.setOnClickListener(this)
view.button_send_message_delete.setOnClickListener(this)
view.edittext_send_message.setText("")
- return AlertDialog.Builder(activity)
- .setView(view)
- .create()
+ return view
}
private fun sendMessage() {
diff --git a/app/src/main/java/net/lacolaco/smileessence/view/dialog/StackableDialogFragment.kt b/app/src/main/java/net/lacolaco/smileessence/view/dialog/StackableDialogFragment.kt
index 7822cfe3..4f5bdf90 100644
--- a/app/src/main/java/net/lacolaco/smileessence/view/dialog/StackableDialogFragment.kt
+++ b/app/src/main/java/net/lacolaco/smileessence/view/dialog/StackableDialogFragment.kt
@@ -1,14 +1,23 @@
package net.lacolaco.smileessence.view.dialog
+import android.app.Dialog
import android.app.DialogFragment
+import android.os.Bundle
+import android.view.Window
import net.lacolaco.smileessence.World
import net.lacolaco.smileessence.activity.MainActivity
import net.lacolaco.smileessence.view.DialogHelper
/**
* Only used by MainActivity.
+ *
+ * Shows a dialog with no title by default.
*/
open class StackableDialogFragment : DialogFragment() {
+ override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
+ return Dialog(activity).apply { requestWindowFeature(Window.FEATURE_NO_TITLE) }
+ }
+
override fun dismiss() {
super.dismiss()
DialogHelper.unregisterDialog(tag)
diff --git a/app/src/main/java/net/lacolaco/smileessence/view/dialog/StatusDetailDialogFragment.kt b/app/src/main/java/net/lacolaco/smileessence/view/dialog/StatusDetailDialogFragment.kt
index 3e9918a2..757d0a0a 100644
--- a/app/src/main/java/net/lacolaco/smileessence/view/dialog/StatusDetailDialogFragment.kt
+++ b/app/src/main/java/net/lacolaco/smileessence/view/dialog/StatusDetailDialogFragment.kt
@@ -2,8 +2,10 @@ package net.lacolaco.smileessence.view.dialog
import android.app.AlertDialog
import android.app.Dialog
+import android.app.DialogFragment
import android.graphics.drawable.ColorDrawable
import android.os.Bundle
+import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import kotlinx.android.synthetic.main.dialog_status_detail.view.*
@@ -32,15 +34,20 @@ import java.util.*
class StatusDetailDialogFragment : StackableDialogFragment() {
private lateinit var tweet: Tweet
- override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
val found = Tweet.fetch(arguments.getLong(KEY_STATUS_ID))
if (found == null) {
world.notifyError(R.string.notice_error_show_status)
- return DisposeDialog(activity)
+ dismiss()
+ return
}
tweet = found
+ }
- val view = activity.layoutInflater.inflate(R.layout.dialog_status_detail, null)
+ override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
+ // return super.onCreateView(inflater, container, savedInstanceState)
+ val view = inflater.inflate(R.layout.dialog_status_detail, container, false)
val statusHeader = Partials.getTweetView(tweet, world, activity, view.layout_status_header)
statusHeader.isClickable = false
@@ -70,8 +77,7 @@ class StatusDetailDialogFragment : StackableDialogFragment() {
view.detail_dialog_divider_top.visibility = View.GONE
view.listview_status_detail_reply_to.visibility = View.GONE
}
-
- return AlertDialog.Builder(activity).setView(view).create()
+ return view
}
private fun updateViewReactions(view: View) {
diff --git a/app/src/main/java/net/lacolaco/smileessence/view/dialog/TalkChainDialogFragment.kt b/app/src/main/java/net/lacolaco/smileessence/view/dialog/TalkChainDialogFragment.kt
index 617a3d45..f3b81184 100644
--- a/app/src/main/java/net/lacolaco/smileessence/view/dialog/TalkChainDialogFragment.kt
+++ b/app/src/main/java/net/lacolaco/smileessence/view/dialog/TalkChainDialogFragment.kt
@@ -1,8 +1,7 @@
package net.lacolaco.smileessence.view.dialog
-import android.app.AlertDialog
-import android.app.Dialog
import android.os.Bundle
+import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import kotlinx.android.synthetic.main.dialog_talk_list.view.*
@@ -15,8 +14,10 @@ import net.lacolaco.smileessence.view.Partials
import net.lacolaco.smileessence.view.adapter.UnorderedCustomListAdapter
class TalkChainDialogFragment : StackableDialogFragment() {
- override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
- val view = activity.layoutInflater.inflate(R.layout.dialog_talk_list, null)
+ private val baseId by lazy { arguments.getLong(KEY_STATUS_ID) }
+
+ override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
+ val view = inflater.inflate(R.layout.dialog_talk_list, container, false)
val adapter = object : UnorderedCustomListAdapter<Tweet>() {
override fun getView(position: Int, convertView: View?, parent: ViewGroup): View {
return Partials.getTweetView(getItem(position), world, activity, convertView)
@@ -25,7 +26,7 @@ class TalkChainDialogFragment : StackableDialogFragment() {
view.listview_dialog_talk_list.adapter = adapter
launchBg {
- var id: Long? = arguments.getLong(KEY_STATUS_ID)
+ var id: Long? = baseId
while (id != null) {
val tweet = try {
world.getTweetAsync(id, false).await()
@@ -37,12 +38,7 @@ class TalkChainDialogFragment : StackableDialogFragment() {
id = tweet.inReplyToStatusId
}
}
-
- return AlertDialog.Builder(activity)
- .setTitle(R.string.dialog_title_talk_chain)
- .setView(view)
- .setCancelable(true)
- .create()
+ return view
}
companion object {
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 211700aa..f2eaa6de 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
@@ -1,12 +1,13 @@
package net.lacolaco.smileessence.view.dialog
import android.app.AlertDialog
-import android.app.Dialog
import android.os.Bundle
import android.text.Html
import android.text.TextUtils
import android.text.method.LinkMovementMethod
+import android.view.LayoutInflater
import android.view.View
+import android.view.ViewGroup
import com.omadahealth.github.swipyrefreshlayout.library.SwipyRefreshLayoutDirection
import kotlinx.android.synthetic.main.dialog_user_detail.view.*
import net.lacolaco.smileessence.R
@@ -14,7 +15,6 @@ import net.lacolaco.smileessence.data.ImageCache
import net.lacolaco.smileessence.entity.User
import net.lacolaco.smileessence.twitter.TwitterTaskException
import net.lacolaco.smileessence.twitter.task.*
-import net.lacolaco.smileessence.util.UIHandler
import net.lacolaco.smileessence.util.launchBg
import net.lacolaco.smileessence.util.launchUi
import net.lacolaco.smileessence.view.DialogHelper
@@ -100,15 +100,19 @@ class UserDetailDialogFragment : StackableDialogFragment() {
}
}
- override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
val found = User.fetch(arguments.getLong(KEY_USER_ID))
if (found == null) {
world.notify(R.string.notice_error_show_user)
- return DisposeDialog(activity)
+ dismiss()
+ return
}
user = found
+ }
- val v = activity.layoutInflater.inflate(R.layout.dialog_user_detail, null)
+ override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
+ val v = inflater.inflate(R.layout.dialog_user_detail, container, false)
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()
@@ -152,10 +156,7 @@ class UserDetailDialogFragment : StackableDialogFragment() {
executeUserTimelineTask(v, adapter)
updateRelationship(v)
- return AlertDialog.Builder(activity)
- .setView(v)
- .setCancelable(true)
- .create()
+ return v
}
private fun executeUserTimelineTask(v: View, adapter: TimelineAdapter) {
diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml
index 908b695d..fa6645cc 100644
--- a/app/src/main/res/values/styles.xml
+++ b/app/src/main/res/values/styles.xml
@@ -1,6 +1,7 @@
<resources>
<style name="theme_dark" parent="android:Theme.Holo">
+ <item name="android:dialogTheme">@style/SE.DialogTheme</item>
<item name="page_background">@color/gray_dark_dark</item>
<item name="icon_post_delete">@drawable/icon_delete_w</item>
<item name="icon_post_picture">@drawable/icon_picture_w</item>
@@ -34,6 +35,7 @@
</style>
<style name="theme_light" parent="android:Theme.Holo.Light.DarkActionBar">
+ <item name="android:dialogTheme">@style/SE.DialogTheme.Light</item>
<item name="page_background">@color/white</item>
<item name="icon_post_delete">@drawable/icon_delete</item>
<item name="icon_post_picture">@drawable/icon_picture</item>
@@ -66,6 +68,16 @@
<item name="icon_save">@drawable/icon_save</item>
</style>
+ <style name="SE.DialogTheme" parent="android:Theme.Holo.Dialog">
+ <item name="android:windowMinWidthMajor">@android:dimen/dialog_min_width_major</item>
+ <item name="android:windowMinWidthMinor">@android:dimen/dialog_min_width_minor</item>
+ </style>
+
+ <style name="SE.DialogTheme.Light" parent="android:Theme.Holo.Dialog">
+ <item name="android:windowMinWidthMajor">@android:dimen/dialog_min_width_major</item>
+ <item name="android:windowMinWidthMinor">@android:dimen/dialog_min_width_minor</item>
+ </style>
+
<style name="custom_button_transparent">
<item name="android:background">@drawable/button_selector_transparent</item>
</style>