diff -r 000000000000 -r c6b0df440bee dbgsrv/coredumpserver/ui/coredumpui/src/coredumpuidialogs.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/dbgsrv/coredumpserver/ui/coredumpui/src/coredumpuidialogs.cpp Tue Mar 02 10:33:16 2010 +0530 @@ -0,0 +1,436 @@ +// Copyright (c) 2007-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: +// + +#include "coredumpui.h" +#include +#include + + + // CDialogBase // + +CCoreDumpDialogBase::CCoreDumpDialogBase(RCoreDumpSession &aCoreDumpSession) +: iCoreDumpSession(aCoreDumpSession) + { + } + +CCoreDumpDialogBase::~CCoreDumpDialogBase() + { + iConfs.ResetAndDestroy(); + } + +void CCoreDumpDialogBase::DisplayErrorL(TDesC& aMessage, TInt aErrorNumber) + { + //could check doesn't go out of bounds + TBuf<250> errorMssge(aMessage); + errorMssge.Append(_L(" fails with system error no. ")); + TBuf<3> errorNum; + _LIT(KFormatDec, "%d"); + errorNum.Format(KFormatDec, aErrorNumber); + errorMssge.Append(errorNum); + iEikonEnv->InfoWinL(_L("Error"), errorMssge); + } + +void CCoreDumpDialogBase::DisplayErrorL(TDesC& aMessage) + { + //could check don't go out of bounds + TBuf<250> errorMssge(aMessage); + iEikonEnv->InfoWinL(_L("Error"), errorMssge); + } + + +// CConfigurePluginDialog // + +CConfigurePluginDialog::CConfigurePluginDialog(TUid aUid, RCoreDumpSession &aCoreDumpSession, TInt aInstance) + : CCoreDumpDialogBase(aCoreDumpSession), iUid(aUid), iInstance(aInstance) + { + } + +CConfigurePluginDialog::~CConfigurePluginDialog() + { + iConfs.ResetAndDestroy(); + } + +void CConfigurePluginDialog::PreLayoutDynInitL() + { + UpdateDialogDataL(); + } + +void CConfigurePluginDialog::PostLayoutDynInitL() + { + } + +void CConfigurePluginDialog::UpdateDialogDataL() + { + //update dialog + //RDebug::Print(_L("CConfigurePluginDialog::UpdateDialogDataL()")); + LOG_MSG("->[UI]CConfigurePluginDialog::UpdateDialogDataL()"); + + RPointerArray edwins; + RPointerArray labels; + CEikEdwin *edwin = static_cast(Control(EPluginEdwin1)); + edwins.Append(edwin); + edwin = static_cast(Control(EPluginEdwin2)); + edwins.Append(edwin); + edwin = static_cast(Control(EPluginEdwin3)); + edwins.Append(edwin); + edwin = static_cast(Control(EPluginEdwin4)); + edwins.Append(edwin); + edwin = static_cast(Control(EPluginEdwin5)); + edwins.Append(edwin); + edwin = static_cast(Control(EPluginEdwin6)); + edwins.Append(edwin); + edwin = static_cast(Control(EPluginEdwin7)); + edwins.Append(edwin); + edwin = static_cast(Control(EPluginEdwin8)); + edwins.Append(edwin); + edwin = static_cast(Control(EPluginEdwin9)); + edwins.Append(edwin); + edwin = static_cast(Control(EPluginEdwin10)); + edwins.Append(edwin); + edwin = static_cast(Control(EPluginEdwin11)); + edwins.Append(edwin); + edwin = static_cast(Control(EPluginEdwin12)); + edwins.Append(edwin); + edwin = static_cast(Control(EPluginEdwin13)); + edwins.Append(edwin); + edwin = static_cast(Control(EPluginEdwin14)); + edwins.Append(edwin); + edwin = static_cast(Control(EPluginEdwin15)); + edwins.Append(edwin); + edwin = static_cast(Control(EPluginEdwin16)); + edwins.Append(edwin); + edwin = static_cast(Control(EPluginEdwin17)); + edwins.Append(edwin); + edwin = static_cast(Control(EPluginEdwin18)); + edwins.Append(edwin); + for (TInt i = 0; i < edwins.Count(); i++) + { + edwins[i]->SetDimmed(ETrue); + edwins[i]->SetReadOnly(ETrue); + } + + CEikLabel *label = static_cast(Control(EPluginLabel1)); + labels.Append(label); + label = static_cast(Control(EPluginLabel2)); + labels.Append(label); + label = static_cast(Control(EPluginLabel3)); + labels.Append(label); + label = static_cast(Control(EPluginLabel4)); + labels.Append(label); + label = static_cast(Control(EPluginLabel5)); + labels.Append(label); + label = static_cast(Control(EPluginLabel6)); + labels.Append(label); + label = static_cast(Control(EPluginLabel7)); + labels.Append(label); + label = static_cast(Control(EPluginLabel8)); + labels.Append(label); + label = static_cast(Control(EPluginLabel9)); + labels.Append(label); + label = static_cast(Control(EPluginLabel10)); + labels.Append(label); + label = static_cast(Control(EPluginLabel11)); + labels.Append(label); + label = static_cast(Control(EPluginLabel12)); + labels.Append(label); + label = static_cast(Control(EPluginLabel13)); + labels.Append(label); + label = static_cast(Control(EPluginLabel14)); + labels.Append(label); + label = static_cast(Control(EPluginLabel15)); + labels.Append(label); + label = static_cast(Control(EPluginLabel16)); + labels.Append(label); + label = static_cast(Control(EPluginLabel17)); + labels.Append(label); + label = static_cast(Control(EPluginLabel18)); + labels.Append(label); + + + // Read config parameters from CDS + //RDebug::Print(_L("Read config parameters from CDS")); + TInt noConfigParams = 0; + iConfs.ResetAndDestroy(); + + LOG_MSG("\tiCoreDumpSession.GetNumberConfigParametersL()"); + TRAPD(err, noConfigParams = iCoreDumpSession.GetNumberConfigParametersL()); + if(err != KErrNone) + { + TBuf<23> error; + error.Format(_L("Error: %d"), err); + CEikonEnv::InfoWinL(_L("Could not get number of config params!"), error); + User::Leave(err); + } + + TInt control = 0; + LOG_MSG2( "CConfigurePluginDialog::UpdateDialogDataL: noConfigParams: %d", noConfigParams); + for (TInt i = 0; i < noConfigParams; i++) + { + COptionConfig* conf; + RDebug::Printf("Getting ID = %d", i); + conf = iCoreDumpSession.GetConfigParameterL(i); + if (iUid == TUid::Uid(conf->Uid()) && iInstance == conf->Instance()) + { + iConfs.Append(conf); + TBuf<255> buf = conf->Prompt(); + switch (conf->Type()) + { + case COptionConfig::ETInt: + { + buf.Append(_L("\n(Signed int)")); + TBuf<255> value; + value.Format(_L("%d"), iConfs[control]->Value()); + edwins[control]->SetTextL(&value); + } + break; + + case COptionConfig::ETUInt: + { + buf.Append(_L("\n(Unsigned int)")); + TBuf<255> value; + value.Format(_L("%d"), iConfs[control]->Value()); + edwins[control]->SetTextL(&value); + } + break; + + case COptionConfig::ETString: + { + buf.Append(_L("\n(String)")); + edwins[control]->SetTextL(&(iConfs[control]->ValueAsDesc())); + } + break; + + case COptionConfig::ETFileName: + { + buf.Append(_L("\n(File name)")); + /* + RDebug::Print(_L("edwins[control]->SetTextL(ValueAsDesc() Length=%d"), + (iConfs[control]->ValueAsDesc()).Size() ); + */ + edwins[control]->SetTextL(&(iConfs[control]->ValueAsDesc())); + } + break; + + case COptionConfig::ETSingleEntryEnum: + { + buf.Append(_L("\n")); + buf.Append(conf->Options()); + edwins[control]->SetTextL(&(iConfs[control]->ValueAsDesc())); + } + break; + + case COptionConfig::ETMultiEntryEnum: + { + buf.Append(_L("\n")); + buf.Append(conf->Options()); + edwins[control]->SetTextL(&(iConfs[control]->ValueAsDesc())); + } + break; + + case COptionConfig::ETBool: + { + buf.Append(_L("\n")); + buf.Append(conf->Options()); + TBuf<255> value; + iConfs[control]->Value() ? value = _L("True") : value = _L("False"); + edwins[control]->SetTextL(&value); + } + break; + + default: + break; + } + labels[control]->SetTextL(buf); + edwins[control]->SetDimmed(EFalse); + edwins[control++]->SetReadOnly(EFalse); + } + else + { + delete conf; + } + } + edwins.Close(); + labels.Close(); + } + +TBool CConfigurePluginDialog::OkToExitL(TInt aButtonId) + { + LOG_MSG( "-> CConfigurePluginDialog::::OkToExitL" ); + TBool ret = ETrue; + TInt err; + + RPointerArray edwins; + CEikEdwin *edwin = static_cast(Control(EPluginEdwin1)); + edwins.Append(edwin); + edwin = static_cast(Control(EPluginEdwin2)); + edwins.Append(edwin); + edwin = static_cast(Control(EPluginEdwin3)); + edwins.Append(edwin); + edwin = static_cast(Control(EPluginEdwin4)); + edwins.Append(edwin); + edwin = static_cast(Control(EPluginEdwin5)); + edwins.Append(edwin); + edwin = static_cast(Control(EPluginEdwin6)); + edwins.Append(edwin); + edwin = static_cast(Control(EPluginEdwin7)); + edwins.Append(edwin); + edwin = static_cast(Control(EPluginEdwin8)); + edwins.Append(edwin); + edwin = static_cast(Control(EPluginEdwin9)); + edwins.Append(edwin); + edwin = static_cast(Control(EPluginEdwin10)); + edwins.Append(edwin); + edwin = static_cast(Control(EPluginEdwin11)); + edwins.Append(edwin); + edwin = static_cast(Control(EPluginEdwin12)); + edwins.Append(edwin); + edwin = static_cast(Control(EPluginEdwin13)); + edwins.Append(edwin); + edwin = static_cast(Control(EPluginEdwin14)); + edwins.Append(edwin); + edwin = static_cast(Control(EPluginEdwin15)); + edwins.Append(edwin); + edwin = static_cast(Control(EPluginEdwin16)); + edwins.Append(edwin); + edwin = static_cast(Control(EPluginEdwin17)); + edwins.Append(edwin); + edwin = static_cast(Control(EPluginEdwin18)); + edwins.Append(edwin); + + switch (aButtonId) + { + case EEikBidCancel: + { + //RDebug::Print(_L("CConfigurePluginDialog::OkToExitL: Cancel pressed")); + } + break; + case EBidPluginConfigure: + { + RDebug::Print(_L("CConfigurePluginDialog::OkToExitL: iConfs.Count() == %d"), iConfs.Count()); + for (TInt i = 0; i < iConfs.Count(); i++) + { + err = KErrNone; + HBufC *input = NULL; + if (edwins[i]->TextLength() > 0) + { + input = edwins[i]->GetTextInHBufL(); + } + if ( ! input ) + { + input = HBufC::NewL(KMaxFileName); + TPtr ptr(input->Des()); + ptr = KNullDesC; + } + + RDebug::Print(_L("CConfigurePluginDialog::OkToExitL: input == %S"), input); + RDebug::Print(_L("CConfigurePluginDialog::OkToExitL: iConfs[i]->Type() == %d"), iConfs[i]->Type()); + + switch (iConfs[i]->Type()) + { + case COptionConfig::ETInt: + case COptionConfig::ETUInt: + { + TLex opts(*input); + TInt32 conf; + //RDebug::Print(_L("err = opts.Val(conf);")); + err = opts.Val(conf); + //RDebug::Print(_L("CConfigurePluginDialog::err = opts.Val(conf);")); + if ( err ) + { + LOG_MSG("CConfigurePluginDialog::CEikonEnv::Static()->InfoMsg;"); + CEikonEnv::Static()->InfoMsg(_L("Value must be an integer")); + break; + } + + iConfs[i]->Value(conf); + TRAP( err, iCoreDumpSession.SetConfigParameterL( *iConfs[i]) ); + } + break; + case COptionConfig::ETFileName: + case COptionConfig::ETString: + case COptionConfig::ETSingleEntryEnum: + case COptionConfig::ETMultiEntryEnum: + { + TRAP( err, iConfs[i]->ValueL(*input) ); + if ( KErrNone == err ) + { + TRAP( err, iCoreDumpSession.SetConfigParameterL( *iConfs[i]) ); + } + } + break; + + case COptionConfig::ETBool: + if (input->CompareF(_L("True"))== 0) + { + //RDebug::Print(_L("input->CompareF(_L(True))== 0")); + iConfs[i]->Value(ETrue); + iConfs[i]->ValueL(_L("True")); + } + else if (input->CompareF(_L("False"))== 0) + { + //RDebug::Print(_L("input->CompareF(_L(False))== 0")); + iConfs[i]->Value(EFalse); + iConfs[i]->ValueL(_L("False")); + } + else + { + LOG_MSG( " CConfigurePluginDialog::OkToExitL err = KErrCorrupt" ); + err = KErrCorrupt; + } + + if( KErrNone == err ) + { + TRAP( err, iCoreDumpSession.SetConfigParameterL( *iConfs[i]) ); + RDebug::Print(_L("CConfigurePluginDialog::OkToExitL: SetConfigParameterL ret %d"), err); + } + break; + + default: + CEikonEnv::Static()->InfoMsg(_L("Error with parameter type")); + LOG_MSG("CConfigurePluginDialog::OkToExitL: none of the above" ); + LOG_MSG("default err = KErrCorrupt"); + err = KErrCorrupt; + break; + } + + if ( err != KErrNone ) + { + RBuf errorString; + CleanupClosePushL( errorString ); + errorString.CreateL( 128 ); + errorString.Append( _L("Config Plugin - Error ") ); + errorString.AppendNum( err ); + errorString.Append( _L(" setting parameter number ") ); + errorString.AppendNum( i ); + CEikonEnv::InfoWinL( errorString, KNullDesC ); + CleanupStack::PopAndDestroy( &errorString ); + ret = EFalse; + } + if(input) + { + delete input; + input = NULL; + } + }//for + }//switch + break; + default: + break; + } + //RDebug::Print(_L("<--------- CConfigurePluginDialog::OkToExitL")); + edwins.Close(); + return ret; + } +