aboutsummaryrefslogtreecommitdiffstats
path: root/sdk_common
diff options
context:
space:
mode:
Diffstat (limited to 'sdk_common')
-rw-r--r--sdk_common/src/com/android/ide/common/resources/configuration/FolderConfiguration.java47
-rw-r--r--sdk_common/src/com/android/ide/common/resources/configuration/LayoutDirectionQualifier.java74
-rw-r--r--sdk_common/tests/src/com/android/ide/common/resources/configuration/FolderConfigurationTest.java21
3 files changed, 123 insertions, 19 deletions
diff --git a/sdk_common/src/com/android/ide/common/resources/configuration/FolderConfiguration.java b/sdk_common/src/com/android/ide/common/resources/configuration/FolderConfiguration.java
index a513c1f..fc83359 100644
--- a/sdk_common/src/com/android/ide/common/resources/configuration/FolderConfiguration.java
+++ b/sdk_common/src/com/android/ide/common/resources/configuration/FolderConfiguration.java
@@ -48,23 +48,24 @@ public final class FolderConfiguration implements Comparable<FolderConfiguration
private final static int INDEX_NETWORK_CODE = 1;
private final static int INDEX_LANGUAGE = 2;
private final static int INDEX_REGION = 3;
- private final static int INDEX_SMALLEST_SCREEN_WIDTH = 4;
- private final static int INDEX_SCREEN_WIDTH = 5;
- private final static int INDEX_SCREEN_HEIGHT = 6;
- private final static int INDEX_SCREEN_LAYOUT_SIZE = 7;
- private final static int INDEX_SCREEN_RATIO = 8;
- private final static int INDEX_SCREEN_ORIENTATION = 9;
- private final static int INDEX_UI_MODE = 10;
- private final static int INDEX_NIGHT_MODE = 11;
- private final static int INDEX_PIXEL_DENSITY = 12;
- private final static int INDEX_TOUCH_TYPE = 13;
- private final static int INDEX_KEYBOARD_STATE = 14;
- private final static int INDEX_TEXT_INPUT_METHOD = 15;
- private final static int INDEX_NAVIGATION_STATE = 16;
- private final static int INDEX_NAVIGATION_METHOD = 17;
- private final static int INDEX_SCREEN_DIMENSION = 18;
- private final static int INDEX_VERSION = 19;
- private final static int INDEX_COUNT = 20;
+ private final static int INDEX_LAYOUTDIR = 4;
+ private final static int INDEX_SMALLEST_SCREEN_WIDTH = 5;
+ private final static int INDEX_SCREEN_WIDTH = 6;
+ private final static int INDEX_SCREEN_HEIGHT = 7;
+ private final static int INDEX_SCREEN_LAYOUT_SIZE = 8;
+ private final static int INDEX_SCREEN_RATIO = 9;
+ private final static int INDEX_SCREEN_ORIENTATION = 10;
+ private final static int INDEX_UI_MODE = 11;
+ private final static int INDEX_NIGHT_MODE = 12;
+ private final static int INDEX_PIXEL_DENSITY = 13;
+ private final static int INDEX_TOUCH_TYPE = 14;
+ private final static int INDEX_KEYBOARD_STATE = 15;
+ private final static int INDEX_TEXT_INPUT_METHOD = 16;
+ private final static int INDEX_NAVIGATION_STATE = 17;
+ private final static int INDEX_NAVIGATION_METHOD = 18;
+ private final static int INDEX_SCREEN_DIMENSION = 19;
+ private final static int INDEX_VERSION = 20;
+ private final static int INDEX_COUNT = 21;
/**
* Creates a {@link FolderConfiguration} matching the folder segments.
@@ -267,6 +268,9 @@ public final class FolderConfiguration implements Comparable<FolderConfiguration
} else if (qualifier instanceof RegionQualifier) {
mQualifiers[INDEX_REGION] = qualifier;
+ } else if (qualifier instanceof LayoutDirectionQualifier) {
+ mQualifiers[INDEX_LAYOUTDIR] = qualifier;
+
} else if (qualifier instanceof SmallestScreenWidthQualifier) {
mQualifiers[INDEX_SMALLEST_SCREEN_WIDTH] = qualifier;
@@ -373,6 +377,14 @@ public final class FolderConfiguration implements Comparable<FolderConfiguration
return (RegionQualifier)mQualifiers[INDEX_REGION];
}
+ public void setLayoutDirectionQualifier(LayoutDirectionQualifier qualifier) {
+ mQualifiers[INDEX_LAYOUTDIR] = qualifier;
+ }
+
+ public LayoutDirectionQualifier getLayoutDirectionQualifier() {
+ return (LayoutDirectionQualifier)mQualifiers[INDEX_LAYOUTDIR];
+ }
+
public void setSmallestScreenWidthQualifier(SmallestScreenWidthQualifier qualifier) {
mQualifiers[INDEX_SMALLEST_SCREEN_WIDTH] = qualifier;
}
@@ -891,6 +903,7 @@ public final class FolderConfiguration implements Comparable<FolderConfiguration
mQualifiers[INDEX_NETWORK_CODE] = new NetworkCodeQualifier();
mQualifiers[INDEX_LANGUAGE] = new LanguageQualifier();
mQualifiers[INDEX_REGION] = new RegionQualifier();
+ mQualifiers[INDEX_LAYOUTDIR] = new LayoutDirectionQualifier();
mQualifiers[INDEX_SMALLEST_SCREEN_WIDTH] = new SmallestScreenWidthQualifier();
mQualifiers[INDEX_SCREEN_WIDTH] = new ScreenWidthQualifier();
mQualifiers[INDEX_SCREEN_HEIGHT] = new ScreenHeightQualifier();
diff --git a/sdk_common/src/com/android/ide/common/resources/configuration/LayoutDirectionQualifier.java b/sdk_common/src/com/android/ide/common/resources/configuration/LayoutDirectionQualifier.java
new file mode 100644
index 0000000..48498f0
--- /dev/null
+++ b/sdk_common/src/com/android/ide/common/resources/configuration/LayoutDirectionQualifier.java
@@ -0,0 +1,74 @@
+/*
+ * Copyright (C) 2012 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.ide.common.resources.configuration;
+
+import com.android.resources.LayoutDirection;
+import com.android.resources.ResourceEnum;
+
+/**
+ * Resource Qualifier for layout direction. values can be "ltr", or "rtl"
+ */
+public class LayoutDirectionQualifier extends EnumBasedResourceQualifier {
+
+ public static final String NAME = "Layout Direction";
+
+ private LayoutDirection mValue = null;
+
+
+ public LayoutDirectionQualifier() {
+ }
+
+ public LayoutDirectionQualifier(LayoutDirection value) {
+ mValue = value;
+ }
+
+ public LayoutDirection getValue() {
+ return mValue;
+ }
+
+ @Override
+ ResourceEnum getEnumValue() {
+ return mValue;
+ }
+
+ @Override
+ public String getName() {
+ return NAME;
+ }
+
+ @Override
+ public String getShortName() {
+ return NAME;
+ }
+
+ @Override
+ public int since() {
+ return 17;
+ }
+
+ @Override
+ public boolean checkAndSet(String value, FolderConfiguration config) {
+ LayoutDirection ld = LayoutDirection.getEnum(value);
+ if (ld != null) {
+ LayoutDirectionQualifier qualifier = new LayoutDirectionQualifier(ld);
+ config.setLayoutDirectionQualifier(qualifier);
+ return true;
+ }
+
+ return false;
+ }
+}
diff --git a/sdk_common/tests/src/com/android/ide/common/resources/configuration/FolderConfigurationTest.java b/sdk_common/tests/src/com/android/ide/common/resources/configuration/FolderConfigurationTest.java
index 261f9a8..5f29791 100644
--- a/sdk_common/tests/src/com/android/ide/common/resources/configuration/FolderConfigurationTest.java
+++ b/sdk_common/tests/src/com/android/ide/common/resources/configuration/FolderConfigurationTest.java
@@ -55,12 +55,30 @@ public class FolderConfigurationTest extends TestCase {
public void testVersionResMatch() {
runConfigMatchTest(
"en-rUS-w600dp-h1024dp-large-port-mdpi-finger-nokeys-v12",
- 3,
+ 2,
"",
"large",
"w540dp");
}
+ public void testAddQualifier() {
+ FolderConfiguration defaultConfig = new FolderConfiguration();
+ defaultConfig.createDefault();
+
+ final int count = FolderConfiguration.getQualifierCount();
+ for (int i = 0 ; i < count ; i++) {
+ FolderConfiguration empty = new FolderConfiguration();
+
+ ResourceQualifier q = defaultConfig.getQualifier(i);
+
+ empty.addQualifier(q);
+
+ // check it was added
+ assertNotNull(
+ "addQualifier failed for " + q.getClass().getName(), empty.getQualifier(i));
+ }
+ }
+
// --- helper methods
@@ -90,7 +108,6 @@ public class FolderConfigurationTest extends TestCase {
List<? extends Configurable> list = getConfigurable(configs);
Configurable match = reference.findMatchingConfigurable(list);
- System.out.println(match.toString());
assertEquals(resultIndex, list.indexOf(match));
}