diff --git a/data/locale/en-US.ini b/data/locale/en-US.ini index b5b9fdc4..9647ac72 100644 --- a/data/locale/en-US.ini +++ b/data/locale/en-US.ini @@ -17,6 +17,5 @@ OBSWebsocket.ProfileChanged.Started="WebSockets server enabled in this profile. OBSWebsocket.ProfileChanged.Stopped="WebSockets server disabled in this profile. Server stopped." OBSWebsocket.ProfileChanged.Restarted="WebSockets server port changed in this profile. Server restarted." OBSWebsocket.InitialPasswordSetup.Title="obs-websocket - Server Password Configuration" -OBSWebsocket.InitialPasswordSetup.Text="It looks like you are running obs-websocket for the first time. Do you want set a password for the WebSockets server now?" -OBSWebsocket.InitialPasswordSetup.SuccessText="Server Password set successfully." -OBSWebsocket.InitialPasswordSetup.DismissedText="You can configure a server password anytime in obs-websocket settings (under the Tools menu of OBS Studio)" +OBSWebsocket.InitialPasswordSetup.Text="It looks like you are running obs-websocket for the first time. Do you want to configure a password now for the WebSockets server?" +OBSWebsocket.InitialPasswordSetup.DismissedText="You can configure a server password later in obs-websocket settings (under the Tools menu of OBS Studio)" diff --git a/src/Config.cpp b/src/Config.cpp index af62aeeb..60bdddca 100644 --- a/src/Config.cpp +++ b/src/Config.cpp @@ -310,12 +310,6 @@ void Config::OnFrontendEvent(enum obs_frontend_event event, void* param) void Config::FirstRunPasswordSetup() { - // check if the password is already set - auto config = GetConfig(); - if (!(config->Secret.isEmpty()) && !(config->Salt.isEmpty())) { - return; - } - // check if we already showed the auth setup prompt to the user, independently of the current settings (tied to the current profile) config_t* globalConfig = obs_frontend_get_global_config(); bool alreadyPrompted = config_get_bool(globalConfig, SECTION_NAME, GLOBAL_AUTH_SETUP_PROMPTED); @@ -327,12 +321,16 @@ void Config::FirstRunPasswordSetup() config_set_bool(globalConfig, SECTION_NAME, GLOBAL_AUTH_SETUP_PROMPTED, true); config_save(globalConfig); + // check if the password is already set + auto config = GetConfig(); + if (!(config->Secret.isEmpty()) && !(config->Salt.isEmpty())) { + return; + } + obs_frontend_push_ui_translation(obs_module_get_string); QString dialogTitle = QObject::tr("OBSWebsocket.InitialPasswordSetup.Title"); QString dialogText = QObject::tr("OBSWebsocket.InitialPasswordSetup.Text"); - QString successText = QObject::tr("OBSWebsocket.InitialPasswordSetup.SuccessText"); QString dismissedText = QObject::tr("OBSWebsocket.InitialPasswordSetup.DismissedText"); - QString passwordLabel = QObject::tr("OBSWebsocket.Settings.Password"); obs_frontend_pop_ui_translation(); auto mainWindow = reinterpret_cast( @@ -341,21 +339,10 @@ void Config::FirstRunPasswordSetup() QMessageBox::StandardButton response = QMessageBox::question(mainWindow, dialogTitle, dialogText); if (response == QMessageBox::Yes) { - bool promptAccepted = false; - QString newPassword = QInputDialog::getText( - mainWindow, - dialogTitle, passwordLabel, - QLineEdit::PasswordEchoOnEdit, QString::Null(), &promptAccepted - ); - - if (promptAccepted) { - // set new password - GetConfig()->SetPassword(newPassword); - QMessageBox::information(mainWindow, dialogTitle, successText); - return; - } + ShowSettingsDialog(); + } + else { + // tell the user they still can set the password later in our settings dialog + QMessageBox::information(mainWindow, dialogTitle, dismissedText); } - - // tell the user they still can set the password later in our settings dialog - QMessageBox::information(mainWindow, dialogTitle, dismissedText); } diff --git a/src/obs-websocket.cpp b/src/obs-websocket.cpp index b198ebb7..12324906 100644 --- a/src/obs-websocket.cpp +++ b/src/obs-websocket.cpp @@ -47,6 +47,7 @@ OBS_MODULE_USE_DEFAULT_LOCALE("obs-websocket", "en-US") ConfigPtr _config; WSServerPtr _server; WSEventsPtr _eventsSystem; +SettingsDialog* settingsDialog = nullptr; bool obs_module_load(void) { blog(LOG_INFO, "you can haz websockets (version %s)", OBS_WEBSOCKET_VERSION); @@ -64,14 +65,14 @@ bool obs_module_load(void) { // UI setup obs_frontend_push_ui_translation(obs_module_get_string); QMainWindow* mainWindow = (QMainWindow*)obs_frontend_get_main_window(); - SettingsDialog* settingsDialog = new SettingsDialog(mainWindow); + settingsDialog = new SettingsDialog(mainWindow); obs_frontend_pop_ui_translation(); const char* menuActionText = obs_module_text("OBSWebsocket.Settings.DialogTitle"); QAction* menuAction = (QAction*)obs_frontend_add_tools_menu_qaction(menuActionText); - QObject::connect(menuAction, &QAction::triggered, [settingsDialog] { + QObject::connect(menuAction, &QAction::triggered, [] { // The settings dialog belongs to the main window. Should be ok // to pass the pointer to this QAction belonging to the main window settingsDialog->ToggleShowHide(); @@ -115,3 +116,9 @@ WSServerPtr GetServer() { WSEventsPtr GetEventsSystem() { return _eventsSystem; } + +void ShowSettingsDialog() { + if (settingsDialog) { + settingsDialog->setVisible(true); + } +} diff --git a/src/obs-websocket.h b/src/obs-websocket.h index 5f118d28..671b22ba 100644 --- a/src/obs-websocket.h +++ b/src/obs-websocket.h @@ -55,6 +55,7 @@ typedef std::shared_ptr WSEventsPtr; ConfigPtr GetConfig(); WSServerPtr GetServer(); WSEventsPtr GetEventsSystem(); +void ShowSettingsDialog(); #define OBS_WEBSOCKET_VERSION "4.8.0"