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