diff -r b63e8c2d8cff -r 604cd42065d1 securitydialogs/SecUi/Src/SecQueryUi.cpp --- 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 // CApaMaskedBitmap #include -#include +#include #include -#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 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);