3 // Copyright (c) 2012 Samsung Electronics Co., Ltd.
5 // Licensed under the Flora License, Version 1.1 (the License);
6 // you may not use this file except in compliance with the License.
7 // You may obtain a copy of the License at
9 // http://floralicense.org/license/
11 // Unless required by applicable law or agreed to in writing, software
12 // distributed under the License is distributed on an AS IS BASIS,
13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 // See the License for the specific language governing permissions and
15 // limitations under the License.
18 //!Internet MultipleWindowScene class
19 /*@file: IntMultipleWindowScene.cpp
20 *@brief: The MultipleWindowScene provides multiple instance of mainscenes and displays them in a Listview
25 #include "IntCommonLib.h"
26 #include "IntMultipleWindowPresentationModel.h"
28 using namespace Tizen::Base;
29 using namespace Tizen::Base::Collection;
30 using namespace Tizen::Graphics;
31 using namespace Tizen::Ui::Controls;
32 using namespace Tizen::Ui::Scenes;
34 MultipleWindowPresentationModel* MultipleWindowPresentationModel::__pMultiWindowManager = NULL;
35 ArrayList* MultipleWindowPresentationModel::__pAllWindowList = NULL;
36 HashMapT< Key, Object* > MultipleWindowPresentationModel::__keyAndValues;
37 int WindowInfo::__windowId = 0;
38 String MultipleWindowPresentationModel::__currentSceneId = L"" ;
39 WindowInfo* MultipleWindowPresentationModel::__pCurWindowInfo = null;
40 Bitmap* WindowInfo::pFormCanvasBitmap = null;
42 WindowInfo::WindowInfo(void)
47 sceneID.Append(IDSCN_MAIN_VIEW);
50 formID.Append(IDL_FORM_MAIN_VIEW_SCENE);
52 isAppcontrolTriggered = false;
53 isJavascriptInitiated = false;
59 pFavicon = FaviconManager::GetInstance()->GetDefaultFaviconN();
61 pWebCanvasBitmap = null;
62 pFormCanvasBitmap = null;
66 WindowInfo::~WindowInfo(void)
68 // if ( pFavicon != NULL)
75 MultipleWindowPresentationModel::MultipleWindowPresentationModel(void)
77 __isShowInProcess = false;
80 MultipleWindowPresentationModel::~MultipleWindowPresentationModel(void)
84 delete __pAllWindowList;
85 __pAllWindowList = NULL;
87 __keyAndValues.RemoveAll();
91 MultipleWindowPresentationModel::CreateInstance(void)
93 if (__pMultiWindowManager == NULL)
95 __pMultiWindowManager = new(std::nothrow) MultipleWindowPresentationModel();
96 result r = __pMultiWindowManager->Construct();
99 delete __pMultiWindowManager;
100 __pMultiWindowManager = null;
105 MultipleWindowPresentationModel*
106 MultipleWindowPresentationModel::GetInstance(void)
108 if (__pMultiWindowManager == NULL)
112 return __pMultiWindowManager;
117 MultipleWindowPresentationModel::DestroyInstance(void)
119 if (__pMultiWindowManager)
121 delete __pMultiWindowManager;
122 __pMultiWindowManager = null;
127 MultipleWindowPresentationModel::Construct(void)
129 result r = E_SUCCESS;
130 __pAllWindowList = new(std::nothrow) ArrayList();
131 r = __pAllWindowList->Construct();
136 r = __keyAndValues.Construct();
145 MultipleWindowPresentationModel::UnInitialize(void)
147 AppLogDebug(" MultiWindowManager::Denitialize");
152 MultipleWindowPresentationModel::AddWindoInfo(WindowInfo* pWindowInfo)
154 result r = E_FAILURE;
156 if (pWindowInfo != NULL)
158 r = __pAllWindowList->Add(*pWindowInfo);
165 MultipleWindowPresentationModel::GetAllWindowArrayList(void)
167 return __pAllWindowList;
171 MultipleWindowPresentationModel::GetValue(Key key, Object** value)
173 result r = E_FAILURE;
174 bool containKey = false;
176 AppLogDebug("Workspace::GetValue");
177 r = __keyAndValues.ContainsKey(key, containKey);
178 TryCatch(!IsFailed(r),,"ContainsKey failed %s",GetErrorMessage(r));
180 if (containKey == true)
181 r = __keyAndValues.GetValue(key, *value);
188 MultipleWindowPresentationModel::SetValue(Key key, Object* value)
190 result r = E_FAILURE;
191 bool containKey = false;
193 r = __keyAndValues.ContainsKey(key, containKey);
194 TryCatch(!IsFailed(r),,"ContainsKey failed %s",GetErrorMessage(r));
196 if (containKey == false)
197 r = __keyAndValues.Add(key, value);
199 r = __keyAndValues.SetValue(key, value);
206 MultipleWindowPresentationModel::CreateNewMainViewSceneN(const String& Url, bool isAppControlTriggered)
209 if (GetInstance()->GetAllWindowArrayList()->GetCount() >= 9)
211 AppLog("9 windows already opened");
213 String strTitle = L"";//CommonUtil::GetString(L"IDS_COM_SK_MAX_LIMIT_REACHED");
214 String strText = CommonUtil::GetString(L"IDS_BR_BODY_COULD_NOT_OPEN_NEW_WINDOW_BECAUSE_YOU_HAVE_ALREADY_OPENED_MAXIMUM_NUMBER");
215 ShowPopup(strTitle, strText);
216 // ShowPopup(strTitle, strText);
217 // ShowPopup(strTitle, strText);
221 WindowInfo* pWindowInfo = new(std::nothrow) WindowInfo();
222 if (pWindowInfo == NULL)
226 pWindowInfo->pageTitle = CommonUtil::GetString(L"IDS_BR_BODY_BLANK_PAGE");
227 pWindowInfo->pageUrl = Url;
228 pWindowInfo->isAppcontrolTriggered = isAppControlTriggered;
229 MultipleWindowPresentationModel::GetInstance()->AddWindoInfo(pWindowInfo);
230 SceneRegister::RegisterNewMainView(pWindowInfo->sceneID, pWindowInfo->formID);
237 MultipleWindowPresentationModel::SetCurrentSceneID(const String& currentSceneId)
240 __currentSceneId.Clear();
241 __currentSceneId.Append(currentSceneId);
242 for (int index = 0; index < GetInstance()->GetAllWindowArrayList()->GetCount(); index ++)
244 WindowInfo* pWindowInfo = static_cast< WindowInfo* >(GetInstance()->GetAllWindowArrayList()->GetAt(index));
246 if ( pWindowInfo == NULL )
251 if (pWindowInfo->sceneID.CompareTo(__currentSceneId) == 0)
253 __pCurWindowInfo = pWindowInfo;
261 MultipleWindowPresentationModel::GetCurrentSceneId(String& currentSceneId)
263 currentSceneId = __currentSceneId;
268 MultipleWindowPresentationModel::GetActiveWindowInfo()
270 return __pCurWindowInfo;
275 MultipleWindowPresentationModel::ShowPopup(String& pTitle, String& pText)
277 if(__isShowInProcess)
280 MessageBox* pMessageBox = new(std::nothrow) MessageBox();
281 pMessageBox->Construct(pTitle, pText,MSGBOX_STYLE_OK,3000);
283 __isShowInProcess = true;
284 pMessageBox->ShowAndWait(modalResult);
285 __isShowInProcess = false;