usbuis/usbuinotif/src/usbuinotifmsmmerror.cpp
branchRCL_3
changeset 79 25fce757be94
parent 33 d895b6d953c9
child 80 e02eb84a14d2
--- a/usbuis/usbuinotif/src/usbuinotifmsmmerror.cpp	Thu Aug 19 10:54:11 2010 +0300
+++ b/usbuis/usbuinotif/src/usbuinotifmsmmerror.cpp	Tue Aug 31 16:13:57 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2007-2010 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"
@@ -11,29 +11,25 @@
 *
 * Contributors:
 *
-* Description:  USB UI queries notifier class.
+* Description:  USB UI MSMM Error notifier class.
  *
 */
 
 
 // INCLUDE FILES
-#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 <usb/hostms/srverr.h> 
-#include <featmgr.h>
-
+#include <hb/hbwidgets/hbdevicemessageboxsymbian.h>      // dialog
+#include <hb/hbwidgets/hbdevicenotificationdialogsymbian.h> //discreet
+#include <hb/hbcore/hbtextresolversymbian.h>
+#include <usb/hostms/srverr.h>
 #include <usbuinotif.h>                     // pck
-#include <usbuinotif.rsg>                   // Own resources
-#include <secondarydisplay/usbuinotifsecondarydisplay.h> // Dialog index for cover UI
-
 #include "usbuinotifmsmmerror.h"            // Own class definition
 #include "usbuinotifdebug.h"                // Debugging macros
 
 
+// CONSTANTS
+/** granularity for allocating error strings */
+const TInt KUsbMsmmErrorGranularity = 5; 
+_LIT(KUSBUIconFileName, "qtg_large_usb");
 // ================= MEMBER FUNCTIONS =========================================
 
 // ----------------------------------------------------------------------------
@@ -57,7 +53,7 @@
 // ----------------------------------------------------------------------------
 //
 CUsbUiNotifMSMMError::CUsbUiNotifMSMMError() :
-    iStringIds( KUsbUiNotifOtgGeneralQueryGranularity)
+    iStringIds(NULL)
     {
     }
 
@@ -70,17 +66,25 @@
     //Make sure that the request is completed. Note that inside the destructor,
     //this virtual function call is to local CUsbUiNotifMSMMError::Cancel, 
     //not to any possibly derived class implementation. 
+    delete iStringIds;
     Cancel();
-    delete iDialerWatcher;    
-    delete iQuery;    
     }
 
 void CUsbUiNotifMSMMError::ConstructL()
     {
     CUSBUINotifierBase::ConstructL();
-    iStringIds.AppendL( R_USB_MSMM_ERROR_GENERAL_MASS_STORAGE_ERROR);
-    iStringIds.AppendL( R_USB_MSMM_ERROR_UNKNOWN_FILESYSTEM);
-    iStringIds.AppendL( R_USB_MSMM_ERROR_OUT_OF_MEMORY);  
+    iStringIds = new (ELeave) CDesCArrayFlat(KUsbMsmmErrorGranularity);
+    _LIT(KGeneralError,"txt_usb_info_error_in_usb_connection_disconnect_d");
+    _LIT(KUnknownFileSys, "txt_usb_info_unknown_file_system_disconnect_devic");
+    _LIT(KOutOfMemory, "txt_usb_info_disk_full_remove_some_files_and_try");
+    _LIT(KSafeToRemove, "txt_usb_dpinfo_safe_to_remove");
+    _LIT(KUnableToEject,"txt_usb_info_unable_to_eject_the_usb_device_some" );
+    
+    iStringIds->AppendL(KGeneralError);
+    iStringIds->AppendL(KUnknownFileSys);
+    iStringIds->AppendL(KOutOfMemory);
+    iStringIds->AppendL(KSafeToRemove);
+    iStringIds->AppendL(KUnableToEject);
     }
 
 // ----------------------------------------------------------------------------
@@ -101,76 +105,89 @@
 //  Jump to RunL as soon as possible.
 // ----------------------------------------------------------------------------
 //
