| 87 | } |
| 88 | |
| 89 | bool ImportDatasetDialog::importTo(QStatusBar* statusBar) const { |
| 90 | auto* progressBar = new QProgressBar(); |
| 91 | progressBar->setRange(0, 100); |
| 92 | |
| 93 | auto* spreadsheet = new Spreadsheet(i18n("Dataset%1", 1)); |
| 94 | auto* datasetHandler = new DatasetHandler(spreadsheet); |
| 95 | |
| 96 | int duration = 5000; |
| 97 | QTimer timer; |
| 98 | timer.setSingleShot(true); |
| 99 | QEventLoop loop; |
| 100 | connect(&timer, &QTimer::timeout, [&] { |
| 101 | disconnect(datasetHandler, &DatasetHandler::downloadCompleted, nullptr, nullptr); |
| 102 | disconnect(datasetHandler, &DatasetHandler::error, nullptr, nullptr); |
| 103 | const_cast<ImportDatasetDialog*>(this)->showErrorMessage(i18n("Failed to connect within %1 seconds", static_cast<float>(duration) / 1000)); |
| 104 | loop.exit(static_cast<int>(Status::FAILURE)); |
| 105 | }); |
| 106 | connect(datasetHandler, &DatasetHandler::error, [&](const QString& message) { |
| 107 | const_cast<ImportDatasetDialog*>(this)->showErrorMessage(message); |
| 108 | loop.exit(static_cast<int>(Status::FAILURE)); |
| 109 | }); |
| 110 | connect(datasetHandler, &DatasetHandler::downloadCompleted, [&] { |
| 111 | m_mainWin->addAspectToProject(spreadsheet); |
| 112 | loop.exit(static_cast<int>(Status::SUCCESS)); |
| 113 | }); |
| 114 | connect(datasetHandler, &DatasetHandler::downloadProgress, progressBar, &QProgressBar::setValue); |
| 115 | |
| 116 | statusBar->clearMessage(); |
| 117 | statusBar->addWidget(progressBar, 1); |
| 118 | |
| 119 | WAIT_CURSOR; |
| 120 | QApplication::processEvents(QEventLoop::AllEvents, 100); |
| 121 | |
| 122 | timer.start(duration); |
| 123 | m_importDatasetWidget->import(datasetHandler); |
| 124 | int status = loop.exec(); |
| 125 | |
| 126 | bool success = status == static_cast<int>(Status::SUCCESS); |
| 127 | if (success) { |
| 128 | statusBar->showMessage(i18n("Dataset imported in %1 seconds.", static_cast<float>(duration - timer.remainingTime()) / 1000)); |
| 129 | timer.stop(); |
| 130 | } else |
| 131 | delete spreadsheet; |
| 132 | |
| 133 | delete datasetHandler; |
| 134 | |
| 135 | RESET_CURSOR; |
| 136 | statusBar->removeWidget(progressBar); |
| 137 | return success; |
| 138 | } |
nothing calls this directly
no test coverage detected