Tizen 2.0 Release
[apps/osp/Internet.git] / src / IntSharePopup.cpp
1 //
2
3 // Copyright (c) 2012 Samsung Electronics Co., Ltd.
4 //
5 // Licensed under the Flora License, Version 1.0 (the License);
6 // you may not use this file except in compliance with the License.
7 // You may obtain a copy of the License at
8 //
9 //     http://floralicense.org/license/
10 //
11 // Unless required by applicable law or agreed to in writing, software
12 // distributed under the License is distributed on an AS IS BASIS,
13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 // See the License for the specific language governing permissions and
15 // limitations under the License.
16 //
17
18 /*
19  * IntSharePopUp.cpp
20  *@file:        IntSharePopup.cpp
21  *@brief:       Share Popup for sharing bookmark via message, email etc
22  */
23
24 #include <FAppUiApp.h>
25 #include <FUi.h>
26 #include <FBase.h>
27 #include <FIo.h>
28
29 #include "IntCommonLib.h"
30 #include "IntSharePopup.h"
31
32 using namespace Tizen::App;
33 using namespace Tizen::Io;
34 using namespace Tizen::Base;
35 using namespace Tizen::Base::Collection;
36 using namespace Tizen::Graphics;
37 using namespace Tizen::Ui;
38 using namespace Tizen::Ui::Controls;
39 using namespace Tizen::Ui::Scenes;
40
41 const int SharePopup::IDA_CANCEL_BUTTON = 101;
42 const int SharePopup::ID_FORMAT_MESSAGE_STRING = 500;
43 const int SharePopup::ID_FORMAT_EMAIL_STRING = 501;
44 const int SharePopup::ID_FORMAT_FACEBOOK_STRING = 502;
45 const int SharePopup::ID_FORMAT_TWITTER_STRING = 503;
46
47 ShareInfo::     ShareInfo(void)
48 {
49         isImageAttached = false;
50 }
51
52 ShareInfo::     ~ShareInfo(void)
53 {
54
55 }
56
57 void
58 ShareInfo::SetPageTitle(Tizen::Base::String aPageTitle)
59 {
60         __pageTitle.Clear();
61         __pageTitle.Append(aPageTitle);
62 }
63
64 void
65 ShareInfo::SetPageUrl(Tizen::Base::String aPageURL)
66 {
67         __pageURL.Clear();
68         __pageURL.Append(aPageURL);
69 }
70
71 Tizen::Base::String
72 ShareInfo::GetPageTitle(void)
73 {
74         return __pageTitle;
75 }
76
77 Tizen::Base::String
78 ShareInfo::GetPageURL(void)
79 {
80         return __pageURL;
81 }
82
83 void
84 ShareInfo::SetImageAttached(bool imageAttached)
85 {
86         isImageAttached = imageAttached;
87 }
88
89 bool
90 ShareInfo::GetImageAttached()
91 {
92         return isImageAttached;
93 }
94
95 void
96 ShareInfo::SetImagePath(Tizen::Base::String aImagePath)
97 {
98         __imagePath.Clear();
99         __imagePath.Append(aImagePath);
100 }
101
102 Tizen::Base::String
103 ShareInfo::GetImagePath(void)
104 {
105         return __imagePath;
106 }
107
108 SharePopup::SharePopup(void)
109 :__pList(null),__pShareList(null)
110 {
111
112 }
113
114 SharePopup::~SharePopup(void)
115 {
116
117 }
118
119 bool
120 SharePopup::Initialize(void)
121 {
122         Button* pCancelButton = null;
123
124         Popup::Construct(L"IDL_SHARE_POPUP");
125         SetName(L"CommonPopup");
126
127         __pShareList = new(std::nothrow) ArrayList();
128         __pShareList->Construct();
129
130         __pList = static_cast<ListView*>(GetControl(L"IDC_POPUP_LIST"));
131         if (__pList == null)
132         {
133                 return false;
134         }
135
136         __pList->SetItemProvider(*this);
137         __pList->AddListViewItemEventListener(*this);
138
139         pCancelButton = static_cast< Button* >(GetControl(L"IDC_BUTTON", true));
140         if (pCancelButton)
141         {
142                 pCancelButton->AddActionEventListener(*this);
143                 pCancelButton->SetActionId(IDA_CANCEL_BUTTON);
144         }
145
146         return true;
147 }
148
149 result
150 SharePopup::OnTerminating(void)
151 {
152         result r = E_SUCCESS;
153         return r;
154 }
155
156 void
157 SharePopup::OnActionPerformed(const Tizen::Ui::Control& source, int actionId)
158 {
159         switch(actionId)
160         {
161         case IDA_CANCEL_BUTTON:
162         {
163                 Popup::SetShowState(false);
164                 Popup::Show();
165         }
166         break;
167         default:
168                 break;
169         }
170         return;
171 }
172
173 void
174 SharePopup::OnListViewContextItemStateChanged(Tizen::Ui::Controls::ListView& listView, int index, int elementId, Tizen::Ui::Controls::ListContextItemStatus state)
175 {
176         return;
177 }
178
179 void
180 SharePopup::OnListViewItemStateChanged(Tizen::Ui::Controls::ListView& listView, int index, int elementId, Tizen::Ui::Controls::ListItemStatus status)
181 {
182         switch (index)
183         {
184         case 0:
185         {
186                 Popup::SetShowState(false);
187                 Popup::Show();
188                 // share via message
189                 StartMessageAppControl();
190         }
191         break;
192         case 1:
193         {
194                 Popup::SetShowState(false);
195                 Popup::Show();
196                 // share via email
197                 StartEmailAppControl();
198         }
199         break;
200         default:
201                 break;
202         }
203 }
204
205 void
206 SharePopup::OnListViewItemSwept(Tizen::Ui::Controls::ListView& listView, int index, Tizen::Ui::Controls::SweepDirection direction)
207 {
208         return;
209 }
210
211 void
212 SharePopup::OnListViewItemLongPressed(Tizen::Ui::Controls::ListView& listView, int index, int elementId, bool& invokeListViewItemCallback)
213 {
214         return;
215 }
216
217 Tizen::Ui::Controls::ListItemBase*
218 SharePopup::CreateItem(int index, int itemWidth)
219 {
220         result r = E_FAILURE;
221         ListAnnexStyle style = LIST_ANNEX_STYLE_NORMAL;
222         int textSize = 35;
223         int elementHeight = 50;
224         int listItemWidth = 112;
225
226         CustomItem* pItem = new(std::nothrow) CustomItem();
227         r = pItem->Construct(Dimension(GetClientAreaBounds().width, listItemWidth), style);
228         if (IsFailed(r))
229         {
230                 AppLogDebug("Create Item Failed with error %s", GetErrorMessage(r));
231                 delete pItem;
232                 return null;
233         }
234
235         switch(index)
236         {
237         case 0:
238         {
239                 AppLogDebug("SharePopUp CreateItem 0");
240                 // IDS_SHARE_VIA_MESSAGE
241                 pItem->AddElement(Rectangle(0,0, GetClientAreaBounds().width, listItemWidth), ID_FORMAT_MESSAGE_STRING, CommonUtil::GetString(L"IDS_BR_OPT_SHARE_VIA_MESSAGES"), true);
242         }
243         break;
244         case 1:
245         {
246                 AppLogDebug("SharePopUp CreateItem 1");
247                 // IDS_SHARE_VIA_EMAIL
248                 pItem->AddElement(Rectangle(0, 0, GetClientAreaBounds().width, listItemWidth), ID_FORMAT_EMAIL_STRING, CommonUtil::GetString(L"IDS_BR_OPT_SHARE_VIA_EMAIL"), true);
249         }
250         break;
251         default:
252                 break;
253         }
254         return pItem;
255 }
256
257 bool
258 SharePopup::DeleteItem(int index, Tizen::Ui::Controls::ListItemBase* pItem, int itemWidth)
259 {
260         return true;
261 }
262
263 int
264 SharePopup::GetItemCount(void)
265 {
266         return 2;
267 }
268
269 result
270 SharePopup::AddShareInfo(ShareInfo* pShareInfo)
271 {
272         result r = E_FAILURE;
273
274         if (__pShareList != NULL)
275         {
276                 r = __pShareList->Add(*pShareInfo);
277         }
278         return r;
279 }
280
281 void SharePopup::RemoveAllShareInfo()
282 {
283         __pShareList->RemoveAll();
284 }
285
286 void
287 SharePopup::StartEmailAppControl(void)
288 {
289    HashMap extraData;
290    ShareInfo* pShareInfo = null;
291    result r = E_FAILURE;
292    bool imageAttachment = false;
293
294    extraData.Construct();
295
296    if (__pShareList != null)
297         {
298                 pShareInfo = dynamic_cast<ShareInfo*>(__pShareList->GetAt(0));
299                 if (pShareInfo != null)
300                 {
301                         String testURL = pShareInfo->GetPageURL();
302                         AppLogDebug("getpageURL getpageURL is %ls", testURL.GetPointer());
303                 }
304         }
305
306    String textVal;
307
308         if (pShareInfo != null)
309         {
310                 textVal.Append(pShareInfo->GetPageTitle());
311                 textVal.Append(L" <");
312                 AppLog("share info url is %ls",pShareInfo->GetPageURL().GetPointer());
313                 textVal.Append(pShareInfo->GetPageURL().GetPointer());
314                 textVal.Append(L">");
315         }
316
317    String subjectKey = L"subject";
318    String subjectVal = L"";
319    String textKey = L"text";
320
321    String toKey = L"to";
322    String toVal = L"";
323    String ccKey = L"cc";
324    String ccVal = L"";
325    String bccKey = L"bcc";
326    String bccVal = L"";
327    String attachKey = L"attachments";
328    String attachVal;
329         if (pShareInfo != null)
330         {
331                 imageAttachment = pShareInfo->GetImageAttached();
332                 if (imageAttachment)
333                 {
334                         attachVal = pShareInfo->GetImagePath();
335                         AppLog("SharePopup::StartEmailAppControl imagePath is %S",attachVal.GetPointer());
336                 }
337                 else
338                 {
339                          attachVal = L"";
340                 }
341         }
342
343    extraData.Add(&subjectKey, &subjectVal);
344    extraData.Add(&textKey, &textVal);
345    extraData.Add(&toKey, &toVal);
346    extraData.Add(&ccKey, &ccVal);
347    extraData.Add(&bccKey, &bccVal);
348    extraData.Add(&attachKey, &attachVal);
349
350    AppControl* pAc = AppManager::FindAppControlN(L"tizen.email", L"http://tizen.org/appcontrol/operation/compose");
351    if (pAc)
352    {
353            pAc->Start(null, null, &extraData, null);
354            delete pAc;
355    }
356    if (pShareInfo != null)
357         {
358                 delete pShareInfo;
359         }
360 }
361
362 void
363 SharePopup::StartMessageAppControl(void)
364 {
365         HashMap extraData;
366         ShareInfo* pShareInfo = null;
367
368         extraData.Construct();
369
370         if (__pShareList != null)
371         {
372                 pShareInfo = dynamic_cast<ShareInfo*>(__pShareList->GetAt(0));
373                 if (pShareInfo != null)
374                 {
375                         String testURL = pShareInfo->GetPageURL();
376                         AppLogDebug("getpageURL getpageURL is %ls", testURL.GetPointer());
377                 }
378         }
379
380         String textVal;
381
382         if (pShareInfo != null)
383         {
384                 textVal.Append(pShareInfo->GetPageTitle());
385                 textVal.Append(L" <");
386                 AppLog("share info url is %ls",pShareInfo->GetPageURL().GetPointer());
387                 textVal.Append(pShareInfo->GetPageURL().GetPointer());
388                 textVal.Append(L">");
389         }
390         String typeKey = L"type";
391         String typeVal = L"SMS";
392         String textKey = L"text";
393         extraData.Add(&typeKey, &typeVal);
394         extraData.Add(&textKey, &textVal);
395         AppControl* pAc = AppManager::FindAppControlN(L"tizen.messages", L"http://tizen.org/appcontrol/operation/compose");
396         if (pAc)
397         {
398                 pAc->Start(null, null, &extraData, null);
399                 delete pAc;
400         }
401         if (pShareInfo != null)
402         {
403                 delete pShareInfo;
404         }
405         
406 }
407
408 void
409 SharePopup::OnAppControlCompleted(const Tizen::Base::String& providerId, const Tizen::Base::String& operationId, const Tizen::Base::Collection::IList* pResultList)
410 {
411
412 }