--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/build/buildutils/checkemptydirectories.py Fri Sep 17 16:44:34 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()
--- a/build/buildutils/extractJavaLocFiles_qt.py Thu Sep 02 13:22:59 2010 +0300
+++ b/build/buildutils/extractJavaLocFiles_qt.py Fri Sep 17 16:44:34 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
Binary file build/loc/resources_qt.jar has changed
--- a/build/makefile.javaversion Thu Sep 02 13:22:59 2010 +0300
+++ b/build/makefile.javaversion Fri Sep 17 16:44:34 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
--- a/build/sis/java_3_1.pkg Thu Sep 02 13:22:59 2010 +0300
+++ b/build/sis/java_3_1.pkg Fri Sep 17 16:44:34 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"
--- a/build/symbian_uids.pri Thu Sep 02 13:22:59 2010 +0300
+++ b/build/symbian_uids.pri Fri Sep 17 16:44:34 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)
--- a/inc/build_defines.hrh Thu Sep 02 13:22:59 2010 +0300
+++ b/inc/build_defines.hrh Fri Sep 17 16:44:34 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
--- a/inc/build_defines.pri Thu Sep 02 13:22:59 2010 +0300
+++ b/inc/build_defines.pri Fri Sep 17 16:44:34 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
--- a/inc/java.txt Thu Sep 02 13:22:59 2010 +0300
+++ b/inc/java.txt Fri Sep 17 16:44:34 2010 +0300
@@ -1,1 +1,1 @@
-2.2.13
+2.2.15
--- a/java_stubs/javaregistry/clientserver/client/build/javaregclient.mmp Thu Sep 02 13:22:59 2010 +0300
+++ b/java_stubs/javaregistry/clientserver/client/build/javaregclient.mmp Fri Sep 17 16:44:34 2010 +0300
@@ -41,6 +41,7 @@
SOURCE writeablejavaregistry.cpp
SOURCE javaregistrybackupsupport.cpp
SOURCE javaregconverter.cpp
+SOURCE javaattribute.cpp
SOURCEPATH ../../common/src
SOURCE javaregproperty.cpp
--- a/java_stubs/javaregistry/clientserver/client/bwins/javaregistryclientu.def Thu Sep 02 13:22:59 2010 +0300
+++ b/java_stubs/javaregistry/clientserver/client/bwins/javaregistryclientu.def Fri Sep 17 16:44:34 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<class TUid> &, 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<class HBufC8> &)
+ ?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<class TUid> &, 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<class HBufC8> &)
?GetEmbeddedEntries@CJavaRegistryPackageEntry@Java@@QBEXAAV?$RArray@VTUid@@@@@Z @ 33 NONAME ; void Java::CJavaRegistryPackageEntry::GetEmbeddedEntries(class RArray<class TUid> &) const
?GetEmbeddedEntries@CWriteableJavaRegistryPackageEntry@Registry@Manager@Java@@QBEXAAV?$RArray@VTUid@@@@@Z @ 34 NONAME ; void Java::Manager::Registry::CWriteableJavaRegistryPackageEntry::GetEmbeddedEntries(class RArray<class TUid> &) 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<class TUid> &) const
?GetRegistryEntryUidsL@CJavaRegistry@Java@@QBEXW4TJavaRegistryEntryType@2@AAV?$RArray@VTUid@@@@@Z @ 37 NONAME ; void Java::CJavaRegistry::GetRegistryEntryUidsL(enum Java::TJavaRegistryEntryType, class RArray<class TUid> &) const
?GetRegistryEntryUidsL@CWriteableJavaRegistry@Registry@Manager@Java@@QBEXAAV?$RArray@VTUid@@@@@Z @ 38 NONAME ; void Java::Manager::Registry::CWriteableJavaRegistry::GetRegistryEntryUidsL(class RArray<class TUid> &) 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<class Java::Manager::Registry::CJavaProperty> const &, class RArray<class TUid> &) 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<class TUid> &) 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<class HBufC16> &)
+ ?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<class HBufC16> &)
?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<class HBufC8> 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<class HBufC16> 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<class HBufC8> 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<class HBufC16> 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<class Java::MJavaAttribute> const & Java::Manager::Registry::CWriteableJavaRegistryApplicationEntry::AttributesL(void) const
?AttributesL@CWriteableJavaRegistryEntry@Registry@Manager@Java@@UBEABV?$RPointerArray@VMJavaAttribute@Java@@@@XZ @ 170 NONAME ; class RPointerArray<class Java::MJavaAttribute> const & Java::Manager::Registry::CWriteableJavaRegistryEntry::AttributesL(void) const
?AttributesL@CWriteableJavaRegistryPackageEntry@Registry@Manager@Java@@UBEABV?$RPointerArray@VMJavaAttribute@Java@@@@XZ @ 171 NONAME ; class RPointerArray<class Java::MJavaAttribute> 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<class Java::Manager::Registry::CJavaProperty> const &, class RArray<class TUid> &, 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<class Java::Manager::Registry::CJavaProperty> const &, class RArray<class TUid> &, 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<class TUid> &, 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
--- a/java_stubs/javaregistry/clientserver/client/eabi/javaregistryclientu.def Thu Sep 02 13:22:59 2010 +0300
+++ b/java_stubs/javaregistry/clientserver/client/eabi/javaregistryclientu.def Fri Sep 17 16:44:34 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 ; #<TI>#
_ZTIN4Java18CJavaRegistryEntryE @ 141 NONAME ; #<TI>#
- _ZTIN4Java7Manager8Registry13CJavaPropertyE @ 142 NONAME ; #<TI>#
- _ZTIN4Java7Manager8Registry18CJavaPropertyArrayE @ 143 NONAME ; #<TI>#
+ _ZTIN4Java7Manager8Registry13CJavaPropertyE @ 142 NONAME ABSENT ; #<TI>#
+ _ZTIN4Java7Manager8Registry18CJavaPropertyArrayE @ 143 NONAME ABSENT ; #<TI>#
_ZTIN4Java7Manager8Registry22CWriteableJavaRegistryE @ 144 NONAME ; #<TI>#
- _ZTIN4Java7Manager8Registry26CJavaRegistryBackupSupportE @ 145 NONAME ; #<TI>#
+ _ZTIN4Java7Manager8Registry26CJavaRegistryBackupSupportE @ 145 NONAME ABSENT ; #<TI>#
_ZTIN4Java7Manager8Registry27CWriteableJavaRegistryEntryE @ 146 NONAME ; #<TI>#
_ZTIN4Java7Manager8Registry34CWriteableJavaRegistryPackageEntryE @ 147 NONAME ; #<TI>#
_ZTVN4Java13CJavaRegistryE @ 148 NONAME ; #<VT>#
_ZTVN4Java18CJavaRegistryEntryE @ 149 NONAME ; #<VT>#
- _ZTVN4Java7Manager8Registry13CJavaPropertyE @ 150 NONAME ; #<VT>#
- _ZTVN4Java7Manager8Registry18CJavaPropertyArrayE @ 151 NONAME ; #<VT>#
+ _ZTVN4Java7Manager8Registry13CJavaPropertyE @ 150 NONAME ABSENT ; #<VT>#
+ _ZTVN4Java7Manager8Registry18CJavaPropertyArrayE @ 151 NONAME ABSENT ; #<VT>#
_ZTVN4Java7Manager8Registry22CWriteableJavaRegistryE @ 152 NONAME ; #<VT>#
- _ZTVN4Java7Manager8Registry26CJavaRegistryBackupSupportE @ 153 NONAME ; #<VT>#
+ _ZTVN4Java7Manager8Registry26CJavaRegistryBackupSupportE @ 153 NONAME ABSENT ; #<VT>#
_ZTVN4Java7Manager8Registry27CWriteableJavaRegistryEntryE @ 154 NONAME ; #<VT>#
_ZTVN4Java7Manager8Registry34CWriteableJavaRegistryPackageEntryE @ 155 NONAME ; #<VT>#
- _ZN4Java7Manager8Registry38CWriteableJavaRegistryApplicationEntry12SetPropertyLEPNS1_13CJavaPropertyE @ 156 NONAME
+ _ZN4Java7Manager8Registry38CWriteableJavaRegistryApplicationEntry12SetPropertyLEPNS1_13CJavaPropertyE @ 156 NONAME ABSENT
_ZTIN4Java7Manager8Registry38CWriteableJavaRegistryApplicationEntryE @ 157 NONAME ; #<TI>#
_ZTVN4Java7Manager8Registry38CWriteableJavaRegistryApplicationEntryE @ 158 NONAME ; #<VT>#
- _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 ; #<TI>#
_ZTIN4Java7Manager8Registry15CJavaAttributesE @ 195 NONAME ABSENT ; #<TI>#
_ZTVN4Java7Manager8Registry14CJavaAttributeE @ 196 NONAME ABSENT ; #<VT>#
_ZTVN4Java7Manager8Registry15CJavaAttributesE @ 197 NONAME ABSENT ; #<VT>#
- _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 ; #<TI>#
- _ZTVN4Java14CJavaAttributeE @ 202 NONAME ABSENT ; #<VT>#
+ _ZTIN4Java14CJavaAttributeE @ 201 NONAME ; #<TI>#
+ _ZTVN4Java14CJavaAttributeE @ 202 NONAME ; #<VT>#
_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
--- a/java_stubs/javaregistry/clientserver/client/inc/writeablejavaregistrypackageentry.h Thu Sep 02 13:22:59 2010 +0300
+++ b/java_stubs/javaregistry/clientserver/client/inc/writeablejavaregistrypackageentry.h Fri Sep 17 16:44:34 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:
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/java_stubs/javaregistry/clientserver/client/src/javaattribute.cpp Fri Sep 17 16:44:34 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
--- a/java_stubs/javaregistry/clientserver/client/src/javaregistrypackageentry.cpp Thu Sep 02 13:22:59 2010 +0300
+++ b/java_stubs/javaregistry/clientserver/client/src/javaregistrypackageentry.cpp Fri Sep 17 16:44:34 2010 +0300
@@ -119,3 +119,11 @@
{
return 0;
}
+
+// ---------------------------------------------------------------------------
+// CJavaRegistryPackageEntry::IsPreinstalled
+// ---------------------------------------------------------------------------
+EXPORT_C TBool CJavaRegistryPackageEntry::IsPreinstalled() const
+{
+ return EFalse;
+}
--- a/java_stubs/javaregistry/clientserver/client/src/writeablejavaregistrypackageentry.cpp Thu Sep 02 13:22:59 2010 +0300
+++ b/java_stubs/javaregistry/clientserver/client/src/writeablejavaregistrypackageentry.cpp Fri Sep 17 16:44:34 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;
+}
+
--- a/javacommons/connectionmanager/src.s60/connectionmanager.cpp Thu Sep 02 13:22:59 2010 +0300
+++ b/javacommons/connectionmanager/src.s60/connectionmanager.cpp Fri Sep 17 16:44:34 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());
--- a/javacommons/security/javasrc.cdc/com/nokia/mj/impl/security/midp/authorization/PermissionGranter.java Thu Sep 02 13:22:59 2010 +0300
+++ b/javacommons/security/javasrc.cdc/com/nokia/mj/impl/security/midp/authorization/PermissionGranter.java Fri Sep 17 16:44:34 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(
--- a/javacommons/security/javasrc/com/nokia/mj/impl/security/midp/storage/SecurityStorage.java Thu Sep 02 13:22:59 2010 +0300
+++ b/javacommons/security/javasrc/com/nokia/mj/impl/security/midp/storage/SecurityStorage.java Fri Sep 17 16:44:34 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());
--- a/javacommons/security/javasrc/com/nokia/mj/impl/security/utils/SecurityPermissionTexts.java Thu Sep 02 13:22:59 2010 +0300
+++ b/javacommons/security/javasrc/com/nokia/mj/impl/security/utils/SecurityPermissionTexts.java Fri Sep 17 16:44:34 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
--- a/javacommons/security/javasrc/com/nokia/mj/impl/security/utils/SecurityPromptMessage.java Thu Sep 02 13:22:59 2010 +0300
+++ b/javacommons/security/javasrc/com/nokia/mj/impl/security/utils/SecurityPromptMessage.java Fri Sep 17 16:44:34 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
--- a/javacommons/security/src/midpauthenticationmoduleimpl.cpp Thu Sep 02 13:22:59 2010 +0300
+++ b/javacommons/security/src/midpauthenticationmoduleimpl.cpp Fri Sep 17 16:44:34 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<string> CAs, char *, char *, CERT_DETAILS*);
+int verifyCertChain(char **, int, const unsigned char *, int, vector<string> 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; i<len; i++)
{
@@ -87,20 +88,24 @@
jar_hash[0] = '\0';
root_hash = new char[MD5_DIGEST_LEN + 1];
root_hash[0] = '\0';
+ root_id = new char[2*SHA_1_DIGEST_LEN + 1];
+ root_id[0] = '\0';
details = new CERT_DETAILS();
int chain_verification_result = verifyCertChain(
authInfo->cert_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<string> 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
--- a/javacommons/security/src/utils/securityutils.cpp Thu Sep 02 13:22:59 2010 +0300
+++ b/javacommons/security/src/utils/securityutils.cpp Fri Sep 17 16:44:34 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<SHA_1_DIGEST_LEN; i++)
+ {
+ sprintf(tmp_pkey_hash, "%02X", tmp[i]);
+ tmp_pkey_hash = tmp_pkey_hash + 2;
+ }
+ pkey_hash[2*SHA_1_DIGEST_LEN] = '\0';
+ tmp_pkey_hash = NULL;
+}
+
void SecurityUtils::getAuthInfo(JNIEnv* env, jobjectArray authInfos, int authInfoIndex, AUTH_INFO * authInfo)
{
jboolean isCopy;
--- a/javacommons/security/src/utils/securityutils.h Thu Sep 02 13:22:59 2010 +0300
+++ b/javacommons/security/src/utils/securityutils.h Fri Sep 17 16:44:34 2010 +0300
@@ -95,6 +95,7 @@
char * domain_category;
char * jar_hash;
char * root_hash;
+ char * root_id;
int chain_index;
int predefined_domain_category;
CERT_DETAILS* signing_cert;
@@ -120,6 +121,7 @@
static void getAuthInfo(JNIEnv*, jobjectArray, int, AUTH_INFO *);
static jobject getJNICertDetails(JNIEnv *, const CERT_DETAILS);
static jobjectArray getJNIAuthCredentials(JNIEnv *, std::vector<AUTH_CREDENTIALS*>);
+ static void computePublicKeyHash(X509 *, char *);
private:
static bool checkIMEI(const X509_EXTENSION *, const char *);
static char * computeDigest1(const char*);
--- a/javacommons/utils/javasrc/com/nokia/mj/impl/utils/DebugUtils.java Thu Sep 02 13:22:59 2010 +0300
+++ b/javacommons/utils/javasrc/com/nokia/mj/impl/utils/DebugUtils.java Fri Sep 17 16:44:34 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);
--- a/javacommons/utils/javasrc/com/nokia/mj/impl/utils/ErrorMessageBase.java Thu Sep 02 13:22:59 2010 +0300
+++ b/javacommons/utils/javasrc/com/nokia/mj/impl/utils/ErrorMessageBase.java Fri Sep 17 16:44:34 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 ---------------------------- */
--- a/javacommons/utils/javasrc/com/nokia/mj/impl/utils/Formatter.java Thu Sep 02 13:22:59 2010 +0300
+++ b/javacommons/utils/javasrc/com/nokia/mj/impl/utils/Formatter.java Fri Sep 17 16:44:34 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 ----------------------------- */
/**
--- a/javacommons/utils/javasrc/com/nokia/mj/impl/utils/Id.java Thu Sep 02 13:22:59 2010 +0300
+++ b/javacommons/utils/javasrc/com/nokia/mj/impl/utils/Id.java Fri Sep 17 16:44:34 2010 +0300
@@ -40,7 +40,7 @@
this.iQtLocString = aQtLocString;
}
- public String getString(int aPlatform)
+ String getString(int aPlatform)
{
if (aPlatform == ResourceLoader.QT)
{
--- a/javacommons/utils/javasrc/com/nokia/mj/impl/utils/InstallerDetailedErrorMessage.java Thu Sep 02 13:22:59 2010 +0300
+++ b/javacommons/utils/javasrc/com/nokia/mj/impl/utils/InstallerDetailedErrorMessage.java Fri Sep 17 16:44:34 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;
--- a/javacommons/utils/javasrc/com/nokia/mj/impl/utils/InstallerErrorMessage.java Thu Sep 02 13:22:59 2010 +0300
+++ b/javacommons/utils/javasrc/com/nokia/mj/impl/utils/InstallerErrorMessage.java Fri Sep 17 16:44:34 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;
--- a/javacommons/utils/javasrc/com/nokia/mj/impl/utils/Logger.java Thu Sep 02 13:22:59 2010 +0300
+++ b/javacommons/utils/javasrc/com/nokia/mj/impl/utils/Logger.java Fri Sep 17 16:44:34 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);
}
--- a/javacommons/utils/javasrc/com/nokia/mj/impl/utils/ResourceLoader.java Thu Sep 02 13:22:59 2010 +0300
+++ b/javacommons/utils/javasrc/com/nokia/mj/impl/utils/ResourceLoader.java Fri Sep 17 16:44:34 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);
* </pre>
*/
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.
--- a/javacommons/utils/src.s60/properties.cpp Thu Sep 02 13:22:59 2010 +0300
+++ b/javacommons/utils/src.s60/properties.cpp Fri Sep 17 16:44:34 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<KSysUtilVersionTextLength> 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();
--- a/javacommons/utils/src/logger.cpp Thu Sep 02 13:22:59 2010 +0300
+++ b/javacommons/utils/src/logger.cpp Fri Sep 17 16:44:34 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);
}
--- a/javacommons/utils/tsrc/build/java/build.xml Thu Sep 02 13:22:59 2010 +0300
+++ b/javacommons/utils/tsrc/build/java/build.xml Fri Sep 17 16:44:34 2010 +0300
@@ -44,6 +44,11 @@
<exec executable="${java.bin.root}/bin/javaunittester">
<arg line="-mainclass=com.nokia.mj.impl.utils.DebugUtilsTests"/>
</exec>
+
+ <echo>Running LoggerTests tests</echo>
+ <exec executable="${java.bin.root}/bin/javaunittester">
+ <arg line="-mainclass=com.nokia.mj.impl.utils.LoggerTests"/>
+ </exec>
</target>
<target name="main" depends="clean,run"/>
--- a/javacommons/utils/tsrc/build/native/exports.inf Thu Sep 02 13:22:59 2010 +0300
+++ b/javacommons/utils/tsrc/build/native/exports.inf Fri Sep 17 16:44:34 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
--- a/javacommons/utils/tsrc/javasrc/com/nokia/mj/impl/utils/DebugUtilsTests.java Thu Sep 02 13:22:59 2010 +0300
+++ b/javacommons/utils/tsrc/javasrc/com/nokia/mj/impl/utils/DebugUtilsTests.java Fri Sep 17 16:44:34 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();
}
}
}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/javacommons/utils/tsrc/javasrc/com/nokia/mj/impl/utils/LoggerTests.java Fri Sep 17 16:44:34 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);
+ }
+}
--- a/javacommons/utils/tsrc/tst.bat Thu Sep 02 13:22:59 2010 +0300
+++ b/javacommons/utils/tsrc/tst.bat Fri Sep 17 16:44:34 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
--- a/javaextensions/bluetooth/bluetoothcommons/bluetoothplatformcontrol/src.s60/s60bluetoothplatformcontrol.cpp Thu Sep 02 13:22:59 2010 +0300
+++ b/javaextensions/bluetooth/bluetoothcommons/bluetoothplatformcontrol/src.s60/s60bluetoothplatformcontrol.cpp Fri Sep 17 16:44:34 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());
--- a/javaextensions/bluetooth/bluetoothcommons/bluetoothplatformcontrol/src/btplatformcontrolnative.cpp Thu Sep 02 13:22:59 2010 +0300
+++ b/javaextensions/bluetooth/bluetoothcommons/bluetoothplatformcontrol/src/btplatformcontrolnative.cpp Fri Sep 17 16:44:34 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;
}
--- a/javaextensions/bluetooth/bluetoothcommons/src.s60/bluetoothclientconnection.cpp Thu Sep 02 13:22:59 2010 +0300
+++ b/javaextensions/bluetooth/bluetoothcommons/src.s60/bluetoothclientconnection.cpp Fri Sep 17 16:44:34 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)
--- a/javaextensions/bluetooth/bluetoothcommons/src.s60/bturlparams.cpp Thu Sep 02 13:22:59 2010 +0300
+++ b/javaextensions/bluetooth/bluetoothcommons/src.s60/bturlparams.cpp Fri Sep 17 16:44:34 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;
}
--- a/javaextensions/bluetooth/bluetoothcommons/src.s60/servicerecord.cpp Thu Sep 02 13:22:59 2010 +0300
+++ b/javaextensions/bluetooth/bluetoothcommons/src.s60/servicerecord.cpp Fri Sep 17 16:44:34 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};
--- a/javaextensions/bluetooth/bluetoothplugins/btl2cappushplugin/src.s60/btl2capserverconnection.cpp Thu Sep 02 13:22:59 2010 +0300
+++ b/javaextensions/bluetooth/bluetoothplugins/btl2cappushplugin/src.s60/btl2capserverconnection.cpp Fri Sep 17 16:44:34 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)
--- a/javaextensions/bluetooth/bluetoothplugins/btl2cappushplugin/src/btl2cappushserverconnection.cpp Thu Sep 02 13:22:59 2010 +0300
+++ b/javaextensions/bluetooth/bluetoothplugins/btl2cappushplugin/src/btl2cappushserverconnection.cpp Fri Sep 17 16:44:34 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),
--- a/javaextensions/bluetooth/bluetoothplugins/btspppushplugin/src.s60/btrfcommserverconnection.cpp Thu Sep 02 13:22:59 2010 +0300
+++ b/javaextensions/bluetooth/bluetoothplugins/btspppushplugin/src.s60/btrfcommserverconnection.cpp Fri Sep 17 16:44:34 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)
--- a/javaextensions/bluetooth/bluetoothplugins/btspppushplugin/src/rfcommpushserverconnection.cpp Thu Sep 02 13:22:59 2010 +0300
+++ b/javaextensions/bluetooth/bluetoothplugins/btspppushplugin/src/rfcommpushserverconnection.cpp Fri Sep 17 16:44:34 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),
--- a/javaextensions/bluetooth/omjbluetooth/src.s60/bluetoothstacks60native.cpp Thu Sep 02 13:22:59 2010 +0300
+++ b/javaextensions/bluetooth/omjbluetooth/src.s60/bluetoothstacks60native.cpp Fri Sep 17 16:44:34 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());
--- a/javaextensions/bluetooth/omjbluetooth/src.s60/discoveryagent.cpp Thu Sep 02 13:22:59 2010 +0300
+++ b/javaextensions/bluetooth/omjbluetooth/src.s60/discoveryagent.cpp Fri Sep 17 16:44:34 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);
--- a/javaextensions/bluetooth/omjbluetooth/src.s60/discoveryagent.h Thu Sep 02 13:22:59 2010 +0300
+++ b/javaextensions/bluetooth/omjbluetooth/src.s60/discoveryagent.h Fri Sep 17 16:44:34 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:
--- a/javaextensions/midppush/build/build.xml Thu Sep 02 13:22:59 2010 +0300
+++ b/javaextensions/midppush/build/build.xml Fri Sep 17 16:44:34 2010 +0300
@@ -1,6 +1,6 @@
<!--
#
-# Copyright (c) 2008-2009 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"
@@ -12,7 +12,7 @@
#
# Contributors:
#
-# Description:
+# Description:
#
-->
@@ -27,7 +27,7 @@
<!-- Needed by the utilities.xml. See the description form the utilities.xml
file -->
- <property name="javah.classnames"
+ <property name="javah.classnames"
value="com.nokia.mj.impl.push.PushRegistryImpl,
com.nokia.mj.impl.push.PushValidatorLoader"/>
@@ -35,5 +35,9 @@
<omj.public.apis includes="javax/microedition/io/PushRegistry.class"/>
</target>
+ <target name="create.internal.api.jar">
+ <omj.internal.apis includes="com/nokia/mj/impl/push/PushUtil*.class"/>
+ </target>
+
</project>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/javaextensions/midppush/javasrc/com/nokia/mj/impl/push/PushUtil.java Fri Sep 17 16:44:34 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;
+ }
+ }
+}
--- a/javaextensions/midprms_db/tsrc/build/build.xml Thu Sep 02 13:22:59 2010 +0300
+++ b/javaextensions/midprms_db/tsrc/build/build.xml Fri Sep 17 16:44:34 2010 +0300
@@ -85,7 +85,7 @@
<echo message = "junit source: ${junitdir}/${junitjarfilename}"/>
<echo message = "junit target: ${vm.extension.directory}/${junitjarfilename}"/>
<copy file="${junitdir}/${junitjarfilename}" tofile="${vm.extension.directory}/${junitjarfilename}"/>
- <copy file="${junitdir}/${junit.omj.jar.filename}" tofile="${vm.extension.direcory}/${junit.omj.jar.filename}"/>
+ <copy file="${junitdir}/${junit.omj.jar.filename}" tofile="${vm.extension.directory}/${junit.omj.jar.filename}"/>
<copy file="${jarfilename}" tofile="${vm.extension.directory}/${jarfilename}"/>
<copy file="${jarfilename2}" tofile="${vm.extension.directory}/${jarfilename2}"/>
<copy file="${jarfilename3}" tofile="${vm.extension.directory}/${jarfilename3}"/>
--- a/javaextensions/pim/javasrc.s60/com/nokia/mj/impl/pim/utils/NativeError.java Thu Sep 02 13:22:59 2010 +0300
+++ b/javaextensions/pim/javasrc.s60/com/nokia/mj/impl/pim/utils/NativeError.java Fri Sep 17 16:44:34 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:
{
--- a/javaextensions/pim/javasrc/com/nokia/mj/impl/pim/PIMManager.java Thu Sep 02 13:22:59 2010 +0300
+++ b/javaextensions/pim/javasrc/com/nokia/mj/impl/pim/PIMManager.java Fri Sep 17 16:44:34 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;
--- a/javamanager/javaappscheme/src.s60/serviceapp.cpp Thu Sep 02 13:22:59 2010 +0300
+++ b/javamanager/javaappscheme/src.s60/serviceapp.cpp Fri Sep 17 16:44:34 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();
--- a/javamanager/javaappscheme/src.s60/serviceapp.h Thu Sep 02 13:22:59 2010 +0300
+++ b/javamanager/javaappscheme/src.s60/serviceapp.h Fri Sep 17 16:44:34 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;
};
--- a/javamanager/javacaptain/extensionplugins/javacertstore/inc/javacertstore.h Thu Sep 02 13:22:59 2010 +0300
+++ b/javamanager/javacaptain/extensionplugins/javacertstore/inc/javacertstore.h Fri Sep 17 16:44:34 2010 +0300
@@ -69,6 +69,7 @@
{
std::string full_path;
std::string hash;
+ std::string pkey;
int state;
bool disposable;
bool disablable;
--- a/javamanager/javacaptain/extensionplugins/javacertstore/src/javacertstore.cpp Thu Sep 02 13:22:59 2010 +0300
+++ b/javamanager/javacaptain/extensionplugins/javacertstore/src/javacertstore.cpp Fri Sep 17 16:44:34 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; i<no_certs; i++)
{
- if (cert_id.compare(iCertsMetadata[i]->hash) == 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; i<no_certs; i++)
{
- if (iCertsMetadata[i]->hash.compare(metadata->hash) == 0)
+ if (iCertsMetadata[i]->hash.compare(metadata->hash) == 0
+ && iCertsMetadata[i]->pkey.find(metadata->pkey) == 0)
{
if (overwrite)
{
--- a/javamanager/javacaptain/systemams/build/systemams.mmp Thu Sep 02 13:22:59 2010 +0300
+++ b/javamanager/javacaptain/systemams/build/systemams.mmp Fri Sep 17 16:44:34 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
--- a/javamanager/javainstaller/installer/build/javainstaller.pro Thu Sep 02 13:22:59 2010 +0300
+++ b/javamanager/javainstaller/installer/build/javainstaller.pro Fri Sep 17 16:44:34 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 += \
--- a/javamanager/javainstaller/installer/javasrc/com/nokia/mj/impl/installer/jsrpluginnotifier/JsrPluginNotifierBase.java Thu Sep 02 13:22:59 2010 +0300
+++ b/javamanager/javainstaller/installer/javasrc/com/nokia/mj/impl/installer/jsrpluginnotifier/JsrPluginNotifierBase.java Fri Sep 17 16:44:34 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);
+ }
+ }
+ }
}
--- a/javamanager/javainstaller/installer/src.s60/applicationregistrator/sifregistrator.cpp Thu Sep 02 13:22:59 2010 +0300
+++ b/javamanager/javainstaller/installer/src.s60/applicationregistrator/sifregistrator.cpp Fri Sep 17 16:44:34 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);
--- a/javamanager/javainstaller/installer/tsrc/javasrc/com/nokia/mj/impl/installer/jsrpluginnotifier/JsrPluginNotifierTest.java Thu Sep 02 13:22:59 2010 +0300
+++ b/javamanager/javainstaller/installer/tsrc/javasrc/com/nokia/mj/impl/installer/jsrpluginnotifier/JsrPluginNotifierTest.java Fri Sep 17 16:44:34 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"));
+ }
}
--- a/javamanager/javainstaller/installer/tsrc/javasrc/com/nokia/mj/impl/installer/jsrpluginnotifier/TestPlugin2.java Thu Sep 02 13:22:59 2010 +0300
+++ b/javamanager/javainstaller/installer/tsrc/javasrc/com/nokia/mj/impl/installer/jsrpluginnotifier/TestPlugin2.java Fri Sep 17 16:44:34 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");
+ }
}
}
--- a/javamanager/javainstaller/installerui/javasrc/com/nokia/mj/impl/installer/ui/eswt/InstallerUiEswt.java Thu Sep 02 13:22:59 2010 +0300
+++ b/javamanager/javainstaller/installerui/javasrc/com/nokia/mj/impl/installer/ui/eswt/InstallerUiEswt.java Fri Sep 17 16:44:34 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)
{
--- a/javamanager/javainstaller/installerui/javasrc/com/nokia/mj/impl/installer/ui/eswt2/CertificateDetailsView.java Thu Sep 02 13:22:59 2010 +0300
+++ b/javamanager/javainstaller/installerui/javasrc/com/nokia/mj/impl/installer/ui/eswt2/CertificateDetailsView.java Fri Sep 17 16:44:34 2010 +0300
@@ -48,7 +48,7 @@
iCerts = aCerts;
iCertIndex = aCertIndex;
setTitle(aTitle);
- setCommands(null, InstallerUiTexts.get(InstallerUiTexts.OK));
+ setCommands(null, InstallerUiTexts.get(InstallerUiTexts.CLOSE));
}
/**
--- a/javamanager/javainstaller/installerui/javasrc/com/nokia/mj/impl/installer/ui/eswt2/ErrorView.java Thu Sep 02 13:22:59 2010 +0300
+++ b/javamanager/javainstaller/installerui/javasrc/com/nokia/mj/impl/installer/ui/eswt2/ErrorView.java Fri Sep 17 16:44:34 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);
}
}
--- a/javamanager/javainstaller/installerui/javasrc/com/nokia/mj/impl/installer/ui/eswt2/InstallConfirmationView.java Thu Sep 02 13:22:59 2010 +0300
+++ b/javamanager/javainstaller/installerui/javasrc/com/nokia/mj/impl/installer/ui/eswt2/InstallConfirmationView.java Fri Sep 17 16:44:34 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;
--- a/javamanager/javainstaller/installerui/javasrc/com/nokia/mj/impl/installer/ui/eswt2/InstallerUiEswt.java Thu Sep 02 13:22:59 2010 +0300
+++ b/javamanager/javainstaller/installerui/javasrc/com/nokia/mj/impl/installer/ui/eswt2/InstallerUiEswt.java Fri Sep 17 16:44:34 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;
--- a/javamanager/javainstaller/installerui/javasrc/com/nokia/mj/impl/installer/ui/eswt2/InstallerUiTexts.java Thu Sep 02 13:22:59 2010 +0300
+++ b/javamanager/javainstaller/installerui/javasrc/com/nokia/mj/impl/installer/ui/eswt2/InstallerUiTexts.java Fri Sep 17 16:44:34 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";
--- a/javamanager/javainstaller/installerui/javasrc/com/nokia/mj/impl/installer/ui/eswt2/LaunchAppQueryView.java Thu Sep 02 13:22:59 2010 +0300
+++ b/javamanager/javainstaller/installerui/javasrc/com/nokia/mj/impl/installer/ui/eswt2/LaunchAppQueryView.java Fri Sep 17 16:44:34 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);
}
/**
--- a/javamanager/javainstaller/installerui/javasrc/com/nokia/mj/impl/installer/ui/eswt2/PermissionConfirmationView.java Thu Sep 02 13:22:59 2010 +0300
+++ b/javamanager/javainstaller/installerui/javasrc/com/nokia/mj/impl/installer/ui/eswt2/PermissionConfirmationView.java Fri Sep 17 16:44:34 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);
}
/**
--- a/javamanager/javainstaller/installerui/javasrc/com/nokia/mj/impl/installer/ui/eswt2/PermissionDetailsView.java Thu Sep 02 13:22:59 2010 +0300
+++ b/javamanager/javainstaller/installerui/javasrc/com/nokia/mj/impl/installer/ui/eswt2/PermissionDetailsView.java Fri Sep 17 16:44:34 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));
}
/**
--- a/javamanager/javainstaller/installerui/javasrc/com/nokia/mj/impl/installer/ui/eswt2/ProgressView.java Thu Sep 02 13:22:59 2010 +0300
+++ b/javamanager/javainstaller/installerui/javasrc/com/nokia/mj/impl/installer/ui/eswt2/ProgressView.java Fri Sep 17 16:44:34 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);
--- a/javamanager/javainstaller/installerui/javasrc/com/nokia/mj/impl/installer/ui/eswt2/RuntimeConfirmationView.java Thu Sep 02 13:22:59 2010 +0300
+++ b/javamanager/javainstaller/installerui/javasrc/com/nokia/mj/impl/installer/ui/eswt2/RuntimeConfirmationView.java Fri Sep 17 16:44:34 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);
}
/**
--- a/javamanager/javainstaller/installerui/javasrc/com/nokia/mj/impl/installer/ui/eswt2/ViewBase.java Thu Sep 02 13:22:59 2010 +0300
+++ b/javamanager/javainstaller/installerui/javasrc/com/nokia/mj/impl/installer/ui/eswt2/ViewBase.java Fri Sep 17 16:44:34 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();
--- a/javamanager/javasettings_qt/src/applicationsettingsview.h Thu Sep 02 13:22:59 2010 +0300
+++ b/javamanager/javasettings_qt/src/applicationsettingsview.h Fri Sep 17 16:44:34 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());
};
--- a/javamanager/javasettings_qt/src/javaapplicationsettingsview.cpp Thu Sep 02 13:22:59 2010 +0300
+++ b/javamanager/javasettings_qt/src/javaapplicationsettingsview.cpp Fri Sep 17 16:44:34 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);
}
--- a/javamanager/javasettings_qt/src/javaapplicationsettingsview.h Thu Sep 02 13:22:59 2010 +0300
+++ b/javamanager/javasettings_qt/src/javaapplicationsettingsview.h Fri Sep 17 16:44:34 2010 +0300
@@ -43,7 +43,7 @@
virtual ~JavaApplicationSettingsView();
public slots:
- void initialize(const QString&);
+ void initialize(const QString&, const QString& = QString());
signals:
void aboutToClose();
--- a/javamanager/javasettings_qt/src/javaapplicationsettingsview_p.cpp Thu Sep 02 13:22:59 2010 +0300
+++ b/javamanager/javasettings_qt/src/javaapplicationsettingsview_p.cpp Fri Sep 17 16:44:34 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
--- a/javamanager/javasettings_qt/src/javaapplicationsettingsview_p.h Thu Sep 02 13:22:59 2010 +0300
+++ b/javamanager/javasettings_qt/src/javaapplicationsettingsview_p.h Fri Sep 17 16:44:34 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);
--- a/javaruntimes/midp/runtime/build/javamidpruntime.pro Thu Sep 02 13:22:59 2010 +0300
+++ b/javaruntimes/midp/runtime/build/javamidpruntime.pro Fri Sep 17 16:44:34 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)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/javaruntimes/midp/runtime/javasrc/com/nokia/mj/impl/rt/midp/SchemeHandler.java Fri Sep 17 16:44:34 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;
+}
+
--- a/javaruntimes/midp/runtime/javasrc/com/nokia/mj/impl/rt/midp/SchemeHandlerBase.java Thu Sep 02 13:22:59 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;
-}
-
--- a/javaruntimes/midp/runtime/javasrc/com/nokia/mj/impl/rt/midp/StorageAccessor.java Thu Sep 02 13:22:59 2010 +0300
+++ b/javaruntimes/midp/runtime/javasrc/com/nokia/mj/impl/rt/midp/StorageAccessor.java Fri Sep 17 16:44:34 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
+ // <language_code>[-<country_code>[-<variant>]]
+ // 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);
+ }
}
--- a/javaruntimes/midp/runtime/javasrc/com/nokia/mj/impl/rt/taskmanager/SchemeHandler.java Thu Sep 02 13:22:59 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;
- }
-}
-
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/javaruntimes/midp/runtime/javasrc/com/nokia/mj/impl/rt/taskmanager/SchemeHandlerImpl.java Fri Sep 17 16:44:34 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;
+ }
+}
+
--- a/javaruntimes/midp/runtime/javasrc/javax/microedition/midlet/MIDlet.java Thu Sep 02 13:22:59 2010 +0300
+++ b/javaruntimes/midp/runtime/javasrc/javax/microedition/midlet/MIDlet.java Fri Sep 17 16:44:34 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);
}
}
--- a/javauis/coreui/tsrc/testcoreui/javasrc/com/nokia/mj/impl/coreuitest/CoreUiTests.java Thu Sep 02 13:22:59 2010 +0300
+++ b/javauis/coreui/tsrc/testcoreui/javasrc/com/nokia/mj/impl/coreuitest/CoreUiTests.java Fri Sep 17 16:44:34 2010 +0300
@@ -153,7 +153,6 @@
}
catch (Throwable t2)
{
- System.out.println("JOU2 "+ t2);
t2.printStackTrace();
assertTrue(t2.toString(), false);
}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/javauis/coreui_qt/build/build.xml Fri Sep 17 16:44:34 2010 +0300
@@ -0,0 +1,34 @@
+<!--
+ 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 build file of the CoreUI
+-->
+
+<project name="javacoreui" default="deploy" basedir=".">
+
+ <import file="../../../build/utilities.xml"/>
+
+ <!-- Needed by the utilities.xml. See the description form the utilities.xml
+ file -->
+
+ <property name="javah.classnames"
+ value="com.nokia.mj.impl.coreuiqt.CoreUiImpl"/>
+
+ <target name="system.properties">
+ <properties>
+ com.nokia.coreui=coreuiqt
+ </properties>
+ </target>
+
+</project>
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/javauis/coreui_qt/build/bwins/javacoreuiu.def Fri Sep 17 16:44:34 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 *)
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/javauis/coreui_qt/build/eabi/javacoreuiu.def Fri Sep 17 16:44:34 2010 +0300
@@ -0,0 +1,4 @@
+EXPORTS
+ _Z10jni_lookupPKc @ 1 NONAME
+ _Z13findDllMethodPKc @ 2 NONAME
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/javauis/coreui_qt/build/javacoreui.pro Fri Sep 17 16:44:34 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)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/javauis/coreui_qt/javasrc/com/nokia/mj/impl/coreuiqt/CoreUiImpl.java Fri Sep 17 16:44:34 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);
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/javauis/coreui_qt/src/coreuijni.cpp Fri Sep 17 16:44:34 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 <tstasksettings.h>
+#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__
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/javauis/coreui_qt/src/coreuiqtimpl.cpp Fri Sep 17 16:44:34 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 <string.h>
+// #include <hbsplashscreen.h>
+
+#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() <--");
+*/
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/javauis/coreui_qt/src/coreuiqtimpl.h Fri Sep 17 16:44:34 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
--- a/javauis/eswt_qt/org.eclipse.swt/Eclipse SWT/qt/org/eclipse/swt/graphics/GC.java Thu Sep 02 13:22:59 2010 +0300
+++ b/javauis/eswt_qt/org.eclipse.swt/Eclipse SWT/qt/org/eclipse/swt/graphics/GC.java Fri Sep 17 16:44:34 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 <code>GC</code> 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
* <em>same</em> 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
* <code>true</code> when passed to <code>equals</code> 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.
--- a/javauis/eswt_qt/org.eclipse.swt/Eclipse SWT/qt/org/eclipse/swt/graphics/Image.java Thu Sep 02 13:22:59 2010 +0300
+++ b/javauis/eswt_qt/org.eclipse.swt/Eclipse SWT/qt/org/eclipse/swt/graphics/Image.java Fri Sep 17 16:44:34 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;
}
--- a/javauis/eswt_qt/org.eclipse.swt/Eclipse SWT/qt/org/eclipse/swt/widgets/Composite.java Thu Sep 02 13:22:59 2010 +0300
+++ b/javauis/eswt_qt/org.eclipse.swt/Eclipse SWT/qt/org/eclipse/swt/widgets/Composite.java Fri Sep 17 16:44:34 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);
--- a/javauis/eswt_qt/org.eclipse.swt/Eclipse SWT/qt/org/eclipse/swt/widgets/Control.java Thu Sep 02 13:22:59 2010 +0300
+++ b/javauis/eswt_qt/org.eclipse.swt/Eclipse SWT/qt/org/eclipse/swt/widgets/Control.java Fri Sep 17 16:44:34 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: <code>SWT.TRAVERSE_ESCAPE</code>
--- a/javauis/eswt_qt/org.eclipse.swt/Eclipse SWT/qt/org/eclipse/swt/widgets/Shell.java Thu Sep 02 13:22:59 2010 +0300
+++ b/javauis/eswt_qt/org.eclipse.swt/Eclipse SWT/qt/org/eclipse/swt/widgets/Shell.java Fri Sep 17 16:44:34 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;
--- a/javauis/eswt_qt/org.eclipse.swt/Eclipse_SWT_PI/qt/library/graphics/qt/windowsurfaceimpl_symbian.cpp Thu Sep 02 13:22:59 2010 +0300
+++ b/javauis/eswt_qt/org.eclipse.swt/Eclipse_SWT_PI/qt/library/graphics/qt/windowsurfaceimpl_symbian.cpp Fri Sep 17 16:44:34 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;
--- a/javauis/eswt_qt/org.eclipse.swt/Eclipse_SWT_PI/qt/org/eclipse/swt/graphics/Internal_GfxPackageSupport.java Thu Sep 02 13:22:59 2010 +0300
+++ b/javauis/eswt_qt/org.eclipse.swt/Eclipse_SWT_PI/qt/org/eclipse/swt/graphics/Internal_GfxPackageSupport.java Fri Sep 17 16:44:34 2010 +0300
@@ -13,6 +13,8 @@
import java.io.InputStream;
+import org.eclipse.swt.internal.qt.graphics.WindowSurface;
+
/**
* <p>
* <b>IMPORTANT:</b> This class is <em>not</em> 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();
+}
+
+}
--- a/javauis/eswt_qt/org.eclipse.swt/Eclipse_SWT_PI/qt/org/eclipse/swt/widgets/Internal_PackageSupport.java Thu Sep 02 13:22:59 2010 +0300
+++ b/javauis/eswt_qt/org.eclipse.swt/Eclipse_SWT_PI/qt/org/eclipse/swt/widgets/Internal_PackageSupport.java Fri Sep 17 16:44:34 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
*/
--- a/javauis/javauis.pro Thu Sep 02 13:22:59 2010 +0300
+++ b/javauis/javauis.pro Fri Sep 17 16:44:34 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"
--- a/javauis/lcdui_qt/src/javax/microedition/lcdui/Alert.java Thu Sep 02 13:22:59 2010 +0300
+++ b/javauis/lcdui_qt/src/javax/microedition/lcdui/Alert.java Fri Sep 17 16:44:34 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);
--- a/javauis/lcdui_qt/src/javax/microedition/lcdui/Canvas.java Thu Sep 02 13:22:59 2010 +0300
+++ b/javauis/lcdui_qt/src/javax/microedition/lcdui/Canvas.java Fri Sep 17 16:44:34 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)
{
--- a/javauis/lcdui_qt/src/javax/microedition/lcdui/CustomItem.java Thu Sep 02 13:22:59 2010 +0300
+++ b/javauis/lcdui_qt/src/javax/microedition/lcdui/CustomItem.java Fri Sep 17 16:44:34 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
--- a/javauis/lcdui_qt/src/javax/microedition/lcdui/Display.java Thu Sep 02 13:22:59 2010 +0300
+++ b/javauis/lcdui_qt/src/javax/microedition/lcdui/Display.java Fri Sep 17 16:44:34 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);
}
}
--- a/javauis/lcdui_qt/src/javax/microedition/lcdui/Displayable.java Thu Sep 02 13:22:59 2010 +0300
+++ b/javauis/lcdui_qt/src/javax/microedition/lcdui/Displayable.java Fri Sep 17 16:44:34 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.
--- a/javauis/lcdui_qt/src/javax/microedition/lcdui/Gauge.java Thu Sep 02 13:22:59 2010 +0300
+++ b/javauis/lcdui_qt/src/javax/microedition/lcdui/Gauge.java Fri Sep 17 16:44:34 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);
}
--- a/javauis/lcdui_qt/src/javax/microedition/lcdui/Item.java Thu Sep 02 13:22:59 2010 +0300
+++ b/javauis/lcdui_qt/src/javax/microedition/lcdui/Item.java Fri Sep 17 16:44:34 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);
}
}
--- a/javauis/lcdui_qt/src/javax/microedition/lcdui/KeyTable.java Thu Sep 02 13:22:59 2010 +0300
+++ b/javauis/lcdui_qt/src/javax/microedition/lcdui/KeyTable.java Fri Sep 17 16:44:34 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";
--- a/javauis/lcdui_qt/src/javax/microedition/lcdui/ScrolledTextComposite.java Thu Sep 02 13:22:59 2010 +0300
+++ b/javauis/lcdui_qt/src/javax/microedition/lcdui/ScrolledTextComposite.java Fri Sep 17 16:44:34 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);
+ }
}
}
--- a/javauis/lcdui_qt/src/javax/microedition/lcdui/TextBox.java Thu Sep 02 13:22:59 2010 +0300
+++ b/javauis/lcdui_qt/src/javax/microedition/lcdui/TextBox.java Fri Sep 17 16:44:34 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.
*
--- a/javauis/lcdui_qt/tsrc/src/com/nokia/openlcdui/mt/alert/AlertTest.java Thu Sep 02 13:22:59 2010 +0300
+++ b/javauis/lcdui_qt/tsrc/src/com/nokia/openlcdui/mt/alert/AlertTest.java Fri Sep 17 16:44:34 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;
}
/**
--- a/javauis/lcdui_qt/tsrc/src/com/nokia/openlcdui/mt/gauge/GaugeTest.java Thu Sep 02 13:22:59 2010 +0300
+++ b/javauis/lcdui_qt/tsrc/src/com/nokia/openlcdui/mt/gauge/GaugeTest.java Fri Sep 17 16:44:34 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.
+ * <p>
+ * Test passes if current values of the Gauge will not be changed.
+ * <p>
+ * Test fails if current values of the Gauge will be changed.
+ * <p>
+ */
+ 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);
+ }
+ }
+ }
}
--- a/javauis/mmapi_qt/baseline/javasrc.emc/com/nokia/microedition/media/BufferDataSource.java Thu Sep 02 13:22:59 2010 +0300
+++ b/javauis/mmapi_qt/baseline/javasrc.emc/com/nokia/microedition/media/BufferDataSource.java Fri Sep 17 16:44:34 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
--- a/javauis/mmapi_qt/baseline/javasrc.emc/com/nokia/microedition/media/ManagerImpl.java Thu Sep 02 13:22:59 2010 +0300
+++ b/javauis/mmapi_qt/baseline/javasrc.emc/com/nokia/microedition/media/ManagerImpl.java Fri Sep 17 16:44:34 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);
}
--- a/javauis/mmapi_qt/baseline/javasrc.mmf/com/nokia/microedition/media/BufferDataSource.java Thu Sep 02 13:22:59 2010 +0300
+++ b/javauis/mmapi_qt/baseline/javasrc.mmf/com/nokia/microedition/media/BufferDataSource.java Fri Sep 17 16:44:34 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
--- a/javauis/mmapi_qt/baseline/javasrc/com/nokia/microedition/media/ConnectorDataSource.java Thu Sep 02 13:22:59 2010 +0300
+++ b/javauis/mmapi_qt/baseline/javasrc/com/nokia/microedition/media/ConnectorDataSource.java Fri Sep 17 16:44:34 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
--- a/javauis/mmapi_qt/baseline/javasrc/com/nokia/microedition/media/HttpDataSource.java Thu Sep 02 13:22:59 2010 +0300
+++ b/javauis/mmapi_qt/baseline/javasrc/com/nokia/microedition/media/HttpDataSource.java Fri Sep 17 16:44:34 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)
--- a/javauis/mmapi_qt/baseline/javasrc/com/nokia/microedition/media/InputStreamDataSource.java Thu Sep 02 13:22:59 2010 +0300
+++ b/javauis/mmapi_qt/baseline/javasrc/com/nokia/microedition/media/InputStreamDataSource.java Fri Sep 17 16:44:34 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
--- a/javauis/mmapi_qt/baseline/javasrc/com/nokia/microedition/media/InputStreamSeekControl.java Thu Sep 02 13:22:59 2010 +0300
+++ b/javauis/mmapi_qt/baseline/javasrc/com/nokia/microedition/media/InputStreamSeekControl.java Fri Sep 17 16:44:34 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()
--- a/javauis/mmapi_qt/baseline/javasrc/com/nokia/microedition/media/PlayerImpl.java Thu Sep 02 13:22:59 2010 +0300
+++ b/javauis/mmapi_qt/baseline/javasrc/com/nokia/microedition/media/PlayerImpl.java Fri Sep 17 16:44:34 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)
{
--- a/javauis/mmapi_qt/baseline/javasrc/com/nokia/microedition/media/SourcePlayer.java Thu Sep 02 13:22:59 2010 +0300
+++ b/javauis/mmapi_qt/baseline/javasrc/com/nokia/microedition/media/SourcePlayer.java Fri Sep 17 16:44:34 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 -");
}
/**
--- a/javauis/mmapi_qt/baseline/javasrc/com/nokia/microedition/media/animation/AnimationPlayer.java Thu Sep 02 13:22:59 2010 +0300
+++ b/javauis/mmapi_qt/baseline/javasrc/com/nokia/microedition/media/animation/AnimationPlayer.java Fri Sep 17 16:44:34 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) -");
}
--- a/javauis/mmapi_qt/baseline/javasrc/com/nokia/microedition/media/animation/AnimationPlayerFactory.java Thu Sep 02 13:22:59 2010 +0300
+++ b/javauis/mmapi_qt/baseline/javasrc/com/nokia/microedition/media/animation/AnimationPlayerFactory.java Fri Sep 17 16:44:34 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)
{
--- a/javauis/mmapi_qt/baseline/javasrc/com/nokia/microedition/media/protocol/SeekThread.java Thu Sep 02 13:22:59 2010 +0300
+++ b/javauis/mmapi_qt/baseline/javasrc/com/nokia/microedition/media/protocol/SeekThread.java Fri Sep 17 16:44:34 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 -");
}
}
}
--- a/javauis/mmapi_qt/baseline/javasrc/com/nokia/microedition/media/protocol/SourceStreamReader.java Thu Sep 02 13:22:59 2010 +0300
+++ b/javauis/mmapi_qt/baseline/javasrc/com/nokia/microedition/media/protocol/SourceStreamReader.java Fri Sep 17 16:44:34 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);
}
--- a/javauis/mmapi_qt/baseline/javasrc/javax/microedition/media/protocol/DataSource.java Thu Sep 02 13:22:59 2010 +0300
+++ b/javauis/mmapi_qt/baseline/javasrc/javax/microedition/media/protocol/DataSource.java Fri Sep 17 16:44:34 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;
--- a/javauis/mmapi_qt/baseline/src.nga/cmmasurfacewindow.cpp Thu Sep 02 13:22:59 2010 +0300
+++ b/javauis/mmapi_qt/baseline/src.nga/cmmasurfacewindow.cpp Fri Sep 17 16:44:34 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,
--- a/javauis/mmapi_qt/baseline/src/cmmaaudioplayer.cpp Thu Sep 02 13:22:59 2010 +0300
+++ b/javauis/mmapi_qt/baseline/src/cmmaaudioplayer.cpp Fri Sep 17 16:44:34 2010 +0300
@@ -221,6 +221,7 @@
iSourceStreams[ 0 ]->ReadAllL();
}
// CMMASourceStream will notify with ReadCompleted
+ LOG(EJavaMMAPI, EInfo, "CMMAAudioPlayer::PrefetchL -");
}
const TDesC& CMMAAudioPlayer::Type()
--- a/javauis/mmapi_qt/baseline/src/cmmavideocontrol.cpp Thu Sep 02 13:22:59 2010 +0300
+++ b/javauis/mmapi_qt/baseline/src/cmmavideocontrol.cpp Fri Sep 17 16:44:34 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
--- a/javauis/nokiauiapi_qt/.classpath Thu Sep 02 13:22:59 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
- <classpathentry excluding="**/.svn/" kind="src" path="src"/>
- <classpathentry kind="src" path="src_j2me"/>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
- <classpathentry kind="var" path="CLDC_JAR"/>
- <classpathentry kind="output" path="bin"/>
-</classpath>
--- a/javauis/nokiauiapi_qt/.project Thu Sep 02 13:22:59 2010 +0300
+++ b/javauis/nokiauiapi_qt/.project Fri Sep 17 16:44:34 2010 +0300
@@ -6,12 +6,15 @@
</projects>
<buildSpec>
<buildCommand>
- <name>org.eclipse.jdt.core.javabuilder</name>
+ <name>com.nokia.carbide.cdt.builder.carbideCPPBuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
- <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.cdt.core.cnature</nature>
+ <nature>org.eclipse.cdt.core.ccnature</nature>
+ <nature>com.nokia.carbide.cdt.builder.carbideCPPBuilderNature</nature>
+ <nature>com.nokia.carbide.cdt.builder.carbideSBSv2BuilderNature</nature>
</natures>
</projectDescription>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/javauis/nokiauiapi_qt/build/build.pro Fri Sep 17 16:44:34 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"
--- a/javauis/nokiauiapi_qt/build/build.xml Thu Sep 02 13:22:59 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,42 +0,0 @@
-<!--
-#
-# Copyright (c) 2008-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:
-#
--->
-
-<project name="javanokiaui" default="deploy" basedir=".">
-
- <description>
- Builds Nokiauiapi
- </description>
-
- <import file="../../../build/utilities.xml"/>
-
- <!-- Needed by the utilities.xml. See the description form the utilities.xml
- file -->
-
- <property name="java.src.paths" value="../src:../src_j2me"/>
-
-
-
- <property name="javah.classnames" value="com.nokia.mid.ui.internal.OS"/>
-
- <target name="create.public.api.jar">
- <omj.public.apis includes="com/nokia/mid/ui/TactileFeedback.class,
- com/nokia/mid/ui/DeviceControl.class"/>
- </target>
-
-
-</project>
--- a/javauis/nokiauiapi_qt/build/bwins/javanokiauiu.def Thu Sep 02 13:22:59 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 *)
-
--- a/javauis/nokiauiapi_qt/build/eabi/javanokiauiu.def Thu Sep 02 13:22:59 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,3 +0,0 @@
-EXPORTS
- _Z10jni_lookupPKc @ 1 NONAME
-
--- a/javauis/nokiauiapi_qt/build/javanokiaui.pro Thu Sep 02 13:22:59 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)
-
-
-
-
-
-
-
-
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/javauis/nokiauiapi_qt/build/nokiauiapiqt/build.xml Fri Sep 17 16:44:34 2010 +0300
@@ -0,0 +1,44 @@
+<!--
+#
+# Copyright (c) 2008-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:
+#
+-->
+
+<project name="javanokiaui" default="deploy" basedir=".">
+
+ <description>
+ Builds Nokiauiapi
+ </description>
+
+ <import file="../../../../build/utilities.xml"/>
+
+ <!-- Needed by the utilities.xml. See the description form the utilities.xml
+ file -->
+
+ <property name="java.src.paths" value="../../javasrc:../../javasrc_j2me"/>
+
+ <property name="javah.classnames" value="com.nokia.mid.ui.internal.OS"/>
+
+ <target name="create.public.api.jar">
+ <omj.public.apis includes="com/nokia/mid/ui/TactileFeedback.class,
+ com/nokia/mid/ui/DeviceControl.class,
+ com/nokia/mid/ui/SoftNotificationException.class,
+ com/nokia/mid/ui/SoftNotification.class,
+ com/nokia/mid/ui/SoftNotificationListener.class"/>
+
+ </target>
+
+
+</project>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/javauis/nokiauiapi_qt/build/nokiauiapiqt/bwins/javanokiauiu.def Fri Sep 17 16:44:34 2010 +0300
@@ -0,0 +1,3 @@
+EXPORTS
+ ?jni_lookup@@YAP6AXXZPBD@Z @ 1 NONAME ; void (*)(void) jni_lookup(char const *)
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/javauis/nokiauiapi_qt/build/nokiauiapiqt/eabi/javanokiauiu.def Fri Sep 17 16:44:34 2010 +0300
@@ -0,0 +1,3 @@
+EXPORTS
+ _Z10jni_lookupPKc @ 1 NONAME
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/javauis/nokiauiapi_qt/build/nokiauiapiqt/javanokiaui.pro Fri Sep 17 16:44:34 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)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/javauis/nokiauiapi_qt/build/softindicatorplugin/javasoftindicatorplugin.pro Fri Sep 17 16:44:34 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)
+}
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/javauis/nokiauiapi_qt/build/subsystem.mk Fri Sep 17 16:44:34 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
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/javauis/nokiauiapi_qt/inc/CSoftNotification.h Fri Sep 17 16:44:34 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 <e32base.h>
+#include <jni.h>
+#include <HbIndicatorsymbian.h>
+
+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
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/javauis/nokiauiapi_qt/inc/autorelease.h Fri Sep 17 16:44:34 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
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/javauis/nokiauiapi_qt/javasrc/.classpath Fri Sep 17 16:44:34 2010 +0300
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry excluding="javasrc_j2me/" kind="src" path=""/>
+ <classpathentry kind="src" path="javasrc_j2me"/>
+ <classpathentry kind="var" path="CLDC_JAR" sourcepath="/eswt_source"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/javauis/nokiauiapi_qt/javasrc/.project Fri Sep 17 16:44:34 2010 +0300
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>nokiauiapiqt</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.team.cvs.core.cvsnature</nature>
+ </natures>
+ <linkedResources>
+ <link>
+ <name>javasrc_j2me</name>
+ <type>2</type>
+ <location>R:/sf/app/java/javauis/nokiauiapi_qt/javasrc_j2me</location>
+ </link>
+ </linkedResources>
+</projectDescription>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/javauis/nokiauiapi_qt/javasrc/com/nokia/mid/ui/DeviceControl.java Fri Sep 17 16:44:34 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;
+
+/**
+ * <p>
+ * 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.
+ * <p>
+ * 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.
+ * <p>
+ * Note: Since in some devices key presses may turn on some device lights,
+ * the light settings may be changed also by the system.
+ * <p>
+ * 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.
+ * <p>
+ * 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.
+ * <p>
+ * 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.
+ * <p>
+ * 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.
+ * <p>
+ * Note that if the frequency is 0, and the device doesn't have vibra
+ * capability IllegalStateException is thrown. This means that method
+ * call <code>DeviceControl.doVibra(0,0);</code> 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);
+ }
+ });
+ }
+ }
+ }
+
+}
+
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/javauis/nokiauiapi_qt/javasrc/com/nokia/mid/ui/SoftNotification.java Fri Sep 17 16:44:34 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;
+
+
+/**
+ * <p>The <code>SoftNotification</code> 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.</p>
+ *
+ * <p>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.</p>
+ *
+ * <p>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.</p>
+ *
+ * <h3>Grouping soft notifications</h3>
+ *
+ * <p>Soft notifications can be displayed for the user in two different appearances:
+ * <li> <b>Ungrouped</b> 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.
+ * <li> <b>Grouped</b> 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.</p>
+ *
+ * <p><img src="images/ungrouped.jpg" alt="Image of ungrouped soft notification.">
+ * <img src="images/grouped.jpg" alt="Image of grouped soft notification."></p>
+ *
+ * <p>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 <code>groupText</code> is given in
+ * {@link #setText(String text, String groupText)}</p>
+ *
+ * <h3>Persistent notifications</h3>
+ * <p>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:
+ * <li>User accepts the notification,
+ * <li>User dismisses the notification, or
+ * <li>Application removes the notification</p>
+ *
+ * <p>A soft notification stays on the device home screen even if the application
+ * is closed or the device is restarted.</p>
+ *
+ * <p>Accepting (selecting) a soft notification created by an application causes
+ * this application to be activated in the following ways:
+ * <li>If the application was running on the background, it will be set to
+ * the foreground.
+ * <li>If the application was running and had registered a listener
+ * for the notification,
+ * {@link SoftNotificationListener#notificationSelected(SoftNotification)}
+ * is called.
+ * <li>If the application is not running, it will be started and set to the
+ * foreground.</p>
+ *
+ * <p><b>Notice</b> 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.</p>
+ *
+ * <p>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.</p>
+ *
+ * <p>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.</p>
+ *
+ * <p><b>Notice</b> 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.</p>
+ *
+ *
+ * <h3>Example of usage</h3>
+ *
+ * <code style="white-space: pre">
+ *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;
+ * }
+ * }</code>
+ */
+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.
+ *
+ * <p>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()}.</p>
+ *
+ * @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);
+ }
+
+ /**
+ * <p>Returns a new instance of SoftNotification class. This instance's
+ * identification will be a nonvalid negative value until
+ * {@link #post()} is called.</p>
+ *
+ * @return an instance of SoftNotification class.
+ */
+ public static SoftNotification newInstance()
+ {
+ return new SoftNotificationImpl();
+ }
+
+ /**
+ * <p>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.</p>
+ *
+ * <p><b>Notice</b> that identification might change during the lifetime of the
+ * instance if {@link #post()} is called.</p>
+ *
+ * @return Soft notification identification.
+ * @see #newInstance(int notificationId)
+ */
+ public abstract int getId();
+
+ /**
+ * <p>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.</p>
+ *
+ * <p><b>Notice</b> 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.</p>
+ *
+ * @throws SoftNotificationException Thrown if posting operation fails.
+ */
+ public abstract void post() throws SoftNotificationException;
+
+ /**
+ * <p>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.</p>
+ *
+ * @throws SoftNotificationException Thrown if removing the note fails.
+ */
+ public abstract void remove() throws SoftNotificationException;
+
+ /**
+ * <p>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
+ * <code>null</code>.</p>
+ *
+ * @param listener Listener for the soft notification.
+ */
+ public abstract void setListener(SoftNotificationListener listener);
+
+ /**
+ * <p>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 <code>'\n'</code>) inside the string.</p>
+ *
+ * <p>A notification supports grouping if <code>groupText</code> is
+ * other than <code>null</code> or an empty string (<code>""</code>).</p>
+ *
+ * <p><b>Notice</b> that the modified soft notification data is not visible for
+ * the user until {@link #post()} is called.</p>
+ *
+ * @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 <code>null</code> or an empty string
+ * (<code>""</code>) is used.
+ *
+ * @throws SoftNotificationException Thrown if setting text fails.
+ */
+ public abstract void setText(String text, String groupText)
+ throws SoftNotificationException;
+
+ /**
+ * <p>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).</p>
+ *
+ * <p>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.</p>
+ *
+ * <p><b>Notice</b> that the modified soft notification data is not visible for
+ * the user until {@link #post()} is called.</p>
+ *
+ * @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;
+
+ /**
+ * <p>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. </p>
+ *
+ * <p>The image is given as a byte array, for example the data may be read directly
+ * from the file system or MIDlet JAR package.</p>
+ *
+ * <p>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).</p>
+ *
+ * <p>The function can also be used for removing an already set image from
+ * the soft notification. This can be done by setting <code>null</code> instead
+ * of any actual image.</p>
+ *
+ * <p><b>Notice</b> that the modified soft notification data is not visible for
+ * the user until {@link #post()} is called.</p>
+ *
+ * @param image image to be displayed in the soft notification or
+ * <code>null</code> 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;
+
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/javauis/nokiauiapi_qt/javasrc/com/nokia/mid/ui/SoftNotificationException.java Fri Sep 17 16:44:34 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;
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/javauis/nokiauiapi_qt/javasrc/com/nokia/mid/ui/SoftNotificationImpl.java Fri Sep 17 16:44:34 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");
+ }
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/javauis/nokiauiapi_qt/javasrc/com/nokia/mid/ui/SoftNotificationListener.java Fri Sep 17 16:44:34 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;
+
+/**
+ * <code>SoftNotificationListener</code> 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);
+
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/javauis/nokiauiapi_qt/javasrc_j2me/com/nokia/mid/ui/TactileFeedback.java Fri Sep 17 16:44:34 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.
+ * <p>
+ * The API supports both LCDUI and eSWT UI toolkits.
+ * <p>
+ * 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.
+ * <p>
+ * Tactile feedback can be generated in two ways:
+ * <ul>
+ * <li>By producing direct feedback from the application.</li>
+ * <li>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.</li>
+ * </ul>
+ * <p>
+ * 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.
+ * <p>
+ * 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
+ * <code>controlMoved</code> and <code>controlResized</code> methods of
+ * <code>ControlListener</code> interface.
+ * <p>
+ * 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.
+ * <p>
+ * 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.
+ * <p>
+ * 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.
+ * <p>
+ * 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: <code>javax.microedition.lcdui.Canvas</code>,
+ * <code>javax.microedition.lcdui.CustomItem</code>,
+ * <code>org.eclipse.swt.widgets.Control</code>. 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 <code>id</code> 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 <code>x</code>, <code>y</code>, <code>width</code>
+ * and <code>height</code> parameters may be located on the screen just
+ * partially.
+ *
+ * <p>
+ * 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
+ * <code>controlMoved</code> and <code>controlResized</code> methods of
+ * <code>ControlListener</code> interface. The update of an area may be
+ * implemented by calling registerFeedbackArea with the same area id but new
+ * coordinates and/or feedback style.
+ * <p>
+ * 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: <code>javax.microedition.lcdui.Canvas</code>
+ * , <code>javax.microedition.lcdui.CustomItem</code>,
+ * <code>org.eclipse.swt.widgets.Control</code>.
+ * @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 <code>FEEDBACK_STYLE_BASIC</code>,
+ * <code>FEEDBACK_STYLE_SENSITIVE</code>. 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:
+ * <code>javax.microedition.lcdui.Canvas</code>,
+ * <code>javax.microedition.lcdui.CustomItem</code>,
+ * <code>org.eclipse.swt.widgets.Control</code>.
+ * @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:
+ * <code>javax.microedition.lcdui.Canvas</code>,
+ * <code>javax.microedition.lcdui.CustomItem</code>,
+ * <code>org.eclipse.swt.widgets.Control</code>.
+ * @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:
+ * <code>javax.microedition.lcdui.Canvas</code>,
+ * <code>javax.microedition.lcdui.CustomItem</code>,
+ * <code>org.eclipse.swt.widgets.Control</code>.
+ * @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;
+ }
+
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/javauis/nokiauiapi_qt/javasrc_j2se/com/nokia/mid/ui/TactileFeedback.java Fri Sep 17 16:44:34 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.
+ * <p>
+ * The API supports both LCDUI and eSWT UI toolkits.
+ * <p>
+ * 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.
+ * <p>
+ * Tactile feedback can be generated in two ways:
+ * <ul>
+ * <li>By producing direct feedback from the application.</li>
+ * <li>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.</li>
+ * </ul>
+ * <p>
+ * 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.
+ * <p>
+ * 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
+ * <code>controlMoved</code> and <code>controlResized</code> methods of
+ * <code>ControlListener</code> interface.
+ * <p>
+ * 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.
+ * <p>
+ * 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.
+ * <p>
+ * 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.
+ * <p>
+ * 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: <code>javax.microedition.lcdui.Canvas</code>,
+ * <code>javax.microedition.lcdui.CustomItem</code>,
+ * <code>org.eclipse.swt.widgets.Control</code>. 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 <code>id</code> 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 <code>x</code>, <code>y</code>, <code>width</code>
+ * and <code>height</code> parameters may be located on the screen just
+ * partially.
+ *
+ * <p>
+ * 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
+ * <code>controlMoved</code> and <code>controlResized</code> methods of
+ * <code>ControlListener</code> interface. The update of an area may be
+ * implemented by calling registerFeedbackArea with the same area id but new
+ * coordinates and/or feedback style.
+ * <p>
+ * 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: <code>javax.microedition.lcdui.Canvas</code>
+ * , <code>javax.microedition.lcdui.CustomItem</code>,
+ * <code>org.eclipse.swt.widgets.Control</code>.
+ * @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 <code>FEEDBACK_STYLE_BASIC</code>,
+ * <code>FEEDBACK_STYLE_SENSITIVE</code>. 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:
+ * <code>javax.microedition.lcdui.Canvas</code>,
+ * <code>javax.microedition.lcdui.CustomItem</code>,
+ * <code>org.eclipse.swt.widgets.Control</code>.
+ * @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:
+ * <code>javax.microedition.lcdui.Canvas</code>,
+ * <code>javax.microedition.lcdui.CustomItem</code>,
+ * <code>org.eclipse.swt.widgets.Control</code>.
+ * @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:
+ * <code>javax.microedition.lcdui.Canvas</code>,
+ * <code>javax.microedition.lcdui.CustomItem</code>,
+ * <code>org.eclipse.swt.widgets.Control</code>.
+ * @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;
+ }
+
+}
--- a/javauis/nokiauiapi_qt/library/nokiauiapi.pri Thu Sep 02 13:22:59 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
-
--- a/javauis/nokiauiapi_qt/library/os.cpp Thu Sep 02 13:22:59 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 <QWidget>
-#include <coecntrl.h>
-#include <touchfeedback.h>
-#include <com_nokia_mid_ui_internal_OS.h>
-
-static CCoeControl* convertToSymbian(QWidget* window)
-{
- CCoeControl* control = 0;
- if (window && window->winId())
- {
- control = reinterpret_cast<CCoeControl*>(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<TTouchLogicalFeedback>(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<QWidget*>(aControl));
- TRect feedbackRect(aX, aY, aX + aWidth, aY + aHeight);
- feedback->SetFeedbackArea(control,
- static_cast<TUint32>(aAreaIndex),
- feedbackRect,
- static_cast<TTouchLogicalFeedback>(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<QWidget*>(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<QWidget*>(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<QWidget*>(aControl));
- feedback->MoveFeedbackAreaToFirstPriority(control, static_cast<TUint32>(aAreaIndex));
- }
-}
-
-
-
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/javauis/nokiauiapi_qt/softindicatorplugin/inc/javasoftindicator.h Fri Sep 17 16:44:34 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 <hbindicatorinterface.h>
+
+/**
+ * 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
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/javauis/nokiauiapi_qt/softindicatorplugin/inc/javasoftindicatorplugin.h Fri Sep 17 16:44:34 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 <QObject>
+#include <QStringList>
+#include <hbindicatorplugininterface.h>
+
+/**
+ * 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
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/javauis/nokiauiapi_qt/softindicatorplugin/src/javasoftindicator.cpp Fri Sep 17 16:44:34 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 <apgtask.h>
+#include <apgcli.h>
+
+#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();
+ }
+ }
+ }
+ }
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/javauis/nokiauiapi_qt/softindicatorplugin/src/javasoftindicatorplugin.cpp Fri Sep 17 16:44:34 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 <QtPlugin>
+
+#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;
+ }
+
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/javauis/nokiauiapi_qt/src/CSoftNotification.cpp Fri Sep 17 16:44:34 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 <w32std.h>
+#include <apgtask.h>
+#include <hbdevicenotificationdialogsymbian.h>
+#include <hbsymbianvariant.h>
+#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<KIndicatorTypeStringLength> 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<KIndicatorTypeStringLength> 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<const TInt*>(aData.Get(KNotificationId)->Data());
+ TUid midletId(TUid::Uid(*reinterpret_cast<const TUint*>(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<KMidletUidLength> midletId;
+ _LIT(MidletId,"%u");
+ midletId.Format(MidletId,iMidletId);
+ array->AppendL(midletId);
+ array->AppendL(reinterpret_cast<TDesC16&>(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<MDesCArray*>(array);
+ CHbSymbianVariant* varValues = CHbSymbianVariant::NewL( marray, CHbSymbianVariant::EDesArray);
+ CleanupStack::PopAndDestroy(array);
+ return varValues;
+ }
--- a/javauis/nokiauiapi_qt/src/com/nokia/mid/ui/DeviceControl.java Thu Sep 02 13:22:59 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;
-
-/**
- * <p>
- * 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.
- * <p>
- * 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.
- * <p>
- * Note: Since in some devices key presses may turn on some device lights,
- * the light settings may be changed also by the system.
- * <p>
- * 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.
- * <p>
- * 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.
- * <p>
- * 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.
- * <p>
- * 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.
- * <p>
- * Note that if the frequency is 0, and the device doesn't have vibra
- * capability IllegalStateException is thrown. This means that method
- * call <code>DeviceControl.doVibra(0,0);</code> 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);
- }
- });
- }
- }
- }
-
-}
-
-
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/javauis/nokiauiapi_qt/src/os.cpp Fri Sep 17 16:44:34 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 <QWidget>
+#include <coecntrl.h>
+#include <touchfeedback.h>
+#include <com_nokia_mid_ui_internal_OS.h>
+#include "autorelease.h"
+#include "csoftnotification.h"
+
+static CCoeControl* convertToSymbian(QWidget* window)
+ {
+ CCoeControl* control = 0;
+ if (window && window->winId())
+ {
+ control = reinterpret_cast<CCoeControl*> (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<TTouchLogicalFeedback> (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<QWidget*> (aControl));
+ TRect feedbackRect(aX, aY, aX + aWidth, aY + aHeight);
+ feedback->SetFeedbackArea(control, static_cast<TUint32> (aAreaIndex),
+ feedbackRect, static_cast<TTouchLogicalFeedback> (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<QWidget*> (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<QWidget*> (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<QWidget*> (aControl));
+ feedback->MoveFeedbackAreaToFirstPriority(control,
+ static_cast<TUint32> (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<jint> (softNote);
+ }
+
+JNIEXPORT jint JNICALL
+Java_com_nokia_mid_ui_internal_OS_getId(JNIEnv* /*aJniEnv*/,
+ jclass /*aPeer*/, jint aSoftNotificationHandle)
+ {
+ CSoftNotification* softNotification =
+ reinterpret_cast<CSoftNotification*> (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<TText*> (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<CSoftNotification*> (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<CSoftNotification*> (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<CSoftNotification*> (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<CSoftNotification*> (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<CSoftNotification*> (aSoftNotificationHandle);
+ delete softNotification;
+ }
+ }
--- a/javauis/nokiauiapi_qt/src_j2me/com/nokia/mid/ui/TactileFeedback.java Thu Sep 02 13:22:59 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.
- * <p>
- * The API supports both LCDUI and eSWT UI toolkits.
- * <p>
- * 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.
- * <p>
- * Tactile feedback can be generated in two ways:
- * <ul>
- * <li>By producing direct feedback from the application.</li>
- * <li>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.</li>
- * </ul>
- * <p>
- * 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.
- * <p>
- * 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
- * <code>controlMoved</code> and <code>controlResized</code> methods of
- * <code>ControlListener</code> interface.
- * <p>
- * 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.
- * <p>
- * 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.
- * <p>
- * 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.
- * <p>
- * 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: <code>javax.microedition.lcdui.Canvas</code>,
- * <code>javax.microedition.lcdui.CustomItem</code>,
- * <code>org.eclipse.swt.widgets.Control</code>. 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 <code>id</code> 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 <code>x</code>, <code>y</code>, <code>width</code>
- * and <code>height</code> parameters may be located on the screen just
- * partially.
- *
- * <p>
- * 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
- * <code>controlMoved</code> and <code>controlResized</code> methods of
- * <code>ControlListener</code> interface. The update of an area may be
- * implemented by calling registerFeedbackArea with the same area id but new
- * coordinates and/or feedback style.
- * <p>
- * 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: <code>javax.microedition.lcdui.Canvas</code>
- * , <code>javax.microedition.lcdui.CustomItem</code>,
- * <code>org.eclipse.swt.widgets.Control</code>.
- * @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 <code>FEEDBACK_STYLE_BASIC</code>,
- * <code>FEEDBACK_STYLE_SENSITIVE</code>. 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:
- * <code>javax.microedition.lcdui.Canvas</code>,
- * <code>javax.microedition.lcdui.CustomItem</code>,
- * <code>org.eclipse.swt.widgets.Control</code>.
- * @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:
- * <code>javax.microedition.lcdui.Canvas</code>,
- * <code>javax.microedition.lcdui.CustomItem</code>,
- * <code>org.eclipse.swt.widgets.Control</code>.
- * @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:
- * <code>javax.microedition.lcdui.Canvas</code>,
- * <code>javax.microedition.lcdui.CustomItem</code>,
- * <code>org.eclipse.swt.widgets.Control</code>.
- * @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;
- }
-
-}
--- a/javauis/nokiauiapi_qt/src_j2se/com/nokia/mid/ui/TactileFeedback.java Thu Sep 02 13:22:59 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.
- * <p>
- * The API supports both LCDUI and eSWT UI toolkits.
- * <p>
- * 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.
- * <p>
- * Tactile feedback can be generated in two ways:
- * <ul>
- * <li>By producing direct feedback from the application.</li>
- * <li>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.</li>
- * </ul>
- * <p>
- * 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.
- * <p>
- * 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
- * <code>controlMoved</code> and <code>controlResized</code> methods of
- * <code>ControlListener</code> interface.
- * <p>
- * 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.
- * <p>
- * 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.
- * <p>
- * 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.
- * <p>
- * 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: <code>javax.microedition.lcdui.Canvas</code>,
- * <code>javax.microedition.lcdui.CustomItem</code>,
- * <code>org.eclipse.swt.widgets.Control</code>. 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 <code>id</code> 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 <code>x</code>, <code>y</code>, <code>width</code>
- * and <code>height</code> parameters may be located on the screen just
- * partially.
- *
- * <p>
- * 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
- * <code>controlMoved</code> and <code>controlResized</code> methods of
- * <code>ControlListener</code> interface. The update of an area may be
- * implemented by calling registerFeedbackArea with the same area id but new
- * coordinates and/or feedback style.
- * <p>
- * 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: <code>javax.microedition.lcdui.Canvas</code>
- * , <code>javax.microedition.lcdui.CustomItem</code>,
- * <code>org.eclipse.swt.widgets.Control</code>.
- * @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 <code>FEEDBACK_STYLE_BASIC</code>,
- * <code>FEEDBACK_STYLE_SENSITIVE</code>. 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:
- * <code>javax.microedition.lcdui.Canvas</code>,
- * <code>javax.microedition.lcdui.CustomItem</code>,
- * <code>org.eclipse.swt.widgets.Control</code>.
- * @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:
- * <code>javax.microedition.lcdui.Canvas</code>,
- * <code>javax.microedition.lcdui.CustomItem</code>,
- * <code>org.eclipse.swt.widgets.Control</code>.
- * @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:
- * <code>javax.microedition.lcdui.Canvas</code>,
- * <code>javax.microedition.lcdui.CustomItem</code>,
- * <code>org.eclipse.swt.widgets.Control</code>.
- * @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;
- }
-
-}
--- a/javauis/subsystem_qt.mk Thu Sep 02 13:22:59 2010 +0300
+++ b/javauis/subsystem_qt.mk Fri Sep 17 16:44:34 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
--- a/rom/java_3_1.iby Thu Sep 02 13:22:59 2010 +0300
+++ b/rom/java_3_1.iby Fri Sep 17 16:44:34 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
--- a/rom/javalocalization_3_1.iby Thu Sep 02 13:22:59 2010 +0300
+++ b/rom/javalocalization_3_1.iby Fri Sep 17 16:44:34 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__
--- a/rom/midpodclist30 Thu Sep 02 13:22:59 2010 +0300
+++ b/rom/midpodclist30 Fri Sep 17 16:44:34 2010 +0300
@@ -6,6 +6,7 @@
javacomm.odc
javacomms.odc
javaconnectionmanager.odc
+javacoreui.odc
javadatagram.odc
javafile.odc
javafileutils.odc