diff -r 753e33780645 -r 453d490c84a5 htiui/HtiAdmin/src/HtiAdminAppUi.cpp --- a/htiui/HtiAdmin/src/HtiAdminAppUi.cpp Fri Sep 03 07:53:25 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1143 +0,0 @@ -/* -* Copyright (c) 2009 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: AppUi implementation, all functions here -* -*/ - -// INCLUDE FILES -#include -#include -#include -#include -#include -#include -#include - -#include -#include // for KHTICommInterfaceUid -#include -#include - -#include "HtiAdmin.pan" -#include "HtiAdminAppUi.h" -#include "HtiAdminAppView.h" -#include "HtiAdmin.hrh" - - -#ifdef __ENABLE_LOGGING__ - -#include - -_LIT(KLogFolder, "hti"); -_LIT(KLogFile, "htiadmin.txt"); -#define HTI_LOG_TEXT(a1) {_LIT(temp, a1); RFileLogger::Write(KLogFolder, KLogFile, EFileLoggingModeAppend, temp);} -#define HTI_LOG_FORMAT(a1,a2) {_LIT(temp, a1); RFileLogger::WriteFormat(KLogFolder, KLogFile, EFileLoggingModeAppend, temp, (a2));} -#define HTI_LOG_DES(a1) {RFileLogger::Write(KLogFolder, KLogFile, EFileLoggingModeAppend, (a1));} - -#else // __ENABLE_LOGGING__ - -#define HTI_LOG_TEXT(a1) -#define HTI_LOG_FORMAT(a1,a2) -#define HTI_LOG_DES(a1) - -#endif // __ENABLE_LOGGING__ - -// CONSTANTS -_LIT( KHtiWatchDogMatchPattern, "HtiWatchDog*" ); -_LIT( KHtiFrameworkExe, "HtiFramework.exe" ); -_LIT( KHtiMatchPattern, "HtiFramework*" ); -_LIT( KHtiFrameworkCaption, "HTI status: " ); -_LIT( KHtiAutoStartCaption, "AutoStart: " ); -_LIT( KHtiVersionCaption, "Version: " ); -_LIT( KHtiSelectedCommCaption, "Communication: " ); -_LIT( KHtiAdminStartParameter, "admin" ); -_LIT( KHtiAdminVersionFormat, "%u.%u.%u (%uwk%02u)" ); -_LIT( KHtiAdminAboutVersionFormat, "Version %u.%u.%u - " ); -const static TInt KTerminateReason = 1; - - -const TInt32 KHTIImplUidSerial = {0x10210CCA}; -const TInt32 KHTIImplUidBluetooth = {0x200212CC}; -const TInt32 KHTIImplUidIPComm = {0x200212CE}; - -// configuration file constants -_LIT( KCfgFilePath, "\\"); -_LIT( KHtiCfg, "hti.cfg" ); -_LIT( KHtiBtCommCfg, "HTIBtComm.cfg" ); -_LIT( KHtiSerialCommCfg , "HTISerialComm.cfg" ); -_LIT( KHtiIPCommCfg, "HTIIPComm.cfg" ); -// hti.cfg -_LIT8( KCommPlugin, "CommPlugin" ); -_LIT8( KPriority, "Priority" ); -_LIT8( KShowConsole, "ShowConsole" ); -_LIT8( KEnableHtiWatchDog, "EnableHtiWatchDog" ); -_LIT8( KEnableHtiAutoStart, "EnableHtiAutoStart" ); -_LIT8( KShowErrorDialogs, "ShowErrorDialogs" ); -// HtiBtComm.cfg -_LIT8( KBtDeviceAddress, "BtDeviceAddress" ); -_LIT8( KBtDeviceName, "BtDeviceName" ); -// HtiSerialComm.cfg -_LIT8( KCommPortNumber, "CommPort" ); -// HTIIPComm.cfg -_LIT8( KLocalPort, "LocalPort" ); -_LIT8( KRemoteHost, "RemoteHost" ); -_LIT8( KRemotePort, "RemotePort" ); -_LIT8( KIAPName, "IAPName" ); - - -// ConstructL is called by the application framework -void CHtiAdminAppUi::ConstructL() - { - BaseConstructL( EAknEnableSkin ); - iAppView = CHtiAdminAppView::NewL( ClientRect() ); - AddToStackL( iAppView ); - - iAppView->SetCaption( KHtiFrameworkCaption ); - iAppView->SetVersionCaption( KHtiVersionCaption ); - iAppView->SetAutoStartCaption( KHtiAutoStartCaption ); - iAppView->SetSelectedCommCaption( KHtiSelectedCommCaption ); - UpdateVersion(); - UpdateStatusL(); - StartTimer(); - iHtiCfg = CHtiCfg::NewL(); - UpdateAutoStartStatus(); // uses iHtiCfg - UpdateSelectedComm(); // uses iHtiCfg - } - -CHtiAdminAppUi::CHtiAdminAppUi() - { - iHtiCfg = NULL; - } - -CHtiAdminAppUi::~CHtiAdminAppUi() - { - KillTimer(); - if ( iAppView ) - { - RemoveFromStack( iAppView ); - delete iAppView; - iAppView = NULL; - } - - if ( iHtiCfg ) - delete iHtiCfg; - } - -void CHtiAdminAppUi::DynInitMenuPaneL(TInt aResourceId, CEikMenuPane *aMenuPane) - { - HTI_LOG_FORMAT( "DynInitMenuPaneL 0x%x", aResourceId ); - - if ( aResourceId == R_HTIADMIN_MENU ) - { - RProcess prs; - if ( OpenHtiProcess( prs ) ) - { - if ( prs.ExitType() == EExitPending ) - { - aMenuPane->SetItemDimmed( EHtiAdminStart, ETrue ); - aMenuPane->SetItemDimmed( EHtiAdminSubOptions, ETrue ); - prs.Close(); - return; - } - } - aMenuPane->SetItemDimmed( EHtiAdminStop, ETrue ); - prs.Close(); - } - - else if ( aResourceId == R_HTIADMIN_SUBMENU_OPTIONS ) - { -#if !defined(__ENABLE_LOGGING__) - aMenuPane->SetItemDimmed( EHtiAdminSubLogs, ETrue ); -#endif - } - else if ( aResourceId == R_HTIADMIN_SUBMENU_PRIORITY ) - { - TInt priority = 3; // default value - TRAPD( err, iHtiCfg->LoadCfgL( KCfgFilePath, KHtiCfg ) ); - if ( !err ) - { - TRAP( err, priority = iHtiCfg->GetParameterIntL( KPriority ) ); - } - - switch ( priority ) - { - case 1: - aMenuPane->SetItemButtonState( EHtiAdminPriorityBackground, EEikMenuItemSymbolOn ); - break; - case 2: - aMenuPane->SetItemButtonState( EHtiAdminPriorityForeground, EEikMenuItemSymbolOn ); - break; - case 4: - aMenuPane->SetItemButtonState( EHtiAdminPriorityAbsoluteHigh, EEikMenuItemSymbolOn ); - break; - default: - aMenuPane->SetItemButtonState( EHtiAdminPriorityHigh, EEikMenuItemSymbolOn ); - break; - } - } - - else if ( aResourceId == R_HTIADMIN_SUBMENU_AUTOSTART ) - { -#ifdef __WINS__ - TInt value = 0; // default value for emulator -#else - TInt value = 1; // default value for hardware -#endif - TRAPD( err, iHtiCfg->LoadCfgL( KCfgFilePath, KHtiCfg ) ); - if ( !err ) - { - TRAP( err, value = iHtiCfg->GetParameterIntL( KEnableHtiAutoStart ) ); - } - - if ( value ) - aMenuPane->SetItemButtonState( EHtiAdminAutoStartEnable, EEikMenuItemSymbolOn ); - else - aMenuPane->SetItemButtonState( EHtiAdminAutoStartDisable, EEikMenuItemSymbolOn ); - } - - else if ( aResourceId == R_HTIADMIN_SUBMENU_WATCHDOG ) - { - TInt value = 0; // default value - TRAPD( err, iHtiCfg->LoadCfgL( KCfgFilePath, KHtiCfg ) ); - if ( !err ) - { - TRAP( err, value = iHtiCfg->GetParameterIntL( KEnableHtiWatchDog ) ); - } - - if ( value ) - aMenuPane->SetItemButtonState( EHtiAdminWatchDogEnable, EEikMenuItemSymbolOn ); - else - aMenuPane->SetItemButtonState( EHtiAdminWatchDogDisable, EEikMenuItemSymbolOn ); - } - - else if ( aResourceId == R_HTIADMIN_SUBMENU_CONSOLE ) - { - TInt value = 0; // default value - TRAPD( err, iHtiCfg->LoadCfgL( KCfgFilePath, KHtiCfg ) ); - if ( !err ) - { - TRAP( err, value = iHtiCfg->GetParameterIntL( KShowConsole ) ); - } - - if ( value ) - aMenuPane->SetItemButtonState( EHtiAdminConsoleEnable, EEikMenuItemSymbolOn ); - else - aMenuPane->SetItemButtonState( EHtiAdminConsoleDisable, EEikMenuItemSymbolOn ); - } - - else if ( aResourceId == R_HTIADMIN_SUBMENU_ERROR_DIALOGS ) - { - TInt value = 1; // default value - TRAPD( err, iHtiCfg->LoadCfgL( KCfgFilePath, KHtiCfg ) ); - if ( !err ) - { - TRAP( err, value = iHtiCfg->GetParameterIntL( KShowErrorDialogs ) ); - } - - if ( value ) - aMenuPane->SetItemButtonState( EHtiAdminErrorDialogsEnable, EEikMenuItemSymbolOn ); - else - aMenuPane->SetItemButtonState( EHtiAdminErrorDialogsDisable, EEikMenuItemSymbolOn ); - } - } - - -// Helper function to get data from a dialog -TInt ShowDialog(TInt aResourceId, const TDesC &aText, TDes8 &aValue) - { - TBuf data; - - CAknTextQueryDialog* dlg; - dlg = new (ELeave) CAknTextQueryDialog(data); - CleanupStack::PushL(dlg); - dlg->SetPromptL(aText); - dlg->SetMaxLength(KMaxParameterValueLength); - CleanupStack::Pop(); // dlg - - if ( dlg->ExecuteLD( aResourceId ) ) - { - aValue.Copy(data); - return KErrNone; - } - - return KErrCancel; - } - -void CHtiAdminAppUi::ShowBTListQueryL() - { - TInt selectedOption( KErrNotFound ); - - CDesCArrayFlat* array = new (ELeave) CDesCArrayFlat(20); - CleanupStack::PushL(array); - - array->AppendL(_L("By BT address")); - array->AppendL(_L("By BT Name")); - array->AppendL(_L("Search when starting")); - - CAknListQueryDialog* dlg = new(ELeave) CAknListQueryDialog( &selectedOption ); - dlg->PrepareLC(R_QUERY_DIALOG); - dlg->SetItemTextArray(array); - dlg->SetOwnershipType(ELbmDoesNotOwnItemArray); - dlg->RunLD(); - - CleanupStack::PopAndDestroy(array); - - if(selectedOption == 0) - { - HandleBtByAddress(); - } - else if(selectedOption == 1) - { - HandleBtByName(); - } - else if (selectedOption == 2) - { - HandleBtSearch(); - } - } - -void CHtiAdminAppUi::ShowIPListQueryL() - { - TInt selectedOption( KErrNotFound ); - - CDesCArrayFlat* array = new (ELeave) CDesCArrayFlat(10); - CleanupStack::PushL(array); - - array->AppendL(_L("Listen")); - array->AppendL(_L("Connect")); - - CAknListQueryDialog* dlg = new(ELeave) CAknListQueryDialog( &selectedOption ); - dlg->PrepareLC(R_QUERY_DIALOG); - dlg->SetItemTextArray(array); - dlg->SetOwnershipType(ELbmDoesNotOwnItemArray); - dlg->RunLD(); - - CleanupStack::PopAndDestroy(array); - - if(selectedOption == 0) - { - HandleIPListen(); - } - else if(selectedOption == 1) - { - HandleIPConnect(); - } - } - -void CleanupRArray( TAny* object ) - { - ( ( RImplInfoPtrArray* ) object )->ResetAndDestroy(); - } - -void CHtiAdminAppUi::ShowCommsListQueryL() - { - TInt selectedOption( KErrNotFound ); - - const TInt pluginNameArrayGranularity (15); - CDesCArrayFlat* pluginNameArray = new (ELeave) CDesCArrayFlat(pluginNameArrayGranularity); - CleanupStack::PushL(pluginNameArray); - - RImplInfoPtrArray implInfoArray; - CleanupStack::PushL( TCleanupItem( CleanupRArray, &implInfoArray ) ); - - REComSession::ListImplementationsL( KHTICommInterfaceUid, implInfoArray ); - - for ( TInt i = 0; i < implInfoArray.Count(); ++i ) - { - pluginNameArray->AppendL(implInfoArray[i]->DisplayName()); - } - - CAknListQueryDialog* dlg = new(ELeave) CAknListQueryDialog( &selectedOption ); - - dlg->PrepareLC(R_QUERY_DIALOG); - dlg->SetHeaderTextL(_L("Select communication")); - dlg->SetItemTextArray(pluginNameArray); - dlg->SetOwnershipType(ELbmDoesNotOwnItemArray); - - if(dlg->RunLD()) - { - TInt32 uid = implInfoArray[selectedOption]->ImplementationUid().iUid; - switch(uid) - { - case KHTIImplUidSerial: - { - TRAP_IGNORE( iHtiCfg->LoadCfgL( KCfgFilePath, KHtiCfg ) ); - iHtiCfg->SetParameterL( KCommPlugin, _L8( "SERIAL" ) ); - iHtiCfg->SaveCfgL( KCfgFilePath, KHtiCfg ); - - TBuf8 portNum; - if ( !ShowDialog( R_NUMERIC_QUERY, _L("Com port number:"), portNum ) ) - { - TRAP_IGNORE( iHtiCfg->LoadCfgL( KCfgFilePath, KHtiSerialCommCfg ) ); - iHtiCfg->SetParameterL( KCommPortNumber, portNum ); - iHtiCfg->SaveCfgL( KCfgFilePath, KHtiSerialCommCfg ); - } - UpdateSelectedComm(); - } - break; - - case KHTIImplUidBluetooth: - { - ShowBTListQueryL(); - } - break; - - case KHTIImplUidIPComm: - { - ShowIPListQueryL(); - } - break; - default: - { - //Just save the conf info for other plugins - TRAP_IGNORE( iHtiCfg->LoadCfgL( KCfgFilePath, KHtiCfg ) ); - iHtiCfg->SetParameterL( KCommPlugin, implInfoArray[selectedOption]->DataType() ); - iHtiCfg->SaveCfgL( KCfgFilePath, KHtiCfg ); - UpdateSelectedComm(); - } - } - } - CleanupStack::PopAndDestroy(2, pluginNameArray); - } - -void CHtiAdminAppUi::HandleBtByAddress() - { - TRAP_IGNORE( iHtiCfg->LoadCfgL( KCfgFilePath, KHtiCfg ) ); - iHtiCfg->SetParameterL( KCommPlugin, _L8( "BTSERIAL" ) ); - iHtiCfg->SaveCfgL( KCfgFilePath, KHtiCfg ); - - TRAP_IGNORE( iHtiCfg->LoadCfgL( KCfgFilePath, KHtiBtCommCfg ) ); - iHtiCfg->RemoveParameterL( KBtDeviceName ); - iHtiCfg->RemoveParameterL( KBtDeviceAddress ); - - TBuf8 address; - if ( !ShowDialog( R_TEXT_QUERY, _L("BT address:"), address) ) - { - iHtiCfg->SetParameterL( KBtDeviceAddress, address); - } - - iHtiCfg->SaveCfgL( KCfgFilePath, KHtiBtCommCfg); - UpdateSelectedComm(); - } - -void CHtiAdminAppUi::HandleBtByName() - { - TRAP_IGNORE( iHtiCfg->LoadCfgL( KCfgFilePath, KHtiCfg ) ); - iHtiCfg->SetParameterL( KCommPlugin, _L8( "BTSERIAL" ) ); - iHtiCfg->SaveCfgL( KCfgFilePath, KHtiCfg ); - - TRAP_IGNORE( iHtiCfg->LoadCfgL( KCfgFilePath, KHtiBtCommCfg ) ); - iHtiCfg->RemoveParameterL( KBtDeviceName ); - iHtiCfg->RemoveParameterL( KBtDeviceAddress ); - - TBuf8 name; - if ( !ShowDialog( R_TEXT_QUERY, _L( "BT name:" ), name ) ) - { - iHtiCfg->SetParameterL( KBtDeviceName, name ); - } - - iHtiCfg->SaveCfgL( KCfgFilePath, KHtiBtCommCfg ); - UpdateSelectedComm(); - } - -void CHtiAdminAppUi::HandleBtSearch() - { - TRAP_IGNORE( iHtiCfg->LoadCfgL( KCfgFilePath, KHtiCfg ) ); - iHtiCfg->SetParameterL( KCommPlugin, _L8( "BTSERIAL" ) ); - iHtiCfg->SaveCfgL( KCfgFilePath, KHtiCfg ); - - TRAP_IGNORE( iHtiCfg->LoadCfgL( KCfgFilePath, KHtiBtCommCfg ) ); - iHtiCfg->RemoveParameterL( KBtDeviceName ); - iHtiCfg->RemoveParameterL( KBtDeviceAddress ); - iHtiCfg->SaveCfgL( KCfgFilePath, KHtiBtCommCfg ); - UpdateSelectedComm(); - } - -void CHtiAdminAppUi::HandleIPListen() - { - TRAP_IGNORE( iHtiCfg->LoadCfgL( KCfgFilePath, KHtiCfg ) ); - iHtiCfg->SetParameterL( KCommPlugin, _L8("IPCOMM")); - iHtiCfg->SaveCfgL( KCfgFilePath, KHtiCfg ); - - TRAP_IGNORE( iHtiCfg->LoadCfgL( KCfgFilePath, KHtiIPCommCfg ) ); - iHtiCfg->RemoveParameterL( KRemotePort ); - iHtiCfg->RemoveParameterL( KRemoteHost ); - - TBuf8 localPort; - if ( !ShowDialog( R_TEXT_QUERY, _L( "Local port:" ), localPort ) ) - { - iHtiCfg->SetParameterL( KLocalPort, localPort ); - ShowCommsDBListQueryL(); - } - iHtiCfg->SaveCfgL( KCfgFilePath, KHtiIPCommCfg ); - UpdateSelectedComm(); - } - -void CHtiAdminAppUi::HandleIPConnect() - { - TRAP_IGNORE( iHtiCfg->LoadCfgL( KCfgFilePath, KHtiCfg ) ); - iHtiCfg->SetParameterL( KCommPlugin, _L8( "IPCOMM" ) ); - iHtiCfg->SaveCfgL( KCfgFilePath, KHtiCfg ); - - TRAP_IGNORE( iHtiCfg->LoadCfgL( KCfgFilePath, KHtiIPCommCfg ) ); - iHtiCfg->RemoveParameterL( KLocalPort ); - TBuf8 remoteHost; - TBuf8 remotePort; - if ( !ShowDialog( R_TEXT_QUERY, _L("Remote host:"), remoteHost ) ) - { - iHtiCfg->SetParameterL( KRemoteHost, remoteHost ); - if ( !ShowDialog( R_TEXT_QUERY, _L( "Remote port:" ), remotePort ) ) - { - iHtiCfg->SetParameterL( KRemotePort, remotePort ); - ShowCommsDBListQueryL(); - } - } - iHtiCfg->SaveCfgL( KCfgFilePath, KHtiIPCommCfg ); - UpdateSelectedComm(); - } - - -// handle any menu commands -void CHtiAdminAppUi::HandleCommandL(TInt aCommand) - { - TFileName cfgFile; - - switch ( aCommand ) - { - case EEikCmdExit: - case EAknSoftkeyExit: - Exit(); - break; - - case EHtiAdminStart: - { - HTI_LOG_TEXT( "Start" ); - RProcess prs; - TInt err; - TBool isRunning = EFalse; - if ( OpenHtiProcess( prs ) ) - { - if ( prs.ExitType() == EExitPending ) - { - isRunning = ETrue; - _LIT(KText, "Already running"); - iAppView->SetStatus( KText ); - } - prs.Close(); - } - - if ( !isRunning ) - { - HTI_LOG_TEXT( "create process" ); - err = prs.Create( KHtiFrameworkExe, KHtiAdminStartParameter ); - if ( err == KErrNone ) - { - prs.Resume(); - prs.Close(); - UpdateStatusL(); - HTI_LOG_TEXT("create done"); - } - else - { - TBuf<64> msg; - msg.Format( _L("Error in starting: %d"), err ); - iAppView->SetStatus( msg ); - HTI_LOG_TEXT("create error"); - } - } - } - break; - - case EHtiAdminStop: - { - HTI_LOG_TEXT("Stop"); - - // kill the watchdog to prevent it from restarting HTI again - KillHtiWatchDogL(); - - RProcess prs; - if ( OpenHtiProcess( prs ) ) - { - if ( prs.ExitType() == EExitPending ) - { - HTI_LOG_TEXT("try to kill"); - prs.Kill( KTerminateReason ); - UpdateStatusL(); - } - else - { - _LIT(KText, "Already stopped"); - iAppView->SetStatus( KText ); - } - prs.Close(); - } - } - break; - - case EHtiAdminAbout: - { - HTI_LOG_TEXT("About"); - TDateSuffix suffix( KHtiVersionDay - 1 ); - TMonthName month( ( TMonth ) ( KHtiVersionMonth - 1 ) ); - TBuf<64> msgPart1; - msgPart1.Format( KHtiAdminAboutVersionFormat, - KHtiVersionMajor, KHtiVersionMinor, KHtiVersionBuild ); - msgPart1.AppendNum( KHtiVersionDay ); - msgPart1.Append( suffix ); - msgPart1.Append( ' ' ); - msgPart1.Append( month ); - msgPart1.Append( ' ' ); - msgPart1.AppendNum( KHtiVersionYear ); - msgPart1.Append( '.' ); - msgPart1.Append( ' ' ); - HBufC* msgPart2 = iEikonEnv->AllocReadResourceLC( R_HTIADMIN_ABOUT_TEXT ); - HBufC* fullMsg = HBufC::NewLC( msgPart1.Length() + msgPart2->Length() ); - fullMsg->Des().Append( msgPart1 ); - fullMsg->Des().Append( *msgPart2 ); - CAknMessageQueryDialog* dialog = new ( ELeave ) CAknMessageQueryDialog; - dialog->PrepareLC( R_HTIADMIN_ABOUT_DIALOG ); - dialog->SetMessageTextL( *fullMsg ); - dialog->RunLD(); - CleanupStack::PopAndDestroy( 2 ); // fullMsg, msgPart2 - } - break; - - case EHtiAdminSubOptions: - break; - - case EHtiAdminSubLogs: - break; - - case EHtiAdminCreateLogFolder: -#ifdef __ENABLE_LOGGING__ - { - TInt err = KErrNone; - RFs fs; - err = fs.Connect(); - if ( err == KErrNone ) - { - err = fs.MkDirAll(_L("c:\\logs\\hti\\")); - } - fs.Close(); - } -#endif - break; - - case EHtiAdminRemoveLogFolder: -#ifdef __ENABLE_LOGGING__ - { - TInt err = KErrNone; - RFs fs; - err = fs.Connect(); - if ( err == KErrNone ) - { - CFileMan *fileman = CFileMan::NewL( fs ); - fileman->RmDir( _L( "c:\\logs\\hti\\" ) ); - delete fileman; - } - fs.Close(); - } -#endif - break; - - case EHtiAdminClearLogs: -#ifdef __ENABLE_LOGGING__ - { - TInt err = KErrNone; - RFs fs; - err = fs.Connect(); - if ( err == KErrNone ) - { - CFileMan *fileman = CFileMan::NewL( fs ); - fileman->Delete( _L( "c:\\logs\\hti\\*" ) ); - fileman->Delete( _L( "c:\\HTI_*.log" ) ); - delete fileman; - } - fs.Close(); - } -#endif - break; - - case EHtiAdminSubComms: - { - ShowCommsListQueryL(); - } - break; - - case EHtiAdminSubPriority: - break; - - case EHtiAdminPriorityBackground: - TRAP_IGNORE( iHtiCfg->LoadCfgL( KCfgFilePath, KHtiCfg ) ); - iHtiCfg->SetParameterL( KPriority, _L8("1")); - iHtiCfg->SaveCfgL( KCfgFilePath, KHtiCfg ); - break; - - case EHtiAdminPriorityForeground: - TRAP_IGNORE( iHtiCfg->LoadCfgL( KCfgFilePath, KHtiCfg ) ); - iHtiCfg->SetParameterL( KPriority, _L8("2")); - iHtiCfg->SaveCfgL( KCfgFilePath, KHtiCfg ); - break; - - case EHtiAdminPriorityHigh: - TRAP_IGNORE( iHtiCfg->LoadCfgL( KCfgFilePath, KHtiCfg ) ); - iHtiCfg->SetParameterL( KPriority, _L8("3")); - iHtiCfg->SaveCfgL( KCfgFilePath, KHtiCfg ); - break; - - case EHtiAdminPriorityAbsoluteHigh: - TRAP_IGNORE( iHtiCfg->LoadCfgL( KCfgFilePath, KHtiCfg ) ); - iHtiCfg->SetParameterL( KPriority, _L8("4")); - iHtiCfg->SaveCfgL( KCfgFilePath, KHtiCfg ); - break; - - case EHtiAdminSubAutoStart: - break; - - case EHtiAdminAutoStartEnable: - TRAP_IGNORE( iHtiCfg->LoadCfgL( KCfgFilePath, KHtiCfg ) ); - iHtiCfg->SetParameterL( KEnableHtiAutoStart, _L8("1")); - iHtiCfg->SaveCfgL( KCfgFilePath, KHtiCfg ); - UpdateAutoStartStatus(); - break; - - case EHtiAdminAutoStartDisable: - TRAP_IGNORE( iHtiCfg->LoadCfgL( KCfgFilePath, KHtiCfg ) ); - iHtiCfg->SetParameterL( KEnableHtiAutoStart, _L8("0")); - iHtiCfg->SaveCfgL( KCfgFilePath, KHtiCfg ); - UpdateAutoStartStatus(); - break; - - case EHtiAdminSubWatchDog: - break; - - case EHtiAdminWatchDogEnable: - TRAP_IGNORE( iHtiCfg->LoadCfgL( KCfgFilePath, KHtiCfg ) ); - iHtiCfg->SetParameterL( KEnableHtiWatchDog, _L8("1")); - iHtiCfg->SaveCfgL( KCfgFilePath, KHtiCfg ); - break; - - case EHtiAdminWatchDogDisable: - TRAP_IGNORE( iHtiCfg->LoadCfgL( KCfgFilePath, KHtiCfg ) ); - iHtiCfg->SetParameterL( KEnableHtiWatchDog, _L8("0")); - iHtiCfg->SaveCfgL( KCfgFilePath, KHtiCfg ); - break; - - case EHtiAdminSubConsole: - break; - - case EHtiAdminConsoleEnable: - TRAP_IGNORE( iHtiCfg->LoadCfgL( KCfgFilePath, KHtiCfg ) ); - iHtiCfg->SetParameterL( KShowConsole, _L8("1")); - iHtiCfg->SaveCfgL( KCfgFilePath, KHtiCfg ); - break; - - case EHtiAdminConsoleDisable: - TRAP_IGNORE( iHtiCfg->LoadCfgL( KCfgFilePath, KHtiCfg ) ); - iHtiCfg->SetParameterL( KShowConsole, _L8("0")); - iHtiCfg->SaveCfgL( KCfgFilePath, KHtiCfg ); - break; - - case EHtiAdminErrorDialogsEnable: - TRAP_IGNORE( iHtiCfg->LoadCfgL( KCfgFilePath, KHtiCfg ) ); - iHtiCfg->SetParameterL( KShowErrorDialogs, _L8("1")); - iHtiCfg->SaveCfgL( KCfgFilePath, KHtiCfg ); - break; - - case EHtiAdminErrorDialogsDisable: - TRAP_IGNORE( iHtiCfg->LoadCfgL( KCfgFilePath, KHtiCfg ) ); - iHtiCfg->SetParameterL( KShowErrorDialogs, _L8("0")); - iHtiCfg->SaveCfgL( KCfgFilePath, KHtiCfg ); - break; - - case EHtiAdminSubSetParam: - break; - - case EHtiAdminHtiCfg: - cfgFile = KHtiCfg; - - case EHtiAdminHtiBtCommCfg: - if ( !cfgFile.Length() ) - cfgFile = KHtiBtCommCfg; - - case EHtiAdminHtiIPCommCfg: - if ( !cfgFile.Length() ) - cfgFile = KHtiIPCommCfg; - - case EHtiAdminHtiSerialCommCfg: - { - if ( !cfgFile.Length() ) - cfgFile = KHtiSerialCommCfg; - - TBuf8 parameterName; - if ( !ShowDialog( R_TEXT_QUERY, _L("Parameter name:"), parameterName) ) - { - TBuf8 parameterValue; - if ( !ShowDialog( R_TEXT_QUERY, _L("Parameter value:"), parameterValue ) ) - { - TRAP_IGNORE( iHtiCfg->LoadCfgL( KCfgFilePath, cfgFile ) ); - iHtiCfg->SetParameterL( parameterName, parameterValue ); - iHtiCfg->SaveCfgL( KCfgFilePath, cfgFile); - } - } - } - break; - - default: - { - CAknErrorNote* dialog = new(ELeave)CAknErrorNote(ETrue); - dialog->ExecuteLD(_L("Unknown Command Recieved")); - } - break; - } - } - -void CHtiAdminAppUi::HandleForegroundEventL( TBool aForeground ) - { - CAknAppUi::HandleForegroundEventL( aForeground ); - - if ( aForeground ) - { - UpdateStatusL(); - UpdateAutoStartStatus(); - StartTimer(); - } - else - { - KillTimer(); - } - } - -TBool CHtiAdminAppUi::OpenHtiProcess( RProcess& aPrs ) - { - HTI_LOG_TEXT( "OpenHtiProcess" ); - - TFullName processName; - TInt err; - - TFindProcess finder( KHtiMatchPattern ); - err = finder.Next( processName ); - if ( err == KErrNone ) - { - HTI_LOG_TEXT( "try to open..." ); - err = aPrs.Open( finder ); - HTI_LOG_TEXT( "opened" ); - - if ( err == KErrNone ) - { - HTI_LOG_TEXT( "OpenHtiProcess OK" ); - return ETrue; - } - else - { - HTI_LOG_TEXT( "Failed to open process" ); - TBuf<64> msg; - msg.Format( _L( "Error: %d" ), err ); - iAppView->SetStatus( msg ); - } - } - else if ( err == KErrNotFound ) - { - HTI_LOG_TEXT( "Not found" ); - _LIT( KNotFound, "Stopped" ); - iAppView->SetStatus( KNotFound ); - } - else - { - TBuf<64> msg; - msg.Format( _L( "Error: %d" ), err ); - iAppView->SetStatus( msg ); - } - - HTI_LOG_TEXT( "OpenHtiProcess NOK" ); - - return EFalse; - } - - -void CHtiAdminAppUi::UpdateVersion() - { - HTI_LOG_TEXT( "UpdateVersion" ); - TBuf<128> tmp; - tmp.Format( KHtiAdminVersionFormat, KHtiVersionMajor, KHtiVersionMinor, - KHtiVersionBuild, KHtiVersionYear, KHtiVersionWeek ); - iAppView->SetVersion( tmp ); - } - - -void CHtiAdminAppUi::UpdateStatusL() - { - HTI_LOG_TEXT( "UpdateStatusL" ); - RProcess prs; - if ( OpenHtiProcess( prs ) ) - { - HTI_LOG_TEXT( "Update display" ); - TExitType exT = prs.ExitType(); - - switch ( exT ) - { - case EExitPending: - { - _LIT( KTxt, "Running" ); - iAppView->SetStatus( KTxt ); - } - break; - - case EExitKill: - case EExitTerminate: - { - _LIT( KTxt, "Stopped" ); - iAppView->SetStatus( KTxt ); - } - break; - - case EExitPanic: - { - _LIT( KTxt, "Panic" ); - iAppView->SetStatus( KTxt ); - } - break; - }; - prs.Close(); - } - } - -void CHtiAdminAppUi::UpdateAutoStartStatus() - { - HTI_LOG_TEXT( "UpdateAutoStartStatus" ); - TInt value = KErrNotFound; - TRAPD( err, iHtiCfg->LoadCfgL( KCfgFilePath, KHtiCfg ) ); - if ( !err ) - { - TRAP( err, value = iHtiCfg->GetParameterIntL(KEnableHtiAutoStart) ); - } - - if ( value == KErrNotFound ) - { - // Use default values if not found from config. -#ifdef __WINS__ - value = 0; -#else - value = 1; -#endif - } - - if ( value == 0 ) - { - _LIT( KTxt, "Disabled" ); - iAppView->SetAutoStartStatus( KTxt ); - } - else if ( value == 1 ) - { - _LIT( KTxt, "Enabled" ); - iAppView->SetAutoStartStatus( KTxt ); - } - else - { - _LIT( KTxt, "Unknown" ); - iAppView->SetAutoStartStatus( KTxt ); - } - } - -void CHtiAdminAppUi::UpdateSelectedComm() - { - HTI_LOG_TEXT( "UpdateSelectedComm" ); - TBuf<64> commPlugin; - TRAPD( err, iHtiCfg->LoadCfgL( KCfgFilePath, KHtiCfg ) ); - if ( !err ) - { - TBuf8 commValue; - TRAP( err, commValue = iHtiCfg->GetParameterL( KCommPlugin ) ); - if ( err == KErrNone ) - { - commPlugin.Copy( commValue ); - } - } - // Use default if not found from config - if ( commPlugin.Length() == 0 ) - { - commPlugin.Copy(KCommDefaultImplementation ); - } - iAppView->SetSelectedComm( commPlugin ); - - if ( commPlugin.Compare( _L( "SERIAL" ) ) == 0 ) - { - TInt portNum = 0; - TRAP( err, iHtiCfg->LoadCfgL( KCfgFilePath, KHtiSerialCommCfg ) ); - if ( err == KErrNone ) - { - TRAP( err, portNum = iHtiCfg->GetParameterIntL( KCommPortNumber ) ); - } - TBuf<16> portBuf; - portBuf.Copy( _L( "Port: " ) ); - portBuf.AppendNum( portNum ); - iAppView->SetCommDetails( portBuf ); - } - - else if ( commPlugin.Compare( _L( "BTSERIAL" ) ) == 0 ) - { - TBuf<64> hostBuf; - TRAP( err, iHtiCfg->LoadCfgL( KCfgFilePath, KHtiBtCommCfg ) ); - if ( err == KErrNone ) - { - TBuf8 hostValue; - TRAP( err, hostValue = iHtiCfg->GetParameterL( KBtDeviceAddress ) ); - if ( err != KErrNone ) - { - TRAP( err, hostValue = iHtiCfg->GetParameterL( KBtDeviceName ) ); - } - if ( err == KErrNone ) - { - hostBuf.Copy( hostValue ); - } - } - if ( hostBuf.Length() > 0 ) - { - hostBuf.Insert( 0, _L( "Host: " ) ); - } - iAppView->SetCommDetails( hostBuf ); - } - - else if ( commPlugin.Compare( _L( "IPCOMM" ) ) == 0 ) - { - TBuf<128> hostBuf; - TRAP( err, iHtiCfg->LoadCfgL( KCfgFilePath, KHtiIPCommCfg ) ); - if ( err == KErrNone ) - { - TInt localPort = 0; - TRAP( err, localPort = iHtiCfg->GetParameterIntL( KLocalPort ) ); - if ( err == KErrNone && localPort > 0 ) - { - hostBuf.Copy( _L( "Listen: " ) ); - hostBuf.AppendNum( localPort ); - } - else - { - TBuf8 remoteHost; - TInt remotePort = 0; - TRAP( err, remoteHost = iHtiCfg->GetParameterL( KRemoteHost ) ); - if ( err == KErrNone ) - { - TRAP( err, remotePort = iHtiCfg->GetParameterIntL( - KRemotePort ) ); - } - if ( err == KErrNone ) - { - hostBuf.Copy( remoteHost ); - hostBuf.Insert( 0, _L("Connect: " ) ); - hostBuf.Append( ':' ); - hostBuf.AppendNum( remotePort ); - } - else - { - hostBuf.Copy( _L( "Invalid config!" ) ); - } - } - } - iAppView->SetCommDetails( hostBuf ); - } - - else - { - iAppView->SetCommDetails( KNullDesC ); - } - } - -void CHtiAdminAppUi::KillHtiWatchDogL() - { - TFullName processName; - TFindProcess finder( KHtiWatchDogMatchPattern ); - TInt err = finder.Next( processName ); - if ( err == KErrNone ) - { - HTI_LOG_TEXT( "HTI watchdog process found. Trying to open and kill it..." ); - RProcess prs; - User::LeaveIfError( prs.Open( finder ) ); - prs.Kill( KTerminateReason ); - prs.Close(); - HTI_LOG_TEXT( "HTI watchdog killed" ); - } - } - -void CHtiAdminAppUi::StartTimer() - { - // start timer to watch the status - if ( !iPeriodic ) - { - iPeriodic = CPeriodic::NewL( CActive::EPriorityIdle ); - iPeriodic->Start( 1 * 1000 * 1000, - 10 * 1000 * 1000, - TCallBack( TimerCallBackL, this ) ); - } - } - -void CHtiAdminAppUi::KillTimer() - { - if ( iPeriodic ) - { - iPeriodic->Cancel(); - delete iPeriodic; - iPeriodic = NULL; - } - } - -TInt CHtiAdminAppUi::TimerCallBackL( TAny* aPtr ) - { - ( (CHtiAdminAppUi*)aPtr )->UpdateStatusL(); - return ETrue; - } - -void CHtiAdminAppUi::ShowCommsDBListQueryL() - { - TInt selectedOption( KErrNotFound ); - TBuf name; - - CDesCArrayFlat* array = new (ELeave) CDesCArrayFlat(16); - CleanupStack::PushL(array); - - // Get IAP names from the database - CCommsDatabase* db = CCommsDatabase::NewL(EDatabaseTypeIAP);; - CleanupStack::PushL(db); - db->ShowHiddenRecords(); - CCommsDbTableView* view = db->OpenTableLC(TPtrC(IAP)); - TInt res = view->GotoFirstRecord(); - - while(res == KErrNone) - { - view->ReadTextL(TPtrC(COMMDB_NAME), name); - array->InsertL(0, name); - res = view->GotoNextRecord(); - } - - CleanupStack::PopAndDestroy(view); //view - CleanupStack::PopAndDestroy(db); //db - - // Show IAP selection dialog - CAknListQueryDialog* dlg = new(ELeave) CAknListQueryDialog(&selectedOption); - dlg->PrepareLC(R_SELECT_IAP_DIALOG); - dlg->SetItemTextArray(array); - dlg->SetOwnershipType(ELbmDoesNotOwnItemArray); - dlg->RunLD(); - - if(selectedOption != KErrNotFound) - { - // Write selected IAP name to config file - name = array->MdcaPoint(selectedOption); - TBuf8 iapName; - iapName.Copy(name); - iHtiCfg->SetParameterL(KIAPName, iapName); - } - CleanupStack::PopAndDestroy(array); - } -// End of file