From aa632bbeeea9ef6a603aaeb5875492f76366f3bf Mon Sep 17 00:00:00 2001 From: Zhang TingAn Date: Wed, 18 Dec 2024 16:31:00 +0800 Subject: [PATCH] fix: Display the directory without selecting the file Log: as title --- src/plugins/codeeditor/gui/tabbar.cpp | 5 ++--- src/plugins/codegeex/codegeex.cpp | 2 ++ src/plugins/cxx/cmake/project/cmakeasynparse.cpp | 3 +++ src/plugins/project/mainframe/projecttree.cpp | 11 +++++++---- src/services/ai/aiservice.h | 5 +++++ 5 files changed, 19 insertions(+), 7 deletions(-) diff --git a/src/plugins/codeeditor/gui/tabbar.cpp b/src/plugins/codeeditor/gui/tabbar.cpp index f2874effe..7344b8e23 100644 --- a/src/plugins/codeeditor/gui/tabbar.cpp +++ b/src/plugins/codeeditor/gui/tabbar.cpp @@ -10,13 +10,13 @@ #include #include #include +#include #include #include #include #include #include -#include DWIDGET_USE_NAMESPACE @@ -137,8 +137,7 @@ void TabBarPrivate::showMenu(QPoint pos) menu.addSeparator(); menu.addAction(tr("Show Containing Folder"), [=]() { auto file = tabBar->tabToolTip(curIndex); - QFileInfo info(file); - QDesktopServices::openUrl(QUrl::fromLocalFile(info.absolutePath())); + DDesktopServices::showFileItem(file); }); menu.exec(QCursor::pos()); diff --git a/src/plugins/codegeex/codegeex.cpp b/src/plugins/codegeex/codegeex.cpp index c07662b4e..c732ca452 100644 --- a/src/plugins/codegeex/codegeex.cpp +++ b/src/plugins/codegeex/codegeex.cpp @@ -74,6 +74,8 @@ bool CodeGeex::start() aiService->available = std::bind(&CodeGeeXManager::isLoggedIn, CodeGeeXManager::instance()); aiService->askQuestion = std::bind(&CodeGeeXManager::independentAsking, CodeGeeXManager::instance(), _1, QMultiMap(), _2); aiService->askQuestionWithHistory = std::bind(&CodeGeeXManager::independentAsking, CodeGeeXManager::instance(), _1, _2, _3); + aiService->generateRag = std::bind(&CodeGeeXManager::generateRag, CodeGeeXManager::instance(), _1); + aiService->query = std::bind(&CodeGeeXManager::query, CodeGeeXManager::instance(), _1, _2, _3); return true; } diff --git a/src/plugins/cxx/cmake/project/cmakeasynparse.cpp b/src/plugins/cxx/cmake/project/cmakeasynparse.cpp index 3d4e6335b..a13011652 100644 --- a/src/plugins/cxx/cmake/project/cmakeasynparse.cpp +++ b/src/plugins/cxx/cmake/project/cmakeasynparse.cpp @@ -187,6 +187,7 @@ void CmakeAsynParse::parseProject(QStandardItem *rootItem, const dpfservice::Pro cmakeFileItem->setToolTip(cmakeFileInfo.filePath()); cmakeParentItem->appendRow(cmakeFileItem); cmakeFileItem->setData(cmakeFileInfo.absoluteFilePath(), Project::FileIconRole); + cmakeFileItem->setData(cmakeFileInfo.absoluteFilePath(), Project::FilePathRole); // monitor cmake file change to refresh project tree. if (cmakeParentItem == rootItem) { @@ -260,6 +261,7 @@ void CmakeAsynParse::parseProject(QStandardItem *rootItem, const dpfservice::Pro srcItem->setText(srcFileInfo.fileName()); srcItem->setToolTip(srcFileInfo.filePath()); srcItem->setData(srcFileInfo.absoluteFilePath(), Project::FileIconRole); + srcItem->setData(srcFileInfo.absoluteFilePath(), Project::FilePathRole); if (srcFileInfo.isDir()) emit directoryCreated(rootItem, srcFileInfo.filePath()); @@ -346,6 +348,7 @@ QStandardItem *CmakeAsynParse::createParentItem(QStandardItem *rootItem, const Q item->setText(nameItem); item->setToolTip(basePath + relative); item->setData(basePath + relative, Project::FileIconRole); + item->setData(basePath + relative, Project::FilePathRole); // append to parent. QStandardItem *parentItem = findParentItem(rootItem, relative); emit directoryCreated(rootItem, basePath + relative); diff --git a/src/plugins/project/mainframe/projecttree.cpp b/src/plugins/project/mainframe/projecttree.cpp index e83f8981e..2349e74e8 100644 --- a/src/plugins/project/mainframe/projecttree.cpp +++ b/src/plugins/project/mainframe/projecttree.cpp @@ -17,6 +17,7 @@ #include #include #include +#include #include #include @@ -26,9 +27,8 @@ #include #include #include -#include #include - +DCORE_USE_NAMESPACE DWIDGET_USE_NAMESPACE using namespace dpfservice; @@ -259,9 +259,12 @@ void ProjectTree::doItemMenuRequest(QStandardItem *item, QContextMenuEvent *even menu->addSeparator(); QAction *showContainFolder = new QAction(tr("Show Containing Folder"), this); connect(showContainFolder, &QAction::triggered, [=]() { - QString filePath = item->toolTip(); + QString filePath = item->data(Project::ProjectItemRole::FilePathRole).toString(); QFileInfo info(filePath); - QDesktopServices::openUrl(QUrl::fromLocalFile(info.absolutePath())); + if (info.isFile()) + DDesktopServices::showFileItem(filePath); + else + DDesktopServices::showFolder(filePath); }); menu->addAction(showContainFolder); diff --git a/src/services/ai/aiservice.h b/src/services/ai/aiservice.h index ad77be1ce..ae5353270 100644 --- a/src/services/ai/aiservice.h +++ b/src/services/ai/aiservice.h @@ -89,6 +89,11 @@ class SERVICE_EXPORT AiService final : public dpf::PluginService, dpf::AutoServi // custom model DPF_INTERFACE(AbstractLLM *, getLLM, const LLMInfo &info); DPF_INTERFACE(QList, getAllModel); + + // rag + DPF_INTERFACE(void, generateRag, const QString &projectPath); + // could be empty or not completed. see obj.isEmpty or obj["Completed"].toBool + DPF_INTERFACE(QJsonObject, query, const QString &projectPath, const QString &query, int topItems); }; } // namespace dpfservice