--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/networkingutils/ipadministrationtool/src/ipadm.cpp Tue Jan 26 15:16:33 2010 +0200
@@ -0,0 +1,468 @@
+// 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:
+// ipadm.cpp - IP administration tool main module
+//
+
+#include <techview/eikfnlab.h>
+#ifndef CALYPSO
+#include <techview/eikfontd.h>
+#endif
+
+#if EPOC_SDK < 0x06000000
+#include <e32keys.h>
+#include <coemain.h>
+
+#include <eikenv.h>
+#include <eikdef.h>
+#include <eikcmds.hrh>
+#include <techview/eikon.rsg>
+#include <techview/eiklabel.h>
+
+#include <techview/eiktbar.h>
+#include <techview/eikchlst.h>
+#include <techview/eikpgsel.h>
+
+#include <techview/eiklabel.h>
+#endif
+
+#ifdef MAKE_EXE_APPLICATION
+#include <eikstart.h>
+#endif
+
+#include "ipadm.h"
+#include "engine.h"
+
+//
+// CConsoleControl
+//
+CConsoleControl::~CConsoleControl()
+ {
+ delete iConsole;
+ }
+
+void CConsoleControl::ConstructL(const TPoint& aTopLeft, const TSize& aSize, TInt aFlags)
+ {
+ TRect rect(aTopLeft,aTopLeft + aSize.AsPoint());
+#if EPOC_SDK >= 0x06000000
+ SetRect(rect);
+#else
+ SetRectL(rect);
+#endif
+ 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:
+#if EPOC_SDK >= 0x06000000
+ {
+#ifndef CALYPSO
+ TCharFormat charFormat;
+ charFormat.iFontSpec = iConsole->Font();
+ TCharFormatMask dummy;
+ if (CEikFontDialog::RunDlgLD(charFormat, dummy))
+ {
+ //charFormat.iFontSpec.iTypeface.SetIsProportional(EFalse);
+ iConsole->SetFontL(charFormat.iFontSpec);
+ }
+#endif
+ }
+#else
+ {
+ TCharFormat charFormat;
+ charFormat.iFontSpec = iConsole->Font();
+ TCharFormatMask dummy;
+ CEikFontDialog* dialog=new(ELeave) CEikFontDialog(charFormat,dummy);
+ if (dialog->ExecuteLD(R_EIK_DIALOG_FONT))
+ {
+ //charFormat.iFontSpec.iTypeface.SetIsProportional(EFalse);
+ iConsole->SetFontL(charFormat.iFontSpec);
+ }
+ }
+#endif
+ 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() const
+ {
+ 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 CIpAdmView::ConstructL(const TRect& aRect)
+ {
+ CreateWindowL();
+#if EPOC_SDK >= 0x06000000
+ SetRect(aRect);
+#else
+ SetRectL(aRect);
+#endif
+ iContext = this;
+ iBrushStyle = CGraphicsContext::ESolidBrush;
+ iBrushColor = KRgbWhite;
+ CreateBigConsoleL(CEikConsoleScreen::ENoInitialCursor);
+
+ StartL();
+
+ ActivateL();
+ }
+
+void CIpAdmView::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);
+
+ }
+
+CIpAdmView::~CIpAdmView()
+ {
+ delete iConsole;
+ delete iModel;
+ }
+
+TInt CIpAdmView::CountComponentControls() const
+ {
+ return 1;
+ }
+
+CCoeControl* CIpAdmView::ComponentControl(TInt aIndex) const
+ {
+ switch (aIndex)
+ {
+ case 0:
+ return iConsole;
+ default:
+ return 0;
+ }
+ }
+
+void CIpAdmView::Draw(const TRect& /*aRect*/) const
+ {
+#if 0
+ CWindowGc& gc = SystemGc();
+
+ gc.SetPenStyle(CGraphicsContext::ESolidPen);
+ TSize penSizeBold(3,3);
+ gc.SetPenSize(penSizeBold);
+ gc.SetBrushStyle(CGraphicsContext::ESolidBrush);
+
+ TRect rect=iConsole->Rect(); //Lines around the Console
+ rect.Grow(3,3);
+ gc.DrawRect(rect);
+#endif
+ }
+
+void CIpAdmView::StartL()
+ {
+ TInt err;
+
+ if (!iModel)
+ {
+ iModel = new CIpAdmEngine(this);
+ 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);
+ StopL();
+ }
+ }
+ else
+ CEikonEnv::Static()->InfoMsg(_L("Already Running!"));
+ }
+
+
+void CIpAdmView::Write(const TDesC &aMsg)
+ {
+ iConsole->Write(aMsg);
+ iConsole->Write(_L("\n"));
+ }
+
+void CIpAdmView::ShowError(TInt aId)
+ {
+ iEikonEnv->InfoMsg(aId);
+ }
+
+void CIpAdmView::ShowError(const TDes &msg)
+ {
+ iEikonEnv->InfoMsg(msg);
+ }
+
+void CIpAdmView::ShowError(const TDes &msg, TInt aErr)
+ {
+ TBuf<100> txt;
+ TBuf<100> txt2;
+
+ txt.Format(msg);
+ iEikonEnv->GetErrorText(txt2,aErr);
+ txt.AppendFormat(txt2);
+ iEikonEnv->InfoMsg(txt);
+ }
+
+void CIpAdmView::StopL()
+ {
+ if (iModel)
+ {
+ CEikonEnv::Static()->BusyMsgL(R_BUSY);
+ delete iModel;
+ CEikonEnv::Static()->BusyMsgCancel();
+ Write(_L("*Stopped*"));
+ }
+ else
+ CEikonEnv::Static()->InfoMsg(_L("Not running!"));
+ iModel = NULL;
+ }
+
+
+void CIpAdmView::ClearScreenL()
+ {
+ delete iConsole;
+ iConsole = NULL;
+ CreateBigConsoleL(CEikConsoleScreen::ENoInitialCursor);
+ }
+
+void CIpAdmView::HandleCommandL(TInt aCommand)
+ {
+ switch (aCommand)
+ {
+ case EIpAdmClearScreen:
+ ClearScreenL();
+ break;
+
+ default:
+ ASSERT(iConsole != NULL);
+ iConsole->HandleCommandL(aCommand);
+ if (iModel)
+ iModel->HandleCommandL(aCommand);
+ break;
+ }
+ }
+
+// **************
+// APPLICATION UI
+// **************
+//
+void CIpAdmAppUi::ConstructL()
+ {
+ BaseConstructL();
+
+ iAppView= new (ELeave) CIpAdmView;
+ iAppView->ConstructL(ClientRect());
+
+#if EPOC_SDK < 0x06000000
+ CEikFileNameLabel* filenameLabel=STATIC_CAST(CEikFileNameLabel*, iToolBar->ControlById(EIpAdmFilename));
+ filenameLabel->UpdateL();
+#endif
+ }
+
+void CIpAdmAppUi::HandleCommandL(TInt aCommand)
+ {
+ switch (aCommand)
+ {
+ case EEikCmdExit:
+ Exit();
+ return;
+ default:
+ iAppView->HandleCommandL(aCommand);
+ }
+ }
+
+CIpAdmAppUi::~CIpAdmAppUi()
+ {
+#ifndef CALYPSO
+ RemoveFromStack(iAppView);
+#endif
+ delete iAppView;
+ }
+
+// ********
+// DOCUMENT
+// ********
+CIpAdmDocument::CIpAdmDocument(CEikApplication& aApp)
+ : CEikDocument(aApp)
+ {
+ }
+
+CEikAppUi* CIpAdmDocument::CreateAppUiL()
+ {
+ return new (ELeave) CIpAdmAppUi;
+ }
+
+// ***********
+// APPLICATION
+// ***********
+//
+TUid CIpAdmApplication::AppDllUid() const
+ {
+ return KUidIpAdmApp;
+ }
+
+CApaDocument* CIpAdmApplication::CreateDocumentL()
+ {
+ return new(ELeave) CIpAdmDocument(*this);
+ }
+
+// ****
+// MAIN
+// ****
+//
+EXPORT_C CApaApplication* NewApplication()
+ {
+ return new CIpAdmApplication;
+ }
+
+
+#ifdef MAKE_EXE_APPLICATION
+
+GLDEF_C TInt E32Main()
+ {
+ return EikStart::RunApplication(NewApplication);
+ }
+
+#else
+
+#ifndef EKA2
+GLDEF_C TInt E32Dll(TDllReason /*aReason*/)
+ {
+ return KErrNone;
+ }
+#endif
+
+#endif // MAKE_EXE_APPLICATION