From db5477e5dc12582c24c6052bd2755a7ca8f49fd2 Mon Sep 17 00:00:00 2001 From: Vinay Sachdeva Date: Thu, 23 May 2013 20:30:04 +0530 Subject: [PATCH] Fixed Nabi Issues Change-Id: I63ded45c7a56d910eb1bc2c906d0394e2c33d8b9 Signed-off-by: Vinay Sachdeva --- inc/IntAddressbar.h | 9 +- inc/IntArticleReaderForm.h | 154 ++++ inc/IntIAddressbarEventListener.h | 4 +- inc/IntMainForm.h | 11 +- inc/IntPresentationModelBase.h | 1 + res/eng-GB.xml | 3 +- res/screen-density-xhigh/I01_font_button_left.png | Bin 0 -> 5858 bytes .../I01_font_button_left_dim.png | Bin 0 -> 5749 bytes .../I01_font_button_left_press.png | Bin 0 -> 6412 bytes res/screen-density-xhigh/I01_font_button_right.png | Bin 0 -> 6327 bytes .../I01_font_button_right_dim.png | Bin 0 -> 6230 bytes .../I01_font_button_right_press.png | Bin 0 -> 6878 bytes res/screen-density-xhigh/I01_title_font_bg.png | Bin 0 -> 1899 bytes res/screen-size-normal/IDL_ADD_BOOKMARK.xml | 51 +- res/screen-size-normal/IDL_ARTICLE_READER_FORM.xml | 39 + res/screen-size-normal/IDL_FIND_ON_PAGE.xml | 5 +- res/screen-size-normal/IDL_FORM.xml | 9 +- src/IntAddressbar.cpp | 310 +------- src/IntArticleReaderForm.cpp | 845 +++++++++++++++++++++ src/IntBookmarkListForm.cpp | 22 +- src/IntFormFactory.cpp | 14 +- src/IntMainForm.cpp | 667 ++++++++-------- src/IntPresentationModelBase.cpp | 46 +- src/IntSceneRegister.cpp | 1 + 24 files changed, 1520 insertions(+), 671 deletions(-) create mode 100644 inc/IntArticleReaderForm.h create mode 100644 res/screen-density-xhigh/I01_font_button_left.png create mode 100644 res/screen-density-xhigh/I01_font_button_left_dim.png create mode 100644 res/screen-density-xhigh/I01_font_button_left_press.png create mode 100644 res/screen-density-xhigh/I01_font_button_right.png create mode 100644 res/screen-density-xhigh/I01_font_button_right_dim.png create mode 100644 res/screen-density-xhigh/I01_font_button_right_press.png create mode 100644 res/screen-density-xhigh/I01_title_font_bg.png create mode 100644 res/screen-size-normal/IDL_ARTICLE_READER_FORM.xml create mode 100644 src/IntArticleReaderForm.cpp diff --git a/inc/IntAddressbar.h b/inc/IntAddressbar.h index cf87ed0..d98a54c 100644 --- a/inc/IntAddressbar.h +++ b/inc/IntAddressbar.h @@ -184,7 +184,7 @@ class Addressbar static const int IDA_CLEAR_URL; private: - //AddressBarMode __currentAddMode; + Tizen::Base::String __displayUrl; Tizen::Base::String __editTextUrl; @@ -192,24 +192,17 @@ class Addressbar bool __isLoadingCompleted; bool __isClipboardOpen; bool __isKeyboardConnected; - bool __isCancelledClicked; int __progressPercentage; Tizen::Ui::Controls::Label* __pAddressbarBg; Tizen::Ui::Controls::Panel* __pBgPanel; - //Tizen::Ui::Controls::Button* __pCancelBtn; Tizen::Ui::Controls::Button* __pClearBtn; Tizen::Graphics::Bitmap* __pFavIcon; Tizen::Ui::Controls::Label* __pFaviconLabel; - //Tizen::Ui::Controls::Button* __pGoBackBtn; -// Tizen::Ui::Controls::Button* __pGoForwardBtn; Tizen::Ui::Controls::Label* __pLabelPrivateOn; IAddressbarEventListener* __pListener; Tizen::Ui::Controls::Label* __pPrivateIconLabel; Tizen::Ui::Controls::Label* __pProgressbarLabel; -// Tizen::Ui::Controls::Button* __pReaderBtn; -// Tizen::Ui::Controls::Button* __pRefreshBtn; - Tizen::Ui::Controls::Button* __pStopBtn; Tizen::Ui::Controls::Label* __pSearchLabel; Tizen::Ui::Controls::EditField* __pAddressbarUrlField; Tizen::Ui::Controls::Label* __pToolBarLabel; diff --git a/inc/IntArticleReaderForm.h b/inc/IntArticleReaderForm.h new file mode 100644 index 0000000..3f35175 --- /dev/null +++ b/inc/IntArticleReaderForm.h @@ -0,0 +1,154 @@ +// + +// Copyright (c) 2012 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.1 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +// !Internet +/*@file: IntArticleReaderForm.h + *@brief: This header file contains the declarations of the ArticleReaderForm class. + * + */ + +#ifndef _INT_ARTICLE_READER_FORM_H_ +#define _INT_ARTICLE_READER_FORM_H_ + +#include +#include +#include + +#include "IntSharePopup.h" + + +class ArticleReaderForm + : public Tizen::Ui::Controls::Form + , public Tizen::Ui::IActionEventListener + , public Tizen::Ui::IKeypadEventListener + , public Tizen::Ui::IOrientationEventListener + , public Tizen::Ui::ITextEventListener + , public Tizen::Ui::ITouchEventListener + , public Tizen::Ui::Scenes::ISceneEventListener + , public Tizen::Web::Controls::ITextSearchListener + , public Tizen::Web::Controls::IWebUiEventListener + + + { + public: + /** + * @brief The Default Constructor + */ + ArticleReaderForm(void); + + /** + * @brief The Default Destructor + */ + virtual ~ArticleReaderForm(void); + + /** + * @brief Initializes this instance of ArticleReaderForm. + */ + bool Initialize(void); + + // Initializes the controls of the UI for ArticleReaderForm. + virtual result OnInitializing(void); + + virtual result OnTerminating(void); + + //IActionEventListener + virtual void OnActionPerformed(const Tizen::Ui::Control& source, int actionId); + + //IKeypadEventListener + virtual void OnKeypadWillOpen(Tizen::Ui::Control& source){} + virtual void OnKeypadOpened(Tizen::Ui::Control& source); + virtual void OnKeypadClosed(Tizen::Ui::Control& source); + virtual void OnKeypadBoundsChanged (Tizen::Ui::Control &source){} + virtual void OnKeypadActionPerformed(Tizen::Ui::Control& source, Tizen::Ui::KeypadAction keypadAction){} + + //IOrientationEventListener + virtual void OnOrientationChanged(const Tizen::Ui::Control& source, Tizen::Ui::OrientationStatus orientationStatus); + + //ITextEventListener + virtual void OnTextValueChangeCanceled (const Tizen::Ui::Control &source){} + virtual void OnTextValueChanged (const Tizen::Ui::Control &source); + + //ITouchEventListener + virtual void OnTouchDoublePressed(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo){} + virtual void OnTouchFocusIn(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo){} + virtual void OnTouchFocusOut(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo){} + virtual void OnTouchLongPressed(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo); + virtual void OnTouchPressed(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo){} + virtual void OnTouchMoved(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo){} + virtual void OnTouchReleased(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo){} + + //ISceneEventListener + virtual void OnSceneActivatedN(const Tizen::Ui::Scenes::SceneId& previousSceneId, const Tizen::Ui::Scenes::SceneId& currentSceneId, Tizen::Base::Collection::IList* pArgs); + virtual void OnSceneDeactivated(const Tizen::Ui::Scenes::SceneId& currentSceneId, const Tizen::Ui::Scenes::SceneId& nextSceneId); + + //ITextSearchListener + virtual void OnTextFound(int totalCount, int currentOrdinal); + + //IWebUiEventListener + virtual void OnWebPageBlockSelected(Tizen::Web::Controls::Web& source, Tizen::Graphics::Point& startPoint, Tizen::Graphics::Point& endPoint); + virtual void OnWebPageShowRequested(Tizen::Web::Controls::Web& source){} + virtual Tizen::Web::Controls::Web* OnWebWindowCreateRequested(void){} + virtual void OnWebWindowCloseRequested(Tizen::Web::Controls::Web& source) {} + + result InitSelectTextContextMenu(Tizen::Graphics::Point p); + result InitFindWordPanel(void); + void StartWordSearch(void); + + void RelayoutControls(void); + + static const int IDA_MORE_BUTTON; + static const int IDA_BACK_BUTTON; + static const int IDA_SMALL_FONT_BUTTON; + static const int IDA_LARGE_FONT_BUTTON; + static const int IDA_SAVE_CLICKED; + static const int IDA_SHARE_CLICKED; + static const int IDA_PRINT_CLICKED; + + static const int IDA_COPY_TEXT_CLICKED; + static const int IDA_FIND_TEXT_CLICKED; + static const int IDA_SHARE_TEXT_CLICKED; + + static const int IDA_FINDWORD_CANCEL_CLICKED; + static const int IDA_FINDWORD_CLEAR_CLICKED; + static const int IDA_FINDWORD_NEXT_CLICKED; + static const int IDA_FINDWORD_PREV_CLICKED; + + private: + Tizen::Web::Controls::Web* __pWebReader; + Tizen::Ui::Controls::Panel* __pFooterPanel; + Tizen::Ui::Controls::Button* __pMoreBtn; + Tizen::Ui::Controls::Button* __pBackBtn; + Tizen::Ui::Controls::Button* __pSmallFontBtn; + Tizen::Ui::Controls::Button* __pLargeFontBtn; + Tizen::Ui::Controls::ContextMenu* __pMoreMenu; + Tizen::Web::Controls::HitElementResult* __pHitElementResult; + Tizen::Ui::Controls::ContextMenu* __pSelectionMenu; + + Tizen::Ui::Controls::Label * __pFindWordBgLabel; + Tizen::Ui::Controls::Button* __pFindWordClear; + Tizen::Ui::Controls::Label* __pFindWordCountLabel; + Tizen::Ui::Controls::Panel* __pFindWordControl; + Tizen::Ui::Controls::EditField* __pFindWordEditField; + Tizen::Ui::Controls::Button* __pFindWordNext; + Tizen::Ui::Controls::Button* __pFindWordPrev; + +// Tizen::Base::String __currentSelectedStr; + SharePopup* __pPopUp; + + }; + +#endif /* _INT_ARTICLE_READER_FORM_H_ */ diff --git a/inc/IntIAddressbarEventListener.h b/inc/IntIAddressbarEventListener.h index 530ef0e..f0844b2 100644 --- a/inc/IntIAddressbarEventListener.h +++ b/inc/IntIAddressbarEventListener.h @@ -39,6 +39,8 @@ class IAddressbarEventListener { public: virtual ~IAddressbarEventListener(void) {}; + virtual void OnAddressBarFocusGained(const Addressbar&) = 0; + virtual void OnAddressBarFocusLost(const Addressbar&) = 0; virtual void OnAddressBarKeypadClosed(const Addressbar&, bool footerState = true ) = 0; virtual void OnAddressBarKeypadOpened(const Addressbar&) = 0; virtual void OnAddressBarKeypadWillOpen(const Addressbar&) = 0; @@ -48,7 +50,7 @@ public: virtual void OnClipboardClosed(const Addressbar&) = 0; //virtual void OnBackClicked(const Addressbar&) = 0; //virtual void OnForwardClicked(const Addressbar&) = 0; - virtual void OnReaderClicked(const Addressbar&) = 0; +// virtual void OnReaderClicked(const Addressbar&) = 0; virtual void OnRefreshClicked(const Addressbar&) = 0; virtual void OnStopClicked(Addressbar&) = 0; virtual void OnUrlValueChanged(Addressbar&) = 0; diff --git a/inc/IntMainForm.h b/inc/IntMainForm.h index eeeb523..8b41563 100644 --- a/inc/IntMainForm.h +++ b/inc/IntMainForm.h @@ -103,6 +103,10 @@ public: virtual void OnFormBackRequested(Tizen::Ui::Controls::Form& source); //IAddressbarEventListener + void OnAddressBarFocusGained(const Addressbar& addBar); + + void OnAddressBarFocusLost(const Addressbar& addBar); + void OnAddressCancelledClicked(const Addressbar&); void OnAddressBarKeypadClosed(const Addressbar&, bool footerState = true); @@ -121,8 +125,6 @@ public: void OnForwardClicked(/*const Addressbar&*/); - void OnReaderClicked(const Addressbar&); - void OnRefreshClicked(const Addressbar&){} void OnSearchClicked(const Addressbar&){} @@ -261,6 +263,7 @@ public: void UpdateProgress(int percentage); int GetProgress(void); void UpdateProgressBitmap(void); + void ReaderClicked(); /** * @brief Sets the current addressbar Mode. @@ -273,6 +276,7 @@ public: virtual void OnUserEventReceivedN (RequestId requestId, Tizen::Base::Collection::IList *pArgs); + void AddressBarCancelledClicked(const Addressbar& addBar); private: double findDistance(int x1,int y1,int x2, int y2); void FindNextWord(bool next = true); @@ -312,7 +316,7 @@ private: int __maxOccurrances; int __currentWordIndex; bool __isLoaded; - bool __inputEventToBeSupressed; + //bool __inputEventToBeSupressed; bool __isLoadingData; bool __isLoadingCompleted; @@ -370,6 +374,7 @@ private: Tizen::Ui::Controls::Label* __pFooterLabel; Tizen::Ui::Controls::Button* __pStopBtn; Tizen::Ui::Controls::Button* __pClearBtn; + Tizen::Ui::Controls::Button* __pReaderBtn; }; diff --git a/inc/IntPresentationModelBase.h b/inc/IntPresentationModelBase.h index 4562ab1..c347982 100644 --- a/inc/IntPresentationModelBase.h +++ b/inc/IntPresentationModelBase.h @@ -131,6 +131,7 @@ public: static bool GetCurrentDateTime(Tizen::Base::DateTime& dt); + Tizen::Base::String GetStringFromDate(Tizen::Base::DateTime& date); /** * This function gives the last inserted row id * diff --git a/res/eng-GB.xml b/res/eng-GB.xml index 913c120..c606d48 100644 --- a/res/eng-GB.xml +++ b/res/eng-GB.xml @@ -133,5 +133,6 @@ Failed to save Image Delete all saved form data? Delete all saved passwords? - + + Print diff --git a/res/screen-density-xhigh/I01_font_button_left.png b/res/screen-density-xhigh/I01_font_button_left.png new file mode 100644 index 0000000000000000000000000000000000000000..966b341fe3d423b10259da255b4bf77be33b0fe8 GIT binary patch literal 5858 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 literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/I01_font_button_left_press.png b/res/screen-density-xhigh/I01_font_button_left_press.png new file mode 100644 index 0000000000000000000000000000000000000000..ab5a1f59d11b6039d0233ff497ffe5985f89adc6 GIT binary patch literal 6412 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 A82|tP literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/I01_font_button_right_press.png b/res/screen-density-xhigh/I01_font_button_right_press.png new file mode 100644 index 0000000000000000000000000000000000000000..89ef5cbe91eacf94ffe49f6c95c7e44e42e89bb6 GIT binary patch literal 6878 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 Y0HjB-8+IcWnE(I)07*qoM6N<$f=Xr!)&Kwi literal 0 HcmV?d00001 diff --git a/res/screen-density-xhigh/I01_title_font_bg.png b/res/screen-density-xhigh/I01_title_font_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..2dcabf2bbf364c7969dfa9e88bcce4a19b5204c5 GIT binary patch literal 1899 zcmeAS@N?(olHy`uVBq!ia0y~yV7dTg7jQ5GNd~U%nLv`UILO_JVcj{Imp~3nx}&cn z1H;CC?mvmFK)ynLqiJ#!!Mvv!wUw6QUeBtR|yOZRx=nF#0%!^3bbKh zU}gyL32_A}XlMYEqhK@yMqmiEv&aeq^Atl#kYDiskqsDvzq6|XlYmr-YeY$Kep*R+ zVo@qXKw@TIiJqTph(ejMo~fRpfx(xeg}`!YwWo_?NJZS+YmRp&YLUu;%43beSBXE9@clu+10#w z-Z)S0pZ>+m<@|r`E?hp$YFwlMDe4Ng2%kbsL2Z#RfKP3z=er~H5wypnq zf!pCcKmV7S zvAmf2urY4sP42y+pWjA)xph&Pzj9%D7<<+7^#2Q|SJhQ5+O9XR@;LY2t-t^F-rH6F zLUzISHukEenG3?R{@Hxet$KTBVS7WIwA_o{RgL#De*OkZF3esa?zM0JhxX)sISZa! j*TpbYff;3q8yop2|DEk1bS@+VRK9t-`njxgN@xNAWPwd< literal 0 HcmV?d00001 diff --git a/res/screen-size-normal/IDL_ADD_BOOKMARK.xml b/res/screen-size-normal/IDL_ADD_BOOKMARK.xml index fef83e2..be3f375 100644 --- a/res/screen-size-normal/IDL_ADD_BOOKMARK.xml +++ b/res/screen-size-normal/IDL_ADD_BOOKMARK.xml @@ -3,7 +3,8 @@ This XML file was automatically generated by UiBuilder - do not modify by hand. --> - + + 720
@@ -11,7 +12,7 @@
- + @@ -21,52 +22,52 @@ - + + + - + - - + + + - + - - - diff --git a/res/screen-size-normal/IDL_ARTICLE_READER_FORM.xml b/res/screen-size-normal/IDL_ARTICLE_READER_FORM.xml new file mode 100644 index 0000000..04fc5a4 --- /dev/null +++ b/res/screen-size-normal/IDL_ARTICLE_READER_FORM.xml @@ -0,0 +1,39 @@ + + + + + + 720 +
+ + + + + + + + + + + + + +
diff --git a/res/screen-size-normal/IDL_FIND_ON_PAGE.xml b/res/screen-size-normal/IDL_FIND_ON_PAGE.xml index 37a20d3..a4b5825 100644 --- a/res/screen-size-normal/IDL_FIND_ON_PAGE.xml +++ b/res/screen-size-normal/IDL_FIND_ON_PAGE.xml @@ -3,7 +3,8 @@ This XML file was automatically generated by UiBuilder - do not modify by hand. --> - + + @@ -50,7 +51,7 @@ - + diff --git a/res/screen-size-normal/IDL_FORM.xml b/res/screen-size-normal/IDL_FORM.xml index e051efb..220e140 100644 --- a/res/screen-size-normal/IDL_FORM.xml +++ b/res/screen-size-normal/IDL_FORM.xml @@ -4,7 +4,7 @@ --> - + 720
@@ -37,7 +37,7 @@ @@ -76,6 +76,11 @@ + diff --git a/src/IntAddressbar.cpp b/src/IntAddressbar.cpp index b201e55..f424a00 100644 --- a/src/IntAddressbar.cpp +++ b/src/IntAddressbar.cpp @@ -39,8 +39,7 @@ static const wchar_t* IDB_TITLE_PROGRESS_BAR = L"I01_title_progress_bar.png"; static const wchar_t* IDB_ICON_PRIVATE = L"I01_icon_private.png"; //Action IDs -const int Addressbar::IDA_REFRESH_BTN_CLICKED = 101; -const int Addressbar::IDA_READER_BTN_CLICKED = 102; + const int Addressbar::IDA_STOP_BTN_CLICKED = 103; const int Addressbar::IDA_GO_BACK = 104; const int Addressbar::IDA_GO_FORWARD = 105; @@ -51,26 +50,20 @@ Addressbar::Addressbar(void) { //__currentAddMode = ADDRESSBAR_MODE_LOADING_COMPLETE; __displayUrl = L""; - __editTextUrl = L""; +// __editTextUrl = L""; __isLoadingData = false; __isLoadingCompleted = false; __progressPercentage = 0; __pAddressbarBg = null; __pBgPanel = null; - //__pCancelBtn = null; __pClearBtn = null; __pFavIcon = FaviconManager::GetInstance()->GetDefaultFaviconN(); __pFaviconLabel = null; - //__pGoBackBtn = null; - //__pGoForwardBtn = null; __pLabelPrivateOn = null; __pListener = null; __pPrivateIconLabel = null; __pProgressbarLabel = null; __pPrivateIconLabel = null ; - //__pReaderBtn = null; - //__pRefreshBtn = null; - __pStopBtn = null; __pClearBtn = null ; __pSearchLabel = null; __pAddressbarUrlField = null; @@ -79,7 +72,6 @@ Addressbar::Addressbar(void) __pAddressBackBtn = null; __isClipboardOpen = false; __isKeyboardConnected = false; - __isCancelledClicked = false; } Addressbar::~Addressbar(void) @@ -130,27 +122,6 @@ Addressbar::Initialize(const Rectangle& rect) delete pBitmap; } - //Add the backround label for displaying progressbar - /*__pProgressbarLabel = static_cast (GetControl(L"IDC_PROGRESS_BAR_LABEL",true)); - if (__pProgressbarLabel == NULL) - { - AppLogDebug("Control not found returning E_INVALID_KEY"); - return E_INVALID_KEY; - } - __pProgressbarLabel->SetShowState(false);*/ - - //Add the stop button - __pStopBtn = static_cast (GetControl(L"IDC_STOP_BUTTON",true)); - if (__pStopBtn == NULL) - { - AppLogDebug("Control not found returning E_INVALID_KEY"); - return E_INVALID_KEY; - } - __pStopBtn->SetActionId(IDA_STOP_BTN_CLICKED); - __pStopBtn->AddActionEventListener(*this); - __pStopBtn->SetShowState(false); - - __pClearBtn = static_cast (GetControl(L"IDC_CLEAR_BUTTON",true)); if (__pClearBtn == NULL) { @@ -361,152 +332,6 @@ Addressbar::GetUrl(void) return __displayUrl; } -/*AddressBarMode -Addressbar::GetAddressbarMode(void) -{ - return __currentAddMode; -}*/ - -/*void -Addressbar::SetAddressbarMode(AddressBarMode addMode) -{ - AppLogDebug("AddressBar::setAddressbarMode to %d",addMode); - - __currentAddMode = addMode; - - switch(addMode) - { - case ADDRESSBAR_MODE_INVALID: - { - // do nothing - } - break; - case ADDRESSBAR_MODE_READER: - { - // __pBgPanel->SetPosition(__pGoBackBtn->GetPosition().x + 2* __pGoBackBtn->GetWidth() + 13,__pBgPanel->GetPosition().y); - // __pSearchLabel->SetShowState(false); - // __pFaviconLabel->SetShowState(true); - // __pCancelBtn->SetShowState(false); - // __pRefreshBtn->SetShowState(false); - __pStopBtn->SetShowState(false); - // __pReaderBtn->SetShowState(true); - // __pReaderBtn->Invalidate(true); - // __pGoForwardBtn->SetShowState(true); - // __pGoBackBtn->SetShowState(true); - __pClearBtn->SetShowState(false); - } - break; - case ADDRESSBAR_MODE_LOADING: - { - // __pBgPanel->SetPosition(__pGoBackBtn->GetPosition().x + 2* __pGoBackBtn->GetWidth() + 13,__pBgPanel->GetPosition().y); - // __pSearchLabel->SetShowState(false); - // __pFaviconLabel->SetShowState(true); - // __pCancelBtn->SetShowState(false); - // __pRefreshBtn->SetShowState(false); - __pStopBtn->SetShowState(true); - // __pReaderBtn->SetShowState(false); - // __pGoForwardBtn->SetShowState(true); - // __pGoBackBtn->SetShowState(true); - __pClearBtn->SetShowState(false); - } - break; - - case ADDRESSBAR_MODE_LOADING_COMPLETE: - { - // __pBgPanel->SetPosition(__pGoBackBtn->GetPosition().x + 2* __pGoBackBtn->GetWidth() + 13,__pBgPanel->GetPosition().y); - // __pCancelBtn->SetShowState(false); - - if (__pAddressbarUrlField && __pAddressbarUrlField->GetText().IsEmpty() == false) - { - // __pSearchLabel->SetShowState(false); - // __pFaviconLabel->SetShowState(true); - } - else - { - // __pSearchLabel->SetShowState(true); - // __pFaviconLabel->SetShowState(false); - } - - if (__pAddressbarUrlField != NULL) - { - __pAddressbarUrlField->SetText(__displayUrl); - __pAddressbarUrlField->HideKeypad(); - } - - // __pRefreshBtn->SetShowState(true); - __pStopBtn->SetShowState(false); - // __pReaderBtn->SetShowState(false); - // __pGoForwardBtn->SetShowState(true); - // __pGoBackBtn->SetShowState(true); - __pClearBtn->SetShowState(false); - } - break; - case ADDRESSBAR_MODE_EDIT: - { - Form *pForm = static_cast(GetParent()); - if (pForm!= null && (pForm->GetOrientationStatus() == ORIENTATION_STATUS_PORTRAIT ||pForm->GetOrientationStatus() == ORIENTATION_STATUS_PORTRAIT_REVERSE )) - { - // __pBgPanel->SetBounds(__pBgPanel->GetX(),__pBgPanel->GetY(),static_cast(GetParent())->GetClientAreaBounds().width - __pCancelBtn->GetWidth() - 30,__pBgPanel->GetHeight()); - // __pAddressbarBg->SetBounds(__pAddressbarBg->GetX(),__pAddressbarBg->GetY(),static_cast(GetParent())->GetClientAreaBounds().width - __pCancelBtn->GetWidth() - 30,__pAddressbarBg->GetHeight()); - __pClearBtn->SetBounds(__pBgPanel->GetWidth() - __pClearBtn->GetWidth(),__pClearBtn->GetY(),__pClearBtn->GetWidth(),__pClearBtn->GetHeight()); - } - else - { - // __pBgPanel->SetBounds(__pBgPanel->GetX(),__pBgPanel->GetY(),static_cast(GetParent())->GetClientAreaBounds().width - __pCancelBtn->GetWidth() - 48,__pBgPanel->GetHeight()); - // __pAddressbarBg->SetBounds(__pAddressbarBg->GetX(),__pAddressbarBg->GetY(),static_cast(GetParent())->GetClientAreaBounds().width - __pCancelBtn->GetWidth() - 48,__pAddressbarBg->GetHeight()); - __pClearBtn->SetBounds(__pBgPanel->GetWidth() - __pClearBtn->GetWidth(),__pClearBtn->GetY(),__pClearBtn->GetWidth(),__pClearBtn->GetHeight()); - } - - // __pBgPanel->SetPosition(__pGoBackBtn->GetPosition().x,__pBgPanel->GetPosition().y); - // __pCancelBtn->SetShowState(true); - // __pRefreshBtn->SetShowState(false); - __pStopBtn->SetShowState(false); - // __pReaderBtn->SetShowState(false); - // __pGoForwardBtn->SetShowState(false); - // __pGoBackBtn->SetShowState(false); - __pClearBtn->SetShowState(true); - - -// __pCancelBtn->SetBounds(__pBgPanel->GetWidth(), __pCancelBtn->GetY(), GetWidth() - 48 - __pBgPanel->GetWidth(), __pCancelBtn->GetHeight()); - - if (__pAddressbarUrlField && __pAddressbarUrlField->GetText().IsEmpty() == true) - { - // __pSearchLabel->SetShowState(true); - // __pFaviconLabel->SetShowState(false); - } - else - { - // __pSearchLabel->SetShowState(false); - // __pFaviconLabel->SetShowState(true); - } - if (__pAddressbarUrlField != NULL) - { - __pAddressbarUrlField->SetCursorPosition(__pAddressbarUrlField->GetTextLength()); - } - - } - break; - } - - if (__pAddressbarBg->GetWidth() != __pBgPanel->GetWidth()) - { - __pAddressbarBg->SetBounds(Rectangle(0, 0, __pBgPanel->GetWidth(), __pBgPanel->GetHeight())); - Bitmap *pBitmap = CommonUtil::GetNinepatchedBitmapN(L"I01_search_input_field_bg.9.png", __pAddressbarBg->GetWidth(), __pAddressbarBg->GetHeight()); - if (pBitmap != null) - { - __pAddressbarBg->SetBackgroundBitmap(*pBitmap); - delete pBitmap; - } - } - - Invalidate(true); - - if (__pListener != null) - { - __pListener->OnAddressBarModeChanged(*this); - } -}*/ - void Addressbar::SetFaviconBitmap(const Tizen::Graphics::Bitmap& favicon) { @@ -527,7 +352,7 @@ Addressbar::SetFaviconBitmap(const Tizen::Graphics::Bitmap& favicon) void Addressbar::SaveAddressbarEditText() { - __editTextUrl = __pAddressbarUrlField->GetText(); +// __editTextUrl = __pAddressbarUrlField->GetText(); } void @@ -545,15 +370,11 @@ Addressbar::UpdateFaviconBitmap(bool isPrivateOn) void Addressbar::SetForwardButtonEnabled(bool isEnabled) { -// __pGoForwardBtn->SetEnabled(isEnabled); -// __pGoBackBtn->Invalidate(true); } void Addressbar::SetBackButtonEnabled(bool isEnabled) { -// __pGoBackBtn->SetEnabled(isEnabled); -// __pGoBackBtn->Invalidate(true); } void @@ -599,68 +420,10 @@ Addressbar::OnActionPerformed(const Tizen::Ui::Control& source, int actionId) switch (actionId) { - case IDA_REFRESH_BTN_CLICKED: - __isLoadingCompleted = false; - __isLoadingData = true; - __progressPercentage = 0; - __pAddressbarUrlField->HideKeypad(); - __displayUrl = __pAddressbarUrlField->GetText(); - - /*if (__pListener != NULL) - { - __pListener->OnUrlSubmitted(*this); - }*/ - - UpdateProgressBitmap(); - break; - - case IDA_STOP_BTN_CLICKED: - __isLoadingCompleted = false; - __isLoadingData = false; - __progressPercentage = 0; - __pAddressbarUrlField->HideKeypad(); - __displayUrl = __pAddressbarUrlField->GetText(); - - if (__pListener != NULL) - { - __pListener->OnStopClicked(*this); - } - - UpdateProgressBitmap(); - break; - case IDA_READER_BTN_CLICKED: - __pAddressbarUrlField->HideKeypad(); - __displayUrl = __pAddressbarUrlField->GetText(); - - if (__pListener != NULL) - { - __pListener->OnReaderClicked(*this); - } - - break; - - /*case IDA_GO_BACK: - { - if (__pListener != NULL) - { - __pListener->OnBackClicked(*this); - - } - } - break; - - case IDA_GO_FORWARD: - { - if (__pListener != NULL ) - __pListener->OnForwardClicked(*this); - } - break;*/ - case IDA_CANCEL: { - __pAddressbarUrlField->HideKeypad(); +// __pAddressbarUrlField->HideKeypad(); __pListener->OnAddressCancelledClicked(*this); - __isCancelledClicked = true; //SetAddressbarMode(ADDRESSBAR_MODE_LOADING_COMPLETE); } break; @@ -719,9 +482,6 @@ Addressbar::OnKeypadActionPerformed(Tizen::Ui::Control& source, Tizen::Ui::Keypa void Addressbar::OnKeypadClosed(Tizen::Ui::Control& source) { -// String state = L""; -// result r = DeviceManager::GetState(DEVICE_TYPE_KEYBOARD,state); -// AppLog("Device State %S error %s",state.GetPointer(),GetErrorMessage(r)); AppLog("XYZ::Addressbar::OnKeypadClosed"); if(__isKeyboardConnected == true) { @@ -734,51 +494,44 @@ Addressbar::OnKeypadClosed(Tizen::Ui::Control& source) return; } -// if(__isCancelledClicked == true) - { - if(__pAddressbarUrlField) - { - String removedHttpUrl = RemoveHttpTextFromDisplayURL(); - if (removedHttpUrl.IsEmpty() == false) - { - __pAddressbarUrlField->SetText(removedHttpUrl); - } - else - { - __pAddressbarUrlField->SetText(__displayUrl); - } - } + +// if(__pAddressbarUrlField) +// { +// String removedHttpUrl = RemoveHttpTextFromDisplayURL(); +// if (removedHttpUrl.IsEmpty() == false) +// { +// __pAddressbarUrlField->SetText(removedHttpUrl); +// } +// else +// { // __pAddressbarUrlField->SetText(__displayUrl); - __editTextUrl = L""; - SetShowState(false); - if(__pListener != null) - { - __pListener->OnAddressBarKeypadClosed(*this,true); - } +// } +// } +// __editTextUrl = L""; + if(__pListener != null) + { + __pListener->OnAddressBarKeypadClosed(*this,true); } - __isCancelledClicked = false; } void Addressbar::OnKeypadOpened(Tizen::Ui::Control& source) { AppLog("XYZ::Addressbar::OnKeypadOpened"); -// String state = L""; -// result r = DeviceManager::GetState(DEVICE_TYPE_KEYBOARD,state); -// AppLog("Device State %S error %s",state.GetPointer(),GetErrorMessage(r)); AppLog("Addressbar::OnKeypadOpened %d",Clipboard::GetInstance()->IsPopupVisible()); __isClipboardOpen = Clipboard::GetInstance()->IsPopupVisible(); + if(__pListener != null) + { + __pListener->OnAddressBarKeypadOpened(*this); + } } void Addressbar::OnKeypadWillOpen(Tizen::Ui::Control& source) { AppLog("XYZ::Addressbar::OnKeypadWillOpen"); - if(__pListener != null) - { - __pListener->OnAddressBarKeypadWillOpen(*this); - } + } void @@ -797,9 +550,7 @@ Addressbar::OrientationChanged( int& width) int gap = 10; __pBgPanel->SetBounds(__pBgPanel->GetX(),__pBgPanel->GetY(), width - __pAddressBackBtn->GetWidth() - gap -__pBgPanel->GetX() ,__pBgPanel->GetHeight()); __pAddressBackBtn->SetBounds(width - __pAddressBackBtn->GetWidth() - 6,__pAddressBackBtn->GetY(),__pAddressBackBtn->GetWidth(),__pAddressBackBtn->GetHeight()); - __pStopBtn->SetBounds(__pBgPanel->GetWidth() - __pStopBtn->GetWidth(),__pStopBtn->GetY(),__pStopBtn->GetWidth(),__pStopBtn->GetHeight()); __pClearBtn->SetBounds(__pBgPanel->GetWidth() - __pClearBtn->GetWidth() ,__pClearBtn->GetY(),__pClearBtn->GetWidth(),__pClearBtn->GetHeight()); -// __pAddressbarUrlField->SetBounds(__pToolBarLabel->GetWidth(),__pAddressbarUrlField->GetY(),__pBgPanel->GetWidth() - __pStopBtn->GetWidth()- __pToolBarLabel->GetWidth() ,__pAddressbarUrlField->GetHeight()); Bitmap *pBitmap = CommonUtil::GetNinepatchedBitmapN(IDB_SEARCH_INPUT_FIELD_BG, __pAddressbarBg->GetWidth(), __pAddressbarBg->GetHeight()); if (pBitmap != null) @@ -857,8 +608,6 @@ Addressbar::GetLockedImageN(void) void Addressbar::OnFocusGained(const Control& source) { - //SetAddressbarMode(ADDRESSBAR_MODE_EDIT); - // SetAddressbarMode(__prevAddMode); AppLog("XYZ::Addressbar::OnFocusGained"); if(__pAddressbarUrlField != null) { @@ -874,8 +623,7 @@ Addressbar::OnFocusGained(const Control& source) } if (__pListener != null) { - __pListener->OnAddressBarKeypadWillOpen(*this); - __pListener->OnAddressBarKeypadOpened(*this); + __pListener->OnAddressBarFocusGained(*this); } } @@ -895,12 +643,10 @@ Addressbar::OnFocusLost(const Tizen::Ui::Control& source) __pAddressbarUrlField->SetText(__displayUrl); } } - // __pAddressbarUrlField->SetText(__displayUrl); - __editTextUrl = L""; - SetShowState(false); +// __editTextUrl = L""; if(__pListener != null) { - __pListener->OnAddressBarKeypadClosed(*this,false); + __pListener->OnAddressBarFocusLost(*this); } } diff --git a/src/IntArticleReaderForm.cpp b/src/IntArticleReaderForm.cpp new file mode 100644 index 0000000..657d02b --- /dev/null +++ b/src/IntArticleReaderForm.cpp @@ -0,0 +1,845 @@ +// + +// Copyright (c) 2012 Samsung Electronics Co., Ltd. +// +// Licensed under the Flora License, Version 1.1 (the License); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://floralicense.org/license/ +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an AS IS BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +// !Internet +/*@file: ArticleReaderForm.cpp + *@brief: This header file contains the definitions of the ArticleReaderForm class. + * + */ + +#include +#include +#include "IntArticleReaderForm.h" +#include "IntCommonLib.h" +#include "IntSceneRegister.h" + +using namespace Tizen::App; +using namespace Tizen::Base; +using namespace Tizen::Base::Collection; +using namespace Tizen::Graphics; +using namespace Tizen::Ui; +using namespace Tizen::Ui::Controls; +using namespace Tizen::Ui::Scenes; +using namespace Tizen::Web::Controls; + +static const wchar_t* IDB_SMALL_FONT = L"I01_font_button_left.png"; +static const wchar_t* IDB_LARGE_FONT = L"I01_font_button_right.png"; +static const wchar_t* IDB_FINDWORD_INPUT_FIELD_BG = L"I01_toolbar_input_field_findword.9.png"; + +const int ArticleReaderForm::IDA_MORE_BUTTON = 101; +const int ArticleReaderForm::IDA_BACK_BUTTON = 102; +const int ArticleReaderForm::IDA_SMALL_FONT_BUTTON = 103; +const int ArticleReaderForm::IDA_LARGE_FONT_BUTTON = 104; +const int ArticleReaderForm::IDA_SAVE_CLICKED = 105; +const int ArticleReaderForm::IDA_SHARE_CLICKED = 106; +const int ArticleReaderForm::IDA_PRINT_CLICKED = 107; +const int ArticleReaderForm::IDA_COPY_TEXT_CLICKED = 108; +const int ArticleReaderForm::IDA_FIND_TEXT_CLICKED = 109; +const int ArticleReaderForm::IDA_SHARE_TEXT_CLICKED = 110; +const int ArticleReaderForm::IDA_FINDWORD_CANCEL_CLICKED = 111; +const int ArticleReaderForm::IDA_FINDWORD_CLEAR_CLICKED = 112; +const int ArticleReaderForm::IDA_FINDWORD_NEXT_CLICKED = 113; +const int ArticleReaderForm::IDA_FINDWORD_PREV_CLICKED =114; + +ArticleReaderForm::ArticleReaderForm(void): + __pWebReader(null) + ,__pFooterPanel(null) + ,__pMoreBtn(null) + ,__pBackBtn(null) + ,__pSmallFontBtn(null) + ,__pLargeFontBtn(null) + ,__pMoreMenu(null) + ,__pHitElementResult(null) + ,__pSelectionMenu(null) + ,__pPopUp(null) + ,__pFindWordBgLabel(null) + ,__pFindWordClear(null) + ,__pFindWordCountLabel(null) + ,__pFindWordControl(null) + ,__pFindWordEditField(null) + ,__pFindWordNext(null) + ,__pFindWordPrev(null) +{ + +} + +ArticleReaderForm::~ArticleReaderForm(void) +{ + // RemoveAllControls(); +} + +bool +ArticleReaderForm::Initialize(void) +{ + AppLog("ArticleReaderForm::Initialize entered"); + Construct(L"IDL_ARTICLE_READER_FORM"); + return true; +} + +result +ArticleReaderForm::OnInitializing(void) +{ + AppLog("ArticleReaderForm::OnInitializing entered"); + result r = E_SUCCESS; + WebSetting settings; + + SceneManager* pSceneManager = SceneManager::GetInstance(); + if (pSceneManager == null) + { + return E_FAILURE; + } + pSceneManager->AddSceneEventListener(IDSCN_ARTICLE_READER, *this); + + __pFooterPanel = static_cast(GetControl("IDC_PANEL1",true)); + if(__pFooterPanel == null) + { + AppLog("GetControl failed for FooterPanel button"); + return E_FAILURE; + } + + __pWebReader = new (std::nothrow) Web(); + __pWebReader->Construct(Rectangle(0,0, GetClientAreaBounds().width,GetClientAreaBounds().height - __pFooterPanel->GetHeight())); + + settings.SetInputStyle(INPUT_STYLE_OVERLAY); + settings.SetFontSize(24/*SettingPresentationModel::GetInstance()->GetReaderFontSize()*/); + + r = __pWebReader->SetSetting(settings); + AddControl(__pWebReader); + SetControlAlwaysAtBottom(*__pWebReader,true); + __pWebReader->LoadUrl("http://google.com");//temporary only for testing + if (IsFailed(r)) + AppLogDebug("Web setting add failed with %s", GetErrorMessage(r)); + + __pWebReader->AddTouchEventListener(*this); + __pWebReader->SetWebUiEventListener(this); + __pWebReader->SetTextSearchListener(this); + __pMoreBtn = static_cast(GetControl("IDC_MORE_BUTTON",true)); + if(__pMoreBtn == null) + { + AppLog("GetControl failed for more button"); + return E_FAILURE; + } + __pMoreBtn->AddActionEventListener(*this); + __pMoreBtn->SetActionId(IDA_MORE_BUTTON); + + + __pBackBtn = static_cast(GetControl("IDC_BACK_BUTTON",true)); + if(__pBackBtn == null) + { + AppLog("GetControl failed for back button"); + return E_FAILURE; + } + __pBackBtn->AddActionEventListener(*this); + __pBackBtn->SetActionId(IDA_BACK_BUTTON); + + + __pSmallFontBtn = static_cast(GetControl("IDC_SMALL_FONT_BUTTON",true)); + if(__pSmallFontBtn == null) + { + AppLog("GetControl failed for small font button"); + return E_FAILURE; + } + __pSmallFontBtn->AddActionEventListener(*this); + __pSmallFontBtn->SetActionId(IDA_SMALL_FONT_BUTTON); + __pSmallFontBtn->SetEnabled(false); + + + __pLargeFontBtn = static_cast(GetControl("IDC_LARGE_FONT_BUTTON",true)); + if(__pLargeFontBtn == null) + { + AppLog("GetControl failed for large font button"); + return E_FAILURE; + } + __pLargeFontBtn->AddActionEventListener(*this); + __pLargeFontBtn->SetActionId(IDA_LARGE_FONT_BUTTON); + + AddOrientationEventListener(*this); + + return r; +} + +result +ArticleReaderForm::OnTerminating(void) +{ + AppLog("ArticleReaderForm::OnTerminating entered"); + result r = E_SUCCESS; + return r; +} + +void +ArticleReaderForm::OnActionPerformed(const Control& source, int actionId) +{ + AppLog("ArticleReaderForm::OnActionPerformed entered actionId %d",actionId); + + SceneManager* pSceneManager = SceneManager::GetInstance(); + result r = E_SUCCESS; + + if (pSceneManager == null) + { + return ; + } + + switch (actionId) + { + case IDA_MORE_BUTTON: + { + if(__pMoreMenu != null) + { + delete __pMoreMenu; + __pMoreMenu = null; + } + __pMoreMenu = new(std::nothrow) ContextMenu(); + r = __pMoreMenu->Construct(Point(50,GetClientAreaBounds().height),CONTEXT_MENU_STYLE_LIST,CONTEXT_MENU_ANCHOR_DIRECTION_UPWARD); + + TryCatch(!IsFailed(r),,"Contextmenu creation failed with%s",GetErrorMessage(r)); + + __pMoreMenu->AddItem(CommonUtil::GetString(L"IDS_COM_SK_SAVE"),IDA_SAVE_CLICKED); + __pMoreMenu->AddItem(CommonUtil::GetString(L"IDS_BR_OPT_SHARE"),IDA_SHARE_CLICKED); + __pMoreMenu->AddItem(CommonUtil::GetString(L"IDS_COM_SK_PRINT"),IDA_PRINT_CLICKED); + __pMoreMenu->SetMaxVisibleItemsCount(3); + __pMoreMenu->SetShowState(true); + __pMoreMenu->Show(); + __pMoreMenu->Invalidate(true); + __pMoreMenu->AddActionEventListener(*this); + SetControlAlwaysOnTop(*__pMoreMenu, true); + } + break; + + case IDA_BACK_BUTTON: + { + SceneManager::GetInstance()->GoBackward(BackwardSceneTransition()); + } + break; + case IDA_SMALL_FONT_BUTTON: + { + WebSetting setting = __pWebReader->GetSetting(); + setting.SetFontSize(24); + + __pWebReader->SetSetting(setting); + __pSmallFontBtn->SetEnabled(false); + __pSmallFontBtn->Invalidate(true); + + __pLargeFontBtn->SetEnabled(true); + __pLargeFontBtn->Invalidate(true); + } + break; + case IDA_LARGE_FONT_BUTTON: + { + WebSetting setting = __pWebReader->GetSetting(); + setting.SetFontSize(32); + __pWebReader->SetSetting(setting); + + __pLargeFontBtn->SetEnabled(false); + __pLargeFontBtn->Invalidate(true); + + __pSmallFontBtn->SetEnabled(true); + __pSmallFontBtn->Invalidate(true); + + } + break; + case IDA_SAVE_CLICKED: + { + if(__pWebReader !=null) + { + r = __pWebReader->SavePageAsPdf(UiApp::GetInstance()->GetAppRootPath()+"//data//test.pdf"); + AppLog("SavePageAsPdf result %s",GetErrorMessage(r)); + + int __modalMsgBoxResult; + MessageBox* pMsgBox = new MessageBox(); + pMsgBox->Construct("Saved","Saved at "+UiApp::GetInstance()->GetAppRootPath()+"//data//test.pdf",MSGBOX_STYLE_OK,3000); + pMsgBox->ShowAndWait(__modalMsgBoxResult); + delete pMsgBox; + pMsgBox = null; + __modalMsgBoxResult = 0; + } + + } + break; + case IDA_SHARE_CLICKED: + { + if(__pPopUp != null) + { + delete __pPopUp; + __pPopUp = null; + } + __pPopUp = new(std::nothrow) SharePopup(); + __pPopUp->Initialize(); + + ShareInfo* pShareInfo = new(std::nothrow) ShareInfo(); + pShareInfo->SetPageTitle(L"Google");//temporary only for testing + pShareInfo->SetPageUrl(L"http://www.google.com");//temporary only for testing + pShareInfo->SetImageAttached(false); + __pPopUp->RemoveAllShareInfo(); + __pPopUp->AddShareInfo(pShareInfo); + + __pPopUp->SetShowState(true); + __pPopUp->Show(); + } + break; + case IDA_PRINT_CLICKED: + { + r = __pWebReader->SavePageAsPdf(UiApp::GetInstance()->GetAppRootPath()+"//data//test.pdf"); + AppLog("SavePageAsPdf result %s",GetErrorMessage(r)); + + AppLog("RequestPrint called!"); + AppControl* pAc = Tizen::App::AppManager::FindAppControlN(L"org.tizen.mobileprint", L"http://tizen.org/appcontrol/operation/print"); + result nResult = E_FAILURE; + if (pAc) + { + AppLog("TestPrint if (pAc) == true"); + + HashMap map; + map.Construct(); + + String fileType = L"service_print_files_type"; + String typeVal = L"DOC"; + + String fileCount = L"service_print_files_count"; + String countVal = L"1"; + String fileFolder= L"service_print_files_folder_name"; + String folderVal = UiApp::GetInstance()->GetAppRootPath()+"//data"; + + map.Add(&fileCount, &countVal); + map.Add(&fileFolder, &folderVal); + map.Add(&fileType, &typeVal); + + String fileName = L"service_print_files_files_name"; + + ArrayList fileNameList; + fileNameList.Construct(); + String file1 = L"test.pdf"; + + fileNameList.Add(&file1); + map.Add(&fileName, &fileNameList); + + nResult = pAc->Start(NULL, NULL, &map, NULL); + + if (nResult == E_SUCCESS) AppLog("TestPrint ret == E_SUCCESS"); + else if (nResult == E_MAX_EXCEEDED) + AppLog("TestPrint ret == E_MAX_EXCEEDED"); + else if (nResult == E_OBJ_NOT_FOUND) + AppLog("TestPrint ret == E_OBJ_NOT_FOUND"); + else if (nResult == E_IN_PROGRESS) + AppLog("TestPrint ret == E_IN_PROGRESS"); + else if (nResult == E_PRIVILEGE_DENIED) + AppLog("TestPrint ret == E_PRIVILEGE_DENIED"); + else if(nResult == E_SYSTEM) + AppLog("TestPrint ret == E_SYSTEM"); + + delete pAc; + } + else + { + int __modalMsgBoxResult; + MessageBox* pMsgBox = new MessageBox(); + pMsgBox->Construct("Not Supported","Not Supported",MSGBOX_STYLE_OK,3000); + pMsgBox->ShowAndWait(__modalMsgBoxResult); + delete pMsgBox; + pMsgBox = null; + __modalMsgBoxResult = 0; + } + } + break; + case IDA_COPY_TEXT_CLICKED: + { + __pWebReader->ReleaseBlock(); + // Sets data to a clip board item + ClipboardItem item; + String resourcePath = App::GetInstance()->GetAppResourcePath(); + item.Construct(CLIPBOARD_DATA_TYPE_TEXT, __pWebReader->GetTextFromBlock()); + + // copying the item to clipboard + Clipboard* pClipboard = Clipboard::GetInstance(); + if (pClipboard != null) + { + pClipboard->CopyItem(item); + } + } + break; + case IDA_FIND_TEXT_CLICKED: + { + InitFindWordPanel(); + __pWebReader->SetBounds(0,__pFindWordControl->GetHeight(),GetClientAreaBounds().width,GetClientAreaBounds().height - __pFooterPanel->GetHeight() - __pFindWordControl->GetHeight()); + } + break; + case IDA_SHARE_TEXT_CLICKED: + { + AppLogDebug("IDA_SHARE_TEXT_CLICKED"); + if(__pPopUp != null) + { + delete __pPopUp; + __pPopUp = null; + } + __pPopUp = new(std::nothrow) SharePopup(); + __pPopUp->Initialize(); + if (__pHitElementResult != null) + { + ShareInfo* pShareInfo = new(std::nothrow) ShareInfo(); + pShareInfo->SetPageTitle(L""); + pShareInfo->SetPageUrl(__pWebReader->GetTextFromBlock()); + pShareInfo->SetImageAttached(false); + __pPopUp->RemoveAllShareInfo(); + __pPopUp->AddShareInfo(pShareInfo); + __pPopUp->SetShowState(true); + __pPopUp->Show(); + } + } + break; + + case IDA_FINDWORD_CANCEL_CLICKED: + { +// __currentSearchStr = L""; +// __currentWordIndex = 0; +// __maxOccurrances = 0; + __pFindWordEditField->SetText(L""); + __pFindWordNext->SetEnabled(false); + __pFindWordPrev->SetEnabled(false); + __pFindWordCountLabel->SetText(L"0/0"); + __pWebReader->SearchText(L"aaaabbbbcccc",true); + __pFooterPanel->SetShowState(true); + __pFindWordControl->SetShowState(false); + RelayoutControls(); + + } + break; + case IDA_FINDWORD_CLEAR_CLICKED: + { + + } + break; + case IDA_FINDWORD_NEXT_CLICKED: + { + + } + break; + case IDA_FINDWORD_PREV_CLICKED: + { + + } + break; + default: + break; + } + + CATCH: return; +} + +void +ArticleReaderForm::OnKeypadOpened(Tizen::Ui::Control& source) +{ + __pFooterPanel->SetShowState(false); +} + +void +ArticleReaderForm::OnKeypadClosed(Tizen::Ui::Control& source) +{ + __pFooterPanel->SetShowState(true); + RelayoutControls(); +} + +void +ArticleReaderForm::OnTouchLongPressed(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo) +{ + AppLog("ArticleReaderForm::OnTouchLongPressed %d, %d" ,currentPosition.x,currentPosition.y); + + if (__pHitElementResult != null) + { + delete __pHitElementResult; + __pHitElementResult = null; + } + + if (__pWebReader != null) + { + AppLog("ArticleReaderForm::OnTouchLongPressed web not null"); + __pHitElementResult = __pWebReader->GetElementByPointN(currentPosition); + } + + if (__pHitElementResult == null) + { + return; + } + + if (__pHitElementResult->HasImage() == true) + { + + } + else if(__pHitElementResult->HasUrl() == true) + { + + } + else + { + String tagName = __pHitElementResult->GetTagName(); + String type = __pHitElementResult->GetAttributeValue("type"); + String value = __pHitElementResult->GetAttributeValue(L"value"); + String innerHtml = __pHitElementResult->GetAttributeValue(L"innerHTML"); + + result r =__pWebReader->SetBlockSelectionPosition(currentPosition); + AppLog("setselectionselectedornot %s",GetErrorMessage(r)); + + } +// __inputEventToBeSupressed = true; +} + +void +ArticleReaderForm::OnSceneActivatedN(const SceneId& previousSceneId, const SceneId& currentSceneId, IList* pArgs) +{ + AppLog("ArticleReaderForm::OnSceneActivatedN entered"); +} + +void +ArticleReaderForm::OnSceneDeactivated(const SceneId& currentSceneId, const SceneId& nextSceneId) +{ + AppLog("ArticleReaderForm::OnSceneDeactivated entered"); +} + +void +ArticleReaderForm::OnTextFound(int totalCount, int currentOrdinal) +{ + AppLog("ArticleReaderForm::OnTextFound totalCount %d",totalCount); + AppLog("ArticleReaderForm::OnTextFound currentOrdinal %d",currentOrdinal); + + if(totalCount == -1 || totalCount == 0) + { + __pFindWordCountLabel->SetBounds(__pFindWordCountLabel->GetX(),__pFindWordCountLabel->GetY(),84,__pFindWordCountLabel->GetHeight()); + __pFindWordEditField->SetBounds(__pFindWordEditField->GetX(),__pFindWordEditField->GetY(),214+80,__pFindWordEditField->GetHeight()); + } + else if(totalCount > 100) + { + __pFindWordCountLabel->SetBounds(__pFindWordCountLabel->GetX(),__pFindWordCountLabel->GetY(),124,__pFindWordCountLabel->GetHeight()); + __pFindWordEditField->SetBounds(__pFindWordEditField->GetX(),__pFindWordEditField->GetY(),174,__pFindWordEditField->GetHeight()); + } + else + { + __pFindWordCountLabel->SetBounds(__pFindWordCountLabel->GetX(),__pFindWordCountLabel->GetY(),124,__pFindWordCountLabel->GetHeight()); + __pFindWordEditField->SetBounds(__pFindWordEditField->GetX(),__pFindWordEditField->GetY(),174,__pFindWordEditField->GetHeight()); + } + + if (totalCount <= 0) + { + __pFindWordNext->SetEnabled(false); + } + else + { + __pFindWordNext->SetEnabled(true); + } + + String countStr = L""; + countStr.Append(currentOrdinal); + countStr.Append(L"/"); + countStr.Append(totalCount); + __pFindWordCountLabel->SetText(countStr); + __pFindWordCountLabel->Invalidate(false); + + //FindNextWord(true); + //Update the controls + __pFindWordNext->Invalidate(false); +} + +void +ArticleReaderForm::OnWebPageBlockSelected(Tizen::Web::Controls::Web& source, Tizen::Graphics::Point& startPoint, Tizen::Graphics::Point& endPoint) +{ + AppLog("ArticleReaderForm::OnWebPageBlockSelected"); + if (__pHitElementResult != null) + { + delete __pHitElementResult; + __pHitElementResult = null; + } + + if (__pWebReader != null) + { + AppLog("ArticleReaderForm::OnWebPageBlockSelected web not null"); + __pHitElementResult = __pWebReader->GetElementByPointN(startPoint); + if(GetLastResult() == E_INVALID_ARG) + { + __pHitElementResult = __pWebReader->GetElementByPointN(endPoint); + } + } + + if (__pHitElementResult == null) + { + return; + } + + if (__pHitElementResult->HasImage() != true) + { + String tagName = __pHitElementResult->GetTagName(); + String type = __pHitElementResult->GetAttributeValue("type"); + + + if (((tagName.CompareTo(L"INPUT") == 0) || tagName.CompareTo(L"TEXTAREA") == 0)) + { + + } + else + { + AppLog("ArticleReaderForm::OnWebPageBlockSelected no paste option"); + + if(__pHitElementResult->GetUrl().GetLength() > 0) + { + } + InitSelectTextContextMenu(endPoint); + __pSelectionMenu->SetShowState(true); + __pSelectionMenu->Show(); + __pSelectionMenu->Invalidate(true); + } + + AppLog("ArticleReaderForm::OnWebPageBlockSelected tag name is %ls",tagName.GetPointer()); + AppLog("ArticleReaderForm::OnWebPageBlockSelected type name is %ls",type.GetPointer()); + } + +} + +void +ArticleReaderForm::OnOrientationChanged(const Control& source, OrientationStatus orientationStatus) +{ + AppLog("ArticleReaderForm::OnOrientationChanged entered"); + if(__pFindWordControl) + { + if (__pFindWordBgLabel != null) + { + Bitmap *pBitmap = CommonUtil::GetNinepatchedBitmapN(IDB_FINDWORD_INPUT_FIELD_BG, __pFindWordBgLabel->GetWidth(), __pFindWordBgLabel->GetHeight()); + if (pBitmap != null) + { + __pFindWordBgLabel->SetBackgroundBitmap(*pBitmap); + delete pBitmap; + } + } + + __pFindWordControl->SetBounds(0,0, __pFindWordControl->GetWidth(), __pFindWordControl->GetHeight()); + } + RelayoutControls(); +} + + +void +ArticleReaderForm::OnTextValueChanged (const Tizen::Ui::Control &source) +{ + + if (__pFindWordEditField != null) + { + __pFindWordNext->SetEnabled(false); + __pFindWordPrev->SetEnabled(false); + __pFindWordNext->Invalidate(true); + __pFindWordPrev->Invalidate(true); + __pFindWordCountLabel->SetText(L"0/0"); + __pFindWordCountLabel->Invalidate(true); + } + if (__pFindWordEditField->GetText().GetLength() > 0) + { + StartWordSearch(); + } + else + { + __pFindWordPrev->SetEnabled(false); + __pWebReader->SearchText(L"aaaaaaaabbbbbbbccccccc"); + } + +// else +// { +//// __currentSearchStr = L"aaaaaaaabbbbbbbccccccc"; +// StartWordSearch(); +//// __currentSearchStr = L""; +// AppLogDebug("Enter something"); +// } +} + +result +ArticleReaderForm::InitSelectTextContextMenu(Tizen::Graphics::Point p) +{ + result r = E_SUCCESS; + ContextMenuAnchorDirection direction = CONTEXT_MENU_ANCHOR_DIRECTION_AUTO; + + AppLog("ArticleReaderForm::InitSelectTextContextMenu clicked on text"); + if (__pSelectionMenu != null) + { + delete __pSelectionMenu; + __pSelectionMenu = null; + } + + if(p.y < 150) + { + p.y = p.y + 50; + direction = CONTEXT_MENU_ANCHOR_DIRECTION_DOWNWARD; + } + else + { + direction = CONTEXT_MENU_ANCHOR_DIRECTION_UPWARD; + } + __pSelectionMenu = new (std::nothrow) ContextMenu(); + r = __pSelectionMenu->Construct(p, CONTEXT_MENU_STYLE_GRID, direction); + TryCatch(!IsFailed(r),, "Context image menu creation failed with%s",GetErrorMessage(r)); + + r = __pSelectionMenu->AddItem(CommonUtil::GetString(L"IDS_COM_OPT_COPY"),IDA_COPY_TEXT_CLICKED); + r = __pSelectionMenu->AddItem(CommonUtil::GetString(L"IDS_BR_OPT_FIND_ON_PAGE_ABB"),IDA_FIND_TEXT_CLICKED); + r = __pSelectionMenu->AddItem(CommonUtil::GetString(L"IDS_BR_OPT_SHARE"),IDA_SHARE_TEXT_CLICKED); + + __pSelectionMenu->SetMaxVisibleItemsCount(3); + __pSelectionMenu->AddActionEventListener(*this); + SetControlAlwaysOnTop(*__pSelectionMenu, true); + + CATCH: return r; + +} + +result +ArticleReaderForm::InitFindWordPanel(void) +{ + result r = E_SUCCESS; + Bitmap *pIconBitmap = null; + + if (__pFindWordControl != null) + { + __pFindWordControl->SetBounds(0,0, __pFindWordControl->GetWidth(), __pFindWordControl->GetHeight()); + __pFindWordControl->SetShowState(true); + __pFindWordEditField->SetText(__pWebReader->GetTextFromBlock()); + + + __pFindWordEditField->SetFocus(); + + if (__pFindWordEditField->GetText().GetLength() > 0) + { + StartWordSearch(); + } + return r; + } + + __pFindWordControl = new (std::nothrow) Panel(); + r = __pFindWordControl->Construct(L"IDL_FIND_ON_PAGE"); + if (IsFailed(r)) + { + AppLogException("There is some problem in the xml file. Please check."); + return E_FAILURE; + } + AddControl(__pFindWordControl); + __pFindWordControl->SetBounds(0,0, __pFindWordControl->GetWidth(), __pFindWordControl->GetHeight()); + SetControlAlwaysOnTop(*__pFindWordControl,true); + __pFindWordControl->SetShowState(true); + __pFindWordControl->Invalidate(false); + + __pFindWordBgLabel = static_cast(__pFindWordControl->GetControl(L"IDC_LABEL1", true)); + if (__pFindWordBgLabel != null) + { + Panel* pPanel1 = static_cast(__pFindWordControl->GetControl(L"IDC_PANEL1", true)); + Rectangle pRect = pPanel1->GetBounds(); + pRect.x = pRect.y = 0; + __pFindWordBgLabel->SetBounds(pRect); + Bitmap *pBitmap = CommonUtil::GetNinepatchedBitmapN(L"I01_search_input_field_bg.9.png", __pFindWordBgLabel->GetWidth(), __pFindWordBgLabel->GetHeight()); + if (pBitmap != null) + { + AppLogDebug("InitFindWordPanel: Coming here"); + __pFindWordBgLabel->SetBackgroundBitmap(*pBitmap); + delete pBitmap; + } + else + { + AppLogDebug("InitFindWordPanel: shouldn't Come here"); + } + } + + Button* pfindWordCancel = null; + pfindWordCancel = static_cast(__pFindWordControl->GetControl(L"IDC_FIND_CANCEL", true)); + if (pfindWordCancel == null) + { + AppLogException("There is some problem in the xml file. Please check."); + return E_FAILURE; + } + pfindWordCancel->SetActionId(IDA_FINDWORD_CANCEL_CLICKED); + pfindWordCancel->AddActionEventListener(*this); + + __pFindWordClear = static_cast(__pFindWordControl->GetControl(L"IDC_FIND_CLEAR", true)); + if (__pFindWordClear == null) + { + AppLogException("There is some problem in the xml file. Please check."); + return E_FAILURE; + } + + __pFindWordClear->SetActionId(IDA_FINDWORD_CLEAR_CLICKED); + __pFindWordClear->AddActionEventListener(*this); + + __pFindWordNext = static_cast(__pFindWordControl->GetControl(L"IDC_FIND_NEXT", true)); + if (__pFindWordNext == null) + { + AppLogException("There is some problem in the xml file. Please check."); + return E_FAILURE; + } + + __pFindWordNext->SetActionId(IDA_FINDWORD_NEXT_CLICKED); + __pFindWordNext->AddActionEventListener(*this); + + __pFindWordPrev = static_cast(__pFindWordControl->GetControl(L"IDC_FIND_PREV", true)); + if (__pFindWordPrev == null) + { + AppLogException("There is some problem in the xml file. Please check."); + return E_FAILURE; + } + + __pFindWordPrev->SetActionId(IDA_FINDWORD_PREV_CLICKED); + __pFindWordPrev->AddActionEventListener(*this); + + __pFindWordNext->SetEnabled(false); + __pFindWordPrev->SetEnabled(false); + + __pFindWordCountLabel = static_cast(__pFindWordControl->GetControl(L"IDC_FIND_COUNT_LABEL", true)); + if (__pFindWordCountLabel == null) + { + AppLogException("There is some problem in the xml file. Please check."); + return E_FAILURE; + } + + __pFindWordEditField = static_cast(__pFindWordControl->GetControl(L"IDC_FIND_WORD_EDITFIELD", true)); + if (__pFindWordEditField == null) + { + AppLogException("There is some problem in the xml file. Please check."); + return E_FAILURE; + } + __pFindWordEditField->SetText(__pWebReader->GetTextFromBlock()); + __pFindWordEditField->AddTextEventListener(*this); + __pFindWordEditField->AddKeypadEventListener(*this); + __pFindWordEditField->SetOverlayKeypadCommandButtonVisible(false); + + __pFindWordEditField->SetFocus(); +// __pFindWordEditField->ShowKeypad(); + if (__pFindWordEditField->GetText().GetLength() > 0) + { + StartWordSearch(); + } + return r; +} + +void +ArticleReaderForm::StartWordSearch() +{ + __pFindWordPrev->SetEnabled(false); + __pWebReader->SearchTextAllAsync(__pFindWordEditField->GetText(), false); + +} + +void +ArticleReaderForm::RelayoutControls() +{ + if( __pFindWordControl && __pFindWordControl->GetShowState() == true) + { + __pFindWordControl->SetBounds(0,0, __pFindWordControl->GetWidth(), __pFindWordControl->GetHeight()); + __pWebReader->SetBounds(0,__pFindWordControl->GetHeight(),GetClientAreaBounds().width, GetClientAreaBounds().height - __pFooterPanel->GetHeight() - __pFindWordControl->GetHeight()); + } + else + { + if(__pWebReader) + __pWebReader->SetBounds(0,0,GetClientAreaBounds().width, GetClientAreaBounds().height - __pFooterPanel->GetHeight()); + } +} diff --git a/src/IntBookmarkListForm.cpp b/src/IntBookmarkListForm.cpp index f8c7475..c85a1bd 100644 --- a/src/IntBookmarkListForm.cpp +++ b/src/IntBookmarkListForm.cpp @@ -1031,7 +1031,7 @@ BookmarkListForm::OnSearchBarModeChanged(Tizen::Ui::Controls::SearchBar& source, if(__pSearchBar) { - __pSearchBar->SetContentAreaSize(Dimension(__pSearchListView->GetWidth(), __pSearchListView->GetHeight())); + __pSearchBar->SetContentAreaSize(Dimension(__pSearchListView->GetWidth(), GetClientAreaBounds().height - __pSearchBar->GetHeight())); __pSearchBar->SetText(L""); } AppLog("OnSearchBarModeChanged SetContentAreaSize heihgt %d",__pSearchListView->GetHeight()); @@ -1047,16 +1047,18 @@ BookmarkListForm::OnKeypadWillOpen(Tizen::Ui::Control& source) __pSearchListView->SetBounds(__pSearchListView->GetX(), __pSearchListView->GetY(), GetClientAreaBounds().width, GetClientAreaBounds().height - __pSearchBar->GetHeight()); __pSearchListView->SetEnabled(false); - __pSearchBar->SetContentAreaSize(Dimension(__pSearchListView->GetWidth(), __pSearchListView->GetHeight())); + __pSearchBar->SetContentAreaSize(Dimension(__pSearchListView->GetWidth(), GetClientAreaBounds().height - __pSearchBar->GetHeight())); Invalidate(true); } void BookmarkListForm::OnKeypadOpened(Tizen::Ui::Control& source) { + AppLog("ABCD::BookmarkListForm::OnKeypadOpened"); GetFooter()->SetShowState(false); AppLog("ABCD::BookmarkListForm::OnKeypadOpened"); __pSearchListView->SetBounds(__pSearchListView->GetX(), __pSearchListView->GetY(), __pSearchListView->GetWidth(), GetClientAreaBounds().height - __pSearchBar->GetHeight()); + __pSearchBar->SetContentAreaSize(Dimension(__pSearchListView->GetWidth(), GetClientAreaBounds().height - __pSearchBar->GetHeight())); Invalidate(true); } @@ -1157,7 +1159,8 @@ void BookmarkListForm::OnOrientationChanged (const Tizen::Ui::Control &source, Tizen::Ui::OrientationStatus orientationStatus) { AppLog("BookmarkListForm::OnOrientationChanged start"); - + __pListview->SetBackgroundColor(GetBackgroundColor()); + __pSearchListView->SetBackgroundColor(GetBackgroundColor()); if (__pListview) { if(__pSearchBar->GetShowState()) @@ -1188,9 +1191,20 @@ BookmarkListForm::OnOrientationChanged (const Tizen::Ui::Control &source, Tizen: __pSearchBar->Invalidate(true); } - __pSearchBar->SetContentAreaSize(Dimension(__pSearchListView->GetWidth(), GetClientAreaBounds().height)); + __pSearchBar->SetContentAreaSize(Dimension(__pSearchListView->GetWidth(), GetClientAreaBounds().height - __pSearchBar->GetHeight())); } +// +// +// +// FloatRectangle clientRect; +// clientRect = GetClientAreaBoundsF(); +// +// __pSearchBar->SetContentAreaSize(FloatDimension(clientRect.width, clientRect.height - __pSearchBar->GetHeightF())); +// __pListview->SetSize(FloatDimension(clientRect.width, clientRect.height - __pSearchBar->GetHeightF())); +// __pSearchListView->SetSize(FloatDimension(clientRect.width, clientRect.height - __pSearchBar->GetHeightF())); +// Invalidate(true); +// Invalidate(true); } diff --git a/src/IntFormFactory.cpp b/src/IntFormFactory.cpp index 0fcb3bb..5ee2843 100644 --- a/src/IntFormFactory.cpp +++ b/src/IntFormFactory.cpp @@ -22,6 +22,7 @@ */ #include "IntAddBookmarkForm.h" +#include "IntArticleReaderForm.h" #include "IntBookmarkListForm.h" #include "IntBrightnessForm.h" #include "IntCreateBookmarkFolderForm.h" @@ -35,6 +36,7 @@ #include "IntFormFactory.h" #include "IntSettingForm.h" + using namespace Tizen::Base; using namespace Tizen::Ui::Controls; using namespace Tizen::Ui::Scenes; @@ -55,6 +57,7 @@ const wchar_t* IDL_FORM_FONT_SIZE_SCENE = L"FontSize"; const wchar_t* IDL_FORM_EDIT_HOME_PAGE_SCENE = L"EditHomePage"; const wchar_t* IDL_FORM_BRIGHTNESS_SCENE = L"Brightness"; + FormFactory::FormFactory(void) { @@ -150,7 +153,16 @@ FormFactory::CreateFormN(const String& formId, const SceneId& sceneId) pForm->Initialize(); pNewForm = pForm; } - + else if (formId == IDL_FORM_ARTICLE_READER_SCENE) + { + ArticleReaderForm* pForm = new(std::nothrow) ArticleReaderForm(); + if (pForm == null) + { + return null; + } + pForm->Initialize(); + pNewForm = pForm; + } else if (formId == IDL_FORM_EDIT_BOOKMARK_LIST_SCENE) { EditBookmarkListForm* pForm = new(std::nothrow) EditBookmarkListForm(); diff --git a/src/IntMainForm.cpp b/src/IntMainForm.cpp index 15ae441..fba060f 100644 --- a/src/IntMainForm.cpp +++ b/src/IntMainForm.cpp @@ -116,9 +116,11 @@ const int IDA_GO_FORWARD = 215; const int IDA_REFRESH_BTN_CLICKED = 216; const int IDA_STOP_BTN_CLICKED = 217; const int IDA_CLEAR_URL = 218; +const int IDA_READER_BTN_CLICKED = 219; -const int IDA_HYPERLINK_OPEN_CLICKED = 219; -const int IDA_HYPERLINK_COPY_LINK_CLICKED = 220; + +const int IDA_HYPERLINK_OPEN_CLICKED = 220; +const int IDA_HYPERLINK_COPY_LINK_CLICKED = 221; const int IDA_HYPERLINK_SAVE_IMAGE_CLICKED = 222; const int IDA_HYPERLINK_SHARE_IMAGE_CLICKED = 223; @@ -166,7 +168,7 @@ MainForm::MainForm(void) __currentWordIndex = 0; __distanceMoved = 0; __isLoaded = false; - __inputEventToBeSupressed = false; + //__inputEventToBeSupressed = false; __isLoadingData = false; __isLoadingCompleted = false; __progressPercentage = 0; @@ -195,6 +197,7 @@ MainForm::MainForm(void) __pFooterLabel = null; __pStopBtn = null; __pClearBtn = null; + __pReaderBtn = null; __isWebKeypadOpened = false; } @@ -645,9 +648,7 @@ MainForm::InitFooter(void) __pFooterUrlField->SetOverlayKeypadCommandButtonVisible(false); __pFooterUrlField->SetKeypadAction(KEYPAD_ACTION_GO); - //__pFooterUrlField->AddFocusEventListener(*this); __pFooterUrlField->AddKeypadEventListener(*this); - //__pFooterUrlField->AddFocusEventListener(*this); __pFooterUrlField->SetPropagatedTouchEventListener(this); if (SettingPresentationModel::GetInstance()->GetHomepage().CompareTo((L"IDS_BR_BODY_MOST_VISITED_SITES")) == 0) @@ -684,15 +685,12 @@ MainForm::InitFooter(void) } __pGoForwardBtn->SetActionId(IDA_GO_FORWARD); __pGoForwardBtn->AddActionEventListener(*this); -// __pGoForwardBtn->SetEnabled(false); if (__pWebViewer && __pWebViewer->CanGoForward()) { - //__pAddressbar->SetForwardButtonEnabled(true); SetForwardButtonEnabled(true); } else { - //__pAddressbar->SetForwardButtonEnabled(false); SetForwardButtonEnabled(false); } @@ -736,6 +734,16 @@ MainForm::InitFooter(void) __pClearBtn->AddActionEventListener(*this); __pClearBtn->SetShowState(false); + __pReaderBtn = static_cast (GetControl(L"IDC_READER_BUTTON",true)); + if (__pReaderBtn == NULL) + { + AppLogDebug("Control not found returning E_INVALID_KEY"); + return E_INVALID_KEY; + } + __pReaderBtn->SetActionId(IDA_READER_BTN_CLICKED); + __pReaderBtn->AddActionEventListener(*this); + __pReaderBtn->SetShowState(false); + // __pFooterPanel->Invalidate(true); AppLogDebug("MainForm::InitFooter exit"); return E_SUCCESS; @@ -805,16 +813,6 @@ result MainForm::InitImageContextMenu(Tizen::Graphics::Point p) __pImageMenu = null; } -// p.y = p.y + __pAddressbar->GetHeight() + 12; -// AppLog("vinaypy %d",p.y); -// if(p.y < 100) -// { -// direction = CONTEXT_MENU_ANCHOR_DIRECTION_DOWNWARD; -// } -// else -// { -// direction = CONTEXT_MENU_ANCHOR_DIRECTION_UPWARD; -// } __pImageMenu = new (std::nothrow) ContextMenu(); r = __pImageMenu->Construct(p, CONTEXT_MENU_STYLE_LIST, direction); TryCatch(!IsFailed(r),, "Context image menu creation failed with%s",GetErrorMessage(r)); @@ -845,14 +843,7 @@ MainForm::InitImageLinkContextMenu(Tizen::Graphics::Point p) if(__pAddressbar->GetShowState() == true) p.y = p.y + __pAddressbar->GetHeight(); -// if (p.y < 100) -// { -// direction = CONTEXT_MENU_ANCHOR_DIRECTION_DOWNWARD; -// } -// else -// { -// direction = CONTEXT_MENU_ANCHOR_DIRECTION_UPWARD; -// } + __pImageMenu = new (std::nothrow) ContextMenu(); r = __pImageMenu->Construct(p, CONTEXT_MENU_STYLE_LIST, direction); TryCatch(!IsFailed(r),, "Context image menu creation failed with%s",GetErrorMessage(r)); @@ -882,7 +873,6 @@ MainForm::InitSelectTextContextMenu(Tizen::Graphics::Point p, bool pasteOption, delete __pImageMenu; __pImageMenu = null; } -// p.y = p.y + __pAddressbar->GetHeight() + 12; if(p.y < 150) { @@ -891,7 +881,6 @@ MainForm::InitSelectTextContextMenu(Tizen::Graphics::Point p, bool pasteOption, } else { -// p.y = p.y - 100; direction = CONTEXT_MENU_ANCHOR_DIRECTION_UPWARD; } __pImageMenu = new (std::nothrow) ContextMenu(); @@ -1238,38 +1227,39 @@ MainForm::OnActionPerformed(const Tizen::Ui::Control& source, int actionId) AppLogDebug("Clicked : %d", actionId); switch (actionId) { -// case IDA_BACKBTN_CLICKED: -// { -// if (__pWebViewer && __pWebViewer->CanGoBack()) -// { -// __pWebViewer->GoBack(); -// } -// else -// { -// UiApp* pApp = null; -// pApp = UiApp::GetInstance(); -// if (pApp != null) -// { -// r = pApp->Terminate(); -// if (IsFailed(r)) -// { -// AppLogException("OnActionPerformed failed with %s", GetErrorMessage(r)); -// return; -// } -// } -// } -// } -// break; - case IDA_BACKBTN_CLICKED: + { + if (__pWebViewer && __pWebViewer->CanGoBack()) { - if (__pWebViewer && __pWebViewer->CanGoBack()) + __pWebViewer->GoBack(); + } + else if(__pWindowInfo->isJavascriptInitiated == false) + { + UiApp* pApp = null; + pApp = UiApp::GetInstance(); + if (pApp != null) { - __pWebViewer->GoBack(); + r = pApp->Terminate(); + if (IsFailed(r)) + { + AppLogException("OnActionPerformed failed with %s", GetErrorMessage(r)); + return; + } + } + } + else + { + UiApp* pApp = null; + WindowInfo* pWindowInfo = null; + int totalCount = 0; + SceneManager* pSceneManager = SceneManager::GetInstance(); + if (pSceneManager == null) + { + return; } - else if(__pWindowInfo->isJavascriptInitiated == false) + ArrayList* pAllWindowList = MultipleWindowPresentationModel::GetInstance()->GetAllWindowArrayList(); + if (pAllWindowList == NULL) { - UiApp* pApp = null; pApp = UiApp::GetInstance(); if (pApp != null) { @@ -1281,18 +1271,14 @@ MainForm::OnActionPerformed(const Tizen::Ui::Control& source, int actionId) } } } - else + if (pAllWindowList != null) { - UiApp* pApp = null; - WindowInfo* pWindowInfo = null; - int totalCount = 0; - SceneManager* pSceneManager = SceneManager::GetInstance(); - if (pSceneManager == null) - { - return; - } - ArrayList* pAllWindowList = MultipleWindowPresentationModel::GetInstance()->GetAllWindowArrayList(); - if (pAllWindowList == NULL) + totalCount = pAllWindowList->GetCount(); + } + for (int count = 0; count < totalCount; count++) + { + pWindowInfo = dynamic_cast< WindowInfo* >(pAllWindowList->GetAt(count)); + if (pWindowInfo == null) { pApp = UiApp::GetInstance(); if (pApp != null) @@ -1305,75 +1291,55 @@ MainForm::OnActionPerformed(const Tizen::Ui::Control& source, int actionId) } } } - if (pAllWindowList != null) - { - totalCount = pAllWindowList->GetCount(); - } - for (int count = 0; count < totalCount; count++) + else { - pWindowInfo = dynamic_cast< WindowInfo* >(pAllWindowList->GetAt(count)); - if (pWindowInfo == null) + if (pSceneManager->GetCurrentSceneId() == pWindowInfo->sceneID && pWindowInfo->isJavascriptInitiated == true) { - pApp = UiApp::GetInstance(); - if (pApp != null) + r = SceneRegister::DestroyAndUnRegisterScene(pWindowInfo->sceneID); + if (IsFailed(r)) { - r = pApp->Terminate(); - if (IsFailed(r)) - { - AppLogException("OnActionPerformed failed with %s", GetErrorMessage(r)); - return; - } + AppLogException("OnActionPerformed failed with %s", GetErrorMessage(r)); + return; } - } - else - { - if (pSceneManager->GetCurrentSceneId() == pWindowInfo->sceneID && pWindowInfo->isJavascriptInitiated == true) + r = pAllWindowList->RemoveAt(count, true); + __pWindowInfo = null; + if (IsFailed(r)) { - r = SceneRegister::DestroyAndUnRegisterScene(pWindowInfo->sceneID); - if (IsFailed(r)) + AppLogException("OnActionPerformed failed with %s", GetErrorMessage(r)); + return; + } + if(count > 0) + { + pWindowInfo = dynamic_cast< WindowInfo* >(pAllWindowList->GetAt(count - 1)); + } + else + { + pWindowInfo = dynamic_cast< WindowInfo* >(pAllWindowList->GetAt(pAllWindowList->GetCount() - 1)); + } + if (pWindowInfo == null) + { + pApp = UiApp::GetInstance(); + if (pApp != null) { - AppLogException("OnActionPerformed failed with %s", GetErrorMessage(r)); + r = pApp->Terminate(); return; } - r = pAllWindowList->RemoveAt(count, true); - __pWindowInfo = null; + } + else + { + r = pSceneManager->GoBackward(BackwardSceneTransition(pWindowInfo->sceneID ,SCENE_TRANSITION_ANIMATION_TYPE_NONE)); if (IsFailed(r)) { AppLogException("OnActionPerformed failed with %s", GetErrorMessage(r)); return; } - if(count > 0) - { - pWindowInfo = dynamic_cast< WindowInfo* >(pAllWindowList->GetAt(count - 1)); - } - else - { - pWindowInfo = dynamic_cast< WindowInfo* >(pAllWindowList->GetAt(pAllWindowList->GetCount() - 1)); - } - if (pWindowInfo == null) - { - pApp = UiApp::GetInstance(); - if (pApp != null) - { - r = pApp->Terminate(); - return; - } - } - else - { - r = pSceneManager->GoBackward(BackwardSceneTransition(pWindowInfo->sceneID ,SCENE_TRANSITION_ANIMATION_TYPE_NONE)); - if (IsFailed(r)) - { - AppLogException("OnActionPerformed failed with %s", GetErrorMessage(r)); - return; - } - } - break; } + break; } } } } + } break; case IDA_FORWARD_CLICKED: @@ -1398,13 +1364,6 @@ MainForm::OnActionPerformed(const Tizen::Ui::Control& source, int actionId) __pMenu->Invalidate(false); __pFindWordEditField->SetFocus(); - /* - if (__pWebViewer != null) - { - // releasing the set block - __pWebViewer->ReleaseBlock(); - } - */ ShowFindWordPanel(true); } break; @@ -1566,7 +1525,7 @@ MainForm::OnActionPerformed(const Tizen::Ui::Control& source, int actionId) AppLog("SavePageAsPdf result %s",GetErrorMessage(r)); AppLog("RequestPrint called!"); - Tizen::App::AppControl* pAc = Tizen::App::AppManager::FindAppControlN(L"org.tizen.mobileprint", L"http://tizen.org/appcontrol/operation/print"); + AppControl* pAc = Tizen::App::AppManager::FindAppControlN(L"org.tizen.mobileprint", L"http://tizen.org/appcontrol/operation/print"); result nResult = E_FAILURE; if (pAc) { @@ -1584,7 +1543,6 @@ MainForm::OnActionPerformed(const Tizen::Ui::Control& source, int actionId) String folderVal = UiApp::GetInstance()->GetAppRootPath()+"//data"; map.Add(&fileCount, &countVal); -// map.Add(&fileIndex, &indexVal); map.Add(&fileFolder, &folderVal); map.Add(&fileType, &typeVal); @@ -1709,7 +1667,7 @@ MainForm::OnActionPerformed(const Tizen::Ui::Control& source, int actionId) if (__pMenu->GetItemCount() != 9) { __pMenu->InsertItemAt(1,CommonUtil::GetString(L"IDS_BR_OPT_ADDTOBOOKMARKS"), IDA_ADDTOBOOKMARK_CLICKED); - __pMenu->InsertItemAt(2,"Print", IDA_PRINT_CLICKED); + __pMenu->InsertItemAt(2,CommonUtil::GetString(L"IDS_COM_SK_PRINT"), IDA_PRINT_CLICKED); // __pMenu->InsertItemAt(2,L"Add to Home"/*CommonUtil::GetString(L"IDS_BR_OPT_SHARE")*/, IDA_ADD_TO_HOME_CLICKED); __pMenu->InsertItemAt(3,CommonUtil::GetString(L"IDS_BR_OPT_SHARE"), IDA_SHARE_CLICKED); __pMenu->InsertItemAt(4,CommonUtil::GetString(L"IDS_BR_OPT_FIND_ON_PAGE_ABB"), IDA_FINDONPAGE_CLICKED); @@ -1816,16 +1774,11 @@ MainForm::OnActionPerformed(const Tizen::Ui::Control& source, int actionId) { if (__pArticleReaderPanel != null && __pBlankPanel != null) { - //__pArticleReaderPanel->SetShowState(false); - //__pArticleReaderPanel->Show(); RemoveControl(__pBlankPanel); - //RemoveControl(*__pArticleReaderPanel); __pArticleReaderPanel = null; __pBlankPanel = null; __pArticleReaderLabel = null; } - //if (__pAddressbar) - // __pAddressbar->SetAddressbarMode((AddressBarMode)ADDRESSBAR_MODE_LOADING_COMPLETE); SetAddressbarMode((AddressBarMode)ADDRESSBAR_MODE_LOADING_COMPLETE); } break; @@ -1839,6 +1792,8 @@ MainForm::OnActionPerformed(const Tizen::Ui::Control& source, int actionId) __pFindWordPrev->SetEnabled(false); __pFindWordCountLabel->SetText(L"0/0"); __pWebViewer->SearchText(L"aaaabbbbcccc",true); + AppLog("akjshdasd 1"); + __pFooterPanel->SetShowState(true); ShowFindWordPanel(false); } break; @@ -2098,7 +2053,8 @@ MainForm::OnActionPerformed(const Tizen::Ui::Control& source, int actionId) break; case IDA_FIND_TEXT__CLICKED: { - OnAddressCancelledClicked(*__pAddressbar); +// AddressBarCancelledClicked(*__pAddressbar); + RelayoutControls(false); // __pFooterPanel->SetShowState(false); AppLogDebug("MainForm::OnActionPerformed find word clicked"); __currentSearchStr.Clear(); @@ -2116,15 +2072,12 @@ MainForm::OnActionPerformed(const Tizen::Ui::Control& source, int actionId) if (__pAddressbar != null && __pWebViewer != NULL) { __webControlPosition.y = __pAddressbar->GetHeight() - 12; - //__pAddressbar->SetBounds(0,__adressPanelPosition.y,GetClientAreaBounds().width,__pAddressbar->GetHeight()); - //__pAddressbar->Invalidate(true); __webControlHeight = GetClientAreaBounds().height - __pFooterPanel->GetHeight() - ( /*__pAddressbar->GetY() +*/ __pAddressbar->GetHeight() - 12); if (__pFooterPanel->GetShowState() == false) __pWebViewer->SetBounds(Rectangle(0,__webControlPosition.y,GetClientAreaBounds().width, GetClientAreaBounds().height - ( /*__pAddressbar->GetY() +*/ __pAddressbar->GetHeight() - 12))); else __pWebViewer->SetBounds(Rectangle(0,__webControlPosition.y,GetClientAreaBounds().width, __webControlHeight)); - // __pWebViewer->SetBounds(Rectangle(0,__webControlPosition.y,GetClientAreaBounds().width,__webControlHeight)); __pWebViewer->Invalidate(true); } @@ -2294,6 +2247,11 @@ MainForm::OnActionPerformed(const Tizen::Ui::Control& source, int actionId) } } break; + case IDA_READER_BTN_CLICKED: + { + ReaderClicked(); + } + break; default: break; } @@ -2526,6 +2484,17 @@ MainForm::OnLoadingStarted(void) { return; } + // this is added in case if menu is opened and user load the page + if(__pMenu != null && __pMenu->GetShowState() == true) + { + __pMenu->SetShowState(false); + __pMenu->Invalidate(true); + } + if(__pImageMenu != null && __pImageMenu->GetShowState() == true) + { + __pImageMenu->SetShowState(false); + __pImageMenu->Invalidate(true); + } String url = __pWebViewer->GetUrl(); if(url.Contains(IDS_TIZEN_SERVICE)) { @@ -2586,7 +2555,7 @@ MainForm::OnLoadingStarted(void) if ( __pAddressbar != null && __pAddressbar->GetShowState() == true) { __pAddressbar->SetShowState(false); - OnAddressCancelledClicked(*__pAddressbar); + AddressBarCancelledClicked(*__pAddressbar); __pAddressbar->Invalidate(true); } Bitmap* pBitmap = FaviconManager::GetInstance()->GetDefaultFaviconN(); @@ -2612,6 +2581,8 @@ MainForm::OnLoadingStarted(void) SetUrl(__pWebViewer->GetUrl()); if (__pWindowInfo != NULL) { + // resetting the page title to blank, it will be received in OnPageTitleReceived() + __pWindowInfo->pageTitle = L""; __pWindowInfo->pageUrl = __pWebViewer->GetUrl(); } __pAddressbar->Invalidate(true); @@ -2630,10 +2601,6 @@ void MainForm::OnKeypadWillOpen(Tizen::Ui::Control& source) { AppLog("XYZ::MainForm::OnKeypadWillOpen"); - if (__pAddressbar != null) - { - OnAddressBarKeypadWillOpen(*__pAddressbar); - } } @@ -2641,22 +2608,14 @@ void MainForm::OnKeypadOpened(Tizen::Ui::Control& source) { AppLog("XYZ::MainForm::OnKeypadOpened"); - if(__pAddressbar != null) - { - OnAddressBarKeypadOpened(*__pAddressbar); - } -} +} void MainForm::OnKeypadClosed(Tizen::Ui::Control& source) { AppLog("XYZ::MainForm::OnKeypadClosed"); - - if (__pAddressbar != null) - { - OnAddressBarKeypadClosed(*__pAddressbar); - } + RelayoutControls(true); } void @@ -2777,6 +2736,70 @@ MainForm::OnLoadingCompleted(void) // temperary fixed (webpage can be not loaded) UpdateFavicon(); } + + bool isReaderEnabled = SettingPresentationModel::GetInstance()->IsRunReaderEnabled(); + if (isReaderEnabled == true) + { + if (__pReaderData) + { + delete __pReaderData; + __pReaderData = null; + } + String filePath = Tizen::App::UiApp::GetInstance()->GetAppRootPath(); + filePath.Append(L"data/reader.js"); + File file; + char buffer[10]; + char buffer2[5]; + int i; + int readCnt; + result r = E_SUCCESS; + FileAttributes attr; + + File::GetAttributes(filePath,attr); + // Creates file + r = file.Construct(filePath, L"r+"); + if (IsFailed(r)) + { + AppLogDebug("File construct failed with %s", GetErrorMessage(r)); + return; + } + char* pScript = new(std::nothrow) char[attr.GetFileSize()+1]; + if(pScript == null) + { + AppLogDebug("Memory allocation for file failed %s", GetErrorMessage(r)); + return; + } +// file.Read(pScript,attr.GetFileSize()); +// +// AppLogDebug("scipt length %d",strlen(pScript)); + String strScript = L""; +// strScript.Append(pScript); +// for(int i=0; i<25; i++) + { + file.Read(pScript,attr.GetFileSize()); +// AppLog("xyzz tell %d",file.Tell()); +// r = strScript.Append(pScript); +// AppLog("xyzz append result %s",GetErrorMessage(r)); +// AppLog("xyzz strScript length %d",strScript.GetLength()); + } +// AppLog("xyzz final strScript length %d",strScript.GetLength()); + + __pReaderData = __pWebViewer->EvaluateJavascriptN(pScript); + if (__pReaderData == null) + { + AppLog("MainScene::data is null Error :%s",GetErrorMessage(GetLastResult())); + return; + } + AppLogDebug("evaluateJavascript result %s , __pReaderData %ls",GetErrorMessage(GetLastResult()),__pReaderData->GetPointer()); + if (__pReaderData->CompareTo(L"undefined") != 0 && __pReaderData->CompareTo(L"") != 0) + { + //__pAddressbar->SetAddressbarMode((AddressBarMode)ADDRESSBAR_MODE_READER); + SetAddressbarMode((AddressBarMode)ADDRESSBAR_MODE_READER); + } + delete[] pScript; + } + + AppLog("MainForm::OnLoadingCompleted done"); } @@ -2813,12 +2836,9 @@ MainForm::OnUrlSubmitted(Addressbar& addBar) String url = addBar.GetUrl(); AppLog("MainForm::OnUrlSubmitted url is %ls", url.GetPointer()); -// __pFooterPanel->SetShowState(true); if(__pFooterUrlField) __pFooterUrlField->SetCursorPosition(__pFooterUrlField->GetTextLength()); - OnAddressCancelledClicked(*__pAddressbar); -// __pAddressbar->SetShowState(false); -// RelayoutControls(false); + AddressBarCancelledClicked(*__pAddressbar); LoadUrl(url); } @@ -2909,87 +2929,6 @@ MainForm::OnStopClicked(Addressbar& addBar) } void -MainForm::OnReaderClicked(const Addressbar& addBar) -{ - int bodyWidth = ((double)(GetClientAreaBounds().width))*0.73; - - CreateReaderPanel(); - AppLogDebug("MainScene::OnReaderClicked entered"); - - - /*if (__pArticleReaderPanel) - { - AppLogDebug("showstate true for reader panel"); - __pArticleReaderPanel->SetShowState(true); - __pArticleReaderPanel->Show(); - }*/ - int xPos = __pArticleReaderPanel->GetX(); - int yPos = __pArticleReaderPanel->GetY(); - AppLog("OnReaderClicked() xPos = %d",xPos); - AppLog("OnReaderClicked() yPos = %d",yPos); - - if (__pReaderData == null) - { - return; - } - - String loadData = L"\ - \ - \ - \ - \ - "); - AppLogDebug("data->GetLength %d",__pReaderData->GetLength()); - loadData.Append(*__pReaderData); - loadData.Append(L""); - - ByteBuffer buf ; - buf.Construct(loadData.GetLength()); - AppLogDebug("data->GetLength %d",loadData.GetLength()); - for (int z=0;zLoadData(L"",buf,L"text/html"); - AppLogDebug("LoadData result %s",GetErrorMessage(GetLastResult())); - } - else - { - AppLogDebug("cannot LoadData __pWebReader is null"); - } - -} - -void MainForm::OnBackClicked(/*const Addressbar& addBar*/) { // AppLog("MainForm::OnBackClicked"); @@ -3121,25 +3060,43 @@ MainForm::OnForwardClicked(/*const Addressbar& addBar*/) } void -MainForm::OnAddressCancelledClicked(const Addressbar& addBar) +MainForm::OnAddressBarFocusGained(const Addressbar& addBar) { - result r = E_SUCCESS; + AppLog("XYZ::MainForm::OnAddressBarFocusGained"); + if(__pFooterPanel != null) + { + __pFooterPanel->SetShowState(false); + } - __pFooterPanel->SetShowState(true); - __pFooterUrlField->SetFocusable(true); + if (__pAddressbar != null && __pAddressbar->GetShowState() == false) + { + __pAddressbar->SetShowState(true); + __pAddressbar->SetBounds(Rectangle(0,0,GetClientAreaBounds().width,__pAddressbar->GetHeight())); + } - if(__pWebViewer) - __pWebViewer->SetFocus(); - else if(__pMostVisitedListView) - __pMostVisitedListView->SetFocus(); - else if(__pMultiWindowButton) - __pMultiWindowButton->SetFocus(); - __pMoreButton->SetFocus(); + RelayoutControls(false); +} - __pAddressbar->SetShowState(false); +void +MainForm::OnAddressBarFocusLost(const Addressbar& addBar) +{ + AppLog("XYZ::MainForm::OnAddressBarFocusLost"); - RelayoutControls(false,false); + if(__pAddressbar) + __pAddressbar->SetShowState(false); + if(__pFooterPanel) + { + AppLog("akjshdasd 3"); + __pFooterPanel->SetShowState(true); + } + RelayoutControls(false); +} + +void +MainForm::OnAddressCancelledClicked(const Addressbar& addBar) +{ + AddressBarCancelledClicked(addBar); } void @@ -3187,42 +3144,12 @@ MainForm::OnClipboardClosed(const Addressbar& addBar) void MainForm::OnAddressBarKeypadClosed(const Addressbar& addBar, bool footerState) { - if(__pAddressbar) - __pAddressbar->SetShowState(false); - if(__pFooterPanel) - { - __pFooterPanel->SetShowState(true); - - __pFooterPanel->Invalidate(false); - } -// if(__pWebViewer) -// __pWebViewer->SetFocus(); -// if(__pMoreButton) -// __pMoreButton->SetFocus(); - if(__pFooterUrlField) - { - __pFooterUrlField->SetFocusable(true); - } RelayoutControls(false,footerState); } void MainForm::OnAddressBarKeypadOpened(const Addressbar& addBar) { - if (__pFindWordControl && __pFindWordControl->GetShowState() == true) - { - __pAddressbar->SetShowState(false); - } - else - { - if (__pAddressbar != null && __pAddressbar->GetShowState() == false) - { - __pAddressbar->SetShowState(true); - __pAddressbar->SetBounds(Rectangle(0,0,GetClientAreaBounds().width,__pAddressbar->GetHeight())); - __pAddressbar->SetAddressbarURLFocus(); - } - } - RelayoutControls(false); } @@ -3346,12 +3273,12 @@ MainForm::OnLoadingRequested(const Tizen::Base::String& url, __pFindWordNext->SetEnabled(false); __pFindWordPrev->SetEnabled(false); __pFindWordCountLabel->SetText(L"0/0"); -// __pWebViewer->SearchText(L"aaaabbbbcccc",true); __pFindWordControl->SetShowState(false); __pFindWordEditField->HideKeypad(); + RelayoutControls(false); } -// ShowFindWordPanel(false); + __pFooterPanel->Invalidate(true); @@ -3756,14 +3683,16 @@ MainForm::FindNextWord(bool next) void MainForm::OnWebKeypadWillOpen(Tizen::Web::Controls::Web& source) { - AppLog("MainForm::OnWebKeypadWillOpen"); + AppLog("xyz::MainForm::OnWebKeypadWillOpen"); __isWebKeypadOpened = true; + __pFooterPanel->SetShowState(false); // OnAddressBarKeypadOpened(*__pAddressbar); } void MainForm::OnWebKeypadOpened(Tizen::Web::Controls::Web& source) { + AppLog("xyz::MainForm::OnWebKeypadOpened"); if(__pFindWordControl && __pFindWordControl->GetShowState() == true) { @@ -3805,8 +3734,11 @@ MainForm::OnWebKeypadOpened(Tizen::Web::Controls::Web& source) void MainForm::OnWebKeypadClosed(Tizen::Web::Controls::Web& source) { + AppLog("xyz::MainForm::OnWebKeypadClosed"); + AppLog("akjshdasd 4"); __pFooterPanel->SetShowState(true); - OnAddressBarKeypadClosed(*__pAddressbar); +// OnAddressBarKeypadClosed(*__pAddressbar); + RelayoutControls(false); __isWebKeypadOpened = false; } @@ -3828,57 +3760,7 @@ MainForm::OnTouchDoublePressed(const Control& source, const Point& currentPositi AppLog("MainScene::OnTouchDoublePressed"); - bool isReaderEnabled = SettingPresentationModel::GetInstance()->IsRunReaderEnabled(); - if (isReaderEnabled == true) - { - if (__pReaderData) - { - delete __pReaderData; - __pReaderData = null; - } - String filePath = Tizen::App::UiApp::GetInstance()->GetAppRootPath(); - filePath.Append(L"data/reader.js"); - File file; - char buffer[10]; - char buffer2[5]; - int i; - int readCnt; - result r = E_SUCCESS; - FileAttributes attr; - File::GetAttributes(filePath,attr); - // Creates file - r = file.Construct(filePath, L"r+"); - if (IsFailed(r)) - { - AppLogDebug("File construct failed with %s", GetErrorMessage(r)); - return; - } - char* pScript = new(std::nothrow) char[attr.GetFileSize()+1]; - if(pScript == null) - { - AppLogDebug("Memory allocation for file failed %s", GetErrorMessage(r)); - return; - } - file.Read(pScript,attr.GetFileSize()); - - AppLogDebug("scipt length %d",strlen(pScript)); - String strScript = L""; - strScript.Append(pScript); - __pReaderData = __pWebViewer->EvaluateJavascriptN(strScript); - if (!__pReaderData) - { - AppLog("MainScene::data is null Error :%s",GetErrorMessage(GetLastResult())); - return; - } - AppLogDebug("evaluateJavascript result %s , __pReaderData %ls",GetErrorMessage(GetLastResult()),__pReaderData->GetPointer()); - if (__pReaderData->CompareTo(L"undefined") != 0 && __pReaderData->CompareTo(L"") != 0) - { - //__pAddressbar->SetAddressbarMode((AddressBarMode)ADDRESSBAR_MODE_READER); - SetAddressbarMode((AddressBarMode)ADDRESSBAR_MODE_READER); - } - delete[] pScript; - } } void MainForm::OnTouchLongPressed(const Tizen::Ui::Control& source, const Tizen::Graphics::Point& currentPosition, const Tizen::Ui::TouchEventInfo& touchInfo) @@ -3958,7 +3840,7 @@ void MainForm::OnTouchLongPressed(const Tizen::Ui::Control& source, const Tizen: AppLog("setselectionselectedornot %s",GetErrorMessage(r)); } - __inputEventToBeSupressed = true; +// __inputEventToBeSupressed = true; } void @@ -3966,7 +3848,8 @@ MainForm::OnTouchReleased(const Tizen::Ui::Control& source, const Tizen::Graphic { AppLog("MainForm::OnTouchReleased"); - HitElementResult* pHitElement = __pWebViewer->GetElementByPointN(currentPosition); + // Not reuired now. + /*HitElementResult* pHitElement = __pWebViewer->GetElementByPointN(currentPosition); if(pHitElement != null && pHitElement->HasUrl() == true && __inputEventToBeSupressed == true) { __pWebViewer->ConsumeInputEvent(); @@ -3975,7 +3858,7 @@ MainForm::OnTouchReleased(const Tizen::Ui::Control& source, const Tizen::Graphic { delete pHitElement; } - __inputEventToBeSupressed = false; + __inputEventToBeSupressed = false;*/ } bool @@ -4003,9 +3886,7 @@ MainForm::OnTouchReleased(Tizen::Ui::Control& source, const Tizen::Ui::TouchEven } if(__pAddressbar->GetShowState() == false) { - __pAddressbar->SetShowState(true); __pAddressbar->SetAddressbarURLFocus(); - __pFooterUrlField->SetFocusable(false); __pFooterPanel->SetShowState(false); } @@ -4704,6 +4585,91 @@ MainForm::UpdateProgressBitmap(void) return; } +void +MainForm::ReaderClicked() +{ + SceneManager::GetInstance()->GoForward(ForwardSceneTransition(IDSCN_ARTICLE_READER, SCENE_TRANSITION_ANIMATION_TYPE_NONE)); + return; + + + int bodyWidth = ((double)(GetClientAreaBounds().width))*0.73; + + CreateReaderPanel(); + AppLogDebug("MainScene::ReaderClicked entered"); + + + /*if (__pArticleReaderPanel) + { + AppLogDebug("showstate true for reader panel"); + __pArticleReaderPanel->SetShowState(true); + __pArticleReaderPanel->Show(); + }*/ + int xPos = __pArticleReaderPanel->GetX(); + int yPos = __pArticleReaderPanel->GetY(); + AppLog("ReaderClicked() xPos = %d",xPos); + AppLog("ReaderClicked() yPos = %d",yPos); + + if (__pReaderData == null) + { + return; + } + + String loadData = L"\ + \ + \ + \ + \ + "); + AppLogDebug("data->GetLength %d",__pReaderData->GetLength()); + loadData.Append(*__pReaderData); + loadData.Append(L""); + + ByteBuffer buf ; + buf.Construct(loadData.GetLength()); + AppLogDebug("data->GetLength %d",loadData.GetLength()); + for (int z=0;zLoadData(L"",buf,L"text/html"); + AppLogDebug("LoadData result %s",GetErrorMessage(GetLastResult())); + } + else + { + AppLogDebug("cannot LoadData __pWebReader is null"); + } + +} + void MainForm::SetAddressbarMode(AddressBarMode addMode) { AppLogDebug("AddressBar::setAddressbarMode to %d",addMode); @@ -4720,7 +4686,9 @@ void MainForm::SetAddressbarMode(AddressBarMode addMode) case ADDRESSBAR_MODE_READER: { __pStopBtn->SetShowState(false); + __pRefreshBtn->SetShowState(false); __pClearBtn->SetShowState(false); + __pReaderBtn->SetShowState(false); } break; case ADDRESSBAR_MODE_LOADING: @@ -4728,6 +4696,7 @@ void MainForm::SetAddressbarMode(AddressBarMode addMode) __pRefreshBtn->SetShowState(false); __pStopBtn->SetShowState(true); __pClearBtn->SetShowState(false); + __pReaderBtn->SetShowState(false); } break; case ADDRESSBAR_MODE_LOADING_COMPLETE: @@ -4737,12 +4706,14 @@ void MainForm::SetAddressbarMode(AddressBarMode addMode) __pRefreshBtn->SetShowState(true); __pStopBtn->SetShowState(false); __pClearBtn->SetShowState(false); + __pReaderBtn->SetShowState(false); } break; case ADDRESSBAR_MODE_EDIT: { __pRefreshBtn->SetShowState(false); __pStopBtn->SetShowState(false); + __pReaderBtn->SetShowState(false); __pClearBtn->SetShowState(true); } break; @@ -4822,3 +4793,23 @@ void MainForm::OnUserEventReceivedN (RequestId requestId, Tizen::Base::Collectio } } } + +void +MainForm::AddressBarCancelledClicked(const Addressbar& addBar) +{ + result r = E_SUCCESS; + AppLog("akjshdasd 5"); + __pFooterPanel->SetShowState(true); + + if(__pWebViewer) + __pWebViewer->SetFocus(); + else if(__pMostVisitedListView) + __pMostVisitedListView->SetFocus(); + else if(__pMultiWindowButton) + __pMultiWindowButton->SetFocus(); + __pMoreButton->SetFocus(); + + __pAddressbar->SetShowState(false); + + RelayoutControls(false); +} diff --git a/src/IntPresentationModelBase.cpp b/src/IntPresentationModelBase.cpp index b727c24..8155f5b 100644 --- a/src/IntPresentationModelBase.cpp +++ b/src/IntPresentationModelBase.cpp @@ -574,12 +574,14 @@ PresentationModelBase::ExecuteHistoryQuery(const Tizen::Base::String& formatQuer } __pDbStatement->BindString(0,historyUrl); __pDbStatement->BindString(1,historyTitle); - DateTimeFormatter *pFormatter = DateTimeFormatter::CreateDateFormatterN(DATE_TIME_STYLE_DEFAULT); + + String visitedTime = GetStringFromDate(date); + /*DateTimeFormatter *pFormatter = DateTimeFormatter::CreateDateFormatterN(DATE_TIME_STYLE_DEFAULT); pFormatter->ApplyPattern(L"YYYY-MM-dd hh:mm:ss"); String dateStr; pFormatter->Format(date, dateStr); - AppLog("DateStr: %ls", dateStr.GetPointer()); - __pDbStatement->BindString(2, dateStr); + AppLog("DateStr: %ls", dateStr.GetPointer());*/ + __pDbStatement->BindString(2, visitedTime); if(history.GetFavIconBuffer() != null) { __pDbStatement->BindBlob(3,*(history.GetFavIconBuffer())); @@ -1004,4 +1006,40 @@ PresentationModelBase::GetCurrentDateTime(DateTime& dt) return true; } - +String +PresentationModelBase::GetStringFromDate(DateTime& date) +{ + String dateFormat = L""; + dateFormat.Append(date.GetYear()); + dateFormat.Append('-'); + if(date.GetMonth() < 10) + { + dateFormat.Append('0'); + } + dateFormat.Append(date.GetMonth()); + dateFormat.Append('-'); + if(date.GetDay() < 10) + { + dateFormat.Append('0'); + } + dateFormat.Append(date.GetDay()); + dateFormat.Append(' '); + if(date.GetHour() < 10) + { + dateFormat.Append('0'); + } + dateFormat.Append(date.GetHour()); + dateFormat.Append(':'); + if(date.GetMinute() < 10) + { + dateFormat.Append('0'); + } + dateFormat.Append(date.GetMinute()); + dateFormat.Append(':'); + if(date.GetSecond() < 10) + { + dateFormat.Append('0'); + } + dateFormat.Append(date.GetSecond()); + return dateFormat; +} diff --git a/src/IntSceneRegister.cpp b/src/IntSceneRegister.cpp index 7b778d5..bd0dab1 100644 --- a/src/IntSceneRegister.cpp +++ b/src/IntSceneRegister.cpp @@ -84,6 +84,7 @@ SceneRegister::RegisterAllScenes(void) pSceneManager->RegisterScene(IDSCN_FONT_SIZE, IDL_FORM_FONT_SIZE_SCENE, PANEL_BLANK); pSceneManager->RegisterScene(IDSCN_EDIT_HOMEPAGE_VIEW, IDL_FORM_EDIT_HOME_PAGE_SCENE, PANEL_BLANK); pSceneManager->RegisterScene(IDSCN_BRIGHTNESS, IDL_FORM_BRIGHTNESS_SCENE, PANEL_BLANK); + } result -- 2.7.4