--- a/javauis/nokiauiapi_qt/javasrc/com/nokia/mid/ui/SoftNotificationImpl.java Fri Sep 17 16:44:34 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,353 +0,0 @@
-/*
- * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
- * All rights reserved.
- * This component and the accompanying materials are made available
- * under the terms of "Eclipse Public License v1.0"
- * which accompanies this distribution, and is available
- * at the URL "http://www.eclipse.org/legal/epl-v10.html".
- *
- * Initial Contributors:
- * Nokia Corporation - initial contribution.
- *
- * Contributors:
- *
- * Description:
- *
- */
-
-package com.nokia.mid.ui;
-
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
-import java.io.OutputStream;
-
-import org.eclipse.swt.internal.extension.DisplayExtension;
-import org.eclipse.swt.widgets.Internal_PackageSupport;
-
-import com.nokia.mid.ui.internal.OS;
-import com.nokia.mid.ui.SoftNotificationException;
-import com.nokia.mid.ui.SoftNotificationListener;
-import com.nokia.mj.impl.fileutils.FileUtility;
-import com.nokia.mj.impl.rt.support.Finalizer;
-import com.nokia.mj.impl.rt.support.ApplicationInfo;
-
-/**
- * SoftNotificationImpl implements the functionality specified in
- * com.nokia.mid.ui.SoftNotification class.
- */
-final class SoftNotificationImpl extends com.nokia.mid.ui.SoftNotification {
-
- // Native CSoftNotification handle
- private int iSoftNotificationHandle = 0;
-
- // Observer of this class set by the API user. An array is used to allow
- // listener synchronization.
- private SoftNotificationListener[] iListener;
-
- // Listener event when user accepted notification
- private final static int EVENT_ACCEPT = 1;
-
- // Listener event when user dismissed notification
- private final static int EVENT_DISMISS = 2;
-
- // Error message prefix for exceptions.
- private final static String ERROR_MESSAGE_PREFIX = "Failed to ";
-
- // The class will have native resources so register it for
- // finalization.
- private Finalizer mFinalizer;
-
- private int err;
-
- private int id;
-
- private int midletUid;
-
- /**
- * Constructor. New instance with old identifier.
- *
- * @param aNotificationId
- * Identification of previous soft notification.
- */
- public SoftNotificationImpl(int aNotificationId) {
- initialize(aNotificationId);
- }
-
- /**
- * Constructor. New instance.
- */
- public SoftNotificationImpl() {
- initialize(0);
- }
-
- /**
- * Initializes the instance.
- *
- * @param aNotificationId
- * Id of the soft notification.
- */
- protected void initialize(int aNotificationId) {
- final int iNotificationId = aNotificationId;
- iListener = new SoftNotificationListener[1];
-
- Runnable r = new Runnable() {
- public void run() {
- String uidString = ApplicationInfo.getInstance().getUid().toString();
- // removing "[" and "]" brackets
- uidString = uidString.substring(1,uidString.length()-1);
- // converting to decimal
- midletUid =(int)Long.parseLong(uidString,16);
- iSoftNotificationHandle = OS.createNativePeer(midletUid, iNotificationId,
- SoftNotificationImpl.this);
- }
- };
- // if display is created already, execute it in UI thread no matter
- // what thread it is called from. Otherwise assume LCDUI application is
- // called
- // and create a display. eSWT is not allowed to call before display
- // creation
- if (DisplayExtension.getDisplayInstance() != null) {
- DisplayExtension.getDisplayInstance().syncExec(r);
- } else {
- com.nokia.mj.impl.nokialcdui.LCDUIInvoker
- .eSWTUIThreadRunnerSyncExec(r);
- }
-
- if (iSoftNotificationHandle <= 0) {
- throw new OutOfMemoryError();
- }
-
- mFinalizer = ((mFinalizer != null) ? mFinalizer : new Finalizer() {
- public void finalizeImpl() {
- close();
- }
- });
- }
-
- /**
- * Called when the object is finalized by the garbage collector.
- */
- public void close() {
- if (DisplayExtension.getDisplayInstance() != null) {
- Internal_PackageSupport.getDisplayInstance().syncExec(new Runnable() {
- public void run() {
- if (mFinalizer != null) {
- OS.destroy(iSoftNotificationHandle);
- }
- mFinalizer = null;
- }
- });
- }
- }
-
- /**
- * Notification callback, called from the native side.
- *
- * @param aEventArg
- * Occurred event.
- */
- private void notificationCallback(int aEventArg) {
- // Synchronize the listener usage since the user may want to set it
- // to null during execution of this function.
- synchronized (iListener) {
- SoftNotificationListener listener = iListener[0];
-
- if (listener != null) {
- if (aEventArg == EVENT_ACCEPT) {
- listener.notificationSelected(this);
- } else if (aEventArg == EVENT_DISMISS) {
- listener.notificationDismissed(this);
- }
- }
- }
- }
-
- /**
- * Checks the given error value. Throws SoftNotificationException if the
- * given error value is other than NativeError.KErrNone.
- *
- * @param aError
- * Error value to be checked.
- * @param aErrorMessage
- * Message to be included in the exception.
- */
- private final void checkError(int aError, String aErrorMessage)
- throws SoftNotificationException {
- if (aError != 0) {
- throw new SoftNotificationException(ERROR_MESSAGE_PREFIX
- + aErrorMessage, aError);
- }
- }
-
- // Functions from the base class.
-
- /**
- * See class SoftNotification for comments
- */
- public int getId() {
- if (DisplayExtension.getDisplayInstance() != null) {
- Internal_PackageSupport.getDisplayInstance().syncExec(
- new Runnable() {
- public void run() {
- id = 0;
- id = OS.getId(iSoftNotificationHandle);
- }
- });
- }
- return id;
- }
-
- /**
- * See class SoftNotification for comments
- */
- public void post() throws SoftNotificationException {
- if (DisplayExtension.getDisplayInstance() != null) {
- Internal_PackageSupport.getDisplayInstance().syncExec(
- new Runnable() {
- public void run() {
- err = 0;
- err = OS
- .showSoftNotification(iSoftNotificationHandle);
- }
- });
- }
- checkError(err, "add soft notification");
- }
-
- /**
- * See class SoftNotification for comments
- */
- public void remove() throws SoftNotificationException {
- if (DisplayExtension.getDisplayInstance() != null) {
- Internal_PackageSupport.getDisplayInstance().syncExec(
- new Runnable() {
- public void run() {
- err = 0;
- err = OS
- .removeSoftNotification(iSoftNotificationHandle);
- }
- });
- }
- checkError(err, "remove notification");
- }
-
- /**
- * See class SoftNotification for comments
- */
- public void setListener(SoftNotificationListener aListener) {
- // Synchronize the listener setting since the user may set it
- // to null during it is used elsewhere in this class.
- synchronized (iListener) {
- iListener[0] = aListener;
- }
- }
-
- /**
- * See class SoftNotification for comments
- */
- public void setText(String aPrimaryText, String aSecondaryText)
- throws SoftNotificationException {
- final String iPrimaryText = aPrimaryText;
- final String iSecondaryText = aSecondaryText;
-
- if (DisplayExtension.getDisplayInstance() != null) {
- Internal_PackageSupport.getDisplayInstance().syncExec(
- new Runnable() {
- public void run() {
- err = 0;
- err = OS.setText(iSoftNotificationHandle,
- iPrimaryText == null ? "" : iPrimaryText,
- iSecondaryText == null ? ""
- : iSecondaryText);
- }
- });
- }
- checkError(err, "set note text");
- }
-
- /**
- * See class SoftNotification for comments
- */
- public void setSoftkeyLabels(String aSoftkey1Label, String aSoftkey2Label)
- throws SoftNotificationException {
- int err = 0;
- checkError(err, "set softkeys");
- }
-
- private String stringReplace(String source, String searchStr,
- String replacementStr) {
- StringBuffer strBuffer = new StringBuffer();
- int pos = source.indexOf(searchStr);
-
- while (pos != -1) {
- strBuffer.append(source.substring(0, pos)).append(replacementStr);
- source = source.substring(pos + searchStr.length());
- pos = source.indexOf(searchStr);
- }
- strBuffer.append(source);
- return strBuffer.toString();
- }
-
- /**
- * See class SoftNotification for comments
- */
- public void setImage(byte[] aImageData) throws SoftNotificationException {
- if (aImageData != null) {
- final byte[] iImageData = aImageData;
- if (DisplayExtension.getDisplayInstance() != null) {
- Internal_PackageSupport.getDisplayInstance().syncExec(
- new Runnable() {
- public void run() {
- err = 0;
- String imagePath = "";
- try {
- String directoryPath = ApplicationInfo
- .getInstance().getRootPath();
- // Replace "\private\102033e6\apps" with
- // "resource\apps\java"
- directoryPath = stringReplace(
- directoryPath, "private", "public");
- directoryPath = directoryPath
- + "softnotification\\"
- + midletUid + "_"
- + getId();
- String imageName = midletUid
- + "_" + getId();
- FileUtility target = new FileUtility(
- directoryPath);
- if (!target.exists()) {
- target.mkdirs();
- }
- target = new FileUtility(directoryPath
- + "\\" + imageName);
- if (!target.exists()) {
- target.createNewFile();
- }
- OutputStream fos = target
- .openOutputStream();
- ByteArrayInputStream in = new ByteArrayInputStream(
- iImageData);
- byte[] buf = new byte[1024];
- int len;
- while ((len = in.read(buf)) > 0) {
- fos.write(buf, 0, len);
- }
- in.close();
- fos.close();
- target = null;
- imagePath = directoryPath + "\\"
- + imageName;
- } catch (IOException ex) {
- ex.printStackTrace();
- } catch (Throwable t) {
- t.printStackTrace();
- }
- err = OS.setImagePath(iSoftNotificationHandle,
- imagePath);
- }
- });
- }
- }
- checkError(err, "set image");
- }
-}