mirror of
				https://github.com/subsurface/subsurface.git
				synced 2025-02-19 22:16:15 +00:00 
			
		
		
		
	Separate initializing Qt from initializing the UI
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
		
							parent
							
								
									6a0e1cd9f6
								
							
						
					
					
						commit
						0692e24036
					
				
					 5 changed files with 66 additions and 54 deletions
				
			
		
							
								
								
									
										58
									
								
								qt-gui.cpp
									
										
									
									
									
								
							
							
						
						
									
										58
									
								
								qt-gui.cpp
									
										
									
									
									
								
							|  | @ -11,54 +11,14 @@ | |||
| #include <QLibraryInfo> | ||||
| #include <QTextCodec> | ||||
| 
 | ||||
| static QApplication *application = NULL; | ||||
| #include "qt-gui.h" | ||||
| 
 | ||||
| static MainWindow *window = NULL; | ||||
| 
 | ||||
| void init_qt(int *argcp, char ***argvp) | ||||
| void init_ui() | ||||
| { | ||||
| 	application = new QApplication(*argcp, *argvp); | ||||
| } | ||||
| 	init_qt_late(); | ||||
| 
 | ||||
| void init_ui(void) | ||||
| { | ||||
| 	// tell Qt to use system proxies
 | ||||
| 	// note: on Linux, "system" == "environment variables"
 | ||||
| 	QNetworkProxyFactory::setUseSystemConfiguration(true); | ||||
| 
 | ||||
| 	// for Win32 and Qt5 we try to set the locale codec to UTF-8.
 | ||||
| 	// this makes QFile::encodeName() work.
 | ||||
| #ifdef Q_OS_WIN | ||||
| 	QTextCodec::setCodecForLocale(QTextCodec::codecForMib(106)); | ||||
| #endif | ||||
| 
 | ||||
| 	QCoreApplication::setOrganizationName("Subsurface"); | ||||
| 	QCoreApplication::setOrganizationDomain("subsurface.hohndel.org"); | ||||
| 	QCoreApplication::setApplicationName("Subsurface"); | ||||
| 	// find plugins installed in the application directory (without this SVGs don't work on Windows)
 | ||||
| 	QCoreApplication::addLibraryPath(QCoreApplication::applicationDirPath()); | ||||
| 	QLocale loc; | ||||
| 	QString uiLang = uiLanguage(&loc); | ||||
| 	QLocale::setDefault(loc); | ||||
| 
 | ||||
| 	// we don't have translations for English - if we don't check for this
 | ||||
| 	// Qt will proceed to load the second language in preference order - not what we want
 | ||||
| 	// on Linux this tends to be en-US, but on the Mac it's just en
 | ||||
| 	if (!uiLang.startsWith("en") || uiLang.startsWith("en-GB")) { | ||||
| 		qtTranslator = new QTranslator; | ||||
| 		if (qtTranslator->load(loc, "qt", "_", QLibraryInfo::location(QLibraryInfo::TranslationsPath))) { | ||||
| 			application->installTranslator(qtTranslator); | ||||
| 		} else { | ||||
| 			qDebug() << "can't find Qt localization for locale" << uiLang << "searching in" << QLibraryInfo::location(QLibraryInfo::TranslationsPath); | ||||
| 		} | ||||
| 		ssrfTranslator = new QTranslator; | ||||
| 		if (ssrfTranslator->load(loc, "subsurface", "_") || | ||||
| 		    ssrfTranslator->load(loc, "subsurface", "_", getSubsurfaceDataPath("translations")) || | ||||
| 		    ssrfTranslator->load(loc, "subsurface", "_", getSubsurfaceDataPath("../translations"))) { | ||||
| 			application->installTranslator(ssrfTranslator); | ||||
| 		} else { | ||||
| 			qDebug() << "can't find Subsurface localization for locale" << uiLang; | ||||
| 		} | ||||
| 	} | ||||
| 	window = new MainWindow(); | ||||
| 	if (existing_filename && existing_filename[0] != '\0') | ||||
| 		window->setTitle(MWTF_FILENAME); | ||||
|  | @ -66,16 +26,16 @@ void init_ui(void) | |||
| 		window->setTitle(MWTF_DEFAULT); | ||||
| } | ||||
| 
 | ||||
| void run_ui(void) | ||||
| void run_ui() | ||||
| { | ||||
| 	window->show(); | ||||
| 	application->exec(); | ||||
| 	qApp->exec(); | ||||
| } | ||||
| 
 | ||||
| void exit_ui(void) | ||||
| void exit_ui() | ||||
| { | ||||
| 	delete window; | ||||
| 	delete application; | ||||
| 	delete qApp; | ||||
| 	free((void *)existing_filename); | ||||
| 	free((void *)default_dive_computer_vendor); | ||||
| 	free((void *)default_dive_computer_product); | ||||
|  | @ -84,7 +44,7 @@ void exit_ui(void) | |||
| 
 | ||||
| double get_screen_dpi() | ||||
| { | ||||
| 	QDesktopWidget *mydesk = application->desktop(); | ||||
| 	QDesktopWidget *mydesk = qApp->desktop(); | ||||
| 	return mydesk->physicalDpiX(); | ||||
| } | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue