338 views
in GUI Development by
Hello, I have a requirement to load a customizable idle screen for our application. Depending upon a setting that can be changed at run-time the idle screen will need to change. So, I have different Core::Groups defined for each of the idle screens the user is capable to selecting from. And the Idle screen is blank and on startup ofcourse I read the setting and BeginModal() and Add() the selected screen (Core::Group). But, when the selection for the idle dialog is changed, when the user returns to the Idle screen. I have the currently selected idle modal dialog remove() and EndModal() on a listener slot method that is activated from the UpdateViewState() of that idle screen. So far so good! But, when the root dialog is now reached, I have the UpdateViewState() of that dialog checking to see if the idle selection has changed and to create the new idle dialog (Core::Group) if it has. But, the UpdateViewState() is never called. It's called once upon application start with aState = focused but it doesn't get called anymore after all the modals are pop-ed off. I've tried overriding ObtainFocus(), HasViewState() but no luck there either. Do you have any recommendations for this scenario? What function can I override to know when there's no other dialog on top of the root dialog. Thank you!

1 Answer

0 votes
by

Hi,

first at all, I'm not really sure to have understood your application. I suppose, the problem is releated to UpdateViewState() used in your case to show/hide other screen. This is not the right approach. UpdateViewState()should take care of the state of the affected component only. Similarly, the method ObtainFocus() takes care of the state adaptation after the focus has been changed. Usinging ObtainFocus() to activate/deactivate a component will interfer with the actual ObtainFocus() operation.

I think, the application itself has to take care of the transitions between the screens. 

Best regards

Paul Banach

Embedded Wizard Website | Privacy Policy | Imprint

...