ui: Fix additional Qt issues
This commit is contained in:
		
							parent
							
								
									2c37e19266
								
							
						
					
					
						commit
						675186a737
					
				
							
								
								
									
										104
									
								
								source/ui/ui.cpp
								
								
								
								
							
							
						
						
									
										104
									
								
								source/ui/ui.cpp
								
								
								
								
							|  | @ -78,55 +78,16 @@ streamfx::ui::handler::handler() | ||||||
| 
 | 
 | ||||||
| 	  _link_website(), _link_discord(), _link_github(), | 	  _link_website(), _link_discord(), _link_github(), | ||||||
| 
 | 
 | ||||||
| 	  _about_action(), _about_dialog() | 	  _about_action(), _about_dialog(), | ||||||
|  | 
 | ||||||
|  | 	  _translator(), _updater() | ||||||
| { | { | ||||||
| 	// Qt Resources and Translators
 |  | ||||||
| 	qt_init_resource(); |  | ||||||
| 	QCoreApplication::installTranslator(new streamfx::ui::translator(this)); |  | ||||||
| 
 |  | ||||||
| 	// Handle all frontend events.
 |  | ||||||
| 	obs_frontend_add_event_callback(frontend_event_handler, this); | 	obs_frontend_add_event_callback(frontend_event_handler, this); | ||||||
| 
 |  | ||||||
| 	// Build StreamFX menu.
 |  | ||||||
| 	_menu = new QMenu(reinterpret_cast<QWidget*>(obs_frontend_get_main_window())); |  | ||||||
| 
 |  | ||||||
| 	{ // Github Issues
 |  | ||||||
| 		//_menu->addSeparator();
 |  | ||||||
| 		_report_issue = _menu->addAction(QString::fromUtf8(D_TRANSLATE(_i18n_menu_report_issue.data()))); |  | ||||||
| 		_request_help = _menu->addAction(QString::fromUtf8(D_TRANSLATE(_i18n_menu_request_help.data()))); |  | ||||||
| 		connect(_report_issue, &QAction::triggered, this, &streamfx::ui::handler::on_action_report_issue); |  | ||||||
| 		connect(_request_help, &QAction::triggered, this, &streamfx::ui::handler::on_action_request_help); |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| 	{ // Official Links
 |  | ||||||
| 		_menu->addSeparator(); |  | ||||||
| 		_link_website = _menu->addAction(QString::fromUtf8(D_TRANSLATE(_i18n_menu_website.data()))); |  | ||||||
| 		_link_discord = _menu->addAction(QString::fromUtf8(D_TRANSLATE(_i18n_menu_discord.data()))); |  | ||||||
| 		_link_github  = _menu->addAction(QString::fromUtf8(D_TRANSLATE(_i18n_menu_github.data()))); |  | ||||||
| 		connect(_link_website, &QAction::triggered, this, &streamfx::ui::handler::on_action_website); |  | ||||||
| 		connect(_link_discord, &QAction::triggered, this, &streamfx::ui::handler::on_action_discord); |  | ||||||
| 		connect(_link_github, &QAction::triggered, this, &streamfx::ui::handler::on_action_github); |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| #ifdef ENABLE_UPDATER |  | ||||||
| 	_updater = streamfx::ui::updater::instance(_menu); |  | ||||||
| #endif |  | ||||||
| 
 |  | ||||||
| 	{ // About StreamFX
 |  | ||||||
| 		_about_dialog = new streamfx::ui::about(); |  | ||||||
| 		_menu->addSeparator(); |  | ||||||
| 		_about_action = _menu->addAction(QString::fromUtf8(D_TRANSLATE(_i18n_menu_about.data()))); |  | ||||||
| 		connect(_about_action, &QAction::triggered, this, &streamfx::ui::handler::on_action_about); |  | ||||||
| 	} |  | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| streamfx::ui::handler::~handler() | streamfx::ui::handler::~handler() | ||||||
| { | { | ||||||
| 	// Handle all frontend events.
 |  | ||||||
| 	obs_frontend_remove_event_callback(frontend_event_handler, this); | 	obs_frontend_remove_event_callback(frontend_event_handler, this); | ||||||
| 
 |  | ||||||
| 	// Qt Resources and Translators
 |  | ||||||
| 	qt_cleanup_resource(); |  | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void streamfx::ui::handler::frontend_event_handler(obs_frontend_event event, void* private_data) | void streamfx::ui::handler::frontend_event_handler(obs_frontend_event event, void* private_data) | ||||||
|  | @ -136,6 +97,9 @@ void streamfx::ui::handler::frontend_event_handler(obs_frontend_event event, voi | ||||||
| 	case OBS_FRONTEND_EVENT_FINISHED_LOADING: | 	case OBS_FRONTEND_EVENT_FINISHED_LOADING: | ||||||
| 		ptr->on_obs_loaded(); | 		ptr->on_obs_loaded(); | ||||||
| 		break; | 		break; | ||||||
|  | 	case OBS_FRONTEND_EVENT_EXIT: | ||||||
|  | 		ptr->on_obs_exit(); | ||||||
|  | 		break; | ||||||
| 	default: | 	default: | ||||||
| 		break; | 		break; | ||||||
| 	} | 	} | ||||||
|  | @ -143,6 +107,53 @@ void streamfx::ui::handler::frontend_event_handler(obs_frontend_event event, voi | ||||||
| 
 | 
 | ||||||
| void streamfx::ui::handler::on_obs_loaded() | void streamfx::ui::handler::on_obs_loaded() | ||||||
| { | { | ||||||
|  | 	// Initialize the required Qt resources.
 | ||||||
|  | 	qt_init_resource(); | ||||||
|  | 
 | ||||||
|  | 	// Add our own translation helper to the Qt Application.
 | ||||||
|  | 	_translator = new streamfx::ui::translator(this); | ||||||
|  | 	QCoreApplication::installTranslator(_translator); | ||||||
|  | 
 | ||||||
|  | 	// Create the 'About StreamFX' dialog.
 | ||||||
|  | 	_about_dialog = new streamfx::ui::about(); | ||||||
|  | 
 | ||||||
|  | 	{ // Create and build the StreamFX menu
 | ||||||
|  | 		_menu = new QMenu(reinterpret_cast<QWidget*>(obs_frontend_get_main_window())); | ||||||
|  | 
 | ||||||
|  | 		// Report an Issue
 | ||||||
|  | 		_report_issue = _menu->addAction(QString::fromUtf8(D_TRANSLATE(_i18n_menu_report_issue.data()))); | ||||||
|  | 		connect(_report_issue, &QAction::triggered, this, &streamfx::ui::handler::on_action_report_issue); | ||||||
|  | 
 | ||||||
|  | 		// Request help
 | ||||||
|  | 		_request_help = _menu->addAction(QString::fromUtf8(D_TRANSLATE(_i18n_menu_request_help.data()))); | ||||||
|  | 		connect(_request_help, &QAction::triggered, this, &streamfx::ui::handler::on_action_request_help); | ||||||
|  | 
 | ||||||
|  | 		_menu->addSeparator(); | ||||||
|  | 
 | ||||||
|  | 		// Website
 | ||||||
|  | 		_link_website = _menu->addAction(QString::fromUtf8(D_TRANSLATE(_i18n_menu_website.data()))); | ||||||
|  | 		connect(_link_website, &QAction::triggered, this, &streamfx::ui::handler::on_action_website); | ||||||
|  | 
 | ||||||
|  | 		// Discord
 | ||||||
|  | 		_link_discord = _menu->addAction(QString::fromUtf8(D_TRANSLATE(_i18n_menu_discord.data()))); | ||||||
|  | 		connect(_link_discord, &QAction::triggered, this, &streamfx::ui::handler::on_action_discord); | ||||||
|  | 
 | ||||||
|  | 		// Github
 | ||||||
|  | 		_link_github = _menu->addAction(QString::fromUtf8(D_TRANSLATE(_i18n_menu_github.data()))); | ||||||
|  | 		connect(_link_github, &QAction::triggered, this, &streamfx::ui::handler::on_action_github); | ||||||
|  | 
 | ||||||
|  | 		// Create the updater.
 | ||||||
|  | #ifdef ENABLE_UPDATER | ||||||
|  | 		_updater = streamfx::ui::updater::instance(_menu); | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
|  | 		_menu->addSeparator(); | ||||||
|  | 
 | ||||||
|  | 		// About
 | ||||||
|  | 		_about_action = _menu->addAction(QString::fromUtf8(D_TRANSLATE(_i18n_menu_about.data()))); | ||||||
|  | 		connect(_about_action, &QAction::triggered, this, &streamfx::ui::handler::on_action_about); | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
| 	// Add an actual Menu entry.
 | 	// Add an actual Menu entry.
 | ||||||
| 	QMainWindow* main_widget = reinterpret_cast<QMainWindow*>(obs_frontend_get_main_window()); | 	QMainWindow* main_widget = reinterpret_cast<QMainWindow*>(obs_frontend_get_main_window()); | ||||||
| 	_menu_action             = new QAction(main_widget); | 	_menu_action             = new QAction(main_widget); | ||||||
|  | @ -161,6 +172,15 @@ void streamfx::ui::handler::on_obs_loaded() | ||||||
| 	this->_updater->obs_ready(); | 	this->_updater->obs_ready(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | void streamfx::ui::handler::on_obs_exit() | ||||||
|  | { | ||||||
|  | 	// Remove translator.
 | ||||||
|  | 	QCoreApplication::removeTranslator(_translator); | ||||||
|  | 
 | ||||||
|  | 	// Clean up any Qt resources we added.
 | ||||||
|  | 	qt_cleanup_resource(); | ||||||
|  | } | ||||||
|  | 
 | ||||||
| void streamfx::ui::handler::on_action_report_issue(bool) | void streamfx::ui::handler::on_action_report_issue(bool) | ||||||
| { | { | ||||||
| 	QDesktopServices::openUrl(QUrl(QString::fromUtf8(_url_report_issue.data()))); | 	QDesktopServices::openUrl(QUrl(QString::fromUtf8(_url_report_issue.data()))); | ||||||
|  |  | ||||||
|  | @ -46,6 +46,8 @@ namespace streamfx::ui { | ||||||
| 		QAction*   _about_action; | 		QAction*   _about_action; | ||||||
| 		ui::about* _about_dialog; | 		ui::about* _about_dialog; | ||||||
| 
 | 
 | ||||||
|  | 		QTranslator* _translator; | ||||||
|  | 
 | ||||||
| #ifdef ENABLE_UPDATER | #ifdef ENABLE_UPDATER | ||||||
| 		std::shared_ptr<streamfx::ui::updater> _updater; | 		std::shared_ptr<streamfx::ui::updater> _updater; | ||||||
| #endif | #endif | ||||||
|  | @ -60,6 +62,7 @@ namespace streamfx::ui { | ||||||
| 		static void frontend_event_handler(obs_frontend_event event, void* private_data); | 		static void frontend_event_handler(obs_frontend_event event, void* private_data); | ||||||
| 
 | 
 | ||||||
| 		void on_obs_loaded(); | 		void on_obs_loaded(); | ||||||
|  | 		void on_obs_exit(); | ||||||
| 
 | 
 | ||||||
| 		public slots: | 		public slots: | ||||||
| 		; // Not having this breaks some linters.
 | 		; // Not having this breaks some linters.
 | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue