Revert " modify license, permission and remove ^M char"
[framework/osp/uifw.git] / src / ui / inc / FUiCtrl_EditPresenter.h
1 //
2 // Open Service Platform
3 // Copyright (c) 2012-2013 Samsung Electronics Co., Ltd.
4 //
5 // Licensed under the Flora License, Version 1.0 (the License);
6 // you may not use this file except in compliance with the License.
7 // You may obtain a copy of the License at
8 //
9 //     http://floralicense.org/license/
10 //
11 // Unless required by applicable law or agreed to in writing, software
12 // distributed under the License is distributed on an AS IS BASIS,
13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 // See the License for the specific language governing permissions and
15 // limitations under the License.
16 //
17 /**
18  * @file                FUiCtrl_EditPresenter.h
19  * @brief               This is the header file for the _EditPresenter class.
20  *
21  * This header file contains the declarations of the %_EditPresenter class.
22  */
23
24 #ifndef _FUI_CTRL_INTERNAL_EDIT_PRESENTER_H_
25 #define _FUI_CTRL_INTERNAL_EDIT_PRESENTER_H_
26
27 #include <FBaseCharacter.h>
28 #include <FBaseObject.h>
29 #include <FBaseString.h>
30 #include <FGrp_TextTextObject.h>
31 #include <FUiCtrlControlsTypes.h>
32 #include <FUiIInputConnectionEventListener.h>
33 #include "FUi_Clipboard.h"
34 #include "FUi_IClipboardPopupEventListener.h"
35 #include "FUi_InputConnectionImpl.h"
36 #include "FUi_UiTouchEvent.h"
37 #include "FUiCtrl_Edit.h"
38 #include "FUiCtrl_EditModel.h"
39 #include "FUiCtrl_IFrameEventListener.h"
40 #include "FUiCtrl_IEditCopyPasteEventListener.h"
41 #include "FUiCtrl_Keypad.h"
42 #include "FUiCtrl_Toolbar.h"
43
44 namespace Tizen { namespace Ui { namespace Controls
45 {
46 const int EDIT_SCROLLFRAME_MAX = 5;
47 const int EDIT_PASSWORD_BUFFER_MAX = 1024;
48 const int SCROLL_STYLE_VERTICAL = 2;
49 const int ANIMATION_DURATION = 333;
50
51 enum _EditFooterVisibleStatus
52 {
53         EDIT_FOOTER_VISIBLE_STATUS_NONE = 0,
54         EDIT_FOOTER_VISIBLE_STATUS_SHOW,
55         EDIT_FOOTER_VISIBLE_STATUS_HIDE
56 };
57
58 enum _EditTextStatus
59 {
60         EDIT_TEXT_STATUS_COMPOSE_NON = 0,
61         EDIT_TEXT_STATUS_COMPOSE
62 };
63
64 enum _EditTextType
65 {
66         EDIT_TEXT_TYPE_INPUT = 0,
67         EDIT_TEXT_TYPE_GUIDE,
68         EDIT_TEXT_TYPE_TITLE
69 };
70
71 enum _EditFontChange
72 {
73         EDIT_FONT_CHANGE_CONTENT = 0,
74         EDIT_FONT_CHANGE_TITLE,
75         EDIT_FONT_CHANGE_ALL
76 };
77
78 struct _EditScrollEffectInfo
79 {
80         float previousY;
81         float currentY;
82         float effectGap;
83         int effectFrame;
84         int touchScrollFrameLevel[EDIT_SCROLLFRAME_MAX];
85 };
86
87 class _Form;
88 class _EditCopyPasteManager;
89 class _FlickAnimation;
90 class _Frame;
91 class _Scroll;
92 class _ScrollPanel;
93
94 class _EditAnimationProvider
95         : public Tizen::Ui::Animations::VisualElementAnimationProvider
96 {
97 public:
98         _EditAnimationProvider(void);
99
100         virtual ~_EditAnimationProvider(void);
101
102         virtual Tizen::Ui::Animations::VisualElementAnimation* CreateAnimationForProperty(Tizen::Ui::Animations::VisualElement& source, const Tizen::Base::String& property);
103 }; // _EditAnimationProvider
104
105
106 class _EditPresenter
107         : public Tizen::Base::Object
108         , virtual public Tizen::Base::Runtime::IEventListener
109         , public IInputConnectionEventListener
110         , public IInputConnectionProvider
111         , public Tizen::Base::Runtime::ITimerEventListener
112         , public _IEditCopyPasteEventListener
113         , public _IClipboardPopupEventListener
114         , virtual public _IFrameEventListener
115         , public Tizen::Ui::Controls::IEditTextFilter
116 {
117 public:
118         _EditPresenter(void);
119         virtual ~_EditPresenter(void);
120
121         static _EditPresenter* CreateInstanceN(void);
122         virtual result Initialize(const _Control& control);
123         result AddActionEventListener(const _IActionEventListener& listener);
124         result RemoveActionEventListener(const _IActionEventListener& listener);
125         virtual bool OnLongPressGestureDetected(void);
126         virtual bool OnTapGestureDetected(void);
127         virtual void OnTimerExpired(Tizen::Base::Runtime::Timer& timer);
128         virtual bool OnTouchMoved(const _Control& source, const _TouchInfo& touchinfo);
129         virtual bool OnTouchPressed(const _Control& source, const _TouchInfo& touchinfo);
130         virtual bool OnTouchCanceled(const _Control& source, const _TouchInfo& touchinfo);
131         virtual bool OnTouchReleased(const _Control& source, const _TouchInfo& touchinfo);
132         virtual bool OnKeyPressed(const _Control& source, const _KeyInfo& keyInfo);
133         virtual bool OnKeyReleased(const _Control& source, const _KeyInfo& keyInfo);
134
135         virtual void OnClipboardPopupClosed(const ClipboardItem* pClipboardItem);
136         virtual result SetInitialBounds(void);
137         virtual result Draw(Tizen::Graphics::Canvas& canvas);
138         virtual result DrawCursor(Tizen::Graphics::Canvas& canvas, Tizen::Graphics::Rectangle& cursorRect, bool isCursorOpaque);
139         virtual result DrawCursor(Tizen::Graphics::Canvas& canvas, Tizen::Graphics::FloatRectangle& cursorRect, bool isCursorOpaque);
140         virtual result DrawScrollBar(void);
141         virtual bool OnFocusGained(void);
142         virtual bool OnFocusLost(void);
143
144         virtual bool OnNotifiedN(Tizen::Base::Collection::IList* pArgs);
145         virtual void OnFrameActivated(const Tizen::Ui::Controls::_Frame& source);
146         virtual void OnFrameDeactivated(const Tizen::Ui::Controls::_Frame& source);
147         virtual void OnFrameMinimized(const Tizen::Ui::Controls::_Frame& source);
148         virtual void OnFrameRestored(const Tizen::Ui::Controls::_Frame& source);
149
150         virtual result SetLineSpacing(int linePixelGap);
151         virtual result SetLineSpacing(float linePixelGap);
152         virtual int GetLineSpacing(void) const;
153         virtual float GetLineSpacingF(void) const;
154
155         void OnScrollPanelBoundsChanged(void);
156
157         void OnFontInfoRequested(unsigned long& style, float& size);
158         void OnFontChanged(Tizen::Graphics::Font* pFont);
159
160         result SetAutoLinkMask(unsigned long autoLinks);
161         result SetAutoResizingEnabled(bool enable);
162         result SetBlockRange(int start, int end);
163         result SetCurrentInputModeCategory(EditInputModeCategory inputModeCategory);
164         result SetCurrentLanguage(Tizen::Locales::LanguageCode languageCode);
165         result SetCursorPosition(int position);
166         void SetClientBounds(void);
167         result SetEllipsisPosition(EllipsisPosition position);
168         virtual result SetFlexBounds(const Tizen::Graphics::Rectangle& bounds);
169         virtual result SetFlexBounds(const Tizen::Graphics::FloatRectangle& bounds);
170         virtual result SetTextSize(const int size);
171         virtual result SetTextSize(const float size);
172         result SetFont(const Tizen::Graphics::Font& font);
173         result AdjustFont(Tizen::Graphics::Font& font, _EditFontChange fontChange = EDIT_FONT_CHANGE_CONTENT);
174         result SetFontType(const Tizen::Base::String& typefaceName, unsigned long styleMask);
175         result SetTextStyle(unsigned long style);
176         result SetGuideText(const Tizen::Base::String& guideText);
177         result SetInputModeCategory(unsigned long categories, bool enable);
178         result SetInputModePanelCategory(unsigned long panelCategory);
179         result SetKeypadActionEnabled(bool enable);
180         result SetKeypadAction(CoreKeypadAction keypadAction);
181         void SetKeypadEnabled(bool enable);
182         result SetKeypadStyle(KeypadStyle keypadStyle);
183         result SetKeypadNormalNumberStyle(bool enable);
184         result SetTextPredictionEnabled(bool enable);
185         result SetTextLimitLength(int limitLength);
186         void SetLowerCaseModeEnabled(bool enable);
187         void SetMaxLineCount(int maxLineCount);
188         result SetKeypadCommandButton(CommandButtonPosition position, const Tizen::Base::String& text, int actionId);
189         _Toolbar* GetKeypadCommandButton(void) const;
190         result SetKeypadCommandButtonVisible(bool visible);
191         bool SetKeypadBounds(const Tizen::Graphics::Rectangle& bounds);
192         bool SetKeypadBounds(const Tizen::Graphics::FloatRectangle& bounds);
193         result SetText(const Tizen::Base::String& text);
194         result SetTextAlignment(HorizontalAlignment alignment);
195         result SetTextBounds(Tizen::Graphics::Rectangle& bounds);
196         result SetTextBounds(Tizen::Graphics::FloatRectangle& bounds);
197         result SetTitleText(const Tizen::Base::String& title);
198         result SetViewModeEnabled(bool enable);
199         unsigned long GetAutoLinkMask(void) const;
200         void GetBlockRange(int& start, int& end) const;
201         EditInputModeCategory GetCurrentInputModeCategory(void) const;
202         result GetCurrentLanguage(Tizen::Locales::LanguageCode& language) const;
203         void GetCurrentTextRange(int& start, int& end) const;
204         int GetCursorPositionAt(const Tizen::Graphics::Point& touchPoint) const;
205         int GetCursorPositionAt(const Tizen::Graphics::FloatPoint& touchPoint) const;
206         virtual bool IsTextBlockedInTokenEdit(void) const;
207         int GetCursorPosition(void) const;
208         result GetCursorBounds(bool isAbsRect, Tizen::Graphics::Rectangle& cursorBounds);
209         result GetCursorBounds(bool isAbsRect, Tizen::Graphics::FloatRectangle& cursorBounds);
210         EllipsisPosition GetEllipsisPosition(void) const;
211         Tizen::Graphics::Font* GetFont(void) const;
212         Tizen::Graphics::Font* CopyFontN(const Tizen::Graphics::Font* pFont);
213         Tizen::Graphics::Font* CreateFontN(const Tizen::Graphics::Font* pFont, unsigned long styleMask);
214         Tizen::Graphics::Font* CreateFontN(const Tizen::Graphics::Font* pFont, unsigned long newStyle, int newSize);
215         Tizen::Graphics::Font* CreateFontN(const Tizen::Graphics::Font* pSrcFaceFont, const Tizen::Graphics::Font* pSrcStyleFont);
216         unsigned int GetFontStyle(const Tizen::Graphics::Font* pBaseFont) const;
217         result GetFontType(Tizen::Base::String& typefaceName, unsigned long& styleMask) const;
218         Tizen::Base::String GetTitleFontFaceName(void);
219         unsigned long GetTextStyle(void) const;
220         Tizen::Base::String GetGuideText(void) const;
221         int GetTextSize(void) const;
222         float GetTextSizeF(void) const;
223         unsigned long GetInputModeCategory(void) const;
224         CoreKeypadAction GetKeypadAction(void) const;
225         result GetKeypadBounds(Tizen::Graphics::Rectangle& bounds) const;
226         result GetKeypadBounds(Tizen::Graphics::FloatRectangle& bounds) const;
227         float GetClipboardHeight(void) const;
228         bool CheckKeypadExist(_ControlOrientation orientation);
229         KeypadStyle GetKeypadStyle(void) const;
230         int GetTextLimitLength(void) const;
231         int GetMaxLineCount(void) const;
232         int GetKeypadCommandButtonActionId(CommandButtonPosition position) const;
233         Tizen::Base::String GetKeypadCommandButtonText(CommandButtonPosition position) const;
234         _Form* GetParentForm(void);
235         _ScrollPanel* GetParentPanel(void) const;
236         int GetRemainingLength(void) const;
237         Tizen::Base::String GetText(void) const;
238         Tizen::Base::String GetText(int start, int end) const;
239         HorizontalAlignment GetTextAlignment(void) const;
240         int GetTextLength(void) const;
241         int GetTextLineCount(void) const;
242         int GetTextTotalHeight(void) const;
243         float GetTextTotalHeightF(void) const;
244         Tizen::Base::String GetTitleText(void) const;
245         void GetWordPosition(int cursorPos, int& startPos, int& endPos) const;
246         result GetTextImageRangeAt(int postion, int& startPosition, int& endPosition) const;
247         bool IsAutoResizingEnabled(void) const;
248         bool IsBlocked(void) const;
249         bool IsClipped(void) const;
250         bool IsFocused(void) const;
251         bool IsInternalFocused(void) const;
252         bool IsKeypadActionEnabled(void) ;
253         bool IsKeypadEnabled(void) ;
254         bool IsLowerCaseModeEnabled(void) const;
255         bool IsKeypadCommandButtonVisible(void) const;
256         bool IsViewModeEnabled(void) const;
257         bool IsTextPredictionEnabled(void) const;
258         bool IsKeypadExist(void) const;
259         bool IsClipboardExist(void) const;
260         void CheckUSBKeyboardStatus(void);
261         bool IsUsbKeyboardConnected(void) const;
262
263         result AppendCharacter(const Tizen::Base::Character& character);
264         result AppendText(const Tizen::Base::String& text);
265         result BeginTextBlock(void);
266         result CalculateAbsoluteCursorBounds(int index, Tizen::Graphics::Rectangle& absCursorBounds);
267         result CalculateAbsoluteCursorBounds(int index, Tizen::Graphics::FloatRectangle& absCursorBounds);
268         virtual result ChangeLayout(_ControlOrientation orientation);
269         result ClearText(void);
270         result CopyText(void);
271         virtual result CutText(void);
272         result DeleteCharacterAt(int index);
273         result DeleteCharacterAtCursorPosition(void);
274         result DeleteText(int start, int end);
275         void SetCursorDisabled(bool disabled);
276         result HideKeypad(bool focus = false);
277         void ChangeKeypadStatus(void);
278         result InsertCharacterAt(int index, const Tizen::Base::Character& character);
279         result InsertTextAt(int index, const Tizen::Base::String& text);
280         result InsertTextAt(int position, const Tizen::Base::String& text, const Tizen::Graphics::Bitmap& textImage);
281         result InsertTextAtCursorPosition(const Tizen::Base::String& text);
282         result PasteText(void);
283         result ReleaseTextBlock(void);
284         result RemoveTextBlock(void);
285         result Resize(void);
286         result ShowKeypad(bool focus = true);
287         result StartFlickAnimation(const Tizen::Graphics::FloatPoint& flickPosition, int flickTime);
288         Tizen::Graphics::Rectangle GetTextAreaBounds(void) const;
289         Tizen::Graphics::FloatRectangle GetTextAreaBoundsF(void) const;
290         Tizen::Graphics::Rectangle GetTitleBounds(void) const;
291         Tizen::Graphics::FloatRectangle GetTitleBoundsF(void) const;
292         Tizen::Graphics::Rectangle GetClearIconBounds(void) const;
293         Tizen::Graphics::FloatRectangle GetClearIconBoundsF(void) const;
294         void FinishTextComposition(void);
295         void InitializeCopyPasteManager(void);
296         bool IsCopyPasteManagerExist(void) const;
297         bool GetTextCompositionState(void) const;
298         bool IsCopyPastePopup(const _Control& control) const;
299         bool IsCopyPasteHandle(const _Control& control) const;
300         Tizen::Graphics::_Text::TextObject* GetTextObject(void) const;
301         EditStatus GetCurrentStatus(void) const;
302         result ScrollContents(int moveY);
303         result ScrollContents(float moveY);
304         virtual void DrawText(void);
305         virtual bool IsGuideTextActivated(void) const;
306         result UpdateComponentInformation(void);
307         void SetCursorChangedFlag(bool enabled);
308         bool GetCursorChangedFlag(void) const;
309         void SetAutoShrinkModeEnabled(bool enable);
310         bool IsAutoShrinkModeEnabled(void) const;
311         void SetEditGroupStyle(GroupStyle groupStyle);
312         void ScrollPanelToCursorPosition(bool show = true);
313         void SetSearchBarFlag(bool enabled);
314         bool GetSearchBarFlag(void) const;
315         void PostInternalEvent(const Tizen::Base::String& type);
316         void ReleaseCopyPastePopup(void);
317         bool IsCopyPastePopupExist(void) const;
318         bool IsCopyPasteHandleExist(void) const;
319         void DeleteFullscreenKeypad(void);
320         void SetBlockRangeWithShiftArrowkey(_KeyCode keyCode);
321         void SetEditTextFilter(_IEditTextFilter* pFilter);
322         virtual bool ValidatePastedText(const Tizen::Base::String& pastedText, Tizen::Base::String& replacedText);
323         void SendOpaqueCommand (const Tizen::Base::String& command);
324         Tizen::Ui::Animations::_VisualElement* GetTextVisualElement(void);
325         bool IsBounded(void) const;
326         void SetControlInitialBounds(Tizen::Graphics::FloatRectangle initBounds);
327         bool IsUpdateInitialBounds(void);
328         virtual Tizen::Graphics::Rectangle GetTextBounds(void) const;
329         virtual Tizen::Graphics::FloatRectangle GetTextBoundsF(void) const;
330         result InitializeCursor(void);
331         result CalculateCursorBounds(const Tizen::Graphics::Rectangle& textBounds, Tizen::Graphics::Rectangle& cursorBounds, int curPos = -1);
332         result CalculateCursorBounds(const Tizen::Graphics::FloatRectangle& textBounds, Tizen::Graphics::FloatRectangle& cursorBounds, int curPos = -1);
333         virtual void ResetTextBounds(void){}
334
335 protected:
336         void StopTitleSlidingTimer(void);
337         result StartTitleSlidingTimer(void);
338         virtual void OnInputConnectionTextCommitted(InputConnection& source, const Tizen::Base::String& committedText);
339         virtual void DeleteSurroundingText(InputConnection& source, int offset, int chars);
340         virtual void OnTextCommitted(const Tizen::Base::String& commitText);
341         virtual void OnSurroundingTextDeleted(int offset, int charCount);
342         result InitializeAtFirstDrawing(void);
343         Tizen::Ui::Animations::_VisualElement* GetCursorVisualElement(void) const;
344         result DrawBackground(Tizen::Graphics::Canvas& canvas, bool drawTitleText = true);
345         result DrawText(Tizen::Graphics::Canvas& canvas);
346         bool IsInitialized(void) const;
347         void StopCursorTimer(void);
348         result StartCursorTimer(void);
349         virtual void OnCursorTimerExpired(void);
350         virtual result SetModel(const _EditModel& editModel);
351         virtual int CalculateFlexibleHeight(void);
352         virtual float CalculateFlexibleHeightF(void);
353         void SetCursorEnabled(bool enable);
354         bool IsCursorEnabled(void) const;
355         void SetScrollBarVisible(bool enable);
356         void SetScrollBarBounds(const Tizen::Graphics::Rectangle& bounds);
357         void SetScrollBarBounds(const Tizen::Graphics::FloatRectangle& bounds);
358         Tizen::Graphics::Rectangle GetDisplayScrollBounds(void) const;
359         Tizen::Graphics::FloatRectangle GetDisplayScrollBoundsF(void) const;
360         Tizen::Graphics::Rectangle GetInitialBounds(void) const;
361         Tizen::Graphics::FloatRectangle GetInitialBoundsF(void) const;  
362         void SetPreviousScrollBarPosition(int position);
363         void SetPreviousScrollBarPosition(float position);
364         int GetPreviousScrollPosition(void) const;
365         float GetPreviousScrollPositionF(void) const;
366         void SetMaximumPreviousScrollBarPosition(int position);
367         void SetMaximumPreviousScrollBarPosition(float position);
368         _Scroll* GetScrollBar(void) const;
369         _Edit* GetEditView(void) const;
370         bool AdjustRTLTextAlignment(const _EditTextType textType);
371
372 private:
373         virtual void OnEditCopyPasteStatusChanged(CoreCopyPasteStatus status, CoreCopyPasteAction action);
374         virtual void OnInputConnectionPanelShowStateChanged(InputConnection& source, InputPanelShowState showState);
375         virtual void OnInputConnectionPanelLanguageChanged(InputConnection& source, Tizen::Locales::LanguageCode language);
376         virtual void OnInputConnectionPanelBoundsChanged(InputConnection& source, const Tizen::Graphics::Rectangle& bounds);
377         virtual void OnInputConnectionTextPredictionShowStateChanged(InputConnection& source, bool isShown);
378         virtual void OnInputConnectionTextPredictionBoundsChanged(InputConnection& source, const Tizen::Graphics::Rectangle& bounds);
379         virtual void OnInputConnectionComposingTextChanged(InputConnection& source, const Tizen::Base::String& composingText, int cursorPosition);
380         virtual void OnClipboardPopupOpened(Tizen::Graphics::Dimension& clipboardPopupSize);
381         virtual void OnClipboardPopupBoundsChanged(Tizen::Graphics::Dimension& clipboardPopupSize);
382         virtual void OnClipboardPopupClosed(void);
383         virtual void GetPreviousText(InputConnection& source, Tizen::Base::String& text, int& cursorPosition);
384         void OnComposingTextChanged(const Tizen::Base::String& preeditText, int cursorPosition);
385         void OnKeypadStateChanged(void *data, InputPanelShowState showState);
386         void OnLanguageStateChanged(void* data, Tizen::Locales::LanguageCode newLanguageCode);
387         result InitializeFlickAnimation(void);
388         void InitializeParentPanel(void);
389         result InitializeEditFieldClientRect(void);
390         result SetInitialEditFieldBounds(void);
391         virtual result AdjustFlexibleHeight(void);
392         result SetKeypadCommandButton(const Tizen::Graphics::FloatRectangle& bounds);
393         result SetTitleTextSlidingAction(Tizen::Graphics::_Text::TextObjectActionType action);
394         result SetWrap(Tizen::Graphics::_Text::TextObjectWrapType wrapMode);
395         bool IsContained(Tizen::Graphics::FloatRectangle& paramRect) const;
396         float CalculateMaximumFlexibleHeight(void);
397         result ChangePasswordToEchoCharacter(int cursorPos, int textLength);
398         result ConvertLinkType(void);
399         int GetLinkElementOffsetInTextBuffer(int elementIndex) const;
400         // todo : move to DrawBackground
401         result DrawBackgroundBitmap(Tizen::Graphics::Canvas& canvas, bool focused);
402         result DrawChangeableBackground(Tizen::Graphics::Canvas& canvas, bool focused, int bitmapId, int effectBitmapId, bool outLine = false, int outlineBitmapId = 0);
403         result DrawClearIcon(Tizen::Graphics::Canvas& canvas);
404         // todo : move to DrawBackground
405         result DrawSingleLineBackground(Tizen::Graphics::Canvas& canvas, bool drawTitleText);
406         // todo : move to DrawBackgroundBitmap
407         result DrawSingleLineBackgroundBitmap(Tizen::Graphics::Canvas& canvas, bool focused);
408         // todo : move to DrawText
409         result DrawTextForEntireFontSetting(Tizen::Graphics::Canvas& canvas);
410         result DrawTitleText(void);
411         result MoveCursor(const Tizen::Graphics::FloatRectangle& fromRect, const Tizen::Graphics::FloatRectangle& toRect);
412         bool IsHorizontalDirection(const _TouchInfo& touchInfo);
413         result ScrollContentsOnFlick(void);
414         result ChangePasswordToEchoCharacter(wchar_t* dspStrBuffer, wchar_t echoChar);
415         // todo : move to PastePasswordEchoCharacter
416         result ReplaceTextIntoPasswordHyphenString(void);
417         // todo : delete, do not use
418         result SetFocused(void);
419         void ScrollText(float distance);
420         void FadeOutScrollBar(void);
421         // todo : move to OperateFlickScrollEffect
422         bool ScrollOnFlick(float moveDistanceY);
423         result StartFlickTimer(int flickVelocityX, int flickVelocityY);
424         void StopFlickTimer(void);
425         void StopPasswordTimer(void);
426         result StartPasswordTimer(void);
427         result OnPasswordTimerExpired(void);
428         result OnTitleSlidingTimerExpired(void);
429         result OnFlickTimerExpired(void);
430         bool IsDelimiter(wchar_t character) const;
431         void AdjustParentPanelHeight(bool restore, bool panelResizeByPrediction = false);
432         result ChangeLayoutInternal(_ControlOrientation orientation, bool deflateForm = true);
433         _Button* CreateCommandButtonItemN(int actionId, const Tizen::Base::String& text);
434         void CheckInitialFooterVisibleState(void);
435         void SetFooterVisible(bool isVisible);
436         result ShowFullscreenKeypad(void);
437         InputPanelAction ConvertKeypadAction(CoreKeypadAction keypadAction);
438         void ScrollPanelToTop(bool show);
439         bool IsUnsupportedChracterExist(const KeypadStyle keypadStyle, const Tizen::Base::String& text);
440         result Dispose(void);
441
442         _EditPresenter(const _EditPresenter&);
443         _EditPresenter& operator =(const _EditPresenter&);
444
445 protected:
446         Tizen::Base::Runtime::Timer* __pTitleSlidingTimer;
447
448 private:
449         _Edit* __pEdit;
450         wchar_t* __pTextBuffer;
451         Tizen::Base::String* __pTextString;
452         _EditModel* __pEditModel;
453         _Scroll* __pScrollBar;
454         // todo : check to be needed
455         _EditScrollEffectInfo* __pScrollEffect;
456         int __limitLength;
457         HorizontalAlignment __horizontalAlignment;
458         HorizontalAlignment __horizontalAlignmentForBidi;
459         bool __isScrollBarVisible;
460         Tizen::Graphics::FloatRectangle __scrollBarBounds;
461         Tizen::Graphics::FloatRectangle __initialBounds;
462         float __previousScrollBarPos;        // First save prev scroll and if scroll pos is changed then draw scroll
463         float __previousScrollBarMaxPos;     // When scroll max value is changed then draw scroll
464
465         _IActionEventListener* __pActionEventListener;
466
467         Tizen::Base::Runtime::Timer* __pCursorTimer;
468         Tizen::Base::Runtime::Timer* __pFlickAnimationTimer;
469         Tizen::Base::Runtime::Timer* __pPasswordTimer;
470
471         Tizen::Graphics::Font* __pFont;
472
473         Tizen::Ui::Animations::_VisualElement* __pCursorVisualElement;
474         Tizen::Ui::Animations::_VisualElement* __pTextVisualElement;
475         Tizen::Ui::Animations::_VisualElement* __pTitleTextVisualElement;
476
477         _EditCopyPasteManager* __pCopyPasteManager;
478         _FlickAnimation* __pFlickAnimation;
479         _Form* __pParentForm;
480         _Keypad* __pFullscreenKeypad;
481         _ScrollPanel* __pParentPanel;
482         _Toolbar* __pCommandButton;
483
484         _InputConnectionImpl* __pInputConnection;
485         bool __isInputConnectionBound;
486
487         _Clipboard* __pClipboard;
488
489         Tizen::Base::String __guideText;
490         Tizen::Base::String __titleText;
491
492         Tizen::Graphics::FloatPoint __pressedPoint;
493         bool __isCopyPastePopupMoving;
494         Tizen::Graphics::FloatPoint __pressedAbsolutePoint;
495
496         Tizen::Graphics::FloatRectangle __clearIconBounds;
497         Tizen::Graphics::FloatRectangle __textBoxBounds;
498         Tizen::Graphics::FloatRectangle __textObjectBounds;
499         Tizen::Graphics::FloatRectangle __titleBounds;
500         Tizen::Graphics::FloatRectangle __clientBounds;
501         Tizen::Graphics::FloatRectangle __previousCursorBounds;
502         Tizen::Graphics::FloatRectangle __keypadBounds;
503
504         Tizen::Graphics::_Text::TextObject* __pTextObject;
505         Tizen::Graphics::_Text::TextObject* __pGuideTextObject;
506         Tizen::Graphics::_Text::TextObject* __pTitleTextObject;
507         Tizen::Graphics::_Text::TextObjectActionType __titleSlidingAction;
508         Tizen::Graphics::_Text::TextObjectWrapType  __textObjectWrap;
509
510         bool __isTextBlocked;
511         bool __isGuideTextColorChanged;
512         bool __isKeypadCommandButtonVisible;
513         bool __isTextComposing;
514         bool __isCopyPasteManagerExist;
515         bool __isCursorChanged;
516         bool __isCursorInitialized;
517         bool __isCursorDisabled;
518         // todo : check InitAtFirstDrawing
519         bool __isInitialized;
520         // todo : check
521         bool __isMovingCursorByTouchMove;
522         bool __isTouchMoving;
523         bool __isTouchPressed;
524         bool __isClearIconPressed;
525         bool __isCursorOpaque;
526         bool __isTouchReleaseSkipped;
527         bool __isViewerModeEnabled;
528         bool __isKeypadNormalNumberStyleEnabled;
529         bool __isTextCompositionFinished;
530         bool __isFlexibleHeightFrozen;
531         bool __isKeypadShowing;
532         bool __isKeypadHiding;
533
534         int __blockStartPos;
535         int __cursorPos;
536         float __prevTotalTextHeight;
537         int __textLength;
538         int __composingTextLength;
539         float __titleWidth;
540         float __verticalMargin;
541         bool __isUSBKeyboardConnected;
542         bool __rotated;
543         bool __isCutLinkParserEnabled;
544
545         static bool __isKeypadExist;
546         static bool __isClipboardExist;
547         static float __initialParentHeight;
548         static float __clipboardHeight;
549         static _EditFooterVisibleStatus __initialFooterVisibleStatus;
550
551         wchar_t __echoChar;
552
553         _EditTextStatus __ContentTextStatus;
554
555         _EditAnimationProvider* __pEditVEDelegator;
556
557         bool __isAutoShrinkEnabled;
558
559         GroupStyle __groupStyle;
560
561         bool __isFontInitialized;
562         float __contentFontSize;
563         float __titleFontSize;
564         unsigned long __contentFontStyle;
565         unsigned long __contentTextStyle;
566         Tizen::Base::String __titleFontFaceName;
567         bool __isSearchBar;
568         _Frame* __pCurrentFrame;
569         _IEditTextFilter* __pTextFilter;
570         bool __textBlockMoveLeft;
571         bool __textBlockMoving;
572         bool __clipboardConnected;
573         bool __updateInitialBounds;
574         Tizen::Graphics::Color __blockTextColor;
575 }; // _EditPresenter
576
577 }}} // Tizen::Ui::Controls
578
579 #endif  // _FUI_CTRL_INTERNAL_EDIT_PRESENTER_H_