--- a/usbuis/usbuinotif/src/usbuinotifotgerror.cpp Tue Aug 31 16:13:57 2010 +0300
+++ b/usbuis/usbuinotif/src/usbuinotifotgerror.cpp Wed Sep 01 12:20:49 2010 +0100
@@ -1,5 +1,5 @@
/*
-* Copyright (c) 2007, 2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies).
* All rights reserved.
* This component and the accompanying materials are made available
* under the terms of "Eclipse Public License v1.0"
@@ -17,16 +17,21 @@
// INCLUDE FILES
-#include <hb/hbwidgets/hbdevicemessageboxsymbian.h> // dialog
-#include <hb/hbcore/hbtextresolversymbian.h>
+#include <eikenv.h> // Eikon environment
+#include <bautils.h> // BAFL utils (for language file)
+#include <utf.h> // Unicode character conversion utilities
+#include <StringLoader.h> // Localisation stringloader
+#include <AknQueryDialog.h>
+#include <aknnotewrappers.h>
+#include <featmgr.h>
+
#include <usbuinotif.h> // pck
+#include <usbuinotif.rsg> // Own resources
+#include <secondarydisplay/usbuinotifsecondarydisplay.h> // Dialog index for cover UI
+
#include "usbuinotifotgerror.h" // Own class definition
#include "usbuinotifdebug.h" // Debugging macros
-// CONSTANTS
-/** granularity for allocating error strings */
-const TInt KUsbOtgErrorGranularity = 7;
-
// ================= MEMBER FUNCTIONS =========================================
@@ -51,7 +56,7 @@
// ----------------------------------------------------------------------------
//
CUsbUiNotifOtgError::CUsbUiNotifOtgError() :
- iStringIds(NULL)
+ iStringIds( KUsbUiNotifOtgGeneralQueryGranularity)
{
}
@@ -64,29 +69,21 @@
//Make sure that the request is completed. Note that inside the destructor,
//this virtual function call is to local CUsbUiNotifOtgError::Cancel,
//not to any possibly derived class implementation.
- delete iStringIds;
Cancel();
+ delete iDialerWatcher;
+ delete iQuery;
}
void CUsbUiNotifOtgError::ConstructL()
{
CUSBUINotifierBase::ConstructL();
- iStringIds = new (ELeave) CDesCArrayFlat(KUsbOtgErrorGranularity);
- _LIT(KCurrentLimit, "txt_usb_info_error_in_usb_connection_disconnect_d");
- _LIT(KTooMuchCurrent, "txt_usb_info_unsupported_usb_device_disconnect_de");
- _LIT(KUnsupported, "txt_usb_info_unsupported_usb_device_disconnect_de");
- _LIT(KHubUnsupported, "txt_usb_info_hubs_are_not_supported_disconnect_us");
- _LIT(KUnRecoverable, "txt_usb_info_error_in_usb_connection_disconnect_d");
- _LIT(KAttachTimeOut, "txt_usb_info_remove_usb_cable_or_connect_a_device");
- _LIT(KNotEnoughMemory, "txt_usb_info_memory_full_close_some_applications");
- iStringIds->AppendL( KCurrentLimit);
- iStringIds->AppendL( KTooMuchCurrent);
- iStringIds->AppendL( KUnsupported);
- iStringIds->AppendL( KHubUnsupported);
- iStringIds->AppendL( KUnRecoverable);
- iStringIds->AppendL( KAttachTimeOut);
- iStringIds->AppendL( KNotEnoughMemory);
-
+ iStringIds.AppendL( R_USB_OTG_ERROR_CURRENT_LIMIT);
+ iStringIds.AppendL( R_USB_OTG_ERROR_TOO_MUCH_CURRENT_REQUIRED);
+ iStringIds.AppendL( R_USB_OTG_ERROR_UNSUPPORTED);
+ iStringIds.AppendL( R_USB_OTG_ERROR_HUB_UNSUPPORTED);
+ iStringIds.AppendL( R_USB_OTG_ERROR_UNRECOVERABLE);
+ iStringIds.AppendL( R_USB_OTG_ERROR_ATTACH_TIMEDOUT);
+ iStringIds.AppendL( R_USB_ERROR_MEMORY_NOT_ENOUGH);
}
// ----------------------------------------------------------------------------
@@ -107,47 +104,74 @@
// Jump to RunL as soon as possible.
// ----------------------------------------------------------------------------
//
-void CUsbUiNotifOtgError::StartDialogL(const TDesC8& aBuffer, TInt aReplySlot,
+void CUsbUiNotifOtgError::GetParamsL(const TDesC8& aBuffer, TInt aReplySlot,
const RMessagePtr2& aMessage)
{
- FLOG(_L("[USBUINOTIF]\t CUsbUiNotifOtgError::StartDialogL"));
- if (iReplySlot != 0 || iNeedToCompleteMessage)
+ FLOG(_L("[USBUINOTIF]\t CUsbUiNotifOtgError::GetParamsL"));
+ if (iQuery || iReplySlot != 0 || iNeedToCompleteMessage)
{
User::Leave( KErrInUse );
}
-
- InitializeTextResolver();
+
+ // Get parameters
+ //
- TInt errorId = 0;
- TPckgC<TInt> pckg( errorId );
+ TPckgC<TInt> pckg( iErrorId );
pckg.Set( aBuffer );
- errorId = pckg();
+ iErrorId = pckg();
- FTRACE(FPrint(_L("[USBUINOTIF]\t CUsbUiNotifOtgError::GetParamsL iErrorId: %d"), errorId ));
- if ( errorId < 0 || errorId >= iStringIds->MdcaCount())
+ FTRACE(FPrint(_L("[USBUINOTIF]\t CUsbUiNotifOtgError::GetParamsL iErrorId: %d"), iErrorId ));
+ if ( iErrorId < 0 || iErrorId >= iStringIds.Count() )
{
User::Leave( KErrArgument);
}
+
iMessage = aMessage;
iNeedToCompleteMessage = ETrue;
- iReplySlot = aReplySlot;
-
- if (iQuery)
- {
- delete iQuery;
- iQuery = NULL;
- }
+ iReplySlot = aReplySlot;
+
+ SetActive();
+ iStatus = KRequestPending;
+ TRequestStatus* stat = &iStatus;
+ User::RequestComplete( stat, KErrNone );
- iQuery = CHbDeviceMessageBoxSymbian::NewL(
- CHbDeviceMessageBoxSymbian::EWarning, this);
- iQuery->SetTimeout(0);
- HBufC* stringHolder = HbTextResolverSymbian::LoadLC(iStringIds->MdcaPoint(errorId) );
- iQuery->SetTextL(*stringHolder);
- iQuery->ShowL();
- CleanupStack::PopAndDestroy( stringHolder );
-
-
- FLOG(_L("[USBUINOTIF]\t CUsbUiNotifOtgError::StartDialogL completed"));
+ FLOG(_L("[USBUINOTIF]\t CUsbUiNotifOtgError::GetParamsL() completed"));
+ }
+
+// ----------------------------------------------------------------------------
+// CUsbUiNotifOtgError::RunL
+// Ask user response and return it to caller.
+// ----------------------------------------------------------------------------
+//
+void CUsbUiNotifOtgError::RunL()
+ {
+ FLOG(_L("[USBUINOTIF]\t CUsbUiNotifOtgError::RunL"));
+ TInt returnValue = KErrNone;
+ FeatureManager::InitializeLibL();
+ if ( FeatureManager::FeatureSupported( KFeatureIdFfKeypadNoSendKey ) )
+ {
+ if (!iDialerWatcher)
+ {
+ iDialerWatcher = CUsbuinotifDialerWatcher::NewL(this);
+ }
+ }
+ FeatureManager::UnInitializeLib();
+ iDismissed=EFalse;
+ DisableKeylock();
+ SuppressAppSwitching( ETrue );
+
+ //Excute dialog and check return value
+ returnValue = QueryUserResponseL();
+ if (!iDismissed)
+ {
+ SuppressAppSwitching( EFalse );
+ RestoreKeylock();
+ delete iDialerWatcher;
+ iDialerWatcher = NULL;
+ CompleteMessage( returnValue );
+ }
+
+ FLOG(_L("[USBUINOTIF]\t CUsbUiNotifOtgError::RunL() completed"));
}
// ----------------------------------------------------------------------------
@@ -157,44 +181,93 @@
//
void CUsbUiNotifOtgError::Cancel()
{
- FLOG(_L("[USBUINOTIF]\t CUsbUiNotifOtgError::Cancel"));
+ FLOG(_L("[USBUINOTIF]\t CUsbUiNotifOtgError::Cancel"));
+
+ // If dialog is not dismissed this is normal cancel and if query
+ // doesn't exsist notifier is canceled during dismission
+ if (!iDismissed || !iQuery )
+ {
+ delete iDialerWatcher;
+ iDialerWatcher = NULL;
+ CompleteMessage( KErrCancel );
+ }
if (iQuery)
{
- iQuery->Close();
delete iQuery;
iQuery = NULL;
}
- CUSBUINotifierBase::Cancel();
-
FLOG(_L("[USBUINOTIF]\t CUsbUiNotifOtgError::Cancel() completed"));
}
+
// ----------------------------------------------------------------------------
-// Call back function to observe device message box closing.
+// CUsbUiNotifOtgError::DialerActivated
+// Release all own resources (member variables)
// ----------------------------------------------------------------------------
//
-void CUsbUiNotifOtgError::MessageBoxClosed(
- const CHbDeviceMessageBoxSymbian* /*aMessageBox*/,
- CHbDeviceMessageBoxSymbian::TButtonId aButton)
+void CUsbUiNotifOtgError::DialerActivated()
{
- FLOG(_L("[USBUINOTIF]\t CUsbUiNotifMSMMError::MessageBoxClosed"));
- int returnValue = KErrNone;
-
- //iQuery will be deleted in Cancel. If Cancel is not called, it will be
- //deleted next time the query is shown.
+ FLOG(_L("[USBUINOTIF]\t CUSBUINotifierBase::AppKeyPressed()"));
+ if ( iQuery )
+ {
+ iDismissed=ETrue;
+ Cancel();
+ }
+ }
- if (aButton == CHbDeviceMessageBoxSymbian::EAcceptButton)
- {
- returnValue = KErrNone;
- }
- else
+// ----------------------------------------------------------------------------
+// CUsbUiNotifOtgError::ReActivateDialog
+// Release all own resources (member variables)
+// ----------------------------------------------------------------------------
+//
+void CUsbUiNotifOtgError::ReActivateDialog()
+ {
+ FLOG(_L("[USBUINOTIF]\t CUSBUINotifierBase::ReActivateDialog()"));
+ if ( !IsActive())
{
- returnValue = KErrCancel;
+ SetActive();
+ iStatus = KRequestPending;
+ TRequestStatus* stat = &iStatus;
+ User::RequestComplete( stat, KErrNone );
}
-
- CompleteMessage( returnValue );
-
- FLOG(_L("[USBUINOTIF]\t CUsbUiNotifMSMMError::MessageBoxClosed completed"));
}
+// ----------------------------------------------------------------------------
+// CUsbUiNotifOtgError::QueryUserResponseL
+// Show query dialog.
+// ----------------------------------------------------------------------------
+//
+TInt CUsbUiNotifOtgError::QueryUserResponseL()
+ {
+ FLOG(_L("[USBUINOTIF]\t CUsbUiNotifOtgError::QueryUserResponseL"));
+ TInt returnValue = KErrNone;
+ TInt resourceId = R_USB_QUERY_OTG_ERROR;
+ if (iDismissed)
+ {
+ iQuery = CAknQueryDialog::NewL();
+ }
+ else
+ {
+ iQuery = CAknQueryDialog::NewL( CAknQueryDialog::EErrorTone );
+ }
+
+
+ iDismissed=EFalse;
+ if (iCoverDisplaySupported)
+ {
+ iQuery->PublishDialogL( iErrorId, KUsbUiNotifOtgError );
+ }
+ HBufC *stringHolder = StringLoader::LoadLC( iStringIds[iErrorId] );
+
+ TInt keypress = iQuery->ExecuteLD( resourceId, *stringHolder );
+
+ CleanupStack::PopAndDestroy( stringHolder );
+
+ iQuery = NULL; // Dialog destroyed
+
+ returnValue = keypress ? KErrNone : KErrCancel; //OK?
+
+ FLOG(_L("[USBUINOTIF]\t CUsbUiNotifOtgError::QueryUserResponseL completed"));
+ return returnValue;
+ }
// End of File