diff --git a/VisualNovel/app/src/main/java/com/remax/visualnovel/ui/chat/ui/ChatSettingView.kt b/VisualNovel/app/src/main/java/com/remax/visualnovel/ui/chat/ui/ChatSettingView.kt index 1a90415..bf3a2f5 100644 --- a/VisualNovel/app/src/main/java/com/remax/visualnovel/ui/chat/ui/ChatSettingView.kt +++ b/VisualNovel/app/src/main/java/com/remax/visualnovel/ui/chat/ui/ChatSettingView.kt @@ -3,6 +3,7 @@ package com.remax.visualnovel.ui.chat.ui import android.content.Context import android.graphics.Color +import android.provider.Settings.Global.getString import android.util.AttributeSet import android.view.LayoutInflater import android.view.View @@ -15,9 +16,13 @@ import com.remax.visualnovel.entity.response.ChatBubble import com.remax.visualnovel.entity.response.ChatHistory import com.remax.visualnovel.entity.response.ChatMode import com.remax.visualnovel.entity.response.ChatSound +import com.remax.visualnovel.extension.showDoubleBtnDialog import com.remax.visualnovel.ui.chat.ui.expandableSelector.ExpandAiModelSelectView +import com.remax.visualnovel.ui.chat.ui.expandableSelector.ExpandBubbleSelectView +import com.remax.visualnovel.ui.chat.ui.expandableSelector.ExpandChatModeSelectView import com.remax.visualnovel.ui.chat.ui.expandableSelector.ExpandSoundSelectView import com.remax.visualnovel.ui.chat.ui.expandableSelector.SelectorItem +import com.remax.visualnovel.widget.imageviewer.utils.activity import java.util.Date class ChatSettingView @JvmOverloads constructor( @@ -44,10 +49,27 @@ class ChatSettingView @JvmOverloads constructor( initBubbleSelectView() initBackgroundSelectView() initHistoryListView() + initOtherClickEvent() + } + + private fun initOtherClickEvent() { + with (mBinding) { + llDelete.setOnClickListener { + /*activity?.showDoubleBtnDialog( + getString(R.string.delete_chat), + getString(R.string.delete_chat_hint), + isDel = true, + topBtnText = getString(R.string.sure), + topBtnClick = { + // TODO - do delete the chat + } + )*/ + } + } } private fun scroll2Position(targetSubView: View) { - mBinding.scrollView.smoothScrollTo(0, targetSubView.top) + mBinding.scrollView.scroll2ChildView(targetSubView) } fun initAiModelSelectorView() { @@ -123,11 +145,26 @@ class ChatSettingView @JvmOverloads constructor( ) ) - //aiModelSelector.setOnItemSelectedListener() - mBinding.chatModelSelector.setTitleIcon(R.mipmap.setting_chat_mode_icon) - mBinding.chatModelSelector.setTitleText(R.string.chat_mode) - mBinding.chatModelSelector.setItems(items) - mBinding.chatModelSelector.selectItem(0) + with(mBinding.chatModelSelector) { + setTitleIcon(R.mipmap.setting_chat_mode_icon) + setTitleText(R.string.chat_mode) + setItems(items) + selectItem(0) + setOnEventListener(object : ExpandChatModeSelectView.IEventListener { + override fun onItemSelected( + position: Int, + item: ChatMode + ) { + + } + + override fun onExpanded(isExpanded: Boolean) { + if (isExpanded) + scroll2Position(this@with) + } + + }) + } } @@ -223,7 +260,23 @@ class ChatSettingView @JvmOverloads constructor( ) ) - mBinding.bubbleSelectView.setItems(items) + with(mBinding.bubbleSelectView) { + setTitleText(R.string.chat_bubble) + setItems(items) + setOnEventListener(object : ExpandBubbleSelectView.IEventListener { + override fun onItemSelected( + position: Int, + item: ChatBubble + ) { + + } + + override fun onExpanded(isExpanded: Boolean) { + if (isExpanded) + scroll2Position(this@with) + } + }) + } } fun initBackgroundSelectView() { diff --git a/VisualNovel/app/src/main/java/com/remax/visualnovel/ui/chat/ui/MyScrollView.kt b/VisualNovel/app/src/main/java/com/remax/visualnovel/ui/chat/ui/MyScrollView.kt new file mode 100644 index 0000000..cb423d6 --- /dev/null +++ b/VisualNovel/app/src/main/java/com/remax/visualnovel/ui/chat/ui/MyScrollView.kt @@ -0,0 +1,26 @@ +package com.remax.visualnovel.ui.chat.ui + +import android.content.Context +import android.util.AttributeSet +import android.view.View +import android.graphics.Rect +import androidx.core.widget.NestedScrollView + +class MyScrollView @JvmOverloads constructor( + context: Context, + attrs: AttributeSet? = null, + defStyleAttr: Int = 0 +) : NestedScrollView(context, attrs, defStyleAttr) { + + fun scroll2ChildView(child: View) { + val tempRect = Rect() + child.getDrawingRect(tempRect) + offsetDescendantRectToMyCoords(child, tempRect) + val scrollDelta: Int = computeScrollDeltaToGetChildRectOnScreen(tempRect) + /*if (scrollDelta != 0) { + scrollBy(0, scrollDelta) + }*/ + smoothScrollTo(0, tempRect.top) + } + +} diff --git a/VisualNovel/app/src/main/java/com/remax/visualnovel/ui/chat/ui/expandableSelector/ExpandAiModelSelectView.kt b/VisualNovel/app/src/main/java/com/remax/visualnovel/ui/chat/ui/expandableSelector/ExpandAiModelSelectView.kt index 71a5338..130893b 100644 --- a/VisualNovel/app/src/main/java/com/remax/visualnovel/ui/chat/ui/expandableSelector/ExpandAiModelSelectView.kt +++ b/VisualNovel/app/src/main/java/com/remax/visualnovel/ui/chat/ui/expandableSelector/ExpandAiModelSelectView.kt @@ -34,6 +34,10 @@ class ExpandAiModelSelectView @JvmOverloads constructor( fun onExpanded(isExpanded: Boolean) } + fun setOnEventListener(listener: IEventListener) { + this.mEventListener = listener + } + init { initView(context, attrs) } @@ -205,9 +209,7 @@ class ExpandAiModelSelectView @JvmOverloads constructor( return height } - fun setOnEventListener(listener: IEventListener) { - this.mEventListener = listener - } + } \ No newline at end of file diff --git a/VisualNovel/app/src/main/java/com/remax/visualnovel/ui/chat/ui/expandableSelector/ExpandBubbleSelectView.kt b/VisualNovel/app/src/main/java/com/remax/visualnovel/ui/chat/ui/expandableSelector/ExpandBubbleSelectView.kt index 9fe2684..732ed25 100644 --- a/VisualNovel/app/src/main/java/com/remax/visualnovel/ui/chat/ui/expandableSelector/ExpandBubbleSelectView.kt +++ b/VisualNovel/app/src/main/java/com/remax/visualnovel/ui/chat/ui/expandableSelector/ExpandBubbleSelectView.kt @@ -25,7 +25,16 @@ class ExpandBubbleSelectView @JvmOverloads constructor( private var isExpanded = false private var animationDuration = 300 - private var itemSelectedListener: OnItemSelectedListener? = null + private var mEventListener: IEventListener? = null + + interface IEventListener { + fun onItemSelected(position: Int, item: ChatBubble) + fun onExpanded(isExpanded: Boolean) + } + + fun setOnEventListener(listener: IEventListener) { + this.mEventListener = listener + } init { initView(context, attrs) @@ -63,6 +72,7 @@ class ExpandBubbleSelectView @JvmOverloads constructor( fun toggle() { if (isExpanded) collapse() else expand() + mEventListener?.onExpanded(isExpanded) } fun expand() { @@ -128,11 +138,5 @@ class ExpandBubbleSelectView @JvmOverloads constructor( return height } - fun setOnItemSelectedListener(listener: OnItemSelectedListener) { - this.itemSelectedListener = listener - } - interface OnItemSelectedListener { - fun onItemSelected(position: Int, item: SelectorItem) - } } \ No newline at end of file diff --git a/VisualNovel/app/src/main/java/com/remax/visualnovel/ui/chat/ui/expandableSelector/ExpandChatModeSelectView.kt b/VisualNovel/app/src/main/java/com/remax/visualnovel/ui/chat/ui/expandableSelector/ExpandChatModeSelectView.kt index 320a2d5..b063c0b 100644 --- a/VisualNovel/app/src/main/java/com/remax/visualnovel/ui/chat/ui/expandableSelector/ExpandChatModeSelectView.kt +++ b/VisualNovel/app/src/main/java/com/remax/visualnovel/ui/chat/ui/expandableSelector/ExpandChatModeSelectView.kt @@ -29,7 +29,16 @@ class ExpandChatModeSelectView @JvmOverloads constructor( private var isExpanded = false private var animationDuration = 300 private var items: List = emptyList() - private var itemSelectedListener: OnItemSelectedListener? = null + + private var mEventListener: IEventListener? = null + interface IEventListener { + fun onItemSelected(position: Int, item: ChatMode) + fun onExpanded(isExpanded: Boolean) + } + + fun setOnEventListener(listener: IEventListener) { + this.mEventListener = listener + } init { initView(context, attrs) @@ -96,7 +105,7 @@ class ExpandChatModeSelectView @JvmOverloads constructor( binding.root.setOnClickListener { selectItem(position) - itemSelectedListener?.onItemSelected(position, item) + mEventListener?.onItemSelected(position, item) } return binding.root } @@ -129,6 +138,7 @@ class ExpandChatModeSelectView @JvmOverloads constructor( fun toggle() { if (isExpanded) collapse() else expand() + mEventListener?.onExpanded(isExpanded) } fun expand() { @@ -194,11 +204,5 @@ class ExpandChatModeSelectView @JvmOverloads constructor( return height } - fun setOnItemSelectedListener(listener: OnItemSelectedListener) { - this.itemSelectedListener = listener - } - interface OnItemSelectedListener { - fun onItemSelected(position: Int, item: ChatMode) - } } \ No newline at end of file diff --git a/VisualNovel/app/src/main/res/drawable/chat_delete_bg.xml b/VisualNovel/app/src/main/res/drawable/chat_delete_bg.xml new file mode 100644 index 0000000..4c386a1 --- /dev/null +++ b/VisualNovel/app/src/main/res/drawable/chat_delete_bg.xml @@ -0,0 +1,15 @@ + + + + + + \ No newline at end of file diff --git a/VisualNovel/app/src/main/res/layout/layout_chat_menu_view.xml b/VisualNovel/app/src/main/res/layout/layout_chat_menu_view.xml index 8250378..775bd5d 100644 --- a/VisualNovel/app/src/main/res/layout/layout_chat_menu_view.xml +++ b/VisualNovel/app/src/main/res/layout/layout_chat_menu_view.xml @@ -44,7 +44,7 @@ - - + \ No newline at end of file