@ -22,14 +22,6 @@ CoreApp *CoreApp::instance() 
				
			 
			
		
	
		
		
			
				
					 
					 
						return  CoreAppPrivate : : instance ;  
					 
					 
						return  CoreAppPrivate : : instance ;  
				
			 
			
		
	
		
		
			
				
					 
					 
					}  
					 
					 
					}  
				
			 
			
		
	
		
		
			
				
					 
					 
					
 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					 
					 
					void  CoreApp : : setMainPresenter ( IPresenter  * presenter )  
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					 
					 
					{  
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					 
					 
						if ( ! CoreAppPrivate : : instance )  
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					 
					 
							logCritical ( )  < <  " Failed to set presenter - no core app has been created yet " ;  
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					 
					 
						else  
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					 
					 
							CoreAppPrivate : : instance - > d - > presenter . reset ( presenter ) ;  
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					 
					 
					}  
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					 
					 
					
 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					 
					 
					void  CoreApp : : disableAutoBoot ( )  
					 
					 
					void  CoreApp : : disableAutoBoot ( )  
				
			 
			
		
	
		
		
			
				
					 
					 
					{  
					 
					 
					{  
				
			 
			
		
	
		
		
			
				
					 
					 
						CoreAppPrivate : : bootEnabled  =  false ;  
					 
					 
						CoreAppPrivate : : bootEnabled  =  false ;  
				
			 
			
		
	
	
		
		
			
				
					
						
						
						
							
								 
							 
						
					 
					@ -40,6 +32,7 @@ void CoreApp::registerApp() 
				
			 
			
		
	
		
		
			
				
					 
					 
						//register metatypes
  
					 
					 
						//register metatypes
  
				
			 
			
		
	
		
		
			
				
					 
					 
						qRegisterMetaType < const  QMetaObject * > ( " const QMetaObject* " ) ;  
					 
					 
						qRegisterMetaType < const  QMetaObject * > ( " const QMetaObject* " ) ;  
				
			 
			
		
	
		
		
			
				
					 
					 
						qRegisterMetaType < MessageConfig : : StandardButton > ( ) ;  
					 
					 
						qRegisterMetaType < MessageConfig : : StandardButton > ( ) ;  
				
			 
			
		
	
		
		
			
				
					 
					 
					 
					 
					 
						registerInterfaceConverter < IPresenter > ( ) ;  
				
			 
			
		
	
		
		
			
				
					 
					 
					
 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					 
					 
						//setup
  
					 
					 
						//setup
  
				
			 
			
		
	
		
		
			
				
					 
					 
						setParent ( qApp ) ;  
					 
					 
						setParent ( qApp ) ;  
				
			 
			
		
	
	
		
		
			
				
					
						
						
						
							
								 
							 
						
					 
					@ -49,11 +42,6 @@ void CoreApp::registerApp() 
				
			 
			
		
	
		
		
			
				
					 
					 
							QMetaObject : : invokeMethod ( this ,  " bootApp " ,  Qt : : QueuedConnection ) ;  
					 
					 
							QMetaObject : : invokeMethod ( this ,  " bootApp " ,  Qt : : QueuedConnection ) ;  
				
			 
			
		
	
		
		
			
				
					 
					 
					}  
					 
					 
					}  
				
			 
			
		
	
		
		
			
				
					 
					 
					
 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					 
					 
					IPresenter  * CoreApp : : presenter ( )  const  
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					 
					 
					{  
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					 
					 
						return  d - > presenter . data ( ) ;  
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					 
					 
					}  
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					 
					 
					
 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					 
					 
					void  CoreApp : : show ( const  char  * viewModelName ,  const  QVariantHash  & params )  
					 
					 
					void  CoreApp : : show ( const  char  * viewModelName ,  const  QVariantHash  & params )  
				
			 
			
		
	
		
		
			
				
					 
					 
					{  
					 
					 
					{  
				
			 
			
		
	
		
		
			
				
					 
					 
						auto  metaId  =  QMetaType : : type ( viewModelName ) ;  
					 
					 
						auto  metaId  =  QMetaType : : type ( viewModelName ) ;  
				
			 
			
		
	
	
		
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
					@ -87,8 +75,17 @@ MessageResult *CoreApp::showDialog(const MessageConfig &config) 
				
			 
			
		
	
		
		
			
				
					 
					 
					
 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					 
					 
					void  CoreApp : : bootApp ( )  
					 
					 
					void  CoreApp : : bootApp ( )  
				
			 
			
		
	
		
		
			
				
					 
					 
					{  
					 
					 
					{  
				
			 
			
		
	
		
		
			
				
					
					 
					 
						if ( ! d - > presenter )  
					 
					 
						if ( ! d - > presenter )  {  
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
							logWarning ( )  < <  " No presenter has been set before the app start " ;  
					 
					 
							try  {  
				
			 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					 
					 
					 
					 
					 
								d - > presenter  =  ServiceRegistry : : instance ( ) - > service < IPresenter > ( ) ;  
				
			 
			
		
	
		
		
			
				
					 
					 
					 
					 
					 
							}  catch ( ServiceConstructionException  & e )  {  
				
			 
			
		
	
		
		
			
				
					 
					 
					 
					 
					 
								logCritical ( )  < <  " Unable to get a presenter with error "  
				
			 
			
		
	
		
		
			
				
					 
					 
					 
					 
					 
											  < <  e . what ( ) ;  
				
			 
			
		
	
		
		
			
				
					 
					 
					 
					 
					 
								qApp - > exit ( EXIT_FAILURE ) ;  
				
			 
			
		
	
		
		
			
				
					 
					 
					 
					 
					 
								return ;  
				
			 
			
		
	
		
		
			
				
					 
					 
					 
					 
					 
							}  
				
			 
			
		
	
		
		
			
				
					 
					 
					 
					 
					 
						}  
				
			 
			
		
	
		
		
			
				
					 
					 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					 
					 
						auto  res  =  startApp ( QCoreApplication : : arguments ( ) ) ;  
					 
					 
						auto  res  =  startApp ( QCoreApplication : : arguments ( ) ) ;  
				
			 
			
		
	
		
		
			
				
					 
					 
						if ( res  = =  EXIT_SUCCESS )  {  
					 
					 
						if ( res  = =  EXIT_SUCCESS )  {  
				
			 
			
		
	
		
		
			
				
					 
					 
							connect ( qApp ,  & QCoreApplication : : aboutToQuit ,  
					 
					 
							connect ( qApp ,  & QCoreApplication : : aboutToQuit ,  
				
			 
			
		
	
	
		
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
					@ -164,11 +161,6 @@ QScopedPointer<CoreAppPrivate> &CoreAppPrivate::dInstance() 
				
			 
			
		
	
		
		
			
				
					 
					 
						return  instance - > d ;  
					 
					 
						return  instance - > d ;  
				
			 
			
		
	
		
		
			
				
					 
					 
					}  
					 
					 
					}  
				
			 
			
		
	
		
		
			
				
					 
					 
					
 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					 
					 
					IPresenter  * CoreAppPrivate : : currentPresenter ( )  const  
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					 
					 
					{  
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					 
					 
						return  presenter . data ( ) ;  
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					 
					 
					}  
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					 
					 
					
 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					 
					 
					void  CoreAppPrivate : : showViewModel ( const  QMetaObject  * metaObject ,  const  QVariantHash  & params ,  QPointer < ViewModel >  parent ,  quint32  requestCode )  
					 
					 
					void  CoreAppPrivate : : showViewModel ( const  QMetaObject  * metaObject ,  const  QVariantHash  & params ,  QPointer < ViewModel >  parent ,  quint32  requestCode )  
				
			 
			
		
	
		
		
			
				
					 
					 
					{  
					 
					 
					{  
				
			 
			
		
	
		
		
			
				
					 
					 
						if ( presenter )  {  
					 
					 
						if ( presenter )  {