--- a/testapps/rschandler/Common/src/ResourceHandler_Dialogs.cpp Mon Feb 22 17:54:00 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,1325 +0,0 @@
-// Copyright (c) 2004-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 <e32svr.h>
-#include "ResourceHandler.h"
-
-//
-// Thread Dialog
-//
-
-CThreadNumberDialog::CThreadNumberDialog()
- {
- }
-
-void CThreadNumberDialog::PreLayoutDynInitL()
- {
- // to start use the thread ID of this thread
- iThreadID = RThread().Id();
- UpdateDialogData();
- }
-
-void CThreadNumberDialog::PostLayoutDynInitL()
- {
-
- }
-
-void CThreadNumberDialog::UpdateDialogData()
- {
- if (iThreadID > 0) UpdateDialogDataReal(); // Real thread
- else UpdateDialogDataAll(); // 0 for all unprotected threads
- }
-
-void CThreadNumberDialog::UpdateDialogDataAll()
-//update dialog - set for all threads
- {
- // match controls and set values
- CXIKNUMBEREDITOR *thisNumberEditor;
- thisNumberEditor = STATIC_CAST(CXIKNUMBEREDITOR*, Control(EThreadNumberCtl));
- thisNumberEditor->SETNUMBERVALUEL(0);
-
- CEikCheckBox *sysCheckBox, *protCheckBox;
- sysCheckBox = STATIC_CAST(CEikCheckBox*,Control(EThreadSystemCtl));
- protCheckBox = STATIC_CAST(CEikCheckBox*,Control(EThreadProtectedCtl));
-
- CEikCommandButton *killBut, *okBut, *setBut;
- killBut = STATIC_CAST(CEikCommandButton*, ButtonGroupContainer().CommandButtonOrNull(EThreadKillButtonCtl));
- okBut = STATIC_CAST(CEikCommandButton*, ButtonGroupContainer().CommandButtonOrNull(EEikBidOk));
- setBut = STATIC_CAST(CEikCommandButton*, ButtonGroupContainer().CommandButtonOrNull(EThreadSetButtonCtl));
- CEikLabel *priorityDialogPrompt, *priorityNumberLabel;
- priorityNumberLabel = STATIC_CAST(CEikLabel*, Control(EThreadPriorityText));
- priorityDialogPrompt = STATIC_CAST(CEikLabel*, Control(EThreadPriorityPrompt));
-
- priorityDialogPrompt->SetTextL(_L("Cannot set priority for all threads."));
-
-#ifdef UIQ
- CEikLabel *theThreadLabel, *theProcessLabel;
- theThreadLabel = STATIC_CAST(CEikLabel*, Control(EThreadLabelThreadName));
- theProcessLabel = STATIC_CAST(CEikLabel*, Control(EThreadLabelProcessName));
- theProcessLabel->SetTextL(_L("Various"));
- theThreadLabel->SetTextL(_L("All unprotected"));
-#endif
-#ifdef TV
- CEikLabel *threadAndProcessLabel;
- threadAndProcessLabel = STATIC_CAST(CEikLabel*, Control(EThreadLabelThreadAndProcessName));
- threadAndProcessLabel->SetTextL(_L("All threads/processes"));
-#endif
- CEikChoiceList *prioritySelector;
- prioritySelector = STATIC_CAST(CEikChoiceList*, Control(EThreadPriorityButtonCtl));
-
-
- // Change the dimming on the component controls as appropriate for all threads
- protCheckBox->SetDimmed(ETrue);
- sysCheckBox->SetDimmed(EFalse);
-
- prioritySelector->MakeVisible(EFalse);
-
- priorityNumberLabel->MakeVisible(EFalse);
-
- killBut->SetDimmed(ETrue);
- okBut->SetDimmed(EFalse);
- setBut->SetDimmed(EFalse);
- DrawNow();
-
- }
-
-//updates dialog depending on iThreadID
-void CThreadNumberDialog::UpdateDialogDataReal()
- {
- // match controls
- CXIKNUMBEREDITOR *thisNumberEditor;
- thisNumberEditor = STATIC_CAST(CXIKNUMBEREDITOR*, Control(EThreadNumberCtl));
- thisNumberEditor->SETNUMBERVALUEL(0);
-
- CEikCheckBox *sysCheckBox, *protCheckBox;
- sysCheckBox = STATIC_CAST(CEikCheckBox*,Control(EThreadSystemCtl));
- protCheckBox = STATIC_CAST(CEikCheckBox*,Control(EThreadProtectedCtl));
-
- CEikCommandButton *killBut, *okBut, *setBut;
- okBut = STATIC_CAST(CEikCommandButton*, ButtonGroupContainer().CommandButtonOrNull(EEikBidOk));
- setBut = STATIC_CAST(CEikCommandButton*, ButtonGroupContainer().CommandButtonOrNull(EThreadSetButtonCtl));
- killBut = STATIC_CAST(CEikCommandButton*, ButtonGroupContainer().CommandButtonOrNull(EThreadKillButtonCtl));
-
-#ifdef UIQ
- CEikLabel *theThreadLabel, *theProcessLabel;
- theThreadLabel = STATIC_CAST(CEikLabel*, Control(EThreadLabelThreadName));
- theProcessLabel = STATIC_CAST(CEikLabel*, Control(EThreadLabelProcessName));
-#endif
-#ifdef TV
- CEikLabel *threadAndProcessLabel;
- threadAndProcessLabel = STATIC_CAST(CEikLabel*, Control(EThreadLabelThreadAndProcessName));
-#endif
-
- CEikChoiceList *priorityOpButs;
- priorityOpButs = STATIC_CAST(CEikChoiceList*, Control(EThreadPriorityButtonCtl));
-
- //
- //Update dialog info with thread details
- //
-
- RThread thread;
- TInt err = KErrNone;
-
- err = thread.Open(iThreadID);
-
- if (err!=KErrNone)
- {
- thread.Close();
- TBuf<70> errorMessage(_L("Cannot get thread number "));
- errorMessage.AppendNum(iThreadID);
- errorMessage.Append(_L(". Thread::Open()"));
- DisplayError(errorMessage, err);
- thread.Open(RThread().Id()); // Get this thread
- }
-
- thisNumberEditor->SETNUMBERVALUEL(thread.Id());
-
-#ifdef UIQ
- theThreadLabel->SetTextL(thread.Name());
-#endif
-#ifdef TV
- TBuf<150> lProcessAndThread(thread.Name());
-#endif
-
- RProcess process;
- thread.Process(process);
-#ifdef UIQ
- theProcessLabel->SetTextL(process.Name());
-#endif
-#ifdef TV
- lProcessAndThread.Append(_L("/"));
- lProcessAndThread.Append(process.Name());
- threadAndProcessLabel->SetTextL(lProcessAndThread);
-#endif
- process.Close();
-
- CEikLabel *priorityDialogPrompt, *priorityNumberLabel;
-
- priorityDialogPrompt = STATIC_CAST(CEikLabel*, Control(EThreadPriorityPrompt));
- if ( iThreadID == RThread().Id()) priorityDialogPrompt->SetTextL(_L("The priority of the current thread cannot be reset from within this application."));
- else priorityDialogPrompt->SetTextL(_L("Set the priority."));
-
- priorityNumberLabel = STATIC_CAST(CEikLabel*, Control(EThreadPriorityText));
- TBuf<30> priorityText(_L("Priority Value: "));
- TBuf<4> priorityNumber;
-
- priorityNumber.Format(KFormatDec,thread.Priority());
- priorityText.Append(priorityNumber);
- priorityNumberLabel->SetTextL(priorityText);
-
- TThreadPriority lThreadPriority = thread.Priority();
- TInt lThreadPrioritySetting;
- switch (lThreadPriority)
- {
- case(EPriorityAbsoluteHigh): lThreadPrioritySetting = EThreadP500_AbsoluteHigh; break;
- case(EPriorityAbsoluteForeground): lThreadPrioritySetting = EThreadP400_AbsoluteForeground; break;
- case(EPriorityAbsoluteBackground): lThreadPrioritySetting = EThreadP300_AbsoluteBackground; break;
- case(EPriorityAbsoluteLow): lThreadPrioritySetting = EThreadP200_AbsoluteLow; break;
- case(EPriorityAbsoluteVeryLow): lThreadPrioritySetting = EThreadP100_AbsoluteVeryLow; break;
- case(EPriorityRealTime): lThreadPrioritySetting = EThreadP30_RealTime; break;
- case(EPriorityMuchMore): lThreadPrioritySetting = EThreadP20_MuchMore; break;
- case(EPriorityMore): lThreadPrioritySetting = EThreadP10_More; break;
- case(EPriorityNormal): lThreadPrioritySetting = EThreadP0_Normal; break;
- case(EPriorityLess): lThreadPrioritySetting = EThreadPm10_Less; break;
- case(EPriorityMuchLess): lThreadPrioritySetting = EThreadPm20_MuchLess; break;
- case(EPriorityNull): lThreadPrioritySetting = EThreadPm30_Null; break;
- default: lThreadPrioritySetting = EThreadP_NotStandard; break;
- }
-
- priorityOpButs->SetCurrentItem(lThreadPrioritySetting);
-
- sysCheckBox->SetState(CEikButtonBase::EIndeterminate);
- protCheckBox->SetState(CEikButtonBase::EIndeterminate);
-
- // Change the dimming on the component controls depending on the thread
- sysCheckBox->SetDimmed(EFalse);
-
- if ( iThreadID == RThread().Id()) priorityOpButs->SetDimmed(ETrue);
- else priorityOpButs->SetDimmed(EFalse);
-
- killBut->SetDimmed(EFalse);
- okBut->SetDimmed(EFalse);
- setBut->SetDimmed(EFalse);
-
- if (iThreadID == RThread().Id())
- {
- // can change the protection on this thread
- protCheckBox->SetDimmed(EFalse);
- }
- else
- {
- // cannot change protection
- protCheckBox->SetDimmed(ETrue);
- if (true) // If we are in secure then we ensure that the
- // user can not change anything.
- {
- // cannot change anything
- sysCheckBox->SetDimmed(ETrue);
- priorityOpButs->SetDimmed(ETrue);
- killBut->SetDimmed(ETrue);
- okBut->SetDimmed(ETrue);
- setBut->SetDimmed(ETrue);
- }
-
- }
-
- thread.Close();
- DrawNow();
-
- }
-
-void CThreadNumberDialog::UpdatePriorityText()
-//updates the priority number value to correspond to the priority option selected
- {
-
- }
-
-void CThreadNumberDialog::HandleControlStateChangeL(TInt aControlId)
- {
- if (aControlId == EThreadGetButtonCtl)
- {
- CXIKNUMBEREDITOR *thisNumberEditor;
- thisNumberEditor = STATIC_CAST(CXIKNUMBEREDITOR*, Control(EThreadNumberCtl));
- iThreadID = (TThreadId)thisNumberEditor->NUMBERVALUE();
- // re-evaluate everything
- UpdateDialogData();
-
- // re-draw
- PageChangedL(EThreadPageGeneral);
- PageChangedL(EThreadPagePriority);
- PageChangedL(EThreadPageOther);
- DrawNow();
- }
- }
-
-void CThreadNumberDialog::SetThread()
- {
- //change thread parameters
- if (iThreadID > 0)
- {
- // only get here if thread is not protected
-
-
- RThread thread;
- TInt err = thread.Open(iThreadID);
-
- if (err == KErrNone)
- {
- // This is the current thread
- if ( iThreadID == RThread().Id())
- {
- }
-
-
-
- CEikChoiceList *opButs;
- opButs = STATIC_CAST(CEikChoiceList*, Control(EThreadPriorityButtonCtl));
-
- TThreadPriority threadPrioritySet = EPriorityNull;
- TInt currentItem = opButs->CurrentItem();
-
- switch (currentItem)
- {
- case (EThreadP500_AbsoluteHigh): threadPrioritySet=EPriorityAbsoluteHigh; break;
- case (EThreadP400_AbsoluteForeground): threadPrioritySet=EPriorityAbsoluteForeground; break;
- case (EThreadP300_AbsoluteBackground): threadPrioritySet=EPriorityAbsoluteBackground; break;
- case (EThreadP200_AbsoluteLow): threadPrioritySet=EPriorityAbsoluteLow; break;
- case (EThreadP100_AbsoluteVeryLow): threadPrioritySet=EPriorityAbsoluteVeryLow; break;
- case (EThreadP30_RealTime): threadPrioritySet=EPriorityRealTime; break;
- case (EThreadP20_MuchMore): threadPrioritySet=EPriorityMuchMore; break;
- case (EThreadP10_More): threadPrioritySet=EPriorityMore; break;
- case (EThreadP0_Normal): threadPrioritySet=EPriorityNormal; break;
- case (EThreadPm10_Less): threadPrioritySet=EPriorityLess; break;
- case (EThreadPm20_MuchLess): threadPrioritySet=EPriorityMuchLess; break;
- case (EThreadPm30_Null): threadPrioritySet=EPriorityNull;
- iEikonEnv->InfoWinL(_L("Error"), _L("Cannot change thread priority to Null"));
- break;
- default: iEikonEnv->InfoWinL(_L("Error"), _L("Invalid priority: cannot change thread priority to Not Standard"));
-
- };
-
- if (threadPrioritySet != EPriorityNull)
- {
- thread.SetPriority(threadPrioritySet);
-
- TThreadPriority threadPriorityGot = thread.Priority();
- if (threadPrioritySet!=threadPriorityGot)
- {
- iEikonEnv->InfoWinL(_L("Error"), _L("Thread priority not set: RThread::SetPriority() unsuccessful!"));
- }
- thread.Close();
- }
- }
- }
- else //all threads selected - only changes system setting
- {
-
- TName prefix(KAsterisk);
- TFindThread findHb;
- findHb.Find(prefix);
- TFullName name; // this is a TBuf
- RThread thread;
-
- while (findHb.Next(name)==KErrNone)
- {
- TInt err = thread.Open(name);
- if (err != KErrNone)
- {
- TBuf<70> errorMessage(_L("Cannot get thread "));
- errorMessage.Append(name);
- errorMessage.Append(_L(". RThread::Open()"));
- DisplayError(errorMessage, err);
- }
-
- if (err == KErrNone)
- {
-
-
- thread.Close();
- }
- }
- }
- }
-
-TBool CThreadNumberDialog::OkToExitL(TInt aButtonId)
- {
- if (aButtonId == EEikBidCancel)
- {
- return ETrue;
- }
- else if (aButtonId == EThreadSetButtonCtl)
- {
- SetThread();
- UpdateDialogData();
- iEikonEnv->InfoMsg(_L("Attribute(s) set as displayed"));
- return EFalse;
- }
- else if (aButtonId == EEikBidOk)
- {
- SetThread();
- return ETrue;
- }
- else if (aButtonId == EThreadKillButtonCtl)
- {
- RThread thread;
- TInt err = thread.Open(iThreadID);
- if (err == KErrNone)
- {
- thread.Kill(KErrNone);
- iEikonEnv->InfoMsg(_L("Thread Killed"));
- }
- else iEikonEnv->InfoWinL(_L("Error"), _L("Attempt to open thread for modification unsuccessful."));
- thread.Close();
- return EFalse;
- }
- return ETrue;
- }
-
-//
-//
-// Process Dialog
-//
-//
-
-CProcessNumberDialog::CProcessNumberDialog()
- {
- }
-
-void CProcessNumberDialog::PreLayoutDynInitL()
- {
- // to start use the thread ID of this Process
- iProcessID = RProcess().Id();
- UpdateDialogData();
- }
-
-void CProcessNumberDialog::PostLayoutDynInitL()
- {
- }
-
-void CProcessNumberDialog::UpdateDialogData()
-//Updates GUI data
- {
- // match the controls
- CXIKNUMBEREDITOR *thisNumberEditor;
- thisNumberEditor = STATIC_CAST(CXIKNUMBEREDITOR*, Control(EProcessNumberCtl));
- CEikLabel *priorityTextLabel;
- priorityTextLabel = STATIC_CAST(CEikLabel*, Control(EProcessPriorityText));
-
- CEikCheckBox *sysCheckBox, *protCheckBox;
- sysCheckBox = STATIC_CAST(CEikCheckBox*,Control(EProcessSystemCtl));
- protCheckBox = STATIC_CAST(CEikCheckBox*,Control(EProcessProtectedCtl));
-
- CEikCommandButton *killBut, *okBut, *setBut;
- killBut = STATIC_CAST(CEikCommandButton*, ButtonGroupContainer().CommandButtonOrNull(EProcessKillButtonCtl));
- okBut = STATIC_CAST(CEikCommandButton*, ButtonGroupContainer().CommandButtonOrNull(EEikBidOk));
- setBut = STATIC_CAST(CEikCommandButton*, ButtonGroupContainer().CommandButtonOrNull(EProcessSetButtonCtl));
-
- CEikLabel *theProcessLabel;
- theProcessLabel = STATIC_CAST(CEikLabel*, Control(EProcessLabelProcessName));
-
- CEikChoiceList *opButs;
- opButs = STATIC_CAST(CEikChoiceList*, Control(EProcessPriorityButtonCtl));
-
- //open a process and update GUI data
- RProcess process;
- TInt err = KErrNone;
-
- err = process.Open(iProcessID); // Opens a handle to a process
-
- if (err!=KErrNone)
- {
- TBuf<70> errorMessage(_L("Cannot get process number "));
- errorMessage.AppendNum(iProcessID);
- errorMessage.Append(_L(". System error number "));
- errorMessage.AppendNum(err);
-
- iEikonEnv->InfoWinL(_L("Error"), errorMessage);
- iProcessID = RProcess().Id();
- process.Open(iProcessID); // Opens a handle to this Process
- }
-
- thisNumberEditor->SETNUMBERVALUEL(process.Id());
- theProcessLabel->SetTextL(process.Name());
-
- TBuf<30> priorityText(_L("Priority Value: "));
- TBuf<10> priorityNumber;
- priorityNumber.Format(KFormatDec,process.Priority());
- priorityText.Append(priorityNumber);
- priorityTextLabel->SetTextL(priorityText);
- if (process.Priority()==EPriorityLow) opButs->SetCurrentItem(EProcessP150_PriorityLow);
- else if (process.Priority()==EPriorityBackground) opButs->SetCurrentItem(EProcessP250_PriorityBackground);
- else if (process.Priority()==EPriorityForeground) opButs->SetCurrentItem(EProcessP350_PriorityForeground);
- else if (process.Priority()==EPriorityHigh) opButs->SetCurrentItem(EProcessP450_PriorityHigh);
- else if (process.Priority()==EPriorityWindowServer) opButs->SetCurrentItem(EProcessP650_PriorityWindowServer);
- else if (process.Priority()==EPriorityFileServer) opButs->SetCurrentItem(EProcessP750_PriorityFileServer);
- else if (process.Priority()==EPriorityRealTimeServer) opButs->SetCurrentItem(EProcessP850_PriorityRealTimeServer);
- else if (process.Priority()==EPrioritySupervisor) opButs->SetCurrentItem(EProcessP950_PrioritySupervisor);
- else (opButs->SetCurrentItem(EProcessPriorityNotStandard));
-
-
- sysCheckBox->SetState(CEikButtonBase::EIndeterminate);
- protCheckBox->SetState(CEikButtonBase::EIndeterminate);
-
-
- // Change the dimming on the component controls depending on the Process
- sysCheckBox->SetDimmed(EFalse);
- opButs->SetDimmed(EFalse);
- #ifdef WINS
- opButs->SetDimmed(ETrue);
- #endif
-
- killBut->SetDimmed(EFalse);
- okBut->SetDimmed(EFalse);
- setBut->SetDimmed(EFalse);
- if (iProcessID == RProcess().Id())
- {
- // can change the protection on this Process
- protCheckBox->SetDimmed(EFalse);
- }
- else
- {
- // cannot change protection
- protCheckBox->SetDimmed(ETrue);
- if (true) // If we are in secure then we ensure that the
- // user can not change anything.
- {
- // cannot change anything
- sysCheckBox->SetDimmed(ETrue);
- opButs->SetDimmed(ETrue);
- killBut->SetDimmed(ETrue);
- okBut->SetDimmed(ETrue);
- setBut->SetDimmed(ETrue);
- }
- }
- process.Close(); // Closes the handle
- DrawNow();
-
- }
-
-void CProcessNumberDialog::SetProcess()
-{
- // only get here if Process is not protected
-
-
- RProcess process;
- TInt err = process.Open(iProcessID);
-
- if (err == KErrNone)
- {
- // This is the current Process
- if ( iProcessID == RProcess().Id())
- {
- }
-
-
-
- CEikChoiceList *opButs;
- TProcessPriority processPrioritySelected = EPriorityLow;
-
- opButs = STATIC_CAST(CEikChoiceList*, Control(EProcessPriorityButtonCtl));
-
- TInt currentItem = opButs->CurrentItem();
- TBool validPrioritySelected = ETrue;
-
- switch (currentItem)
- {
- case (EProcessP150_PriorityLow): processPrioritySelected=EPriorityLow; break;
- case (EProcessP250_PriorityBackground): processPrioritySelected=EPriorityBackground; break;
- case (EProcessP350_PriorityForeground): processPrioritySelected=EPriorityForeground; break;
- case (EProcessP450_PriorityHigh): processPrioritySelected=EPriorityHigh; break;
- case (EProcessP650_PriorityWindowServer):
- case (EProcessP750_PriorityFileServer):
- case (EProcessP850_PriorityRealTimeServer):
- case (EProcessP950_PrioritySupervisor):
- default: iEikonEnv->InfoWinL(_L("Error"), _L("This is an internal priority and cannot be explicitly set"));
- validPrioritySelected = EFalse;
- break;
- }
- if (validPrioritySelected == 1) process.SetPriority(processPrioritySelected);
-
- }
- process.Close();
- }
-
-void CProcessNumberDialog::HandleControlStateChangeL(TInt aControlId)
- {
- if (aControlId == EProcessGetButtonCtl)
- {
- CXIKNUMBEREDITOR *thisNumberEditor;
- thisNumberEditor = STATIC_CAST(CXIKNUMBEREDITOR*, Control(EProcessNumberCtl));
- iProcessID = (TProcessId)thisNumberEditor->NUMBERVALUE();
- // re-evaluate everything
- UpdateDialogData();
-
- // re-draw
- PageChangedL(EProcessPageGeneral);
- PageChangedL(EProcessPagePriority);
- PageChangedL(EProcessPageOther);
- DrawNow();
- }
- }
-
-TBool CProcessNumberDialog::OkToExitL(TInt aButtonId)
- {
- if (aButtonId == EEikBidCancel) // do nothing
- {
- return ETrue;
- }
- else if (aButtonId == EProcessSetButtonCtl)
- {
- SetProcess();
- UpdateDialogData();
- iEikonEnv->InfoMsg(_L("Attribute(s) set as displayed"));
- return EFalse;
- }
- else if (aButtonId == EProcessKillButtonCtl)
- {
- RProcess Process;
- TInt err = Process.Open(iProcessID);
- if (err == KErrNone)
- {
- iEikonEnv->InfoMsg(_L("Killing Process"));
- Process.Kill(KErrNone);
- }
- Process.Close();
- iEikonEnv->InfoMsg(_L("Process killed"));
- return EFalse;
- }
-
- else if (aButtonId == EEikBidOk)
- {
- SetProcess();
- return ETrue;
- }
- else return ETrue;
- }
-
-
-//
-//
-// Debug Dialog
-//
-//
-
-CDebugDialog::CDebugDialog()
- {
- }
-
-void CDebugDialog::PreLayoutDynInitL()
- {
- GetPortNumber();
- GetKernelOptions();
- }
-
-void CDebugDialog::GetPortNumber()
- {
- //map the control
- CXIKNUMBEREDITOR *thisNumberEditor;
- thisNumberEditor = static_cast<CXIKNUMBEREDITOR*>(Control(EDebugPortCtl));
- //set control value
- TInt debugPort, err;
- err = HAL::Get(HAL::EDebugPort, debugPort);
- if (err == KErrNone)
- {
- thisNumberEditor->SETNUMBERVALUEL(debugPort);
- iCurrentDebugPort = debugPort;
- }
- else
- {
- thisNumberEditor->SETNUMBERVALUEL(-1);
- iCurrentDebugPort = -1;
- }
-
- }
-
-void CDebugDialog::GetKernelOptions()
- {
- // Kernel debug mask
-
- TUint32 debugMask = UserSvr::DebugMask();
- //map the controls (check boxes) and set the control values
-
- CEikCheckBox *aCheckBox;
-
- aCheckBox = static_cast<CEikCheckBox*>(Control(EDebugKernelKHARDWARE));
- aCheckBox->SetState(debugMask & KHARDWARE ? CEikButtonBase::ESet : CEikButtonBase::EClear);
-
- aCheckBox = static_cast<CEikCheckBox*>(Control(EDebugKernelKBOOT));
- aCheckBox->SetState(debugMask & KBOOT ? CEikButtonBase::ESet : CEikButtonBase::EClear);
-
- aCheckBox = static_cast<CEikCheckBox*>(Control(EDebugKernelKSERVER));
- aCheckBox->SetState(debugMask & KSERVER ? CEikButtonBase::ESet : CEikButtonBase::EClear);
-
- aCheckBox = static_cast<CEikCheckBox*>(Control(EDebugKernelKMMU));
- aCheckBox->SetState(debugMask & KMMU ? CEikButtonBase::ESet : CEikButtonBase::EClear);
-
- aCheckBox = static_cast<CEikCheckBox*>(Control(EDebugKernelKSEMAPHORE));
- aCheckBox->SetState(debugMask & KSEMAPHORE ? CEikButtonBase::ESet : CEikButtonBase::EClear);
-
- aCheckBox = static_cast<CEikCheckBox*>(Control(EDebugKernelKSCHED));
- aCheckBox->SetState(debugMask & KSCHED ? CEikButtonBase::ESet : CEikButtonBase::EClear);
-
- aCheckBox = static_cast<CEikCheckBox*>(Control(EDebugKernelKPROC));
- aCheckBox->SetState(debugMask & KPROC ? CEikButtonBase::ESet : CEikButtonBase::EClear);
-
- aCheckBox = static_cast<CEikCheckBox*>(Control(EDebugKernelKEXEC));
- aCheckBox->SetState(debugMask & KEXEC ? CEikButtonBase::ESet : CEikButtonBase::EClear);
-
- aCheckBox = static_cast<CEikCheckBox*>(Control(EDebugKernelKEXECFAST));
- aCheckBox->SetState(debugMask & KEXECFAST ? CEikButtonBase::ESet : CEikButtonBase::EClear);
-
- aCheckBox = static_cast<CEikCheckBox*>(Control(EDebugKernelKTHREAD));
- aCheckBox->SetState(debugMask & KTHREAD ? CEikButtonBase::ESet : CEikButtonBase::EClear);
-
- aCheckBox = static_cast<CEikCheckBox*>(Control(EDebugKernelKDLL));
- aCheckBox->SetState(debugMask & KDLL ? CEikButtonBase::ESet : CEikButtonBase::EClear);
-
- aCheckBox = static_cast<CEikCheckBox*>(Control(EDebugKernelKLOGON));
- aCheckBox->SetState(debugMask & KLOGON ? CEikButtonBase::ESet : CEikButtonBase::EClear);
-
- aCheckBox = static_cast<CEikCheckBox*>(Control(EDebugKernelKPBUS1));
- aCheckBox->SetState(debugMask & KPBUS1 ? CEikButtonBase::ESet : CEikButtonBase::EClear);
-
- aCheckBox = static_cast<CEikCheckBox*>(Control(EDebugKernelKPBUS2));
- aCheckBox->SetState(debugMask & KPBUS2 ? CEikButtonBase::ESet : CEikButtonBase::EClear);
-
- aCheckBox = static_cast<CEikCheckBox*>(Control(EDebugKernelKPBUSDRV));
- aCheckBox->SetState(debugMask & KPBUSDRV ? CEikButtonBase::ESet : CEikButtonBase::EClear);
-
- aCheckBox = static_cast<CEikCheckBox*>(Control(EDebugKernelKPOWER));
- aCheckBox->SetState(debugMask & KPOWER ? CEikButtonBase::ESet : CEikButtonBase::EClear);
-
- aCheckBox = static_cast<CEikCheckBox*>(Control(EDebugKernelKTIMING));
- aCheckBox->SetState(debugMask & KTIMING ? CEikButtonBase::ESet : CEikButtonBase::EClear);
-
- aCheckBox = static_cast<CEikCheckBox*>(Control(EDebugKernelKEVENT));
- aCheckBox->SetState(debugMask & KEVENT ? CEikButtonBase::ESet : CEikButtonBase::EClear);
-
- aCheckBox = static_cast<CEikCheckBox*>(Control(EDebugKernelKMEMTRACE));
- aCheckBox->SetState(debugMask & KMEMTRACE ? CEikButtonBase::ESet : CEikButtonBase::EClear);
-
- aCheckBox = static_cast<CEikCheckBox*>(Control(EDebugKernelKIPC));
- aCheckBox->SetState(debugMask & KIPC ? CEikButtonBase::ESet : CEikButtonBase::EClear);
-
- aCheckBox = static_cast<CEikCheckBox*>(Control(EDebugKernelKDEBUGGER));
- aCheckBox->SetState(debugMask & KDEBUGGER ? CEikButtonBase::ESet : CEikButtonBase::EClear);
-
- aCheckBox = static_cast<CEikCheckBox*>(Control(EDebugKernelKVIDEO));
- aCheckBox->SetState(debugMask & KVIDEO ? CEikButtonBase::ESet : CEikButtonBase::EClear);
-
- aCheckBox = static_cast<CEikCheckBox*>(Control(EDebugKernelKUSB));
- aCheckBox->SetState(debugMask & KUSB ? CEikButtonBase::ESet : CEikButtonBase::EClear);
-
- aCheckBox = static_cast<CEikCheckBox*>(Control(EDebugKernelKPANIC));
- aCheckBox->SetState(debugMask & KPANIC ? CEikButtonBase::ESet : CEikButtonBase::EClear);
- }
-
-void CDebugDialog::SetDebugOptions()
- {
- TBuf<800> errorMssg; //to show where updates unsuccessful
- //set new debug port
- CXIKNUMBEREDITOR *thisNumberEditor;
- thisNumberEditor = static_cast<CXIKNUMBEREDITOR*>(Control(EDebugPortCtl));
- TInt newDebugPort = thisNumberEditor->NUMBERVALUE();
-
- TInt err;
- if (newDebugPort!=-1)
- {
- err = HAL::Set(HAL::EDebugPort, newDebugPort);
- if (err==KErrNone) iCurrentDebugPort = newDebugPort;
- else
- {
- TBuf<3> errorCode;
- errorCode.Format(KFormatDec,err);
- errorMssg.Append(_L("Cannot set port: System error "));
- errorMssg.Append(errorCode);
- errorMssg.Append('\n');
- thisNumberEditor->SETNUMBERVALUEL(iCurrentDebugPort);
- }
- }
- //set new Kernel debug values
- CEikCheckBox *aCheckBox;
- TUint32 debugMask = 0;
- aCheckBox = static_cast<CEikCheckBox*>(Control(EDebugKernelKHARDWARE));
- if (aCheckBox->State()==CEikButtonBase::ESet) debugMask|=KHARDWARE;
-
- aCheckBox = static_cast<CEikCheckBox*>(Control(EDebugKernelKBOOT));
- if (aCheckBox->State()==CEikButtonBase::ESet) debugMask|=KBOOT;
-
- aCheckBox = static_cast<CEikCheckBox*>(Control(EDebugKernelKSERVER));
- if (aCheckBox->State()==CEikButtonBase::ESet) debugMask|=KSERVER;
-
- aCheckBox = static_cast<CEikCheckBox*>(Control(EDebugKernelKMMU));
- if (aCheckBox->State()==CEikButtonBase::ESet) debugMask|=KMMU;
-
- aCheckBox = static_cast<CEikCheckBox*>(Control(EDebugKernelKSEMAPHORE));
- if (aCheckBox->State()==CEikButtonBase::ESet) debugMask|=KSEMAPHORE;
-
- aCheckBox = static_cast<CEikCheckBox*>(Control(EDebugKernelKSCHED));
- if (aCheckBox->State()==CEikButtonBase::ESet) debugMask|=KSCHED;
-
- aCheckBox = static_cast<CEikCheckBox*>(Control(EDebugKernelKPROC));
- if (aCheckBox->State()==CEikButtonBase::ESet) debugMask|=KPROC;
-
- aCheckBox = static_cast<CEikCheckBox*>(Control(EDebugKernelKEXEC));
- if (aCheckBox->State()==CEikButtonBase::ESet) debugMask|=KEXEC;
-
- aCheckBox = static_cast<CEikCheckBox*>(Control(EDebugKernelKEXECFAST));
- if (aCheckBox->State()==CEikButtonBase::ESet) debugMask|=KEXECFAST;
-
- aCheckBox = static_cast<CEikCheckBox*>(Control(EDebugKernelKTHREAD));
- if (aCheckBox->State()==CEikButtonBase::ESet) debugMask|=KTHREAD;
-
- aCheckBox = static_cast<CEikCheckBox*>(Control(EDebugKernelKDLL));
- if (aCheckBox->State()==CEikButtonBase::ESet) debugMask|=KDLL;
-
- aCheckBox = static_cast<CEikCheckBox*>(Control(EDebugKernelKLOGON));
- if (aCheckBox->State()==CEikButtonBase::ESet) debugMask|=KLOGON;
-
- aCheckBox = static_cast<CEikCheckBox*>(Control(EDebugKernelKPBUS1));
- if (aCheckBox->State()==CEikButtonBase::ESet) debugMask|=KPBUS1;
-
- aCheckBox = static_cast<CEikCheckBox*>(Control(EDebugKernelKPBUS2));
- if (aCheckBox->State()==CEikButtonBase::ESet) debugMask|=KPBUS2;
-
- aCheckBox = static_cast<CEikCheckBox*>(Control(EDebugKernelKPBUSDRV));
- if (aCheckBox->State()==CEikButtonBase::ESet) debugMask|=KPBUSDRV;
-
- aCheckBox = static_cast<CEikCheckBox*>(Control(EDebugKernelKPOWER));
- if (aCheckBox->State()==CEikButtonBase::ESet) debugMask|=KPOWER;
-
- aCheckBox = static_cast<CEikCheckBox*>(Control(EDebugKernelKTIMING));
- if (aCheckBox->State()==CEikButtonBase::ESet) debugMask|=KTIMING;
-
- aCheckBox = static_cast<CEikCheckBox*>(Control(EDebugKernelKEVENT));
- if (aCheckBox->State()==CEikButtonBase::ESet) debugMask|=KEVENT;
-
- aCheckBox = static_cast<CEikCheckBox*>(Control(EDebugKernelKMEMTRACE));
- if (aCheckBox->State()==CEikButtonBase::ESet) debugMask|=KMEMTRACE;
-
- aCheckBox = static_cast<CEikCheckBox*>(Control(EDebugKernelKIPC));
- if (aCheckBox->State()==CEikButtonBase::ESet) debugMask|=KIPC;
-
- aCheckBox = static_cast<CEikCheckBox*>(Control(EDebugKernelKDEBUGGER));
- if (aCheckBox->State()==CEikButtonBase::ESet) debugMask|=KDEBUGGER;
-
- aCheckBox = static_cast<CEikCheckBox*>(Control(EDebugKernelKVIDEO));
- if (aCheckBox->State()==CEikButtonBase::ESet) debugMask|=KVIDEO;
-
- aCheckBox = static_cast<CEikCheckBox*>(Control(EDebugKernelKUSB));
- if (aCheckBox->State()==CEikButtonBase::ESet) debugMask|=KUSB;
-
- aCheckBox = static_cast<CEikCheckBox*>(Control(EDebugKernelKPANIC));
- if (aCheckBox->State()==CEikButtonBase::ESet) debugMask|=KPANIC;
-
- User::SetDebugMask(debugMask);
- TUint32 updatedDebugMask = UserSvr::DebugMask();
- if (debugMask != updatedDebugMask)
- {
- errorMssg.Append(_L("Unable to set kernel options selected. Note that KPanic must be selected if any other options are selected. View the \nupdated dialog to see which Kernel options are set"));
- GetKernelOptions();
- }
-
-
- CEikCheckBox *thisCheckBox, *thisCheckBox2, *thisCheckBox3;
- thisCheckBox = static_cast<CEikCheckBox*>(Control(EDebugFileServerCtl));
- thisCheckBox2 = static_cast<CEikCheckBox*>(Control(EDebugFATCtl));
- thisCheckBox3 = static_cast<CEikCheckBox*>(Control(EDebugLoaderCtl));
-
- TInt fsDebugMask = 0;
- if (thisCheckBox->State()==CEikButtonBase::ESet) fsDebugMask|=KFSERV;
- if (thisCheckBox2->State()==CEikButtonBase::ESet) fsDebugMask|=KFSYS;
- if (thisCheckBox3->State()==CEikButtonBase::ESet) fsDebugMask|=KFLDR;
-
- RFs aRFs;
- err = aRFs.Connect();
- if (err == KErrNone)
- {
- err = aRFs.SetDebugRegister(fsDebugMask);
- if (err != KErrNone)
- errorMssg.Append(_L("Unable to set FS options: RFs::SetDebugRegister() fails with System error number "));
- TBuf<3> errorCode;
- errorCode.Format(KFormatDec, err);
- errorMssg.Append(errorCode);
- }
- else
- {
- errorMssg.Append(_L("\nRFs::Connect() fails with System error number "));
- TBuf<3> errorCode;
- errorCode.Format(KFormatDec, err);
- errorMssg.Append(errorCode);
- thisCheckBox->SetState(CEikButtonBase::EClear);
- thisCheckBox2->SetState(CEikButtonBase::EClear);
- thisCheckBox3->SetState(CEikButtonBase::EClear);
- }
- aRFs.Close();
-
- if (errorMssg.Length() != 0)
- {
- _LIT(KDialogTitle, "Error");
- iEikonEnv->InfoWinL(KDialogTitle, errorMssg);
- }
- }
-
-TBool CDebugDialog::OkToExitL(TInt aButtonId)
- {
- if (aButtonId == EDebugSetButtonCtl)
- {
- SetDebugOptions();
- DrawNow();
- return EFalse;
- }
- if (aButtonId == EEikBidOk)
- {
- SetDebugOptions();
- }
- else if (aButtonId == EEikBidCancel)
- {
- // Do Nothing
- }
- return ETrue;
- }
-
-//
-//
-// Ram Dialog
-//
-//
-
-CRamDialog::CRamDialog()
- {
- noChunks = 0;
- }
-
-void CRamDialog::PreLayoutDynInitL()
- {
- UpdateDialogData();
- }
-
-void CRamDialog::UpdateDialogData()
- {
- CEikLabel *theTotalLabel, *theFreeLabel;
- theTotalLabel = STATIC_CAST(CEikLabel*, Control(ERamTotal));
- theFreeLabel = STATIC_CAST(CEikLabel*, Control(ERamFree));
-
- TMemoryInfoV1Buf memorybuf;
- UserHal::MemoryInfo(memorybuf);
- TInt total=memorybuf().iTotalRamInBytes;
- TInt free=memorybuf().iFreeRamInBytes;
-
- TBuf<40> totalTxt;
- totalTxt.Format(_L("Total RAM (bytes) %d"),total);
- TBuf<40> freeTxt;
- freeTxt.Format(_L("Free RAM (bytes) %d"),free);
-
- theTotalLabel->SetTextL(totalTxt);
- theFreeLabel->SetTextL(freeTxt);
-
- CXIKOPTIONBUTTONLIST *fillSpaceOpButs;
- fillSpaceOpButs = STATIC_CAST(CXIKOPTIONBUTTONLIST*, Control(ERamToLeaveButtonCtl));
-
- // All buttons invisible
- fillSpaceOpButs->ComponentControl(0)->MakeVisible(ETrue);
- fillSpaceOpButs->ComponentControl(1)->MakeVisible(ETrue);
- fillSpaceOpButs->ComponentControl(2)->MakeVisible(ETrue);
- fillSpaceOpButs->ComponentControl(3)->MakeVisible(ETrue);
- fillSpaceOpButs->ComponentControl(4)->MakeVisible(ETrue);
-
- if (free<K4k)
- {
- // All buttons visible
- fillSpaceOpButs->ComponentControl(0)->MakeVisible(EFalse);
- fillSpaceOpButs->ComponentControl(1)->MakeVisible(EFalse);
- fillSpaceOpButs->ComponentControl(2)->MakeVisible(EFalse);
- fillSpaceOpButs->ComponentControl(3)->MakeVisible(EFalse);
- fillSpaceOpButs->ComponentControl(4)->MakeVisible(EFalse);
- }
- else if (free>=K4k && free<K8k)
- {
- fillSpaceOpButs->ComponentControl(1)->MakeVisible(EFalse);
- fillSpaceOpButs->ComponentControl(2)->MakeVisible(EFalse);
- fillSpaceOpButs->ComponentControl(3)->MakeVisible(EFalse);
- fillSpaceOpButs->ComponentControl(4)->MakeVisible(EFalse);
- fillSpaceOpButs->SetButtonById(ERamLeave4K);
- }
- else if (free>=K8k && free<K16k)
- {
- fillSpaceOpButs->ComponentControl(2)->MakeVisible(EFalse);
- fillSpaceOpButs->ComponentControl(3)->MakeVisible(EFalse);
- fillSpaceOpButs->ComponentControl(4)->MakeVisible(EFalse);
- fillSpaceOpButs->SetButtonById(ERamLeave8K);
- }
- else if (free>=K16k && free<K64k)
- {
- fillSpaceOpButs->ComponentControl(3)->MakeVisible(EFalse);
- fillSpaceOpButs->ComponentControl(4)->MakeVisible(EFalse);
- fillSpaceOpButs->SetButtonById(ERamLeave16K);
- }
- else if (free>= K64k && free<K256k)
- {
- fillSpaceOpButs->ComponentControl(4)->MakeVisible(EFalse);
- fillSpaceOpButs->SetButtonById(ERamLeave64K);
- }
- else
- {
- fillSpaceOpButs->SetButtonById(ERamLeave256K);
- }
- }
-
-void CRamDialog::UndoFillRam()
- {
- if (noChunks == 0) iEikonEnv->InfoMsg(_L("Undo fill invalid"));
- else
- {
- while (noChunks>0)
- {
- chunks[--noChunks].Close();
- }
- }
-}
-void CRamDialog::FillRam()
- {
- iEikonEnv->BusyMsgL(_L("Filling RAM"));
-
- CXIKOPTIONBUTTONLIST *opButs;
- opButs = STATIC_CAST(CXIKOPTIONBUTTONLIST*, Control(ERamToLeaveButtonCtl));
-
- TUint ramToLeave=K4k;
- if (opButs->LabeledButtonId()==ERamLeave4K) ramToLeave=K4k;
- else if (opButs->LabeledButtonId()==ERamLeave8K) ramToLeave=K8k;
- else if (opButs->LabeledButtonId()==ERamLeave16K) ramToLeave=K16k;
- else if (opButs->LabeledButtonId()==ERamLeave64K) ramToLeave=K64k;
- else if (opButs->LabeledButtonId()==ERamLeave256K) ramToLeave=K256k;
-
-
- TUint chunkSize;
- TInt err = KErrNone;
- TBuf<20> aName;
- TTime time;
-
- TMemoryInfoV1Buf memorybuf;
- UserHal::MemoryInfo(memorybuf);
-
- // Fill the RAM up with various chunks
- for (chunkSize = K8M; chunkSize>=ramToLeave; chunkSize>>=1)
- {
- TUint KMaxChunks = 10000;
- for (err=KErrNone; err==KErrNone && noChunks<KMaxChunks;)
- {
- // create a unique chunk name
- time.UniversalTime();
- aName.Format(_L("%S%02d-%08x"),&KFillName, noChunks,*(reinterpret_cast<const TInt32*>(&(time.Int64()))));
-
- err = chunks[noChunks].CreateGlobal(aName, chunkSize, chunkSize);
- // ensure RAM is committed by filling it
- if (err==KErrNone)
- {
- Mem::Fill(chunks[noChunks++].Base(),chunkSize,'A');
- }
- User::CompressAllHeaps();
- } ;
- }
- iEikonEnv->BusyMsgCancel();
- if (err == KErrNone) iEikonEnv->InfoMsg(_L("Fill Complete"));
- }
-
-TBool CRamDialog::OkToExitL(TInt aButtonId)
- {
- if (aButtonId == EEikBidCancel)
- {
- return ETrue;
- }
- else if (aButtonId == ERamSetButtonCtl)
- {
- FillRam();
- UpdateDialogData();
- DrawNow();
- return EFalse;
- }
- else if (aButtonId == ERamUndoFillButtonCtl)
- {
- UndoFillRam();
- UpdateDialogData();
- DrawNow();
- return EFalse;
- }
- return ETrue;
- }
-
-//
-//
-// Drive Dialog
-//
-//
-
-CDriveDialog::CDriveDialog() : iDriveName(NULL), iDriveLetter(NULL)
- {
- }
-
-CDriveDialog::~CDriveDialog()
- {
- delete iDriveLetter;
- delete iDriveName;
- }
-
-void CDriveDialog::PreLayoutDynInitL()
- {
- iDriveName = new (ELeave) CDesCArrayFlat(KMaxLocalDrives);
- iDriveLetter = new CArrayFixFlat<TInt>(KMaxLocalDrives);
-
- TBuf<40> string; // displayed in choice box
- RFs rfs;
- User::LeaveIfError(rfs.Connect());
- TDriveInfo driveInfo;
- TVolumeInfo volumeInfo;
- TDriveUnit driveUnit(EDriveA);
- TInt err1,err2,drive=0,number=0;
-
- do {
-
- driveUnit = drive;
- err1 = rfs.Volume(volumeInfo,driveUnit);
- err2 = rfs.Drive(driveInfo, driveUnit);
- if (err1==KErrNone && err2==KErrNone)
- {
-
- // Only interested if not ROM and local
-
- if (volumeInfo.iDrive.iType != EMediaRom &&
- (volumeInfo.iDrive.iDriveAtt | KDriveAttLocal))
- {
- number++;
-
- string.Delete(0,string.MaxLength());
-
- string=driveUnit.Name();
-
- string.Append(_L(" "));
- string.Append(volumeInfo.iName);
-
- iDriveName->AppendL(string);
- iDriveLetter->AppendL(drive);
- }
- }
-
- drive++;
-
- } while (drive <= EDriveZ && number < KMaxLocalDrives);
-
- rfs.Close();
-
- CEikChoiceList *driveChoice;
- driveChoice = STATIC_CAST(CEikChoiceList*, Control(EDriveChoiceList));
- driveChoice->SetArrayL(iDriveName);
- driveChoice->SetArrayExternalOwnership(ETrue);
-
-
- CXIKOPTIONBUTTONLIST *fillSpaceOpButs;
- fillSpaceOpButs = STATIC_CAST(CXIKOPTIONBUTTONLIST*, Control(EDriveToLeaveButtonCtl));
- fillSpaceOpButs->SetButtonById(EDriveLeave256K);
- }
-
-
-void UpdateDialogLeaveSpace()
- {
- }
-
-TBool CDriveDialog::OkToExitL(TInt aButtonId)
- {
- if (aButtonId == EEikBidCancel)
- {
- delete iDriveName;
- delete iDriveLetter;
- return ETrue;
- }
- else
- {
- CEikChoiceList *driveChoice;
- driveChoice = STATIC_CAST(CEikChoiceList*, Control(EDriveChoiceList));
- TInt choice = driveChoice->CurrentItem();
- TDriveUnit driveUnit;
- driveUnit = (*iDriveLetter)[choice];
-
- RFs aRfs;
- User::LeaveIfError(aRfs.Connect());
-
- CXIKOPTIONBUTTONLIST *fillSpaceOpButs;
- fillSpaceOpButs = STATIC_CAST(CXIKOPTIONBUTTONLIST*, Control(EDriveToLeaveButtonCtl));
-
- if (aButtonId==EDriveFillButtonCtl)
- {
- iEikonEnv->BusyMsgL(_L("Filling Drive"));
- // need a unique file name
- TInt i=0,err = KErrNone;
- TFileName fileName;
- TTime time;
-
- TInt fileSize;
-
- CXIKOPTIONBUTTONLIST *fillSpaceOpButs;
- fillSpaceOpButs = STATIC_CAST(CXIKOPTIONBUTTONLIST*, Control(EDriveToLeaveButtonCtl));
-
- TInt spaceToLeave=K4k;
- if (fillSpaceOpButs->LabeledButtonId()==EDriveLeave4K) spaceToLeave=K4k;
- else if (fillSpaceOpButs->LabeledButtonId()==EDriveLeave8K) spaceToLeave=K8k;
- else if (fillSpaceOpButs->LabeledButtonId()==EDriveLeave16K) spaceToLeave=K16k;
- else if (fillSpaceOpButs->LabeledButtonId()==EDriveLeave64K) spaceToLeave=K64k;
- else if (fillSpaceOpButs->LabeledButtonId()==EDriveLeave256K) spaceToLeave=K256k;
-
- for (fileSize = K1M; fileSize>=spaceToLeave; fileSize>>=1)
- {
-
- do {
- time.UniversalTime();
- TDriveName driveName = driveUnit.Name();
- fileName.Format(_L("%S\\%S%06d-%08x"),&driveName,&KFillName,++i,*(reinterpret_cast<const TInt32*>(&(time.Int64()))));
-
- // create a file of this file size
- RFile file;
- err=file.Create(aRfs, fileName, EFileRead|EFileWrite);
- if (err!=KErrNone)
- {
- TBuf<70> errorMessage(_L("Cannot complete fill. RFile::Create() failed with error no. "));
- errorMessage.AppendNum(err);
- iEikonEnv->InfoWinL(_L("Error"), errorMessage);
- }
-
- // fill file up to fileSize
- if (err==KErrNone)
- {
- const TInt MaxBufSize=512;
- TBuf8<MaxBufSize> buf;
- buf.SetLength(MaxBufSize);
- Mem::Fill((void*)buf.Ptr(),MaxBufSize,0xef);
- TInt rem=fileSize;
- while(rem)
- {
- TInt s=Min(MaxBufSize,rem);
- err=file.Write(buf,s);
- if (err!=KErrNone) break;
- rem-=s;
- }
- }
-
- file.Close();
- if(err!=KErrNone) aRfs.Delete(fileName);
- } while (err==KErrNone && i<100);
- }
- iEikonEnv->BusyMsgCancel();
- iEikonEnv->InfoMsg(_L("Drive filled"));
- }
- else if (aButtonId==EDriveUndoFillButtonCtl)
- {
- iEikonEnv->BusyMsgL(_L("Undo Drive Fill"));
- TFindFile fileFinder(aRfs);
- CDir* fileList;
-
- TBuf<10> name;
- name=KFillName;
- name.Append(KAsterisk);
-
- TBuf<3> driveName;
- driveName=driveUnit.Name();
- driveName.Append(_L("\\"));
-
- TInt findErr = fileFinder.FindWildByPath(name,&driveName,fileList);
- TInt deleteErr = KErrNone;
-
- if (findErr == KErrNone)
- {
- for (TInt i=0;i<fileList->Count();++i)
- {
- TBuf<100> filePath(driveName);
- filePath.Append((*fileList)[i].iName);
-
- deleteErr = aRfs.Delete(filePath);
- }
- }
- iEikonEnv->BusyMsgCancel();
-
- if (deleteErr !=KErrNone)
- {
- TBufC<15> function(_L("RFs::Delete()"));
- DisplayError(function, deleteErr);
- }
- if (findErr == KErrNone && deleteErr == KErrNone)
- {
- fillSpaceOpButs->ComponentControl(0)->MakeVisible(ETrue);
- fillSpaceOpButs->ComponentControl(1)->MakeVisible(ETrue);
- fillSpaceOpButs->ComponentControl(2)->MakeVisible(ETrue);
- fillSpaceOpButs->ComponentControl(3)->MakeVisible(ETrue);
- fillSpaceOpButs->ComponentControl(4)->MakeVisible(ETrue);
- iEikonEnv->InfoMsg(_L("Undo Fill Complete"));
- }
-
- else iEikonEnv->InfoMsg(_L("Undo Fill Invalid"));
- delete fileList;
- }
- else if (aButtonId==EDriveFormatButtonCtl)
- {
- TInt count;
- RFormat format;
- TInt err=format.Open(aRfs,driveUnit.Name(),EHighDensity,count);
- if (err==KErrNone)
- {
- iEikonEnv->BusyMsgL(_L("Formatting Drive"));
- while (count && err==KErrNone)
- {
- err = format.Next(count);
- if (err != KErrNone)
- {
- TBufC<15> function(_L("RFormat::Next()"));
- DisplayError(function, err);
- }
- }
- iEikonEnv->BusyMsgCancel();
- }
- else
- {
- TBuf<70> errorMessage(_L("RFormat::Open() failed with system error no."));
- errorMessage.AppendNum(err);
- iEikonEnv->InfoWinL(_L("Error"), errorMessage);
- }
- format.Close();
- }
-
- aRfs.Close();
- }
- return EFalse;
- }
-
-CDialogBase::CDialogBase()
- {
- }
-
-void CDialogBase::DisplayError(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 CDialogBase::DisplayError(TDesC& aMessage)
- {
- //could check don't go out of bounds
- TBuf<250> errorMssge(aMessage);
- iEikonEnv->InfoWinL(_L("Error"), errorMssge);
- }
-