From 54737552e9b80dab7d75341124c405b137f38aa5 Mon Sep 17 00:00:00 2001 From: Roy Shilkrot Date: Tue, 30 Jan 2024 11:03:24 -0500 Subject: [PATCH] Refactor parsed output display in RequestBuilder.cpp (#74) --- src/ui/RequestBuilder.cpp | 45 ++++++++++++++++++++++++++++++--------- 1 file changed, 35 insertions(+), 10 deletions(-) diff --git a/src/ui/RequestBuilder.cpp b/src/ui/RequestBuilder.cpp index 0f01ef0..faf555a 100644 --- a/src/ui/RequestBuilder.cpp +++ b/src/ui/RequestBuilder.cpp @@ -526,16 +526,41 @@ void RequestBuilder::show_response_dialog(const request_data_handler_response &r QVBoxLayout *parsedOutputLayout = new QVBoxLayout; parsedOutputGroupBox->setLayout(parsedOutputLayout); if (response.body_parts_parsed.size() > 1) { - // Add a QTabWidget to show the parsed output parts - QTabWidget *tabWidget = new QTabWidget; - parsedOutputLayout->addWidget(tabWidget); - for (auto &parsedOutput : response.body_parts_parsed) { - // label each tab {outputN} where N is the index of the output part - tabWidget->addTab( - new QLabel(QString::fromStdString(parsedOutput)), - QString::fromStdString("{output" + - std::to_string(tabWidget->count()) + - "}")); + if (response.body_parts_parsed.size() > 3) { + // Use a dropdown to select the parsed output to show + QComboBox *parsedOutputComboBox = new QComboBox; + parsedOutputLayout->addWidget(parsedOutputComboBox); + for (size_t i = 0; i < response.body_parts_parsed.size(); i++) { + // add each parsed output to the dropdown + parsedOutputComboBox->addItem( + QString::number(i) + ": " + + QString::fromStdString( + response.body_parts_parsed[i]), + QVariant(QString::fromStdString( + response.body_parts_parsed[i]))); + } + // Add a QLabel to show the selected parsed output + QLabel *parsedOutputLabel = new QLabel; + parsedOutputLayout->addWidget(parsedOutputLabel); + // Show the selected parsed output + connect(parsedOutputComboBox, &QComboBox::currentTextChanged, this, + [=]() { + parsedOutputLabel->setText( + parsedOutputComboBox->currentData() + .toString()); + }); + } else { + // Add a QTabWidget to show the parsed output parts + QTabWidget *tabWidget = new QTabWidget; + parsedOutputLayout->addWidget(tabWidget); + for (auto &parsedOutput : response.body_parts_parsed) { + // label each tab {outputN} where N is the index of the output part + tabWidget->addTab( + new QLabel(QString::fromStdString(parsedOutput)), + QString::fromStdString( + "{output" + + std::to_string(tabWidget->count()) + "}")); + } } } else { QString parsed_output =