ResConfigFlags: reduced field sizes, added constructor using loose values, removed some old code.

This commit is contained in:
Ryszard Wiśniewski 2010-03-25 10:26:59 +01:00
parent 4dbfecc003
commit 4e20bfaa79

View File

@ -24,33 +24,25 @@ import brut.androlib.res.jni.JniConfig;
* @author Ryszard Wiśniewski <brut.alll@gmail.com> * @author Ryszard Wiśniewski <brut.alll@gmail.com>
*/ */
public class ResConfigFlags { public class ResConfigFlags {
public final int mcc; public final short mcc;
public final int mnc; public final short mnc;
public final char[] language; public final char[] language;
public final char[] country; public final char[] country;
// public final Orientation orientation; public final byte orientation;
// public final Touchscreen touchscreen; public final byte touchscreen;
public final int orientation; public final short density;
public final int touchscreen;
public final int density;
// public final Keyboard keyboard; public final byte keyboard;
// public final Navigation navigation; public final byte navigation;
// public final Keys keys; public final byte inputFlags;
// public final Nav nav;
public final int keyboard;
public final int navigation;
public final int inputFlags;
public final int screenWidth; public final short screenWidth;
public final int screenHeight; public final short screenHeight;
// public final ScreenSize screenSize; public final byte screenLayout;
// public final ScreenLong screenLong;
public final int screenLayout;
public final int sdkVersion; public final short sdkVersion;
private final String mQualifiers; private final String mQualifiers;
@ -72,51 +64,43 @@ public class ResConfigFlags {
mQualifiers = ""; mQualifiers = "";
} }
public ResConfigFlags(JniConfig cfg) throws AndrolibException { public ResConfigFlags(JniConfig cfg) {
// if (cfg.mcc == 0 && mnc != 0) { this(
// throw new AndrolibException(String.format( (short) cfg.mcc,
// "Invalid IMSI: mcc=%3d, mnc=%3d", mcc, mnc)); (short) cfg.mnc,
// } cfg.language,
mcc = cfg.mcc; cfg.country,
mnc = cfg.mnc; (byte) cfg.orientation,
(byte) cfg.touchscreen,
// if (cfg.language.length == 0 && cfg.country.length != 0) { (short) cfg.density,
// throw new AndrolibException(String.format( (byte) cfg.keyboard,
// "Invalid local: language=%s, country=%s", (byte) cfg.navigation,
// cfg.language, cfg.country)); (byte) cfg.inputFlags,
// } (short) cfg.screenWidth,
language = cfg.language; (short) cfg.screenHeight,
country = cfg.country; (byte) cfg.screenLayout,
// (short) cfg.sdkVersion
// switch (cfg.orientation) { );
// case ORIENTATION_ANY: }
// orientation = Orientation.ANY;
// break;
// case ORIENTATION_LAND:
// orientation = Orientation.LAND;
// break;
// case ORIENTATION_PORT:
// orientation = Orientation.PORT;
// break;
// case ORIENTATION_SQUARE:
// orientation = Orientation.SQUARE;
// break;
// default:
// throw new AndrolibException(String.format(
// "Invalid orientation: %d", cfg.orientation));
// }
orientation = cfg.orientation;
touchscreen = cfg.touchscreen;
density = cfg.density;
keyboard = cfg.keyboard;
navigation = cfg.navigation;
inputFlags = cfg.inputFlags;
screenWidth = cfg.screenWidth;
screenHeight = cfg.screenHeight;
screenLayout = cfg.screenLayout;
sdkVersion = cfg.sdkVersion;
public ResConfigFlags(short mcc, short mnc, char[] language, char[] country,
byte orientation, byte touchscreen, short density, byte keyboard,
byte navigation, byte inputFlags, short screenWidth,
short screenHeight, byte screenLayout, short sdkVersion) {
this.mcc = mcc;
this.mnc = mnc;
this.language = language;
this.country = country;
this.orientation = orientation;
this.touchscreen = touchscreen;
this.density = density;
this.keyboard = keyboard;
this.navigation = navigation;
this.inputFlags = inputFlags;
this.screenWidth = screenWidth;
this.screenHeight = screenHeight;
this.screenLayout = screenLayout;
this.sdkVersion = sdkVersion;
mQualifiers = generateQualifiers(); mQualifiers = generateQualifiers();
} }
@ -282,61 +266,52 @@ public class ResConfigFlags {
return hash; return hash;
} }
// public enum Orientation {ANY, PORT, LAND, SQUARE} public final static byte ORIENTATION_ANY = 0;
// public enum Touchscreen {ANY, NOTOUCH, STYLUS, FINGER} public final static byte ORIENTATION_PORT = 1;
// public enum Keyboard {ANY, NOKEYS, QWERTY, KEY12} public final static byte ORIENTATION_LAND = 2;
// public enum Navigation {ANY, NONAV, DPAD, TRACKBALL, WHEEL} public final static byte ORIENTATION_SQUARE = 3;
// public enum Keys {ANY, EXPOSED, HIDDEN, SOFT}
// public enum Nav {ANY, EXPOSED, HIDDEN}
// public enum ScreenSize {ANY, SMALL, NORMAL, LARGE}
// public enum ScreenLong {ANY, LONG, NOTLONG}
public final static int ORIENTATION_ANY = 0x0000; public final static byte TOUCHSCREEN_ANY = 0;
public final static int ORIENTATION_PORT = 0x0001; public final static byte TOUCHSCREEN_NOTOUCH = 1;
public final static int ORIENTATION_LAND = 0x0002; public final static byte TOUCHSCREEN_STYLUS = 2;
public final static int ORIENTATION_SQUARE = 0x0003; public final static byte TOUCHSCREEN_FINGER = 3;
public final static int TOUCHSCREEN_ANY = 0x0000; public final static short DENSITY_DEFAULT = 0;
public final static int TOUCHSCREEN_NOTOUCH = 0x0001; public final static short DENSITY_LOW = 120;
public final static int TOUCHSCREEN_STYLUS = 0x0002; public final static short DENSITY_MEDIUM = 160;
public final static int TOUCHSCREEN_FINGER = 0x0003; public final static short DENSITY_HIGH = 240;
public final static short DENSITY_NONE = -1;
public final static int DENSITY_DEFAULT = 0; public final static byte KEYBOARD_ANY = 0;
public final static int DENSITY_LOW = 120; public final static byte KEYBOARD_NOKEYS = 1;
public final static int DENSITY_MEDIUM = 160; public final static byte KEYBOARD_QWERTY = 2;
public final static int DENSITY_HIGH = 240; public final static byte KEYBOARD_12KEY = 3;
public final static int DENSITY_NONE = 0xffff;
public final static int KEYBOARD_ANY = 0x0000; public final static byte NAVIGATION_ANY = 0;
public final static int KEYBOARD_NOKEYS = 0x0001; public final static byte NAVIGATION_NONAV = 1;
public final static int KEYBOARD_QWERTY = 0x0002; public final static byte NAVIGATION_DPAD = 2;
public final static int KEYBOARD_12KEY = 0x0003; public final static byte NAVIGATION_TRACKBALL = 3;
public final static byte NAVIGATION_WHEEL = 4;
public final static int NAVIGATION_ANY = 0x0000; public final static byte MASK_KEYSHIDDEN = 0x3;
public final static int NAVIGATION_NONAV = 0x0001; public final static byte KEYSHIDDEN_ANY = 0x0;
public final static int NAVIGATION_DPAD = 0x0002; public final static byte KEYSHIDDEN_NO = 0x1;
public final static int NAVIGATION_TRACKBALL = 0x0003; public final static byte KEYSHIDDEN_YES = 0x2;
public final static int NAVIGATION_WHEEL = 0x0004; public final static byte KEYSHIDDEN_SOFT = 0x3;
public final static int MASK_KEYSHIDDEN = 0x0003; public final static byte MASK_NAVHIDDEN = 0xc;
public final static int KEYSHIDDEN_ANY = 0x0000; public final static byte NAVHIDDEN_ANY = 0x0;
public final static int KEYSHIDDEN_NO = 0x0001; public final static byte NAVHIDDEN_NO = 0x4;
public final static int KEYSHIDDEN_YES = 0x0002; public final static byte NAVHIDDEN_YES = 0x8;
public final static int KEYSHIDDEN_SOFT = 0x0003;
public final static int MASK_NAVHIDDEN = 0x000c; public final static byte MASK_SCREENSIZE = 0x0f;
public final static int NAVHIDDEN_ANY = 0x0000; public final static byte SCREENSIZE_ANY = 0x00;
public final static int NAVHIDDEN_NO = 0x0004; public final static byte SCREENSIZE_SMALL = 0x01;
public final static int NAVHIDDEN_YES = 0x0008; public final static byte SCREENSIZE_NORMAL = 0x02;
public final static byte SCREENSIZE_LARGE = 0x03;
public final static int MASK_SCREENSIZE = 0x0f; public final static byte MASK_SCREENLONG = 0x30;
public final static int SCREENSIZE_ANY = 0x00; public final static byte SCREENLONG_ANY = 0x00;
public final static int SCREENSIZE_SMALL = 0x01; public final static byte SCREENLONG_NO = 0x10;
public final static int SCREENSIZE_NORMAL = 0x02; public final static byte SCREENLONG_YES = 0x20;
public final static int SCREENSIZE_LARGE = 0x03;
public final static int MASK_SCREENLONG = 0x30;
public final static int SCREENLONG_ANY = 0x00;
public final static int SCREENLONG_NO = 0x10;
public final static int SCREENLONG_YES = 0x20;
} }