securitydialogs/SecUi/Src/SecQueryUi.cpp
changeset 37 7bad16cccaca
parent 26 aad866c37519
child 38 e0432375ea67
--- a/securitydialogs/SecUi/Src/SecQueryUi.cpp	Fri Jun 11 14:28:40 2010 +0300
+++ b/securitydialogs/SecUi/Src/SecQueryUi.cpp	Wed Jun 23 19:10:54 2010 +0300
@@ -101,10 +101,15 @@
     RDEBUG("secUiOriginatedQuery", secUiOriginatedQuery);
     if (secUiOriginatedQuery != ESecurityUIsSecUIOriginatedUninitialized)
         {
+        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.
-        // 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);
+        // 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);
+        err = RProperty::Set(KPSUidSecurityUIs, KSecurityUIsDismissDialog, ESecurityUIsDismissDialogOn);
         }
     else
         {
@@ -114,7 +119,7 @@
                 ESecurityUIsETelAPIOriginated);
         RDEBUG("setting secUiOriginatedQuery", ESecurityUIsETelAPIOriginated);
         }
-
+		RDEBUG("calling ClearParamsAndSetNoteTypeL aMode=", aMode);
     ClearParamsAndSetNoteTypeL(aMode);
     AddParamL(_L("KSecQueryUiApplicationName"), aCaption);
 
@@ -124,9 +129,24 @@
     AddParamL(_L("MinLength"), aMinLength);
     AddParamL(_L("MaxLength"), aMaxLength);
 
-    _LIT(KCodeTop, "codeTop");
-    _LIT(KCodeTopValue, "codeTop");
-    AddParamL(KCodeTop, KCodeTopValue);
+// ESecUiBasicTypeMultiCheck
+
+    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)
         {
@@ -144,10 +164,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,
@@ -520,14 +542,6 @@
     iVariantMap->Add(aKey, variant);
     }
 
-TInt strlen(const char* aStr)
-    {
-    TInt len = 0;
-    while (*aStr++ != 0)
-        ++len;
-    return len;
-    }
-
 // ---------------------------------------------------------------------------
 // CSecQueryUi::DisplayDeviceDialogL()
 // ---------------------------------------------------------------------------
@@ -535,19 +549,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);
@@ -566,6 +587,7 @@
     iReturnValue = KErrUnknown;
     if (!IsActive() && iWait && !iWait->IsStarted())
         {
+        RDEBUG("KRequestPending", KRequestPending);
         iStatus = KRequestPending;
         SetActive();
         RDEBUG("Start", 0);