javauis/nokiauiapi_qt/javasrc/com/nokia/mid/ui/SoftNotificationImpl.java
changeset 78 71ad690e91f5
parent 72 1f0034e370aa
child 80 d6dafc5d983f
--- 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");
-	}
-}