textrendering/word/SRC/WPAPPUI.H
changeset 0 1fb32624e06b
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/textrendering/word/SRC/WPAPPUI.H	Tue Feb 02 02:02:46 2010 +0200
@@ -0,0 +1,375 @@
+/*
+* Copyright (c) 1997-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: 
+*
+*/
+
+
+#ifndef __WORD_H__
+#define __WORD_H__
+
+#include <txtfrmat.h>
+#include <txtrich.h>
+#include <txtstyle.h>
+#include <prninf.h>
+#include <badesca.h>
+#include <coecobs.h>
+#include <apgdoor.h>
+#include <eikappui.h>
+#include <techview/eikpprob.h>
+#include <techview/eikedwob.h>
+#include <techview/eikbutb.h>
+#include <techview/eikrted.h>
+#include <gulicon.h>
+#include "WPTEXTED.H"
+#include "WPDOC.H"
+#include "WNGMODEL.H"
+
+class CRichText;
+class CCharFormatLayer;
+class CParaFormatLayer;
+class CStreamStore;
+class CPrintSetup;
+class CTextPageRegionPrinter;
+class CWordDocument;
+class CWordToolBarUpdate;
+class CWordTextListBox;
+class CEikColumnListBox;
+class CWordSnakingColumnListBox;
+class CEikCommandButtonBase;
+class CWordTest;
+
+/**
+@internalComponent
+*/
+const TUid KUidPrinterDevice={0x1000010b};
+
+const CParagraphStyle::TApplyParaStyleMode KApplyParaStyleMode=CParagraphStyle::ERetainSpecificCharFormat;
+const TInt KThinBorderThicknessInTwips=20;
+const TInt KThickBorderThicknessInTwips=30;
+
+const TInt KVersionAppConfigurationData=1;
+
+const TInt KFileBusyInitialDelayInMicroSeconds=1000000;
+
+# if defined(__GCC32__)
+	const TInt KClippedTextCharacter=0;
+# else
+	const TChar KClippedTextCharacter=0;
+#endif
+
+class CWordAppUi : public CEikAppUi, public MCoeControlObserver, public MEikEdwinObserver, public MPrintPreviewDialogObserver
+/**
+@internalComponent
+*/
+    {
+
+	friend class CWordToolBarUpdate;
+public:
+    CWordAppUi();
+    ~CWordAppUi();
+    void ConstructL();
+//
+	void GetUiData(TWordUiData& aData)const;
+	void SetUiData();
+	inline void SetReadOnly(TBool aReadOnly);
+	inline void NotifyNewTextL();
+//
+private:
+	enum TButtons
+		{
+		EAll,
+		EStyleName,
+		EFontName,
+		EFontHeight,
+		EBold,
+		EItalic,
+		EUnderline,
+		EAlignment,
+		EBullet,
+		EBorder
+		};
+	enum TToolBarUpdate
+		{
+		EVisibilityDependant,
+		EVisibilityIndependant
+		};
+	enum TToolBarType
+		{
+		EToolBar,
+		EToolBand
+		};
+	enum TWordFlags
+		{
+		EFNameBoxPopped		=0x001,
+		EFHeightBoxPopped	=0x002,
+		EBordersPopped		=0x004,
+		EWysiwygModeOn		=0x008,
+		EStyleBoxPopped 	=0x010,
+		EAlignBoxPopped		=0x020,
+		};
+	enum TBorderFlags
+		{
+		ESingleFull=3,
+		ESingleTop,
+		ESingleBottom,
+		ESingleTopAndBottom,
+		EDoubleFull,
+		EDoubleTop,
+		EDoubleBottom,
+		ENullBorder
+		};			 
+	enum TNpcFlags
+		{
+		ENpcTabsVisible				=0x001,
+		ENpcSpacesVisible			=0x002,
+		NpcParagraphsVisible		=0x004,
+		NpcForcedLineBreaksVisible	=0x008,
+		NpcSoftHyphensVisible		=0x010,
+		NpcHardHyphensVisible		=0x020,
+		NpcHardSpacesVisible		=0x040
+		};
+	enum TPicturePrefFlags
+		{
+		ESketchAsGlass		=0x001,
+		EGraphAsGlass		=0x002,
+		EConfirmDeleteObject=0x004
+		};
+
+	enum TConfirmationText
+		{
+		ERevertTitle,
+		ERevertText,
+		};
+private:
+	//
+	// from CCoeAppUi
+	TKeyResponse HandleKeyEventL(const TKeyEvent& aKeyEvent,TEventCode aType);
+	void SetAndDrawFocus(TBool aFocus);
+	virtual TCoeInputCapabilities InputCapabilities() const;
+	//
+	// from CEikAppUi
+	virtual void HandleCommandL(TInt aCommand);
+	virtual void HandleModelChangeL();
+	virtual TBool ProcessCommandParametersL(TApaCommand aCommand,TFileName& aDocumentName,const TDesC8& aTail);
+	virtual void OpenFileL(const TDesC& aFileName);
+	virtual void CreateFileL(const TDesC& aFileName);
+	// overload to provide template functionality
+	virtual void CreateFileL(const TDesC& aFileName, const TDesC& aTemplateFileName);
+	//
+	// from MCoeControlObserver
+	virtual void HandleControlEventL(CCoeControl* aControl,TCoeEvent aEventType);
+	//
+	// from MEikEdwinObserver
+	virtual void HandleEdwinEventL(CEikEdwin* aEdwin,TEdwinEvent aEventType);
+	//
+	// from MEikMenuObserver
+	virtual void DynInitMenuPaneL(TInt aMenuId,CEikMenuPane* aMenuPane);
+	//
+	// from MPrintPreviewDialogObserver
+	virtual TBool PageSetupChangedL(CPrintSetup* aPrintSetup,TInt& aNumPagesInDoc);
+	virtual TBool RunPrintRangeDialogL(CPrintSetup* aPrintSetup,TInt& aNumPagesInDoc);
+	void RunPrintDialogL();
+	void DoPrintL();
+	//
+	// in WPAPFILE.CPP
+	void CmdFileNewL();
+	void CmdFileOpenL();
+	void CmdFileSaveL();
+	void CmdFileSaveAsL();
+	void CmdFileRevertL();
+	void CmdFileSaveAsTemplateL();
+	void CmdFileDeleteTemplateL();
+	void CmdFileTextImportL();
+	void CmdFileTextExportL()const;
+	void CmdFileHtmlImportL();
+	void DoFileOpenL(const TFileName& aFileName);
+	void DoFileSaveL(TBool aEchoInfoMessage);
+	TFileName CurrentFilePath()const;
+	void SetInitialPathL(TFileName& aFileName)const;
+	TFileName NormalTemplateFileNameL()const;
+	//
+	// paginate/print/preview stuff
+	void RunPageSetupDialogL();
+	//
+	// in WPAPPTBR.CPP
+	void UpdateToolBarAndBandL(TInt aCommand);
+	TBool ToggleToolbarControlL(CEikToolBar& aToolBar);
+	void UpdateToolbandButtonsL(TToolBarUpdate aUpdate=EVisibilityDependant);
+	void UpdateCharFormatButtonsL();
+	void UpdateParaFormatButtonsL();
+	void UpdateToolBandFontNameButtonL(TDesC& NewFontName);
+	void UpdateToolBandFontNameButtonL(TDes& aNewFontName);
+	void UpdateToolBandFontHeightButtonL(const TInt aNewFontHeight);
+	void UpdateStyleButtonL();
+	void UpdateAlignButtonL(RTmParFormat::TAlignment aNewAlignment);
+	TInt AlignmentBitmapId(TInt aId)const;
+	void UpdateBorderButtonL(TBool aBordersPresent);
+	void UpdateFileNameLabelL();
+	void UpdateToolBandButton(TInt aCommand,CEikButtonBase::TState aNewState);
+	//
+	// in WPAPPUT.CPP
+	TBool RunPaginationDialogL();
+	void RunPreviewDialogL();
+	void RunGoToDialogL();
+	void RunViewPreferencesDialogL();
+	void RunOutlineDialogL();
+	void RunObjectPreferencesDialogL();
+	TBool ConfirmationDialogL(TConfirmationText aTitle,TConfirmationText aText)const;
+	void ReformatDueToStateChangeL();
+	inline CRichText* Text()const;
+	inline CWordDocument* Document()const;
+	inline CTextPageRegionPrinter& PageRegionPrinter()const;
+	inline TBool WysiwygModeIsSet()const;
+	inline TBool ToggleWysiwygMode();
+	inline TBool SketchAsGlass()const;
+	inline void SetSketchAsGlass(TBool aSketchAsGlass);
+	inline TBool GraphAsGlass()const;
+	inline void SetGraphAsGlass(TBool aGraphAsGlass);
+	TKeyResponse ProcessStyleHotKeyL(const TChar& aKey);
+	//
+	inline void SetPaginationOutOfDate(TBool aPaginationOutOfDate);
+	inline TBool PaginationOutOfDate()const;
+	void CreateEdwinL();
+	void SetEdwinL();
+	void ResetEdwinL();
+	void ResetPrint();
+	void UpdateToolbarsL();
+	void SetParaAlignmentL(TInt aCommand);
+	void CmdChangeAlignmentL();
+	void SetBulletL();
+	void RunSelectBulletDialogL();
+	void CreateDefaultBulletL();
+	void ZoomL(TInt aZoomCmd);
+	void AlterParaStylesL(TInt aCommand);
+	void InsertCharacterL(TChar aCharacter);
+	void CmdWrapToScreenL();
+	void UpdatePageLayoutL();
+	TInt PageLayoutWidth() const;
+	void ResetFlags();
+	TFileName BitmapStore() const;
+	void AppendAndTrim(TDes& aTargetBuf,const TDesC& aSourceBuf);
+	TBool DocHasChanged() const;
+	//
+	// in WPLBOX.CPP
+	CDesCArray* BuildFontNameListLC() const;
+	CDesCArray* BuildStyleNameListLC() const;
+	CDesCArray* BuildAlignListLC(CArrayPtrFlat<CGulIcon>& aIcons) const;
+	TInt FindStyleName(CDesCArray* aStyleList) const;
+	TInt FindFontName(CDesCArray* aFontList) const;
+	TInt FindAlignmentL() const;
+	TInt NearestHeightIndex() const;
+	CDesCArray* UpdateHeightListLC();
+	void LaunchFontsPopupL();
+	void LaunchStylesPopupL();
+	void LaunchFontHeightsPopupL();
+	void LaunchBordersPopupL();
+	void LaunchAlignPopupL();
+	void DestroyPopoutLBox();
+	void DoCreatePopoutL(CDesCArray* aText,TInt aIndex,CEikCommandButtonBase* aLaunchingButton,TToolBarType aType,
+								TBool aLimitWidth);
+	void DoCreateBitmapPopoutL(CDesCArray* aText, CArrayPtrFlat<CGulIcon>* aIcons, TInt aIndex,
+							   CEikCommandButtonBase* aControl, TToolBarType aType);
+	void DoCreateMcBitmapPopoutL(CDesCArray* aText, CArrayPtrFlat<CGulIcon>* aBitmaps, TInt aIndex,
+								CEikCommandButtonBase* aLaunchingButton, TInt aColumnWidth, const TRect& aRect);
+
+private:
+//
+	CPrintSetup* iPrintSetup;
+	CWordModel* iModel;
+//
+	CWordTextEditor* iRichEd;
+	CArrayFixFlat<TInt>* iTwipsList;
+	CWordTextListBox* iPopoutListBox;
+	CEikColumnListBox* iBitmapPopout;
+	CWordSnakingColumnListBox* iMcBitmapPopout;
+	RTmParFormat::TAlignment iAlignment;
+	TBool iBorderPresent;
+	TZoomFactor iAppZoom;
+	TBullet* iBullet;
+	CWordToolBarUpdate* iToolBarUpdate;
+//
+	__MUTABLE HBufC8* iConfirmationText;  // Pre-allocated QueryWin title text- for reporting.
+	TPrintParameters iPrintParameters;	
+	TBool iPaginateDialogCalled;
+	TBool iPaginationOutOfDate;
+	TUint16 iWordFlags;
+	TUint16 iPicturePrefs;
+ 	TUint iBorderFlags;
+
+	CWordTest* iTest;			// test functions and data (GA)
+	};
+
+
+class TWordUiData
+/**
+@internalComponent
+*/
+	{
+public:
+	TWordUiData();
+	void Reset();
+	void InternalizeL(RReadStream& aStream);
+	void ExternalizeL(RWriteStream& aStream)const;
+public:
+	TUint16 iNpcVisibility;  // non-printing characters visibility
+	TUint16 iPicturePrefs;  // new objects as icon/glass
+	TBool iToolbandVisibility;
+	TBool iToolbarVisibility;
+	TInt iCursorPos;
+	TInt iZoomFactor;
+	TBool iWysiwygOn;
+	};
+
+
+class CWordToolBarUpdate : public CActive
+/**
+@internalComponent
+*/
+	{
+public:
+	enum TUpdateType
+		{
+		EFullUpdate,
+		ECharFormatUpdate
+		};
+public:
+	static CWordToolBarUpdate* NewL(CWordAppUi& aAppUi);
+	~CWordToolBarUpdate();
+	void RunL();
+	void Start(TUpdateType aUpdateType);
+private:													
+	CWordToolBarUpdate(CWordAppUi& aAppUi);
+	void DoCancel();
+private:													
+	CWordAppUi& iAppUi;
+	TInt iCount;
+	TUpdateType iUpdateType;
+public:
+	//
+	// Character format
+	TInt iFontHeightInTwips;
+	TFontStrokeWeight iStrokeWeight;
+	TFontPosture iPosture;
+	TBool iUnderline;
+	//
+	// Paragraph format
+	CParaFormat::TAlignment iAlignment;
+	TBool iBulletPresent;
+	TBool iBordersPresent;
+	};
+
+#include "WPAPPUI.INL"
+
+#endif