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;
132 if (__dbGen.IsGenerating())
140 MainForm::OnKeyPressed (Control &source, const KeyEventInfo &keyEventInfo)
146 MainForm::OnKeyReleased (Control &source, const KeyEventInfo &keyEventInfo)
148 if(keyEventInfo.GetKeyCode() == KEY_BACK)
152 __pMessagePopup->SetShowState(false);
159 MainForm::OnPreviewKeyPressed (Control &source, const KeyEventInfo &keyEventInfo)
165 MainForm::OnPreviewKeyReleased (Control &source, const KeyEventInfo &keyEventInfo)
171 MainForm::TranslateKeyEventInfo (Control &source, KeyEventInfo &keyEventInfo)
177 MainForm::OnActionPerformed(const Tizen::Ui::Control& source, int actionId)
179 SceneManager* pSceneManager = SceneManager::GetInstance();
180 AppAssert(pSceneManager);
184 case ID_BUTTON_GENERATE_MODE:
186 Footer* pFooter = GetFooter();
187 pFooter->RemoveAllItems();
188 pFooter->RemoveAllButtons();
190 FooterItem pFooterItemGenerate;
191 pFooterItemGenerate.Construct(ID_FOOTER_ITEM_GENERATE);
192 pFooterItemGenerate.SetText(L"Generate");
193 pFooter->AddItem(pFooterItemGenerate);
195 pFooter->SetBackButton();
196 pFooter->AddActionEventListener(*this);
198 __visibleMenu = false;
199 __pFeatureManager->DeleteAllFeatures();
200 pSceneManager->GoForward(
201 ForwardSceneTransition("GenerationModeScene",
202 SCENE_TRANSITION_ANIMATION_TYPE_NONE,
203 SCENE_HISTORY_OPTION_NO_HISTORY,
204 SCENE_DESTROY_OPTION_KEEP), null);
207 case ID_BUTTON_UPDATE_MODE:
209 Footer* pFooter = GetFooter();
210 pFooter->RemoveAllItems();
211 pFooter->RemoveAllButtons();
213 FooterItem pFooterItemUpdate;
214 pFooterItemUpdate.Construct(ID_FOOTER_ITEM_UPDATE);
215 pFooterItemUpdate.SetText(L"Update");
216 pFooter->AddItem(pFooterItemUpdate);
218 pFooter->SetBackButton();
219 pFooter->AddActionEventListener(*this);
221 __pFeatureManager->DeleteAllFeatures();
222 pSceneManager->GoForward(
223 ForwardSceneTransition("UpdateModeScene",
224 SCENE_TRANSITION_ANIMATION_TYPE_NONE,
225 SCENE_HISTORY_OPTION_NO_HISTORY,
226 SCENE_DESTROY_OPTION_KEEP), null);
229 case ID_BUTTON_CLOSE_RESULTS:
230 __pMessagePopup->SetShowState(false);
233 case ID_FOOTER_ITEM_GENERATE:
235 Panel* pPanel = static_cast<Panel*>(this->GetControl(IDC_GENERATION_MODE_PANEL, true));
238 pPanel->SendUserEvent(GeneratePanel::REQUEST_GENERATE_FEATURE_SET, null);
242 case ID_FOOTER_ITEM_UPDATE:
244 Panel* pPanel = static_cast<Panel*>(this->GetControl(IDC_UPDATE_MODE_PANEL, true));
247 pPanel->SendUserEvent(UpdatePanel::REQUEST_UPDATE, null);
251 case ID_OPTION_MENU_ADD:
253 Panel* pPanel = static_cast<Panel*>(this->GetControl(IDC_UPDATE_MODE_PANEL, true));
256 pPanel->SendUserEvent(UpdatePanel::REQUEST_ADD, null);
260 case ID_OPTION_MENU_DELETE:
262 Panel* pPanel = static_cast<Panel*>(this->GetControl(IDC_UPDATE_MODE_PANEL, true));
265 pPanel->SendUserEvent(UpdatePanel::REQUEST_DELETE, null);
275 MainForm::AppendImageFolder(const Tizen::Base::String& imPath, IFeatureSetGeneratorListener* listener)
277 if (listener != null)
279 __dbGen.SetListener(listener);
283 __dbGen.SetListener(this);
285 __dbGen.SetImagePath(imPath);
286 __dbGen.SetFeatureManager(__pFeatureManager);
287 this->SetEnabled(false);
292 MainForm::OnFormMenuRequested(Tizen::Ui::Controls::Form& source)
296 __pOptionMenu->SetShowState(true);
297 __pOptionMenu->Show();
302 MainForm::OnFormBackRequested(Tizen::Ui::Controls::Form& source)
304 UiApp* pApp = UiApp::GetInstance();
310 MainForm::OnSceneActivatedN(
311 const Tizen::Ui::Scenes::SceneId& previousSceneId,
312 const Tizen::Ui::Scenes::SceneId& currentSceneId,
313 Tizen::Base::Collection::IList* pArgs)
318 MainForm::OnSceneDeactivated(const Tizen::Ui::Scenes::SceneId& currentSceneId,
319 const Tizen::Ui::Scenes::SceneId& nextSceneId)
324 MainForm::OnImageProcessed(int imNo, int total)
327 SceneManager* pSceneManager = SceneManager::GetInstance();
328 AppAssert(pSceneManager);
330 if (pSceneManager->GetCurrentSceneId() == "GenerationModeScene")
332 __headerTitle = "Generating... ";
334 else if (pSceneManager->GetCurrentSceneId() == "UpdateModeScene")
336 __headerTitle = "Updating... ";
339 __headerTitle.Append(Integer(imNo).ToString());
340 __headerTitle.Append('/');
341 __headerTitle.Append(Integer(total).ToString());
346 MainForm::OnFinish(void)
348 SendUserEvent(REQUEST_RESULT, 0);
352 MainForm::OnDraw(void)
354 Header* pHeader = GetHeader();
355 pHeader->SetTitleText(__headerTitle);
360 MainForm::OnUserEventReceivedN(RequestId requestId, Tizen::Base::Collection::IList* pArgs)
366 __dbGen.GetResults(__resInfo);
367 this->SetEnabled(true);
368 this->RequestRedraw(true);
369 __headerTitle = SAMPLE_TITLE;
370 if (__resInfo.appendedObjectsNumber != 0)
372 __pMessageLabel->SetText(
373 "\nTotal time: " + Integer(__resInfo.appendTime).ToString() + "ms" +
374 "\nAverage time: " + Integer(__resInfo.appendTime / __resInfo.appendedObjectsNumber).ToString() + " ms" +
375 "\nAdded images: " + Integer(__resInfo.appendedObjectsNumber).ToString() +
376 "\nRejected files: " + Integer(__resInfo.rejectedObjectsNumber).ToString() +
377 "\nTotal files count: " + Integer(__resInfo.totalObjectsNumber).ToString()
382 __pMessageLabel->SetText(
383 "\nTotal time: " + Integer(__resInfo.appendTime).ToString() + "ms" +
384 "\nAdded images: " + Integer(__resInfo.appendedObjectsNumber).ToString() +
385 "\nRejected files: " + Integer(__resInfo.rejectedObjectsNumber).ToString() +
386 "\nTotal files count: " + Integer(__resInfo.totalObjectsNumber).ToString()
390 __pMessagePopup->SetShowState(true);
391 __pMessagePopup->Show();
399 Tizen::Uix::Vision::ImageFeatureManager*
400 MainForm::GetFeatureManager(void)
402 return __pFeatureManager;
406 MainForm::SetMenuVisibility(bool visibility)
408 __visibleMenu = visibility;