diff -r 6c158198356e -r ae942d28ec0e javauis/eswt_qt/com.nokia.swt.extensions/extensions/org/eclipse/swt/internal/extension/DisplayExtension.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javauis/eswt_qt/com.nokia.swt.extensions/extensions/org/eclipse/swt/internal/extension/DisplayExtension.java Tue Aug 31 15:09:22 2010 +0300 @@ -0,0 +1,132 @@ +/******************************************************************************* + * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Nokia Corporation - initial implementation + *******************************************************************************/ + +package org.eclipse.swt.internal.extension; + +import org.eclipse.swt.internal.qt.OS; +import org.eclipse.swt.widgets.Display; +import org.eclipse.swt.widgets.Internal_PackageSupport; + +public final class DisplayExtension extends Display { + +private static final class VibraRunnable implements Runnable { + private final int duration; + private final Display display; + boolean result; + private VibraRunnable(int duration, Display display) { + this.duration = duration; + this.display = display; + } + + public void run() { + result= OS.MobileDevice_vibration( + Internal_PackageSupport.initializeMobileDevice(display),duration); + + } + } +private static final class FlashBacklightsRunnable implements Runnable { + private final Display display; + private final int duration; + boolean result; + + private FlashBacklightsRunnable(Display display, int duration) { + this.display = display; + this.duration = duration; + } + + public void run() { + result = OS.MobileDevice_flashLights( + Internal_PackageSupport.initializeMobileDevice( + display),duration); + } + } + +/* Image types, same values as MIDP */ +public static final int LIST_ELEMENT = 1; +public static final int CHOICE_GROUP_ELEMENT = 2; +public static final int ALERT = 3; + +public DisplayExtension() { + super(); +} + +/** + * Determine the best width for the given image type. + * @param imageType + * @return Best height or -1 if invalid image type given. + */ +public static int getBestImageWidth(int imageType) { + return getBestImageSize(imageType); +} + +/** + * Determine the best height for the given image type. + * @param imageType + * @return Best height or -1 if invalid image type given. + */ +public static int getBestImageHeight(int imageType) { + return getBestImageSize(imageType); +} + +/** + * Gets the default display instance, but does not create one if it doesn't exist. + * @return Default display if one has been initialized otherwise null + */ +public static Display getDisplayInstance() { + return Internal_PackageSupport.getDisplayInstance(); +} +/** + * Flashes devices backlight. + * + * @param duration Duration in milliseconds. + * @return false if no flashing happened because MIDlet was in background or + * feature is not supported. + */ +public static boolean flashLights( final int duration ){ + final Display display = getDisplayInstance(); + if (display == null || display.isDisposed() ) return false; + FlashBacklightsRunnable runnable = new FlashBacklightsRunnable(display, duration); + display.syncExec(runnable); + return runnable.result; +} +/** + * Vibrates device + * + * @param duration Duration in milliseconds. + * @return false if no vibration happened because MIDlet was in background + * or feature is not supported. + */ +public static boolean startVibra(final int duration) { + final Display display = getDisplayInstance(); + if (display == null || display.isDisposed() ) return false; + VibraRunnable runnable = new VibraRunnable(duration, display); + display.syncExec(runnable); + return runnable.result; +} +/** + * + * @param imageType + * @return + */ +private static int getBestImageSize(int imageType) { + switch (imageType) { + case LIST_ELEMENT: + case CHOICE_GROUP_ELEMENT: + return Style.pixelMetric(Style.QSTYLE_PM_SMALLICONSIZE); + case ALERT: + return Style.pixelMetric(Style.QSTYLE_PM_MESSAGEBOXICONSIZE); + default: + return -1; + } +} + + +}