package org.bbssh.ui.screens; import net.rim.device.api.system.Sensor; import net.rim.device.api.system.SensorListener; import net.rim.device.api.ui.Field; import net.rim.device.api.ui.UiApplication; import net.rim.device.api.ui.component.StandardTitleBar; import net.rim.device.api.ui.input.InputSettings; import net.rim.device.api.ui.input.NavigationDeviceSettings; import net.rim.device.api.ui.input.TouchscreenSettings; import org.bbssh.BBSSHApp; import org.bbssh.exceptions.FontNotFoundException; import org.bbssh.model.SettingsManager; import org.bbssh.net.ConnectionHelper; import org.bbssh.platform.PlatformServicesProvider; import org.bbssh.session.RemoteSessionInstance; import org.bbssh.session.SessionManager; public class TerminalScreen_60 extends TerminalScreen_47 implements SensorListener { public TerminalScreen_60() { // Now set up the title bar if the user wants it if (PlatformServicesProvider.getInstance().isEnhancedTitlebarSupported() && SettingsManager.getSettings().isTitlebarDisplayEnabled()) { StandardTitleBar tb = new StandardTitleBar() .addClock() .addSignalIndicator() // seems this is required in order to do WIFI_VISIBILITY .addNotifications(); tb.setPropertyValue(StandardTitleBar.PROPERTY_BATTERY_VISIBILITY, StandardTitleBar.BATTERY_VISIBLE_ALWAYS); // Display connectivity icon for the connection type we're using. getOverlayManager().setTitleBar(tb); InputSettings ts = TouchscreenSettings.createEmptySet(); InputSettings ns = NavigationDeviceSettings.createEmptySet(); ns.set(NavigationDeviceSettings.DETECT_SWIPE, 1); ts.set(TouchscreenSettings.DETECT_PINCH, 1); ts.set(TouchscreenSettings.DETECT_HOVER, 1); addInputSettings(ns); addInputSettings(ts); Sensor.addListener(UiApplication.getUiApplication(), this, Sensor.SLIDE); } } public void attachSession(RemoteSessionInstance rsi) throws FontNotFoundException { super.attachSession(rsi); Field tb = getOverlayManager().getTitleBar(); if (tb instanceof StandardTitleBar) { StandardTitleBar st = (StandardTitleBar) tb; st.removeTitle(); // @todo also add stats, and or conn state? st.addTitle(rsi.state.settings.getName()); if (rsi.session.isWifiOverrideConnection() || rsi.state.settings.getConnectionType() == ConnectionHelper.CONNECTION_TYPE_WIFI) { st.setPropertyValue(StandardTitleBar.PROPERTY_WIFI_VISIBILITY, StandardTitleBar.PROPERTY_VALUE_ON); st.setPropertyValue(StandardTitleBar.PROPERTY_CELLULAR_VISIBILITY, StandardTitleBar.PROPERTY_VALUE_OFF); } else { st.setPropertyValue(StandardTitleBar.PROPERTY_WIFI_VISIBILITY, StandardTitleBar.PROPERTY_VALUE_OFF); st.setPropertyValue(StandardTitleBar.PROPERTY_CELLULAR_VISIBILITY, StandardTitleBar.PROPERTY_VALUE_ON); } } } public void onSensorUpdate(int sensorId, int update) { if (!BBSSHApp.inst().isForeground()) return; if (sensorId == Sensor.SLIDE) { SessionManager mgr = SessionManager.getInstance(); if (!mgr.getTerminalScreen().isDisplayed()) return; if (update == Sensor.STATE_SLIDE_CLOSED) { if (mgr.activeSession != null) { mgr.activeSession.state.setArtificialStatus(0); invalidateStatusIcons(); } // Treat this as user-requested so that we properly resize the display. if (SettingsManager.getSettings().getShowKeyboardOnSliderClose()) showVirtualKeyboard(true); } else { hideVirtualKeyboard(); } } } public boolean onClose() { Sensor.removeListener(UiApplication.getUiApplication(), this); return super.onClose(); } }