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); |