Selaa lähdekoodia

[feat]键盘插件,实现重新生成按钮处理

hezihao 8 kuukautta sitten
vanhempi
commit
69fd0985c2

+ 17 - 0
plugins/keyboard_android/android/src/main/kotlin/com/atmob/keyboard_android/component/child/impl/AiChatComponent.kt

@@ -36,6 +36,8 @@ class AiChatComponent @JvmOverloads constructor(
     private lateinit var mListItems: Items
     private lateinit var mListAdapter: MultiTypeAdapter
 
+    private var mOnActionClickListener: OnActionClickListener? = null
+
     override fun onInflateViewId(): Int {
         return R.layout.component_ai_chat
     }
@@ -54,6 +56,7 @@ class AiChatComponent @JvmOverloads constructor(
         }
         vReGenerateBtn.click {
             // 重新生成
+            mOnActionClickListener?.onReGenerateClick()
         }
         vChatList.apply {
             mListItems = Items()
@@ -144,4 +147,18 @@ class AiChatComponent @JvmOverloads constructor(
         }
         mListAdapter.notifyDataSetChanged()
     }
+
+    interface OnActionClickListener {
+        /**
+         * 重新生成
+         */
+        fun onReGenerateClick()
+    }
+
+    /**
+     * 设置操作回调
+     */
+    fun setOnActionClickListener(listener: OnActionClickListener) {
+        this.mOnActionClickListener = listener
+    }
 }

+ 21 - 0
plugins/keyboard_android/android/src/main/kotlin/com/atmob/keyboard_android/component/child/impl/AiKeyboardCommonPanelComponent.kt

@@ -49,11 +49,18 @@ class AiKeyboardCommonPanelComponent @JvmOverloads constructor(
     private lateinit var vClearBtn: View
     private lateinit var vSendBtn: View
 
+    private lateinit var vCommonAiChatComponent: AiChatComponent
+
     private lateinit var mKeyListItems: Items
     private lateinit var mKeyListAdapter: MultiTypeAdapter
 
     private lateinit var mWaitLoadingController: WaitLoadingController
 
+    /**
+     * 当前点击的条目,用于点击重新生成时,重新生成内容
+     */
+    private var mCurrentClickItem: AiKeyboardKeyModel? = null
+
     override fun onInflateViewId(): Int {
         return R.layout.component_ai_keyboard_common_panel
     }
@@ -67,6 +74,7 @@ class AiKeyboardCommonPanelComponent @JvmOverloads constructor(
         vDeleteBtn = view.findViewById(R.id.delete_btn)
         vClearBtn = view.findViewById(R.id.clear_btn)
         vSendBtn = view.findViewById(R.id.send_btn)
+        vCommonAiChatComponent = view.findViewById(R.id.common_ai_chat_component)
     }
 
     override fun bindView(view: View) {
@@ -216,6 +224,16 @@ class AiKeyboardCommonPanelComponent @JvmOverloads constructor(
      */
     @SuppressLint("NotifyDataSetChanged")
     private fun setData() {
+        // 监听重新生成按钮点击
+        vCommonAiChatComponent.setOnActionClickListener(object :
+            AiChatComponent.OnActionClickListener {
+            override fun onReGenerateClick() {
+                mCurrentClickItem?.let {
+                    // 重新生成内容
+                    handleItemClickLogic(it)
+                }
+            }
+        })
     }
 
     /**
@@ -270,6 +288,9 @@ class AiKeyboardCommonPanelComponent @JvmOverloads constructor(
             return
         }
 
+        // 保存当前点击项的数据
+        mCurrentClickItem = item
+
         LogUtil.d("当前帮助模式 => $helpMode")
 
         // 获取剪切板内容

+ 21 - 0
plugins/keyboard_android/android/src/main/kotlin/com/atmob/keyboard_android/component/child/impl/AiKeyboardProloguePanelComponent.kt

@@ -57,6 +57,8 @@ class AiKeyboardProloguePanelComponent @JvmOverloads constructor(
     private lateinit var vClearBtn: View
     private lateinit var vSendBtn: View
 
+    private lateinit var vPrologueAiChatComponent: AiChatComponent
+
     private lateinit var mKeyListItems: Items
     private lateinit var mKeyListAdapter: MultiTypeAdapter
 
@@ -67,6 +69,11 @@ class AiKeyboardProloguePanelComponent @JvmOverloads constructor(
 
     private lateinit var mWaitLoadingController: WaitLoadingController
 
+    /**
+     * 当前点击的条目,用于点击重新生成时,重新生成内容
+     */
+    private var mCurrentClickItem: AiKeyboardKeyModel? = null
+
     override fun onInflateViewId(): Int {
         return R.layout.component_ai_keyboard_prologue_panel
     }
@@ -80,6 +87,7 @@ class AiKeyboardProloguePanelComponent @JvmOverloads constructor(
         vDeleteBtn = view.findViewById(R.id.delete_btn)
         vClearBtn = view.findViewById(R.id.clear_btn)
         vSendBtn = view.findViewById(R.id.send_btn)
+        vPrologueAiChatComponent = view.findViewById(R.id.prologue_ai_chat_component)
     }
 
     override fun bindView(view: View) {
@@ -301,6 +309,16 @@ class AiKeyboardProloguePanelComponent @JvmOverloads constructor(
         KeyboardHolder.getKeyboardService()?.getKeyboardViewModel()?.getPrologueList(onFail = {
             ToastUtils.showShort(it)
         })
+        // 监听重新生成按钮点击
+        vPrologueAiChatComponent.setOnActionClickListener(object :
+            AiChatComponent.OnActionClickListener {
+            override fun onReGenerateClick() {
+                mCurrentClickItem?.let {
+                    // 重新生成内容
+                    handleItemClickLogic(it)
+                }
+            }
+        })
     }
 
     /**
@@ -351,6 +369,9 @@ class AiKeyboardProloguePanelComponent @JvmOverloads constructor(
 
         LogUtil.d("当前帮助模式 => $helpMode")
 
+        // 保存当前点击项的数据
+        mCurrentClickItem = item
+
         // 获取剪切板内容
         val clipboardText =
             KeyboardHolder.getKeyboardService()?.getKeyboardViewModel()?.userClipboardData?.value

+ 1 - 0
plugins/keyboard_android/android/src/main/res/layout/component_ai_keyboard_common_panel.xml

@@ -65,6 +65,7 @@
                 </com.atmob.keyboard_android.component.base.FakeComponent>
 
                 <com.atmob.keyboard_android.component.child.impl.AiChatComponent
+                    android:id="@+id/common_ai_chat_component"
                     android:layout_width="match_parent"
                     android:layout_height="wrap_content"
                     android:visibility="gone"

+ 1 - 0
plugins/keyboard_android/android/src/main/res/layout/component_ai_keyboard_prologue_panel.xml

@@ -60,6 +60,7 @@
                 </com.atmob.keyboard_android.component.base.FakeComponent>
 
                 <com.atmob.keyboard_android.component.child.impl.AiChatComponent
+                    android:id="@+id/prologue_ai_chat_component"
                     android:layout_width="match_parent"
                     android:layout_height="wrap_content"
                     android:visibility="gone"