136 lines
4.8 KiB
C++
136 lines
4.8 KiB
C++
#include "utils/setup.h"
|
|
#include "settings/settings.h"
|
|
#include "openvr/ovr_settings_wrapper.h"
|
|
|
|
#include <QtLogging>
|
|
#include <QtDebug>
|
|
#include <memory>
|
|
|
|
#ifdef _WIN64
|
|
# include <windows.h>
|
|
extern "C" __declspec( dllexport ) DWORD NvOptimusEnablement = 0x00000001;
|
|
extern "C" __declspec( dllexport ) DWORD AmdPowerXpressRequestHighPerformance
|
|
= 0x00000001;
|
|
#endif
|
|
|
|
int main( int argc, char* argv[] )
|
|
{
|
|
setUpLogging();
|
|
|
|
qInfo() << "Settings File: " << settings::initializeAndGetSettingsPath();
|
|
|
|
qInfo() << settings::getSettingsAndValues();
|
|
|
|
QCoreApplication::setAttribute( Qt::AA_Use96Dpi );
|
|
QCoreApplication::setAttribute( Qt::AA_UseDesktopOpenGL );
|
|
MyQApplication mainEventLoop( argc, argv );
|
|
mainEventLoop.setOrganizationName(
|
|
application_strings::applicationOrganizationName );
|
|
mainEventLoop.setApplicationName( application_strings::applicationName );
|
|
mainEventLoop.setApplicationDisplayName(
|
|
application_strings::applicationDisplayName );
|
|
mainEventLoop.setApplicationVersion(
|
|
application_strings::applicationVersionString );
|
|
|
|
const auto commandLineArgs
|
|
= argument::returnCommandLineParser( mainEventLoop );
|
|
|
|
// It is important that either install_manifest or remove_manifest are true,
|
|
// otherwise the handleManifests function will not behave properly.
|
|
if ( commandLineArgs.forceInstallManifest
|
|
|| commandLineArgs.forceRemoveManifest )
|
|
{
|
|
manifest::handleManifests( commandLineArgs.forceInstallManifest,
|
|
commandLineArgs.forceRemoveManifest );
|
|
}
|
|
|
|
openvr_init::initializeOpenVR(
|
|
openvr_init::OpenVrInitializationType::Overlay );
|
|
try
|
|
{
|
|
QQmlEngine qmlEngine;
|
|
|
|
// Just error checking to ensure QRC works properly
|
|
qDebug() << "list of qmldirs";
|
|
QDirIterator it( ":", QDirIterator::Subdirectories );
|
|
while ( it.hasNext() )
|
|
{
|
|
qDebug() << it.next();
|
|
}
|
|
|
|
std::unique_ptr<advsettings::OverlayController> controller(
|
|
new advsettings::OverlayController( commandLineArgs.desktopMode,
|
|
commandLineArgs.forceNoSound,
|
|
qmlEngine ) );
|
|
//const auto url
|
|
// = QUrl( ":/qt/qml/AdvancedSettings/src/res/qml/common/mainwidget.qml" );
|
|
QQmlComponent component( &qmlEngine, ":/qt/qml/AdvancedSettings/src/res/qml/common/mainwidget.qml" );
|
|
auto errors = component.errors();
|
|
for ( auto& e : errors )
|
|
{
|
|
qCritical() << "QML Error: "
|
|
<< e.toString().toStdString(); //<< std::endl;
|
|
}
|
|
auto quickObj = component.create();
|
|
controller->SetWidget( qobject_cast<QQuickItem*>( quickObj ),
|
|
application_strings::applicationDisplayName,
|
|
application_strings::applicationKey );
|
|
|
|
// Attempts to install the application manifest on all "regular" starts.
|
|
if ( !commandLineArgs.forceNoManifest )
|
|
{
|
|
try
|
|
{
|
|
const auto manifestPath = paths::binaryDirectoryFindFile(
|
|
manifest::kVRManifestName );
|
|
if ( !manifestPath.has_value() )
|
|
{
|
|
throw std::runtime_error(
|
|
"Could not find applications manifest." );
|
|
}
|
|
else
|
|
{
|
|
manifest::installApplicationManifest( *manifestPath );
|
|
}
|
|
}
|
|
catch ( std::exception& e )
|
|
{
|
|
qCritical() << e.what();
|
|
}
|
|
}
|
|
|
|
if ( commandLineArgs.desktopMode
|
|
|| settings::getSetting(
|
|
settings::BoolSetting::APPLICATION_desktopModeToggle ) )
|
|
{
|
|
//TODO TEMP
|
|
//qDebug() << "Desktop MODE!";
|
|
//auto m_pWindow = new QQuickWindow();
|
|
//qobject_cast<QQuickItem*>( quickObj )
|
|
// ->setParentItem( m_pWindow->contentItem() );
|
|
//m_pWindow->setGeometry(
|
|
// 0,
|
|
// 0,
|
|
// static_cast<int>(
|
|
// qobject_cast<QQuickItem*>( quickObj )->width() ),
|
|
// static_cast<int>(
|
|
// qobject_cast<QQuickItem*>( quickObj )->height() ) );
|
|
//m_pWindow->show();
|
|
}
|
|
if ( commandLineArgs.resetSettings )
|
|
{
|
|
qInfo() << "WEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE";
|
|
// resets all settings if called
|
|
//TODO TEMP
|
|
//ovr_settings_wrapper::resetAllSettings();
|
|
}
|
|
|
|
return mainEventLoop.exec();
|
|
}
|
|
catch ( const std::exception& e )
|
|
{
|
|
qFatal() << e.what();
|
|
return ReturnErrorCode::GENERAL_FAILURE;
|
|
}
|
|
}
|