From e5db9b1ccc275a8d79c991d6b6f1482e3ba4483c Mon Sep 17 00:00:00 2001 From: Xavier Michelon Date: Mon, 4 Dec 2023 14:51:55 +0100 Subject: [PATCH] feat(GODT-3121): added display of bug report user input in bridge-gui-tester. --- .../bridge-gui-tester/GRPCQtProxy.cpp | 9 + .../bridge-gui-tester/GRPCQtProxy.h | 2 + .../bridge-gui-tester/GRPCService.cpp | 5 +- .../Tabs/KnowledgeBaseTab.cpp | 9 + .../bridge-gui-tester/Tabs/KnowledgeBaseTab.h | 3 + .../Tabs/KnowledgeBaseTab.ui | 353 ++++++++++-------- 6 files changed, 222 insertions(+), 159 deletions(-) diff --git a/internal/frontend/bridge-gui/bridge-gui-tester/GRPCQtProxy.cpp b/internal/frontend/bridge-gui/bridge-gui-tester/GRPCQtProxy.cpp index 1ef2b392..31939d90 100644 --- a/internal/frontend/bridge-gui/bridge-gui-tester/GRPCQtProxy.cpp +++ b/internal/frontend/bridge-gui/bridge-gui-tester/GRPCQtProxy.cpp @@ -35,6 +35,7 @@ void GRPCQtProxy::connectSignals() const { MainWindow &mainWindow = app().mainWindow(); SettingsTab const &settingsTab = mainWindow.settingsTab(); UsersTab const &usersTab = mainWindow.usersTab(); + KnowledgeBaseTab const &kbTab = mainWindow.knowledgeBaseTab(); connect(this, &GRPCQtProxy::delayedEventRequested, &mainWindow, &MainWindow::sendDelayedEvent); connect(this, &GRPCQtProxy::setIsAutostartOnReceived, &settingsTab, &SettingsTab::setIsAutostartOn); connect(this, &GRPCQtProxy::setIsBetaEnabledReceived, &settingsTab, &SettingsTab::setIsBetaEnabled); @@ -56,6 +57,7 @@ void GRPCQtProxy::connectSignals() const { connect(this, &GRPCQtProxy::setUserSplitModeReceived, &usersTab, &UsersTab::setUserSplitMode); connect(this, &GRPCQtProxy::configureUserAppleMailReceived, &usersTab, &UsersTab::configureUserAppleMail); connect(this, &GRPCQtProxy::sendBadEventUserFeedbackReceived, &usersTab, &UsersTab::processBadEventUserFeedback); + connect(this, &GRPCQtProxy::requestKnowledgeBaseSuggestionsReceived, &kbTab, &KnowledgeBaseTab::requestKnowledgeBaseSuggestions); } @@ -119,6 +121,13 @@ void GRPCQtProxy::reportBug(QString const &osType, QString const &osVersion, QSt emit reportBugReceived(osType, osVersion, emailClient, address, description, includeLogs); } +//**************************************************************************************************************************************************** +/// \param[in] userInput The user input. +//**************************************************************************************************************************************************** +void GRPCQtProxy::requestKnowledgeBaseSuggestions(QString const& userInput) { + emit requestKnowledgeBaseSuggestionsReceived(userInput); +} + //**************************************************************************************************************************************************** // diff --git a/internal/frontend/bridge-gui/bridge-gui-tester/GRPCQtProxy.h b/internal/frontend/bridge-gui/bridge-gui-tester/GRPCQtProxy.h index 3db7964a..d1a04e16 100644 --- a/internal/frontend/bridge-gui/bridge-gui-tester/GRPCQtProxy.h +++ b/internal/frontend/bridge-gui/bridge-gui-tester/GRPCQtProxy.h @@ -45,6 +45,7 @@ public: // member functions. void setColorSchemeName(QString const &name); ///< Forward a SetColorSchemeName call via a Qt Signal void reportBug(QString const &osType, QString const &osVersion, QString const &emailClient, QString const &address, QString const &description, bool includeLogs); ///< Forwards a ReportBug call via a Qt signal. + void requestKnowledgeBaseSuggestions(QString const &userInput); ///< Forwards a RequestKnowledgeBaseSuggestions call via a Qt signal. void installTLSCertificate(); ///< Forwards a InstallTLScertificate call via a Qt signal. void exportTLSCertificates(QString const &folderPath); //< Forward an 'ExportTLSCertificates' call via a Qt signal. void setIsStreaming(bool isStreaming); ///< Forward a isStreaming internal messages via a Qt signal. @@ -68,6 +69,7 @@ signals: void setColorSchemeNameReceived(QString const &name); ///< Forward a SetColorScheme call via a Qt Signal void reportBugReceived(QString const &osType, QString const &osVersion, QString const &emailClient, QString const &address, QString const &description, bool includeLogs); ///< Signal for the ReportBug gRPC call + void requestKnowledgeBaseSuggestionsReceived(QString const &userInput); ///< Signal for the RequestKnowledgeBaseSuggestions gRPC call. void installTLSCertificateReceived(); ///< Signal for the InstallTLSCertificate gRPC call. void exportTLSCertificatesReceived(QString const &folderPath); ///< Signal for the ExportTLSCertificates gRPC call. void setIsStreamingReceived(bool isStreaming); ///< Signal for the IsStreaming internal message. diff --git a/internal/frontend/bridge-gui/bridge-gui-tester/GRPCService.cpp b/internal/frontend/bridge-gui/bridge-gui-tester/GRPCService.cpp index 9a90027b..2aea2530 100644 --- a/internal/frontend/bridge-gui/bridge-gui-tester/GRPCService.cpp +++ b/internal/frontend/bridge-gui/bridge-gui-tester/GRPCService.cpp @@ -359,7 +359,10 @@ Status GRPCService::SetMainExecutable(ServerContext *, StringValue const *reques /// \return The status for the call. //**************************************************************************************************************************************************** grpc::Status GRPCService::RequestKnowledgeBaseSuggestions(ServerContext*, StringValue const* request, Empty*) { - app().log().info(QString("RequestKnowledgeBaseSuggestions: %1").arg(QString::fromStdString(request->value()).left(10) + "...")); + QString const userInput = QString::fromUtf8(request->value()); + app().log().info(QString("RequestKnowledgeBaseSuggestions: %1").arg(userInput.left(10) + "...")); + qtProxy_.requestKnowledgeBaseSuggestionsReceived(userInput); + QList suggestions; for (qsizetype i = 1; i <= 3; ++i) { suggestions.push_back( { diff --git a/internal/frontend/bridge-gui/bridge-gui-tester/Tabs/KnowledgeBaseTab.cpp b/internal/frontend/bridge-gui/bridge-gui-tester/Tabs/KnowledgeBaseTab.cpp index 3147c282..13d400ca 100644 --- a/internal/frontend/bridge-gui/bridge-gui-tester/Tabs/KnowledgeBaseTab.cpp +++ b/internal/frontend/bridge-gui/bridge-gui-tester/Tabs/KnowledgeBaseTab.cpp @@ -85,3 +85,12 @@ void KnowledgeBaseTab::updateGuiState() { enableWidgetsIfChecked(ui_.checkSuggestion2, { ui_.labelTitle2, ui_.editTitle2, ui_.labelUrl2, ui_.editUrl2}); enableWidgetsIfChecked(ui_.checkSuggestion3, { ui_.labelTitle3, ui_.editTitle3, ui_.labelUrl3, ui_.editUrl3}); } + + +//**************************************************************************************************************************************************** +/// \param[in] userInput The user input. +//**************************************************************************************************************************************************** +void KnowledgeBaseTab::requestKnowledgeBaseSuggestions(QString const& userInput) const { + ui_.editUserInput->setPlainText(userInput); + ui_.labelLastReceived->setText(tr("Last received: %1").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss.zzz"))); +} diff --git a/internal/frontend/bridge-gui/bridge-gui-tester/Tabs/KnowledgeBaseTab.h b/internal/frontend/bridge-gui/bridge-gui-tester/Tabs/KnowledgeBaseTab.h index 87a79c06..d849e163 100644 --- a/internal/frontend/bridge-gui/bridge-gui-tester/Tabs/KnowledgeBaseTab.h +++ b/internal/frontend/bridge-gui/bridge-gui-tester/Tabs/KnowledgeBaseTab.h @@ -37,6 +37,9 @@ public: // member functions. KnowledgeBaseTab& operator=(KnowledgeBaseTab&&) = delete; ///< Disabled move assignment operator. QList getSuggestions() const; ///< Returns the suggestions. +public slots: + void requestKnowledgeBaseSuggestions(QString const &userInput) const; ///< Slot for the 'RequestKnowledgeBaseSuggestions' gRPC call. + private slots: void sendKnowledgeBaseSuggestions() const; ///< Send a KnowledgeBaseSuggestions event. void updateGuiState(); ///< Update the GUI state. diff --git a/internal/frontend/bridge-gui/bridge-gui-tester/Tabs/KnowledgeBaseTab.ui b/internal/frontend/bridge-gui/bridge-gui-tester/Tabs/KnowledgeBaseTab.ui index f66f267d..6971f9b7 100644 --- a/internal/frontend/bridge-gui/bridge-gui-tester/Tabs/KnowledgeBaseTab.ui +++ b/internal/frontend/bridge-gui/bridge-gui-tester/Tabs/KnowledgeBaseTab.ui @@ -6,58 +6,31 @@ 0 0 - 483 - 715 + 857 + 905 Form - - - 5 - + - + - Suggestion 1 + User Input - - - - - Enabled - - + + + + true - - + + - Title - - - - - - - Automatically start Bridge - - - - - - - URL - - - - - - - https://proton.me/support/automatically-start-bridge + Last received: never @@ -65,136 +38,200 @@ - - - Suggestion 2 - - - - - - Enabled - - - true - - - - - - - Title - - - - - - - Proton Mail Bridge connection issues with Thunderbird, Outlook, and Apple Mail - - - - - - - URL - - - - - - - https://proton.me/support/bridge-ssl-connection-issue - - - - - - - - - - Suggestion 3 - - - - - - Enabled - - - true - - - - - - - Title - - - - - - - Difference between combined addresses mode and split addresses mode - - - - - - - URL - - - - - - - https://proton.me/support/difference-combined-addresses-mode-split-addresses-mode - - - - - - - - + - + + + Suggestion 1 + + + + + + Enabled + + + true + + + + + + + Title + + + + + + + Automatically start Bridge + + + + + + + URL + + + + + + + https://proton.me/support/automatically-start-bridge + + + + + + + + + + Suggestion 2 + + + + + + Enabled + + + true + + + + + + + Title + + + + + + + Proton Mail Bridge connection issues with Thunderbird, Outlook, and Apple Mail + + + + + + + URL + + + + + + + https://proton.me/support/bridge-ssl-connection-issue + + + + + + + + + + Suggestion 3 + + + + + + Enabled + + + true + + + + + + + Title + + + + + + + Difference between combined addresses mode and split addresses mode + + + + + + + URL + + + + + + + https://proton.me/support/difference-combined-addresses-mode-split-addresses-mode + + + + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + Send Knowledge Base Suggestions + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + - Qt::Horizontal + Qt::Vertical - 40 - 20 + 208 + 289 - - - - Send Knowledge Base Suggestions - - - - - - - Qt::Vertical - - - - 20 - 0 - - - -