| 550 | } |
| 551 | |
| 552 | void Analytics::Prompt(ICaptureContext &ctx, PersistantConfig &config) |
| 553 | { |
| 554 | if(analyticsState == AnalyticsState::Disabled) |
| 555 | { |
| 556 | // do nothing, we're disabled |
| 557 | return; |
| 558 | } |
| 559 | else if(analyticsState == AnalyticsState::PromptFirstTime) |
| 560 | { |
| 561 | QWidget *mainWindow = ctx.GetMainWindow()->Widget(); |
| 562 | |
| 563 | AnalyticsPromptDialog prompt(config, mainWindow); |
| 564 | RDDialog::show(&prompt); |
| 565 | } |
| 566 | else if(analyticsState == AnalyticsState::SubmitReport && Analytics::db != NULL) |
| 567 | { |
| 568 | QWidget *mainWindow = ctx.GetMainWindow()->Widget(); |
| 569 | |
| 570 | QVariantMap values; |
| 571 | |
| 572 | AnalyticsSerialise(*Analytics::db, values, AnalyticsSerialiseType::Reporting); |
| 573 | |
| 574 | QBuffer buf; |
| 575 | buf.open(QBuffer::WriteOnly); |
| 576 | |
| 577 | SaveToJSON(values, buf, NULL, 0); |
| 578 | |
| 579 | QString jsonReport = QString::fromUtf8(buf.buffer()); |
| 580 | |
| 581 | if(config.Analytics_ManualCheck) |
| 582 | { |
| 583 | AnalyticsConfirmDialog confirm(jsonReport, mainWindow); |
| 584 | int res = RDDialog::show(&confirm); |
| 585 | |
| 586 | if(res == 0) |
| 587 | analyticsState = AnalyticsState::Nothing; |
| 588 | } |
| 589 | |
| 590 | if(analyticsState == AnalyticsState::SubmitReport) |
| 591 | { |
| 592 | QNetworkAccessManager *mgr = new QNetworkAccessManager(mainWindow); |
| 593 | |
| 594 | QUrlQuery postData; |
| 595 | |
| 596 | postData.addQueryItem(lit("report"), jsonReport); |
| 597 | |
| 598 | QNetworkRequest request(QUrl(lit("https://renderdoc.org/analytics"))); |
| 599 | |
| 600 | request.setHeader(QNetworkRequest::ContentTypeHeader, |
| 601 | lit("application/x-www-form-urlencoded")); |
| 602 | |
| 603 | QByteArray dataText = postData.toString(QUrl::FullyEncoded).toUtf8(); |
| 604 | mgr->post(request, dataText); |
| 605 | } |
| 606 | |
| 607 | // reset the database now |
| 608 | *Analytics::db = Analytics(); |
| 609 | Analytics::db->Date.Year = QDateTime::currentDateTime().date().year(); |
nothing calls this directly
no test coverage detected