# HG changeset patch # User Dremov Kirill (Nokia-D-MSW/Tampere) # Date 1286140253 -10800 # Node ID 2f468c1958d053340754432fa74dce3d9d4a8e7e # Parent 4ad59aaee88214d469db96221b455cd8a76a984d Revision: v2.2.15 Kit: 201039 diff -r 4ad59aaee882 -r 2f468c1958d0 build/buildutils/checkemptydirectories.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/build/buildutils/checkemptydirectories.py Mon Oct 04 00:10:53 2010 +0300 @@ -0,0 +1,39 @@ +#!/usr/bin/python +# +# Copyright (c) 2010 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: +# Checks for empty directories (ignoring .svn directories) recursively +# starting from the given path. This check is done because Mercurial does +# not support empty directories. + +import sys, os, re + +def main(): + + def visitFun(arg, dirname, names): + + # Skip SVN directories + if dirname.find("\\.svn") != -1: + return + + # Check if the directory is empty (except for the .svn subdirectory) + if len(names) == 0 or (len(names) == 1 and names[0] == ".svn"): + print dirname + + root = sys.argv[1] + os.path.walk(root, visitFun, None) + + +if __name__ == "__main__": + main() diff -r 4ad59aaee882 -r 2f468c1958d0 build/buildutils/extractJavaLocFiles_qt.py --- a/build/buildutils/extractJavaLocFiles_qt.py Fri Sep 17 08:28:21 2010 +0300 +++ b/build/buildutils/extractJavaLocFiles_qt.py Mon Oct 04 00:10:53 2010 +0300 @@ -11,7 +11,7 @@ # # Contributors: # -# Description: +# Description: # #!/usr/bin/python # @@ -42,7 +42,9 @@ 'javausermessages', 'javaapplicationsettings', # loc files for qt + 'common_errors', 'javaapplicationinstaller', + 'javaapplicationinstallererrors', 'javaapplicationsecuritymessages', 'javaruntimeapplicationsettings', 'javaruntimecertificatemanagement' @@ -106,11 +108,14 @@ # Sanity check - we have no good plurality support for qt-localisation if translation.find("numerusform") != None: - raise Exception("Conversion error at %s / %s: numerus form (qt plurality) is not supported" % (filename, id)) + print "WARNING at %s / %s: numerus form (qt plurality) is not supported" % (filename, id) + numerusforms = translation.findall("numerusform") lengthvariant = translation.find("lengthvariant") if lengthvariant != None: text = lengthvariant.text + elif len(numerusforms) > 0: + text = numerusforms[0].text else: text = translation.text @@ -118,10 +123,13 @@ if text == None: text = message.find("source").text - # Sanity check - no newlines in text allowed - if "\n" in text: - raise Exception("Conversion error in %s / %s: newline found" % (filename, id)) - + # Escape characters + text = text.replace("\\", "\\\\") + text = text.replace("\n", "\\n") + text = text.replace("\t", "\\t") + text = text.replace("\"", "\\\"") + text = text.replace("'", "\\'") + messages.append((id, text)) return messages diff -r 4ad59aaee882 -r 2f468c1958d0 build/loc/resources_qt.jar Binary file build/loc/resources_qt.jar has changed diff -r 4ad59aaee882 -r 2f468c1958d0 build/makefile.javaversion --- a/build/makefile.javaversion Fri Sep 17 08:28:21 2010 +0300 +++ b/build/makefile.javaversion Mon Oct 04 00:10:53 2010 +0300 @@ -1,2 +1,2 @@ # Set Java version (must be dot separated, without spaces) -JAVA_VERSION = 2.2.13 +JAVA_VERSION = 2.2.15 diff -r 4ad59aaee882 -r 2f468c1958d0 build/sis/java_3_1.pkg --- a/build/sis/java_3_1.pkg Fri Sep 17 08:28:21 2010 +0300 +++ b/build/sis/java_3_1.pkg Mon Oct 04 00:10:53 2010 +0300 @@ -314,12 +314,10 @@ "\epoc32\release\armv5\urel\z\resource\java\security\policies\all.ser"-"c:\resource\java\security\policies\all.ser" -; NOTE: Avkon versions are commented. Please replace with QT versions when porting is ready. ; UI binaries ; Dlls containing java byte code and their odc files -;"\epoc32\release\armv5\urel\z\resource\java\jvm\lib\jrt\javacoreui.odc"-"c:\resource\java\jvm\lib\jrt\javacoreui.odc" -;"\epoc32\release\armv5\urel\javacoreui.dll"-"c:\sys\bin\javacoreui.dll" -;"\epoc32\data\z\resource\apps\javastartscreen.mif"-"c:\resource\apps\javastartscreen.mif" +"\epoc32\release\armv5\urel\z\resource\java\jvm\lib\jrt\javacoreui.odc"-"c:\resource\java\jvm\lib\jrt\javacoreui.odc" +"\epoc32\release\armv5\urel\javacoreui.dll"-"c:\sys\bin\javacoreui.dll" "\epoc32\release\armv5\urel\javaamms.dll"-"c:\sys\bin\javaamms.dll" "\epoc32\release\armv5\urel\z\resource\java\jvm\lib\jrt\javaamms.odc"-"c:\resource\java\jvm\lib\jrt\javaamms.odc" @@ -352,3 +350,6 @@ "\epoc32\release\armv5\urel\javaapplicationsettingsview.dll"-"c:\sys\bin\javaapplicationsettingsview.dll" "\epoc32\data\z\resource\qt\plugins\appsettings\javaapplicationsettingsview.qtplugin"-"c:\resource\qt\plugins\appsettings\javaapplicationsettingsview.qtplugin" + +"\epoc32\release\armv5\urel\javasoftindicatorplugin.dll"-"c:\sys\bin\javasoftindicatorplugin.dll" +"\epoc32\data\z\resource\plugins\indicators\javasoftindicatorplugin.qtplugin"-"c:\resource\plugins\indicators\javasoftindicatorplugin.qtplugin" diff -r 4ad59aaee882 -r 2f468c1958d0 build/symbian_uids.pri --- a/build/symbian_uids.pri Fri Sep 17 08:28:21 2010 +0300 +++ b/build/symbian_uids.pri Mon Oct 04 00:10:53 2010 +0300 @@ -126,6 +126,7 @@ contains(TARGET, javaopengles): TARGET.UID3 = 0x20031DD1 contains(TARGET, javacentrep): TARGET.UID3 = 0x2002DCE1 contains(TARGET, javachapi): TARGET.UID3 = 0x2002DCE4 +contains(TARGET, javasoftindicatorplugin): TARGET.UID3 = 0x20031E8E isEmpty(TARGET.UID3): error($${TEMPLATE} $${TARGET} : UID3 not defined. Please allocate UID3 and configure it either on $${TARGET}.pro file or in command symbian_uids.pri) diff -r 4ad59aaee882 -r 2f468c1958d0 inc/build_defines.hrh --- a/inc/build_defines.hrh Fri Sep 17 08:28:21 2010 +0300 +++ b/inc/build_defines.hrh Mon Oct 04 00:10:53 2010 +0300 @@ -15,8 +15,8 @@ * */ -#define RD_JAVA_VERSION 2,2,13 -#define RD_JAVA_BIN_VERSION_NONQT 10.525 +#define RD_JAVA_VERSION 2,2,15 +#define RD_JAVA_BIN_VERSION_NONQT 10.527 #define RD_JAVA_SYMBIAN_TARGET #define RD_JAVA_S60_RELEASE_10_1 #define RD_JAVA_S60_RELEASE_10_1_ONWARDS diff -r 4ad59aaee882 -r 2f468c1958d0 inc/build_defines.pri --- a/inc/build_defines.pri Fri Sep 17 08:28:21 2010 +0300 +++ b/inc/build_defines.pri Mon Oct 04 00:10:53 2010 +0300 @@ -13,5 +13,5 @@ # # Description: Generated file - do not edit manually # -RD_JAVA_BIN_VERSION = 10.2.13 +RD_JAVA_BIN_VERSION = 10.2.15 PROJECT_DEFINES *= RD_JAVA_SYMBIAN_TARGET RD_JAVA_S60_RELEASE_10_1 RD_JAVA_S60_RELEASE_10_1_ONWARDS RD_JAVA_S60_RELEASE_9_2_ONWARDS RD_JAVA_S60_RELEASE_5_0_ONWARDS RD_JAVA_UI_QT RD_JAVA_STDCPPV5 RD_JAVA_EPOCALLOWDLLDATA_FIX RD_JAVA_HTTP_EMC_ENABLED RD_JAVA_NGA_ENABLED SYMBIAN_UNIVERSAL_INSTALL_FRAMEWORK RD_JAVA_PROXIMITY_LISTENER_ENABLED RD_JAVA_OPENC_BETA_PATCH OPENLCDUI_ENABLED RD_JAVA_OPENLCDUI_ENABLED RD_JAVA_INSTALLERUI_ENABLED RD_JAVA_PREWARM RD_JAVA_ADVANCED_TACTILE_FEEDBACK RD_JAVA_APPLICATION_SETTINGS_QT RD_JAVA_MIDPRMS_DB diff -r 4ad59aaee882 -r 2f468c1958d0 inc/java.txt --- a/inc/java.txt Fri Sep 17 08:28:21 2010 +0300 +++ b/inc/java.txt Mon Oct 04 00:10:53 2010 +0300 @@ -1,1 +1,1 @@ -2.2.13 +2.2.15 diff -r 4ad59aaee882 -r 2f468c1958d0 java_stubs/javaregistry/clientserver/client/build/javaregclient.mmp --- a/java_stubs/javaregistry/clientserver/client/build/javaregclient.mmp Fri Sep 17 08:28:21 2010 +0300 +++ b/java_stubs/javaregistry/clientserver/client/build/javaregclient.mmp Mon Oct 04 00:10:53 2010 +0300 @@ -41,6 +41,7 @@ SOURCE writeablejavaregistry.cpp SOURCE javaregistrybackupsupport.cpp SOURCE javaregconverter.cpp +SOURCE javaattribute.cpp SOURCEPATH ../../common/src SOURCE javaregproperty.cpp diff -r 4ad59aaee882 -r 2f468c1958d0 java_stubs/javaregistry/clientserver/client/bwins/javaregistryclientu.def --- a/java_stubs/javaregistry/clientserver/client/bwins/javaregistryclientu.def Fri Sep 17 08:28:21 2010 +0300 +++ b/java_stubs/javaregistry/clientserver/client/bwins/javaregistryclientu.def Mon Oct 04 00:10:53 2010 +0300 @@ -1,57 +1,57 @@ EXPORTS ??0CWriteableJavaRegistry@Registry@Manager@Java@@IAE@XZ @ 1 NONAME ; Java::Manager::Registry::CWriteableJavaRegistry::CWriteableJavaRegistry(void) - ??0CWriteableJavaRegistryApplicationEntry@Registry@Manager@Java@@IAE@ABVTUid@@@Z @ 2 NONAME ; Java::Manager::Registry::CWriteableJavaRegistryApplicationEntry::CWriteableJavaRegistryApplicationEntry(class TUid const &) - ??0CWriteableJavaRegistryEntry@Registry@Manager@Java@@IAE@ABVTUid@@@Z @ 3 NONAME ; Java::Manager::Registry::CWriteableJavaRegistryEntry::CWriteableJavaRegistryEntry(class TUid const &) - ??0CWriteableJavaRegistryPackageEntry@Registry@Manager@Java@@IAE@ABVTUid@@@Z @ 4 NONAME ; Java::Manager::Registry::CWriteableJavaRegistryPackageEntry::CWriteableJavaRegistryPackageEntry(class TUid const &) - ??1CJavaProperty@Registry@Manager@Java@@UAE@XZ @ 5 NONAME ; Java::Manager::Registry::CJavaProperty::~CJavaProperty(void) - ??1CJavaRegistryBackupSupport@Registry@Manager@Java@@UAE@XZ @ 6 NONAME ; Java::Manager::Registry::CJavaRegistryBackupSupport::~CJavaRegistryBackupSupport(void) + ??0CWriteableJavaRegistryApplicationEntry@Registry@Manager@Java@@IAE@ABVTUid@@@Z @ 2 NONAME ABSENT ; Java::Manager::Registry::CWriteableJavaRegistryApplicationEntry::CWriteableJavaRegistryApplicationEntry(class TUid const &) + ??0CWriteableJavaRegistryEntry@Registry@Manager@Java@@IAE@ABVTUid@@@Z @ 3 NONAME ABSENT ; Java::Manager::Registry::CWriteableJavaRegistryEntry::CWriteableJavaRegistryEntry(class TUid const &) + ??0CWriteableJavaRegistryPackageEntry@Registry@Manager@Java@@IAE@ABVTUid@@@Z @ 4 NONAME ABSENT ; Java::Manager::Registry::CWriteableJavaRegistryPackageEntry::CWriteableJavaRegistryPackageEntry(class TUid const &) + ??1CJavaProperty@Registry@Manager@Java@@UAE@XZ @ 5 NONAME ABSENT ; Java::Manager::Registry::CJavaProperty::~CJavaProperty(void) + ??1CJavaRegistryBackupSupport@Registry@Manager@Java@@UAE@XZ @ 6 NONAME ABSENT ; Java::Manager::Registry::CJavaRegistryBackupSupport::~CJavaRegistryBackupSupport(void) ??1CJavaRegistryEntry@Java@@UAE@XZ @ 7 NONAME ; Java::CJavaRegistryEntry::~CJavaRegistryEntry(void) ??1CWriteableJavaRegistry@Registry@Manager@Java@@UAE@XZ @ 8 NONAME ; Java::Manager::Registry::CWriteableJavaRegistry::~CWriteableJavaRegistry(void) ??1CWriteableJavaRegistryEntry@Registry@Manager@Java@@UAE@XZ @ 9 NONAME ; Java::Manager::Registry::CWriteableJavaRegistryEntry::~CWriteableJavaRegistryEntry(void) ??1CWriteableJavaRegistryPackageEntry@Registry@Manager@Java@@UAE@XZ @ 10 NONAME ; Java::Manager::Registry::CWriteableJavaRegistryPackageEntry::~CWriteableJavaRegistryPackageEntry(void) - ??8CJavaProperty@Registry@Manager@Java@@QAEHABV0123@@Z @ 11 NONAME ; int Java::Manager::Registry::CJavaProperty::operator==(class Java::Manager::Registry::CJavaProperty const &) - ?AddCertificateChainL@CWriteableJavaRegistryEntry@Registry@Manager@Java@@QAEXABVTDesC8@@@Z @ 12 NONAME ; void Java::Manager::Registry::CWriteableJavaRegistryEntry::AddCertificateChainL(class TDesC8 const &) - ?AddEmbeddedEntryL@CWriteableJavaRegistryPackageEntry@Registry@Manager@Java@@QAEXABVTUid@@@Z @ 13 NONAME ; void Java::Manager::Registry::CWriteableJavaRegistryPackageEntry::AddEmbeddedEntryL(class TUid const &) - ?BooleanProperty@CWriteableJavaRegistryEntry@Registry@Manager@Java@@IBEHJH@Z @ 14 NONAME ; int Java::Manager::Registry::CWriteableJavaRegistryEntry::BooleanProperty(long, int) const + ??8CJavaProperty@Registry@Manager@Java@@QAEHABV0123@@Z @ 11 NONAME ABSENT ; int Java::Manager::Registry::CJavaProperty::operator==(class Java::Manager::Registry::CJavaProperty const &) + ?AddCertificateChainL@CWriteableJavaRegistryEntry@Registry@Manager@Java@@QAEXABVTDesC8@@@Z @ 12 NONAME ABSENT ; void Java::Manager::Registry::CWriteableJavaRegistryEntry::AddCertificateChainL(class TDesC8 const &) + ?AddEmbeddedEntryL@CWriteableJavaRegistryPackageEntry@Registry@Manager@Java@@QAEXABVTUid@@@Z @ 13 NONAME ABSENT ; void Java::Manager::Registry::CWriteableJavaRegistryPackageEntry::AddEmbeddedEntryL(class TUid const &) + ?BooleanProperty@CWriteableJavaRegistryEntry@Registry@Manager@Java@@IBEHJH@Z @ 14 NONAME ABSENT ; int Java::Manager::Registry::CWriteableJavaRegistryEntry::BooleanProperty(long, int) const ?CertificateChain@CJavaRegistryEntry@Java@@QBEABVTDesC8@@H@Z @ 15 NONAME ; class TDesC8 const & Java::CJavaRegistryEntry::CertificateChain(int) const ?CertificateChain@CWriteableJavaRegistryEntry@Registry@Manager@Java@@QBEABVTDesC8@@H@Z @ 16 NONAME ; class TDesC8 const & Java::Manager::Registry::CWriteableJavaRegistryEntry::CertificateChain(int) const - ?ChangeBURState@CJavaRegistryBackupSupport@Registry@Manager@Java@@QBEHABW4TBackupState@234@@Z @ 17 NONAME ; int Java::Manager::Registry::CJavaRegistryBackupSupport::ChangeBURState(enum Java::Manager::Registry::TBackupState const &) const + ?ChangeBURState@CJavaRegistryBackupSupport@Registry@Manager@Java@@QBEHABW4TBackupState@234@@Z @ 17 NONAME ABSENT ; int Java::Manager::Registry::CJavaRegistryBackupSupport::ChangeBURState(enum Java::Manager::Registry::TBackupState const &) const ?ConstructL@CWriteableJavaRegistry@Registry@Manager@Java@@IAEXHH@Z @ 18 NONAME ; void Java::Manager::Registry::CWriteableJavaRegistry::ConstructL(int, int) - ?ConstructL@CWriteableJavaRegistry@Registry@Manager@Java@@IAEX_J@Z @ 19 NONAME ; void Java::Manager::Registry::CWriteableJavaRegistry::ConstructL(long long) + ?ConstructL@CWriteableJavaRegistry@Registry@Manager@Java@@IAEX_J@Z @ 19 NONAME ABSENT ; void Java::Manager::Registry::CWriteableJavaRegistry::ConstructL(long long) ?ConstructL@CWriteableJavaRegistryEntry@Registry@Manager@Java@@IAEXW4TJavaRegistryEntryType@4@@Z @ 20 NONAME ; void Java::Manager::Registry::CWriteableJavaRegistryEntry::ConstructL(enum Java::TJavaRegistryEntryType) - ?DecideEntryTypeAndCreateL@CWriteableJavaRegistry@Registry@Manager@Java@@MBEPAVCWriteableJavaRegistryEntry@234@ABVTUid@@PAVCJavaPropertyArray@234@@Z @ 21 NONAME ; class Java::Manager::Registry::CWriteableJavaRegistryEntry * Java::Manager::Registry::CWriteableJavaRegistry::DecideEntryTypeAndCreateL(class TUid const &, class Java::Manager::Registry::CJavaPropertyArray *) const - ?DeleteProperty@CWriteableJavaRegistryEntry@Registry@Manager@Java@@IAEXH@Z @ 22 NONAME ; void Java::Manager::Registry::CWriteableJavaRegistryEntry::DeleteProperty(int) - ?DownloadPlugin@CWriteableJavaRegistryPackageEntry@Registry@Manager@Java@@QBEABVTDesC8@@XZ @ 23 NONAME ; class TDesC8 const & Java::Manager::Registry::CWriteableJavaRegistryPackageEntry::DownloadPlugin(void) const + ?DecideEntryTypeAndCreateL@CWriteableJavaRegistry@Registry@Manager@Java@@MBEPAVCWriteableJavaRegistryEntry@234@ABVTUid@@PAVCJavaPropertyArray@234@@Z @ 21 NONAME ABSENT ; class Java::Manager::Registry::CWriteableJavaRegistryEntry * Java::Manager::Registry::CWriteableJavaRegistry::DecideEntryTypeAndCreateL(class TUid const &, class Java::Manager::Registry::CJavaPropertyArray *) const + ?DeleteProperty@CWriteableJavaRegistryEntry@Registry@Manager@Java@@IAEXH@Z @ 22 NONAME ABSENT ; void Java::Manager::Registry::CWriteableJavaRegistryEntry::DeleteProperty(int) + ?DownloadPlugin@CWriteableJavaRegistryPackageEntry@Registry@Manager@Java@@QBEABVTDesC8@@XZ @ 23 NONAME ABSENT ; class TDesC8 const & Java::Manager::Registry::CWriteableJavaRegistryPackageEntry::DownloadPlugin(void) const ?Drive@CJavaRegistryEntry@Java@@QBE?AW4TDriveNumber@@XZ @ 24 NONAME ; enum TDriveNumber Java::CJavaRegistryEntry::Drive(void) const ?Drive@CWriteableJavaRegistryEntry@Registry@Manager@Java@@QBE?AW4TDriveNumber@@XZ @ 25 NONAME ; enum TDriveNumber Java::Manager::Registry::CWriteableJavaRegistryEntry::Drive(void) const ?EmbeddedEntryByNumberL@CJavaRegistryPackageEntry@Java@@QBEPAVCJavaRegistryEntry@2@H@Z @ 26 NONAME ; class Java::CJavaRegistryEntry * Java::CJavaRegistryPackageEntry::EmbeddedEntryByNumberL(int) const ?EmbeddedEntryByNumberL@CWriteableJavaRegistryPackageEntry@Registry@Manager@Java@@QBEPAVCWriteableJavaRegistryEntry@234@H@Z @ 27 NONAME ; class Java::Manager::Registry::CWriteableJavaRegistryEntry * Java::Manager::Registry::CWriteableJavaRegistryPackageEntry::EmbeddedEntryByNumberL(int) const ?EmbeddedEntryByUidL@CJavaRegistryPackageEntry@Java@@QBEPAVCJavaRegistryEntry@2@ABVTUid@@@Z @ 28 NONAME ; class Java::CJavaRegistryEntry * Java::CJavaRegistryPackageEntry::EmbeddedEntryByUidL(class TUid const &) const ?EmbeddedEntryByUidL@CWriteableJavaRegistryPackageEntry@Registry@Manager@Java@@QBEPAVCWriteableJavaRegistryEntry@234@ABVTUid@@@Z @ 29 NONAME ; class Java::Manager::Registry::CWriteableJavaRegistryEntry * Java::Manager::Registry::CWriteableJavaRegistryPackageEntry::EmbeddedEntryByUidL(class TUid const &) const - ?EntriesExistForDriveL@CJavaRegistryBackupSupport@Registry@Manager@Java@@QBEHABW4TDriveNumber@@@Z @ 30 NONAME ; int Java::Manager::Registry::CJavaRegistryBackupSupport::EntriesExistForDriveL(enum TDriveNumber const &) const - ?GenerateUidsL@CWriteableJavaRegistry@Registry@Manager@Java@@QBEXAAV?$RArray@VTUid@@@@H@Z @ 31 NONAME ; void Java::Manager::Registry::CWriteableJavaRegistry::GenerateUidsL(class RArray &, int) const - ?GetCertificateChainsL@JavaRegConverter@Registry@Manager@Java@@SAXABVTDesC16@@AAV?$RPointerArray@VHBufC8@@@@@Z @ 32 NONAME ; void Java::Manager::Registry::JavaRegConverter::GetCertificateChainsL(class TDesC16 const &, class RPointerArray &) + ?EntriesExistForDriveL@CJavaRegistryBackupSupport@Registry@Manager@Java@@QBEHABW4TDriveNumber@@@Z @ 30 NONAME ABSENT ; int Java::Manager::Registry::CJavaRegistryBackupSupport::EntriesExistForDriveL(enum TDriveNumber const &) const + ?GenerateUidsL@CWriteableJavaRegistry@Registry@Manager@Java@@QBEXAAV?$RArray@VTUid@@@@H@Z @ 31 NONAME ABSENT ; void Java::Manager::Registry::CWriteableJavaRegistry::GenerateUidsL(class RArray &, int) const + ?GetCertificateChainsL@JavaRegConverter@Registry@Manager@Java@@SAXABVTDesC16@@AAV?$RPointerArray@VHBufC8@@@@@Z @ 32 NONAME ABSENT ; void Java::Manager::Registry::JavaRegConverter::GetCertificateChainsL(class TDesC16 const &, class RPointerArray &) ?GetEmbeddedEntries@CJavaRegistryPackageEntry@Java@@QBEXAAV?$RArray@VTUid@@@@@Z @ 33 NONAME ; void Java::CJavaRegistryPackageEntry::GetEmbeddedEntries(class RArray &) const ?GetEmbeddedEntries@CWriteableJavaRegistryPackageEntry@Registry@Manager@Java@@QBEXAAV?$RArray@VTUid@@@@@Z @ 34 NONAME ; void Java::Manager::Registry::CWriteableJavaRegistryPackageEntry::GetEmbeddedEntries(class RArray &) const - ?GetPropertyIndex@CWriteableJavaRegistryEntry@Registry@Manager@Java@@IBEHJ@Z @ 35 NONAME ; int Java::Manager::Registry::CWriteableJavaRegistryEntry::GetPropertyIndex(long) const + ?GetPropertyIndex@CWriteableJavaRegistryEntry@Registry@Manager@Java@@IBEHJ@Z @ 35 NONAME ABSENT ; int Java::Manager::Registry::CWriteableJavaRegistryEntry::GetPropertyIndex(long) const ?GetRegistryEntryUidsL@CJavaRegistry@Java@@QBEXAAV?$RArray@VTUid@@@@@Z @ 36 NONAME ; void Java::CJavaRegistry::GetRegistryEntryUidsL(class RArray &) const ?GetRegistryEntryUidsL@CJavaRegistry@Java@@QBEXW4TJavaRegistryEntryType@2@AAV?$RArray@VTUid@@@@@Z @ 37 NONAME ; void Java::CJavaRegistry::GetRegistryEntryUidsL(enum Java::TJavaRegistryEntryType, class RArray &) const ?GetRegistryEntryUidsL@CWriteableJavaRegistry@Registry@Manager@Java@@QBEXAAV?$RArray@VTUid@@@@@Z @ 38 NONAME ; void Java::Manager::Registry::CWriteableJavaRegistry::GetRegistryEntryUidsL(class RArray &) const ?GetRegistryEntryUidsL@CWriteableJavaRegistry@Registry@Manager@Java@@QBEXABV?$RPointerArray@VCJavaProperty@Registry@Manager@Java@@@@AAV?$RArray@VTUid@@@@@Z @ 39 NONAME ABSENT ; void Java::Manager::Registry::CWriteableJavaRegistry::GetRegistryEntryUidsL(class RPointerArray const &, class RArray &) const ?GetRegistryEntryUidsL@CWriteableJavaRegistry@Registry@Manager@Java@@QBEXW4TJavaRegistryEntryType@4@AAV?$RArray@VTUid@@@@@Z @ 40 NONAME ABSENT ; void Java::Manager::Registry::CWriteableJavaRegistry::GetRegistryEntryUidsL(enum Java::TJavaRegistryEntryType, class RArray &) const - ?GetTAppVersion@JavaRegConverter@Registry@Manager@Java@@SA?AVTAppVersion@@ABVTDesC16@@V5@@Z @ 41 NONAME ; class TAppVersion Java::Manager::Registry::JavaRegConverter::GetTAppVersion(class TDesC16 const &, class TAppVersion) - ?GetTAppVersionL@JavaRegConverter@Registry@Manager@Java@@SA?AVTAppVersion@@ABVTDesC16@@@Z @ 42 NONAME ; class TAppVersion Java::Manager::Registry::JavaRegConverter::GetTAppVersionL(class TDesC16 const &) - ?GetTBool@JavaRegConverter@Registry@Manager@Java@@SAHABVTDesC16@@H@Z @ 43 NONAME ; int Java::Manager::Registry::JavaRegConverter::GetTBool(class TDesC16 const &, int) - ?GetTBoolL@JavaRegConverter@Registry@Manager@Java@@SAHABVTDesC16@@@Z @ 44 NONAME ; int Java::Manager::Registry::JavaRegConverter::GetTBoolL(class TDesC16 const &) - ?GetTInt@JavaRegConverter@Registry@Manager@Java@@SAJABVTDesC16@@J@Z @ 45 NONAME ; long Java::Manager::Registry::JavaRegConverter::GetTInt(class TDesC16 const &, long) - ?GetTIntL@JavaRegConverter@Registry@Manager@Java@@SAJABVTDesC16@@@Z @ 46 NONAME ; long Java::Manager::Registry::JavaRegConverter::GetTIntL(class TDesC16 const &) - ?GetUnicodeDescriptorsL@JavaRegConverter@Registry@Manager@Java@@SAXABVTDesC16@@AAV?$RPointerArray@VHBufC16@@@@@Z @ 47 NONAME ; void Java::Manager::Registry::JavaRegConverter::GetUnicodeDescriptorsL(class TDesC16 const &, class RPointerArray &) + ?GetTAppVersion@JavaRegConverter@Registry@Manager@Java@@SA?AVTAppVersion@@ABVTDesC16@@V5@@Z @ 41 NONAME ABSENT ; class TAppVersion Java::Manager::Registry::JavaRegConverter::GetTAppVersion(class TDesC16 const &, class TAppVersion) + ?GetTAppVersionL@JavaRegConverter@Registry@Manager@Java@@SA?AVTAppVersion@@ABVTDesC16@@@Z @ 42 NONAME ABSENT ; class TAppVersion Java::Manager::Registry::JavaRegConverter::GetTAppVersionL(class TDesC16 const &) + ?GetTBool@JavaRegConverter@Registry@Manager@Java@@SAHABVTDesC16@@H@Z @ 43 NONAME ABSENT ; int Java::Manager::Registry::JavaRegConverter::GetTBool(class TDesC16 const &, int) + ?GetTBoolL@JavaRegConverter@Registry@Manager@Java@@SAHABVTDesC16@@@Z @ 44 NONAME ABSENT ; int Java::Manager::Registry::JavaRegConverter::GetTBoolL(class TDesC16 const &) + ?GetTInt@JavaRegConverter@Registry@Manager@Java@@SAJABVTDesC16@@J@Z @ 45 NONAME ABSENT ; long Java::Manager::Registry::JavaRegConverter::GetTInt(class TDesC16 const &, long) + ?GetTIntL@JavaRegConverter@Registry@Manager@Java@@SAJABVTDesC16@@@Z @ 46 NONAME ABSENT ; long Java::Manager::Registry::JavaRegConverter::GetTIntL(class TDesC16 const &) + ?GetUnicodeDescriptorsL@JavaRegConverter@Registry@Manager@Java@@SAXABVTDesC16@@AAV?$RPointerArray@VHBufC16@@@@@Z @ 47 NONAME ABSENT ; void Java::Manager::Registry::JavaRegConverter::GetUnicodeDescriptorsL(class TDesC16 const &, class RPointerArray &) ?GroupName@CJavaRegistryApplicationEntry@Java@@QBEABVTDesC16@@XZ @ 48 NONAME ; class TDesC16 const & Java::CJavaRegistryApplicationEntry::GroupName(void) const - ?GroupName@CWriteableJavaRegistryApplicationEntry@Registry@Manager@Java@@QBEABVTDesC16@@XZ @ 49 NONAME ; class TDesC16 const & Java::Manager::Registry::CWriteableJavaRegistryApplicationEntry::GroupName(void) const - ?Id@CJavaProperty@Registry@Manager@Java@@QBEJXZ @ 50 NONAME ; long Java::Manager::Registry::CJavaProperty::Id(void) const - ?InstallPackageUid@CWriteableJavaRegistryApplicationEntry@Registry@Manager@Java@@QBE?AVTUid@@XZ @ 51 NONAME ; class TUid Java::Manager::Registry::CWriteableJavaRegistryApplicationEntry::InstallPackageUid(void) const - ?InstallPlugin@CWriteableJavaRegistryPackageEntry@Registry@Manager@Java@@QBEABVTDesC8@@XZ @ 52 NONAME ; class TDesC8 const & Java::Manager::Registry::CWriteableJavaRegistryPackageEntry::InstallPlugin(void) const - ?IntegerProperty@CWriteableJavaRegistryEntry@Registry@Manager@Java@@IBEJJJ@Z @ 53 NONAME ; long Java::Manager::Registry::CWriteableJavaRegistryEntry::IntegerProperty(long, long) const + ?GroupName@CWriteableJavaRegistryApplicationEntry@Registry@Manager@Java@@QBEABVTDesC16@@XZ @ 49 NONAME ABSENT ; class TDesC16 const & Java::Manager::Registry::CWriteableJavaRegistryApplicationEntry::GroupName(void) const + ?Id@CJavaProperty@Registry@Manager@Java@@QBEJXZ @ 50 NONAME ABSENT ; long Java::Manager::Registry::CJavaProperty::Id(void) const + ?InstallPackageUid@CWriteableJavaRegistryApplicationEntry@Registry@Manager@Java@@QBE?AVTUid@@XZ @ 51 NONAME ABSENT ; class TUid Java::Manager::Registry::CWriteableJavaRegistryApplicationEntry::InstallPackageUid(void) const + ?InstallPlugin@CWriteableJavaRegistryPackageEntry@Registry@Manager@Java@@QBEABVTDesC8@@XZ @ 52 NONAME ABSENT ; class TDesC8 const & Java::Manager::Registry::CWriteableJavaRegistryPackageEntry::InstallPlugin(void) const + ?IntegerProperty@CWriteableJavaRegistryEntry@Registry@Manager@Java@@IBEJJJ@Z @ 53 NONAME ABSENT ; long Java::Manager::Registry::CWriteableJavaRegistryEntry::IntegerProperty(long, long) const ?IsResident@CJavaRegistryApplicationEntry@Java@@QBEHXZ @ 54 NONAME ; int Java::CJavaRegistryApplicationEntry::IsResident(void) const ?IsResident@CWriteableJavaRegistryApplicationEntry@Registry@Manager@Java@@QBEHXZ @ 55 NONAME ; int Java::Manager::Registry::CWriteableJavaRegistryApplicationEntry::IsResident(void) const ?IsStartable@CJavaRegistryApplicationEntry@Java@@QBEHXZ @ 56 NONAME ; int Java::CJavaRegistryApplicationEntry::IsStartable(void) const @@ -62,73 +62,73 @@ ?IsVisible@CWriteableJavaRegistryApplicationEntry@Registry@Manager@Java@@QBEHXZ @ 61 NONAME ; int Java::Manager::Registry::CWriteableJavaRegistryApplicationEntry::IsVisible(void) const ?Name@CJavaRegistryEntry@Java@@QBEABVTDesC16@@XZ @ 62 NONAME ; class TDesC16 const & Java::CJavaRegistryEntry::Name(void) const ?Name@CWriteableJavaRegistryEntry@Registry@Manager@Java@@QBEABVTDesC16@@XZ @ 63 NONAME ; class TDesC16 const & Java::Manager::Registry::CWriteableJavaRegistryEntry::Name(void) const - ?NewL@CJavaProperty@Registry@Manager@Java@@SAPAV1234@JABVTDesC16@@@Z @ 64 NONAME ; class Java::Manager::Registry::CJavaProperty * Java::Manager::Registry::CJavaProperty::NewL(long, class TDesC16 const &) + ?NewL@CJavaProperty@Registry@Manager@Java@@SAPAV1234@JABVTDesC16@@@Z @ 64 NONAME ABSENT ; class Java::Manager::Registry::CJavaProperty * Java::Manager::Registry::CJavaProperty::NewL(long, class TDesC16 const &) ?NewL@CJavaRegistry@Java@@SAPAV12@XZ @ 65 NONAME ; class Java::CJavaRegistry * Java::CJavaRegistry::NewL(void) - ?NewL@CJavaRegistryBackupSupport@Registry@Manager@Java@@SAPAV1234@XZ @ 66 NONAME ; class Java::Manager::Registry::CJavaRegistryBackupSupport * Java::Manager::Registry::CJavaRegistryBackupSupport::NewL(void) + ?NewL@CJavaRegistryBackupSupport@Registry@Manager@Java@@SAPAV1234@XZ @ 66 NONAME ABSENT ; class Java::Manager::Registry::CJavaRegistryBackupSupport * Java::Manager::Registry::CJavaRegistryBackupSupport::NewL(void) ?NewL@CWriteableJavaRegistry@Registry@Manager@Java@@SAPAV1234@H@Z @ 67 NONAME ; class Java::Manager::Registry::CWriteableJavaRegistry * Java::Manager::Registry::CWriteableJavaRegistry::NewL(int) - ?NewL@CWriteableJavaRegistry@Registry@Manager@Java@@SAPAV1234@_J@Z @ 68 NONAME ; class Java::Manager::Registry::CWriteableJavaRegistry * Java::Manager::Registry::CWriteableJavaRegistry::NewL(long long) - ?NewL@CWriteableJavaRegistryApplicationEntry@Registry@Manager@Java@@SAPAV1234@ABVTUid@@@Z @ 69 NONAME ; class Java::Manager::Registry::CWriteableJavaRegistryApplicationEntry * Java::Manager::Registry::CWriteableJavaRegistryApplicationEntry::NewL(class TUid const &) - ?NewL@CWriteableJavaRegistryPackageEntry@Registry@Manager@Java@@SAPAV1234@ABVTUid@@@Z @ 70 NONAME ; class Java::Manager::Registry::CWriteableJavaRegistryPackageEntry * Java::Manager::Registry::CWriteableJavaRegistryPackageEntry::NewL(class TUid const &) - ?NewLC@CJavaProperty@Registry@Manager@Java@@SAPAV1234@JABVTDesC16@@@Z @ 71 NONAME ; class Java::Manager::Registry::CJavaProperty * Java::Manager::Registry::CJavaProperty::NewLC(long, class TDesC16 const &) + ?NewL@CWriteableJavaRegistry@Registry@Manager@Java@@SAPAV1234@_J@Z @ 68 NONAME ABSENT ; class Java::Manager::Registry::CWriteableJavaRegistry * Java::Manager::Registry::CWriteableJavaRegistry::NewL(long long) + ?NewL@CWriteableJavaRegistryApplicationEntry@Registry@Manager@Java@@SAPAV1234@ABVTUid@@@Z @ 69 NONAME ABSENT ; class Java::Manager::Registry::CWriteableJavaRegistryApplicationEntry * Java::Manager::Registry::CWriteableJavaRegistryApplicationEntry::NewL(class TUid const &) + ?NewL@CWriteableJavaRegistryPackageEntry@Registry@Manager@Java@@SAPAV1234@ABVTUid@@@Z @ 70 NONAME ABSENT ; class Java::Manager::Registry::CWriteableJavaRegistryPackageEntry * Java::Manager::Registry::CWriteableJavaRegistryPackageEntry::NewL(class TUid const &) + ?NewLC@CJavaProperty@Registry@Manager@Java@@SAPAV1234@JABVTDesC16@@@Z @ 71 NONAME ABSENT ; class Java::Manager::Registry::CJavaProperty * Java::Manager::Registry::CJavaProperty::NewLC(long, class TDesC16 const &) ?NewLC@CJavaRegistry@Java@@SAPAV12@XZ @ 72 NONAME ; class Java::CJavaRegistry * Java::CJavaRegistry::NewLC(void) - ?NewLC@CJavaRegistryBackupSupport@Registry@Manager@Java@@SAPAV1234@XZ @ 73 NONAME ; class Java::Manager::Registry::CJavaRegistryBackupSupport * Java::Manager::Registry::CJavaRegistryBackupSupport::NewLC(void) + ?NewLC@CJavaRegistryBackupSupport@Registry@Manager@Java@@SAPAV1234@XZ @ 73 NONAME ABSENT ; class Java::Manager::Registry::CJavaRegistryBackupSupport * Java::Manager::Registry::CJavaRegistryBackupSupport::NewLC(void) ?NewLC@CWriteableJavaRegistry@Registry@Manager@Java@@SAPAV1234@H@Z @ 74 NONAME ; class Java::Manager::Registry::CWriteableJavaRegistry * Java::Manager::Registry::CWriteableJavaRegistry::NewLC(int) - ?NewLC@CWriteableJavaRegistry@Registry@Manager@Java@@SAPAV1234@_J@Z @ 75 NONAME ; class Java::Manager::Registry::CWriteableJavaRegistry * Java::Manager::Registry::CWriteableJavaRegistry::NewLC(long long) - ?NewLC@CWriteableJavaRegistryApplicationEntry@Registry@Manager@Java@@SAPAV1234@ABVTUid@@@Z @ 76 NONAME ; class Java::Manager::Registry::CWriteableJavaRegistryApplicationEntry * Java::Manager::Registry::CWriteableJavaRegistryApplicationEntry::NewLC(class TUid const &) - ?NewLC@CWriteableJavaRegistryPackageEntry@Registry@Manager@Java@@SAPAV1234@ABVTUid@@@Z @ 77 NONAME ; class Java::Manager::Registry::CWriteableJavaRegistryPackageEntry * Java::Manager::Registry::CWriteableJavaRegistryPackageEntry::NewLC(class TUid const &) + ?NewLC@CWriteableJavaRegistry@Registry@Manager@Java@@SAPAV1234@_J@Z @ 75 NONAME ABSENT ; class Java::Manager::Registry::CWriteableJavaRegistry * Java::Manager::Registry::CWriteableJavaRegistry::NewLC(long long) + ?NewLC@CWriteableJavaRegistryApplicationEntry@Registry@Manager@Java@@SAPAV1234@ABVTUid@@@Z @ 76 NONAME ABSENT ; class Java::Manager::Registry::CWriteableJavaRegistryApplicationEntry * Java::Manager::Registry::CWriteableJavaRegistryApplicationEntry::NewLC(class TUid const &) + ?NewLC@CWriteableJavaRegistryPackageEntry@Registry@Manager@Java@@SAPAV1234@ABVTUid@@@Z @ 77 NONAME ABSENT ; class Java::Manager::Registry::CWriteableJavaRegistryPackageEntry * Java::Manager::Registry::CWriteableJavaRegistryPackageEntry::NewLC(class TUid const &) ?NumberOfCertificateChains@CJavaRegistryEntry@Java@@QBEHXZ @ 78 NONAME ; int Java::CJavaRegistryEntry::NumberOfCertificateChains(void) const ?NumberOfCertificateChains@CWriteableJavaRegistryEntry@Registry@Manager@Java@@QBEHXZ @ 79 NONAME ; int Java::Manager::Registry::CWriteableJavaRegistryEntry::NumberOfCertificateChains(void) const ?NumberOfEmbeddedEntries@CJavaRegistryPackageEntry@Java@@QBEHXZ @ 80 NONAME ; int Java::CJavaRegistryPackageEntry::NumberOfEmbeddedEntries(void) const ?NumberOfEmbeddedEntries@CWriteableJavaRegistryPackageEntry@Registry@Manager@Java@@QBEHXZ @ 81 NONAME ; int Java::Manager::Registry::CWriteableJavaRegistryPackageEntry::NumberOfEmbeddedEntries(void) const ?PackageEntryL@CJavaRegistryApplicationEntry@Java@@QBEPAVCJavaRegistryPackageEntry@2@XZ @ 82 NONAME ; class Java::CJavaRegistryPackageEntry * Java::CJavaRegistryApplicationEntry::PackageEntryL(void) const ?PackageEntryL@CWriteableJavaRegistryApplicationEntry@Registry@Manager@Java@@QBEPAVCWriteableJavaRegistryPackageEntry@234@XZ @ 83 NONAME ; class Java::Manager::Registry::CWriteableJavaRegistryPackageEntry * Java::Manager::Registry::CWriteableJavaRegistryApplicationEntry::PackageEntryL(void) const - ?Property@CWriteableJavaRegistryEntry@Registry@Manager@Java@@QBEPBVCJavaProperty@234@J@Z @ 84 NONAME ; class Java::Manager::Registry::CJavaProperty const * Java::Manager::Registry::CWriteableJavaRegistryEntry::Property(long) const + ?Property@CWriteableJavaRegistryEntry@Registry@Manager@Java@@QBEPBVCJavaProperty@234@J@Z @ 84 NONAME ABSENT ; class Java::Manager::Registry::CJavaProperty const * Java::Manager::Registry::CWriteableJavaRegistryEntry::Property(long) const ?RegistryEntryExistsL@CJavaRegistry@Java@@QBEHABVTUid@@@Z @ 85 NONAME ; int Java::CJavaRegistry::RegistryEntryExistsL(class TUid const &) const ?RegistryEntryExistsL@CWriteableJavaRegistry@Registry@Manager@Java@@QBEHABVTUid@@@Z @ 86 NONAME ; int Java::Manager::Registry::CWriteableJavaRegistry::RegistryEntryExistsL(class TUid const &) const ?RegistryEntryL@CJavaRegistry@Java@@QBEPAVCJavaRegistryEntry@2@ABVTUid@@@Z @ 87 NONAME ; class Java::CJavaRegistryEntry * Java::CJavaRegistry::RegistryEntryL(class TUid const &) const ?RegistryEntryL@CWriteableJavaRegistry@Registry@Manager@Java@@QBEPAVCWriteableJavaRegistryEntry@234@ABVTUid@@@Z @ 88 NONAME ABSENT ; class Java::Manager::Registry::CWriteableJavaRegistryEntry * Java::Manager::Registry::CWriteableJavaRegistry::RegistryEntryL(class TUid const &) const - ?RemoveEmbeddedEntryL@CWriteableJavaRegistryPackageEntry@Registry@Manager@Java@@QAEXABVTUid@@@Z @ 89 NONAME ; void Java::Manager::Registry::CWriteableJavaRegistryPackageEntry::RemoveEmbeddedEntryL(class TUid const &) + ?RemoveEmbeddedEntryL@CWriteableJavaRegistryPackageEntry@Registry@Manager@Java@@QAEXABVTUid@@@Z @ 89 NONAME ABSENT ; void Java::Manager::Registry::CWriteableJavaRegistryPackageEntry::RemoveEmbeddedEntryL(class TUid const &) ?RemoveRegistryEntryL@CWriteableJavaRegistry@Registry@Manager@Java@@QBEXABVTUid@@H@Z @ 90 NONAME ABSENT ; void Java::Manager::Registry::CWriteableJavaRegistry::RemoveRegistryEntryL(class TUid const &, int) const - ?SetBooleanPropertyL@CWriteableJavaRegistryEntry@Registry@Manager@Java@@IAEXJH@Z @ 91 NONAME ; void Java::Manager::Registry::CWriteableJavaRegistryEntry::SetBooleanPropertyL(long, int) - ?SetDescriptorPropertyL@CWriteableJavaRegistryEntry@Registry@Manager@Java@@IAEXJABVTDesC16@@@Z @ 92 NONAME ; void Java::Manager::Registry::CWriteableJavaRegistryEntry::SetDescriptorPropertyL(long, class TDesC16 const &) - ?SetDownloadPluginL@CWriteableJavaRegistryPackageEntry@Registry@Manager@Java@@QAEXABVTDesC8@@@Z @ 93 NONAME ; void Java::Manager::Registry::CWriteableJavaRegistryPackageEntry::SetDownloadPluginL(class TDesC8 const &) - ?SetDriveL@CWriteableJavaRegistryEntry@Registry@Manager@Java@@QAEXABW4TDriveNumber@@@Z @ 94 NONAME ; void Java::Manager::Registry::CWriteableJavaRegistryEntry::SetDriveL(enum TDriveNumber const &) - ?SetGroupNameL@CWriteableJavaRegistryApplicationEntry@Registry@Manager@Java@@QAEXABVTDesC16@@@Z @ 95 NONAME ; void Java::Manager::Registry::CWriteableJavaRegistryApplicationEntry::SetGroupNameL(class TDesC16 const &) - ?SetInstallPackageUidL@CWriteableJavaRegistryApplicationEntry@Registry@Manager@Java@@QAEXABVTUid@@@Z @ 96 NONAME ; void Java::Manager::Registry::CWriteableJavaRegistryApplicationEntry::SetInstallPackageUidL(class TUid const &) - ?SetInstallPluginL@CWriteableJavaRegistryPackageEntry@Registry@Manager@Java@@QAEXABVTDesC8@@@Z @ 97 NONAME ; void Java::Manager::Registry::CWriteableJavaRegistryPackageEntry::SetInstallPluginL(class TDesC8 const &) - ?SetIntegerPropertyL@CWriteableJavaRegistryEntry@Registry@Manager@Java@@IAEXJJ@Z @ 98 NONAME ; void Java::Manager::Registry::CWriteableJavaRegistryEntry::SetIntegerPropertyL(long, long) - ?SetNameL@CWriteableJavaRegistryEntry@Registry@Manager@Java@@QAEXABVTDesC16@@@Z @ 99 NONAME ; void Java::Manager::Registry::CWriteableJavaRegistryEntry::SetNameL(class TDesC16 const &) - ?SetPropertyL@CWriteableJavaRegistryEntry@Registry@Manager@Java@@QAEXJABVTDesC16@@@Z @ 100 NONAME ; void Java::Manager::Registry::CWriteableJavaRegistryEntry::SetPropertyL(long, class TDesC16 const &) - ?SetPropertyL@CWriteableJavaRegistryEntry@Registry@Manager@Java@@UAEXPAVCJavaProperty@234@@Z @ 101 NONAME ; void Java::Manager::Registry::CWriteableJavaRegistryEntry::SetPropertyL(class Java::Manager::Registry::CJavaProperty *) + ?SetBooleanPropertyL@CWriteableJavaRegistryEntry@Registry@Manager@Java@@IAEXJH@Z @ 91 NONAME ABSENT ; void Java::Manager::Registry::CWriteableJavaRegistryEntry::SetBooleanPropertyL(long, int) + ?SetDescriptorPropertyL@CWriteableJavaRegistryEntry@Registry@Manager@Java@@IAEXJABVTDesC16@@@Z @ 92 NONAME ABSENT ; void Java::Manager::Registry::CWriteableJavaRegistryEntry::SetDescriptorPropertyL(long, class TDesC16 const &) + ?SetDownloadPluginL@CWriteableJavaRegistryPackageEntry@Registry@Manager@Java@@QAEXABVTDesC8@@@Z @ 93 NONAME ABSENT ; void Java::Manager::Registry::CWriteableJavaRegistryPackageEntry::SetDownloadPluginL(class TDesC8 const &) + ?SetDriveL@CWriteableJavaRegistryEntry@Registry@Manager@Java@@QAEXABW4TDriveNumber@@@Z @ 94 NONAME ABSENT ; void Java::Manager::Registry::CWriteableJavaRegistryEntry::SetDriveL(enum TDriveNumber const &) + ?SetGroupNameL@CWriteableJavaRegistryApplicationEntry@Registry@Manager@Java@@QAEXABVTDesC16@@@Z @ 95 NONAME ABSENT ; void Java::Manager::Registry::CWriteableJavaRegistryApplicationEntry::SetGroupNameL(class TDesC16 const &) + ?SetInstallPackageUidL@CWriteableJavaRegistryApplicationEntry@Registry@Manager@Java@@QAEXABVTUid@@@Z @ 96 NONAME ABSENT ; void Java::Manager::Registry::CWriteableJavaRegistryApplicationEntry::SetInstallPackageUidL(class TUid const &) + ?SetInstallPluginL@CWriteableJavaRegistryPackageEntry@Registry@Manager@Java@@QAEXABVTDesC8@@@Z @ 97 NONAME ABSENT ; void Java::Manager::Registry::CWriteableJavaRegistryPackageEntry::SetInstallPluginL(class TDesC8 const &) + ?SetIntegerPropertyL@CWriteableJavaRegistryEntry@Registry@Manager@Java@@IAEXJJ@Z @ 98 NONAME ABSENT ; void Java::Manager::Registry::CWriteableJavaRegistryEntry::SetIntegerPropertyL(long, long) + ?SetNameL@CWriteableJavaRegistryEntry@Registry@Manager@Java@@QAEXABVTDesC16@@@Z @ 99 NONAME ABSENT ; void Java::Manager::Registry::CWriteableJavaRegistryEntry::SetNameL(class TDesC16 const &) + ?SetPropertyL@CWriteableJavaRegistryEntry@Registry@Manager@Java@@QAEXJABVTDesC16@@@Z @ 100 NONAME ABSENT ; void Java::Manager::Registry::CWriteableJavaRegistryEntry::SetPropertyL(long, class TDesC16 const &) + ?SetPropertyL@CWriteableJavaRegistryEntry@Registry@Manager@Java@@UAEXPAVCJavaProperty@234@@Z @ 101 NONAME ABSENT ; void Java::Manager::Registry::CWriteableJavaRegistryEntry::SetPropertyL(class Java::Manager::Registry::CJavaProperty *) ?SetPropertyL@CWriteableJavaRegistryPackageEntry@Registry@Manager@Java@@UAEXPAVCJavaProperty@234@@Z @ 102 NONAME ABSENT ; void Java::Manager::Registry::CWriteableJavaRegistryPackageEntry::SetPropertyL(class Java::Manager::Registry::CJavaProperty *) ?SetRegistryEntryL@CWriteableJavaRegistry@Registry@Manager@Java@@QBEXABVCWriteableJavaRegistryEntry@234@@Z @ 103 NONAME ABSENT ; void Java::Manager::Registry::CWriteableJavaRegistry::SetRegistryEntryL(class Java::Manager::Registry::CWriteableJavaRegistryEntry const &) const - ?SetResidentL@CWriteableJavaRegistryApplicationEntry@Registry@Manager@Java@@QAEXH@Z @ 104 NONAME ; void Java::Manager::Registry::CWriteableJavaRegistryApplicationEntry::SetResidentL(int) - ?SetSizeL@CWriteableJavaRegistryPackageEntry@Registry@Manager@Java@@QAEXH@Z @ 105 NONAME ; void Java::Manager::Registry::CWriteableJavaRegistryPackageEntry::SetSizeL(int) - ?SetStartableL@CWriteableJavaRegistryApplicationEntry@Registry@Manager@Java@@QAEXH@Z @ 106 NONAME ; void Java::Manager::Registry::CWriteableJavaRegistryApplicationEntry::SetStartableL(int) - ?SetTypeL@CWriteableJavaRegistryEntry@Registry@Manager@Java@@QAEXW4TJavaRegistryEntryType@4@@Z @ 107 NONAME ; void Java::Manager::Registry::CWriteableJavaRegistryEntry::SetTypeL(enum Java::TJavaRegistryEntryType) - ?SetUninstallableL@CWriteableJavaRegistryPackageEntry@Registry@Manager@Java@@QAEXH@Z @ 108 NONAME ; void Java::Manager::Registry::CWriteableJavaRegistryPackageEntry::SetUninstallableL(int) - ?SetVendorL@CWriteableJavaRegistryPackageEntry@Registry@Manager@Java@@QAEXABVTDesC16@@@Z @ 109 NONAME ; void Java::Manager::Registry::CWriteableJavaRegistryPackageEntry::SetVendorL(class TDesC16 const &) - ?SetVersionL@CWriteableJavaRegistryPackageEntry@Registry@Manager@Java@@QAEXABVTAppVersion@@@Z @ 110 NONAME ; void Java::Manager::Registry::CWriteableJavaRegistryPackageEntry::SetVersionL(class TAppVersion const &) - ?SetVisibleL@CWriteableJavaRegistryApplicationEntry@Registry@Manager@Java@@QAEXH@Z @ 111 NONAME ; void Java::Manager::Registry::CWriteableJavaRegistryApplicationEntry::SetVisibleL(int) - ?Size@CWriteableJavaRegistryPackageEntry@Registry@Manager@Java@@QBEHXZ @ 112 NONAME ; int Java::Manager::Registry::CWriteableJavaRegistryPackageEntry::Size(void) const - ?StoreCertificateChainsL@JavaRegConverter@Registry@Manager@Java@@SAXABV?$RPointerArray@VHBufC8@@@@AAPAVHBufC16@@@Z @ 113 NONAME ; void Java::Manager::Registry::JavaRegConverter::StoreCertificateChainsL(class RPointerArray const &, class HBufC16 * &) - ?StoreTAppVersionL@JavaRegConverter@Registry@Manager@Java@@SAXABVTAppVersion@@AAPAVHBufC16@@@Z @ 114 NONAME ; void Java::Manager::Registry::JavaRegConverter::StoreTAppVersionL(class TAppVersion const &, class HBufC16 * &) - ?StoreTBoolL@JavaRegConverter@Registry@Manager@Java@@SAXHAAPAVHBufC16@@@Z @ 115 NONAME ; void Java::Manager::Registry::JavaRegConverter::StoreTBoolL(int, class HBufC16 * &) - ?StoreTIntL@JavaRegConverter@Registry@Manager@Java@@SAXJAAPAVHBufC16@@@Z @ 116 NONAME ; void Java::Manager::Registry::JavaRegConverter::StoreTIntL(long, class HBufC16 * &) - ?StoreUnicodeDescriptorsL@JavaRegConverter@Registry@Manager@Java@@SAXABV?$RPointerArray@VHBufC16@@@@AAPAVHBufC16@@@Z @ 117 NONAME ; void Java::Manager::Registry::JavaRegConverter::StoreUnicodeDescriptorsL(class RPointerArray const &, class HBufC16 * &) + ?SetResidentL@CWriteableJavaRegistryApplicationEntry@Registry@Manager@Java@@QAEXH@Z @ 104 NONAME ABSENT ; void Java::Manager::Registry::CWriteableJavaRegistryApplicationEntry::SetResidentL(int) + ?SetSizeL@CWriteableJavaRegistryPackageEntry@Registry@Manager@Java@@QAEXH@Z @ 105 NONAME ABSENT ; void Java::Manager::Registry::CWriteableJavaRegistryPackageEntry::SetSizeL(int) + ?SetStartableL@CWriteableJavaRegistryApplicationEntry@Registry@Manager@Java@@QAEXH@Z @ 106 NONAME ABSENT ; void Java::Manager::Registry::CWriteableJavaRegistryApplicationEntry::SetStartableL(int) + ?SetTypeL@CWriteableJavaRegistryEntry@Registry@Manager@Java@@QAEXW4TJavaRegistryEntryType@4@@Z @ 107 NONAME ABSENT ; void Java::Manager::Registry::CWriteableJavaRegistryEntry::SetTypeL(enum Java::TJavaRegistryEntryType) + ?SetUninstallableL@CWriteableJavaRegistryPackageEntry@Registry@Manager@Java@@QAEXH@Z @ 108 NONAME ABSENT ; void Java::Manager::Registry::CWriteableJavaRegistryPackageEntry::SetUninstallableL(int) + ?SetVendorL@CWriteableJavaRegistryPackageEntry@Registry@Manager@Java@@QAEXABVTDesC16@@@Z @ 109 NONAME ABSENT ; void Java::Manager::Registry::CWriteableJavaRegistryPackageEntry::SetVendorL(class TDesC16 const &) + ?SetVersionL@CWriteableJavaRegistryPackageEntry@Registry@Manager@Java@@QAEXABVTAppVersion@@@Z @ 110 NONAME ABSENT ; void Java::Manager::Registry::CWriteableJavaRegistryPackageEntry::SetVersionL(class TAppVersion const &) + ?SetVisibleL@CWriteableJavaRegistryApplicationEntry@Registry@Manager@Java@@QAEXH@Z @ 111 NONAME ABSENT ; void Java::Manager::Registry::CWriteableJavaRegistryApplicationEntry::SetVisibleL(int) + ?Size@CWriteableJavaRegistryPackageEntry@Registry@Manager@Java@@QBEHXZ @ 112 NONAME ABSENT ; int Java::Manager::Registry::CWriteableJavaRegistryPackageEntry::Size(void) const + ?StoreCertificateChainsL@JavaRegConverter@Registry@Manager@Java@@SAXABV?$RPointerArray@VHBufC8@@@@AAPAVHBufC16@@@Z @ 113 NONAME ABSENT ; void Java::Manager::Registry::JavaRegConverter::StoreCertificateChainsL(class RPointerArray const &, class HBufC16 * &) + ?StoreTAppVersionL@JavaRegConverter@Registry@Manager@Java@@SAXABVTAppVersion@@AAPAVHBufC16@@@Z @ 114 NONAME ABSENT ; void Java::Manager::Registry::JavaRegConverter::StoreTAppVersionL(class TAppVersion const &, class HBufC16 * &) + ?StoreTBoolL@JavaRegConverter@Registry@Manager@Java@@SAXHAAPAVHBufC16@@@Z @ 115 NONAME ABSENT ; void Java::Manager::Registry::JavaRegConverter::StoreTBoolL(int, class HBufC16 * &) + ?StoreTIntL@JavaRegConverter@Registry@Manager@Java@@SAXJAAPAVHBufC16@@@Z @ 116 NONAME ABSENT ; void Java::Manager::Registry::JavaRegConverter::StoreTIntL(long, class HBufC16 * &) + ?StoreUnicodeDescriptorsL@JavaRegConverter@Registry@Manager@Java@@SAXABV?$RPointerArray@VHBufC16@@@@AAPAVHBufC16@@@Z @ 117 NONAME ABSENT ; void Java::Manager::Registry::JavaRegConverter::StoreUnicodeDescriptorsL(class RPointerArray const &, class HBufC16 * &) ?Type@CJavaRegistryEntry@Java@@QBE?AW4TJavaRegistryEntryType@2@XZ @ 118 NONAME ; enum Java::TJavaRegistryEntryType Java::CJavaRegistryEntry::Type(void) const ?Type@CWriteableJavaRegistryEntry@Registry@Manager@Java@@QBE?AW4TJavaRegistryEntryType@4@XZ @ 119 NONAME ; enum Java::TJavaRegistryEntryType Java::Manager::Registry::CWriteableJavaRegistryEntry::Type(void) const ?Uid@CJavaRegistryEntry@Java@@QBE?AVTUid@@XZ @ 120 NONAME ; class TUid Java::CJavaRegistryEntry::Uid(void) const ?Uid@CWriteableJavaRegistryEntry@Registry@Manager@Java@@QBE?AVTUid@@XZ @ 121 NONAME ; class TUid Java::Manager::Registry::CWriteableJavaRegistryEntry::Uid(void) const - ?Value@CJavaProperty@Registry@Manager@Java@@QBEABVTDesC16@@XZ @ 122 NONAME ; class TDesC16 const & Java::Manager::Registry::CJavaProperty::Value(void) const + ?Value@CJavaProperty@Registry@Manager@Java@@QBEABVTDesC16@@XZ @ 122 NONAME ABSENT ; class TDesC16 const & Java::Manager::Registry::CJavaProperty::Value(void) const ?Vendor@CJavaRegistryPackageEntry@Java@@QBEABVTDesC16@@XZ @ 123 NONAME ; class TDesC16 const & Java::CJavaRegistryPackageEntry::Vendor(void) const ?Vendor@CWriteableJavaRegistryPackageEntry@Registry@Manager@Java@@QBEABVTDesC16@@XZ @ 124 NONAME ; class TDesC16 const & Java::Manager::Registry::CWriteableJavaRegistryPackageEntry::Vendor(void) const ?Version@CJavaRegistryPackageEntry@Java@@QBE?AVTAppVersion@@XZ @ 125 NONAME ; class TAppVersion Java::CJavaRegistryPackageEntry::Version(void) const ?Version@CWriteableJavaRegistryPackageEntry@Registry@Manager@Java@@QBE?AVTAppVersion@@XZ @ 126 NONAME ; class TAppVersion Java::Manager::Registry::CWriteableJavaRegistryPackageEntry::Version(void) const - ?SetPropertyL@CWriteableJavaRegistryApplicationEntry@Registry@Manager@Java@@UAEXPAVCJavaProperty@234@@Z @ 127 NONAME ; void Java::Manager::Registry::CWriteableJavaRegistryApplicationEntry::SetPropertyL(class Java::Manager::Registry::CJavaProperty *) + ?SetPropertyL@CWriteableJavaRegistryApplicationEntry@Registry@Manager@Java@@UAEXPAVCJavaProperty@234@@Z @ 127 NONAME ABSENT ; void Java::Manager::Registry::CWriteableJavaRegistryApplicationEntry::SetPropertyL(class Java::Manager::Registry::CJavaProperty *) ?DrmContentId@CJavaRegistryEntry@Java@@QBEABVTDesC16@@XZ @ 128 NONAME ; class TDesC16 const & Java::CJavaRegistryEntry::DrmContentId(void) const ?DrmContentId@CWriteableJavaRegistryEntry@Registry@Manager@Java@@QBEABVTDesC16@@XZ @ 129 NONAME ; class TDesC16 const & Java::Manager::Registry::CWriteableJavaRegistryEntry::DrmContentId(void) const - ?SetDrmContentIdL@CWriteableJavaRegistryEntry@Registry@Manager@Java@@QAEXABVTDesC16@@@Z @ 130 NONAME ; void Java::Manager::Registry::CWriteableJavaRegistryEntry::SetDrmContentIdL(class TDesC16 const &) + ?SetDrmContentIdL@CWriteableJavaRegistryEntry@Registry@Manager@Java@@QAEXABVTDesC16@@@Z @ 130 NONAME ABSENT ; void Java::Manager::Registry::CWriteableJavaRegistryEntry::SetDrmContentIdL(class TDesC16 const &) ??1CJavaAttribute@Registry@Manager@Java@@UAE@XZ @ 131 NONAME ABSENT ; Java::Manager::Registry::CJavaAttribute::~CJavaAttribute(void) ??1CJavaAttributes@Registry@Manager@Java@@UAE@XZ @ 132 NONAME ABSENT ; Java::Manager::Registry::CJavaAttributes::~CJavaAttributes(void) ??1CWriteableJavaRegistryApplicationEntry@Registry@Manager@Java@@UAE@XZ @ 133 NONAME ; Java::Manager::Registry::CWriteableJavaRegistryApplicationEntry::~CWriteableJavaRegistryApplicationEntry(void) @@ -152,10 +152,10 @@ ?NewLC@CJavaAttribute@Registry@Manager@Java@@SAPAV1234@ABVTDesC16@@0H@Z @ 151 NONAME ABSENT ; class Java::Manager::Registry::CJavaAttribute * Java::Manager::Registry::CJavaAttribute::NewLC(class TDesC16 const &, class TDesC16 const &, int) ?NewLC@CJavaAttributes@Registry@Manager@Java@@SAPAV1234@PAVTDesC8@@@Z @ 152 NONAME ABSENT ; class Java::Manager::Registry::CJavaAttributes * Java::Manager::Registry::CJavaAttributes::NewLC(class TDesC8 *) ?NewLC@CJavaAttributes@Registry@Manager@Java@@SAPAV1234@XZ @ 153 NONAME ABSENT ; class Java::Manager::Registry::CJavaAttributes * Java::Manager::Registry::CJavaAttributes::NewLC(void) - ?SerializeAttributesL@CWriteableJavaRegistryEntry@Registry@Manager@Java@@UAEXXZ @ 154 NONAME ; void Java::Manager::Registry::CWriteableJavaRegistryEntry::SerializeAttributesL(void) + ?SerializeAttributesL@CWriteableJavaRegistryEntry@Registry@Manager@Java@@UAEXXZ @ 154 NONAME ABSENT ; void Java::Manager::Registry::CWriteableJavaRegistryEntry::SerializeAttributesL(void) ?SerializeAttributesL@CWriteableJavaRegistryPackageEntry@Registry@Manager@Java@@UAEXXZ @ 155 NONAME ABSENT ; void Java::Manager::Registry::CWriteableJavaRegistryPackageEntry::SerializeAttributesL(void) ?SerializedAttributesL@CJavaAttributes@Registry@Manager@Java@@QBEPAVHBufC8@@XZ @ 156 NONAME ABSENT ; class HBufC8 * Java::Manager::Registry::CJavaAttributes::SerializedAttributesL(void) const - ?SetAttributeL@CWriteableJavaRegistryPackageEntry@Registry@Manager@Java@@QAEXABVTDesC16@@0H@Z @ 157 NONAME ; void Java::Manager::Registry::CWriteableJavaRegistryPackageEntry::SetAttributeL(class TDesC16 const &, class TDesC16 const &, int) + ?SetAttributeL@CWriteableJavaRegistryPackageEntry@Registry@Manager@Java@@QAEXABVTDesC16@@0H@Z @ 157 NONAME ABSENT ; void Java::Manager::Registry::CWriteableJavaRegistryPackageEntry::SetAttributeL(class TDesC16 const &, class TDesC16 const &, int) ?SetRegistryEntryL@CWriteableJavaRegistry@Registry@Manager@Java@@QBEXAAVCWriteableJavaRegistryEntry@234@@Z @ 158 NONAME ABSENT ; void Java::Manager::Registry::CWriteableJavaRegistry::SetRegistryEntryL(class Java::Manager::Registry::CWriteableJavaRegistryEntry &) const ?Size@CJavaAttributes@Registry@Manager@Java@@QBEHXZ @ 159 NONAME ABSENT ; int Java::Manager::Registry::CJavaAttributes::Size(void) const ??1CJavaAttribute@Java@@UAE@XZ @ 160 NONAME ABSENT ; Java::CJavaAttribute::~CJavaAttribute(void) @@ -170,11 +170,14 @@ ?AttributesL@CWriteableJavaRegistryApplicationEntry@Registry@Manager@Java@@UBEABV?$RPointerArray@VMJavaAttribute@Java@@@@XZ @ 169 NONAME ; class RPointerArray const & Java::Manager::Registry::CWriteableJavaRegistryApplicationEntry::AttributesL(void) const ?AttributesL@CWriteableJavaRegistryEntry@Registry@Manager@Java@@UBEABV?$RPointerArray@VMJavaAttribute@Java@@@@XZ @ 170 NONAME ; class RPointerArray const & Java::Manager::Registry::CWriteableJavaRegistryEntry::AttributesL(void) const ?AttributesL@CWriteableJavaRegistryPackageEntry@Registry@Manager@Java@@UBEABV?$RPointerArray@VMJavaAttribute@Java@@@@XZ @ 171 NONAME ; class RPointerArray const & Java::Manager::Registry::CWriteableJavaRegistryPackageEntry::AttributesL(void) const - ?NewL@CJavaAttribute@Java@@SAPAV12@ABVTDesC16@@0H@Z @ 172 NONAME ABSENT ; class Java::CJavaAttribute * Java::CJavaAttribute::NewL(class TDesC16 const &, class TDesC16 const &, int) - ?NewLC@CJavaAttribute@Java@@SAPAV12@ABVTDesC16@@0H@Z @ 173 NONAME ABSENT ; class Java::CJavaAttribute * Java::CJavaAttribute::NewLC(class TDesC16 const &, class TDesC16 const &, int) - ?GetRegistryEntryUidsL@CWriteableJavaRegistry@Registry@Manager@Java@@QBEXABV?$RPointerArray@VCJavaProperty@Registry@Manager@Java@@@@AAV?$RArray@VTUid@@@@H@Z @ 174 NONAME ; void Java::Manager::Registry::CWriteableJavaRegistry::GetRegistryEntryUidsL(class RPointerArray const &, class RArray &, int) const + ?NewL@CJavaAttribute@Java@@SAPAV12@ABVTDesC16@@0H@Z @ 172 NONAME ; class Java::CJavaAttribute * Java::CJavaAttribute::NewL(class TDesC16 const &, class TDesC16 const &, int) + ?NewLC@CJavaAttribute@Java@@SAPAV12@ABVTDesC16@@0H@Z @ 173 NONAME ; class Java::CJavaAttribute * Java::CJavaAttribute::NewLC(class TDesC16 const &, class TDesC16 const &, int) + ?GetRegistryEntryUidsL@CWriteableJavaRegistry@Registry@Manager@Java@@QBEXABV?$RPointerArray@VCJavaProperty@Registry@Manager@Java@@@@AAV?$RArray@VTUid@@@@H@Z @ 174 NONAME ABSENT ; void Java::Manager::Registry::CWriteableJavaRegistry::GetRegistryEntryUidsL(class RPointerArray const &, class RArray &, int) const ?GetRegistryEntryUidsL@CWriteableJavaRegistry@Registry@Manager@Java@@QBEXW4TJavaRegistryEntryType@4@AAV?$RArray@VTUid@@@@H@Z @ 175 NONAME ; void Java::Manager::Registry::CWriteableJavaRegistry::GetRegistryEntryUidsL(enum Java::TJavaRegistryEntryType, class RArray &, int) const ?RegistryEntryL@CWriteableJavaRegistry@Registry@Manager@Java@@QBEPAVCWriteableJavaRegistryEntry@234@ABVTUid@@H@Z @ 176 NONAME ; class Java::Manager::Registry::CWriteableJavaRegistryEntry * Java::Manager::Registry::CWriteableJavaRegistry::RegistryEntryL(class TUid const &, int) const ?RemoveRegistryEntryL@CWriteableJavaRegistry@Registry@Manager@Java@@QBEXABVTUid@@HH@Z @ 177 NONAME ABSENT ; void Java::Manager::Registry::CWriteableJavaRegistry::RemoveRegistryEntryL(class TUid const &, int, int) const ?UsedUserDiskSpace@CJavaRegistryPackageEntry@Java@@QBE_JXZ @ 178 NONAME ; long long Java::CJavaRegistryPackageEntry::UsedUserDiskSpace(void) const + ?UsedUserDiskSpace@CWriteableJavaRegistryPackageEntry@Registry@Manager@Java@@QBE_JXZ @ 179 NONAME ; long long Java::Manager::Registry::CWriteableJavaRegistryPackageEntry::UsedUserDiskSpace(void) const + ?IsPreinstalled@CWriteableJavaRegistryPackageEntry@Registry@Manager@Java@@QBEHXZ @ 180 NONAME ; int Java::Manager::Registry::CWriteableJavaRegistryPackageEntry::IsPreinstalled(void) const + ?IsPreinstalled@CJavaRegistryPackageEntry@Java@@QBEHXZ @ 181 NONAME ; int Java::CJavaRegistryPackageEntry::IsPreinstalled(void) const diff -r 4ad59aaee882 -r 2f468c1958d0 java_stubs/javaregistry/clientserver/client/eabi/javaregistryclientu.def --- a/java_stubs/javaregistry/clientserver/client/eabi/javaregistryclientu.def Fri Sep 17 08:28:21 2010 +0300 +++ b/java_stubs/javaregistry/clientserver/client/eabi/javaregistryclientu.def Mon Oct 04 00:10:53 2010 +0300 @@ -1,82 +1,82 @@ EXPORTS _ZN4Java13CJavaRegistry4NewLEv @ 1 NONAME _ZN4Java13CJavaRegistry5NewLCEv @ 2 NONAME - _ZN4Java7Manager8Registry13CJavaProperty4NewLElRK7TDesC16 @ 3 NONAME - _ZN4Java7Manager8Registry13CJavaProperty5NewLCElRK7TDesC16 @ 4 NONAME - _ZN4Java7Manager8Registry13CJavaPropertyD0Ev @ 5 NONAME - _ZN4Java7Manager8Registry13CJavaPropertyD1Ev @ 6 NONAME - _ZN4Java7Manager8Registry13CJavaPropertyD2Ev @ 7 NONAME - _ZN4Java7Manager8Registry13CJavaPropertyeqERKS2_ @ 8 NONAME - _ZN4Java7Manager8Registry16JavaRegConverter10StoreTIntLElRP7HBufC16 @ 9 NONAME - _ZN4Java7Manager8Registry16JavaRegConverter11StoreTBoolLEiRP7HBufC16 @ 10 NONAME - _ZN4Java7Manager8Registry16JavaRegConverter14GetTAppVersionERK7TDesC1611TAppVersion @ 11 NONAME - _ZN4Java7Manager8Registry16JavaRegConverter15GetTAppVersionLERK7TDesC16 @ 12 NONAME - _ZN4Java7Manager8Registry16JavaRegConverter17StoreTAppVersionLERK11TAppVersionRP7HBufC16 @ 13 NONAME - _ZN4Java7Manager8Registry16JavaRegConverter21GetCertificateChainsLERK7TDesC16R13RPointerArrayI6HBufC8E @ 14 NONAME - _ZN4Java7Manager8Registry16JavaRegConverter22GetUnicodeDescriptorsLERK7TDesC16R13RPointerArrayI7HBufC16E @ 15 NONAME - _ZN4Java7Manager8Registry16JavaRegConverter23StoreCertificateChainsLERK13RPointerArrayI6HBufC8ERP7HBufC16 @ 16 NONAME - _ZN4Java7Manager8Registry16JavaRegConverter24StoreUnicodeDescriptorsLERK13RPointerArrayI7HBufC16ERPS4_ @ 17 NONAME - _ZN4Java7Manager8Registry16JavaRegConverter7GetTIntERK7TDesC16l @ 18 NONAME - _ZN4Java7Manager8Registry16JavaRegConverter8GetTBoolERK7TDesC16i @ 19 NONAME - _ZN4Java7Manager8Registry16JavaRegConverter8GetTIntLERK7TDesC16 @ 20 NONAME - _ZN4Java7Manager8Registry16JavaRegConverter9GetTBoolLERK7TDesC16 @ 21 NONAME + _ZN4Java7Manager8Registry13CJavaProperty4NewLElRK7TDesC16 @ 3 NONAME ABSENT + _ZN4Java7Manager8Registry13CJavaProperty5NewLCElRK7TDesC16 @ 4 NONAME ABSENT + _ZN4Java7Manager8Registry13CJavaPropertyD0Ev @ 5 NONAME ABSENT + _ZN4Java7Manager8Registry13CJavaPropertyD1Ev @ 6 NONAME ABSENT + _ZN4Java7Manager8Registry13CJavaPropertyD2Ev @ 7 NONAME ABSENT + _ZN4Java7Manager8Registry13CJavaPropertyeqERKS2_ @ 8 NONAME ABSENT + _ZN4Java7Manager8Registry16JavaRegConverter10StoreTIntLElRP7HBufC16 @ 9 NONAME ABSENT + _ZN4Java7Manager8Registry16JavaRegConverter11StoreTBoolLEiRP7HBufC16 @ 10 NONAME ABSENT + _ZN4Java7Manager8Registry16JavaRegConverter14GetTAppVersionERK7TDesC1611TAppVersion @ 11 NONAME ABSENT + _ZN4Java7Manager8Registry16JavaRegConverter15GetTAppVersionLERK7TDesC16 @ 12 NONAME ABSENT + _ZN4Java7Manager8Registry16JavaRegConverter17StoreTAppVersionLERK11TAppVersionRP7HBufC16 @ 13 NONAME ABSENT + _ZN4Java7Manager8Registry16JavaRegConverter21GetCertificateChainsLERK7TDesC16R13RPointerArrayI6HBufC8E @ 14 NONAME ABSENT + _ZN4Java7Manager8Registry16JavaRegConverter22GetUnicodeDescriptorsLERK7TDesC16R13RPointerArrayI7HBufC16E @ 15 NONAME ABSENT + _ZN4Java7Manager8Registry16JavaRegConverter23StoreCertificateChainsLERK13RPointerArrayI6HBufC8ERP7HBufC16 @ 16 NONAME ABSENT + _ZN4Java7Manager8Registry16JavaRegConverter24StoreUnicodeDescriptorsLERK13RPointerArrayI7HBufC16ERPS4_ @ 17 NONAME ABSENT + _ZN4Java7Manager8Registry16JavaRegConverter7GetTIntERK7TDesC16l @ 18 NONAME ABSENT + _ZN4Java7Manager8Registry16JavaRegConverter8GetTBoolERK7TDesC16i @ 19 NONAME ABSENT + _ZN4Java7Manager8Registry16JavaRegConverter8GetTIntLERK7TDesC16 @ 20 NONAME ABSENT + _ZN4Java7Manager8Registry16JavaRegConverter9GetTBoolLERK7TDesC16 @ 21 NONAME ABSENT _ZN4Java7Manager8Registry22CWriteableJavaRegistry10ConstructLEii @ 22 NONAME - _ZN4Java7Manager8Registry22CWriteableJavaRegistry10ConstructLEx @ 23 NONAME + _ZN4Java7Manager8Registry22CWriteableJavaRegistry10ConstructLEx @ 23 NONAME ABSENT _ZN4Java7Manager8Registry22CWriteableJavaRegistry4NewLEi @ 24 NONAME - _ZN4Java7Manager8Registry22CWriteableJavaRegistry4NewLEx @ 25 NONAME + _ZN4Java7Manager8Registry22CWriteableJavaRegistry4NewLEx @ 25 NONAME ABSENT _ZN4Java7Manager8Registry22CWriteableJavaRegistry5NewLCEi @ 26 NONAME - _ZN4Java7Manager8Registry22CWriteableJavaRegistry5NewLCEx @ 27 NONAME + _ZN4Java7Manager8Registry22CWriteableJavaRegistry5NewLCEx @ 27 NONAME ABSENT _ZN4Java7Manager8Registry22CWriteableJavaRegistryC1Ev @ 28 NONAME _ZN4Java7Manager8Registry22CWriteableJavaRegistryC2Ev @ 29 NONAME _ZN4Java7Manager8Registry22CWriteableJavaRegistryD0Ev @ 30 NONAME _ZN4Java7Manager8Registry22CWriteableJavaRegistryD1Ev @ 31 NONAME _ZN4Java7Manager8Registry22CWriteableJavaRegistryD2Ev @ 32 NONAME - _ZN4Java7Manager8Registry26CJavaRegistryBackupSupport4NewLEv @ 33 NONAME - _ZN4Java7Manager8Registry26CJavaRegistryBackupSupport5NewLCEv @ 34 NONAME - _ZN4Java7Manager8Registry26CJavaRegistryBackupSupportD0Ev @ 35 NONAME - _ZN4Java7Manager8Registry26CJavaRegistryBackupSupportD1Ev @ 36 NONAME - _ZN4Java7Manager8Registry26CJavaRegistryBackupSupportD2Ev @ 37 NONAME + _ZN4Java7Manager8Registry26CJavaRegistryBackupSupport4NewLEv @ 33 NONAME ABSENT + _ZN4Java7Manager8Registry26CJavaRegistryBackupSupport5NewLCEv @ 34 NONAME ABSENT + _ZN4Java7Manager8Registry26CJavaRegistryBackupSupportD0Ev @ 35 NONAME ABSENT + _ZN4Java7Manager8Registry26CJavaRegistryBackupSupportD1Ev @ 36 NONAME ABSENT + _ZN4Java7Manager8Registry26CJavaRegistryBackupSupportD2Ev @ 37 NONAME ABSENT _ZN4Java7Manager8Registry27CWriteableJavaRegistryEntry10ConstructLENS_22TJavaRegistryEntryTypeE @ 38 NONAME - _ZN4Java7Manager8Registry27CWriteableJavaRegistryEntry12SetPropertyLEPNS1_13CJavaPropertyE @ 39 NONAME - _ZN4Java7Manager8Registry27CWriteableJavaRegistryEntry12SetPropertyLElRK7TDesC16 @ 40 NONAME - _ZN4Java7Manager8Registry27CWriteableJavaRegistryEntry14DeletePropertyEi @ 41 NONAME - _ZN4Java7Manager8Registry27CWriteableJavaRegistryEntry19SetBooleanPropertyLEli @ 42 NONAME - _ZN4Java7Manager8Registry27CWriteableJavaRegistryEntry19SetIntegerPropertyLEll @ 43 NONAME - _ZN4Java7Manager8Registry27CWriteableJavaRegistryEntry20AddCertificateChainLERK6TDesC8 @ 44 NONAME - _ZN4Java7Manager8Registry27CWriteableJavaRegistryEntry22SetDescriptorPropertyLElRK7TDesC16 @ 45 NONAME - _ZN4Java7Manager8Registry27CWriteableJavaRegistryEntry8SetNameLERK7TDesC16 @ 46 NONAME - _ZN4Java7Manager8Registry27CWriteableJavaRegistryEntry8SetTypeLENS_22TJavaRegistryEntryTypeE @ 47 NONAME - _ZN4Java7Manager8Registry27CWriteableJavaRegistryEntry9SetDriveLERK12TDriveNumber @ 48 NONAME - _ZN4Java7Manager8Registry27CWriteableJavaRegistryEntryC1ERK4TUid @ 49 NONAME - _ZN4Java7Manager8Registry27CWriteableJavaRegistryEntryC2ERK4TUid @ 50 NONAME + _ZN4Java7Manager8Registry27CWriteableJavaRegistryEntry12SetPropertyLEPNS1_13CJavaPropertyE @ 39 NONAME ABSENT + _ZN4Java7Manager8Registry27CWriteableJavaRegistryEntry12SetPropertyLElRK7TDesC16 @ 40 NONAME ABSENT + _ZN4Java7Manager8Registry27CWriteableJavaRegistryEntry14DeletePropertyEi @ 41 NONAME ABSENT + _ZN4Java7Manager8Registry27CWriteableJavaRegistryEntry19SetBooleanPropertyLEli @ 42 NONAME ABSENT + _ZN4Java7Manager8Registry27CWriteableJavaRegistryEntry19SetIntegerPropertyLEll @ 43 NONAME ABSENT + _ZN4Java7Manager8Registry27CWriteableJavaRegistryEntry20AddCertificateChainLERK6TDesC8 @ 44 NONAME ABSENT + _ZN4Java7Manager8Registry27CWriteableJavaRegistryEntry22SetDescriptorPropertyLElRK7TDesC16 @ 45 NONAME ABSENT + _ZN4Java7Manager8Registry27CWriteableJavaRegistryEntry8SetNameLERK7TDesC16 @ 46 NONAME ABSENT + _ZN4Java7Manager8Registry27CWriteableJavaRegistryEntry8SetTypeLENS_22TJavaRegistryEntryTypeE @ 47 NONAME ABSENT + _ZN4Java7Manager8Registry27CWriteableJavaRegistryEntry9SetDriveLERK12TDriveNumber @ 48 NONAME ABSENT + _ZN4Java7Manager8Registry27CWriteableJavaRegistryEntryC1ERK4TUid @ 49 NONAME ABSENT + _ZN4Java7Manager8Registry27CWriteableJavaRegistryEntryC2ERK4TUid @ 50 NONAME ABSENT _ZN4Java7Manager8Registry27CWriteableJavaRegistryEntryD0Ev @ 51 NONAME _ZN4Java7Manager8Registry27CWriteableJavaRegistryEntryD1Ev @ 52 NONAME _ZN4Java7Manager8Registry27CWriteableJavaRegistryEntryD2Ev @ 53 NONAME - _ZN4Java7Manager8Registry34CWriteableJavaRegistryPackageEntry10SetVendorLERK7TDesC16 @ 54 NONAME - _ZN4Java7Manager8Registry34CWriteableJavaRegistryPackageEntry11SetVersionLERK11TAppVersion @ 55 NONAME - _ZN4Java7Manager8Registry34CWriteableJavaRegistryPackageEntry12SetPropertyLEPNS1_13CJavaPropertyE @ 56 NONAME - _ZN4Java7Manager8Registry34CWriteableJavaRegistryPackageEntry17AddEmbeddedEntryLERK4TUid @ 57 NONAME - _ZN4Java7Manager8Registry34CWriteableJavaRegistryPackageEntry17SetInstallPluginLERK6TDesC8 @ 58 NONAME - _ZN4Java7Manager8Registry34CWriteableJavaRegistryPackageEntry17SetUninstallableLEi @ 59 NONAME - _ZN4Java7Manager8Registry34CWriteableJavaRegistryPackageEntry18SetDownloadPluginLERK6TDesC8 @ 60 NONAME - _ZN4Java7Manager8Registry34CWriteableJavaRegistryPackageEntry20RemoveEmbeddedEntryLERK4TUid @ 61 NONAME - _ZN4Java7Manager8Registry34CWriteableJavaRegistryPackageEntry4NewLERK4TUid @ 62 NONAME - _ZN4Java7Manager8Registry34CWriteableJavaRegistryPackageEntry5NewLCERK4TUid @ 63 NONAME - _ZN4Java7Manager8Registry34CWriteableJavaRegistryPackageEntry8SetSizeLEi @ 64 NONAME - _ZN4Java7Manager8Registry34CWriteableJavaRegistryPackageEntryC1ERK4TUid @ 65 NONAME - _ZN4Java7Manager8Registry34CWriteableJavaRegistryPackageEntryC2ERK4TUid @ 66 NONAME + _ZN4Java7Manager8Registry34CWriteableJavaRegistryPackageEntry10SetVendorLERK7TDesC16 @ 54 NONAME ABSENT + _ZN4Java7Manager8Registry34CWriteableJavaRegistryPackageEntry11SetVersionLERK11TAppVersion @ 55 NONAME ABSENT + _ZN4Java7Manager8Registry34CWriteableJavaRegistryPackageEntry12SetPropertyLEPNS1_13CJavaPropertyE @ 56 NONAME ABSENT + _ZN4Java7Manager8Registry34CWriteableJavaRegistryPackageEntry17AddEmbeddedEntryLERK4TUid @ 57 NONAME ABSENT + _ZN4Java7Manager8Registry34CWriteableJavaRegistryPackageEntry17SetInstallPluginLERK6TDesC8 @ 58 NONAME ABSENT + _ZN4Java7Manager8Registry34CWriteableJavaRegistryPackageEntry17SetUninstallableLEi @ 59 NONAME ABSENT + _ZN4Java7Manager8Registry34CWriteableJavaRegistryPackageEntry18SetDownloadPluginLERK6TDesC8 @ 60 NONAME ABSENT + _ZN4Java7Manager8Registry34CWriteableJavaRegistryPackageEntry20RemoveEmbeddedEntryLERK4TUid @ 61 NONAME ABSENT + _ZN4Java7Manager8Registry34CWriteableJavaRegistryPackageEntry4NewLERK4TUid @ 62 NONAME ABSENT + _ZN4Java7Manager8Registry34CWriteableJavaRegistryPackageEntry5NewLCERK4TUid @ 63 NONAME ABSENT + _ZN4Java7Manager8Registry34CWriteableJavaRegistryPackageEntry8SetSizeLEi @ 64 NONAME ABSENT + _ZN4Java7Manager8Registry34CWriteableJavaRegistryPackageEntryC1ERK4TUid @ 65 NONAME ABSENT + _ZN4Java7Manager8Registry34CWriteableJavaRegistryPackageEntryC2ERK4TUid @ 66 NONAME ABSENT _ZN4Java7Manager8Registry34CWriteableJavaRegistryPackageEntryD0Ev @ 67 NONAME _ZN4Java7Manager8Registry34CWriteableJavaRegistryPackageEntryD1Ev @ 68 NONAME _ZN4Java7Manager8Registry34CWriteableJavaRegistryPackageEntryD2Ev @ 69 NONAME - _ZN4Java7Manager8Registry38CWriteableJavaRegistryApplicationEntry11SetVisibleLEi @ 70 NONAME - _ZN4Java7Manager8Registry38CWriteableJavaRegistryApplicationEntry12SetResidentLEi @ 71 NONAME - _ZN4Java7Manager8Registry38CWriteableJavaRegistryApplicationEntry13SetGroupNameLERK7TDesC16 @ 72 NONAME - _ZN4Java7Manager8Registry38CWriteableJavaRegistryApplicationEntry13SetStartableLEi @ 73 NONAME - _ZN4Java7Manager8Registry38CWriteableJavaRegistryApplicationEntry21SetInstallPackageUidLERK4TUid @ 74 NONAME - _ZN4Java7Manager8Registry38CWriteableJavaRegistryApplicationEntry4NewLERK4TUid @ 75 NONAME - _ZN4Java7Manager8Registry38CWriteableJavaRegistryApplicationEntry5NewLCERK4TUid @ 76 NONAME - _ZN4Java7Manager8Registry38CWriteableJavaRegistryApplicationEntryC1ERK4TUid @ 77 NONAME - _ZN4Java7Manager8Registry38CWriteableJavaRegistryApplicationEntryC2ERK4TUid @ 78 NONAME + _ZN4Java7Manager8Registry38CWriteableJavaRegistryApplicationEntry11SetVisibleLEi @ 70 NONAME ABSENT + _ZN4Java7Manager8Registry38CWriteableJavaRegistryApplicationEntry12SetResidentLEi @ 71 NONAME ABSENT + _ZN4Java7Manager8Registry38CWriteableJavaRegistryApplicationEntry13SetGroupNameLERK7TDesC16 @ 72 NONAME ABSENT + _ZN4Java7Manager8Registry38CWriteableJavaRegistryApplicationEntry13SetStartableLEi @ 73 NONAME ABSENT + _ZN4Java7Manager8Registry38CWriteableJavaRegistryApplicationEntry21SetInstallPackageUidLERK4TUid @ 74 NONAME ABSENT + _ZN4Java7Manager8Registry38CWriteableJavaRegistryApplicationEntry4NewLERK4TUid @ 75 NONAME ABSENT + _ZN4Java7Manager8Registry38CWriteableJavaRegistryApplicationEntry5NewLCERK4TUid @ 76 NONAME ABSENT + _ZN4Java7Manager8Registry38CWriteableJavaRegistryApplicationEntryC1ERK4TUid @ 77 NONAME ABSENT + _ZN4Java7Manager8Registry38CWriteableJavaRegistryApplicationEntryC2ERK4TUid @ 78 NONAME ABSENT _ZNK4Java13CJavaRegistry14RegistryEntryLERK4TUid @ 79 NONAME _ZNK4Java13CJavaRegistry20RegistryEntryExistsLERK4TUid @ 80 NONAME _ZNK4Java13CJavaRegistry21GetRegistryEntryUidsLENS_22TJavaRegistryEntryTypeER6RArrayI4TUidE @ 81 NONAME @@ -99,9 +99,9 @@ _ZNK4Java29CJavaRegistryApplicationEntry13PackageEntryLEv @ 98 NONAME _ZNK4Java29CJavaRegistryApplicationEntry9GroupNameEv @ 99 NONAME _ZNK4Java29CJavaRegistryApplicationEntry9IsVisibleEv @ 100 NONAME - _ZNK4Java7Manager8Registry13CJavaProperty2IdEv @ 101 NONAME - _ZNK4Java7Manager8Registry13CJavaProperty5ValueEv @ 102 NONAME - _ZNK4Java7Manager8Registry22CWriteableJavaRegistry13GenerateUidsLER6RArrayI4TUidEi @ 103 NONAME + _ZNK4Java7Manager8Registry13CJavaProperty2IdEv @ 101 NONAME ABSENT + _ZNK4Java7Manager8Registry13CJavaProperty5ValueEv @ 102 NONAME ABSENT + _ZNK4Java7Manager8Registry22CWriteableJavaRegistry13GenerateUidsLER6RArrayI4TUidEi @ 103 NONAME ABSENT _ZNK4Java7Manager8Registry22CWriteableJavaRegistry14RegistryEntryLERK4TUid @ 104 NONAME ABSENT _ZNK4Java7Manager8Registry22CWriteableJavaRegistry17SetRegistryEntryLERKNS1_27CWriteableJavaRegistryEntryE @ 105 NONAME ABSENT _ZNK4Java7Manager8Registry22CWriteableJavaRegistry20RegistryEntryExistsLERK4TUid @ 106 NONAME @@ -109,55 +109,55 @@ _ZNK4Java7Manager8Registry22CWriteableJavaRegistry21GetRegistryEntryUidsLENS_22TJavaRegistryEntryTypeER6RArrayI4TUidE @ 108 NONAME ABSENT _ZNK4Java7Manager8Registry22CWriteableJavaRegistry21GetRegistryEntryUidsLER6RArrayI4TUidE @ 109 NONAME _ZNK4Java7Manager8Registry22CWriteableJavaRegistry21GetRegistryEntryUidsLERK13RPointerArrayINS1_13CJavaPropertyEER6RArrayI4TUidE @ 110 NONAME ABSENT - _ZNK4Java7Manager8Registry22CWriteableJavaRegistry25DecideEntryTypeAndCreateLERK4TUidPNS1_18CJavaPropertyArrayE @ 111 NONAME - _ZNK4Java7Manager8Registry26CJavaRegistryBackupSupport14ChangeBURStateERKNS1_12TBackupStateE @ 112 NONAME - _ZNK4Java7Manager8Registry26CJavaRegistryBackupSupport21EntriesExistForDriveLERK12TDriveNumber @ 113 NONAME - _ZNK4Java7Manager8Registry27CWriteableJavaRegistryEntry15BooleanPropertyEli @ 114 NONAME - _ZNK4Java7Manager8Registry27CWriteableJavaRegistryEntry15IntegerPropertyEll @ 115 NONAME + _ZNK4Java7Manager8Registry22CWriteableJavaRegistry25DecideEntryTypeAndCreateLERK4TUidPNS1_18CJavaPropertyArrayE @ 111 NONAME ABSENT + _ZNK4Java7Manager8Registry26CJavaRegistryBackupSupport14ChangeBURStateERKNS1_12TBackupStateE @ 112 NONAME ABSENT + _ZNK4Java7Manager8Registry26CJavaRegistryBackupSupport21EntriesExistForDriveLERK12TDriveNumber @ 113 NONAME ABSENT + _ZNK4Java7Manager8Registry27CWriteableJavaRegistryEntry15BooleanPropertyEli @ 114 NONAME ABSENT + _ZNK4Java7Manager8Registry27CWriteableJavaRegistryEntry15IntegerPropertyEll @ 115 NONAME ABSENT _ZNK4Java7Manager8Registry27CWriteableJavaRegistryEntry16CertificateChainEi @ 116 NONAME - _ZNK4Java7Manager8Registry27CWriteableJavaRegistryEntry16GetPropertyIndexEl @ 117 NONAME + _ZNK4Java7Manager8Registry27CWriteableJavaRegistryEntry16GetPropertyIndexEl @ 117 NONAME ABSENT _ZNK4Java7Manager8Registry27CWriteableJavaRegistryEntry25NumberOfCertificateChainsEv @ 118 NONAME _ZNK4Java7Manager8Registry27CWriteableJavaRegistryEntry3UidEv @ 119 NONAME _ZNK4Java7Manager8Registry27CWriteableJavaRegistryEntry4NameEv @ 120 NONAME _ZNK4Java7Manager8Registry27CWriteableJavaRegistryEntry4TypeEv @ 121 NONAME _ZNK4Java7Manager8Registry27CWriteableJavaRegistryEntry5DriveEv @ 122 NONAME - _ZNK4Java7Manager8Registry27CWriteableJavaRegistryEntry8PropertyEl @ 123 NONAME - _ZNK4Java7Manager8Registry34CWriteableJavaRegistryPackageEntry13InstallPluginEv @ 124 NONAME - _ZNK4Java7Manager8Registry34CWriteableJavaRegistryPackageEntry14DownloadPluginEv @ 125 NONAME + _ZNK4Java7Manager8Registry27CWriteableJavaRegistryEntry8PropertyEl @ 123 NONAME ABSENT + _ZNK4Java7Manager8Registry34CWriteableJavaRegistryPackageEntry13InstallPluginEv @ 124 NONAME ABSENT + _ZNK4Java7Manager8Registry34CWriteableJavaRegistryPackageEntry14DownloadPluginEv @ 125 NONAME ABSENT _ZNK4Java7Manager8Registry34CWriteableJavaRegistryPackageEntry15IsUninstallableEv @ 126 NONAME _ZNK4Java7Manager8Registry34CWriteableJavaRegistryPackageEntry18GetEmbeddedEntriesER6RArrayI4TUidE @ 127 NONAME _ZNK4Java7Manager8Registry34CWriteableJavaRegistryPackageEntry19EmbeddedEntryByUidLERK4TUid @ 128 NONAME _ZNK4Java7Manager8Registry34CWriteableJavaRegistryPackageEntry22EmbeddedEntryByNumberLEi @ 129 NONAME _ZNK4Java7Manager8Registry34CWriteableJavaRegistryPackageEntry23NumberOfEmbeddedEntriesEv @ 130 NONAME - _ZNK4Java7Manager8Registry34CWriteableJavaRegistryPackageEntry4SizeEv @ 131 NONAME + _ZNK4Java7Manager8Registry34CWriteableJavaRegistryPackageEntry4SizeEv @ 131 NONAME ABSENT _ZNK4Java7Manager8Registry34CWriteableJavaRegistryPackageEntry6VendorEv @ 132 NONAME _ZNK4Java7Manager8Registry34CWriteableJavaRegistryPackageEntry7VersionEv @ 133 NONAME _ZNK4Java7Manager8Registry38CWriteableJavaRegistryApplicationEntry10IsResidentEv @ 134 NONAME _ZNK4Java7Manager8Registry38CWriteableJavaRegistryApplicationEntry11IsStartableEv @ 135 NONAME _ZNK4Java7Manager8Registry38CWriteableJavaRegistryApplicationEntry13PackageEntryLEv @ 136 NONAME - _ZNK4Java7Manager8Registry38CWriteableJavaRegistryApplicationEntry17InstallPackageUidEv @ 137 NONAME - _ZNK4Java7Manager8Registry38CWriteableJavaRegistryApplicationEntry9GroupNameEv @ 138 NONAME + _ZNK4Java7Manager8Registry38CWriteableJavaRegistryApplicationEntry17InstallPackageUidEv @ 137 NONAME ABSENT + _ZNK4Java7Manager8Registry38CWriteableJavaRegistryApplicationEntry9GroupNameEv @ 138 NONAME ABSENT _ZNK4Java7Manager8Registry38CWriteableJavaRegistryApplicationEntry9IsVisibleEv @ 139 NONAME _ZTIN4Java13CJavaRegistryE @ 140 NONAME ; ## _ZTIN4Java18CJavaRegistryEntryE @ 141 NONAME ; ## - _ZTIN4Java7Manager8Registry13CJavaPropertyE @ 142 NONAME ; ## - _ZTIN4Java7Manager8Registry18CJavaPropertyArrayE @ 143 NONAME ; ## + _ZTIN4Java7Manager8Registry13CJavaPropertyE @ 142 NONAME ABSENT ; ## + _ZTIN4Java7Manager8Registry18CJavaPropertyArrayE @ 143 NONAME ABSENT ; ## _ZTIN4Java7Manager8Registry22CWriteableJavaRegistryE @ 144 NONAME ; ## - _ZTIN4Java7Manager8Registry26CJavaRegistryBackupSupportE @ 145 NONAME ; ## + _ZTIN4Java7Manager8Registry26CJavaRegistryBackupSupportE @ 145 NONAME ABSENT ; ## _ZTIN4Java7Manager8Registry27CWriteableJavaRegistryEntryE @ 146 NONAME ; ## _ZTIN4Java7Manager8Registry34CWriteableJavaRegistryPackageEntryE @ 147 NONAME ; ## _ZTVN4Java13CJavaRegistryE @ 148 NONAME ; ## _ZTVN4Java18CJavaRegistryEntryE @ 149 NONAME ; ## - _ZTVN4Java7Manager8Registry13CJavaPropertyE @ 150 NONAME ; ## - _ZTVN4Java7Manager8Registry18CJavaPropertyArrayE @ 151 NONAME ; ## + _ZTVN4Java7Manager8Registry13CJavaPropertyE @ 150 NONAME ABSENT ; ## + _ZTVN4Java7Manager8Registry18CJavaPropertyArrayE @ 151 NONAME ABSENT ; ## _ZTVN4Java7Manager8Registry22CWriteableJavaRegistryE @ 152 NONAME ; ## - _ZTVN4Java7Manager8Registry26CJavaRegistryBackupSupportE @ 153 NONAME ; ## + _ZTVN4Java7Manager8Registry26CJavaRegistryBackupSupportE @ 153 NONAME ABSENT ; ## _ZTVN4Java7Manager8Registry27CWriteableJavaRegistryEntryE @ 154 NONAME ; ## _ZTVN4Java7Manager8Registry34CWriteableJavaRegistryPackageEntryE @ 155 NONAME ; ## - _ZN4Java7Manager8Registry38CWriteableJavaRegistryApplicationEntry12SetPropertyLEPNS1_13CJavaPropertyE @ 156 NONAME + _ZN4Java7Manager8Registry38CWriteableJavaRegistryApplicationEntry12SetPropertyLEPNS1_13CJavaPropertyE @ 156 NONAME ABSENT _ZTIN4Java7Manager8Registry38CWriteableJavaRegistryApplicationEntryE @ 157 NONAME ; ## _ZTVN4Java7Manager8Registry38CWriteableJavaRegistryApplicationEntryE @ 158 NONAME ; ## - _ZN4Java7Manager8Registry27CWriteableJavaRegistryEntry16SetDrmContentIdLERK7TDesC16 @ 159 NONAME + _ZN4Java7Manager8Registry27CWriteableJavaRegistryEntry16SetDrmContentIdLERK7TDesC16 @ 159 NONAME ABSENT _ZNK4Java18CJavaRegistryEntry12DrmContentIdEv @ 160 NONAME _ZNK4Java7Manager8Registry27CWriteableJavaRegistryEntry12DrmContentIdEv @ 161 NONAME _ZN4Java7Manager8Registry14CJavaAttribute4NewLERK7TDesC16S5_i @ 162 NONAME ABSENT @@ -174,11 +174,11 @@ _ZN4Java7Manager8Registry15CJavaAttributesD2Ev @ 173 NONAME ABSENT _ZNK4Java7Manager8Registry27CWriteableJavaRegistryEntry10AttributeLERK7TDesC16 @ 174 NONAME _ZNK4Java7Manager8Registry27CWriteableJavaRegistryEntry11AttributesLEv @ 175 NONAME - _ZN4Java7Manager8Registry27CWriteableJavaRegistryEntry20SerializeAttributesLEv @ 176 NONAME + _ZN4Java7Manager8Registry27CWriteableJavaRegistryEntry20SerializeAttributesLEv @ 176 NONAME ABSENT _ZNK4Java7Manager8Registry34CWriteableJavaRegistryPackageEntry10AttributeLERK7TDesC16 @ 177 NONAME _ZNK4Java7Manager8Registry34CWriteableJavaRegistryPackageEntry11AttributesLEv @ 178 NONAME - _ZN4Java7Manager8Registry34CWriteableJavaRegistryPackageEntry13SetAttributeLERK7TDesC16S5_i @ 179 NONAME - _ZN4Java7Manager8Registry34CWriteableJavaRegistryPackageEntry20SerializeAttributesLEv @ 180 NONAME + _ZN4Java7Manager8Registry34CWriteableJavaRegistryPackageEntry13SetAttributeLERK7TDesC16S5_i @ 179 NONAME ABSENT + _ZN4Java7Manager8Registry34CWriteableJavaRegistryPackageEntry20SerializeAttributesLEv @ 180 NONAME ABSENT _ZNK4Java7Manager8Registry38CWriteableJavaRegistryApplicationEntry10AttributeLERK7TDesC16 @ 181 NONAME _ZNK4Java7Manager8Registry38CWriteableJavaRegistryApplicationEntry11AttributesLEv @ 182 NONAME _ZN4Java7Manager8Registry38CWriteableJavaRegistryApplicationEntryD0Ev @ 183 NONAME @@ -191,19 +191,30 @@ _ZNK4Java7Manager8Registry15CJavaAttributes4SizeEv @ 190 NONAME ABSENT _ZNK4Java7Manager8Registry15CJavaAttributes5CountEv @ 191 NONAME ABSENT _ZNK4Java7Manager8Registry15CJavaAttributes9AttributeERK7TDesC16 @ 192 NONAME ABSENT - _ZNK4Java7Manager8Registry22CWriteableJavaRegistry17SetRegistryEntryLERNS1_27CWriteableJavaRegistryEntryE @ 193 NONAME + _ZNK4Java7Manager8Registry22CWriteableJavaRegistry17SetRegistryEntryLERNS1_27CWriteableJavaRegistryEntryE @ 193 NONAME ABSENT _ZTIN4Java7Manager8Registry14CJavaAttributeE @ 194 NONAME ABSENT ; ## _ZTIN4Java7Manager8Registry15CJavaAttributesE @ 195 NONAME ABSENT ; ## _ZTVN4Java7Manager8Registry14CJavaAttributeE @ 196 NONAME ABSENT ; ## _ZTVN4Java7Manager8Registry15CJavaAttributesE @ 197 NONAME ABSENT ; ## - _ZN4Java14CJavaAttribute4NewLERK7TDesC16S3_i @ 198 NONAME ABSENT - _ZN4Java14CJavaAttribute5NewLCERK7TDesC16S3_i @ 199 NONAME ABSENT + _ZN4Java14CJavaAttribute4NewLERK7TDesC16S3_i @ 198 NONAME + _ZN4Java14CJavaAttribute5NewLCERK7TDesC16S3_i @ 199 NONAME _ZN4Java7Manager8Registry15CJavaAttributes13AddAttributeLEPNS_14MJavaAttributeE @ 200 NONAME ABSENT - _ZTIN4Java14CJavaAttributeE @ 201 NONAME ABSENT ; ## - _ZTVN4Java14CJavaAttributeE @ 202 NONAME ABSENT ; ## + _ZTIN4Java14CJavaAttributeE @ 201 NONAME ; ## + _ZTVN4Java14CJavaAttributeE @ 202 NONAME ; ## _ZNK4Java7Manager8Registry22CWriteableJavaRegistry14RegistryEntryLERK4TUidi @ 203 NONAME - _ZNK4Java7Manager8Registry22CWriteableJavaRegistry20RemoveRegistryEntryLERK4TUidii @ 204 NONAME + _ZNK4Java7Manager8Registry22CWriteableJavaRegistry20RemoveRegistryEntryLERK4TUidii @ 204 NONAME ABSENT _ZNK4Java7Manager8Registry22CWriteableJavaRegistry21GetRegistryEntryUidsLENS_22TJavaRegistryEntryTypeER6RArrayI4TUidEi @ 205 NONAME - _ZNK4Java7Manager8Registry22CWriteableJavaRegistry21GetRegistryEntryUidsLERK13RPointerArrayINS1_13CJavaPropertyEER6RArrayI4TUidEi @ 206 NONAME + _ZNK4Java7Manager8Registry22CWriteableJavaRegistry21GetRegistryEntryUidsLERK13RPointerArrayINS1_13CJavaPropertyEER6RArrayI4TUidEi @ 206 NONAME ABSENT _ZNK4Java25CJavaRegistryPackageEntry17UsedUserDiskSpaceEv @ 207 NONAME + _ZNK4Java7Manager8Registry34CWriteableJavaRegistryPackageEntry17UsedUserDiskSpaceEv @ 208 NONAME + _ZNK4Java7Manager8Registry34CWriteableJavaRegistryPackageEntry14IsPreinstalledEv @ 209 NONAME + _ZNK4Java25CJavaRegistryPackageEntry14IsPreinstalledEv @ 210 NONAME + _ZN4Java14CJavaAttributeD0Ev @ 211 NONAME + _ZN4Java14CJavaAttributeD1Ev @ 212 NONAME + _ZN4Java14CJavaAttributeD2Ev @ 213 NONAME + _ZN4Java18CJavaRegistryEntryD0Ev @ 214 NONAME ABSENT + _ZN4Java18CJavaRegistryEntryD1Ev @ 215 NONAME ABSENT + _ZN4Java18CJavaRegistryEntryD2Ev @ 216 NONAME ABSENT + _ZThn4_N4Java14CJavaAttributeD0Ev @ 217 NONAME + _ZThn4_N4Java14CJavaAttributeD1Ev @ 218 NONAME diff -r 4ad59aaee882 -r 2f468c1958d0 java_stubs/javaregistry/clientserver/client/inc/writeablejavaregistrypackageentry.h --- a/java_stubs/javaregistry/clientserver/client/inc/writeablejavaregistrypackageentry.h Fri Sep 17 08:28:21 2010 +0300 +++ b/java_stubs/javaregistry/clientserver/client/inc/writeablejavaregistrypackageentry.h Mon Oct 04 00:10:53 2010 +0300 @@ -364,6 +364,30 @@ */ IMPORT_C virtual void SerializeAttributesL(); + /** + * CWriteableJavaRegistryPackageEntry::UsedUserDiskSpace gets the + * amount of disk space taken by the installed application. + * + * @since S60 v5.1 + * @return Returns the size of used disk space in bytes. + */ + IMPORT_C TInt64 UsedUserDiskSpace() const; + + /** + * Tells if the application package is pre-installed. + * + * If a pre-installed application package is upgraded, + * it remains marked as pre-installed. + * + * If a pre-installed application package is uninstalled + * and later installed again, it is no more marked as + * pre-installed. + * + * @since S60 v5.1 + * @return ETrue if the application suite is pre-installed, + * EFalse otherwise. + */ + IMPORT_C TBool IsPreinstalled() const; protected: diff -r 4ad59aaee882 -r 2f468c1958d0 java_stubs/javaregistry/clientserver/client/src/javaattribute.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/java_stubs/javaregistry/clientserver/client/src/javaattribute.cpp Mon Oct 04 00:10:53 2010 +0300 @@ -0,0 +1,82 @@ +/* +* Copyright (c) 2010 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: CJavaAttribute stub. +* +*/ + + +#include "javaattribute.h" + +using namespace Java; + +// ============================ MEMBER FUNCTIONS ============================== + +// --------------------------------------------------------------------------- +// CJavaAttribute::NewL +// Constructs a CJavaAttribute object. +// --------------------------------------------------------------------------- +EXPORT_C CJavaAttribute* CJavaAttribute:: +NewL(const TDesC& /*aName*/, const TDesC& /*aValue*/, TBool /*aTrusted*/) +{ + User::Leave(KErrNotSupported); + return NULL; +} + +// --------------------------------------------------------------------------- +// CJavaAttribute::NewLC +// Constructs a CJavaAttribute object. +// --------------------------------------------------------------------------- +EXPORT_C CJavaAttribute* CJavaAttribute:: +NewLC(const TDesC& /*aName*/, const TDesC& /*aValue*/, TBool /*aTrusted*/) +{ + User::Leave(KErrNotSupported); + return NULL; +} + +// --------------------------------------------------------------------------- +// CJavaAttribute::~MJavaAttribute +// --------------------------------------------------------------------------- +EXPORT_C CJavaAttribute::~CJavaAttribute() +{ +} + +// --------------------------------------------------------------------------- +// CJavaAttribute::Name +// Returns name of attribute +// --------------------------------------------------------------------------- +const TDesC& CJavaAttribute::Name() const +{ + return KNullDesC; +} + +// --------------------------------------------------------------------------- +// CJavaAttribute::Value +// Returns attribute's value +// --------------------------------------------------------------------------- +const TDesC& CJavaAttribute::Value() const +{ + return KNullDesC; +} + +// --------------------------------------------------------------------------- +// CJavaAttribute::Trusted +// Returns if attribute is trusted +// --------------------------------------------------------------------------- +TBool CJavaAttribute::Trusted() const +{ + return false; +} + + +// End of File diff -r 4ad59aaee882 -r 2f468c1958d0 java_stubs/javaregistry/clientserver/client/src/javaregistrypackageentry.cpp --- a/java_stubs/javaregistry/clientserver/client/src/javaregistrypackageentry.cpp Fri Sep 17 08:28:21 2010 +0300 +++ b/java_stubs/javaregistry/clientserver/client/src/javaregistrypackageentry.cpp Mon Oct 04 00:10:53 2010 +0300 @@ -119,3 +119,11 @@ { return 0; } + +// --------------------------------------------------------------------------- +// CJavaRegistryPackageEntry::IsPreinstalled +// --------------------------------------------------------------------------- +EXPORT_C TBool CJavaRegistryPackageEntry::IsPreinstalled() const +{ + return EFalse; +} diff -r 4ad59aaee882 -r 2f468c1958d0 java_stubs/javaregistry/clientserver/client/src/writeablejavaregistrypackageentry.cpp --- a/java_stubs/javaregistry/clientserver/client/src/writeablejavaregistrypackageentry.cpp Fri Sep 17 08:28:21 2010 +0300 +++ b/java_stubs/javaregistry/clientserver/client/src/writeablejavaregistrypackageentry.cpp Mon Oct 04 00:10:53 2010 +0300 @@ -301,3 +301,20 @@ { } + +// --------------------------------------------------------------------------- +// CWriteableJavaRegistryPackageEntry::UsedUserDiskSpace +// --------------------------------------------------------------------------- +EXPORT_C TInt64 CWriteableJavaRegistryPackageEntry::UsedUserDiskSpace() const +{ + return 0; +} + +// --------------------------------------------------------------------------- +// CWriteableJavaRegistryPackageEntry::IsPreinstalled +// --------------------------------------------------------------------------- +EXPORT_C TBool CWriteableJavaRegistryPackageEntry::IsPreinstalled() const +{ + return EFalse; +} + diff -r 4ad59aaee882 -r 2f468c1958d0 javacommons/connectionmanager/src.s60/connectionmanager.cpp --- a/javacommons/connectionmanager/src.s60/connectionmanager.cpp Fri Sep 17 08:28:21 2010 +0300 +++ b/javacommons/connectionmanager/src.s60/connectionmanager.cpp Mon Oct 04 00:10:53 2010 +0300 @@ -65,8 +65,8 @@ EXPORT_C bool ConnectionManager::isIapDefault(TUint32 aMatchIapId, TUint32 aDestId, bool aDefault) { - LOG(ESOCKET,EInfo,"+ConnectionManager::isIapDefault"); - bool retVal = false; + LOG(ESOCKET,EInfo,"+ConnectionManager::isIapDefault"); + bool retVal = false; TRAPD(err,retVal = checkIapDefaultL(aMatchIapId,aDestId,aDefault)); if(err!=KErrNone) { @@ -78,7 +78,7 @@ bool ConnectionManager::checkIapDefaultL(TUint32 aMatchIapId, TUint32 aDestId, bool aDefault) { - + LOG(ESOCKET,EInfo,"+ConnectionManager::checkIapDefaultL"); TUint32 id = aDestId; TUint32 tmpapId; @@ -118,9 +118,9 @@ return true; } } - return false; - - + return false; + + } // --------------------------------------------------------------------------- @@ -304,7 +304,7 @@ { JavaStorageApplicationEntry_t::const_iterator findIterator = entries.find(attribute); - if (findIterator != entries.end()) + if (findIterator != entries.end() && findIterator->entryValue().length()>0 ) { JavaStorageEntry sourceEntry = (*findIterator); temp.append(sourceEntry.entryValue().c_str()); diff -r 4ad59aaee882 -r 2f468c1958d0 javacommons/security/javasrc.cdc/com/nokia/mj/impl/security/midp/authorization/PermissionGranter.java --- a/javacommons/security/javasrc.cdc/com/nokia/mj/impl/security/midp/authorization/PermissionGranter.java Fri Sep 17 08:28:21 2010 +0300 +++ b/javacommons/security/javasrc.cdc/com/nokia/mj/impl/security/midp/authorization/PermissionGranter.java Mon Oct 04 00:10:53 2010 +0300 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2008-2010 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" @@ -483,8 +483,8 @@ || (net_access == true && read_user_data == true) || (messaging == true && multimedia == true) || (messaging == true && read_user_data == true)) ? - new Id("settings_inst_query_perm_net", "N/A") : - new Id("settings_inst_query_perm_sec", "N/A")); + new Id("settings_inst_query_perm_net", "info_inst_query_perm_net") : + new Id("settings_inst_query_perm_sec", "info_inst_query_perm_sec")); iBlanketPermissionsDetails.put(msUidKey, UserSecuritySettingsImpl.getLocalizedString( diff -r 4ad59aaee882 -r 2f468c1958d0 javacommons/security/javasrc/com/nokia/mj/impl/security/midp/storage/SecurityStorage.java --- a/javacommons/security/javasrc/com/nokia/mj/impl/security/midp/storage/SecurityStorage.java Fri Sep 17 08:28:21 2010 +0300 +++ b/javacommons/security/javasrc/com/nokia/mj/impl/security/midp/storage/SecurityStorage.java Mon Oct 04 00:10:53 2010 +0300 @@ -740,9 +740,12 @@ if (data.getRootHashValue() != null && data.getRootHashValue().length() > 0) { + int rootHashLength = (data.getRootHashValue().length() > 8 + ? 8 : data.getRootHashValue().length()); entry.addAttribute(new StorageAttribute( StorageNames.CERT_HASH, - data.getRootHashValue())); + data.getRootHashValue().substring(0, + rootHashLength))); } String validCerts = encodeValidatedChainIndexes( data.getValidatedChainIndexes()); diff -r 4ad59aaee882 -r 2f468c1958d0 javacommons/security/javasrc/com/nokia/mj/impl/security/utils/SecurityPermissionTexts.java --- a/javacommons/security/javasrc/com/nokia/mj/impl/security/utils/SecurityPermissionTexts.java Fri Sep 17 08:28:21 2010 +0300 +++ b/javacommons/security/javasrc/com/nokia/mj/impl/security/utils/SecurityPermissionTexts.java Mon Oct 04 00:10:53 2010 +0300 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2008-2010 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" @@ -29,25 +29,25 @@ private static ResourceLoader iRes = null; // identifiers for the security permission texts - public static final Id CALL_CONTROL = new Id("call_control", "N/A"); - public static final Id NET_ACCESS = new Id("net_access", "N/A"); - public static final Id LOW_LEVEL_NET_ACCESS = new Id("low_level_net_access", "N/A"); - public static final Id MESSAGING = new Id("messaging", "qt_kalle_test_d"); - public static final Id RESTRICTED_MESSAGING = new Id("restricted_messaging", "N/A"); - public static final Id APP_AUTO_INVOCAT = new Id("app_auto_invocat", "N/A"); - public static final Id LOCAL_CONN = new Id("local_conn", "N/A"); - public static final Id MM_RECORD = new Id("mm_record", "N/A"); - public static final Id READ_DATA = new Id("read_data", "N/A"); - public static final Id WRITE_DATA = new Id("write_data", "N/A"); - public static final Id LOCATION = new Id("location", "N/A"); - public static final Id LANDMARKS = new Id("landmarks", "N/A"); - public static final Id AUTH = new Id("auth", "N/A"); - public static final Id BROADCAST = new Id("broadcast", "N/A"); + public static final Id CALL_CONTROL = new Id("call_control", "setlabel_call_control"); + public static final Id NET_ACCESS = new Id("net_access", "setlabel_net_access"); + public static final Id LOW_LEVEL_NET_ACCESS = new Id("low_level_net_access", "setlabel_low_level_net_access"); + public static final Id MESSAGING = new Id("messaging", "setlabel_messaging"); + public static final Id RESTRICTED_MESSAGING = new Id("restricted_messaging", "setlabel_restricted_messaging"); + public static final Id APP_AUTO_INVOCAT = new Id("app_auto_invocat", "setlabel_app_auto_invoc"); + public static final Id LOCAL_CONN = new Id("local_conn", "setlabel_local_conn"); + public static final Id MM_RECORD = new Id("mm_record", "setlabel_mm_record"); + public static final Id READ_DATA = new Id("read_data", "setlabel_read_data"); + public static final Id WRITE_DATA = new Id("write_data", "setlabel_write_data"); + public static final Id LOCATION = new Id("location", "setlabel_location"); + public static final Id LANDMARKS = new Id("landmarks", "setlabel_landmarks"); + public static final Id AUTH = new Id("auth", "setlabel_auth"); + public static final Id BROADCAST = new Id("broadcast", "setlabel_broadcast"); private static final String AVKON_LOC_FILE = "javainstallation"; private static final String AVKON_PREFIX = "qtn_java_inst_perm_"; - private static final String QT_LOC_FILE = "N/A"; - private static final String QT_PREFIX = "N/A"; + private static final String QT_LOC_FILE = "javaruntimeapplicationsettings"; + private static final String QT_PREFIX = "txt_java_sett_"; /** * Creates an instance of the SecurityPermissionTexts diff -r 4ad59aaee882 -r 2f468c1958d0 javacommons/security/javasrc/com/nokia/mj/impl/security/utils/SecurityPromptMessage.java --- a/javacommons/security/javasrc/com/nokia/mj/impl/security/utils/SecurityPromptMessage.java Fri Sep 17 08:28:21 2010 +0300 +++ b/javacommons/security/javasrc/com/nokia/mj/impl/security/utils/SecurityPromptMessage.java Mon Oct 04 00:10:53 2010 +0300 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2008-2010 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" @@ -29,74 +29,73 @@ private static ResourceLoader iRes = null; // identifiers for the security prompt questions - public static final Id QUESTION_ID_NETWORK_USAGE = new Id("network_usage", "N/A"); - public static final Id QUESTION_ID_SMS_OPENING_CONN = new Id("sms_opening_conn", "N/A"); - public static final Id QUESTION_ID_MMS_OPENING_CONN = new Id("mms_opening_conn", "N/A"); - public static final Id QUESTION_ID_CBS_OPENING_CONN = new Id("cbs_opening_conn", "N/A"); - public static final Id QUESTION_ID_SMS_RECEIVING = new Id("sms_receiving", "N/A"); - public static final Id QUESTION_ID_MMS_RECEIVING = new Id("mms_receiving", "N/A"); - public static final Id QUESTION_ID_CBS_RECEIVING = new Id("cbs_receiving", "N/A"); - public static final Id QUESTION_ID_SMS_SENDING = new Id("sms_sending", "N/A"); - public static final Id QUESTION_ID_SMS_SINGLE_SENDING = new Id("sms_single_sending", "N/A"); - public static final Id QUESTION_ID_MMS_SENDING = new Id("mms_sending", "N/A"); - public static final Id QUESTION_ID_MMS_SINGLE_SENDING = new Id("mms_single_sending", "N/A"); - public static final Id QUESTION_ID_MMS_SINGLE_SENDING_MULTIPLE_DESTINATIONS = new Id("mms_single_sending_multiple_destinations", "N/A"); - public static final Id QUESTION_ID_SEND_RECEIVE_MESSAGES = new Id("receive_send_messages", "N/A"); - public static final Id QUESTION_ID_LOCAL_CONNECTIVITY = new Id("local_connectivity", "N/A"); - public static final Id QUESTION_ID_AUDIO_VIDEO_RECORDING = new Id("audio_video_recording", "N/A"); - public static final Id QUESTION_ID_READING_USER_DATA = new Id("reading_user_data", "N/A"); - public static final Id QUESTION_ID_WRITING_USER_DATA = new Id("writing_user_data", "N/A"); - public static final Id QUESTION_ID_READING_FILE = new Id("reading_file", "N/A"); - public static final Id QUESTION_ID_MANAGE_USER_DATA = new Id("manage_user_data", "N/A"); - public static final Id QUESTION_ID_MODIFYING_FILE = new Id("modifying_file", "N/A"); - public static final Id QUESTION_ID_READING_LOCATION_DATA = new Id("reading_location_data", "N/A"); - public static final Id QUESTION_ID_READING_LANDMARK_DATA = new Id("reading_landmark_data", "N/A"); - public static final Id QUESTION_ID_READING_SMARTCARD = new Id("reading_smartcard", "N/A"); - public static final Id QUESTION_ID_AUTH_SERVICES_USAGE = new Id("auth_services_usage", "N/A"); - public static final Id QUESTION_ID_BLUETOOTH_USAGE = new Id("bluetooth_usage", "N/A"); - public static final Id QUESTION_ID_READING_CONTACTS = new Id("reading_contacts", "N/A"); - public static final Id QUESTION_ID_MODIFYING_CONTACTS = new Id("modifying_contacts", "N/A"); - public static final Id QUESTION_ID_READING_EVENTS = new Id("reading_events", "N/A"); - public static final Id QUESTION_ID_MODIFYING_EVENTS = new Id("modifying_events", "N/A"); - public static final Id QUESTION_ID_READING_TODOS = new Id("reading_todos", "N/A"); - public static final Id QUESTION_ID_MODIFYING_TODOS = new Id("modifying_todos", "N/A"); - public static final Id QUESTION_ID_DELETING_ITEM = new Id("deleting_item", "N/A"); - public static final Id QUESTION_ID_UPDATING_ITEM = new Id("updating_item", "N/A"); - public static final Id QUESTION_ID_DELETING_CATEGORY = new Id("deleting_category", "N/A"); - public static final Id QUESTION_ID_UPDATING_CATEGORY = new Id("updating_category", "N/A"); - public static final Id QUESTION_ID_DELETING_UNNAMED_ITEM = new Id("deleting_unnamed_item", "N/A"); - public static final Id QUESTION_ID_UPDATING_UNNAMED_ITEM = new Id("updating_unnamed_item", "N/A"); - public static final Id QUESTION_ID_ADDING_CALENDAR = new Id("adding_calendar", "N/A"); - public static final Id QUESTION_ID_DELETING_CALENDAR = new Id("deleting_calendar", "N/A"); - public static final Id QUESTION_ID_LISTING_CALENDARS = new Id("listing_calendars", "N/A"); - public static final Id QUESTION_ID_ORIENTATION_DATA_USAGE = new Id("orientation_data_usage", "N/A"); - public static final Id QUESTION_ID_POSITIONING_DATA_USAGE = new Id("positioning_data_usage", "N/A"); - public static final Id QUESTION_ID_LANDMARK_DATA_USAGE = new Id("landmark_data_usage", "N/A"); - public static final Id QUESTION_ID_PROXIMITY_LISTENER_REGISTRATION = new Id("proximity_listener_registration", "N/A"); - public static final Id QUESTION_ID_MOBITV_DATA_USAGE = new Id("tv_broadcast_user_data_access", "N/A"); - public static final Id QUESTION_ID_NETWORK_USAGE_VIA_PLAT_REQ = new Id("network_usage_via_plat_req", "N/A"); - public static final Id QUESTION_ID_APP_LAUNCH_VIA_PLAT_REQ = new Id("app_launch_via_plat_req", "N/A"); - public static final Id QUESTION_ID_PUSH_STATIC_REGISTRATION = new Id("push_registration_static", "N/A"); - public static final Id QUESTION_ID_PUSH_DYNAMIC_REGISTRATION = new Id("push_registration_dynamic", "N/A"); - public static final Id QUESTION_ID_AUTO_INVOCATION = new Id("auto_invocation", "N/A"); - public static final Id QUESTION_ID_NDEF_TAG_WRITE = new Id("nfc_ndef_tag_write", "N/A"); - public static final Id QUESTION_ID_APP_AUTO_LAUNCH = new Id("url_start", "N/A"); + public static final Id QUESTION_ID_NETWORK_USAGE = new Id("network_usage", "info_network_usage"); + public static final Id QUESTION_ID_SMS_OPENING_CONN = new Id("sms_opening_conn", "info_sms_opening"); + public static final Id QUESTION_ID_MMS_OPENING_CONN = new Id("mms_opening_conn", "info_mms_opening"); + public static final Id QUESTION_ID_CBS_OPENING_CONN = new Id("cbs_opening_conn", "info_cbs_opening"); + public static final Id QUESTION_ID_SMS_RECEIVING = new Id("sms_receiving", "info_sms_receiving"); + public static final Id QUESTION_ID_MMS_RECEIVING = new Id("mms_receiving", "info_mms_receiving"); + public static final Id QUESTION_ID_CBS_RECEIVING = new Id("cbs_receiving", "info_cbs_receiving"); + public static final Id QUESTION_ID_SMS_SENDING = new Id("sms_sending", "info_sms_sending"); + public static final Id QUESTION_ID_SMS_SINGLE_SENDING = new Id("sms_single_sending", "info_sms_single_sending"); + public static final Id QUESTION_ID_MMS_SINGLE_SENDING = new Id("mms_single_sending", "info_mms_single_sending"); + public static final Id QUESTION_ID_MMS_SINGLE_SENDING_MULTIPLE_DESTINATIONS = new Id("mms_single_sending_multiple_destinations", "info_mms_single_send_multiple_dest"); + public static final Id QUESTION_ID_SEND_RECEIVE_MESSAGES = new Id("receive_send_messages", "info_receive_send_messages"); + public static final Id QUESTION_ID_LOCAL_CONNECTIVITY = new Id("local_connectivity", "info_local_connectivity"); + public static final Id QUESTION_ID_AUDIO_VIDEO_RECORDING = new Id("audio_video_recording", "info_audio_video_recording"); + public static final Id QUESTION_ID_READING_USER_DATA = new Id("reading_user_data", "info_reading_user_data"); + public static final Id QUESTION_ID_WRITING_USER_DATA = new Id("writing_user_data", "info_writing_user_data"); + public static final Id QUESTION_ID_READING_FILE = new Id("reading_file", "info_reading_file"); + public static final Id QUESTION_ID_MANAGE_USER_DATA = new Id("manage_user_data", "info_manage_user_data"); + public static final Id QUESTION_ID_MODIFYING_FILE = new Id("modifying_file", "info_modifying_file"); + public static final Id QUESTION_ID_READING_LOCATION_DATA = new Id("reading_location_data", "info_reading_location_data"); + public static final Id QUESTION_ID_READING_LANDMARK_DATA = new Id("reading_landmark_data", "info_reading_landmark_data"); + public static final Id QUESTION_ID_READING_SMARTCARD = new Id("reading_smartcard", "info_reading_smartcard"); + public static final Id QUESTION_ID_AUTH_SERVICES_USAGE = new Id("auth_services_usage", "info_auth_services_usage"); + public static final Id QUESTION_ID_BLUETOOTH_USAGE = new Id("bluetooth_usage", "info_bluetooth_usage"); + public static final Id QUESTION_ID_READING_CONTACTS = new Id("reading_contacts", "info_reading_contacts"); + public static final Id QUESTION_ID_MODIFYING_CONTACTS = new Id("modifying_contacts", "info_modifying_contacts"); + public static final Id QUESTION_ID_READING_EVENTS = new Id("reading_events", "info_reading_events"); + public static final Id QUESTION_ID_MODIFYING_EVENTS = new Id("modifying_events", "info_modifying_events"); + public static final Id QUESTION_ID_READING_TODOS = new Id("reading_todos", "info_reading_todos"); + public static final Id QUESTION_ID_MODIFYING_TODOS = new Id("modifying_todos", "info_modifying_todos"); + public static final Id QUESTION_ID_DELETING_ITEM = new Id("deleting_item", "info_deleting_item"); + public static final Id QUESTION_ID_UPDATING_ITEM = new Id("updating_item", "info_updating_item"); + public static final Id QUESTION_ID_DELETING_CATEGORY = new Id("deleting_category", "info_deleting_category"); + public static final Id QUESTION_ID_UPDATING_CATEGORY = new Id("updating_category", "info_updating_category"); + public static final Id QUESTION_ID_DELETING_UNNAMED_ITEM = new Id("deleting_unnamed_item", "info_deleting_unnamed_item"); + public static final Id QUESTION_ID_UPDATING_UNNAMED_ITEM = new Id("updating_unnamed_item", "info_updating_unnamed_item"); + public static final Id QUESTION_ID_ADDING_CALENDAR = new Id("adding_calendar", "info_adding_calendar"); + public static final Id QUESTION_ID_DELETING_CALENDAR = new Id("deleting_calendar", "info_deleting_calendar"); + public static final Id QUESTION_ID_LISTING_CALENDARS = new Id("listing_calendars", "listing_calendars"); + public static final Id QUESTION_ID_ORIENTATION_DATA_USAGE = new Id("orientation_data_usage", "info_orientation_data_usage"); + public static final Id QUESTION_ID_POSITIONING_DATA_USAGE = new Id("positioning_data_usage", "info_positioning_data_usage"); + public static final Id QUESTION_ID_LANDMARK_DATA_USAGE = new Id("landmark_data_usage", "info_landmarks_data_usage"); + public static final Id QUESTION_ID_PROXIMITY_LISTENER_REGISTRATION = new Id("proximity_listener_registration", "info_proximity_listener_reg"); + public static final Id QUESTION_ID_MOBITV_DATA_USAGE = new Id("tv_broadcast_user_data_access", "info_tv_broadcast_user_data_access"); + public static final Id QUESTION_ID_NETWORK_USAGE_VIA_PLAT_REQ = new Id("network_usage_via_plat_req", "info_network_usage_via_plat_req"); + public static final Id QUESTION_ID_APP_LAUNCH_VIA_PLAT_REQ = new Id("app_launch_via_plat_req", "info_app_launch_via_plat_req"); + public static final Id QUESTION_ID_PUSH_STATIC_REGISTRATION = new Id("push_registration_static", "info_push_registration_dynamic"); // should be "info_push_registration_static" + public static final Id QUESTION_ID_PUSH_DYNAMIC_REGISTRATION = new Id("push_registration_dynamic", "info_push_registration_dynamic"); + public static final Id QUESTION_ID_AUTO_INVOCATION = new Id("auto_invocation", "info_auto_invocation"); + public static final Id QUESTION_ID_NDEF_TAG_WRITE = new Id("nfc_ndef_tag_write", "info_nfc_ndef_tag_write"); + public static final Id QUESTION_ID_APP_AUTO_LAUNCH = new Id("url_start", "info_url_start"); // identifiers for the security prompt answer options - public static final Id ANSWER_ID_ALLOW = new Id("prompt_allow", "N/A"); - public static final Id ANSWER_ID_DENY = new Id("prompt_deny", "N/A"); - public static final Id ANSWER_ID_YES = new Id("prompt_yes", "N/A"); - public static final Id ANSWER_ID_NO = new Id("prompt_no", "N/A"); + public static final Id ANSWER_ID_ALLOW = new Id("prompt_allow", "button_prompt_allow"); + public static final Id ANSWER_ID_DENY = new Id("prompt_deny", "button_prompt_deny"); + public static final Id ANSWER_ID_YES = new Id("prompt_yes", "N/A"); // not used in 10.1TB + public static final Id ANSWER_ID_NO = new Id("prompt_no", "N/A"); // not used in 10.1TB // general purpose identifiers - public static final Id SECURITY_WARNING_ID = new Id("general_warning", "N/A"); - public static final Id OCSP_WARNING_ID = new Id("ocsp_warning", "N/A"); + public static final Id SECURITY_WARNING_ID = new Id("general_warning", "N/A"); // not used in 10.1TB + public static final Id OCSP_WARNING_ID = new Id("ocsp_warning", "info_ocsp_warning"); // Localised resources private static final String AVKON_LOC_FILE = "javausermessages"; private static final String AVKON_PREFIX = "qtn_java_secur_"; - private static final String QT_LOC_FILE = "N/A"; - private static final String QT_PREFIX = ""; + private static final String QT_LOC_FILE = "javaapplicationsecuritymessages"; + private static final String QT_PREFIX = "txt_java_secur_"; /** * Creates an instance of the SecurityPromptMessage diff -r 4ad59aaee882 -r 2f468c1958d0 javacommons/security/src/midpauthenticationmoduleimpl.cpp --- a/javacommons/security/src/midpauthenticationmoduleimpl.cpp Fri Sep 17 08:28:21 2010 +0300 +++ b/javacommons/security/src/midpauthenticationmoduleimpl.cpp Mon Oct 04 00:10:53 2010 +0300 @@ -54,7 +54,7 @@ /* forward declarations of local/private methods */ static int verify_callback(int, X509_STORE_CTX *); int getErrCode(int); -int verifyCertChain(char **, int, const unsigned char *, int, vector CAs, char *, char *, CERT_DETAILS*); +int verifyCertChain(char **, int, const unsigned char *, int, vector CAs, char *, char *, char *, CERT_DETAILS*); JNIEXPORT jobjectArray JNICALL Java_com_nokia_mj_impl_security_midp_authentication_AuthenticationModule__1validateChainsAndSignatures (JNIEnv * env, jobject, jobjectArray authInfos) @@ -77,6 +77,7 @@ AUTH_INFO* authInfo = NULL; char * jar_hash = NULL; char * root_hash = NULL; + char * root_id = NULL; int validation_result = KDefault; for (int i=0; icert_chain, authInfo->cert_chain_len, (const unsigned char *)authInfo->signature, authInfo->signature_len, CAs, jar_hash, - root_hash, details); + root_hash, root_id, details); if (chain_verification_result == KCertAndSignatureOk) { validation_result = KCertAndSignatureOk; auth_credentials = new AUTH_CREDENTIALS(); auth_credentials->jar_hash = new char[2*SHA_1_DIGEST_LEN + 1]; auth_credentials->root_hash = new char[MD5_DIGEST_LEN + 1]; + auth_credentials->root_id = new char[2*SHA_1_DIGEST_LEN + 1]; memmove(auth_credentials->jar_hash, jar_hash, 2*SHA_1_DIGEST_LEN + 1); memmove(auth_credentials->root_hash, root_hash, MD5_DIGEST_LEN + 1); + memmove(auth_credentials->root_id, root_id, 2*SHA_1_DIGEST_LEN + 1); auth_credentials->chain_index = i+1; auth_credentials->signing_cert = details; all_auth_credentials.push_back(auth_credentials); @@ -115,6 +120,8 @@ jar_hash = NULL; delete[] root_hash; root_hash = NULL; + delete[] root_id; + root_id = NULL; // just record the failure of the chain validation if (chain_verification_result > validation_result) { @@ -179,9 +186,19 @@ std::string protection_domain_name; std::string protection_domain_category; JavaCertStoreHandler::retrieveRootProtDomainInfo( - all_auth_credentials[i]->root_hash, + all_auth_credentials[i]->root_id, protection_domain_name, protection_domain_category); + if (strcmp(protection_domain_name.c_str(),"") == 0) + { + // clean up the root_id + delete[] all_auth_credentials[i]->root_id; + all_auth_credentials[i]->root_id = NULL; + JavaCertStoreHandler::retrieveRootProtDomainInfo( + all_auth_credentials[i]->root_hash, + protection_domain_name, + protection_domain_category); + } if (strcmp(protection_domain_name.c_str(),"")) { // DeveloperCertificates: if domain_category is manufacturer and we have predefined_domain_category use the predefined one @@ -401,7 +418,7 @@ int verifyCertChain(char **cert_chain, int no_certs, const unsigned char * sig, int sig_len, vector CAs, char * jar_hash, - char * root_hash, CERT_DETAILS* details) + char * root_hash, char * root_id, CERT_DETAILS* details) { X509 *end_entity_cert; X509_STORE_CTX *x509_ctx = NULL; @@ -494,6 +511,7 @@ if (user_cert != NULL) { sprintf(root_hash,"%08lX",X509_issuer_name_hash(user_cert)); + SecurityUtils::computePublicKeyHash(user_cert, root_id); X509_free(user_cert); ret_code = KCertAndSignatureOk; } @@ -544,10 +562,12 @@ // no need to free the root explicitly since it will be // freed when freeing all the roots from roots_certs_st // stack + SecurityUtils::computePublicKeyHash(root, root_id); } } // add the '\0' root_hash[MD5_DIGEST_LEN] = '\0'; + root_id[SHA_1_DIGEST_LEN] = '\0'; // 1. get the public key of the signing cert // 2. decode the provided signature using the signing cert's public key diff -r 4ad59aaee882 -r 2f468c1958d0 javacommons/security/src/utils/securityutils.cpp --- a/javacommons/security/src/utils/securityutils.cpp Fri Sep 17 08:28:21 2010 +0300 +++ b/javacommons/security/src/utils/securityutils.cpp Mon Oct 04 00:10:53 2010 +0300 @@ -423,8 +423,17 @@ all_auth_credentials[i]->signing_cert = NULL; jstring j_jar_hash_value = env->NewStringUTF(all_auth_credentials[i]->jar_hash); - jstring j_root_hash_value = - env->NewStringUTF(all_auth_credentials[i]->root_hash); + jstring j_root_hash_value; + if (all_auth_credentials[i]->root_id != NULL) + { + j_root_hash_value = + env->NewStringUTF(all_auth_credentials[i]->root_id); + } + else + { + j_root_hash_value = + env->NewStringUTF(all_auth_credentials[i]->root_hash); + } jstring j_protection_domain_name = NULL; if (all_auth_credentials[i]->domain_name != NULL) { @@ -455,6 +464,11 @@ all_auth_credentials[i]->jar_hash = NULL; delete[] all_auth_credentials[i]->root_hash; all_auth_credentials[i]->root_hash = NULL; + if (all_auth_credentials[i]->root_id != NULL) + { + delete[] all_auth_credentials[i]->root_id; + all_auth_credentials[i]->root_id = NULL; + } delete all_auth_credentials[i]; all_auth_credentials[i] = NULL; env->SetObjectArrayElement(result, i, auth_credentials); @@ -464,6 +478,22 @@ return result; } +void SecurityUtils::computePublicKeyHash(X509 * x, char * pkey_hash) +{ + unsigned char tmp[SHA_1_DIGEST_LEN]; + EVP_Digest(x->cert_info->key->public_key->data, + x->cert_info->key->public_key->length, tmp, NULL, EVP_sha1(), NULL); + char * tmp_pkey_hash = NULL; + tmp_pkey_hash = pkey_hash; + for (int i=0; i); + static void computePublicKeyHash(X509 *, char *); private: static bool checkIMEI(const X509_EXTENSION *, const char *); static char * computeDigest1(const char*); diff -r 4ad59aaee882 -r 2f468c1958d0 javacommons/utils/javasrc/com/nokia/mj/impl/utils/DebugUtils.java --- a/javacommons/utils/javasrc/com/nokia/mj/impl/utils/DebugUtils.java Fri Sep 17 08:28:21 2010 +0300 +++ b/javacommons/utils/javasrc/com/nokia/mj/impl/utils/DebugUtils.java Mon Oct 04 00:10:53 2010 +0300 @@ -59,13 +59,22 @@ public static String getStackTrace(Throwable t) { - if (t == null) + String res = null; + if (t != null) { - throw new NullPointerException("Null when getting stack trace"); + try + { + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + _getStackTrace(t, new PrintStream(baos)); + res = baos.toString(); + } + catch (Throwable t2) + { + System.err.println("Failure in getting stack trace."); + t2.printStackTrace(); + } } - ByteArrayOutputStream baos = new ByteArrayOutputStream(); - _getStackTrace(t, new PrintStream(baos)); - return baos.toString(); + return res; } private static native void _getStackTrace(Throwable t, PrintStream printStream); diff -r 4ad59aaee882 -r 2f468c1958d0 javacommons/utils/javasrc/com/nokia/mj/impl/utils/ErrorMessageBase.java --- a/javacommons/utils/javasrc/com/nokia/mj/impl/utils/ErrorMessageBase.java Fri Sep 17 08:28:21 2010 +0300 +++ b/javacommons/utils/javasrc/com/nokia/mj/impl/utils/ErrorMessageBase.java Mon Oct 04 00:10:53 2010 +0300 @@ -121,7 +121,14 @@ ResourceLoader rl = (ResourceLoader)iResourceLoaderTable.get(key); if (rl == null) { - rl = ResourceLoader.getInstance(textFilename, textPrefix); + if (getLocaleIdQt() == null) + { + rl = ResourceLoader.getInstance(textFilename, textPrefix); + } + else + { + rl = ResourceLoader.getInstance(null, null, textFilename, textPrefix); + } iResourceLoaderTable.put(key, rl); } return rl; @@ -134,9 +141,7 @@ */ protected static String getLocaleIdQt() { - // Change this after Qt localisation files are taken into use. - //return ResourceLoader.getLocaleIdQt(); - return null; + return ResourceLoader.getLocaleIdQt(); } /*** ----------------------------- PACKAGE ---------------------------- */ diff -r 4ad59aaee882 -r 2f468c1958d0 javacommons/utils/javasrc/com/nokia/mj/impl/utils/Formatter.java --- a/javacommons/utils/javasrc/com/nokia/mj/impl/utils/Formatter.java Fri Sep 17 08:28:21 2010 +0300 +++ b/javacommons/utils/javasrc/com/nokia/mj/impl/utils/Formatter.java Mon Oct 04 00:10:53 2010 +0300 @@ -111,8 +111,10 @@ */ public Formatter arg(String string) { - // Try to replace with patterns %nU,%n, %U - if (replace("%" + nextIndex + "U", string) || + // Try to replace with patterns %[N...N]n, %nU, %n, %U + String maxPattern = findMaxPattern(); + if ((maxPattern != null && replace(maxPattern, string)) || + replace("%" + nextIndex + "U", string) || replace("%" + nextIndex, string) || replace("%U", string)) { @@ -138,8 +140,10 @@ { String localisedNumber = _formatInteger(number); - // Try to replace with patterns %Ln, %nN, %n, %N - if (replace("%" + "L" + nextIndex, localisedNumber) || + // Try to replace with patterns %[N...N]n, %Ln, %nN, %n, %N + String maxPattern = findMaxPattern(); + if ((maxPattern != null && replace(maxPattern, localisedNumber)) || + replace("%" + "L" + nextIndex, localisedNumber) || replace("%" + nextIndex + "N", localisedNumber) || replace("%" + nextIndex, localisedNumber) || replace("%N", localisedNumber)) @@ -167,7 +171,7 @@ { String chString = new String(new char[] { ch }); - // Try to replace with patterns %nC,%n, %C + // Try to replace with patterns %nC, %n, %C if (replace("%" + nextIndex + "C", chString) || replace("%" + nextIndex, chString) || replace("%C", chString)) @@ -372,6 +376,28 @@ return result; } + /** + * Finds next %[N...N]n pattern from the replaced field. + * Returns found pattern, or null if no pattern was found. + */ + private String findMaxPattern() + { + String result = null; + String startPattern = "%["; + String endPattern = "]" + nextIndex; + int startIndex = replaced.indexOf(startPattern); + if (startIndex >= 0) + { + int endIndex = replaced.indexOf(endPattern, startIndex); + if (endIndex >= 0) + { + result = replaced.substring( + startIndex, endIndex + endPattern.length()); + } + } + return result; + } + /*** ----------------------------- NATIVE ----------------------------- */ /** diff -r 4ad59aaee882 -r 2f468c1958d0 javacommons/utils/javasrc/com/nokia/mj/impl/utils/Id.java --- a/javacommons/utils/javasrc/com/nokia/mj/impl/utils/Id.java Fri Sep 17 08:28:21 2010 +0300 +++ b/javacommons/utils/javasrc/com/nokia/mj/impl/utils/Id.java Mon Oct 04 00:10:53 2010 +0300 @@ -40,7 +40,7 @@ this.iQtLocString = aQtLocString; } - public String getString(int aPlatform) + String getString(int aPlatform) { if (aPlatform == ResourceLoader.QT) { diff -r 4ad59aaee882 -r 2f468c1958d0 javacommons/utils/javasrc/com/nokia/mj/impl/utils/InstallerDetailedErrorMessage.java --- a/javacommons/utils/javasrc/com/nokia/mj/impl/utils/InstallerDetailedErrorMessage.java Fri Sep 17 08:28:21 2010 +0300 +++ b/javacommons/utils/javasrc/com/nokia/mj/impl/utils/InstallerDetailedErrorMessage.java Mon Oct 04 00:10:53 2010 +0300 @@ -112,7 +112,7 @@ } else { - iRes = ResourceLoader.getInstance("javaapplicationinstaller", "txt_java_inst_info_"); + iRes = ResourceLoader.getInstance(null, null, "javaapplicationinstallererrors", "txt_java_inst_info_"); } } return iRes; diff -r 4ad59aaee882 -r 2f468c1958d0 javacommons/utils/javasrc/com/nokia/mj/impl/utils/InstallerErrorMessage.java --- a/javacommons/utils/javasrc/com/nokia/mj/impl/utils/InstallerErrorMessage.java Fri Sep 17 08:28:21 2010 +0300 +++ b/javacommons/utils/javasrc/com/nokia/mj/impl/utils/InstallerErrorMessage.java Mon Oct 04 00:10:53 2010 +0300 @@ -81,19 +81,19 @@ } else { - messageTable.put(new Integer(INST_NO_MEM), "info_there_is_not_enough_space_currently"); - messageTable.put(new Integer(INST_NO_NET), "info_network_is_unavailable_currently"); - messageTable.put(new Integer(INST_CORRUPT_PKG), "info_installation_package_is_invalid"); - messageTable.put(new Integer(INST_COMPAT_ERR), "info_application_is_not_compatible_with"); - messageTable.put(new Integer(INST_AUTHORIZATION_ERR), "info_there_is_a_security_issue_with_this"); - messageTable.put(new Integer(INST_AUTHENTICATION_ERR), "info_there_is_a_security_issue_with_this"); - messageTable.put(new Integer(INST_PUSH_REG_ERR), "info_an_unexpected_error_occurred"); - messageTable.put(new Integer(INST_UNEXPECTED_ERR), "info_an_unexpected_error_occurred"); - messageTable.put(new Integer(INST_CANCEL), "info_application_not_installed"); - messageTable.put(new Integer(UNINST_NOT_ALLOWED), "info_application_cannot_be_deleted"); + messageTable.put(new Integer(INST_NO_MEM), "error_info_there_is_not_enough_space_currently"); + messageTable.put(new Integer(INST_NO_NET), "error_info_network_is_unavailable_currently"); + messageTable.put(new Integer(INST_CORRUPT_PKG), "error_info_installation_package_is_invalid"); + messageTable.put(new Integer(INST_COMPAT_ERR), "error_info_application_is_not_compatible_with"); + messageTable.put(new Integer(INST_AUTHORIZATION_ERR), "error_info_there_is_a_security_issue_with_this"); + messageTable.put(new Integer(INST_AUTHENTICATION_ERR), "error_info_there_is_a_security_issue_with_this"); + messageTable.put(new Integer(INST_PUSH_REG_ERR), "error_info_an_unexpected_error_occurred"); + messageTable.put(new Integer(INST_UNEXPECTED_ERR), "error_info_an_unexpected_error_occurred"); + messageTable.put(new Integer(INST_CANCEL), "error_info_application_not_installed"); + messageTable.put(new Integer(UNINST_NOT_ALLOWED), "error_info_application_cannot_be_deleted"); messageTable.put(new Integer(UNINST_UNEXPECTED_ERR), "installer_info_uninstallation_failed"); - messageTable.put(new Integer(UNINST_CANCEL), "info_application_not_deleted"); - messageTable.put(new Integer(OTHER_UNEXPECTED_ERR), "info_an_unexpected_error_occurred"); + messageTable.put(new Integer(UNINST_CANCEL), "error_info_application_not_deleted"); + messageTable.put(new Integer(OTHER_UNEXPECTED_ERR), "error_info_an_unexpected_error_occurred"); } iMessageTable = messageTable; return iMessageTable; @@ -114,7 +114,7 @@ } else { - iRes = ResourceLoader.getInstance("common_errors", "txt_error_"); + iRes = ResourceLoader.getInstance(null, null, "common_errors", "txt_"); } } return iRes; diff -r 4ad59aaee882 -r 2f468c1958d0 javacommons/utils/javasrc/com/nokia/mj/impl/utils/Logger.java --- a/javacommons/utils/javasrc/com/nokia/mj/impl/utils/Logger.java Fri Sep 17 08:28:21 2010 +0300 +++ b/javacommons/utils/javasrc/com/nokia/mj/impl/utils/Logger.java Mon Oct 04 00:10:53 2010 +0300 @@ -172,7 +172,7 @@ catch (Exception e) { - System.out.println(e.toString()); + System.err.println(e.toString()); } } @@ -183,7 +183,7 @@ */ public static void ELOG(int component, String str) { - _logging(component, EError, str); + logImpl(component, EError, str); } /** @@ -194,12 +194,7 @@ */ public static void ELOG(int component, String str, Throwable thrown) { - - ByteArrayOutputStream byte_stream = new ByteArrayOutputStream(); - PrintStream print_stream = new PrintStream(byte_stream); - - _loggingException(component, EError, str, thrown, byte_stream, print_stream); - + logImpl(component, EError, str, thrown); } /** @@ -209,7 +204,7 @@ */ public static void WLOG(int component, String str) { - _logging(component, EWarning, str); + logImpl(component, EWarning, str); } /** @@ -220,10 +215,7 @@ */ public static void WLOG(int component, String str, Throwable thrown) { - ByteArrayOutputStream byte_stream = new ByteArrayOutputStream(); - PrintStream print_stream = new PrintStream(byte_stream); - - _loggingException(component, EWarning, str, thrown, byte_stream, print_stream); + logImpl(component, EWarning, str, thrown); } /** @@ -233,7 +225,7 @@ */ public static void PLOG(int component, String str) { - _logging(component, EInfoPrd, str); + logImpl(component, EInfoPrd, str); } /** @@ -245,9 +237,7 @@ */ public static void PLOG(int component, String str, Throwable thrown) { - ByteArrayOutputStream byte_stream = new ByteArrayOutputStream(); - PrintStream print_stream = new PrintStream(byte_stream); - _loggingException(component, EInfoPrd, str, thrown, byte_stream, print_stream); + logImpl(component, EInfoPrd, str, thrown); } /** @@ -257,7 +247,7 @@ */ public static void ILOG(int component, String str) { - _logging(component, EInfo, str); + logImpl(component, EInfo, str); } /** @@ -269,9 +259,7 @@ */ public static void ILOG(int component, String str, Throwable thrown) { - ByteArrayOutputStream byte_stream = new ByteArrayOutputStream(); - PrintStream print_stream = new PrintStream(byte_stream); - _loggingException(component, EInfoPrd, str, thrown, byte_stream, print_stream); + logImpl(component, EInfo, str, thrown); } /** @@ -284,7 +272,7 @@ { if (Activated[component]) { - _logging(component, EEntry, str); + logImpl(component, EEntry, str); } } @@ -297,7 +285,7 @@ { if (Activated[component]) { - _logging(component, EInfoHeavyLoad, str); + logImpl(component, EInfoHeavyLoad, str); } } @@ -311,7 +299,9 @@ public static void LOG(int component, int level, String str) { if (Activated[component]) - _logging(component, level, str); + { + logImpl(component, level, str); + } } /** @@ -326,19 +316,47 @@ { if (Activated[component]) { - ByteArrayOutputStream byte_stream = new ByteArrayOutputStream(); - PrintStream print_stream = new PrintStream(byte_stream); + logImpl(component, level, str, thrown); + } + } + /** + * Function for printing a log without an exception. + * @param component a unique id of component + * @param level id level of tracing information + * @param str emiting information + */ + private static void logImpl(int component, int level, String str) + { + logImpl(component, level, str, null); + } - _loggingException(component, level, str, thrown, byte_stream, print_stream); + /** + * Function for printing a log with optional exception. + * @param component a unique id of component + * @param level id level of tracing information + * @param str emiting information + * @param thrown exception object. If null then ignored + */ + private static void logImpl(int component, int level, String str, Throwable thrown) + { + if (str == null) + { + ELOG(component, "str argument was null!", new NullPointerException()); + } + else + { + _logging(component, level, str, DebugUtils.getStackTrace(thrown)); } } - - /** Native function prototype. */ - private static native void _logging(int component, int level, String str); - - /** Native function for logging stack trace when exception happend */ - private static native void _loggingException(int component, int level, String str, Throwable thrown, - ByteArrayOutputStream byte_stream, PrintStream print_stream); - + /** + * Native function for printing a log with optional stack trace. + * @param component a unique id of component + * @param level id level of tracing information + * @param str emiting information. Must not be null. + * @param stackTrace of the exception object. Can be null and will then + * be ignored. + */ + private static native void _logging(int component, int level, String str, + String stackTrace); } diff -r 4ad59aaee882 -r 2f468c1958d0 javacommons/utils/javasrc/com/nokia/mj/impl/utils/ResourceLoader.java --- a/javacommons/utils/javasrc/com/nokia/mj/impl/utils/ResourceLoader.java Fri Sep 17 08:28:21 2010 +0300 +++ b/javacommons/utils/javasrc/com/nokia/mj/impl/utils/ResourceLoader.java Mon Oct 04 00:10:53 2010 +0300 @@ -30,9 +30,6 @@ * Label subjectLabel = createLabel( * res.format("subject").arg(certificate.getSubject()).toString(), * horizontalSpan, labelStyle); - * - * Label noteLabel = createLabel( - * res.string("note"), horizontalSpan, labelStyle); * */ public class ResourceLoader @@ -144,7 +141,7 @@ * @param resourceName name of the resource * @param aPrefix prefix added before each id when retrieving */ - public ResourceLoader(String resourceName, String aPrefix) + ResourceLoader(String resourceName, String aPrefix) { locType = AVKON; prefix = aPrefix; @@ -166,54 +163,13 @@ /** * Get a string formatter of a given resource id. * - * @param avkonId Avkon resource id. - * @param qtId Qt resource id. - * @return formatter instance - * @see Formatter - */ - public Formatter format(String avkonId, String qtId) - { - if (locType == AVKON) - { - return new Formatter(string(avkonId), locType); - } - else - { - return new Formatter(string(qtId), locType); - } - } - - /** - * Formats localised text with specified parameters from an array. - * - * @param avkonId Avkon resource id. - * @param qtId Qt resource id. - * @param textParameters parameters to be filled into the text. - * @return localised text formatted with the provided parameters. - * @see Formatter - */ - public String format(String avkonId, String qtId, Object[] textParameters) - { - if (locType == AVKON) - { - return new Formatter(string(avkonId), locType).format(textParameters); - } - else - { - return new Formatter(string(qtId), locType).format(textParameters); - } - } - - /** - * Get a string formatter of a given resource id. - * * @param id resource id * @return formatter instance * @see Formatter */ public Formatter format(Id id) { - return new Formatter(id.getString(locType), locType); + return new Formatter(string(id.getString(locType)), locType); } /** @@ -244,44 +200,6 @@ /** - * Get a plain string resource with a given resource id. - * - * @param id resource id, either with prefix or without - * @return resource string, or the id if does not exist - */ - public String string(String id) - { - String str = (String)resourceMap.get(id); - if (str == null) - { - // Try with prefix - str = (String)resourceMap.get(prefix + id); - if (str == null) - { - // Not found even with prefix. Use the id itself - if (!id.startsWith(prefix)) - { - str = prefix + id; - } - else - { - str = id; - } - - Logger.WLOG(Logger.EUtils, "Cannot find resource: " + id); - } - - // Put back to hash with original key for quick retrieval - resourceMap.put(id, str); - } - - str = decode(str); - str = replaceCharacterCodes(str); - - return str; - } - - /** * Gets the locale ID currently being used on the phone. This can be used * e.g. to load a localized icon file, by adding the locale id as suffix. * @@ -319,6 +237,44 @@ /*** ----------------------------- PRIVATE ---------------------------- */ /** + * Get a plain string resource with a given resource id. + * + * @param id resource id, either with prefix or without + * @return resource string, or the id if does not exist + */ + private String string(String id) + { + String str = (String)resourceMap.get(id); + if (str == null) + { + // Try with prefix + str = (String)resourceMap.get(prefix + id); + if (str == null) + { + // Not found even with prefix. Use the id itself + if (!id.startsWith(prefix)) + { + str = prefix + id; + } + else + { + str = id; + } + + Logger.WLOG(Logger.EUtils, "Cannot find resource: " + id); + } + + // Put back to hash with original key for quick retrieval + resourceMap.put(id, str); + } + + str = decode(str); + str = replaceCharacterCodes(str); + + return str; + } + + /** * Loads the resources from .loc type file. * * @param resourceName name of the resource file. diff -r 4ad59aaee882 -r 2f468c1958d0 javacommons/utils/src.s60/properties.cpp --- a/javacommons/utils/src.s60/properties.cpp Fri Sep 17 08:28:21 2010 +0300 +++ b/javacommons/utils/src.s60/properties.cpp Mon Oct 04 00:10:53 2010 +0300 @@ -103,7 +103,7 @@ JELOG2(EUtils); // microedition.locale - ILOG1(EUtils, "User::Language: %d", User::Language()); + ILOG1(EUtils, "User::Language: %d", User::Language()); // KDialectMask enables support for operator specific language variants switch (User::Language() & KDialectMask) { case ELangAfrikaans: @@ -368,9 +368,13 @@ TBuf swVersion; if (SysUtil::GetSWVersion(swVersion) == KErrNone && swVersion.Length()>0) { - // Assume syntax V xx.xx\ndd-mm-yy\nNHL-vvv\n(c)Vendor + // Assume syntax xx.xx\ndd-mm-yy\nNHL-vvv\n(c)Vendor TInt NLloc = swVersion.Locate('\n'); - TPtrC verPtr = swVersion.Mid(2, NLloc-2); // skip "V " in the beginning + if (KErrNotFound == NLloc) + { + NLloc = swVersion.Length(); // no '\n' -> use whole string + } + TPtrC verPtr = swVersion.Left(NLloc); // Get platform minor and major version numbers HBufC* platformVersionValue = GetPlatformVersionL(); diff -r 4ad59aaee882 -r 2f468c1958d0 javacommons/utils/src/logger.cpp --- a/javacommons/utils/src/logger.cpp Fri Sep 17 08:28:21 2010 +0300 +++ b/javacommons/utils/src/logger.cpp Mon Oct 04 00:10:53 2010 +0300 @@ -426,88 +426,75 @@ #endif //J_LOG_USE_RLOGGER_ENABLED - -/** - * Class: com_nokia_mj_impl_utils_Logger - * Method: _logging - * Signature: (IILjava/lang/String;)V - * - * Native static Logger._logging() method write log message to file and - * accepting three input parameters: - * component id, severity level id of emiting information and tracing information - */ - -JNIEXPORT void JNICALL Java_com_nokia_mj_impl_utils_Logger__1logging -(JNIEnv *aEnv, jclass, jint aComponent, jint aLevel, jstring aLogString) -{ - const char* log = aEnv->GetStringUTFChars(aLogString, 0); - - if (aLevel == com_nokia_mj_impl_utils_Logger_EError) - { - ELOG1((TComponents)aComponent, "%s", log); - } - else if (aLevel == com_nokia_mj_impl_utils_Logger_EWarning) - { - WLOG1((TComponents)aComponent, "%s", log); - } - else if (aLevel == com_nokia_mj_impl_utils_Logger_EInfoPrd) - { - PLOG1((TComponents)aComponent, "%s", log); - } - else - { - LOG1((TComponents)aComponent, EInfo, "%s", log); - } - - aEnv->ReleaseStringUTFChars(aLogString, log); -} - - /* * Class: com_nokia_mj_impl_utils_Logger - * Method: _loggingException - * Signature: (IILjava/lang/String;Ljava/lang/Throwable;Ljava/io/ByteArrayOutputStream;Ljava/io/PrintStream;)V + * Method: _logging + * Signature: (IILjava/lang/String;java/lang/String;)V * - * Method prints stack trace and Throwable info to log file + * Method for logging the log string. If the optional stack trace is provided + * that will be logged as well. */ -JNIEXPORT void JNICALL Java_com_nokia_mj_impl_utils_Logger__1loggingException +JNIEXPORT void JNICALL Java_com_nokia_mj_impl_utils_Logger__1logging (JNIEnv *aEnv, jclass /*aClassH*/, jint aComponent, jint aLevel, jstring aLogString, - jthrowable aThrowable, jobject aByteStream, jobject aPrintStream) + jstring aStackTrace) { - /* get logging string */ + // It is excpected that Java peer checks that aLogString is not null. + + // Get logging string. const char* log = aEnv->GetStringUTFChars(aLogString, 0); - /* - * call Throwable.printStackTrace(java.io.PrintStream) - * this method is not part of CLDC spec, but it's supported by VM vendors - */ - jclass class_Throwable = aEnv->GetObjectClass(aThrowable); - jmethodID methodId = aEnv->GetMethodID(class_Throwable, "printStackTrace", "(Ljava/io/PrintStream;)V"); - aEnv->CallVoidMethod(aThrowable, methodId, aPrintStream); - - /* call ByteArrayOutputStream.toString() */ - jclass class_ByteArrayOutputStream = aEnv->GetObjectClass(aByteStream); - methodId = aEnv->GetMethodID(class_ByteArrayOutputStream, "toString", "()Ljava/lang/String;"); - jstring stacktrace_jstr = (jstring) aEnv->CallObjectMethod(aByteStream, methodId); - const char *stacktrace = aEnv->GetStringUTFChars(stacktrace_jstr, 0); - - if (aLevel == com_nokia_mj_impl_utils_Logger_EError) + if (log) { - ELOG2((TComponents)aComponent, "%s: %s", log, stacktrace); - } - else if (aLevel == com_nokia_mj_impl_utils_Logger_EWarning) - { - WLOG2((TComponents)aComponent, "%s: %s", log, stacktrace); + const char* stack; // Content of optional stack trace. Default is empty + const char* delim; // Delimiter between log and stack trace. Default is empty + const char* stacktrace = 0; + if (aStackTrace) + { + // By default this write error string if GetStringUTFChars fails. + stack = "Stack trace not available"; + delim = ": "; + + // Get stack trace string. + stacktrace = aEnv->GetStringUTFChars(aStackTrace, 0); + } + else + { + // aStackTrace was null which means that there is no stack trace + // available. + stack = ""; + delim = ""; + } + + // If it succeeded overwrite the default one. + if (stacktrace) + { + stack = stacktrace; + } + + if (aLevel == com_nokia_mj_impl_utils_Logger_EError) + { + ELOG3((TComponents)aComponent, "%s%s%s", log, delim, stack); + } + else if (aLevel == com_nokia_mj_impl_utils_Logger_EWarning) + { + WLOG3((TComponents)aComponent, "%s%s%s", log, delim, stack); + } + else if (aLevel == com_nokia_mj_impl_utils_Logger_EInfoPrd) + { + PLOG3((TComponents)aComponent, "%s%s%s", log, delim, stack); + } + else + { + LOG3((TComponents)aComponent, EInfo, "%s%s%s", log, delim, stack); + } + + // Free the stack trace string if it was available + if (stacktrace) + { + aEnv->ReleaseStringUTFChars(aStackTrace, stacktrace); + } + + // Free the log string. + aEnv->ReleaseStringUTFChars(aLogString, log); } - else if (aLevel == com_nokia_mj_impl_utils_Logger_EInfoPrd) - { - PLOG2((TComponents)aComponent, "%s: %s", log, stacktrace); - } - else - { - LOG2((TComponents)aComponent, EInfo, "%s: %s", log, stacktrace); - } - - aEnv->ReleaseStringUTFChars(aLogString, log); - aEnv->ReleaseStringUTFChars(stacktrace_jstr, stacktrace); } diff -r 4ad59aaee882 -r 2f468c1958d0 javacommons/utils/tsrc/build/java/build.xml --- a/javacommons/utils/tsrc/build/java/build.xml Fri Sep 17 08:28:21 2010 +0300 +++ b/javacommons/utils/tsrc/build/java/build.xml Mon Oct 04 00:10:53 2010 +0300 @@ -44,6 +44,11 @@ + + Running LoggerTests tests + + + diff -r 4ad59aaee882 -r 2f468c1958d0 javacommons/utils/tsrc/build/native/exports.inf --- a/javacommons/utils/tsrc/build/native/exports.inf Fri Sep 17 08:28:21 2010 +0300 +++ b/javacommons/utils/tsrc/build/native/exports.inf Mon Oct 04 00:10:53 2010 +0300 @@ -17,7 +17,7 @@ PRJ_EXPORTS -#include "../../../../inc/build_defines.hrh" +#include "../../../inc/build_defines.hrh" #ifdef RD_JAVA_SYMBIAN_TARGET ../../tst.bat /epoc32/winscw/c/tst.bat #endif // RD_JAVA_SYMBIAN_TARGET diff -r 4ad59aaee882 -r 2f468c1958d0 javacommons/utils/tsrc/javasrc/com/nokia/mj/impl/utils/DebugUtilsTests.java --- a/javacommons/utils/tsrc/javasrc/com/nokia/mj/impl/utils/DebugUtilsTests.java Fri Sep 17 08:28:21 2010 +0300 +++ b/javacommons/utils/tsrc/javasrc/com/nokia/mj/impl/utils/DebugUtilsTests.java Mon Oct 04 00:10:53 2010 +0300 @@ -70,25 +70,19 @@ { try { - try - { - DebugUtils.getStackTrace(null); - assertTrue("No exception.", false); - } - catch (NullPointerException ne) - { - } + String res = DebugUtils.getStackTrace(null); + assertTrue("Not null: " + res, res == null); Exception e1 = new Exception("Test 42"); - String res = DebugUtils.getStackTrace(e1); + res = DebugUtils.getStackTrace(e1); boolean ok = res.indexOf("at com.nokia.mj.impl.utils.DebugUtilsTests.testStackTrace") >= 0; assertTrue("Exception didn't contain: " + res, ok); } catch (Throwable t) { + t.printStackTrace(); assertTrue(t.toString(), false); - t.printStackTrace(); } } } diff -r 4ad59aaee882 -r 2f468c1958d0 javacommons/utils/tsrc/javasrc/com/nokia/mj/impl/utils/LoggerTests.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javacommons/utils/tsrc/javasrc/com/nokia/mj/impl/utils/LoggerTests.java Mon Oct 04 00:10:53 2010 +0300 @@ -0,0 +1,119 @@ +/* +* Copyright (c) 2010 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.mj.impl.utils; + +import com.nokia.mj.impl.utils.Logger; + +import com.nokia.mj.impl.rt.test.UnitTestSuiteCreator; +import j2meunit.framework.Test; +import j2meunit.framework.TestCase; +import j2meunit.framework.TestMethod; +import j2meunit.framework.TestSuite; + +/** + * DebugUtils unit tests. + */ +public class LoggerTests extends TestCase implements UnitTestSuiteCreator +{ + // Create the test suite. + public TestSuite createTestSuite(String[] args) + { + TestSuite suite = new TestSuite(this.getClass().getName()); + + suite.addTest(new LoggerTests("Test Log writings", new TestMethod() + { + public void run(TestCase tc) + { + ((LoggerTests)tc).testLogWritings(); + } + })); + + return suite; + } + + public LoggerTests() + { + } + + public LoggerTests(String aTestName, TestMethod aTestMethod) + { + super(aTestName, aTestMethod); + } + + // End j2meunit test framework setup + + protected void setUp() + { + } + + protected void tearDown() + { + } + + public void testLogWritings() + { + // Check the log writings manually from JavaLocation.log file. + try + { + Logger.ELOG(Logger.EJavaLocation, "This is Logger.ELOG without exception"); + Logger.ELOG(Logger.EJavaLocation, "This is Logger.ELOG with exception", new Exception("Logger.ELOG")); + Logger.ELOG(Logger.EJavaLocation, "This is Logger.ELOG with null exception", null); + Logger.ELOG(Logger.EJavaLocation, null); + + Logger.WLOG(Logger.EJavaLocation, "This is Logger.WLOG without exception"); + Logger.WLOG(Logger.EJavaLocation, "This is Logger.WLOG with exception", new Exception("Logger.WLOG")); + Logger.WLOG(Logger.EJavaLocation, "This is Logger.WLOG with null exception", null); + Logger.WLOG(Logger.EJavaLocation, null); + + Logger.PLOG(Logger.EJavaLocation, "This is Logger.PLOG without exception"); + Logger.PLOG(Logger.EJavaLocation, "This is Logger.PLOG with exception", new Exception("Logger.PLOG")); + Logger.PLOG(Logger.EJavaLocation, "This is Logger.PLOG with null exception", null); + Logger.PLOG(Logger.EJavaLocation, null); + + Logger.ILOG(Logger.EJavaLocation, "This is Logger.ILOG without exception"); + Logger.ILOG(Logger.EJavaLocation, "This is Logger.ILOG with exception", new Exception("Logger.PLOG")); + Logger.ILOG(Logger.EJavaLocation, "This is Logger.ILOG with null exception", null); + Logger.ILOG(Logger.EJavaLocation, null); + + Logger.JELOG(Logger.EJavaLocation, "This is Logger.JELOG"); + Logger.JELOG(Logger.EJavaLocation, null); + + Logger.HLOG(Logger.EJavaLocation, "This is Logger.HLOG"); + Logger.HLOG(Logger.EJavaLocation, null); + + testLOG(Logger.EError, "Logger.EError"); + testLOG(Logger.EWarning, "Logger.EWarning"); + testLOG(Logger.EInfoPrd, "Logger.EInfoPrd"); + testLOG(Logger.EInfo, "Logger.EInfo"); + } + catch (Throwable t) + { + t.printStackTrace(); + assertTrue(t.toString(), false); + } + } + + private void testLOG(int level, String str) + { + Logger.LOG(Logger.EJavaLocation, level, "This is Logger.LOG (" + str + ") without exception"); + Logger.LOG(Logger.EJavaLocation, level, "This is Logger.LOG (" + str + ") with exception", new Exception(str)); + Logger.LOG(Logger.EJavaLocation, level, "This is Logger.LOG (" + str + ") with null exception", null); + Logger.LOG(Logger.EJavaLocation, level, null); + } +} diff -r 4ad59aaee882 -r 2f468c1958d0 javacommons/utils/tsrc/tst.bat --- a/javacommons/utils/tsrc/tst.bat Fri Sep 17 08:28:21 2010 +0300 +++ b/javacommons/utils/tsrc/tst.bat Mon Oct 04 00:10:53 2010 +0300 @@ -14,6 +14,7 @@ @rem Description: @rem rem Script for running JavaCommonUtils unit tests from S60 eshell +javaunittester -mainclass=com.nokia.mj.impl.utils.LoggerTests javaunittester -mainclass=com.nokia.mj.impl.utils.BufferedReaderTests javaunittester -mainclass=com.nokia.mj.impl.utils.concurrent.ConcurrentTests javaunittester -mainclass=com.nokia.mj.impl.rt.SystemPropertyTests diff -r 4ad59aaee882 -r 2f468c1958d0 javaextensions/bluetooth/bluetoothcommons/bluetoothplatformcontrol/src.s60/s60bluetoothplatformcontrol.cpp --- a/javaextensions/bluetooth/bluetoothcommons/bluetoothplatformcontrol/src.s60/s60bluetoothplatformcontrol.cpp Fri Sep 17 08:28:21 2010 +0300 +++ b/javaextensions/bluetooth/bluetoothcommons/bluetoothplatformcontrol/src.s60/s60bluetoothplatformcontrol.cpp Mon Oct 04 00:10:53 2010 +0300 @@ -364,11 +364,11 @@ TInt error = RProperty::Get(KPropertyUidBluetoothCategory, KPropertyKeyBluetoothGetDeviceName, bluetoothName); - if (error != KErrNone) + if (error != KErrNone || (0 == bluetoothName.Length())) { + ELOG(EJavaBluetooth, "Bluetooth friendly name was not set"); return NULL; } - std::wstring *deviceName = new std::wstring((wchar_t*) bluetoothName.Ptr()); diff -r 4ad59aaee882 -r 2f468c1958d0 javaextensions/bluetooth/bluetoothcommons/bluetoothplatformcontrol/src/btplatformcontrolnative.cpp --- a/javaextensions/bluetooth/bluetoothcommons/bluetoothplatformcontrol/src/btplatformcontrolnative.cpp Fri Sep 17 08:28:21 2010 +0300 +++ b/javaextensions/bluetooth/bluetoothcommons/bluetoothplatformcontrol/src/btplatformcontrolnative.cpp Mon Oct 04 00:10:53 2010 +0300 @@ -51,7 +51,7 @@ { result = java::util::JniUtils::wstringToJstring(aJni, *devAddress); } - catch (ExceptionBase ex) + catch (ExceptionBase &ex) { result = NULL; } @@ -82,20 +82,22 @@ } std::wstring *devName = control->getBluetoothName(); - jstring result; + + jstring result = NULL; try { - result = java::util::JniUtils::wstringToJstring(aJni, *devName); + if (NULL != devName) + { + result = java::util::JniUtils::wstringToJstring(aJni, *devName); + } } - catch (ExceptionBase ex) + catch (ExceptionBase &ex) { result = NULL; } - delete devName; delete control; - return result; } @@ -224,7 +226,7 @@ { name = java::util::JniUtils::jstringToWstring(aJni, appName); } - catch (ExceptionBase ex) + catch (ExceptionBase &ex) { name=L"Unknown Application"; } @@ -270,7 +272,7 @@ { name = java::util::JniUtils::jstringToWstring(aJni, appName); } - catch (ExceptionBase ex) + catch (ExceptionBase &ex) { name=L"Unknown Application"; } @@ -327,7 +329,7 @@ result = java::util::JniUtils::wstringToJstring(aJni, control->getSystemProperty(aPropertyId)); } - catch (ExceptionBase ex) + catch (ExceptionBase &ex) { result = NULL; } diff -r 4ad59aaee882 -r 2f468c1958d0 javaextensions/bluetooth/bluetoothcommons/src.s60/bluetoothclientconnection.cpp --- a/javaextensions/bluetooth/bluetoothcommons/src.s60/bluetoothclientconnection.cpp Fri Sep 17 08:28:21 2010 +0300 +++ b/javaextensions/bluetooth/bluetoothcommons/src.s60/bluetoothclientconnection.cpp Mon Oct 04 00:10:53 2010 +0300 @@ -36,15 +36,19 @@ OS_EXPORT BluetoothClientConnection::BluetoothClientConnection (BluetoothFunctionServer* server): - mServer(server), + mServer(server), mSocket(0), mShutdownNotifyMonitor(NULL), mReadNotifyMonitor(NULL), + mReadStatus(0), mBuffer(NULL, 0), mSendNotifyMonitor(NULL), + mRequestedRMtu(0), mRequestedTMtu(0), + mWriteStatus(0), mProtocol(0), mNegotiatedReceiveMtu(0), mNegotiatedTransmitMtu(0), mRemoteBTAddr(0), mConnectNotifyMonitor(NULL), + mConnectError(0), mMakeJavaCallbackOnRead(EFalse), mReadPending(EFalse), mBufferInitialized(EFalse) @@ -58,11 +62,15 @@ mSocket(aSocket), mShutdownNotifyMonitor(NULL), mReadNotifyMonitor(NULL), + mReadStatus(0), mBuffer(NULL, 0), mSendNotifyMonitor(NULL), + mRequestedRMtu(0), mRequestedTMtu(0), + mWriteStatus(0), mProtocol(0), mNegotiatedReceiveMtu(0), mNegotiatedTransmitMtu(0), mRemoteBTAddr(0), + mConnectError(0), mMakeJavaCallbackOnRead(EFalse), mReadPending(EFalse), mBufferInitialized(EFalse) diff -r 4ad59aaee882 -r 2f468c1958d0 javaextensions/bluetooth/bluetoothcommons/src.s60/bturlparams.cpp --- a/javaextensions/bluetooth/bluetoothcommons/src.s60/bturlparams.cpp Fri Sep 17 08:28:21 2010 +0300 +++ b/javaextensions/bluetooth/bluetoothcommons/src.s60/bturlparams.cpp Mon Oct 04 00:10:53 2010 +0300 @@ -270,7 +270,7 @@ aParam.c_str(), aVal.c_str()); mReceiveMtu = JavaCommonUtils::wstringToInt(aVal); } - catch (ExceptionBase ex) + catch (ExceptionBase &ex) { ELOG1(EJavaBluetooth, "- ServiceRecord::setUrlParamsValue URL_PARAM_RECEIVE_MTU exception Caught: %S", @@ -286,7 +286,7 @@ aParam.c_str(), aVal.c_str()); mTransmitMtu = JavaCommonUtils::wstringToInt(aVal); } - catch (ExceptionBase ex) + catch (ExceptionBase &ex) { ELOG1(EJavaBluetooth, "- ServiceRecord::setUrlParamsValue URL_PARAM_TRANSMIT_MTU exception Caught: %S", @@ -404,7 +404,7 @@ mBlockedSenders.push_back(blackPattern); index = aBlackList.find(SEMICOLON); } - catch (ExceptionBase ex) + catch (ExceptionBase &ex) { // Nothing to handle here. } @@ -422,7 +422,7 @@ aBlackList.c_str()); mBlockedSenders.push_back(blackPattern); } - catch (ExceptionBase ex) + catch (ExceptionBase &ex) { // Nothing to handle here. } @@ -471,7 +471,7 @@ { pattern = S60CommonUtils::wstringToDes(aPattern.c_str()); } - catch (ExceptionBase ex) + catch (ExceptionBase &ex) { return true; } diff -r 4ad59aaee882 -r 2f468c1958d0 javaextensions/bluetooth/bluetoothcommons/src.s60/servicerecord.cpp --- a/javaextensions/bluetooth/bluetoothcommons/src.s60/servicerecord.cpp Fri Sep 17 08:28:21 2010 +0300 +++ b/javaextensions/bluetooth/bluetoothcommons/src.s60/servicerecord.cpp Mon Oct 04 00:10:53 2010 +0300 @@ -207,7 +207,7 @@ persistentRecFd = open(fileName, O_RDONLY); delete[] fileName; } - catch (ExceptionBase ex) + catch (ExceptionBase &ex) { ELOG1( EJavaBluetooth, @@ -285,10 +285,10 @@ { int len = 0; ret = read(persistentRecFd, &len, sizeof(len)); - if (ret <= 0) + if (ret <= 0 || (len <= 0 || len >4)) break; - TUint8 buf[20] = { 0 }; + TUint8 buf[4] = { 0 }; ret = read(persistentRecFd, buf, len); if (ret <= 0) break; @@ -301,10 +301,10 @@ { int len = 0; ret = read(persistentRecFd, &len, sizeof(len)); - if (ret <= 0) + if (ret <= 0 || (len <= 0 || len >16)) break; - TUint8 buf[20] = { 0 }; + TUint8 buf[16] = { 0 }; ret = read(persistentRecFd, buf, len); if (ret <= 0) break; @@ -318,10 +318,10 @@ { int len = 0; ret = read(persistentRecFd, &len, sizeof(len)); - if (ret <= 0) + if (ret <= 0 || (len <= 0 || len >4)) break; - TUint8 buf[20] = { 0 }; + TUint8 buf[4] = { 0 }; ret = read(persistentRecFd, buf, len); if (ret <= 0) break; @@ -338,10 +338,10 @@ { int len = 0; ret = read(persistentRecFd, &len, sizeof(len)); - if (ret <= 0) + if (ret <= 0 || (len <= 0 || len >16)) break; - TUint8 buf[20] = { 0 }; + TUint8 buf[16] = { 0 }; ret = read(persistentRecFd, buf, len); if (ret <= 0) break; @@ -357,7 +357,7 @@ { int len = 0; ret = read(persistentRecFd, &len, sizeof(len)); - if (ret <= 0) + if (ret <= 0 || (len <= 0 || len >256)) break; TUint8 buf[256] = { 0 }; @@ -383,7 +383,7 @@ { int len = 0; ret = read(persistentRecFd, &len, sizeof(len)); - if (ret <= 0) + if (ret <= 0 || (len <= 0 || len >1024)) break; TUint8 buf[1024] = {0}; @@ -402,7 +402,7 @@ { int len = 0; ret = read(persistentRecFd, &len, sizeof(len)); - if (ret <= 0) + if (ret <= 0 || (len <= 0 || len >1024)) break; TUint8 buf[1024] = {0}; @@ -620,7 +620,7 @@ delete[] fileName; } - catch (ExceptionBase ex) + catch (ExceptionBase &ex) { ELOG1( EJavaBluetooth, @@ -688,7 +688,7 @@ } delete[] dirName; } - catch (ExceptionBase ex) + catch (ExceptionBase &ex) { ELOG1(EJavaBluetooth, "- ServiceRecord::getPersistentFileName exception Caught: %S", @@ -1288,7 +1288,7 @@ persistentRecFd = open(fileName, O_RDONLY); delete[] fileName; } - catch (ExceptionBase ex) + catch (ExceptionBase &ex) { ELOG1(EJavaBluetooth, "- ServiceRecord::restoreJavaServiceRecord exception caught: %S", @@ -1383,10 +1383,10 @@ { int len = 0; ret = read(persistentRecFd, &len, sizeof(len)); - if (ret <= 0) + if (ret <= 0 || (len <= 0 || len >4)) break; - TUint8 bytes[20] = {0}; + TUint8 bytes[4] = {0}; ret = read(persistentRecFd, bytes, len); if (ret <= 0) break; @@ -1402,10 +1402,10 @@ { int len = 0; ret = read(persistentRecFd, &len, sizeof(len)); - if (ret <= 0) + if (ret <= 0 || (len <= 0 || len > 16)) break; - TUint8 buf[20] = {0}; + TUint8 buf[16] = {0}; ret = read(persistentRecFd, buf, len); if (ret <= 0) break; @@ -1422,10 +1422,10 @@ { int len = 0; ret = read(persistentRecFd, &len, sizeof(len)); - if (ret <= 0) + if (ret <= 0 || (len <= 0 || len >4)) break; - TUint8 bytes[20] = {0}; + TUint8 bytes[4] = {0}; ret = read(persistentRecFd, bytes, len); if (ret <= 0) break; @@ -1441,10 +1441,10 @@ { int len = 0; ret = read(persistentRecFd, &len, sizeof(len)); - if (ret <= 0) + if (ret <= 0 || (len <= 0 || len >16)) break; - TUint8 buf[20] = {0}; + TUint8 buf[16] = {0}; ret = read(persistentRecFd, buf, len); if (ret <= 0) break; @@ -1459,7 +1459,7 @@ { int len = 0; ret = read(persistentRecFd, &len, sizeof(len)); - if (ret <= 0) + if (ret <= 0 || (len <= 0 || len >256)) break; TUint8 buf[256] = {0}; @@ -1481,7 +1481,7 @@ { int len = 0; ret = read(persistentRecFd, &len, sizeof(len)); - if (ret <= 0) + if (ret <= 0 || (len <= 0 || len >1024)) break; TUint8 buf[1024] = {0}; @@ -1502,7 +1502,7 @@ { int len = 0; ret = read(persistentRecFd, &len, sizeof(len)); - if (ret <= 0) + if (ret <= 0 || (len <= 0 || len >1024)) break; TUint8 buf[1024] = {0}; diff -r 4ad59aaee882 -r 2f468c1958d0 javaextensions/bluetooth/bluetoothplugins/btl2cappushplugin/src.s60/btl2capserverconnection.cpp --- a/javaextensions/bluetooth/bluetoothplugins/btl2cappushplugin/src.s60/btl2capserverconnection.cpp Fri Sep 17 08:28:21 2010 +0300 +++ b/javaextensions/bluetooth/bluetoothplugins/btl2cappushplugin/src.s60/btl2capserverconnection.cpp Mon Oct 04 00:10:53 2010 +0300 @@ -40,11 +40,16 @@ OS_EXPORT L2CAPServerConnection::L2CAPServerConnection( java::bluetooth::BluetoothFunctionServer* server): mAcceptMonitor(NULL), + mAcceptStatus(0), + mAcceptedSocket(0), + mMasterRoleRequested(EFalse), mAsyncAccept(false), mAvoidFilter(false), + mPushEventListener(0), mBtUrlParams(NULL), mBtClientConn(NULL), mServer(server), + mListenSock(0), mIsConnected(EFalse), mServRec(NULL), mState(ENone) diff -r 4ad59aaee882 -r 2f468c1958d0 javaextensions/bluetooth/bluetoothplugins/btl2cappushplugin/src/btl2cappushserverconnection.cpp --- a/javaextensions/bluetooth/bluetoothplugins/btl2cappushplugin/src/btl2cappushserverconnection.cpp Fri Sep 17 08:28:21 2010 +0300 +++ b/javaextensions/bluetooth/bluetoothplugins/btl2cappushplugin/src/btl2cappushserverconnection.cpp Mon Oct 04 00:10:53 2010 +0300 @@ -37,9 +37,11 @@ OS_EXPORT L2CapPushServerConnection::L2CapPushServerConnection( const wstring aUri, const wstring aFilter): mAcceptMonitor(NULL), + mConnectionListener(0), mConnectionUri(aUri), mConnectionFilter(aFilter), mL2CAPServer(NULL), + mClientConnection(0), mPendingConnection(false), mListening(false), mCreatedByPush(false), diff -r 4ad59aaee882 -r 2f468c1958d0 javaextensions/bluetooth/bluetoothplugins/btspppushplugin/src.s60/btrfcommserverconnection.cpp --- a/javaextensions/bluetooth/bluetoothplugins/btspppushplugin/src.s60/btrfcommserverconnection.cpp Fri Sep 17 08:28:21 2010 +0300 +++ b/javaextensions/bluetooth/bluetoothplugins/btspppushplugin/src.s60/btrfcommserverconnection.cpp Mon Oct 04 00:10:53 2010 +0300 @@ -42,10 +42,15 @@ OS_EXPORT RFCOMMServerConnection::RFCOMMServerConnection( java::bluetooth::BluetoothFunctionServer* server): mAcceptMonitor(NULL), + mAcceptStatus(0), + mAcceptedSocket(0), mAsyncAccept(false), + mAvoidFilter(false), + mPushEventListener(0), mBtUrlParams(NULL), mBtClientConn(NULL), mServer(server), + mListenSock(0), mIsConnected(EFalse), mServRec(NULL), mState(ENone) diff -r 4ad59aaee882 -r 2f468c1958d0 javaextensions/bluetooth/bluetoothplugins/btspppushplugin/src/rfcommpushserverconnection.cpp --- a/javaextensions/bluetooth/bluetoothplugins/btspppushplugin/src/rfcommpushserverconnection.cpp Fri Sep 17 08:28:21 2010 +0300 +++ b/javaextensions/bluetooth/bluetoothplugins/btspppushplugin/src/rfcommpushserverconnection.cpp Mon Oct 04 00:10:53 2010 +0300 @@ -38,10 +38,12 @@ OS_EXPORT RFCOMMPushServerConnection::RFCOMMPushServerConnection( const wstring aUri, const wstring aFilter,ServerConnectionFactoryBase* aFactory): mAcceptMonitor(NULL), + mConnectionListener(0), mConnectionUri(aUri), mConnectionFilter(aFilter), mRFCOMMServer(NULL), mConnectionFactory(aFactory), + mClientConnection(0), mIsGOEP(false), mPendingConnection(false), mListening(false), diff -r 4ad59aaee882 -r 2f468c1958d0 javaextensions/bluetooth/omjbluetooth/src.s60/bluetoothstacks60native.cpp --- a/javaextensions/bluetooth/omjbluetooth/src.s60/bluetoothstacks60native.cpp Fri Sep 17 08:28:21 2010 +0300 +++ b/javaextensions/bluetooth/omjbluetooth/src.s60/bluetoothstacks60native.cpp Mon Oct 04 00:10:53 2010 +0300 @@ -206,7 +206,7 @@ ret = java::util::JniUtils::wstringToJstring(aJni, str); } } - catch (ExceptionBase ex) + catch (ExceptionBase &ex) { ELOG1(EJavaBluetooth, "- JNI::getRemoteDeviceFriendlyName Exception:%S", ex.what()); @@ -305,7 +305,7 @@ JNIEXPORT jint JNICALL Java_com_nokia_mj_impl_bluetooth_BluetoothStackS60__1populateServiceRecordAttributeValues -(JNIEnv *aEnv, jobject aPeer, jlong aRemoteDevice, jlong aHandle, +(JNIEnv *aEnv, jobject /*aPeer*/, jlong aRemoteDevice, jlong aHandle, jintArray aAttrSet, jobject aServiceRecordImpl, jlong aDiscAgent) { JELOG2(EJavaBluetooth); @@ -327,7 +327,7 @@ " JNI::populateServiceRecordAttributeValues calling PopulateServiceRecord"); int result = KErrNone; result = agent->PopulateServiceRecordAttrValue( - aEnv, aPeer, aRemoteDevice, aHandle, attrIdsDes, serviceRecGlobalRef, + aEnv, aRemoteDevice, aHandle, attrIdsDes, serviceRecGlobalRef, serviceSearchMonitor); if (KErrNone != result) @@ -707,7 +707,7 @@ { connectionUrl = JniUtils::jstringToWstring(aJni, aUrl); } - catch (ExceptionBase ex) + catch (ExceptionBase &ex) { ELOG1(EJavaBluetooth, "- JNI::l2ServerOpen Exception:%S", ex.what()); @@ -1077,7 +1077,7 @@ { connectionUrl = JniUtils::jstringToWstring(aJni, aUrl); } - catch (ExceptionBase ex) + catch (ExceptionBase &ex) { ELOG1(EJavaBluetooth, "- JNI::rfServerOpen Exception:%S", ex.what()); @@ -1401,7 +1401,7 @@ { protocol = java::util::JniUtils::jstringToWstring(aJni, aProtocol); } - catch (ExceptionBase ex) + catch (ExceptionBase &ex) { ELOG1(EJavaBluetooth, "- JNI::initializeUpdateRecord Exception:%S", ex.what()); @@ -1450,7 +1450,7 @@ { protocol = java::util::JniUtils::jstringToWstring(aJni, aProtocol); } - catch (ExceptionBase ex) + catch (ExceptionBase &ex) { ELOG1(EJavaBluetooth, "- JNI::completesUpdateRecord Exception:%S", ex.what()); @@ -1502,7 +1502,7 @@ { protocol = java::util::JniUtils::jstringToWstring(aJni, aProtocol); } - catch (ExceptionBase ex) + catch (ExceptionBase &ex) { ELOG1(EJavaBluetooth, "- JNI::sdpAddAttribute Exception:%S", ex.what()); @@ -1655,7 +1655,7 @@ { protocol = java::util::JniUtils::jstringToWstring(aJni, aProtocol); } - catch (ExceptionBase ex) + catch (ExceptionBase &ex) { ELOG1(EJavaBluetooth, "- JNI::sdpAttributeListStart Exception:%S", ex.what()); @@ -1717,7 +1717,7 @@ { protocol = java::util::JniUtils::jstringToWstring(aJni, aProtocol); } - catch (ExceptionBase ex) + catch (ExceptionBase &ex) { ELOG1(EJavaBluetooth, "- JNI::sdpAttributeListEnd Exception:%S", ex.what()); diff -r 4ad59aaee882 -r 2f468c1958d0 javaextensions/bluetooth/omjbluetooth/src.s60/discoveryagent.cpp --- a/javaextensions/bluetooth/omjbluetooth/src.s60/discoveryagent.cpp Fri Sep 17 08:28:21 2010 +0300 +++ b/javaextensions/bluetooth/omjbluetooth/src.s60/discoveryagent.cpp Mon Oct 04 00:10:53 2010 +0300 @@ -178,7 +178,7 @@ devAddr = java::util::JniUtils::wstringToJstring(aJni, *(aDiscoveredDevice.mDeviceAddr)); } - catch (ExceptionBase ex) + catch (ExceptionBase &ex) { // Nothing to handle } @@ -196,7 +196,7 @@ devName = java::util::JniUtils::wstringToJstring(aJni, *(aDiscoveredDevice.mDeviceName)); } - catch (ExceptionBase ex) + catch (ExceptionBase &ex) { // Nothing to handle } @@ -372,7 +372,7 @@ } int DiscoveryAgent::PopulateServiceRecordAttrValue(JNIEnv* aJni, - jobject& aPeer, TInt64 aRemoteAddress, long aHandle, + TInt64 aRemoteAddress, long aHandle, TPtrC16 aAttrIdsDes, jobject aServiceRecordImpl, java::util::Monitor* aMonitor) { @@ -380,19 +380,17 @@ mServiceSearchMonitor = aMonitor; - jclass peerClass = (*aJni).GetObjectClass(aPeer); - LOG(EJavaBluetooth, EInfo, " DiscoveryAgent::PopulateServiceRecord: Starting populating service records "); TRAPD(err, CallMethodL(this, - &java::bluetooth::DiscoveryAgent::populateServiceRecordAttrValueFs, + &java::bluetooth::DiscoveryAgent::populateServiceRecordAttrValueFsL, aRemoteAddress, aHandle, aAttrIdsDes, aServiceRecordImpl, mFunctionServer)); return err; } -void DiscoveryAgent::populateServiceRecordAttrValueFs(TInt64 aRemoteAddress, +void DiscoveryAgent::populateServiceRecordAttrValueFsL(TInt64 aRemoteAddress, long aHandle, TPtrC16 aAttrIdsDes, jobject aServiceRecordImpl) { mServiceSearcher = BluetoothServiceSearcher::New(this, mFunctionServer); diff -r 4ad59aaee882 -r 2f468c1958d0 javaextensions/bluetooth/omjbluetooth/src.s60/discoveryagent.h --- a/javaextensions/bluetooth/omjbluetooth/src.s60/discoveryagent.h Fri Sep 17 08:28:21 2010 +0300 +++ b/javaextensions/bluetooth/omjbluetooth/src.s60/discoveryagent.h Mon Oct 04 00:10:53 2010 +0300 @@ -84,7 +84,7 @@ int getStatusOfCompletion(); - int PopulateServiceRecordAttrValue(JNIEnv* aJni, jobject& aPeer, + int PopulateServiceRecordAttrValue(JNIEnv* aJni, TInt64 aRemoteAddress, long aHandle, TPtrC16 aAttrIdsDes, jobject aServiceRecordImpl, java::util::Monitor* aMonitor); @@ -120,7 +120,7 @@ void StartedServiceSearch(JNIEnv* aJni, jobject& aPeer); - void populateServiceRecordAttrValueFs(TInt64 aRemoteAddress, long aHandle, + void populateServiceRecordAttrValueFsL(TInt64 aRemoteAddress, long aHandle, TPtrC16 aAttrIdsDes, jobject aServiceRecordImpl); private: diff -r 4ad59aaee882 -r 2f468c1958d0 javaextensions/midppush/build/build.xml --- a/javaextensions/midppush/build/build.xml Fri Sep 17 08:28:21 2010 +0300 +++ b/javaextensions/midppush/build/build.xml Mon Oct 04 00:10:53 2010 +0300 @@ -1,6 +1,6 @@ @@ -27,7 +27,7 @@ - @@ -35,5 +35,9 @@ + + + + diff -r 4ad59aaee882 -r 2f468c1958d0 javaextensions/midppush/javasrc/com/nokia/mj/impl/push/PushUtil.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javaextensions/midppush/javasrc/com/nokia/mj/impl/push/PushUtil.java Mon Oct 04 00:10:53 2010 +0300 @@ -0,0 +1,194 @@ +/* +* Copyright (c) 2010 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.mj.impl.push; + +import com.nokia.mj.impl.storage.StorageAttribute; +import com.nokia.mj.impl.storage.StorageEntry; +import com.nokia.mj.impl.storage.StorageNames; +import com.nokia.mj.impl.storage.StorageSession; +import com.nokia.mj.impl.utils.Uid; + +/** + * Utility methods for handling push registrations. + */ +public final class PushUtil +{ + /** + * Returns push registrations for specified application or + * application suite. + * + * @param aSession StorageSesion to be used for fetching + * the push registrations + * @param aUid either application or application suite Uid + * @return array of push registrations + */ + public static PushRegInfo[] getPushRegs(StorageSession aSession, Uid aUid) + { + // Find push registrations using application uid. + PushRegInfo[] pushRegs = getPushRegsForAppUid(aSession, aUid); + if (pushRegs.length > 0) + { + return pushRegs; + } + + // Push registrations not found, so find application uids using + // suite uid and then push registrations using application uids. + Uid[] appUids = getAppUids(aSession, aUid); + PushRegInfo[][] pushRegArray = new PushRegInfo[appUids.length][]; + int pushRegCount = 0; + for (int i = 0; i < appUids.length; i++) + { + pushRegArray[i] = getPushRegs(aSession, appUids[i]); + pushRegCount += pushRegArray[i].length; + } + pushRegs = new PushRegInfo[pushRegCount]; + int pushRegsIndex = 0; + for (int i = 0; i < pushRegArray.length; i++) + { + for (int j = 0; j < pushRegArray[i].length; j++) + { + pushRegs[pushRegsIndex++] = pushRegArray[i][j]; + } + } + return pushRegs; + } + + /** + * Returns push registrations for specified application. + * + * @param aSession StorageSesion to be used for fetching + * the push registrations + * @param aUid application Uid + * @return array of push registrations + */ + private static PushRegInfo[] getPushRegsForAppUid(StorageSession aSession, Uid aUid) + { + PushRegInfo[] pushRegs = new PushRegInfo[0]; + StorageEntry query = new StorageEntry(); + query.addAttribute( + new StorageAttribute(StorageNames.ID, aUid.getStringValue())); + StorageEntry[] entries = aSession.search( + StorageNames.PUSH_REGISTRATIONS_TABLE, query); + if (entries != null && entries.length > 0) + { + pushRegs = new PushRegInfo[entries.length]; + for (int i = 0; i < entries.length; i++) + { + Uid uid = Uid.createUid( + entries[i].getAttribute(StorageNames.ID).getValue()); + String name = entries[i].getAttribute(StorageNames.NAME).getValue(); + String url = entries[i].getAttribute(StorageNames.URL).getValue(); + String filter = entries[i].getAttribute(StorageNames.FILTER).getValue(); + int regType = Integer.parseInt( + entries[i].getAttribute(StorageNames.REGISTRATION_TYPE).getValue()); + pushRegs[i] = new PushRegInfo(uid, name, url, filter, regType); + } + } + return pushRegs; + } + + /** + * Returns application Uids for specified application suite. + * + * @param aSession StorageSesion to be used for fetching the Uids + * @param aSuiteUid application suite Uid + * @return array of application Uids + */ + private static Uid[] getAppUids(StorageSession aSession, Uid aUid) + { + Uid[] uids = new Uid[0]; + StorageEntry query = new StorageEntry(); + query.addAttribute(new StorageAttribute( + StorageNames.PACKAGE_ID, aUid.getStringValue())); + query.addAttribute(new StorageAttribute(StorageNames.ID, "")); + StorageEntry[] entries = + aSession.search(StorageNames.APPLICATION_TABLE, query); + if (entries != null && entries.length > 0) + { + uids = new Uid[entries.length]; + for (int i = 0; i < entries.length; i++) + { + uids[i] = Uid.createUid( + entries[i].getAttribute(StorageNames.ID).getValue()); + } + } + return uids; + } + + /** + * PushRegInfo contains information of one push registration. + */ + public static final class PushRegInfo + { + /** Dynamic push registration. */ + public static final int DYNAMIC = 0; + /** Static push registration. */ + public static final int STATIC = 1; + + /** Application Uid. */ + private Uid iUid = null; + /** Application name. */ + private String iName = null; + /** Push registration URL */ + private String iUrl = null; + /** Filter for incoming messages/connections. */ + private String iFilter = null; + /** Registration type. Either DYNAMIC or STATIC. */ + private int iRegType = DYNAMIC; + + PushRegInfo( + Uid aUid, String aName, String aUrl, String aFilter, int aRegType) + { + iUid = aUid; + iName = aName; + iUrl = aUrl; + iFilter = aFilter; + iRegType = aRegType; + } + + /** Returns application Uid. */ + public Uid getUid() + { + return iUid; + } + + /** Returns application name. */ + public String getName() + { + return iName; + } + + /** Returns push registration URL */ + public String getUrl() + { + return iUrl; + } + + /** Returns filter for incoming messages/connections. */ + public String getFilter() + { + return iFilter; + } + + /** Returns registration type. Either DYNAMIC or STATIC. */ + public int getRegType() + { + return iRegType; + } + } +} diff -r 4ad59aaee882 -r 2f468c1958d0 javaextensions/midprms_db/tsrc/build/build.xml --- a/javaextensions/midprms_db/tsrc/build/build.xml Fri Sep 17 08:28:21 2010 +0300 +++ b/javaextensions/midprms_db/tsrc/build/build.xml Mon Oct 04 00:10:53 2010 +0300 @@ -85,7 +85,7 @@ - + diff -r 4ad59aaee882 -r 2f468c1958d0 javaextensions/pim/javasrc.s60/com/nokia/mj/impl/pim/utils/NativeError.java --- a/javaextensions/pim/javasrc.s60/com/nokia/mj/impl/pim/utils/NativeError.java Fri Sep 17 08:28:21 2010 +0300 +++ b/javaextensions/pim/javasrc.s60/com/nokia/mj/impl/pim/utils/NativeError.java Mon Oct 04 00:10:53 2010 +0300 @@ -644,7 +644,8 @@ } } } - public static void handleCreateCalendarError(int aNativeErrorCode, String aCalName) + public static void handleCreateCalendarError(int aNativeErrorCode, String aCalName) + throws PIMException { @@ -669,7 +670,7 @@ } case OsErrorMessage.KERR_ALREADY_EXISTS: { - throw new RuntimeException(ErrorString.CALENDAR_ALREADY_EXISTS); + throw new PIMException(ErrorString.CALENDAR_ALREADY_EXISTS, PIMException.GENERAL_ERROR); } default: { diff -r 4ad59aaee882 -r 2f468c1958d0 javaextensions/pim/javasrc/com/nokia/mj/impl/pim/PIMManager.java --- a/javaextensions/pim/javasrc/com/nokia/mj/impl/pim/PIMManager.java Fri Sep 17 08:28:21 2010 +0300 +++ b/javaextensions/pim/javasrc/com/nokia/mj/impl/pim/PIMManager.java Mon Oct 04 00:10:53 2010 +0300 @@ -217,15 +217,15 @@ { if (operation == null) { - if (calendarName != null) + if (!calendarName.trim().equals("")) { //This is the case of opening an existing calendar return doOpenPIMList(aPimListType, aMode, listName, "C:" + calendarName); } else { - //This is the case with IllegalArgumentException - throw new IllegalArgumentException("Calendar Name is NULL"); + //This is the case with PIMException + throw new PIMException("Can not" + operation + "Default Calendar", PIMException.GENERAL_ERROR); } } else if (operation.equals("create")) @@ -241,6 +241,8 @@ deleteCalendar(calendarName); int listHandle = 0; PIMListImpl pimList = new EventListImpl(listHandle, aMode); + // Close the dummy list + pimList.close(); return pimList; } else @@ -415,7 +417,7 @@ } - private synchronized void createCalendar(String aCalName) + private synchronized void createCalendar(String aCalName) throws PIMException { String displayName = aCalName; diff -r 4ad59aaee882 -r 2f468c1958d0 javamanager/javaappscheme/src.s60/serviceapp.cpp --- a/javamanager/javaappscheme/src.s60/serviceapp.cpp Fri Sep 17 08:28:21 2010 +0300 +++ b/javamanager/javaappscheme/src.s60/serviceapp.cpp Mon Oct 04 00:10:53 2010 +0300 @@ -66,8 +66,7 @@ // the name of the name of the service and then the name of the interface // (from service_conf.xml) UriService::UriService(ServiceApp* parent) -: XQServiceProvider(QLatin1String("javaappscheme.com.nokia.symbian.IUriView"),parent), - mServiceApp(parent) +: XQServiceProvider(QLatin1String("javaappscheme.com.nokia.symbian.IUriView"),parent) { LOG(EJavaQtServiceApp, EInfo, "UriService::UriService called"); publishAll(); diff -r 4ad59aaee882 -r 2f468c1958d0 javamanager/javaappscheme/src.s60/serviceapp.h --- a/javamanager/javaappscheme/src.s60/serviceapp.h Fri Sep 17 08:28:21 2010 +0300 +++ b/javamanager/javaappscheme/src.s60/serviceapp.h Mon Oct 04 00:10:53 2010 +0300 @@ -35,8 +35,7 @@ ServiceApp(int &argc, char **argv); ~ServiceApp(); -// TEMP TEST -public slots: +public slots: static void quit(); private: @@ -54,9 +53,6 @@ public slots: bool view(const QString& uri); bool view(const QString& uri, bool returnValue); - - private: - ServiceApp* mServiceApp; }; diff -r 4ad59aaee882 -r 2f468c1958d0 javamanager/javacaptain/extensionplugins/javacertstore/inc/javacertstore.h --- a/javamanager/javacaptain/extensionplugins/javacertstore/inc/javacertstore.h Fri Sep 17 08:28:21 2010 +0300 +++ b/javamanager/javacaptain/extensionplugins/javacertstore/inc/javacertstore.h Mon Oct 04 00:10:53 2010 +0300 @@ -69,6 +69,7 @@ { std::string full_path; std::string hash; + std::string pkey; int state; bool disposable; bool disablable; diff -r 4ad59aaee882 -r 2f468c1958d0 javamanager/javacaptain/extensionplugins/javacertstore/src/javacertstore.cpp --- a/javamanager/javacaptain/extensionplugins/javacertstore/src/javacertstore.cpp Fri Sep 17 08:28:21 2010 +0300 +++ b/javamanager/javacaptain/extensionplugins/javacertstore/src/javacertstore.cpp Mon Oct 04 00:10:53 2010 +0300 @@ -120,7 +120,7 @@ } std::string id; aMessage >> id; - int state; + int state = STATE_UNDEFINED; switch (operation) { case JAVA_CERT_STORE_OPERATION_DELETE_CERT: @@ -196,7 +196,8 @@ || (queryDisabled && iCertsMetadata[i]->state == STATE_DISABLED) || (queryDeleted && iCertsMetadata[i]->state == STATE_DELETED)) && (hash.compare("") == 0 - || iCertsMetadata[i]->hash.compare(hash) == 0)) + || iCertsMetadata[i]->hash.compare(hash) == 0 + || iCertsMetadata[i]->pkey.find(hash) == 0)) { // what we return back depends on what was queried switch (query) @@ -211,7 +212,14 @@ if (replyWithContent(replyMsg, *iCertsMetadata[i])) { // add also the ID and the state - replyMsg << iCertsMetadata[i]->hash; + if (iCertsMetadata[i]->pkey.size() > 0) + { + replyMsg << iCertsMetadata[i]->pkey; + } + else + { + replyMsg << iCertsMetadata[i]->hash; + } replyMsg << encodeState(iCertsMetadata[i]->disposable, iCertsMetadata[i]->disablable, iCertsMetadata[i]->state); @@ -366,6 +374,7 @@ const int READ_HASH = 4; const int READ_REMOVABLE = 5; const int READ_DISABLABLE = 6; + const int READ_PKEY = 7; // domain_name_info int domain_name_index = 0; @@ -383,6 +392,10 @@ bool removable = false; bool disablable = false; + // pkey info + int pkey_index = 0; + char pkey[50]; + // start&end separators for the metadata's keys bool key_ss = true; bool key_es = false; @@ -417,6 +430,10 @@ op = READ_DISABLABLE; key_ss = false; break; + case 'p': + op = READ_PKEY; + key_ss = false; + break; } } else @@ -462,6 +479,11 @@ disablable = true; } break; + case READ_PKEY: + pkey[pkey_index] = (char)retval; + pkey_index++; + pkey[pkey_index] = '\0'; + break; } } } @@ -470,6 +492,11 @@ && domain_category_index > 0 && hash_index > 0) { + if (pkey_index > 0) + { + metadata->pkey = string(pkey, pkey_index); + transform(metadata->pkey.begin(), metadata->pkey.end(), metadata->pkey.begin(), (int(*)(int)) tolower); + } metadata->prot_domain_name = string(domain_name, domain_name_index); metadata->prot_domain_category = string(domain_category, domain_category_index); metadata->hash = string(hash, hash_index); @@ -552,7 +579,8 @@ // go through the certidicates and find the right one for (int i=0; ihash) == 0) + if (cert_id.compare(iCertsMetadata[i]->hash) == 0 || + iCertsMetadata[i]->pkey.find(cert_id) == 0) { switch (state) { @@ -784,7 +812,8 @@ bool found = false; for (int i=0; ihash.compare(metadata->hash) == 0) + if (iCertsMetadata[i]->hash.compare(metadata->hash) == 0 + && iCertsMetadata[i]->pkey.find(metadata->pkey) == 0) { if (overwrite) { diff -r 4ad59aaee882 -r 2f468c1958d0 javamanager/javacaptain/systemams/build/systemams.mmp --- a/javamanager/javacaptain/systemams/build/systemams.mmp Fri Sep 17 08:28:21 2010 +0300 +++ b/javamanager/javacaptain/systemams/build/systemams.mmp Mon Oct 04 00:10:53 2010 +0300 @@ -21,9 +21,6 @@ #include <../../../../inc/project_defines.hrh> #include <../../../../inc/java_stdcpp_support_for_exe.hrh> -epocheapsize 0x00001000 0x02000000 -epocstacksize 16384 - target SystemAMS.exe TARGETTYPE EXE diff -r 4ad59aaee882 -r 2f468c1958d0 javamanager/javainstaller/installer/build/javainstaller.pro --- a/javamanager/javainstaller/installer/build/javainstaller.pro Fri Sep 17 08:28:21 2010 +0300 +++ b/javamanager/javainstaller/installer/build/javainstaller.pro Mon Oct 04 00:10:53 2010 +0300 @@ -65,6 +65,7 @@ contains(PROJECT_DEFINES,RD_JAVA_S60_RELEASE_10_1_ONWARDS) { CONFIG += hb LIBS += -lsifnotification -lxqservice + TRANSLATIONS = javaapplicationinstaller.ts } MMP_RULES += \ diff -r 4ad59aaee882 -r 2f468c1958d0 javamanager/javainstaller/installer/javasrc/com/nokia/mj/impl/installer/jsrpluginnotifier/JsrPluginNotifierBase.java --- a/javamanager/javainstaller/installer/javasrc/com/nokia/mj/impl/installer/jsrpluginnotifier/JsrPluginNotifierBase.java Fri Sep 17 08:28:21 2010 +0300 +++ b/javamanager/javainstaller/installer/javasrc/com/nokia/mj/impl/installer/jsrpluginnotifier/JsrPluginNotifierBase.java Mon Oct 04 00:10:53 2010 +0300 @@ -82,25 +82,31 @@ public void notifyInstallation(InstallerExtensionInfo aInfo) { Log.log("JsrPluginNotifierBase.NotifyInstallation called"); - - // Are there any plugins to be notified - if (iJsrPlugins.size() > 0) + boolean continueInstallation = true; + InstallerExtension plugin = null; + for (int i = 0; i < iJsrPlugins.size(); i++) { - boolean continueInstallation = true; - Iterator iter = iJsrPlugins.iterator(); - InstallerExtension plugin; - while (iter.hasNext()) + try + { + plugin = (InstallerExtension)iJsrPlugins.elementAt(i); + Log.log("Jsr plugin install " + plugin.getClass().getName()); + continueInstallation = plugin.install(aInfo); + } + catch (Throwable t) { - plugin = (InstallerExtension)iter.next(); - continueInstallation = plugin.install(aInfo); - - // Check whether JSR plugin cancels installation - if (!continueInstallation) - { - InstallerException.internalError( - "Jsr plugin " + plugin.getClass().getName() + - " cancelled installation."); - } + Log.logError("Installer Jsr plugin " + + plugin.getClass().getName() + + " install exception " + t, t); + continueInstallation = false; + } + // Check if JSR plugin cancelled installation. + if (!continueInstallation) + { + // Rollback those plugins which already got notified. + notifyRollbackInstall(aInfo, i); + InstallerException.internalError( + "Jsr plugin " + plugin.getClass().getName() + + " cancelled installation."); } } } @@ -116,25 +122,31 @@ public void notifyUninstallation(InstallerExtensionInfo aInfo) { Log.log("JsrPluginNotifierBase.notifyUninstallation called"); - - // Are there any plugins to be notified - if (iJsrPlugins.size() > 0) + boolean continueUninstallation = true; + InstallerExtension plugin = null; + for (int i = 0; i < iJsrPlugins.size(); i++) { - boolean continueUninstallation = true; - Iterator iter = iJsrPlugins.iterator(); - InstallerExtension plugin; - while (iter.hasNext()) + try + { + plugin = (InstallerExtension)iJsrPlugins.elementAt(i); + Log.log("Jsr plugin uninstall " + plugin.getClass().getName()); + continueUninstallation = plugin.uninstall(aInfo); + } + catch (Throwable t) { - plugin = (InstallerExtension)iter.next(); - continueUninstallation = plugin.uninstall(aInfo); - - // Check whether JSR plugin cancels uninstallation - if (!continueUninstallation) - { - InstallerException.internalError( - "Jsr plugin " + plugin.getClass().getName() + - " cancelled uninstallation."); - } + Log.logError("Installer Jsr plugin " + + plugin.getClass().getName() + + " uninstall exception " + t, t); + continueUninstallation = false; + } + // Check if JSR plugin cancelled uninstallation. + if (!continueUninstallation) + { + // Rollback those plugins which already got notified. + notifyRollbackUninstall(aInfo, i); + InstallerException.internalError( + "Jsr plugin " + plugin.getClass().getName() + + " cancelled uninstallation."); } } } @@ -150,18 +162,7 @@ public void notifyRollbackInstall(InstallerExtensionInfo aInfo) { Log.log("JsrPluginNotifierBase.notifyRollbackInstall called"); - - // Are there any plugins to be notified - if (iJsrPlugins.size() > 0) - { - Iterator iter = iJsrPlugins.iterator(); - InstallerExtension plugin; - while (iter.hasNext()) - { - plugin = (InstallerExtension)iter.next(); - plugin.rollbackInstall(aInfo); - } - } + notifyRollbackInstall(aInfo, iJsrPlugins.size()); } /** @@ -175,18 +176,7 @@ public void notifyRollbackUninstall(InstallerExtensionInfo aInfo) { Log.log("JsrPluginNotifierBase.notifyRollbackUninstall called"); - - // Are there any plugins to be notified - if (iJsrPlugins.size() > 0) - { - Iterator iter = iJsrPlugins.iterator(); - InstallerExtension plugin; - while (iter.hasNext()) - { - plugin = (InstallerExtension)iter.next(); - plugin.rollbackUninstall(aInfo); - } - } + notifyRollbackUninstall(aInfo, iJsrPlugins.size()); } /** @@ -240,19 +230,19 @@ } catch (ClassNotFoundException e2) { - Log.logError("Jsr plugin class" + className + " is not found."); + Log.logError("Installer Jsr plugin class" + className + " not found."); } catch (InstantiationException e3) { - Log.logError("Cannot instantiate Jsr plugin " + className); + Log.logError("Installer cannot instantiate Jsr plugin " + className); } catch (IllegalAccessException e4) { - Log.logError("Cannot access Jsr plugin " + className); + Log.logError("Installer cannot access Jsr plugin " + className); } catch (ClassCastException e5) { - Log.logError("Jsr plugin " + className + + Log.logError("Installer Jsr plugin " + className + " does not implement interface InstallerExtension."); } } @@ -300,7 +290,7 @@ } catch (IOException e) { - Log.logError("JsrPluginNotifier cannot read plugin " + + Log.logError("Installer JsrPluginNotifier cannot read plugin " + "config file " + aFileName, e); return; } @@ -316,11 +306,70 @@ catch (IOException ioe) { Log.logError( - "JsrPluginNotifier: exception while closing reader", + "Installer JsrPluginNotifier: exception while closing reader", ioe); } } } } + /** + * Notifies Jsr plugins in iJsrPlugins vector that the installation of + * a MIDlet suite has been cancelled by calling the rollbackInstall() + * method of the plugins. + * + * @param aInfo notification information object + * @param aCount number of plugins to notify + * @see InstallerExtension#rollbackInstall + */ + private void notifyRollbackInstall(InstallerExtensionInfo aInfo, int aCount) + { + InstallerExtension plugin = null; + for (int i = aCount - 1; i >= 0; i--) + { + try + { + plugin = (InstallerExtension)iJsrPlugins.elementAt(i); + Log.log("Jsr plugin rollbackInstall " + + plugin.getClass().getName()); + plugin.rollbackInstall(aInfo); + } + catch (Throwable t) + { + Log.logError("Installer Jsr plugin " + + plugin.getClass().getName() + + " rollbackInstall exception " + t, t); + } + } + } + + /** + * Notifies Jsr plugins in iJsrPlugins vector that the uninstallation of + * a MIDlet suite has been cancelled by calling the rollbackUninstall() + * method of the plugins. + * + * @param aInfo notification information object + * @param aCount number of plugins to notify + * @see InstallerExtension#rollbackUninstall + */ + private void notifyRollbackUninstall(InstallerExtensionInfo aInfo, int aCount) + { + InstallerExtension plugin = null; + for (int i = aCount - 1; i >= 0; i--) + { + try + { + plugin = (InstallerExtension)iJsrPlugins.elementAt(i); + Log.log("Jsr plugin rollbackUninstall " + + plugin.getClass().getName()); + plugin.rollbackUninstall(aInfo); + } + catch (Throwable t) + { + Log.logError("Installer Jsr plugin " + + plugin.getClass().getName() + + " rollbackUninstall exception " + t, t); + } + } + } } diff -r 4ad59aaee882 -r 2f468c1958d0 javamanager/javainstaller/installer/src.s60/applicationregistrator/sifregistrator.cpp --- a/javamanager/javainstaller/installer/src.s60/applicationregistrator/sifregistrator.cpp Fri Sep 17 08:28:21 2010 +0300 +++ b/javamanager/javainstaller/installer/src.s60/applicationregistrator/sifregistrator.cpp Mon Oct 04 00:10:53 2010 +0300 @@ -583,8 +583,8 @@ CCaptionAndIconInfo *tmpCaptionAndIconInfo = CCaptionAndIconInfo::NewLC( /*aCaption=*/ *tmpCaption, - /*aIconFileName=*/ KNullDesC, - /*aNumOfAppIcons=*/ 0); + /*aIconFileName=*/ (NULL != aIconFilename? *iconFilename: KNullDesC()), + /*aNumOfAppIcons=*/ numberOfAppIcons); CLocalizableAppInfo *tmpLocAppInfo = CLocalizableAppInfo::NewLC( /*aShortCaption=*/ KNullDesC, @@ -701,12 +701,16 @@ HBufC *value = CreateHBufCFromJavaStringLC(aEnv, aValue); if (KUnspecifiedLocale == aLanguage) { + __UHEAP_MARK; aScr->SetComponentPropertyL(aComponentId, *name, *value); + __UHEAP_MARKEND; } else { + __UHEAP_MARK; aScr->SetComponentPropertyL( aComponentId, *name, *value, (TLanguage)aLanguage); + __UHEAP_MARKEND; } CleanupStack::PopAndDestroy(value); CleanupStack::PopAndDestroy(name); diff -r 4ad59aaee882 -r 2f468c1958d0 javamanager/javainstaller/installer/tsrc/javasrc/com/nokia/mj/impl/installer/jsrpluginnotifier/JsrPluginNotifierTest.java --- a/javamanager/javainstaller/installer/tsrc/javasrc/com/nokia/mj/impl/installer/jsrpluginnotifier/JsrPluginNotifierTest.java Fri Sep 17 08:28:21 2010 +0300 +++ b/javamanager/javainstaller/installer/tsrc/javasrc/com/nokia/mj/impl/installer/jsrpluginnotifier/JsrPluginNotifierTest.java Mon Oct 04 00:10:53 2010 +0300 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2008-2010 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" @@ -72,6 +72,14 @@ } })); + suite.addTest(new JsrPluginNotifierTest("testNotifyPluginInstallException", new TestMethod() + { + public void run(TestCase tc) + { + ((JsrPluginNotifierTest)tc).testNotifyPluginInstallException(); + } + })); + suite.addTest(new JsrPluginNotifierTest("testNotifyPluginsUninstall", new TestMethod() { public void run(TestCase tc) @@ -80,6 +88,14 @@ } })); + suite.addTest(new JsrPluginNotifierTest("testNotifyPluginUninstallException", new TestMethod() + { + public void run(TestCase tc) + { + ((JsrPluginNotifierTest)tc).testNotifyPluginUninstallException(); + } + })); + suite.addTest(new JsrPluginNotifierTest("testPluginCancelsUninstallation", new TestMethod() { public void run(TestCase tc) @@ -104,6 +120,14 @@ } })); + suite.addTest(new JsrPluginNotifierTest("testRollbackInstallNotificationException", new TestMethod() + { + public void run(TestCase tc) + { + ((JsrPluginNotifierTest)tc).testRollbackInstallNotificationException(); + } + })); + suite.addTest(new JsrPluginNotifierTest("testRollbackUninstallNotification", new TestMethod() { public void run(TestCase tc) @@ -112,6 +136,14 @@ } })); + suite.addTest(new JsrPluginNotifierTest("testRollbackUninstallNotificationException", new TestMethod() + { + public void run(TestCase tc) + { + ((JsrPluginNotifierTest)tc).testRollbackUninstallNotificationException(); + } + })); + com.nokia.mj.impl.utils.OmjTestRunner.run(suite); } @@ -222,6 +254,39 @@ assertTrue("TestPlugin2 correct method was not called", plugin2.equals("install")); } + public void testNotifyPluginInstallException() + { + JsrPluginNotifier notif = new JsrPluginNotifier(iIntegrityService); + + assertTrue("Number of plugin class names was not 5, it is " + + String.valueOf(notif.iClassNames.size()), (notif.iClassNames.size() == 5)); + assertTrue("Number of initialized plugins was not 2, it is " + + String.valueOf(notif.iJsrPlugins.size()), (notif.iJsrPlugins.size() == 2)); + + // Initialize necessary values in ball for notification call + Uid uid = Uid.createUid("[A0032000]"); + iInstallerExtensionInfo.iUid = uid; + iInstallerExtensionInfo.iAttributes = new Hashtable(); + Attribute att = new Attribute("MIDlet-1", "3DSpaceShooter, /icon.png, Space3D"); + iInstallerExtensionInfo.iAttributes.put("MIDlet-1", att); + att = new Attribute("JSR-Plugin-Test-Exception", "true"); + iInstallerExtensionInfo.iAttributes.put("JSR-Plugin-Test-Exception", att); + att = new Attribute("MIDlet-Jar-Size", "240229"); + iInstallerExtensionInfo.iAttributes.put("MIDlet-Jar-Size", att); + + try + { + notif.notifyInstallation(iInstallerExtensionInfo); + // Test plugin TestPlugin2 throws exception if JAD/JAR attribute + // JSR-Plugin-Test-Exception exists. + assertTrue("Test plugin did not throw exception like should have.", false); + } + catch (InstallerException e) + { + // OK, installation is cancelled ok + } + } + public void testNoPluginsToNotify() { JsrPluginNotifier notif = new JsrPluginNotifier(iIntegrityService); @@ -282,6 +347,34 @@ assertTrue("TestPlugin2 correct method was not called", plugin2.equals("uninstall")); } + public void testNotifyPluginUninstallException() + { + JsrPluginNotifier notif = new JsrPluginNotifier(iIntegrityService); + + // Initialize necessary values in ball for notification call + Uid uid = Uid.createUid("[A0032003]"); + iInstallerExtensionInfo.iUid = uid; + iInstallerExtensionInfo.iAttributes = new Hashtable(); + Attribute att = new Attribute("MIDlet-1", "3DSpaceShooter, /icon.png, Space3D"); + iInstallerExtensionInfo.iAttributes.put("MIDlet-1", att); + att = new Attribute("JSR-Plugin-Test-Exception", "true"); + iInstallerExtensionInfo.iAttributes.put("JSR-Plugin-Test-Exception", att); + att = new Attribute("MIDlet-Jar-Size", "240229"); + iInstallerExtensionInfo.iAttributes.put("MIDlet-Jar-Size", att); + + try + { + notif.notifyUninstallation(iInstallerExtensionInfo); + // Test plugin TestPlugin2 throws exception if JAD/JAR attribute + // JSR-Plugin-Test-Exception exists. + assertTrue("Test plugin did not throw exception like it should have.", false); + } + catch (InstallerException e) + { + // OK, uninstallation is cancelled ok + } + } + public void testPluginCancelsUninstallation() { JsrPluginNotifier notif = new JsrPluginNotifier(iIntegrityService); @@ -332,6 +425,30 @@ assertTrue("TestPlugin2 correct method was not called", plugin2.equals("rollbackInstall")); } + public void testRollbackInstallNotificationException() + { + JsrPluginNotifier notif = new JsrPluginNotifier(iIntegrityService); + + // Initialize necessary values in ball for notification call + Uid uid = Uid.createUid("[A0032001]"); + iInstallerExtensionInfo.iUid = uid; + iInstallerExtensionInfo.iAttributes = new Hashtable(); + Attribute att = new Attribute("MIDlet-1", "3DSpaceShooter, /icon.png, Space3D"); + iInstallerExtensionInfo.iAttributes.put("MIDlet-1", att); + att = new Attribute("Nokia-MIDlet-On-Screen-Keypad", "navigationkeys"); + iInstallerExtensionInfo.iAttributes.put("Nokia-MIDlet-On-Screen-Keypad", att); + att = new Attribute("JSR-Plugin-Test-Exception", "true"); + iInstallerExtensionInfo.iAttributes.put("JSR-Plugin-Test-Exception", att); + att = new Attribute("MIDlet-Jar-Size", "240229"); + iInstallerExtensionInfo.iAttributes.put("MIDlet-Jar-Size", att); + + notif.notifyRollbackInstall(iInstallerExtensionInfo); + + String plugin2 = System.getProperty("TestPlugin2"); + assertTrue("TestPlugin2 was not called", plugin2 != null); + assertTrue("TestPlugin2 correct method was not called", plugin2.equals("rollbackInstall")); + } + public void testRollbackUninstallNotification() { JsrPluginNotifier notif = new JsrPluginNotifier(iIntegrityService); @@ -354,5 +471,27 @@ assertTrue("TestPlugin2 correct method was not called. Method was " + plugin2, plugin2.equals("rollbackUninstall")); } + public void testRollbackUninstallNotificationException() + { + JsrPluginNotifier notif = new JsrPluginNotifier(iIntegrityService); + // Initialize necessary values in ball for notification call + Uid uid = Uid.createUid("[A0032002]"); + iInstallerExtensionInfo.iUid = uid; + iInstallerExtensionInfo.iAttributes = new Hashtable(); + Attribute att = new Attribute("MIDlet-1", "3DSpaceShooter, /icon.png, Space3D"); + iInstallerExtensionInfo.iAttributes.put("MIDlet-1", att); + att = new Attribute("Nokia-MIDlet-On-Screen-Keypad", "navigationkeys"); + iInstallerExtensionInfo.iAttributes.put("Nokia-MIDlet-On-Screen-Keypad", att); + att = new Attribute("JSR-Plugin-Test-Exception", "true"); + iInstallerExtensionInfo.iAttributes.put("JSR-Plugin-Test-Exception", att); + att = new Attribute("MIDlet-Jar-Size", "240229"); + iInstallerExtensionInfo.iAttributes.put("MIDlet-Jar-Size", att); + + notif.notifyRollbackUninstall(iInstallerExtensionInfo); + + String plugin2 = System.getProperty("TestPlugin2"); + assertTrue("TestPlugin2 was not called", plugin2 != null); + assertTrue("TestPlugin2 correct method was not called. Method was " + plugin2, plugin2.equals("rollbackUninstall")); + } } diff -r 4ad59aaee882 -r 2f468c1958d0 javamanager/javainstaller/installer/tsrc/javasrc/com/nokia/mj/impl/installer/jsrpluginnotifier/TestPlugin2.java --- a/javamanager/javainstaller/installer/tsrc/javasrc/com/nokia/mj/impl/installer/jsrpluginnotifier/TestPlugin2.java Fri Sep 17 08:28:21 2010 +0300 +++ b/javamanager/javainstaller/installer/tsrc/javasrc/com/nokia/mj/impl/installer/jsrpluginnotifier/TestPlugin2.java Mon Oct 04 00:10:53 2010 +0300 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2008-2010 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" @@ -47,6 +47,14 @@ return false; } + // If the MIDlet to be installed has JAD/JAR attribute + // "JSR-Plugin-Test-Exception" with any value, throw Exception + if ((aInstallerExtensionInfo.iAttributes != null) && + (aInstallerExtensionInfo.iAttributes.get("JSR-Plugin-Test-Exception") != null)) + { + throw new RuntimeException("TestPlugin2.install Exception"); + } + return true; } @@ -64,7 +72,7 @@ // tell that this plugin has been called System.setProperty("TestPlugin2", "uninstall"); - // If the MIDlet to be installed has JAD/JAR attribute + // If the MIDlet to be uninstalled has JAD/JAR attribute // "JSR-Plugin-Test-Cancel" with any value, cancel install if ((aInstallerExtensionInfo.iAttributes != null) && (aInstallerExtensionInfo.iAttributes.get("JSR-Plugin-Test-Cancel") != null)) @@ -72,6 +80,14 @@ return false; } + // If the MIDlet to be uninstalled has JAD/JAR attribute + // "JSR-Plugin-Test-Exception" with any value, throw Exception + if ((aInstallerExtensionInfo.iAttributes != null) && + (aInstallerExtensionInfo.iAttributes.get("JSR-Plugin-Test-Exception") != null)) + { + throw new RuntimeException("TestPlugin2.uninstall Exception"); + } + return true; } @@ -88,6 +104,14 @@ // tell that this plugin has been called System.setProperty("TestPlugin2", "rollbackInstall"); + + // If the MIDlet to be installed has JAD/JAR attribute + // "JSR-Plugin-Test-Exception" with any value, throw Exception + if ((aInstallerExtensionInfo.iAttributes != null) && + (aInstallerExtensionInfo.iAttributes.get("JSR-Plugin-Test-Exception") != null)) + { + throw new RuntimeException("TestPlugin2.rollbackInstall Exception"); + } } /** @@ -102,5 +126,13 @@ // tell that this plugin has been called System.setProperty("TestPlugin2", "rollbackUninstall"); + + // If the MIDlet to be uninstalled has JAD/JAR attribute + // "JSR-Plugin-Test-Exception" with any value, throw Exception + if ((aInstallerExtensionInfo.iAttributes != null) && + (aInstallerExtensionInfo.iAttributes.get("JSR-Plugin-Test-Exception") != null)) + { + throw new RuntimeException("TestPlugin2.rollbackUninstall Exception"); + } } } diff -r 4ad59aaee882 -r 2f468c1958d0 javamanager/javainstaller/installerui/javasrc/com/nokia/mj/impl/installer/ui/eswt/InstallerUiEswt.java --- a/javamanager/javainstaller/installerui/javasrc/com/nokia/mj/impl/installer/ui/eswt/InstallerUiEswt.java Fri Sep 17 08:28:21 2010 +0300 +++ b/javamanager/javainstaller/installerui/javasrc/com/nokia/mj/impl/installer/ui/eswt/InstallerUiEswt.java Mon Oct 04 00:10:53 2010 +0300 @@ -1152,11 +1152,14 @@ { long startTime = System.currentTimeMillis(); + int maxWidth = DisplayExtension.getBestImageWidth(DisplayExtension.LIST_ELEMENT); + int maxHeight = DisplayExtension.getBestImageHeight(DisplayExtension.LIST_ELEMENT); + + aDisplay.setData("org.eclipse.swt.internal.image.loadSize", new Point(maxWidth, maxHeight)); Image image = new Image(aDisplay, aInputStream); + if (aScaleImage) { - int maxWidth = DisplayExtension.getBestImageWidth(DisplayExtension.LIST_ELEMENT); - int maxHeight = DisplayExtension.getBestImageHeight(DisplayExtension.LIST_ELEMENT); Rectangle rect = image.getBounds(); if (maxWidth != rect.width || maxHeight != rect.height) { diff -r 4ad59aaee882 -r 2f468c1958d0 javamanager/javainstaller/installerui/javasrc/com/nokia/mj/impl/installer/ui/eswt2/CertificateDetailsView.java --- a/javamanager/javainstaller/installerui/javasrc/com/nokia/mj/impl/installer/ui/eswt2/CertificateDetailsView.java Fri Sep 17 08:28:21 2010 +0300 +++ b/javamanager/javainstaller/installerui/javasrc/com/nokia/mj/impl/installer/ui/eswt2/CertificateDetailsView.java Mon Oct 04 00:10:53 2010 +0300 @@ -48,7 +48,7 @@ iCerts = aCerts; iCertIndex = aCertIndex; setTitle(aTitle); - setCommands(null, InstallerUiTexts.get(InstallerUiTexts.OK)); + setCommands(null, InstallerUiTexts.get(InstallerUiTexts.CLOSE)); } /** diff -r 4ad59aaee882 -r 2f468c1958d0 javamanager/javainstaller/installerui/javasrc/com/nokia/mj/impl/installer/ui/eswt2/ErrorView.java --- a/javamanager/javainstaller/installerui/javasrc/com/nokia/mj/impl/installer/ui/eswt2/ErrorView.java Fri Sep 17 08:28:21 2010 +0300 +++ b/javamanager/javainstaller/installerui/javasrc/com/nokia/mj/impl/installer/ui/eswt2/ErrorView.java Mon Oct 04 00:10:53 2010 +0300 @@ -42,7 +42,7 @@ { super(aInstallerUi, aParent, 8); setTitle(InstallerUiTexts.get(InstallerUiTexts.INSTALL_FAILED)); - setCommands(InstallerUiTexts.get(InstallerUiTexts.SHOW), + setCommands(InstallerUiTexts.get(InstallerUiTexts.DETAILS), InstallerUiTexts.get(InstallerUiTexts.CLOSE)); } @@ -94,7 +94,7 @@ { // After other widgets have been added, add content to // application info Composite. - addAppInfo(iInstallerUi.getInstallInfo(), true); + addAppInfo(iInstallerUi.getInstallInfo(), true, false); } } diff -r 4ad59aaee882 -r 2f468c1958d0 javamanager/javainstaller/installerui/javasrc/com/nokia/mj/impl/installer/ui/eswt2/InstallConfirmationView.java --- a/javamanager/javainstaller/installerui/javasrc/com/nokia/mj/impl/installer/ui/eswt2/InstallConfirmationView.java Fri Sep 17 08:28:21 2010 +0300 +++ b/javamanager/javainstaller/installerui/javasrc/com/nokia/mj/impl/installer/ui/eswt2/InstallConfirmationView.java Mon Oct 04 00:10:53 2010 +0300 @@ -162,7 +162,7 @@ // After other widgets have been added, add content to // application info Composite. - addAppInfo(iInstallInfo, true); + addAppInfo(iInstallInfo, true, true); } /** @@ -241,10 +241,6 @@ case InstallInfo.DRIVE_TYPE_UNKNOWN: switch (prefix) { - case 0: - textId = InstallerUiTexts.DRIVE_TYPE_UNKNOWN; - textParams = new String[] { driveLetter }; - break; case 1: textId = InstallerUiTexts.DRIVE_TYPE_UNKNOWN_KB; break; @@ -259,10 +255,6 @@ case InstallInfo.DRIVE_TYPE_PHONE_MEMORY: switch (prefix) { - case 0: - textId = InstallerUiTexts.DRIVE_TYPE_PHONE_MEMORY; - textParams = new String[] { driveLetter }; - break; case 1: textId = InstallerUiTexts.DRIVE_TYPE_PHONE_MEMORY_KB; break; @@ -277,10 +269,6 @@ case InstallInfo.DRIVE_TYPE_MEMORY_CARD: switch (prefix) { - case 0: - textId = InstallerUiTexts.DRIVE_TYPE_MEMORY_CARD; - textParams = new String[] { driveLetter }; - break; case 1: textId = InstallerUiTexts.DRIVE_TYPE_MEMORY_CARD_KB; break; @@ -295,10 +283,6 @@ case InstallInfo.DRIVE_TYPE_INTERNAL_MASS_STORAGE: switch (prefix) { - case 0: - textId = InstallerUiTexts.DRIVE_TYPE_INTERNAL_MASS_STORAGE; - textParams = new String[] { driveLetter }; - break; case 1: textId = InstallerUiTexts.DRIVE_TYPE_INTERNAL_MASS_STORAGE_KB; break; diff -r 4ad59aaee882 -r 2f468c1958d0 javamanager/javainstaller/installerui/javasrc/com/nokia/mj/impl/installer/ui/eswt2/InstallerUiEswt.java --- a/javamanager/javainstaller/installerui/javasrc/com/nokia/mj/impl/installer/ui/eswt2/InstallerUiEswt.java Fri Sep 17 08:28:21 2010 +0300 +++ b/javamanager/javainstaller/installerui/javasrc/com/nokia/mj/impl/installer/ui/eswt2/InstallerUiEswt.java Mon Oct 04 00:10:53 2010 +0300 @@ -74,6 +74,7 @@ private Shell iParent = null; private Shell iDialog = null; private ProgressView iProgressView = null; + private ProgressView iPreparingInstallationView = null; private ProgressView iDlProgressView = null; private ProgressView iOcspProgressView = null; private InstallConfirmationView iInstallConfirmationView = null; @@ -110,7 +111,7 @@ /** Hashtable for storing the loaded icons. */ private static Hashtable iImageTable = null; /** Best size for application icon. */ - private static Point iBestIconSize = null; + private static Point iBestImageSize = null; /** Default shell bounds. */ private Rectangle iDefaultShellBounds = null; @@ -173,7 +174,8 @@ iDefaultShellClientBounds = iDialog.getClientArea(); iBoldFont = getBoldFont(); StartUpTrace.doTrace("InstallerUiEswt shell created"); - iProgressView = new ProgressView(this, iDialog, getTitle()); + iProgressView = new ProgressView(this, iDialog, getTitle(), false, true); + //createPreparingInstallationView(); iParent.addControlListener(new CListener(this)); log("InstallerUiEswt CListener added"); @@ -188,11 +190,11 @@ } }); - // Initialize best icon size. - //iBestIconSize = new Point( - // display.getBestImageWidth(DisplayExtension.ALERT), - // display.getBestImageHeight(DisplayExtension.ALERT)); - //log("Best icon size: " + iBestIconSize); + // Initialize best image size. + iBestImageSize = new Point( + DisplayExtension.getBestImageWidth(DisplayExtension.LIST_ELEMENT), + DisplayExtension.getBestImageHeight(DisplayExtension.LIST_ELEMENT)); + log("Best image size: " + iBestImageSize); synchronized (iInitWaitObject) { @@ -256,6 +258,12 @@ public void cancelConfirmations() { super.cancelConfirmations(); + if (iPreparingInstallationView != null && + !iPreparingInstallationView.isDisposed()) + { + iPreparingInstallationView.dispose(); + iPreparingInstallationView = null; + } if (iCertificateDetailsView != null) { iCertificateDetailsView.confirmCancel(); @@ -317,6 +325,14 @@ throw new RuntimeException("JavaInstallerUi not ready"); } + if (iPreparingInstallationView != null && + !iPreparingInstallationView.isDisposed()) + { + iPreparingInstallationView.setVisible(false); + iPreparingInstallationView.dispose(); + iPreparingInstallationView = null; + } + boolean result = true; if (result) { @@ -493,7 +509,7 @@ public void run() { iProgressView = new ProgressView( - self, iDialog, getTitle()); + self, iDialog, getTitle(), false, true); } }); iProgressView.setVisible(true); @@ -608,10 +624,9 @@ iDlProgressView = new ProgressView( self, iDialog, InstallerUiTexts.get(InstallerUiTexts.DOWNLOADING), - indeterminate); + indeterminate, true); } }); - iDlProgressView.addCancelCommand(); } synchronized (iProgressSyncObject) @@ -688,10 +703,9 @@ iOcspProgressView = new ProgressView( self, iDialog, InstallerUiTexts.get(InstallerUiTexts.OCSP_CHECK_PROGRESS), - true); + true, true); } }); - iOcspProgressView.addCancelCommand(); } if (iOcspProgressView != null) { @@ -1208,24 +1222,25 @@ try { long startTime = System.currentTimeMillis(); + aDisplay.setData("org.eclipse.swt.internal.image.loadSize", + iBestImageSize); Image image = new Image(aDisplay, aInputStream); - ImageData imageData = image.getImageData(); if (aScaleImage) { - Point bestSize = getBestImageSize( - imageData.width, imageData.height); - if (bestSize.x != imageData.width || - bestSize.y != imageData.height) + ImageData imageData = image.getImageData(); + if (iBestImageSize.x != imageData.width || + iBestImageSize.y != imageData.height) { Point oldSize = new Point(imageData.width, imageData.height); - imageData = imageData.scaledTo(bestSize.x, bestSize.y); + imageData = imageData.scaledTo(iBestImageSize.x, iBestImageSize.y); log("Image " + aImageName + " scaled from " + oldSize.x + "x" + oldSize.y + " to " + - bestSize.x + "x" + bestSize.y); + iBestImageSize.x + "x" + iBestImageSize.y); + image = new Image(aDisplay, imageData); } } - result = new Image(aDisplay, imageData); + result = image; long endTime = System.currentTimeMillis(); log("Loaded image " + aImageName + " (load time " + (endTime - startTime) + " ms)"); @@ -1239,30 +1254,6 @@ return result; } - /** - * Determines the best image size for the image of given size. - */ - private static Point getBestImageSize(int aWidth, int aHeight) - { - final int MAX_WIDTH = (iBestIconSize == null? 50: iBestIconSize.x); - final int MAX_HEIGHT = (iBestIconSize == null? 50: iBestIconSize.y); - Point result = new Point(aWidth, aHeight); - if (result.x > MAX_WIDTH || result.y > MAX_HEIGHT) - { - if (result.x >= MAX_WIDTH) - { - result.x = MAX_WIDTH; - result.y = MAX_WIDTH * aHeight / aWidth; - } - if (result.y >= MAX_HEIGHT) - { - result.x = MAX_HEIGHT * aWidth / aHeight; - result.y = MAX_HEIGHT; - } - } - return result; - } - /** Returns true if UI has been created and can be used. */ protected boolean isUiReady() { @@ -1332,6 +1323,26 @@ } } + /** + * Creates preparing installation view. + */ + private void createPreparingInstallationView() + { + if (iPreparingInstallationView == null) + { + final InstallerUiEswt self = this; + iParent.getDisplay().syncExec(new Runnable() + { + public void run() + { + iPreparingInstallationView = new ProgressView( + self, iDialog, "Preparing installation", true, false); + iPreparingInstallationView.setVisible(true); + } + }); + } + } + Rectangle getDefaultShellBounds() { return iDefaultShellBounds; diff -r 4ad59aaee882 -r 2f468c1958d0 javamanager/javainstaller/installerui/javasrc/com/nokia/mj/impl/installer/ui/eswt2/InstallerUiTexts.java --- a/javamanager/javainstaller/installerui/javasrc/com/nokia/mj/impl/installer/ui/eswt2/InstallerUiTexts.java Fri Sep 17 08:28:21 2010 +0300 +++ b/javamanager/javainstaller/installerui/javasrc/com/nokia/mj/impl/installer/ui/eswt2/InstallerUiTexts.java Mon Oct 04 00:10:53 2010 +0300 @@ -32,13 +32,13 @@ // Define constants for localised text ids. public static final String OK = "button_ok"; public static final String CANCEL = "button_cancel"; - public static final String BACK = "button_back_ok"; public static final String HIDE = "button_hide"; public static final String SHOW = "button_show"; + public static final String DETAILS = "button_details"; public static final String CLOSE = "button_close"; public static final String INSTALL_QUERY = "title_install"; public static final String UPDATE_QUERY = "title_update_query"; - public static final String OCSP_CHECK_PROGRESS = "ocsp_check_progress"; + public static final String OCSP_CHECK_PROGRESS = "title_ocsp_check_progress"; public static final String INSTALLING = "title_installing"; public static final String INSTALL_FAILED = "title_inst_failed"; public static final String INSTALLATION_COMPLETE = "title_installation_complete"; @@ -48,6 +48,7 @@ public static final String USERNAME = "dialog_username"; public static final String PASSWORD = "dialog_password"; public static final String SUITE_NAME_VERSION = "info_app_suite_name_version"; + public static final String SUITE_NAME_VERSION_UPDATE = "info_update_query"; public static final String SUITE_VENDOR = "info_vendor"; public static final String APP_NAME = "info_app_name"; public static final String SIZE_KB = "info_size_kb"; @@ -70,19 +71,15 @@ public static final String SERIAL_NUMBER = "setlabel_serial_number"; public static final String FINGERPRINT = "setlabel_fingerprint"; // Texts for installation drive selection. - public static final String DRIVE_TYPE_UNKNOWN = "list_unknown"; public static final String DRIVE_TYPE_UNKNOWN_KB = "list_unknown_kb"; public static final String DRIVE_TYPE_UNKNOWN_MB = "list_unknown_mb"; public static final String DRIVE_TYPE_UNKNOWN_GB = "list_unknown_gb"; - public static final String DRIVE_TYPE_PHONE_MEMORY = "list_phone_mem"; public static final String DRIVE_TYPE_PHONE_MEMORY_KB = "list_phone_mem_kb"; public static final String DRIVE_TYPE_PHONE_MEMORY_MB = "list_phone_mem_mb"; public static final String DRIVE_TYPE_PHONE_MEMORY_GB = "list_phone_mem_gb"; - public static final String DRIVE_TYPE_MEMORY_CARD = "list_mem_card"; public static final String DRIVE_TYPE_MEMORY_CARD_KB = "list_mem_card_kb"; public static final String DRIVE_TYPE_MEMORY_CARD_MB = "list_mem_card_mb"; public static final String DRIVE_TYPE_MEMORY_CARD_GB = "list_mem_card_gb"; - public static final String DRIVE_TYPE_INTERNAL_MASS_STORAGE = "list_mass_mem"; public static final String DRIVE_TYPE_INTERNAL_MASS_STORAGE_KB = "list_mass_mem_kb"; public static final String DRIVE_TYPE_INTERNAL_MASS_STORAGE_MB = "list_mass_mem_mb"; public static final String DRIVE_TYPE_INTERNAL_MASS_STORAGE_GB = "list_mass_mem_gb"; diff -r 4ad59aaee882 -r 2f468c1958d0 javamanager/javainstaller/installerui/javasrc/com/nokia/mj/impl/installer/ui/eswt2/LaunchAppQueryView.java --- a/javamanager/javainstaller/installerui/javasrc/com/nokia/mj/impl/installer/ui/eswt2/LaunchAppQueryView.java Fri Sep 17 08:28:21 2010 +0300 +++ b/javamanager/javainstaller/installerui/javasrc/com/nokia/mj/impl/installer/ui/eswt2/LaunchAppQueryView.java Mon Oct 04 00:10:53 2010 +0300 @@ -64,7 +64,7 @@ addHeader(InstallerUiTexts.get(InstallerUiTexts.INSTALLATION_COMPLETE), iInstallerUi.getInstallInfo(), null); // Add content to the application info Composite. - addAppInfo(iInstallerUi.getInstallInfo(), true); + addAppInfo(iInstallerUi.getInstallInfo(), true, false); } /** diff -r 4ad59aaee882 -r 2f468c1958d0 javamanager/javainstaller/installerui/javasrc/com/nokia/mj/impl/installer/ui/eswt2/PermissionConfirmationView.java --- a/javamanager/javainstaller/installerui/javasrc/com/nokia/mj/impl/installer/ui/eswt2/PermissionConfirmationView.java Fri Sep 17 08:28:21 2010 +0300 +++ b/javamanager/javainstaller/installerui/javasrc/com/nokia/mj/impl/installer/ui/eswt2/PermissionConfirmationView.java Mon Oct 04 00:10:53 2010 +0300 @@ -227,7 +227,7 @@ // After other widgets have been added, add content to // application info Composite. - addAppInfo(iInstallInfo, false); + addAppInfo(iInstallInfo, false, false); } /** diff -r 4ad59aaee882 -r 2f468c1958d0 javamanager/javainstaller/installerui/javasrc/com/nokia/mj/impl/installer/ui/eswt2/PermissionDetailsView.java --- a/javamanager/javainstaller/installerui/javasrc/com/nokia/mj/impl/installer/ui/eswt2/PermissionDetailsView.java Fri Sep 17 08:28:21 2010 +0300 +++ b/javamanager/javainstaller/installerui/javasrc/com/nokia/mj/impl/installer/ui/eswt2/PermissionDetailsView.java Mon Oct 04 00:10:53 2010 +0300 @@ -46,7 +46,7 @@ super(aInstallerUi, aParent, 1, true); iPermissionInfo = aPermissionInfo; setTitle(aTitle); - setCommands(null, InstallerUiTexts.get(InstallerUiTexts.OK)); + setCommands(null, InstallerUiTexts.get(InstallerUiTexts.CLOSE)); } /** diff -r 4ad59aaee882 -r 2f468c1958d0 javamanager/javainstaller/installerui/javasrc/com/nokia/mj/impl/installer/ui/eswt2/ProgressView.java --- a/javamanager/javainstaller/installerui/javasrc/com/nokia/mj/impl/installer/ui/eswt2/ProgressView.java Fri Sep 17 08:28:21 2010 +0300 +++ b/javamanager/javainstaller/installerui/javasrc/com/nokia/mj/impl/installer/ui/eswt2/ProgressView.java Mon Oct 04 00:10:53 2010 +0300 @@ -66,12 +66,12 @@ /** Constructor */ protected ProgressView(InstallerUiEswt aInstallerUi, Composite aParent, String aMsg) { - this(aInstallerUi, aParent, aMsg, false); + this(aInstallerUi, aParent, aMsg, false, true); } /** Constructor */ protected ProgressView(InstallerUiEswt aInstallerUi, Composite aParent, String aMsg, - boolean aIndeterminate) + boolean aIndeterminate, boolean aHideCommand) { super(aInstallerUi, aParent, 8); iMsg = aMsg; @@ -112,11 +112,11 @@ // application info Composite. if (iInstallerUi != null) { - addAppInfo(iInstallerUi.getInstallInfo(), false); + addAppInfo(iInstallerUi.getInstallInfo(), false, false); } // By default add cancel command to all progress bars. - addCancelCommand(); + addCancelCommand(aHideCommand); iInstallerUi.loadCss(); } @@ -159,9 +159,11 @@ } /** - * Adds a cancel command for this progress view. + * Adds Cancel command for this progress view. + * + * @param aHideCommand if true, also Hide command is added. */ - protected void addCancelCommand() + protected void addCancelCommand(final boolean aHideCommand) { if (iCancelCommand != null || isDisposed()) { @@ -173,32 +175,43 @@ { public void run() { + GridData gridData = null; // Set horizontalSpan to 2 for one button, // and to 1 for two buttons. - int horizontalSpan = 1; - GridData gridData = null; - iHideCommand = new Button(getCommandComposite(), SWT.PUSH); - setCssId(iHideCommand, "softKeyButton"); - gridData = new GridData(GridData.FILL_HORIZONTAL); - gridData.horizontalSpan = horizontalSpan; - iHideCommand.setLayoutData(gridData); - iHideCommand.setText(InstallerUiTexts.get(InstallerUiTexts.HIDE)); - iHideCommand.addSelectionListener(new SelectionListener() + int horizontalSpan = 2; + if (aHideCommand) { - public void widgetDefaultSelected(SelectionEvent aEvent) + horizontalSpan = 1; + iHideCommand = new Button(getCommandComposite(), SWT.PUSH); + setCssId(iHideCommand, "softKeyButton"); + gridData = new GridData(GridData.FILL_HORIZONTAL); + gridData.horizontalSpan = horizontalSpan; + iHideCommand.setLayoutData(gridData); + iHideCommand.setText( + InstallerUiTexts.get(InstallerUiTexts.HIDE)); + iHideCommand.addSelectionListener(new SelectionListener() { - widgetSelected(aEvent); - } - public void widgetSelected(SelectionEvent aEvent) - { - confirmHide(); - } - }); - addSoftKeyListenerFor(iHideCommand); + public void widgetDefaultSelected(SelectionEvent aEvent) + { + widgetSelected(aEvent); + } + public void widgetSelected(SelectionEvent aEvent) + { + confirmHide(); + } + }); + addSoftKeyListenerFor(iHideCommand); + } iCancelCommand = new Button(getCommandComposite(), SWT.PUSH); - setCssId(iCancelCommand, "softKeyButton"); - //setCssId(iCancelCommand, "softKeyButtonWide"); + if (aHideCommand) + { + setCssId(iCancelCommand, "softKeyButton"); + } + else + { + setCssId(iCancelCommand, "softKeyButtonWide"); + } gridData = new GridData(GridData.FILL_HORIZONTAL); gridData.horizontalSpan = horizontalSpan; iCancelCommand.setLayoutData(gridData); diff -r 4ad59aaee882 -r 2f468c1958d0 javamanager/javainstaller/installerui/javasrc/com/nokia/mj/impl/installer/ui/eswt2/RuntimeConfirmationView.java --- a/javamanager/javainstaller/installerui/javasrc/com/nokia/mj/impl/installer/ui/eswt2/RuntimeConfirmationView.java Fri Sep 17 08:28:21 2010 +0300 +++ b/javamanager/javainstaller/installerui/javasrc/com/nokia/mj/impl/installer/ui/eswt2/RuntimeConfirmationView.java Mon Oct 04 00:10:53 2010 +0300 @@ -128,7 +128,7 @@ // After other widgets have been added, add content to // application info Composite. - addAppInfo(iInstallerUi.getInstallInfo(), false); + addAppInfo(iInstallerUi.getInstallInfo(), false, false); } /** diff -r 4ad59aaee882 -r 2f468c1958d0 javamanager/javainstaller/installerui/javasrc/com/nokia/mj/impl/installer/ui/eswt2/ViewBase.java --- a/javamanager/javainstaller/installerui/javasrc/com/nokia/mj/impl/installer/ui/eswt2/ViewBase.java Fri Sep 17 08:28:21 2010 +0300 +++ b/javamanager/javainstaller/installerui/javasrc/com/nokia/mj/impl/installer/ui/eswt2/ViewBase.java Mon Oct 04 00:10:53 2010 +0300 @@ -538,7 +538,7 @@ /** * Adds application information to the header. */ - protected void addAppInfo(InstallInfo aInstallInfo, boolean aFull) + protected void addAppInfo(InstallInfo aInstallInfo, boolean aFullInfo, boolean aUpdateInfo) { if (aInstallInfo == null) { @@ -547,12 +547,26 @@ } // Add suite name and version. - createAppInfoLabel( - InstallerUiTexts.get( - InstallerUiTexts.SUITE_NAME_VERSION, - new String[] { aInstallInfo.getName(), - aInstallInfo.getVersion() })); - if (aFull) + if (aUpdateInfo && aInstallInfo != null && + aInstallInfo.getOldVersion() != null) + { + createAppInfoLabel( + InstallerUiTexts.get( + InstallerUiTexts.SUITE_NAME_VERSION_UPDATE, + new String[] { aInstallInfo.getName(), + aInstallInfo.getOldVersion(), + aInstallInfo.getVersion()})); + } + else + { + createAppInfoLabel( + InstallerUiTexts.get( + InstallerUiTexts.SUITE_NAME_VERSION, + new String[] { aInstallInfo.getName(), + aInstallInfo.getVersion() })); + } + + if (aFullInfo) { // Add vendor. createAppInfoLabel( @@ -587,7 +601,7 @@ new Object[] { new Integer((int)(1 + size/1024)) })); } } - if (aFull) + if (aFullInfo) { // Add application names. ApplicationInfo[] apps = aInstallInfo.getApplications(); diff -r 4ad59aaee882 -r 2f468c1958d0 javamanager/javasettings_qt/src/applicationsettingsview.h --- a/javamanager/javasettings_qt/src/applicationsettingsview.h Fri Sep 17 08:28:21 2010 +0300 +++ b/javamanager/javasettings_qt/src/applicationsettingsview.h Mon Oct 04 00:10:53 2010 +0300 @@ -36,12 +36,12 @@ public slots: /* - * Initializas the view with application specific info + * Initializes the view with application specific info * * @param aAppUid Identifier for the application - * + * @param aAppName Name for the application */ - void initialize(const QString& aAppUid); + void initialize(const QString& aAppUid, const QString& aAppName = QString()); }; diff -r 4ad59aaee882 -r 2f468c1958d0 javamanager/javasettings_qt/src/javaapplicationsettingsview.cpp --- a/javamanager/javasettings_qt/src/javaapplicationsettingsview.cpp Fri Sep 17 08:28:21 2010 +0300 +++ b/javamanager/javasettings_qt/src/javaapplicationsettingsview.cpp Mon Oct 04 00:10:53 2010 +0300 @@ -24,9 +24,9 @@ { } -void JavaApplicationSettingsView::initialize(const QString& aApplication) +void JavaApplicationSettingsView::initialize(const QString& aApplication, const QString& aApplicationName) { - d_ptr = new JavaApplicationSettingsViewPrivate(aApplication); + d_ptr = new JavaApplicationSettingsViewPrivate(aApplication, aApplicationName); d_ptr->init(this); } diff -r 4ad59aaee882 -r 2f468c1958d0 javamanager/javasettings_qt/src/javaapplicationsettingsview.h --- a/javamanager/javasettings_qt/src/javaapplicationsettingsview.h Fri Sep 17 08:28:21 2010 +0300 +++ b/javamanager/javasettings_qt/src/javaapplicationsettingsview.h Mon Oct 04 00:10:53 2010 +0300 @@ -43,7 +43,7 @@ virtual ~JavaApplicationSettingsView(); public slots: - void initialize(const QString&); + void initialize(const QString&, const QString& = QString()); signals: void aboutToClose(); diff -r 4ad59aaee882 -r 2f468c1958d0 javamanager/javasettings_qt/src/javaapplicationsettingsview_p.cpp --- a/javamanager/javasettings_qt/src/javaapplicationsettingsview_p.cpp Fri Sep 17 08:28:21 2010 +0300 +++ b/javamanager/javasettings_qt/src/javaapplicationsettingsview_p.cpp Mon Oct 04 00:10:53 2010 +0300 @@ -50,7 +50,7 @@ const wchar_t ON_SCREEN_KEYPAD_VALUE_GAMEACTIONS[] = L"1"; const wchar_t ON_SCREEN_KEYPAD_VALUE_NAVIGATION[] = L"2"; -JavaApplicationSettingsViewPrivate::JavaApplicationSettingsViewPrivate(const QString& aJavaAppUid): +JavaApplicationSettingsViewPrivate::JavaApplicationSettingsViewPrivate(const QString& aJavaAppUid, const QString& aJavaAppName): mMainForm(0), mModel(0), mGeneralSettingsGroup(0), mSecuritySettingsGroup(0), mNetConnSettingsUi(0), mAsyncToSyncCallEventLoop(0), mSecWarningAccepted(false), mDefaultConnId(0) { // init common values @@ -64,7 +64,7 @@ return; } ELOG1(EJavaSettings, "Initializing settings for suite %S", mSuiteUid.c_str()); - + // init access point settings ui mNetConnSettingsUi = new CmApplSettingsUi(this); mAsyncToSyncCallEventLoop = new QEventLoop(); @@ -74,7 +74,14 @@ // init form mMainForm = new HbDataForm(); - mMainForm->setHeading(QString::fromStdWString(readFromStorage(PACKAGE_NAME, L"", L"", APPLICATION_PACKAGE_TABLE))); + if (aJavaAppName.isEmpty()) + { + mMainForm->setHeading(QString::fromStdWString(readFromStorage(PACKAGE_NAME, L"", L"", APPLICATION_PACKAGE_TABLE))); + } + else + { + mMainForm->setHeading(aJavaAppName); + } mModel = new HbDataFormModel(); // init settings diff -r 4ad59aaee882 -r 2f468c1958d0 javamanager/javasettings_qt/src/javaapplicationsettingsview_p.h --- a/javamanager/javasettings_qt/src/javaapplicationsettingsview_p.h Fri Sep 17 08:28:21 2010 +0300 +++ b/javamanager/javasettings_qt/src/javaapplicationsettingsview_p.h Mon Oct 04 00:10:53 2010 +0300 @@ -138,7 +138,7 @@ Q_OBJECT public: - JavaApplicationSettingsViewPrivate(const QString& aJavaAppUid); + JavaApplicationSettingsViewPrivate(const QString& aJavaAppUid, const QString& aJavaAppName = QString()); virtual ~JavaApplicationSettingsViewPrivate(); void init(JavaApplicationSettingsView* aPublicView); diff -r 4ad59aaee882 -r 2f468c1958d0 javaruntimes/midp/runtime/build/javamidpruntime.pro --- a/javaruntimes/midp/runtime/build/javamidpruntime.pro Fri Sep 17 08:28:21 2010 +0300 +++ b/javaruntimes/midp/runtime/build/javamidpruntime.pro Mon Oct 04 00:10:53 2010 +0300 @@ -24,7 +24,7 @@ symbian { INCLUDEPATH += /epoc32/include/ecom # Due to schemehandler.inl in S60 5.0 2009w18 and SPB 10.1 - LIBS += -lecom -lflogger -lDrmRightsInfo -lcaf -lDrmHelper -lapgrfx -lapparc -ljavautils + LIBS += -lecom -lflogger -lDrmRightsInfo -lcaf -lDRMHelper -lapgrfx -lapparc -ljavautils } include(../../../../build/omj.pri) diff -r 4ad59aaee882 -r 2f468c1958d0 javaruntimes/midp/runtime/javasrc/com/nokia/mj/impl/rt/midp/SchemeHandler.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javaruntimes/midp/runtime/javasrc/com/nokia/mj/impl/rt/midp/SchemeHandler.java Mon Oct 04 00:10:53 2010 +0300 @@ -0,0 +1,39 @@ +/* +* Copyright (c) 2010 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.mj.impl.rt.midp; + +import javax.microedition.io.ConnectionNotFoundException; + +/** + * JRT based platform request scheme handler interface. + */ +public interface SchemeHandler +{ + + /*** ----------------------------- PUBLIC ------------------------------ */ + + /** + * Execute scheme. + * + * @param url to be invoked. + * @return true if MIDlet must be closed prior content fetch. + * @throws ConnectionNotFoundException if URL execution fails. + */ + public boolean execute(String url) throws ConnectionNotFoundException; +} + diff -r 4ad59aaee882 -r 2f468c1958d0 javaruntimes/midp/runtime/javasrc/com/nokia/mj/impl/rt/midp/SchemeHandlerBase.java --- a/javaruntimes/midp/runtime/javasrc/com/nokia/mj/impl/rt/midp/SchemeHandlerBase.java Fri Sep 17 08:28:21 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,39 +0,0 @@ -/* -* Copyright (c) 2010 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.mj.impl.rt.midp; - -import javax.microedition.io.ConnectionNotFoundException; - -/** - * Java based platform request scheme handler base class. - */ -public abstract class SchemeHandlerBase -{ - - /*** ----------------------------- PUBLIC ------------------------------ */ - - /** - * Execute scheme. - * - * @param url to be invoked. - * @return true if MIDlet must be closed prior content fetch. - * @throws ConnectionNotFoundException if URL execution fails. - */ - public abstract boolean execute(String url) throws ConnectionNotFoundException; -} - diff -r 4ad59aaee882 -r 2f468c1958d0 javaruntimes/midp/runtime/javasrc/com/nokia/mj/impl/rt/midp/StorageAccessor.java --- a/javaruntimes/midp/runtime/javasrc/com/nokia/mj/impl/rt/midp/StorageAccessor.java Fri Sep 17 08:28:21 2010 +0300 +++ b/javaruntimes/midp/runtime/javasrc/com/nokia/mj/impl/rt/midp/StorageAccessor.java Mon Oct 04 00:10:53 2010 +0300 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2009-2010 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" @@ -196,20 +196,14 @@ // into an int. midletN = Integer.parseInt(nameStr.substring(7)); } - catch (NumberFormatException ne) + catch (NumberFormatException ne) { } } } // Set the localized name of the MIDlet. - String localizedName = midletInfo.getAttribute("Nokia-MIDlet-Localized-" + midletN); - if (localizedName == null) - { - localizedName = midletInfo.getName(); - } - - midletInfo.setLocalizedName(localizedName); + setLocalizedName(midletInfo, midletN); } } finally @@ -223,4 +217,51 @@ } } } + + /** + * Sets localized name for the midlet basing on current + * microedition.locale system property value and midlet's + * JAD/Manifest attributes. + * + * @param midletInfo midlet info. + * @param midletIndex index of the midlet in the suite. + */ + private static void setLocalizedName(MidletInfo midletInfo, int midletIndex) + { + // Values for locales are of form + // [-[-]] + // for example 'es-MX' or 'en-US-Iron'. + String currentLocale = System.getProperty("microedition.locale"); + String localizedName = null; + if (currentLocale != null) + { + int idxMinus = -1; + do + { + localizedName = midletInfo.getAttribute( + "Nokia-MIDlet-" + midletIndex + "-" + currentLocale); + if (localizedName != null) + { + // Localized name found. + break; + } + // Localized name not found, now strip the most specific part, + // for example <-variant>, from the locale and do this again + // until there are no more parts or MIDlet name has been + // localized. + idxMinus = currentLocale.lastIndexOf('-'); + if (idxMinus != -1) + { + currentLocale = currentLocale.substring(0, idxMinus); + } + } + while (localizedName == null && idxMinus != -1); + } + + if (localizedName == null) + { + localizedName = midletInfo.getName(); + } + midletInfo.setLocalizedName(localizedName); + } } diff -r 4ad59aaee882 -r 2f468c1958d0 javaruntimes/midp/runtime/javasrc/com/nokia/mj/impl/rt/taskmanager/SchemeHandler.java --- a/javaruntimes/midp/runtime/javasrc/com/nokia/mj/impl/rt/taskmanager/SchemeHandler.java Fri Sep 17 08:28:21 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,60 +0,0 @@ -/* -* Copyright (c) 2010 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: java://taskmanager scheme handler. -* -*/ -package com.nokia.mj.impl.rt.taskmanager; - -import javax.microedition.io.ConnectionNotFoundException; - -import com.nokia.mj.impl.coreui.CoreUi; -import com.nokia.mj.impl.rt.midp.SchemeHandlerBase; - -/** - * TaskManager platform request scheme handler. These are java: taskmanager?hide - * java: taskmanager?show. Using hide URL query application is hided - * from the TaskManager and brought visible using show query. - */ -public class SchemeHandler extends SchemeHandlerBase -{ - - /*** ----------------------------- PUBLIC ------------------------------ */ - - /** - * Execute scheme. If url contains query ?hide application is removed - * from the TaskManager and if it contains ?show application is shown on - * TaskManager. - * - * @return false. Since MIDlet needs never be closed before content fetch. - * @throws ConnectionNotFoundException if URL was invalid. - */ - public boolean execute(String url) throws ConnectionNotFoundException - { - if (url.indexOf("?hide") != -1) - { - CoreUi.hideApplication(true); - } - else if (url.indexOf("?show") != -1) - { - CoreUi.hideApplication(false); - } - else - { - throw new ConnectionNotFoundException("Invalid URL"); - } - - return false; - } -} - diff -r 4ad59aaee882 -r 2f468c1958d0 javaruntimes/midp/runtime/javasrc/com/nokia/mj/impl/rt/taskmanager/SchemeHandlerImpl.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javaruntimes/midp/runtime/javasrc/com/nokia/mj/impl/rt/taskmanager/SchemeHandlerImpl.java Mon Oct 04 00:10:53 2010 +0300 @@ -0,0 +1,60 @@ +/* +* Copyright (c) 2010 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: java://taskmanager scheme handler. +* +*/ +package com.nokia.mj.impl.rt.taskmanager; + +import javax.microedition.io.ConnectionNotFoundException; + +import com.nokia.mj.impl.coreui.CoreUi; +import com.nokia.mj.impl.rt.midp.SchemeHandler; + +/** + * TaskManager platform request scheme handler. These are jrt:taskmanager?hide_app + * jrt:taskmanager?show_app. Using hide URL query application is hided + * from the TaskManager and brought visible using show query. + */ +public class SchemeHandlerImpl implements SchemeHandler +{ + + /*** ----------------------------- PUBLIC ------------------------------ */ + + /** + * Execute scheme. If url contains query ?hide_app application is removed + * from the TaskManager and if it contains ?show_app application is shown on + * TaskManager. + * + * @return false. Since MIDlet needs never be closed before content fetch. + * @throws ConnectionNotFoundException if URL was invalid. + */ + public boolean execute(String url) throws ConnectionNotFoundException + { + if (url.indexOf("?hide_app") != -1) + { + CoreUi.hideApplication(true); + } + else if (url.indexOf("?show_app") != -1) + { + CoreUi.hideApplication(false); + } + else + { + throw new ConnectionNotFoundException("Invalid URL: " + url); + } + + return false; + } +} + diff -r 4ad59aaee882 -r 2f468c1958d0 javaruntimes/midp/runtime/javasrc/javax/microedition/midlet/MIDlet.java --- a/javaruntimes/midp/runtime/javasrc/javax/microedition/midlet/MIDlet.java Fri Sep 17 08:28:21 2010 +0300 +++ b/javaruntimes/midp/runtime/javasrc/javax/microedition/midlet/MIDlet.java Mon Oct 04 00:10:53 2010 +0300 @@ -25,7 +25,7 @@ import com.nokia.mj.impl.rt.ui.RuntimeUi; import com.nokia.mj.impl.rt.ui.RuntimeUiFactory; -import com.nokia.mj.impl.rt.midp.SchemeHandlerBase; +import com.nokia.mj.impl.rt.midp.SchemeHandler; import com.nokia.mj.impl.rt.support.ApplicationInfo; @@ -61,6 +61,8 @@ private static final int DOMAIN_MANUFACTURER_OR_OPERATOR = 1; + private static final String JRT_SCHEME = "jrt:"; + /*** ----------------------------- PUBLIC ------------------------------ */ /** @@ -163,7 +165,7 @@ String domain = appInfo.getProtectionDomain(); // Handling for java scheme. - /*if (url.startsWith("java://")) + if (url.startsWith(JRT_SCHEME)) { String handlerName = parseHandlerName(url); @@ -174,7 +176,7 @@ } return invokeSchemeHandler(handlerName, url); - }*/ + } // If the platform request is used to start arbitrary native application, // check that MIDlet is in manufacturer or operator domain @@ -376,21 +378,17 @@ private String parseHandlerName(String url) throws ConnectionNotFoundException { - // Parse handler name from URL. Remove java:// prefix. - String handlerName = url.substring(7).trim(); + // Parse handler name from URL. Remove JRT_SCHEME prefix. + String handlerName = url.substring(JRT_SCHEME.length()).trim(); // name format: handlername?query int nameEndIndex = handlerName.indexOf('?'); if (nameEndIndex != -1) { - handlerName = handlerName.substring(0, nameEndIndex); - return handlerName; + return handlerName.substring(0, nameEndIndex); } - else - { - throw new ConnectionNotFoundException("Handler not found for URL"); - } + throw new ConnectionNotFoundException("Handler not found for URL: " + url); } private boolean invokeSchemeHandler(String handlerName, String url) @@ -400,18 +398,19 @@ { // Avoid loading whatever class from the system using handler // as package name. - Class clazz = Class.forName("com.nokia.mj.impl.rt." + handlerName + ".SchemeHandler"); + Class clazz = Class.forName("com.nokia.mj.impl.rt." + handlerName + ".SchemeHandlerImpl"); - SchemeHandlerBase handler = (SchemeHandlerBase)clazz.newInstance(); + SchemeHandler handler = (SchemeHandler)clazz.newInstance(); handler.execute(url); return false; // No need to close MIDlet. } catch (Throwable t) { - Logger.ELOG(Logger.EJavaRuntime, "Cannot invoke scheme handler: " + t.toString()); + Logger.ELOG(Logger.EJavaRuntime, "Cannot invoke scheme handler for url: " + + url + " : " + t.toString()); // ClassNotFoundException, IllegalAccessException or InstantionException. - throw new ConnectionNotFoundException("Handler not found for URL"); + throw new ConnectionNotFoundException("Handler not found for URL: " + url); } } diff -r 4ad59aaee882 -r 2f468c1958d0 javauis/coreui/tsrc/testcoreui/javasrc/com/nokia/mj/impl/coreuitest/CoreUiTests.java --- a/javauis/coreui/tsrc/testcoreui/javasrc/com/nokia/mj/impl/coreuitest/CoreUiTests.java Fri Sep 17 08:28:21 2010 +0300 +++ b/javauis/coreui/tsrc/testcoreui/javasrc/com/nokia/mj/impl/coreuitest/CoreUiTests.java Mon Oct 04 00:10:53 2010 +0300 @@ -153,7 +153,6 @@ } catch (Throwable t2) { - System.out.println("JOU2 "+ t2); t2.printStackTrace(); assertTrue(t2.toString(), false); } diff -r 4ad59aaee882 -r 2f468c1958d0 javauis/coreui_qt/build/build.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javauis/coreui_qt/build/build.xml Mon Oct 04 00:10:53 2010 +0300 @@ -0,0 +1,34 @@ + + + + + + + + + + + + + com.nokia.coreui=coreuiqt + + + + + diff -r 4ad59aaee882 -r 2f468c1958d0 javauis/coreui_qt/build/bwins/javacoreuiu.def --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javauis/coreui_qt/build/bwins/javacoreuiu.def Mon Oct 04 00:10:53 2010 +0300 @@ -0,0 +1,4 @@ +EXPORTS + ?jni_lookup@@YAP6AXXZPBD@Z @ 1 NONAME ; void (*)(void) jni_lookup(char const *) + ?findDllMethod@@YAP6APAXXZPBD@Z @ 2 NONAME ; void * (*)(void) findDllMethod(char const *) + diff -r 4ad59aaee882 -r 2f468c1958d0 javauis/coreui_qt/build/eabi/javacoreuiu.def --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javauis/coreui_qt/build/eabi/javacoreuiu.def Mon Oct 04 00:10:53 2010 +0300 @@ -0,0 +1,4 @@ +EXPORTS + _Z10jni_lookupPKc @ 1 NONAME + _Z13findDllMethodPKc @ 2 NONAME + diff -r 4ad59aaee882 -r 2f468c1958d0 javauis/coreui_qt/build/javacoreui.pro --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javauis/coreui_qt/build/javacoreui.pro Mon Oct 04 00:10:53 2010 +0300 @@ -0,0 +1,30 @@ +# +# 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: The build file of the Core UI +# + +TEMPLATE=lib +TARGET=javacoreui +CONFIG += omj staticdata java stl + +symbian { + CONFIG += hb + LIBS += -ltstaskmonitorclient +} + +!symbian { + CONFIG -= qt +} + +include(../../../build/omj.pri) diff -r 4ad59aaee882 -r 2f468c1958d0 javauis/coreui_qt/javasrc/com/nokia/mj/impl/coreuiqt/CoreUiImpl.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javauis/coreui_qt/javasrc/com/nokia/mj/impl/coreuiqt/CoreUiImpl.java Mon Oct 04 00:10:53 2010 +0300 @@ -0,0 +1,96 @@ +/* +* 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: Java side Core UI accessor. +* +*/ +package com.nokia.mj.impl.coreuiqt; + +import com.nokia.mj.impl.utils.Uid; +import com.nokia.mj.impl.rt.support.Jvm; +import com.nokia.mj.impl.rt.support.ApplicationUtils; +import com.nokia.mj.impl.rt.support.ApplicationInfo; +import com.nokia.mj.impl.coreui.CoreUi; + + +/** + * A gate to CoreUi Qt implementation. + */ +public class CoreUiImpl extends CoreUi +{ + + public CoreUiImpl() + { + // Load the native. + Jvm.loadSystemLibrary("javacoreui"); + } + + /** + * Connects to the already created CoreUi. + * @return permission to start the application. There is a small time + * window where user is able to cancel the application + * start. In this case the CoreUi stores the request and + * informs the caller of this method that the application + * should not be started. + */ + protected boolean connectToUiImpl() + { + return true; + } + + /** + * For creating the UI from Java side. This is meant for the pre-warmed + * VM use case. Calling this method will lead creation of the CoreUI. + * @param uid The UID of the application. + * @param backGroundStart Should the UI be put into background. + */ + protected void createUiImpl(Uid uid, boolean backGroundStart) + { + // CoreUiStartScreen.showStartScreen(backGroundStart); + } + + /** + * For asking the runtime to do the shutdown of the application. + */ + protected void shutdownRequestImpl() + { + ApplicationUtils.getInstance().notifyExitCmd(); + } + + /** + * For asking the runtime to bring the application to foreground. + */ + protected void foregroundRequestImpl() + { + } + + /** + * For asking if the UI is in foreground. + */ + protected boolean isUiInForegroundImpl() + { + return true; + } + + /** + * For asking if the UI to remove the icon from the task manager. + */ + protected void hideApplicationImpl(boolean hide) + { + // Native logic is reversed between Symbian^3 and Symbian^4. + // platform specific part. + _hideApplication(!hide); + } + + private native void _hideApplication(boolean hide); +} diff -r 4ad59aaee882 -r 2f468c1958d0 javauis/coreui_qt/src/coreuijni.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javauis/coreui_qt/src/coreuijni.cpp Mon Oct 04 00:10:53 2010 +0300 @@ -0,0 +1,37 @@ +/* +* 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: Avkon CoreUI JNI methods. +* +*/ + +#include "com_nokia_mj_impl_coreuiqt_CoreUiImpl.h" + +#ifdef __SYMBIAN32__ +#include +#endif // __SYMBIAN32__ + +#include "logger.h" + +/** + * Hide or show application at TaskManager. + */ +JNIEXPORT void JNICALL Java_com_nokia_mj_impl_coreuiqt_CoreUiImpl__1hideApplication +(JNIEnv* /*env*/, jobject /*peer*/, jboolean hide) +{ + JELOG2(EJavaUI); +#ifdef __SYMBIAN32__ + TsTaskSettings taskSettings; + (void)taskSettings.setVisibility(hide); +#endif // __SYMBIAN32__ +} diff -r 4ad59aaee882 -r 2f468c1958d0 javauis/coreui_qt/src/coreuiqtimpl.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javauis/coreui_qt/src/coreuiqtimpl.cpp Mon Oct 04 00:10:53 2010 +0300 @@ -0,0 +1,107 @@ +/* +* Copyright (c) 2010 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: A CoreUi QT implementation. +* +*/ + +#include +// #include + +#include "logger.h" +#include "coreuiqtimpl.h" +#include "runtimeexception.h" +#include "javacommonutils.h" + +using namespace java::ui; +using namespace java::util; + +// ======== STATIC VARIABLES ======== + +/** +* Singleton +*/ +static CoreUiQtImpl* sCoreUiQtImpl = 0; + +CoreUiQtImpl* getCoreUi() +{ + if (sCoreUiQtImpl == 0) + { + sCoreUiQtImpl = new CoreUiQtImpl(); // codescanner::nonleavenew + } + return sCoreUiQtImpl; +} + +#ifndef __SYMBIAN32__ +extern_c +#endif // __SYMBIAN32__ +CoreUi& getUiInstance() +{ + JELOG2(EJavaUI); + return *getCoreUi(); +} + +#ifndef __SYMBIAN32__ +extern_c +#endif // __SYMBIAN32__ +void releaseUi() +{ + JELOG2(EJavaUI); + ELOG(EJavaUI, "CoreUiQtImpl::releaseUi -->"); +} + +#ifdef __SYMBIAN32__ +EXPORT_C FuncPtr findDllMethod(const char* funcName) +{ + JELOG2(EJavaUI); + FuncPtr ptr = 0; + if (strcmp(funcName, "getUiInstance") == 0) + { + ptr = (FuncPtr)getUiInstance; + } + else if (strcmp(funcName, "releaseUi") == 0) + { + ptr = (FuncPtr)releaseUi; + } + return ptr; +} +#endif // __SYMBIAN32__ + +CoreUiQtImpl::CoreUiQtImpl() +{ + JELOG2(EJavaUI); +} + + +CoreUiQtImpl::~CoreUiQtImpl() +{ + JELOG2(EJavaUI); +} + + +void CoreUiQtImpl::start(const java::util::Uid& /*midletUid*/, + CoreUiParams* /*uiParams*/) +{ + JELOG2(EJavaUI); + ELOG(EJavaUI, "CoreUiQtImpl::start -->"); + +/* + ELOG(EJavaUI, "HbSplashScreen::start() -->"); + QString uid = "10104305"; + __BREAKPOINT(); + HbSplashScreen::setAppId(uid); + HbSplashScreen::start(); + User::After(5 * 1000 * 1000); // UID = 10104305 + ELOG(EJavaUI, "HbSplashScreen::start() <--"); +*/ +} diff -r 4ad59aaee882 -r 2f468c1958d0 javauis/coreui_qt/src/coreuiqtimpl.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javauis/coreui_qt/src/coreuiqtimpl.h Mon Oct 04 00:10:53 2010 +0300 @@ -0,0 +1,86 @@ +/* +* Copyright (c) 2010 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: A CoreUi avkon implementation. +* +*/ + +#ifndef COREUIQTIMPL_H +#define COREUIQTIMPL_H + + +#include "javacoreui.h" +#include "javasymbianoslayer.h" + +#ifdef __SYMBIAN32__ + +/** + * For accessing the static methods using dynamic dll loading. + * @param funcName The name of the method to be searched. + * @return a pointer to found function, 0 if not found. + */ +IMPORT_C FuncPtr findDllMethod(const char* funcName); + +#endif //__SYMBIAN32__ + +/** + * For getting a sinqleton instance of the CoreUi. + */ +java::ui::CoreUi& getUiInstance(); + +/** + * Releases the UI. This means that the UI will be closed (if not done yet) + * and freese all the resources. + */ +void releaseUi(); + +namespace java // codescanner::namespace +{ +namespace ui // codescanner::namespace +{ + +/** + * The implementation of the CoreUiAvkon. This class provides CoreUi services + * to CoreUi users. + */ +NONSHARABLE_CLASS(CoreUiQtImpl) : public CoreUi +{ +public: + /** + * CoreUiQtImpl default constructor. + */ + CoreUiQtImpl(); + + /** + * CoreUiQtImpl destructor. + */ + virtual ~CoreUiQtImpl(); + +public: // From CoreUi + /** + * This method will ask the UI to start the splash screen. + * @param appUid The Uid of the application. + * @param uiParams Ui configuration parameters. If it + * is null, the default arguments will be used. + * @throws java::util::ExceptionBase or std::exception in error cases. + */ + virtual void start(const java::util::Uid& midletUid, + CoreUiParams* uiParams); +}; + + +} // end namespace ui +} // end namespace java + + +#endif // COREUIQTIMPL_H diff -r 4ad59aaee882 -r 2f468c1958d0 javauis/eswt_qt/com.nokia.swt.extensions/extensions/org/eclipse/swt/internal/extension/GraphicsUtil.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/GraphicsUtil.java Mon Oct 04 00:10:53 2010 +0300 @@ -0,0 +1,69 @@ +/******************************************************************************* + * Copyright (c) 2010 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.graphics.Internal_GfxPackageSupport; +import org.eclipse.swt.widgets.Internal_PackageSupport; +import org.eclipse.swt.widgets.Control; +import org.eclipse.swt.graphics.Rectangle; +import org.eclipse.swt.graphics.GC; +import org.eclipse.swt.internal.qt.graphics.WindowSurface; + +public final class GraphicsUtil { + + /** + * Ends window surface session started with startExternalRendering() -call. + * Must be called after the rendering of external renderer has finished. + * + * @param gc The gc instance where the rendering is targeted + */ + public static void endExternalRendering(GC gc) { + Internal_GfxPackageSupport.endExternalRendering(gc); + } + + /** + * Returns the WindowSurface instance that is the ultimate target of the + * rendering for the given gc instance. + * + * @param gc The gc instance asossiated with the WindowSurface + * @return The WindowSurface instance that is the target of given gc instance + */ + public static WindowSurface getWindowSurface(GC gc) { + return Internal_GfxPackageSupport.getWindowSurface(gc); + } + + /** + * Start a window surface rendering session on the surface that is the + * target of the given gc instance. This method must be called before + * rendering to the window surface from external rendering APIs like m3g and m2g. + * The caller must not render outside the area defined by the returned rectangle, + * as it may result in rendering on top of other controls. + * + * @param gc The gc instance where the rendering is targeted + * @return The current clip of the gc in window surface coordinates or + * null if the target of given gc is not a Control + */ + public static Rectangle startExternalRendering(GC gc) { + return Internal_GfxPackageSupport.startExternalRendering(gc); + } + + /** + * Converts the given rectangle to window surface coordinates. + * + * @param c The Control instance on which coordinates the conversion is done + * @param rect The rectangle to be converted + * @return Rectangcular area in window surface coordinates + */ + public static Rectangle toWindowSurface(Control c, Rectangle rect) { + return Internal_PackageSupport.toWindowSurface(c, rect); + } +} \ No newline at end of file diff -r 4ad59aaee882 -r 2f468c1958d0 javauis/eswt_qt/org.eclipse.swt/Eclipse SWT/qt/org/eclipse/swt/graphics/GC.java --- a/javauis/eswt_qt/org.eclipse.swt/Eclipse SWT/qt/org/eclipse/swt/graphics/GC.java Fri Sep 17 08:28:21 2010 +0300 +++ b/javauis/eswt_qt/org.eclipse.swt/Eclipse SWT/qt/org/eclipse/swt/graphics/GC.java Mon Oct 04 00:10:53 2010 +0300 @@ -16,8 +16,10 @@ import org.eclipse.swt.internal.qt.GCData; import org.eclipse.swt.internal.qt.OS; import org.eclipse.swt.internal.qt.graphics.GraphicsContext; +import org.eclipse.swt.internal.qt.graphics.WindowSurface; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Display; +import org.eclipse.swt.widgets.Internal_PackageSupport; /** * Class GC is where all of the drawing capabilities that are @@ -1035,6 +1037,16 @@ translatedFlags, isTransparent); } +/* + * Ends external rendering session. + */ +void endExternalRendering() { + if (drawable instanceof Control) { + Internal_PackageSupport.endWindowSurfaceSession((Control)drawable); + } +} + + /** * Compares the argument to the receiver, and returns true if they represent the * same object using a class specific comparison. @@ -1657,6 +1669,21 @@ return (data.xorMode == GCData.XOR_MODE_ON); } +/* + * Getter for the window surface which is target of this + * GC instance. + * @return related WindowSurface instance if the target is widget, + * otherwise null, if e.g. the target is instance of Image. + */ +WindowSurface getWindowSurface() { + if (drawable instanceof Control) { + return Internal_PackageSupport.getWindowsurface(((Control)drawable).getShell()); + } else { + return null; + } +} + + /** * Returns an integer hash code for the receiver. Any two objects that return * true when passed to equals must return the same @@ -2055,6 +2082,24 @@ return textExtent(string, 0); } +/* + * Starts external rendering session. + * The sessions must be opened before starting to render to the target outside GC. + * This is needed in order to open the rendering session to Qt window surface. + * Once rendering has completed the session must be closed with + * endExternalRendering() -call, which closes the window surface session. + * + * If the target of this GC is not Control, this call has no effect. + * + * @return the clip area of the GC in window coordinates + */ +Rectangle startExternalRendering() { + if (drawable instanceof Control) { + return Internal_PackageSupport.startWindowSurfaceSession((Control)drawable, getClipping()); + } + return null; +} + /** * Returns the extent of the given string. Tab expansion and carriage return * processing are performed. diff -r 4ad59aaee882 -r 2f468c1958d0 javauis/eswt_qt/org.eclipse.swt/Eclipse SWT/qt/org/eclipse/swt/graphics/Image.java --- a/javauis/eswt_qt/org.eclipse.swt/Eclipse SWT/qt/org/eclipse/swt/graphics/Image.java Fri Sep 17 08:28:21 2010 +0300 +++ b/javauis/eswt_qt/org.eclipse.swt/Eclipse SWT/qt/org/eclipse/swt/graphics/Image.java Mon Oct 04 00:10:53 2010 +0300 @@ -123,6 +123,7 @@ * @param device Device */ Image(Device device) { + if (device == null) device = Internal_PackageSupport.getDisplayInstance(); if (device == null) SWT.error(SWT.ERROR_NULL_ARGUMENT); this.device = device; } diff -r 4ad59aaee882 -r 2f468c1958d0 javauis/eswt_qt/org.eclipse.swt/Eclipse SWT/qt/org/eclipse/swt/widgets/Composite.java --- a/javauis/eswt_qt/org.eclipse.swt/Eclipse SWT/qt/org/eclipse/swt/widgets/Composite.java Fri Sep 17 08:28:21 2010 +0300 +++ b/javauis/eswt_qt/org.eclipse.swt/Eclipse SWT/qt/org/eclipse/swt/widgets/Composite.java Mon Oct 04 00:10:53 2010 +0300 @@ -114,6 +114,9 @@ if(handle != 0) { OS.QWidget_setAttribute(handle, OS.QT_WA_NOSYSTEMBACKGROUND, true); } + if(topHandle != 0) { + OS.QWidget_setAttribute(topHandle, OS.QT_WA_NOSYSTEMBACKGROUND, true); + } } } @@ -193,6 +196,8 @@ // Composite by itself must not by default accept focus by clicking. int policy = OS.QWidget_focusPolicy(topHandle) & ~OS.QT_FOCUSPOLICY_CLICKFOCUS; OS.QWidget_setFocusPolicy(topHandle, policy); + policy = OS.QWidget_focusPolicy(handle) & ~OS.QT_FOCUSPOLICY_CLICKFOCUS; + OS.QWidget_setFocusPolicy(handle, policy); // Stand-alone Composites, Shells, Canvases set the CANVAS flag state |= (WidgetState.HANDLE | WidgetState.CANVAS); diff -r 4ad59aaee882 -r 2f468c1958d0 javauis/eswt_qt/org.eclipse.swt/Eclipse SWT/qt/org/eclipse/swt/widgets/Control.java --- a/javauis/eswt_qt/org.eclipse.swt/Eclipse SWT/qt/org/eclipse/swt/widgets/Control.java Fri Sep 17 08:28:21 2010 +0300 +++ b/javauis/eswt_qt/org.eclipse.swt/Eclipse SWT/qt/org/eclipse/swt/widgets/Control.java Mon Oct 04 00:10:53 2010 +0300 @@ -41,6 +41,7 @@ import org.eclipse.swt.internal.qt.WidgetState; import org.eclipse.swt.internal.qt.graphics.NativeCommandBuffer; import org.eclipse.swt.internal.qt.graphics.GraphicsContext; +import org.eclipse.swt.internal.qt.graphics.WindowSurface; /** * Control is the abstract superclass of all windowed user interface classes. @@ -81,6 +82,7 @@ private byte isPainting; boolean bufferFlush; + WindowSurface windowSurface; Control() { } @@ -753,6 +755,14 @@ OS.QWidget_setEnabled(topHandle, enabled); } +/* + * Closes window surface session + */ +void endWindowSurfaceSession() { + checkWidget(); + windowSurface.endPaint(); +} + Control findBackgroundControl () { if (background != null || backgroundImage != null) return this; return (state & WidgetState.PARENT_BACKGROUND) != 0 ? parent.findBackgroundControl () : null; @@ -819,13 +829,17 @@ } } -void flushBuffers() { +void flushBuffers(Object target) { if (bufferedGcs != null) { for (int i = 0; i < bufferedGcs.size(); i++) { GraphicsContext igc = (GraphicsContext)bufferedGcs.elementAt(i); NativeCommandBuffer buf = (NativeCommandBuffer)gcBuffers.elementAt(i); igc.releaseTarget(); - igc.bindTarget(this); + if(target instanceof WindowSurface) { + igc.bindTarget((WindowSurface)target); + } else { + igc.bindTarget(this); + } igc.render(buf); igc.releaseTarget(); igc.bindTarget(buf, this); @@ -2053,7 +2067,7 @@ } // Render the buffers created outside the paint event, if any - flushBuffers(); + flushBuffers(this); // If this is only a buffer flush event then stop here if(bufferFlush) { @@ -3257,6 +3271,39 @@ if (fixFocus) fixFocus (control); } +/* + * Starts external access to the window behind this control, + * by opening surface session and flushing any pending GC originated + * rendering to the window. + * + * @param clip The invalid area to be converted to window coordinates + * @return the area to be painted in window coordinates + */ +Rectangle startWindowSurfaceSession(Rectangle clip) { + checkWidget(); + if (clip == null) + error(SWT.ERROR_NULL_ARGUMENT); + + Shell s = getShell(); + if(windowSurface == null) { + windowSurface = s.getWindowSurface(); + if(windowSurface == null) { + error(SWT.ERROR_NULL_ARGUMENT); + } + } + // this is supported only with children of Scrollable, + // i.e. Canvas, Shell + if(this instanceof Scrollable) { + Rectangle caInWinCoords = toWindowSurface(((Scrollable)this).getClientArea()); + windowSurface.beginPaint(caInWinCoords.x, caInWinCoords.y, caInWinCoords.width, caInWinCoords.height); + flushBuffers(windowSurface); + return toWindowSurface(clip); + } else { + error(SWT.ERROR_NOT_IMPLEMENTED); + } + return null; +} + /** * Returns a point which is the result of converting the argument, which is * specified in display relative coordinates, to coordinates relative to the @@ -3372,6 +3419,27 @@ return toDisplay(point.x, point.y); } +/* + * Converts given rectangle form the (this) Control coordinates + * to window surface coordinates. + * + * @param rect The rectangle to be converted, given in the coordinates of this Control + */ +Rectangle toWindowSurface(Rectangle rect) { + // The window surface is the size of the client area of a shell. + Shell s = getShell(); + Point wTopLeft = s.toControl(toDisplay(rect.x, rect.y)); + Point wBottomRight = s.toControl(toDisplay(rect.x+rect.width, rect.y+rect.height)); + + // trim for possible shell border + if ((getStyle() & SWT.BORDER) != 0){ + final int frameOffset = getBorderWidth(); + wTopLeft.x = wTopLeft.x + frameOffset; + wTopLeft.y = wTopLeft.y + frameOffset; + } + return new Rectangle(wTopLeft.x, wTopLeft.y, wBottomRight.x-wTopLeft.x, wBottomRight.y-wTopLeft.y); +} + /** * Based on the argument, perform one of the expected platform traversal action. * The argument should be one of the constants: SWT.TRAVERSE_ESCAPE diff -r 4ad59aaee882 -r 2f468c1958d0 javauis/eswt_qt/org.eclipse.swt/Eclipse SWT/qt/org/eclipse/swt/widgets/Shell.java --- a/javauis/eswt_qt/org.eclipse.swt/Eclipse SWT/qt/org/eclipse/swt/widgets/Shell.java Fri Sep 17 08:28:21 2010 +0300 +++ b/javauis/eswt_qt/org.eclipse.swt/Eclipse SWT/qt/org/eclipse/swt/widgets/Shell.java Mon Oct 04 00:10:53 2010 +0300 @@ -422,6 +422,20 @@ addListener (SWT.Deactivate, typedListener); } +void checkNoBackground() { + if((style & SWT.NO_BACKGROUND) != 0) { + if(handle != 0) { + OS.QWidget_setAttribute(handle, OS.QT_WA_NOSYSTEMBACKGROUND, true); + } + if(scrollAreaHandle != 0) { + OS.QWidget_setAttribute(scrollAreaHandle, OS.QT_WA_NOSYSTEMBACKGROUND, true); + } + if(topHandle != 0) { + OS.QWidget_setAttribute(topHandle, OS.QT_WA_NOSYSTEMBACKGROUND, true); + } + } +} + /** * Requests that the window manager close the receiver in * the same way it would be closed when the user clicks on @@ -593,6 +607,13 @@ // Shell must not by default accept focus by clicking. int policy = OS.QWidget_focusPolicy(topHandle) & ~OS.QT_FOCUSPOLICY_CLICKFOCUS; OS.QWidget_setFocusPolicy(topHandle, policy); + policy = OS.QWidget_focusPolicy(scrollAreaHandle) & ~OS.QT_FOCUSPOLICY_CLICKFOCUS; + OS.QWidget_setFocusPolicy(scrollAreaHandle, policy); + policy = OS.QWidget_focusPolicy(handle) & ~OS.QT_FOCUSPOLICY_CLICKFOCUS; + OS.QWidget_setFocusPolicy(handle, policy); + + // The Shell should not become active when Shell.setVisible(true) is called. + OS.QWidget_setAttribute(topHandle, OS.QT_WA_SHOWWITHOUTACTIVATING, true); // Stand-alone Composites, Shells, Canvases set the CANVAS flag state |= WidgetState.HANDLE | WidgetState.CANVAS; diff -r 4ad59aaee882 -r 2f468c1958d0 javauis/eswt_qt/org.eclipse.swt/Eclipse_SWT_PI/qt/library/graphics/qt/windowsurfaceimpl_symbian.cpp --- a/javauis/eswt_qt/org.eclipse.swt/Eclipse_SWT_PI/qt/library/graphics/qt/windowsurfaceimpl_symbian.cpp Fri Sep 17 08:28:21 2010 +0300 +++ b/javauis/eswt_qt/org.eclipse.swt/Eclipse_SWT_PI/qt/library/graphics/qt/windowsurfaceimpl_symbian.cpp Mon Oct 04 00:10:53 2010 +0300 @@ -318,8 +318,7 @@ return false; } - if((mMainSurface.localSurfaceInUse) && - (mMainSurface.localSurface->width() == mMainSurface.widget->width()) && + if((mMainSurface.localSurface->width() == mMainSurface.widget->width()) && (mMainSurface.localSurface->height() == mMainSurface.widget->height())) { return true; @@ -362,7 +361,8 @@ } else { - // We have valid local surface so just return + // We have valid local surface so make sure its active and return + mMainSurface.localSurfaceInUse = true; return; } } @@ -386,15 +386,19 @@ // We got window surface so extract information QPaintDevice* device = surface->paintDevice(); + QPaintEngine* engine = NULL; + + // If the device is active it means that some painter is attached to the widget, + // if not then we attach our own painter to do the job if(device->paintingActive()) { - throw GfxException(EGfxErrorIllegalState, "Internal error: Device active when refreshing data"); + engine = device->paintEngine(); } - - // Attach painter to device in oder to see which type - // of device it is working on - mPainter.begin(device); - QPaintEngine* engine = mPainter.paintEngine(); + else + { + mPainter.begin(device); + engine = mPainter.paintEngine(); + } // determine the surface type based on the engine used // as Qt does not provide exact info of the surface type @@ -420,8 +424,11 @@ throw GfxException(EGfxErrorIllegalArgument, "Unsupported widget window surface type"); } - // release painter - mPainter.end(); + // release painter if its active + if(mPainter.isActive()) + { + mPainter.end(); + } mMainSurface.qSurface = surface; mMainSurface.device = device; mMainSurface.localSurfaceInUse = false; diff -r 4ad59aaee882 -r 2f468c1958d0 javauis/eswt_qt/org.eclipse.swt/Eclipse_SWT_PI/qt/org/eclipse/swt/graphics/Internal_GfxPackageSupport.java --- a/javauis/eswt_qt/org.eclipse.swt/Eclipse_SWT_PI/qt/org/eclipse/swt/graphics/Internal_GfxPackageSupport.java Fri Sep 17 08:28:21 2010 +0300 +++ b/javauis/eswt_qt/org.eclipse.swt/Eclipse_SWT_PI/qt/org/eclipse/swt/graphics/Internal_GfxPackageSupport.java Mon Oct 04 00:10:53 2010 +0300 @@ -13,6 +13,8 @@ import java.io.InputStream; +import org.eclipse.swt.internal.qt.graphics.WindowSurface; + /** *

* IMPORTANT: This class is not part of the SWT public API. It @@ -80,4 +82,20 @@ return Font.qt_new(device, handle); } +/* + * From class GC + */ + +public static Rectangle startExternalRendering(GC gc) { + return gc.startExternalRendering(); } + +public static void endExternalRendering(GC gc) { + gc.endExternalRendering(); +} + +public static WindowSurface getWindowSurface(GC gc) { + return gc.getWindowSurface(); +} + +} diff -r 4ad59aaee882 -r 2f468c1958d0 javauis/eswt_qt/org.eclipse.swt/Eclipse_SWT_PI/qt/org/eclipse/swt/internal/qt/OS.java --- a/javauis/eswt_qt/org.eclipse.swt/Eclipse_SWT_PI/qt/org/eclipse/swt/internal/qt/OS.java Fri Sep 17 08:28:21 2010 +0300 +++ b/javauis/eswt_qt/org.eclipse.swt/Eclipse_SWT_PI/qt/org/eclipse/swt/internal/qt/OS.java Mon Oct 04 00:10:53 2010 +0300 @@ -551,6 +551,7 @@ public static final int QT_WA_PAINTUNCLIPPED = 52; public static final int QT_WA_INPUTMETHODENABLED = 14; public static final int QT_WA_NOMOUSEPROPAGATION = 73; + public static final int QT_WA_SHOWWITHOUTACTIVATING = 98; // QStyle::StandardPixmap public static final int QSTYLE_SP_MESSAGEBOXINFORMATION = 9; diff -r 4ad59aaee882 -r 2f468c1958d0 javauis/eswt_qt/org.eclipse.swt/Eclipse_SWT_PI/qt/org/eclipse/swt/widgets/Internal_PackageSupport.java --- a/javauis/eswt_qt/org.eclipse.swt/Eclipse_SWT_PI/qt/org/eclipse/swt/widgets/Internal_PackageSupport.java Fri Sep 17 08:28:21 2010 +0300 +++ b/javauis/eswt_qt/org.eclipse.swt/Eclipse_SWT_PI/qt/org/eclipse/swt/widgets/Internal_PackageSupport.java Mon Oct 04 00:10:53 2010 +0300 @@ -13,8 +13,10 @@ import org.eclipse.ercp.swt.mobile.Command; import org.eclipse.ercp.swt.mobile.MobileDevice; +import org.eclipse.swt.graphics.GC; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.graphics.Point; +import org.eclipse.swt.graphics.Rectangle; import org.eclipse.swt.internal.qt.CommandArranger; import org.eclipse.swt.internal.qt.SymbianWindowVisibilityListener; import org.eclipse.swt.internal.qt.graphics.WindowSurface; @@ -204,6 +206,9 @@ /* * From the class Control */ +public static void endWindowSurfaceSession(Control c) { + c.endWindowSurfaceSession(); +} public static int extraStyle(Control c) { return c.extraStyle; } @@ -250,6 +255,13 @@ public static void setTraversalFlags(Control c, int type, int key, int modifier, int character) { c.setTraversalFlags_pp(type, key, modifier, character); } +public static Rectangle startWindowSurfaceSession(Control c, Rectangle clip) { + return c.startWindowSurfaceSession(clip); +} +public static Rectangle toWindowSurface(Control c, Rectangle rect) { + return c.toWindowSurface(rect); +} + /* * From the class Scrollable */ diff -r 4ad59aaee882 -r 2f468c1958d0 javauis/javauis.pro --- a/javauis/javauis.pro Fri Sep 17 08:28:21 2010 +0300 +++ b/javauis/javauis.pro Mon Oct 04 00:10:53 2010 +0300 @@ -16,11 +16,12 @@ TEMPLATE = subdirs SUBDIRS += nokiasound/build/javanokiasound.pro SUBDIRS += eswt_qt/build +SUBDIRS += coreui_qt/build/javacoreui.pro SUBDIRS += lcdui_qt/build/openlcdui.pro SUBDIRS += runtimeui_qt/build/javaruntimeui.pro -SUBDIRS += nokiauiapi_qt/build/javanokiaui.pro SUBDIRS += mmapi_qt/build/javamobilemedia.pro SUBDIRS += amms_qt/build/javaamms.pro SUBDIRS += m3g_qt/build/javam3g.pro +SUBDIRS += nokiauiapi_qt/build BLD_INF_RULES.prj_extensions += "$${LITERAL_HASH}include \"coreui/build/bld.inf\"" BLD_INF_RULES.prj_extensions += "prj_extensions" diff -r 4ad59aaee882 -r 2f468c1958d0 javauis/lcdui_qt/src/javax/microedition/lcdui/Alert.java --- a/javauis/lcdui_qt/src/javax/microedition/lcdui/Alert.java Fri Sep 17 08:28:21 2010 +0300 +++ b/javauis/lcdui_qt/src/javax/microedition/lcdui/Alert.java Mon Oct 04 00:10:53 2010 +0300 @@ -253,6 +253,12 @@ */ void eswtHandleShowCurrentEvent() { + // If it alert is first displayable, default + // displayable should be shown behind alert + if(topShell.isVisible() == false && nextDisplayable == null) + { + topShell.setVisible(true); + } super.eswtHandleShowCurrentEvent(); topShell.addListener(SWT.Resize, resizeListener); diff -r 4ad59aaee882 -r 2f468c1958d0 javauis/lcdui_qt/src/javax/microedition/lcdui/Canvas.java --- a/javauis/lcdui_qt/src/javax/microedition/lcdui/Canvas.java Fri Sep 17 08:28:21 2010 +0300 +++ b/javauis/lcdui_qt/src/javax/microedition/lcdui/Canvas.java Mon Oct 04 00:10:53 2010 +0300 @@ -159,7 +159,6 @@ private static final int DISABLE_TAPDETECTION = 1 << 3; private static final int SUPPRESS_GAMEKEYS = 1 << 4; private static final int SUPPRESS_DRAGEVENT = 1 << 5; - private static final int CLEANUP_NEEDED = 1 << 6; private static final int REPAINT_PENDING = 1 << 7; private static final int SELECTIONKEY_COMPATIBILITY = 1 << 8; @@ -205,7 +204,6 @@ private int mode; private Object modeLock; - private Object cleanupLock; private Object repaintLock; private Object flushLock; @@ -239,7 +237,6 @@ modeLock = new Object(); repaintLock = new Object(); - cleanupLock = new Object(); flushLock = new Object(); setMode(GAME_CANVAS, this instanceof GameCanvas); construct(); @@ -299,13 +296,13 @@ { if(isMode(GAME_CANVAS)) { - mShell = super.eswtConstructShell(style); + mShell = super.eswtConstructShell(style|SWT.NO_BACKGROUND); } else { if(sharedShell == null) { - sharedShell = super.eswtConstructShell(style); + sharedShell = super.eswtConstructShell(style|SWT.NO_BACKGROUND); } mShell = sharedShell; } @@ -581,7 +578,7 @@ /** * Issues the request to repaint the whole Canvas. */ - public void repaint() + public final void repaint() { repaint(0, 0, getWidth(), getHeight()); } @@ -595,7 +592,7 @@ * @param width - width of the rectangle to redraw. * @param height - height of the rectangle to redraw. */ - public void repaint(int x, int y, int width, int height) + public final void repaint(int x, int y, int width, int height) { // Paint callback event is posted without any invalid area info. // Invalid area info is kept in the member variables. Only one event @@ -719,15 +716,20 @@ } /** - * Returns game action for a specified key code. + * Returns game action associated with key code. * * @param keyCode Key code to map to game action. - * @return Game action for a a specified key code or - * IllegalArgumentException. + * @return game action corresponding to key, or 0 if none + * @throws IllegalArgumentException if keyCode is not a valid */ - public int getGameAction(int keyCode) + public int getGameAction(int aKeyCode) { - return KeyTable.getGameAction(keyCode); + if (aKeyCode == 0) + { + throw new IllegalArgumentException( + MsgRepository.CANVAS_EXCEPTION_INVALID_KEY_CODE); + } + return KeyTable.getGameAction(aKeyCode); } /** @@ -735,10 +737,18 @@ * * @param gameAction - game action to be mapped to the key code. * @return Key code that is mapped to the specified game action. + * @throws IllegalArgumentException for not valid gameAction */ - public int getKeyCode(int gameAction) + public int getKeyCode(int aGameAction) { - return KeyTable.getKeyCode(gameAction); + int keyCode = KeyTable.getKeyCode(aGameAction); + + if (keyCode == 0) + { + throw new IllegalArgumentException( + MsgRepository.CANVAS_EXCEPTION_INVALID_GAME_ACTION); + } + return keyCode; } /** @@ -748,9 +758,9 @@ * @return String that contains textual name of the key specified by the key * code. */ - public String getKeyName(int keyCode) + public String getKeyName(int aKeyCode) { - return KeyTable.getKeyName(keyCode); + return KeyTable.getKeyName(aKeyCode); } /** @@ -963,11 +973,6 @@ // reset the game key state gameKeyState = 0; - synchronized(cleanupLock) - { - setMode(CLEANUP_NEEDED, true); - } - LCDUIEvent event = EventDispatcher.instance().newEvent(LCDUIEvent.CANVAS_SHOWNOTIFY, this); EventDispatcher.instance().postEvent(event); } @@ -992,10 +997,6 @@ // this call must not be synchronized as we // cannot use locking in UI thread graphicsBuffer.setControlBounds(getContentComp()); - synchronized(cleanupLock) - { - setMode(CLEANUP_NEEDED, true); - } } /* @@ -1174,20 +1175,10 @@ } // Clean the background if dirty, buffer the operations. - synchronized(cleanupLock) + if(isMode(NO_BACKGROUND) && event.type == LCDUIEvent.CANVAS_PAINT_NATIVE_REQUEST) { - if(isMode(CLEANUP_NEEDED) && isMode(NO_BACKGROUND)) - { - // UI thread can change the contentArea object reference at - // any time. Store the object reference locally to ensure it - // points to the same rectangle all the time. - Rectangle contentArea = getContentArea(); - - canvasGraphics.setClip(contentArea.x, contentArea.y, - contentArea.width, contentArea.height); - canvasGraphics.cleanBackground(contentArea); - setMode(CLEANUP_NEEDED, false); - } + canvasGraphics.setClip(event.x, event.y, event.width, event.height); + canvasGraphics.cleanBackground(new Rectangle(event.x, event.y, event.width, event.height)); } // Clip must define the invalid area @@ -1338,7 +1329,7 @@ /** * Updates game key states and returns if the key was a game key. */ - private boolean updateGameKeyState(int keyCode, boolean addKeyState) + private boolean updateGameKeyState(int aKeyCode, boolean aAddKeyState) { // Ignore key repeat events if(ESWTUIThreadRunner.getKeyRepeatCount() > 1) @@ -1347,13 +1338,21 @@ } try { - int gameAction = KeyTable.getGameAction(keyCode); - if(addKeyState) + int gameAction = getGameAction(aKeyCode); + boolean result = false; + + // Key state should be updated only if game action + // is associated with keyCode + if(gameAction != 0) { - // set bitfield - gameKeyState |= (1 << gameAction); + if(aAddKeyState) + { + // set bitfield + gameKeyState |= (1 << gameAction); + } + result = true; } - return true; + return result; } catch(IllegalArgumentException iae) { diff -r 4ad59aaee882 -r 2f468c1958d0 javauis/lcdui_qt/src/javax/microedition/lcdui/CustomItem.java --- a/javauis/lcdui_qt/src/javax/microedition/lcdui/CustomItem.java Fri Sep 17 08:28:21 2010 +0300 +++ b/javauis/lcdui_qt/src/javax/microedition/lcdui/CustomItem.java Mon Oct 04 00:10:53 2010 +0300 @@ -42,10 +42,9 @@ /** * If CustomItem is changed, reasons for Re-layouting. */ - static final int UPDATE_REASON_REPAINT = UPDATE_ITEM_MAX << 1; + static final int UPDATE_REASON_REPAINT = UPDATE_ITEM_MAX << 1; - private boolean cleanupNeeded; private int contentWidth; private int contentHeight; @@ -55,7 +54,6 @@ private int repaintX2; private int repaintY2; private Object repaintLock; - private Object cleanupLock; private Object resizeLock; // Flag for passing info between UI thread @@ -95,20 +93,25 @@ } }); repaintLock = new Object(); - cleanupLock = new Object(); resizeLock = new Object(); setLabel(label); } /** - * Get the game action associated with the key code. + * Returns game action associated with key code. * - * @param keyCode key code - * @return game action bound to the key + * @param keyCode Key code to map to game action. + * @return game action corresponding to key, or 0 if none + * @throws IllegalArgumentException if keyCode is not a valid key code */ - public int getGameAction(int keyCode) + public int getGameAction(int aKeyCode) { - return KeyTable.getGameAction(keyCode); + if (aKeyCode == 0) + { + throw new IllegalArgumentException( + MsgRepository.CANVAS_EXCEPTION_INVALID_KEY_CODE); + } + return KeyTable.getGameAction(aKeyCode); } /** @@ -309,10 +312,6 @@ LCDUIEvent event = eventDispatcher.newEvent(LCDUIEvent.CUSTOMITEM_SIZECHANGED, layouter.formLayouter.getForm()); event.item = this; eventDispatcher.postEvent(event); - synchronized(cleanupLock) - { - cleanupNeeded = true; - } repaint(); } } @@ -568,23 +567,10 @@ } // Clean the background if dirty, buffer the operations. - synchronized(cleanupLock) + if(layouter.noBackground && event.type == LCDUIEvent.CUSTOMITEM_PAINT_NATIVE_REQUEST) { - if(cleanupNeeded && layouter.noBackground) - { - // Must be made sure that size doesn't change between reading - // the width and the height. - int contentWidth, contentHeight; - synchronized(resizeLock) - { - contentWidth = this.contentWidth; - contentHeight = this.contentHeight; - } - - customItemGraphics.setClip(0, 0, contentWidth, contentHeight); - customItemGraphics.cleanBackground(new Rectangle(0, 0, contentWidth, contentHeight)); - cleanupNeeded = false; - } + customItemGraphics.setClip(event.x, event.y, event.width, event.height); + customItemGraphics.cleanBackground(new Rectangle(event.x, event.y, event.width, event.height)); } // Clip must define the invalid area diff -r 4ad59aaee882 -r 2f468c1958d0 javauis/lcdui_qt/src/javax/microedition/lcdui/Display.java --- a/javauis/lcdui_qt/src/javax/microedition/lcdui/Display.java Fri Sep 17 08:28:21 2010 +0300 +++ b/javauis/lcdui_qt/src/javax/microedition/lcdui/Display.java Mon Oct 04 00:10:53 2010 +0300 @@ -290,6 +290,15 @@ } else { + if(displayable.isPopup()) + { + TextBox textbox = (TextBox) displayable; + if(currentDisplayable == null) + { + // if PopupTextBox is first Displayable + textbox.setFirstDisplayable(true); + } + } doSetCurrent(displayable); } } diff -r 4ad59aaee882 -r 2f468c1958d0 javauis/lcdui_qt/src/javax/microedition/lcdui/Displayable.java --- a/javauis/lcdui_qt/src/javax/microedition/lcdui/Displayable.java Fri Sep 17 08:28:21 2010 +0300 +++ b/javauis/lcdui_qt/src/javax/microedition/lcdui/Displayable.java Mon Oct 04 00:10:53 2010 +0300 @@ -125,7 +125,7 @@ { public void run() { - shell = eswtConstructShell(SWT.SHELL_TRIM | SWT.PRIMARY_MODAL); + shell = eswtConstructShell(SWT.SHELL_TRIM); eswtSetTitle(); contentComp = eswtConstructContent(SWT.NONE); contentArea = eswtLayoutShellContent(); @@ -198,7 +198,9 @@ if(!shell.isDisposed()) { eswtUpdateSizes(); - if(ticker != null) + + // If it is popup textbox ticker should not be visible + if (ticker != null && !isPopup()) { ticker.start(); } @@ -327,7 +329,7 @@ { if(isDialogShell()) { - // aHeight += Config.DISPLAYABLE_DIALOGSHELL_HEIGHT_DISPLACEMENT; + //aHeight += Config.DISPLAYABLE_DIALOGSHELL_HEIGHT_DISPLACEMENT; Logger.method(this, "eswtSetPreferredContentSize", String.valueOf(aWidth), String.valueOf(aHeight)); @@ -344,16 +346,29 @@ Rectangle shellBounds = shell.getBounds(); // compute the trimmed shell size Rectangle newSize = shell.computeTrim(0, 0, newWidth, newHeight); + // set the new size shell.setSize(newSize.width, newSize.height); - // set the location - attached to the bottom growing upwards - shell.setLocation(shellBounds.x, (shellBounds.y + shellBounds.height) - newSize.height); + + if(!(this instanceof Alert)) + { + // set the location - attached to the bottom growing upwards + shell.setLocation(shellBounds.x, + (shellBounds.y + shellBounds.height) - newSize.height); + } + else + { + // Temporary solution, it should be changed after qt integration + shell.setLocation(shellBounds.x, ESWTUIThreadRunner. + getInstance().getDisplay().getBounds().height/2); + } } } Rectangle eswtLayoutShellContent() { Rectangle shellArea = shell.getClientArea(); + if(tickerLabel != null) { int tickerHeight = tickerLabel.getBounds().height; @@ -699,6 +714,8 @@ } final Ticker finalTicker = ticker; + final Displayable currentDisplayable = this; + ESWTUIThreadRunner.syncExec(new Runnable() { public void run() @@ -707,18 +724,31 @@ { // Setting ticker: tickerLabel.setText(finalTicker.getFormattedString()); - tickerLabel.pack(); - // Avoid ticker flashing by setting it out of the - // screen first: - tickerLabel.setBounds(Integer.MIN_VALUE, 0, + + // If it is popup textbox ticker should not be visible + if (!currentDisplayable.isPopup()) + { + + // Setting ticker: + tickerLabel.pack(); + // Avoid ticker flashing by setting it out of the + // screen first: + tickerLabel.setBounds(Integer.MIN_VALUE, 0, tickerLabel.getBounds().width, tickerLabel.getBounds().height); + } } else { // Removing ticker: tickerLabel.setText(""); - tickerLabel.setBounds(Integer.MIN_VALUE, 0, 0, 0); + + // If it is popup textbox ticker should not be visible + if (!currentDisplayable.isPopup()) + { + // Removing ticker: + tickerLabel.setBounds(Integer.MIN_VALUE, 0, 0, 0); + } } eswtUpdateSizes(); } @@ -727,10 +757,14 @@ { if(isLcduiVisible) { - // Start to scroll the ticker. Ticker may be already running - // if it exists in some other displayable already, but - // calling this again wont do any harm: - ticker.start(); + // If it is popup textbox ticker should not be visible + if (!isPopup()) + { + // Start to scroll the ticker. Ticker may be already running + // if it exists in some other displayable already, but + // calling this again wont do any harm: + ticker.start(); + } } } } @@ -788,12 +822,23 @@ { if(tickerLabel == null) { + final Displayable currentDisplayable = this; ESWTUIThreadRunner.syncExec(new Runnable() { public void run() { - tickerLabel = new Label(shell, - SWT.SHADOW_NONE | SWT.HORIZONTAL | SWT.CENTER); + // Alert's ticker should be added to top part of the screen + Composite parent = shell; + if (currentDisplayable instanceof Alert) + { + parent = shell.getParent(); + if(parent == null) + { + parent = shell; + } + } + tickerLabel = new Label(parent, + SWT.SHADOW_NONE | SWT.HORIZONTAL | SWT.CENTER); } }); } @@ -854,6 +899,23 @@ } } + /* (non-Javadoc) + * Checks if instance of Displayable is popup component + */ + protected boolean isPopup() + { + boolean isPopup = false; + + if(this instanceof TextBox && + !JadAttributeUtil.isValue( + JadAttributeUtil.ATTRIB_NOKIA_UI_ENHANCEMENT, + JadAttributeUtil.VALUE_FULLSCREEN_TEXTBOX)) + { + isPopup = true; + } + return isPopup; + } + /** * Inner class which receives SelectionEvents from eSWT and convert and * forwards those events to LCDUI's CommandListener. diff -r 4ad59aaee882 -r 2f468c1958d0 javauis/lcdui_qt/src/javax/microedition/lcdui/Gauge.java --- a/javauis/lcdui_qt/src/javax/microedition/lcdui/Gauge.java Fri Sep 17 08:28:21 2010 +0300 +++ b/javauis/lcdui_qt/src/javax/microedition/lcdui/Gauge.java Mon Oct 04 00:10:53 2010 +0300 @@ -108,9 +108,15 @@ */ public void setMaxValue(int aMaxValue) { - int oldMaxValue = maxValue; - maxValue = validateMaxValue(aMaxValue, interactive); - value = validateValue(getValue(), maxValue, oldMaxValue); + if (maxValue == aMaxValue) + { + return; + } + int tempMaxValue = validateMaxValue(aMaxValue, interactive); + int tempValue = validateValue(getValue(), tempMaxValue, maxValue); + + maxValue = tempMaxValue; + value = tempValue; updateParent(UPDATE_MAXVALUE); } diff -r 4ad59aaee882 -r 2f468c1958d0 javauis/lcdui_qt/src/javax/microedition/lcdui/Item.java --- a/javauis/lcdui_qt/src/javax/microedition/lcdui/Item.java Fri Sep 17 08:28:21 2010 +0300 +++ b/javauis/lcdui_qt/src/javax/microedition/lcdui/Item.java Mon Oct 04 00:10:53 2010 +0300 @@ -170,7 +170,7 @@ private ItemControlStateChangeListener controlListener; private Command defaultCommand; - private WeakReference wParent; + private Screen iParent = null; private int layout; private int lockedPrefWidth = -1; @@ -188,14 +188,14 @@ */ void setParent(Screen parent) { - if(parent != null) - { - wParent = new WeakReference(parent); - } - else - { - clearParent(); - } + if(parent != null) + { + iParent = parent; + } + else + { + clearParent(); + } } /** @@ -205,14 +205,14 @@ */ Screen getParent() { - if(wParent != null) - { - return (Screen)wParent.get(); - } - else - { - return null; - } + if(iParent != null) + { + return iParent; + } + else + { + return null; + } } /** @@ -221,11 +221,10 @@ */ void clearParent() { - if(wParent != null) - { - wParent.clear(); - wParent = null; - } + if(iParent != null) + { + iParent = null; + } } /** @@ -241,10 +240,10 @@ throw new IllegalStateException( MsgRepository.ITEM_EXCEPTION_OWNED_BY_ALERT); } - if((newLabel == null) && (label == null)) - { - return; - } + if((newLabel == null) && (label == null)) + { + return; + } label = newLabel; updateParent(UPDATE_LABEL | UPDATE_SIZE_CHANGED); } @@ -570,7 +569,7 @@ MsgRepository.ITEM_EXCEPTION_NOT_OWNED_BY_FORM); } // Notify item state listener - ((Form) getParent()).notifyItemStateChanged(this); + ((Form) iParent).notifyItemStateChanged(this); } /** @@ -630,7 +629,7 @@ */ boolean isContainedInAlert() { - return ((wParent != null) && (getParent() instanceof Alert)); + return ((iParent != null) && (iParent instanceof Alert)); } /** @@ -638,7 +637,7 @@ */ boolean isContainedInForm() { - return ((wParent != null) && (getParent() instanceof Form)); + return ((iParent != null) && (iParent instanceof Form)); } /** @@ -672,7 +671,7 @@ } if(isContainedInForm()) { - ((Form) getParent()).updateItemState(this, updateReason, param); + ((Form) iParent).updateItemState(this, updateReason, param); } } diff -r 4ad59aaee882 -r 2f468c1958d0 javauis/lcdui_qt/src/javax/microedition/lcdui/KeyTable.java --- a/javauis/lcdui_qt/src/javax/microedition/lcdui/KeyTable.java Fri Sep 17 08:28:21 2010 +0300 +++ b/javauis/lcdui_qt/src/javax/microedition/lcdui/KeyTable.java Mon Oct 04 00:10:53 2010 +0300 @@ -49,11 +49,7 @@ {Canvas.KEY_NUM7, Canvas.GAME_A}, {Canvas.KEY_NUM9, Canvas.GAME_B}, {Canvas.KEY_STAR, Canvas.GAME_C}, - {Canvas.KEY_POUND, Canvas.GAME_D}, - - {Canvas.KEY_NUM0, 0}, - {Canvas.KEY_NUM1, 0}, - {Canvas.KEY_NUM3, 0} + {Canvas.KEY_POUND, Canvas.GAME_D} }; /** @@ -63,37 +59,38 @@ { } - static int getGameAction(int keyCode) + static int getGameAction(int aKeyCode) { for(int i = 0; i < KEY_TO_GAME_TABLE.length; i++) { - if(KEY_TO_GAME_TABLE[i][0] == keyCode) + if(KEY_TO_GAME_TABLE[i][0] == aKeyCode) { return KEY_TO_GAME_TABLE[i][1]; } } - throw new IllegalArgumentException( - MsgRepository.CANVAS_EXCEPTION_INVALID_KEY_CODE); + + //No game action corresponding to this key + return 0; } - static int getKeyCode(int gameAction) + static int getKeyCode(int aGameAction) { for(int i = 0; i < KEY_TO_GAME_TABLE.length; i++) { - if(KEY_TO_GAME_TABLE[i][1] == gameAction) + if(KEY_TO_GAME_TABLE[i][1] == aGameAction) { return KEY_TO_GAME_TABLE[i][0]; } } - throw new IllegalArgumentException( - MsgRepository.CANVAS_EXCEPTION_INVALID_GAME_ACTION); + + //No key code corresponding to this game action + return 0; } - static String getKeyName(int keyCode) + static String getKeyName(int aKeyCode) { - - switch(keyCode) + switch(aKeyCode) { case Canvas.KEY_NUM0: return "0"; diff -r 4ad59aaee882 -r 2f468c1958d0 javauis/lcdui_qt/src/javax/microedition/lcdui/ScrolledTextComposite.java --- a/javauis/lcdui_qt/src/javax/microedition/lcdui/ScrolledTextComposite.java Fri Sep 17 08:28:21 2010 +0300 +++ b/javauis/lcdui_qt/src/javax/microedition/lcdui/ScrolledTextComposite.java Mon Oct 04 00:10:53 2010 +0300 @@ -91,9 +91,9 @@ { iTextScrolling = false; vBar.setVisible(false); - Point nextSize = iESWTTextLabel.computeSize(getClientArea().width, + Point nextSize = iESWTTextLabel.computeSize(getParent().getClientArea().width, SWT.DEFAULT); - if(nextSize.y > getClientArea().height) + if(nextSize.y > getParent().getClientArea().height) { iTextScrolling = true; vBar.setVisible(true); @@ -122,7 +122,7 @@ iESWTTextLabel.setSize(calculateTextSize()); Rectangle contentRect = iESWTTextLabel.getBounds(); - Rectangle hostRect = getClientArea(); + Rectangle hostRect = getParent().getClientArea(); vBar.setMaximum(contentRect.height); vBar.setThumb(Math.min(contentRect.height, hostRect.height)); int vPage = contentRect.height - hostRect.height; @@ -173,6 +173,11 @@ resizing = true; layout(); resizing = false; + if((Display.getDisplay().getCurrent() instanceof Alert) && + (isTextScrolling() == true)) + { + Display.getDisplay().getCurrent().setCommandsVisibility(true); + } } } diff -r 4ad59aaee882 -r 2f468c1958d0 javauis/lcdui_qt/src/javax/microedition/lcdui/TextBox.java --- a/javauis/lcdui_qt/src/javax/microedition/lcdui/TextBox.java Fri Sep 17 08:28:21 2010 +0300 +++ b/javauis/lcdui_qt/src/javax/microedition/lcdui/TextBox.java Mon Oct 04 00:10:53 2010 +0300 @@ -36,6 +36,8 @@ private TextWrapper textWrapper; private int numLines; + private Shell topShell; + private boolean firstDisplayable = false; /** * Constructor. @@ -59,24 +61,13 @@ */ Shell eswtConstructShell(int style) { - Shell topShell = super.eswtConstructShell(style); - // TextBox with null title and ANY constraint, should be Full-Screen - if(getTitle() == null && TextWrapper.getTypeConstraint( - textWrapper.getConstraints()) == TextField.ANY) - { - return topShell; - } - else + topShell = super.eswtConstructShell(style); + Shell currentShell = topShell; + if(super.isPopup()) { - if(JadAttributeUtil.isValue(JadAttributeUtil.ATTRIB_NOKIA_UI_ENHANCEMENT, JadAttributeUtil.VALUE_FULLSCREEN_TEXTBOX)) - { - return topShell; - } - else - { - return new Shell(topShell, style | SWT.DIALOG_TRIM | SWT.RESIZE); - } + currentShell = new Shell(topShell, style | SWT.DIALOG_TRIM | SWT.RESIZE); } + return currentShell; } /* (non-Javadoc) @@ -94,6 +85,13 @@ */ void eswtHandleShowCurrentEvent() { + // If it is popuptextbox and there is no active displayable + // behind textbox default displayable should be shown + if(super.isPopup() && topShell != null && + topShell.isVisible() == false && firstDisplayable == true) + { + topShell.setVisible(true); + } super.eswtHandleShowCurrentEvent(); textWrapper.setModifyListener(modListener); eswtSetPreferredContentSize(-1, textWrapper @@ -118,6 +116,13 @@ textWrapper.setBounds(getContentComp().getClientArea()); } + /* (non-Javadoc) + */ + void setFirstDisplayable(boolean first) + { + firstDisplayable = first; + } + /** * Get current caret position. * diff -r 4ad59aaee882 -r 2f468c1958d0 javauis/lcdui_qt/tsrc/src/com/nokia/openlcdui/mt/alert/AlertTest.java --- a/javauis/lcdui_qt/tsrc/src/com/nokia/openlcdui/mt/alert/AlertTest.java Fri Sep 17 08:28:21 2010 +0300 +++ b/javauis/lcdui_qt/tsrc/src/com/nokia/openlcdui/mt/alert/AlertTest.java Mon Oct 04 00:10:53 2010 +0300 @@ -329,6 +329,64 @@ } alert.setIndicator(null); + + setIndicatorAdditionalTests(); + } + + private void setIndicatorAdditionalTests() + { + boolean failed = false; + String s = ""; + + Gauge[] g = + { + new Gauge(null, true, 10, 1), // interactive + new Gauge("", false, 10, 1), // has a label + new Gauge("Label", false, 10, 1), // has a label + + new Gauge(null, false, 10, 1), // preferred width will be locked + new Gauge(null, false, 10, 1), // preferred height will be locked + new Gauge(null, false, 10, 1), // preferred width and height will be locked + + new Gauge(null, false, 10, 1), // layout will be changed + new Gauge(null, false, 10, 1), // to be added into another Alert + new Gauge(null, false, 10, 1), // to be added into Form + new Gauge(null, false, 10, 1), // some Command(s) will be added using addCommand method + new Gauge(null, false, 10, 1), // some Command(s) will be added using setDefaultCommand method + + new Gauge(null, false, 10, 1), // ItemCommandListener will be added to + }; + + g[3].setPreferredSize(5, -1); + g[4].setPreferredSize(-1, 5); + g[5].setPreferredSize(5, 5); + g[6].setLayout(Item.LAYOUT_CENTER); + new Alert("Another Alert").setIndicator(g[7]); + new Form("Another Form", new Item[]{g[8]}); + g[9].addCommand(new Command("Command", Command.OK, 0)); + g[10].setDefaultCommand(new Command("Command", Command.OK, 0)); + g[11].setItemCommandListener(new ItemCommandListener() + { + public void commandAction(Command c, Item item) + {} + }); + + for(int i=0; i != g.length; ++i) + { + try + { + new Alert("Test Alert").setIndicator(g[i]); + s = "IllegalStateException expected: index = "+i; + failed = true; + } catch(IllegalArgumentException ise) { + } + } + + if (failed) + { + fail("8. " + s); + } + return; } /** diff -r 4ad59aaee882 -r 2f468c1958d0 javauis/lcdui_qt/tsrc/src/com/nokia/openlcdui/mt/gauge/GaugeTest.java --- a/javauis/lcdui_qt/tsrc/src/com/nokia/openlcdui/mt/gauge/GaugeTest.java Fri Sep 17 08:28:21 2010 +0300 +++ b/javauis/lcdui_qt/tsrc/src/com/nokia/openlcdui/mt/gauge/GaugeTest.java Mon Oct 04 00:10:53 2010 +0300 @@ -89,12 +89,14 @@ { java.util.Vector methodNames = new java.util.Vector(); methodNames.addElement("testAccessors"); + methodNames.addElement("gaugeCurrentValuesTest"); return methodNames; } protected void runTest() throws Throwable { if(getName().equals("testAccessors")) testAccessors(); + else if(getName().equals("gaugeCurrentValuesTest")) gaugeCurrentValuesTest(); else super.runTest(); } /** @@ -204,4 +206,40 @@ //print("labeled interactive minimum width: " // + gauge4.getMinimumWidth()); } + + /** + * Tests Non-interactive INDEFINITE Gauge with different current values. + *

+ * Test passes if current values of the Gauge will not be changed. + *

+ * Test fails if current values of the Gauge will be changed. + *

+ */ + public void gaugeCurrentValuesTest() + { + Gauge gaugeObj; + int[] values = {Gauge.CONTINUOUS_IDLE, Gauge.CONTINUOUS_RUNNING, + Gauge.INCREMENTAL_IDLE, Gauge.INCREMENTAL_UPDATING}; + + for (int i=0; i != values.length; ++i) + { + gaugeObj = new Gauge("MT Gauge", false, Gauge.INDEFINITE, values[i]); + + gaugeObj.setMaxValue(Gauge.INDEFINITE); + + if (gaugeObj.getMaxValue() != Gauge.INDEFINITE) + { + String s = "Test FAILED\n Passed: Gauge.INDEFINITE ("+ + Gauge.INDEFINITE+"), got:" + gaugeObj.getMaxValue(); + fail("1. "+s); + } + + if (gaugeObj.getValue() != values[i]) + { + String s = "Test FAILED\n Current value was changed. Was: " + + values[i] + ", became: "+gaugeObj.getValue(); + fail("2. "+s); + } + } + } } diff -r 4ad59aaee882 -r 2f468c1958d0 javauis/mmapi_qt/baseline/javasrc.emc/com/nokia/microedition/media/BufferDataSource.java --- a/javauis/mmapi_qt/baseline/javasrc.emc/com/nokia/microedition/media/BufferDataSource.java Fri Sep 17 08:28:21 2010 +0300 +++ b/javauis/mmapi_qt/baseline/javasrc.emc/com/nokia/microedition/media/BufferDataSource.java Mon Oct 04 00:10:53 2010 +0300 @@ -22,6 +22,8 @@ import javax.microedition.media.protocol.DataSource; import javax.microedition.media.protocol.SourceStream; import java.io.IOException; +import javax.microedition.io.Connection; +import com.nokia.mj.impl.utils.Logger; /** * BufferDataSource is used to read header from DataSource's SourceStream. @@ -160,6 +162,12 @@ return iDataSource; } + public Connection getConnection() + { + Logger.LOG(Logger.EJavaMMAPI, Logger.EInfo,"BufferDataSource getConnection +"); + return iDataSource.getConnection(); + } + } // End of File diff -r 4ad59aaee882 -r 2f468c1958d0 javauis/mmapi_qt/baseline/javasrc.emc/com/nokia/microedition/media/ManagerImpl.java --- a/javauis/mmapi_qt/baseline/javasrc.emc/com/nokia/microedition/media/ManagerImpl.java Fri Sep 17 08:28:21 2010 +0300 +++ b/javauis/mmapi_qt/baseline/javasrc.emc/com/nokia/microedition/media/ManagerImpl.java Mon Oct 04 00:10:53 2010 +0300 @@ -515,6 +515,7 @@ throw new IllegalArgumentException("DataSource is null."); } aSource.connect(); // Ensure that external source is connected. + Logger.LOG(Logger.EJavaMMAPI, Logger.EInfo,"ManagerImpl createInternalPlayer after connect "); if (aSource.getStreams() == null || aSource.getStreams().length == 0) { @@ -536,10 +537,12 @@ InternalPlayer player = null; Enumeration plugins = iPlugIns.elements(); // Loop through all plugins, stop if player was created + Logger.LOG(Logger.EJavaMMAPI, Logger.EInfo,"ManagerImpl - createinternalplayer - plugins has"+iPlugIns.size()); while (plugins.hasMoreElements() && (player == null)) { PlugIn tmp = (PlugIn)plugins.nextElement(); + player = tmp.createPlayer(bdc); } diff -r 4ad59aaee882 -r 2f468c1958d0 javauis/mmapi_qt/baseline/javasrc.mmf/com/nokia/microedition/media/BufferDataSource.java --- a/javauis/mmapi_qt/baseline/javasrc.mmf/com/nokia/microedition/media/BufferDataSource.java Fri Sep 17 08:28:21 2010 +0300 +++ b/javauis/mmapi_qt/baseline/javasrc.mmf/com/nokia/microedition/media/BufferDataSource.java Mon Oct 04 00:10:53 2010 +0300 @@ -22,6 +22,8 @@ import javax.microedition.media.protocol.DataSource; import javax.microedition.media.protocol.SourceStream; import java.io.IOException; +import javax.microedition.io.Connection; +import com.nokia.mj.impl.utils.Logger; /** * BufferDataSource is used to read header from DataSource's SourceStream. @@ -75,7 +77,9 @@ */ public void connect() throws IOException { + Logger.LOG(Logger.EJavaMMAPI, Logger.EInfo,"BufferDataSource connect +"); iDataSource.connect(); + Logger.LOG(Logger.EJavaMMAPI, Logger.EInfo,"BufferDataSource connect -"); } /** @@ -150,6 +154,11 @@ return iDataSource.getControl(aControlType); } + public Connection getConnection() + { + return iDataSource.getConnection(); + } + } // End of File diff -r 4ad59aaee882 -r 2f468c1958d0 javauis/mmapi_qt/baseline/javasrc/com/nokia/microedition/media/ConnectorDataSource.java --- a/javauis/mmapi_qt/baseline/javasrc/com/nokia/microedition/media/ConnectorDataSource.java Fri Sep 17 08:28:21 2010 +0300 +++ b/javauis/mmapi_qt/baseline/javasrc/com/nokia/microedition/media/ConnectorDataSource.java Mon Oct 04 00:10:53 2010 +0300 @@ -32,20 +32,20 @@ */ public class ConnectorDataSource extends InputStreamDataSource { - // Connection object. - StreamConnection iConnection; - /** - * Constructor. - * @param aLocator Locator to connect. - */ + * Constructor. + * @param aLocator Locator to connect. + */ public ConnectorDataSource(Locator aLocator) throws IOException, MediaException { + super(aLocator.getLocatorString()); open(); // open iConnection + Logger.LOG(Logger.EJavaMMAPI, Logger.EInfo,"ConnectorDataSource constructor after open()"); iSourceStream = new InputStreamSourceStream( iConnection.openInputStream()); + Logger.LOG(Logger.EJavaMMAPI, Logger.EInfo,"ConnectorDataSource constructor -"); } /** @@ -63,6 +63,7 @@ // Only StreamConnection is supported iConnection = (StreamConnection)connection; + Logger.LOG(Logger.EJavaMMAPI, Logger.EInfo,"ConnectorDataSource open()"); } catch (ConnectionNotFoundException cnfe) { @@ -84,6 +85,7 @@ // or connection was not supported in checkConnection method. throw new MediaException(cce.getMessage()); } + Logger.LOG(Logger.EJavaMMAPI, Logger.EInfo,"ConnectorDataSource open() -"); } /** @@ -100,6 +102,7 @@ try { open(); + Logger.LOG(Logger.EJavaMMAPI, Logger.EInfo,"ConnectorDataSource connect() after open()"); iSourceStream.setStream(iConnection.openInputStream()); } catch (MediaException me) @@ -109,6 +112,7 @@ "failed to connect to stream, " + me.getMessage()); } } + Logger.LOG(Logger.EJavaMMAPI, Logger.EInfo,"ConnectorDataSource connect() -"); } /** @@ -157,6 +161,7 @@ { // This class does not do additional checks. } + } // End of File diff -r 4ad59aaee882 -r 2f468c1958d0 javauis/mmapi_qt/baseline/javasrc/com/nokia/microedition/media/HttpDataSource.java --- a/javauis/mmapi_qt/baseline/javasrc/com/nokia/microedition/media/HttpDataSource.java Fri Sep 17 08:28:21 2010 +0300 +++ b/javauis/mmapi_qt/baseline/javasrc/com/nokia/microedition/media/HttpDataSource.java Mon Oct 04 00:10:53 2010 +0300 @@ -23,6 +23,7 @@ import javax.microedition.io.Connection; import javax.microedition.io.HttpConnection; import javax.microedition.media.Control; +import com.nokia.mj.impl.utils.Logger; /** * This class extends ConnectorDataSource and adds http connection @@ -73,6 +74,7 @@ if (!iClosed) { connect(); + Logger.LOG(Logger.EJavaMMAPI, Logger.EInfo,"HttpDataSource seek() after open"); } if (iClosed) diff -r 4ad59aaee882 -r 2f468c1958d0 javauis/mmapi_qt/baseline/javasrc/com/nokia/microedition/media/InputStreamDataSource.java --- a/javauis/mmapi_qt/baseline/javasrc/com/nokia/microedition/media/InputStreamDataSource.java Fri Sep 17 08:28:21 2010 +0300 +++ b/javauis/mmapi_qt/baseline/javasrc/com/nokia/microedition/media/InputStreamDataSource.java Mon Oct 04 00:10:53 2010 +0300 @@ -22,19 +22,31 @@ import javax.microedition.media.protocol.DataSource; import javax.microedition.media.protocol.SourceStream; import java.io.IOException; +import javax.microedition.io.StreamConnection; +import com.nokia.mj.impl.utils.Logger; +import javax.microedition.io.Connection; + /** * DataSource which has InputStreamSourceStream. */ public class InputStreamDataSource extends DataSource { + // Connection object. + protected StreamConnection iConnection; + // DataSource's stream protected InputStreamSourceStream iSourceStream; + + // string that describes the content-type of the media that the source // is providing. protected String iContentType; + + + /** * Constructor. * @param aSourceStream SourceSteam @@ -158,6 +170,19 @@ return iSourceStream.getControl("SeekControl"); } + /** + * public method to connection object in derived classes. + * @returns aConnection object + */ + public Connection getConnection() + { + Logger.LOG(Logger.EJavaMMAPI, Logger.EInfo,"InputStreamDataSource getConnection +"); + return iConnection; + } + + + + } // End of File diff -r 4ad59aaee882 -r 2f468c1958d0 javauis/mmapi_qt/baseline/javasrc/com/nokia/microedition/media/InputStreamSeekControl.java --- a/javauis/mmapi_qt/baseline/javasrc/com/nokia/microedition/media/InputStreamSeekControl.java Fri Sep 17 08:28:21 2010 +0300 +++ b/javauis/mmapi_qt/baseline/javasrc/com/nokia/microedition/media/InputStreamSeekControl.java Mon Oct 04 00:10:53 2010 +0300 @@ -22,6 +22,7 @@ import java.io.IOException; import java.io.InputStream; +import com.nokia.mj.impl.utils.Logger; /** * Class InputStreamSeekControl used to mark and seek the inputstream @@ -64,12 +65,13 @@ */ public void seek(int aWhere) throws IOException { - + Logger.LOG(Logger.EJavaMMAPI, Logger.EInfo,"MMA::InputStreamSeekControl - seek +"); if (iInputStream.markSupported() == true) { iInputStream.reset(); } + Logger.LOG(Logger.EJavaMMAPI, Logger.EInfo,"MMA::InputStreamSeekControl - seek -"); } public void close() diff -r 4ad59aaee882 -r 2f468c1958d0 javauis/mmapi_qt/baseline/javasrc/com/nokia/microedition/media/PlayerImpl.java --- a/javauis/mmapi_qt/baseline/javasrc/com/nokia/microedition/media/PlayerImpl.java Fri Sep 17 08:28:21 2010 +0300 +++ b/javauis/mmapi_qt/baseline/javasrc/com/nokia/microedition/media/PlayerImpl.java Mon Oct 04 00:10:53 2010 +0300 @@ -234,7 +234,9 @@ try { // wait until actionCompleted( int aError ) is called + Logger.LOG(Logger.EJavaMMAPI, Logger.EInfo,"PlayerImpl.java : doPrefetch ibefore iLockObject"); iLockObject.wait(); + Logger.LOG(Logger.EJavaMMAPI, Logger.EInfo,"PlayerImpl.java : doPrefetch after iLockObject"); } catch (InterruptedException ie) { diff -r 4ad59aaee882 -r 2f468c1958d0 javauis/mmapi_qt/baseline/javasrc/com/nokia/microedition/media/SourcePlayer.java --- a/javauis/mmapi_qt/baseline/javasrc/com/nokia/microedition/media/SourcePlayer.java Fri Sep 17 08:28:21 2010 +0300 +++ b/javauis/mmapi_qt/baseline/javasrc/com/nokia/microedition/media/SourcePlayer.java Mon Oct 04 00:10:53 2010 +0300 @@ -80,6 +80,7 @@ try { iDataSource.connect(); + Logger.LOG(Logger.EJavaMMAPI, Logger.EInfo,"Sourceplayer doprefetch() after connect "); } catch (IOException ioe) { @@ -87,6 +88,7 @@ } super.doPrefetch(); + Logger.LOG(Logger.EJavaMMAPI, Logger.EInfo,"Sourceplayer doprefetch() after connect -"); } /** diff -r 4ad59aaee882 -r 2f468c1958d0 javauis/mmapi_qt/baseline/javasrc/com/nokia/microedition/media/animation/AnimationPlayer.java --- a/javauis/mmapi_qt/baseline/javasrc/com/nokia/microedition/media/animation/AnimationPlayer.java Fri Sep 17 08:28:21 2010 +0300 +++ b/javauis/mmapi_qt/baseline/javasrc/com/nokia/microedition/media/animation/AnimationPlayer.java Mon Oct 04 00:10:53 2010 +0300 @@ -43,6 +43,7 @@ import com.nokia.microedition.media.InputStreamSourceStream; import com.nokia.microedition.media.PlayerBase; import com.nokia.microedition.media.PlayerListenerImpl; +import com.nokia.mj.impl.utils.Logger; public class AnimationPlayer extends PlayerBase implements ESWTinitializeListener { @@ -118,6 +119,7 @@ */ public AnimationPlayer(DataSource ds) throws MediaException { + Logger.LOG(Logger.EJavaMMAPI, Logger.EInfo,"AnimationPlayer(DataSource ds) +"); iPlayerListenerImpl= new PlayerListenerImpl(this); //TODO check if we can do it in better way // this is temporary solution @@ -150,6 +152,7 @@ iBackgroundPixel= imageLoader.backgroundPixel; } populateControl(); + Logger.LOG(Logger.EJavaMMAPI, Logger.EInfo,"AnimationPlayer(DataSource ds) -"); } diff -r 4ad59aaee882 -r 2f468c1958d0 javauis/mmapi_qt/baseline/javasrc/com/nokia/microedition/media/animation/AnimationPlayerFactory.java --- a/javauis/mmapi_qt/baseline/javasrc/com/nokia/microedition/media/animation/AnimationPlayerFactory.java Fri Sep 17 08:28:21 2010 +0300 +++ b/javauis/mmapi_qt/baseline/javasrc/com/nokia/microedition/media/animation/AnimationPlayerFactory.java Mon Oct 04 00:10:53 2010 +0300 @@ -20,6 +20,8 @@ package com.nokia.microedition.media.animation; import java.io.IOException; +import javax.microedition.io.Connection; +import javax.microedition.io.HttpConnection; import javax.microedition.media.MediaException; import javax.microedition.media.protocol.DataSource; @@ -46,6 +48,7 @@ private static final String ANIMATION_HTTP_PROTOCOL = "http"; private static final String ANIMATION_HTTPS_PROTOCOL = "https"; private static final String ANIMATION_FILE_PROTOCOL = "file"; + private static final String CONTENT_TYPE_HEADER = "Content-Type"; /** * From PlugIn @@ -71,15 +74,26 @@ } //Since it was not possible to identify the player from content type, identify it from it's header else { - // We need only 6 bytes to identify whether it's GIF image data or not. - // But the problem here is that if we will read even a single byte from stream - // that stream won't be useful for loading the image data through ImageLoader class - // So better solution is to let the ImageLoader.load(InputStream ) get called - // if it successfully load the image, then it means that stream is intended for this player only - // otherwise it will throw the SWTException, catch it and return properly + // This case is for locator for "http://" protocol + // get the httpconnection object, and get the content-type header + // if the content-type header matches to "image/gif" then invoke animation player. try { - player = new AnimationPlayer(aDataSource); + Connection con = aDataSource.getConnection(); + HttpConnection httpcon = (HttpConnection) con; + + if (con != null) + { + String type = httpcon.getHeaderField(CONTENT_TYPE_HEADER); + if (type != null) + { + if (type.equalsIgnoreCase(ANIMATION_CONTENT_TYPE)) + { + Logger.LOG(Logger.EJavaMMAPI, Logger.EInfo,"AnimationPlayerplayerfactory::createPlayer() content type is mage/gif"); + player = new AnimationPlayer(aDataSource); + } + } + } } catch (SWTException e) { diff -r 4ad59aaee882 -r 2f468c1958d0 javauis/mmapi_qt/baseline/javasrc/com/nokia/microedition/media/protocol/SeekThread.java --- a/javauis/mmapi_qt/baseline/javasrc/com/nokia/microedition/media/protocol/SeekThread.java Fri Sep 17 08:28:21 2010 +0300 +++ b/javauis/mmapi_qt/baseline/javasrc/com/nokia/microedition/media/protocol/SeekThread.java Mon Oct 04 00:10:53 2010 +0300 @@ -48,9 +48,13 @@ */ public void run() { + Logger.ELOG(Logger.EJavaMMAPI, + "MMA::seekThread run +"); try { iSeekControl.seek(0); + Logger.ELOG(Logger.EJavaMMAPI, + "MMA::seekThread run after iSeekControl.seek"); } catch (Exception e) { @@ -63,7 +67,11 @@ // notify that seek is ready synchronized (iWaitObject) { + Logger.ELOG(Logger.EJavaMMAPI, + "MMA::seekThread run before iWaitObject.notify()"); iWaitObject.notify(); + Logger.ELOG(Logger.EJavaMMAPI, + "MMA::seekThread run -"); } } } diff -r 4ad59aaee882 -r 2f468c1958d0 javauis/mmapi_qt/baseline/javasrc/com/nokia/microedition/media/protocol/SourceStreamReader.java --- a/javauis/mmapi_qt/baseline/javasrc/com/nokia/microedition/media/protocol/SourceStreamReader.java Fri Sep 17 08:28:21 2010 +0300 +++ b/javauis/mmapi_qt/baseline/javasrc/com/nokia/microedition/media/protocol/SourceStreamReader.java Mon Oct 04 00:10:53 2010 +0300 @@ -236,12 +236,37 @@ { // start new seak thread, thread will notify iWaitObject // when completed - (new SeekThread(iWaitObject, - (SeekControl)control)).start(); + // seek thread will open a new connection in case of http, + // and notify here so that read thread is started + + try + { + synchronized (iWaitObject) + { + Logger.LOG(Logger.EJavaMMAPI, Logger.EInfo,"SourceStreamReader:: read() before creating seekthread thread id = "+Thread.currentThread().getName()); + (new SeekThread(iWaitObject, + (SeekControl)control)).start(); + Logger.LOG(Logger.EJavaMMAPI, Logger.EInfo,"SourceStreamReader::read() - after seekthread before wait"); + + iWaitObject.wait(); + Logger.LOG(Logger.EJavaMMAPI, Logger.EInfo,"SourceStreamReader::read() - after seekthread after wait"); + } + } + catch (InterruptedException ex) + { + Logger.LOG(Logger.EJavaMMAPI, Logger.EInfo,"SourceStreamReader::read() - InterruptedException exception"); + } + + t1 = new Thread(this); + t1.start(); + + + } else { // stream is not seekable, so informing native object + Logger.LOG(Logger.EJavaMMAPI, Logger.EInfo,"SourceStreamReader:: read() before _write "); _write(iHandle, iEventSourceHandle, new byte[ 0 ], 0, ERR_EOF, iPlayerHandle); } diff -r 4ad59aaee882 -r 2f468c1958d0 javauis/mmapi_qt/baseline/javasrc/javax/microedition/media/protocol/DataSource.java --- a/javauis/mmapi_qt/baseline/javasrc/javax/microedition/media/protocol/DataSource.java Fri Sep 17 08:28:21 2010 +0300 +++ b/javauis/mmapi_qt/baseline/javasrc/javax/microedition/media/protocol/DataSource.java Mon Oct 04 00:10:53 2010 +0300 @@ -20,6 +20,7 @@ import javax.microedition.media.Controllable; import java.io.IOException; +import javax.microedition.io.Connection; abstract public class DataSource implements Controllable { @@ -42,6 +43,8 @@ public abstract SourceStream[] getStreams(); + public abstract Connection getConnection(); + public String getLocator() { return iSourceLocator; diff -r 4ad59aaee882 -r 2f468c1958d0 javauis/mmapi_qt/baseline/src.nga/cmmasurfacewindow.cpp --- a/javauis/mmapi_qt/baseline/src.nga/cmmasurfacewindow.cpp Fri Sep 17 08:28:21 2010 +0300 +++ b/javauis/mmapi_qt/baseline/src.nga/cmmasurfacewindow.cpp Mon Oct 04 00:10:53 2010 +0300 @@ -184,7 +184,6 @@ aRect.iBr.iX, aRect.iBr.iY); iContentRect = aRect; - LOG1(EJavaMMAPI,EInfo,"CMMASurfaceWindow::SetDrawRect aRect %d",iContentRect); if (iDisplay) { // iDisplay->UIGetCallback( *this, diff -r 4ad59aaee882 -r 2f468c1958d0 javauis/mmapi_qt/baseline/src/cmmaaudioplayer.cpp --- a/javauis/mmapi_qt/baseline/src/cmmaaudioplayer.cpp Fri Sep 17 08:28:21 2010 +0300 +++ b/javauis/mmapi_qt/baseline/src/cmmaaudioplayer.cpp Mon Oct 04 00:10:53 2010 +0300 @@ -221,6 +221,7 @@ iSourceStreams[ 0 ]->ReadAllL(); } // CMMASourceStream will notify with ReadCompleted + LOG(EJavaMMAPI, EInfo, "CMMAAudioPlayer::PrefetchL -"); } const TDesC& CMMAAudioPlayer::Type() diff -r 4ad59aaee882 -r 2f468c1958d0 javauis/mmapi_qt/baseline/src/cmmavideocontrol.cpp --- a/javauis/mmapi_qt/baseline/src/cmmavideocontrol.cpp Fri Sep 17 08:28:21 2010 +0300 +++ b/javauis/mmapi_qt/baseline/src/cmmavideocontrol.cpp Mon Oct 04 00:10:53 2010 +0300 @@ -332,7 +332,7 @@ case com_nokia_microedition_media_control_VideoControl_SET_DISPLAY_SIZE: { TSize displaySize(aPropertyA, aPropertyB); - LOG1(EJavaMMAPI, EInfo, "CMMAVideoControl::statepropertyl %d",displaySize); + LOG2(EJavaMMAPI, EInfo, "CMMAVideoControl::statepropertyl %d,%d",displaySize.iWidth,displaySize.iHeight); display->SetDisplaySizeL(displaySize); LOG(EJavaMMAPI, EInfo, "CMMAVideoControl::SetDisplayProperty:: setDisplaySizeL Completed"); // inform java side diff -r 4ad59aaee882 -r 2f468c1958d0 javauis/nokiauiapi_qt/.classpath --- a/javauis/nokiauiapi_qt/.classpath Fri Sep 17 08:28:21 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,8 +0,0 @@ - - - - - - - - diff -r 4ad59aaee882 -r 2f468c1958d0 javauis/nokiauiapi_qt/.project --- a/javauis/nokiauiapi_qt/.project Fri Sep 17 08:28:21 2010 +0300 +++ b/javauis/nokiauiapi_qt/.project Mon Oct 04 00:10:53 2010 +0300 @@ -6,12 +6,15 @@ - org.eclipse.jdt.core.javabuilder + com.nokia.carbide.cdt.builder.carbideCPPBuilder - org.eclipse.jdt.core.javanature + org.eclipse.cdt.core.cnature + org.eclipse.cdt.core.ccnature + com.nokia.carbide.cdt.builder.carbideCPPBuilderNature + com.nokia.carbide.cdt.builder.carbideSBSv2BuilderNature diff -r 4ad59aaee882 -r 2f468c1958d0 javauis/nokiauiapi_qt/build/build.pro --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javauis/nokiauiapi_qt/build/build.pro Mon Oct 04 00:10:53 2010 +0300 @@ -0,0 +1,19 @@ +# +# 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: Generated file - do not edit manually +# +TEMPLATE = subdirs +SUBDIRS += nokiauiapiqt/javanokiaui.pro +SUBDIRS += softindicatorplugin/javasoftindicatorplugin.pro +BLD_INF_RULES.prj_extensions += "prj_extensions" diff -r 4ad59aaee882 -r 2f468c1958d0 javauis/nokiauiapi_qt/build/build.xml --- a/javauis/nokiauiapi_qt/build/build.xml Fri Sep 17 08:28:21 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,42 +0,0 @@ - - - - - - Builds Nokiauiapi - - - - - - - - - - - - - - - - - - diff -r 4ad59aaee882 -r 2f468c1958d0 javauis/nokiauiapi_qt/build/bwins/javanokiauiu.def --- a/javauis/nokiauiapi_qt/build/bwins/javanokiauiu.def Fri Sep 17 08:28:21 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,3 +0,0 @@ -EXPORTS - ?jni_lookup@@YAP6AXXZPBD@Z @ 1 NONAME ; void (*)(void) jni_lookup(char const *) - diff -r 4ad59aaee882 -r 2f468c1958d0 javauis/nokiauiapi_qt/build/eabi/javanokiauiu.def --- a/javauis/nokiauiapi_qt/build/eabi/javanokiauiu.def Fri Sep 17 08:28:21 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,3 +0,0 @@ -EXPORTS - _Z10jni_lookupPKc @ 1 NONAME - diff -r 4ad59aaee882 -r 2f468c1958d0 javauis/nokiauiapi_qt/build/javanokiaui.pro --- a/javauis/nokiauiapi_qt/build/javanokiaui.pro Fri Sep 17 08:28:21 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,44 +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 the License "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: -# - -TEMPLATE=lib -TARGET=javanokiaui -CONFIG += omj java - - -QT += core - - -symbian { - - - include(../library/nokiauiapi.pri) - - LIBS += -lcone - LIBS += -ltouchfeedback - - -} - -include(../../../build/omj.pri) - - - - - - - - diff -r 4ad59aaee882 -r 2f468c1958d0 javauis/nokiauiapi_qt/build/nokiauiapiqt/build.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javauis/nokiauiapi_qt/build/nokiauiapiqt/build.xml Mon Oct 04 00:10:53 2010 +0300 @@ -0,0 +1,44 @@ + + + + + + Builds Nokiauiapi + + + + + + + + + + + + + + + + + diff -r 4ad59aaee882 -r 2f468c1958d0 javauis/nokiauiapi_qt/build/nokiauiapiqt/bwins/javanokiauiu.def --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javauis/nokiauiapi_qt/build/nokiauiapiqt/bwins/javanokiauiu.def Mon Oct 04 00:10:53 2010 +0300 @@ -0,0 +1,3 @@ +EXPORTS + ?jni_lookup@@YAP6AXXZPBD@Z @ 1 NONAME ; void (*)(void) jni_lookup(char const *) + diff -r 4ad59aaee882 -r 2f468c1958d0 javauis/nokiauiapi_qt/build/nokiauiapiqt/eabi/javanokiauiu.def --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javauis/nokiauiapi_qt/build/nokiauiapiqt/eabi/javanokiauiu.def Mon Oct 04 00:10:53 2010 +0300 @@ -0,0 +1,3 @@ +EXPORTS + _Z10jni_lookupPKc @ 1 NONAME + diff -r 4ad59aaee882 -r 2f468c1958d0 javauis/nokiauiapi_qt/build/nokiauiapiqt/javanokiaui.pro --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javauis/nokiauiapi_qt/build/nokiauiapiqt/javanokiaui.pro Mon Oct 04 00:10:53 2010 +0300 @@ -0,0 +1,41 @@ +# +# 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 the License "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: +# + +TEMPLATE=lib +TARGET=javanokiaui +CONFIG += omj java + +QT += core + +symbian { + + CONFIG +=hb + + INCLUDEPATH += ../../inc ../../../../inc + + HEADERS += ../../inc/CSoftNotification.h ../../inc/autorelease.h + SOURCES += ../../src/os.cpp ../../src/CSoftNotification.cpp + + LIBS += -lcone + LIBS += -ltouchfeedback + LIBS += -lHbCore + LIBS += -lbafl + LIBS += -lws32 + LIBS += -lapparc + LIBS += -lapgrfx +} + +include(../../../../build/omj.pri) diff -r 4ad59aaee882 -r 2f468c1958d0 javauis/nokiauiapi_qt/build/softindicatorplugin/javasoftindicatorplugin.pro --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javauis/nokiauiapi_qt/build/softindicatorplugin/javasoftindicatorplugin.pro Mon Oct 04 00:10:53 2010 +0300 @@ -0,0 +1,54 @@ +# +# 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 the License "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: +# + +TEMPLATE=lib +TARGET=javasoftindicatorplugin +CONFIG += plugin +QT += core +symbian : plugin { + + CONFIG +=hb + + INCLUDEPATH += ../../softindicatorplugin/inc ../../../../inc + + HEADERS += ../../softindicatorplugin/inc/javasoftindicator.h ../../softindicatorplugin/inc/javasoftindicatorplugin.h + SOURCES += ../../softindicatorplugin/src/javasoftindicator.cpp ../../softindicatorplugin/src/javasoftindicatorplugin.cpp + + TARGET.EPOCALLOWDLLDATA = 1 + TARGET.CAPABILITY = ALL -TCB + + PLUGIN_STUB_PATH = /resource/plugins/indicators + pluginstub.sources = $${TARGET}.dll + pluginstub.path = $$PLUGIN_STUB_PATH + + DEPLOYMENT += pluginstub + + qtplugins.path = $$PLUGIN_STUB_PATH + qtplugins.sources += qmakepluginstubs/$${TARGET}.qtplugin + + for(qtplugin, qtplugins.sources):BLD_INF_RULES.prj_exports += "./$$qtplugin z:$$qtplugins.path/$$basename(qtplugin)" + + LIBS += -lHbCore + LIBS += -lxqservice + LIBS += -lws32 + LIBS += -lapparc + LIBS += -lapgrfx + LIBS += -lefsrv + + + include(../../../../build/symbian_uids.pri) +} + diff -r 4ad59aaee882 -r 2f468c1958d0 javauis/nokiauiapi_qt/build/subsystem.mk --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javauis/nokiauiapi_qt/build/subsystem.mk Mon Oct 04 00:10:53 2010 +0300 @@ -0,0 +1,23 @@ +# +# Copyright (c) 2010 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: +# + +include $(JAVA_SRC_ROOT)/build/Makefile.defs + +COMPONENTS = \ + nokiauiapiqt \ + softindicatorplugin + +include ${JAVA_SRC_ROOT}/build/Makefile.subsystem diff -r 4ad59aaee882 -r 2f468c1958d0 javauis/nokiauiapi_qt/inc/CSoftNotification.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javauis/nokiauiapi_qt/inc/CSoftNotification.h Mon Oct 04 00:10:53 2010 +0300 @@ -0,0 +1,128 @@ +/******************************************************************************* + * Copyright (c) 2009, 2010 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 + *******************************************************************************/ + +#ifndef CSOFTNOTIFICATION_H +#define CSOFTNOTIFICATION_H + +#include +#include +#include + +NONSHARABLE_CLASS(CSoftNotification) : public CBase, + MHbIndicatorSymbianObserver + { +public: + + /** + * Static constructor + */ + static CSoftNotification* NewL(TInt aAppId, TInt aNotificationId); + + /** + * Destructor. + */ + virtual ~CSoftNotification(); + +public: + // From MHbIndicatorSymbianObserver + + /** + * Dynamic soft notification was activated by user. + */ + void IndicatorUserActivated(const TDesC &aType, + CHbSymbianVariantMap &aData); + +public: + // New functions + + /** + * Add a custom soft notification. + */ + bool ShowSoftNotificationL(); + + /** + * Cancels custom soft notification. + */ + void RemoveSoftNotificationL(); + + /** + * Set a text for a soft notification. + * + * @param aSingularText singular text for soft notification + * @param aPluralText plural text for soft notification + */ + void SetTextL(const TDesC& aPrimaryText, const TDesC& aSecondaryText); + + /** + * Set an image path for a soft notification. + * + * @param aImagePath image path for soft notification + */ + void SetImagePathL(const TDesC& aImagePath); + + /** + * Returns the notification id. + * + * @return notification id + */ + TInt Id(); + + /** + * Set Java peer observer instance for event callbacks. + * Note: the observer has to be a global weak reference. + * + * @param aPeer Java peer observer + * @param aMethodId Callback method identifier. + * @param aJniEnv JNI environment + */ + void SetPeerObserver(jobject aPeer, jmethodID aMethodId, JNIEnv* aJniEnv); + +private: + // Constructors + /** + * C++ constructor. + * + * @param aAppId View activation application id. + * @param aNotificationId Notification id. + */ + CSoftNotification(TInt aAppId, TInt aNotificationId); + + /** + * 2nd phase constructor. + */ + void ConstructL(); + +private: + // New methods + + /** + * Set assigned member data to custom notification parameters + * + * @param aParam custom soft notification params to fill + */ + CHbSymbianVariant* NotificationParamsL(); + +private: + // Data + + CHbIndicatorSymbian* iIndicator; + TUid iMidletId; + TInt iNotificationId; + HBufC* iPrimaryText; + HBufC* iSecondaryText; + HBufC* iImagePath; + jobject iPeer; + jmethodID iMethodId; + JNIEnv* iJniEnv; + }; + +#endif // CSOFTNOTIFICATION_H + diff -r 4ad59aaee882 -r 2f468c1958d0 javauis/nokiauiapi_qt/inc/autorelease.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javauis/nokiauiapi_qt/inc/autorelease.h Mon Oct 04 00:10:53 2010 +0300 @@ -0,0 +1,36 @@ +/******************************************************************************* + * 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 + *******************************************************************************/ + +#ifndef NOKIAUIAUTORELEASE_H +#define NOKIAUIAUTORELEASE_H + +/** + * Helper class to automatically call ReleaseStringChars for a Java + * string chars object obtained from a call to GetStringChars. + */ +class AutoReleaseStringChars +{ +public: + AutoReleaseStringChars( JNIEnv* aJniEnv, jstring aString, const jchar* aPointer ) + : mJniEnv( aJniEnv ), mString( aString ), mPointer( aPointer ) + {} + virtual ~AutoReleaseStringChars() + { + mJniEnv->ReleaseStringChars( mString, mPointer ); + } +protected: + JNIEnv* mJniEnv; + jstring mString; + const jchar* mPointer; +}; + +#endif // NOKIAUIAUTORELEASE_H + diff -r 4ad59aaee882 -r 2f468c1958d0 javauis/nokiauiapi_qt/javasrc/.classpath --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javauis/nokiauiapi_qt/javasrc/.classpath Mon Oct 04 00:10:53 2010 +0300 @@ -0,0 +1,8 @@ + + + + + + + + diff -r 4ad59aaee882 -r 2f468c1958d0 javauis/nokiauiapi_qt/javasrc/.project --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javauis/nokiauiapi_qt/javasrc/.project Mon Oct 04 00:10:53 2010 +0300 @@ -0,0 +1,26 @@ + + + nokiauiapiqt + + + + + + org.eclipse.jdt.core.javabuilder + + + + + + org.eclipse.jdt.core.javanature + org.eclipse.pde.PluginNature + org.eclipse.team.cvs.core.cvsnature + + + + javasrc_j2me + 2 + R:/sf/app/java/javauis/nokiauiapi_qt/javasrc_j2me + + + diff -r 4ad59aaee882 -r 2f468c1958d0 javauis/nokiauiapi_qt/javasrc/com/nokia/mid/ui/DeviceControl.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javauis/nokiauiapi_qt/javasrc/com/nokia/mid/ui/DeviceControl.java Mon Oct 04 00:10:53 2010 +0300 @@ -0,0 +1,338 @@ +/* +* Copyright (c) 2006-2007 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: Provides methods for controlling vibrator and screen backlight. +* +*/ + + +package com.nokia.mid.ui; + +import org.eclipse.swt.internal.qt.OS; +import org.eclipse.swt.widgets.Internal_PackageSupport; +import org.eclipse.swt.internal.extension.DisplayExtension; + +/** + *

+ * DeviceControl provides a collection of methods to control some of the special + * features available in mobile devices, e.g., vibrator, screen (LCD) + * backlight, and screen saver appearance. + *

+ * This class is thread safe. + * @version 1.0 + * @since 1.0 + */ + +public class DeviceControl +{ + // error string for negative duration + private static final String ERR_NEGATIVE_DURATION_STRING = + "Negative duration"; + private static int inactivityTime; + private static int vibraDuration; + private static boolean vibraSupported; + + /** + * Private constructor. This class can't be instantiated. + */ + private DeviceControl() + { + } + /** + * Function return the time since the last user activity in seconds. + * @since 1.4 + */ + public static int getUserInactivityTime() + { + synchronized (DeviceControl.class) + { + if (DisplayExtension.getDisplayInstance() != null) + { + Internal_PackageSupport.getDisplayInstance().syncExec(new Runnable() + { + public void run() + { + inactivityTime = OS.MobileDevice_getUserInactivityTime( + Internal_PackageSupport.initializeMobileDevice( + Internal_PackageSupport.getDisplayInstance())); + } + }); + } + } + return inactivityTime; + } + /** + * Function reset user inactivity time. Thus, if the screen saver should be + * wholly disabled, it is needed to call the function repeatedly for example in a + * separate thread. The delay between two calls should be smaller than + * the time-out of the screensaver (the time-out may be for example 15 seconds + * or more depending on the used device). + * @since 1.4 + */ + public static void resetUserInactivityTime() + { + synchronized (DeviceControl.class) + { + if (DisplayExtension.getDisplayInstance() != null) + { + Internal_PackageSupport.getDisplayInstance().syncExec(new Runnable() + { + public void run() + { + OS.MobileDevice_resetUserInactivityTime( + Internal_PackageSupport.initializeMobileDevice( + Internal_PackageSupport.getDisplayInstance())); + } + }); + } + } + } + + /** + * Activates and deactivates lights on the device; the function + * can also be used for preventing screen saver appearance. Parameter + * num indicates the number of the device light to control. + * Currently only one num parameter is specified: + * num value 0 is used for controlling the screen backlight. + * Parameter level is a value between 0-100 + * indicating the light brightness. In many implementations + * there in only two levels: lights on and off. Value 0 indicates + * a setting for lights off (monochrome displays) or other + * minimum brightness setting (color displays), all other level + * values (1-100) are used for setting the lights on, possibly + * with different brightness levels depending on the value. A more + * higher level value always results either the same brightness setting + * as a lower one, or a more brighter setting. For many products + * passing values 1-100 will just turn the lights on. + *

+ * Note: Since in some devices key presses may turn on some device lights, + * the light settings may be changed also by the system. + *

+ * This function may also be used to prevent screen saver appearance + * (supported in S60 devices starting from S60 3rd Ed FP1, + * except for some early FP1 devices). Calling this function once + * will delay the screen saver appearance but does not disable it permanently. + * Thus, if the screen saver should be wholly disabled, + * it is needed to call the function repeatedly for example in a + * separate thread. The delay between two calls should be smaller than + * the time-out of the screensaver (the time-out may be for example 15 seconds + * or more depending on the used device). + * + * @param num is the number or id for light, 0 is used for display + * backlight, other numbers are currently left unspecified + * @param level the lighting level 0-100. 0 means "off" or other + * minimum lighting setting. For many devices greater + * than 0 value just means "light on". + * @throws java.lang.IllegalArgumentException if light num is not + * supported or level is not between 0-100. + * @since 1.0 + */ + public static void setLights(int aNum, int aLevel) + { + synchronized (DeviceControl.class) + { + if (aNum != 0) + { + throw new IllegalArgumentException("Light num is not supported"); + } + if (aLevel < 0 || aLevel > 100) + { + throw(new IllegalArgumentException("Level not between 0 and 100")); + } + final int level = aLevel; + + if (DisplayExtension.getDisplayInstance() != null) + { + Internal_PackageSupport.getDisplayInstance().syncExec(new Runnable() + { + public void run() + { + OS.MobileDevice_setLight(Internal_PackageSupport.initializeMobileDevice( + Internal_PackageSupport.getDisplayInstance()), level); + } + }); + } + } + } + + /** + * Does flashing lights effect for specific duration. + * This is a generic method for doing implementation specific light + * flashing effect. This could be used as feedback e.g. in games. + * If the device is not capable of doing the effect the method call + * silently returns. In most devices there is at least screen backlight + * and different LEDs that could be used for the effect. There might + * be maximum limit in implementation for the duration: implementation + * stops automatically the effect after maximum duration is reached. + * When the flashing lights effect ends the implementation sets the + * lights back to the light state the device was before the + * method call. + * + * @param duration duration in milliseconds the effect should be + * active + * @throws java.lang.IllegalArgumentException if duration < 0 + * @since 1.0 + */ + public static void flashLights(long aDuration) + { + synchronized (DeviceControl.class) + { + if (aDuration < 0) + { + throw new IllegalArgumentException(ERR_NEGATIVE_DURATION_STRING); + } + + final int duration; + if (aDuration > java.lang.Integer.MAX_VALUE) + { + duration = java.lang.Integer.MAX_VALUE; + } + else + { + duration =(int)aDuration; + } + if (DisplayExtension.getDisplayInstance() != null) + { + Internal_PackageSupport.getDisplayInstance().syncExec(new Runnable() + { + public void run() + { + System.out.println("Java Nokia UI API flashLights duration = "+duration); + OS.MobileDevice_flashLights( + Internal_PackageSupport.initializeMobileDevice( + Internal_PackageSupport.getDisplayInstance()),duration); + System.out.println("Java Nokia UI API End flashLights "); + } + }); + } + } + + } + + /** + * Activates the vibra device with given duration and frequency. + * Device vibra feedback can be used, for example, as tactile feedback + * effect e.g. in games. The frequency of the vibra device + * can be controlled with freq parameter. The frequency is a logical + * number between 0 to 100, value 100 being the maximum frequency, + * value 0 always means no vibra, value 1 always needs to give some + * effect. If a device doesn't support different frequencies then + * the just frequency allowed by device is used. + *

+ * Parameter duration is used to indicate duration of vibra + * in milliseconds. Method won't block for the vibra operation. + * There is some maximum limit in implementation for the + * duration. Duration values that exceed this limit result a + * maximum vibration effect. + *

+ * If the method is called during a previous vibra operation activated + * from this method, the previous vibra operation is stopped and the new + * vibra device is activated with the new given parameters. + *

+ * IllegalStateException will be thrown if the freq is not 0 and + * if device doesn't allow vibra to be used, for example, + * it is common that when the device is being charged in desk stand or + * there is incoming call that vibra operation is not allowed. + * IllegalStateException will be thrown if there + * is no vibra capability in the device. + *

+ * Note that if the frequency is 0, and the device doesn't have vibra + * capability IllegalStateException is thrown. This means that method + * call DeviceControl.doVibra(0,0); can be used to detect + * whether vibra is supported (IllegalStateException not thrown) + * or not (IllegalStateException thrown) without any vibra operation + * being done even if it is supported. + * @param freq the frequency of the vibra device. Value 0 can be used + * for detection whether there is vibra device or not. 100 means + * maximum frequency value of specific system. Value 1 must always + * result a minimum non-zero vibra operation. + * @param duration in milliseconds the duration the vibra device is + * active + * @throws java.lang.IllegalStateException For freq values 1-100: + * the use of vibra device isn't allowed or the system doesn't have + * vibra device. For frequency value 0: the device doesn't have vibra + * device. + * @throws java.lang.IllegalArgumentException if duration or freq is + * < 0, or freq is > 100. + * @since 1.0 + */ + public static void startVibra(int aFreq, long aDuration) + { + synchronized (DeviceControl.class) + { + if ((aFreq < 0) || (aFreq > 100) || (aDuration < 0)) + { + throw new java.lang.IllegalArgumentException(); + + } + vibraDuration = (int)aDuration; + if (aDuration > java.lang.Integer.MAX_VALUE) + { + vibraDuration = java.lang.Integer.MAX_VALUE; + } + if (aFreq == 0) + { + // frequency 0 disables vibration + vibraDuration = 0; + } + if (DisplayExtension.getDisplayInstance() != null) + { + Internal_PackageSupport.getDisplayInstance().syncExec(new Runnable() + { + public void run() + { + System.out.println("Java Nokia UI API start vibra with duration = "+vibraDuration); + vibraSupported = OS.MobileDevice_vibration( + Internal_PackageSupport.initializeMobileDevice( + Internal_PackageSupport.getDisplayInstance()),vibraDuration); + System.out.println("Java Nokia UI API End vibra "); + } + }); + } + if (!vibraSupported) + { + throw new java.lang.IllegalStateException(); + } + } + } + + /** + * Stops the vibra device. This method is for manually stopping vibra + * operation activated with + * {@link DeviceControl#startVibra(int freq, long duration)} + * method. + * If the vibra device is not active the method silently returns. + * @since 1.0 + */ + public static void stopVibra() + { + synchronized (DeviceControl.class) + { + if (DisplayExtension.getDisplayInstance() != null) + { + Internal_PackageSupport.getDisplayInstance().syncExec(new Runnable() + { + public void run() + { + vibraSupported = OS.MobileDevice_vibration( + Internal_PackageSupport.initializeMobileDevice( + Internal_PackageSupport.getDisplayInstance()),0); + } + }); + } + } + } + +} + + diff -r 4ad59aaee882 -r 2f468c1958d0 javauis/nokiauiapi_qt/javasrc/com/nokia/mid/ui/SoftNotification.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javauis/nokiauiapi_qt/javasrc/com/nokia/mid/ui/SoftNotification.java Mon Oct 04 00:10:53 2010 +0300 @@ -0,0 +1,339 @@ +/* +* 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; + + +/** + *

The SoftNotification is a class to manage soft + * notifications. Soft notifications are reminders that inform the user of events + * that have occurred in the user's absence, or while the user was busy with some + * application. Text, and also graphics, can be used to communicate the message + * to the user. Soft notifications are displayed as pop-ups in device home screen + * (idle view). + * Soft notifications are persistent and restarting the device does not delete + * created soft notifications from the home screen.

+ * + *

The user can respond to the soft notification by using the softkeys. The + * softkey 1 is used for activating a function, for example opening a message + * that has arrived. Application that created the soft notification will be activated + * when the soft notification is accepted by the user. The softkey 2 is used to + * discard the notification without taking any further action.

+ * + *

The application that launched a soft notification can control it and also + * discard it. It is possible to use the Applications key during a soft + * notification; in that case, the soft notification disappears, but reappears + * when the user returns to the device home screen, unless the application + * responsible for the notification has discarded it.

+ * + *

Grouping soft notifications

+ * + *

Soft notifications can be displayed for the user in two different appearances: + *

  • Ungrouped soft notification (left figure): These notifications + * contain one piece of information each. In ungrouped soft notification there can + * be one or two lines of text and an image visible. + * Ungrouped appearance is used when there's + * only one active soft notification or the topmost soft notification does not + * support grouping. + *
  • Grouped soft notification (right figure): If there are several + * soft notifications on the screen and they support grouping, the notifications + * are grouped and shown as a list of notifications. + * Only one line of text is shown per a notification and there are no images visible. + * The user can pick up one notification at a time and react + * to it. If user discards the notification group, then all the shown notifications + * are discarded and are not to be shown again.

    + * + *

    Image of ungrouped soft notification. + * Image of grouped soft notification.

    + * + *

    Soft notifications created through this API may be grouped with other + * platform notifications if all of them supports grouping. A soft notification + * supports grouping if groupText is given in + * {@link #setText(String text, String groupText)}

    + * + *

    Persistent notifications

    + *

    Soft notifications are persistent meaning that when an application + * has created a notification and set it to the home screen, the notification + * exists in the home screen until: + *

  • User accepts the notification, + *
  • User dismisses the notification, or + *
  • Application removes the notification

    + * + *

    A soft notification stays on the device home screen even if the application + * is closed or the device is restarted.

    + * + *

    Accepting (selecting) a soft notification created by an application causes + * this application to be activated in the following ways: + *

  • If the application was running on the background, it will be set to + * the foreground. + *
  • If the application was running and had registered a listener + * for the notification, + * {@link SoftNotificationListener#notificationSelected(SoftNotification)} + * is called. + *
  • If the application is not running, it will be started and set to the + * foreground.

    + * + *

    Notice that accepting a notification belonging to a closed application + * causes only the application to be started but does not + * generate any listener events for the application. This is because there cannot + * be any listeners registered by the closed application. + * Thus, when an application is started by a notification, the application has + * to decide which view is shown for the user without having the information about + * the selected notification.

    + * + *

    Dismissing a soft notification does not bring the application to + * the foreground or start the application neither. However, if a + * listener has been set, + * {@link SoftNotificationListener#notificationDismissed(SoftNotification)} + * is called.

    + * + *

    Because soft notifications are persistent, they will remain on the home screen + * even if the application is closed. It is possible to get access to these + * notifications later when the application is restarted. + * For accessing notifications later, the application has to store the IDs of + * the notifications to a permanent memory (for example, RecordStore). + * When the application is + * restarted, the application may recreate those notifications by using the + * stored IDs.

    + * + *

    Notice that since it is possible that the user has dismissed notifications + * when the application was closed, it is not possible to know whether the + * recreated notification still exist on the device home screen. + * In many cases it may be worthile to first remove all those notifications + * from the screen and then add only the needed ones back to the screen.

    + * + * + *

    Example of usage

    + * + * + *class SoftNoteExample implements SoftNotificationListener + * { + * private SoftNotification iSoftNotification; + * + * public SoftNoteExample() + * { + * iSoftNotification = SoftNotification.newInstance(); + * iSoftNotification.setListener( this ); + * } + * + * public void Show1NewMail() throws SoftNotificationException + * { + * // Read image e.g. from the MIDlet JAR package or filesystem + * byte[] image = readImage( "mail.png" ); + * + * // Supports grouping since groupText is given here. + * iSoftNotification.setText( "You have 1 new mail", "1 new mail" ); + * iSoftNotification.setSoftkeyLabels( "Show", "Exit" ); + * iSoftNotification.setImage( image ); + * iSoftNotification.post(); + * } + * + * public void notificationSelected(SoftNotification notification) + * { + * // called when user selects the soft notification + * } + * + * public void notificationDismissed(SoftNotification notification) + * { + * // called when user dismisses the soft notification + * } + * + * private byte[] readImage( String aImageName ) + * { + * // Read image e.g. from the MIDlet JAR package or filesystem. + * byte[] imageData = ... + * //... + * return imageData; + * } + * } + */ +public abstract class SoftNotification +{ + + /** + * Hidden default constructor. + * + * @see #newInstance() + * @see #newInstance(int notificationId) + */ + protected SoftNotification() + { + } + + /** + * Returns a new instance of SoftNotification class with a reference to + * previous soft notification instance. + * + *

    Identification is used to access a soft notification created by another + * instance of SoftNotification. If the provided identification is valid and + * such soft notification exists, it can be updated and removed through + * this instance. If the identification is not valid or does not exist, + * it will be ignored and a new soft notification is created as defined in + * {@link #newInstance()}.

    + * + * @param notificationId Identification of previous soft notification. + * @return An instance of SoftNotification class. + * @see #getId() + */ + public static SoftNotification newInstance(int notificationId) + { + return new SoftNotificationImpl(notificationId); + } + + /** + *

    Returns a new instance of SoftNotification class. This instance's + * identification will be a nonvalid negative value until + * {@link #post()} is called.

    + * + * @return an instance of SoftNotification class. + */ + public static SoftNotification newInstance() + { + return new SoftNotificationImpl(); + } + + /** + *

    Get soft notification identification of this instance. Soft notifications are + * persistent, so client should store the identification, if it wants to access the + * soft notification from another instance e.g. after device is restarted.

    + * + *

    Notice that identification might change during the lifetime of the + * instance if {@link #post()} is called.

    + * + * @return Soft notification identification. + * @see #newInstance(int notificationId) + */ + public abstract int getId(); + + /** + *

    Shows a new soft notification or updates the content of previously posted + * notification. If the application did not specify a valid identification in + * the notification construction, + * then new identification will be generated on first call to post(). If + * previously posted soft notification does not exist, a new one is created + * and a new identification will be generated. Client needs to set the attributes + * shown in the soft notification before calling post or the default values + * will be used. This call does not reset assigned text, image or softkeys.

    + * + *

    Notice that identification of the soft notification may change every + * time the function is called. So when needed, it is recommended to ask + * the latest id from the notification by using {@link #getId()} function.

    + * + * @throws SoftNotificationException Thrown if posting operation fails. + */ + public abstract void post() throws SoftNotificationException; + + /** + *

    Removes the posted soft notification from the device home screen. If the + * soft notification has not been posted or it has already been removed, + * this call does nothing. Remove is automatically called when + * the user accepts or dismisses the soft notification.

    + * + * @throws SoftNotificationException Thrown if removing the note fails. + */ + public abstract void remove() throws SoftNotificationException; + + /** + *

    Sets listener for the soft notification. Listener is notified when the + * user accepts or dismisses the soft notification. Setting a new listener will + * overwrite the previous listener. Listener can be removed by setting it to + * null.

    + * + * @param listener Listener for the soft notification. + */ + public abstract void setListener(SoftNotificationListener listener); + + /** + *

    Sets the text field to be displayed in the soft notification. The + * platform may truncate the text to a suitable size to fit into the soft + * notification. If the text is not set before calling {@link #post()}, the + * default value "" is used. An ungrouped soft notification has multiple lines + * for the text, but a grouped notification has only one line. + * Therefore the text assigned for a grouped notification should be + * shorter. Multiple lines can be created by adding a line break + * (character '\n') inside the string.

    + * + *

    A notification supports grouping if groupText is + * other than null or an empty string ("").

    + * + *

    Notice that the modified soft notification data is not visible for + * the user until {@link #post()} is called.

    + * + * @param text A text to be displayed in the soft notification when ungrouped + * soft notification is shown. + * @param groupText A text be to displayed in the soft notification when there are + * also other notifications visible (grouped form). The notification + * will not support grouping if null or an empty string + * ("") is used. + * + * @throws SoftNotificationException Thrown if setting text fails. + */ + public abstract void setText(String text, String groupText) + throws SoftNotificationException; + + /** + *

    Sets the textual labels for the softkeys. The platform may truncate the + * text to a suitable size to fit to the softkey labels, so a relatively + * short texts are preferred for the labels. If labels are not provided, + * then the default softkeys will be used (Show & Exit).

    + * + *

    The functionalities of these softkeys remain always the same even if + * their texts are changed. Softkey 1 (Show) opens + * up the application and dismisses the soft notification. Softkey 2 (Exit) + * dismisses the soft notification.

    + * + *

    Notice that the modified soft notification data is not visible for + * the user until {@link #post()} is called.

    + * + * @param softkey1Label Text for the softkey 1. + * @param softkey2Label Text for the softkey 2. + * + * @throws SoftNotificationException Thrown if setting softkeys fails. + */ + public abstract void setSoftkeyLabels(String softkey1Label, String softkey2Label) + throws SoftNotificationException; + + /** + *

    Sets an image to be displayed in the soft notification. The image can be + * in any format that the platform's image decoder or SVG engine is able to + * decode (for example, JPG, GIF, PNG, and SVG (even SVGS and MBM) images may + * be supported in the platform). Image mask is used when available.

    + * + *

    The image is given as a byte array, for example the data may be read directly + * from the file system or MIDlet JAR package.

    + * + *

    Images will be scaled to fit in the soft notification pop-up as the image + * area of the notification is relatively small. For saving resources in scaling, + * the size of the image should be kept small (preferably no larger than + * 300x300 px).

    + * + *

    The function can also be used for removing an already set image from + * the soft notification. This can be done by setting null instead + * of any actual image.

    + * + *

    Notice that the modified soft notification data is not visible for + * the user until {@link #post()} is called.

    + * + * @param image image to be displayed in the soft notification or + * null if any existing image should be removed + * from the notification. + * + * @throws SoftNotificationException Thrown if setting image fails. + */ + public abstract void setImage(byte[] image) throws SoftNotificationException; + +} diff -r 4ad59aaee882 -r 2f468c1958d0 javauis/nokiauiapi_qt/javasrc/com/nokia/mid/ui/SoftNotificationException.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javauis/nokiauiapi_qt/javasrc/com/nokia/mid/ui/SoftNotificationException.java Mon Oct 04 00:10:53 2010 +0300 @@ -0,0 +1,80 @@ +/* +* 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; + +public class SoftNotificationException extends Exception +{ + + + private int errorCode; + + /** + * Default constructor is not allowed. + */ + protected SoftNotificationException() {} + + /** + * Constructs an exception instance with a textual information. + * + * @param info human readable information about the exception. + */ + public SoftNotificationException(String info) + { + super(info); + } + + /** + * Constructs an exception instance with a textual information and the + * error code of the native call. + * + * @param info human readable information about the exception. + * @param errorCode the error code received from native side. + */ + public SoftNotificationException(String info, int errorCode) + { + super(info); + this.errorCode = errorCode; + } + + /** + * Constructs human readable textual information. + * + * @return String the human readable textual information. + */ + public String toString() + { + if (errorCode == 0) + { + return super.toString(); + } + else + { + return super.toString() + " Native error: " + errorCode; + } + } + + /** + * Returns with the native error code. + * + * @return Native error code. + */ + public int getErrorCode() + { + return errorCode; + } +} diff -r 4ad59aaee882 -r 2f468c1958d0 javauis/nokiauiapi_qt/javasrc/com/nokia/mid/ui/SoftNotificationImpl.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javauis/nokiauiapi_qt/javasrc/com/nokia/mid/ui/SoftNotificationImpl.java Mon Oct 04 00:10:53 2010 +0300 @@ -0,0 +1,353 @@ +/* + * 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"); + } +} diff -r 4ad59aaee882 -r 2f468c1958d0 javauis/nokiauiapi_qt/javasrc/com/nokia/mid/ui/SoftNotificationListener.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javauis/nokiauiapi_qt/javasrc/com/nokia/mid/ui/SoftNotificationListener.java Mon Oct 04 00:10:53 2010 +0300 @@ -0,0 +1,57 @@ +/* +* 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; + +/** + * SoftNotificationListener interface is used by applications which + * need callbacks from soft notifications. Listener will get a notification when the + * soft notification is either selected or dismissed by the user. Listener + * interface can be registered with + * {@link SoftNotification#setListener(SoftNotificationListener)} method. + * + * @see SoftNotification + */ +public interface SoftNotificationListener +{ + + /** + * Indicates that a soft notification was selected by the user. The + * platform calls {@link SoftNotification#remove()} before + * notificationSelected() is called. Application that posted the soft + * notification is activated before the listener will get the notification. + * + * @param notification A notification object identifying the soft + * notification being responded to by the user. The MIDlet must + * implement the functionality to be performed when the + * notification is selected. + */ + public abstract void notificationSelected(SoftNotification notification); + + /** + * Indicates that a soft notification was dismissed by the user. The + * platform calls {@link SoftNotification#remove()} before + * notificationDismissed() is called. + * + * @param notification A notification object identifying the soft + * notification being responded to by the user. The application must + * implement the functionality to be performed when the soft + * notification is dismissed, it is not required to do anything. + */ + public abstract void notificationDismissed(SoftNotification notification); + +} diff -r 4ad59aaee882 -r 2f468c1958d0 javauis/nokiauiapi_qt/javasrc_j2me/com/nokia/mid/ui/TactileFeedback.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javauis/nokiauiapi_qt/javasrc_j2me/com/nokia/mid/ui/TactileFeedback.java Mon Oct 04 00:10:53 2010 +0300 @@ -0,0 +1,461 @@ +/* +* 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 org.eclipse.swt.widgets.Internal_PackageSupport; +import com.nokia.mid.ui.internal.OS; + + +/** + * This class is a Java extension to support tactile feedback (audio, vibra, + * piezo, etc.) on touch-enabled devices. Tactile feedback is meant to give user + * more clear feeling of touch events, like tapping and dragging. The actual + * physical tactile feedback depends on the device tactile feedback + * implementation, hardware and device settings. A device may implement the + * feedback with different hardware methods, for example, vibra, audio or piezo + * hardware. + *

    + * The API supports both LCDUI and eSWT UI toolkits. + *

    + * Using this class is safe when a device does not support tactile feedback. In + * this case methods of this class can be called but this has no effect. + *

    + * Tactile feedback can be generated in two ways: + *

      + *
    • By producing direct feedback from the application.
    • + *
    • By adding feedback areas to area registry, in which case the feedback + * will be produced by the tactile feedback system automatically when the + * defined screen area (with defined feedback) is touched.
    • + *
    + *

    + * Direct feedback is given instantly with {@link #directFeedback + * directFeedback} specifying the feedback type. Direct feedback can be used + * when the user action is not just a tap in a certain area. For example if the + * user drags from one menu item to the other the application may give direct + * feedback to emphasize focus traverse. + *

    + * In case of area registry for eSWT Control, the registry needs to be updated + * every time when the size or position of a UI component changes, or when e.g. + * a state of a UI component changes in such way that feedback type also + * changes. Typically the area update may be implemented in + * controlMoved and controlResized methods of + * ControlListener interface. + *

    + * In case of area registry for LCDUI Canvas or CustomItem no further actions + * are required to update tactile feedback areas when a CustomItem is moved in a + * Form or when a Canvas is changed due to e.g. orientation switch. + *

    + * There are quite tight latency requirements for tactile feedback, and in most + * cases feedback should be triggered in less than 30ms from the time when user + * touched the screen. For the area registry the feedback system is responsible + * of fulfilling this requirement, but in case of direct feedback it is the + * responsibility of the user of this API. + *

    + * The tactile feedback has 2 different styles: Basic and Sensitive. Each type + * is defined in the device settings, not by this API. Each style of feedback is + * used in different cases. Typically Basic style is used to emphasize the tap + * event, while Sensitive style is used mostly at dragging operations, to + * emphasize focus traverse, text selection, etc. Choosing a specific style for + * each use case in up to developer, however it is good to follow the behavior + * of native applications. + *

    + * The goal of the API is to enable user-created UI components to have tactile + * feedback. The UI component types supported by the API are limited to + * user-defined components only: javax.microedition.lcdui.Canvas, + * javax.microedition.lcdui.CustomItem, + * org.eclipse.swt.widgets.Control. Other UI components (i.e. List, + * TextBox, etc.) get default tactile feedback automatically from the platform. + * + * @version 0.001 + * @since 1.2 + */ + +public class TactileFeedback +{ + + /** + * Constant for specifying basic tactile feedback style. Actual style + * behaviour is set through device settings. + */ + public static final int FEEDBACK_STYLE_BASIC = 1; + + /** + * Constant for specifying sensitive tactile feedback style. Actual style + * behaviour is set through device settings. + */ + public static final int FEEDBACK_STYLE_SENSITIVE = 2; + + private final String invalidFeedbackStyleMsg = "Invalid feedback style specified"; + private final String invalidControlTypeMsg = "Invalid object provided for tactile feedback registration"; + + private static final int TYPE_INVALID = 0; + private static final int TYPE_ESWT = 1; + private static final int TYPE_LCDUI = 2; + private static boolean feedbackEnabled; + + /** + * Constructs tactile feedback engine object. The object may be used in both + * LCDUI and eSWT java UI toolkits. TactileFeedback object must be + * constructed before using any tactile feedback methods. + */ + public TactileFeedback() + { + } + + /** + * Triggers direct tactile feedback of the specified style. + * + * @param style + * The style of the direct feedback. Use predefined values + * FEEDBACK_STYLE_BASIC, FEEDBACK_STYLE_SENSITIVE. Actual style + * behavior is set through device settings. + * @throws IllegalArgumentException + * if the style parameter has invalid type. + */ + public void directFeedback(int style) throws IllegalArgumentException + { + if ((style != FEEDBACK_STYLE_BASIC) + && (style != FEEDBACK_STYLE_SENSITIVE)) + throw new IllegalArgumentException(invalidFeedbackStyleMsg); + if (org.eclipse.swt.widgets.Display.getCurrent() == null) + { + final int fStyle = style; + com.nokia.mj.impl.nokialcdui.LCDUIInvoker + .eSWTUIThreadRunnerSyncExec(new Runnable() + { + public void run() + { + OS.MTouchFeedback_InstantFeedback(fStyle); + } + }); + + } + else + { + OS.MTouchFeedback_InstantFeedback(style); + } + } + + /** + * Queries the device if it supports tactile feedback. It is safe to use + * this class even if the device does not support tactile feedback. Methods + * of this class can be called but this has no effect. + * + * @return true if the device supports tactile feedback, false otherwise. + */ + public boolean isTouchFeedbackSupported() + { + if (org.eclipse.swt.widgets.Display.getCurrent() == null) + { + com.nokia.mj.impl.nokialcdui.LCDUIInvoker + .eSWTUIThreadRunnerSyncExec(new Runnable() + { + + public void run() + { + feedbackEnabled = OS + .MTouchFeedback_TouchFeedbackSupported(); + } + }); + } + else + { + feedbackEnabled = OS.MTouchFeedback_TouchFeedbackSupported(); + } + return feedbackEnabled; + } + + /** + * Registers area within a UI component for tactile feedback. If areas + * overlap then the feedback is given from the last registered area. + * {@link #moveFeedbackAreaToFirstPriority moveFeedbackAreaToFirstPriority} + * can be used to bring a certain area covered by another area into action. + * If an area with specified id is already registered it is + * updated. When updating an existing area there is no need to unregister it + * before re-registering again with new coordinates and/or feedback style. + * The area specified by x, y, width + * and height parameters may be located on the screen just + * partially. + * + *

    + * In case of area registry for eSWT Control, the registry needs to be + * updated every time when the size or position of a UI component changes, + * or when e.g. a state of a UI component changes in such way that feedback + * type also changes. Typically the area update may be implemented in + * controlMoved and controlResized methods of + * ControlListener interface. The update of an area may be + * implemented by calling registerFeedbackArea with the same area id but new + * coordinates and/or feedback style. + *

    + * In case of area registry for LCDUI Canvas or CustomItem no further + * actions are required to update tactile feedback areas when a CustomItem + * is moved in a Form or when a Canvas is changed due to e.g. orientation + * switch. + * + * @param uiObject + * The UI component for tactile feedback registration. Valid + * object types are: javax.microedition.lcdui.Canvas + * , javax.microedition.lcdui.CustomItem, + * org.eclipse.swt.widgets.Control. + * @param id + * Id of the new tactile feedback area to be registered. Id's are + * used to identify particular tactile feedback area within one + * UI component. Id's do not need to be consecutive numbers. + * @param x + * x-coordinate of the top-left corner of tactile feedback + * rectangle to register. + * @param y + * y-coordinate of the top-left corner of tactile feedback + * rectangle to register. + * @param width + * Width of tactile feedback rectangle to register. + * @param height + * Height of tactile feedback rectangle to register. + * @param style + * The style of the feedback for specified area. Use predefined + * values FEEDBACK_STYLE_BASIC, + * FEEDBACK_STYLE_SENSITIVE. Actual style behaviour + * is defined through device settings. + * @throws IllegalArgumentException + * if the uiObject parameter has invalid type. + * @throws IllegalArgumentException + * if the style parameter has invalid type. + */ + public void registerFeedbackArea(Object uiObject, int id, int x, int y, + int width, int height, int style) throws IllegalArgumentException + { + int type = controlType(uiObject); + if (type == TYPE_INVALID) + throw new IllegalArgumentException(invalidControlTypeMsg); + + if ((style != FEEDBACK_STYLE_BASIC) + && (style != FEEDBACK_STYLE_SENSITIVE)) + throw new IllegalArgumentException(invalidFeedbackStyleMsg); + + int controlHandle = getControlHandle(uiObject); + if (type == TYPE_LCDUI) + { + final int fControlHandle = controlHandle; + final int fId = id; + final int fX = x; + final int fY = y; + final int fWidth = width; + final int fHeight = height; + final int fStyle = style; + com.nokia.mj.impl.nokialcdui.LCDUIInvoker + .eSWTUIThreadRunnerSyncExec(new Runnable() + { + + public void run() + { + OS.MTouchFeedback_SetFeedbackArea(fControlHandle, + fId, fX, fY, fWidth, fHeight, fStyle); + } + }); + } + else + { + OS.MTouchFeedback_SetFeedbackArea(controlHandle, id, x, y, width, + height, style); + } + } + + /** + * Unregisters tactile feedback area within a UI component. + * + * @param uiObject + * The UI component for tactile feedback area de-registration. + * Valid object types are: + * javax.microedition.lcdui.Canvas, + * javax.microedition.lcdui.CustomItem, + * org.eclipse.swt.widgets.Control. + * @param id + * Id of the tactile feedback area to be unregistered. Id's are + * used to identify particular tactile feedback area within one + * UI component. If given id was not registered by + * {@link #registerFeedbackArea registerFeedbackArea} then the + * call has no effect. + * @throws IllegalArgumentException + * if the uiObject parameter has invalid type. + */ + public void unregisterFeedbackArea(Object uiObject, int id) + throws IllegalArgumentException + { + + int type = controlType(uiObject); + if (type == TYPE_INVALID) + throw new IllegalArgumentException(invalidControlTypeMsg); + + int controlHandle = getControlHandle(uiObject); + if (type == TYPE_LCDUI) + { + final int fControlHandle = controlHandle; + final int fId = id; + com.nokia.mj.impl.nokialcdui.LCDUIInvoker + .eSWTUIThreadRunnerSyncExec(new Runnable() + { + + public void run() + { + OS.MTouchFeedback_RemoveFeedbackArea( + fControlHandle, fId); + } + }); + } + else + { + OS.MTouchFeedback_RemoveFeedbackArea(controlHandle, id); + } + + } + + /** + * Removes all tactile feedback for a UI component. + * + * @param uiObject + * The UI component for tactile feedback area de-registration. + * Valid object types are: + * javax.microedition.lcdui.Canvas, + * javax.microedition.lcdui.CustomItem, + * org.eclipse.swt.widgets.Control. + * @throws IllegalArgumentException + * if the uiObject parameter has invalid type. + */ + public void removeFeedbackForComponent(Object uiObject) + { + if (isTouchFeedbackSupported() == false) + return; + + int type = controlType(uiObject); + if (type == TYPE_INVALID) + throw new IllegalArgumentException(invalidControlTypeMsg); + + int controlHandle = getControlHandle(uiObject); + + if (type == TYPE_LCDUI) + { + final int fControlHandle = controlHandle; + com.nokia.mj.impl.nokialcdui.LCDUIInvoker + .eSWTUIThreadRunnerSyncExec(new Runnable() + { + + public void run() + { + OS.MTouchFeedback_RemoveFeedbackForControl(fControlHandle); + } + }); + } + else + { + OS.MTouchFeedback_RemoveFeedbackForControl(controlHandle); + } + + } + + /** + * Moves the specified tactile feedback area to first priority. Priority is + * significant in case of overlapping tactile feedback areas. If the tactile + * feedback styles of registered areas are different, the feedback from + * first-priority area will be given. + * + * @param uiObject + * The UI component for tactile feedback area de-registration. + * Valid object types are: + * javax.microedition.lcdui.Canvas, + * javax.microedition.lcdui.CustomItem, + * org.eclipse.swt.widgets.Control. + * @param id + * Id of the tactile feedback area to be unregistered. Id's are + * used to identify particular tactile feedback area within one + * UI component. If given id was not registered by + * {@link #registerFeedbackArea registerFeedbackArea} then the + * call has no effect. + * @throws IllegalArgumentException + * if the uiObject parameter has invalid type. + */ + public void moveFeedbackAreaToFirstPriority(Object uiObject, int id) + { + if (isTouchFeedbackSupported() == false) + return; + + int type = controlType(uiObject); + if (type == TYPE_INVALID) + throw new IllegalArgumentException(invalidControlTypeMsg); + + int controlHandle = getControlHandle(uiObject); + if (type == TYPE_LCDUI) + { + final int fControlHandle = controlHandle; + final int fId = id; + com.nokia.mj.impl.nokialcdui.LCDUIInvoker + .eSWTUIThreadRunnerSyncExec(new Runnable() + { + + public void run() + { + OS.MTouchFeedback_MoveFeedbackAreaToFirstPriority( + fControlHandle, fId); + } + }); + } + else + { + OS.MTouchFeedback_MoveFeedbackAreaToFirstPriority( + controlHandle, id); + } + + } + + + private int controlType(Object obj) + { + if ((obj instanceof javax.microedition.lcdui.Canvas) + || (obj instanceof javax.microedition.lcdui.CustomItem)) + { + return TYPE_LCDUI; + } + else if ((obj instanceof org.eclipse.swt.widgets.Control)) + { + return TYPE_ESWT; + } + return TYPE_INVALID; + } + + private int getControlHandle(Object uiObject) + { + int controlHandle = 0; + org.eclipse.swt.widgets.Control eSwtControl = null; + if (uiObject instanceof javax.microedition.lcdui.Canvas + || uiObject instanceof javax.microedition.lcdui.CustomItem) + { + eSwtControl = com.nokia.mj.impl.nokialcdui.LCDUIInvoker + .getEswtControl(uiObject); + } + else if (uiObject instanceof org.eclipse.swt.widgets.Control) + { + eSwtControl = (org.eclipse.swt.widgets.Control) uiObject; + } + + if (eSwtControl != null) + { + controlHandle = Internal_PackageSupport.topHandle(eSwtControl); + } + return controlHandle; + } + +} diff -r 4ad59aaee882 -r 2f468c1958d0 javauis/nokiauiapi_qt/javasrc_j2se/com/nokia/mid/ui/TactileFeedback.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javauis/nokiauiapi_qt/javasrc_j2se/com/nokia/mid/ui/TactileFeedback.java Mon Oct 04 00:10:53 2010 +0300 @@ -0,0 +1,462 @@ +/* +* 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 org.eclipse.swt.widgets.Internal_PackageSupport; +import com.nokia.mid.ui.internal.OS; + +; + +/** + * This class is a Java extension to support tactile feedback (audio, vibra, + * piezo, etc.) on touch-enabled devices. Tactile feedback is meant to give user + * more clear feeling of touch events, like tapping and dragging. The actual + * physical tactile feedback depends on the device tactile feedback + * implementation, hardware and device settings. A device may implement the + * feedback with different hardware methods, for example, vibra, audio or piezo + * hardware. + *

    + * The API supports both LCDUI and eSWT UI toolkits. + *

    + * Using this class is safe when a device does not support tactile feedback. In + * this case methods of this class can be called but this has no effect. + *

    + * Tactile feedback can be generated in two ways: + *

      + *
    • By producing direct feedback from the application.
    • + *
    • By adding feedback areas to area registry, in which case the feedback + * will be produced by the tactile feedback system automatically when the + * defined screen area (with defined feedback) is touched.
    • + *
    + *

    + * Direct feedback is given instantly with {@link #directFeedback + * directFeedback} specifying the feedback type. Direct feedback can be used + * when the user action is not just a tap in a certain area. For example if the + * user drags from one menu item to the other the application may give direct + * feedback to emphasize focus traverse. + *

    + * In case of area registry for eSWT Control, the registry needs to be updated + * every time when the size or position of a UI component changes, or when e.g. + * a state of a UI component changes in such way that feedback type also + * changes. Typically the area update may be implemented in + * controlMoved and controlResized methods of + * ControlListener interface. + *

    + * In case of area registry for LCDUI Canvas or CustomItem no further actions + * are required to update tactile feedback areas when a CustomItem is moved in a + * Form or when a Canvas is changed due to e.g. orientation switch. + *

    + * There are quite tight latency requirements for tactile feedback, and in most + * cases feedback should be triggered in less than 30ms from the time when user + * touched the screen. For the area registry the feedback system is responsible + * of fulfilling this requirement, but in case of direct feedback it is the + * responsibility of the user of this API. + *

    + * The tactile feedback has 2 different styles: Basic and Sensitive. Each type + * is defined in the device settings, not by this API. Each style of feedback is + * used in different cases. Typically Basic style is used to emphasize the tap + * event, while Sensitive style is used mostly at dragging operations, to + * emphasize focus traverse, text selection, etc. Choosing a specific style for + * each use case in up to developer, however it is good to follow the behavior + * of native applications. + *

    + * The goal of the API is to enable user-created UI components to have tactile + * feedback. The UI component types supported by the API are limited to + * user-defined components only: javax.microedition.lcdui.Canvas, + * javax.microedition.lcdui.CustomItem, + * org.eclipse.swt.widgets.Control. Other UI components (i.e. List, + * TextBox, etc.) get default tactile feedback automatically from the platform. + * + * @version 0.001 + * @since 1.2 + */ + +public class TactileFeedback +{ + + /** + * Constant for specifying basic tactile feedback style. Actual style + * behaviour is set through device settings. + */ + public static final int FEEDBACK_STYLE_BASIC = 1; + + /** + * Constant for specifying sensitive tactile feedback style. Actual style + * behaviour is set through device settings. + */ + public static final int FEEDBACK_STYLE_SENSITIVE = 2; + + private final String invalidFeedbackStyleMsg = "Invalid feedback style specified"; + private final String invalidControlTypeMsg = "Invalid object provided for tactile feedback registration"; + + private static final int TYPE_INVALID = 0; + private static final int TYPE_ESWT = 1; + private static final int TYPE_LCDUI = 2; + private static boolean feedbackEnabled; + + /** + * Constructs tactile feedback engine object. The object may be used in both + * LCDUI and eSWT java UI toolkits. TactileFeedback object must be + * constructed before using any tactile feedback methods. + */ + public TactileFeedback() + { + } + + /** + * Triggers direct tactile feedback of the specified style. + * + * @param style + * The style of the direct feedback. Use predefined values + * FEEDBACK_STYLE_BASIC, FEEDBACK_STYLE_SENSITIVE. Actual style + * behavior is set through device settings. + * @throws IllegalArgumentException + * if the style parameter has invalid type. + */ + public void directFeedback(int style) throws IllegalArgumentException + { + if ((style != FEEDBACK_STYLE_BASIC) + && (style != FEEDBACK_STYLE_SENSITIVE)) + throw new IllegalArgumentException(invalidFeedbackStyleMsg); + if (org.eclipse.swt.widgets.Display.getCurrent() == null) + { + final int fStyle = style; + com.nokia.mj.impl.nokialcdui.LCDUIInvoker + .eSWTUIThreadRunnerSyncExec(new Runnable() + { + public void run() + { + // OS.MTouchFeedback_InstantFeedback(fStyle); + } + }); + + } + else + { + //OS.MTouchFeedback_InstantFeedback(style); + } + } + + /** + * Queries the device if it supports tactile feedback. It is safe to use + * this class even if the device does not support tactile feedback. Methods + * of this class can be called but this has no effect. + * + * @return true if the device supports tactile feedback, false otherwise. + */ + public boolean isTouchFeedbackSupported() + { + if (org.eclipse.swt.widgets.Display.getCurrent() == null) + { + com.nokia.mj.impl.nokialcdui.LCDUIInvoker + .eSWTUIThreadRunnerSyncExec(new Runnable() + { + + public void run() + { + // feedbackEnabled = OS + // .MTouchFeedback_TouchFeedbackSupported(); + } + }); + } + else + { + // feedbackEnabled = OS.MTouchFeedback_TouchFeedbackSupported(); + } + return feedbackEnabled; + } + + /** + * Registers area within a UI component for tactile feedback. If areas + * overlap then the feedback is given from the last registered area. + * {@link #moveFeedbackAreaToFirstPriority moveFeedbackAreaToFirstPriority} + * can be used to bring a certain area covered by another area into action. + * If an area with specified id is already registered it is + * updated. When updating an existing area there is no need to unregister it + * before re-registering again with new coordinates and/or feedback style. + * The area specified by x, y, width + * and height parameters may be located on the screen just + * partially. + * + *

    + * In case of area registry for eSWT Control, the registry needs to be + * updated every time when the size or position of a UI component changes, + * or when e.g. a state of a UI component changes in such way that feedback + * type also changes. Typically the area update may be implemented in + * controlMoved and controlResized methods of + * ControlListener interface. The update of an area may be + * implemented by calling registerFeedbackArea with the same area id but new + * coordinates and/or feedback style. + *

    + * In case of area registry for LCDUI Canvas or CustomItem no further + * actions are required to update tactile feedback areas when a CustomItem + * is moved in a Form or when a Canvas is changed due to e.g. orientation + * switch. + * + * @param uiObject + * The UI component for tactile feedback registration. Valid + * object types are: javax.microedition.lcdui.Canvas + * , javax.microedition.lcdui.CustomItem, + * org.eclipse.swt.widgets.Control. + * @param id + * Id of the new tactile feedback area to be registered. Id's are + * used to identify particular tactile feedback area within one + * UI component. Id's do not need to be consecutive numbers. + * @param x + * x-coordinate of the top-left corner of tactile feedback + * rectangle to register. + * @param y + * y-coordinate of the top-left corner of tactile feedback + * rectangle to register. + * @param width + * Width of tactile feedback rectangle to register. + * @param height + * Height of tactile feedback rectangle to register. + * @param style + * The style of the feedback for specified area. Use predefined + * values FEEDBACK_STYLE_BASIC, + * FEEDBACK_STYLE_SENSITIVE. Actual style behaviour + * is defined through device settings. + * @throws IllegalArgumentException + * if the uiObject parameter has invalid type. + * @throws IllegalArgumentException + * if the style parameter has invalid type. + */ + public void registerFeedbackArea(Object uiObject, int id, int x, int y, + int width, int height, int style) throws IllegalArgumentException + { + int type = controlType(uiObject); + if (type == TYPE_INVALID) + throw new IllegalArgumentException(invalidControlTypeMsg); + + if ((style != FEEDBACK_STYLE_BASIC) + && (style != FEEDBACK_STYLE_SENSITIVE)) + throw new IllegalArgumentException(invalidFeedbackStyleMsg); + + int controlHandle = getControlHandle(uiObject); + if (type == TYPE_LCDUI) + { + final int fControlHandle = controlHandle; + final int fId = id; + final int fX = x; + final int fY = y; + final int fWidth = width; + final int fHeight = height; + final int fStyle = style; + com.nokia.mj.impl.nokialcdui.LCDUIInvoker + .eSWTUIThreadRunnerSyncExec(new Runnable() + { + + public void run() + { + // OS.MTouchFeedback_SetFeedbackArea(fControlHandle, + // fId, fX, fY, fWidth, fHeight, fStyle); + } + }); + } + else + { + //OS.MTouchFeedback_SetFeedbackArea(controlHandle, id, x, y, width, + // height, style); + } + } + + /** + * Unregisters tactile feedback area within a UI component. + * + * @param uiObject + * The UI component for tactile feedback area de-registration. + * Valid object types are: + * javax.microedition.lcdui.Canvas, + * javax.microedition.lcdui.CustomItem, + * org.eclipse.swt.widgets.Control. + * @param id + * Id of the tactile feedback area to be unregistered. Id's are + * used to identify particular tactile feedback area within one + * UI component. If given id was not registered by + * {@link #registerFeedbackArea registerFeedbackArea} then the + * call has no effect. + * @throws IllegalArgumentException + * if the uiObject parameter has invalid type. + */ + public void unregisterFeedbackArea(Object uiObject, int id) + throws IllegalArgumentException + { + + int type = controlType(uiObject); + if (type == TYPE_INVALID) + throw new IllegalArgumentException(invalidControlTypeMsg); + + int controlHandle = getControlHandle(uiObject); + if (type == TYPE_LCDUI) + { + final int fControlHandle = controlHandle; + final int fId = id; + com.nokia.mj.impl.nokialcdui.LCDUIInvoker + .eSWTUIThreadRunnerSyncExec(new Runnable() + { + + public void run() + { + // OS.MTouchFeedback_RemoveFeedbackArea( + // fControlHandle, fId); + } + }); + } + else + { + //OS.MTouchFeedback_RemoveFeedbackArea(controlHandle, id); + } + + } + + /** + * Removes all tactile feedback for a UI component. + * + * @param uiObject + * The UI component for tactile feedback area de-registration. + * Valid object types are: + * javax.microedition.lcdui.Canvas, + * javax.microedition.lcdui.CustomItem, + * org.eclipse.swt.widgets.Control. + * @throws IllegalArgumentException + * if the uiObject parameter has invalid type. + */ + public void removeFeedbackForComponent(Object uiObject) + { + if (isTouchFeedbackSupported() == false) + return; + + int type = controlType(uiObject); + if (type == TYPE_INVALID) + throw new IllegalArgumentException(invalidControlTypeMsg); + + int controlHandle = getControlHandle(uiObject); + + if (type == TYPE_LCDUI) + { + final int fControlHandle = controlHandle; + com.nokia.mj.impl.nokialcdui.LCDUIInvoker + .eSWTUIThreadRunnerSyncExec(new Runnable() + { + + public void run() + { + // OS.MTouchFeedback_RemoveFeedbackForControl(fControlHandle); + } + }); + } + else + { + //OS.MTouchFeedback_RemoveFeedbackForControl(controlHandle); + } + + } + + /** + * Moves the specified tactile feedback area to first priority. Priority is + * significant in case of overlapping tactile feedback areas. If the tactile + * feedback styles of registered areas are different, the feedback from + * first-priority area will be given. + * + * @param uiObject + * The UI component for tactile feedback area de-registration. + * Valid object types are: + * javax.microedition.lcdui.Canvas, + * javax.microedition.lcdui.CustomItem, + * org.eclipse.swt.widgets.Control. + * @param id + * Id of the tactile feedback area to be unregistered. Id's are + * used to identify particular tactile feedback area within one + * UI component. If given id was not registered by + * {@link #registerFeedbackArea registerFeedbackArea} then the + * call has no effect. + * @throws IllegalArgumentException + * if the uiObject parameter has invalid type. + */ + public void moveFeedbackAreaToFirstPriority(Object uiObject, int id) + { + if (isTouchFeedbackSupported() == false) + return; + + int type = controlType(uiObject); + if (type == TYPE_INVALID) + throw new IllegalArgumentException(invalidControlTypeMsg); + + int controlHandle = getControlHandle(uiObject); + if (type == TYPE_LCDUI) + { + final int fControlHandle = controlHandle; + final int fId = id; + com.nokia.mj.impl.nokialcdui.LCDUIInvoker + .eSWTUIThreadRunnerSyncExec(new Runnable() + { + + public void run() + { + // OS.MTouchFeedback_MoveFeedbackAreaToFirstPriority( + // fControlHandle, fId); + } + }); + } + else + { + // OS.MTouchFeedback_MoveFeedbackAreaToFirstPriority( + // controlHandle, id); + } + + } + + + private int controlType(Object obj) + { + if ((obj instanceof javax.microedition.lcdui.Canvas) + || (obj instanceof javax.microedition.lcdui.CustomItem)) + { + return TYPE_LCDUI; + } + else if ((obj instanceof org.eclipse.swt.widgets.Control)) + { + return TYPE_ESWT; + } + return TYPE_INVALID; + } + + private int getControlHandle(Object uiObject) + { + int controlHandle = 0; + org.eclipse.swt.widgets.Control eSwtControl = null; + if (uiObject instanceof javax.microedition.lcdui.Canvas + || uiObject instanceof javax.microedition.lcdui.CustomItem) + { + eSwtControl = com.nokia.mj.impl.nokialcdui.LCDUIInvoker + .getEswtControl(uiObject); + } + else if (uiObject instanceof org.eclipse.swt.widgets.Control) + { + eSwtControl = (org.eclipse.swt.widgets.Control) uiObject; + } + + if (eSwtControl != null) + { + controlHandle = Internal_PackageSupport.topHandle(eSwtControl); + } + return controlHandle; + } + +} diff -r 4ad59aaee882 -r 2f468c1958d0 javauis/nokiauiapi_qt/library/nokiauiapi.pri --- a/javauis/nokiauiapi_qt/library/nokiauiapi.pri Fri Sep 17 08:28:21 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,22 +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 the License "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: -# - - -INCLUDEPATH += $$PWD -DEPENDPATH += $$PWD - -SOURCES += os.cpp - diff -r 4ad59aaee882 -r 2f468c1958d0 javauis/nokiauiapi_qt/library/os.cpp --- a/javauis/nokiauiapi_qt/library/os.cpp Fri Sep 17 08:28:21 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,107 +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: This main entry point of Java processes. -* -*/ - - - -#include -#include -#include -#include - -static CCoeControl* convertToSymbian(QWidget* window) -{ - CCoeControl* control = 0; - if (window && window->winId()) - { - control = reinterpret_cast(window->winId()); - } - return control; -} - -JNIEXPORT void JNICALL Java_com_nokia_mid_ui_internal_OS_MTouchFeedback_1InstantFeedback -(JNIEnv *, jclass, jint aStyle) -{ - MTouchFeedback* feedback = MTouchFeedback::Instance(); - if (feedback) - { - feedback->InstantFeedback(static_cast(aStyle)); - } -} - -JNIEXPORT jboolean JNICALL Java_com_nokia_mid_ui_internal_OS_MTouchFeedback_1TouchFeedbackSupported -(JNIEnv *, jclass) -{ - jboolean enabled = JNI_FALSE; - MTouchFeedback* feedback = MTouchFeedback::Instance(); - if (feedback) - { - enabled = feedback->TouchFeedbackSupported() ? JNI_TRUE : JNI_FALSE; - } - return enabled; -} - -JNIEXPORT void JNICALL Java_com_nokia_mid_ui_internal_OS_MTouchFeedback_1SetFeedbackArea -(JNIEnv *, jclass, jint aControl, jint aAreaIndex, jint aX, jint aY, jint aWidth, jint aHeight, jint aStyle) -{ - MTouchFeedback* feedback = MTouchFeedback::Instance(); - if (feedback) - { - CCoeControl* control = convertToSymbian(reinterpret_cast(aControl)); - TRect feedbackRect(aX, aY, aX + aWidth, aY + aHeight); - feedback->SetFeedbackArea(control, - static_cast(aAreaIndex), - feedbackRect, - static_cast(aStyle), - ETouchEventStylusDown); - } -} - -JNIEXPORT void JNICALL Java_com_nokia_mid_ui_internal_OS_MTouchFeedback_1RemoveFeedbackArea -(JNIEnv *, jclass, jint aControl, jint aAreaIndex) -{ - MTouchFeedback* feedback = MTouchFeedback::Instance(); - if (feedback) - { - CCoeControl* control = convertToSymbian(reinterpret_cast(aControl)); - feedback->RemoveFeedbackArea(control, aAreaIndex); - } -} - -JNIEXPORT void JNICALL Java_com_nokia_mid_ui_internal_OS_MTouchFeedback_1RemoveFeedbackForControl -(JNIEnv *, jclass, jint aControl) -{ - MTouchFeedback* feedback = MTouchFeedback::Instance(); - if (feedback) - { - CCoeControl* control = convertToSymbian(reinterpret_cast(aControl)); - feedback->RemoveFeedbackForControl(control); - } -} - -JNIEXPORT void JNICALL Java_com_nokia_mid_ui_internal_OS_MTouchFeedback_1MoveFeedbackAreaToFirstPriority -(JNIEnv *, jclass, jint aControl, jint aAreaIndex) -{ - MTouchFeedback* feedback = MTouchFeedback::Instance(); - if (feedback) - { - CCoeControl* control = convertToSymbian(reinterpret_cast(aControl)); - feedback->MoveFeedbackAreaToFirstPriority(control, static_cast(aAreaIndex)); - } -} - - - diff -r 4ad59aaee882 -r 2f468c1958d0 javauis/nokiauiapi_qt/softindicatorplugin/inc/javasoftindicator.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javauis/nokiauiapi_qt/softindicatorplugin/inc/javasoftindicator.h Mon Oct 04 00:10:53 2010 +0300 @@ -0,0 +1,58 @@ +/******************************************************************************* + * Copyright (c) 2009, 2010 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 + *******************************************************************************/ + +#ifndef JAVASOFTINDICATOR_H +#define JAVASOFTINDICATOR_H + +#include + +/** + * Handles client request and showing the indications. + */ +class JavaSoftIndicator : public HbIndicatorInterface + { +public: + /** + * Constructor + */ + JavaSoftIndicator(const QString &indicatorType); + + /** + * Destructor + */ + virtual ~JavaSoftIndicator(); + + /** + * @see HbIndicatorInterface + */ + bool handleInteraction(InteractionType type); + + /** + * @see HbIndicatorInterface + */ + QVariant indicatorData(int role) const; + +protected: + /** + * @see HbIndicatorInterface + */ + bool handleClientRequest(RequestType type, const QVariant ¶meter); + +private: + + void StartJavaMidletL() const; + +private: + + QVariant iParameter; + }; + +#endif // JAVASOFTINDICATOR_H diff -r 4ad59aaee882 -r 2f468c1958d0 javauis/nokiauiapi_qt/softindicatorplugin/inc/javasoftindicatorplugin.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javauis/nokiauiapi_qt/softindicatorplugin/inc/javasoftindicatorplugin.h Mon Oct 04 00:10:53 2010 +0300 @@ -0,0 +1,75 @@ +/******************************************************************************* + * Copyright (c) 2009, 2010 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 + *******************************************************************************/ + +#ifndef JAVASOFTINDICATORPLUGIN_H +#define JAVASOFTINDICATORPLUGIN_H + +#include +#include +#include + +/** + * Main class of java indicator plugin. + */ +class JavaSoftIndicatorPlugin : public QObject, + public HbIndicatorPluginInterface + { + Q_OBJECT + Q_INTERFACES(HbIndicatorPluginInterface) + +public: + /** + * Constructor + */ + JavaSoftIndicatorPlugin(); + + /** + * Destructor + */ + virtual ~JavaSoftIndicatorPlugin(); + + /** + * @see HbIndicatorPluginInterface + */ + QStringList indicatorTypes() const; + + /** + * @see HbIndicatorPluginInterface + */ + bool accessAllowed(const QString &indicatorType, + const QVariantMap &securityInfo) const; + + /** + * @see HbIndicatorPluginInterface + */ + HbIndicatorInterface* createIndicator(const QString &indicatorType); + + /** + * @see HbIndicatorPluginInterface + */ + int error() const; + +private: + Q_DISABLE_COPY( JavaSoftIndicatorPlugin) + + /** + * Error value + */ + int iError; + + /** + * Indicator types + * supported indicator types. + */ + //QStringList iIndicatorTypes; + }; + +#endif // JAVASOFTINDICATORPLUGIN_H diff -r 4ad59aaee882 -r 2f468c1958d0 javauis/nokiauiapi_qt/softindicatorplugin/src/javasoftindicator.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javauis/nokiauiapi_qt/softindicatorplugin/src/javasoftindicator.cpp Mon Oct 04 00:10:53 2010 +0300 @@ -0,0 +1,170 @@ +/******************************************************************************* + * Copyright (c) 2009, 2010 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 + *******************************************************************************/ + +#include +#include + +#include "javasoftindicator.h" + +// ---------------------------------------------------------------------------- +// JavaSoftIndicator::JavaSoftIndicator +// @see javasoftindicator.h +// ---------------------------------------------------------------------------- +JavaSoftIndicator::JavaSoftIndicator(const QString &indicatorType) : + HbIndicatorInterface(indicatorType, + HbIndicatorInterface::NotificationCategory, InteractionActivated) + { + } + +// ---------------------------------------------------------------------------- +// JavaSoftIndicator::~JavaSoftIndicator +// @see javasoftindicator.h +// ---------------------------------------------------------------------------- +JavaSoftIndicator::~JavaSoftIndicator() + { + } + +// ---------------------------------------------------------------------------- +// JavaSoftIndicator::handleInteraction +// @see javasoftindicator.h +// ---------------------------------------------------------------------------- +bool JavaSoftIndicator::handleInteraction(InteractionType type) + { + bool handled = false; + if (type == InteractionActivated) + { + TRAP_IGNORE(StartJavaMidletL()); + QVariantMap variantMap; + if (iParameter.isValid() && iParameter.canConvert(QVariant::List)) + { + variantMap.insert("MidletId",iParameter.toList()[0].toUInt()); + variantMap.insert("NotificationId",iParameter.toList()[1]); + } + emit userActivated(variantMap); + handled = true; + emit deactivate(); + } + return handled; + } + +// ---------------------------------------------------------------------------- +// JavaSoftIndicator::indicatorData +// @see javasoftindicator.h +// ---------------------------------------------------------------------------- +QVariant JavaSoftIndicator::indicatorData(int role) const + { + switch (role) + { + case PrimaryTextRole: + { + QString text(""); + if (iParameter.isValid() && iParameter.canConvert(QVariant::List)) + { + if (iParameter.toList()[2].isValid()) + { + text = iParameter.toList()[2].toString(); + } + } + return text; + } + case SecondaryTextRole: + { + QString text(""); + if (iParameter.isValid() && iParameter.canConvert(QVariant::List)) + { + if (iParameter.toList()[3].isValid()) + { + text = iParameter.toList()[3].toString(); + } + } + return text; + } + case DecorationNameRole: + { + QVariant img; + if (iParameter.isValid() && iParameter.canConvert(QVariant::List)) + { + if (iParameter.toList()[4].isValid()) + { + img = iParameter.toList()[4].toString(); + } + } + return img; + } + default: + return QVariant(); + } + } + +// ---------------------------------------------------------------------------- +// JavaSoftIndicator::handleClientRequest +// ---------------------------------------------------------------------------- +bool JavaSoftIndicator::handleClientRequest(RequestType type, + const QVariant ¶meter) + { + bool handled(false); + switch (type) + { + case RequestActivate: + { + if (iParameter != parameter) + { + iParameter = parameter; + } + emit dataChanged(); + handled = true; + } + break; + case RequestDeactivate: + { + emit deactivate(); + } + break; + default: + break; + } + return handled; + } + +// ---------------------------------------------------------- +// JavaSoftIndicator::StartJavaMidletL() +// ---------------------------------------------------------- +void JavaSoftIndicator::StartJavaMidletL() const + { + if (iParameter.isValid() && iParameter.canConvert(QVariant::List)) + { + if (iParameter.toList()[0].isValid()) + { + TUint KJavaMidletUid = iParameter.toList()[0].toUInt(); + + RWsSession ws; + User::LeaveIfError(ws.Connect() == KErrNone); + TApaTaskList tasklist(ws); + TApaTask task = tasklist.FindApp(TUid::Uid(KJavaMidletUid)); + if (task.Exists()) + { + task.BringToForeground(); + ws.Close(); + } + else + { + ws.Close(); + RApaLsSession appArcSession; + User::LeaveIfError(appArcSession.Connect()); + TThreadId threadId; + appArcSession.StartDocument(_L(""), + TUid::Uid(KJavaMidletUid), threadId); + appArcSession.Close(); + } + } + } + } + diff -r 4ad59aaee882 -r 2f468c1958d0 javauis/nokiauiapi_qt/softindicatorplugin/src/javasoftindicatorplugin.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javauis/nokiauiapi_qt/softindicatorplugin/src/javasoftindicatorplugin.cpp Mon Oct 04 00:10:53 2010 +0300 @@ -0,0 +1,87 @@ +/******************************************************************************* + * Copyright (c) 2009, 2010 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 + *******************************************************************************/ + +#include + +#include "javasoftindicatorplugin.h" +#include "javasoftindicator.h" + + +Q_EXPORT_PLUGIN( JavaSoftIndicatorPlugin) + +// ---------------------------------------------------------------------------- +// JavaSoftIndicatorPlugin::JavaSoftIndicatorPlugin +// ---------------------------------------------------------------------------- +JavaSoftIndicatorPlugin::JavaSoftIndicatorPlugin() : + iError(0) + { + } + +// ---------------------------------------------------------------------------- +// JavaSoftIndicatorPlugin::~JavaSoftIndicatorPlugin +// ---------------------------------------------------------------------------- +JavaSoftIndicatorPlugin::~JavaSoftIndicatorPlugin() + { + } + +// ---------------------------------------------------------------------------- +// JavaSoftIndicatorPlugin::indicatorTypes +// Return notification types this plugin implements +// ---------------------------------------------------------------------------- +QStringList JavaSoftIndicatorPlugin::indicatorTypes() const + { + QStringList iIndicatorTypes; + iIndicatorTypes + << "com.nokia.javasoftnotification.indicatorplugin/1.0_269487546_203"; + iIndicatorTypes + << "com.nokia.javasoftnotification.indicatorplugin/1.0_269487546_202"; + iIndicatorTypes + << "com.nokia.javasoftnotification.indicatorplugin/1.0_269487546_201"; + iIndicatorTypes + << "com.nokia.javasoftnotification.indicatorplugin/1.0_270212593_203"; + iIndicatorTypes + << "com.nokia.javasoftnotification.indicatorplugin/1.0_270212593_202"; + + return iIndicatorTypes; + } + +// ---------------------------------------------------------------------------- +// JavaSoftIndicatorPlugin::accessAllowed +// Check if client is allowed to use notification widget +// ---------------------------------------------------------------------------- +bool JavaSoftIndicatorPlugin::accessAllowed(const QString &indicatorType, + const QVariantMap &securityInfo) const + { + Q_UNUSED(indicatorType) + Q_UNUSED(securityInfo) + // This plugin doesn't perform operations that may compromise security. + // All clients are allowed to use. + return true; + } + +// ---------------------------------------------------------------------------- +// JavaSoftIndicatorPlugin::createIndicator +// ---------------------------------------------------------------------------- +HbIndicatorInterface* JavaSoftIndicatorPlugin::createIndicator( + const QString &indicatorType) + { + HbIndicatorInterface *indicator = new JavaSoftIndicator(indicatorType); + return indicator; + } + +// ---------------------------------------------------------------------------- +// JavaSoftIndicatorPlugin::error +// ---------------------------------------------------------------------------- +int JavaSoftIndicatorPlugin::error() const + { + return iError; + } + diff -r 4ad59aaee882 -r 2f468c1958d0 javauis/nokiauiapi_qt/src/CSoftNotification.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javauis/nokiauiapi_qt/src/CSoftNotification.cpp Mon Oct 04 00:10:53 2010 +0300 @@ -0,0 +1,279 @@ +/******************************************************************************* + * Copyright (c) 2009, 2010 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 + *******************************************************************************/ + + +#include +#include +#include +#include +#include "CSoftNotification.h" + +_LIT(KMidletId, "MidletId"); +_LIT(KNotificationId, "NotificationId"); +_LIT(KIndicatorTypeJavaSoftNote,"com.nokia.javasoftnotification.indicatorplugin/1.0_%u_%i"); +const TInt KIndicatorTypeStringLength = 250; +const TInt KMidletUidLength = 50; + +// Event id when user accepted notification +const TInt KEventNoteAccepted = 1; + +// ============================ MEMBER FUNCTIONS =============================== +// ----------------------------------------------------------------------------- +// CSoftNotification::NewLC +// Static constructor +// ----------------------------------------------------------------------------- +// +CSoftNotification* CSoftNotification::NewL(TInt aAppId, TInt aNotificationId) + { + CSoftNotification* self = new (ELeave) CSoftNotification(aAppId, + aNotificationId); + CleanupStack::PushL(self); + self->ConstructL(); + CleanupStack::Pop(self); + return self; + } + +// ----------------------------------------------------------------------------- +// CSoftNotification::CSoftNotification +// C++ default constructor can NOT contain any code, that +// might leave. +// ----------------------------------------------------------------------------- +// +CSoftNotification::CSoftNotification(TInt aAppId, TInt aNotificationId) : + iNotificationId(aNotificationId) + { + iMidletId = TUid::Uid(aAppId); + } + +// ----------------------------------------------------------------------------- +// CSoftNotification::ConstructL +// Symbian 2nd phase constructor can leave. +// ----------------------------------------------------------------------------- +// +void CSoftNotification::ConstructL() + { + iIndicator = CHbIndicatorSymbian::NewL(); + iIndicator->SetObserver(this); + } + +// ----------------------------------------------------------------------------- +// Destructor +// ----------------------------------------------------------------------------- +// +CSoftNotification::~CSoftNotification() + { + if (iPrimaryText) + { + delete iPrimaryText; + } + + if (iSecondaryText) + { + delete iSecondaryText; + } + + if (iImagePath) + { + delete iImagePath; + } + + if (iIndicator) + { + delete iIndicator; + } + + if (iPeer) + { + iJniEnv->DeleteWeakGlobalRef((jweak)iPeer); + } + + iPrimaryText = NULL; + iSecondaryText = NULL; + iImagePath = NULL; + iIndicator = NULL; + iPeer = NULL; + iMethodId = NULL; + } + +// ----------------------------------------------------------------------------- +// CSoftNotification::ShowSoftNotificationL +// Displays a soft notification +// ----------------------------------------------------------------------------- +// +bool CSoftNotification::ShowSoftNotificationL() + { + CHbDeviceNotificationDialogSymbian* dialog = + CHbDeviceNotificationDialogSymbian::NewL(); + CleanupStack::PushL(dialog); + + if(iPrimaryText != NULL) + { + dialog->SetTitleL(iPrimaryText->Des()); + } + + if(iSecondaryText != NULL) + { + dialog->SetTextL(iSecondaryText->Des()); + } + + if (iImagePath != NULL) + { + dialog->SetIconNameL(iImagePath->Des()); + } + + dialog->ShowL(); + + CHbSymbianVariant* varValues = NotificationParamsL(); + CleanupStack::PushL(varValues); + + TBuf indicatorType; + indicatorType.Format(KIndicatorTypeJavaSoftNote, iMidletId, iNotificationId); + bool indStatus = iIndicator->Activate(indicatorType, varValues); + + CleanupStack::PopAndDestroy(varValues); + CleanupStack::PopAndDestroy(dialog); + return indStatus; + } + +// ----------------------------------------------------------------------------- +// CSoftNotification::RemoveSoftNotificationL +// Cancels and removes the soft notification +// ----------------------------------------------------------------------------- +// +void CSoftNotification::RemoveSoftNotificationL() + { + TBuf type; + type.Format(KIndicatorTypeJavaSoftNote, iMidletId, iNotificationId); + iIndicator->Deactivate(type); + } + +// ----------------------------------------------------------------------------- +// CSoftNotification::SetTextL +// Sets a text for a soft notification +// ----------------------------------------------------------------------------- +// +void CSoftNotification::SetTextL(const TDesC& aPrimaryText, const TDesC& aSecondaryText) + { + HBufC* txt = aPrimaryText.AllocL(); + delete iPrimaryText; + iPrimaryText = txt; + + txt = aSecondaryText.AllocL(); + delete iSecondaryText; + iSecondaryText = txt; + } + +// ----------------------------------------------------------------------------- +// CSoftNotification::SetImagePathL +// Sets a text for a soft notification +// ----------------------------------------------------------------------------- +// +void CSoftNotification::SetImagePathL(const TDesC& aImagePath) + { + HBufC* txt = aImagePath.AllocL(); + delete iImagePath; + iImagePath = txt; + } + +// ----------------------------------------------------------------------------- +// CSoftNotification::Id +// Notification Id +// ----------------------------------------------------------------------------- +// +TInt CSoftNotification::Id() + { + return iNotificationId; + } + +// ----------------------------------------------------------------------------- +// CSoftNotification::SetPeerObserverL +// ----------------------------------------------------------------------------- +// +void CSoftNotification::SetPeerObserver(jobject aPeer, jmethodID aMethodId, + JNIEnv* aJniEnv) + { + iJniEnv = aJniEnv; + iPeer = aPeer; + iMethodId = aMethodId; + } + +// ----------------------------------------------------------------------------- +// CSoftNotification::IndicatorUserActivated +// Dynamic soft notification was accepted by user. +// ----------------------------------------------------------------------------- +// +void CSoftNotification::IndicatorUserActivated(const TDesC& /*aType*/, + CHbSymbianVariantMap &aData) + { + TInt notificationId = *reinterpret_cast(aData.Get(KNotificationId)->Data()); + TUid midletId(TUid::Uid(*reinterpret_cast(aData.Get(KMidletId)->Data()))); + if (iPeer && iMidletId == midletId && + iNotificationId == notificationId ) + { + // Can't attempt callback if JVM is processing an exception. Event is + // possibly lost by Java listener. + if (iJniEnv->ExceptionCheck() == JNI_TRUE) + { + return; + } + if (iMethodId) + { + iJniEnv->CallVoidMethod(iPeer, iMethodId, KEventNoteAccepted); + } + } + } + +// ----------------------------------------------------------------------------- +// CSoftNotification::FillNotificationParams +// ----------------------------------------------------------------------------- +// +CHbSymbianVariant* CSoftNotification::NotificationParamsL() + { + //only five parameter, so creat the array + //for five parameters to fit and append them + CDesC16ArrayFlat* array = new CDesC16ArrayFlat(5); + CleanupStack::PushL(array); + TBuf midletId; + _LIT(MidletId,"%u"); + midletId.Format(MidletId,iMidletId); + array->AppendL(midletId); + array->AppendL(reinterpret_cast(iNotificationId)); + if(iPrimaryText != NULL) + { + array->AppendL(iPrimaryText->Des()); + } + else + { + array->AppendL(KNullDesC); + } + + if(iSecondaryText != NULL) + { + array->AppendL(iSecondaryText->Des()); + } + else + { + array->AppendL(KNullDesC); + } + + if (iImagePath != NULL) + { + array->AppendL(iImagePath->Des()); + } + else + { + array->AppendL(KNullDesC); + } + MDesCArray* marray = static_cast(array); + CHbSymbianVariant* varValues = CHbSymbianVariant::NewL( marray, CHbSymbianVariant::EDesArray); + CleanupStack::PopAndDestroy(array); + return varValues; + } diff -r 4ad59aaee882 -r 2f468c1958d0 javauis/nokiauiapi_qt/src/com/nokia/mid/ui/DeviceControl.java --- a/javauis/nokiauiapi_qt/src/com/nokia/mid/ui/DeviceControl.java Fri Sep 17 08:28:21 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,334 +0,0 @@ -/* -* Copyright (c) 2006-2007 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: Provides methods for controlling vibrator and screen backlight. -* -*/ - - -package com.nokia.mid.ui; - -import org.eclipse.swt.internal.qt.OS; -import org.eclipse.swt.widgets.Internal_PackageSupport; -import org.eclipse.swt.internal.extension.DisplayExtension; - -/** - *

    - * DeviceControl provides a collection of methods to control some of the special - * features available in mobile devices, e.g., vibrator, screen (LCD) - * backlight, and screen saver appearance. - *

    - * This class is thread safe. - * @version 1.0 - * @since 1.0 - */ - -public class DeviceControl -{ - // error string for negative duration - private static final String ERR_NEGATIVE_DURATION_STRING = - "Negative duration"; - private static int inactivityTime; - private static int vibraDuration; - private static boolean vibraSupported; - - /** - * Private constructor. This class can't be instantiated. - */ - private DeviceControl() - { - } - /** - * Function return the time since the last user activity in seconds. - * @since 1.4 - */ - public static int getUserInactivityTime() - { - synchronized (DeviceControl.class) - { - if (DisplayExtension.getDisplayInstance() != null) - { - Internal_PackageSupport.getDisplayInstance().syncExec(new Runnable() - { - public void run() - { - inactivityTime = OS.MobileDevice_getUserInactivityTime( - Internal_PackageSupport.initializeMobileDevice( - Internal_PackageSupport.getDisplayInstance())); - } - }); - } - } - return inactivityTime; - } - /** - * Function reset user inactivity time. Thus, if the screen saver should be - * wholly disabled, it is needed to call the function repeatedly for example in a - * separate thread. The delay between two calls should be smaller than - * the time-out of the screensaver (the time-out may be for example 15 seconds - * or more depending on the used device). - * @since 1.4 - */ - public static void resetUserInactivityTime() - { - synchronized (DeviceControl.class) - { - if (DisplayExtension.getDisplayInstance() != null) - { - Internal_PackageSupport.getDisplayInstance().syncExec(new Runnable() - { - public void run() - { - OS.MobileDevice_resetUserInactivityTime( - Internal_PackageSupport.initializeMobileDevice( - Internal_PackageSupport.getDisplayInstance())); - } - }); - } - } - } - - /** - * Activates and deactivates lights on the device; the function - * can also be used for preventing screen saver appearance. Parameter - * num indicates the number of the device light to control. - * Currently only one num parameter is specified: - * num value 0 is used for controlling the screen backlight. - * Parameter level is a value between 0-100 - * indicating the light brightness. In many implementations - * there in only two levels: lights on and off. Value 0 indicates - * a setting for lights off (monochrome displays) or other - * minimum brightness setting (color displays), all other level - * values (1-100) are used for setting the lights on, possibly - * with different brightness levels depending on the value. A more - * higher level value always results either the same brightness setting - * as a lower one, or a more brighter setting. For many products - * passing values 1-100 will just turn the lights on. - *

    - * Note: Since in some devices key presses may turn on some device lights, - * the light settings may be changed also by the system. - *

    - * This function may also be used to prevent screen saver appearance - * (supported in S60 devices starting from S60 3rd Ed FP1, - * except for some early FP1 devices). Calling this function once - * will delay the screen saver appearance but does not disable it permanently. - * Thus, if the screen saver should be wholly disabled, - * it is needed to call the function repeatedly for example in a - * separate thread. The delay between two calls should be smaller than - * the time-out of the screensaver (the time-out may be for example 15 seconds - * or more depending on the used device). - * - * @param num is the number or id for light, 0 is used for display - * backlight, other numbers are currently left unspecified - * @param level the lighting level 0-100. 0 means "off" or other - * minimum lighting setting. For many devices greater - * than 0 value just means "light on". - * @throws java.lang.IllegalArgumentException if light num is not - * supported or level is not between 0-100. - * @since 1.0 - */ - public static void setLights(int aNum, int aLevel) - { - synchronized (DeviceControl.class) - { - if (aNum != 0) - { - throw new IllegalArgumentException("Light num is not supported"); - } - if (aLevel < 0 || aLevel > 100) - { - throw(new IllegalArgumentException("Level not between 0 and 100")); - } - final int level = aLevel; - - if (DisplayExtension.getDisplayInstance() != null) - { - Internal_PackageSupport.getDisplayInstance().syncExec(new Runnable() - { - public void run() - { - OS.MobileDevice_setLight(Internal_PackageSupport.initializeMobileDevice( - Internal_PackageSupport.getDisplayInstance()), level); - } - }); - } - } - } - - /** - * Does flashing lights effect for specific duration. - * This is a generic method for doing implementation specific light - * flashing effect. This could be used as feedback e.g. in games. - * If the device is not capable of doing the effect the method call - * silently returns. In most devices there is at least screen backlight - * and different LEDs that could be used for the effect. There might - * be maximum limit in implementation for the duration: implementation - * stops automatically the effect after maximum duration is reached. - * When the flashing lights effect ends the implementation sets the - * lights back to the light state the device was before the - * method call. - * - * @param duration duration in milliseconds the effect should be - * active - * @throws java.lang.IllegalArgumentException if duration < 0 - * @since 1.0 - */ - public static void flashLights(long aDuration) - { - synchronized (DeviceControl.class) - { - if (aDuration < 0) - { - throw new IllegalArgumentException(ERR_NEGATIVE_DURATION_STRING); - } - - final int duration; - if (aDuration > java.lang.Integer.MAX_VALUE) - { - duration = java.lang.Integer.MAX_VALUE; - } - else - { - duration =(int)aDuration; - } - if (DisplayExtension.getDisplayInstance() != null) - { - Internal_PackageSupport.getDisplayInstance().syncExec(new Runnable() - { - public void run() - { - OS.MobileDevice_flashLights( - Internal_PackageSupport.initializeMobileDevice( - Internal_PackageSupport.getDisplayInstance()),duration); - } - }); - } - } - - } - - /** - * Activates the vibra device with given duration and frequency. - * Device vibra feedback can be used, for example, as tactile feedback - * effect e.g. in games. The frequency of the vibra device - * can be controlled with freq parameter. The frequency is a logical - * number between 0 to 100, value 100 being the maximum frequency, - * value 0 always means no vibra, value 1 always needs to give some - * effect. If a device doesn't support different frequencies then - * the just frequency allowed by device is used. - *

    - * Parameter duration is used to indicate duration of vibra - * in milliseconds. Method won't block for the vibra operation. - * There is some maximum limit in implementation for the - * duration. Duration values that exceed this limit result a - * maximum vibration effect. - *

    - * If the method is called during a previous vibra operation activated - * from this method, the previous vibra operation is stopped and the new - * vibra device is activated with the new given parameters. - *

    - * IllegalStateException will be thrown if the freq is not 0 and - * if device doesn't allow vibra to be used, for example, - * it is common that when the device is being charged in desk stand or - * there is incoming call that vibra operation is not allowed. - * IllegalStateException will be thrown if there - * is no vibra capability in the device. - *

    - * Note that if the frequency is 0, and the device doesn't have vibra - * capability IllegalStateException is thrown. This means that method - * call DeviceControl.doVibra(0,0); can be used to detect - * whether vibra is supported (IllegalStateException not thrown) - * or not (IllegalStateException thrown) without any vibra operation - * being done even if it is supported. - * @param freq the frequency of the vibra device. Value 0 can be used - * for detection whether there is vibra device or not. 100 means - * maximum frequency value of specific system. Value 1 must always - * result a minimum non-zero vibra operation. - * @param duration in milliseconds the duration the vibra device is - * active - * @throws java.lang.IllegalStateException For freq values 1-100: - * the use of vibra device isn't allowed or the system doesn't have - * vibra device. For frequency value 0: the device doesn't have vibra - * device. - * @throws java.lang.IllegalArgumentException if duration or freq is - * < 0, or freq is > 100. - * @since 1.0 - */ - public static void startVibra(int aFreq, long aDuration) - { - synchronized (DeviceControl.class) - { - if ((aFreq < 0) || (aFreq > 100) || (aDuration < 0)) - { - throw new java.lang.IllegalArgumentException(); - - } - vibraDuration = (int)aDuration; - if (aDuration > java.lang.Integer.MAX_VALUE) - { - vibraDuration = java.lang.Integer.MAX_VALUE; - } - if (aFreq == 0) - { - // frequency 0 disables vibration - vibraDuration = 0; - } - if (DisplayExtension.getDisplayInstance() != null) - { - Internal_PackageSupport.getDisplayInstance().syncExec(new Runnable() - { - public void run() - { - vibraSupported = OS.MobileDevice_vibration( - Internal_PackageSupport.initializeMobileDevice( - Internal_PackageSupport.getDisplayInstance()),vibraDuration); - } - }); - } - if (!vibraSupported) - { - throw new java.lang.IllegalStateException(); - } - } - } - - /** - * Stops the vibra device. This method is for manually stopping vibra - * operation activated with - * {@link DeviceControl#startVibra(int freq, long duration)} - * method. - * If the vibra device is not active the method silently returns. - * @since 1.0 - */ - public static void stopVibra() - { - synchronized (DeviceControl.class) - { - if (DisplayExtension.getDisplayInstance() != null) - { - Internal_PackageSupport.getDisplayInstance().syncExec(new Runnable() - { - public void run() - { - vibraSupported = OS.MobileDevice_vibration( - Internal_PackageSupport.initializeMobileDevice( - Internal_PackageSupport.getDisplayInstance()),0); - } - }); - } - } - } - -} - - diff -r 4ad59aaee882 -r 2f468c1958d0 javauis/nokiauiapi_qt/src/os.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javauis/nokiauiapi_qt/src/os.cpp Mon Oct 04 00:10:53 2010 +0300 @@ -0,0 +1,262 @@ +/******************************************************************************* + * Copyright (c) 2009, 2010 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 + *******************************************************************************/ + +#include +#include +#include +#include +#include "autorelease.h" +#include "csoftnotification.h" + +static CCoeControl* convertToSymbian(QWidget* window) + { + CCoeControl* control = 0; + if (window && window->winId()) + { + control = reinterpret_cast (window->winId()); + } + return control; + } + +JNIEXPORT void JNICALL Java_com_nokia_mid_ui_internal_OS_MTouchFeedback_1InstantFeedback( + JNIEnv *, jclass, jint aStyle) + { + MTouchFeedback* feedback = MTouchFeedback::Instance(); + if (feedback) + { + feedback->InstantFeedback(static_cast (aStyle)); + } + } + +JNIEXPORT jboolean JNICALL Java_com_nokia_mid_ui_internal_OS_MTouchFeedback_1TouchFeedbackSupported( + JNIEnv *, jclass) + { + jboolean enabled = JNI_FALSE; + MTouchFeedback* feedback = MTouchFeedback::Instance(); + if (feedback) + { + enabled = feedback->TouchFeedbackSupported() ? JNI_TRUE : JNI_FALSE; + } + return enabled; + } + +JNIEXPORT void JNICALL Java_com_nokia_mid_ui_internal_OS_MTouchFeedback_1SetFeedbackArea( + JNIEnv *, jclass, jint aControl, jint aAreaIndex, jint aX, jint aY, + jint aWidth, jint aHeight, jint aStyle) + { + MTouchFeedback* feedback = MTouchFeedback::Instance(); + if (feedback) + { + CCoeControl* control = convertToSymbian( + reinterpret_cast (aControl)); + TRect feedbackRect(aX, aY, aX + aWidth, aY + aHeight); + feedback->SetFeedbackArea(control, static_cast (aAreaIndex), + feedbackRect, static_cast (aStyle), + ETouchEventStylusDown); + } + } + +JNIEXPORT void JNICALL Java_com_nokia_mid_ui_internal_OS_MTouchFeedback_1RemoveFeedbackArea( + JNIEnv *, jclass, jint aControl, jint aAreaIndex) + { + MTouchFeedback* feedback = MTouchFeedback::Instance(); + if (feedback) + { + CCoeControl* control = convertToSymbian( + reinterpret_cast (aControl)); + feedback->RemoveFeedbackArea(control, aAreaIndex); + } + } + +JNIEXPORT void JNICALL Java_com_nokia_mid_ui_internal_OS_MTouchFeedback_1RemoveFeedbackForControl( + JNIEnv *, jclass, jint aControl) + { + MTouchFeedback* feedback = MTouchFeedback::Instance(); + if (feedback) + { + CCoeControl* control = convertToSymbian( + reinterpret_cast (aControl)); + feedback->RemoveFeedbackForControl(control); + } + } + +JNIEXPORT void JNICALL Java_com_nokia_mid_ui_internal_OS_MTouchFeedback_1MoveFeedbackAreaToFirstPriority( + JNIEnv *, jclass, jint aControl, jint aAreaIndex) + { + MTouchFeedback* feedback = MTouchFeedback::Instance(); + if (feedback) + { + CCoeControl* control = convertToSymbian( + reinterpret_cast (aControl)); + feedback->MoveFeedbackAreaToFirstPriority(control, + static_cast (aAreaIndex)); + } + } + +JNIEXPORT jint JNICALL Java_com_nokia_mid_ui_internal_OS_createNativePeer( + JNIEnv* aJniEnv, jclass /*aClazz*/, jint aMidletId, + jint aNotificationId, jobject aPeer) + { + jobject peer = aJniEnv->NewWeakGlobalRef(aPeer); + if (!peer) + return KErrNoMemory; + + // creates soft notification instance + CSoftNotification* softNote = NULL; + TRAPD(err, softNote = CSoftNotification::NewL(aMidletId, + aNotificationId)); + if(err!=KErrNone) + { + aJniEnv->DeleteWeakGlobalRef((jweak)peer); + return err; + } + + // callback object class + jclass clazz = aJniEnv->GetObjectClass(peer); + jmethodID methodId = aJniEnv->GetMethodID(clazz, "notificationCallback", + "(I)V"); + + softNote->SetPeerObserver(peer, methodId, aJniEnv); + aJniEnv->DeleteLocalRef(clazz); + return reinterpret_cast (softNote); + } + +JNIEXPORT jint JNICALL +Java_com_nokia_mid_ui_internal_OS_getId(JNIEnv* /*aJniEnv*/, + jclass /*aPeer*/, jint aSoftNotificationHandle) + { + CSoftNotification* softNotification = + reinterpret_cast (aSoftNotificationHandle); + return softNotification->Id(); + } + +HBufC* JavaStringToSymbianString(JNIEnv* aJniEnv, jstring aText) + { + HBufC* bufferText = NULL; + + jboolean isCopy; + const jchar* javaChars = aJniEnv->GetStringChars(aText, &isCopy); + if (javaChars) + { + AutoReleaseStringChars cleaner(aJniEnv, aText, javaChars); + jsize length = aJniEnv->GetStringLength(aText); + TRAPD(err, bufferText = HBufC::NewL(length)); + if (err == KErrNone) + { + TText* ptr = const_cast (bufferText->Des().Ptr()); + memcpy(ptr, javaChars, length * sizeof(jchar)); + bufferText->Des().SetLength(length); + } + else + { + return bufferText; + } + } + else + { + return bufferText; + } + + return bufferText; + } + +JNIEXPORT jint JNICALL +Java_com_nokia_mid_ui_internal_OS_setText(JNIEnv* aJniEnv, jclass /*aPeer*/, + jint aSoftNotificationHandle, jstring aPrimaryText, jstring aSecondaryText) + { + CSoftNotification* softNotification = + reinterpret_cast (aSoftNotificationHandle); + // Convert from java string to Symbian descriptor + HBufC* bufferPrimaryText = NULL; + if (aPrimaryText != NULL) + { + bufferPrimaryText = JavaStringToSymbianString(aJniEnv, aPrimaryText); + if (bufferPrimaryText == NULL) + { + return KErrNoMemory; + } + } + + HBufC* bufferSecondaryText = NULL; + if (aSecondaryText != NULL) + { + bufferSecondaryText = JavaStringToSymbianString(aJniEnv, + aSecondaryText); + if (bufferSecondaryText == NULL) + { + return KErrNoMemory; + } + } + TRAPD(err,softNotification->SetTextL(*bufferPrimaryText, *bufferSecondaryText)); + return err; + } + +JNIEXPORT jint JNICALL +Java_com_nokia_mid_ui_internal_OS_removeSoftNotification(JNIEnv* /*aJniEnv*/, + jclass /*aPeer*/, jint aSoftNotificationHandle) + { + CSoftNotification* softNotification = + reinterpret_cast (aSoftNotificationHandle); + TRAPD(err,softNotification->RemoveSoftNotificationL()); + delete softNotification; + return err; + } + +JNIEXPORT jint JNICALL +Java_com_nokia_mid_ui_internal_OS_showSoftNotification(JNIEnv* /*aJniEnv*/, + jclass /*aPeer*/, jint aSoftNotificationHandle) + { + CSoftNotification* softNotification = + reinterpret_cast (aSoftNotificationHandle); + jboolean status(false); + TRAPD(err,status = softNotification->ShowSoftNotificationL()); + if(status) + { + return err; + } + else + { + return KErrNone; + } + } + +JNIEXPORT jint JNICALL +Java_com_nokia_mid_ui_internal_OS_setImagePath(JNIEnv* aJniEnv, + jclass /*aPeer*/, jint aSoftNotificationHandle, jstring aImagePath ) + { + CSoftNotification* softNotification = + reinterpret_cast (aSoftNotificationHandle); + // Convert from java string to Symbian descriptor + HBufC* bufferImagePath = NULL; + if (aImagePath != NULL) + { + bufferImagePath = JavaStringToSymbianString(aJniEnv, aImagePath); + if (bufferImagePath == NULL) + { + return KErrNoMemory; + } + } + TRAPD(err,softNotification->SetImagePathL(*bufferImagePath)); + return err; + } + +JNIEXPORT void JNICALL +Java_com_nokia_mid_ui_internal_OS_destroy(JNIEnv* /*aJniEnv*/, + jclass /*clazz*/, jint aSoftNotificationHandle) + { + if (aSoftNotificationHandle > KErrNone) + { + CSoftNotification + * softNotification = + reinterpret_cast (aSoftNotificationHandle); + delete softNotification; + } + } diff -r 4ad59aaee882 -r 2f468c1958d0 javauis/nokiauiapi_qt/src_j2me/com/nokia/mid/ui/TactileFeedback.java --- a/javauis/nokiauiapi_qt/src_j2me/com/nokia/mid/ui/TactileFeedback.java Fri Sep 17 08:28:21 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,462 +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 org.eclipse.swt.widgets.Internal_PackageSupport; -import com.nokia.mid.ui.internal.OS; - -; - -/** - * This class is a Java extension to support tactile feedback (audio, vibra, - * piezo, etc.) on touch-enabled devices. Tactile feedback is meant to give user - * more clear feeling of touch events, like tapping and dragging. The actual - * physical tactile feedback depends on the device tactile feedback - * implementation, hardware and device settings. A device may implement the - * feedback with different hardware methods, for example, vibra, audio or piezo - * hardware. - *

    - * The API supports both LCDUI and eSWT UI toolkits. - *

    - * Using this class is safe when a device does not support tactile feedback. In - * this case methods of this class can be called but this has no effect. - *

    - * Tactile feedback can be generated in two ways: - *

      - *
    • By producing direct feedback from the application.
    • - *
    • By adding feedback areas to area registry, in which case the feedback - * will be produced by the tactile feedback system automatically when the - * defined screen area (with defined feedback) is touched.
    • - *
    - *

    - * Direct feedback is given instantly with {@link #directFeedback - * directFeedback} specifying the feedback type. Direct feedback can be used - * when the user action is not just a tap in a certain area. For example if the - * user drags from one menu item to the other the application may give direct - * feedback to emphasize focus traverse. - *

    - * In case of area registry for eSWT Control, the registry needs to be updated - * every time when the size or position of a UI component changes, or when e.g. - * a state of a UI component changes in such way that feedback type also - * changes. Typically the area update may be implemented in - * controlMoved and controlResized methods of - * ControlListener interface. - *

    - * In case of area registry for LCDUI Canvas or CustomItem no further actions - * are required to update tactile feedback areas when a CustomItem is moved in a - * Form or when a Canvas is changed due to e.g. orientation switch. - *

    - * There are quite tight latency requirements for tactile feedback, and in most - * cases feedback should be triggered in less than 30ms from the time when user - * touched the screen. For the area registry the feedback system is responsible - * of fulfilling this requirement, but in case of direct feedback it is the - * responsibility of the user of this API. - *

    - * The tactile feedback has 2 different styles: Basic and Sensitive. Each type - * is defined in the device settings, not by this API. Each style of feedback is - * used in different cases. Typically Basic style is used to emphasize the tap - * event, while Sensitive style is used mostly at dragging operations, to - * emphasize focus traverse, text selection, etc. Choosing a specific style for - * each use case in up to developer, however it is good to follow the behavior - * of native applications. - *

    - * The goal of the API is to enable user-created UI components to have tactile - * feedback. The UI component types supported by the API are limited to - * user-defined components only: javax.microedition.lcdui.Canvas, - * javax.microedition.lcdui.CustomItem, - * org.eclipse.swt.widgets.Control. Other UI components (i.e. List, - * TextBox, etc.) get default tactile feedback automatically from the platform. - * - * @version 0.001 - * @since 1.2 - */ - -public class TactileFeedback -{ - - /** - * Constant for specifying basic tactile feedback style. Actual style - * behaviour is set through device settings. - */ - public static final int FEEDBACK_STYLE_BASIC = 1; - - /** - * Constant for specifying sensitive tactile feedback style. Actual style - * behaviour is set through device settings. - */ - public static final int FEEDBACK_STYLE_SENSITIVE = 2; - - private final String invalidFeedbackStyleMsg = "Invalid feedback style specified"; - private final String invalidControlTypeMsg = "Invalid object provided for tactile feedback registration"; - - private static final int TYPE_INVALID = 0; - private static final int TYPE_ESWT = 1; - private static final int TYPE_LCDUI = 2; - private static boolean feedbackEnabled; - - /** - * Constructs tactile feedback engine object. The object may be used in both - * LCDUI and eSWT java UI toolkits. TactileFeedback object must be - * constructed before using any tactile feedback methods. - */ - public TactileFeedback() - { - } - - /** - * Triggers direct tactile feedback of the specified style. - * - * @param style - * The style of the direct feedback. Use predefined values - * FEEDBACK_STYLE_BASIC, FEEDBACK_STYLE_SENSITIVE. Actual style - * behavior is set through device settings. - * @throws IllegalArgumentException - * if the style parameter has invalid type. - */ - public void directFeedback(int style) throws IllegalArgumentException - { - if ((style != FEEDBACK_STYLE_BASIC) - && (style != FEEDBACK_STYLE_SENSITIVE)) - throw new IllegalArgumentException(invalidFeedbackStyleMsg); - if (org.eclipse.swt.widgets.Display.getCurrent() == null) - { - final int fStyle = style; - com.nokia.mj.impl.nokialcdui.LCDUIInvoker - .eSWTUIThreadRunnerSyncExec(new Runnable() - { - public void run() - { - OS.MTouchFeedback_InstantFeedback(fStyle); - } - }); - - } - else - { - OS.MTouchFeedback_InstantFeedback(style); - } - } - - /** - * Queries the device if it supports tactile feedback. It is safe to use - * this class even if the device does not support tactile feedback. Methods - * of this class can be called but this has no effect. - * - * @return true if the device supports tactile feedback, false otherwise. - */ - public boolean isTouchFeedbackSupported() - { - if (org.eclipse.swt.widgets.Display.getCurrent() == null) - { - com.nokia.mj.impl.nokialcdui.LCDUIInvoker - .eSWTUIThreadRunnerSyncExec(new Runnable() - { - - public void run() - { - feedbackEnabled = OS - .MTouchFeedback_TouchFeedbackSupported(); - } - }); - } - else - { - feedbackEnabled = OS.MTouchFeedback_TouchFeedbackSupported(); - } - return feedbackEnabled; - } - - /** - * Registers area within a UI component for tactile feedback. If areas - * overlap then the feedback is given from the last registered area. - * {@link #moveFeedbackAreaToFirstPriority moveFeedbackAreaToFirstPriority} - * can be used to bring a certain area covered by another area into action. - * If an area with specified id is already registered it is - * updated. When updating an existing area there is no need to unregister it - * before re-registering again with new coordinates and/or feedback style. - * The area specified by x, y, width - * and height parameters may be located on the screen just - * partially. - * - *

    - * In case of area registry for eSWT Control, the registry needs to be - * updated every time when the size or position of a UI component changes, - * or when e.g. a state of a UI component changes in such way that feedback - * type also changes. Typically the area update may be implemented in - * controlMoved and controlResized methods of - * ControlListener interface. The update of an area may be - * implemented by calling registerFeedbackArea with the same area id but new - * coordinates and/or feedback style. - *

    - * In case of area registry for LCDUI Canvas or CustomItem no further - * actions are required to update tactile feedback areas when a CustomItem - * is moved in a Form or when a Canvas is changed due to e.g. orientation - * switch. - * - * @param uiObject - * The UI component for tactile feedback registration. Valid - * object types are: javax.microedition.lcdui.Canvas - * , javax.microedition.lcdui.CustomItem, - * org.eclipse.swt.widgets.Control. - * @param id - * Id of the new tactile feedback area to be registered. Id's are - * used to identify particular tactile feedback area within one - * UI component. Id's do not need to be consecutive numbers. - * @param x - * x-coordinate of the top-left corner of tactile feedback - * rectangle to register. - * @param y - * y-coordinate of the top-left corner of tactile feedback - * rectangle to register. - * @param width - * Width of tactile feedback rectangle to register. - * @param height - * Height of tactile feedback rectangle to register. - * @param style - * The style of the feedback for specified area. Use predefined - * values FEEDBACK_STYLE_BASIC, - * FEEDBACK_STYLE_SENSITIVE. Actual style behaviour - * is defined through device settings. - * @throws IllegalArgumentException - * if the uiObject parameter has invalid type. - * @throws IllegalArgumentException - * if the style parameter has invalid type. - */ - public void registerFeedbackArea(Object uiObject, int id, int x, int y, - int width, int height, int style) throws IllegalArgumentException - { - int type = controlType(uiObject); - if (type == TYPE_INVALID) - throw new IllegalArgumentException(invalidControlTypeMsg); - - if ((style != FEEDBACK_STYLE_BASIC) - && (style != FEEDBACK_STYLE_SENSITIVE)) - throw new IllegalArgumentException(invalidFeedbackStyleMsg); - - int controlHandle = getControlHandle(uiObject); - if (type == TYPE_LCDUI) - { - final int fControlHandle = controlHandle; - final int fId = id; - final int fX = x; - final int fY = y; - final int fWidth = width; - final int fHeight = height; - final int fStyle = style; - com.nokia.mj.impl.nokialcdui.LCDUIInvoker - .eSWTUIThreadRunnerSyncExec(new Runnable() - { - - public void run() - { - OS.MTouchFeedback_SetFeedbackArea(fControlHandle, - fId, fX, fY, fWidth, fHeight, fStyle); - } - }); - } - else - { - OS.MTouchFeedback_SetFeedbackArea(controlHandle, id, x, y, width, - height, style); - } - } - - /** - * Unregisters tactile feedback area within a UI component. - * - * @param uiObject - * The UI component for tactile feedback area de-registration. - * Valid object types are: - * javax.microedition.lcdui.Canvas, - * javax.microedition.lcdui.CustomItem, - * org.eclipse.swt.widgets.Control. - * @param id - * Id of the tactile feedback area to be unregistered. Id's are - * used to identify particular tactile feedback area within one - * UI component. If given id was not registered by - * {@link #registerFeedbackArea registerFeedbackArea} then the - * call has no effect. - * @throws IllegalArgumentException - * if the uiObject parameter has invalid type. - */ - public void unregisterFeedbackArea(Object uiObject, int id) - throws IllegalArgumentException - { - - int type = controlType(uiObject); - if (type == TYPE_INVALID) - throw new IllegalArgumentException(invalidControlTypeMsg); - - int controlHandle = getControlHandle(uiObject); - if (type == TYPE_LCDUI) - { - final int fControlHandle = controlHandle; - final int fId = id; - com.nokia.mj.impl.nokialcdui.LCDUIInvoker - .eSWTUIThreadRunnerSyncExec(new Runnable() - { - - public void run() - { - OS.MTouchFeedback_RemoveFeedbackArea( - fControlHandle, fId); - } - }); - } - else - { - OS.MTouchFeedback_RemoveFeedbackArea(controlHandle, id); - } - - } - - /** - * Removes all tactile feedback for a UI component. - * - * @param uiObject - * The UI component for tactile feedback area de-registration. - * Valid object types are: - * javax.microedition.lcdui.Canvas, - * javax.microedition.lcdui.CustomItem, - * org.eclipse.swt.widgets.Control. - * @throws IllegalArgumentException - * if the uiObject parameter has invalid type. - */ - public void removeFeedbackForComponent(Object uiObject) - { - if (isTouchFeedbackSupported() == false) - return; - - int type = controlType(uiObject); - if (type == TYPE_INVALID) - throw new IllegalArgumentException(invalidControlTypeMsg); - - int controlHandle = getControlHandle(uiObject); - - if (type == TYPE_LCDUI) - { - final int fControlHandle = controlHandle; - com.nokia.mj.impl.nokialcdui.LCDUIInvoker - .eSWTUIThreadRunnerSyncExec(new Runnable() - { - - public void run() - { - OS.MTouchFeedback_RemoveFeedbackForControl(fControlHandle); - } - }); - } - else - { - OS.MTouchFeedback_RemoveFeedbackForControl(controlHandle); - } - - } - - /** - * Moves the specified tactile feedback area to first priority. Priority is - * significant in case of overlapping tactile feedback areas. If the tactile - * feedback styles of registered areas are different, the feedback from - * first-priority area will be given. - * - * @param uiObject - * The UI component for tactile feedback area de-registration. - * Valid object types are: - * javax.microedition.lcdui.Canvas, - * javax.microedition.lcdui.CustomItem, - * org.eclipse.swt.widgets.Control. - * @param id - * Id of the tactile feedback area to be unregistered. Id's are - * used to identify particular tactile feedback area within one - * UI component. If given id was not registered by - * {@link #registerFeedbackArea registerFeedbackArea} then the - * call has no effect. - * @throws IllegalArgumentException - * if the uiObject parameter has invalid type. - */ - public void moveFeedbackAreaToFirstPriority(Object uiObject, int id) - { - if (isTouchFeedbackSupported() == false) - return; - - int type = controlType(uiObject); - if (type == TYPE_INVALID) - throw new IllegalArgumentException(invalidControlTypeMsg); - - int controlHandle = getControlHandle(uiObject); - if (type == TYPE_LCDUI) - { - final int fControlHandle = controlHandle; - final int fId = id; - com.nokia.mj.impl.nokialcdui.LCDUIInvoker - .eSWTUIThreadRunnerSyncExec(new Runnable() - { - - public void run() - { - OS.MTouchFeedback_MoveFeedbackAreaToFirstPriority( - fControlHandle, fId); - } - }); - } - else - { - OS.MTouchFeedback_MoveFeedbackAreaToFirstPriority( - controlHandle, id); - } - - } - - - private int controlType(Object obj) - { - if ((obj instanceof javax.microedition.lcdui.Canvas) - || (obj instanceof javax.microedition.lcdui.CustomItem)) - { - return TYPE_LCDUI; - } - else if ((obj instanceof org.eclipse.swt.widgets.Control)) - { - return TYPE_ESWT; - } - return TYPE_INVALID; - } - - private int getControlHandle(Object uiObject) - { - int controlHandle = 0; - org.eclipse.swt.widgets.Control eSwtControl = null; - if (uiObject instanceof javax.microedition.lcdui.Canvas - || uiObject instanceof javax.microedition.lcdui.CustomItem) - { - eSwtControl = com.nokia.mj.impl.nokialcdui.LCDUIInvoker - .getEswtControl(uiObject); - } - else if (uiObject instanceof org.eclipse.swt.widgets.Control) - { - eSwtControl = (org.eclipse.swt.widgets.Control) uiObject; - } - - if (eSwtControl != null) - { - controlHandle = Internal_PackageSupport.topHandle(eSwtControl); - } - return controlHandle; - } - -} diff -r 4ad59aaee882 -r 2f468c1958d0 javauis/nokiauiapi_qt/src_j2se/com/nokia/mid/ui/TactileFeedback.java --- a/javauis/nokiauiapi_qt/src_j2se/com/nokia/mid/ui/TactileFeedback.java Fri Sep 17 08:28:21 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,462 +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 org.eclipse.swt.widgets.Internal_PackageSupport; -import com.nokia.mid.ui.internal.OS; - -; - -/** - * This class is a Java extension to support tactile feedback (audio, vibra, - * piezo, etc.) on touch-enabled devices. Tactile feedback is meant to give user - * more clear feeling of touch events, like tapping and dragging. The actual - * physical tactile feedback depends on the device tactile feedback - * implementation, hardware and device settings. A device may implement the - * feedback with different hardware methods, for example, vibra, audio or piezo - * hardware. - *

    - * The API supports both LCDUI and eSWT UI toolkits. - *

    - * Using this class is safe when a device does not support tactile feedback. In - * this case methods of this class can be called but this has no effect. - *

    - * Tactile feedback can be generated in two ways: - *

      - *
    • By producing direct feedback from the application.
    • - *
    • By adding feedback areas to area registry, in which case the feedback - * will be produced by the tactile feedback system automatically when the - * defined screen area (with defined feedback) is touched.
    • - *
    - *

    - * Direct feedback is given instantly with {@link #directFeedback - * directFeedback} specifying the feedback type. Direct feedback can be used - * when the user action is not just a tap in a certain area. For example if the - * user drags from one menu item to the other the application may give direct - * feedback to emphasize focus traverse. - *

    - * In case of area registry for eSWT Control, the registry needs to be updated - * every time when the size or position of a UI component changes, or when e.g. - * a state of a UI component changes in such way that feedback type also - * changes. Typically the area update may be implemented in - * controlMoved and controlResized methods of - * ControlListener interface. - *

    - * In case of area registry for LCDUI Canvas or CustomItem no further actions - * are required to update tactile feedback areas when a CustomItem is moved in a - * Form or when a Canvas is changed due to e.g. orientation switch. - *

    - * There are quite tight latency requirements for tactile feedback, and in most - * cases feedback should be triggered in less than 30ms from the time when user - * touched the screen. For the area registry the feedback system is responsible - * of fulfilling this requirement, but in case of direct feedback it is the - * responsibility of the user of this API. - *

    - * The tactile feedback has 2 different styles: Basic and Sensitive. Each type - * is defined in the device settings, not by this API. Each style of feedback is - * used in different cases. Typically Basic style is used to emphasize the tap - * event, while Sensitive style is used mostly at dragging operations, to - * emphasize focus traverse, text selection, etc. Choosing a specific style for - * each use case in up to developer, however it is good to follow the behavior - * of native applications. - *

    - * The goal of the API is to enable user-created UI components to have tactile - * feedback. The UI component types supported by the API are limited to - * user-defined components only: javax.microedition.lcdui.Canvas, - * javax.microedition.lcdui.CustomItem, - * org.eclipse.swt.widgets.Control. Other UI components (i.e. List, - * TextBox, etc.) get default tactile feedback automatically from the platform. - * - * @version 0.001 - * @since 1.2 - */ - -public class TactileFeedback -{ - - /** - * Constant for specifying basic tactile feedback style. Actual style - * behaviour is set through device settings. - */ - public static final int FEEDBACK_STYLE_BASIC = 1; - - /** - * Constant for specifying sensitive tactile feedback style. Actual style - * behaviour is set through device settings. - */ - public static final int FEEDBACK_STYLE_SENSITIVE = 2; - - private final String invalidFeedbackStyleMsg = "Invalid feedback style specified"; - private final String invalidControlTypeMsg = "Invalid object provided for tactile feedback registration"; - - private static final int TYPE_INVALID = 0; - private static final int TYPE_ESWT = 1; - private static final int TYPE_LCDUI = 2; - private static boolean feedbackEnabled; - - /** - * Constructs tactile feedback engine object. The object may be used in both - * LCDUI and eSWT java UI toolkits. TactileFeedback object must be - * constructed before using any tactile feedback methods. - */ - public TactileFeedback() - { - } - - /** - * Triggers direct tactile feedback of the specified style. - * - * @param style - * The style of the direct feedback. Use predefined values - * FEEDBACK_STYLE_BASIC, FEEDBACK_STYLE_SENSITIVE. Actual style - * behavior is set through device settings. - * @throws IllegalArgumentException - * if the style parameter has invalid type. - */ - public void directFeedback(int style) throws IllegalArgumentException - { - if ((style != FEEDBACK_STYLE_BASIC) - && (style != FEEDBACK_STYLE_SENSITIVE)) - throw new IllegalArgumentException(invalidFeedbackStyleMsg); - if (org.eclipse.swt.widgets.Display.getCurrent() == null) - { - final int fStyle = style; - com.nokia.mj.impl.nokialcdui.LCDUIInvoker - .eSWTUIThreadRunnerSyncExec(new Runnable() - { - public void run() - { - // OS.MTouchFeedback_InstantFeedback(fStyle); - } - }); - - } - else - { - //OS.MTouchFeedback_InstantFeedback(style); - } - } - - /** - * Queries the device if it supports tactile feedback. It is safe to use - * this class even if the device does not support tactile feedback. Methods - * of this class can be called but this has no effect. - * - * @return true if the device supports tactile feedback, false otherwise. - */ - public boolean isTouchFeedbackSupported() - { - if (org.eclipse.swt.widgets.Display.getCurrent() == null) - { - com.nokia.mj.impl.nokialcdui.LCDUIInvoker - .eSWTUIThreadRunnerSyncExec(new Runnable() - { - - public void run() - { - // feedbackEnabled = OS - // .MTouchFeedback_TouchFeedbackSupported(); - } - }); - } - else - { - // feedbackEnabled = OS.MTouchFeedback_TouchFeedbackSupported(); - } - return feedbackEnabled; - } - - /** - * Registers area within a UI component for tactile feedback. If areas - * overlap then the feedback is given from the last registered area. - * {@link #moveFeedbackAreaToFirstPriority moveFeedbackAreaToFirstPriority} - * can be used to bring a certain area covered by another area into action. - * If an area with specified id is already registered it is - * updated. When updating an existing area there is no need to unregister it - * before re-registering again with new coordinates and/or feedback style. - * The area specified by x, y, width - * and height parameters may be located on the screen just - * partially. - * - *

    - * In case of area registry for eSWT Control, the registry needs to be - * updated every time when the size or position of a UI component changes, - * or when e.g. a state of a UI component changes in such way that feedback - * type also changes. Typically the area update may be implemented in - * controlMoved and controlResized methods of - * ControlListener interface. The update of an area may be - * implemented by calling registerFeedbackArea with the same area id but new - * coordinates and/or feedback style. - *

    - * In case of area registry for LCDUI Canvas or CustomItem no further - * actions are required to update tactile feedback areas when a CustomItem - * is moved in a Form or when a Canvas is changed due to e.g. orientation - * switch. - * - * @param uiObject - * The UI component for tactile feedback registration. Valid - * object types are: javax.microedition.lcdui.Canvas - * , javax.microedition.lcdui.CustomItem, - * org.eclipse.swt.widgets.Control. - * @param id - * Id of the new tactile feedback area to be registered. Id's are - * used to identify particular tactile feedback area within one - * UI component. Id's do not need to be consecutive numbers. - * @param x - * x-coordinate of the top-left corner of tactile feedback - * rectangle to register. - * @param y - * y-coordinate of the top-left corner of tactile feedback - * rectangle to register. - * @param width - * Width of tactile feedback rectangle to register. - * @param height - * Height of tactile feedback rectangle to register. - * @param style - * The style of the feedback for specified area. Use predefined - * values FEEDBACK_STYLE_BASIC, - * FEEDBACK_STYLE_SENSITIVE. Actual style behaviour - * is defined through device settings. - * @throws IllegalArgumentException - * if the uiObject parameter has invalid type. - * @throws IllegalArgumentException - * if the style parameter has invalid type. - */ - public void registerFeedbackArea(Object uiObject, int id, int x, int y, - int width, int height, int style) throws IllegalArgumentException - { - int type = controlType(uiObject); - if (type == TYPE_INVALID) - throw new IllegalArgumentException(invalidControlTypeMsg); - - if ((style != FEEDBACK_STYLE_BASIC) - && (style != FEEDBACK_STYLE_SENSITIVE)) - throw new IllegalArgumentException(invalidFeedbackStyleMsg); - - int controlHandle = getControlHandle(uiObject); - if (type == TYPE_LCDUI) - { - final int fControlHandle = controlHandle; - final int fId = id; - final int fX = x; - final int fY = y; - final int fWidth = width; - final int fHeight = height; - final int fStyle = style; - com.nokia.mj.impl.nokialcdui.LCDUIInvoker - .eSWTUIThreadRunnerSyncExec(new Runnable() - { - - public void run() - { - // OS.MTouchFeedback_SetFeedbackArea(fControlHandle, - // fId, fX, fY, fWidth, fHeight, fStyle); - } - }); - } - else - { - //OS.MTouchFeedback_SetFeedbackArea(controlHandle, id, x, y, width, - // height, style); - } - } - - /** - * Unregisters tactile feedback area within a UI component. - * - * @param uiObject - * The UI component for tactile feedback area de-registration. - * Valid object types are: - * javax.microedition.lcdui.Canvas, - * javax.microedition.lcdui.CustomItem, - * org.eclipse.swt.widgets.Control. - * @param id - * Id of the tactile feedback area to be unregistered. Id's are - * used to identify particular tactile feedback area within one - * UI component. If given id was not registered by - * {@link #registerFeedbackArea registerFeedbackArea} then the - * call has no effect. - * @throws IllegalArgumentException - * if the uiObject parameter has invalid type. - */ - public void unregisterFeedbackArea(Object uiObject, int id) - throws IllegalArgumentException - { - - int type = controlType(uiObject); - if (type == TYPE_INVALID) - throw new IllegalArgumentException(invalidControlTypeMsg); - - int controlHandle = getControlHandle(uiObject); - if (type == TYPE_LCDUI) - { - final int fControlHandle = controlHandle; - final int fId = id; - com.nokia.mj.impl.nokialcdui.LCDUIInvoker - .eSWTUIThreadRunnerSyncExec(new Runnable() - { - - public void run() - { - // OS.MTouchFeedback_RemoveFeedbackArea( - // fControlHandle, fId); - } - }); - } - else - { - //OS.MTouchFeedback_RemoveFeedbackArea(controlHandle, id); - } - - } - - /** - * Removes all tactile feedback for a UI component. - * - * @param uiObject - * The UI component for tactile feedback area de-registration. - * Valid object types are: - * javax.microedition.lcdui.Canvas, - * javax.microedition.lcdui.CustomItem, - * org.eclipse.swt.widgets.Control. - * @throws IllegalArgumentException - * if the uiObject parameter has invalid type. - */ - public void removeFeedbackForComponent(Object uiObject) - { - if (isTouchFeedbackSupported() == false) - return; - - int type = controlType(uiObject); - if (type == TYPE_INVALID) - throw new IllegalArgumentException(invalidControlTypeMsg); - - int controlHandle = getControlHandle(uiObject); - - if (type == TYPE_LCDUI) - { - final int fControlHandle = controlHandle; - com.nokia.mj.impl.nokialcdui.LCDUIInvoker - .eSWTUIThreadRunnerSyncExec(new Runnable() - { - - public void run() - { - // OS.MTouchFeedback_RemoveFeedbackForControl(fControlHandle); - } - }); - } - else - { - //OS.MTouchFeedback_RemoveFeedbackForControl(controlHandle); - } - - } - - /** - * Moves the specified tactile feedback area to first priority. Priority is - * significant in case of overlapping tactile feedback areas. If the tactile - * feedback styles of registered areas are different, the feedback from - * first-priority area will be given. - * - * @param uiObject - * The UI component for tactile feedback area de-registration. - * Valid object types are: - * javax.microedition.lcdui.Canvas, - * javax.microedition.lcdui.CustomItem, - * org.eclipse.swt.widgets.Control. - * @param id - * Id of the tactile feedback area to be unregistered. Id's are - * used to identify particular tactile feedback area within one - * UI component. If given id was not registered by - * {@link #registerFeedbackArea registerFeedbackArea} then the - * call has no effect. - * @throws IllegalArgumentException - * if the uiObject parameter has invalid type. - */ - public void moveFeedbackAreaToFirstPriority(Object uiObject, int id) - { - if (isTouchFeedbackSupported() == false) - return; - - int type = controlType(uiObject); - if (type == TYPE_INVALID) - throw new IllegalArgumentException(invalidControlTypeMsg); - - int controlHandle = getControlHandle(uiObject); - if (type == TYPE_LCDUI) - { - final int fControlHandle = controlHandle; - final int fId = id; - com.nokia.mj.impl.nokialcdui.LCDUIInvoker - .eSWTUIThreadRunnerSyncExec(new Runnable() - { - - public void run() - { - // OS.MTouchFeedback_MoveFeedbackAreaToFirstPriority( - // fControlHandle, fId); - } - }); - } - else - { - // OS.MTouchFeedback_MoveFeedbackAreaToFirstPriority( - // controlHandle, id); - } - - } - - - private int controlType(Object obj) - { - if ((obj instanceof javax.microedition.lcdui.Canvas) - || (obj instanceof javax.microedition.lcdui.CustomItem)) - { - return TYPE_LCDUI; - } - else if ((obj instanceof org.eclipse.swt.widgets.Control)) - { - return TYPE_ESWT; - } - return TYPE_INVALID; - } - - private int getControlHandle(Object uiObject) - { - int controlHandle = 0; - org.eclipse.swt.widgets.Control eSwtControl = null; - if (uiObject instanceof javax.microedition.lcdui.Canvas - || uiObject instanceof javax.microedition.lcdui.CustomItem) - { - eSwtControl = com.nokia.mj.impl.nokialcdui.LCDUIInvoker - .getEswtControl(uiObject); - } - else if (uiObject instanceof org.eclipse.swt.widgets.Control) - { - eSwtControl = (org.eclipse.swt.widgets.Control) uiObject; - } - - if (eSwtControl != null) - { - controlHandle = Internal_PackageSupport.topHandle(eSwtControl); - } - return controlHandle; - } - -} diff -r 4ad59aaee882 -r 2f468c1958d0 javauis/subsystem_qt.mk --- a/javauis/subsystem_qt.mk Fri Sep 17 08:28:21 2010 +0300 +++ b/javauis/subsystem_qt.mk Mon Oct 04 00:10:53 2010 +0300 @@ -14,10 +14,10 @@ # Description: Makefile for Qt based components and subsystems # -SUBSYSTEMS += eswt_qt/build -COMPONENTS += lcdui_qt/build runtimeui_qt/build nokiauiapi_qt/build mmapi_qt/build amms_qt/build m3g_qt/build +SUBSYSTEMS += eswt_qt/build nokiauiapi_qt/build +COMPONENTS += coreui_qt/build lcdui_qt/build runtimeui_qt/build mmapi_qt/build amms_qt/build m3g_qt/build -SYMBIAN_ONLY += mmapi_qt/build amms_qt/build m3g_qt/build +SYMBIAN_ONLY += coreui_qt/build mmapi_qt/build amms_qt/build m3g_qt/build # Build order dependency -lcdui_qt/build runtimeui_qt/build nokiauiapi_qt/build mmapi_qt/build amms_qt/build m3g_qt/build: eswt_qt/build +coreui_qt/build lcdui_qt/build runtimeui_qt/build nokiauiapi_qt/build mmapi_qt/build amms_qt/build m3g_qt/build: eswt_qt/build diff -r 4ad59aaee882 -r 2f468c1958d0 rom/java_3_1.iby --- a/rom/java_3_1.iby Fri Sep 17 08:28:21 2010 +0300 +++ b/rom/java_3_1.iby Mon Oct 04 00:10:53 2010 +0300 @@ -105,11 +105,9 @@ ///////////////////////// // CoreUi -/* file=ABI_DIR\BUILD_DIR\javacoreui.dll SHARED_LIB_DIR\javacoreui.dll data=JAVA_VM_RES_BLD\javacoreui.odc JAVA_VM_RES_IMG\javacoreui.odc -SCALABLE_IMAGE(APP_BITMAP_DIR,APP_BITMAP_DIR,javastartscreen) -*/ + // eSWT file=ABI_DIR\BUILD_DIR\eswtqt.dll SHARED_LIB_DIR\eswtqt.dll data=JAVA_VM_RES_BLD\eswtqt.odc JAVA_VM_RES_IMG\eswtqt.odc @@ -144,6 +142,8 @@ // Nokia UI API file=ABI_DIR\BUILD_DIR\javanokiaui.dll SHARED_LIB_DIR\javanokiaui.dll data=JAVA_VM_RES_BLD\javanokiaui.odc JAVA_VM_RES_IMG\javanokiaui.odc +file=ABI_DIR\BUILD_DIR\javasoftindicatorplugin.dll SHARED_LIB_DIR\javasoftindicatorplugin.dll +data=DATAZ_\resource\plugins\indicators\javasoftindicatorplugin.qtplugin resource\plugins\indicators\javasoftindicatorplugin.qtplugin // Nokia Sound API file=ABI_DIR\BUILD_DIR\javanokiasound.dll SHARED_LIB_DIR\javanokiasound.dll diff -r 4ad59aaee882 -r 2f468c1958d0 rom/javalocalization_3_1.iby --- a/rom/javalocalization_3_1.iby Fri Sep 17 08:28:21 2010 +0300 +++ b/rom/javalocalization_3_1.iby Mon Oct 04 00:10:53 2010 +0300 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2009-2010 Nokia Corporation and/or its subsidiary(-ies). * All rights reserved. * This component and the accompanying materials are made available * under the terms of the License "Eclipse Public License v1.0" @@ -19,6 +19,7 @@ #define __JAVALOCALIZATION_IBY__ data=DATAZ_\RESOURCE_FILES_DIR\java\javausermessages.rsc RESOURCE_FILES_DIR\java\javausermessages.rsc -data=DATAZ_\QT_TRANSLATIONS_DIR\javaruntimeapplicationsettings.qm QT_TRANSLATIONS_DIR\javaruntimeapplicationsettings.qm +data=DATAZ_\QT_TRANSLATIONS_DIR\javaruntimeapplicationsettings.qm QT_TRANSLATIONS_DIR\javaruntimeapplicationsettings.qm +data=DATAZ_\QT_TRANSLATIONS_DIR\javaapplicationinstaller.qm QT_TRANSLATIONS_DIR\javaapplicationinstaller.qm #endif // __JAVALOCALIZATION_IBY__ diff -r 4ad59aaee882 -r 2f468c1958d0 rom/midpodclist30 --- a/rom/midpodclist30 Fri Sep 17 08:28:21 2010 +0300 +++ b/rom/midpodclist30 Mon Oct 04 00:10:53 2010 +0300 @@ -6,6 +6,7 @@ javacomm.odc javacomms.odc javaconnectionmanager.odc +javacoreui.odc javadatagram.odc javafile.odc javafileutils.odc