--- /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 <eikfnlab.h>
+#include <eikfontd.h>
+
+#include <eikenv.h>
+
+
+#include <coeccntx.h>
+
+#include <eikappui.h>
+#include <eikapp.h>
+#include <eikdoc.h>
+#include <eikconso.h>
+
+#include "dnd.hrh"
+#include "demon.h"
+#include <dndapp.rsg>
+
+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;
+ }