Separate a adjustLcdGeometry function according to skin type.
Signed-off-by: GiWoong Kim <giwoong.kim@samsung.com>
import org.eclipse.swt.graphics.GC;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.graphics.RGB;
-import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Canvas;
-import org.eclipse.swt.widgets.Decorations;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Listener;
private MouseWheelListener canvasMouseWheelListener;
private KeyListener canvasKeyListener;
private MenuDetectListener canvasMenuDetectListener;
+ private FocusListener canvasFocusListener;
private LinkedList<KeyEventData> pressedKeyEventList;
private int pressedHWKeyCode;
shell.addPaintListener(shellPaintListener);
}
- FocusListener shellFocusListener = new FocusListener() {
- @Override
- public void focusGained(FocusEvent event) {
- logger.info("gain focus");
- }
-
- public void focusLost(FocusEvent event) {
- logger.info("lost focus");
-
- /* key event compensation */
- if (pressedKeyEventList.isEmpty() == false) {
- for (KeyEventData data : pressedKeyEventList) {
- KeyEventData keyEventData = new KeyEventData(
- KeyEventType.RELEASED.value(), data.keycode,
- data.stateMask, data.keyLocation);
- communicator.sendToQEMU(SendCommand.SEND_KEY_EVENT, keyEventData);
-
- logger.info("auto release : keycode=" + keyEventData.keycode +
- ", stateMask=" + keyEventData.stateMask +
- ", keyLocation=" + keyEventData.keyLocation);
- }
- }
-
- pressedKeyEventList.clear();
- }
- };
-
- lcdCanvas.addFocusListener(shellFocusListener);
-
shellMouseTrackListener = new MouseTrackAdapter() {
@Override
public void mouseExit( MouseEvent e ) {
}
- private void addCanvasListener( final Shell shell, final Canvas canvas ) {
-
+ private void addCanvasListener(final Shell shell, final Canvas canvas) {
+ /* menu */
canvasMenuDetectListener = new MenuDetectListener() {
@Override
public void menuDetected(MenuDetectEvent e) {
};
// remove 'input method' menu item ( avoid bug )
- canvas.addMenuDetectListener( canvasMenuDetectListener );
+ canvas.addMenuDetectListener(canvasMenuDetectListener);
+
+ /* focus */
+ canvasFocusListener = new FocusListener() {
+ @Override
+ public void focusGained(FocusEvent event) {
+ logger.info("gain focus");
+ }
+
+ public void focusLost(FocusEvent event) {
+ logger.info("lost focus");
+
+ /* key event compensation */
+ if (pressedKeyEventList.isEmpty() == false) {
+ for (KeyEventData data : pressedKeyEventList) {
+ KeyEventData keyEventData = new KeyEventData(
+ KeyEventType.RELEASED.value(), data.keycode,
+ data.stateMask, data.keyLocation);
+ communicator.sendToQEMU(SendCommand.SEND_KEY_EVENT, keyEventData);
+
+ logger.info("auto release : keycode=" + keyEventData.keycode +
+ ", stateMask=" + keyEventData.stateMask +
+ ", keyLocation=" + keyEventData.keyLocation);
+ }
+ }
+
+ pressedKeyEventList.clear();
+ }
+ };
+
+ lcdCanvas.addFocusListener(canvasFocusListener);
/* mouse event */
/*canvasDragDetectListener = new DragDetectListener() {
}
private void removeCanvasListeners() {
-
// if ( null != canvasDragDetectListener ) {
// lcdCanvas.removeDragDetectListener( canvasDragDetectListener );
// }
- if ( null != canvasMouseMoveListener ) {
- lcdCanvas.removeMouseMoveListener( canvasMouseMoveListener );
+ if (null != canvasMouseMoveListener) {
+ lcdCanvas.removeMouseMoveListener(canvasMouseMoveListener);
}
- if ( null != canvasMouseListener ) {
- lcdCanvas.removeMouseListener( canvasMouseListener );
+
+ if (null != canvasMouseListener) {
+ lcdCanvas.removeMouseListener(canvasMouseListener);
}
- if ( null != canvasKeyListener ) {
- lcdCanvas.removeKeyListener( canvasKeyListener );
+
+ if (null != canvasKeyListener) {
+ lcdCanvas.removeKeyListener(canvasKeyListener);
}
- if ( null != canvasMenuDetectListener ) {
- lcdCanvas.removeMenuDetectListener( canvasMenuDetectListener );
+
+ if (null != canvasMenuDetectListener) {
+ lcdCanvas.removeMenuDetectListener(canvasMenuDetectListener);
}
- if ( null != canvasMouseWheelListener ) {
- lcdCanvas.removeMouseWheelListener( canvasMouseWheelListener );
+
+ if (null != canvasFocusListener) {
+ lcdCanvas.removeFocusListener(canvasFocusListener);
}
+ if (null != canvasMouseWheelListener) {
+ lcdCanvas.removeMouseWheelListener(canvasMouseWheelListener);
+ }
}
private Field getOSField( String field ) {
import org.eclipse.swt.widgets.Shell;
import org.tizen.emulator.skin.EmulatorSkinState;
import org.tizen.emulator.skin.comm.ICommunicator.KeyEventType;
+import org.tizen.emulator.skin.comm.ICommunicator.RotationInfo;
import org.tizen.emulator.skin.comm.ICommunicator.SendCommand;
import org.tizen.emulator.skin.comm.sock.SocketCommunicator;
import org.tizen.emulator.skin.comm.sock.data.KeyEventData;
int scale = SkinUtil.getValidScale(config);
short rotationId = EmulatorConfig.DEFAULT_WINDOW_ROTATION;
- composeInternal(lcdCanvas, x, y, scale, rotationId, false);
+ composeInternal(lcdCanvas, x, y, scale, rotationId);
logger.info("resolution : " + currentState.getCurrentResolution() +
", scale : " + scale);
@Override
public void composeInternal(Canvas lcdCanvas,
- int x, int y, int scale, short rotationId, boolean isOnKbd) {
+ int x, int y, int scale, short rotationId) {
//shell.setBackground(shell.getDisplay().getSystemColor(SWT.COLOR_BLACK));
shell.setLocation(x, y);
currentState.setCurrentAngle(SkinRotation.getAngle(rotationId));
/* arrange the lcd */
- Rectangle lcdBounds = SkinUtil.adjustLcdGeometry(lcdCanvas,
+ Rectangle lcdBounds = adjustLcdGeometry(lcdCanvas,
currentState.getCurrentResolutionWidth(),
- currentState.getCurrentResolutionHeight(), scale, rotationId,
- false);
+ currentState.getCurrentResolutionHeight(), scale, rotationId);
if (lcdBounds == null) {
logger.severe("Failed to lcd information for phone shape skin.");
shell.pack();
}
+ @Override
+ public Rectangle adjustLcdGeometry(
+ Canvas lcdCanvas, int resolutionW, int resolutionH,
+ int scale, short rotationId) {
+ Rectangle lcdBounds = new Rectangle(0, 0, 0, 0);
+
+ float convertedScale = SkinUtil.convertScale(scale);
+ RotationInfo rotation = RotationInfo.getValue(rotationId);
+
+ /* resoultion, that is lcd size in general skin mode */
+ if (RotationInfo.LANDSCAPE == rotation ||
+ RotationInfo.REVERSE_LANDSCAPE == rotation) {
+ lcdBounds.width = (int)(resolutionH * convertedScale);
+ lcdBounds.height = (int)(resolutionW * convertedScale);
+ } else {
+ lcdBounds.width = (int)(resolutionW * convertedScale);
+ lcdBounds.height = (int)(resolutionH * convertedScale);
+ }
+
+ return lcdBounds;
+ }
}
package org.tizen.emulator.skin.layout;
+import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.swt.widgets.Canvas;
public interface ISkinComposer {
public abstract Canvas compose();
+
public abstract void composeInternal(Canvas lcdCanvas,
- int x, int y, int scale, short rotationId, boolean isOnKbd);
+ int x, int y, int scale, short rotationId);
+
public abstract void arrangeSkin(int scale, short rotationId);
+
+ public abstract Rectangle adjustLcdGeometry(
+ Canvas lcdCanvas, int resolutionW, int resolutionH,
+ int scale, short rotationId);
}
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.graphics.ImageData;
import org.eclipse.swt.graphics.Rectangle;
-import org.eclipse.swt.layout.FormAttachment;
-import org.eclipse.swt.layout.FormData;
-import org.eclipse.swt.layout.FormLayout;
import org.eclipse.swt.widgets.Canvas;
import org.eclipse.swt.widgets.Shell;
-import org.tizen.emulator.skin.EmulatorSkin;
import org.tizen.emulator.skin.EmulatorSkinState;
import org.tizen.emulator.skin.config.EmulatorConfig;
import org.tizen.emulator.skin.config.EmulatorConfig.ArgsConstants;
import org.tizen.emulator.skin.config.EmulatorConfig.SkinPropertiesConstants;
+import org.tizen.emulator.skin.dbi.LcdType;
+import org.tizen.emulator.skin.dbi.RegionType;
+import org.tizen.emulator.skin.dbi.RotationType;
import org.tizen.emulator.skin.image.ImageRegistry;
import org.tizen.emulator.skin.image.ImageRegistry.IconName;
import org.tizen.emulator.skin.image.ImageRegistry.ImageType;
// has to be portrait mode at first booting time
short rotationId = EmulatorConfig.DEFAULT_WINDOW_ROTATION;
- composeInternal(lcdCanvas, x, y, scale, rotationId, false);
+ composeInternal(lcdCanvas, x, y, scale, rotationId);
logger.info("resolution : " + currentState.getCurrentResolution() +
", scale : " + scale);
@Override
public void composeInternal(Canvas lcdCanvas,
- int x, int y, int scale, short rotationId, boolean isOnKbd) {
+ int x, int y, int scale, short rotationId) {
//shell.setBackground(shell.getDisplay().getSystemColor(SWT.COLOR_BLACK));
shell.setLocation(x, y);
currentState.setCurrentRotationId(rotationId);
currentState.setCurrentAngle(SkinRotation.getAngle(rotationId));
- /* arrange the lcd */
- Rectangle lcdBounds = SkinUtil.adjustLcdGeometry(lcdCanvas,
- currentState.getCurrentResolutionWidth(),
- currentState.getCurrentResolutionHeight(), scale, rotationId,
- true);
-
- if (lcdBounds == null) {
- logger.severe("Failed to lcd information for phone shape skin.");
- SkinUtil.openMessage(shell, null,
- "Failed to read lcd information for phone shape skin.\n" +
- "Check the contents of skin dbi file.",
- SWT.ICON_ERROR, config);
- System.exit(-1);
- }
- logger.info("lcd bounds : " + lcdBounds);
-
/* arrange the skin image */
Image tempImage = null;
Image tempKeyPressedImage = null;
shell.redraw();
shell.pack();
+ /* arrange the lcd */
+ Rectangle lcdBounds = adjustLcdGeometry(lcdCanvas,
+ currentState.getCurrentResolutionWidth(),
+ currentState.getCurrentResolutionHeight(), scale, rotationId);
+
+ if (lcdBounds == null) {
+ logger.severe("Failed to lcd information for phone shape skin.");
+ SkinUtil.openMessage(shell, null,
+ "Failed to read lcd information for phone shape skin.\n" +
+ "Check the contents of skin dbi file.",
+ SWT.ICON_ERROR, config);
+ System.exit(-1);
+ }
+ logger.info("lcd bounds : " + lcdBounds);
+
lcdCanvas.setBounds(lcdBounds);
}
+
+ @Override
+ public Rectangle adjustLcdGeometry(
+ Canvas lcdCanvas, int resolutionW, int resolutionH,
+ int scale, short rotationId) {
+ Rectangle lcdBounds = new Rectangle(0, 0, 0, 0);
+
+ float convertedScale = SkinUtil.convertScale(scale);
+ RotationType rotation = SkinRotation.getRotation(rotationId);
+
+ LcdType lcd = rotation.getLcd(); /* from dbi */
+ if (lcd == null) {
+ return null;
+ }
+
+ RegionType region = lcd.getRegion();
+ if (region == null) {
+ return null;
+ }
+
+ Integer left = region.getLeft();
+ Integer top = region.getTop();
+ Integer width = region.getWidth();
+ Integer height = region.getHeight();
+
+ lcdBounds.x = (int) (left * convertedScale);
+ lcdBounds.y = (int) (top * convertedScale);
+ lcdBounds.width = (int) (width * convertedScale);
+ lcdBounds.height = (int) (height * convertedScale);
+
+ return lcdBounds;
+ }
}
import org.eclipse.swt.graphics.ImageData;
import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.swt.graphics.Region;
-import org.eclipse.swt.layout.FormAttachment;
-import org.eclipse.swt.layout.FormData;
-import org.eclipse.swt.widgets.Canvas;
import org.eclipse.swt.widgets.MessageBox;
import org.eclipse.swt.widgets.Shell;
import org.tizen.emulator.skin.comm.ICommunicator.RotationInfo;
import org.tizen.emulator.skin.config.EmulatorConfig.SkinPropertiesConstants;
import org.tizen.emulator.skin.dbi.EventInfoType;
import org.tizen.emulator.skin.dbi.KeyMapType;
-import org.tizen.emulator.skin.dbi.LcdType;
import org.tizen.emulator.skin.dbi.RegionType;
import org.tizen.emulator.skin.dbi.RotationType;
import org.tizen.emulator.skin.image.ImageRegistry;
return sdbPath;
}
- public static Rectangle adjustLcdGeometry(
- Canvas lcdCanvas, int resolutionW, int resolutionH,
- int scale, short rotationId, boolean isPhoneShape) {
-
- float convertedScale = convertScale(scale);
- Rectangle lcdBounds = new Rectangle(0, 0, 0, 0);
-
- if (isPhoneShape == false) {
- RotationInfo rotation = RotationInfo.getValue(rotationId);
-
- /* resoultion, that is lcd size in general skin mode */
- if (RotationInfo.LANDSCAPE == rotation ||
- RotationInfo.REVERSE_LANDSCAPE == rotation) {
- lcdBounds.width = (int)(resolutionH * convertedScale);
- lcdBounds.height = (int)(resolutionW * convertedScale);
- } else {
- lcdBounds.width = (int)(resolutionW * convertedScale);
- lcdBounds.height = (int)(resolutionH * convertedScale);
- }
- } else {
- RotationType rotation = SkinRotation.getRotation(rotationId);
-
- LcdType lcd = rotation.getLcd(); /* from dbi */
- if (lcd == null) {
- return null;
- }
-
- RegionType region = lcd.getRegion();
- if (region == null) {
- return null;
- }
-
- Integer left = region.getLeft();
- Integer top = region.getTop();
- Integer width = region.getWidth();
- Integer height = region.getHeight();
-
- lcdBounds.x = (int) (left * convertedScale);
- lcdBounds.y = (int) (top * convertedScale);
- lcdBounds.width = (int) (width * convertedScale);
- lcdBounds.height = (int) (height * convertedScale);
- }
-
- return lcdBounds;
- }
-
public static SkinRegion getHardKeyArea( int currentX, int currentY, short rotationId, int scale ) {
float convertedScale = convertScale( scale );