securitydialogs/SecUi/Src/SecQueryUi.cpp
changeset 37 7bad16cccaca
parent 26 aad866c37519
child 38 e0432375ea67
equal deleted inserted replaced
26:aad866c37519 37:7bad16cccaca
    99     TInt err = RProperty::Get(KPSUidSecurityUIs,
    99     TInt err = RProperty::Get(KPSUidSecurityUIs,
   100             KSecurityUIsSecUIOriginatedQuery, secUiOriginatedQuery);
   100             KSecurityUIsSecUIOriginatedQuery, secUiOriginatedQuery);
   101     RDEBUG("secUiOriginatedQuery", secUiOriginatedQuery);
   101     RDEBUG("secUiOriginatedQuery", secUiOriginatedQuery);
   102     if (secUiOriginatedQuery != ESecurityUIsSecUIOriginatedUninitialized)
   102     if (secUiOriginatedQuery != ESecurityUIsSecUIOriginatedUninitialized)
   103         {
   103         {
       
   104         RDEBUG("!!!! warning: secUiOriginatedQuery", secUiOriginatedQuery);
   104         // The query is already shown. This is valid for ESecurityUIsSecUIOriginated, and maybe for ESecurityUIsETelAPIOriginated
   105         // The query is already shown. This is valid for ESecurityUIsSecUIOriginated, and maybe for ESecurityUIsETelAPIOriginated
   105         // For ESecurityUIsSystemLockOriginated it means that the "lock" dialog is already present.
   106         // For ESecurityUIsSystemLockOriginated it means that the "lock" dialog is already present.
   106         // What to do? Can't dismiss the dialog because it's not owned. Can't device-unlock without asking code. Only can disable keyguard
   107         // Try to dismiss the dialog. Do same as CSecurityHandler::CancelSecCodeQuery
   107         RDEBUG("!!!! warning: secUiOriginatedQuery", secUiOriginatedQuery);
   108         TInt aDismissDialog = -1;
       
   109         err = RProperty::Get(KPSUidSecurityUIs, KSecurityUIsDismissDialog, aDismissDialog);
       
   110         // it might happen that the dialog is already dismissing. Well, it won't harm to try again.
       
   111         RDEBUG("aDismissDialog", aDismissDialog);
       
   112         err = RProperty::Set(KPSUidSecurityUIs, KSecurityUIsDismissDialog, ESecurityUIsDismissDialogOn);
   108         }
   113         }
   109     else
   114     else
   110         {
   115         {
   111         // set only if not set
   116         // set only if not set
   112         err = RProperty::Set(KPSUidSecurityUIs,
   117         err = RProperty::Set(KPSUidSecurityUIs,
   113                 KSecurityUIsSecUIOriginatedQuery,
   118                 KSecurityUIsSecUIOriginatedQuery,
   114                 ESecurityUIsETelAPIOriginated);
   119                 ESecurityUIsETelAPIOriginated);
   115         RDEBUG("setting secUiOriginatedQuery", ESecurityUIsETelAPIOriginated);
   120         RDEBUG("setting secUiOriginatedQuery", ESecurityUIsETelAPIOriginated);
   116         }
   121         }
   117 
   122 		RDEBUG("calling ClearParamsAndSetNoteTypeL aMode=", aMode);
   118     ClearParamsAndSetNoteTypeL(aMode);
   123     ClearParamsAndSetNoteTypeL(aMode);
   119     AddParamL(_L("KSecQueryUiApplicationName"), aCaption);
   124     AddParamL(_L("KSecQueryUiApplicationName"), aCaption);
   120 
   125 
   121     _LIT(KTitle, "title");
   126     _LIT(KTitle, "title");
   122     // _LIT(KTitleValue1, "Enter PIN");
   127     // _LIT(KTitleValue1, "Enter PIN");
   123     AddParamL(KTitle, aCaption);
   128     AddParamL(KTitle, aCaption);
   124     AddParamL(_L("MinLength"), aMinLength);
   129     AddParamL(_L("MinLength"), aMinLength);
   125     AddParamL(_L("MaxLength"), aMaxLength);
   130     AddParamL(_L("MaxLength"), aMaxLength);
   126 
   131 
   127     _LIT(KCodeTop, "codeTop");
   132 // ESecUiBasicTypeMultiCheck
   128     _LIT(KCodeTopValue, "codeTop");
   133 
   129     AddParamL(KCodeTop, KCodeTopValue);
   134     switch (aMode & ESecUiBasicTypeMask) {
       
   135     case ESecUiBasicTypeCheck:
       
   136                              _LIT(KChecboxDialog, "ChecboxDialog");
       
   137                              _LIT(KChecbox, "ChecboxDialog");
       
   138                              AddParamL(KChecboxDialog,KChecbox);
       
   139                              break;
       
   140     case ESecUiBasicTypeMultiCheck:
       
   141                             _LIT(KMultiChecboxDialog, "MultiChecboxDialog");
       
   142                             _LIT(KMultiChecbox, "MultiChecboxDialog");
       
   143                             AddParamL(KMultiChecboxDialog,KMultiChecbox);
       
   144                             break;
       
   145     default:
       
   146                             _LIT(KCodeTop, "codeTop");
       
   147                             _LIT(KCodeTopValue, "codeTop");
       
   148                             AddParamL(KCodeTop, KCodeTopValue);
       
   149     }
   130 
   150 
   131     if (aCaption.Find(_L("|")) > 0)
   151     if (aCaption.Find(_L("|")) > 0)
   132         {
   152         {
   133         RDEBUG("codeBottom aMode", aMode);
   153         RDEBUG("codeBottom aMode", aMode);
   134         _LIT(KCodeBottom, "codeBottom");
   154         _LIT(KCodeBottom, "codeBottom");
   142         AddParamL(KDefaultCode, aDataText);
   162         AddParamL(KDefaultCode, aDataText);
   143         }
   163         }
   144 
   164 
   145     RDEBUG("0", 0);
   165     RDEBUG("0", 0);
   146     DisplayDeviceDialogL();
   166     DisplayDeviceDialogL();
       
   167     TSecUi::UnInitializeLib();	// the counterpart is at DisplayDeviceDialogL
   147     TInt error = WaitUntilDeviceDialogClosed();
   168     TInt error = WaitUntilDeviceDialogClosed();
   148     RDEBUG("error", error);
   169     RDEBUG("error", error);
   149     User::LeaveIfError(error);
   170     User::LeaveIfError(error);
   150 
   171     RDEBUG("iPassword", 0);
       
   172 		RDebug::Print(iPassword);
   151     aDataText.Copy(iPassword);
   173     aDataText.Copy(iPassword);
   152 
   174 
   153     err = RProperty::Set(KPSUidSecurityUIs, KSecurityUIsSecUIOriginatedQuery,
   175     err = RProperty::Set(KPSUidSecurityUIs, KSecurityUIsSecUIOriginatedQuery,
   154             ESecurityUIsSecUIOriginatedUninitialized);
   176             ESecurityUIsSecUIOriginatedUninitialized);
   155     RDEBUG("clearing secUiOriginatedQuery",
   177     RDEBUG("clearing secUiOriginatedQuery",
   518     CHbSymbianVariant* variant = NULL;
   540     CHbSymbianVariant* variant = NULL;
   519     variant = CHbSymbianVariant::NewL(&aValue, CHbSymbianVariant::EDes);
   541     variant = CHbSymbianVariant::NewL(&aValue, CHbSymbianVariant::EDes);
   520     iVariantMap->Add(aKey, variant);
   542     iVariantMap->Add(aKey, variant);
   521     }
   543     }
   522 
   544 
   523 TInt strlen(const char* aStr)
       
   524     {
       
   525     TInt len = 0;
       
   526     while (*aStr++ != 0)
       
   527         ++len;
       
   528     return len;
       
   529     }
       
   530 
       
   531 // ---------------------------------------------------------------------------
   545 // ---------------------------------------------------------------------------
   532 // CSecQueryUi::DisplayDeviceDialogL()
   546 // CSecQueryUi::DisplayDeviceDialogL()
   533 // ---------------------------------------------------------------------------
   547 // ---------------------------------------------------------------------------
   534 //
   548 //
   535 void CSecQueryUi::DisplayDeviceDialogL()
   549 void CSecQueryUi::DisplayDeviceDialogL()
   536     {
   550     {
   537     RDEBUG("0", 0);
   551     RDEBUG("0", 0);
       
   552     TInt err = KErrNone;
       
   553     RDEBUG("iIsDisplayingDialog", iIsDisplayingDialog);
   538     if (iDeviceDialog && iIsDisplayingDialog)
   554     if (iDeviceDialog && iIsDisplayingDialog)
   539         {
   555         {
       
   556     		RDEBUG("iDeviceDialog", 1);
   540         iDeviceDialog->Update(*iVariantMap);
   557         iDeviceDialog->Update(*iVariantMap);
   541         }
   558         }
   542     else
   559     else
   543         {
   560         {
       
   561     		RDEBUG("!iDeviceDialog", 0);
   544         if (!iDeviceDialog)
   562         if (!iDeviceDialog)
   545             {
   563             {
       
   564             RDEBUG("new iDeviceDialog", 0);
   546             iDeviceDialog = CHbDeviceDialogSymbian::NewL();
   565             iDeviceDialog = CHbDeviceDialogSymbian::NewL();
   547             }
   566             }
   548         _LIT(KSecQueryUiDeviceDialog, "com.nokia.secuinotificationdialog/1.0");
   567         _LIT(KSecQueryUiDeviceDialog, "com.nokia.secuinotificationdialog/1.0");
   549         RDEBUG("Show", 0);
   568         RDEBUG("Show", 0);
   550         iDeviceDialog->Show(KSecQueryUiDeviceDialog, *iVariantMap, this);
   569         err = iDeviceDialog->Show(KSecQueryUiDeviceDialog, *iVariantMap, this);
       
   570         RDEBUG("err", err);
       
   571         TSecUi::InitializeLibL();
   551         RDEBUG("iIsDisplayingDialog", iIsDisplayingDialog);
   572         RDEBUG("iIsDisplayingDialog", iIsDisplayingDialog);
   552         iIsDisplayingDialog = ETrue;
   573         iIsDisplayingDialog = ETrue;
   553         RDEBUG("iIsDisplayingDialog", iIsDisplayingDialog);
   574         RDEBUG("iIsDisplayingDialog", iIsDisplayingDialog);
   554         }
   575         }
   555     RDEBUG("0", 0);
   576     RDEBUG("0", 0);
   564     RDEBUG("0", 0);
   585     RDEBUG("0", 0);
   565     iCompletionCode = KErrInUse;
   586     iCompletionCode = KErrInUse;
   566     iReturnValue = KErrUnknown;
   587     iReturnValue = KErrUnknown;
   567     if (!IsActive() && iWait && !iWait->IsStarted())
   588     if (!IsActive() && iWait && !iWait->IsStarted())
   568         {
   589         {
       
   590         RDEBUG("KRequestPending", KRequestPending);
   569         iStatus = KRequestPending;
   591         iStatus = KRequestPending;
   570         SetActive();
   592         SetActive();
   571         RDEBUG("Start", 0);
   593         RDEBUG("Start", 0);
   572         iWait->Start();
   594         iWait->Start();
   573         RDEBUG("Started", 1);
   595         RDEBUG("Started", 1);