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.
19 #include "AppResourceId.h"
21 #include "FileManagerForm.h"
22 #include "GeneratePanel.h"
23 #include "UpdatePanel.h"
25 using namespace Tizen::Base;
26 using namespace Tizen::App;
27 using namespace Tizen::Graphics;
28 using namespace Tizen::Ui;
29 using namespace Tizen::Ui::Controls;
30 using namespace Tizen::Ui::Scenes;
32 static const String SAMPLE_TITLE = L"Image feature manager";
34 MainForm::MainForm(void)
35 : __headerTitle(SAMPLE_TITLE)
36 , __pRadioGroupMode(null)
37 , __pFeatureManager(null)
38 , __pMessagePopup(null)
39 , __pMessageLabel(null)
40 , __visibleMenu(false)
44 MainForm::~MainForm(void)
46 if (__pFeatureManager)
48 delete __pFeatureManager;
50 delete __pMessagePopup;
54 MainForm::Initialize(void)
61 MainForm::OnInitializing(void)
65 SetFormBackEventListener(this);
66 SetFormMenuEventListener(this);
68 CheckButton* pCheckButton = null;
70 __pRadioGroupMode = new RadioGroup();
71 __pRadioGroupMode->Construct();
73 pCheckButton = static_cast<CheckButton*>(GetControl(IDC_UPDATE_MODE_BUTTON, true));
76 pCheckButton->AddActionEventListener(*this);
77 pCheckButton->SetActionId(ID_BUTTON_UPDATE_MODE, 0, 0);
78 __pRadioGroupMode->Add(pCheckButton);
81 pCheckButton = static_cast<CheckButton*>(GetControl(IDC_GENERATION_MODE_BUTTON, true));
84 pCheckButton->SetSelected(true);
85 pCheckButton->AddActionEventListener(*this);
86 pCheckButton->SetActionId(ID_BUTTON_GENERATE_MODE, 0, 0);
87 __pRadioGroupMode->Add(pCheckButton);
90 Footer* pFooter = GetFooter();
91 pFooter->SetStyle(FOOTER_STYLE_BUTTON_ICON_TEXT);
92 pFooter->SetBackButton();
94 FooterItem pFooterItemSend;
95 pFooterItemSend.Construct(ID_FOOTER_ITEM_GENERATE);
96 pFooterItemSend.SetText(L"Generate");
97 pFooter->AddItem(pFooterItemSend);
98 pFooter->AddActionEventListener(*this);
101 __dbGen.SetListener(this);
103 __pFeatureManager = new Tizen::Uix::Vision::ImageFeatureManager();
104 __pFeatureManager->Construct();
106 __pMessagePopup = new Popup();
107 __pMessagePopup->Construct(IDC_MESSAGE_POPUP);
108 __pMessagePopup->SetPropagatedKeyEventListener(this);
109 __pMessageLabel = static_cast<Label*>(__pMessagePopup->GetControl(IDC_LABEL_MASSEGE_TEXT, true));
111 __pOptionMenu = new OptionMenu();
112 __pOptionMenu->Construct();
114 __pOptionMenu->AddItem(L"Add Features", ID_OPTION_MENU_ADD);
115 __pOptionMenu->AddItem(L"Delete Features", ID_OPTION_MENU_DELETE);
116 __pOptionMenu->AddActionEventListener(*this);
118 Button* pButton = static_cast<Button*>(__pMessagePopup->GetControl(IDC_BUTTON_MESSAGE_CLOSE, true));
121 pButton->AddActionEventListener(*this);
122 pButton->SetActionId(ID_BUTTON_CLOSE_RESULTS);
129 MainForm::OnTerminating(void)
131 result r = E_SUCCESS;
137 MainForm::OnKeyPressed (Control &source, const KeyEventInfo &keyEventInfo)
143 MainForm::OnKeyReleased (Control &source, const KeyEventInfo &keyEventInfo)
145 if(keyEventInfo.GetKeyCode() == KEY_BACK)
149 __pMessagePopup->SetShowState(false);
156 MainForm::OnPreviewKeyPressed (Control &source, const KeyEventInfo &keyEventInfo)
162 MainForm::OnPreviewKeyReleased (Control &source, const KeyEventInfo &keyEventInfo)
168 MainForm::TranslateKeyEventInfo (Control &source, KeyEventInfo &keyEventInfo)
174 MainForm::OnActionPerformed(const Tizen::Ui::Control& source, int actionId)
176 SceneManager* pSceneManager = SceneManager::GetInstance();
177 AppAssert(pSceneManager);
181 case ID_BUTTON_GENERATE_MODE:
183 Footer* pFooter = GetFooter();
184 pFooter->RemoveAllItems();
185 pFooter->RemoveAllButtons();
187 FooterItem pFooterItemGenerate;
188 pFooterItemGenerate.Construct(ID_FOOTER_ITEM_GENERATE);
189 pFooterItemGenerate.SetText(L"Generate");
190 pFooter->AddItem(pFooterItemGenerate);
192 pFooter->SetBackButton();
193 pFooter->AddActionEventListener(*this);
195 __visibleMenu = false;
196 __pFeatureManager->DeleteAllFeatures();
197 pSceneManager->GoForward(
198 ForwardSceneTransition("GenerationModeScene",
199 SCENE_TRANSITION_ANIMATION_TYPE_NONE,
200 SCENE_HISTORY_OPTION_NO_HISTORY,
201 SCENE_DESTROY_OPTION_KEEP), null);
204 case ID_BUTTON_UPDATE_MODE:
206 Footer* pFooter = GetFooter();
207 pFooter->RemoveAllItems();
208 pFooter->RemoveAllButtons();
210 FooterItem pFooterItemUpdate;
211 pFooterItemUpdate.Construct(ID_FOOTER_ITEM_UPDATE);
212 pFooterItemUpdate.SetText(L"Update");
213 pFooter->AddItem(pFooterItemUpdate);
215 pFooter->SetBackButton();
216 pFooter->AddActionEventListener(*this);
218 __pFeatureManager->DeleteAllFeatures();
219 pSceneManager->GoForward(
220 ForwardSceneTransition("UpdateModeScene",
221 SCENE_TRANSITION_ANIMATION_TYPE_NONE,
222 SCENE_HISTORY_OPTION_NO_HISTORY,
223 SCENE_DESTROY_OPTION_KEEP), null);
226 case ID_BUTTON_CLOSE_RESULTS:
227 __pMessagePopup->SetShowState(false);
230 case ID_FOOTER_ITEM_GENERATE:
232 Panel* pPanel = static_cast<Panel*>(this->GetControl(IDC_GENERATION_MODE_PANEL, true));
235 pPanel->SendUserEvent(GeneratePanel::REQUEST_GENERATE_FEATURE_SET, null);
239 case ID_FOOTER_ITEM_UPDATE:
241 Panel* pPanel = static_cast<Panel*>(this->GetControl(IDC_UPDATE_MODE_PANEL, true));
244 pPanel->SendUserEvent(UpdatePanel::REQUEST_UPDATE, null);
248 case ID_OPTION_MENU_ADD:
250 Panel* pPanel = static_cast<Panel*>(this->GetControl(IDC_UPDATE_MODE_PANEL, true));
253 pPanel->SendUserEvent(UpdatePanel::REQUEST_ADD, null);
257 case ID_OPTION_MENU_DELETE:
259 Panel* pPanel = static_cast<Panel*>(this->GetControl(IDC_UPDATE_MODE_PANEL, true));
262 pPanel->SendUserEvent(UpdatePanel::REQUEST_DELETE, null);
272 MainForm::AppendImageFolder(const Tizen::Base::String& imPath, IFeatureSetGeneratorListener* listener)
274 if (listener != null)
276 __dbGen.SetListener(listener);
280 __dbGen.SetListener(this);
282 __dbGen.SetImagePath(imPath);
283 __dbGen.SetFeatureManager(__pFeatureManager);
284 this->SetEnabled(false);
289 MainForm::OnFormMenuRequested(Tizen::Ui::Controls::Form& source)
293 __pOptionMenu->SetShowState(true);
294 __pOptionMenu->Show();
299 MainForm::OnFormBackRequested(Tizen::Ui::Controls::Form& source)
301 UiApp* pApp = UiApp::GetInstance();
307 MainForm::OnSceneActivatedN(
308 const Tizen::Ui::Scenes::SceneId& previousSceneId,
309 const Tizen::Ui::Scenes::SceneId& currentSceneId,
310 Tizen::Base::Collection::IList* pArgs)
315 MainForm::OnSceneDeactivated(const Tizen::Ui::Scenes::SceneId& currentSceneId,
316 const Tizen::Ui::Scenes::SceneId& nextSceneId)
321 MainForm::OnImageProcessed(int imNo, int total)
324 SceneManager* pSceneManager = SceneManager::GetInstance();
325 AppAssert(pSceneManager);
327 if (pSceneManager->GetCurrentSceneId() == "GenerationModeScene")
329 __headerTitle = "Generating... ";
331 else if (pSceneManager->GetCurrentSceneId() == "UpdateModeScene")
333 __headerTitle = "Updating... ";
336 __headerTitle.Append(Integer(imNo).ToString());
337 __headerTitle.Append('/');
338 __headerTitle.Append(Integer(total).ToString());
343 MainForm::OnFinish(void)
345 SendUserEvent(REQUEST_RESULT, 0);
349 MainForm::OnDraw(void)
351 Header* pHeader = GetHeader();
352 pHeader->SetTitleText(__headerTitle);
357 MainForm::OnUserEventReceivedN(RequestId requestId, Tizen::Base::Collection::IList* pArgs)
363 __dbGen.GetResults(__resInfo);
364 this->SetEnabled(true);
365 this->RequestRedraw(true);
366 __headerTitle = SAMPLE_TITLE;
367 if (__resInfo.appendedObjectsNumber != 0)
369 __pMessageLabel->SetText(
370 "\nTotal time: " + Integer(__resInfo.appendTime).ToString() + "ms" +
371 "\nAverage time: " + Integer(__resInfo.appendTime / __resInfo.appendedObjectsNumber).ToString() + " ms" +
372 "\nAdded images: " + Integer(__resInfo.appendedObjectsNumber).ToString() +
373 "\nRejected files: " + Integer(__resInfo.rejectedObjectsNumber).ToString() +
374 "\nTotal files count: " + Integer(__resInfo.totalObjectsNumber).ToString()
379 __pMessageLabel->SetText(
380 "\nTotal time: " + Integer(__resInfo.appendTime).ToString() + "ms" +
381 "\nAdded images: " + Integer(__resInfo.appendedObjectsNumber).ToString() +
382 "\nRejected files: " + Integer(__resInfo.rejectedObjectsNumber).ToString() +
383 "\nTotal files count: " + Integer(__resInfo.totalObjectsNumber).ToString()
387 __pMessagePopup->SetShowState(true);
388 __pMessagePopup->Show();
396 Tizen::Uix::Vision::ImageFeatureManager*
397 MainForm::GetFeatureManager(void)
399 return __pFeatureManager;
403 MainForm::SetMenuVisibility(bool visibility)
405 __visibleMenu = visibility;