148 inline static std::string_view logger_name =
"ores.qt.main_window";
150 [[nodiscard]]
static auto& lg() {
152 static auto instance = make_logger(logger_name);
165 explicit MainWindow(QWidget* parent =
nullptr);
183 void setInstanceInfo(
const QString& name,
const QColor& color = QColor());
213 bool eventFilter(QObject* watched, QEvent* event)
override;
222 void onLoginTriggered();
227 void onDisconnectTriggered();
232 void onAboutTriggered();
237 void onMyAccountTriggered();
242 void onMySessionsTriggered();
247 void onDetachAllTriggered();
275 void onWindowMenuAboutToShow();
284 void onRecordSessionToggled(
bool checked);
289 void onOpenRecordingTriggered();
294 void onSetRecordingDirectoryTriggered();
302 void onConnectionBrowserTriggered();
309 void onConnectionConnectRequested(
const boost::uuids::uuid& connectionId,
310 const QString& connectionName);
317 void onEnvironmentConnectRequested(
const boost::uuids::uuid& environmentId,
318 const QString& environmentName);
320 void onModernLoginTriggered();
328 void onLoginSuccess(
const QString& username);
336 void showSignUpDialog(
const QString& host,
int port);
345 void showSystemProvisionerWizard(
346 const QString& username = {},
const QString& password = {});
355 void showTenantOnboardingWizard();
364 void showTenantProvisioningWizard();
372 void showPartyProvisioningWizard();
377 struct LoginDialogOptions {
382 QString connectionName;
383 bool showSavedConnections =
true;
384 bool showSignUpButton =
true;
393 void showLoginDialog();
403 void showLoginDialog(
const LoginDialogOptions& options);
412 void updateMenuState();
420 void updateStatusBarFields();
429 QString buildConnectionTooltip()
const;
437 void createControllers();
442 void performDisconnectCleanup();
451 bool initializeConnectionManager();
458 MdiAreaWithBackground* mdiArea_;
461 QLabel* connectionStatusIconLabel_;
464 QWidget* userStatusWidget_;
465 QLabel* userStatusNameLabel_;
468 QWidget* serverStatusWidget_;
469 QLabel* serverStatusNameLabel_;
472 QWidget* tenantStatusWidget_;
473 QLabel* tenantStatusNameLabel_;
476 QWidget* partyStatusWidget_;
477 QLabel* partyStatusNameLabel_;
485 QList<QPointer<DetachableMdiSubWindow>> allDetachableWindows_;
488 QIcon connectedIcon_;
491 QIcon disconnectedIcon_;
494 QIcon reconnectingIcon_;
497 QIcon recordOffIcon_;
509 std::unique_ptr<CurrencyController> currencyController_;
517 std::unique_ptr<CountryController> countryController_;
525 std::unique_ptr<AccountController> accountController_;
533 std::unique_ptr<RoleController> roleController_;
541 std::unique_ptr<TenantController> tenantController_;
549 std::unique_ptr<SystemSettingController> systemSettingController_;
557 std::unique_ptr<ChangeReasonCategoryController> changeReasonCategoryController_;
565 std::unique_ptr<ChangeReasonController> changeReasonController_;
573 std::unique_ptr<OriginDimensionController> originDimensionController_;
581 std::unique_ptr<NatureDimensionController> natureDimensionController_;
589 std::unique_ptr<TreatmentDimensionController> treatmentDimensionController_;
597 std::unique_ptr<CodingSchemeAuthorityTypeController> codingSchemeAuthorityTypeController_;
605 std::unique_ptr<DataDomainController> dataDomainController_;
613 std::unique_ptr<SubjectAreaController> subjectAreaController_;
621 std::unique_ptr<CatalogController> catalogController_;
629 std::unique_ptr<CodingSchemeController> codingSchemeController_;
637 std::unique_ptr<MethodologyController> methodologyController_;
645 std::unique_ptr<DatasetController> datasetController_;
653 std::unique_ptr<DatasetBundleController> datasetBundleController_;
655 std::unique_ptr<PartyTypeController> partyTypeController_;
656 std::unique_ptr<PartyStatusController> partyStatusController_;
657 std::unique_ptr<PartyIdSchemeController> partyIdSchemeController_;
658 std::unique_ptr<ContactTypeController> contactTypeController_;
659 std::unique_ptr<PartyController> partyController_;
660 std::unique_ptr<CounterpartyController> counterpartyController_;
661 std::unique_ptr<BusinessCentreController> businessCentreController_;
662 std::unique_ptr<BusinessUnitController> businessUnitController_;
663 std::unique_ptr<BusinessUnitTypeController> businessUnitTypeController_;
664 std::unique_ptr<PortfolioController> portfolioController_;
665 std::unique_ptr<BookController> bookController_;
666 std::unique_ptr<BookStatusController> bookStatusController_;
667 std::unique_ptr<QueueMonitorController> queueMonitorController_;
668 std::unique_ptr<PurposeTypeController> purposeTypeController_;
669 std::unique_ptr<RoundingTypeController> roundingTypeController_;
670 std::unique_ptr<MonetaryNatureController> monetaryNatureController_;
671 std::unique_ptr<CurrencyMarketTierController> currencyMarketTierController_;
672 std::unique_ptr<TradeController> tradeController_;
673 std::unique_ptr<DayCountFractionTypeController> dayCountFractionTypeController_;
674 std::unique_ptr<BusinessDayConventionTypeController> businessDayConventionTypeController_;
675 std::unique_ptr<FloatingIndexTypeController> floatingIndexTypeController_;
676 std::unique_ptr<PaymentFrequencyTypeController> paymentFrequencyTypeController_;
677 std::unique_ptr<LegTypeController> legTypeController_;
678 std::unique_ptr<InstrumentController> instrumentController_;
679 std::unique_ptr<FxInstrumentController> fxInstrumentController_;
680 std::unique_ptr<BondInstrumentController> bondInstrumentController_;
681 std::unique_ptr<CreditInstrumentController> creditInstrumentController_;
682 std::unique_ptr<EquityInstrumentController> equityInstrumentController_;
683 std::unique_ptr<CommodityInstrumentController> commodityInstrumentController_;
684 std::unique_ptr<CompositeInstrumentController> compositeInstrumentController_;
685 std::unique_ptr<ScriptedInstrumentController> scriptedInstrumentController_;
686 std::unique_ptr<JobDefinitionController> jobDefinitionController_;
687 std::unique_ptr<AppController> appController_;
688 std::unique_ptr<AppVersionController> appVersionController_;
689 std::unique_ptr<ComputeDashboardController> computeDashboardController_;
690 std::unique_ptr<ComputeConsoleController> computeConsoleController_;
691 std::unique_ptr<ServiceDashboardController> serviceDashboardController_;
692 std::unique_ptr<ReportTypeController> reportTypeController_;
693 std::unique_ptr<ConcurrencyPolicyController> concurrencyPolicyController_;
694 std::unique_ptr<ReportDefinitionController> reportDefinitionController_;
695 std::unique_ptr<ReportInstanceController> reportInstanceController_;
696 std::unique_ptr<OreImportController> oreImportController_;
699 std::shared_ptr<eventing::service::event_bus> eventBus_;
702 ClientManager* clientManager_;
705 ImageCache* imageCache_;
708 ChangeReasonCache* changeReasonCache_;
711 BadgeCache* badgeCache_;
714 std::string username_;
717 std::string httpBaseUrl_;
723 QSystemTrayIcon* systemTrayIcon_;
726 QMenu* trayContextMenu_;
729 std::vector<eventing::service::subscription> eventSubscriptions_;
732 QString instanceName_;
735 QColor instanceColor_;
738 QLabel* instanceColorIndicator_;
741 DetachableMdiSubWindow* eventViewerWindow_;
744 DetachableMdiSubWindow* telemetryViewerWindow_;
747 std::unique_ptr<connections::service::connection_manager> connectionManager_;
750 DetachableMdiSubWindow* connectionBrowserWindow_{
nullptr};
753 DetachableMdiSubWindow* dataLibrarianWindow_{
nullptr};
754 DetachableMdiSubWindow* portfolioExplorerSubWindow_{
nullptr};
755 DetachableMdiSubWindow* orgExplorerSubWindow_{
nullptr};
758 DetachableMdiSubWindow* shellWindow_{
nullptr};
761 DetachableMdiSubWindow* mySessionsWindow_{
nullptr};
764 DetachableMdiSubWindow* myAccountWindow_{
nullptr};
767 QString activeConnectionName_;
770 QString masterPassword_;
773 DetachableMdiSubWindow* aboutSubWindow_{
nullptr};