skin: simplify the dbi file of general skin
authorgiwoong.kim <giwoong.kim@samsung.com>
Mon, 19 Nov 2012 07:34:48 +0000 (16:34 +0900)
committergiwoong.kim <giwoong.kim@samsung.com>
Mon, 19 Nov 2012 07:34:48 +0000 (16:34 +0900)
In dbi file of general skin, the Emulator uses portrait
HW keys if the HW keys are not defined on non-portrait format.

Signed-off-by: GiWoong Kim <giwoong.kim@samsung.com>
tizen/src/skin/client/skins/emul-general/default.dbi
tizen/src/skin/client/src/org/tizen/emulator/skin/layout/GeneralPurposeSkinComposer.java
tizen/src/skin/client/src/org/tizen/emulator/skin/util/SkinUtil.java

index 437bab3f4f245f7118b0d842ab4a84f34354bb26..6522418d6fadc6866d0fbb2477b1ef3b1750f0f6 100644 (file)
         <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>
index daa8024be54b3f0b1dc14d40dfa8f3389ce9d6d9..c649c094fbb0c9c9fd870ef3a42dd0e8b42040cc 100644 (file)
@@ -69,6 +69,7 @@ public class GeneralPurposeSkinComposer implements ISkinComposer {
        private EmulatorConfig config;
        private Shell shell;
        private Canvas lcdCanvas;
+       private Decorations decoration;
        private EmulatorSkinState currentState;
 
        private ImageRegistry imageRegistry;
@@ -79,6 +80,7 @@ public class GeneralPurposeSkinComposer implements ISkinComposer {
                        SocketCommunicator communicator) {
                this.config = config;
                this.shell = shell;
+               this.decoration = null;
                this.currentState = currentState;
                this.imageRegistry = imageRegistry;
                this.communicator = communicator;
@@ -159,15 +161,20 @@ public class GeneralPurposeSkinComposer implements ISkinComposer {
                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());
@@ -197,13 +204,13 @@ public class GeneralPurposeSkinComposer implements ISkinComposer {
                                        }
                                });
                        }
+
+                       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();
        }
index b68b3ab950f5e98674bb23d354109882f3e825b4..5b96e6c3af02ca592bf9b0052a7f6448a6f33192 100644 (file)
@@ -44,6 +44,7 @@ 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.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;
@@ -107,12 +108,37 @@ public class SkinUtil {
                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();