commands/fed/inc/textview.h
changeset 0 7f656887cf89
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/commands/fed/inc/textview.h	Wed Jun 23 15:52:26 2010 +0100
@@ -0,0 +1,81 @@
+// textview.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 TEXTVIEW_H_
+#define TEXTVIEW_H_
+
+#include <e32base.h>
+
+#include "viewbase.h"
+
+class CColorConsoleBase;
+class CFileBuffer;
+
+/*
+ Main parent class for all views able to show any texts on the screen using data read/written from/to the universal
+ memory buffer CFileBuffer (unicode, left-to-right, right-to-left, up-to-down), etc.
+*/
+class CTextView : public CFedViewBase
+{
+protected:
+	CTextView(MConsoleProvider& aConsoleProvider, CFedBufferBase& aBuffer, TInt aPriority = CActive::EPriorityStandard);
+	void ConstructL();
+	~CTextView();
+
+public:
+	//CActive
+	void DoCancel();
+	void RunL();
+	TInt RunError(TInt aError);
+
+	void ResizeL(const TWindow& aWindow);
+	void RedrawL(const TWindow& aWindow);
+	void DeactivateL();
+
+	//MSharedCacheClient
+	void InvalidateBuffer(TRequestStatus& aStatus);
+
+	CFedBufferBase& Buffer();
+
+protected:
+	void RequestData(TBool aFromTheTop, TInt aOffset);
+	void SeekData(TInt aDocumentPosition, TInt aNumLines);
+	virtual void UpdateCursor(const TPoint& aNewPos);
+	virtual void ValidateCursor();
+	void ShowCursor();
+	void HideCursor();
+	void HandleDataLoadError(TInt aError);
+
+protected:
+	virtual void DoResizeL(const TWindow& aOldWindow) = 0;
+	virtual void DoRedrawL() = 0;
+	virtual void DoDrawL() = 0;
+
+private:
+	enum TState
+		{
+		EStateNone,
+		EStateGetData,
+		} iState;
+
+	//member variables to use by inheriting classes
+protected:
+	CFedBufferBase& iBuffer;
+	TPtrC16 iDes;		// This is set to whatever cache block is currently active	
+	TBool iActive;		// Whether the view is active and can draw on the screen or not
+	TPoint iCursor;		// Current position of cursor on the screen (in window coords, NOT console coords)
+	TPoint iDrawPoint;	// Current position of drawing new characters on the screen (in console coordinates)
+	RBuf iLine;			// Temp buffer for chars to be drawn on the screen
+	TRange iRange;		// Document range of last fetched data (iDes)
+	TInt iRangeStartLineNumber; // Line number for the first character of iRange
+};
+
+#endif /*TEXTVIEW_H_*/