diff -r aad866c37519 -r cc1cea6aabaf securitydialogs/SecUi/Src/SecQueryUi.cpp --- a/securitydialogs/SecUi/Src/SecQueryUi.cpp Fri Jun 11 14:28:40 2010 +0300 +++ b/securitydialogs/SecUi/Src/SecQueryUi.cpp Thu Jun 24 12:46:20 2010 +0300 @@ -99,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); @@ -124,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) { @@ -144,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, @@ -520,14 +543,6 @@ iVariantMap->Add(aKey, variant); } -TInt strlen(const char* aStr) - { - TInt len = 0; - while (*aStr++ != 0) - ++len; - return len; - } - // --------------------------------------------------------------------------- // CSecQueryUi::DisplayDeviceDialogL() // --------------------------------------------------------------------------- @@ -535,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); @@ -566,6 +588,7 @@ iReturnValue = KErrUnknown; if (!IsActive() && iWait && !iWait->IsStarted()) { + RDEBUG("KRequestPending", KRequestPending); iStatus = KRequestPending; SetActive(); RDEBUG("Start", 0);