mirror of
https://github.com/Palm1r/QodeAssist.git
synced 2025-11-14 05:52:50 -05:00
feat: Add disappearing tools and thinking component from chat
This commit is contained in:
@ -217,6 +217,11 @@ ChatRootView::ChatRootView(QQuickItem *parent)
|
||||
&Utils::BaseAspect::changed,
|
||||
this,
|
||||
&ChatRootView::isThinkingSupportChanged);
|
||||
connect(
|
||||
&Settings::toolsSettings().debugToolsAndThinkingComponent,
|
||||
&Utils::BaseAspect::changed,
|
||||
this,
|
||||
&ChatRootView::isToolDebugging);
|
||||
}
|
||||
|
||||
ChatModel *ChatRootView::chatModel() const
|
||||
@ -1126,4 +1131,9 @@ bool ChatRootView::isThinkingSupport() const
|
||||
return provider && provider->supportThinking();
|
||||
}
|
||||
|
||||
bool ChatRootView::isToolDebugging() const
|
||||
{
|
||||
return Settings::toolsSettings().debugToolsAndThinkingComponent();
|
||||
}
|
||||
|
||||
} // namespace QodeAssist::Chat
|
||||
|
||||
@ -58,6 +58,7 @@ class ChatRootView : public QQuickItem
|
||||
Q_PROPERTY(int currentMessagePendingEdits READ currentMessagePendingEdits NOTIFY currentMessageEditsStatsChanged FINAL)
|
||||
Q_PROPERTY(int currentMessageRejectedEdits READ currentMessageRejectedEdits NOTIFY currentMessageEditsStatsChanged FINAL)
|
||||
Q_PROPERTY(bool isThinkingSupport READ isThinkingSupport NOTIFY isThinkingSupportChanged FINAL)
|
||||
Q_PROPERTY(bool isToolDebugging READ isToolDebugging NOTIFY isToolDebuggingChanged FINAL)
|
||||
|
||||
QML_ELEMENT
|
||||
|
||||
@ -142,6 +143,8 @@ public:
|
||||
|
||||
bool isThinkingSupport() const;
|
||||
|
||||
bool isToolDebugging() const;
|
||||
|
||||
public slots:
|
||||
void sendMessage(const QString &message);
|
||||
void copyToClipboard(const QString &text);
|
||||
@ -177,6 +180,8 @@ signals:
|
||||
|
||||
void isThinkingSupportChanged();
|
||||
|
||||
void isToolDebuggingChanged();
|
||||
|
||||
private:
|
||||
void updateFileEditStatus(const QString &editId, const QString &status);
|
||||
QString getChatsHistoryDir() const;
|
||||
|
||||
@ -103,16 +103,20 @@ ChatRootView {
|
||||
ListView {
|
||||
id: chatListView
|
||||
|
||||
signal hideServiceComponents(int itemIndex)
|
||||
|
||||
Layout.fillWidth: true
|
||||
Layout.fillHeight: true
|
||||
leftMargin: 5
|
||||
model: root.chatModel
|
||||
clip: true
|
||||
spacing: 10
|
||||
spacing: 0
|
||||
boundsBehavior: Flickable.StopAtBounds
|
||||
cacheBuffer: 2000
|
||||
|
||||
delegate: Loader {
|
||||
id: componentLoader
|
||||
|
||||
required property var model
|
||||
required property int index
|
||||
|
||||
@ -129,6 +133,12 @@ ChatRootView {
|
||||
return chatItemComponent
|
||||
}
|
||||
}
|
||||
|
||||
onLoaded: {
|
||||
if (componentLoader.sourceComponent == chatItemComponent && !root.isToolDebugging) {
|
||||
chatListView.hideServiceComponents(index)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
header: Item {
|
||||
@ -179,8 +189,23 @@ ChatRootView {
|
||||
id: toolMessageComponent
|
||||
|
||||
ToolStatusItem {
|
||||
id: toolsItem
|
||||
|
||||
width: parent.width
|
||||
toolContent: model.content
|
||||
|
||||
FadeListItemAnimation{
|
||||
id: toolFadeAnimation
|
||||
}
|
||||
|
||||
Connections {
|
||||
target: chatListView
|
||||
function onHideServiceComponents(itemIndex) {
|
||||
if (index !== itemIndex) {
|
||||
toolFadeAnimation.start()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -223,6 +248,19 @@ ChatRootView {
|
||||
return content
|
||||
}
|
||||
isRedacted: model.isRedacted !== undefined ? model.isRedacted : false
|
||||
|
||||
FadeListItemAnimation{
|
||||
id: thinkingFadeAnimation
|
||||
}
|
||||
|
||||
Connections {
|
||||
target: chatListView
|
||||
function onHideServiceComponents(itemIndex) {
|
||||
if (index !== itemIndex) {
|
||||
thinkingFadeAnimation.start()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -11,6 +11,7 @@ qt_add_qml_module(QodeAssistUIControls
|
||||
qml/Badge.qml
|
||||
qml/QoAButton.qml
|
||||
qml/QoATextSlider.qml
|
||||
qml/FadeListItemAnimation.qml
|
||||
)
|
||||
|
||||
target_link_libraries(QodeAssistUIControls
|
||||
|
||||
22
UIControls/qml/FadeListItemAnimation.qml
Normal file
22
UIControls/qml/FadeListItemAnimation.qml
Normal file
@ -0,0 +1,22 @@
|
||||
import QtQuick
|
||||
|
||||
ParallelAnimation {
|
||||
id: root
|
||||
|
||||
property Item targetObject: parent
|
||||
|
||||
NumberAnimation {
|
||||
target: root.targetObject
|
||||
property: "opacity"
|
||||
to: 0
|
||||
duration: 200
|
||||
easing.type: Easing.InQuad
|
||||
}
|
||||
NumberAnimation {
|
||||
target: root.targetObject
|
||||
property: "height"
|
||||
to: 0
|
||||
duration: 250
|
||||
easing.type: Easing.InQuad
|
||||
}
|
||||
}
|
||||
@ -91,6 +91,7 @@ const char CA_ALLOW_FILE_SYSTEM_WRITE[] = "QodeAssist.caAllowFileSystemWrite";
|
||||
const char CA_ALLOW_ACCESS_OUTSIDE_PROJECT[] = "QodeAssist.caAllowAccessOutsideProject";
|
||||
const char CA_ENABLE_EDIT_FILE_TOOL[] = "QodeAssist.caEnableEditFileTool";
|
||||
const char CA_ENABLE_BUILD_PROJECT_TOOL[] = "QodeAssist.caEnableBuildProjectTool";
|
||||
const char CA_DEBUG_TOOLS_AND_THINKING_COMPONENT[] = "QodeAssist.caDebugToolsAndThinkingComponent";
|
||||
|
||||
const char QODE_ASSIST_GENERAL_OPTIONS_ID[] = "QodeAssist.GeneralOptions";
|
||||
const char QODE_ASSIST_GENERAL_SETTINGS_PAGE_ID[] = "QodeAssist.1GeneralSettingsPageId";
|
||||
|
||||
@ -89,6 +89,12 @@ ToolsSettings::ToolsSettings()
|
||||
"project. This feature is under testing and may have unexpected behavior."));
|
||||
enableBuildProjectTool.setDefaultValue(false);
|
||||
|
||||
debugToolsAndThinkingComponent.setSettingsKey(Constants::CA_DEBUG_TOOLS_AND_THINKING_COMPONENT);
|
||||
debugToolsAndThinkingComponent.setLabelText(Tr::tr("Always show Tools and Thinking Components in chat"));
|
||||
debugToolsAndThinkingComponent.setToolTip(
|
||||
Tr::tr("Disable disapearing tools and thinking component from chat"));
|
||||
debugToolsAndThinkingComponent.setDefaultValue(false);
|
||||
|
||||
resetToDefaults.m_buttonText = Tr::tr("Reset Page to Defaults");
|
||||
|
||||
readSettings();
|
||||
@ -109,6 +115,7 @@ ToolsSettings::ToolsSettings()
|
||||
allowFileSystemRead,
|
||||
allowFileSystemWrite,
|
||||
allowAccessOutsideProject,
|
||||
debugToolsAndThinkingComponent
|
||||
}},
|
||||
Space{8},
|
||||
Group{
|
||||
@ -144,6 +151,7 @@ void ToolsSettings::resetSettingsToDefaults()
|
||||
resetAspect(autoApplyFileEdits);
|
||||
resetAspect(enableEditFileTool);
|
||||
resetAspect(enableBuildProjectTool);
|
||||
resetAspect(debugToolsAndThinkingComponent);
|
||||
writeSettings();
|
||||
}
|
||||
}
|
||||
|
||||
@ -36,6 +36,7 @@ public:
|
||||
Utils::BoolAspect allowFileSystemRead{this};
|
||||
Utils::BoolAspect allowFileSystemWrite{this};
|
||||
Utils::BoolAspect allowAccessOutsideProject{this};
|
||||
Utils::BoolAspect debugToolsAndThinkingComponent{this};
|
||||
|
||||
// Experimental features
|
||||
Utils::BoolAspect enableEditFileTool{this};
|
||||
|
||||
Reference in New Issue
Block a user