| 516 | } |
| 517 | |
| 518 | void ChatManager::showIndexingWidget() |
| 519 | { |
| 520 | emit chatFinished(); |
| 521 | |
| 522 | auto widget = new QWidget; // set parent in messageComponent |
| 523 | auto layout = new QVBoxLayout(widget); |
| 524 | |
| 525 | const QString tip(tr("This project has not yet established a file index, @codebase wont`t work directly. Confirm whether to create one now.")); |
| 526 | auto label = new QLabel(tip, widget); |
| 527 | label->setWordWrap(true); |
| 528 | layout->addWidget(label); |
| 529 | |
| 530 | auto confirmBtn = new QPushButton(tr("Confirm"), widget); |
| 531 | layout->addWidget(confirmBtn); |
| 532 | |
| 533 | using DTK_WIDGET_NAMESPACE::DSpinner; |
| 534 | auto spinner = new DSpinner(widget); |
| 535 | spinner->setFixedSize(16, 16); |
| 536 | spinner->hide(); |
| 537 | |
| 538 | using dpfservice::ProjectService; |
| 539 | ProjectService *prjServ = dpfGetService(ProjectService); |
| 540 | auto currentProject = prjServ->getActiveProjectInfo().workspaceFolder(); |
| 541 | connect(confirmBtn, &QPushButton::clicked, widget, [=]() { |
| 542 | generateRag(currentProject); |
| 543 | layout->addWidget(new QLabel(tr("It may take servel minutes"), widget)); |
| 544 | layout->addWidget(spinner); |
| 545 | spinner->show(); |
| 546 | spinner->start(); |
| 547 | confirmBtn->setEnabled(false); |
| 548 | }); |
| 549 | |
| 550 | connect(this, &ChatManager::generateDone, spinner, [=](const QString &path, bool failed) { |
| 551 | if (path == currentProject) |
| 552 | spinner->hide(); |
| 553 | QString text = failed ? tr("Indexing Failed") : tr("Indexing Done"); |
| 554 | layout->addWidget(new QLabel(text, widget)); |
| 555 | }); |
| 556 | |
| 557 | emit showCustomWidget(widget); |
| 558 | } |
| 559 | |
| 560 | void ChatManager::installConda() |
| 561 | { |
nothing calls this directly
no test coverage detected