<rotation name="Landscape">
<lcd id="0">
</lcd>
- <keyMapList>
- <keyMap>
- <eventInfo>
- <keyCode>101</keyCode>
- <keyName>Home</keyName>
- </eventInfo>
- </keyMap>
- <keyMap>
- <eventInfo>
- <keyCode>103</keyCode>
- <keyName>Power</keyName>
- </eventInfo>
- </keyMap>
- <keyMap>
- <eventInfo>
- <keyCode>115</keyCode>
- <keyName>Volume up</keyName>
- </eventInfo>
- </keyMap>
- <keyMap>
- <eventInfo>
- <keyCode>114</keyCode>
- <keyName>Volume down</keyName>
- </eventInfo>
- </keyMap>
- </keyMapList>
</rotation>
<rotation name="Reverse Portrait">
<lcd id="0">
</lcd>
- <keyMapList>
- <keyMap>
- <eventInfo>
- <keyCode>101</keyCode>
- <keyName>Home</keyName>
- </eventInfo>
- </keyMap>
- <keyMap>
- <eventInfo>
- <keyCode>103</keyCode>
- <keyName>Power</keyName>
- </eventInfo>
- </keyMap>
- <keyMap>
- <eventInfo>
- <keyCode>115</keyCode>
- <keyName>Volume up</keyName>
- </eventInfo>
- </keyMap>
- <keyMap>
- <eventInfo>
- <keyCode>114</keyCode>
- <keyName>Volume down</keyName>
- </eventInfo>
- </keyMap>
- </keyMapList>
</rotation>
<rotation name="Reverse Landscape">
<lcd id="0">
</lcd>
- <keyMapList>
- <keyMap>
- <eventInfo>
- <keyCode>101</keyCode>
- <keyName>Home</keyName>
- </eventInfo>
- </keyMap>
- <keyMap>
- <eventInfo>
- <keyCode>103</keyCode>
- <keyName>Power</keyName>
- </eventInfo>
- </keyMap>
- <keyMap>
- <eventInfo>
- <keyCode>115</keyCode>
- <keyName>Volume up</keyName>
- </eventInfo>
- </keyMap>
- <keyMap>
- <eventInfo>
- <keyCode>114</keyCode>
- <keyName>Volume down</keyName>
- </eventInfo>
- </keyMap>
- </keyMapList>
</rotation>
</rotations>
<colors>
private EmulatorConfig config;
private Shell shell;
private Canvas lcdCanvas;
+ private Decorations decoration;
private EmulatorSkinState currentState;
private ImageRegistry imageRegistry;
SocketCommunicator communicator) {
this.config = config;
this.shell = shell;
+ this.decoration = null;
this.currentState = currentState;
this.imageRegistry = imageRegistry;
this.communicator = communicator;
dataCanvas.height = lcdBounds.height;
lcdCanvas.setLayoutData(dataCanvas);
- Decorations decoration = new Decorations(shell, SWT.BORDER);
- decoration.setLayout(new GridLayout(1, true));
+ if (decoration != null) {
+ decoration.dispose();
+ decoration = null;
+ }
+
+ shell.pack();
- RotationType rotation =
- SkinRotation.getRotation(currentState.getCurrentRotationId());
- List<KeyMapType> keyMapList = rotation.getKeyMapList().getKeyMap();
+ List<KeyMapType> keyMapList =
+ SkinUtil.getHWKeyMapList(currentState.getCurrentRotationId());
- // TODO: function
if (keyMapList != null && keyMapList.isEmpty() == false) {
+ decoration = new Decorations(shell, SWT.BORDER);
+ decoration.setLayout(new GridLayout(1, true));
+
for (KeyMapType keyEntry : keyMapList) {
Button hardKeyButton = new Button(decoration, SWT.FLAT);
hardKeyButton.setText(keyEntry.getEventInfo().getKeyName());
}
});
}
+
+ FormData dataDecoration = new FormData();
+ dataDecoration.left = new FormAttachment(lcdCanvas, 0);
+ dataDecoration.top = new FormAttachment(0, 0);
+ decoration.setLayoutData(dataDecoration);
}
- FormData dataDecoration = new FormData();
- dataDecoration.left = new FormAttachment(lcdCanvas, 0);
- dataDecoration.top = new FormAttachment(0, 0);
- decoration.setLayoutData(dataDecoration);
-
shell.redraw();
shell.pack();
}
import org.tizen.emulator.skin.config.EmulatorConfig.ArgsConstants;
import org.tizen.emulator.skin.config.EmulatorConfig.SkinPropertiesConstants;
import org.tizen.emulator.skin.dbi.EventInfoType;
+import org.tizen.emulator.skin.dbi.KeyMapListType;
import org.tizen.emulator.skin.dbi.KeyMapType;
import org.tizen.emulator.skin.dbi.RegionType;
import org.tizen.emulator.skin.dbi.RotationType;
return sdbPath;
}
+ public static List<KeyMapType> getHWKeyMapList(short rotationId) {
+ RotationType rotation = SkinRotation.getRotation(rotationId);
+ if (rotation == null) {
+ return null;
+ }
+
+ KeyMapListType list = rotation.getKeyMapList();
+ if (list == null) {
+ /* try to using a KeyMapList of portrait */
+ rotation = SkinRotation.getRotation(RotationInfo.PORTRAIT.id());
+ if (rotation == null) {
+ return null;
+ }
+
+ list = rotation.getKeyMapList();
+ if (list == null) {
+ return null;
+ }
+ }
+
+ return list.getKeyMap();
+ }
+
public static HWKey getHWKey(
int currentX, int currentY, short rotationId, int scale) {
float convertedScale = convertScale(scale);
- RotationType rotation = SkinRotation.getRotation(rotationId);
- List<KeyMapType> keyMapList = rotation.getKeyMapList().getKeyMap();
+ List<KeyMapType> keyMapList = getHWKeyMapList(rotationId);
+ if (keyMapList == null) {
+ return null;
+ }
for (KeyMapType keyMap : keyMapList) {
RegionType region = keyMap.getRegion();