package org.bbssh.ui.screens;
import net.rim.blackberry.api.homescreen.HomeScreen;
import net.rim.blackberry.api.homescreen.Shortcut;
import net.rim.blackberry.api.homescreen.ShortcutProvider;
import net.rim.device.api.ui.Field;
import net.rim.device.api.ui.FieldChangeListener;
import net.rim.device.api.ui.Manager;
import net.rim.device.api.ui.MenuItem;
import net.rim.device.api.ui.UiApplication;
import net.rim.device.api.ui.component.Menu;
import net.rim.device.api.ui.component.StandardTitleBar;
import net.rim.device.api.ui.container.PopupScreen;
import net.rim.device.api.ui.container.VerticalFieldManager;
import net.rim.device.api.ui.picker.HomeScreenLocationPicker;
import org.bbssh.i18n.BBSSHResource;
import org.bbssh.model.ConnectionProperties;
import org.bbssh.model.SettingsManager;
import org.bbssh.platform.PlatformServicesProvider;
import org.bbssh.session.RemoteSessionInstance;
import org.bbssh.session.SessionManager;
import org.bbssh.ui.components.OKCancelControl;
import org.bbssh.util.Tools;
public class PrimaryScreen_60 extends PrimaryScreen_47 {
/** Menu to add item as shortcut */
private final MenuItem addShortcutMenu = new MenuItem(res, BBSSHResource.MENU_SHORTCUT_ADD, 0x00020000, 1) {
public void run() {
ConnectionProperties prop = getPropertiesForCurrentSelection();
if (prop != null) {
addShortcut(prop);
}
}
};
private final MenuItem removeShortcutMenu = new MenuItem(res, BBSSHResource.MENU_SHORTCUT_REMOVE, 0x00020000, 2) {
public void run() {
ConnectionProperties prop = getPropertiesForCurrentSelection();
if (prop != null) {
removeShortcut(prop);
}
}
};
public PrimaryScreen_60() {
super();
if (PlatformServicesProvider.getInstance().isEnhancedTitlebarSupported()
&& SettingsManager.getSettings().isTitlebarDisplayEnabled()) {
StandardTitleBar tb = new StandardTitleBar().addClock().addSignalIndicator().addNotifications();
tb.setPropertyValue(StandardTitleBar.PROPERTY_BATTERY_VISIBILITY, StandardTitleBar.BATTERY_VISIBLE_ALWAYS);
tb.setPropertyValue(StandardTitleBar.PROPERTY_WIFI_VISIBILITY, StandardTitleBar.PROPERTY_VALUE_ON);
tb.setPropertyValue(StandardTitleBar.PROPERTY_CELLULAR_VISIBILITY, StandardTitleBar.PROPERTY_VALUE_OFF);
setTitleBar(tb);
}
}
protected void addAndRefresh(ConnectionProperties prop) {
super.addAndRefresh(prop);
Shortcut sc = HomeScreen.getShortcut(prop.getUIDAsString());
if (sc != null) {
sc.setDescription(prop.getName());
}
}
protected void removeShortcut(ConnectionProperties prop) {
super.removeShortcut(prop);
String id = prop.getUIDAsString();
if (HomeScreen.doesShortcutExist(id)) {
HomeScreen.removeShortcut(id);
}
}
private static class LocationPickerPopup extends PopupScreen implements FieldChangeListener {
OKCancelControl okcancel = new OKCancelControl();
HomeScreenLocationPicker pick = HomeScreenLocationPicker.create();
private boolean canceled;
public LocationPickerPopup() {
super(new VerticalFieldManager(Manager.VERTICAL_SCROLL | Manager.VERTICAL_SCROLLBAR));
add(pick);
add(okcancel);
okcancel.setChangeListener(this);
}
public void fieldChanged(Field field, int context) {
if (field == okcancel) {
if (context == OKCancelControl.CONTEXT_OK_PRESS) {
canceled = false;
close();
} else if (context == OKCancelControl.CONTEXT_CANCEL_PRESS) {
canceled = true;
close();
}
}
}
}
private void addShortcut(ConnectionProperties prop) {
String id = String.valueOf(prop.getUID());
LocationPickerPopup pop = new LocationPickerPopup();
UiApplication.getUiApplication().pushModalScreen(pop);
if (pop.canceled) {
return;
}
Shortcut sc = ShortcutProvider.createShortcut(prop.getName(), id, 0);
sc.setIsEditable(true);
sc.setIsFavourite(pop.pick.getIsFavourite());
RemoteSessionInstance rsi = SessionManager.getInstance().getFirstConnectedSession(prop);
if (rsi == null || !rsi.isConnected()) {
sc.setIcon(Tools.loadEncodedImage("shortcut.png"));
} else {
sc.setIcon(Tools.loadEncodedImage("shortcut-connected.png"));
}
HomeScreen.addShortcut(sc, pop.pick.getLocation());
}
public void makeMenu(Menu menu, int instance) {
super.makeMenu(menu, instance);
ConnectionProperties prop = getPropertiesForCurrentSelection();
if (prop == null)
return;
String id = String.valueOf(prop.getUID());
if (HomeScreen.doesShortcutExist(id)) {
menu.add(removeShortcutMenu);
} else {
menu.add(addShortcutMenu);
}
}
}