Search in sources :

Example 6 with State

use of com.android.sdklib.devices.State in project android by JetBrains.

the class NestedConfigurationTest method test.

public void test() throws Exception {
    VirtualFile file = myFixture.copyFileToProject(TEST_FILE, "res/layout/layout1.xml");
    final AndroidFacet facet = AndroidFacet.getInstance(myModule);
    assertNotNull(facet);
    ConfigurationManager manager = facet.getConfigurationManager();
    assertNotNull(manager);
    assertSame(manager, facet.getConfigurationManager());
    Configuration parent = Configuration.create(manager, file, new FolderConfiguration());
    assertNotNull(parent);
    parent.startBulkEditing();
    parent.setDisplayName("myconfig");
    parent.setTheme("@style/Theme1");
    parent.setNightMode(NightMode.NIGHT);
    parent.setActivity("tes.tpkg.MyActivity1");
    parent.setUiMode(UiMode.TELEVISION);
    IAndroidTarget target = parent.getConfigurationManager().getTarget();
    Device device = parent.getConfigurationManager().getDefaultDevice();
    State deviceState = device != null ? device.getState("Portrait") : null;
    if (target != null) {
        parent.setTarget(target);
    }
    if (device != null) {
        parent.setDevice(device, false);
        assertNotNull(deviceState);
        parent.setDeviceState(deviceState);
    }
    parent.setLocale(Locale.create("en-rUS"));
    parent.finishBulkEditing();
    NestedConfiguration configuration = NestedConfiguration.create(parent);
    // Inherit locale
    assertFalse(configuration.isOverridingLocale());
    parent.setLocale(Locale.create("en-rUS"));
    assertEquals(Locale.create("en-rUS"), configuration.getLocale());
    parent.setLocale(Locale.create("de"));
    assertEquals(Locale.create("de"), configuration.getLocale());
    // Override locale
    configuration.setOverrideLocale(true);
    assertTrue(configuration.isOverridingLocale());
    configuration.setLocale(Locale.create("no"));
    assertEquals(Locale.create("no"), configuration.getLocale());
    parent.setLocale(Locale.create("es"));
    assertEquals(Locale.create("no"), configuration.getLocale());
    // Inherit UI mode
    assertFalse(configuration.isOverridingUiMode());
    parent.setUiMode(UiMode.DESK);
    assertSame(UiMode.DESK, configuration.getUiMode());
    parent.setUiMode(UiMode.APPLIANCE);
    assertSame(UiMode.APPLIANCE, configuration.getUiMode());
    // Override UI mode
    configuration.setOverrideUiMode(true);
    assertTrue(configuration.isOverridingUiMode());
    configuration.setUiMode(UiMode.CAR);
    assertSame(UiMode.CAR, configuration.getUiMode());
    parent.setUiMode(UiMode.DESK);
    assertSame(UiMode.CAR, configuration.getUiMode());
    // Inherit orientation
    assertNotNull(device);
    State portrait = device.getState("Portrait");
    State landscape = device.getState("Landscape");
    assertNotNull(portrait);
    assertNotNull(landscape);
    assertFalse(configuration.isOverridingDeviceState());
    assertEquals(ScreenOrientation.PORTRAIT, configuration.getFullConfig().getScreenOrientationQualifier().getValue());
    parent.setDeviceState(landscape);
    assertEquals(ScreenOrientation.LANDSCAPE, configuration.getFullConfig().getScreenOrientationQualifier().getValue());
    assertEquals(landscape, configuration.getDeviceState());
    parent.setDeviceState(portrait);
    assertEquals(portrait, configuration.getDeviceState());
    // Override orientation
    configuration.setOverrideDeviceState(true);
    assertTrue(configuration.isOverridingDeviceState());
    configuration.setDeviceState(landscape);
    assertEquals(landscape, configuration.getDeviceState());
    parent.setDeviceState(landscape);
    parent.setDeviceState(portrait);
    assertEquals(landscape, configuration.getDeviceState());
// TODO: Inherit device -- with overridden state
// TODO: Test listener; I should NOT fire when a parent changes an attribute I don't
// care about!!
// Also test that calling the setters are firing events, clear resources, etc
// In order for this to work, I would need to have listeners attach and detach... How
// can I do this?
}
Also used : VirtualFile(com.intellij.openapi.vfs.VirtualFile) FolderConfiguration(com.android.ide.common.resources.configuration.FolderConfiguration) Device(com.android.sdklib.devices.Device) State(com.android.sdklib.devices.State) FolderConfiguration(com.android.ide.common.resources.configuration.FolderConfiguration) IAndroidTarget(com.android.sdklib.IAndroidTarget) AndroidFacet(org.jetbrains.android.facet.AndroidFacet)

