dbgsrv/coredumpserver/ui/coredumpui/src/coredumpuidialogs.cpp
changeset 0 c6b0df440bee
--- /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;
+	}
+