forked from dolphin-emu/dolphin
		
	"this" made sense when "Do you authorize..." was on the bottom, but it doesn't make sense when it's at the top. Also removing unnecessary newlines.
		
			
				
	
	
		
			103 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			103 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| // Copyright 2015 Dolphin Emulator Project
 | |
| // Licensed under GPLv2+
 | |
| // Refer to the license.txt file included.
 | |
| 
 | |
| #include <OptionParser.h>
 | |
| #include <QAbstractEventDispatcher>
 | |
| #include <QApplication>
 | |
| #include <QMessageBox>
 | |
| #include <QObject>
 | |
| 
 | |
| #include "Core/Analytics.h"
 | |
| #include "Core/BootManager.h"
 | |
| #include "Core/Core.h"
 | |
| #include "DolphinQt2/Host.h"
 | |
| #include "DolphinQt2/InDevelopmentWarning.h"
 | |
| #include "DolphinQt2/MainWindow.h"
 | |
| #include "DolphinQt2/Resources.h"
 | |
| #include "DolphinQt2/Settings.h"
 | |
| #include "UICommon/CommandLineParse.h"
 | |
| #include "UICommon/UICommon.h"
 | |
| 
 | |
| // N.B. On Windows, this should be called from WinMain. Link against qtmain and specify
 | |
| // /SubSystem:Windows
 | |
| int main(int argc, char* argv[])
 | |
| {
 | |
|   QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
 | |
|   QCoreApplication::setAttribute(Qt::AA_UseHighDpiPixmaps);
 | |
|   QCoreApplication::setOrganizationName(QStringLiteral("Dolphin Emulator"));
 | |
|   QCoreApplication::setOrganizationDomain(QStringLiteral("dolphin-emu.org"));
 | |
|   QCoreApplication::setApplicationName(QStringLiteral("dolphin"));
 | |
| 
 | |
|   QApplication app(argc, argv);
 | |
| 
 | |
|   auto parser = CommandLineParse::CreateParser(CommandLineParse::ParserOptions::IncludeGUIOptions);
 | |
|   const optparse::Values& options = CommandLineParse::ParseArguments(parser.get(), argc, argv);
 | |
|   const std::vector<std::string> args = parser->args();
 | |
| 
 | |
|   UICommon::SetUserDirectory(static_cast<const char*>(options.get("user")));
 | |
|   UICommon::CreateDirectories();
 | |
|   UICommon::Init();
 | |
|   Resources::Init();
 | |
| 
 | |
|   // Whenever the event loop is about to go to sleep, dispatch the jobs
 | |
|   // queued in the Core first.
 | |
|   QObject::connect(QAbstractEventDispatcher::instance(), &QAbstractEventDispatcher::aboutToBlock,
 | |
|                    &app, &Core::HostDispatchJobs);
 | |
| 
 | |
|   int retval = 0;
 | |
| 
 | |
|   // There's intentionally no way to set this from the UI.
 | |
|   // Add it to your INI manually instead.
 | |
|   if (SConfig::GetInstance().m_show_development_warning)
 | |
|   {
 | |
|     InDevelopmentWarning warning_box;
 | |
|     retval = warning_box.exec() == QDialog::Rejected;
 | |
|   }
 | |
|   if (!retval)
 | |
|   {
 | |
|     DolphinAnalytics::Instance()->ReportDolphinStart("qt");
 | |
| 
 | |
|     MainWindow win;
 | |
|     win.show();
 | |
| 
 | |
| #if defined(USE_ANALYTICS) && USE_ANALYTICS
 | |
|     if (!SConfig::GetInstance().m_analytics_permission_asked)
 | |
|     {
 | |
|       QMessageBox analytics_prompt(&win);
 | |
| 
 | |
|       analytics_prompt.setIcon(QMessageBox::Question);
 | |
|       analytics_prompt.setStandardButtons(QMessageBox::Yes | QMessageBox::No);
 | |
|       analytics_prompt.setText(
 | |
|           QObject::tr("Do you authorize Dolphin to report information to Dolphin's developers?"));
 | |
|       analytics_prompt.setInformativeText(
 | |
|           QObject::tr("If authorized, Dolphin can collect data on its performance, "
 | |
|                       "feature usage, and configuration, as well as data on your system's "
 | |
|                       "hardware and operating system.\n\n"
 | |
|                       "No private data is ever collected. This data helps us understand "
 | |
|                       "how people and emulated games use Dolphin and prioritize our "
 | |
|                       "efforts. It also helps us identify rare configurations that are "
 | |
|                       "causing bugs, performance and stability issues.\n"
 | |
|                       "This authorization can be revoked at any time through Dolphin's "
 | |
|                       "settings."));
 | |
| 
 | |
|       const int answer = analytics_prompt.exec();
 | |
| 
 | |
|       SConfig::GetInstance().m_analytics_permission_asked = true;
 | |
|       SConfig::GetInstance().m_analytics_enabled = (answer == QMessageBox::Yes);
 | |
| 
 | |
|       DolphinAnalytics::Instance()->ReloadConfig();
 | |
|     }
 | |
| #endif
 | |
| 
 | |
|     retval = app.exec();
 | |
|   }
 | |
| 
 | |
|   BootManager::Stop();
 | |
|   Core::Shutdown();
 | |
|   UICommon::Shutdown();
 | |
|   Host::GetInstance()->deleteLater();
 | |
| 
 | |
|   return retval;
 | |
| }
 |