Example 7 with State

use of com.android.sdklib.devices.State in project android by JetBrains.

the class DeviceSelectionPopup method setConfigurationDevice.

private void setConfigurationDevice(@NotNull Device selectedDevice) {
    final State state = selectedDevice.getDefaultState().deepCopy();
    myConfiguration.setDeviceStateName(state.getName());
    myConfiguration.getConfigurationManager().selectDevice(selectedDevice);
}
Also used : State(com.android.sdklib.devices.State)

Example 8 with State

use of com.android.sdklib.devices.State in project android by JetBrains.

the class CanvasResizeInteraction method end.

@Override
public void end(@SwingCoordinate int x, @SwingCoordinate int y, @InputEventMask int modifiers, boolean canceled) {
    super.end(x, y, modifiers, canceled);
    ScreenView screenView = myDesignSurface.getCurrentScreenView();
    if (screenView == null) {
        return;
    }
    // Set the surface in resize mode so it doesn't try to re-center the screen views all the time
    screenView.getSurface().setResizeMode(false);
    // When disabling the resize mode, add a render handler to call zoomToFit
    screenView.getModel().addListener(new ModelListener() {

        @Override
        public void modelChanged(@NotNull NlModel model) {
        }

        @Override
        public void modelRendered(@NotNull NlModel model) {
            model.removeListener(this);
        }

        @Override
        public void modelChangedOnLayout(@NotNull NlModel model, boolean animate) {
        // Do nothing
        }
    });
    int androidX = Coordinates.getAndroidX(screenView, x);
    int androidY = Coordinates.getAndroidY(screenView, y);
    if (canceled || androidX < 0 || androidY < 0) {
        Configuration configuration = screenView.getConfiguration();
        configuration.setEffectiveDevice(myOriginalDevice, myOriginalDeviceState);
    } else {
        int snapThreshold = Coordinates.getAndroidDimension(screenView, MAX_MATCH_DISTANCE);
        Device deviceToSnap = snapToDevice(androidX, androidY, snapThreshold);
        if (deviceToSnap != null) {
            State deviceState = deviceToSnap.getState(androidX < androidY ? "Portrait" : "Landscape");
            myDesignSurface.getConfiguration().setEffectiveDevice(deviceToSnap, deviceState);
        } else {
            screenView.getModel().overrideConfigurationScreenSize(androidX, androidY);
        }
    }
}
Also used : Configuration(com.android.tools.idea.configurations.Configuration) Device(com.android.sdklib.devices.Device) State(com.android.sdklib.devices.State)

Example 9 with State

use of com.android.sdklib.devices.State in project android by JetBrains.

the class WidgetNavigatorPanel method updateDeviceConfiguration.

/**
   * Update the screen size depending on the orientation.
   * Should be called whenever a change in the orientation occurred
   *
   * @param configuration The current configuration used by the model
   */
private void updateDeviceConfiguration(Configuration configuration) {
    final Device device = configuration.getDevice();
    final State deviceState = configuration.getDeviceState();
    if (device != null && deviceState != null) {
        myDeviceSize = device.getScreenSize(deviceState.getOrientation());
    }
}
Also used : Device(com.android.sdklib.devices.Device) State(com.android.sdklib.devices.State)

Example 10 with State

use of com.android.sdklib.devices.State in project android by JetBrains.

the class ConfigurationTest method test.

