diff options
author | Xavier Ducrohet <xav@android.com> | 2012-11-28 16:38:50 -0800 |
---|---|---|
committer | Xavier Ducrohet <xav@android.com> | 2012-11-29 12:56:09 -0800 |
commit | d09b8a2d6ce570cc81ec6678b07f40541f4657f4 (patch) | |
tree | 08de690cd224142213c60321419dabd699ad97a9 /sdk_common/src/com/android/ide | |
parent | 79a4aff85957ef993e46dbbbe1f1ae0bab632d90 (diff) | |
download | sdk-d09b8a2d6ce570cc81ec6678b07f40541f4657f4.zip sdk-d09b8a2d6ce570cc81ec6678b07f40541f4657f4.tar.gz sdk-d09b8a2d6ce570cc81ec6678b07f40541f4657f4.tar.bz2 |
Add support for layout dir qualifiers.
Change-Id: I6da728d079975fa19f1ae816fa585031a9c6fe75
Diffstat (limited to 'sdk_common/src/com/android/ide')
2 files changed, 104 insertions, 17 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; + } +} |