-void CUsbUiNotifMSMMError::GetParamsL(const TDesC8& aBuffer, TInt aReplySlot,
+void CUsbUiNotifMSMMError::StartDialogL(const TDesC8& aBuffer, TInt aReplySlot,
         const RMessagePtr2& aMessage)
     {
-    FLOG(_L("[USBUINOTIF]\t CUsbUiNotifMSMMError::GetParamsL"));
-    if (iQuery || iReplySlot != 0 || iNeedToCompleteMessage)
+    FLOG(_L("[USBUINOTIF]\t CUsbUiNotifMSMMError::StartDialogL"));
+    if (iReplySlot != 0 || iNeedToCompleteMessage)
         {
         User::Leave( KErrInUse );
         }
 
+    InitializeTextResolver();
+
     iMessage = aMessage;
     iNeedToCompleteMessage = ETrue;
     iReplySlot = aReplySlot;
-
+    _LIT(KUsbDisconnected, "txt_usb_dpophead_usb_disconnected");
     // Get parameters 
     //    
     THostMsErrData error;
-    TPckgC<THostMsErrData> pckg( error);
+    TPckgC<THostMsErrData> pckg( error );
     pckg.Set( aBuffer );
+    int errorId = EUsbMSMMGeneralError;
     switch (pckg().iError)
         {
         case  EHostMsErrUnknownFileSystem:
-            iErrorId = EUsbMSMMUnknownFileSystem;
+            errorId = EUsbMSMMUnknownFileSystem;
             break;        
         case  EHostMsErrOutOfMemory:
-            iErrorId = EUsbMSMMOutOfMemory;
-            break;        
+            errorId = EUsbMSMMOutOfMemory;
+            break;       
+        case EHostMsErrNone:
+            errorId = EUsbMSMMSafeToRemove;
+            break;
+        case EHostMsErrInUse:
+            errorId = EUsbMSMMUnableToEject;
+            break;
         default:
-            iErrorId = EUsbMSMMGeneralError;
+            errorId = EUsbMSMMGeneralError;
         }
-
-    SetActive();
-    iStatus = KRequestPending;
-    TRequestStatus* stat = &iStatus;
-    User::RequestComplete( stat, KErrNone );
-    FLOG(_L("[USBUINOTIF]\t CUsbUiNotifMSMMError::GetParamsL() completed"));
-    }
-
-// ----------------------------------------------------------------------------
-// CUsbUiNotifMSMMError::RunL
-// Ask user response and return it to caller.
-// ----------------------------------------------------------------------------
-//
-void CUsbUiNotifMSMMError::RunL()
-    {
-    FLOG(_L("[USBUINOTIF]\t CUsbUiNotifMSMMError::RunL"));
-    TInt returnValue = KErrNone;
-    FeatureManager::InitializeLibL();
-    if ( FeatureManager::FeatureSupported( KFeatureIdFfKeypadNoSendKey ) )
-        { 
-        if (!iDialerWatcher)
+    HBufC* stringHolder = HbTextResolverSymbian::LoadLC(iStringIds->MdcaPoint(errorId)); 
+   
+   
+    if ( errorId == EUsbMSMMSafeToRemove)
+        {
+        // "safe to remove" discreet popup
+        HBufC* header = HbTextResolverSymbian::LoadLC(KUsbDisconnected);
+        if (iDiscreet)
             {
-            iDialerWatcher = CUsbuinotifDialerWatcher::NewL(this);
+             FLOG(_L("[USBUINOTIF]\t CUsbUiNotifMSMMError::StartDialogL() deleting previous dialog"));
+             delete iDiscreet;
+             iDiscreet = NULL;
             }
-        }        
-    iDismissed=EFalse;
-    DisableKeylock();
-    SuppressAppSwitching( ETrue );
-
-    //Excute dialog and check return value
-    returnValue = QueryUserResponseL();
-    if (!iDismissed)
+        iDiscreet = CHbDeviceNotificationDialogSymbian::NewL(this);
+        iDiscreet->SetTitleL(*header);
+        iDiscreet->SetTextL(*stringHolder);
+        iDiscreet->SetIconNameL(KUSBUIconFileName );
+        iDiscreet->ShowL();
+        CleanupStack::PopAndDestroy( header );   
+        }
+    else
         {
-        SuppressAppSwitching( EFalse );
-        RestoreKeylock();
-        delete iDialerWatcher;
-        iDialerWatcher = NULL;
-        CompleteMessage( returnValue );
+         //Delete the query in case the client didn't cancel the notifier 
+   			 //or close the session after the previous query.
+   
+        if (iQuery)
+            {
+            FLOG(_L("[USBUINOTIF]\t CUsbUiNotifMSMMError::StartDialogL() deleting previous dialog"));
+            delete iQuery;
+            iQuery = NULL;
+            }
+        
+        iQuery = CHbDeviceMessageBoxSymbian::NewL(
+                CHbDeviceMessageBoxSymbian::EWarning, this);
+        iQuery->SetTimeout(0);
+    
+  
+        iQuery->SetTextL(*stringHolder);
+        iQuery->ShowL();
         }
-
-    FLOG(_L("[USBUINOTIF]\t CUsbUiNotifMSMMError::RunL() completed"));
+   
+    CleanupStack::PopAndDestroy( stringHolder );
+   
+        
+    FLOG(_L("[USBUINOTIF]\t CUsbUiNotifMSMMError::StartDialogL() completed"));
     }
 
 // ----------------------------------------------------------------------------
@@ -181,92 +198,64 @@
 void CUsbUiNotifMSMMError::Cancel()
     {
     FLOG(_L("[USBUINOTIF]\t CUsbUiNotifMSMMError::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)
         {
+        FLOG(_L("[USBUINOTIF]\t CUsbUiNotifMSMMError::Cancel closing iQuery"));
+        iQuery->Close();
+        FLOG(_L("[USBUINOTIF]\t CUsbUiNotifMSMMError::Cancel iQuery closed"));
         delete iQuery;
+        FLOG(_L("[USBUINOTIF]\t CUsbUiNotifMSMMError::Cancel iQuery deleted"));
         iQuery = NULL;
         }
-
-
+    if (iDiscreet)
+        {
+        iDiscreet->Close();
+        delete iDiscreet;
+        iDiscreet = NULL;
+        }
+    CUSBUINotifierBase::Cancel();
     FLOG(_L("[USBUINOTIF]\t CUsbUiNotifMSMMError::Cancel() completed"));
     }
 
 // ----------------------------------------------------------------------------
-// CUsbUiNotifOtgError::DialerActivated
-// Release all own resources (member variables)
-// ----------------------------------------------------------------------------
-//
-void CUsbUiNotifMSMMError::DialerActivated()
-    {
-    FLOG(_L("[USBUINOTIF]\t CUSBUINotifierBase::AppKeyPressed()"));
-    if ( iQuery )
-        {
-        iDismissed=ETrue;    
-        Cancel();
-        }    
-    }
-
-// ----------------------------------------------------------------------------
-// CUsbUiNotifOtgError::ReActivateDialog
-// Release all own resources (member variables)
-// ----------------------------------------------------------------------------
-//	
-void CUsbUiNotifMSMMError::ReActivateDialog()
-    {    
-    FLOG(_L("[USBUINOTIF]\t CUSBUINotifierBase::ReActivateDialog()"));
-    if ( !IsActive())
-        {
-        SetActive();
-        iStatus = KRequestPending;
-        TRequestStatus* stat = &iStatus;
-        User::RequestComplete( stat, KErrNone );
-        }
-    }	
-// ----------------------------------------------------------------------------
-// CUsbUiNotifMSMMError::QueryUserResponseL
-// Show query dialog. 
+// Call back function to observe device message box closing.
 // ----------------------------------------------------------------------------
 //
-TInt CUsbUiNotifMSMMError::QueryUserResponseL()
+void CUsbUiNotifMSMMError::MessageBoxClosed(
+        const CHbDeviceMessageBoxSymbian* /*aMessageBox*/,
+        CHbDeviceMessageBoxSymbian::TButtonId aButton)
     {
-    FLOG(_L("[USBUINOTIF]\t CUsbUiNotifMSMMError::QueryUserResponseL"));
-    TInt returnValue = KErrNone;
-    TInt resourceId = R_USB_QUERY_OTG_ERROR;
-    if (iDismissed)
-        {
-        iQuery = CAknQueryDialog::NewL();
-        }
-    else
-        {
-        iQuery = CAknQueryDialog::NewL( CAknQueryDialog::EErrorTone );
-        }
-    
+    FLOG(_L("[USBUINOTIF]\t CUsbUiNotifMSMMError::MessageBoxClosed"));
+    int returnValue = KErrNone;
     
-    iDismissed=EFalse;
-    if (iCoverDisplaySupported)
-        {
-        iQuery->PublishDialogL( iErrorId, KUsbUiNotifMsmmError );
-        }
-    HBufC *stringHolder = StringLoader::LoadLC( iStringIds[iErrorId] );
-
-    TInt keypress = iQuery->ExecuteLD( resourceId, *stringHolder );
+    //iQuery will be deleted in Cancel. If Cancel is not called, it will be
+    //deleted next time the query is shown. 
 
-    CleanupStack::PopAndDestroy( stringHolder );
-
-    iQuery = NULL; // Dialog destroyed
+    if (aButton == CHbDeviceMessageBoxSymbian::EAcceptButton) 
+        {
+        returnValue = KErrNone;
+        } 
+    else 
+        {
+        returnValue = KErrCancel;
+        }
 
-    returnValue = keypress ? KErrNone : KErrCancel; //OK?
-
-    FLOG(_L("[USBUINOTIF]\t CUsbUiNotifMSMMError::QueryUserResponseL completed"));
-    return returnValue;
+    CompleteMessage( returnValue );
+    
+    FLOG(_L("[USBUINOTIF]\t CUsbUiNotifMSMMError::MessageBoxClosed completed"));    
     }
 
+void CUsbUiNotifMSMMError::NotificationDialogActivated(
+     const CHbDeviceNotificationDialogSymbian* /*aDialog*/)
+	{
+       
+	}
+   
+void CUsbUiNotifMSMMError::NotificationDialogClosed(
+        const CHbDeviceNotificationDialogSymbian* /*aDialog*/, TInt /*aCompletionCode*/)
+	{
+    FLOG(_L("[USBUINOTIF]\t CUsbUiNotifMSMMError::NotificationDialogClosed()"));
+    CompleteMessage( KErrCancel ); 
+    FLOG(_L("[USBUINOTIF]\t CUsbUiNotifMSMMError::NotificationDialogClosed() complete"));
+    }
 // End of File