diff options
author | Kazuki Yamaguchi <k@rhe.jp> | 2017-10-11 19:13:01 +0900 |
---|---|---|
committer | Kazuki Yamaguchi <k@rhe.jp> | 2017-10-11 19:13:01 +0900 |
commit | c225a3bdf691d7e6c677e424035b57ab0b0ee230 (patch) | |
tree | 007f0b148247fa623e24ecb45d216ae641fc892a | |
parent | d8a2c1c87f7d32bfe91216adaaa6ad6b43ee1419 (diff) | |
download | SmileEssence-c225a3bdf691d7e6c677e424035b57ab0b0ee230.tar.gz |
make stackabledialogs simple dialog with custom view
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> |