@@ -115,7 +115,9 @@ class AppClient {
115115 this . _logPermissions ( ) ;
116116
117117 // wait for the FULL state for more functionality
118- if ( hmiLevel === SDL . rpc . enums . HMILevel . HMI_FULL ) {
118+ const prevHmiFull = this . _prevHmiLevel !== SDL . rpc . enums . HMILevel . HMI_FULL ;
119+ this . _prevHmiLevel = hmiLevel ;
120+ if ( hmiLevel === SDL . rpc . enums . HMILevel . HMI_FULL && prevHmiFull ) {
119121 this . _hmiFull = true ;
120122 this . _checkReadyState ( ) ;
121123 }
@@ -125,6 +127,9 @@ class AppClient {
125127 if ( this . _managersReady && this . _hmiFull ) {
126128 const screenManager = this . _sdlManager . getScreenManager ( ) ;
127129 const isRpcAllowed = ( rpc ) => {
130+ if ( ! this . _permissionManager ) {
131+ this . _permissionManager = this . _sdlManager . getPermissionManager ( ) ;
132+ }
128133 return this . _permissionManager &&
129134 this . _permissionManager . isRpcAllowed ( rpc ) ;
130135 } ;
@@ -180,6 +185,25 @@ class AppClient {
180185 screenManager . changeLayout ( new SDL . rpc . structs . TemplateConfiguration ( )
181186 . setTemplate ( SDL . rpc . enums . PredefinedLayout . NON_MEDIA ) ) ;
182187
188+ const choices = [
189+ new SDL . manager . screen . choiceset . ChoiceCell ( 'First Choice Cell' ) ,
190+ new SDL . manager . screen . choiceset . ChoiceCell ( 'Second Choice Cell' ) ,
191+ ] ;
192+ await screenManager . preloadChoices ( choices ) ;
193+
194+ await new Promise ( ( resolve ) => {
195+ const choiceSet = new SDL . manager . screen . choiceset . ChoiceSet ( 'choice' , choices , new SDL . manager . screen . choiceset . ChoiceSetSelectionListener ( )
196+ . setOnChoiceSelected ( ( choiceCell , triggerSource , rowIndex ) => {
197+ console . log ( choiceCell , triggerSource , rowIndex ) ;
198+ resolve ( ) ;
199+ } )
200+ . setOnError ( ( error ) => {
201+ resolve ( ) ;
202+ } ) ) ;
203+
204+ screenManager . presentChoiceSet ( choiceSet ) ;
205+ } ) ;
206+
183207 const art1 = new SDL . manager . file . filetypes . SdlArtwork ( 'logo' , SDL . rpc . enums . FileType . GRAPHIC_PNG )
184208 . setFilePath ( this . _filePath ) ;
185209
@@ -209,6 +233,35 @@ class AppClient {
209233 await this . _sleep ( 2000 ) ;
210234 softButtonObjects [ 0 ] . transitionToNextState ( ) ;
211235 await this . _sleep ( 2000 ) ;
236+
237+ const alertState = new SDL . manager . screen . utils . SoftButtonState ( 'EXIT' , 'exit app' , null ) ;
238+ const alertState2 = new SDL . manager . screen . utils . SoftButtonState ( 'DISMISS' , 'dismiss alert' , null ) ;
239+
240+ const alertView = new SDL . manager . screen . utils . AlertView ( )
241+ . setText ( 'Exit the Application?' )
242+ . setTimeout ( 3000 )
243+ . setSoftButtons ( [
244+ new SDL . manager . screen . utils . SoftButtonObject ( 'Exit' , [ alertState ] , 'EXIT' , async ( id , rpc ) => {
245+ if ( rpc instanceof SDL . rpc . messages . OnButtonPress ) {
246+ // tear down the app
247+ await this . _sdlManager . sendRpcResolve ( new SDL . rpc . messages . UnregisterAppInterface ( ) ) ;
248+
249+ this . _sdlManager . dispose ( ) ;
250+ }
251+ } ) ,
252+ new SDL . manager . screen . utils . SoftButtonObject ( 'Dismiss' , [ alertState2 ] , 'DISMISS' , ( id , rpc ) => {
253+ if ( rpc instanceof SDL . rpc . messages . OnButtonPress ) {
254+ console . log ( 'Alert button pressed!' ) ;
255+ }
256+ } ) ,
257+ ] ) ;
258+
259+ const alertCompletionListener = new SDL . manager . screen . utils . AlertCompletionListener ( )
260+ . setOnComplete ( ( success , tryAgainTime ) => {
261+ console . log ( `Alert presented ${ ( success ) ? 'successfully' : 'unsuccessfully' } ` ) ;
262+ } ) ;
263+
264+ screenManager . presentAlert ( alertView , alertCompletionListener ) ;
212265 }
213266 }
214267
0 commit comments