securitydialogs/SecUi/Src/SecQueryUi.cpp
branchGCC_SURGE
changeset 40 604cd42065d1
parent 38 e0432375ea67
child 45 5d3e34b7618a
--- a/securitydialogs/SecUi/Src/SecQueryUi.cpp	Thu Jun 17 12:11:51 2010 +0100
+++ b/securitydialogs/SecUi/Src/SecQueryUi.cpp	Thu Jul 22 16:43:28 2010 +0100
@@ -22,19 +22,9 @@
 #include <apgicnfl.h>                           // CApaMaskedBitmap
 #include <securityuisprivatepskeys.h>
 
-#include <CPhCltEmergencyCall.h>
+#include <cphcltemergencycall.h>
 #include <SCPClient.h>
-#include "SecUiWait.h"
-
-// Variant map keys for notification device dialog
-_LIT( KNotifDeviceDialogKeyTimeOut, "timeout" );
-_LIT( KNotifDeviceDialogKeyIconName, "iconName" );
-_LIT( KNotifDeviceDialogKeyText, "text" );
-_LIT( KNotifDeviceDialogKeyTitle, "title" );
-_LIT( KNotifDeviceDialogKeyTouchActivation, "touchActivation" );
-_LIT( KNotifDeviceDialogKeyActivated, "result" );
-_LIT( KNotifDeviceDialogKeyActivatedValue, "activated" );
-_LIT( KNotifDeviceDialogKeyTitleTextWrapping, "titleTextWrapping" );
+#include "SecUi.h"
 
 const TUid KSWInstHelpUid =
     {
@@ -109,22 +99,30 @@
     TInt err = RProperty::Get(KPSUidSecurityUIs,
             KSecurityUIsSecUIOriginatedQuery, secUiOriginatedQuery);
     RDEBUG("secUiOriginatedQuery", secUiOriginatedQuery);
-    if (secUiOriginatedQuery != ESecurityUIsSecUIOriginatedUninitialized)
-        {
-        // The query is already shown. This is valid for ESecurityUIsSecUIOriginated, and maybe for ESecurityUIsETelAPIOriginated
-        // For ESecurityUIsSystemLockOriginated it means that the "lock" dialog is already present.
-        // What to do? Can't dismiss the dialog because it's not owned. Can't device-unlock without asking code. Only can disable keyguard
-        RDEBUG("!!!! warning: secUiOriginatedQuery", secUiOriginatedQuery);
-        }
-    else
+    if (secUiOriginatedQuery == ESecurityUIsSecUIOriginatedUninitialized )	// &&  )
         {
         // set only if not set
         err = RProperty::Set(KPSUidSecurityUIs,
                 KSecurityUIsSecUIOriginatedQuery,
                 ESecurityUIsETelAPIOriginated);
         RDEBUG("setting secUiOriginatedQuery", ESecurityUIsETelAPIOriginated);
+      	}
+		else if ( secUiOriginatedQuery != ESecurityUIsSecUIOriginated )
+				{
+        RDEBUG("!!!! warning: secUiOriginatedQuery", secUiOriginatedQuery);
+        // The query is already shown. This is valid for ESecurityUIsSecUIOriginated, and maybe for ESecurityUIsETelAPIOriginated
+        // For ESecurityUIsSystemLockOriginated it means that the "lock" dialog is already present.
+        // Try to dismiss the dialog. Do same as CSecurityHandler::CancelSecCodeQuery
+        TInt aDismissDialog = -1;
+        err = RProperty::Get(KPSUidSecurityUIs, KSecurityUIsDismissDialog, aDismissDialog);
+        // it might happen that the dialog is already dismissing. Well, it won't harm to try again.
+        RDEBUG("aDismissDialog", aDismissDialog);
+        RDEBUG("err", err);
+        RDEBUG("set KSecurityUIsDismissDialog", ESecurityUIsDismissDialogOn);
+        err = RProperty::Set(KPSUidSecurityUIs, KSecurityUIsDismissDialog, ESecurityUIsDismissDialogOn);
+        RDEBUG("err", err);
         }
-
+		RDEBUG("calling ClearParamsAndSetNoteTypeL aMode", aMode);
     ClearParamsAndSetNoteTypeL(aMode);
     AddParamL(_L("KSecQueryUiApplicationName"), aCaption);
 
@@ -134,9 +132,22 @@
     AddParamL(_L("MinLength"), aMinLength);
     AddParamL(_L("MaxLength"), aMaxLength);
 
-    _LIT(KCodeTop, "codeTop");
-    _LIT(KCodeTopValue, "codeTop");
-    AddParamL(KCodeTop, KCodeTopValue);
+    switch (aMode & ESecUiBasicTypeMask) {
+    	case ESecUiBasicTypeCheck:
+                             _LIT(KChecboxDialog, "ChecboxDialog");
+                             _LIT(KChecbox, "ChecboxDialog");
+                             AddParamL(KChecboxDialog,KChecbox);
+                             break;
+    	case ESecUiBasicTypeMultiCheck:
+                            _LIT(KMultiChecboxDialog, "MultiChecboxDialog");
+                            _LIT(KMultiChecbox, "MultiChecboxDialog");
+                            AddParamL(KMultiChecboxDialog,KMultiChecbox);
+                            break;
+    	default:
+                            _LIT(KCodeTop, "codeTop");
+                            _LIT(KCodeTopValue, "codeTop");
+                            AddParamL(KCodeTop, KCodeTopValue);
+    }
 
     if (aCaption.Find(_L("|")) > 0)
         {
@@ -154,10 +165,12 @@
 
     RDEBUG("0", 0);
     DisplayDeviceDialogL();
+    TSecUi::UnInitializeLib();	// the counterpart is at DisplayDeviceDialogL
     TInt error = WaitUntilDeviceDialogClosed();
     RDEBUG("error", error);
     User::LeaveIfError(error);
-
+    RDEBUG("iPassword", 0);
+		RDebug::Print(iPassword);
     aDataText.Copy(iPassword);
 
     err = RProperty::Set(KPSUidSecurityUIs, KSecurityUIsSecUIOriginatedQuery,
@@ -349,8 +362,6 @@
             {
             _LIT(KInvalidNewLockCode, "invalidNewLockCode");
             _LIT(KInvalidNewLockCode0, "invalidNewLockCode#0");
-            _LIT(KInvalidNewLockCode1, "invalidNewLockCode#1");
-            _LIT(KInvalidNewLockCode2, "invalidNewLockCode#2");
             AddParamL(KInvalidNewLockCode, KInvalidNewLockCode0); // for starter
             RSCPClient scpClient;
             TSCPSecCode newCode;
@@ -358,7 +369,6 @@
             RDEBUG("scpClient.Connect", 0);
             if (scpClient.Connect() == KErrNone)
                 {
-                /*
                  RArray<TDevicelockPolicies> aFailedPolicies;
                  TDevicelockPolicies failedPolicy;
                  TInt retLockcode = KErrNone;
@@ -374,7 +384,6 @@
                  KInvalidNewLockCodeX.AppendNum(failedPolicy);
                  AddParamL( KInvalidNewLockCode, KInvalidNewLockCodeX );
                  }
-                 */
                 // TODO this should be able to modify MinLenght, MaxLenght
                 scpClient.Close();
                 }
@@ -534,14 +543,6 @@
     iVariantMap->Add(aKey, variant);
     }
 
-TInt strlen(const char* aStr)
-    {
-    TInt len = 0;
-    while (*aStr++ != 0)
-        ++len;
-    return len;
-    }
-
 // ---------------------------------------------------------------------------
 // CSecQueryUi::DisplayDeviceDialogL()
 // ---------------------------------------------------------------------------
@@ -549,19 +550,26 @@
 void CSecQueryUi::DisplayDeviceDialogL()
     {
     RDEBUG("0", 0);
+    TInt err = KErrNone;
+    RDEBUG("iIsDisplayingDialog", iIsDisplayingDialog);
     if (iDeviceDialog && iIsDisplayingDialog)
         {
+    		RDEBUG("iDeviceDialog", 1);
         iDeviceDialog->Update(*iVariantMap);
         }
     else
         {
+    		RDEBUG("!iDeviceDialog", 0);
         if (!iDeviceDialog)
             {
+            RDEBUG("new iDeviceDialog", 0);
             iDeviceDialog = CHbDeviceDialogSymbian::NewL();
             }
         _LIT(KSecQueryUiDeviceDialog, "com.nokia.secuinotificationdialog/1.0");
         RDEBUG("Show", 0);
-        iDeviceDialog->Show(KSecQueryUiDeviceDialog, *iVariantMap, this);
+        err = iDeviceDialog->Show(KSecQueryUiDeviceDialog, *iVariantMap, this);
+        RDEBUG("err", err);
+        TSecUi::InitializeLibL();
         RDEBUG("iIsDisplayingDialog", iIsDisplayingDialog);
         iIsDisplayingDialog = ETrue;
         RDEBUG("iIsDisplayingDialog", iIsDisplayingDialog);
@@ -580,6 +588,7 @@
     iReturnValue = KErrUnknown;
     if (!IsActive() && iWait && !iWait->IsStarted())
         {
+        RDEBUG("KRequestPending", KRequestPending);
         iStatus = KRequestPending;
         SetActive();
         RDEBUG("Start", 0);