public void test() throws Exception {
    final AndroidFacet facet = AndroidFacet.getInstance(myModule);
    assertNotNull(facet);
    ConfigurationManager manager = facet.getConfigurationManager();
    assertNotNull(manager);
    assertSame(manager, facet.getConfigurationManager());
    Configuration configuration = Configuration.create(manager, null, new FolderConfiguration());
    assertNotNull(configuration);
    configuration.startBulkEditing();
    configuration.setDisplayName("myconfig");
    configuration.setTheme("@style/Theme1");
    configuration.setNightMode(NightMode.NIGHT);
    configuration.setActivity("tes.tpkg.MyActivity1");
    configuration.setUiMode(UiMode.TELEVISION);
    IAndroidTarget target = configuration.getConfigurationManager().getTarget();
    Device device = configuration.getConfigurationManager().getDefaultDevice();
    State deviceState = device != null ? device.getState("Portrait") : null;
    if (target != null) {
        configuration.setTarget(target);
    }
    if (device != null) {
        configuration.setDevice(device, false);
        assertNotNull(deviceState);
        configuration.setDeviceState(deviceState);
    }
    configuration.setLocale(Locale.create("en-rUS"));
    configuration.finishBulkEditing();
    assertEquals("myconfig", configuration.getDisplayName());
    assertEquals("@style/Theme1", configuration.getTheme());
    assertEquals(NightMode.NIGHT, configuration.getNightMode());
    assertEquals("tes.tpkg.MyActivity1", configuration.getActivity());
    assertEquals(UiMode.TELEVISION, configuration.getUiMode());
    assertEquals(Locale.create("en-rUS"), configuration.getLocale());
    if (target != null) {
        assertSame(target, configuration.getRealTarget());
    }
    if (device != null) {
        assertSame(device, configuration.getDevice());
        assertNotNull(deviceState);
        assertSame(deviceState, configuration.getDeviceState());
    }
    FolderConfiguration fullConfig = configuration.getFullConfig();
    LocaleQualifier languageQualifier = fullConfig.getLocaleQualifier();
    String configDisplayString = fullConfig.toDisplayString();
    assertNotNull(configDisplayString, languageQualifier);
    assertEquals("en", languageQualifier.getLanguage());
    String region = fullConfig.getLocaleQualifier().getRegion();
    assertNotNull(configDisplayString, region);
    assertEquals("US", region);
    assertEquals(UiMode.TELEVISION, fullConfig.getUiModeQualifier().getValue());
    assertEquals(NightMode.NIGHT, fullConfig.getNightModeQualifier().getValue());
    assertEquals(ScreenOrientation.PORTRAIT, fullConfig.getScreenOrientationQualifier().getValue());
    if (device != null) {
        State landscape = device.getState("Landscape");
        assertNotNull(landscape);
        configuration.setDeviceState(landscape);
        assertEquals(ScreenOrientation.LANDSCAPE, configuration.getFullConfig().getScreenOrientationQualifier().getValue());
    }
    Density density = configuration.getDensity();
    assertEquals(Density.XHIGH, density);
    DensityQualifier qualifier = new DensityQualifier().getNullQualifier();
    configuration.getFullConfig().setDensityQualifier(qualifier);
    density = configuration.getDensity();
    assertEquals(Density.MEDIUM, density);
}
Also used : FolderConfiguration(com.android.ide.common.resources.configuration.FolderConfiguration) Device(com.android.sdklib.devices.Device) State(com.android.sdklib.devices.State) FolderConfiguration(com.android.ide.common.resources.configuration.FolderConfiguration) IAndroidTarget(com.android.sdklib.IAndroidTarget) AndroidFacet(org.jetbrains.android.facet.AndroidFacet) LocaleQualifier(com.android.ide.common.resources.configuration.LocaleQualifier) DensityQualifier(com.android.ide.common.resources.configuration.DensityQualifier)

Aggregations

State (com.android.sdklib.devices.State)30 Device (com.android.sdklib.devices.Device)20 IAndroidTarget (com.android.sdklib.IAndroidTarget)8 Configuration (com.android.tools.idea.configurations.Configuration)7 VirtualFile (com.intellij.openapi.vfs.VirtualFile)7 Nullable (org.jetbrains.annotations.Nullable)7 FolderConfiguration (com.android.ide.common.resources.configuration.FolderConfiguration)6 AndroidFacet (org.jetbrains.android.facet.AndroidFacet)5 NotNull (org.jetbrains.annotations.NotNull)5 Module (com.intellij.openapi.module.Module)4 Screen (com.android.sdklib.devices.Screen)3 Locale (com.android.tools.idea.rendering.Locale)3 NightMode (com.android.resources.NightMode)2 UiMode (com.android.resources.UiMode)2 LocalResourceRepository (com.android.tools.idea.res.LocalResourceRepository)2 PsiFile (com.intellij.psi.PsiFile)2 HardwareConfigHelper (com.android.ide.common.rendering.HardwareConfigHelper)1 LayoutLibrary (com.android.ide.common.rendering.LayoutLibrary)1 HardwareConfig (com.android.ide.common.rendering.api.HardwareConfig)1 DensityQualifier (com.android.ide.common.resources.configuration.DensityQualifier)1