phoneuis/easydialing/tsrc/edta/src/edta_appui.cpp
branchRCL_3
changeset 3 8871b09be73b
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/phoneuis/easydialing/tsrc/edta/src/edta_appui.cpp	Fri Feb 19 22:50:26 2010 +0200
@@ -0,0 +1,310 @@
+/*
+* Copyright (c) 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"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Easy dialing test application.
+*
+*/
+
+// INCLUDE FILES
+#include <avkon.hrh>
+#include <aknnotewrappers.h>
+#include <stringloader.h>
+#include <Edta.rsg>
+#include <f32file.h>
+#include <s32file.h>
+#include <aiwservicehandler.h>
+#include <centralrepository.h>
+#include <easydialingcrkeys.h>
+
+#include "edta.pan"
+#include "edta_appui.h"
+#include "edta_appview.h"
+#include "edta.hrh"
+#include "edta_querydialog.h"
+#include <AknQueryDialog.h>
+
+
+
+
+// CONSTANTS
+const TInt KSearchStringMaxLen = 64;
+
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+
+// -----------------------------------------------------------------------------
+// CEdtaAppUi::ConstructL()
+// Symbian 2nd phase constructor can leave.
+// -----------------------------------------------------------------------------
+//
+void CEdtaAppUi::ConstructL()
+    {
+    // Initialise app UI with standard value.
+    BaseConstructL(CAknAppUi::EAknEnableSkin);
+
+    // Create view object
+    iAppView = CEdtaAppView::NewL( ClientRect() );
+    
+    // TODO: remove?
+    iServiceHandler = CAiwServiceHandler::NewL();
+
+    iRepository = CRepository::NewL( KCRUidEasyDialSettings );
+    
+    AddToStackL(iAppView);
+    }
+
+// -----------------------------------------------------------------------------
+// CEdtaAppUi::CEdtaAppUi()
+// C++ default constructor can NOT contain any code, that might leave.
+// -----------------------------------------------------------------------------
+//
+CEdtaAppUi::CEdtaAppUi()
+    {
+    // No implementation required
+    }
+
+// -----------------------------------------------------------------------------
+// CEdtaAppUi::~CEdtaAppUi()
+// Destructor.
+// -----------------------------------------------------------------------------
+//
+CEdtaAppUi::~CEdtaAppUi()
+    {
+    if ( iAppView )
+        {
+        RemoveFromStack(iAppView);
+        delete iAppView;
+        iAppView = NULL;
+        }
+    delete iServiceHandler;
+    
+    if ( iRepository )
+        {
+        // default setting
+        iRepository->Set(KEasyDialingContactThumbnails, 1);
+        }
+    delete iRepository;
+    }
+
+
+TInt CreateTestContactDatabaseL(); // Should be moved into correct place
+
+// -----------------------------------------------------------------------------
+// CEdtaAppUi::HandleCommandL()
+// Takes care of command handling.
+// -----------------------------------------------------------------------------
+//
+void CEdtaAppUi::HandleCommandL( TInt aCommand )
+    {
+    DebugPrintF(_L("CEdtaAppUi::HandleCommandL enter: 0x%X"), aCommand );
+
+    switch( aCommand )
+        {
+        case EEikCmdExit:
+        case EAknSoftkeyExit:
+            DebugPrintF(_L("CEdtaAppUi::HandleCommandL: EXIT"));
+            Exit();
+            break;
+
+        case EEdtaSetPluginInput:
+            {
+            DebugPrintF(_L("CEdtaAppUi::HandleCommandL: EEdtaSetPluginInput"));
+
+            if( CheckPluginLoadedAndShowNote() )
+                {
+                CAknTextQueryDialog* dlg = CAknTextQueryDialog::NewL( iQueryText );
+                if( dlg->ExecuteLD(R_DIALOG_TEXT_EDIT_QUERY))
+                    {
+                    if (iAppView->GetEasyDialer())
+                        {
+                        iAppView->GetEasyDialer()->SetInputL( iQueryText );
+                        }
+                    }
+                }
+            }
+            break;
+
+        case EEdtaCommandShowContacts:
+            {
+            DebugPrintF(_L("CEdtaAppUi::HandleCommandL: EEdtaCommandShowContacts"));
+
+            if( iAppView->IsPCSServerLoaded() )
+                {
+                CAknTextQueryDialog* dlg = CAknTextQueryDialog::NewL( iQueryText );
+                if( dlg->ExecuteLD(R_DIALOG_TEXT_EDIT_QUERY))
+                    {
+                    iAppView->ShowMatchingContactsL(iQueryText);
+                    }
+                }
+            }
+            break;
+
+        case EEdtaLaunchFirstContact:
+            {
+            DebugPrintF(_L("CEdtaAppUi::HandleCommandL: EEdtaLaunchFirstContact"));
+            if( iAppView->IsPCSServerLoaded() )
+                iAppView->LaunchNthContactL( 0 );
+            }
+            break;
+
+        case EEdtaSelectAndLaunchContact:
+            {
+            DebugPrintF(_L("CEdtaAppUi::HandleCommandL: EEdtaSelectAndLaunchContact"));
+            iAppView->SelectAndLaunchContactL();
+            }
+            break;
+
+        case EEdtaCommandCheckPCSServer:
+            {
+            DebugPrintF(_L("CEdtaAppUi::HandleCommandL: EEdtaCommandCheckPCSServer"));
+            if( iAppView->IsPCSServerLoaded() )
+                iAppView->CheckPCSServerL();
+            }
+            break;
+
+        case EEdtaCommandShowNameOrdering:
+            {
+            DebugPrintF(_L("CEdtaAppUi::HandleCommandL: EEdtaCommandShowNameOrdering"));
+            iAppView->ShowNameOrderL();
+            }
+            break;
+
+        case EEdtaCommandCreateTestContactBase:
+            {
+            DebugPrintF(_L("CEdtaAppUi::HandleCommandL: EEdtaCommandCreateTestContactBase"));
+            TInt newContactsCount = CreateTestContactDatabaseL();
+            iAppView->GetScreenBuffer()->WriteLineL(_L("Test contacts updated"));
+            iAppView->GetScreenBuffer()->WriteLineL(_L("%d new contacts"), newContactsCount );
+            }
+            break;
+            
+        case EEdtaCommandTwoConsequtiveSearchesTest:
+            DebugPrintF(_L("CEdtaAppUi::HandleCommandL: Two search test"));
+
+             if( CheckPluginLoadedAndShowNote() )
+                 {
+                 CAknTextQueryDialog* dlg = CAknTextQueryDialog::NewL( iQueryText );
+                 if( dlg->ExecuteLD(R_DIALOG_TEXT_EDIT_QUERY))
+                     {
+                     HBufC* anotherQueryText = HBufC::NewLC( KSearchStringMaxLen );
+                     TPtr ptr = anotherQueryText->Des();
+                     
+                     CAknTextQueryDialog* dlg2 = CAknTextQueryDialog::NewL( ptr );
+                     
+                     if ( dlg2->ExecuteLD(R_DIALOG_TEXT_EDIT_QUERY) )
+                         {                   
+                         if (iAppView->GetEasyDialer())
+                             {
+                             iAppView->GetEasyDialer()->SetInputL( iQueryText );
+                             iAppView->GetEasyDialer()->SetInputL( ptr );
+                             }
+                         }
+                     CleanupStack::PopAndDestroy( anotherQueryText );
+                     }
+                 }
+             break;
+
+        case EEdtaCommandMiscCoverageTest:
+            
+            if (iAppView->GetEasyDialer())
+                 {
+                 iAppView->DoMiscellaneousTestsL(  );
+                 }            
+            break;
+        
+        case EEdtaCommandShowThumbnails:
+            iRepository->Set(KEasyDialingContactThumbnails, 1);         
+            break;
+            
+        case EEdtaCommandHideThumbnails:
+            iRepository->Set(KEasyDialingContactThumbnails, 0);
+            break;
+            
+        default:
+            iServiceHandler->ExecuteMenuCmdL(
+                aCommand,
+                iServiceHandler->InParamListL(),    // No input parameters
+                iServiceHandler->OutParamListL(),   // No output parameters
+                0,                                  // No options used.
+                NULL);                              // No need for callback    
+
+            DebugPrintF(_L("CEdtaAppUi::HandleCommandL: AIW (or unknown) menu command: 0x%X"), aCommand );
+            break;
+        }
+
+    DebugPrintF(_L("CEdtaAppUi::HandleCommandL exit"));
+    }
+
+
+void CEdtaAppUi::DynInitMenuPaneL(TInt aResourceId,CEikMenuPane* aMenuPane)
+    {
+    // First, offer menu pane to AIW framework. It might be the case, that the 
+    // user is opening an AIW submenu. In this case, the AIW handles the menu.
+    if ( iServiceHandler->HandleSubmenuL( *aMenuPane ) )
+        {
+        return;
+        }
+        
+    // Add your normal (non-AIW) menu initialisation code here...      
+
+    // Let AIW provider add its menu items to the menu.
+    iServiceHandler->InitializeMenuPaneL(
+        *aMenuPane, 
+        aResourceId, 
+        EEdtaCommandLast, 
+        iServiceHandler->InParamListL());    
+    }
+
+// -----------------------------------------------------------------------------
+//  Called by the framework when the application status pane
+//  size is changed.  Passes the new client rectangle to the
+//  AppView
+// -----------------------------------------------------------------------------
+//
+void CEdtaAppUi::HandleStatusPaneSizeChange()
+    {
+    iAppView->SetRect( ClientRect() );
+    }
+
+
+
+// -----------------------------------------------------------------------------
+// Display note id easydialing plugin is not loaded
+// -----------------------------------------------------------------------------
+//
+TBool CEdtaAppUi::CheckPluginLoadedAndShowNote()
+    {
+    TBool plugin_loaded( ETrue );
+
+    if( !(iAppView->GetEasyDialer()) )
+        {
+        plugin_loaded = EFalse;
+        TBuf<KEdtaMaxLineWidth> tempStr;
+        tempStr.Copy(_L("Easydialing plugin not loaded!"));
+        
+        TRAP_IGNORE(
+                {
+                CAknErrorNote* myNote = new (ELeave) CAknErrorNote();
+                myNote->SetTimeout( CAknNoteDialog::ELongTimeout );
+                myNote->ExecuteLD( tempStr );
+                }
+        );
+        }
+
+    DebugPrintF(_L("CEdtaAppUi::CheckPluginLoadedAndShowNote: Plugin loaded: %d"), plugin_loaded );
+
+    return plugin_loaded;
+    }
+
+// End of File