diff -r 000000000000 -r af10295192d8 tcpiputils/dnd/src/dnd.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tcpiputils/dnd/src/dnd.cpp Tue Jan 26 15:23:49 2010 +0200 @@ -0,0 +1,562 @@ +// 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: +// dnd.cpp - name resolver daemon main module +// + +#include +#include + +#include + + +#include + +#include +#include +#include +#include + +#include "dnd.hrh" +#include "demon.h" +#include + +const TUid KUidDndApp = {0x10000882}; +// +// CSimpleConsole +// +enum TMessageControlFontStyle + { + EStyleElementBold=EMenuCommandBold, + EStyleElementItalic=EMenuCommandItalic, + EStyleElementInverse=EMenuCommandInverse, + EStyleElementUnderline=EMenuCommandUnderline, + EStyleElementColor=EMenuCommandColor + }; + +class CConsoleControl : public CCoeControl + { +public: + CConsoleControl() {} + ~CConsoleControl(); + void ConstructL(const TPoint& aLeftTop, const TSize& aSize, TInt aFlags); + void HandleCommandL(TInt aCommand); + void ActivateL(); + void SetScrollBarVisibilityL(CEikScrollBarFrame::TScrollBarVisibility aHBarVisibility, CEikScrollBarFrame::TScrollBarVisibility aVBarVisibility); + void DrawCursor(); + void Write(const TDesC &aDes); + CEikConsoleControl *ConsoleControl(); + TBool UpdateScrollBars(); + void ClearScreen(); + void Redraw(const TRect &aRect); + void Lf(); +protected: + void FocusChanged(TDrawNow aDrawNow); +private: + void ToggleFontStyleAndRedrawL(TMessageControlFontStyle aStyleElement); + +private: + CEikConsoleScreen* iConsole; + TInt iHistory; + }; + + +// +// class CDndView +// +class CDndEngine; +class CDndView : public CCoeControl, public MCoeControlBrushContext, public MDemonMain + { +public: + ~CDndView(); + void ConstructL(const TRect& aRect); + + void Start(); + void Stop(); + void Dump(); + TInt CountComponentControls() const; + CCoeControl* ComponentControl(TInt aIndex) const; + void Write(const TDesC &aDes); + void WriteList(const TDesC &aFmt, VA_LIST aList); + void ClearScreen(); + void ShowError(TInt aId); + TInt CheckResult(const TDesC &aText, TInt aResult); + + void HandleCommandL(TInt aCommand); +private: + void Draw(const TRect& /*aRect*/) const; + + //Component Controls + void CreateBigConsoleL(TInt aFlags); + + void ShowError(TDes &msg); + void ShowError(TDes &msg, TInt aErr); + +private: + CConsoleControl* iConsole; + + MDemonEngine *iModel; + TBool iRunning; + TBuf<1024> iBuf; //< A work buffer for formatting messsages (Writef) + }; + + +// +// CDndAppUi +// +class CDndAppUi : public CEikAppUi + { +public: + void ConstructL(); + ~CDndAppUi(); + +private: + void HandleCommandL(TInt aCommand); + // TBool LaunchOptionsDialog(CUDPSendEngine* aModel); + // void LaunchAboutDialog(); +private: + CDndView* iAppView; +// CHelpTask *iHelp; + }; + +// +// CDndDocument +// +class CDndDocument : public CEikDocument + { +public: + CDndDocument(CEikApplication& aApp); +private: + CEikAppUi* CreateAppUiL(); + }; + +// +// CDndAppUi +// +class CDndApplication : public CEikApplication + { +private: // from CApaApplication + CApaDocument* CreateDocumentL(); + TUid AppDllUid() const; + }; + +// +// CConsoleControl +// +CConsoleControl::~CConsoleControl() + { + delete iConsole; + } + +void CConsoleControl::ConstructL(const TPoint& aTopLeft,const TSize& aSize,TInt aFlags) + { + TRect rect(aTopLeft,aTopLeft + aSize.AsPoint()); + SetRect(rect); + iConsole= new (ELeave) CEikConsoleScreen; + iConsole->ConstructL(_L("TEST"),aTopLeft,aSize,aFlags,EEikConsWinInPixels); + iConsole->SetHistorySizeL(200,0); + //iConsole->SetAllPrintable(ETrue); + iHistory=200; + } + +void CConsoleControl::ActivateL() + { + CCoeControl::ActivateL(); + iConsole->SetKeepCursorInSight(TRUE); + iConsole->DrawCursor(); + iConsole->SetAtt(ATT_NORMAL); + } + +void CConsoleControl::HandleCommandL(TInt aCommand) + { + switch (aCommand) + { + case EConsolFontDialog: + { + TCharFormat charFormat; + charFormat.iFontSpec = iConsole->Font(); + TCharFormatMask dummy; + if (CEikFontDialog::RunDlgLD(charFormat, dummy)) + { + //charFormat.iFontSpec.iTypeface.SetIsProportional(EFalse); + iConsole->SetFontL(charFormat.iFontSpec); + } + } + break; +#if 0 + case EConsolHistory: + { + CHistoryDialog* dialog2 = new(ELeave) CHistoryDialog(&iHistory); + if (dialog2->ExecuteLD(R_KMD_HISTORY_DIALOG)) + iConsole->SetHistorySizeL(iHistory,0); + } + break; +#endif + case EConsolScrollNone: + iConsole->SetScrollBarVisibilityL(CEikScrollBarFrame::EOff,CEikScrollBarFrame::EOff); + break; + case EConsolScrollHor: + iConsole->SetScrollBarVisibilityL(CEikScrollBarFrame::EAuto,CEikScrollBarFrame::EOff); + break; + case EConsolScrollVert: + iConsole->SetScrollBarVisibilityL(CEikScrollBarFrame::EOff,CEikScrollBarFrame::EAuto); + break; + case EConsolScrollBoth: + iConsole->SetScrollBarVisibilityL(CEikScrollBarFrame::EAuto,CEikScrollBarFrame::EAuto); + break; + + default: + break; + } + } + +void CConsoleControl::FocusChanged(TDrawNow aDrawNow) + { + iConsole->ConsoleControl()->SetFocus(IsFocused(), aDrawNow); + } + +void CConsoleControl::ToggleFontStyleAndRedrawL(TMessageControlFontStyle aStyleElement) + { + switch (aStyleElement) + { + case EStyleElementColor: + if ( iConsole->Att() & ATT_COLORMASK ) // color? + iConsole->SetAtt(ATT_NORMAL); // then set normal + else // else + iConsole->SetAtt(4,11); // set 4 (darkgray) on 11 (lightgray) + break; + case EStyleElementBold: + // clear color flag (just to be sure) and switch bold flag + iConsole->SetAtt( (iConsole->Att()&(~ATT_COLORMASK)) ^ ATT_BOLD ); + break; + case EStyleElementItalic: + // clear color flag (just to be sure) and switch italic flag + iConsole->SetAtt( (iConsole->Att()&(~ATT_COLORMASK)) ^ ATT_ITALIC ); + break; + case EStyleElementInverse: + // clear color flag (just to be sure) and switch inverse flag + iConsole->SetAtt( (iConsole->Att()&(~ATT_COLORMASK)) ^ ATT_INVERSE ); + break; + case EStyleElementUnderline: + // clear color flag (just to be sure) and switch underline flag + iConsole->SetAtt( (iConsole->Att()&(~ATT_COLORMASK)) ^ ATT_UNDERLINE ); + break; + } + } + +void CConsoleControl::SetScrollBarVisibilityL(CEikScrollBarFrame::TScrollBarVisibility aHBarVisibility, CEikScrollBarFrame::TScrollBarVisibility aVBarVisibility) + { + iConsole->SetScrollBarVisibilityL(aHBarVisibility,aVBarVisibility); + iConsole->ConsoleControl()->UpdateArea(); + iConsole->UpdateScrollBars(); + iConsole->ConsoleControl()->UpdateArea(); + //TBool b=iConsole->RecalculateSize(); + } + + +void CConsoleControl::DrawCursor() + { + iConsole->DrawCursor(); + } + + +void CConsoleControl::Write(const TDesC &aMsg) + { + iConsole->Write(aMsg); + iConsole->FlushChars(); + } + + +CEikConsoleControl *CConsoleControl::ConsoleControl() + { + return iConsole->ConsoleControl(); + } + +TBool CConsoleControl::UpdateScrollBars() + { + return iConsole->UpdateScrollBars(); + } + +void CConsoleControl::ClearScreen() + { + iConsole->ClearScreen(); + } + + +void CConsoleControl::Redraw(const TRect &aRect) + { + iConsole->Redraw(aRect); + } + +void CConsoleControl::Lf() + { + iConsole->Lf(); + } + + +// **************** +// APPLICATION VIEW +// **************** +// +void CDndView::ConstructL(const TRect& aRect) + { + CreateWindowL(); + SetRect(aRect); + + iContext = this; + iBrushStyle = CGraphicsContext::ESolidBrush; + iBrushColor = KRgbWhite; + CreateBigConsoleL(CEikConsoleScreen::ENoInitialCursor); + + ActivateL(); + } + +void CDndView::CreateBigConsoleL(TInt aFlags) + { + iConsole =new(ELeave) CConsoleControl; +// TRect rect=Rect(); +// rect.Shrink(3,3); + iConsole->ConstructL(Position(), Rect().Size(),aFlags); + iConsole->SetScrollBarVisibilityL(CEikScrollBarFrame::EOff,CEikScrollBarFrame::EAuto); + } + +CDndView::~CDndView() + { + delete iConsole; + delete iModel; + } + +TInt CDndView::CountComponentControls() const + { + return 1; + } + +CCoeControl* CDndView::ComponentControl(TInt aIndex) const + { + switch (aIndex) + { + case 0: + return iConsole; + default: + return 0; + } + } + +void CDndView::Draw(const TRect& /*aRect*/) const + { + } + +void CDndView::Start() + { + TInt err; + + if (!iModel) + { + + TRAP(err, iModel = MDemonEngine::NewL(*this)); + if (err == KErrNone && iModel) + { + CEikonEnv::Static()->BusyMsgL(R_BUSY); + TRAP(err, iModel->ConstructL()); + CEikonEnv::Static()->BusyMsgCancel(); + if (err!=KErrNone) + { + TBuf<50> msg; + msg.Format(_L("Error initializing: %d"), err); + ShowError(msg); + Stop(); + } + } + } + else + CEikonEnv::Static()->InfoMsg(_L("Already started!")); + } + +void CDndView::Write(const TDesC &aMsg) + { + iConsole->Write(aMsg); + iConsole->Write(_L("\n")); + } + +void CDndView::WriteList(const TDesC &aFmt, VA_LIST aList) + { + iBuf.FormatList(aFmt, aList); + iConsole->Write(iBuf); + iConsole->Write(_L("\n")); + } + + +void CDndView::ShowError(TInt aId) + { + iEikonEnv->InfoMsg(aId); + } + +void CDndView::ShowError(TDes &msg) + { + iEikonEnv->InfoMsg(msg); + } + +void CDndView::ShowError(TDes &msg, TInt aErr) + { + TBuf<100> txt; + TBuf<100> txt2; + + txt.Format(msg); + iEikonEnv->GetErrorText(txt2,aErr); + txt.AppendFormat(txt2); + iEikonEnv->InfoMsg(txt); + } + +TInt CDndView::CheckResult(const TDesC &aText, TInt aResult) + { + if (aResult == KErrNone) + return KErrNone; + + TBuf<100> err; + iEikonEnv->GetErrorText(err, aResult); + + TBuf<200> str(aText); + str.AppendFormat(_L(" returned with [%d: %s] "), aResult,err.PtrZ()); + Write(str); + return aResult; + } + + +void CDndView::Stop() + { + TInt err; + if (iModel) + { + TRAP(err, CEikonEnv::Static()->BusyMsgL(R_BUSY)); + delete iModel; + iModel = NULL; + CEikonEnv::Static()->BusyMsgCancel(); + Write(_L("*Stopped*")); + } + else + { + CEikonEnv::Static()->InfoMsg(_L("Not started!")); + } + } + +void CDndView::ClearScreen() + { + TInt err; + delete iConsole; + iConsole = NULL; + TRAP(err, CreateBigConsoleL(CEikConsoleScreen::ENoInitialCursor)); + } + +void CDndView::HandleCommandL(TInt aCommand) + { + switch (aCommand) + { + case EDndStart: + Start(); + break; + case EDndStop: + Stop(); + break; + case EDndClearScreen: + ClearScreen(); + break; + case EDndDump: + if (iModel) + { + CEikonEnv::Static()->BusyMsgL(R_BUSY); + iModel->HandleCommandL(aCommand); + CEikonEnv::Static()->BusyMsgCancel(); + } + else + CEikonEnv::Static()->InfoMsg(_L("Not started!")); + break; + + default: + ASSERT(iConsole != NULL); + iConsole->HandleCommandL(aCommand); + if (iModel) + iModel->HandleCommandL(aCommand); + } + } + +// ************** +// APPLICATION UI +// ************** +// +void CDndAppUi::ConstructL() + { + BaseConstructL(); + + iAppView= new (ELeave) CDndView; + iAppView->ConstructL(ClientRect()); + } + +void CDndAppUi::HandleCommandL(TInt aCommand) + { + switch (aCommand) + { + case EEikCmdExit: + Exit(); + return; + default: + iAppView->HandleCommandL(aCommand); + } + } + +CDndAppUi::~CDndAppUi() + { + delete iAppView; + } + +// ******** +// DOCUMENT +// ******** +CDndDocument::CDndDocument(CEikApplication& aApp) + : CEikDocument(aApp) + { + } + +CEikAppUi* CDndDocument::CreateAppUiL() + { + return new (ELeave) CDndAppUi; + } + +// *********** +// APPLICATION +// *********** +// + +TUid CDndApplication::AppDllUid() const + { + return KUidDndApp; + } + +CApaDocument* CDndApplication::CreateDocumentL() + { + return new(ELeave) CDndDocument(*this); + } + +// **** +// MAIN +// **** +// +EXPORT_C CApaApplication* NewApplication() + { + return new CDndApplication; + } + + +GLDEF_C TInt E32Dll() + { + return KErrNone; + }