apply dynamic singleton pattern to internal classes and add retry code to AppWidgetMa...
[framework/osp/shell.git] / src / FShellAppWidgetProvider.cpp
1 //
2 // Copyright (c) 2012-2013 Samsung Electronics Co., Ltd.
3 //
4 // Licensed under the Flora License, Version 1.1 (the License);
5 // you may not use this file except in compliance with the License.
6 // You may obtain a copy of the License at
7 //
8 //     http://floralicense.org/license/
9 //
10 // Unless required by applicable law or agreed to in writing, software
11 // distributed under the License is distributed on an "AS IS" BASIS,
12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 // See the License for the specific language governing permissions and
14 // limitations under the License.
15 //
16
17 /**
18  * @file        FShellAppWidget.cpp
19  * @brief       This is the implementation for the AppWidgetProvider class.
20  */
21
22 #include <FBaseSysLog.h>
23 #include <FShellAppWidgetFrame.h>
24 #include <FShellAppWidgetPopup.h>
25
26 #include "FShell_AppWidgetProviderImpl.h"
27 #include "FShellAppWidgetProvider.h"
28
29 namespace Tizen { namespace Shell
30 {
31
32 using namespace Tizen::Base;
33
34 AppWidgetProvider::AppWidgetProvider()
35 {
36 }
37
38 AppWidgetProvider::~AppWidgetProvider()
39 {
40         SysLog(NID_SHELL, "AppWidgetProvider is destroyed.");
41 }
42
43 result
44 AppWidgetProvider::Construct(const String& instanceId)
45 {
46         __pAppWidgetProviderImpl = new (std::nothrow) _AppWidgetProviderImpl(instanceId);
47         SysTryReturnResult(NID_SHELL, __pAppWidgetProviderImpl, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY]");
48
49         SysLog(NID_SHELL, "AppWidgetProvider is constructed.");
50
51         return E_SUCCESS;
52 }
53
54 /*String
55 AppWidgetProvider::GetId() const
56 {
57         return __pAppWidgetProviderImpl->GetId();
58 }*/
59
60 result
61 AppWidgetProvider::SetAppWidgetFrame(AppWidgetFrame* pAppWidgetFrame)
62 {
63         SysAssertf(__pAppWidgetProviderImpl != null, "Not yet constructed. The factory is called when AppWidgetProvider needs to be created. The SetAppWidgetProviderFactory() method should be called in App::OnAppInitializing(), to receive the event correctly. Implementing AppWidgetProviderFactory is mandatory to provide AppWidget functionality.");
64
65         return __pAppWidgetProviderImpl->SetAppWidgetFrame(pAppWidgetFrame);
66 }
67
68 AppWidgetFrame*
69 AppWidgetProvider::GetAppWidgetFrame()
70 {
71         SysAssertf(__pAppWidgetProviderImpl != null, "Not yet constructed. The factory is called when AppWidgetProvider needs to be created. The SetAppWidgetProviderFactory() method should be called in App::OnAppInitializing(), to receive the event correctly. Implementing AppWidgetProviderFactory is mandatory to provide AppWidget functionality.");
72
73         return __pAppWidgetProviderImpl->GetAppWidgetFrame();
74 }
75
76 const AppWidgetFrame*
77 AppWidgetProvider::GetAppWidgetFrame() const
78 {
79         return const_cast<const AppWidgetFrame*>(__pAppWidgetProviderImpl->GetAppWidgetFrame());
80 }
81
82 }} // Tizen::Shell