--- /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 <optionconfig.h>
+#include <bautils.h>
+
+
+ // 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<CEikEdwin> edwins;
+ RPointerArray<CEikLabel> labels;
+ CEikEdwin *edwin = static_cast<CEikEdwin*>(Control(EPluginEdwin1));
+ edwins.Append(edwin);
+ edwin = static_cast<CEikEdwin*>(Control(EPluginEdwin2));
+ edwins.Append(edwin);
+ edwin = static_cast<CEikEdwin*>(Control(EPluginEdwin3));
+ edwins.Append(edwin);
+ edwin = static_cast<CEikEdwin*>(Control(EPluginEdwin4));
+ edwins.Append(edwin);
+ edwin = static_cast<CEikEdwin*>(Control(EPluginEdwin5));
+ edwins.Append(edwin);
+ edwin = static_cast<CEikEdwin*>(Control(EPluginEdwin6));
+ edwins.Append(edwin);
+ edwin = static_cast<CEikEdwin*>(Control(EPluginEdwin7));
+ edwins.Append(edwin);
+ edwin = static_cast<CEikEdwin*>(Control(EPluginEdwin8));
+ edwins.Append(edwin);
+ edwin = static_cast<CEikEdwin*>(Control(EPluginEdwin9));
+ edwins.Append(edwin);
+ edwin = static_cast<CEikEdwin*>(Control(EPluginEdwin10));
+ edwins.Append(edwin);
+ edwin = static_cast<CEikEdwin*>(Control(EPluginEdwin11));
+ edwins.Append(edwin);
+ edwin = static_cast<CEikEdwin*>(Control(EPluginEdwin12));
+ edwins.Append(edwin);
+ edwin = static_cast<CEikEdwin*>(Control(EPluginEdwin13));
+ edwins.Append(edwin);
+ edwin = static_cast<CEikEdwin*>(Control(EPluginEdwin14));
+ edwins.Append(edwin);
+ edwin = static_cast<CEikEdwin*>(Control(EPluginEdwin15));
+ edwins.Append(edwin);
+ edwin = static_cast<CEikEdwin*>(Control(EPluginEdwin16));
+ edwins.Append(edwin);
+ edwin = static_cast<CEikEdwin*>(Control(EPluginEdwin17));
+ edwins.Append(edwin);
+ edwin = static_cast<CEikEdwin*>(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<CEikLabel*>(Control(EPluginLabel1));
+ labels.Append(label);
+ label = static_cast<CEikLabel*>(Control(EPluginLabel2));
+ labels.Append(label);
+ label = static_cast<CEikLabel*>(Control(EPluginLabel3));
+ labels.Append(label);
+ label = static_cast<CEikLabel*>(Control(EPluginLabel4));
+ labels.Append(label);
+ label = static_cast<CEikLabel*>(Control(EPluginLabel5));
+ labels.Append(label);
+ label = static_cast<CEikLabel*>(Control(EPluginLabel6));
+ labels.Append(label);
+ label = static_cast<CEikLabel*>(Control(EPluginLabel7));
+ labels.Append(label);
+ label = static_cast<CEikLabel*>(Control(EPluginLabel8));
+ labels.Append(label);
+ label = static_cast<CEikLabel*>(Control(EPluginLabel9));
+ labels.Append(label);
+ label = static_cast<CEikLabel*>(Control(EPluginLabel10));
+ labels.Append(label);
+ label = static_cast<CEikLabel*>(Control(EPluginLabel11));
+ labels.Append(label);
+ label = static_cast<CEikLabel*>(Control(EPluginLabel12));
+ labels.Append(label);
+ label = static_cast<CEikLabel*>(Control(EPluginLabel13));
+ labels.Append(label);
+ label = static_cast<CEikLabel*>(Control(EPluginLabel14));
+ labels.Append(label);
+ label = static_cast<CEikLabel*>(Control(EPluginLabel15));
+ labels.Append(label);
+ label = static_cast<CEikLabel*>(Control(EPluginLabel16));
+ labels.Append(label);
+ label = static_cast<CEikLabel*>(Control(EPluginLabel17));
+ labels.Append(label);
+ label = static_cast<CEikLabel*>(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<CEikEdwin> edwins;
+ CEikEdwin *edwin = static_cast<CEikEdwin*>(Control(EPluginEdwin1));
+ edwins.Append(edwin);
+ edwin = static_cast<CEikEdwin*>(Control(EPluginEdwin2));
+ edwins.Append(edwin);
+ edwin = static_cast<CEikEdwin*>(Control(EPluginEdwin3));
+ edwins.Append(edwin);
+ edwin = static_cast<CEikEdwin*>(Control(EPluginEdwin4));
+ edwins.Append(edwin);
+ edwin = static_cast<CEikEdwin*>(Control(EPluginEdwin5));
+ edwins.Append(edwin);
+ edwin = static_cast<CEikEdwin*>(Control(EPluginEdwin6));
+ edwins.Append(edwin);
+ edwin = static_cast<CEikEdwin*>(Control(EPluginEdwin7));
+ edwins.Append(edwin);
+ edwin = static_cast<CEikEdwin*>(Control(EPluginEdwin8));
+ edwins.Append(edwin);
+ edwin = static_cast<CEikEdwin*>(Control(EPluginEdwin9));
+ edwins.Append(edwin);
+ edwin = static_cast<CEikEdwin*>(Control(EPluginEdwin10));
+ edwins.Append(edwin);
+ edwin = static_cast<CEikEdwin*>(Control(EPluginEdwin11));
+ edwins.Append(edwin);
+ edwin = static_cast<CEikEdwin*>(Control(EPluginEdwin12));
+ edwins.Append(edwin);
+ edwin = static_cast<CEikEdwin*>(Control(EPluginEdwin13));
+ edwins.Append(edwin);
+ edwin = static_cast<CEikEdwin*>(Control(EPluginEdwin14));
+ edwins.Append(edwin);
+ edwin = static_cast<CEikEdwin*>(Control(EPluginEdwin15));
+ edwins.Append(edwin);
+ edwin = static_cast<CEikEdwin*>(Control(EPluginEdwin16));
+ edwins.Append(edwin);
+ edwin = static_cast<CEikEdwin*>(Control(EPluginEdwin17));
+ edwins.Append(edwin);
+ edwin = static_cast<CEikEdwin*>(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;
+ }
+