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?
}
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);
}
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);
}
}
}
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());
}
}
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);
}
Aggregations