First submission to Symbian Foundation staging server.
// fed.h
//
// Copyright (c) 2009 - 2010 Accenture. All rights reserved.
// This component and the accompanying materials are made available
// under the terms of the "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:
// Accenture - Initial contribution
//
#ifndef FED_H_
#define FED_H_
#include <e32base.h>
#include <f32file.h>
#include "screenmngr.h"
#include "cmdwindow.h"
class CColorConsoleBase;
class CFedBufferBase;
class CFedViewBase;
class CDesC16Array;
class CCnvCharacterSetConverter;
class CFed : public CActive
{
public:
static CFed* NewL(CColorConsoleBase& aConsole, RFs& aFs);
static CFed* NewL(CConsoleBase& aConsole, RFs& aFs);
~CFed();
//Main entrance to the editor
void StartL(CDesC16Array* aFiles); // Takes ownership of aFiles immediately
void RedrawEverythingL();
void ShowHelpL(HBufC* aHelpText);
public:
//CActive
void DoCancel();
void RunL();
TInt RunError(TInt aError);
private:
CFed(CColorConsoleBase& aConsole, RFs& aFs);
CFed(CConsoleBase& aConsole, RFs& aFs);
void ConstructL();
//Construct all necessary views as specified in the command line
void CreateViewsL(CDesC16Array* aFiles);
//Some standard commands which need to be handled in the CFed class
enum TCmdType
{
ECmdNone,
ECmdHelp,
ECmdPrevView,
ECmdNextView,
ECmdNewDocument,
ECmdCloseCurrent,
ECmdCloseAll,
ECmdOpenDocument,
ECmdRefresh,
};
//Main function processing keys which should catch all commands related to the whole editor, not to any particular view
TCmdType ProcessKeyL(const TKeyCode& aCode);
//Execute commands returned by ProcessKeyL
TBool ExecuteCommandL(TCmdType aCmd);
//Closes the view which is currently active
TBool CloseCurrentViewL();
//Closes all views, will cause the program to close only if special char has been pressed (EKeyEscape)
void CloseAllViewsL();
//Removes the view from the array of views
void DeleteView();
void NewViewL(const TDesC& aFileName, TBool aPromptOnNonexistantName=EFalse);
void OpenDocumentL();
private:
RFs& iFs;
CConsoleBase& iConsole;
CColorConsoleBase* iColorConsole;
CScreenManager iScreenMngr;
CCommandWindow* iCmdWindow;
RArray<CFedViewBase*> iViewArray;
TInt iViewIdx;
CCnvCharacterSetConverter* iCharconv; // Shared between CFileBuffers, for doing UTF-8 conversion. May be null if charconv isn't available
};
#endif /*FED_H_*/