#include "FUiCtrl_ButtonModel.h"
using namespace Tizen::Base;
+using namespace Tizen::Base::Runtime;
using namespace Tizen::Graphics;
using namespace Tizen::Graphics::_Text;
using namespace Tizen::App;
, __pBase(null)
, __fontStyle(0)
, __fontSize(0.0f)
- , __focusPrevStatus(_BUTTON_STATUS_NORMAL)
+ , __pTextSlideTimer(null)
+ , __textRect(FloatRectangle(0.0f, 0.0f, 0.0f, 0.0f))
+ , __pTabLargeSelectedBitmap(null)
{
}
delete __pTextObject;
__pTextObject = null;
}
+
+ if (__pTextSlideTimer)
+ {
+ delete __pTextSlideTimer;
+ __pTextSlideTimer = null;
+ }
+
+ if (__pTabLargeSelectedBitmap)
+ {
+ delete __pTabLargeSelectedBitmap;
+ __pTabLargeSelectedBitmap = null;
+ }
}
result
void
_ButtonPresenter::DrawToolbarItemBackground(void)
{
+ Canvas* pCanvas = __pButton->GetCanvasN();
+
+ if (pCanvas == null)
+ {
+ SysLog(NID_UI_CTRL, "Cannot get a canvas.");
+ return;
+ }
+
+ pCanvas->SetBackgroundColor(Color(0, 0, 0, 0));
+ pCanvas->Clear();
+
float leftTouchMargin = __pButton->GetLeftTouchMarginF();
float topTouchMargin = __pButton->GetTopTouchMarginF();
float rightTouchMargin = __pButton->GetRightTouchMarginF();
if (pToolbarItemBackgroundBitmap)
{
- Canvas* pCanvas = __pButton->GetCanvasN();
-
- if (pCanvas == null)
- {
- SysLog(NID_UI_CTRL, "Cannot get a canvas.");
- return;
- }
-
- pCanvas->SetBackgroundColor(Color(0, 0, 0, 0));
- pCanvas->Clear();
-
FloatRectangle bounds(leftTouchMargin, topTouchMargin, __pButton->GetBoundsF().width - (leftTouchMargin + rightTouchMargin),
__pButton->GetBoundsF().height - (topTouchMargin + bottomTouchMargin));
pCanvas->DrawBitmap(bounds, *pToolbarItemBackgroundBitmap,
FloatRectangle(0.0f, 0.0f, pToolbarItemBackgroundBitmap->GetWidthF(), pToolbarItemBackgroundBitmap->GetHeightF()));
}
+ }
- delete pCanvas;
+ if (__pTabLargeSelectedBitmap)
+ {
+ delete __pTabLargeSelectedBitmap;
+ __pTabLargeSelectedBitmap = null;
}
+ __pTabLargeSelectedBitmap = new (std::nothrow) Bitmap();
+
+ if (__pButton->UserDefinedText())
+ {
+ __pTabLargeSelectedBitmap->Construct(*pCanvas, __pButton->GetUserDefinedTextAreaF());
+ }
+ else
+ {
+ __pTabLargeSelectedBitmap->Construct(*pCanvas, __textRect);
+ }
+
+ delete pCanvas;
+
return;
}
void
_ButtonPresenter::DrawText(void)
{
+ TimerForTitleSlideInit();
//TextSimple* pSimpleText = null;
TextObjectAlignment horizontalAlign = TEXT_OBJECT_ALIGNMENT_CENTER;
TextObjectAlignment verticalAlign = TEXT_OBJECT_ALIGNMENT_MIDDLE;
//pSimpleText = new (std::nothrow) TextSimple(const_cast<wchar_t*>(__pButton->GetText().GetPointer()), __pButton->GetText().GetLength());
//__pTextObject->AppendElement(*pSimpleText);
+ __textRect = FloatRectangle(leftMargin + leftTouchMargin, topMargin + topTouchMargin,
+ __pButton->GetBoundsF().width - (leftMargin + rightMargin) - (leftTouchMargin + rightTouchMargin),
+ __pButton->GetBoundsF().height - (topMargin + bottomMargin) - (topTouchMargin + bottomTouchMargin));
+
if (__pButton->UserDefinedText())
{
__pTextObject->SetBounds(__pButton->GetUserDefinedTextAreaF());
}
else
{
- __pTextObject->SetBounds(FloatRectangle(leftMargin + leftTouchMargin, topMargin + topTouchMargin,
- __pButton->GetBoundsF().width - (leftMargin + rightMargin) - (leftTouchMargin + rightTouchMargin),
- __pButton->GetBoundsF().height - (topMargin + bottomMargin) - (topTouchMargin + bottomTouchMargin)));
+ __pTextObject->SetBounds(__textRect);
}
+
__pTextObject->SetAlignment(horizontalAlign | verticalAlign);
+ if (__pButton->GetButtonStatus() == _BUTTON_STATUS_SELECTED && __pButton->IsTabTextSlide())
+ {
+ __pTextObject->SetAction(TEXT_OBJECT_ACTION_TYPE_SLIDE_LEFT);
+ }
+ else
+ {
+ __pTextObject->SetAction(TEXT_OBJECT_ACTION_TYPE_ABBREV);
+ }
+
__pTextObject->SetFont(__pFont, 0, __pTextObject->GetTextLength());
__pTextObject->Compose();
}
__pTextObject->SetForegroundColor(__pButton->GetTextColor(__pButton->GetButtonStatus()), 0, __pTextObject->GetTextLength());
- __pTextObject->Draw(*_CanvasImpl::GetInstance(*pCanvas));
+
+ if (__pTextObject->IsActionOn() == true)
+ {
+ __pTextObject->DrawWithOffset(*_CanvasImpl::GetInstance(*pCanvas));
+
+ TimerForTitleSlideStart();
+ }
+ else
+ {
+ __pTextObject->Draw(*_CanvasImpl::GetInstance(*pCanvas));
+ }
+
delete pCanvas;
{
if (__pButton->IsFocusModeStateEnabled() == false)
{
- __focusPrevStatus = __pButton->GetButtonStatus();
__pButton->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED, false);
__pButton->Invalidate();
}
void
_ButtonPresenter::OnFocusModeStateChanged(void)
{
- __pButton->SetButtonStatus(__focusPrevStatus);
+ __pButton->SetButtonStatus(_BUTTON_STATUS_NORMAL);
__pButton->Invalidate();
return;
{
if (__pButton->IsFocusModeStateEnabled() == true)
{
- __focusPrevStatus = __pButton->GetButtonStatus();
__pButton->SetButtonStatus(_BUTTON_STATUS_HIGHLIGHTED, false);
__pButton->Invalidate();
}
bool
_ButtonPresenter::OnFocusLost(const _Control& source)
{
- __pButton->SetButtonStatus(__focusPrevStatus);
+ __pButton->SetButtonStatus(_BUTTON_STATUS_NORMAL);
__pButton->Invalidate();
return true;
return E_SUCCESS;
}
+void
+_ButtonPresenter::OnTimerExpired(Timer& timer)
+{
+ Timer* onTimer = &timer;
+
+ if (onTimer == __pTextSlideTimer)
+ {
+ TimerForTitleSlideTimeout();
+ }
+
+ return;
+}
+
+result
+_ButtonPresenter::TimerForTitleSlideInit(void)
+{
+ result r = E_SUCCESS;
+
+ if (__pTextSlideTimer != null)
+ {
+ delete __pTextSlideTimer;
+ __pTextSlideTimer = null;
+ }
+
+ return r;
+}
+
+result
+_ButtonPresenter::TimerForTitleSlideStart(void)
+{
+ result r = E_SUCCESS;
+
+ if (__pTextSlideTimer == null)
+ {
+ __pTextSlideTimer = new (std::nothrow) Timer();
+ if (__pTextSlideTimer == null)
+ {
+ r = E_OUT_OF_MEMORY;
+ goto CATCH;
+ }
+
+ r = __pTextSlideTimer->Construct(*this);
+
+ if (IsFailed(r))
+ {
+ delete __pTextSlideTimer;
+ goto CATCH;
+ }
+ }
+
+ r = __pTextSlideTimer->Start(100);
+
+ if (IsFailed(r))
+ {
+ goto CATCH;
+ }
+
+CATCH:
+ return r;
+}
+
+result
+_ButtonPresenter::TimerForTitleSlideTimeout(void)
+{
+ Canvas* pCanvas = __pButton->GetCanvasN();
+ SysTryReturnResult(NID_UI_CTRL, pCanvas, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] pCanvas is invalid!");
+
+ pCanvas->SetBackgroundColor(Color(0, 0, 0, 0));
+
+ if (__pButton->UserDefinedText())
+ {
+ pCanvas->Clear(__pButton->GetUserDefinedTextAreaF());
+
+ if (__pTabLargeSelectedBitmap)
+ {
+ pCanvas->DrawBitmap(CoordinateSystem::AlignToDevice(__pButton->GetUserDefinedTextAreaF()), *__pTabLargeSelectedBitmap);
+ }
+ }
+ else
+ {
+ pCanvas->Clear(__textRect);
+
+ if (__pTabLargeSelectedBitmap)
+ {
+ pCanvas->DrawBitmap(CoordinateSystem::AlignToDevice(__textRect), *__pTabLargeSelectedBitmap);
+ }
+ }
+
+ if (__pTextObject->IsChanged())
+ {
+ if (!__pButton->GetText().IsEmpty())
+ {
+ DrawText();
+ }
+ }
+
+ if (__pTextObject->IsActionOn() == true)
+ {
+ __pTextObject->DrawWithOffset(*_CanvasImpl::GetInstance(*pCanvas));
+
+ TimerForTitleSlideStart();
+ }
+ else
+ {
+ __pTextObject->Draw(*_CanvasImpl::GetInstance(*pCanvas));
+ }
+
+ delete pCanvas;
+
+ return E_SUCCESS;
+}
+
}}} // Tizen::Ui::Controls