MCPcopy Create free account
hub / github.com/Codeya-IDE/deepin-ide / updateMessage

Method updateMessage

src/plugins/chat/widgets/messagecomponent.cpp:70–126  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

68}
69
70void MessageComponent::updateMessage(const MessageData &msgData)
71{
72 stopWaiting();
73 if (msgData.messageType() == MessageData::Ask) {
74 curUpdateLabel = new DLabel(this);
75 curUpdateLabel->setWordWrap(true);
76 curUpdateLabel->setTextInteractionFlags(Qt::TextSelectableByMouse);
77 msgLayout->addWidget(curUpdateLabel);
78 auto originText = msgData.messageData().toStdString();
79 QString convertedHtml = cmark_markdown_to_html(originText.c_str(), originText.size(), CMARK_OPT_SMART);
80 curUpdateLabel->setText(convertedHtml);
81 return;
82 }
83
84 if (!createCodeEdit(msgData))
85 return;
86
87 switch (currentUpdateState) {
88 case Label:
89 if (!curUpdateLabel) {
90 curUpdateLabel = new DLabel(this);
91 curUpdateLabel->setTextInteractionFlags(Qt::TextSelectableByMouse);
92 curUpdateLabel->setWordWrap(true);
93 msgLayout->addWidget(curUpdateLabel);
94 } else if (msgData.messageLines().length() > messageData.messageLines().length()) {
95 curUpdateLabel = new DLabel(this);
96 curUpdateLabel->setTextInteractionFlags(Qt::TextSelectableByMouse);
97 curUpdateLabel->setWordWrap(true);
98 msgLayout->addWidget(curUpdateLabel);
99 }
100 if (!messageData.messageLines().isEmpty() && msgData.messageLines().last() != messageData.messageLines().last()) {
101 auto messageLine = msgData.messageLines().last();
102 if (isConnecting && messageLine.contains("citation")) {
103 QRegularExpression regex("\\[\\[citation:(\\d+)\\]\\]");
104 messageLine = messageLine.replace(regex, "[\\1]");
105 }
106 auto originText = messageLine.toStdString();
107 QString convertedHtml = cmark_markdown_to_html(originText.c_str(), originText.size(), CMARK_OPT_SMART);
108 if (convertedHtml.contains("<ol"))
109 convertedHtml = convertOlToParagraph(convertedHtml);
110 curUpdateLabel->setText(convertedHtml);
111 } else if (messageData.messageLines().isEmpty()) {
112 auto originText = msgData.messageData().toStdString();
113 auto convertedHtml = cmark_markdown_to_html(originText.c_str(), originText.size(), CMARK_OPT_SMART);
114 curUpdateLabel->setText(convertedHtml);
115 }
116 break;
117 case CodeEdit:
118 if (curUpdateEdit) {
119 int startIndex = msgData.messageLines().lastIndexOf(QRegularExpression(R"(\s*```(`|[a-z]*|[A-Z]*))")); // ```` ```python ```cpp
120 if (startIndex != -1)
121 curUpdateEdit->updateCode(msgData.messageLines().mid(startIndex + 1), msgData.messageLines().mid(startIndex, 1).at(0));
122 }
123 break;
124 }
125 messageData = msgData;
126}
127

Callers 1

onMessageUpdateMethod · 0.45

Calls 14

convertOlToParagraphFunction · 0.85
messageTypeMethod · 0.80
messageDataMethod · 0.80
c_strMethod · 0.80
messageLinesMethod · 0.80
updateCodeMethod · 0.80
atMethod · 0.80
addWidgetMethod · 0.45
sizeMethod · 0.45
setTextMethod · 0.45
lengthMethod · 0.45
isEmptyMethod · 0.45

Tested by

no test coverage detected