Changeset 695


Ignore:
Timestamp:
08/22/10 20:55:33 (18 months ago)
Author:
octorian
Message:

Cleaning up after screen transitions

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/LogicMail_BB50/src/org/logicprobe/LogicMail/ui/ScreenFactoryBB50.java

    r681 r695  
    3333import net.rim.device.api.system.ControlledAccessException; 
    3434import net.rim.device.api.ui.Screen; 
     35import net.rim.device.api.ui.ScreenUiEngineAttachedListener; 
    3536import net.rim.device.api.ui.TransitionContext; 
    3637import net.rim.device.api.ui.Ui; 
     38import net.rim.device.api.ui.UiApplication; 
    3739import net.rim.device.api.ui.UiEngineInstance; 
    3840import net.rim.device.api.ui.VirtualKeyboard; 
     
    8082        uiEngine.setTransition(null, screen, UiEngineInstance.TRIGGER_PUSH, pushAction); 
    8183        uiEngine.setTransition(screen, null, UiEngineInstance.TRIGGER_POP, popAction); 
     84        screen.addScreenUiEngineAttachedListener(uiEngineListener); 
    8285    } 
    8386 
     87    /** 
     88     * Listener to clean up screen transitions after a screen is popped off 
     89     * the display stack. 
     90     */ 
     91    private ScreenUiEngineAttachedListener uiEngineListener = new ScreenUiEngineAttachedListener() { 
     92        public void onScreenUiEngineAttached(final Screen screen, boolean attached) { 
     93            if(!attached) { 
     94                screen.removeScreenUiEngineAttachedListener(this); 
     95                UiApplication.getUiApplication().invokeLater(new Runnable() { 
     96                    public void run() { 
     97                        clearScreenTransition(screen); 
     98                    } 
     99                }); 
     100            } 
     101        } 
     102    }; 
     103     
    84104    public void clearScreenTransition(Screen screen) { 
    85105        UiEngineInstance uiEngine = Ui.getUiEngineInstance(); 
Note: See TracChangeset for help on using the changeset viewer.