diff --git a/src/plugins/codegeex/codegeexmanager.cpp b/src/plugins/codegeex/codegeexmanager.cpp index 20aba8f7a..bef86b54e 100644 --- a/src/plugins/codegeex/codegeexmanager.cpp +++ b/src/plugins/codegeex/codegeexmanager.cpp @@ -3,6 +3,7 @@ // SPDX-License-Identifier: GPL-3.0-or-later #include "codegeexmanager.h" +#include "copilot.h" #include "common/util/custompaths.h" #include @@ -141,6 +142,7 @@ void CodeGeeXManager::recevieLoginState(AskApi::LoginState loginState) qWarning() << "CodeGeeX login failed!"; // switch to login ui. } else if (loginState == AskApi::LoginState::kLoginSuccess) { + isLogin = true; Q_EMIT loginSuccessed(); // switch to ask page. queryTimer->stop(); @@ -148,6 +150,12 @@ void CodeGeeXManager::recevieLoginState(AskApi::LoginState loginState) } } +void CodeGeeXManager::recevieToTranslate(const QString &codeText) +{ + if (isLogin && !codeText.isEmpty()) + Q_EMIT requestToTransCode(codeText); +} + CodeGeeXManager::CodeGeeXManager(QObject *parent) : QObject(parent) { @@ -161,6 +169,7 @@ void CodeGeeXManager::initConnections() connect(&askApi, &AskApi::response, this, &CodeGeeXManager::onResponse); connect(&askApi, &AskApi::loginState, this, &CodeGeeXManager::recevieLoginState); connect(&askApi, &AskApi::sessionCreated, this, &CodeGeeXManager::onSessionCreated); + connect(Copilot::instance(), &Copilot::translatingText, this, &CodeGeeXManager::recevieToTranslate); } void CodeGeeXManager::queryLoginState() diff --git a/src/plugins/codegeex/codegeexmanager.h b/src/plugins/codegeex/codegeexmanager.h index 755fe35e3..2a5809105 100644 --- a/src/plugins/codegeex/codegeexmanager.h +++ b/src/plugins/codegeex/codegeexmanager.h @@ -38,12 +38,14 @@ class CodeGeeXManager : public QObject void loginSuccessed(); void createdNewSession(); void requestMessageUpdate(const MessageData &msg); + void requestToTransCode(const QString &code); void chatFinished(); public Q_SLOTS: void onSessionCreated(const QString &talkId, bool isSuccessful); void onResponse(const QString &msgID, const QString &data, const QString &event); void recevieLoginState(CodeGeeX::AskApi::LoginState loginState); + void recevieToTranslate(const QString &codeText); private: explicit CodeGeeXManager(QObject *parent = nullptr); @@ -57,6 +59,7 @@ public Q_SLOTS: QString sessionId {}; QString userId {}; QString currentTalkID {}; + bool isLogin { false }; QMap curSessionMsg {}; diff --git a/src/plugins/codegeex/widgets/codegeexwidget.cpp b/src/plugins/codegeex/widgets/codegeexwidget.cpp index 154e24c3c..e95bfe8aa 100644 --- a/src/plugins/codegeex/widgets/codegeexwidget.cpp +++ b/src/plugins/codegeex/widgets/codegeexwidget.cpp @@ -6,6 +6,7 @@ #include "askpagewidget.h" #include "translationpagewidget.h" #include "codegeexmanager.h" +#include "copilot.h" #include #include @@ -61,6 +62,17 @@ void CodeGeeXWidget::onCreateNewBtnClicked() CodeGeeXManager::instance()->createNewSession(); } +void CodeGeeXWidget::toTranslateCode(const QString &code) +{ + currentState = TrasnlatePage; + resetHeaderBtns(); + + transPage->setInputEditText(code); + transPage->cleanOutputEdit(); + + stackWidget->setCurrentIndex(2); +} + void CodeGeeXWidget::initUI() { setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); @@ -106,11 +118,13 @@ void CodeGeeXWidget::initConnection() { connect(CodeGeeXManager::instance(), &CodeGeeXManager::loginSuccessed, this, &CodeGeeXWidget::onLoginSuccessed); connect(CodeGeeXManager::instance(), &CodeGeeXManager::createdNewSession, this, &CodeGeeXWidget::onNewSessionCreated); + connect(CodeGeeXManager::instance(), &CodeGeeXManager::requestToTransCode, this, &CodeGeeXWidget::toTranslateCode); } void CodeGeeXWidget::initAskWidget() { tabBar = new DTabBar(this); + tabBar->setVisibleAddButton(false); tabBar->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); tabBar->setContentsMargins(0, 0, 0, 0); stackWidget = new QStackedWidget(this); diff --git a/src/plugins/codegeex/widgets/codegeexwidget.h b/src/plugins/codegeex/widgets/codegeexwidget.h index 587576b67..bf7625498 100644 --- a/src/plugins/codegeex/widgets/codegeexwidget.h +++ b/src/plugins/codegeex/widgets/codegeexwidget.h @@ -37,6 +37,7 @@ public Q_SLOTS: void onDeleteBtnClicked(); void onHistoryBtnClicked(); void onCreateNewBtnClicked(); + void toTranslateCode(const QString &code); private: void initUI(); diff --git a/src/plugins/codegeex/widgets/translationpagewidget.cpp b/src/plugins/codegeex/widgets/translationpagewidget.cpp index 21d760dac..417b92707 100644 --- a/src/plugins/codegeex/widgets/translationpagewidget.cpp +++ b/src/plugins/codegeex/widgets/translationpagewidget.cpp @@ -21,6 +21,18 @@ TranslationPageWidget::TranslationPageWidget(QWidget *parent) initConnection(); } +void TranslationPageWidget::setInputEditText(const QString &text) +{ + if (inputEdit) + inputEdit->updateCode(text); +} + +void TranslationPageWidget::cleanOutputEdit() +{ + if (outputEdit) + outputEdit->updateCode(""); +} + void TranslationPageWidget::onTranslateBtnClicked() { QString dstLang = langComboBox->currentText(); diff --git a/src/plugins/codegeex/widgets/translationpagewidget.h b/src/plugins/codegeex/widgets/translationpagewidget.h index e290b5943..2feff258c 100644 --- a/src/plugins/codegeex/widgets/translationpagewidget.h +++ b/src/plugins/codegeex/widgets/translationpagewidget.h @@ -21,6 +21,8 @@ class TranslationPageWidget : public DWidget Q_OBJECT public: explicit TranslationPageWidget(QWidget *parent = nullptr); + void setInputEditText(const QString &text); + void cleanOutputEdit(); public Q_SLOTS: void onTranslateBtnClicked();